├── .bowerrc ├── .editorconfig ├── .ember-cli ├── .gitignore ├── .jshintrc ├── .npmignore ├── .travis.yml ├── .watchmanconfig ├── LICENSE.md ├── README.md ├── addon ├── .gitkeep └── components │ └── ember-anychart.js ├── app ├── .gitkeep ├── components │ └── ember-anychart.js └── templates │ └── components │ └── ember-anychart.hbs ├── blueprints └── ember-anychart │ └── index.js ├── bower.json ├── config ├── ember-try.js └── environment.js ├── ember-cli-build.js ├── index.js ├── package-lock.json ├── package.json ├── testem.js ├── tests ├── .jshintrc ├── dummy │ ├── app │ │ ├── app.js │ │ ├── components │ │ │ └── .gitkeep │ │ ├── controllers │ │ │ ├── .gitkeep │ │ │ └── chart-with-dynamic-settings.js │ │ ├── helpers │ │ │ └── .gitkeep │ │ ├── index.html │ │ ├── resolver.js │ │ ├── router.js │ │ ├── routes │ │ │ ├── .gitkeep │ │ │ ├── chart-with-custom-settings.js │ │ │ ├── chart-with-dynamic-settings.js │ │ │ ├── data-streaming.js │ │ │ ├── geographical-colored-map.js │ │ │ ├── index.js │ │ │ ├── simple-chart.js │ │ │ ├── simple-dashboard.js │ │ │ ├── simple-gantt-chart.js │ │ │ └── simple-stock-chart.js │ │ ├── styles │ │ │ └── app.css │ │ └── templates │ │ │ ├── application.hbs │ │ │ ├── chart-with-custom-settings.hbs │ │ │ ├── chart-with-dynamic-settings.hbs │ │ │ ├── components │ │ │ └── .gitkeep │ │ │ ├── data-streaming.hbs │ │ │ ├── geographical-colored-map.hbs │ │ │ ├── index.hbs │ │ │ ├── simple-chart.hbs │ │ │ ├── simple-dashboard.hbs │ │ │ ├── simple-gantt-chart.hbs │ │ │ └── simple-stock-chart.hbs │ ├── config │ │ └── environment.js │ └── public │ │ ├── crossdomain.xml │ │ ├── robots.txt │ │ ├── stock-data.json │ │ └── united_states_of_america.topo.json ├── helpers │ ├── destroy-app.js │ ├── module-for-acceptance.js │ ├── resolver.js │ └── start-app.js ├── index.html ├── integration │ └── .gitkeep ├── test-helper.js └── unit │ └── .gitkeep └── vendor ├── .gitkeep └── anychart ├── fonts.css └── fonts ├── anychart.eot ├── anychart.svg ├── anychart.ttf └── anychart.woff /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components", 3 | "analytics": false 4 | } 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.hbs] 17 | insert_final_newline = false 18 | 19 | [*.{diff,md}] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | 7 | # dependencies 8 | /node_modules 9 | /bower_components 10 | 11 | # misc 12 | /.sass-cache 13 | /connect.lock 14 | /coverage/* 15 | /libpeerconnection.log 16 | npm-debug.log* 17 | testem.log 18 | 19 | .idea 20 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "window", 5 | "-Promise", 6 | "anychart" 7 | ], 8 | "browser": true, 9 | "boss": true, 10 | "curly": true, 11 | "debug": false, 12 | "devel": true, 13 | "eqeqeq": true, 14 | "evil": true, 15 | "forin": false, 16 | "immed": false, 17 | "laxbreak": false, 18 | "newcap": true, 19 | "noarg": true, 20 | "noempty": false, 21 | "nonew": false, 22 | "nomen": false, 23 | "onevar": false, 24 | "plusplus": false, 25 | "regexp": false, 26 | "undef": true, 27 | "sub": true, 28 | "strict": false, 29 | "white": false, 30 | "eqnull": true, 31 | "esversion": 6, 32 | "unused": true 33 | } 34 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /bower_components 2 | /config/ember-try.js 3 | /dist 4 | /tests 5 | /tmp 6 | /.idea 7 | **/.gitkeep 8 | .bowerrc 9 | .editorconfig 10 | .ember-cli 11 | .gitignore 12 | .jshintrc 13 | .watchmanconfig 14 | .travis.yml 15 | bower.json 16 | ember-cli-build.js 17 | testem.js 18 | todo.txt 19 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | - "4" 5 | 6 | sudo: false 7 | 8 | cache: 9 | directories: 10 | - $HOME/.npm 11 | - $HOME/.cache # includes bowers cache 12 | 13 | env: 14 | # we recommend testing LTS's and latest stable release (bonus points to beta/canary) 15 | - EMBER_TRY_SCENARIO=ember-lts-2.4 16 | - EMBER_TRY_SCENARIO=ember-lts-2.8 17 | - EMBER_TRY_SCENARIO=ember-release 18 | - EMBER_TRY_SCENARIO=ember-beta 19 | - EMBER_TRY_SCENARIO=ember-canary 20 | 21 | matrix: 22 | fast_finish: true 23 | allow_failures: 24 | - env: EMBER_TRY_SCENARIO=ember-canary 25 | 26 | before_install: 27 | - npm config set spin false 28 | - npm install -g bower 29 | - bower --version 30 | - npm install phantomjs-prebuilt 31 | - node_modules/phantomjs-prebuilt/bin/phantomjs --version 32 | 33 | install: 34 | - npm install 35 | - bower install 36 | 37 | script: 38 | # Usually, it's ok to finish the test scenario without reverting 39 | # to the addon's original dependency state, skipping "cleanup". 40 | - ember try:one $EMBER_TRY_SCENARIO test --skip-cleanup 41 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [AnyChart - Robust JavaScript/HTML5 Chart library for any project](https://www.anychart.com) 2 | 3 | Ember Plugin for AnyChart 4 | ========================= 5 | 6 | AnyChart Component for Ember CLI provides an easy way to use [AnyChart JavaScript Charts](https://www.anychart.com) with [Ember Framework](http://emberjs.com/). 7 | 8 | ## Download and install 9 | 10 | ### Install dependencies 11 | 12 | First, you need to download and install [NodeJS](https://nodejs.org/en/) if you don’t have it installed already. 13 | 14 | To use the **ember-anychart** plugin, you should also have [Bower](https://bower.io/) and [Ember CLI](https://ember-cli.com/) installed. 15 | 16 | * `npm install -g bower` 17 | * `npm install -g ember-cli` 18 | 19 | ### Install plugin globally 20 | 21 | You can install **ember-anychart** plugin using **npm** or **yarn** package managers: 22 | * `npm install -g ember-anychart` 23 | * `yarn global add ember-anychart` 24 | 25 | ### Install plugin into a project 26 | 27 | To install **ember-anychart** plugin into an ember project, navigate to project directory and install the package: 28 | 29 | * `ember install --save ember-anychart` 30 | * `npm install --save ember-anychart` 31 | * `yarn add ember-anychart` 32 | 33 | If you installed plugin via **npm** or **yarn** then you should complete installation by generation plugin blueprint 34 | * `ember generate ember-anychart` 35 | 36 | ## Usage 37 | 38 | Use the following custom element in a Handlebars template file: 39 | 40 | ```handlebars 41 | // Create a simple chart using attributes 42 | {{ember-anychart type="pie" data=someData title="My simple chart"}} 43 | 44 | // Create a chart using chart instance 45 | {{ember-anychart instance=model.chart}} 46 | 47 | // Create a dashboard using a stage instance 48 | {{ember-anychart instance=model.stage}} 49 | 50 | // Also you can set id and class of a container where chart is placed 51 | {{ember-anychart instance=model.chart id="chart-container" class="custom-styled-container"}} 52 | ``` 53 | 54 | ### Component attributes 55 | 56 | | Attribute | Type | Description | Required | 57 | | :------------- |:-------------:| :----| :---- | 58 | | **instance** | Object | A chart or a stage instance. If you use this parameter, then *type* attribute is ignored. | **Required** (if *type* is not defined) | 59 | | **type** | String | Chart type. Use this to create a simple chart. This parameter is ignored when an *instance* is defined. | **Required** (if *instance* is not defined) | 60 | | **afterDraw** | Function | Chart after draw callback function. This parameter is ignored when 'instance' param is defined and it is a stage instance. | optional | 61 | | A chart or stage settings | | You can use any chart or stage settings as an attribute, like *data*, *title*, *label*, *legend* and so on. | optional | 62 | 63 | ## Examples 64 | 65 | Please see a sample applications in the *ember-anychart/tests/dummy/* folder. 66 | 67 | ### How to run a sample application 68 | 69 | You should have NodeJs, Ember, and Bower installed. See [Download and install](#download-and-install). 70 | 71 | Clone and install: 72 | ``` 73 | git clone https://github.com/AnyChart/AnyChart-Ember 74 | cd AnyChart-Ember 75 | npm install 76 | bower install 77 | ember server 78 | ``` 79 | 80 | Then open browser at *http://localhost:4200* 81 | 82 | ### Sample files 83 | 84 | | Example | Files | Description | 85 | | :--- |:---| :----| 86 | |**Simple chart**|*ember-anychart/tests/dummy/app/routes/simple-chart.js*
*ember-anychart/tests/dummy/app/templates/simple-chart.hbs*|Shows how to create a simple Line Chart by creating chart instance and passing it to *instance* attribute of the component.| 87 | |**Chart with custom settings**|*ember-anychart/tests/dummy/app/routes/chart-with-custom-settings.js*
*ember-anychart/tests/dummy/app/templates/chart-with-custom-settings.hbs*|Shows a simple Pie Chart with *type*, *data* and *title* attributes.
Also shows how to use *afterDraw* callback.| 88 | |**Simple dashboard**|*ember-anychart/tests/dummy/app/routes/simple-dashboard.js*
*ember-anychart/tests/dummy/app/templates/simple-dashboard.hbs*|Dashboard with stage instance set to *instance* attribute.| 89 | |**Chart with dynamic settings**|*ember-anychart/tests/dummy/app/routes/chart-with-dynamic-settings.js*
*ember-anychart/tests/dummy/app/templates/chart-with-dynamic-settings.hbs*
*ember-anychart/tests/dummy/app/controllers/chart-with-dynamic-settings.js*|Dynamic change of chart palette setting with the help of ember controller action.| 90 | |**Data streaming**|*ember-anychart/tests/dummy/app/routes/data-streaming.js*
*ember-anychart/tests/dummy/app/templates/data-streaming.hbs*|Dynamic change of chart data.| 91 | |**Simple stock chart**|*ember-anychart/tests/dummy/app/routes/simple-stock-chart.js*
*ember-anychart/tests/dummy/app/templates/simple-stock-chart.hbs*
*ember-anychart/tests/dummy/public/stock-data.json*|A simple Stock Chart. Shows how you can load a big data set from a JSON file.| 92 | |**Geographical colored map**|*ember-anychart/tests/dummy/app/routes/geographical-colored-map.js*
*ember-anychart/tests/dummy/app/templates/geographical-colored-map.hbs*
*ember-anychart/tests/dummy/public/united_states_of_america.topo.json*|Colored Geographical Map with geo data loaded from a file.| 93 | |**Simple gantt chart** |*ember-anychart/tests/dummy/app/routes/simple-gantt-chart.js*
*ember-anychart/tests/dummy/app/templates/simple-gantt-chart.hbs*|Simple Gantt Chart.| 94 | 95 | ## Versions 96 | 97 | * Code in the *v1.1.1* branch works with Ember version 2.10 98 | * Code in the *master* branch works with Ember version 2.14 and higher 99 | 100 | ## Contacts 101 | 102 | * Web: [www.anychart.com](www.anychart.com) 103 | * Email: [contact@anychart.com](mailto:contact@anychart.com) 104 | * Twitter: [anychart](https://twitter.com/anychart) 105 | * Facebook: [AnyCharts](https://www.facebook.com/AnyCharts) 106 | * LinkedIn: [anychart](https://www.linkedin.com/company/anychart) 107 | 108 | ## Links 109 | 110 | * [AnyChart Website](https://www.anychart.com) 111 | * [Download AnyChart](https://www.anychart.com/download/) 112 | * [AnyChart Licensing](https://www.anychart.com/buy/) 113 | * [AnyChart Support](https://www.anychart.com/support/) 114 | * [Report Issues](https://github.com/AnyChart/AnyChart-Ember/issues) 115 | * [AnyChart Playground](https://playground.anychart.com) 116 | * [AnyChart Documentation](https://docs.anychart.com) 117 | * [AnyChart API Reference](https://api.anychart.com) 118 | * [AnyChart Sample Solutions](https://www.anychart.com/solutions/) 119 | * [AnyChart Integrations](https://www.anychart.com/integrations/) 120 | 121 | ## License 122 | 123 | [© AnyChart.com - JavaScript charts](https://www.anychart.com). 124 | [![Analytics](https://ga-beacon.appspot.com/UA-228820-4/Plugins/Ember?pixel&useReferer)](https://github.com/igrigorik/ga-beacon) 125 | -------------------------------------------------------------------------------- /addon/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/addon/.gitkeep -------------------------------------------------------------------------------- /addon/components/ember-anychart.js: -------------------------------------------------------------------------------- 1 | import Ember from "ember"; 2 | 3 | export default Ember.Component.extend({ 4 | classNames: ["ember-anychart"], 5 | 6 | // Instance of chart or stage object 7 | instance: undefined, 8 | 9 | didReceiveAttrs() { 10 | this._super(...arguments); 11 | 12 | let attributes = this.get('attrs'); 13 | 14 | if (!("instance" in attributes)) { 15 | let acType = this.get("type") || "line"; 16 | this.set("instance", anychart[acType]()); 17 | } 18 | 19 | let instance = this.get("instance"); 20 | let attr; 21 | for (attr in attributes) { 22 | let value = attributes[attr]["value"]; 23 | if (typeof instance[attr] === "function") { 24 | instance[attr](value); 25 | } 26 | } 27 | }, 28 | 29 | didInsertElement() { 30 | this._super(...arguments); 31 | 32 | Ember.run.scheduleOnce('afterRender', this, '_renderChart'); 33 | }, 34 | 35 | _renderChart(){ 36 | let instance = this.get("instance"); 37 | if (typeof instance === "object") { 38 | instance['container'](this.elementId); 39 | // If instance is a chart 40 | if (typeof instance['draw'] === "function") { 41 | instance['draw'](); 42 | 43 | // after draw callback processing 44 | let afterDraw = this.get("afterDraw"); 45 | if (typeof afterDraw === "function") { 46 | instance['listenOnce']("chartdraw", function() { 47 | instance.animation(false); 48 | afterDraw(instance); 49 | }); 50 | } 51 | } 52 | } 53 | } 54 | }); 55 | -------------------------------------------------------------------------------- /app/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/app/.gitkeep -------------------------------------------------------------------------------- /app/components/ember-anychart.js: -------------------------------------------------------------------------------- 1 | import EmberAnyChartComponent from 'ember-anychart/components/ember-anychart'; 2 | 3 | export default EmberAnyChartComponent; 4 | -------------------------------------------------------------------------------- /app/templates/components/ember-anychart.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /blueprints/ember-anychart/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | normalizeEntityName: function() { 3 | }, 4 | 5 | afterInstall: function() { 6 | return this.addBowerPackagesToProject([{name: 'anychart', target: '~8'}, {name: 'proj4', target: '~2'}]); 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ember-anychart", 3 | "description": "Ember component for the AnyChart JavaScript charting library.", 4 | "authors": [ 5 | "AnyChart" 6 | ], 7 | "license": "Apache-2.0", 8 | "homepage": "https://github.com/AnyChart/AnyChart-Ember", 9 | "ignore": [ 10 | "**/.*", 11 | "node_modules", 12 | "bower_components", 13 | "test", 14 | "tests", 15 | "yarn.lock" 16 | ], 17 | "dependencies": { 18 | "ember": "~2.14.0", 19 | "ember-cli-shims": "0.1.3", 20 | "anychart": "~8", 21 | "proj4": "~2" 22 | }, 23 | "keywords": [ 24 | "anychart", 25 | "anystock", 26 | "anygantt", 27 | "anymap", 28 | "charts", 29 | "javascript charts", 30 | "ajax charts", 31 | "plots", 32 | "line charts", 33 | "bar charts", 34 | "pie charts", 35 | "javascript plots", 36 | "ajax plots", 37 | "javascript", 38 | "react", 39 | "SVG", 40 | "HTML5", 41 | "framework", 42 | "VML" 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /config/ember-try.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true*/ 2 | module.exports = { 3 | scenarios: [ 4 | { 5 | name: 'ember-lts-2.4', 6 | bower: { 7 | dependencies: { 8 | 'ember': 'components/ember#lts-2-4' 9 | }, 10 | resolutions: { 11 | 'ember': 'lts-2-4' 12 | } 13 | } 14 | }, 15 | { 16 | name: 'ember-lts-2.8', 17 | bower: { 18 | dependencies: { 19 | 'ember': 'components/ember#lts-2-8' 20 | }, 21 | resolutions: { 22 | 'ember': 'lts-2-8' 23 | } 24 | } 25 | }, 26 | { 27 | name: 'ember-release', 28 | bower: { 29 | dependencies: { 30 | 'ember': 'components/ember#release' 31 | }, 32 | resolutions: { 33 | 'ember': 'release' 34 | } 35 | } 36 | }, 37 | { 38 | name: 'ember-beta', 39 | bower: { 40 | dependencies: { 41 | 'ember': 'components/ember#beta' 42 | }, 43 | resolutions: { 44 | 'ember': 'beta' 45 | } 46 | } 47 | }, 48 | { 49 | name: 'ember-canary', 50 | bower: { 51 | dependencies: { 52 | 'ember': 'components/ember#canary' 53 | }, 54 | resolutions: { 55 | 'ember': 'canary' 56 | } 57 | } 58 | } 59 | ] 60 | }; 61 | -------------------------------------------------------------------------------- /config/environment.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true*/ 2 | 'use strict'; 3 | 4 | module.exports = function(/* environment, appConfig */) { 5 | return { }; 6 | }; 7 | -------------------------------------------------------------------------------- /ember-cli-build.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true*/ 2 | /* global require, module */ 3 | var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); 4 | 5 | module.exports = function(defaults) { 6 | var app = new EmberAddon(defaults); 7 | 8 | /* 9 | This build file specifies the options for the dummy test app of this 10 | addon, located in `/tests/dummy` 11 | This build file does *not* influence how the addon or the app using it 12 | behave. You most likely want to be modifying `./index.js` or app's build file 13 | */ 14 | app.import('bower_components/proj4/dist/proj4.js'); 15 | 16 | app.import('bower_components/anychart/dist/js/anychart-bundle.min.js'); 17 | app.import('bower_components/anychart/dist/css/anychart-ui.min.css'); 18 | 19 | app.import('vendor/anychart/fonts.css'); 20 | app.import('vendor/anychart/fonts/anychart.eot', {destDir: '/assets/fonts'}); 21 | app.import('vendor/anychart/fonts/anychart.svg', {destDir: '/assets/fonts'}); 22 | app.import('vendor/anychart/fonts/anychart.ttf', {destDir: '/assets/fonts'}); 23 | app.import('vendor/anychart/fonts/anychart.woff', {destDir: '/assets/fonts'}); 24 | 25 | return app.toTree(); 26 | }; 27 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* jshint node: true */ 2 | 'use strict'; 3 | 4 | module.exports = { 5 | name: 'ember-anychart', 6 | included: function (app) { 7 | this._super.included(app); 8 | 9 | app.import('bower_components/proj4/dist/proj4.js'); 10 | 11 | app.import('bower_components/anychart/dist/js/anychart-bundle.min.js'); 12 | app.import('bower_components/anychart/dist/css/anychart-ui.min.css'); 13 | 14 | app.import('vendor/anychart/fonts.css'); 15 | app.import('vendor/anychart/fonts/anychart.eot', {destDir: '/assets/fonts'}); 16 | app.import('vendor/anychart/fonts/anychart.svg', {destDir: '/assets/fonts'}); 17 | app.import('vendor/anychart/fonts/anychart.ttf', {destDir: '/assets/fonts'}); 18 | app.import('vendor/anychart/fonts/anychart.woff', {destDir: '/assets/fonts'}); 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ember-anychart", 3 | "version": "1.4.1", 4 | "description": "Ember component for the AnyChart JavaScript charting library.", 5 | "keywords": [ 6 | "addon", 7 | "ember-addon", 8 | "charts", 9 | "chart", 10 | "charting", 11 | "anychart", 12 | "anycharts", 13 | "graphs", 14 | "graph", 15 | "data", 16 | "dashboards", 17 | "dashboard", 18 | "visualizations", 19 | "wrapper" 20 | ], 21 | "license": "Apache-2.0", 22 | "author": "AnyChart", 23 | "directories": { 24 | "doc": "doc", 25 | "test": "tests" 26 | }, 27 | "repository": "https://github.com/AnyChart/anychart-ember", 28 | "scripts": { 29 | "build": "ember build", 30 | "start": "ember server", 31 | "test": "ember try:each" 32 | }, 33 | "dependencies": { 34 | "ember-cli-babel": "^6.12.0" 35 | }, 36 | "devDependencies": { 37 | "broccoli-asset-rev": "^2.4.5", 38 | "ember-ajax": "^3.1.0", 39 | "ember-cli": "^3.0.2", 40 | "ember-cli-app-version": "^2.0.0", 41 | "ember-cli-dependency-checker": "^2.1.0", 42 | "ember-cli-htmlbars": "^1.0.10", 43 | "ember-cli-htmlbars-inline-precompile": "^1.0.2", 44 | "ember-cli-inject-live-reload": "^1.4.1", 45 | "ember-cli-jshint": "^2.0.1", 46 | "ember-cli-qunit": "^4.3.2", 47 | "ember-cli-release": "^0.2.9", 48 | "ember-cli-sri": "^2.1.0", 49 | "ember-cli-uglify": "^1.2.0", 50 | "ember-data": "^2.10.0", 51 | "ember-disable-prototype-extensions": "^1.1.0", 52 | "ember-load-initializers": "^1.0.0", 53 | "ember-resolver": "^4.5.5", 54 | "loader.js": "^4.0.10" 55 | }, 56 | "engines": { 57 | "node": ">= 0.12.0" 58 | }, 59 | "ember-addon": { 60 | "configPath": "tests/dummy/config" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /testem.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true*/ 2 | module.exports = { 3 | "framework": "qunit", 4 | "test_page": "tests/index.html?hidepassed", 5 | "disable_watching": true, 6 | "launch_in_ci": [ 7 | "PhantomJS" 8 | ], 9 | "launch_in_dev": [ 10 | "PhantomJS", 11 | "Chrome" 12 | ] 13 | }; 14 | -------------------------------------------------------------------------------- /tests/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "window", 5 | "location", 6 | "setTimeout", 7 | "$", 8 | "-Promise", 9 | "define", 10 | "console", 11 | "visit", 12 | "exists", 13 | "fillIn", 14 | "click", 15 | "keyEvent", 16 | "triggerEvent", 17 | "find", 18 | "findWithAssert", 19 | "wait", 20 | "DS", 21 | "andThen", 22 | "currentURL", 23 | "currentPath", 24 | "currentRouteName", 25 | "anychart" 26 | ], 27 | "node": false, 28 | "browser": false, 29 | "boss": true, 30 | "curly": true, 31 | "debug": false, 32 | "devel": false, 33 | "eqeqeq": true, 34 | "evil": true, 35 | "forin": false, 36 | "immed": false, 37 | "laxbreak": false, 38 | "newcap": true, 39 | "noarg": true, 40 | "noempty": false, 41 | "nonew": false, 42 | "nomen": false, 43 | "onevar": false, 44 | "plusplus": false, 45 | "regexp": false, 46 | "undef": true, 47 | "sub": true, 48 | "strict": false, 49 | "white": false, 50 | "eqnull": true, 51 | "esversion": 6, 52 | "unused": true 53 | } 54 | -------------------------------------------------------------------------------- /tests/dummy/app/app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from './config/environment'; 5 | 6 | let App; 7 | 8 | App = Ember.Application.extend({ 9 | modulePrefix: config.modulePrefix, 10 | podModulePrefix: config.podModulePrefix, 11 | Resolver 12 | }); 13 | 14 | loadInitializers(App, config.modulePrefix); 15 | 16 | export default App; 17 | -------------------------------------------------------------------------------- /tests/dummy/app/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/dummy/app/components/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/controllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/dummy/app/controllers/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/controllers/chart-with-dynamic-settings.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | let paletteOptions = [ 4 | 'defaultPalette', 5 | 'blue', 6 | 'coffee', 7 | 'earth', 8 | 'glamour', 9 | 'monochrome', 10 | 'morning', 11 | 'pastel', 12 | 'provence', 13 | 'sea', 14 | 'turquoise', 15 | 'v6', 16 | ]; 17 | 18 | export default Ember.Controller.extend({ 19 | paletteOptions: paletteOptions, 20 | actions: { 21 | changePalette(palette) { 22 | this.model.chart.palette(anychart.palettes[palette]); 23 | } 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /tests/dummy/app/helpers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/dummy/app/helpers/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ember plugin for AnyChart examples 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | 12 | 13 | 14 | 15 | {{content-for "head-footer"}} 16 | 17 | 18 | {{content-for "body"}} 19 | 20 | 21 | 22 | 23 | {{content-for "body-footer"}} 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/dummy/app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /tests/dummy/app/router.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import config from './config/environment'; 3 | 4 | const Router = Ember.Router.extend({ 5 | location: config.locationType, 6 | rootURL: config.rootURL 7 | }); 8 | 9 | Router.map(function() { 10 | this.route('simple-chart'); 11 | this.route('chart-with-custom-settings'); 12 | this.route('simple-dashboard'); 13 | this.route('chart-with-dynamic-settings'); 14 | this.route('data-streaming'); 15 | this.route('simple-stock-chart'); 16 | this.route('geographical-colored-map'); 17 | this.route('simple-gantt-chart'); 18 | }); 19 | 20 | export default Router; 21 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/dummy/app/routes/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/routes/chart-with-custom-settings.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // Chart instance 5 | chart: undefined, 6 | 7 | model(){ 8 | let self = this; 9 | return { 10 | data: [["Pen", 3], ["Pineapple", 9], ["Apple", 5], ["Pen", 3]], 11 | type: 'pie', 12 | title: "Chart title text", 13 | 14 | //After draw callback 15 | afterDraw: function(chart){ 16 | self.chart = chart; 17 | let oldTitle = self.chart.title().text(); 18 | self.chart.title(oldTitle + "!!!"); 19 | } 20 | }; 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/chart-with-dynamic-settings.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // chart instance 5 | chart: undefined, 6 | 7 | model() { 8 | // create data set on our data 9 | let dataSet = anychart.data.set([ 10 | ['Nail polish', 6814, 3054, 4376, 4229], 11 | ['Eyebrow pencil', 7012, 5067, 8987, 3932], 12 | ['Pomade', 8814, 9054, 4376, 9256] 13 | ]); 14 | 15 | // map data for the first series, take x from the zero column and value from the first column of data set 16 | let seriesData_1 = dataSet.mapAs({x: [0], value: [1]}); 17 | 18 | // map data for the second series, take x from the zero column and value from the second column of data set 19 | let seriesData_2 = dataSet.mapAs({x: [0], value: [2]}); 20 | 21 | // map data for the third series, take x from the zero column and value from the third column of data set 22 | let seriesData_3 = dataSet.mapAs({x: [0], value: [3]}); 23 | 24 | // map data for the fourth series, take x from the zero column and value from the fourth column of data set 25 | let seriesData_4 = dataSet.mapAs({x: [0], value: [4]}); 26 | 27 | // create column chart 28 | this.chart = anychart.column(); 29 | 30 | // turn on chart animation 31 | this.chart.animation(true); 32 | 33 | // set chart title text settings 34 | this.chart.title('Top 3 Products with Region Sales Data'); 35 | 36 | this.chart.yAxis().labels().format("${%Value}"); 37 | 38 | // set titles for Y-axis 39 | this.chart.yAxis().title('Revenue'); 40 | 41 | // set up tooltip position and text formatter 42 | this.chart.tooltip().position('top').anchor('bottom').offsetX(0).offsetY(5).positionMode('point'); 43 | this.chart.tooltip().format("{%SeriesName}: ${%Value}{groupsSeparator:\\,}"); 44 | 45 | // turn on legend and tune it 46 | this.chart.legend().enabled(true).fontSize(13).padding([0, 0, 20, 0]); 47 | 48 | // interactivity settings 49 | this.chart.interactivity().hoverMode('single'); 50 | 51 | // helper function to setup label settings for all series 52 | let setupSeries = function(series, name) { 53 | series.name(name); 54 | series.hovered().labels().enabled(false); 55 | 56 | let seriesLabels = series.labels(); 57 | seriesLabels.enabled(true).position('top').anchor('bottom').format("${%Value}{groupsSeparator:\\,}"); 58 | }; 59 | 60 | // create first series with mapped data 61 | let series_1 = this.chart.column(seriesData_1); 62 | setupSeries(series_1, 'Florida'); 63 | 64 | // create second series with mapped data 65 | let series_2 = this.chart.column(seriesData_2); 66 | setupSeries(series_2, 'Texas'); 67 | 68 | // create third series with mapped data 69 | let series_3 = this.chart.column(seriesData_3); 70 | setupSeries(series_3, 'Arizona'); 71 | 72 | // create fourth series with mapped data 73 | let series_4 = this.chart.column(seriesData_4); 74 | setupSeries(series_4, 'Nevada'); 75 | 76 | // set up chart palette as 'defaultPalette' 77 | this.chart.palette(anychart.palettes.defaultPalette); 78 | 79 | return {chart: this.chart}; 80 | } 81 | }); 82 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/data-streaming.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | chart: undefined, 5 | dataSet: undefined, 6 | 7 | beforeModel(){ 8 | if (!this.chart) { 9 | // create line chart 10 | this.chart = anychart.line(); 11 | 12 | // turn the legend on 13 | this.chart.legend().enabled(true).fontSize(13).padding([0, 0, 20, 0]); 14 | 15 | // Here we create initial data for dataSet 16 | let data = []; 17 | for (let i = 0; i < 50; i++) { 18 | data.push([ 19 | this._getRandomInt(180, 350), 20 | this._getRandomInt(20, 150) 21 | ]); 22 | } 23 | 24 | // create data set on our data 25 | this.dataSet = anychart.data.set(data); 26 | 27 | // map data for the first series, takes value from the first column of data set 28 | let seriesData_1 = this.dataSet.mapAs({value: [0]}); 29 | 30 | // create first series with mapped data 31 | let series_1 = this.chart.stepLine(seriesData_1); 32 | series_1.color('#ff0e09').name('Red'); 33 | series_1.selected().markers().enabled(false); 34 | 35 | // map data for the second series, takes value from the second column of data set 36 | let seriesData_2 = this.dataSet.mapAs({value: [1]}); 37 | 38 | // create second series with mapped data 39 | let series_2 = this.chart.splineArea(seriesData_2); 40 | series_2.fill('#00a0ff 0.4').name('Blue'); 41 | series_2.selected().markers().enabled(false); 42 | } 43 | }, 44 | 45 | model() { 46 | // Now we've got some new data 47 | let newData = [ 48 | [ 49 | this._getRandomInt(180, 350), 50 | this._getRandomInt(20, 150) 51 | ], [ 52 | this._getRandomInt(180, 350), 53 | this._getRandomInt(20, 150) 54 | ] 55 | ]; 56 | 57 | // Adding new data to dataSet, and removing same amount of rows of older data 58 | for (let i in newData) { 59 | // Just removing the most old row of data 60 | this.dataSet.remove(0); 61 | // Add new row 62 | this.dataSet.append(newData[i]); 63 | } 64 | 65 | return {chart: this.chart}; 66 | }, 67 | afterModel() { 68 | // Set timer to reload model 69 | let self = this; 70 | Ember.run.later((function () { 71 | self.refresh(); 72 | }), 500); 73 | }, 74 | 75 | // Helper utility function to get random integer 76 | _getRandomInt(min, max) 77 | { 78 | min = Math.ceil(min); 79 | max = Math.floor(max); 80 | return Math.floor(Math.random() * (max - min)) + min; 81 | } 82 | }) 83 | ; 84 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/geographical-colored-map.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // chart instance 5 | chart: undefined, 6 | 7 | 8 | model: function() { 9 | let self = this; 10 | 11 | // load data from file 12 | return Ember.$.getJSON("united_states_of_america.topo.json").then(function(data) { 13 | return { 14 | chart: self._createChart(data) 15 | }; 16 | }); 17 | }, 18 | 19 | _createChart: function(data){ 20 | this.chart = anychart.map(); 21 | 22 | //set map title settings using html 23 | this.chart.title().padding(10, 0).hAlign('center').fontFamily("'Verdana', Helvetica, Arial, sans-serif"); 24 | this.chart.title().enabled(true); 25 | this.chart.title().text( 26 | ' The States That ' + 27 | 'Love Wine The Most.' + '
' + 28 | 'Litres of wine ' + 29 | 'per person each state consumed in 2013.' 30 | ).useHtml(true); 31 | 32 | //set map Geo data 33 | this.chart.geoData(data); 34 | 35 | let colorRange = this.chart.colorRange(); 36 | colorRange.enabled(true).padding([20, 0, 0, 0]); 37 | colorRange.labels().padding(3); 38 | colorRange.colorLineSize(10); 39 | 40 | colorRange.stroke('#B9B9B9'); 41 | colorRange.ticks().stroke('#B9B9B9').position('outside').length(10).enabled(true); 42 | colorRange.minorTicks().stroke('#B9B9B9').position('outside').length(5).enabled(true); 43 | colorRange.marker().size(7); 44 | 45 | let dataSet = anychart.data.set([ 46 | {id: 'US.MN', name: "Minnesota", 'value': 8.4}, 47 | {id: 'US.MT', name: "Montana", 'value': 8.5}, 48 | {id: 'US.ND', name: "North Dakota", 'value': 5.1}, 49 | {id: 'US.ID', name: "Idaho", 'value': 8.0}, 50 | {id: 'US.WA', name: "Washington", 'value': 13.1}, 51 | {id: 'US.AZ', name: "Arizona", 'value': 9.7}, 52 | {id: 'US.CA', name: "California", 'value': 14.0}, 53 | {id: 'US.CO', name: "Colorado", 'value': 8.7}, 54 | {id: 'US.NV', name: "Nevada", 'value': 14.7}, 55 | {id: 'US.NM', name: "New Mexico", 'value': 6.9}, 56 | {id: 'US.OR', name: "Oregon", 'value': 12.2}, 57 | {id: 'US.UT', name: "Utah", 'value': 3.2}, 58 | {id: 'US.WY', name: "Wyoming", 'value': 5.2}, 59 | {id: 'US.AR', name: "Arkansas", 'value': 4.2}, 60 | {id: 'US.IA', name: "Iowa", 'value': 4.7}, 61 | {id: 'US.KS', name: "Kansas", 'value': 3.2}, 62 | {id: 'US.MO', name: "Missouri", 'value': 7.2}, 63 | {id: 'US.NE', name: "Nebraska", 'value': 5.0}, 64 | {id: 'US.OK', name: "Oklahoma", 'value': 4.5}, 65 | {id: 'US.SD', name: "South Dakota", 'value': 5.0}, 66 | {id: 'US.LA', name: "Louisiana", 'value': 5.7}, 67 | {id: 'US.TX', name: "Texas", 'value': 5.0}, 68 | {id: 'US.CT', name: "Connecticut", 'value': 14.4, labels: false}, 69 | {id: 'US.MA', name: "Massachusetts", 'value': 16.9, labels: false}, 70 | {id: 'US.NH', name: "New Hampshire", 'value': 19.6}, 71 | {id: 'US.RI', name: "Rhode Island", 'value': 14.0, labels: false}, 72 | {id: 'US.VT', name: "Vermont", 'value': 17.5}, 73 | {id: 'US.AL', name: "Alabama", 'value': 6.0}, 74 | {id: 'US.FL', name: "Florida", 'value': 12.4}, 75 | {id: 'US.GA', name: "Georgia", 'value': 5.9}, 76 | {id: 'US.MS', name: "Mississippi", 'value': 2.8}, 77 | {id: 'US.SC', name: "South Carolina", 'value': 6.1}, 78 | {id: 'US.IL', name: "Illinois", 'value': 10.2}, 79 | {id: 'US.IN', name: "Indiana", 'value': 6.1}, 80 | {id: 'US.KY', name: "Kentucky", 'value': 3.9}, 81 | {id: 'US.NC', name: "North Carolina", 'value': 6.6}, 82 | {id: 'US.OH', name: "Ohio", 'value': 7.2}, 83 | {id: 'US.TN', name: "Tennessee", 'value': 5.4}, 84 | {id: 'US.VA', name: "Virginia", 'value': 10.7}, 85 | {id: 'US.WI', name: "Wisconsin", 'value': 9.1}, 86 | {id: 'US.WY', name: "Wyoming", 'value': 5.2, labels: false}, 87 | {id: 'US.WV', name: "West Virginia", 'value': 2.4}, 88 | {id: 'US.DE', name: "Delaware", 'value': 13.5, labels: false}, 89 | {id: 'US.DC', name: "District of Columbia", 'value': 25.7, labels: false}, 90 | {id: 'US.MD', name: "Maryland", 'value': 8.9, labels: false}, 91 | {id: 'US.NJ', name: "New Jersey", 'value': 14.9, labels: false}, 92 | {id: 'US.NY', name: "New York", 'value': 11.9}, 93 | {id: 'US.PA', name: "Pennsylvania", 'value': 5.6}, 94 | {id: 'US.ME', name: "Maine", 'value': 10.4}, 95 | {id: 'US.HI', name: "Hawaii", 'value': 13.1}, 96 | {id: 'US.AK', name: "Alaska", 'value': 10.9}, 97 | {id: 'US.MI', name: "Michigan", 'value': 7.6} 98 | ]); 99 | 100 | let series = this.chart.choropleth(dataSet); 101 | series.hovered().fill('#f48fb1'); 102 | series.hovered().stroke(anychart.color.darken('#f48fb1')); 103 | series.selected().fill('#c2185b'); 104 | series.selected().stroke(anychart.color.darken('#c2185b')); 105 | 106 | series.tooltip().useHtml(true); 107 | series.tooltip().format(function () { 108 | return '' + this.value + ' litres per capita'; 109 | }); 110 | series.colorScale(anychart.scales.linearColor('#c2e9fb', '#81d4fa', '#01579b', '#002746')); 111 | 112 | return this.chart; 113 | }, 114 | }); 115 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/index.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | beforeModel() { 5 | this._super(...arguments); 6 | this.replaceWith('simple-chart'); 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/simple-chart.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // chart instance 5 | chart: undefined, 6 | 7 | model() { 8 | if (this.chart === undefined) { 9 | // We have some data 10 | let data = [ 11 | ['1986', 3.6, 2.3, 2.8, 11.5], 12 | ['1987', 7.1, 4.0, 4.1, 14.1], 13 | ['1988', 8.5, 6.2, 5.1, 17.5], 14 | ['1989', 9.2, 11.8, 6.5, 18.9], 15 | ['1990', 10.1, 13.0, 12.5, 20.8], 16 | ['1991', 11.6, 13.9, 18.0, 22.9], 17 | ['1992', 16.4, 18.0, 21.0, 25.2], 18 | ['1993', 18.0, 23.3, 20.3, 27.0], 19 | ['1994', 13.2, 24.7, 19.2, 26.5], 20 | ['1995', 12.0, 18.0, 14.4, 25.3], 21 | ['1996', 3.2, 15.1, 9.2, 23.4], 22 | ['1997', 4.1, 11.3, 5.9, 19.5], 23 | ['1998', 6.3, 14.2, 5.2, 17.8], 24 | ['1999', 9.4, 13.7, 4.7, 16.2], 25 | ['2000', 11.5, 9.9, 4.2, 15.4], 26 | ['2001', 13.5, 12.1, 1.2, 14.0], 27 | ['2002', 14.8, 13.5, 5.4, 12.5], 28 | ['2003', 16.6, 15.1, 6.3, 10.8], 29 | ['2004', 18.1, 17.9, 8.9, 8.9], 30 | ['2005', 17.0, 18.9, 10.1, 8.0], 31 | ['2006', 16.6, 20.3, 11.5, 6.2], 32 | ['2007', 14.1, 20.7, 12.2, 5.1], 33 | ['2008', 15.7, 21.6, 10, 3.7], 34 | ['2009', 12.0, 22.5, 8.9, 1.5] 35 | ]; 36 | 37 | // create data set with our data 38 | let dataSet = anychart.data.set(data); 39 | 40 | // map data for the first series, take x from the zero column and value from the first column of data set 41 | let seriesData_1 = dataSet.mapAs({x: [0], value: [1]}); 42 | 43 | // map data for the second series, take x from the zero column and value from the second column of data set 44 | let seriesData_2 = dataSet.mapAs({x: [0], value: [2]}); 45 | 46 | // map data for the third series, take x from the zero column and value from the third column of data set 47 | let seriesData_3 = dataSet.mapAs({x: [0], value: [3]}); 48 | 49 | // create line chart 50 | this.chart = anychart.line(); 51 | 52 | // turn on chart animation 53 | this.chart.animation(true); 54 | 55 | // turn on the crosshair 56 | this.chart.crosshair().enabled(true).yLabel().enabled(false); 57 | this.chart.crosshair().yStroke(null); 58 | 59 | // set up tooltip 60 | this.chart.tooltip().positionMode('point').position('right').anchor('left').offsetX(5).offsetY(5); 61 | 62 | // set chart title text settings 63 | this.chart.title('Trend of Sales of the Most Popular Products of ACME Corp.'); 64 | this.chart.title().padding([0, 0, 5, 0]); 65 | 66 | // set yAxis title 67 | this.chart.yAxis().title('Number of Bottles Sold (thousands)'); 68 | this.chart.xAxis().labels().padding([5]); 69 | 70 | // create first series with mapped data 71 | let series_1 = this.chart.line(seriesData_1); 72 | series_1.name('Brandy'); 73 | series_1.hovered().markers().enabled(true).type('circle').size(4); 74 | 75 | // create second series with mapped data 76 | let series_2 = this.chart.line(seriesData_2); 77 | series_2.name('Whiskey'); 78 | series_2.hovered().markers().enabled(true).type('circle').size(4); 79 | 80 | // create third series with mapped data 81 | let series_3 = this.chart.line(seriesData_3); 82 | series_3.name('Tequila'); 83 | series_3.hovered().markers().enabled(true).type('circle').size(4); 84 | 85 | // turn the legend on 86 | this.chart.legend().enabled(true).fontSize(13).padding([0, 0, 10, 0]); 87 | 88 | // set up paddings 89 | this.chart.padding([10, 20, 5, 20]); 90 | } 91 | 92 | // return our chart instance as route's model 93 | return { 94 | chart: this.chart 95 | }; 96 | } 97 | }); 98 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/simple-dashboard.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // stage instance 5 | stage: undefined, 6 | 7 | // Charts instances 8 | chart1: undefined, 9 | chart2: undefined, 10 | 11 | model() { 12 | if (this.stage === undefined) { 13 | let data = [ 14 | ['Rouge', '80540'], 15 | ['Foundation', '94190'], 16 | ['Mascara', '102610'], 17 | ['Lip gloss', '110430'], 18 | ['Pomade', '128000'], 19 | ['Nail polish', '143760'], 20 | ['Eyebrow pencil', '170670'], 21 | ['Eyeliner', '213210'], 22 | ['Eyeshadows', '249980'] 23 | ]; 24 | 25 | // Create stage 26 | this.stage = anychart.graphics.create(); 27 | 28 | // Create first chart 29 | this.chart1 = anychart.column(); 30 | 31 | // turn on chart1 animation 32 | this.chart1.animation(true); 33 | 34 | // set chart1 title text settings 35 | this.chart1.title('Top 10 Cosmetic Products by Revenue'); 36 | 37 | // tooltips position and interactivity settings 38 | this.chart1.tooltip().positionMode('point').position('top').anchor('bottom').offsetX(0).offsetY(5); 39 | this.chart1.interactivity().hoverMode('byX'); 40 | 41 | // set scale minimum 42 | this.chart1.yScale().minimum(0); 43 | 44 | // axes titles 45 | this.chart1.xAxis().title('Product'); 46 | this.chart1.yAxis().title('Revenue'); 47 | 48 | // set yAxis labels formatter 49 | this.chart1.yAxis().labels().format("${%Value}"); 50 | 51 | // create area series with passed data 52 | let series = this.chart1.column(data); 53 | 54 | // set series tooltip settings 55 | series.tooltip().format("${%Value}{groupsSeparator:\\,}"); 56 | 57 | // set up chart's size 58 | this.chart1.width(800); 59 | this.chart1.height(300); 60 | 61 | // create second chart 62 | this.chart2 = anychart.pie(data); 63 | 64 | // turn on chart2 animation 65 | this.chart2.animation(true); 66 | 67 | //set chart radius 68 | this.chart2.radius('43%'); 69 | 70 | // set up chart2 legend 71 | this.chart2.legend().enabled(true).position("left").align("top").itemsLayout("vertical"); 72 | 73 | this.chart2.width(800); 74 | this.chart2.height(300); 75 | this.chart2.top(300); 76 | 77 | // set stage as container for the both of charts and initiate drawing 78 | this.chart1.container(this.stage); 79 | this.chart2.container(this.stage); 80 | 81 | this.chart1.draw(); 82 | this.chart2.draw(); 83 | } 84 | 85 | // return our stage instance as route's model 86 | return { 87 | stage: this.stage 88 | }; 89 | } 90 | }); 91 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/simple-gantt-chart.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // chart instance 5 | chart: undefined, 6 | 7 | model() { 8 | // create project gantt chart 9 | this.chart = anychart.ganttProject(); 10 | 11 | // create data tree on our data 12 | let treeData = anychart.data.tree(this._getData(), 'as-table'); 13 | 14 | // set data for the chart 15 | this.chart.data(treeData); 16 | 17 | // set start splitter position settings 18 | this.chart.splitterPosition(395); 19 | 20 | // get chart data grid link to set column settings 21 | let dataGrid = this.chart.dataGrid(); 22 | 23 | // set first column settings 24 | let firstColumn = dataGrid.column(0); 25 | firstColumn.title('#'); 26 | firstColumn.width(30); 27 | firstColumn.labels().hAlign('center'); 28 | 29 | // set second column settings 30 | let secondColumn = dataGrid.column(1); 31 | secondColumn.labels().hAlign('left'); 32 | secondColumn.width(180); 33 | 34 | // set third column settings 35 | let thirdColumn = dataGrid.column(2); 36 | thirdColumn.title('Start Time'); 37 | thirdColumn.width(90); 38 | thirdColumn.labels().hAlign('right'); 39 | thirdColumn.labels().format(function() {return anychart.format.dateTime(this.item.get('actualStart'), "yyyy.MM.dd");}); 40 | 41 | // set fourth column settings 42 | let fourthColumn = dataGrid.column(3); 43 | fourthColumn.title('End Time'); 44 | fourthColumn.width(90); 45 | fourthColumn.labels().hAlign('right'); 46 | fourthColumn.labels().format(function() {return anychart.format.dateTime(this.item.get('actualStart'), "yyyy.MM.dd");}); 47 | 48 | return { 49 | chart: this.chart, 50 | afterDraw: function(chart) { 51 | chart.zoomTo(951350400000, 954201600000); 52 | } 53 | }; 54 | }, 55 | 56 | _getData() { 57 | return [ 58 | { 59 | "id": "1", 60 | "name": "Phase 1 - Strategic Plan", 61 | "progressValue": "14%", 62 | "actualStart": 951350400000, 63 | "actualEnd": 954201600000 64 | }, 65 | { 66 | "id": "2", 67 | "name": "Self-Assessment", 68 | parent: "1", 69 | "progressValue": "25%", 70 | "actualStart": 951350400000, 71 | "actualEnd": 951955200000 72 | }, 73 | { 74 | "id": "3", 75 | "name": "Define business vision", 76 | parent: "2", 77 | "progressValue": "0%", 78 | "actualStart": 951408000000, 79 | "actualEnd": 951440400000, 80 | "connectTo": "4", 81 | "connectorType": "FinishStart" 82 | }, 83 | { 84 | "id": "4", 85 | "name": "Identify available skills, information and support", 86 | parent: "2", 87 | "progressValue": "0%", 88 | "actualStart": 951494400000, 89 | "actualEnd": 951526800000, 90 | "connectTo": "5", 91 | "connectorType": "FinishStart" 92 | }, 93 | { 94 | "id": "5", 95 | "name": "Decide whether to proceed", 96 | parent: "2", 97 | "progressValue": "0%", 98 | "actualStart": 951753600000, 99 | "actualEnd": 951786000000, 100 | "connectTo": "7", 101 | "connectorType": "FinishStart" 102 | }, 103 | { 104 | "id": "6", 105 | "name": "Define the Opportunity", 106 | parent: "1", 107 | "progressValue": "27%", 108 | "actualStart": 951782400000, 109 | "actualEnd": 952992000000 110 | }, 111 | { 112 | "id": "7", 113 | "name": "Research the market and competition", 114 | parent: "6", 115 | "progressValue": "0%", 116 | "actualStart": 951840000000, 117 | "actualEnd": 951872400000, 118 | "connectTo": "8", 119 | "connectorType": "FinishStart" 120 | }, 121 | { 122 | "id": "8", 123 | "name": "Interview owners of similar businesses", 124 | parent: "6", 125 | "progressValue": "60%", 126 | "actualStart": 951868800000, 127 | "actualEnd": 952473600000, 128 | "connectTo": "9", 129 | "connectorType": "FinishStart" 130 | }, 131 | { 132 | "id": "9", 133 | "name": "Identify needed resources", 134 | parent: "6", 135 | "progressValue": "0%", 136 | "actualStart": 952531200000, 137 | "actualEnd": 952650000000, 138 | "connectTo": "10", 139 | "connectorType": "FinishStart" 140 | }, 141 | { 142 | "id": "10", 143 | "name": "Identify operating cost elements", 144 | parent: "6", 145 | "progressValue": "0%", 146 | "actualStart": 952704000000, 147 | "actualEnd": 952995600000, 148 | "connectTo": "12", 149 | "connectorType": "FinishStart" 150 | }, 151 | { 152 | "id": "11", 153 | "name": "Evaluate Business Approach", 154 | parent: "1", 155 | "progressValue": "0%", 156 | "actualStart": 953049600000, 157 | "actualEnd": 953341200000 158 | }, 159 | { 160 | "id": "12", 161 | "name": "Define new entity requirements", 162 | parent: "11", 163 | "progressValue": "0%", 164 | "actualStart": 953049600000, 165 | "actualEnd": 953082000000, 166 | "connectTo": "17", 167 | "connectorType": "FinishStart" 168 | }, 169 | { 170 | "id": "13", 171 | "name": "Identify on-going business purchase opportunities", 172 | parent: "11", 173 | "progressValue": "0%", 174 | "actualStart": 953136000000, 175 | "actualEnd": 953168400000, 176 | "connectTo": "14", 177 | "connectorType": "FinishStart" 178 | }, 179 | { 180 | "id": "14", 181 | "name": "Research franchise possibilities", 182 | parent: "11", 183 | "progressValue": "0%", 184 | "actualStart": 953222400000, 185 | "actualEnd": 953254800000, 186 | "connectTo": "15", 187 | "connectorType": "FinishStart" 188 | }, 189 | { 190 | "id": "15", 191 | "name": "Summarize business approach", 192 | parent: "11", 193 | "progressValue": "0%", 194 | "actualStart": 953308800000, 195 | "actualEnd": 953341200000, 196 | "connectTo": "21", 197 | "connectorType": "FinishStart" 198 | }, 199 | { 200 | "id": "16", 201 | "name": "Evaluate Potential Risks and Rewards", 202 | parent: "1", 203 | "progressValue": "0%", 204 | "actualStart": 953136000000, 205 | "actualEnd": 953946000000 206 | }, 207 | { 208 | "id": "17", 209 | "name": "Assess market size and stability", 210 | parent: "16", 211 | "progressValue": "0%", 212 | "actualStart": 953136000000, 213 | "actualEnd": 953254800000, 214 | "connectTo": "18", 215 | "connectorType": "FinishStart" 216 | }, 217 | { 218 | "id": "18", 219 | "name": "Estimate the competition", 220 | parent: "16", 221 | "progressValue": "0%", 222 | "actualStart": 953308800000, 223 | "actualEnd": 953341200000, 224 | "connectTo": "19", 225 | "connectorType": "FinishStart" 226 | }, 227 | { 228 | "id": "19", 229 | "name": "Assess needed resource availability", 230 | parent: "16", 231 | "progressValue": "0%", 232 | "actualStart": 953740800000, 233 | "actualEnd": 953859600000, 234 | "connectTo": "20", 235 | "connectorType": "FinishStart" 236 | }, 237 | { 238 | "id": "20", 239 | "name": "Evaluate realistic initial market share", 240 | parent: "16", 241 | "progressValue": "0%", 242 | "actualStart": 953913600000, 243 | "actualEnd": 953946000000 244 | }, 245 | { 246 | "id": "21", 247 | "name": "Determine financial requirements", 248 | parent: "16", 249 | "progressValue": "0%", 250 | "actualStart": 953568000000, 251 | "actualEnd": 953686800000, 252 | "connectTo": "22", 253 | "connectorType": "FinishStart" 254 | }, 255 | { 256 | "id": "22", 257 | "name": "Review personal suitability", 258 | parent: "16", 259 | "progressValue": "0%", 260 | "actualStart": 953740800000, 261 | "actualEnd": 953773200000, 262 | "connectTo": "23", 263 | "connectorType": "FinishStart" 264 | }, 265 | { 266 | "id": "23", 267 | "name": "Evaluate initial profitability", 268 | parent: "16", 269 | "progressValue": "0%", 270 | "actualStart": 953827200000, 271 | "actualEnd": 953859600000, 272 | "connectTo": "24", 273 | "connectorType": "FinishStart" 274 | }, 275 | { 276 | "id": "24", 277 | "name": "Review and modify the strategic plan", 278 | parent: "1", 279 | "progressValue": "0%", 280 | "actualStart": 953913600000, 281 | "actualEnd": 954208800000, 282 | "connectTo": "25", 283 | "connectorType": "FinishStart" 284 | }, 285 | { 286 | "id": "25", 287 | "name": "Confirm decision to proceed", 288 | parent: "1", 289 | "progressValue": "0%", 290 | "actualStart": 954208800000, 291 | "actualEnd": 954208800000, 292 | "connectTo": "28", 293 | "connectorType": "FinishStart" 294 | }, 295 | { 296 | "id": "26", 297 | "name": "Phase 2 - Define the Business Opportunity", 298 | "progressValue": "19%", 299 | "actualStart": 954201600000, 300 | "actualEnd": 957312000000 301 | }, 302 | { 303 | "id": "27", 304 | "name": "Define the Market", 305 | parent: "26", 306 | "progressValue": "28%", 307 | "actualStart": 954201600000, 308 | "actualEnd": 955670400000 309 | }, 310 | { 311 | "id": "28", 312 | "name": "Access available information", 313 | parent: "27", 314 | "progressValue": "0%", 315 | "actualStart": 954262800000, 316 | "actualEnd": 954295200000, 317 | "connectTo": "35", 318 | "connectorType": "StartStart" 319 | }, 320 | { 321 | "id": "29", 322 | "name": "Create market analysis plan", 323 | parent: "27", 324 | "progressValue": "0%", 325 | "actualStart": 954349200000, 326 | "actualEnd": 954468000000 327 | }, 328 | { 329 | "id": "30", 330 | "name": "Implement market analysis plan", 331 | parent: "27", 332 | "progressValue": "40%", 333 | "actualStart": 954460800000, 334 | "actualEnd": 955065600000, 335 | "connectTo": "31", 336 | "connectorType": "FinishStart" 337 | }, 338 | { 339 | "id": "31", 340 | "name": "Identify competition", 341 | parent: "27", 342 | "progressValue": "60%", 343 | "actualStart": 955065600000, 344 | "actualEnd": 955411200000, 345 | "connectTo": "32", 346 | "connectorType": "FinishStart" 347 | }, 348 | { 349 | "id": "32", 350 | "name": "Summarize the market", 351 | parent: "27", 352 | "progressValue": "0%", 353 | "actualStart": 955472400000, 354 | "actualEnd": 955591200000, 355 | "connectTo": "33", 356 | "connectorType": "FinishStart" 357 | }, 358 | { 359 | "id": "33", 360 | "name": "Identify target market niche", 361 | parent: "27", 362 | "progressValue": "0%", 363 | "actualStart": 955645200000, 364 | "actualEnd": 955677600000, 365 | "connectTo": "35", 366 | "connectorType": "StartStart" 367 | }, 368 | { 369 | "id": "34", 370 | "name": "Identify Needed Materials and Supplies", 371 | parent: "26", 372 | "progressValue": "0%", 373 | "actualStart": 955645200000, 374 | "actualEnd": 956368800000 375 | }, 376 | { 377 | "id": "35", 378 | "name": "Select a business approach (from 'Evaluate Business Approach' above)", 379 | parent: "34", 380 | "progressValue": "0%", 381 | "actualStart": 955645200000, 382 | "actualEnd": 955764000000, 383 | "connectTo": "36", 384 | "connectorType": "FinishStart" 385 | }, 386 | { 387 | "id": "36", 388 | "name": "Identify management staff resources", 389 | parent: "34", 390 | "progressValue": "0%", 391 | "actualStart": 955990800000, 392 | "actualEnd": 956023200000, 393 | "connectTo": "37", 394 | "connectorType": "FinishStart" 395 | }, 396 | { 397 | "id": "37", 398 | "name": "Identify staffing requirements", 399 | parent: "34", 400 | "progressValue": "0%", 401 | "actualStart": 956077200000, 402 | "actualEnd": 956109600000, 403 | "connectTo": "38", 404 | "connectorType": "FinishStart" 405 | }, 406 | { 407 | "id": "38", 408 | "name": "Identify needed raw materials", 409 | parent: "34", 410 | "progressValue": "0%", 411 | "actualStart": 956163600000, 412 | "actualEnd": 956196000000, 413 | "connectTo": "39", 414 | "connectorType": "FinishStart" 415 | }, 416 | { 417 | "id": "39", 418 | "name": "Identify needed utilities", 419 | parent: "34", 420 | "progressValue": "0%", 421 | "actualStart": 956250000000, 422 | "actualEnd": 956282400000, 423 | "connectTo": "40", 424 | "connectorType": "FinishStart" 425 | }, 426 | { 427 | "id": "40", 428 | "name": "Summarize operating expenses and financial projections", 429 | parent: "34", 430 | "progressValue": "0%", 431 | "actualStart": 956336400000, 432 | "actualEnd": 956368800000, 433 | "connectTo": "42", 434 | "connectorType": "FinishStart" 435 | }, 436 | { 437 | "id": "41", 438 | "name": "Evaluate Potential Risks and Rewards", 439 | parent: "26", 440 | "progressValue": "17%", 441 | "actualStart": 956534400000, 442 | "actualEnd": 957225600000 443 | }, 444 | { 445 | "id": "42", 446 | "name": "Assess market size and stability", 447 | parent: "41", 448 | "progressValue": "50%", 449 | "actualStart": 956534400000, 450 | "actualEnd": 956707200000, 451 | "connectTo": "43", 452 | "connectorType": "FinishStart" 453 | }, 454 | { 455 | "id": "43", 456 | "name": "Assess needed resources availability", 457 | parent: "41", 458 | "progressValue": "0%", 459 | "actualStart": 956768400000, 460 | "actualEnd": 956887200000, 461 | "connectTo": "44", 462 | "connectorType": "FinishStart" 463 | }, 464 | { 465 | "id": "44", 466 | "name": "Forecast financial returns", 467 | parent: "41", 468 | "progressValue": "0%", 469 | "actualStart": 956941200000, 470 | "actualEnd": 957232800000, 471 | "connectTo": "45", 472 | "connectorType": "FinishStart" 473 | }, 474 | { 475 | "id": "45", 476 | "name": "Review and modify the business opportunity", 477 | parent: "26", 478 | "progressValue": "0%", 479 | "actualStart": 957286800000, 480 | "actualEnd": 957319200000, 481 | "connectTo": "46", 482 | "connectorType": "FinishStart" 483 | }, 484 | { 485 | "id": "46", 486 | "name": "Confirm decision to proceed", 487 | parent: "26", 488 | "progressValue": "0%", 489 | "actualStart": 957319200000, 490 | "actualEnd": 957319200000, 491 | "connectTo": "49", 492 | "connectorType": "FinishStart" 493 | }, 494 | { 495 | "id": "47", 496 | "name": "Phase 3 - Plan for Action", 497 | "progressValue": "17%", 498 | "actualStart": 957312000000, 499 | "actualEnd": 959817600000 500 | }, 501 | { 502 | "id": "48", 503 | "name": "Develop Detailed 5-Year Business Plan", 504 | parent: "47", 505 | "progressValue": "17%", 506 | "actualStart": 957312000000, 507 | "actualEnd": 959817600000 508 | }, 509 | { 510 | "id": "49", 511 | "name": "Describe the vision and opportunity", 512 | parent: "48", 513 | "progressValue": "0%", 514 | "actualStart": 957373200000, 515 | "actualEnd": 957405600000, 516 | "connectTo": "50", 517 | "connectorType": "FinishStart" 518 | }, 519 | { 520 | "id": "50", 521 | "name": "List assumptions", 522 | parent: "48", 523 | "progressValue": "0%", 524 | "actualStart": 957459600000, 525 | "actualEnd": 957492000000, 526 | "connectTo": "51", 527 | "connectorType": "FinishStart" 528 | }, 529 | { 530 | "id": "51", 531 | "name": "Describe the market", 532 | parent: "48", 533 | "progressValue": "0%", 534 | "actualStart": 957546000000, 535 | "actualEnd": 957578400000, 536 | "connectTo": "52", 537 | "connectorType": "FinishStart" 538 | }, 539 | { 540 | "id": "52", 541 | "name": "Describe the new business", 542 | parent: "48", 543 | "progressValue": "0%", 544 | "actualStart": 957805200000, 545 | "actualEnd": 957837600000, 546 | "connectTo": "53", 547 | "connectorType": "FinishStart" 548 | }, 549 | { 550 | "id": "53", 551 | "name": "Describe strengths, weaknesses, assets and threats", 552 | parent: "48", 553 | "progressValue": "0%", 554 | "actualStart": 957891600000, 555 | "actualEnd": 957924000000, 556 | "connectTo": "54", 557 | "connectorType": "FinishStart" 558 | }, 559 | { 560 | "id": "54", 561 | "name": "Estimate sales volume during startup period", 562 | parent: "48", 563 | "progressValue": "0%", 564 | "actualStart": 957978000000, 565 | "actualEnd": 958010400000, 566 | "connectTo": "55", 567 | "connectorType": "FinishStart" 568 | }, 569 | { 570 | "id": "55", 571 | "name": "Forecast operating costs", 572 | parent: "48", 573 | "progressValue": "0%", 574 | "actualStart": 958064400000, 575 | "actualEnd": 958096800000, 576 | "connectTo": "56", 577 | "connectorType": "FinishStart" 578 | }, 579 | { 580 | "id": "56", 581 | "name": "Establish pricing strategy", 582 | parent: "48", 583 | "progressValue": "0%", 584 | "actualStart": 958150800000, 585 | "actualEnd": 958183200000, 586 | "connectTo": "57", 587 | "connectorType": "FinishStart" 588 | }, 589 | { 590 | "id": "57", 591 | "name": "Forecast revenue", 592 | parent: "48", 593 | "progressValue": "0%", 594 | "actualStart": 958410000000, 595 | "actualEnd": 958442400000, 596 | "connectTo": "58", 597 | "connectorType": "FinishStart" 598 | }, 599 | { 600 | "id": "58", 601 | "name": "X", 602 | parent: "48", 603 | "progressValue": "0%", 604 | "actualStart": 958496400000, 605 | "actualEnd": 958615200000, 606 | "connectTo": "59", 607 | "connectorType": "FinishStart" 608 | }, 609 | { 610 | "id": "59", 611 | "name": "Develop break-even analysis", 612 | parent: "48", 613 | "progressValue": "0%", 614 | "actualStart": 958669200000, 615 | "actualEnd": 958701600000, 616 | "connectTo": "60", 617 | "connectorType": "FinishStart" 618 | }, 619 | { 620 | "id": "60", 621 | "name": "Develop cash-flow projection", 622 | parent: "48", 623 | "progressValue": "0%", 624 | "actualStart": 958755600000, 625 | "actualEnd": 958788000000, 626 | "connectTo": "61", 627 | "connectorType": "FinishStart" 628 | }, 629 | { 630 | "id": "61", 631 | "name": "Identify licensing and permitting requirements", 632 | parent: "48", 633 | "progressValue": "0%", 634 | "actualStart": 959014800000, 635 | "actualEnd": 959047200000, 636 | "connectTo": "62", 637 | "connectorType": "FinishStart" 638 | }, 639 | { 640 | "id": "62", 641 | "name": "Develop startup plan", 642 | parent: "48", 643 | "progressValue": "100%", 644 | "actualStart": 959101200000, 645 | "actualEnd": 959220000000, 646 | "connectTo": "63", 647 | "connectorType": "FinishStart" 648 | }, 649 | { 650 | "id": "63", 651 | "name": "Develop sales and marketing strategy", 652 | parent: "48", 653 | "progressValue": "0%", 654 | "actualStart": 959274000000, 655 | "actualEnd": 959306400000, 656 | "connectTo": "64", 657 | "connectorType": "FinishStart" 658 | }, 659 | { 660 | "id": "64", 661 | "name": "Develop distribution structure", 662 | parent: "48", 663 | "progressValue": "0%", 664 | "actualStart": 959360400000, 665 | "actualEnd": 959392800000, 666 | "connectTo": "65", 667 | "connectorType": "FinishStart" 668 | }, 669 | { 670 | "id": "65", 671 | "name": "Describe risks and opportunities", 672 | parent: "48", 673 | "progressValue": "20%", 674 | "actualStart": 959558400000, 675 | "actualEnd": 959731200000, 676 | "connectTo": "66", 677 | "connectorType": "FinishStart" 678 | }, 679 | { 680 | "id": "66", 681 | "name": "Publish the business plan", 682 | parent: "48", 683 | "progressValue": "0%", 684 | "actualStart": 959792400000, 685 | "actualEnd": 959824800000, 686 | "connectTo": "67", 687 | "connectorType": "FinishStart" 688 | }, 689 | { 690 | "id": "67", 691 | "name": "Confirm decision to proceed", 692 | parent: "48", 693 | "progressValue": "0%", 694 | "actualStart": 959824800000, 695 | "actualEnd": 959824800000, 696 | "connectTo": "69", 697 | "connectorType": "FinishStart" 698 | }, 699 | { 700 | "id": "68", 701 | "name": "Phase 4 - Proceed With Startup Plan", 702 | "progressValue": "24%", 703 | "actualStart": 959817600000, 704 | "actualEnd": 967075200000 705 | }, 706 | { 707 | "id": "69", 708 | "name": "Choose a location", 709 | parent: "68", 710 | "progressValue": "36%", 711 | "actualStart": 959817600000, 712 | "actualEnd": 959904000000, 713 | "connectTo": "72", 714 | "connectorType": "FinishStart" 715 | }, 716 | { 717 | "id": "70", 718 | "name": "Establish Business Structure", 719 | parent: "68", 720 | "progressValue": "14%", 721 | "actualStart": 959904000000, 722 | "actualEnd": 963273600000 723 | }, 724 | { 725 | "id": "71", 726 | "name": "Choose a Name", 727 | parent: "70", 728 | "progressValue": "33%", 729 | "actualStart": 959904000000, 730 | "actualEnd": 960249600000 731 | }, 732 | { 733 | "id": "72", 734 | "name": "Identify implications", 735 | parent: "71", 736 | "progressValue": "40%", 737 | "actualStart": 959904000000, 738 | "actualEnd": 959990400000, 739 | "connectTo": "73", 740 | "connectorType": "FinishStart" 741 | }, 742 | { 743 | "id": "73", 744 | "name": "Research name availability", 745 | parent: "71", 746 | "progressValue": "0%", 747 | "actualStart": 960224400000, 748 | "actualEnd": 960256800000, 749 | "connectTo": "87", 750 | "connectorType": "StartStart" 751 | }, 752 | { 753 | "id": "74", 754 | "name": "Choose a Bank", 755 | parent: "70", 756 | "progressValue": "0%", 757 | "actualStart": 960310800000, 758 | "actualEnd": 960861600000 759 | }, 760 | { 761 | "id": "75", 762 | "name": "Establish accounts", 763 | parent: "74", 764 | "progressValue": "0%", 765 | "actualStart": 960310800000, 766 | "actualEnd": 960602400000, 767 | "connectTo": "77", 768 | "connectorType": "StartStart" 769 | }, 770 | { 771 | "id": "76", 772 | "name": "Establish line of credit", 773 | parent: "74", 774 | "progressValue": "0%", 775 | "actualStart": 960829200000, 776 | "actualEnd": 960861600000, 777 | "connectTo": "77", 778 | "connectorType": "StartStart" 779 | }, 780 | { 781 | "id": "77", 782 | "name": "Choose legal representation", 783 | parent: "70", 784 | "progressValue": "0%", 785 | "actualStart": 960829200000, 786 | "actualEnd": 960861600000, 787 | "connectTo": "78", 788 | "connectorType": "FinishStart" 789 | }, 790 | { 791 | "id": "78", 792 | "name": "Select business tax-basis category", 793 | parent: "70", 794 | "progressValue": "0%", 795 | "actualStart": 960915600000, 796 | "actualEnd": 961034400000, 797 | "connectTo": "79", 798 | "connectorType": "FinishStart" 799 | }, 800 | { 801 | "id": "79", 802 | "name": "Choose capital funding source", 803 | parent: "70", 804 | "progressValue": "0%", 805 | "actualStart": 961088400000, 806 | "actualEnd": 961207200000, 807 | "connectTo": "98", 808 | "connectorType": "FinishStart" 809 | }, 810 | { 811 | "id": "80", 812 | "name": "Commit capital funding", 813 | parent: "70", 814 | "progressValue": "0%", 815 | "actualStart": 961207200000, 816 | "actualEnd": 961207200000, 817 | "connectTo": "82", 818 | "connectorType": "FinishStart" 819 | }, 820 | { 821 | "id": "81", 822 | "name": "Establish the Operating Control Base", 823 | parent: "70", 824 | "progressValue": "19%", 825 | "actualStart": 961372800000, 826 | "actualEnd": 963273600000 827 | }, 828 | { 829 | "id": "82", 830 | "name": "Choose and set up the accounting system", 831 | parent: "81", 832 | "progressValue": "0%", 833 | "actualStart": 961434000000, 834 | "actualEnd": 961552800000, 835 | "connectTo": "83", 836 | "connectorType": "FinishStart" 837 | }, 838 | { 839 | "id": "83", 840 | "name": "Obtain required licenses and permits", 841 | parent: "81", 842 | "progressValue": "38%", 843 | "actualStart": 961545600000, 844 | "actualEnd": 962409600000, 845 | "connectTo": "84", 846 | "connectorType": "FinishStart" 847 | }, 848 | { 849 | "id": "84", 850 | "name": "Obtain needed insurance", 851 | parent: "81", 852 | "progressValue": "0%", 853 | "actualStart": 962643600000, 854 | "actualEnd": 962935200000, 855 | "connectTo": "85", 856 | "connectorType": "FinishStart" 857 | }, 858 | { 859 | "id": "85", 860 | "name": "Establish security plan", 861 | parent: "81", 862 | "progressValue": "0%", 863 | "actualStart": 962989200000, 864 | "actualEnd": 963280800000, 865 | "connectTo": "91", 866 | "connectorType": "FinishStart" 867 | }, 868 | { 869 | "id": "86", 870 | "name": "Develop Marketing Program", 871 | parent: "70", 872 | "progressValue": "0%", 873 | "actualStart": 960224400000, 874 | "actualEnd": 960516000000 875 | }, 876 | { 877 | "id": "87", 878 | "name": "Establish an advertising program", 879 | parent: "86", 880 | "progressValue": "0%", 881 | "actualStart": 960224400000, 882 | "actualEnd": 960343200000, 883 | "connectTo": "88", 884 | "connectorType": "FinishStart" 885 | }, 886 | { 887 | "id": "88", 888 | "name": "Develop a logo", 889 | parent: "86", 890 | "progressValue": "0%", 891 | "actualStart": 960397200000, 892 | "actualEnd": 960429600000, 893 | "connectTo": "89", 894 | "connectorType": "FinishStart" 895 | }, 896 | { 897 | "id": "89", 898 | "name": "Order promotional materials", 899 | parent: "86", 900 | "progressValue": "0%", 901 | "actualStart": 960483600000, 902 | "actualEnd": 960516000000, 903 | "connectTo": "91", 904 | "connectorType": "FinishStart" 905 | }, 906 | { 907 | "id": "90", 908 | "name": "Provide Physical Facilities", 909 | parent: "68", 910 | "progressValue": "16%", 911 | "actualStart": 963273600000, 912 | "actualEnd": 967075200000 913 | }, 914 | { 915 | "id": "91", 916 | "name": "Secure operation space", 917 | parent: "90", 918 | "progressValue": "0%", 919 | "actualStart": 963334800000, 920 | "actualEnd": 963885600000, 921 | "connectTo": "92", 922 | "connectorType": "FinishStart" 923 | }, 924 | { 925 | "id": "92", 926 | "name": "Select computer network hardware", 927 | parent: "90", 928 | "progressValue": "100%", 929 | "actualStart": 963939600000, 930 | "actualEnd": 963972000000, 931 | "connectTo": "93", 932 | "connectorType": "FinishStart" 933 | }, 934 | { 935 | "id": "93", 936 | "name": "Select computer software", 937 | parent: "90", 938 | "progressValue": "0%", 939 | "actualStart": 964026000000, 940 | "actualEnd": 964058400000, 941 | "connectTo": "94", 942 | "connectorType": "FinishStart" 943 | }, 944 | { 945 | "id": "94", 946 | "name": "Establish utilities", 947 | parent: "90", 948 | "progressValue": "67%", 949 | "actualStart": 964137600000, 950 | "actualEnd": 964569600000, 951 | "connectTo": "95", 952 | "connectorType": "FinishStart" 953 | }, 954 | { 955 | "id": "95", 956 | "name": "Provide furniture and equipment", 957 | parent: "90", 958 | "progressValue": "15%", 959 | "actualStart": 964569600000, 960 | "actualEnd": 965088000000, 961 | "connectTo": "96", 962 | "connectorType": "FinishStart" 963 | }, 964 | { 965 | "id": "96", 966 | "name": "Move in", 967 | parent: "90", 968 | "progressValue": "13%", 969 | "actualStart": 966988800000, 970 | "actualEnd": 967075200000 971 | }, 972 | { 973 | "id": "97", 974 | "name": "Provide Staffing", 975 | parent: "68", 976 | "progressValue": "30%", 977 | "actualStart": 961372800000, 978 | "actualEnd": 966988800000 979 | }, 980 | { 981 | "id": "98", 982 | "name": "Interview and test candidates", 983 | parent: "97", 984 | "progressValue": "43%", 985 | "actualStart": 961372800000, 986 | "actualEnd": 962928000000, 987 | "connectTo": "99", 988 | "connectorType": "FinishStart" 989 | }, 990 | { 991 | "id": "99", 992 | "name": "Hire staff", 993 | parent: "97", 994 | "progressValue": "10%", 995 | "actualStart": 962928000000, 996 | "actualEnd": 964137600000, 997 | "connectTo": "100", 998 | "connectorType": "FinishStart" 999 | }, 1000 | { 1001 | "id": "100", 1002 | "name": "Train staff", 1003 | parent: "97", 1004 | "progressValue": "31%", 1005 | "actualStart": 965088000000, 1006 | "actualEnd": 966988800000 1007 | }, 1008 | { 1009 | "id": "102", 1010 | "name": "Mau & Ago business", 1011 | parent: "97", 1012 | "progressValue": "40%", 1013 | "actualStart": 951350400000, 1014 | "actualEnd": 951955200000 1015 | } 1016 | ]; 1017 | } 1018 | }); 1019 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/simple-stock-chart.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | // chart instance 5 | chart: undefined, 6 | 7 | model: function() { 8 | let self = this; 9 | 10 | // load data from file 11 | return Ember.$.getJSON("stock-data.json").then(function(data) { 12 | return { 13 | chart: self._createChart(data), 14 | afterDraw: self.afterChartDraw 15 | }; 16 | }); 17 | }, 18 | 19 | _createChart: function(data){ 20 | // create data table on loaded data 21 | let dataTable = anychart.data.table(); 22 | dataTable.addData(data); 23 | 24 | // map loaded data for the ohlc series 25 | let mapping = dataTable.mapAs({'open': 1, 'high': 2, 'low': 3, 'close': 4}); 26 | 27 | // create stock chart 28 | this.chart = anychart.stock(); 29 | 30 | // create first plot on the chart 31 | let plot = this.chart.plot(0); 32 | plot.xGrid().enabled(true); 33 | plot.yGrid().enabled(true); 34 | plot.xMinorGrid().enabled(true); 35 | plot.yMinorGrid().enabled(true); 36 | 37 | // create EMA indicators with period 50 38 | plot.ema(dataTable.mapAs({'value': 4})).series().stroke('1.5 #455a64'); 39 | 40 | let series = plot.candlestick(mapping).name('CSCO'); 41 | series.legendItem().iconType('risingfalling'); 42 | 43 | // create scroller series with mapped data 44 | this.chart.scroller().candlestick(mapping); 45 | 46 | // set chart selected date/time range 47 | this.chart.selectRange('2007-01-03', '2007-05-20'); 48 | 49 | return this.chart; 50 | }, 51 | 52 | afterChartDraw: function(chart){ 53 | // create range picker 54 | let rangePicker = anychart.ui.rangePicker(); 55 | // init range picker 56 | rangePicker.render(chart); 57 | 58 | // create range selector 59 | let rangeSelector = anychart.ui.rangeSelector(); 60 | // init range selector 61 | rangeSelector.render(chart); 62 | } 63 | 64 | }); 65 | -------------------------------------------------------------------------------- /tests/dummy/app/styles/app.css: -------------------------------------------------------------------------------- 1 | html, body, .ember-anychart { 2 | width: 100%; 3 | height: 100%; 4 | margin: 0; 5 | padding: 0; 6 | } 7 | 8 | .container { 9 | width: 1024px; 10 | margin: 20px auto; 11 | } 12 | .menu .links a { 13 | display: inline-block; 14 | padding: 5px 10px; 15 | outline: none; 16 | } 17 | .menu .active { 18 | font-weight: bold; 19 | } 20 | .ember-anychart { 21 | width: 600px; 22 | height: 500px; 23 | border: 2px solid deepskyblue; 24 | } 25 | .class2 { 26 | border-style: dashed; 27 | } 28 | .class1 { 29 | width: 100%; 30 | border-color: red; 31 | } 32 | .wide-container { 33 | width: 100%; 34 | height: 600px; 35 | } 36 | p code { 37 | padding: 9.5px; 38 | margin: 0 0 10px; 39 | font-size: 13px; 40 | word-break: break-all; 41 | word-wrap: break-word; 42 | background-color: #f5f5f5; 43 | border: 1px solid #ccc; 44 | } 45 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Welcome to Ember plugin for AnyChart Samples

3 | 31 |
32 | {{outlet}} 33 |
34 |
35 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/chart-with-custom-settings.hbs: -------------------------------------------------------------------------------- 1 |

Chart with custom settings

2 |

In this example we create chart using only attributes:

3 |

{{ember-anychart data=model.data type=model.type title=model.title afterDraw=model.afterDraw}}

4 |

Chart instance is created automatically using type and data attributes. All attribute values are specified in the route file 5 | ember-anychart\tests\dummy\app\routes\chart-by-attributes.js

6 |

Also notice using afterDraw attribute. With this attribute you can set callback function that will be called 7 | after chart drawing is done and takes chart instance as the first argument.

8 | {{ember-anychart data=model.data type=model.type title=model.title afterDraw=model.afterDraw}} 9 | {{outlet}} 10 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/chart-with-dynamic-settings.hbs: -------------------------------------------------------------------------------- 1 |

Chart with dynamic settings

2 |

If you change some setting of AnyChart chart instance, it is applied dynamically.

3 |

In this sample we change chart palette using select input and processing the onchange event in a proper controller 4 | ember-anychart\tests\dummy\app\controllers\dynamic.js

5 |

6 | 7 | 12 |

13 | {{ember-anychart instance=model.chart}} 14 | {{outlet}} 15 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/dummy/app/templates/components/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/templates/data-streaming.hbs: -------------------------------------------------------------------------------- 1 |

Data streaming

2 | {{ember-anychart instance=model.chart}} 3 | {{outlet}} 4 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/geographical-colored-map.hbs: -------------------------------------------------------------------------------- 1 |

Geographical colored map

2 | {{ember-anychart instance=model.chart}} 3 | {{outlet}} 4 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/simple-chart.hbs: -------------------------------------------------------------------------------- 1 |

Simple chart

2 |

This is the most simple example of using ember-anychart plugin. We can create AnyChart chart 3 | using {{ember-anychart}} element and define the instance attribute.

4 |

{{ember-anychart instance=model.chart}}

5 |

We create AnyChart chart instance, provide settings and data in route file ember-anychart\tests\dummy\app\routes\simple.js.

6 | 7 | {{ember-anychart instance=model.chart}} 8 | {{outlet}} 9 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/simple-dashboard.hbs: -------------------------------------------------------------------------------- 1 |

Simple dashboard

2 | 9 |

Using {{ember-anychart}} element you can create not only AnyChart chart but also a dashboard. 10 | All you need to do is to pass stage instance to instance attribute.

11 |

{{ember-anychart instance=model.stage}}

12 |

Stage instance is created in the ember-anychart\tests\dummy\app\routes\stage.js route file .

13 |

Besides chart attributes you can use standard id and class attributes to set custom css styles for the container.

14 |

{{ember-anychart instance=model.stage id="custom-styled-container" class="class2"}}

15 | 16 | 17 | {{ember-anychart instance=model.stage id="custom-styled-container" class="class2"}} 18 | {{outlet}} 19 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/simple-gantt-chart.hbs: -------------------------------------------------------------------------------- 1 |

Simple gantt chart

2 | {{ember-anychart instance=model.chart afterDraw=model.afterDraw class="wide-container"}} 3 | {{outlet}} 4 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/simple-stock-chart.hbs: -------------------------------------------------------------------------------- 1 |

Simple stock chart

2 |

In this example we create a Stock chart. One of the main characteristics of this type of charts is the ability to work with big data sets.

3 |

In stock route (ember-anychart\tests\dummy\app\routes\stock.js) we load a big data set from the JSON file ember-anychart\tests\dummy\public\stock-data.json 4 | and pass this data to a private function that creates a chart.

5 |

Also we use after draw callback function to set up range picker and range selector.

6 |

{{ember-anychart instance=model.chart afterDraw=model.afterDraw class="wide-container"}}

7 | {{ember-anychart instance=model.chart afterDraw=model.afterDraw class="wide-container"}} 8 | {{outlet}} 9 | -------------------------------------------------------------------------------- /tests/dummy/config/environment.js: -------------------------------------------------------------------------------- 1 | /* jshint node: true */ 2 | 3 | module.exports = function(environment) { 4 | var ENV = { 5 | modulePrefix: 'dummy', 6 | environment: environment, 7 | rootURL: '/', 8 | locationType: 'auto', 9 | EmberENV: { 10 | FEATURES: { 11 | // Here you can enable experimental features on an ember canary build 12 | // e.g. 'with-controller': true 13 | }, 14 | EXTEND_PROTOTYPES: { 15 | // Prevent Ember Data from overriding Date.parse. 16 | Date: false 17 | } 18 | }, 19 | 20 | APP: { 21 | // Here you can pass flags/options to your application instance 22 | // when it is created 23 | } 24 | }; 25 | 26 | if (environment === 'development') { 27 | // ENV.APP.LOG_RESOLVER = true; 28 | // ENV.APP.LOG_ACTIVE_GENERATION = true; 29 | // ENV.APP.LOG_TRANSITIONS = true; 30 | // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; 31 | // ENV.APP.LOG_VIEW_LOOKUPS = true; 32 | } 33 | 34 | if (environment === 'test') { 35 | // Testem prefers this... 36 | ENV.locationType = 'none'; 37 | 38 | // keep test console output quieter 39 | ENV.APP.LOG_ACTIVE_GENERATION = false; 40 | ENV.APP.LOG_VIEW_LOOKUPS = false; 41 | 42 | ENV.APP.rootElement = '#ember-testing'; 43 | } 44 | 45 | if (environment === 'production') { 46 | 47 | } 48 | 49 | return ENV; 50 | }; 51 | -------------------------------------------------------------------------------- /tests/dummy/public/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /tests/dummy/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /tests/dummy/public/united_states_of_america.topo.json: -------------------------------------------------------------------------------- 1 | {"crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:102004"}}, "ac-tx": {"default": {"crs": "+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs", "scale": 0.0015916460024534757, "xoffset": 0, "yoffset": 0}, "US.AK": {"crs": "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", "scale": 0.0007, "yoffset": -2759.337600948428, "crs_name": "urn:ogc:def:crs:EPSG:26932", "heatZone": {"width": 1770.355028949852, "top": -1358.652521566014, "height": 1306.6993574581015, "left": -3545.010094633992}, "xoffset": -2657.2470347872886}, "US.HI": {"crs_name": "urn:ogc:def:crs:EPSG:102007", "crs": "+proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs", "heatZone": {"width": 823.6167899705476, "top": -2245.5002241286047, "height": 579.307103684635, "left": -1516.7674552436124}, "xoffset": -1059.1766580551757, "yoffset": -3872.021339875486}}, "arcs": [[[9384, 7475], [-165, -61], [-127, -40]], [[9092, 7374], [-4, 247]], [[9088, 7621], [338, 115]], [[9426, 7736], [53, 89], [28, -47], [-11, -155], [48, 2], [72, -130], [-81, -145], [-33, 60]], [[9502, 7410], [-46, 91], [-71, -30]], [[9385, 7471], [-1, 4]], [[6107, 8534], [-115, -4], [-130, -145], [-133, -103], [5, -201], [-66, -64], [-27, -121], [36, -43], [-19, -129], [0, -113], [125, -104], [81, -123], [65, -50], [14, -144]], [[5943, 7190], [-285, -18], [-340, -12], [-284, -2]], [[5034, 7158], [1, 628], [-68, 109], [52, 118]], [[5019, 8013], [-7, 135], [-31, 111], [-9, 299], [-43, 241], [7, 168], [-19, 123]], [[4917, 9090], [328, -2], [1, 135], [53, -28], [39, -200], [117, -28], [20, -41], [80, 43], [98, -29], [58, -76], [42, 10], [59, -79], [43, -18], [81, 74], [23, -44], [99, 14], [34, -34], [78, 2]], [[6170, 8789], [-63, -255]], [[3760, 8100], [-22, -328]], [[3738, 7772], [-255, 35], [-277, 46], [-332, 65], [-319, 73], [-21, -174]], [[2534, 7817], [-34, 93], [-41, -55], [-98, 22], [-50, -12], [-107, 28], [-17, 124], [-65, 198], [0, 99], [-23, 46], [-72, -54], [-32, 42], [10, 71], [71, 247], [-125, 303], [-25, 24], [-14, 145], [-36, 122], [53, 341]], [[1929, 9601], [238, -76], [346, -97], [346, -85], [315, -67], [245, -45], [406, -60]], [[3825, 9171], [-39, -655], [-26, -416]], [[5019, 8013], [-470, 14], [-235, 16], [-274, 24], [-280, 33]], [[3825, 9171], [259, -32], [246, -21], [351, -22], [236, -6]], [[3988, 420], [64, -32], [55, -64], [1, -47], [62, -85], [-38, -49], [-118, -71], [-42, -72], [-45, 34], [-2, 105], [-40, 138], [54, 102], [49, 41]], [[3764, 728], [134, -80], [-1, -39], [-91, -34], [-42, 153]], [[3469, 925], [22, -118], [-68, 13], [-29, 66], [48, 75], [27, -36]], [[3134, 1146], [21, -28], [-34, -97], [-72, 40], [11, 62], [74, 23]], [[2534, 7817], [-55, -483], [-43, -376]], [[2436, 6958], [-231, 58], [-295, 83]], [[1910, 7099], [-293, 89], [-226, 75]], [[1391, 7263], [97, 608], [1, 14]], [[1489, 7885], [3, 6], [6, 2], [5, 11]], [[1503, 7904], [9, 32], [2, 4], [0, 2], [1, 2], [2, 4], [0, 8], [-3, 12]], [[1514, 7968], [0, 6], [3, 2], [6, 0]], [[1523, 7976], [3, 8], [1, 6], [2, 1], [1, 2], [2, 2], [0, 4]], [[1532, 7999], [-6, 10], [-3, 4], [-2, 20]], [[1521, 8033], [-34, 22], [4, 18], [0, 4], [-2, 8], [0, 3], [7, 30]], [[1496, 8118], [2, 2], [2, 2], [2, 6]], [[1502, 8128], [1, 0], [3, 0], [1, 2], [4, 2], [3, 6], [3, 6], [4, 12], [23, 41], [11, 6], [4, 4], [2, 4], [21, 34], [54, 136], [44, 70]], [[1680, 8451], [1, 6], [2, 15]], [[1683, 8472], [-6, 40]], [[1677, 8512], [-33, 44], [-9, 27], [-1, 22], [0, 10], [0, 2]], [[1634, 8617], [-2, 18], [-5, 22], [1, 93]], [[1628, 8750], [12, 83], [28, 166], [17, 113]], [[1685, 9112], [55, 322]], [[1740, 9434], [8, 54], [8, 55], [18, 109]], [[1774, 9652], [155, -51]], [[1634, 8617], [-22, 8], [-42, 14], [-107, 37], [-176, 66], [-101, 10], [-114, -22], [-66, 24], [-89, -4], [-17, 39], [-84, 40], [-86, -20], [-71, 65], [3, 163], [-38, 43]], [[624, 9080], [-72, 79], [-42, -2], [36, 159], [-17, 124], [13, 254], [-21, 71], [5, 95], [40, 55], [66, -103], [188, -118], [29, -133], [-49, -135], [44, -5], [5, 97], [35, 95], [26, 225], [-19, 161], [251, -109], [271, -107], [361, -131]], [[1774, 9652], [-34, -218]], [[1740, 9434], [-10, -51], [-9, -54], [-36, -217]], [[1685, 9112], [-57, -362], [6, -133]], [[2619, 5155], [-62, -609], [-59, -612], [-74, -736]], [[2424, 3198], [-414, 95], [-238, 202], [-307, 265], [-159, 142], [8, 30], [13, 18], [6, 10], [4, 12]], [[1337, 3972], [8, 5], [21, -11], [9, 0], [3, 4], [3, 19], [12, 8], [2, 4], [2, 8], [0, 22], [1, 16], [-9, 22], [-18, 5], [-7, 8], [-4, 14], [3, 12], [4, 12], [3, 14], [1, 20], [-1, 6], [-4, 11], [0, 6], [4, 8], [2, 4], [2, 2], [-2, 4], [-2, 8], [0, 4], [2, 2]], [[1372, 4209], [10, -2], [9, 4]], [[1391, 4211], [13, 26], [8, 6], [3, 4], [21, 130], [22, 24], [4, 6], [10, 24], [57, 37], [3, 18], [-40, 62], [-11, 104], [-9, 8], [-2, 28], [-1, 4], [-6, 10], [3, 41], [0, 2]], [[1466, 4745], [6, 46], [15, 16], [-3, 117], [18, 198], [35, 13], [76, -63], [25, 55], [36, 268]], [[1674, 5395], [294, -83], [237, -62], [414, -95]], [[874, 7453], [-103, -554], [-84, -453], [32, -72], [32, -71], [32, -71], [67, -143], [67, -142], [32, -71], [105, -234], [178, -392], [234, -505]], [[1466, 4745], [0, -2], [-3, -41], [6, -10], [1, -4], [2, -28], [9, -8], [11, -104], [40, -62], [-3, -18], [-57, -37], [-10, -24], [-4, -6], [-22, -24], [-21, -130], [-3, -4], [-8, -6], [-13, -26], [-19, -2], [-2, -2], [0, -4], [2, -8], [2, -4], [-2, -2], [-2, -4], [-4, -8], [0, -6], [4, -11], [1, -6], [-1, -20], [-3, -14], [-4, -12], [-3, -12], [4, -14], [7, -8], [18, -5], [9, -22]], [[1398, 4047], [2, -4], [-2, -4], [0, -4], [-1, -4]], [[1397, 4031], [0, -22], [-2, -8], [-2, -4], [-12, -8]], [[1381, 3989], [-2, -6], [-1, -13]], [[1378, 3970], [-3, -4], [-9, 0], [-21, 11], [-8, -5]], [[1337, 3972], [-1, -4], [-112, 19], [-105, 20], [-269, 54], [-16, 67], [9, 142], [-24, 91], [-92, 175], [-51, 55], [-18, 81], [-76, 30], [-108, 176], [-162, 75], [-25, 60], [36, 186], [-40, 55], [14, 50], [-58, 118], [-20, 123], [-54, 143], [3, 65], [51, 91], [-17, 69], [-39, 18], [-32, 91], [3, 123], [71, -14], [-109, 214], [6, 81], [-79, 247], [4, 180], [30, 163], [-57, 184], [5, 63], [52, 71], [80, 230], [15, 200]], [[152, 7764], [272, -123], [450, -188]], [[4001, 5992], [-27, -617], [-19, -424]], [[3955, 4951], [-184, 18]], [[3771, 4969], [-253, 32], [-361, 53], [-251, 46], [-287, 55]], [[2619, 5155], [46, 473], [48, 475], [42, 430]], [[2755, 6533], [480, -91], [419, -62]], [[3654, 6380], [362, -41], [-15, -347]], [[874, 7453], [226, -85], [291, -105]], [[1910, 7099], [-67, -479], [-65, -481], [-104, -744]], [[3762, 4797], [-9, 0], [0, -6], [-2, -59], [-3, -48], [-16, -289], [-6, -97], [-3, -49], [-2, -48], [-17, -289], [-19, -338], [-2, -50], [-4, -47], [-9, -147], [-5, -97], [-45, 6], [-45, 6], [-91, 10], [-181, 24], [-227, 35], [-90, 14], [-54, 10], [0, -6], [2, -14], [2, -8], [-2, -7], [7, -28], [3, -2], [3, -2], [1, -2]], [[2948, 3269], [7, -16], [-346, 65], [-15, -156], [-170, 36]], [[3771, 4969], [-3, -41], [-4, -88], [-2, -43]], [[1634, 8617], [43, -105], [6, -40], [-3, -21], [-44, -70], [-54, -136], [-21, -34], [-2, -4], [-4, -4], [-11, -6], [-23, -41], [-4, -12], [-3, -6], [-3, -6], [-4, -2], [-1, -2], [-3, 0], [-1, 0], [-6, -10]], [[1496, 8118], [0, -10], [-5, -12], [-2, -8]], [[1489, 8088], [0, -3], [2, -8], [0, -4]], [[1491, 8073], [-2, -4], [-2, -8], [0, -6]], [[1487, 8055], [34, -22], [11, -34], [0, -4], [-2, -2], [-1, -2], [-2, -1]], [[1527, 7990], [0, -2], [-1, -4]], [[1526, 7984], [-3, -8], [-9, -8], [3, -12], [0, -8], [-2, -4], [-1, -2], [0, -2], [-2, -4], [-9, -32], [-14, -19]], [[1489, 7885], [0, -8], [-1, -6]], [[1488, 7871], [-97, -608]], [[152, 7764], [-12, 127], [27, 108], [-10, 72], [89, 170], [54, 142], [123, 412], [89, 329], [62, 0], [50, -44]], [[2436, 6958], [-39, -344], [358, -81]], [[3738, 7772], [-42, -697]], [[3696, 7075], [-42, -695]], [[6332, 4609], [-37, -97], [7, -65], [-34, -60], [7, -67], [-40, -69]], [[6235, 4251], [0, -2], [7, -10], [0, -16]], [[6242, 4223], [-6, -12], [-9, -10], [-22, -14], [-23, -67], [4, -75], [-18, -20], [-10, -2], [-5, 4], [-1, -2]], [[6152, 4025], [1, -4], [0, -4], [3, -12]], [[6156, 4005], [-13, -14], [-2, -2], [-7, -25], [-15, -14], [-1, -4], [0, -10], [15, -10], [1, -14], [-2, -6], [-3, -2], [-14, -4]], [[6115, 3900], [-11, -8], [-10, -6]], [[6094, 3886], [0, -5], [6, -6], [4, -10], [0, -40], [-2, -8], [-10, -4], [-16, -27], [-3, -62], [4, -2], [4, -2], [11, -14], [0, -6], [2, -10], [-2, -11], [0, -6], [-7, -16], [-2, -6], [4, -8], [1, 0], [7, -2], [4, -8], [0, -18], [3, -12], [1, -6], [-1, -5], [-12, -48]], [[6090, 3544], [-147, -12], [-36, -2], [-37, -2], [-36, -2], [-144, -8], [-36, -2], [-37, -2], [-36, 0], [-72, -4]], [[5509, 3510], [0, 42], [-3, 83]], [[5506, 3635], [0, 42], [-2, 23]], [[5504, 3700], [-87, 30]], [[5417, 3730], [2, 608], [-40, 386]], [[5379, 4724], [319, 12], [211, 11], [330, 26], [22, -71], [-54, -111], [125, 18]], [[6062, 6853], [90, -128], [-1, -107], [-23, -75], [-62, -60], [-51, -10], [-14, -85], [25, -83], [-79, -204]], [[5947, 6101], [-56, 79], [-249, -27], [-252, -12], [-235, 6]], [[5155, 6147], [-21, 251], [-36, 79], [4, 87], [-52, 143], [-23, 109]], [[5027, 6816], [-27, 81], [32, 129], [-19, 35], [21, 97]], [[5943, 7190], [44, -261], [62, -26], [13, -50]], [[5378, 4898], [-489, 0], [-353, 12], [-266, 14], [-315, 27]], [[4001, 5992], [235, -19], [424, -26], [270, -6], [308, -2]], [[5238, 5939], [80, -61], [-38, -101], [50, -109], [40, -32], [8, -738]], [[5947, 6101], [-13, -73], [36, -158], [105, -129], [25, -111], [98, -29], [2, -86], [-30, -120], [56, -93], [111, -101], [23, -87], [-11, -62], [43, -83], [15, 12], [13, -22], [7, 4], [4, -2]], [[6431, 4961], [1, -6], [0, -29], [-4, -10]], [[6428, 4916], [0, -12], [4, -12], [0, -8], [0, -10], [-10, -43], [-3, -10], [-6, -6], [-6, 2], [-10, 14], [-5, 6], [-3, -4], [-2, -6], [-2, -14], [0, -4]], [[6385, 4809], [-3, -18], [0, -4]], [[6382, 4787], [-49, -93], [-1, -85]], [[5379, 4724], [-1, 174]], [[5238, 5939], [-83, 208]], [[3696, 7075], [453, -49], [330, -24], [197, -10], [83, -77], [30, 27], [94, 4], [104, -75], [40, -55]], [[5417, 3730], [-79, 38]], [[5338, 3768], [-69, 71], [-27, -34], [-18, 0], [-19, 6], [-12, 22], [-68, -20], [-53, -45], [-131, 39], [-45, -21], [-26, 35], [-10, -20], [-6, 8], [-16, -16], [-61, 56], [-7, -8], [-18, -26], [-106, 93], [-30, -22], [-139, 62]], [[4477, 3948], [0, 31], [-13, 32]], [[4464, 4011], [-82, -2], [-3, 4], [-4, 10], [-31, 48], [-23, 5], [19, 669], [-349, 28], [-50, 4], [-47, 6], [-44, 4], [-35, 4], [-53, 6]], [[6470, 2588], [-38, -10], [-111, 63], [-36, -61], [17, -53], [106, -14], [83, -52], [-40, -112], [143, -117], [-32, -44], [-161, 141], [-31, -111], [-104, 36], [-28, -66], [-113, 32], [0, 59], [-68, 40], [-34, 75], [-64, 24], [-59, -109], [-87, 20], [-110, 53], [-113, -16], [-15, 87]], [[5575, 2453], [8, 143], [45, 230], [-68, 190], [-17, 101], [-29, 39], [-3, 151], [0, 81], [-1, 41], [0, 42], [-1, 39]], [[6090, 3544], [6, -137], [53, -95], [-27, -91], [-64, -126], [-23, -85], [-20, -179], [397, 34], [-18, -113], [76, -164]], [[5575, 2453], [-53, -108], [-174, -113], [-56, -117], [-94, -101], [-129, -61], [-177, -192], [-35, -72], [-83, -291], [61, -374], [-38, -37], [-56, 65], [-120, 20], [-123, 109], [-64, 16], [-32, 150], [-45, 85], [-5, 184], [-41, 32], [-75, 180], [-43, 53], [-22, 105], [-43, 121], [-9, 69], [-99, 143], [-48, 97], [-186, 61], [-83, -41], [-49, -137], [-63, -119], [-32, 10], [-98, 109], [-55, 28], [-92, 128], [-26, 101], [5, 87], [-55, 181], [-70, 71], [-118, 210], [-31, 23], [-33, 101], [-27, 18], [-11, 22]], [[2948, 3269], [-1, 2], [-3, 2], [-3, 2], [-7, 28], [2, 7], [-2, 8], [-2, 14], [0, 6], [54, -10], [90, -14], [227, -35], [181, -24], [91, -10], [45, -6], [45, -6], [5, 97], [9, 147], [4, 47], [2, 50], [19, 338], [17, 289], [2, 48], [3, 49], [6, 97], [16, 289], [3, 48]], [[3751, 4732], [2, 49], [0, 10]], [[3753, 4791], [0, 6], [9, 0]], [[3762, 4797], [53, -6], [35, -4], [44, -4], [47, -6], [50, -4], [349, -28], [-19, -669], [23, -5], [31, -48], [4, -10], [3, -4], [82, 2], [13, -63], [139, -62], [30, 22], [106, -93], [18, 26], [7, 8], [61, -56], [16, 16], [6, -8], [10, 20], [26, -35], [45, 21], [131, -39], [53, 45], [68, 20], [12, -22], [19, -6], [18, 0], [27, 34], [69, -71]], [[5338, 3768], [116, -56], [50, -12]], [[5504, 3700], [2, -23], [0, -42], [3, -125]], [[9219, 7414], [165, 61]], [[9384, 7475], [20, -101]], [[9404, 7374], [7, -38], [4, -19], [1, -10], [3, -14], [3, -22], [-3, -10], [1, -18], [0, -8], [0, -2]], [[9420, 7233], [-4, 6], [-19, -4], [-52, -41], [-84, -38], [-136, -148]], [[9125, 7008], [-1, 4], [-2, 2], [-1, 4], [-3, 2], [-11, 16], [-1, 1], [19, 78], [-3, 21], [-1, 16], [-8, 64], [-21, 158]], [[9092, 7374], [120, 28], [7, 12]], [[9243, 8502], [4, 83], [47, 44]], [[9294, 8629], [4, -18], [4, -18], [4, -18], [8, -35], [30, -125], [20, -89], [21, -89], [4, -18], [4, -18], [8, -35], [12, -52], [9, -35], [4, -18], [2, -10], [10, -61]], [[9438, 7990], [65, -90], [-77, -164]], [[9426, 7736], [-200, -67]], [[9226, 7669], [-25, 43], [-13, 232], [16, 97], [-3, 178], [51, 79], [-9, 204]], [[9502, 7410], [-23, -135], [-18, -6], [-26, -24], [-12, -10], [-3, -2]], [[9404, 7374], [-19, 97]], [[9226, 7669], [-77, -26], [-14, -6], [-18, -6], [-8, -2], [-10, -4], [-11, -4]], [[9088, 7621], [-1, 0], [-6, 16], [0, 6], [0, 18], [-38, 235], [-32, 58], [-7, 26], [-1, 4], [0, 6], [0, 3], [0, 4], [-2, 2], [-5, 12], [-4, 14]], [[8992, 8025], [-2, 4], [-1, 10]], [[8989, 8039], [0, 4], [-3, 2], [-4, 6], [0, 2], [-1, 6], [1, 4], [1, 29], [0, 6], [-1, 6], [1, 6], [2, 4], [1, 2], [2, 2], [1, 4], [0, 2], [0, 4], [0, 8], [-3, 10], [-4, 14], [-1, 4], [0, 2]], [[8981, 8166], [1, 14], [1, 9]], [[8983, 8189], [-1, 6], [0, 4], [-1, 2], [0, 2], [-41, 178]], [[8940, 8381], [303, 121]], [[7158, 4363], [0, -2], [1, -5], [3, -16], [11, -56], [32, -162], [38, -190], [52, -261], [80, -228], [-26, -47], [-10, -113], [28, -97], [-7, -93], [30, -91]], [[7390, 3002], [-328, -54], [-206, -29], [-5, -46], [52, -73], [0, -60]], [[6903, 2740], [-30, -75], [-72, 42], [-41, -34], [-60, 10]], [[6700, 2683], [-46, 523], [8, 473], [10, 582], [-19, 33]], [[6653, 4294], [-2, 4], [2, 0], [7, 2], [31, 2], [31, 4], [60, 8], [155, 16], [63, 10], [61, 10]], [[7061, 4350], [30, 4], [31, 5]], [[7122, 4359], [36, 4]], [[8122, 3049], [86, -307], [99, -233], [85, -145], [-18, -89], [105, -227], [109, -279], [20, -329], [-27, -103], [-11, -146], [-140, -72], [-79, 220], [-116, 87], [-26, 121], [-114, 117], [-99, 219], [-2, 66], [-47, 33], [-2, 131], [18, 95], [-12, 158], [-53, 89], [-37, -9], [-93, 106], [-69, 125], [-77, 52], [-52, -16], [-117, -151], [-89, -27], [-15, 67], [-72, 69], [-151, 67], [-223, 2]], [[7390, 3002], [37, -93], [385, 35], [163, 20], [59, 103], [88, -18]], [[8194, 3536], [-49, -123], [-21, -112], [24, -46], [-35, -117], [9, -89]], [[7158, 4363], [44, 8], [25, 4], [24, 6], [51, 8], [106, 20]], [[7408, 4409], [235, 51]], [[7643, 4460], [-36, -110], [106, -66], [73, -158], [147, -147], [44, -97], [53, -29], [38, -137], [46, -39], [41, -131], [39, -10]], [[6700, 2683], [-69, -20], [-41, 26], [-120, -101]], [[6090, 3544], [0, 36], [12, 12]], [[6102, 3592], [1, 5], [-1, 6], [-3, 12], [0, 18], [-4, 8], [-7, 2], [-1, 0], [-4, 8], [2, 6], [7, 16], [0, 6], [2, 11], [-2, 10], [0, 6], [-11, 14], [-4, 2], [-4, 2], [3, 62], [16, 27], [10, 4], [2, 8]], [[6104, 3825], [-5, 24], [3, 8], [2, 8]], [[6104, 3865], [-4, 10], [-6, 6]], [[6094, 3881], [-2, 3], [2, 2]], [[6094, 3886], [21, 14], [14, 4], [3, 2], [2, 6], [-1, 14], [-15, 10], [0, 10], [1, 4], [15, 14], [7, 25], [2, 2]], [[6143, 3991], [9, 0], [4, 14]], [[6156, 4005], [-4, 20], [1, 2], [5, -4], [10, 2], [18, 20], [-4, 75], [23, 67], [22, 14], [9, 10], [6, 12], [-7, 28]], [[6235, 4251], [25, 2], [25, 2], [52, 4], [102, 11], [128, 14], [50, 6], [26, 2], [10, 2]], [[8578, 4294], [-61, -103], [-33, -168], [-135, -243], [-76, -66], [-1, -41], [-78, -137]], [[7643, 4460], [155, 105], [237, 38], [63, -53], [8, -46], [220, 46], [252, -256]], [[6687, 6661], [-56, -8], [22, -366], [28, -465], [-19, -73], [37, -133], [-19, -87], [-65, -172], [5, -85]], [[6620, 5272], [-3, -20], [-12, -20], [-4, -13], [0, -8]], [[6601, 5211], [1, -6], [5, -10], [12, -24], [-7, -16]], [[6612, 5155], [-34, -14], [-11, -10], [-16, -4], [-3, -3]], [[6548, 5124], [-7, -24], [3, -26]], [[6544, 5074], [15, -34], [-3, -25], [-5, -8], [-83, 41], [-37, -87]], [[6062, 6853], [502, 48], [139, 22]], [[6703, 6923], [-16, -262]], [[6687, 6661], [428, 70], [2, -22]], [[7117, 6709], [28, -337], [45, -562]], [[7190, 5810], [-4, -4], [-4, -10], [1, -11], [9, -10], [10, -34], [2, -4], [-3, -8], [-3, -4], [0, -8], [2, -14], [-33, -11], [-26, -28], [-7, -4], [-106, -160], [-2, -4], [-3, -16], [-7, -12], [-1, -50], [-21, -27], [-47, 20], [-3, 23], [-12, 14], [0, -20], [-8, -6], [-5, 0], [-2, 0], [-2, 4], [-2, 2], [-3, 0], [0, -4], [1, -4], [3, -4], [1, -4], [0, -7], [-13, -20], [0, -32], [-38, -14], [-7, 6], [-4, 8], [-3, 10], [-3, 6], [-6, -6], [-14, -18], [-11, -2], [-9, -16], [-6, -31], [-68, 39], [-68, -33], [-26, -34], [-19, 4]], [[7774, 5383], [-8, -16], [-15, -24], [-40, -67], [-49, -52], [-39, -102], [-42, -60], [-97, -71]], [[7484, 4991], [-5, -4], [-7, -4], [-172, -24], [-47, -6], [-48, -6], [-181, -27], [-77, -2], [-262, -44], [-38, -55]], [[6647, 4819], [-99, -12], [-67, -8], [-66, -8], [-33, -4]], [[6382, 4787], [3, 22], [0, 4], [2, 14], [2, 6], [3, 4], [5, -6], [10, -14], [6, -2], [6, 6], [3, 10], [10, 43], [0, 10], [0, 8], [-4, 12], [0, 12], [3, 45]], [[6431, 4961], [-7, 10], [-4, 8], [-1, 10], [49, 59]], [[6468, 5048], [83, -41], [5, 8]], [[6556, 5015], [4, 15], [-1, 10]], [[6559, 5040], [-15, 34], [4, 50], [3, 3], [16, 4], [11, 10], [34, 14], [-11, 56], [0, 8], [4, 13], [12, 20], [3, 20]], [[6620, 5272], [19, -4]], [[6639, 5268], [8, 16], [0, 33], [18, -15]], [[6665, 5302], [68, 33], [68, -39], [6, 31], [9, 16], [11, 2], [14, 18], [6, 6], [3, -6], [3, -10], [4, -8], [7, -6], [38, 14], [0, 32], [13, 20], [0, 7], [-1, 4], [-3, 4], [-1, 4], [0, 4], [3, 0], [2, -2], [2, -4], [2, 0], [5, 0], [8, 6], [0, 20], [12, -14], [3, -23], [47, -20], [21, 27], [1, 50], [7, 12], [3, 16], [2, 4], [106, 160], [7, 4], [26, 28], [33, 11], [-2, 14], [0, 8], [3, 4], [3, 8], [-2, 4]], [[7202, 5741], [-12, 0], [-5, 6], [7, 28]], [[7192, 5775], [-9, 10], [-1, 11], [4, 10], [4, 4]], [[7190, 5810], [10, 12], [2, 4], [2, 4], [4, 0], [16, -20], [36, 14], [24, -20], [18, -35]], [[7302, 5769], [4, -12], [1, -14]], [[7307, 5743], [3, -6], [4, -4], [127, -12], [4, 0], [4, -2], [9, -6], [15, -2], [14, -17], [72, 65], [18, -52]], [[7577, 5707], [24, -13], [16, -16], [9, -18]], [[7626, 5660], [0, -4], [1, -2], [0, -10], [0, -2], [1, -2], [4, -12], [2, -4], [0, -2], [1, -21], [-4, -4], [0, -14], [-1, -4], [-3, -4], [-1, -4], [1, -6]], [[7627, 5565], [18, -26], [5, -12], [12, -12], [0, -15]], [[7662, 5500], [15, -16], [2, -6], [1, -10], [3, -6], [13, -16], [4, -8], [7, -18], [67, -37]], [[8936, 5351], [30, -41], [-31, -157], [65, 16], [32, -44], [-57, -190], [-58, 2], [-7, -245], [-102, -57], [-56, -82], [-45, -106], [-4, -89], [-125, -64]], [[7408, 4409], [0, 16], [-1, 18], [-2, 43], [101, 145], [43, 10], [108, 158], [124, 99], [23, -16], [54, 121]], [[7858, 5003], [2, 41], [1, 8], [5, 24]], [[7866, 5076], [85, 6], [218, 43], [297, 82], [470, 144]], [[7920, 6513], [-2, -115], [-22, -251], [-54, -95], [-88, -91], [2, -93], [-53, 14], [-30, -204], [-47, -18]], [[7626, 5660], [-49, 47], [-18, 52], [-72, -65], [-14, 17], [-15, 2], [-9, 6], [-4, 2], [-4, 0], [-127, 12], [-4, 4], [-3, 6], [-5, 26], [-18, 35], [-24, 20], [-36, -14], [-16, 20], [-4, 0], [-2, -4], [-2, -4], [-10, -12]], [[7117, 6709], [246, 61], [44, 79]], [[7407, 6849], [83, -73], [51, 10], [183, 230], [127, 71]], [[7851, 7087], [69, -574]], [[6382, 4787], [265, 32], [38, 55], [262, 44], [77, 2], [181, 27], [48, 6], [47, 6], [172, 24], [7, 4], [5, 4]], [[7484, 4991], [328, 67], [8, 10]], [[7820, 5068], [29, 4], [17, 4]], [[7866, 5076], [-8, -73], [-54, -121], [-23, 16], [-124, -99], [-108, -158], [-43, -10], [-101, -145], [2, -43], [1, -18], [0, -16]], [[7408, 4409], [-106, -20], [-51, -8], [-24, -6], [-25, -4]], [[7202, 4371], [-24, -4], [-20, -4]], [[7158, 4363], [-36, -4], [-61, -9], [-61, -10], [-63, -10], [-155, -16], [-60, -8], [-31, -4], [-31, -2], [-7, -2], [-2, 0], [2, -4]], [[6653, 4294], [-3, 0], [-7, -2]], [[6643, 4292], [-26, -2], [-50, -6], [-128, -14], [-102, -11], [-52, -4], [-25, -2], [-25, -2]], [[8481, 6200], [55, -57], [77, -44]], [[8613, 6099], [24, -71], [-30, -30], [-9, -75], [97, -69], [50, 8], [81, -64], [8, -221], [37, -99], [54, 0], [23, -123], [-8, -2], [-4, -2]], [[7866, 5076], [-46, -8], [-8, -10], [-328, -67]], [[7774, 5383], [3, -2], [0, -2], [1, -2]], [[7778, 5377], [0, -8], [-3, -14], [11, -26]], [[7786, 5329], [2, -2], [1, -2], [9, -8], [13, -15], [54, -14], [110, 55], [11, 14], [2, 4], [1, 4], [58, 57], [17, -10], [0, 2], [5, 8], [21, 26], [-6, 59], [67, 228], [16, 115], [29, -32], [9, -2], [19, -4], [13, -2], [1, 0], [1, 2], [11, 34], [6, 43], [19, 80], [25, -12], [30, 59], [13, 22], [4, 20], [7, 23], [6, 10], [6, 16], [4, 103], [3, -4], [23, -18], [12, -8], [64, -49], [1, 4], [0, 6], [2, 10], [4, 27], [2, 16], [0, 4], [0, 2]], [[6107, 8534], [-64, -254], [52, -81], [170, -51], [50, -34], [123, -24], [57, -77], [3, -69], [76, -89], [46, 91], [56, 8], [92, -59], [-69, -149], [-33, -243], [-10, -242], [47, -338]], [[8147, 6244], [20, -176], [120, 162], [105, 75], [72, -55]], [[8464, 6250], [1, -4], [1, -4]], [[8466, 6242], [0, -8], [9, -4], [2, -4], [4, -26]], [[8481, 6200], [0, -2], [0, -4], [-2, -16], [-4, -27], [-2, -10], [0, -6], [-1, -4], [-64, 49], [-12, 8], [-23, 18], [-3, 4], [-4, -103], [-6, -16], [-6, -10], [-7, -23], [-4, -20], [-13, -22], [-30, -59], [-25, 12], [-19, -80], [-6, -43], [-11, -34], [-1, -2], [-1, 0], [-13, 2], [-19, 4], [-9, 2], [-29, 32], [-16, -115], [-67, -228]], [[8084, 5507], [14, -21], [-8, -38]], [[8090, 5448], [-21, -26], [-5, -8], [0, -2], [-17, 10], [-58, -57], [-1, -4], [-2, -4], [-11, -14], [-110, -55], [-54, 14], [-13, 15], [-9, 8], [-1, 2], [-2, 2], [-8, 48], [-1, 2], [0, 2], [-3, 2]], [[7774, 5383], [-3, 2], [-3, 0], [-8, -4], [-15, 4], [-38, 35]], [[7707, 5420], [-7, 18], [-4, 8], [-13, 16], [-3, 6], [-1, 10], [-2, 6], [-15, 16], [-35, 65]], [[7627, 5565], [-1, 4], [0, 2]], [[7626, 5571], [1, 4], [3, 4], [1, 4], [0, 14], [4, 4]], [[7635, 5601], [-1, 9], [0, 8], [0, 4]], [[7634, 5622], [0, 2], [-2, 4], [-4, 12], [-1, 2], [0, 2], [0, 10], [-1, 2], [0, 4]], [[7920, 6513], [38, -319], [189, 50]], [[8876, 6493], [-23, -75], [68, -176], [56, -75], [41, -109], [-5, 2], [-2, -4]], [[9011, 6056], [-15, -4], [-57, -20]], [[8939, 6032], [-41, -12], [-36, 178]], [[8862, 6198], [-43, 220], [-4, 26]], [[8815, 6444], [61, 49]], [[8481, 6200], [-4, 6], [0, 6], [0, 6], [0, 8]], [[8477, 6226], [-2, 4], [-9, 4]], [[8466, 6234], [-2, 2], [2, 6]], [[8466, 6242], [-2, 8], [-72, 55], [-105, -75], [-120, -162], [-20, 176]], [[8147, 6244], [62, 18], [64, 15], [21, 6], [20, 6], [22, 6], [167, 50], [83, 25], [63, 20], [20, 6], [22, 6], [20, 8], [104, 34]], [[8815, 6444], [47, -246], [36, -178], [41, 12], [72, 24]], [[9011, 6056], [0, -2], [0, -6], [-6, 0], [6, -8], [-2, -4], [6, -28], [-22, -39], [-12, -80], [-48, -33], [-39, 47], [-86, 46], [-3, 115], [-39, 219], [-46, -12], [21, -104], [-16, -89], [20, -84], [55, -120], [-119, 17], [-27, 52], [-46, -2], [30, 83], [16, 73], [-41, 2]], [[8920, 7063], [160, -75]], [[9080, 6988], [-7, -101], [-32, -89], [65, -38], [1, -225], [-26, -62], [-42, -192], [-83, 22], [-83, 73], [2, 107], [47, 50], [14, 55], [28, 46]], [[8964, 6634], [11, 10], [6, 13], [-3, 6]], [[8978, 6663], [-37, 38], [-36, 34], [-6, 25], [-4, 8], [-18, -2], [-11, 64], [13, 17], [0, 8], [0, 8], [1, 4], [3, 4]], [[8883, 6871], [0, 6], [-2, 6]], [[8881, 6883], [-17, 24], [-2, 2], [2, 6], [15, 24], [17, 53], [3, 34]], [[8899, 7026], [8, 21], [6, 8], [4, 2], [3, 4]], [[8920, 7061], [0, 2]], [[9362, 7146], [-11, -103], [-136, -104], [-76, -76], [-48, 58], [65, 79], [153, 73], [53, 73]], [[9092, 7374], [21, -158], [8, -64], [1, -16], [3, -21]], [[9125, 7115], [15, -22], [-1, -6], [-32, -46], [-1, -4]], [[9106, 7037], [1, -1], [11, -16], [3, -2], [1, -4], [2, -2], [1, -4]], [[9125, 7008], [-1, -2], [1, 0], [0, -4], [-3, -12], [-13, -20], [-6, -28], [-23, 46]], [[8920, 7063], [-2, 6], [-12, 18], [-11, 0], [-9, -4], [-5, 0], [-2, 2], [-3, 4], [-3, 2], [-15, 8], [-16, 30], [-15, 71], [-54, 41], [-219, -71], [-96, -30], [-24, -6], [-23, -7], [-48, -14], [-72, -22], [-293, -79], [-12, 103], [-11, 81]], [[7975, 7196], [119, 125], [-28, 156], [-29, 63], [76, 81], [315, 91], [44, 177], [156, 332], [60, 73], [252, 87]], [[8940, 8381], [23, -146], [18, -32]], [[8981, 8203], [0, -2], [1, -2], [0, -4], [1, -6], [-2, -23], [0, -2], [1, -4], [4, -14]], [[8986, 8146], [2, -4], [1, -6]], [[8989, 8136], [0, -8], [0, -4], [0, -2], [-1, -4], [-2, -2], [-1, -2], [-2, -4]], [[8983, 8110], [-1, -4], [0, -2]], [[8982, 8104], [1, -6], [0, -6], [-1, -29], [-1, -4]], [[8981, 8059], [0, -4], [1, -2]], [[8982, 8053], [0, -2], [4, -6], [3, -2], [0, -4], [3, -14], [4, -14], [5, -12], [2, -2], [0, -4], [0, -3], [0, -6]], [[9003, 7984], [0, -2], [1, -2]], [[9004, 7980], [5, -8], [2, -18]], [[9011, 7954], [32, -58], [38, -235], [0, -18], [0, -6], [6, -16], [1, 0]], [[7851, 7087], [124, 109]], [[7975, 7196], [11, -81]], [[7986, 7115], [2, -22], [2, -20], [8, -61]], [[7998, 7012], [293, 79], [72, 22], [48, 14], [23, 7], [24, 6], [96, 30], [219, 71], [54, -41]], [[8827, 7200], [7, -16], [8, -55]], [[8842, 7129], [16, -30], [15, -8], [3, -2], [3, -4], [2, -2], [5, 0], [9, 4], [11, 0], [12, -18], [2, -6]], [[8920, 7063], [0, -2], [-21, -35], [-3, -34], [-17, -53], [-15, -24], [-2, -6], [2, -2], [17, -24], [2, -12], [-3, -4], [-1, -4], [0, -8], [0, -8], [-13, -17], [11, -64], [18, 2], [4, -8], [6, -25], [36, -34]], [[8941, 6701], [19, -24], [18, -14]], [[8978, 6663], [-12, -27], [-2, -2]], [[8964, 6634], [-16, -22], [-27, -44], [-1, -25], [-44, -50]], [[9438, 7990], [-7, 35], [0, 10], [-1, 4], [-2, 12]], [[9428, 8051], [-2, 10], [-4, 18], [-9, 35], [-12, 52], [-8, 35], [-4, 18], [-4, 18], [-21, 89], [-20, 89], [-30, 125], [-8, 35], [-4, 18], [-4, 18], [-4, 18]], [[9294, 8629], [49, 79], [43, 184], [-17, 48], [15, 132], [-10, 101], [67, 299], [49, -49], [25, -10], [101, 101], [85, -74], [93, -401], [68, -48], [21, -111], [50, -12], [66, -105], [-28, -77], [-94, -126], [-65, -6], [-69, -87], [-45, 11], [5, -136], [-16, -48], [-116, -75], [-31, -71], [-30, -234], [-72, 76]], [[6170, 8789], [26, 0], [108, 109], [47, 20], [292, -200], [308, -206], [60, -138], [73, -2], [46, -123], [55, 29], [12, -102], [184, -119], [12, -26], [128, -588], [-27, -182], [-3, -144], [-94, -163], [10, -105]], [[351, 506], [3, -32], [-33, -6], [-21, -23], [-11, 31], [49, 33], [13, -3]], [[443, 524], [15, -21], [3, -37], [-102, -20], [19, 23], [21, -5], [44, 60]], [[661, 596], [13, -55], [-20, -16], [-30, 16], [-23, -20], [-27, 11], [34, 60], [53, 4]], [[2614, 502], [18, -34], [5, -42], [-9, -40], [-42, 36], [7, 69], [21, 11]], [[2468, 536], [24, 1], [11, -41], [20, -5], [29, -50], [-2, -20], [28, -33], [10, -73], [-41, 18], [-4, 24], [-38, 18], [4, 55], [-20, 9], [6, 31], [-7, 41], [-20, 25]], [[2438, 610], [12, -11], [2, -53], [-33, 32], [19, 32]], [[2448, 645], [47, -13], [7, -45], [-10, -29], [-29, -6], [-15, 93]], [[2350, 688], [29, -13], [24, -92], [3, -60], [-26, 28], [-21, 41], [1, 35], [-24, 43], [14, 18]], [[1354, 809], [29, -9], [-3, -40], [-19, -54], [-33, 0], [-50, -65], [-28, 47], [-9, 58], [15, 25], [44, 32], [42, -11], [12, 17]], [[2325, 805], [46, -24], [12, -81], [-64, -14], [-29, 62], [-3, 37], [38, 20]], [[2368, 834], [14, -29], [29, 4], [2, -13], [-7, -17], [26, -52], [7, -39], [-32, -57], [-3, 56], [-13, 30], [-23, 117]], [[1385, 886], [27, -22], [5, -21], [-50, -27], [-21, 32], [26, 13], [13, 25]], [[1705, 1125], [-24, -62], [-10, 10], [34, 52]], [[728, 1454], [17, -25], [-7, -58], [-41, 1], [-39, 60], [52, 31], [18, -9]], [[620, 2113], [1, -25], [20, -30], [34, -2], [21, -103], [-27, -11], [-17, 70], [-13, 27], [-32, -1], [-8, 42], [21, 33]], [[1488, 2901], [-3, -21], [41, -32], [12, -55], [45, 3], [25, -13], [-3, -51], [15, -21], [93, -10], [32, -36], [44, -28], [44, -5], [33, -32], [62, 18], [35, -41], [47, -32], [3, -292], [4, -338], [2, -158], [3, -292], [2, -203], [2, -158], [52, -18], [20, 24], [28, 3], [-3, -42], [89, -122], [13, -50], [49, 64], [8, 53], [39, 32], [28, -35], [-3, -20], [42, -50], [13, -31], [20, -13], [26, -38], [65, -137], [37, -67], [-2, -26], [66, -57], [66, -35], [0, -52], [19, -68], [-16, -64], [-33, -21], [-14, 56], [9, 25], [-7, 56], [-20, 31], [-16, 7], [-17, -23], [-8, -62], [-21, 33], [14, 45], [-6, 54], [-33, 31], [-3, 21], [-40, 46], [-28, 10], [7, 25], [-15, 57], [-19, 34], [-13, 15], [-3, 32], [-9, -11], [-16, 18], [-15, 5], [-26, 64], [-2, -35], [13, -45], [-46, 28], [-9, -24], [-31, -29], [-53, 47], [-40, 68], [-93, 75], [19, 27], [-8, 26], [-37, -30], [-75, 38], [-57, 24], [-60, -17], [-51, 62], [-53, 16], [14, 30], [-41, 29], [-14, 34], [-30, -18], [-48, 7], [14, -73], [-29, -65], [-49, 12], [-23, -17], [-36, -59], [-81, -32], [-4, 40], [35, 15], [-29, 42], [28, 57], [30, 87], [35, 32], [20, -21], [22, 7], [-47, 56], [-31, -30], [-32, -16], [-7, -25], [-31, -35], [-30, -82], [-20, -27], [-29, -3], [-32, -33], [-12, -45], [26, -8], [18, -26], [-9, -29], [-28, -12], [-22, -56], [-27, -24], [-25, 7], [-27, -40], [-59, -31], [-6, -36], [-58, -46], [-44, -4], [-30, -19], [-6, -46], [-85, -26], [-12, 11], [-48, -40], [-51, -1], [-12, 47], [-35, -65], [-28, 8], [-33, -11], [-4, 28], [67, 68], [29, 17], [43, -5], [11, -41], [24, 23], [18, 48], [45, 32], [52, 22], [49, 59], [40, 26], [34, 132], [30, 32], [3, 24], [-65, -21], [-29, 43], [-7, -45], [-18, -9], [-9, 57], [-28, 14], [-15, 55], [-64, -29], [-18, 12], [-2, 63], [10, 38], [15, 11], [-12, 117], [-13, -23], [-63, -3], [-23, 18], [1, 33], [-28, 66], [-8, 43], [42, 20], [-11, 45], [-24, 27], [5, 20], [-16, 62], [39, 22], [5, 41], [43, 43], [19, 8], [5, 34], [25, 36], [25, 8], [40, -55], [60, 36], [43, -11], [26, 27], [13, 119], [15, 15], [-24, 32], [-30, 6], [-30, -21], [-73, 52], [-35, -5], [-45, 49], [4, 51], [-8, 33], [29, 25], [-42, 40], [-20, 45], [43, 25], [73, 14], [60, 19], [31, -8], [-12, -67], [5, -18], [72, -42], [21, 26], [5, 29], [31, -27], [28, 13], [-22, 33], [-22, -12], [-17, 36], [13, 51], [-26, 2], [-45, 42], [1, 85], [-32, 92], [-28, 68], [20, 22], [12, 45], [70, -32], [33, 14], [26, 26], [23, 59], [50, 55], [41, -9], [64, 39], [47, -7], [34, 25], [35, 40]]], "transform": {"translate": [-3758, -2824.8073278132397], "scale": [0.7349734973497349, 0.5052312559069146]}, "objects": {"features": {"type": "GeometryCollection", "geometries": [{"type": "Polygon", "properties": {"labelrank": 0, "postal": "MA", "code_hasc": "US.MA", "name": "Massachusetts", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347580, "longitude": -71, "woe_name": "Massachusetts", "fips": "US25", "iso_a2": "US", "latitude": 42, "objectid_1": 2059, "woe_label": "Massachusetts, US, United States", "type": "State", "id": "US.MA"}, "arcs": [[0, 1, 2, 3, 4, 5]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "MN", "code_hasc": "US.MN", "name": "Minnesota", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347582, "longitude": -93, "woe_name": "Minnesota", "fips": "US32", "iso_a2": "US", "latitude": 46, "objectid_1": 3494, "woe_label": "Minnesota, US, United States", "type": "State", "id": "US.MN"}, "arcs": [[6, 7, 8, 9, 10, 11]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "MT", "code_hasc": "US.MT", "name": "Montana", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347585, "longitude": -110, "woe_name": "Montana", "fips": "US30", "iso_a2": "US", "latitude": 46, "objectid_1": 3510, "woe_label": "Montana, US, United States", "type": "State", "id": "US.MT"}, "arcs": [[12, 13, 14, 15, 16]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "ND", "code_hasc": "US.ND", "name": "North Dakota", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347593, "longitude": -100, "woe_name": "North Dakota", "fips": "US38", "iso_a2": "US", "latitude": 47, "objectid_1": 3511, "woe_label": "North Dakota, US, United States", "type": "State", "id": "US.ND"}, "arcs": [[17, -17, 18, -10]]}, {"type": "MultiPolygon", "properties": {"labelrank": 0, "postal": "HI", "code_hasc": "US.HI", "name": "Hawaii", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347570, "longitude": -157, "woe_name": "Hawaii", "fips": "US15", "iso_a2": "US", "latitude": 21, "objectid_1": 347, "woe_label": "Hawaii, US, United States", "type": "State", "id": "US.HI"}, "arcs": [[[19]], [[20]], [[21]], [[22]]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "ID", "code_hasc": "US.ID", "name": "Idaho", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347571, "longitude": -114, "woe_name": "Idaho", "fips": "US16", "iso_a2": "US", "latitude": 43, "objectid_1": 3512, "woe_label": "Idaho, US, United States", "type": "State", "id": "US.ID"}, "arcs": [[23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -15]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "WA", "code_hasc": "US.WA", "name": "Washington", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347606, "longitude": -120, "woe_name": "Washington", "fips": "US53", "iso_a2": "US", "latitude": 47, "objectid_1": 872, "woe_label": "Washington, US, United States", "type": "State", "id": "US.WA"}, "arcs": [[43, 44, 45, 46, 47]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "AZ", "code_hasc": "US.AZ", "name": "Arizona", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347561, "longitude": -111, "woe_name": "Arizona", "fips": "US04", "iso_a2": "US", "latitude": 34, "objectid_1": 3513, "woe_label": "Arizona, US, United States", "type": "State", "id": "US.AZ"}, "arcs": [[48, 49, 50, 51, 52, 53, 54]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "CA", "code_hasc": "US.CA", "name": "California", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347563, "longitude": -119, "woe_name": "California", "fips": "US06", "iso_a2": "US", "latitude": 36, "objectid_1": 356, "woe_label": "California, US, United States", "type": "State", "id": "US.CA"}, "arcs": [[55, 56, 57, 58, 59, 60, 61, 62]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "CO", "code_hasc": "US.CO", "name": "Colorado", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347564, "longitude": -105, "woe_name": "Colorado", "fips": "US08", "iso_a2": "US", "latitude": 38, "objectid_1": 3514, "woe_label": "Colorado, US, United States", "type": "State", "id": "US.CO"}, "arcs": [[63, 64, 65, 66, 67, 68]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "NV", "code_hasc": "US.NV", "name": "Nevada", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347587, "longitude": -117, "woe_name": "Nevada", "fips": "US32", "iso_a2": "US", "latitude": 39, "objectid_1": 3515, "woe_label": "Nevada, US, United States", "type": "State", "id": "US.NV"}, "arcs": [[-54, -56, 69, -26, 70]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "NM", "code_hasc": "US.NM", "name": "New Mexico", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347590, "longitude": -106, "woe_name": "New Mexico", "fips": "US35", "iso_a2": "US", "latitude": 34, "objectid_1": 3516, "woe_label": "New Mexico, US, United States", "type": "State", "id": "US.NM"}, "arcs": [[71, 72, -49, -66, 73]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "OR", "code_hasc": "US.OR", "name": "Oregon", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347596, "longitude": -120, "woe_name": "Oregon", "fips": "US41", "iso_a2": "US", "latitude": 43, "objectid_1": 873, "woe_label": "Oregon, US, United States", "type": "State", "id": "US.OR"}, "arcs": [[74, 75, 76, 77, 78, 79, 80, 81, 82, -70, -63, 83, -44]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "UT", "code_hasc": "US.UT", "name": "Utah", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347603, "longitude": -111, "woe_name": "Utah", "fips": "US49", "iso_a2": "US", "latitude": 39, "objectid_1": 3517, "woe_label": "Utah, US, United States", "type": "State", "id": "US.UT"}, "arcs": [[84, -67, -55, -71, -25]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "WY", "code_hasc": "US.WY", "name": "Wyoming", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347609, "longitude": -107, "woe_name": "Wyoming", "fips": "US56", "iso_a2": "US", "latitude": 42, "objectid_1": 3518, "woe_label": "Wyoming, US, United States", "type": "State", "id": "US.WY"}, "arcs": [[-68, -85, -24, -14, 85, 86]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "AR", "code_hasc": "US.AR", "name": "Arkansas", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347562, "longitude": -92, "woe_name": "Arkansas", "fips": "US05", "iso_a2": "US", "latitude": 34, "objectid_1": 3519, "woe_label": "Arkansas, US, United States", "type": "State", "id": "US.AR"}, "arcs": [[87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "IA", "code_hasc": "US.IA", "name": "Iowa", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347574, "longitude": -93, "woe_name": "Iowa", "fips": "US19", "iso_a2": "US", "latitude": 42, "objectid_1": 3520, "woe_label": "Iowa, US, United States", "type": "State", "id": "US.IA"}, "arcs": [[100, 101, 102, 103, -8, 104]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "KS", "code_hasc": "US.KS", "name": "Kansas", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347575, "longitude": -98, "woe_name": "Kansas", "fips": "US20", "iso_a2": "US", "latitude": 38, "objectid_1": 3521, "woe_label": "Kansas, US, United States", "type": "State", "id": "US.KS"}, "arcs": [[105, -64, 106, 107]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "MO", "code_hasc": "US.MO", "name": "Missouri", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347584, "longitude": -92, "woe_name": "Missouri", "fips": "US29", "iso_a2": "US", "latitude": 38, "objectid_1": 3522, "woe_label": "Missouri, US, United States", "type": "State", "id": "US.MO"}, "arcs": [[108, 109, 110, 111, 112, -100, 113, -108, 114, -102]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "NE", "code_hasc": "US.NE", "name": "Nebraska", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347586, "longitude": -99, "woe_name": "Nebraska", "fips": "US31", "iso_a2": "US", "latitude": 41, "objectid_1": 3523, "woe_label": "Nebraska, US, United States", "type": "State", "id": "US.NE"}, "arcs": [[-103, -115, -107, -69, -87, 115]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "OK", "code_hasc": "US.OK", "name": "Oklahoma", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347595, "longitude": -97, "woe_name": "Oklahoma", "fips": "US40", "iso_a2": "US", "latitude": 35, "objectid_1": 3524, "woe_label": "Oklahoma, US, United States", "type": "State", "id": "US.OK"}, "arcs": [[-99, 116, 117, 118, 119, -74, -65, -106, -114]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "SD", "code_hasc": "US.SD", "name": "South Dakota", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347600, "longitude": -100, "woe_name": "South Dakota", "fips": "US46", "iso_a2": "US", "latitude": 44, "objectid_1": 3525, "woe_label": "South Dakota, US, United States", "type": "State", "id": "US.SD"}, "arcs": [[-9, -104, -116, -86, -13, -18]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "LA", "code_hasc": "US.LA", "name": "Louisiana", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347577, "longitude": -91, "woe_name": "Louisiana", "fips": "US22", "iso_a2": "US", "latitude": 30, "objectid_1": 3455, "woe_label": "Louisiana, US, United States", "type": "State", "id": "US.LA"}, "arcs": [[120, 121, -95, 122]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "TX", "code_hasc": "US.TX", "name": "Texas", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347602, "longitude": -98, "woe_name": "Texas", "fips": "US48", "iso_a2": "US", "latitude": 31, "objectid_1": 3449, "woe_label": "Texas, US, United States", "type": "State", "id": "US.TX"}, "arcs": [[-122, 123, 124, 125, 126, 127, 128, 129]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "CT", "code_hasc": "US.CT", "name": "Connecticut", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347565, "longitude": -72, "woe_name": "Connecticut", "fips": "US09", "iso_a2": "US", "latitude": 41, "objectid_1": 3495, "woe_label": "Connecticut, US, United States", "type": "State", "id": "US.CT"}, "arcs": [[130, 131, 132, 133, 134, 135]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "NH", "code_hasc": "US.NH", "name": "New Hampshire", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347588, "longitude": -71, "woe_name": "New Hampshire", "fips": "US33", "iso_a2": "US", "latitude": 43, "objectid_1": 3496, "woe_label": "New Hampshire, US, United States", "type": "State", "id": "US.NH"}, "arcs": [[136, 137, 138, 139, 140]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "RI", "code_hasc": "US.RI", "name": "Rhode Island", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347598, "longitude": -71, "woe_name": "Rhode Island", "fips": "US44", "iso_a2": "US", "latitude": 41, "objectid_1": 2084, "woe_label": "Rhode Island, US, United States", "type": "State", "id": "US.RI"}, "arcs": [[141, -133, 142, -5]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "VT", "code_hasc": "US.VT", "name": "Vermont", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347604, "longitude": -72, "woe_name": "Vermont", "fips": "US50", "iso_a2": "US", "latitude": 44, "objectid_1": 3497, "woe_label": "Vermont, US, United States", "type": "State", "id": "US.VT"}, "arcs": [[143, 144, 145, 146, 147, 148, 149, -141]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "AL", "code_hasc": "US.AL", "name": "Alabama", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347559, "longitude": -86, "woe_name": "Alabama", "fips": "US01", "iso_a2": "US", "latitude": 32, "objectid_1": 3460, "woe_label": "Alabama, US, United States", "type": "State", "id": "US.AL"}, "arcs": [[150, 151, 152, 153, 154, 155, 156]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "FL", "code_hasc": "US.FL", "name": "Florida", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347568, "longitude": -81, "woe_name": "Florida", "fips": "US12", "iso_a2": "US", "latitude": 28, "objectid_1": 3447, "woe_label": "Florida, US, United States", "type": "State", "id": "US.FL"}, "arcs": [[157, -152, 158]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "GA", "code_hasc": "US.GA", "name": "Georgia", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347569, "longitude": -83, "woe_name": "Georgia", "fips": "US13", "iso_a2": "US", "latitude": 32, "objectid_1": 1924, "woe_label": "Georgia, US, United States", "type": "State", "id": "US.GA"}, "arcs": [[159, -159, -151, 160, 161, 162]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "MS", "code_hasc": "US.MS", "name": "Mississippi", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347583, "longitude": -89, "woe_name": "Mississippi", "fips": "US28", "iso_a2": "US", "latitude": 32, "objectid_1": 3459, "woe_label": "Mississippi, US, United States", "type": "State", "id": "US.MS"}, "arcs": [[-154, 163, -123, 164, 165, 166, 167, 168, 169, 170, 171, 172]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "SC", "code_hasc": "US.SC", "name": "South Carolina", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347599, "longitude": -80, "woe_name": "South Carolina", "fips": "US45", "iso_a2": "US", "latitude": 33, "objectid_1": 3498, "woe_label": "South Carolina, US, United States", "type": "State", "id": "US.SC"}, "arcs": [[173, -163, 174]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "IL", "code_hasc": "US.IL", "name": "Illinois", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347572, "longitude": -89, "woe_name": "Illinois", "fips": "US17", "iso_a2": "US", "latitude": 39, "objectid_1": 3499, "woe_label": "Illinois, US, United States", "type": "State", "id": "US.IL"}, "arcs": [[175, 176, 177, 178, 179, 180, -109, -101, 181, 182]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "IN", "code_hasc": "US.IN", "name": "Indiana", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347573, "longitude": -86, "woe_name": "Indiana", "fips": "US18", "iso_a2": "US", "latitude": 39, "objectid_1": 3500, "woe_label": "Indiana, US, United States", "type": "State", "id": "US.IN"}, "arcs": [[183, 184, 185, -176]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "KY", "code_hasc": "US.KY", "name": "Kentucky", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347576, "longitude": -85, "woe_name": "Kentucky", "fips": "US21", "iso_a2": "US", "latitude": 37, "objectid_1": 3501, "woe_label": "Kentucky, US, United States", "type": "State", "id": "US.KY"}, "arcs": [[186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "NC", "code_hasc": "US.NC", "name": "North Carolina", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347592, "longitude": -78, "woe_name": "North Carolina", "fips": "US37", "iso_a2": "US", "latitude": 35, "objectid_1": 3303, "woe_label": "North Carolina, US, United States", "type": "State", "id": "US.NC"}, "arcs": [[206, -175, -162, 207, 208, 209]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "OH", "code_hasc": "US.OH", "name": "Ohio", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347594, "longitude": -82, "woe_name": "Ohio", "fips": "US39", "iso_a2": "US", "latitude": 40, "objectid_1": 3502, "woe_label": "Ohio, US, United States", "type": "State", "id": "US.OH"}, "arcs": [[210, 211, -185, 212, 213, 214]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "TN", "code_hasc": "US.TN", "name": "Tennessee", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347601, "longitude": -86, "woe_name": "Tennessee", "fips": "US47", "iso_a2": "US", "latitude": 35, "objectid_1": 3503, "woe_label": "Tennessee, US, United States", "type": "State", "id": "US.TN"}, "arcs": [[-88, -113, 215, 216, 217, 218, 219, 220, 221, 222, 223]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "VA", "code_hasc": "US.VA", "name": "Virginia", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347605, "longitude": -78, "woe_name": "Virginia", "fips": "US51", "iso_a2": "US", "latitude": 37, "objectid_1": 3475, "woe_label": "Virginia, US, United States", "type": "State", "id": "US.VA"}, "arcs": [[224, 225, -210, 226, -187, 227, 228, 229]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "WI", "code_hasc": "US.WI", "name": "Wisconsin", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347608, "longitude": -89, "woe_name": "Wisconsin", "fips": "US55", "iso_a2": "US", "latitude": 44, "objectid_1": 3504, "woe_label": "Wisconsin, US, United States", "type": "State", "id": "US.WI"}, "arcs": [[230, -182, -105, -7]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "WV", "code_hasc": "US.WV", "name": "West Virginia", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347607, "longitude": -80, "woe_name": "West Virginia", "fips": "US54", "iso_a2": "US", "latitude": 38, "objectid_1": 3505, "woe_label": "West Virginia, US, United States", "type": "State", "id": "US.WV"}, "arcs": [[231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, -211, 243]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "DE", "code_hasc": "US.DE", "name": "Delaware", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347566, "longitude": -75, "woe_name": "Delaware", "fips": "US10", "iso_a2": "US", "latitude": 38, "objectid_1": 3506, "woe_label": "Delaware, US, United States", "type": "State", "id": "US.DE"}, "arcs": [[244, 245, 246, 247, 248]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "MD", "code_hasc": "US.MD", "name": "Maryland", "admin": "United States of America", "type_en": "State", "region": "South", "woe_id": 2347579, "longitude": -77, "woe_name": "Maryland", "fips": "US24", "iso_a2": "US", "latitude": 39, "objectid_1": 3508, "woe_label": "Maryland, US, United States", "type": "State", "id": "US.MD"}, "arcs": [[-225, 249, 250, 251, 252, 253, 254, 255]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "NJ", "code_hasc": "US.NJ", "name": "New Jersey", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347589, "longitude": -74, "woe_name": "New Jersey", "fips": "US34", "iso_a2": "US", "latitude": 40, "objectid_1": 3478, "woe_label": "New Jersey, US, United States", "type": "State", "id": "US.NJ"}, "arcs": [[256, 257, 258, 259, 260, 261, 262, 263]]}, {"type": "MultiPolygon", "properties": {"labelrank": 0, "postal": "NY", "code_hasc": "US.NY", "name": "New York", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347591, "longitude": -75, "woe_name": "New York", "fips": "US36", "iso_a2": "US", "latitude": 43, "objectid_1": 2056, "woe_label": "New York, US, United States", "type": "State", "id": "US.NY"}, "arcs": [[[264]], [[265, 266, 267, 268, -257, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -2]]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "PA", "code_hasc": "US.PA", "name": "Pennsylvania", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347597, "longitude": -77, "woe_name": "Pennsylvania", "fips": "US42", "iso_a2": "US", "latitude": 40, "objectid_1": 3509, "woe_label": "Pennsylvania, US, United States", "type": "State", "id": "US.PA"}, "arcs": [[-254, -244, -215, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, -249]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "ME", "code_hasc": "US.ME", "name": "Maine", "admin": "United States of America", "type_en": "State", "region": "Northeast", "woe_id": 2347578, "longitude": -69, "woe_name": "Maine", "fips": "US23", "iso_a2": "US", "latitude": 45, "objectid_1": 397, "woe_label": "Maine, US, United States", "type": "State", "id": "US.ME"}, "arcs": [[292, 293, 294]]}, {"type": "Polygon", "properties": {"labelrank": 0, "postal": "MI", "code_hasc": "US.MI", "name": "Michigan", "admin": "United States of America", "type_en": "State", "region": "Midwest", "woe_id": 2347581, "longitude": -84, "woe_name": "Michigan", "fips": "US26", "iso_a2": "US", "latitude": 43, "objectid_1": 3202, "woe_label": "Michigan, US, United States", "type": "State", "id": "US.MI"}, "arcs": [[-184, -183, -231, -12, 295, -213]]}, {"type": "MultiPolygon", "properties": {"labelrank": 0, "postal": "AK", "code_hasc": "US.AK", "name": "Alaska", "admin": "United States of America", "type_en": "State", "region": "West", "woe_id": 2347560, "longitude": -151, "woe_name": "Alaska", "fips": "US02", "iso_a2": "US", "latitude": 65, "objectid_1": 500, "woe_label": "Alaska, US, United States", "type": "State", "id": "US.AK"}, "arcs": [[[296]], [[297]], [[298]], [[299]], [[300]], [[301]], [[302]], [[303]], [[304]], [[305]], [[306]], [[307]], [[308]], [[309]], [[310]], [[311]]]}]}}, "bbox": [-3758, -2824.8073278132397, 3591, 2227], "type": "Topology"} -------------------------------------------------------------------------------- /tests/helpers/destroy-app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default function destroyApp(application) { 4 | Ember.run(application, 'destroy'); 5 | } 6 | -------------------------------------------------------------------------------- /tests/helpers/module-for-acceptance.js: -------------------------------------------------------------------------------- 1 | import { module } from 'qunit'; 2 | import Ember from 'ember'; 3 | import startApp from '../helpers/start-app'; 4 | import destroyApp from '../helpers/destroy-app'; 5 | 6 | const { RSVP: { Promise } } = Ember; 7 | 8 | export default function(name, options = {}) { 9 | module(name, { 10 | beforeEach() { 11 | this.application = startApp(); 12 | 13 | if (options.beforeEach) { 14 | return options.beforeEach.apply(this, arguments); 15 | } 16 | }, 17 | 18 | afterEach() { 19 | let afterEach = options.afterEach && options.afterEach.apply(this, arguments); 20 | return Promise.resolve(afterEach).then(() => destroyApp(this.application)); 21 | } 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /tests/helpers/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from '../../resolver'; 2 | import config from '../../config/environment'; 3 | 4 | const resolver = Resolver.create(); 5 | 6 | resolver.namespace = { 7 | modulePrefix: config.modulePrefix, 8 | podModulePrefix: config.podModulePrefix 9 | }; 10 | 11 | export default resolver; 12 | -------------------------------------------------------------------------------- /tests/helpers/start-app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Application from '../../app'; 3 | import config from '../../config/environment'; 4 | 5 | export default function startApp(attrs) { 6 | let application; 7 | 8 | // use defaults, but you can override 9 | let attributes = Ember.assign({}, config.APP, attrs); 10 | 11 | Ember.run(() => { 12 | application = Application.create(attributes); 13 | application.setupForTesting(); 14 | application.injectTestHelpers(); 15 | }); 16 | 17 | return application; 18 | } 19 | -------------------------------------------------------------------------------- /tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dummy Tests 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | {{content-for "test-head"}} 12 | 13 | 14 | 15 | 16 | 17 | {{content-for "head-footer"}} 18 | {{content-for "test-head-footer"}} 19 | 20 | 21 | {{content-for "body"}} 22 | {{content-for "test-body"}} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{content-for "body-footer"}} 31 | {{content-for "test-body-footer"}} 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/integration/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/integration/.gitkeep -------------------------------------------------------------------------------- /tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import resolver from './helpers/resolver'; 2 | import { 3 | setResolver 4 | } from 'ember-qunit'; 5 | 6 | setResolver(resolver); 7 | -------------------------------------------------------------------------------- /tests/unit/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/tests/unit/.gitkeep -------------------------------------------------------------------------------- /vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/vendor/.gitkeep -------------------------------------------------------------------------------- /vendor/anychart/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'anychart'; 3 | src: url('fonts/anychart.eot?7r1vso'); 4 | src: url('fonts/anychart.eot?7r1vso#iefix') format('embedded-opentype'), 5 | url('fonts/anychart.ttf?7r1vso') format('truetype'), 6 | url('fonts/anychart.woff?7r1vso') format('woff'), 7 | url('fonts/anychart.svg?7r1vso#anychart') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | .ac { 13 | /* use !important to prevent issues with browser extensions that change fonts */ 14 | font-family: 'anychart' !important; 15 | speak: none; 16 | font-style: normal; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | 22 | /* Better Font Rendering =========== */ 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | .ac-logo:before { 28 | content: "\e900"; 29 | } 30 | .ac-anychart:before { 31 | content: "\e901"; 32 | } 33 | .ac-anychart2:before { 34 | content: "\e902"; 35 | } 36 | .ac-desktop:before { 37 | content: "\e903"; 38 | } 39 | .ac-chart-column:before { 40 | content: "\e904"; 41 | } 42 | .ac-chart-gauge:before { 43 | content: "\e905"; 44 | } 45 | .ac-folder:before { 46 | content: "\e906"; 47 | } 48 | .ac-file-image-o:before { 49 | content: "\e907"; 50 | } 51 | .ac-map-o:before { 52 | content: "\e908"; 53 | } 54 | .ac-book:before { 55 | content: "\e909"; 56 | } 57 | .ac-envelope:before { 58 | content: "\e90a"; 59 | } 60 | .ac-phone-call:before { 61 | content: "\e90b"; 62 | } 63 | .ac-support:before { 64 | content: "\e90c"; 65 | } 66 | .ac-print:before { 67 | content: "\e90d"; 68 | } 69 | .ac-print2:before { 70 | content: "\e90e"; 71 | } 72 | .ac-position-center2:before { 73 | content: "\e90f"; 74 | } 75 | .ac-rectangle-2:before { 76 | content: "\e910"; 77 | } 78 | .ac-upload:before { 79 | content: "\e911"; 80 | } 81 | .ac-cloud-upload:before { 82 | content: "\e912"; 83 | } 84 | .ac-download-zip:before { 85 | content: "\e913"; 86 | } 87 | .ac-jsfiddle:before { 88 | content: "\e914"; 89 | } 90 | .ac-line:before { 91 | content: "\e915"; 92 | } 93 | .ac-horizontal-line:before { 94 | content: "\e916"; 95 | } 96 | .ac-vertical-line:before { 97 | content: "\e917"; 98 | } 99 | .ac-infinite-line:before { 100 | content: "\e918"; 101 | } 102 | .ac-ray:before { 103 | content: "\e919"; 104 | } 105 | .ac-rectangle:before { 106 | content: "\e91a"; 107 | } 108 | .ac-ellipse:before { 109 | content: "\e91b"; 110 | } 111 | .ac-triangle:before { 112 | content: "\e91c"; 113 | } 114 | .ac-fibonacci-arc:before { 115 | content: "\e91d"; 116 | } 117 | .ac-fibonacci-fan:before { 118 | content: "\e91e"; 119 | } 120 | .ac-fibonacci-retracement:before { 121 | content: "\e91f"; 122 | } 123 | .ac-fibonacci-timezones:before { 124 | content: "\e920"; 125 | } 126 | .ac-andrews-pitchfork:before { 127 | content: "\e921"; 128 | } 129 | .ac-trend-channel:before { 130 | content: "\e922"; 131 | } 132 | .ac-question-circle-thin:before { 133 | content: "\e923"; 134 | } 135 | .ac-ruler-paint-brush-o:before { 136 | content: "\e924"; 137 | } 138 | .ac-plus:before { 139 | content: "\e925"; 140 | } 141 | .ac-minus:before { 142 | content: "\e926"; 143 | } 144 | .ac-check-circle-thick:before { 145 | content: "\e927"; 146 | } 147 | .ac-chevron-circle-left-thin:before { 148 | content: "\e928"; 149 | } 150 | .ac-chevron-circle-right-thin:before { 151 | content: "\e929"; 152 | } 153 | .ac-chevron-circle-up-thin:before { 154 | content: "\e92a"; 155 | } 156 | .ac-chevron-circle-down-thin:before { 157 | content: "\e92b"; 158 | } 159 | .ac-linkedin:before { 160 | content: "\e92c"; 161 | } 162 | .ac-anystock:before { 163 | content: "\e92d"; 164 | } 165 | .ac-anygantt:before { 166 | content: "\e92e"; 167 | } 168 | .ac-anymap:before { 169 | content: "\e92f"; 170 | } 171 | .ac-anymap2:before { 172 | content: "\e930"; 173 | } 174 | .ac-api:before { 175 | content: "\e931"; 176 | } 177 | .ac-javascript:before { 178 | content: "\e932"; 179 | } 180 | .ac-globe:before { 181 | content: "\e933"; 182 | } 183 | .ac-charts-many:before { 184 | content: "\e934"; 185 | } 186 | .ac-bars:before { 187 | content: "\e935"; 188 | } 189 | .ac-search:before { 190 | content: "\e936"; 191 | } 192 | .ac-star-4:before { 193 | content: "\e937"; 194 | } 195 | .ac-triangle-right:before { 196 | content: "\e938"; 197 | } 198 | .ac-position-left:before { 199 | content: "\e939"; 200 | } 201 | .ac-position-right:before { 202 | content: "\e93a"; 203 | } 204 | .ac-question-circle:before { 205 | content: "\e93b"; 206 | } 207 | .ac-question-circle-o:before { 208 | content: "\e93c"; 209 | } 210 | .ac-plane:before { 211 | content: "\e93d"; 212 | } 213 | .ac-smile:before { 214 | content: "\e93e"; 215 | } 216 | .ac-disk-slash:before { 217 | content: "\e93f"; 218 | } 219 | .ac-v-line-dotted:before { 220 | content: "\e940"; 221 | } 222 | .ac-check:before { 223 | content: "\e941"; 224 | } 225 | .ac-remove:before { 226 | content: "\e942"; 227 | } 228 | .ac-check-thin:before { 229 | content: "\e943"; 230 | } 231 | .ac-fill:before { 232 | content: "\e944"; 233 | } 234 | .ac-remove2-thin:before { 235 | content: "\e945"; 236 | } 237 | .ac-check-circle-o:before { 238 | content: "\e946"; 239 | } 240 | .ac-remove-circle:before { 241 | content: "\e947"; 242 | } 243 | .ac-chevron-circle-left:before { 244 | content: "\e948"; 245 | } 246 | .ac-chevron-circle-right:before { 247 | content: "\e949"; 248 | } 249 | .ac-chevron-circle-up:before { 250 | content: "\e94a"; 251 | } 252 | .ac-chevron-circle-down:before { 253 | content: "\e94b"; 254 | } 255 | .ac-bookmark:before { 256 | content: "\e94c"; 257 | } 258 | .ac-mobile-phone:before { 259 | content: "\e94d"; 260 | } 261 | .ac-chevron-up:before { 262 | content: "\e94e"; 263 | } 264 | .ac-chevron-down:before { 265 | content: "\e94f"; 266 | } 267 | .ac-download-picture:before { 268 | content: "\e950"; 269 | } 270 | .ac-download-chart:before { 271 | content: "\e951"; 272 | } 273 | .ac-chevron-up-thick:before { 274 | content: "\e952"; 275 | } 276 | .ac-chevron-down-thick:before { 277 | content: "\e953"; 278 | } 279 | .ac-tint:before { 280 | content: "\e954"; 281 | } 282 | .ac-position-top:before { 283 | content: "\e955"; 284 | } 285 | .ac-arrow-up:before { 286 | content: "\e956"; 287 | } 288 | .ac-arrow-down:before { 289 | content: "\e957"; 290 | } 291 | .ac-arrow-up-left-square:before { 292 | content: "\e958"; 293 | } 294 | .ac-position-bottom:before { 295 | content: "\e959"; 296 | } 297 | .ac-arrow-up-right-square:before { 298 | content: "\e95a"; 299 | } 300 | .ac-arrow-right-square:before { 301 | content: "\e95b"; 302 | } 303 | .ac-arrow-down-right-square:before { 304 | content: "\e95c"; 305 | } 306 | .ac-remove-thin:before { 307 | content: "\e95d"; 308 | } 309 | .ac-arrow-down-left-square:before { 310 | content: "\e95e"; 311 | } 312 | .ac-arrow-left-square:before { 313 | content: "\e95f"; 314 | } 315 | .ac-chevron-left:before { 316 | content: "\e960"; 317 | } 318 | .ac-chevron-right:before { 319 | content: "\e961"; 320 | } 321 | .ac-chevron-left-thick:before { 322 | content: "\e962"; 323 | } 324 | .ac-arrow-right-thin:before { 325 | content: "\e963"; 326 | } 327 | .ac-chevron-right-thick:before { 328 | content: "\e964"; 329 | } 330 | .ac-arrow-left:before { 331 | content: "\e965"; 332 | } 333 | .ac-arrow-right:before { 334 | content: "\e966"; 335 | } 336 | .ac-arrow-left-thin:before { 337 | content: "\e967"; 338 | } 339 | .ac-arrow-up-square:before { 340 | content: "\e968"; 341 | } 342 | .ac-arrow-down-square:before { 343 | content: "\e969"; 344 | } 345 | .ac-arrow-up-left-thin:before { 346 | content: "\e96a"; 347 | } 348 | .ac-arrow-up-thin:before { 349 | content: "\e96b"; 350 | } 351 | .ac-share:before { 352 | content: "\e96c"; 353 | } 354 | .ac-arrow-up-right-thin:before { 355 | content: "\e96d"; 356 | } 357 | .ac-pause:before { 358 | content: "\e96e"; 359 | } 360 | .ac-stop:before { 361 | content: "\e96f"; 362 | } 363 | .ac-arrow-down-right-thin:before { 364 | content: "\e970"; 365 | } 366 | .ac-arrow-down-thin:before { 367 | content: "\e971"; 368 | } 369 | .ac-arrow-down-left-thin:before { 370 | content: "\e972"; 371 | } 372 | .ac-undo:before { 373 | content: "\e973"; 374 | } 375 | .ac-redo:before { 376 | content: "\e974"; 377 | } 378 | .ac-forward2:before { 379 | content: "\e975"; 380 | } 381 | .ac-map2-o:before { 382 | content: "\e976"; 383 | } 384 | .ac-reply:before { 385 | content: "\e977"; 386 | } 387 | .ac-play:before { 388 | content: "\e978"; 389 | } 390 | .ac-search2:before { 391 | content: "\e979"; 392 | } 393 | .ac-backward:before { 394 | content: "\e97a"; 395 | } 396 | .ac-forward:before { 397 | content: "\e97b"; 398 | } 399 | .ac-facebook:before { 400 | content: "\e97c"; 401 | } 402 | .ac-underline:before { 403 | content: "\e97d"; 404 | } 405 | .ac-twitter:before { 406 | content: "\e97e"; 407 | } 408 | .ac-code:before { 409 | content: "\e97f"; 410 | } 411 | .ac-sort:before { 412 | content: "\e980"; 413 | } 414 | .ac-sort-asc:before { 415 | content: "\e981"; 416 | } 417 | .ac-sort-desc:before { 418 | content: "\e982"; 419 | } 420 | .ac-html5:before { 421 | content: "\e983"; 422 | } 423 | .ac-font:before { 424 | content: "\e984"; 425 | } 426 | .ac-bold:before { 427 | content: "\e985"; 428 | } 429 | .ac-italic:before { 430 | content: "\e986"; 431 | } 432 | .ac-strikethrough:before { 433 | content: "\e987"; 434 | } 435 | .ac-sort-alpha-asc:before { 436 | content: "\e988"; 437 | } 438 | .ac-info:before { 439 | content: "\e989"; 440 | } 441 | .ac-sort-alpha-desc:before { 442 | content: "\e98a"; 443 | } 444 | .ac-question:before { 445 | content: "\e98b"; 446 | } 447 | .ac-sort-amount-asc:before { 448 | content: "\e98c"; 449 | } 450 | .ac-sort-amount-desc:before { 451 | content: "\e98d"; 452 | } 453 | .ac-chart-ruler:before { 454 | content: "\e98e"; 455 | } 456 | .ac-chart-ruler-pencil:before { 457 | content: "\e98f"; 458 | } 459 | .ac-chart-ruler-pencil2:before { 460 | content: "\e990"; 461 | } 462 | .ac-ruler-paint-brush:before { 463 | content: "\e991"; 464 | } 465 | .ac-universal-access:before { 466 | content: "\e992"; 467 | } 468 | .ac-low-vision:before { 469 | content: "\e993"; 470 | } 471 | .ac-deaf:before { 472 | content: "\e994"; 473 | } 474 | .ac-sort-numeric-asc:before { 475 | content: "\e995"; 476 | } 477 | .ac-sort-numeric-desc:before { 478 | content: "\e996"; 479 | } 480 | .ac-exclamation:before { 481 | content: "\e997"; 482 | } 483 | .ac-keyboard-o:before { 484 | content: "\e998"; 485 | } 486 | .ac-folder-open:before { 487 | content: "\e999"; 488 | } 489 | .ac-clone:before { 490 | content: "\e99a"; 491 | } 492 | .ac-object-group:before { 493 | content: "\e99b"; 494 | } 495 | .ac-object-ungroup:before { 496 | content: "\e99c"; 497 | } 498 | .ac-chart-database-o:before { 499 | content: "\e99d"; 500 | } 501 | .ac-chart-database-o2:before { 502 | content: "\e99e"; 503 | } 504 | .ac-trash-o:before { 505 | content: "\e99f"; 506 | } 507 | .ac-calendar:before { 508 | content: "\e9a0"; 509 | } 510 | .ac-calendar-plus-o:before { 511 | content: "\e9a1"; 512 | } 513 | .ac-file-excel-o:before { 514 | content: "\e9a2"; 515 | } 516 | .ac-triangle-left:before { 517 | content: "\e9a3"; 518 | } 519 | .ac-file-pdf-o:before { 520 | content: "\e9a4"; 521 | } 522 | .ac-star:before { 523 | content: "\e9a5"; 524 | } 525 | .ac-star-half-o:before { 526 | content: "\e9a6"; 527 | } 528 | .ac-star-o:before { 529 | content: "\e9a7"; 530 | } 531 | .ac-file-archive-o:before { 532 | content: "\e9a8"; 533 | } 534 | .ac-file-code-o:before { 535 | content: "\e9a9"; 536 | } 537 | .ac-user-plus:before { 538 | content: "\e9aa"; 539 | } 540 | .ac-caret-left:before { 541 | content: "\e9ab"; 542 | } 543 | .ac-caret-right:before { 544 | content: "\e9ac"; 545 | } 546 | .ac-caret-down:before { 547 | content: "\e9ad"; 548 | } 549 | .ac-caret-up:before { 550 | content: "\e9ae"; 551 | } 552 | .ac-file-text:before { 553 | content: "\e9af"; 554 | } 555 | .ac-align-left:before { 556 | content: "\e9b0"; 557 | } 558 | .ac-align-center:before { 559 | content: "\e9b1"; 560 | } 561 | .ac-align-right:before { 562 | content: "\e9b2"; 563 | } 564 | .ac-align-justify:before { 565 | content: "\e9b3"; 566 | } 567 | .ac-random:before { 568 | content: "\e9b4"; 569 | } 570 | .ac-dot-square-o:before { 571 | content: "\e9b5"; 572 | } 573 | .ac-picture-o:before { 574 | content: "\e9b7"; 575 | } 576 | .ac-chart-area:before { 577 | content: "\e9b8"; 578 | } 579 | .ac-chart-financial:before { 580 | content: "\e9b9"; 581 | } 582 | .ac-chart-column2:before { 583 | content: "\e9ba"; 584 | } 585 | .ac-checkbox-checked:before { 586 | content: "\e9bb"; 587 | } 588 | .ac-head-arrow:before { 589 | content: "\e9bc"; 590 | } 591 | .ac-ellipse-thin:before { 592 | content: "\e9bd"; 593 | } 594 | .ac-cross:before { 595 | content: "\e9be"; 596 | } 597 | .ac-diagonal-cros:before { 598 | content: "\e9bf"; 599 | } 600 | .ac-diamond:before { 601 | content: "\e9c0"; 602 | } 603 | .ac-pentagon:before { 604 | content: "\e9c2"; 605 | } 606 | .ac-square:before { 607 | content: "\e9c3"; 608 | } 609 | .ac-star-1:before { 610 | content: "\e9c4"; 611 | } 612 | .ac-star-2:before { 613 | content: "\e9c5"; 614 | } 615 | .ac-star-3:before { 616 | content: "\e9c6"; 617 | } 618 | .ac-star-5:before { 619 | content: "\e9c8"; 620 | } 621 | .ac-trapezium:before { 622 | content: "\e9c9"; 623 | } 624 | .ac-triangle-down:before { 625 | content: "\e9ca"; 626 | } 627 | .ac-triangle-up:before { 628 | content: "\e9cd"; 629 | } 630 | .ac-h-line-thickness-1:before { 631 | content: "\e9ce"; 632 | } 633 | .ac-h-line-thickness-2:before { 634 | content: "\e9cf"; 635 | } 636 | .ac-h-line-thickness-3:before { 637 | content: "\e9d0"; 638 | } 639 | .ac-h-line-thickness-4:before { 640 | content: "\e9d1"; 641 | } 642 | .ac-h-line-thickness-5:before { 643 | content: "\e9d2"; 644 | } 645 | .ac-h-line-dotted-1:before { 646 | content: "\e9d3"; 647 | } 648 | .ac-h-line-dotted-2:before { 649 | content: "\e9d4"; 650 | } 651 | .ac-h-line-dotted-3:before { 652 | content: "\e9d5"; 653 | } 654 | .ac-h-line-dotted-4:before { 655 | content: "\e9d6"; 656 | } 657 | .ac-h-line-dotted-5:before { 658 | content: "\e9d7"; 659 | } 660 | .ac-h-line-dashed-1:before { 661 | content: "\e9d8"; 662 | } 663 | .ac-h-line-dashed-2:before { 664 | content: "\e9d9"; 665 | } 666 | .ac-h-line-dashed-3:before { 667 | content: "\e9da"; 668 | } 669 | .ac-h-line-dashed-4:before { 670 | content: "\e9db"; 671 | } 672 | .ac-h-line-dashed-5:before { 673 | content: "\e9dc"; 674 | } 675 | .ac-fill-o:before { 676 | content: "\e9de"; 677 | } 678 | .ac-free:before { 679 | content: "\e9df"; 680 | } 681 | .ac-chart-ruler-o:before { 682 | content: "\e9e0"; 683 | } 684 | .ac-download:before { 685 | content: "\e9e2"; 686 | } 687 | .ac-git:before { 688 | content: "\e9e3"; 689 | } 690 | .ac-cog-o:before { 691 | content: "\e9e4"; 692 | } 693 | .ac-asterisk:before { 694 | content: "\e9e5"; 695 | } 696 | .ac-unlock-alt:before { 697 | content: "\e9e6"; 698 | } 699 | .ac-unlock:before { 700 | content: "\e9e7"; 701 | } 702 | .ac-position-center:before { 703 | content: "\e9e8"; 704 | } 705 | .ac-comment:before { 706 | content: "\e9ed"; 707 | } 708 | .ac-refresh:before { 709 | content: "\e9ee"; 710 | } 711 | .ac-cog:before { 712 | content: "\e9f4"; 713 | } 714 | .ac-comment-o:before { 715 | content: "\e9f5"; 716 | } 717 | .ac-comments-o:before { 718 | content: "\e9f6"; 719 | } 720 | .ac-square-double-o:before { 721 | content: "\e9f7"; 722 | } 723 | .ac-rss:before { 724 | content: "\e9fa"; 725 | } 726 | .ac-save:before { 727 | content: "\f0c7"; 728 | } 729 | .ac-pinterest:before { 730 | content: "\f0d2"; 731 | } 732 | .ac-reverse:before { 733 | content: "\f1da"; 734 | } 735 | .ac-net:before { 736 | content: "\f1e0"; 737 | } 738 | .ac-mouse-pointer:before { 739 | content: "\f245"; 740 | } 741 | .ac-rectangle-1:before { 742 | content: "\e9cc"; 743 | } 744 | .ac-bullhorn2:before { 745 | content: "\f0a1"; 746 | } 747 | .ac-group:before { 748 | content: "\f0c0"; 749 | } 750 | .ac-light-bulb:before { 751 | content: "\f0eb"; 752 | } 753 | .ac-bullhorn:before { 754 | content: "\e9b6"; 755 | } 756 | .ac-users:before { 757 | content: "\e9c1"; 758 | } 759 | .ac-user-tie:before { 760 | content: "\e9c7"; 761 | } 762 | .ac-clipboard:before { 763 | content: "\e9cb"; 764 | } 765 | .ac-question1:before { 766 | content: "\ea09"; 767 | } 768 | .ac-info1:before { 769 | content: "\ea0c"; 770 | } 771 | 772 | -------------------------------------------------------------------------------- /vendor/anychart/fonts/anychart.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/vendor/anychart/fonts/anychart.eot -------------------------------------------------------------------------------- /vendor/anychart/fonts/anychart.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/vendor/anychart/fonts/anychart.ttf -------------------------------------------------------------------------------- /vendor/anychart/fonts/anychart.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnyChart/AnyChart-Ember/4d0c17e2508e25b21dd28f1dd0eef03e9c600b2b/vendor/anychart/fonts/anychart.woff --------------------------------------------------------------------------------