├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── angular.json
├── e2e
├── protractor.conf.js
└── tsconfig.e2e.json
├── package-lock.json
├── package.json
├── resources
└── screenshot.png
├── src
├── app
│ ├── 01_line_chart
│ │ ├── line-chart.component.css
│ │ ├── line-chart.component.html
│ │ └── line-chart.component.ts
│ ├── 02_multi_series_line_chart
│ │ ├── multi-series.component.css
│ │ ├── multi-series.component.html
│ │ └── multi-series.component.ts
│ ├── 03_bar_chart
│ │ ├── bar-chart.component.css
│ │ ├── bar-chart.component.html
│ │ └── bar-chart.component.ts
│ ├── 04_stacked_bar_chart
│ │ ├── stacked-bar-chart.component.css
│ │ ├── stacked-bar-chart.component.html
│ │ └── stacked-bar-chart.component.ts
│ ├── 05_brush_zoom
│ │ ├── brush-zoom.component.css
│ │ ├── brush-zoom.component.html
│ │ └── brush-zoom.component.ts
│ ├── 06_pie_chart
│ │ ├── pie-chart.component.css
│ │ ├── pie-chart.component.html
│ │ └── pie-chart.component.ts
│ ├── 07_donut_chart
│ │ ├── donut-chart.component.css
│ │ ├── donut-chart.component.html
│ │ └── donut-chart.component.ts
│ ├── app.component.css
│ ├── app.component.html
│ ├── app.component.ts
│ ├── app.module.ts
│ └── shared
│ │ ├── data04.ts
│ │ ├── index.ts
│ │ ├── population.ts
│ │ ├── sp500.ts
│ │ ├── statistics.ts
│ │ ├── stocks.ts
│ │ └── temperatures.ts
├── assets
│ └── .gitkeep
├── browserslist
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── karma.conf.js
├── main.ts
├── polyfills.ts
├── styles.css
├── test.ts
├── tsconfig.app.json
├── tsconfig.spec.json
└── tslint.json
├── tsconfig.json
└── tslint.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 4
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # IDEs and editors
12 | /.idea
13 | .project
14 | .classpath
15 | .c9/
16 | *.launch
17 | .settings/
18 | *.sublime-workspace
19 |
20 | # IDE - VSCode
21 | .vscode/*
22 | !.vscode/settings.json
23 | !.vscode/tasks.json
24 | !.vscode/launch.json
25 | !.vscode/extensions.json
26 |
27 | # misc
28 | /.sass-cache
29 | /connect.lock
30 | /coverage
31 | /libpeerconnection.log
32 | npm-debug.log
33 | yarn-error.log
34 | testem.log
35 | /typings
36 |
37 | # System Files
38 | .DS_Store
39 | Thumbs.db
40 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 David Atencia
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # D3.js with Angular Examples
2 |
3 | This project shows how to integrate D3.js with Angular.
4 |
5 | > It was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8.
6 |
7 | We'll implement a few D3.js examples described in [bl.ocks.org](http://bl.ocks.org/)
8 | in Angular.
9 |
10 | 
11 |
12 | ## Examples Summary
13 |
14 | - [Line Chart 4.0](http://bl.ocks.org/mbostock/02d893e3486c70c4475f)
15 | - [Multi-Series Line Chart](http://bl.ocks.org/mbostock/3884955)
16 | - [Bar Chart](http://bl.ocks.org/mbostock/3885304)
17 | - [Stacked Bar Chart](https://bl.ocks.org/mbostock/3886208)
18 | - [Brush & Zoom](https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172)
19 | - [Pie Chart](http://bl.ocks.org/mbostock/3887235)
20 | - [Donut Chart](https://bl.ocks.org/mbostock/3887193)
21 |
22 | ## Prerequisites
23 |
24 | To follow these examples you need to install [Node.js and npm](https://nodejs.org/en/) if they are not already installed on your computer.
25 |
26 | > Verify that you are running at least node v6.x.x and npm 3.x.x by running node -v and npm -v in a terminal / console window. Older versions may produce errors.
27 |
28 | ## Steps
29 |
30 | - Clone this repo into a new project folder.
31 |
32 | ```bash
33 | $ git clone https://github.com/datencia/d3js-angular-examples.git
34 | $ cd d3js-angular-examples
35 | ```
36 |
37 | - Install the npm packages described in the `package.json`:
38 |
39 | ```bash
40 | $ npm install
41 | ```
42 |
43 | - Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`.
44 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "d3js-angular-example": {
7 | "root": "",
8 | "sourceRoot": "src",
9 | "projectType": "application",
10 | "prefix": "app",
11 | "schematics": {},
12 | "architect": {
13 | "build": {
14 | "builder": "@angular-devkit/build-angular:browser",
15 | "options": {
16 | "outputPath": "dist/d3js-angular-example",
17 | "index": "src/index.html",
18 | "main": "src/main.ts",
19 | "polyfills": "src/polyfills.ts",
20 | "tsConfig": "src/tsconfig.app.json",
21 | "assets": [
22 | "src/favicon.ico",
23 | "src/assets"
24 | ],
25 | "styles": [
26 | "src/styles.css"
27 | ],
28 | "scripts": []
29 | },
30 | "configurations": {
31 | "production": {
32 | "fileReplacements": [
33 | {
34 | "replace": "src/environments/environment.ts",
35 | "with": "src/environments/environment.prod.ts"
36 | }
37 | ],
38 | "optimization": true,
39 | "outputHashing": "all",
40 | "sourceMap": false,
41 | "extractCss": true,
42 | "namedChunks": false,
43 | "aot": true,
44 | "extractLicenses": true,
45 | "vendorChunk": false,
46 | "buildOptimizer": true
47 | }
48 | }
49 | },
50 | "serve": {
51 | "builder": "@angular-devkit/build-angular:dev-server",
52 | "options": {
53 | "browserTarget": "d3js-angular-example:build"
54 | },
55 | "configurations": {
56 | "production": {
57 | "browserTarget": "d3js-angular-example:build:production"
58 | }
59 | }
60 | },
61 | "extract-i18n": {
62 | "builder": "@angular-devkit/build-angular:extract-i18n",
63 | "options": {
64 | "browserTarget": "d3js-angular-example:build"
65 | }
66 | },
67 | "test": {
68 | "builder": "@angular-devkit/build-angular:karma",
69 | "options": {
70 | "main": "src/test.ts",
71 | "polyfills": "src/polyfills.ts",
72 | "tsConfig": "src/tsconfig.spec.json",
73 | "karmaConfig": "src/karma.conf.js",
74 | "styles": [
75 | "src/styles.css"
76 | ],
77 | "scripts": [],
78 | "assets": [
79 | "src/favicon.ico",
80 | "src/assets"
81 | ]
82 | }
83 | },
84 | "lint": {
85 | "builder": "@angular-devkit/build-angular:tslint",
86 | "options": {
87 | "tsConfig": [
88 | "src/tsconfig.app.json",
89 | "src/tsconfig.spec.json"
90 | ],
91 | "exclude": [
92 | "**/node_modules/**"
93 | ]
94 | }
95 | }
96 | }
97 | },
98 | "d3js-angular-example-e2e": {
99 | "root": "e2e/",
100 | "projectType": "application",
101 | "architect": {
102 | "e2e": {
103 | "builder": "@angular-devkit/build-angular:protractor",
104 | "options": {
105 | "protractorConfig": "e2e/protractor.conf.js",
106 | "devServerTarget": "d3js-angular-example:serve"
107 | },
108 | "configurations": {
109 | "production": {
110 | "devServerTarget": "d3js-angular-example:serve:production"
111 | }
112 | }
113 | },
114 | "lint": {
115 | "builder": "@angular-devkit/build-angular:tslint",
116 | "options": {
117 | "tsConfig": "e2e/tsconfig.e2e.json",
118 | "exclude": [
119 | "**/node_modules/**"
120 | ]
121 | }
122 | }
123 | }
124 | }
125 | },
126 | "defaultProject": "d3js-angular-example"
127 | }
128 |
--------------------------------------------------------------------------------
/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // Protractor configuration file, see link for more information
2 | // https://github.com/angular/protractor/blob/master/lib/config.ts
3 |
4 | const { SpecReporter } = require('jasmine-spec-reporter');
5 |
6 | exports.config = {
7 | allScriptsTimeout: 11000,
8 | specs: [
9 | './src/**/*.e2e-spec.ts'
10 | ],
11 | capabilities: {
12 | 'browserName': 'chrome'
13 | },
14 | directConnect: true,
15 | baseUrl: 'http://localhost:4200/',
16 | framework: 'jasmine',
17 | jasmineNodeOpts: {
18 | showColors: true,
19 | defaultTimeoutInterval: 30000,
20 | print: function() {}
21 | },
22 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
29 |
--------------------------------------------------------------------------------
/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "d3js-angular-example",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve",
7 | "build": "ng build",
8 | "test": "ng test",
9 | "lint": "ng lint",
10 | "e2e": "ng e2e"
11 | },
12 | "private": true,
13 | "dependencies": {
14 | "@angular/animations": "6.0.3",
15 | "@angular/cdk": "6.2.1",
16 | "@angular/common": "6.0.3",
17 | "@angular/compiler": "6.0.3",
18 | "@angular/core": "6.0.3",
19 | "@angular/forms": "6.0.3",
20 | "@angular/http": "6.0.3",
21 | "@angular/material": "6.2.1",
22 | "@angular/platform-browser": "6.0.3",
23 | "@angular/platform-browser-dynamic": "6.0.3",
24 | "@angular/router": "6.0.3",
25 | "core-js": "2.5.4",
26 | "d3": "5.4.0",
27 | "rxjs": "6.0.0",
28 | "zone.js": "0.8.26"
29 | },
30 | "devDependencies": {
31 | "@angular-devkit/build-angular": "0.6.8",
32 | "@angular/cli": "6.0.8",
33 | "@angular/compiler-cli": "6.0.3",
34 | "@angular/language-service": "6.0.3",
35 | "@types/d3-array": "1.2.1",
36 | "@types/d3-axis": "1.0.10",
37 | "@types/d3-brush": "1.0.8",
38 | "@types/d3-color": "1.2.1",
39 | "@types/d3-scale": "2.0.1",
40 | "@types/d3-scale-chromatic": "1.2.0",
41 | "@types/d3-selection": "1.3.1",
42 | "@types/d3-shape": "1.2.3",
43 | "@types/d3-time-format": "2.1.0",
44 | "@types/d3-zoom": "1.7.1",
45 | "@types/jasmine": "2.8.6",
46 | "@types/jasminewd2": "2.0.3",
47 | "@types/node": "8.9.4",
48 | "codelyzer": "4.2.1",
49 | "jasmine-core": "2.99.1",
50 | "jasmine-spec-reporter": "4.2.1",
51 | "karma": "1.7.1",
52 | "karma-chrome-launcher": "2.2.0",
53 | "karma-coverage-istanbul-reporter": "2.0.0",
54 | "karma-jasmine": "1.1.1",
55 | "karma-jasmine-html-reporter": "0.2.2",
56 | "protractor": "5.3.0",
57 | "ts-node": "5.0.1",
58 | "tslint": "5.9.1",
59 | "typescript": "2.7.2"
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/resources/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datencia/d3js-angular-examples/15fb9bfac99246a8f8985f8e464fc1bebeb3823d/resources/screenshot.png
--------------------------------------------------------------------------------
/src/app/01_line_chart/line-chart.component.css:
--------------------------------------------------------------------------------
1 | .axis {
2 | font: 10px sans-serif;
3 | }
4 |
5 | .axis path,
6 | .axis line {
7 | fill: none;
8 | stroke: #000;
9 | shape-rendering: crispEdges;
10 | }
11 |
12 | .axis-title {
13 | fill: none;
14 | stroke: black;
15 | stroke-width: 0.5px;
16 | }
17 |
18 |
19 | .axis--x path {
20 | /*display: none;*/
21 | }
22 |
23 | .line {
24 | fill: none;
25 | stroke: steelblue;
26 | stroke-width: 1.5px;
27 | }
28 |
--------------------------------------------------------------------------------
/src/app/01_line_chart/line-chart.component.html:
--------------------------------------------------------------------------------
1 |
{{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/01_line_chart/line-chart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3Shape from 'd3-shape';
6 | import * as d3Array from 'd3-array';
7 | import * as d3Axis from 'd3-axis';
8 |
9 | import { STOCKS } from '../shared';
10 |
11 | @Component({
12 | selector: 'app-line-chart',
13 | encapsulation: ViewEncapsulation.None,
14 | templateUrl: './line-chart.component.html',
15 | styleUrls: ['./line-chart.component.css']
16 | })
17 | export class LineChartComponent implements OnInit {
18 |
19 | title = 'Line Chart';
20 |
21 | private margin = {top: 20, right: 20, bottom: 30, left: 50};
22 | private width: number;
23 | private height: number;
24 | private x: any;
25 | private y: any;
26 | private svg: any;
27 | private line: d3Shape.Line<[number, number]>;
28 |
29 | constructor() {
30 | this.width = 900 - this.margin.left - this.margin.right;
31 | this.height = 500 - this.margin.top - this.margin.bottom;
32 | }
33 |
34 | ngOnInit() {
35 | this.initSvg();
36 | this.initAxis();
37 | this.drawAxis();
38 | this.drawLine();
39 | }
40 |
41 | private initSvg() {
42 | this.svg = d3.select('svg')
43 | .append('g')
44 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
45 | }
46 |
47 | private initAxis() {
48 | this.x = d3Scale.scaleTime().range([0, this.width]);
49 | this.y = d3Scale.scaleLinear().range([this.height, 0]);
50 | this.x.domain(d3Array.extent(STOCKS, (d) => d.date ));
51 | this.y.domain(d3Array.extent(STOCKS, (d) => d.value ));
52 | }
53 |
54 | private drawAxis() {
55 |
56 | this.svg.append('g')
57 | .attr('class', 'axis axis--x')
58 | .attr('transform', 'translate(0,' + this.height + ')')
59 | .call(d3Axis.axisBottom(this.x));
60 |
61 | this.svg.append('g')
62 | .attr('class', 'axis axis--y')
63 | .call(d3Axis.axisLeft(this.y))
64 | .append('text')
65 | .attr('class', 'axis-title')
66 | .attr('transform', 'rotate(-90)')
67 | .attr('y', 6)
68 | .attr('dy', '.71em')
69 | .style('text-anchor', 'end')
70 | .text('Price ($)');
71 | }
72 |
73 | private drawLine() {
74 | this.line = d3Shape.line()
75 | .x( (d: any) => this.x(d.date) )
76 | .y( (d: any) => this.y(d.value) );
77 |
78 | this.svg.append('path')
79 | .datum(STOCKS)
80 | .attr('class', 'line')
81 | .attr('d', this.line);
82 | }
83 |
84 | }
85 |
--------------------------------------------------------------------------------
/src/app/02_multi_series_line_chart/multi-series.component.css:
--------------------------------------------------------------------------------
1 | .axis--x path {
2 | //display: none;
3 | }
4 |
5 | .line {
6 | fill: none;
7 | stroke: steelblue;
8 | stroke-width: 1.5px;
9 | }
10 |
--------------------------------------------------------------------------------
/src/app/02_multi_series_line_chart/multi-series.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/02_multi_series_line_chart/multi-series.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3ScaleChromatic from 'd3-scale-chromatic';
6 | import * as d3Shape from 'd3-shape';
7 | import * as d3Array from 'd3-array';
8 | import * as d3Axis from 'd3-axis';
9 |
10 | import { TEMPERATURES } from '../shared';
11 |
12 | @Component({
13 | selector: 'app-multi-series-line-chart',
14 | encapsulation: ViewEncapsulation.None,
15 | templateUrl: './multi-series.component.html',
16 | styleUrls: ['./multi-series.component.css']
17 | })
18 | export class MultiSeriesComponent implements OnInit {
19 |
20 | title = 'Multi-Series Line Chart';
21 |
22 | data: any;
23 |
24 | svg: any;
25 | margin = {top: 20, right: 80, bottom: 30, left: 50};
26 | g: any;
27 | width: number;
28 | height: number;
29 | x;
30 | y;
31 | z;
32 | line;
33 |
34 | constructor() {
35 |
36 | }
37 |
38 | ngOnInit() {
39 |
40 | this.data = TEMPERATURES.map((v) => v.values.map((v) => v.date ))[0];
41 | //.reduce((a, b) => a.concat(b), []);
42 |
43 | this.initChart();
44 | this.drawAxis();
45 | this.drawPath();
46 | }
47 |
48 | private initChart(): void {
49 | this.svg = d3.select('svg');
50 |
51 | this.width = this.svg.attr('width') - this.margin.left - this.margin.right;
52 | this.height = this.svg.attr('height') - this.margin.top - this.margin.bottom;
53 |
54 | this.g = this.svg.append('g').attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
55 |
56 | this.x = d3Scale.scaleTime().range([0, this.width]);
57 | this.y = d3Scale.scaleLinear().range([this.height, 0]);
58 | this.z = d3Scale.scaleOrdinal(d3ScaleChromatic.schemeCategory10);
59 |
60 | this.line = d3Shape.line()
61 | .curve(d3Shape.curveBasis)
62 | .x( (d: any) => this.x(d.date) )
63 | .y( (d: any) => this.y(d.temperature) );
64 |
65 | this.x.domain(d3Array.extent(this.data, (d: Date) => d ));
66 |
67 | this.y.domain([
68 | d3Array.min(TEMPERATURES, function(c) { return d3Array.min(c.values, function(d) { return d.temperature; }); }),
69 | d3Array.max(TEMPERATURES, function(c) { return d3Array.max(c.values, function(d) { return d.temperature; }); })
70 | ]);
71 |
72 | this.z.domain(TEMPERATURES.map(function(c) { return c.id; }));
73 | }
74 |
75 | private drawAxis(): void {
76 | this.g.append('g')
77 | .attr('class', 'axis axis--x')
78 | .attr('transform', 'translate(0,' + this.height + ')')
79 | .call(d3Axis.axisBottom(this.x));
80 |
81 | this.g.append('g')
82 | .attr('class', 'axis axis--y')
83 | .call(d3Axis.axisLeft(this.y))
84 | .append('text')
85 | .attr('transform', 'rotate(-90)')
86 | .attr('y', 6)
87 | .attr('dy', '0.71em')
88 | .attr('fill', '#000')
89 | .text('Temperature, ºF');
90 | }
91 |
92 | private drawPath(): void {
93 | let city = this.g.selectAll('.city')
94 | .data(TEMPERATURES)
95 | .enter().append('g')
96 | .attr('class', 'city');
97 |
98 | city.append('path')
99 | .attr('class', 'line')
100 | .attr('d', (d) => this.line(d.values) )
101 | .style('stroke', (d) => this.z(d.id) );
102 |
103 | city.append('text')
104 | .datum(function(d) { return {id: d.id, value: d.values[d.values.length - 1]}; })
105 | .attr('transform', (d) => 'translate(' + this.x(d.value.date) + ',' + this.y(d.value.temperature) + ')' )
106 | .attr('x', 3)
107 | .attr('dy', '0.35em')
108 | .style('font', '10px sans-serif')
109 | .text(function(d) { return d.id; });
110 | }
111 |
112 | }
113 |
--------------------------------------------------------------------------------
/src/app/03_bar_chart/bar-chart.component.css:
--------------------------------------------------------------------------------
1 | .bar {
2 | fill: steelblue;
3 | }
4 |
5 | .bar:hover {
6 | fill: brown;
7 | }
8 |
9 | .axis-title {
10 | fill: none;
11 | stroke: black;
12 | stroke-width: 0.5px;
13 | }
14 |
--------------------------------------------------------------------------------
/src/app/03_bar_chart/bar-chart.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/03_bar_chart/bar-chart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3Array from 'd3-array';
6 | import * as d3Axis from 'd3-axis';
7 |
8 | import { STATISTICS } from '../shared';
9 |
10 | @Component({
11 | selector: 'app-bar-chart',
12 | encapsulation: ViewEncapsulation.None,
13 | templateUrl: './bar-chart.component.html',
14 | styleUrls: ['./bar-chart.component.css']
15 | })
16 | export class BarChartComponent implements OnInit {
17 |
18 | title = 'Bar Chart';
19 |
20 | private width: number;
21 | private height: number;
22 | private margin = {top: 20, right: 20, bottom: 30, left: 40};
23 |
24 | private x: any;
25 | private y: any;
26 | private svg: any;
27 | private g: any;
28 |
29 | constructor() {}
30 |
31 | ngOnInit() {
32 | this.initSvg();
33 | this.initAxis();
34 | this.drawAxis();
35 | this.drawBars();
36 | }
37 |
38 | private initSvg() {
39 | this.svg = d3.select('svg');
40 | this.width = +this.svg.attr('width') - this.margin.left - this.margin.right;
41 | this.height = +this.svg.attr('height') - this.margin.top - this.margin.bottom;
42 | this.g = this.svg.append('g')
43 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
44 | }
45 |
46 | private initAxis() {
47 | this.x = d3Scale.scaleBand().rangeRound([0, this.width]).padding(0.1);
48 | this.y = d3Scale.scaleLinear().rangeRound([this.height, 0]);
49 | this.x.domain(STATISTICS.map((d) => d.letter));
50 | this.y.domain([0, d3Array.max(STATISTICS, (d) => d.frequency)]);
51 | }
52 |
53 | private drawAxis() {
54 | this.g.append('g')
55 | .attr('class', 'axis axis--x')
56 | .attr('transform', 'translate(0,' + this.height + ')')
57 | .call(d3Axis.axisBottom(this.x));
58 | this.g.append('g')
59 | .attr('class', 'axis axis--y')
60 | .call(d3Axis.axisLeft(this.y).ticks(10, '%'))
61 | .append('text')
62 | .attr('class', 'axis-title')
63 | .attr('transform', 'rotate(-90)')
64 | .attr('y', 6)
65 | .attr('dy', '0.71em')
66 | .attr('text-anchor', 'end')
67 | .text('Frequency');
68 | }
69 |
70 | private drawBars() {
71 | this.g.selectAll('.bar')
72 | .data(STATISTICS)
73 | .enter().append('rect')
74 | .attr('class', 'bar')
75 | .attr('x', (d) => this.x(d.letter) )
76 | .attr('y', (d) => this.y(d.frequency) )
77 | .attr('width', this.x.bandwidth())
78 | .attr('height', (d) => this.height - this.y(d.frequency) );
79 | }
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/src/app/04_stacked_bar_chart/stacked-bar-chart.component.css:
--------------------------------------------------------------------------------
1 | .axis .domain {
2 | display: none;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/04_stacked_bar_chart/stacked-bar-chart.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/04_stacked_bar_chart/stacked-bar-chart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3Shape from 'd3-shape';
6 | import * as d3Axis from 'd3-axis';
7 | import * as d3Array from 'd3-array';
8 |
9 | import { SAMPLE_DATA } from '../shared/data04';
10 |
11 | export interface Margin {
12 | top: number;
13 | right: number;
14 | bottom: number;
15 | left: number;
16 | }
17 |
18 | @Component({
19 | selector: 'app-stacked-bar-chart',
20 | encapsulation: ViewEncapsulation.None,
21 | templateUrl: './stacked-bar-chart.component.html',
22 | styleUrls: ['./stacked-bar-chart.component.css']
23 | })
24 | export class StackedBarChartComponent implements OnInit {
25 |
26 | title = 'Stacked Bar Chart';
27 |
28 | private margin: Margin;
29 |
30 | private width: number;
31 | private height: number;
32 |
33 | private svg: any; // TODO replace all `any` by the right type
34 |
35 | private x: any;
36 | private y: any;
37 | private z: any;
38 | private g: any;
39 |
40 | constructor() {}
41 |
42 | ngOnInit() {
43 | this.initMargins();
44 | this.initSvg();
45 | this.drawChart(SAMPLE_DATA);
46 | }
47 |
48 | private initMargins() {
49 | this.margin = {top: 20, right: 20, bottom: 30, left: 40};
50 | }
51 |
52 | private initSvg() {
53 | this.svg = d3.select('svg');
54 |
55 | this.width = +this.svg.attr('width') - this.margin.left - this.margin.right;
56 | this.height = +this.svg.attr('height') - this.margin.top - this.margin.bottom;
57 | this.g = this.svg.append('g').attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
58 |
59 | this.x = d3Scale.scaleBand()
60 | .rangeRound([0, this.width])
61 | .paddingInner(0.05)
62 | .align(0.1);
63 | this.y = d3Scale.scaleLinear()
64 | .rangeRound([this.height, 0]);
65 | this.z = d3Scale.scaleOrdinal()
66 | .range(['#98abc5', '#8a89a6', '#7b6888', '#6b486b', '#a05d56', '#d0743c', '#ff8c00']);
67 | }
68 |
69 | private drawChart(data: any[]) {
70 |
71 | let keys = Object.getOwnPropertyNames(data[0]).slice(1);
72 |
73 | data = data.map(v => {
74 | v.total = keys.map(key => v[key]).reduce((a, b) => a + b, 0);
75 | return v;
76 | });
77 | data.sort((a: any, b: any) => b.total - a.total);
78 |
79 | this.x.domain(data.map((d: any) => d.State));
80 | this.y.domain([0, d3Array.max(data, (d: any) => d.total)]).nice();
81 | this.z.domain(keys);
82 |
83 | this.g.append('g')
84 | .selectAll('g')
85 | .data(d3Shape.stack().keys(keys)(data))
86 | .enter().append('g')
87 | .attr('fill', d => this.z(d.key))
88 | .selectAll('rect')
89 | .data(d => d)
90 | .enter().append('rect')
91 | .attr('x', d => this.x(d.data.State))
92 | .attr('y', d => this.y(d[1]))
93 | .attr('height', d => this.y(d[0]) - this.y(d[1]))
94 | .attr('width', this.x.bandwidth());
95 |
96 | this.g.append('g')
97 | .attr('class', 'axis')
98 | .attr('transform', 'translate(0,' + this.height + ')')
99 | .call(d3Axis.axisBottom(this.x));
100 |
101 | this.g.append('g')
102 | .attr('class', 'axis')
103 | .call(d3Axis.axisLeft(this.y).ticks(null, 's'))
104 | .append('text')
105 | .attr('x', 2)
106 | .attr('y', this.y(this.y.ticks().pop()) + 0.5)
107 | .attr('dy', '0.32em')
108 | .attr('fill', '#000')
109 | .attr('font-weight', 'bold')
110 | .attr('text-anchor', 'start')
111 | .text('Population');
112 |
113 | let legend = this.g.append('g')
114 | .attr('font-family', 'sans-serif')
115 | .attr('font-size', 10)
116 | .attr('text-anchor', 'end')
117 | .selectAll('g')
118 | .data(keys.slice().reverse())
119 | .enter().append('g')
120 | .attr('transform', (d, i) => 'translate(0,' + i * 20 + ')');
121 |
122 | legend.append('rect')
123 | .attr('x', this.width - 19)
124 | .attr('width', 19)
125 | .attr('height', 19)
126 | .attr('fill', this.z);
127 |
128 | legend.append('text')
129 | .attr('x', this.width - 24)
130 | .attr('y', 9.5)
131 | .attr('dy', '0.32em')
132 | .text(d => d);
133 | }
134 |
135 | }
136 |
--------------------------------------------------------------------------------
/src/app/05_brush_zoom/brush-zoom.component.css:
--------------------------------------------------------------------------------
1 | .area {
2 | fill: steelblue;
3 | clip-path: url(#clip);
4 | }
5 |
6 | .zoom {
7 | cursor: move;
8 | fill: none;
9 | pointer-events: all;
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/05_brush_zoom/brush-zoom.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/05_brush_zoom/brush-zoom.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3Shape from 'd3-shape';
6 | import * as d3Axis from 'd3-axis';
7 | import * as d3Zoom from 'd3-zoom';
8 | import * as d3Brush from 'd3-brush';
9 | import * as d3Array from 'd3-array';
10 | import * as d3TimeFormat from 'd3-time-format';
11 |
12 | import { SP500 } from '../shared';
13 |
14 | export interface Margin {
15 | top: number;
16 | right: number;
17 | bottom: number;
18 | left: number;
19 | }
20 |
21 | interface Stock {
22 | date: Date;
23 | price: number;
24 | }
25 |
26 | @Component({
27 | selector: 'app-brush-zoom',
28 | encapsulation: ViewEncapsulation.None,
29 | templateUrl: './brush-zoom.component.html',
30 | styleUrls: ['./brush-zoom.component.css']
31 | })
32 | export class BrushZoomComponent implements OnInit {
33 |
34 | title = 'Brush & Zoom';
35 |
36 | private margin: Margin;
37 | private margin2: Margin;
38 |
39 | private width: number;
40 | private height: number;
41 | private height2: number;
42 |
43 | private svg: any; // TODO replace all `any` by the right type
44 |
45 | private x: any;
46 | private x2: any;
47 | private y: any;
48 | private y2: any;
49 |
50 | private xAxis: any;
51 | private xAxis2: any;
52 | private yAxis: any;
53 |
54 | private context: any;
55 | private brush: any;
56 | private zoom: any;
57 | private area: any;
58 | private area2: any;
59 | private focus: any;
60 |
61 | private parseDate = d3TimeFormat.timeParse('%b %Y');
62 |
63 | constructor() {
64 | }
65 |
66 | ngOnInit() {
67 | this.initMargins();
68 | this.initSvg();
69 | this.drawChart(this.parseData(SP500));
70 | }
71 |
72 | private initMargins() {
73 | this.margin = {top: 20, right: 20, bottom: 110, left: 40};
74 | this.margin2 = {top: 430, right: 20, bottom: 30, left: 40};
75 | }
76 |
77 | private parseData(data: any[]): Stock[] {
78 | return data.map(v => {date: this.parseDate(v.date), price: v.price});
79 | }
80 |
81 | private initSvg() {
82 | this.svg = d3.select('svg');
83 |
84 | this.width = +this.svg.attr('width') - this.margin.left - this.margin.right;
85 | this.height = +this.svg.attr('height') - this.margin.top - this.margin.bottom;
86 | this.height2 = +this.svg.attr('height') - this.margin2.top - this.margin2.bottom;
87 |
88 | this.x = d3Scale.scaleTime().range([0, this.width]);
89 | this.x2 = d3Scale.scaleTime().range([0, this.width]);
90 | this.y = d3Scale.scaleLinear().range([this.height, 0]);
91 | this.y2 = d3Scale.scaleLinear().range([this.height2, 0]);
92 |
93 | this.xAxis = d3Axis.axisBottom(this.x);
94 | this.xAxis2 = d3Axis.axisBottom(this.x2);
95 | this.yAxis = d3Axis.axisLeft(this.y);
96 |
97 | this.brush = d3Brush.brushX()
98 | .extent([[0, 0], [this.width, this.height2]])
99 | .on('brush end', this.brushed.bind(this));
100 |
101 | this.zoom = d3Zoom.zoom()
102 | .scaleExtent([1, Infinity])
103 | .translateExtent([[0, 0], [this.width, this.height]])
104 | .extent([[0, 0], [this.width, this.height]])
105 | .on('zoom', this.zoomed.bind(this));
106 |
107 | this.area = d3Shape.area()
108 | .curve(d3Shape.curveMonotoneX)
109 | .x((d: any) => this.x(d.date))
110 | .y0(this.height)
111 | .y1((d: any) => this.y(d.price));
112 |
113 | this.area2 = d3Shape.area()
114 | .curve(d3Shape.curveMonotoneX)
115 | .x((d: any) => this.x2(d.date))
116 | .y0(this.height2)
117 | .y1((d: any) => this.y2(d.price));
118 |
119 | this.svg.append('defs').append('clipPath')
120 | .attr('id', 'clip')
121 | .append('rect')
122 | .attr('width', this.width)
123 | .attr('height', this.height);
124 |
125 | this.focus = this.svg.append('g')
126 | .attr('class', 'focus')
127 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
128 |
129 | this.context = this.svg.append('g')
130 | .attr('class', 'context')
131 | .attr('transform', 'translate(' + this.margin2.left + ',' + this.margin2.top + ')');
132 | }
133 |
134 | private brushed() {
135 | if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'zoom') return; // ignore brush-by-zoom
136 | let s = d3.event.selection || this.x2.range();
137 | this.x.domain(s.map(this.x2.invert, this.x2));
138 | this.focus.select('.area').attr('d', this.area);
139 | this.focus.select('.axis--x').call(this.xAxis);
140 | this.svg.select('.zoom').call(this.zoom.transform, d3Zoom.zoomIdentity
141 | .scale(this.width / (s[1] - s[0]))
142 | .translate(-s[0], 0));
143 | }
144 |
145 | private zoomed() {
146 | if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'brush') return; // ignore zoom-by-brush
147 | let t = d3.event.transform;
148 | this.x.domain(t.rescaleX(this.x2).domain());
149 | this.focus.select('.area').attr('d', this.area);
150 | this.focus.select('.axis--x').call(this.xAxis);
151 | this.context.select('.brush').call(this.brush.move, this.x.range().map(t.invertX, t));
152 | }
153 |
154 | private drawChart(data: Stock[]) {
155 |
156 | this.x.domain(d3Array.extent(data, (d: Stock) => d.date));
157 | this.y.domain([0, d3Array.max(data, (d: Stock) => d.price)]);
158 | this.x2.domain(this.x.domain());
159 | this.y2.domain(this.y.domain());
160 |
161 | this.focus.append('path')
162 | .datum(data)
163 | .attr('class', 'area')
164 | .attr('d', this.area);
165 |
166 | this.focus.append('g')
167 | .attr('class', 'axis axis--x')
168 | .attr('transform', 'translate(0,' + this.height + ')')
169 | .call(this.xAxis);
170 |
171 | this.focus.append('g')
172 | .attr('class', 'axis axis--y')
173 | .call(this.yAxis);
174 |
175 | this.context.append('path')
176 | .datum(data)
177 | .attr('class', 'area')
178 | .attr('d', this.area2);
179 |
180 | this.context.append('g')
181 | .attr('class', 'axis axis--x')
182 | .attr('transform', 'translate(0,' + this.height2 + ')')
183 | .call(this.xAxis2);
184 |
185 | this.context.append('g')
186 | .attr('class', 'brush')
187 | .call(this.brush)
188 | .call(this.brush.move, this.x.range());
189 |
190 | this.svg.append('rect')
191 | .attr('class', 'zoom')
192 | .attr('width', this.width)
193 | .attr('height', this.height)
194 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')')
195 | .call(this.zoom);
196 | }
197 |
198 | }
199 |
--------------------------------------------------------------------------------
/src/app/06_pie_chart/pie-chart.component.css:
--------------------------------------------------------------------------------
1 | .arc text {
2 | font: 10px sans-serif;
3 | text-anchor: middle;
4 | }
5 |
6 | .arc path {
7 | stroke: #fff;
8 | }
9 |
--------------------------------------------------------------------------------
/src/app/06_pie_chart/pie-chart.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/06_pie_chart/pie-chart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3Shape from 'd3-shape';
6 |
7 | import { POPULATION } from '../shared';
8 |
9 | @Component({
10 | selector: 'app-pie-chart',
11 | encapsulation: ViewEncapsulation.None,
12 | templateUrl: './pie-chart.component.html',
13 | styleUrls: ['./pie-chart.component.css']
14 | })
15 | export class PieChartComponent implements OnInit {
16 |
17 | title = 'Pie Chart';
18 |
19 | private margin = {top: 20, right: 20, bottom: 30, left: 50};
20 | private width: number;
21 | private height: number;
22 | private radius: number;
23 |
24 | private arc: any;
25 | private labelArc: any;
26 | private pie: any;
27 | private color: any;
28 | private svg: any;
29 |
30 | constructor() {
31 | this.width = 900 - this.margin.left - this.margin.right;
32 | this.height = 500 - this.margin.top - this.margin.bottom;
33 | this.radius = Math.min(this.width, this.height) / 2;
34 | }
35 |
36 | ngOnInit() {
37 | this.initSvg();
38 | this.drawPie();
39 | }
40 |
41 | private initSvg() {
42 | this.color = d3Scale.scaleOrdinal()
43 | .range(['#98abc5', '#8a89a6', '#7b6888', '#6b486b', '#a05d56', '#d0743c', '#ff8c00']);
44 | this.arc = d3Shape.arc()
45 | .outerRadius(this.radius - 10)
46 | .innerRadius(0);
47 | this.labelArc = d3Shape.arc()
48 | .outerRadius(this.radius - 40)
49 | .innerRadius(this.radius - 40);
50 | this.pie = d3Shape.pie()
51 | .sort(null)
52 | .value((d: any) => d.population);
53 | this.svg = d3.select('svg')
54 | .append('g')
55 | .attr('transform', 'translate(' + this.width / 2 + ',' + this.height / 2 + ')');
56 | }
57 |
58 | private drawPie() {
59 | let g = this.svg.selectAll('.arc')
60 | .data(this.pie(POPULATION))
61 | .enter().append('g')
62 | .attr('class', 'arc');
63 | g.append('path').attr('d', this.arc)
64 | .style('fill', (d: any) => this.color(d.data.age) );
65 | g.append('text').attr('transform', (d: any) => 'translate(' + this.labelArc.centroid(d) + ')')
66 | .attr('dy', '.35em')
67 | .text((d: any) => d.data.age);
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/src/app/07_donut_chart/donut-chart.component.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | .arc text {
4 | font: 10px sans-serif;
5 | text-anchor: middle;
6 | }
7 |
8 | .arc path {
9 | stroke: #fff;
10 | }
--------------------------------------------------------------------------------
/src/app/07_donut_chart/donut-chart.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 |
--------------------------------------------------------------------------------
/src/app/07_donut_chart/donut-chart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core';
2 |
3 | import * as d3 from 'd3-selection';
4 | import * as d3Scale from 'd3-scale';
5 | import * as d3Shape from 'd3-shape';
6 |
7 | import { POPULATION } from '../shared';
8 |
9 | @Component({
10 | selector: 'app-donut-chart',
11 | encapsulation: ViewEncapsulation.None,
12 | templateUrl: './donut-chart.component.html',
13 | styleUrls: ['./donut-chart.component.css']
14 | })
15 | export class DonutChartComponent implements OnInit {
16 |
17 | title = 'Donut Chart';
18 |
19 | private width: number;
20 | private height: number;
21 |
22 | private svg: any; // TODO replace all `any` by the right type
23 |
24 | private radius: number;
25 |
26 | private arc: any;
27 | private pie: any;
28 | private color: any;
29 |
30 | private g: any;
31 |
32 | constructor() {}
33 |
34 | ngOnInit() {
35 | this.initSvg();
36 | this.drawChart(POPULATION);
37 | }
38 |
39 | private initSvg() {
40 | this.svg = d3.select('svg');
41 |
42 | this.width = +this.svg.attr('width');
43 | this.height = +this.svg.attr('height');
44 | this.radius = Math.min(this.width, this.height) / 2;
45 |
46 | this.color = d3Scale.scaleOrdinal()
47 | .range(['#98abc5', '#8a89a6', '#7b6888', '#6b486b', '#a05d56', '#d0743c', '#ff8c00']);
48 |
49 | this.arc = d3Shape.arc()
50 | .outerRadius(this.radius - 10)
51 | .innerRadius(this.radius - 70);
52 |
53 | this.pie = d3Shape.pie()
54 | .sort(null)
55 | .value((d: any) => d.population);
56 |
57 | this.svg = d3.select('svg')
58 | .append('g')
59 | .attr('transform', 'translate(' + this.width / 2 + ',' + this.height / 2 + ')');
60 | }
61 |
62 | private drawChart(data: any[]) {
63 | let g = this.svg.selectAll('.arc')
64 | .data(this.pie(data))
65 | .enter().append('g')
66 | .attr('class', 'arc');
67 |
68 | g.append('path')
69 | .attr('d', this.arc)
70 | .style('fill', d => this.color(d.data.age));
71 |
72 | g.append('text')
73 | .attr('transform', d => 'translate(' + this.arc.centroid(d) + ')')
74 | .attr('dy', '.35em')
75 | .text(d => d.data.age);
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | h1 {
2 | text-align:center
3 | }
4 |
5 | mat-drawer-content {
6 | padding: 20px;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ item.title }}
5 |
6 |
7 | {{ title }}
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-root',
5 | templateUrl: './app.component.html',
6 | styleUrls: ['./app.component.css']
7 | })
8 | export class AppComponent {
9 | title = 'D3.js with Angular!';
10 |
11 | examples = [
12 | {
13 | title: 'Line Chart',
14 | route: '/line-chart'
15 | },
16 | {
17 | title: 'Multi Series Line Chart',
18 | route: '/multi-series'
19 | },
20 | {
21 | title: 'Bar Chart',
22 | route: '/bar-chart'
23 | },
24 | {
25 | title: 'Stacked Bar Chart',
26 | route: '/stacked-bar-chart'
27 | },
28 | {
29 | title: 'Brush Zoom',
30 | route: '/brush-zoom'
31 | },
32 | {
33 | title: 'Pie Chart',
34 | route: '/pie-chart'
35 | },
36 | {
37 | title: 'Donut chart',
38 | route: '/donut-chart'
39 | },
40 | ];
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
3 | import { NgModule } from '@angular/core';
4 | import { RouterModule, Routes } from '@angular/router';
5 |
6 | import { MatMenuModule, MatSidenavModule } from '@angular/material';
7 |
8 | import { AppComponent } from './app.component';
9 | import { LineChartComponent } from './01_line_chart/line-chart.component';
10 | import { MultiSeriesComponent } from './02_multi_series_line_chart/multi-series.component';
11 | import { BarChartComponent } from './03_bar_chart/bar-chart.component';
12 | import { StackedBarChartComponent } from './04_stacked_bar_chart/stacked-bar-chart.component';
13 | import { BrushZoomComponent } from './05_brush_zoom/brush-zoom.component';
14 | import { PieChartComponent } from './06_pie_chart/pie-chart.component';
15 | import { DonutChartComponent } from './07_donut_chart/donut-chart.component';
16 |
17 | const appRoutes: Routes = [
18 | { path: 'line-chart', component: LineChartComponent },
19 | { path: 'multi-series', component: MultiSeriesComponent },
20 | { path: 'bar-chart', component: BarChartComponent },
21 | { path: 'stacked-bar-chart', component: StackedBarChartComponent },
22 | { path: 'brush-zoom', component: BrushZoomComponent },
23 | { path: 'pie-chart', component: PieChartComponent },
24 | { path: 'donut-chart', component: DonutChartComponent },
25 | { path: '',
26 | redirectTo: '/line-chart',
27 | pathMatch: 'full'
28 | },
29 | { path: '**', component: LineChartComponent }
30 | ];
31 |
32 | @NgModule({
33 | declarations: [
34 | AppComponent,
35 | LineChartComponent,
36 | MultiSeriesComponent,
37 | BarChartComponent,
38 | StackedBarChartComponent,
39 | BrushZoomComponent,
40 | PieChartComponent,
41 | DonutChartComponent,
42 | ],
43 | imports: [
44 | BrowserModule,
45 | BrowserAnimationsModule,
46 | RouterModule.forRoot(appRoutes),
47 | MatMenuModule,
48 | MatSidenavModule,
49 | ],
50 | providers: [],
51 | bootstrap: [AppComponent]
52 | })
53 | export class AppModule { }
54 |
--------------------------------------------------------------------------------
/src/app/shared/data04.ts:
--------------------------------------------------------------------------------
1 | export const SAMPLE_DATA: any[] = [
2 | {State: 'AL', 'Under 5 Years': 310504, '5 to 13 Years': 552339, '14 to 17 Years': 259034, '18 to 24 Years': 450818, '25 to 44 Years': 1231572, '45 to 64 Years': 1215966, '65 Years and Over': 641667},
3 | {State: 'AK', 'Under 5 Years': 52083, '5 to 13 Years': 85640, '14 to 17 Years': 42153, '18 to 24 Years': 74257, '25 to 44 Years': 198724, '45 to 64 Years': 183159, '65 Years and Over': 50277},
4 | {State: 'AZ', 'Under 5 Years': 515910, '5 to 13 Years': 828669, '14 to 17 Years': 362642, '18 to 24 Years': 601943, '25 to 44 Years': 1804762, '45 to 64 Years': 1523681, '65 Years and Over': 862573},
5 | {State: 'AR', 'Under 5 Years': 202070, '5 to 13 Years': 343207, '14 to 17 Years': 157204, '18 to 24 Years': 264160, '25 to 44 Years': 754420, '45 to 64 Years': 727124, '65 Years and Over': 407205},
6 | {State: 'CA', 'Under 5 Years': 2704659, '5 to 13 Years': 4499890, '14 to 17 Years': 2159981, '18 to 24 Years': 3853788, '25 to 44 Years': 10604510, '45 to 64 Years': 8819342, '65 Years and Over': 4114496},
7 | {State: 'CO', 'Under 5 Years': 358280, '5 to 13 Years': 587154, '14 to 17 Years': 261701, '18 to 24 Years': 466194, '25 to 44 Years': 1464939, '45 to 64 Years': 1290094, '65 Years and Over': 511094},
8 | {State: 'CT', 'Under 5 Years': 211637, '5 to 13 Years': 403658, '14 to 17 Years': 196918, '18 to 24 Years': 325110, '25 to 44 Years': 916955, '45 to 64 Years': 968967, '65 Years and Over': 478007},
9 | {State: 'DE', 'Under 5 Years': 59319, '5 to 13 Years': 99496, '14 to 17 Years': 47414, '18 to 24 Years': 84464, '25 to 44 Years': 230183, '45 to 64 Years': 230528, '65 Years and Over': 121688},
10 | {State: 'DC', 'Under 5 Years': 36352, '5 to 13 Years': 50439, '14 to 17 Years': 25225, '18 to 24 Years': 75569, '25 to 44 Years': 193557, '45 to 64 Years': 140043, '65 Years and Over': 70648},
11 | {State: 'FL', 'Under 5 Years': 1140516, '5 to 13 Years': 1938695, '14 to 17 Years': 925060, '18 to 24 Years': 1607297, '25 to 44 Years': 4782119, '45 to 64 Years': 4746856, '65 Years and Over': 3187797},
12 | {State: 'GA', 'Under 5 Years': 740521, '5 to 13 Years': 1250460, '14 to 17 Years': 557860, '18 to 24 Years': 919876, '25 to 44 Years': 2846985, '45 to 64 Years': 2389018, '65 Years and Over': 981024},
13 | {State: 'HI', 'Under 5 Years': 87207, '5 to 13 Years': 134025, '14 to 17 Years': 64011, '18 to 24 Years': 124834, '25 to 44 Years': 356237, '45 to 64 Years': 331817, '65 Years and Over': 190067},
14 | {State: 'ID', 'Under 5 Years': 121746, '5 to 13 Years': 201192, '14 to 17 Years': 89702, '18 to 24 Years': 147606, '25 to 44 Years': 406247, '45 to 64 Years': 375173, '65 Years and Over': 182150},
15 | {State: 'IL', 'Under 5 Years': 894368, '5 to 13 Years': 1558919, '14 to 17 Years': 725973, '18 to 24 Years': 1311479, '25 to 44 Years': 3596343, '45 to 64 Years': 3239173, '65 Years and Over': 1575308},
16 | {State: 'IN', 'Under 5 Years': 443089, '5 to 13 Years': 780199, '14 to 17 Years': 361393, '18 to 24 Years': 605863, '25 to 44 Years': 1724528, '45 to 64 Years': 1647881, '65 Years and Over': 813839},
17 | {State: 'IA', 'Under 5 Years': 201321, '5 to 13 Years': 345409, '14 to 17 Years': 165883, '18 to 24 Years': 306398, '25 to 44 Years': 750505, '45 to 64 Years': 788485, '65 Years and Over': 444554},
18 | {State: 'KS', 'Under 5 Years': 202529, '5 to 13 Years': 342134, '14 to 17 Years': 155822, '18 to 24 Years': 293114, '25 to 44 Years': 728166, '45 to 64 Years': 713663, '65 Years and Over': 366706},
19 | {State: 'KY', 'Under 5 Years': 284601, '5 to 13 Years': 493536, '14 to 17 Years': 229927, '18 to 24 Years': 381394, '25 to 44 Years': 1179637, '45 to 64 Years': 1134283, '65 Years and Over': 565867},
20 | {State: 'LA', 'Under 5 Years': 310716, '5 to 13 Years': 542341, '14 to 17 Years': 254916, '18 to 24 Years': 471275, '25 to 44 Years': 1162463, '45 to 64 Years': 1128771, '65 Years and Over': 540314},
21 | {State: 'ME', 'Under 5 Years': 71459, '5 to 13 Years': 133656, '14 to 17 Years': 69752, '18 to 24 Years': 112682, '25 to 44 Years': 331809, '45 to 64 Years': 397911, '65 Years and Over': 199187},
22 | {State: 'MD', 'Under 5 Years': 371787, '5 to 13 Years': 651923, '14 to 17 Years': 316873, '18 to 24 Years': 543470, '25 to 44 Years': 1556225, '45 to 64 Years': 1513754, '65 Years and Over': 679565},
23 | {State: 'MA', 'Under 5 Years': 383568, '5 to 13 Years': 701752, '14 to 17 Years': 341713, '18 to 24 Years': 665879, '25 to 44 Years': 1782449, '45 to 64 Years': 1751508, '65 Years and Over': 871098},
24 | {State: 'MI', 'Under 5 Years': 625526, '5 to 13 Years': 1179503, '14 to 17 Years': 585169, '18 to 24 Years': 974480, '25 to 44 Years': 2628322, '45 to 64 Years': 2706100, '65 Years and Over': 1304322},
25 | {State: 'MN', 'Under 5 Years': 358471, '5 to 13 Years': 606802, '14 to 17 Years': 289371, '18 to 24 Years': 507289, '25 to 44 Years': 1416063, '45 to 64 Years': 1391878, '65 Years and Over': 650519},
26 | {State: 'MS', 'Under 5 Years': 220813, '5 to 13 Years': 371502, '14 to 17 Years': 174405, '18 to 24 Years': 305964, '25 to 44 Years': 764203, '45 to 64 Years': 730133, '65 Years and Over': 371598},
27 | {State: 'MO', 'Under 5 Years': 399450, '5 to 13 Years': 690476, '14 to 17 Years': 331543, '18 to 24 Years': 560463, '25 to 44 Years': 1569626, '45 to 64 Years': 1554812, '65 Years and Over': 805235},
28 | {State: 'MT', 'Under 5 Years': 61114, '5 to 13 Years': 106088, '14 to 17 Years': 53156, '18 to 24 Years': 95232, '25 to 44 Years': 236297, '45 to 64 Years': 278241, '65 Years and Over': 137312},
29 | {State: 'NE', 'Under 5 Years': 132092, '5 to 13 Years': 215265, '14 to 17 Years': 99638, '18 to 24 Years': 186657, '25 to 44 Years': 457177, '45 to 64 Years': 451756, '65 Years and Over': 240847},
30 | {State: 'NV', 'Under 5 Years': 199175, '5 to 13 Years': 325650, '14 to 17 Years': 142976, '18 to 24 Years': 212379, '25 to 44 Years': 769913, '45 to 64 Years': 653357, '65 Years and Over': 296717},
31 | {State: 'NH', 'Under 5 Years': 75297, '5 to 13 Years': 144235, '14 to 17 Years': 73826, '18 to 24 Years': 119114, '25 to 44 Years': 345109, '45 to 64 Years': 388250, '65 Years and Over': 169978},
32 | {State: 'NJ', 'Under 5 Years': 557421, '5 to 13 Years': 1011656, '14 to 17 Years': 478505, '18 to 24 Years': 769321, '25 to 44 Years': 2379649, '45 to 64 Years': 2335168, '65 Years and Over': 1150941},
33 | {State: 'NM', 'Under 5 Years': 148323, '5 to 13 Years': 241326, '14 to 17 Years': 112801, '18 to 24 Years': 203097, '25 to 44 Years': 517154, '45 to 64 Years': 501604, '65 Years and Over': 260051},
34 | {State: 'NY', 'Under 5 Years': 1208495, '5 to 13 Years': 2141490, '14 to 17 Years': 1058031, '18 to 24 Years': 1999120, '25 to 44 Years': 5355235, '45 to 64 Years': 5120254, '65 Years and Over': 2607672},
35 | {State: 'NC', 'Under 5 Years': 652823, '5 to 13 Years': 1097890, '14 to 17 Years': 492964, '18 to 24 Years': 883397, '25 to 44 Years': 2575603, '45 to 64 Years': 2380685, '65 Years and Over': 1139052},
36 | {State: 'ND', 'Under 5 Years': 41896, '5 to 13 Years': 67358, '14 to 17 Years': 33794, '18 to 24 Years': 82629, '25 to 44 Years': 154913, '45 to 64 Years': 166615, '65 Years and Over': 94276},
37 | {State: 'OH', 'Under 5 Years': 743750, '5 to 13 Years': 1340492, '14 to 17 Years': 646135, '18 to 24 Years': 1081734, '25 to 44 Years': 3019147, '45 to 64 Years': 3083815, '65 Years and Over': 1570837},
38 | {State: 'OK', 'Under 5 Years': 266547, '5 to 13 Years': 438926, '14 to 17 Years': 200562, '18 to 24 Years': 369916, '25 to 44 Years': 957085, '45 to 64 Years': 918688, '65 Years and Over': 490637},
39 | {State: 'OR', 'Under 5 Years': 243483, '5 to 13 Years': 424167, '14 to 17 Years': 199925, '18 to 24 Years': 338162, '25 to 44 Years': 1044056, '45 to 64 Years': 1036269, '65 Years and Over': 503998},
40 | {State: 'PA', 'Under 5 Years': 737462, '5 to 13 Years': 1345341, '14 to 17 Years': 679201, '18 to 24 Years': 1203944, '25 to 44 Years': 3157759, '45 to 64 Years': 3414001, '65 Years and Over': 1910571},
41 | {State: 'RI', 'Under 5 Years': 60934, '5 to 13 Years': 111408, '14 to 17 Years': 56198, '18 to 24 Years': 114502, '25 to 44 Years': 277779, '45 to 64 Years': 282321, '65 Years and Over': 147646},
42 | {State: 'SC', 'Under 5 Years': 303024, '5 to 13 Years': 517803, '14 to 17 Years': 245400, '18 to 24 Years': 438147, '25 to 44 Years': 1193112, '45 to 64 Years': 1186019, '65 Years and Over': 596295},
43 | {State: 'SD', 'Under 5 Years': 58566, '5 to 13 Years': 94438, '14 to 17 Years': 45305, '18 to 24 Years': 82869, '25 to 44 Years': 196738, '45 to 64 Years': 210178, '65 Years and Over': 116100},
44 | {State: 'TN', 'Under 5 Years': 416334, '5 to 13 Years': 725948, '14 to 17 Years': 336312, '18 to 24 Years': 550612, '25 to 44 Years': 1719433, '45 to 64 Years': 1646623, '65 Years and Over': 819626},
45 | {State: 'TX', 'Under 5 Years': 2027307, '5 to 13 Years': 3277946, '14 to 17 Years': 1420518, '18 to 24 Years': 2454721, '25 to 44 Years': 7017731, '45 to 64 Years': 5656528, '65 Years and Over': 2472223},
46 | {State: 'UT', 'Under 5 Years': 268916, '5 to 13 Years': 413034, '14 to 17 Years': 167685, '18 to 24 Years': 329585, '25 to 44 Years': 772024, '45 to 64 Years': 538978, '65 Years and Over': 246202},
47 | {State: 'VT', 'Under 5 Years': 32635, '5 to 13 Years': 62538, '14 to 17 Years': 33757, '18 to 24 Years': 61679, '25 to 44 Years': 155419, '45 to 64 Years': 188593, '65 Years and Over': 86649},
48 | {State: 'VA', 'Under 5 Years': 522672, '5 to 13 Years': 887525, '14 to 17 Years': 413004, '18 to 24 Years': 768475, '25 to 44 Years': 2203286, '45 to 64 Years': 2033550, '65 Years and Over': 940577},
49 | {State: 'WA', 'Under 5 Years': 433119, '5 to 13 Years': 750274, '14 to 17 Years': 357782, '18 to 24 Years': 610378, '25 to 44 Years': 1850983, '45 to 64 Years': 1762811, '65 Years and Over': 783877},
50 | {State: 'WV', 'Under 5 Years': 105435, '5 to 13 Years': 189649, '14 to 17 Years': 91074, '18 to 24 Years': 157989, '25 to 44 Years': 470749, '45 to 64 Years': 514505, '65 Years and Over': 285067},
51 | {State: 'WI', 'Under 5 Years': 362277, '5 to 13 Years': 640286, '14 to 17 Years': 311849, '18 to 24 Years': 553914, '25 to 44 Years': 1487457, '45 to 64 Years': 1522038, '65 Years and Over': 750146},
52 | {State: 'WY', 'Under 5 Years': 38253, '5 to 13 Years': 60890, '14 to 17 Years': 29314, '18 to 24 Years': 53980, '25 to 44 Years': 137338, '45 to 64 Years': 147279, '65 Years and Over': 65614}
53 | ];
54 |
--------------------------------------------------------------------------------
/src/app/shared/index.ts:
--------------------------------------------------------------------------------
1 | export * from './stocks';
2 | export * from './temperatures';
3 | export * from './statistics';
4 | export * from './data04';
5 | export * from './sp500';
6 | export * from './population';
7 |
--------------------------------------------------------------------------------
/src/app/shared/population.ts:
--------------------------------------------------------------------------------
1 | export const POPULATION: any[] = [
2 | {age: '<5', population: 2704659},
3 | {age: '5-13', population: 4499890},
4 | {age: '14-17', population: 2159981},
5 | {age: '18-24', population: 3853788},
6 | {age: '25-44', population: 14106543},
7 | {age: '45-64', population: 8819342},
8 | {age: '≥65', population: 612463}
9 | ];
10 |
--------------------------------------------------------------------------------
/src/app/shared/sp500.ts:
--------------------------------------------------------------------------------
1 | export const SP500: any[] = [
2 | {date: 'Jan 2000', price: 1394.46},
3 | {date: 'Feb 2000', price: 1366.42},
4 | {date: 'Mar 2000', price: 1498.58},
5 | {date: 'Apr 2000', price: 1452.43},
6 | {date: 'May 2000', price: 1420.6},
7 | {date: 'Jun 2000', price: 1454.6},
8 | {date: 'Jul 2000', price: 1430.83},
9 | {date: 'Aug 2000', price: 1517.68},
10 | {date: 'Sep 2000', price: 1436.51},
11 | {date: 'Oct 2000', price: 1429.4},
12 | {date: 'Nov 2000', price: 1314.95},
13 | {date: 'Dec 2000', price: 1320.28},
14 | {date: 'Jan 2001', price: 1366.01},
15 | {date: 'Feb 2001', price: 1239.94},
16 | {date: 'Mar 2001', price: 1160.33},
17 | {date: 'Apr 2001', price: 1249.46},
18 | {date: 'May 2001', price: 1255.82},
19 | {date: 'Jun 2001', price: 1224.38},
20 | {date: 'Jul 2001', price: 1211.23},
21 | {date: 'Aug 2001', price: 1133.58},
22 | {date: 'Sep 2001', price: 1040.94},
23 | {date: 'Oct 2001', price: 1059.78},
24 | {date: 'Nov 2001', price: 1139.45},
25 | {date: 'Dec 2001', price: 1148.08},
26 | {date: 'Jan 2002', price: 1130.2},
27 | {date: 'Feb 2002', price: 1106.73},
28 | {date: 'Mar 2002', price: 1147.39},
29 | {date: 'Apr 2002', price: 1076.92},
30 | {date: 'May 2002', price: 1067.14},
31 | {date: 'Jun 2002', price: 989.82},
32 | {date: 'Jul 2002', price: 911.62},
33 | {date: 'Aug 2002', price: 916.07},
34 | {date: 'Sep 2002', price: 815.28},
35 | {date: 'Oct 2002', price: 885.76},
36 | {date: 'Nov 2002', price: 936.31},
37 | {date: 'Dec 2002', price: 879.82},
38 | {date: 'Jan 2003', price: 855.7},
39 | {date: 'Feb 2003', price: 841.15},
40 | {date: 'Mar 2003', price: 848.18},
41 | {date: 'Apr 2003', price: 916.92},
42 | {date: 'May 2003', price: 963.59},
43 | {date: 'Jun 2003', price: 974.5},
44 | {date: 'Jul 2003', price: 990.31},
45 | {date: 'Aug 2003', price: 1008.01},
46 | {date: 'Sep 2003', price: 995.97},
47 | {date: 'Oct 2003', price: 1050.71},
48 | {date: 'Nov 2003', price: 1058.2},
49 | {date: 'Dec 2003', price: 1111.92},
50 | {date: 'Jan 2004', price: 1131.13},
51 | {date: 'Feb 2004', price: 1144.94},
52 | {date: 'Mar 2004', price: 1126.21},
53 | {date: 'Apr 2004', price: 1107.3},
54 | {date: 'May 2004', price: 1120.68},
55 | {date: 'Jun 2004', price: 1140.84},
56 | {date: 'Jul 2004', price: 1101.72},
57 | {date: 'Aug 2004', price: 1104.24},
58 | {date: 'Sep 2004', price: 1114.58},
59 | {date: 'Oct 2004', price: 1130.2},
60 | {date: 'Nov 2004', price: 1173.82},
61 | {date: 'Dec 2004', price: 1211.92},
62 | {date: 'Jan 2005', price: 1181.27},
63 | {date: 'Feb 2005', price: 1203.6},
64 | {date: 'Mar 2005', price: 1180.59},
65 | {date: 'Apr 2005', price: 1156.85},
66 | {date: 'May 2005', price: 1191.5},
67 | {date: 'Jun 2005', price: 1191.33},
68 | {date: 'Jul 2005', price: 1234.18},
69 | {date: 'Aug 2005', price: 1220.33},
70 | {date: 'Sep 2005', price: 1228.81},
71 | {date: 'Oct 2005', price: 1207.01},
72 | {date: 'Nov 2005', price: 1249.48},
73 | {date: 'Dec 2005', price: 1248.29},
74 | {date: 'Jan 2006', price: 1280.08},
75 | {date: 'Feb 2006', price: 1280.66},
76 | {date: 'Mar 2006', price: 1294.87},
77 | {date: 'Apr 2006', price: 1310.61},
78 | {date: 'May 2006', price: 1270.09},
79 | {date: 'Jun 2006', price: 1270.2},
80 | {date: 'Jul 2006', price: 1276.66},
81 | {date: 'Aug 2006', price: 1303.82},
82 | {date: 'Sep 2006', price: 1335.85},
83 | {date: 'Oct 2006', price: 1377.94},
84 | {date: 'Nov 2006', price: 1400.63},
85 | {date: 'Dec 2006', price: 1418.3},
86 | {date: 'Jan 2007', price: 1438.24},
87 | {date: 'Feb 2007', price: 1406.82},
88 | {date: 'Mar 2007', price: 1420.86},
89 | {date: 'Apr 2007', price: 1482.37},
90 | {date: 'May 2007', price: 1530.62},
91 | {date: 'Jun 2007', price: 1503.35},
92 | {date: 'Jul 2007', price: 1455.27},
93 | {date: 'Aug 2007', price: 1473.99},
94 | {date: 'Sep 2007', price: 1526.75},
95 | {date: 'Oct 2007', price: 1549.38},
96 | {date: 'Nov 2007', price: 1481.14},
97 | {date: 'Dec 2007', price: 1468.36},
98 | {date: 'Jan 2008', price: 1378.55},
99 | {date: 'Feb 2008', price: 1330.63},
100 | {date: 'Mar 2008', price: 1322.7},
101 | {date: 'Apr 2008', price: 1385.59},
102 | {date: 'May 2008', price: 1400.38},
103 | {date: 'Jun 2008', price: 1280},
104 | {date: 'Jul 2008', price: 1267.38},
105 | {date: 'Aug 2008', price: 1282.83},
106 | {date: 'Sep 2008', price: 1166.36},
107 | {date: 'Oct 2008', price: 968.75},
108 | {date: 'Nov 2008', price: 896.24},
109 | {date: 'Dec 2008', price: 903.25},
110 | {date: 'Jan 2009', price: 825.88},
111 | {date: 'Feb 2009', price: 735.09},
112 | {date: 'Mar 2009', price: 797.87},
113 | {date: 'Apr 2009', price: 872.81},
114 | {date: 'May 2009', price: 919.14},
115 | {date: 'Jun 2009', price: 919.32},
116 | {date: 'Jul 2009', price: 987.48},
117 | {date: 'Aug 2009', price: 1020.62},
118 | {date: 'Sep 2009', price: 1057.08},
119 | {date: 'Oct 2009', price: 1036.19},
120 | {date: 'Nov 2009', price: 1095.63},
121 | {date: 'Dec 2009', price: 1115.1},
122 | {date: 'Jan 2010', price: 1073.87},
123 | {date: 'Feb 2010', price: 1104.49},
124 | {date: 'Mar 2010', price: 1140.45}
125 | ];
126 |
--------------------------------------------------------------------------------
/src/app/shared/statistics.ts:
--------------------------------------------------------------------------------
1 | export interface Frequency {
2 | letter: string;
3 | frequency: number;
4 | }
5 |
6 | export const STATISTICS: Frequency[] = [
7 | {letter: 'A', frequency: .08167},
8 | {letter: 'B', frequency: .01492},
9 | {letter: 'C', frequency: .02782},
10 | {letter: 'D', frequency: .04253},
11 | {letter: 'E', frequency: .12702},
12 | {letter: 'F', frequency: .02288},
13 | {letter: 'G', frequency: .02015},
14 | {letter: 'H', frequency: .06094},
15 | {letter: 'I', frequency: .06966},
16 | {letter: 'J', frequency: .00153},
17 | {letter: 'K', frequency: .00772},
18 | {letter: 'L', frequency: .04025},
19 | {letter: 'M', frequency: .02406},
20 | {letter: 'N', frequency: .06749},
21 | {letter: 'O', frequency: .07507},
22 | {letter: 'P', frequency: .01929},
23 | {letter: 'Q', frequency: .00095},
24 | {letter: 'R', frequency: .05987},
25 | {letter: 'S', frequency: .06327},
26 | {letter: 'T', frequency: .09056},
27 | {letter: 'U', frequency: .02758},
28 | {letter: 'V', frequency: .00978},
29 | {letter: 'W', frequency: .02360},
30 | {letter: 'X', frequency: .00150},
31 | {letter: 'Y', frequency: .01974},
32 | {letter: 'Z', frequency: .00074}
33 | ];
34 |
--------------------------------------------------------------------------------
/src/app/shared/stocks.ts:
--------------------------------------------------------------------------------
1 | export interface Stock {
2 | date: Date;
3 | value: number;
4 | }
5 |
6 | export const STOCKS: Stock[] = [
7 | {date: new Date('2010-01-01'), value: 210.73},
8 | {date: new Date('2010-01-04'), value: 214.01},
9 | {date: new Date('2010-01-05'), value: 214.38},
10 | {date: new Date('2010-01-06'), value: 210.97},
11 | {date: new Date('2010-01-07'), value: 210.58},
12 | {date: new Date('2010-01-08'), value: 211.98},
13 | {date: new Date('2010-01-11'), value: 210.11},
14 | {date: new Date('2010-01-12'), value: 207.72},
15 | {date: new Date('2010-01-13'), value: 210.65},
16 | {date: new Date('2010-01-14'), value: 209.43},
17 | {date: new Date('2010-01-15'), value: 205.93},
18 | {date: new Date('2010-01-18'), value: 205.93},
19 | {date: new Date('2010-01-19'), value: 215.04},
20 | {date: new Date('2010-01-20'), value: 211.72},
21 | {date: new Date('2010-01-21'), value: 208.07},
22 | {date: new Date('2010-01-22'), value: 197.75},
23 | {date: new Date('2010-01-25'), value: 203.08},
24 | {date: new Date('2010-01-26'), value: 205.94},
25 | {date: new Date('2010-01-27'), value: 207.88},
26 | {date: new Date('2010-01-28'), value: 199.29},
27 | {date: new Date('2010-01-29'), value: 192.06},
28 | {date: new Date('2010-02-01'), value: 194.73},
29 | {date: new Date('2010-02-02'), value: 195.86},
30 | {date: new Date('2010-02-03'), value: 199.23},
31 | {date: new Date('2010-02-04'), value: 192.05},
32 | {date: new Date('2010-02-05'), value: 195.46},
33 | {date: new Date('2010-02-08'), value: 194.12},
34 | {date: new Date('2010-02-09'), value: 196.19},
35 | {date: new Date('2010-02-10'), value: 195.12},
36 | {date: new Date('2010-02-11'), value: 198.67},
37 | {date: new Date('2010-02-12'), value: 200.38},
38 | {date: new Date('2010-02-15'), value: 200.38},
39 | {date: new Date('2010-02-16'), value: 203.40},
40 | {date: new Date('2010-02-17'), value: 202.55},
41 | {date: new Date('2010-02-18'), value: 202.93},
42 | {date: new Date('2010-02-19'), value: 201.67},
43 | {date: new Date('2010-02-22'), value: 200.42},
44 | {date: new Date('2010-02-23'), value: 197.06},
45 | {date: new Date('2010-02-24'), value: 200.66},
46 | {date: new Date('2010-02-25'), value: 202.00},
47 | {date: new Date('2010-02-26'), value: 204.62},
48 | {date: new Date('2010-03-01'), value: 208.99},
49 | {date: new Date('2010-03-02'), value: 208.85},
50 | {date: new Date('2010-03-03'), value: 209.33},
51 | {date: new Date('2010-03-04'), value: 210.71},
52 | {date: new Date('2010-03-05'), value: 218.95},
53 | {date: new Date('2010-03-08'), value: 219.08},
54 | {date: new Date('2010-03-09'), value: 223.02},
55 | {date: new Date('2010-03-10'), value: 224.84},
56 | {date: new Date('2010-03-11'), value: 225.50},
57 | {date: new Date('2010-03-12'), value: 226.60},
58 | {date: new Date('2010-03-15'), value: 223.84},
59 | {date: new Date('2010-03-16'), value: 224.45},
60 | {date: new Date('2010-03-17'), value: 224.12},
61 | {date: new Date('2010-03-18'), value: 224.65},
62 | {date: new Date('2010-03-19'), value: 222.25},
63 | {date: new Date('2010-03-22'), value: 224.75},
64 | {date: new Date('2010-03-23'), value: 228.36},
65 | {date: new Date('2010-03-24'), value: 229.37},
66 | {date: new Date('2010-03-25'), value: 226.65},
67 | {date: new Date('2010-03-26'), value: 230.90},
68 | {date: new Date('2010-03-29'), value: 232.39},
69 | {date: new Date('2010-03-30'), value: 235.84},
70 | {date: new Date('2010-03-31'), value: 235.00},
71 | {date: new Date('2010-04-01'), value: 235.97},
72 | {date: new Date('2010-04-02'), value: 235.97},
73 | {date: new Date('2010-04-05'), value: 238.49},
74 | {date: new Date('2010-04-06'), value: 239.54},
75 | {date: new Date('2010-04-07'), value: 240.60},
76 | {date: new Date('2010-04-08'), value: 239.95},
77 | {date: new Date('2010-04-09'), value: 241.79},
78 | {date: new Date('2010-04-12'), value: 242.29},
79 | {date: new Date('2010-04-13'), value: 242.43},
80 | {date: new Date('2010-04-14'), value: 245.69},
81 | {date: new Date('2010-04-15'), value: 248.92},
82 | {date: new Date('2010-04-16'), value: 247.40},
83 | {date: new Date('2010-04-19'), value: 247.07},
84 | {date: new Date('2010-04-20'), value: 244.59},
85 | {date: new Date('2010-04-21'), value: 259.22},
86 | {date: new Date('2010-04-22'), value: 266.47},
87 | {date: new Date('2010-04-23'), value: 270.83},
88 | {date: new Date('2010-04-26'), value: 269.50},
89 | {date: new Date('2010-04-27'), value: 262.04},
90 | {date: new Date('2010-04-28'), value: 261.60},
91 | {date: new Date('2010-04-29'), value: 268.64},
92 | {date: new Date('2010-04-30'), value: 261.09},
93 | {date: new Date('2010-05-03'), value: 266.35},
94 | {date: new Date('2010-05-04'), value: 258.68},
95 | {date: new Date('2010-05-05'), value: 255.98},
96 | {date: new Date('2010-05-06'), value: 246.25},
97 | {date: new Date('2010-05-07'), value: 235.86},
98 | {date: new Date('2010-05-10'), value: 253.99},
99 | {date: new Date('2010-05-11'), value: 256.52},
100 | {date: new Date('2010-05-12'), value: 262.09},
101 | {date: new Date('2010-05-13'), value: 258.36},
102 | {date: new Date('2010-05-14'), value: 253.82},
103 | {date: new Date('2010-05-17'), value: 254.22},
104 | {date: new Date('2010-05-18'), value: 252.36},
105 | {date: new Date('2010-05-19'), value: 248.34},
106 | {date: new Date('2010-05-20'), value: 237.76},
107 | {date: new Date('2010-05-21'), value: 242.32},
108 | {date: new Date('2010-05-24'), value: 246.76},
109 | {date: new Date('2010-05-25'), value: 245.22},
110 | {date: new Date('2010-05-26'), value: 244.11},
111 | {date: new Date('2010-05-27'), value: 253.35},
112 | {date: new Date('2010-05-28'), value: 256.88},
113 | {date: new Date('2010-05-31'), value: 256.88},
114 | {date: new Date('2010-06-01'), value: 260.83},
115 | {date: new Date('2010-06-02'), value: 263.95},
116 | {date: new Date('2010-06-03'), value: 263.12},
117 | {date: new Date('2010-06-04'), value: 255.96},
118 | {date: new Date('2010-06-07'), value: 250.94},
119 | {date: new Date('2010-06-08'), value: 249.33},
120 | {date: new Date('2010-06-09'), value: 243.20},
121 | {date: new Date('2010-06-10'), value: 250.51},
122 | {date: new Date('2010-06-11'), value: 253.51},
123 | {date: new Date('2010-06-14'), value: 254.28},
124 | {date: new Date('2010-06-15'), value: 259.69},
125 | {date: new Date('2010-06-16'), value: 267.25},
126 | {date: new Date('2010-06-17'), value: 271.87},
127 | {date: new Date('2010-06-18'), value: 274.07},
128 | {date: new Date('2010-06-21'), value: 270.17},
129 | {date: new Date('2010-06-22'), value: 273.85},
130 | {date: new Date('2010-06-23'), value: 270.97},
131 | {date: new Date('2010-06-24'), value: 269.00},
132 | {date: new Date('2010-06-25'), value: 266.70},
133 | {date: new Date('2010-06-28'), value: 268.30},
134 | {date: new Date('2010-06-29'), value: 256.17},
135 | {date: new Date('2010-06-30'), value: 251.53},
136 | {date: new Date('2010-07-01'), value: 248.48},
137 | {date: new Date('2010-07-02'), value: 246.94},
138 | {date: new Date('2010-07-05'), value: 246.94},
139 | {date: new Date('2010-07-06'), value: 248.63},
140 | {date: new Date('2010-07-07'), value: 258.66},
141 | {date: new Date('2010-07-08'), value: 258.09},
142 | {date: new Date('2010-07-09'), value: 259.62},
143 | {date: new Date('2010-07-12'), value: 257.28},
144 | {date: new Date('2010-07-13'), value: 251.80},
145 | {date: new Date('2010-07-14'), value: 252.73},
146 | {date: new Date('2010-07-15'), value: 251.45},
147 | {date: new Date('2010-07-16'), value: 249.90},
148 | {date: new Date('2010-07-19'), value: 245.58},
149 | {date: new Date('2010-07-20'), value: 251.89},
150 | {date: new Date('2010-07-21'), value: 254.24},
151 | {date: new Date('2010-07-22'), value: 259.02},
152 | {date: new Date('2010-07-23'), value: 259.94},
153 | {date: new Date('2010-07-26'), value: 259.28},
154 | {date: new Date('2010-07-27'), value: 264.08},
155 | {date: new Date('2010-07-28'), value: 260.96},
156 | {date: new Date('2010-07-29'), value: 258.11},
157 | {date: new Date('2010-07-30'), value: 257.25},
158 | {date: new Date('2010-08-02'), value: 261.85},
159 | {date: new Date('2010-08-03'), value: 261.93},
160 | {date: new Date('2010-08-04'), value: 262.98},
161 | {date: new Date('2010-08-05'), value: 261.70},
162 | {date: new Date('2010-08-06'), value: 260.09},
163 | {date: new Date('2010-08-09'), value: 261.75},
164 | {date: new Date('2010-08-10'), value: 259.41},
165 | {date: new Date('2010-08-11'), value: 250.19},
166 | {date: new Date('2010-08-12'), value: 251.79},
167 | {date: new Date('2010-08-13'), value: 249.10},
168 | {date: new Date('2010-08-16'), value: 247.64},
169 | {date: new Date('2010-08-17'), value: 251.97},
170 | {date: new Date('2010-08-18'), value: 253.07},
171 | {date: new Date('2010-08-19'), value: 249.88},
172 | {date: new Date('2010-08-20'), value: 249.64},
173 | {date: new Date('2010-08-23'), value: 245.80},
174 | {date: new Date('2010-08-24'), value: 239.93},
175 | {date: new Date('2010-08-25'), value: 242.89},
176 | {date: new Date('2010-08-26'), value: 240.28},
177 | {date: new Date('2010-08-27'), value: 241.62},
178 | {date: new Date('2010-08-30'), value: 242.50},
179 | {date: new Date('2010-08-31'), value: 243.10},
180 | {date: new Date('2010-09-01'), value: 250.33},
181 | {date: new Date('2010-09-02'), value: 252.17},
182 | {date: new Date('2010-09-03'), value: 258.77},
183 | {date: new Date('2010-09-06'), value: 258.77},
184 | {date: new Date('2010-09-07'), value: 257.81},
185 | {date: new Date('2010-09-08'), value: 262.92},
186 | {date: new Date('2010-09-09'), value: 263.07},
187 | {date: new Date('2010-09-10'), value: 263.41},
188 | {date: new Date('2010-09-13'), value: 267.04},
189 | {date: new Date('2010-09-14'), value: 268.06},
190 | {date: new Date('2010-09-15'), value: 270.22},
191 | {date: new Date('2010-09-16'), value: 276.57},
192 | {date: new Date('2010-09-17'), value: 275.37},
193 | {date: new Date('2010-09-20'), value: 283.23},
194 | {date: new Date('2010-09-21'), value: 283.77},
195 | {date: new Date('2010-09-22'), value: 287.75},
196 | {date: new Date('2010-09-23'), value: 288.92},
197 | {date: new Date('2010-09-24'), value: 292.32},
198 | {date: new Date('2010-09-27'), value: 291.16},
199 | {date: new Date('2010-09-28'), value: 286.86},
200 | {date: new Date('2010-09-29'), value: 287.37},
201 | {date: new Date('2010-09-30'), value: 283.75},
202 | {date: new Date('2010-10-01'), value: 282.52},
203 | {date: new Date('2010-10-04'), value: 278.64},
204 | {date: new Date('2010-10-05'), value: 288.94},
205 | {date: new Date('2010-10-06'), value: 289.19},
206 | {date: new Date('2010-10-07'), value: 289.22},
207 | {date: new Date('2010-10-08'), value: 294.07},
208 | {date: new Date('2010-10-11'), value: 295.36},
209 | {date: new Date('2010-10-12'), value: 298.54},
210 | {date: new Date('2010-10-13'), value: 300.14},
211 | {date: new Date('2010-10-14'), value: 302.31},
212 | {date: new Date('2010-10-15'), value: 314.74},
213 | {date: new Date('2010-10-18'), value: 318.00},
214 | {date: new Date('2010-10-19'), value: 309.49},
215 | {date: new Date('2010-10-20'), value: 310.53},
216 | {date: new Date('2010-10-21'), value: 309.52},
217 | {date: new Date('2010-10-22'), value: 307.47},
218 | {date: new Date('2010-10-25'), value: 308.84},
219 | {date: new Date('2010-10-26'), value: 308.05},
220 | {date: new Date('2010-10-27'), value: 307.83},
221 | {date: new Date('2010-10-28'), value: 305.24},
222 | {date: new Date('2010-10-29'), value: 300.98},
223 | {date: new Date('2010-11-01'), value: 304.18},
224 | {date: new Date('2010-11-02'), value: 309.36},
225 | {date: new Date('2010-11-03'), value: 312.80},
226 | {date: new Date('2010-11-04'), value: 318.27},
227 | {date: new Date('2010-11-05'), value: 317.13},
228 | {date: new Date('2010-11-08'), value: 318.62},
229 | {date: new Date('2010-11-09'), value: 316.08},
230 | {date: new Date('2010-11-10'), value: 318.03},
231 | {date: new Date('2010-11-11'), value: 316.66},
232 | {date: new Date('2010-11-12'), value: 308.03},
233 | {date: new Date('2010-11-15'), value: 307.04},
234 | {date: new Date('2010-11-16'), value: 301.59},
235 | {date: new Date('2010-11-17'), value: 300.50},
236 | {date: new Date('2010-11-18'), value: 308.43},
237 | {date: new Date('2010-11-19'), value: 306.73},
238 | {date: new Date('2010-11-22'), value: 313.36},
239 | {date: new Date('2010-11-23'), value: 308.73},
240 | {date: new Date('2010-11-24'), value: 314.80},
241 | {date: new Date('2010-11-26'), value: 315.00},
242 | {date: new Date('2010-11-29'), value: 316.87},
243 | {date: new Date('2010-11-30'), value: 311.15},
244 | {date: new Date('2010-12-01'), value: 316.40},
245 | {date: new Date('2010-12-02'), value: 318.15},
246 | {date: new Date('2010-12-03'), value: 317.44},
247 | {date: new Date('2010-12-06'), value: 320.15},
248 | {date: new Date('2010-12-07'), value: 318.21},
249 | {date: new Date('2010-12-08'), value: 321.01},
250 | {date: new Date('2010-12-09'), value: 319.76},
251 | {date: new Date('2010-12-10'), value: 320.56},
252 | {date: new Date('2010-12-13'), value: 321.67},
253 | {date: new Date('2010-12-14'), value: 320.29},
254 | {date: new Date('2010-12-15'), value: 320.36},
255 | {date: new Date('2010-12-16'), value: 321.25},
256 | {date: new Date('2010-12-17'), value: 320.61},
257 | {date: new Date('2010-12-20'), value: 322.21},
258 | {date: new Date('2010-12-21'), value: 324.20},
259 | {date: new Date('2010-12-22'), value: 325.16},
260 | {date: new Date('2010-12-23'), value: 323.60},
261 | {date: new Date('2010-12-27'), value: 324.68},
262 | {date: new Date('2010-12-28'), value: 325.47},
263 | {date: new Date('2010-12-29'), value: 325.29},
264 | {date: new Date('2010-12-30'), value: 323.66},
265 | {date: new Date('2010-12-31'), value: 322.56},
266 | {date: new Date('2011-01-03'), value: 329.57},
267 | {date: new Date('2011-01-04'), value: 331.29},
268 | {date: new Date('2011-01-05'), value: 334.00},
269 | {date: new Date('2011-01-06'), value: 333.73},
270 | {date: new Date('2011-01-07'), value: 336.12},
271 | {date: new Date('2011-01-10'), value: 342.46},
272 | {date: new Date('2011-01-11'), value: 341.64},
273 | {date: new Date('2011-01-12'), value: 344.42},
274 | {date: new Date('2011-01-13'), value: 345.68},
275 | {date: new Date('2011-01-14'), value: 348.48},
276 | {date: new Date('2011-01-18'), value: 340.65},
277 | {date: new Date('2011-01-19'), value: 338.84},
278 | {date: new Date('2011-01-20'), value: 332.68},
279 | {date: new Date('2011-01-21'), value: 326.72},
280 | {date: new Date('2011-01-24'), value: 337.45},
281 | {date: new Date('2011-01-25'), value: 341.40},
282 | {date: new Date('2011-01-26'), value: 343.85},
283 | {date: new Date('2011-01-27'), value: 343.21},
284 | {date: new Date('2011-01-28'), value: 336.10},
285 | {date: new Date('2011-01-31'), value: 339.32},
286 | {date: new Date('2011-02-01'), value: 345.03},
287 | {date: new Date('2011-02-02'), value: 344.32},
288 | {date: new Date('2011-02-03'), value: 343.44},
289 | {date: new Date('2011-02-04'), value: 346.50},
290 | {date: new Date('2011-02-07'), value: 351.88},
291 | {date: new Date('2011-02-08'), value: 355.20},
292 | {date: new Date('2011-02-09'), value: 358.16},
293 | {date: new Date('2011-02-10'), value: 354.54},
294 | {date: new Date('2011-02-11'), value: 356.85},
295 | {date: new Date('2011-02-14'), value: 359.18},
296 | {date: new Date('2011-02-15'), value: 359.90},
297 | {date: new Date('2011-02-16'), value: 363.13},
298 | {date: new Date('2011-02-17'), value: 358.30},
299 | {date: new Date('2011-02-18'), value: 350.56},
300 | {date: new Date('2011-02-22'), value: 338.61},
301 | {date: new Date('2011-02-23'), value: 342.62},
302 | {date: new Date('2011-02-24'), value: 342.88},
303 | {date: new Date('2011-02-25'), value: 348.16},
304 | {date: new Date('2011-02-28'), value: 353.21},
305 | {date: new Date('2011-03-01'), value: 349.31},
306 | {date: new Date('2011-03-02'), value: 352.12},
307 | {date: new Date('2011-03-03'), value: 359.56},
308 | {date: new Date('2011-03-04'), value: 360.00},
309 | {date: new Date('2011-03-07'), value: 355.36},
310 | {date: new Date('2011-03-08'), value: 355.76},
311 | {date: new Date('2011-03-09'), value: 352.47},
312 | {date: new Date('2011-03-10'), value: 346.67},
313 | {date: new Date('2011-03-11'), value: 351.99},
314 | {date: new Date('2011-03-14'), value: 353.56},
315 | {date: new Date('2011-03-15'), value: 345.43},
316 | {date: new Date('2011-03-16'), value: 330.01},
317 | {date: new Date('2011-03-17'), value: 334.64},
318 | {date: new Date('2011-03-18'), value: 330.67},
319 | {date: new Date('2011-03-21'), value: 339.30},
320 | {date: new Date('2011-03-22'), value: 341.20},
321 | {date: new Date('2011-03-23'), value: 339.19},
322 | {date: new Date('2011-03-24'), value: 344.97},
323 | {date: new Date('2011-03-25'), value: 351.54},
324 | {date: new Date('2011-03-28'), value: 350.44},
325 | {date: new Date('2011-03-29'), value: 350.96},
326 | {date: new Date('2011-03-30'), value: 348.63},
327 | {date: new Date('2011-03-31'), value: 348.51},
328 | {date: new Date('2011-04-01'), value: 344.56},
329 | {date: new Date('2011-04-04'), value: 341.19},
330 | {date: new Date('2011-04-05'), value: 338.89},
331 | {date: new Date('2011-04-06'), value: 338.04},
332 | {date: new Date('2011-04-07'), value: 338.08},
333 | {date: new Date('2011-04-08'), value: 335.06},
334 | {date: new Date('2011-04-11'), value: 330.80},
335 | {date: new Date('2011-04-12'), value: 332.40},
336 | {date: new Date('2011-04-13'), value: 336.13},
337 | {date: new Date('2011-04-14'), value: 332.42},
338 | {date: new Date('2011-04-15'), value: 327.46},
339 | {date: new Date('2011-04-18'), value: 331.85},
340 | {date: new Date('2011-04-19'), value: 337.86},
341 | {date: new Date('2011-04-20'), value: 342.41},
342 | {date: new Date('2011-04-21'), value: 350.70},
343 | {date: new Date('2011-04-25'), value: 353.01},
344 | {date: new Date('2011-04-26'), value: 350.42},
345 | {date: new Date('2011-04-27'), value: 350.15},
346 | {date: new Date('2011-04-28'), value: 346.75},
347 | {date: new Date('2011-04-29'), value: 350.13},
348 | {date: new Date('2011-05-02'), value: 346.28},
349 | {date: new Date('2011-05-03'), value: 348.20},
350 | {date: new Date('2011-05-04'), value: 349.57},
351 | {date: new Date('2011-05-05'), value: 346.75},
352 | {date: new Date('2011-05-06'), value: 346.66},
353 | {date: new Date('2011-05-09'), value: 347.60},
354 | {date: new Date('2011-05-10'), value: 349.45},
355 | {date: new Date('2011-05-11'), value: 347.23},
356 | {date: new Date('2011-05-12'), value: 346.57},
357 | {date: new Date('2011-05-13'), value: 340.50},
358 | {date: new Date('2011-05-16'), value: 333.30},
359 | {date: new Date('2011-05-17'), value: 336.14},
360 | {date: new Date('2011-05-18'), value: 339.87},
361 | {date: new Date('2011-05-19'), value: 340.53},
362 | {date: new Date('2011-05-20'), value: 335.22},
363 | {date: new Date('2011-05-23'), value: 334.40},
364 | {date: new Date('2011-05-24'), value: 332.19},
365 | {date: new Date('2011-05-25'), value: 336.78},
366 | {date: new Date('2011-05-26'), value: 335.00},
367 | {date: new Date('2011-05-27'), value: 337.41},
368 | {date: new Date('2011-05-31'), value: 347.83},
369 | {date: new Date('2011-06-01'), value: 345.51},
370 | {date: new Date('2011-06-02'), value: 346.10},
371 | {date: new Date('2011-06-03'), value: 343.44},
372 | {date: new Date('2011-06-06'), value: 338.04},
373 | {date: new Date('2011-06-07'), value: 332.04},
374 | {date: new Date('2011-06-08'), value: 332.24},
375 | {date: new Date('2011-06-09'), value: 331.49},
376 | {date: new Date('2011-06-10'), value: 325.90},
377 | {date: new Date('2011-06-13'), value: 326.60},
378 | {date: new Date('2011-06-14'), value: 332.44},
379 | {date: new Date('2011-06-15'), value: 326.75},
380 | {date: new Date('2011-06-16'), value: 325.16},
381 | {date: new Date('2011-06-17'), value: 320.26},
382 | {date: new Date('2011-06-20'), value: 315.32},
383 | {date: new Date('2011-06-21'), value: 325.30},
384 | {date: new Date('2011-06-22'), value: 322.61},
385 | {date: new Date('2011-06-23'), value: 331.23},
386 | {date: new Date('2011-06-24'), value: 326.35},
387 | {date: new Date('2011-06-27'), value: 332.04},
388 | {date: new Date('2011-06-28'), value: 335.26},
389 | {date: new Date('2011-06-29'), value: 334.04},
390 | {date: new Date('2011-06-30'), value: 335.67},
391 | {date: new Date('2011-07-01'), value: 343.26},
392 | {date: new Date('2011-07-05'), value: 349.43},
393 | {date: new Date('2011-07-06'), value: 351.76},
394 | {date: new Date('2011-07-07'), value: 357.20},
395 | {date: new Date('2011-07-08'), value: 359.71},
396 | {date: new Date('2011-07-11'), value: 354.00},
397 | {date: new Date('2011-07-12'), value: 353.75},
398 | {date: new Date('2011-07-13'), value: 358.02},
399 | {date: new Date('2011-07-14'), value: 357.77},
400 | {date: new Date('2011-07-15'), value: 364.92},
401 | {date: new Date('2011-07-18'), value: 373.80},
402 | {date: new Date('2011-07-19'), value: 376.85},
403 | {date: new Date('2011-07-20'), value: 386.90},
404 | {date: new Date('2011-07-21'), value: 387.29},
405 | {date: new Date('2011-07-22'), value: 393.30},
406 | {date: new Date('2011-07-25'), value: 398.50},
407 | {date: new Date('2011-07-26'), value: 403.41},
408 | {date: new Date('2011-07-27'), value: 392.59},
409 | {date: new Date('2011-07-28'), value: 391.82},
410 | {date: new Date('2011-07-29'), value: 390.48},
411 | {date: new Date('2011-08-01'), value: 396.75},
412 | {date: new Date('2011-08-02'), value: 388.91},
413 | {date: new Date('2011-08-03'), value: 392.57},
414 | {date: new Date('2011-08-04'), value: 377.37},
415 | {date: new Date('2011-08-05'), value: 373.62},
416 | {date: new Date('2011-08-08'), value: 353.21},
417 | {date: new Date('2011-08-09'), value: 374.01},
418 | {date: new Date('2011-08-10'), value: 363.69},
419 | {date: new Date('2011-08-11'), value: 373.70},
420 | {date: new Date('2011-08-12'), value: 376.99},
421 | {date: new Date('2011-08-15'), value: 383.41},
422 | {date: new Date('2011-08-16'), value: 380.48},
423 | {date: new Date('2011-08-17'), value: 380.44},
424 | {date: new Date('2011-08-18'), value: 366.05},
425 | {date: new Date('2011-08-19'), value: 356.03},
426 | {date: new Date('2011-08-22'), value: 356.44},
427 | {date: new Date('2011-08-23'), value: 373.60},
428 | {date: new Date('2011-08-24'), value: 376.18},
429 | {date: new Date('2011-08-25'), value: 373.72},
430 | {date: new Date('2011-08-26'), value: 383.58},
431 | {date: new Date('2011-08-29'), value: 389.97},
432 | {date: new Date('2011-08-30'), value: 389.99},
433 | {date: new Date('2011-08-31'), value: 384.83},
434 | {date: new Date('2011-09-01'), value: 381.03},
435 | {date: new Date('2011-09-02'), value: 374.05},
436 | {date: new Date('2011-09-06'), value: 379.74},
437 | {date: new Date('2011-09-07'), value: 383.93},
438 | {date: new Date('2011-09-08'), value: 384.14},
439 | {date: new Date('2011-09-09'), value: 377.48},
440 | {date: new Date('2011-09-12'), value: 379.94},
441 | {date: new Date('2011-09-13'), value: 384.62},
442 | {date: new Date('2011-09-14'), value: 389.30},
443 | {date: new Date('2011-09-15'), value: 392.96},
444 | {date: new Date('2011-09-16'), value: 400.50},
445 | {date: new Date('2011-09-19'), value: 411.63},
446 | {date: new Date('2011-09-20'), value: 413.45},
447 | {date: new Date('2011-09-21'), value: 412.14},
448 | {date: new Date('2011-09-22'), value: 401.82},
449 | {date: new Date('2011-09-23'), value: 404.30},
450 | {date: new Date('2011-09-26'), value: 403.17},
451 | {date: new Date('2011-09-27'), value: 399.26},
452 | {date: new Date('2011-09-28'), value: 397.01},
453 | {date: new Date('2011-09-29'), value: 390.57},
454 | {date: new Date('2011-09-30'), value: 381.32},
455 | {date: new Date('2011-10-03'), value: 374.60},
456 | {date: new Date('2011-10-04'), value: 372.50},
457 | {date: new Date('2011-10-05'), value: 378.25},
458 | {date: new Date('2011-10-06'), value: 377.37},
459 | {date: new Date('2011-10-07'), value: 369.80},
460 | {date: new Date('2011-10-10'), value: 388.81},
461 | {date: new Date('2011-10-11'), value: 400.29},
462 | {date: new Date('2011-10-12'), value: 402.19},
463 | {date: new Date('2011-10-13'), value: 408.43},
464 | {date: new Date('2011-10-14'), value: 422.00},
465 | {date: new Date('2011-10-17'), value: 419.99},
466 | {date: new Date('2011-10-18'), value: 422.24},
467 | {date: new Date('2011-10-19'), value: 398.62},
468 | {date: new Date('2011-10-20'), value: 395.31},
469 | {date: new Date('2011-10-21'), value: 392.87},
470 | {date: new Date('2011-10-24'), value: 405.77},
471 | {date: new Date('2011-10-25'), value: 397.77},
472 | {date: new Date('2011-10-26'), value: 400.60},
473 | {date: new Date('2011-10-27'), value: 404.69},
474 | {date: new Date('2011-10-28'), value: 404.95},
475 | {date: new Date('2011-10-31'), value: 404.78},
476 | {date: new Date('2011-11-01'), value: 396.51},
477 | {date: new Date('2011-11-02'), value: 397.41},
478 | {date: new Date('2011-11-03'), value: 403.07},
479 | {date: new Date('2011-11-04'), value: 400.24},
480 | {date: new Date('2011-11-07'), value: 399.73},
481 | {date: new Date('2011-11-08'), value: 406.23},
482 | {date: new Date('2011-11-09'), value: 395.28},
483 | {date: new Date('2011-11-10'), value: 385.22},
484 | {date: new Date('2011-11-11'), value: 384.62},
485 | {date: new Date('2011-11-14'), value: 379.26},
486 | {date: new Date('2011-11-15'), value: 388.83},
487 | {date: new Date('2011-11-16'), value: 384.77},
488 | {date: new Date('2011-11-17'), value: 377.41},
489 | {date: new Date('2011-11-18'), value: 374.94},
490 | {date: new Date('2011-11-21'), value: 369.01},
491 | {date: new Date('2011-11-22'), value: 376.51},
492 | {date: new Date('2011-11-23'), value: 366.99},
493 | {date: new Date('2011-11-25'), value: 363.57},
494 | {date: new Date('2011-11-28'), value: 376.12},
495 | {date: new Date('2011-11-29'), value: 373.20},
496 | {date: new Date('2011-11-30'), value: 382.20},
497 | {date: new Date('2011-12-01'), value: 387.93},
498 | {date: new Date('2011-12-02'), value: 389.70},
499 | {date: new Date('2011-12-05'), value: 393.01},
500 | {date: new Date('2011-12-06'), value: 390.95},
501 | {date: new Date('2011-12-07'), value: 389.09},
502 | {date: new Date('2011-12-08'), value: 390.66},
503 | {date: new Date('2011-12-09'), value: 393.62},
504 | {date: new Date('2011-12-12'), value: 391.84},
505 | {date: new Date('2011-12-13'), value: 388.81},
506 | {date: new Date('2011-12-14'), value: 380.19},
507 | {date: new Date('2011-12-15'), value: 378.94},
508 | {date: new Date('2011-12-16'), value: 381.02},
509 | {date: new Date('2011-12-19'), value: 382.21},
510 | {date: new Date('2011-12-20'), value: 395.95},
511 | {date: new Date('2011-12-21'), value: 396.44},
512 | {date: new Date('2011-12-22'), value: 398.55},
513 | {date: new Date('2011-12-23'), value: 403.43},
514 | {date: new Date('2011-12-27'), value: 406.53},
515 | {date: new Date('2011-12-28'), value: 402.64},
516 | {date: new Date('2011-12-29'), value: 405.12},
517 | {date: new Date('2011-12-30'), value: 405.00},
518 | {date: new Date('2012-01-03'), value: 411.23},
519 | {date: new Date('2012-01-04'), value: 413.44},
520 | {date: new Date('2012-01-05'), value: 418.03},
521 | {date: new Date('2012-01-06'), value: 422.40},
522 | {date: new Date('2012-01-09'), value: 421.73},
523 | {date: new Date('2012-01-10'), value: 423.24},
524 | {date: new Date('2012-01-11'), value: 422.55},
525 | {date: new Date('2012-01-12'), value: 421.39},
526 | {date: new Date('2012-01-13'), value: 419.81},
527 | {date: new Date('2012-01-17'), value: 424.70},
528 | {date: new Date('2012-01-18'), value: 429.11},
529 | {date: new Date('2012-01-19'), value: 427.75},
530 | {date: new Date('2012-01-20'), value: 420.30},
531 | {date: new Date('2012-01-23'), value: 427.41},
532 | {date: new Date('2012-01-24'), value: 420.41},
533 | {date: new Date('2012-01-25'), value: 446.66},
534 | {date: new Date('2012-01-26'), value: 444.63},
535 | {date: new Date('2012-01-27'), value: 447.28},
536 | {date: new Date('2012-01-30'), value: 453.01},
537 | {date: new Date('2012-01-31'), value: 456.48},
538 | {date: new Date('2012-02-01'), value: 456.19},
539 | {date: new Date('2012-02-02'), value: 455.12},
540 | {date: new Date('2012-02-03'), value: 459.68},
541 | {date: new Date('2012-02-06'), value: 463.97},
542 | {date: new Date('2012-02-07'), value: 468.83},
543 | {date: new Date('2012-02-08'), value: 476.68},
544 | {date: new Date('2012-02-09'), value: 493.17},
545 | {date: new Date('2012-02-10'), value: 493.42},
546 | {date: new Date('2012-02-13'), value: 502.60},
547 | {date: new Date('2012-02-14'), value: 509.46},
548 | {date: new Date('2012-02-15'), value: 497.67},
549 | {date: new Date('2012-02-16'), value: 502.21},
550 | {date: new Date('2012-02-17'), value: 502.12},
551 | {date: new Date('2012-02-21'), value: 514.85},
552 | {date: new Date('2012-02-22'), value: 513.04},
553 | {date: new Date('2012-02-23'), value: 516.39},
554 | {date: new Date('2012-02-24'), value: 522.41},
555 | {date: new Date('2012-02-27'), value: 525.76},
556 | {date: new Date('2012-02-28'), value: 535.41},
557 | {date: new Date('2012-02-29'), value: 542.44},
558 | {date: new Date('2012-03-01'), value: 544.47},
559 | {date: new Date('2012-03-02'), value: 545.18},
560 | {date: new Date('2012-03-05'), value: 533.16},
561 | {date: new Date('2012-03-06'), value: 530.26},
562 | {date: new Date('2012-03-07'), value: 530.69},
563 | {date: new Date('2012-03-08'), value: 541.99},
564 | {date: new Date('2012-03-09'), value: 545.17},
565 | {date: new Date('2012-03-12'), value: 552.00},
566 | {date: new Date('2012-03-13'), value: 568.10},
567 | {date: new Date('2012-03-14'), value: 589.58},
568 | {date: new Date('2012-03-15'), value: 585.56},
569 | {date: new Date('2012-03-16'), value: 585.57},
570 | {date: new Date('2012-03-19'), value: 601.10},
571 | {date: new Date('2012-03-20'), value: 605.96},
572 | {date: new Date('2012-03-21'), value: 602.50},
573 | {date: new Date('2012-03-22'), value: 599.34},
574 | {date: new Date('2012-03-23'), value: 596.05},
575 | {date: new Date('2012-03-26'), value: 606.98},
576 | {date: new Date('2012-03-27'), value: 614.48},
577 | {date: new Date('2012-03-28'), value: 617.62},
578 | {date: new Date('2012-03-29'), value: 609.86},
579 | {date: new Date('2012-03-30'), value: 599.55},
580 | {date: new Date('2012-04-02'), value: 618.63},
581 | {date: new Date('2012-04-03'), value: 629.32},
582 | {date: new Date('2012-04-04'), value: 624.31},
583 | {date: new Date('2012-04-05'), value: 633.68},
584 | {date: new Date('2012-04-09'), value: 636.23},
585 | {date: new Date('2012-04-10'), value: 628.44},
586 | {date: new Date('2012-04-11'), value: 626.20},
587 | {date: new Date('2012-04-12'), value: 622.77},
588 | {date: new Date('2012-04-13'), value: 605.23},
589 | {date: new Date('2012-04-16'), value: 580.13},
590 | {date: new Date('2012-04-17'), value: 609.70},
591 | {date: new Date('2012-04-18'), value: 608.34},
592 | {date: new Date('2012-04-19'), value: 587.44},
593 | {date: new Date('2012-04-20'), value: 572.98},
594 | {date: new Date('2012-04-23'), value: 571.70},
595 | {date: new Date('2012-04-24'), value: 560.28},
596 | {date: new Date('2012-04-25'), value: 610.00},
597 | {date: new Date('2012-04-26'), value: 607.70},
598 | {date: new Date('2012-04-27'), value: 603.00},
599 | {date: new Date('2012-04-30'), value: 583.98},
600 | {date: new Date('2012-05-01'), value: 582.13},
601 | ];
602 |
--------------------------------------------------------------------------------
/src/app/shared/temperatures.ts:
--------------------------------------------------------------------------------
1 | export const TEMPERATURES = [
2 | {
3 | 'id': 'New York',
4 | 'values': [
5 | {'date': new Date('2011-10-01'), 'temperature': 63.4},
6 | {'date': new Date('2011-10-02'), 'temperature': 58.0},
7 | {'date': new Date('2011-10-03'), 'temperature': 53.3},
8 | {'date': new Date('2011-10-04'), 'temperature': 55.7},
9 | {'date': new Date('2011-10-05'), 'temperature': 64.2},
10 | {'date': new Date('2011-10-06'), 'temperature': 58.8},
11 | {'date': new Date('2011-10-07'), 'temperature': 57.9},
12 | {'date': new Date('2011-10-08'), 'temperature': 61.8},
13 | {'date': new Date('2011-10-09'), 'temperature': 69.3},
14 | {'date': new Date('2011-10-10'), 'temperature': 71.2},
15 | {'date': new Date('2011-10-11'), 'temperature': 68.7},
16 | {'date': new Date('2011-10-12'), 'temperature': 61.8},
17 | {'date': new Date('2011-10-13'), 'temperature': 63.0},
18 | {'date': new Date('2011-10-14'), 'temperature': 66.9},
19 | {'date': new Date('2011-10-15'), 'temperature': 61.7},
20 | {'date': new Date('2011-10-16'), 'temperature': 61.8},
21 | {'date': new Date('2011-10-17'), 'temperature': 62.8},
22 | {'date': new Date('2011-10-18'), 'temperature': 60.8},
23 | {'date': new Date('2011-10-19'), 'temperature': 62.1},
24 | {'date': new Date('2011-10-20'), 'temperature': 65.1},
25 | {'date': new Date('2011-10-21'), 'temperature': 55.6},
26 | {'date': new Date('2011-10-22'), 'temperature': 54.4},
27 | {'date': new Date('2011-10-23'), 'temperature': 54.4},
28 | {'date': new Date('2011-10-24'), 'temperature': 54.8},
29 | {'date': new Date('2011-10-25'), 'temperature': 57.9},
30 | {'date': new Date('2011-10-26'), 'temperature': 54.6},
31 | {'date': new Date('2011-10-27'), 'temperature': 54.4},
32 | {'date': new Date('2011-10-28'), 'temperature': 42.5},
33 | {'date': new Date('2011-10-29'), 'temperature': 40.9},
34 | {'date': new Date('2011-10-30'), 'temperature': 38.6},
35 | {'date': new Date('2011-10-31'), 'temperature': 44.2},
36 | {'date': new Date('2011-11-01'), 'temperature': 49.6},
37 | {'date': new Date('2011-11-02'), 'temperature': 47.2},
38 | {'date': new Date('2011-11-03'), 'temperature': 50.1},
39 | {'date': new Date('2011-11-04'), 'temperature': 50.1},
40 | {'date': new Date('2011-11-05'), 'temperature': 43.5},
41 | {'date': new Date('2011-11-06'), 'temperature': 43.8},
42 | {'date': new Date('2011-11-07'), 'temperature': 48.9},
43 | {'date': new Date('2011-11-08'), 'temperature': 55.5},
44 | {'date': new Date('2011-11-09'), 'temperature': 53.7},
45 | {'date': new Date('2011-11-10'), 'temperature': 57.7},
46 | {'date': new Date('2011-11-11'), 'temperature': 48.5},
47 | {'date': new Date('2011-11-12'), 'temperature': 46.8},
48 | {'date': new Date('2011-11-13'), 'temperature': 51.1},
49 | {'date': new Date('2011-11-14'), 'temperature': 56.8},
50 | {'date': new Date('2011-11-15'), 'temperature': 59.7},
51 | {'date': new Date('2011-11-16'), 'temperature': 56.5},
52 | {'date': new Date('2011-11-17'), 'temperature': 49.6},
53 | {'date': new Date('2011-11-18'), 'temperature': 41.5},
54 | {'date': new Date('2011-11-19'), 'temperature': 44.3},
55 | {'date': new Date('2011-11-20'), 'temperature': 54.0},
56 | {'date': new Date('2011-11-21'), 'temperature': 54.1},
57 | {'date': new Date('2011-11-22'), 'temperature': 49.4},
58 | {'date': new Date('2011-11-23'), 'temperature': 50.0},
59 | {'date': new Date('2011-11-24'), 'temperature': 44.0},
60 | {'date': new Date('2011-11-25'), 'temperature': 50.3},
61 | {'date': new Date('2011-11-26'), 'temperature': 52.1},
62 | {'date': new Date('2011-11-27'), 'temperature': 49.6},
63 | {'date': new Date('2011-11-28'), 'temperature': 57.2},
64 | {'date': new Date('2011-11-29'), 'temperature': 59.1},
65 | {'date': new Date('2011-11-30'), 'temperature': 50.6},
66 | {'date': new Date('2011-12-01'), 'temperature': 44.3},
67 | {'date': new Date('2011-12-02'), 'temperature': 43.9},
68 | {'date': new Date('2011-12-03'), 'temperature': 42.1},
69 | {'date': new Date('2011-12-04'), 'temperature': 43.9},
70 | {'date': new Date('2011-12-05'), 'temperature': 50.2},
71 | {'date': new Date('2011-12-06'), 'temperature': 54.2},
72 | {'date': new Date('2011-12-07'), 'temperature': 54.6},
73 | {'date': new Date('2011-12-08'), 'temperature': 43.4},
74 | {'date': new Date('2011-12-09'), 'temperature': 42.2},
75 | {'date': new Date('2011-12-10'), 'temperature': 45.0},
76 | {'date': new Date('2011-12-11'), 'temperature': 33.8},
77 | {'date': new Date('2011-12-12'), 'temperature': 36.8},
78 | {'date': new Date('2011-12-13'), 'temperature': 38.6},
79 | {'date': new Date('2011-12-14'), 'temperature': 41.9},
80 | {'date': new Date('2011-12-15'), 'temperature': 49.6},
81 | {'date': new Date('2011-12-16'), 'temperature': 50.2},
82 | {'date': new Date('2011-12-17'), 'temperature': 40.6},
83 | {'date': new Date('2011-12-18'), 'temperature': 29.1},
84 | {'date': new Date('2011-12-19'), 'temperature': 33.7},
85 | {'date': new Date('2011-12-20'), 'temperature': 45.8},
86 | {'date': new Date('2011-12-21'), 'temperature': 47.4},
87 | {'date': new Date('2011-12-22'), 'temperature': 54.4},
88 | {'date': new Date('2011-12-23'), 'temperature': 47.8},
89 | {'date': new Date('2011-12-24'), 'temperature': 34.9},
90 | {'date': new Date('2011-12-25'), 'temperature': 35.9},
91 | {'date': new Date('2011-12-26'), 'temperature': 43.6},
92 | {'date': new Date('2011-12-27'), 'temperature': 42.9},
93 | {'date': new Date('2011-12-28'), 'temperature': 46.2},
94 | {'date': new Date('2011-12-29'), 'temperature': 30.8},
95 | {'date': new Date('2011-12-30'), 'temperature': 40.8},
96 | {'date': new Date('2011-12-31'), 'temperature': 49.8},
97 | {'date': new Date('2012-01-01'), 'temperature': 46.3},
98 | {'date': new Date('2012-01-02'), 'temperature': 43.2},
99 | {'date': new Date('2012-01-03'), 'temperature': 30.3},
100 | {'date': new Date('2012-01-04'), 'temperature': 19.2},
101 | {'date': new Date('2012-01-05'), 'temperature': 32.1},
102 | {'date': new Date('2012-01-06'), 'temperature': 41.2},
103 | {'date': new Date('2012-01-07'), 'temperature': 47.0},
104 | {'date': new Date('2012-01-08'), 'temperature': 46.0},
105 | {'date': new Date('2012-01-09'), 'temperature': 34.7},
106 | {'date': new Date('2012-01-10'), 'temperature': 39.4},
107 | {'date': new Date('2012-01-11'), 'temperature': 40.4},
108 | {'date': new Date('2012-01-12'), 'temperature': 45.4},
109 | {'date': new Date('2012-01-13'), 'temperature': 40.7},
110 | {'date': new Date('2012-01-14'), 'temperature': 30.4},
111 | {'date': new Date('2012-01-15'), 'temperature': 23.9},
112 | {'date': new Date('2012-01-16'), 'temperature': 22.6},
113 | {'date': new Date('2012-01-17'), 'temperature': 39.8},
114 | {'date': new Date('2012-01-18'), 'temperature': 43.2},
115 | {'date': new Date('2012-01-19'), 'temperature': 26.3},
116 | {'date': new Date('2012-01-20'), 'temperature': 32.8},
117 | {'date': new Date('2012-01-21'), 'temperature': 27.4},
118 | {'date': new Date('2012-01-22'), 'temperature': 25.0},
119 | {'date': new Date('2012-01-23'), 'temperature': 39.4},
120 | {'date': new Date('2012-01-24'), 'temperature': 48.7},
121 | {'date': new Date('2012-01-25'), 'temperature': 43.0},
122 | {'date': new Date('2012-01-26'), 'temperature': 37.1},
123 | {'date': new Date('2012-01-27'), 'temperature': 48.2},
124 | {'date': new Date('2012-01-28'), 'temperature': 43.7},
125 | {'date': new Date('2012-01-29'), 'temperature': 40.1},
126 | {'date': new Date('2012-01-30'), 'temperature': 38.0},
127 | {'date': new Date('2012-01-31'), 'temperature': 43.5},
128 | {'date': new Date('2012-02-01'), 'temperature': 50.4},
129 | {'date': new Date('2012-02-02'), 'temperature': 45.8},
130 | {'date': new Date('2012-02-03'), 'temperature': 37.5},
131 | {'date': new Date('2012-02-04'), 'temperature': 40.8},
132 | {'date': new Date('2012-02-05'), 'temperature': 36.5},
133 | {'date': new Date('2012-02-06'), 'temperature': 39.1},
134 | {'date': new Date('2012-02-07'), 'temperature': 43.2},
135 | {'date': new Date('2012-02-08'), 'temperature': 36.5},
136 | {'date': new Date('2012-02-09'), 'temperature': 36.5},
137 | {'date': new Date('2012-02-10'), 'temperature': 38.3},
138 | {'date': new Date('2012-02-11'), 'temperature': 36.9},
139 | {'date': new Date('2012-02-12'), 'temperature': 29.7},
140 | {'date': new Date('2012-02-13'), 'temperature': 33.1},
141 | {'date': new Date('2012-02-14'), 'temperature': 39.6},
142 | {'date': new Date('2012-02-15'), 'temperature': 42.3},
143 | {'date': new Date('2012-02-16'), 'temperature': 39.7},
144 | {'date': new Date('2012-02-17'), 'temperature': 46.0},
145 | {'date': new Date('2012-02-18'), 'temperature': 41.2},
146 | {'date': new Date('2012-02-19'), 'temperature': 39.8},
147 | {'date': new Date('2012-02-20'), 'temperature': 38.1},
148 | {'date': new Date('2012-02-21'), 'temperature': 37.1},
149 | {'date': new Date('2012-02-22'), 'temperature': 45.5},
150 | {'date': new Date('2012-02-23'), 'temperature': 50.6},
151 | {'date': new Date('2012-02-24'), 'temperature': 42.7},
152 | {'date': new Date('2012-02-25'), 'temperature': 42.6},
153 | {'date': new Date('2012-02-26'), 'temperature': 36.9},
154 | {'date': new Date('2012-02-27'), 'temperature': 40.9},
155 | {'date': new Date('2012-02-28'), 'temperature': 45.9},
156 | {'date': new Date('2012-02-29'), 'temperature': 40.7},
157 | {'date': new Date('2012-03-01'), 'temperature': 41.3},
158 | {'date': new Date('2012-03-02'), 'temperature': 36.8},
159 | {'date': new Date('2012-03-03'), 'temperature': 47.6},
160 | {'date': new Date('2012-03-04'), 'temperature': 44.2},
161 | {'date': new Date('2012-03-05'), 'temperature': 38.5},
162 | {'date': new Date('2012-03-06'), 'temperature': 32.9},
163 | {'date': new Date('2012-03-07'), 'temperature': 43.3},
164 | {'date': new Date('2012-03-08'), 'temperature': 51.2},
165 | {'date': new Date('2012-03-09'), 'temperature': 47.8},
166 | {'date': new Date('2012-03-10'), 'temperature': 37.2},
167 | {'date': new Date('2012-03-11'), 'temperature': 42.9},
168 | {'date': new Date('2012-03-12'), 'temperature': 48.8},
169 | {'date': new Date('2012-03-13'), 'temperature': 52.6},
170 | {'date': new Date('2012-03-14'), 'temperature': 60.5},
171 | {'date': new Date('2012-03-15'), 'temperature': 47.2},
172 | {'date': new Date('2012-03-16'), 'temperature': 44.7},
173 | {'date': new Date('2012-03-17'), 'temperature': 48.2},
174 | {'date': new Date('2012-03-18'), 'temperature': 48.2},
175 | {'date': new Date('2012-03-19'), 'temperature': 53.1},
176 | {'date': new Date('2012-03-20'), 'temperature': 57.8},
177 | {'date': new Date('2012-03-21'), 'temperature': 57.5},
178 | {'date': new Date('2012-03-22'), 'temperature': 57.3},
179 | {'date': new Date('2012-03-23'), 'temperature': 61.7},
180 | {'date': new Date('2012-03-24'), 'temperature': 55.8},
181 | {'date': new Date('2012-03-25'), 'temperature': 48.4},
182 | {'date': new Date('2012-03-26'), 'temperature': 49.8},
183 | {'date': new Date('2012-03-27'), 'temperature': 39.6},
184 | {'date': new Date('2012-03-28'), 'temperature': 49.7},
185 | {'date': new Date('2012-03-29'), 'temperature': 56.8},
186 | {'date': new Date('2012-03-30'), 'temperature': 46.5},
187 | {'date': new Date('2012-03-31'), 'temperature': 42.2},
188 | {'date': new Date('2012-04-01'), 'temperature': 45.3},
189 | {'date': new Date('2012-04-02'), 'temperature': 48.1},
190 | {'date': new Date('2012-04-03'), 'temperature': 51.2},
191 | {'date': new Date('2012-04-04'), 'temperature': 61.0},
192 | {'date': new Date('2012-04-05'), 'temperature': 50.7},
193 | {'date': new Date('2012-04-06'), 'temperature': 48.0},
194 | {'date': new Date('2012-04-07'), 'temperature': 51.1},
195 | {'date': new Date('2012-04-08'), 'temperature': 55.7},
196 | {'date': new Date('2012-04-09'), 'temperature': 58.3},
197 | {'date': new Date('2012-04-10'), 'temperature': 55.0},
198 | {'date': new Date('2012-04-11'), 'temperature': 49.0},
199 | {'date': new Date('2012-04-12'), 'temperature': 51.7},
200 | {'date': new Date('2012-04-13'), 'temperature': 53.1},
201 | {'date': new Date('2012-04-14'), 'temperature': 55.2},
202 | {'date': new Date('2012-04-15'), 'temperature': 62.3},
203 | {'date': new Date('2012-04-16'), 'temperature': 62.9},
204 | {'date': new Date('2012-04-17'), 'temperature': 69.3},
205 | {'date': new Date('2012-04-18'), 'temperature': 59.0},
206 | {'date': new Date('2012-04-19'), 'temperature': 54.1},
207 | {'date': new Date('2012-04-20'), 'temperature': 56.5},
208 | {'date': new Date('2012-04-21'), 'temperature': 58.2},
209 | {'date': new Date('2012-04-22'), 'temperature': 52.4},
210 | {'date': new Date('2012-04-23'), 'temperature': 51.6},
211 | {'date': new Date('2012-04-24'), 'temperature': 49.3},
212 | {'date': new Date('2012-04-25'), 'temperature': 52.5},
213 | {'date': new Date('2012-04-26'), 'temperature': 50.5},
214 | {'date': new Date('2012-04-27'), 'temperature': 51.9},
215 | {'date': new Date('2012-04-28'), 'temperature': 47.4},
216 | {'date': new Date('2012-04-29'), 'temperature': 54.1},
217 | {'date': new Date('2012-04-30'), 'temperature': 51.9},
218 | {'date': new Date('2012-05-01'), 'temperature': 57.4},
219 | {'date': new Date('2012-05-02'), 'temperature': 53.7},
220 | {'date': new Date('2012-05-03'), 'temperature': 53.1},
221 | {'date': new Date('2012-05-04'), 'temperature': 57.2},
222 | {'date': new Date('2012-05-05'), 'temperature': 57.0},
223 | {'date': new Date('2012-05-06'), 'temperature': 56.6},
224 | {'date': new Date('2012-05-07'), 'temperature': 54.6},
225 | {'date': new Date('2012-05-08'), 'temperature': 57.9},
226 | {'date': new Date('2012-05-09'), 'temperature': 59.2},
227 | {'date': new Date('2012-05-10'), 'temperature': 61.1},
228 | {'date': new Date('2012-05-11'), 'temperature': 59.7},
229 | {'date': new Date('2012-05-12'), 'temperature': 64.1},
230 | {'date': new Date('2012-05-13'), 'temperature': 65.3},
231 | {'date': new Date('2012-05-14'), 'temperature': 64.2},
232 | {'date': new Date('2012-05-15'), 'temperature': 62.0},
233 | {'date': new Date('2012-05-16'), 'temperature': 63.8},
234 | {'date': new Date('2012-05-17'), 'temperature': 64.5},
235 | {'date': new Date('2012-05-18'), 'temperature': 61.0},
236 | {'date': new Date('2012-05-19'), 'temperature': 62.6},
237 | {'date': new Date('2012-05-20'), 'temperature': 66.2},
238 | {'date': new Date('2012-05-21'), 'temperature': 62.7},
239 | {'date': new Date('2012-05-22'), 'temperature': 63.7},
240 | {'date': new Date('2012-05-23'), 'temperature': 66.4},
241 | {'date': new Date('2012-05-24'), 'temperature': 64.5},
242 | {'date': new Date('2012-05-25'), 'temperature': 65.4},
243 | {'date': new Date('2012-05-26'), 'temperature': 69.4},
244 | {'date': new Date('2012-05-27'), 'temperature': 71.9},
245 | {'date': new Date('2012-05-28'), 'temperature': 74.4},
246 | {'date': new Date('2012-05-29'), 'temperature': 75.9},
247 | {'date': new Date('2012-05-30'), 'temperature': 72.9},
248 | {'date': new Date('2012-05-31'), 'temperature': 72.5},
249 | {'date': new Date('2012-06-01'), 'temperature': 67.2},
250 | {'date': new Date('2012-06-02'), 'temperature': 68.3},
251 | {'date': new Date('2012-06-03'), 'temperature': 67.7},
252 | {'date': new Date('2012-06-04'), 'temperature': 61.9},
253 | {'date': new Date('2012-06-05'), 'temperature': 58.3},
254 | {'date': new Date('2012-06-06'), 'temperature': 61.7},
255 | {'date': new Date('2012-06-07'), 'temperature': 66.7},
256 | {'date': new Date('2012-06-08'), 'temperature': 68.7},
257 | {'date': new Date('2012-06-09'), 'temperature': 72.2},
258 | {'date': new Date('2012-06-10'), 'temperature': 72.6},
259 | {'date': new Date('2012-06-11'), 'temperature': 69.2},
260 | {'date': new Date('2012-06-12'), 'temperature': 66.9},
261 | {'date': new Date('2012-06-13'), 'temperature': 66.7},
262 | {'date': new Date('2012-06-14'), 'temperature': 67.7},
263 | {'date': new Date('2012-06-15'), 'temperature': 68.5},
264 | {'date': new Date('2012-06-16'), 'temperature': 67.5},
265 | {'date': new Date('2012-06-17'), 'temperature': 64.2},
266 | {'date': new Date('2012-06-18'), 'temperature': 61.7},
267 | {'date': new Date('2012-06-19'), 'temperature': 66.4},
268 | {'date': new Date('2012-06-20'), 'temperature': 77.9},
269 | {'date': new Date('2012-06-21'), 'temperature': 88.3},
270 | {'date': new Date('2012-06-22'), 'temperature': 82.2},
271 | {'date': new Date('2012-06-23'), 'temperature': 77.0},
272 | {'date': new Date('2012-06-24'), 'temperature': 75.4},
273 | {'date': new Date('2012-06-25'), 'temperature': 70.9},
274 | {'date': new Date('2012-06-26'), 'temperature': 65.9},
275 | {'date': new Date('2012-06-27'), 'temperature': 73.5},
276 | {'date': new Date('2012-06-28'), 'temperature': 77.4},
277 | {'date': new Date('2012-06-29'), 'temperature': 79.6},
278 | {'date': new Date('2012-06-30'), 'temperature': 84.2},
279 | {'date': new Date('2012-07-01'), 'temperature': 81.8},
280 | {'date': new Date('2012-07-02'), 'temperature': 82.5},
281 | {'date': new Date('2012-07-03'), 'temperature': 80.2},
282 | {'date': new Date('2012-07-04'), 'temperature': 77.8},
283 | {'date': new Date('2012-07-05'), 'temperature': 86.1},
284 | {'date': new Date('2012-07-06'), 'temperature': 79.9},
285 | {'date': new Date('2012-07-07'), 'temperature': 83.5},
286 | {'date': new Date('2012-07-08'), 'temperature': 81.5},
287 | {'date': new Date('2012-07-09'), 'temperature': 77.8},
288 | {'date': new Date('2012-07-10'), 'temperature': 76.1},
289 | {'date': new Date('2012-07-11'), 'temperature': 76.3},
290 | {'date': new Date('2012-07-12'), 'temperature': 75.8},
291 | {'date': new Date('2012-07-13'), 'temperature': 77.2},
292 | {'date': new Date('2012-07-14'), 'temperature': 79.3},
293 | {'date': new Date('2012-07-15'), 'temperature': 78.9},
294 | {'date': new Date('2012-07-16'), 'temperature': 79.6},
295 | {'date': new Date('2012-07-17'), 'temperature': 83.3},
296 | {'date': new Date('2012-07-18'), 'temperature': 84.3},
297 | {'date': new Date('2012-07-19'), 'temperature': 75.1},
298 | {'date': new Date('2012-07-20'), 'temperature': 68.4},
299 | {'date': new Date('2012-07-21'), 'temperature': 68.4},
300 | {'date': new Date('2012-07-22'), 'temperature': 72.2},
301 | {'date': new Date('2012-07-23'), 'temperature': 75.6},
302 | {'date': new Date('2012-07-24'), 'temperature': 82.6},
303 | {'date': new Date('2012-07-25'), 'temperature': 78.4},
304 | {'date': new Date('2012-07-26'), 'temperature': 77.0},
305 | {'date': new Date('2012-07-27'), 'temperature': 79.4},
306 | {'date': new Date('2012-07-28'), 'temperature': 77.4},
307 | {'date': new Date('2012-07-29'), 'temperature': 72.5},
308 | {'date': new Date('2012-07-30'), 'temperature': 72.9},
309 | {'date': new Date('2012-07-31'), 'temperature': 73.6},
310 | {'date': new Date('2012-08-01'), 'temperature': 75.0},
311 | {'date': new Date('2012-08-02'), 'temperature': 77.7},
312 | {'date': new Date('2012-08-03'), 'temperature': 79.7},
313 | {'date': new Date('2012-08-04'), 'temperature': 79.6},
314 | {'date': new Date('2012-08-05'), 'temperature': 81.5},
315 | {'date': new Date('2012-08-06'), 'temperature': 80.0},
316 | {'date': new Date('2012-08-07'), 'temperature': 75.7},
317 | {'date': new Date('2012-08-08'), 'temperature': 77.8},
318 | {'date': new Date('2012-08-09'), 'temperature': 78.6},
319 | {'date': new Date('2012-08-10'), 'temperature': 77.8},
320 | {'date': new Date('2012-08-11'), 'temperature': 78.5},
321 | {'date': new Date('2012-08-12'), 'temperature': 78.8},
322 | {'date': new Date('2012-08-13'), 'temperature': 78.6},
323 | {'date': new Date('2012-08-14'), 'temperature': 76.8},
324 | {'date': new Date('2012-08-15'), 'temperature': 76.7},
325 | {'date': new Date('2012-08-16'), 'temperature': 75.9},
326 | {'date': new Date('2012-08-17'), 'temperature': 77.6},
327 | {'date': new Date('2012-08-18'), 'temperature': 72.6},
328 | {'date': new Date('2012-08-19'), 'temperature': 70.4},
329 | {'date': new Date('2012-08-20'), 'temperature': 71.8},
330 | {'date': new Date('2012-08-21'), 'temperature': 73.6},
331 | {'date': new Date('2012-08-22'), 'temperature': 74.7},
332 | {'date': new Date('2012-08-23'), 'temperature': 74.6},
333 | {'date': new Date('2012-08-24'), 'temperature': 76.0},
334 | {'date': new Date('2012-08-25'), 'temperature': 76.2},
335 | {'date': new Date('2012-08-26'), 'temperature': 73.4},
336 | {'date': new Date('2012-08-27'), 'temperature': 74.6},
337 | {'date': new Date('2012-08-28'), 'temperature': 79.4},
338 | {'date': new Date('2012-08-29'), 'temperature': 74.7},
339 | {'date': new Date('2012-08-30'), 'temperature': 73.5},
340 | {'date': new Date('2012-08-31'), 'temperature': 77.9},
341 | {'date': new Date('2012-09-01'), 'temperature': 80.7},
342 | {'date': new Date('2012-09-02'), 'temperature': 75.1},
343 | {'date': new Date('2012-09-03'), 'temperature': 73.5},
344 | {'date': new Date('2012-09-04'), 'temperature': 73.5},
345 | {'date': new Date('2012-09-05'), 'temperature': 77.7},
346 | {'date': new Date('2012-09-06'), 'temperature': 74.2},
347 | {'date': new Date('2012-09-07'), 'temperature': 76.0},
348 | {'date': new Date('2012-09-08'), 'temperature': 77.1},
349 | {'date': new Date('2012-09-09'), 'temperature': 69.7},
350 | {'date': new Date('2012-09-10'), 'temperature': 67.8},
351 | {'date': new Date('2012-09-11'), 'temperature': 64.0},
352 | {'date': new Date('2012-09-12'), 'temperature': 68.1},
353 | {'date': new Date('2012-09-13'), 'temperature': 69.3},
354 | {'date': new Date('2012-09-14'), 'temperature': 70.0},
355 | {'date': new Date('2012-09-15'), 'temperature': 69.3},
356 | {'date': new Date('2012-09-16'), 'temperature': 66.3},
357 | {'date': new Date('2012-09-17'), 'temperature': 67.0},
358 | {'date': new Date('2012-09-18'), 'temperature': 72.8},
359 | {'date': new Date('2012-09-19'), 'temperature': 67.2},
360 | {'date': new Date('2012-09-20'), 'temperature': 62.1},
361 | {'date': new Date('2012-09-21'), 'temperature': 64.0},
362 | {'date': new Date('2012-09-22'), 'temperature': 65.5},
363 | {'date': new Date('2012-09-23'), 'temperature': 65.7},
364 | {'date': new Date('2012-09-24'), 'temperature': 60.4},
365 | {'date': new Date('2012-09-25'), 'temperature': 63.2},
366 | {'date': new Date('2012-09-26'), 'temperature': 68.5},
367 | {'date': new Date('2012-09-27'), 'temperature': 69.2},
368 | {'date': new Date('2012-09-28'), 'temperature': 68.7},
369 | {'date': new Date('2012-09-29'), 'temperature': 62.5},
370 | {'date': new Date('2012-09-30'), 'temperature': 62.3}
371 | ]
372 | },
373 | {
374 | 'id': 'San Francisco',
375 | 'values': [
376 | {'date': new Date('2011-10-01'), 'temperature': 62.7},
377 | {'date': new Date('2011-10-02'), 'temperature': 59.9},
378 | {'date': new Date('2011-10-03'), 'temperature': 59.1},
379 | {'date': new Date('2011-10-04'), 'temperature': 58.8},
380 | {'date': new Date('2011-10-05'), 'temperature': 58.7},
381 | {'date': new Date('2011-10-06'), 'temperature': 57.0},
382 | {'date': new Date('2011-10-07'), 'temperature': 56.7},
383 | {'date': new Date('2011-10-08'), 'temperature': 56.8},
384 | {'date': new Date('2011-10-09'), 'temperature': 56.7},
385 | {'date': new Date('2011-10-10'), 'temperature': 60.1},
386 | {'date': new Date('2011-10-11'), 'temperature': 61.1},
387 | {'date': new Date('2011-10-12'), 'temperature': 61.5},
388 | {'date': new Date('2011-10-13'), 'temperature': 64.3},
389 | {'date': new Date('2011-10-14'), 'temperature': 67.1},
390 | {'date': new Date('2011-10-15'), 'temperature': 64.6},
391 | {'date': new Date('2011-10-16'), 'temperature': 61.6},
392 | {'date': new Date('2011-10-17'), 'temperature': 61.1},
393 | {'date': new Date('2011-10-18'), 'temperature': 59.2},
394 | {'date': new Date('2011-10-19'), 'temperature': 58.9},
395 | {'date': new Date('2011-10-20'), 'temperature': 57.2},
396 | {'date': new Date('2011-10-21'), 'temperature': 56.4},
397 | {'date': new Date('2011-10-22'), 'temperature': 60.7},
398 | {'date': new Date('2011-10-23'), 'temperature': 65.1},
399 | {'date': new Date('2011-10-24'), 'temperature': 60.9},
400 | {'date': new Date('2011-10-25'), 'temperature': 56.1},
401 | {'date': new Date('2011-10-26'), 'temperature': 54.6},
402 | {'date': new Date('2011-10-27'), 'temperature': 56.1},
403 | {'date': new Date('2011-10-28'), 'temperature': 58.1},
404 | {'date': new Date('2011-10-29'), 'temperature': 57.5},
405 | {'date': new Date('2011-10-30'), 'temperature': 57.7},
406 | {'date': new Date('2011-10-31'), 'temperature': 55.1},
407 | {'date': new Date('2011-11-01'), 'temperature': 57.9},
408 | {'date': new Date('2011-11-02'), 'temperature': 64.6},
409 | {'date': new Date('2011-11-03'), 'temperature': 56.2},
410 | {'date': new Date('2011-11-04'), 'temperature': 50.5},
411 | {'date': new Date('2011-11-05'), 'temperature': 51.3},
412 | {'date': new Date('2011-11-06'), 'temperature': 52.6},
413 | {'date': new Date('2011-11-07'), 'temperature': 51.4},
414 | {'date': new Date('2011-11-08'), 'temperature': 50.6},
415 | {'date': new Date('2011-11-09'), 'temperature': 54.6},
416 | {'date': new Date('2011-11-10'), 'temperature': 55.6},
417 | {'date': new Date('2011-11-11'), 'temperature': 53.9},
418 | {'date': new Date('2011-11-12'), 'temperature': 54.0},
419 | {'date': new Date('2011-11-13'), 'temperature': 53.8},
420 | {'date': new Date('2011-11-14'), 'temperature': 53.5},
421 | {'date': new Date('2011-11-15'), 'temperature': 53.4},
422 | {'date': new Date('2011-11-16'), 'temperature': 52.2},
423 | {'date': new Date('2011-11-17'), 'temperature': 52.7},
424 | {'date': new Date('2011-11-18'), 'temperature': 53.1},
425 | {'date': new Date('2011-11-19'), 'temperature': 49.0},
426 | {'date': new Date('2011-11-20'), 'temperature': 50.4},
427 | {'date': new Date('2011-11-21'), 'temperature': 51.1},
428 | {'date': new Date('2011-11-22'), 'temperature': 52.3},
429 | {'date': new Date('2011-11-23'), 'temperature': 54.6},
430 | {'date': new Date('2011-11-24'), 'temperature': 55.1},
431 | {'date': new Date('2011-11-25'), 'temperature': 51.5},
432 | {'date': new Date('2011-11-26'), 'temperature': 53.6},
433 | {'date': new Date('2011-11-27'), 'temperature': 52.3},
434 | {'date': new Date('2011-11-28'), 'temperature': 51.0},
435 | {'date': new Date('2011-11-29'), 'temperature': 49.5},
436 | {'date': new Date('2011-11-30'), 'temperature': 49.8},
437 | {'date': new Date('2011-12-01'), 'temperature': 60.4},
438 | {'date': new Date('2011-12-02'), 'temperature': 62.2},
439 | {'date': new Date('2011-12-03'), 'temperature': 58.3},
440 | {'date': new Date('2011-12-04'), 'temperature': 52.7},
441 | {'date': new Date('2011-12-05'), 'temperature': 51.5},
442 | {'date': new Date('2011-12-06'), 'temperature': 49.9},
443 | {'date': new Date('2011-12-07'), 'temperature': 48.6},
444 | {'date': new Date('2011-12-08'), 'temperature': 46.4},
445 | {'date': new Date('2011-12-09'), 'temperature': 49.8},
446 | {'date': new Date('2011-12-10'), 'temperature': 52.1},
447 | {'date': new Date('2011-12-11'), 'temperature': 48.8},
448 | {'date': new Date('2011-12-12'), 'temperature': 47.4},
449 | {'date': new Date('2011-12-13'), 'temperature': 47.2},
450 | {'date': new Date('2011-12-14'), 'temperature': 46.1},
451 | {'date': new Date('2011-12-15'), 'temperature': 48.8},
452 | {'date': new Date('2011-12-16'), 'temperature': 47.9},
453 | {'date': new Date('2011-12-17'), 'temperature': 49.8},
454 | {'date': new Date('2011-12-18'), 'temperature': 49.1},
455 | {'date': new Date('2011-12-19'), 'temperature': 48.3},
456 | {'date': new Date('2011-12-20'), 'temperature': 49.3},
457 | {'date': new Date('2011-12-21'), 'temperature': 48.4},
458 | {'date': new Date('2011-12-22'), 'temperature': 53.3},
459 | {'date': new Date('2011-12-23'), 'temperature': 47.5},
460 | {'date': new Date('2011-12-24'), 'temperature': 47.9},
461 | {'date': new Date('2011-12-25'), 'temperature': 48.9},
462 | {'date': new Date('2011-12-26'), 'temperature': 45.9},
463 | {'date': new Date('2011-12-27'), 'temperature': 47.2},
464 | {'date': new Date('2011-12-28'), 'temperature': 48.9},
465 | {'date': new Date('2011-12-29'), 'temperature': 50.9},
466 | {'date': new Date('2011-12-30'), 'temperature': 52.9},
467 | {'date': new Date('2011-12-31'), 'temperature': 50.1},
468 | {'date': new Date('2012-01-01'), 'temperature': 53.9},
469 | {'date': new Date('2012-01-02'), 'temperature': 53.1},
470 | {'date': new Date('2012-01-03'), 'temperature': 49.7},
471 | {'date': new Date('2012-01-04'), 'temperature': 52.7},
472 | {'date': new Date('2012-01-05'), 'temperature': 52.6},
473 | {'date': new Date('2012-01-06'), 'temperature': 49.0},
474 | {'date': new Date('2012-01-07'), 'temperature': 51.0},
475 | {'date': new Date('2012-01-08'), 'temperature': 56.8},
476 | {'date': new Date('2012-01-09'), 'temperature': 52.3},
477 | {'date': new Date('2012-01-10'), 'temperature': 51.6},
478 | {'date': new Date('2012-01-11'), 'temperature': 49.8},
479 | {'date': new Date('2012-01-12'), 'temperature': 51.9},
480 | {'date': new Date('2012-01-13'), 'temperature': 53.7},
481 | {'date': new Date('2012-01-14'), 'temperature': 52.9},
482 | {'date': new Date('2012-01-15'), 'temperature': 49.7},
483 | {'date': new Date('2012-01-16'), 'temperature': 45.3},
484 | {'date': new Date('2012-01-17'), 'temperature': 43.6},
485 | {'date': new Date('2012-01-18'), 'temperature': 45.0},
486 | {'date': new Date('2012-01-19'), 'temperature': 47.3},
487 | {'date': new Date('2012-01-20'), 'temperature': 51.4},
488 | {'date': new Date('2012-01-21'), 'temperature': 53.7},
489 | {'date': new Date('2012-01-22'), 'temperature': 48.3},
490 | {'date': new Date('2012-01-23'), 'temperature': 52.9},
491 | {'date': new Date('2012-01-24'), 'temperature': 49.1},
492 | {'date': new Date('2012-01-25'), 'temperature': 52.1},
493 | {'date': new Date('2012-01-26'), 'temperature': 53.6},
494 | {'date': new Date('2012-01-27'), 'temperature': 50.4},
495 | {'date': new Date('2012-01-28'), 'temperature': 50.3},
496 | {'date': new Date('2012-01-29'), 'temperature': 53.8},
497 | {'date': new Date('2012-01-30'), 'temperature': 51.9},
498 | {'date': new Date('2012-01-31'), 'temperature': 50.0},
499 | {'date': new Date('2012-02-01'), 'temperature': 50.0},
500 | {'date': new Date('2012-02-02'), 'temperature': 51.3},
501 | {'date': new Date('2012-02-03'), 'temperature': 51.5},
502 | {'date': new Date('2012-02-04'), 'temperature': 52.0},
503 | {'date': new Date('2012-02-05'), 'temperature': 53.8},
504 | {'date': new Date('2012-02-06'), 'temperature': 54.6},
505 | {'date': new Date('2012-02-07'), 'temperature': 54.3},
506 | {'date': new Date('2012-02-08'), 'temperature': 51.9},
507 | {'date': new Date('2012-02-09'), 'temperature': 53.8},
508 | {'date': new Date('2012-02-10'), 'temperature': 53.9},
509 | {'date': new Date('2012-02-11'), 'temperature': 52.3},
510 | {'date': new Date('2012-02-12'), 'temperature': 50.1},
511 | {'date': new Date('2012-02-13'), 'temperature': 49.5},
512 | {'date': new Date('2012-02-14'), 'temperature': 48.6},
513 | {'date': new Date('2012-02-15'), 'temperature': 49.9},
514 | {'date': new Date('2012-02-16'), 'temperature': 52.4},
515 | {'date': new Date('2012-02-17'), 'temperature': 49.9},
516 | {'date': new Date('2012-02-18'), 'temperature': 51.6},
517 | {'date': new Date('2012-02-19'), 'temperature': 47.8},
518 | {'date': new Date('2012-02-20'), 'temperature': 48.7},
519 | {'date': new Date('2012-02-21'), 'temperature': 49.7},
520 | {'date': new Date('2012-02-22'), 'temperature': 53.4},
521 | {'date': new Date('2012-02-23'), 'temperature': 54.1},
522 | {'date': new Date('2012-02-24'), 'temperature': 55.9},
523 | {'date': new Date('2012-02-25'), 'temperature': 51.7},
524 | {'date': new Date('2012-02-26'), 'temperature': 47.7},
525 | {'date': new Date('2012-02-27'), 'temperature': 45.4},
526 | {'date': new Date('2012-02-28'), 'temperature': 47.0},
527 | {'date': new Date('2012-02-29'), 'temperature': 49.8},
528 | {'date': new Date('2012-03-01'), 'temperature': 48.9},
529 | {'date': new Date('2012-03-02'), 'temperature': 48.1},
530 | {'date': new Date('2012-03-03'), 'temperature': 50.7},
531 | {'date': new Date('2012-03-04'), 'temperature': 55.0},
532 | {'date': new Date('2012-03-05'), 'temperature': 48.8},
533 | {'date': new Date('2012-03-06'), 'temperature': 48.4},
534 | {'date': new Date('2012-03-07'), 'temperature': 49.9},
535 | {'date': new Date('2012-03-08'), 'temperature': 49.2},
536 | {'date': new Date('2012-03-09'), 'temperature': 51.7},
537 | {'date': new Date('2012-03-10'), 'temperature': 49.3},
538 | {'date': new Date('2012-03-11'), 'temperature': 50.0},
539 | {'date': new Date('2012-03-12'), 'temperature': 48.6},
540 | {'date': new Date('2012-03-13'), 'temperature': 53.9},
541 | {'date': new Date('2012-03-14'), 'temperature': 55.2},
542 | {'date': new Date('2012-03-15'), 'temperature': 55.9},
543 | {'date': new Date('2012-03-16'), 'temperature': 54.6},
544 | {'date': new Date('2012-03-17'), 'temperature': 48.2},
545 | {'date': new Date('2012-03-18'), 'temperature': 47.1},
546 | {'date': new Date('2012-03-19'), 'temperature': 45.8},
547 | {'date': new Date('2012-03-20'), 'temperature': 49.7},
548 | {'date': new Date('2012-03-21'), 'temperature': 51.4},
549 | {'date': new Date('2012-03-22'), 'temperature': 51.4},
550 | {'date': new Date('2012-03-23'), 'temperature': 48.4},
551 | {'date': new Date('2012-03-24'), 'temperature': 49.0},
552 | {'date': new Date('2012-03-25'), 'temperature': 46.4},
553 | {'date': new Date('2012-03-26'), 'temperature': 49.7},
554 | {'date': new Date('2012-03-27'), 'temperature': 54.1},
555 | {'date': new Date('2012-03-28'), 'temperature': 54.6},
556 | {'date': new Date('2012-03-29'), 'temperature': 52.3},
557 | {'date': new Date('2012-03-30'), 'temperature': 54.5},
558 | {'date': new Date('2012-03-31'), 'temperature': 56.2},
559 | {'date': new Date('2012-04-01'), 'temperature': 51.1},
560 | {'date': new Date('2012-04-02'), 'temperature': 50.5},
561 | {'date': new Date('2012-04-03'), 'temperature': 52.2},
562 | {'date': new Date('2012-04-04'), 'temperature': 50.6},
563 | {'date': new Date('2012-04-05'), 'temperature': 47.9},
564 | {'date': new Date('2012-04-06'), 'temperature': 47.4},
565 | {'date': new Date('2012-04-07'), 'temperature': 49.4},
566 | {'date': new Date('2012-04-08'), 'temperature': 50.0},
567 | {'date': new Date('2012-04-09'), 'temperature': 51.3},
568 | {'date': new Date('2012-04-10'), 'temperature': 53.8},
569 | {'date': new Date('2012-04-11'), 'temperature': 52.9},
570 | {'date': new Date('2012-04-12'), 'temperature': 53.9},
571 | {'date': new Date('2012-04-13'), 'temperature': 50.2},
572 | {'date': new Date('2012-04-14'), 'temperature': 50.9},
573 | {'date': new Date('2012-04-15'), 'temperature': 51.5},
574 | {'date': new Date('2012-04-16'), 'temperature': 51.9},
575 | {'date': new Date('2012-04-17'), 'temperature': 53.2},
576 | {'date': new Date('2012-04-18'), 'temperature': 53.0},
577 | {'date': new Date('2012-04-19'), 'temperature': 55.1},
578 | {'date': new Date('2012-04-20'), 'temperature': 55.8},
579 | {'date': new Date('2012-04-21'), 'temperature': 58.0},
580 | {'date': new Date('2012-04-22'), 'temperature': 52.8},
581 | {'date': new Date('2012-04-23'), 'temperature': 55.1},
582 | {'date': new Date('2012-04-24'), 'temperature': 57.9},
583 | {'date': new Date('2012-04-25'), 'temperature': 57.5},
584 | {'date': new Date('2012-04-26'), 'temperature': 55.3},
585 | {'date': new Date('2012-04-27'), 'temperature': 53.5},
586 | {'date': new Date('2012-04-28'), 'temperature': 54.7},
587 | {'date': new Date('2012-04-29'), 'temperature': 54.0},
588 | {'date': new Date('2012-04-30'), 'temperature': 53.4},
589 | {'date': new Date('2012-05-01'), 'temperature': 52.7},
590 | {'date': new Date('2012-05-02'), 'temperature': 50.7},
591 | {'date': new Date('2012-05-03'), 'temperature': 52.6},
592 | {'date': new Date('2012-05-04'), 'temperature': 53.4},
593 | {'date': new Date('2012-05-05'), 'temperature': 53.1},
594 | {'date': new Date('2012-05-06'), 'temperature': 56.5},
595 | {'date': new Date('2012-05-07'), 'temperature': 55.3},
596 | {'date': new Date('2012-05-08'), 'temperature': 52.0},
597 | {'date': new Date('2012-05-09'), 'temperature': 52.4},
598 | {'date': new Date('2012-05-10'), 'temperature': 53.4},
599 | {'date': new Date('2012-05-11'), 'temperature': 53.1},
600 | {'date': new Date('2012-05-12'), 'temperature': 49.9},
601 | {'date': new Date('2012-05-13'), 'temperature': 52.0},
602 | {'date': new Date('2012-05-14'), 'temperature': 56.0},
603 | {'date': new Date('2012-05-15'), 'temperature': 53.0},
604 | {'date': new Date('2012-05-16'), 'temperature': 51.0},
605 | {'date': new Date('2012-05-17'), 'temperature': 51.4},
606 | {'date': new Date('2012-05-18'), 'temperature': 52.2},
607 | {'date': new Date('2012-05-19'), 'temperature': 52.4},
608 | {'date': new Date('2012-05-20'), 'temperature': 54.5},
609 | {'date': new Date('2012-05-21'), 'temperature': 52.8},
610 | {'date': new Date('2012-05-22'), 'temperature': 53.9},
611 | {'date': new Date('2012-05-23'), 'temperature': 56.5},
612 | {'date': new Date('2012-05-24'), 'temperature': 54.7},
613 | {'date': new Date('2012-05-25'), 'temperature': 52.5},
614 | {'date': new Date('2012-05-26'), 'temperature': 52.1},
615 | {'date': new Date('2012-05-27'), 'temperature': 52.2},
616 | {'date': new Date('2012-05-28'), 'temperature': 52.9},
617 | {'date': new Date('2012-05-29'), 'temperature': 52.1},
618 | {'date': new Date('2012-05-30'), 'temperature': 52.1},
619 | {'date': new Date('2012-05-31'), 'temperature': 53.3},
620 | {'date': new Date('2012-06-01'), 'temperature': 54.8},
621 | {'date': new Date('2012-06-02'), 'temperature': 54.0},
622 | {'date': new Date('2012-06-03'), 'temperature': 52.3},
623 | {'date': new Date('2012-06-04'), 'temperature': 55.3},
624 | {'date': new Date('2012-06-05'), 'temperature': 53.5},
625 | {'date': new Date('2012-06-06'), 'temperature': 54.1},
626 | {'date': new Date('2012-06-07'), 'temperature': 53.9},
627 | {'date': new Date('2012-06-08'), 'temperature': 54.4},
628 | {'date': new Date('2012-06-09'), 'temperature': 55.0},
629 | {'date': new Date('2012-06-10'), 'temperature': 60.0},
630 | {'date': new Date('2012-06-11'), 'temperature': 57.2},
631 | {'date': new Date('2012-06-12'), 'temperature': 55.1},
632 | {'date': new Date('2012-06-13'), 'temperature': 53.3},
633 | {'date': new Date('2012-06-14'), 'temperature': 53.4},
634 | {'date': new Date('2012-06-15'), 'temperature': 54.6},
635 | {'date': new Date('2012-06-16'), 'temperature': 57.0},
636 | {'date': new Date('2012-06-17'), 'temperature': 55.6},
637 | {'date': new Date('2012-06-18'), 'temperature': 52.5},
638 | {'date': new Date('2012-06-19'), 'temperature': 53.9},
639 | {'date': new Date('2012-06-20'), 'temperature': 55.3},
640 | {'date': new Date('2012-06-21'), 'temperature': 53.3},
641 | {'date': new Date('2012-06-22'), 'temperature': 54.1},
642 | {'date': new Date('2012-06-23'), 'temperature': 55.2},
643 | {'date': new Date('2012-06-24'), 'temperature': 55.8},
644 | {'date': new Date('2012-06-25'), 'temperature': 56.8},
645 | {'date': new Date('2012-06-26'), 'temperature': 57.5},
646 | {'date': new Date('2012-06-27'), 'temperature': 57.7},
647 | {'date': new Date('2012-06-28'), 'temperature': 56.6},
648 | {'date': new Date('2012-06-29'), 'temperature': 56.4},
649 | {'date': new Date('2012-06-30'), 'temperature': 58.4},
650 | {'date': new Date('2012-07-01'), 'temperature': 58.8},
651 | {'date': new Date('2012-07-02'), 'temperature': 56.4},
652 | {'date': new Date('2012-07-03'), 'temperature': 56.5},
653 | {'date': new Date('2012-07-04'), 'temperature': 55.8},
654 | {'date': new Date('2012-07-05'), 'temperature': 54.8},
655 | {'date': new Date('2012-07-06'), 'temperature': 54.9},
656 | {'date': new Date('2012-07-07'), 'temperature': 54.7},
657 | {'date': new Date('2012-07-08'), 'temperature': 52.8},
658 | {'date': new Date('2012-07-09'), 'temperature': 53.7},
659 | {'date': new Date('2012-07-10'), 'temperature': 53.1},
660 | {'date': new Date('2012-07-11'), 'temperature': 52.7},
661 | {'date': new Date('2012-07-12'), 'temperature': 52.0},
662 | {'date': new Date('2012-07-13'), 'temperature': 53.4},
663 | {'date': new Date('2012-07-14'), 'temperature': 54.0},
664 | {'date': new Date('2012-07-15'), 'temperature': 54.0},
665 | {'date': new Date('2012-07-16'), 'temperature': 54.5},
666 | {'date': new Date('2012-07-17'), 'temperature': 56.7},
667 | {'date': new Date('2012-07-18'), 'temperature': 57.5},
668 | {'date': new Date('2012-07-19'), 'temperature': 57.1},
669 | {'date': new Date('2012-07-20'), 'temperature': 58.1},
670 | {'date': new Date('2012-07-21'), 'temperature': 57.6},
671 | {'date': new Date('2012-07-22'), 'temperature': 56.0},
672 | {'date': new Date('2012-07-23'), 'temperature': 56.6},
673 | {'date': new Date('2012-07-24'), 'temperature': 57.8},
674 | {'date': new Date('2012-07-25'), 'temperature': 57.5},
675 | {'date': new Date('2012-07-26'), 'temperature': 56.4},
676 | {'date': new Date('2012-07-27'), 'temperature': 55.3},
677 | {'date': new Date('2012-07-28'), 'temperature': 55.0},
678 | {'date': new Date('2012-07-29'), 'temperature': 55.6},
679 | {'date': new Date('2012-07-30'), 'temperature': 55.6},
680 | {'date': new Date('2012-07-31'), 'temperature': 55.9},
681 | {'date': new Date('2012-08-01'), 'temperature': 55.4},
682 | {'date': new Date('2012-08-02'), 'temperature': 54.4},
683 | {'date': new Date('2012-08-03'), 'temperature': 53.7},
684 | {'date': new Date('2012-08-04'), 'temperature': 54.1},
685 | {'date': new Date('2012-08-05'), 'temperature': 57.8},
686 | {'date': new Date('2012-08-06'), 'temperature': 58.2},
687 | {'date': new Date('2012-08-07'), 'temperature': 58.0},
688 | {'date': new Date('2012-08-08'), 'temperature': 57.0},
689 | {'date': new Date('2012-08-09'), 'temperature': 55.0},
690 | {'date': new Date('2012-08-10'), 'temperature': 54.8},
691 | {'date': new Date('2012-08-11'), 'temperature': 53.0},
692 | {'date': new Date('2012-08-12'), 'temperature': 52.5},
693 | {'date': new Date('2012-08-13'), 'temperature': 53.3},
694 | {'date': new Date('2012-08-14'), 'temperature': 53.9},
695 | {'date': new Date('2012-08-15'), 'temperature': 56.2},
696 | {'date': new Date('2012-08-16'), 'temperature': 57.1},
697 | {'date': new Date('2012-08-17'), 'temperature': 55.3},
698 | {'date': new Date('2012-08-18'), 'temperature': 56.2},
699 | {'date': new Date('2012-08-19'), 'temperature': 54.3},
700 | {'date': new Date('2012-08-20'), 'temperature': 53.1},
701 | {'date': new Date('2012-08-21'), 'temperature': 53.4},
702 | {'date': new Date('2012-08-22'), 'temperature': 54.5},
703 | {'date': new Date('2012-08-23'), 'temperature': 55.7},
704 | {'date': new Date('2012-08-24'), 'temperature': 54.8},
705 | {'date': new Date('2012-08-25'), 'temperature': 53.8},
706 | {'date': new Date('2012-08-26'), 'temperature': 56.5},
707 | {'date': new Date('2012-08-27'), 'temperature': 58.3},
708 | {'date': new Date('2012-08-28'), 'temperature': 58.7},
709 | {'date': new Date('2012-08-29'), 'temperature': 57.5},
710 | {'date': new Date('2012-08-30'), 'temperature': 55.9},
711 | {'date': new Date('2012-08-31'), 'temperature': 55.4},
712 | {'date': new Date('2012-09-01'), 'temperature': 55.7},
713 | {'date': new Date('2012-09-02'), 'temperature': 53.1},
714 | {'date': new Date('2012-09-03'), 'temperature': 53.5},
715 | {'date': new Date('2012-09-04'), 'temperature': 52.5},
716 | {'date': new Date('2012-09-05'), 'temperature': 54.5},
717 | {'date': new Date('2012-09-06'), 'temperature': 56.3},
718 | {'date': new Date('2012-09-07'), 'temperature': 56.4},
719 | {'date': new Date('2012-09-08'), 'temperature': 56.5},
720 | {'date': new Date('2012-09-09'), 'temperature': 56.4},
721 | {'date': new Date('2012-09-10'), 'temperature': 55.4},
722 | {'date': new Date('2012-09-11'), 'temperature': 56.2},
723 | {'date': new Date('2012-09-12'), 'temperature': 55.7},
724 | {'date': new Date('2012-09-13'), 'temperature': 54.3},
725 | {'date': new Date('2012-09-14'), 'temperature': 55.2},
726 | {'date': new Date('2012-09-15'), 'temperature': 54.3},
727 | {'date': new Date('2012-09-16'), 'temperature': 52.9},
728 | {'date': new Date('2012-09-17'), 'temperature': 54.8},
729 | {'date': new Date('2012-09-18'), 'temperature': 54.8},
730 | {'date': new Date('2012-09-19'), 'temperature': 56.8},
731 | {'date': new Date('2012-09-20'), 'temperature': 55.4},
732 | {'date': new Date('2012-09-21'), 'temperature': 55.8},
733 | {'date': new Date('2012-09-22'), 'temperature': 55.9},
734 | {'date': new Date('2012-09-23'), 'temperature': 52.8},
735 | {'date': new Date('2012-09-24'), 'temperature': 54.5},
736 | {'date': new Date('2012-09-25'), 'temperature': 53.3},
737 | {'date': new Date('2012-09-26'), 'temperature': 53.6},
738 | {'date': new Date('2012-09-27'), 'temperature': 52.1},
739 | {'date': new Date('2012-09-28'), 'temperature': 52.6},
740 | {'date': new Date('2012-09-29'), 'temperature': 53.9},
741 | {'date': new Date('2012-09-30'), 'temperature': 55.1}
742 | ]
743 | },
744 | {
745 | 'id': 'Austin',
746 | 'values': [
747 | {'date': new Date('2011-10-01'), 'temperature': 72.2},
748 | {'date': new Date('2011-10-02'), 'temperature': 67.7},
749 | {'date': new Date('2011-10-03'), 'temperature': 69.4},
750 | {'date': new Date('2011-10-04'), 'temperature': 68.0},
751 | {'date': new Date('2011-10-05'), 'temperature': 72.4},
752 | {'date': new Date('2011-10-06'), 'temperature': 77.0},
753 | {'date': new Date('2011-10-07'), 'temperature': 82.3},
754 | {'date': new Date('2011-10-08'), 'temperature': 78.9},
755 | {'date': new Date('2011-10-09'), 'temperature': 68.8},
756 | {'date': new Date('2011-10-10'), 'temperature': 68.7},
757 | {'date': new Date('2011-10-11'), 'temperature': 70.3},
758 | {'date': new Date('2011-10-12'), 'temperature': 75.3},
759 | {'date': new Date('2011-10-13'), 'temperature': 76.6},
760 | {'date': new Date('2011-10-14'), 'temperature': 66.6},
761 | {'date': new Date('2011-10-15'), 'temperature': 68.0},
762 | {'date': new Date('2011-10-16'), 'temperature': 70.6},
763 | {'date': new Date('2011-10-17'), 'temperature': 71.1},
764 | {'date': new Date('2011-10-18'), 'temperature': 70.0},
765 | {'date': new Date('2011-10-19'), 'temperature': 61.6},
766 | {'date': new Date('2011-10-20'), 'temperature': 57.4},
767 | {'date': new Date('2011-10-21'), 'temperature': 64.3},
768 | {'date': new Date('2011-10-22'), 'temperature': 72.4},
769 | {'date': new Date('2011-10-23'), 'temperature': 72.4},
770 | {'date': new Date('2011-10-24'), 'temperature': 72.5},
771 | {'date': new Date('2011-10-25'), 'temperature': 72.7},
772 | {'date': new Date('2011-10-26'), 'temperature': 73.4},
773 | {'date': new Date('2011-10-27'), 'temperature': 70.7},
774 | {'date': new Date('2011-10-28'), 'temperature': 56.8},
775 | {'date': new Date('2011-10-29'), 'temperature': 51.0},
776 | {'date': new Date('2011-10-30'), 'temperature': 54.9},
777 | {'date': new Date('2011-10-31'), 'temperature': 58.8},
778 | {'date': new Date('2011-11-01'), 'temperature': 62.6},
779 | {'date': new Date('2011-11-02'), 'temperature': 71.0},
780 | {'date': new Date('2011-11-03'), 'temperature': 58.4},
781 | {'date': new Date('2011-11-04'), 'temperature': 45.1},
782 | {'date': new Date('2011-11-05'), 'temperature': 52.2},
783 | {'date': new Date('2011-11-06'), 'temperature': 73.0},
784 | {'date': new Date('2011-11-07'), 'temperature': 75.4},
785 | {'date': new Date('2011-11-08'), 'temperature': 72.1},
786 | {'date': new Date('2011-11-09'), 'temperature': 56.6},
787 | {'date': new Date('2011-11-10'), 'temperature': 55.4},
788 | {'date': new Date('2011-11-11'), 'temperature': 46.7},
789 | {'date': new Date('2011-11-12'), 'temperature': 62.0},
790 | {'date': new Date('2011-11-13'), 'temperature': 71.6},
791 | {'date': new Date('2011-11-14'), 'temperature': 75.5},
792 | {'date': new Date('2011-11-15'), 'temperature': 72.1},
793 | {'date': new Date('2011-11-16'), 'temperature': 65.7},
794 | {'date': new Date('2011-11-17'), 'temperature': 56.8},
795 | {'date': new Date('2011-11-18'), 'temperature': 49.9},
796 | {'date': new Date('2011-11-19'), 'temperature': 71.7},
797 | {'date': new Date('2011-11-20'), 'temperature': 77.7},
798 | {'date': new Date('2011-11-21'), 'temperature': 76.4},
799 | {'date': new Date('2011-11-22'), 'temperature': 68.8},
800 | {'date': new Date('2011-11-23'), 'temperature': 57.0},
801 | {'date': new Date('2011-11-24'), 'temperature': 55.5},
802 | {'date': new Date('2011-11-25'), 'temperature': 61.6},
803 | {'date': new Date('2011-11-26'), 'temperature': 64.1},
804 | {'date': new Date('2011-11-27'), 'temperature': 51.1},
805 | {'date': new Date('2011-11-28'), 'temperature': 43.0},
806 | {'date': new Date('2011-11-29'), 'temperature': 46.4},
807 | {'date': new Date('2011-11-30'), 'temperature': 48.0},
808 | {'date': new Date('2011-12-01'), 'temperature': 48.1},
809 | {'date': new Date('2011-12-02'), 'temperature': 60.6},
810 | {'date': new Date('2011-12-03'), 'temperature': 62.6},
811 | {'date': new Date('2011-12-04'), 'temperature': 57.1},
812 | {'date': new Date('2011-12-05'), 'temperature': 44.2},
813 | {'date': new Date('2011-12-06'), 'temperature': 37.4},
814 | {'date': new Date('2011-12-07'), 'temperature': 35.0},
815 | {'date': new Date('2011-12-08'), 'temperature': 37.0},
816 | {'date': new Date('2011-12-09'), 'temperature': 45.4},
817 | {'date': new Date('2011-12-10'), 'temperature': 50.7},
818 | {'date': new Date('2011-12-11'), 'temperature': 48.6},
819 | {'date': new Date('2011-12-12'), 'temperature': 52.2},
820 | {'date': new Date('2011-12-13'), 'temperature': 60.8},
821 | {'date': new Date('2011-12-14'), 'temperature': 70.0},
822 | {'date': new Date('2011-12-15'), 'temperature': 64.2},
823 | {'date': new Date('2011-12-16'), 'temperature': 50.9},
824 | {'date': new Date('2011-12-17'), 'temperature': 51.6},
825 | {'date': new Date('2011-12-18'), 'temperature': 55.2},
826 | {'date': new Date('2011-12-19'), 'temperature': 62.1},
827 | {'date': new Date('2011-12-20'), 'temperature': 56.3},
828 | {'date': new Date('2011-12-21'), 'temperature': 47.2},
829 | {'date': new Date('2011-12-22'), 'temperature': 52.3},
830 | {'date': new Date('2011-12-23'), 'temperature': 45.2},
831 | {'date': new Date('2011-12-24'), 'temperature': 43.6},
832 | {'date': new Date('2011-12-25'), 'temperature': 42.9},
833 | {'date': new Date('2011-12-26'), 'temperature': 48.2},
834 | {'date': new Date('2011-12-27'), 'temperature': 45.4},
835 | {'date': new Date('2011-12-28'), 'temperature': 44.2},
836 | {'date': new Date('2011-12-29'), 'temperature': 50.4},
837 | {'date': new Date('2011-12-30'), 'temperature': 52.4},
838 | {'date': new Date('2011-12-31'), 'temperature': 53.5},
839 | {'date': new Date('2012-01-01'), 'temperature': 55.9},
840 | {'date': new Date('2012-01-02'), 'temperature': 48.2},
841 | {'date': new Date('2012-01-03'), 'temperature': 41.0},
842 | {'date': new Date('2012-01-04'), 'temperature': 48.9},
843 | {'date': new Date('2012-01-05'), 'temperature': 54.8},
844 | {'date': new Date('2012-01-06'), 'temperature': 61.2},
845 | {'date': new Date('2012-01-07'), 'temperature': 59.7},
846 | {'date': new Date('2012-01-08'), 'temperature': 52.5},
847 | {'date': new Date('2012-01-09'), 'temperature': 54.0},
848 | {'date': new Date('2012-01-10'), 'temperature': 47.7},
849 | {'date': new Date('2012-01-11'), 'temperature': 49.2},
850 | {'date': new Date('2012-01-12'), 'temperature': 48.4},
851 | {'date': new Date('2012-01-13'), 'temperature': 40.2},
852 | {'date': new Date('2012-01-14'), 'temperature': 43.9},
853 | {'date': new Date('2012-01-15'), 'temperature': 45.2},
854 | {'date': new Date('2012-01-16'), 'temperature': 65.0},
855 | {'date': new Date('2012-01-17'), 'temperature': 68.2},
856 | {'date': new Date('2012-01-18'), 'temperature': 47.5},
857 | {'date': new Date('2012-01-19'), 'temperature': 57.1},
858 | {'date': new Date('2012-01-20'), 'temperature': 61.9},
859 | {'date': new Date('2012-01-21'), 'temperature': 54.6},
860 | {'date': new Date('2012-01-22'), 'temperature': 56.7},
861 | {'date': new Date('2012-01-23'), 'temperature': 54.4},
862 | {'date': new Date('2012-01-24'), 'temperature': 52.7},
863 | {'date': new Date('2012-01-25'), 'temperature': 61.8},
864 | {'date': new Date('2012-01-26'), 'temperature': 55.0},
865 | {'date': new Date('2012-01-27'), 'temperature': 50.7},
866 | {'date': new Date('2012-01-28'), 'temperature': 52.9},
867 | {'date': new Date('2012-01-29'), 'temperature': 44.4},
868 | {'date': new Date('2012-01-30'), 'temperature': 49.1},
869 | {'date': new Date('2012-01-31'), 'temperature': 62.8},
870 | {'date': new Date('2012-02-01'), 'temperature': 64.6},
871 | {'date': new Date('2012-02-02'), 'temperature': 61.1},
872 | {'date': new Date('2012-02-03'), 'temperature': 70.0},
873 | {'date': new Date('2012-02-04'), 'temperature': 61.3},
874 | {'date': new Date('2012-02-05'), 'temperature': 48.2},
875 | {'date': new Date('2012-02-06'), 'temperature': 44.2},
876 | {'date': new Date('2012-02-07'), 'temperature': 51.3},
877 | {'date': new Date('2012-02-08'), 'temperature': 49.2},
878 | {'date': new Date('2012-02-09'), 'temperature': 45.7},
879 | {'date': new Date('2012-02-10'), 'temperature': 54.1},
880 | {'date': new Date('2012-02-11'), 'temperature': 44.9},
881 | {'date': new Date('2012-02-12'), 'temperature': 36.5},
882 | {'date': new Date('2012-02-13'), 'temperature': 44.8},
883 | {'date': new Date('2012-02-14'), 'temperature': 52.3},
884 | {'date': new Date('2012-02-15'), 'temperature': 68.0},
885 | {'date': new Date('2012-02-16'), 'temperature': 54.6},
886 | {'date': new Date('2012-02-17'), 'temperature': 53.8},
887 | {'date': new Date('2012-02-18'), 'temperature': 56.2},
888 | {'date': new Date('2012-02-19'), 'temperature': 50.8},
889 | {'date': new Date('2012-02-20'), 'temperature': 53.0},
890 | {'date': new Date('2012-02-21'), 'temperature': 61.0},
891 | {'date': new Date('2012-02-22'), 'temperature': 68.8},
892 | {'date': new Date('2012-02-23'), 'temperature': 69.4},
893 | {'date': new Date('2012-02-24'), 'temperature': 59.3},
894 | {'date': new Date('2012-02-25'), 'temperature': 47.2},
895 | {'date': new Date('2012-02-26'), 'temperature': 47.7},
896 | {'date': new Date('2012-02-27'), 'temperature': 61.9},
897 | {'date': new Date('2012-02-28'), 'temperature': 67.2},
898 | {'date': new Date('2012-02-29'), 'temperature': 70.1},
899 | {'date': new Date('2012-03-01'), 'temperature': 62.1},
900 | {'date': new Date('2012-03-02'), 'temperature': 72.7},
901 | {'date': new Date('2012-03-03'), 'temperature': 59.0},
902 | {'date': new Date('2012-03-04'), 'temperature': 51.8},
903 | {'date': new Date('2012-03-05'), 'temperature': 55.0},
904 | {'date': new Date('2012-03-06'), 'temperature': 61.8},
905 | {'date': new Date('2012-03-07'), 'temperature': 67.1},
906 | {'date': new Date('2012-03-08'), 'temperature': 72.0},
907 | {'date': new Date('2012-03-09'), 'temperature': 46.4},
908 | {'date': new Date('2012-03-10'), 'temperature': 46.7},
909 | {'date': new Date('2012-03-11'), 'temperature': 56.9},
910 | {'date': new Date('2012-03-12'), 'temperature': 61.9},
911 | {'date': new Date('2012-03-13'), 'temperature': 68.8},
912 | {'date': new Date('2012-03-14'), 'temperature': 71.9},
913 | {'date': new Date('2012-03-15'), 'temperature': 72.0},
914 | {'date': new Date('2012-03-16'), 'temperature': 72.5},
915 | {'date': new Date('2012-03-17'), 'temperature': 71.7},
916 | {'date': new Date('2012-03-18'), 'temperature': 71.1},
917 | {'date': new Date('2012-03-19'), 'temperature': 73.0},
918 | {'date': new Date('2012-03-20'), 'temperature': 63.8},
919 | {'date': new Date('2012-03-21'), 'temperature': 60.0},
920 | {'date': new Date('2012-03-22'), 'temperature': 62.3},
921 | {'date': new Date('2012-03-23'), 'temperature': 61.1},
922 | {'date': new Date('2012-03-24'), 'temperature': 62.0},
923 | {'date': new Date('2012-03-25'), 'temperature': 64.6},
924 | {'date': new Date('2012-03-26'), 'temperature': 66.0},
925 | {'date': new Date('2012-03-27'), 'temperature': 65.8},
926 | {'date': new Date('2012-03-28'), 'temperature': 69.2},
927 | {'date': new Date('2012-03-29'), 'temperature': 69.5},
928 | {'date': new Date('2012-03-30'), 'temperature': 73.5},
929 | {'date': new Date('2012-03-31'), 'temperature': 73.9},
930 | {'date': new Date('2012-04-01'), 'temperature': 75.3},
931 | {'date': new Date('2012-04-02'), 'temperature': 75.4},
932 | {'date': new Date('2012-04-03'), 'temperature': 77.3},
933 | {'date': new Date('2012-04-04'), 'temperature': 67.0},
934 | {'date': new Date('2012-04-05'), 'temperature': 71.1},
935 | {'date': new Date('2012-04-06'), 'temperature': 70.4},
936 | {'date': new Date('2012-04-07'), 'temperature': 73.6},
937 | {'date': new Date('2012-04-08'), 'temperature': 71.1},
938 | {'date': new Date('2012-04-09'), 'temperature': 70.0},
939 | {'date': new Date('2012-04-10'), 'temperature': 69.0},
940 | {'date': new Date('2012-04-11'), 'temperature': 69.2},
941 | {'date': new Date('2012-04-12'), 'temperature': 74.5},
942 | {'date': new Date('2012-04-13'), 'temperature': 73.4},
943 | {'date': new Date('2012-04-14'), 'temperature': 76.0},
944 | {'date': new Date('2012-04-15'), 'temperature': 74.5},
945 | {'date': new Date('2012-04-16'), 'temperature': 63.6},
946 | {'date': new Date('2012-04-17'), 'temperature': 67.3},
947 | {'date': new Date('2012-04-18'), 'temperature': 65.1},
948 | {'date': new Date('2012-04-19'), 'temperature': 67.9},
949 | {'date': new Date('2012-04-20'), 'temperature': 68.9},
950 | {'date': new Date('2012-04-21'), 'temperature': 65.1},
951 | {'date': new Date('2012-04-22'), 'temperature': 65.4},
952 | {'date': new Date('2012-04-23'), 'temperature': 70.1},
953 | {'date': new Date('2012-04-24'), 'temperature': 67.0},
954 | {'date': new Date('2012-04-25'), 'temperature': 75.4},
955 | {'date': new Date('2012-04-26'), 'temperature': 77.5},
956 | {'date': new Date('2012-04-27'), 'temperature': 77.0},
957 | {'date': new Date('2012-04-28'), 'temperature': 77.7},
958 | {'date': new Date('2012-04-29'), 'temperature': 77.7},
959 | {'date': new Date('2012-04-30'), 'temperature': 77.7},
960 | {'date': new Date('2012-05-01'), 'temperature': 77.0},
961 | {'date': new Date('2012-05-02'), 'temperature': 77.9},
962 | {'date': new Date('2012-05-03'), 'temperature': 79.1},
963 | {'date': new Date('2012-05-04'), 'temperature': 80.1},
964 | {'date': new Date('2012-05-05'), 'temperature': 82.1},
965 | {'date': new Date('2012-05-06'), 'temperature': 79.0},
966 | {'date': new Date('2012-05-07'), 'temperature': 79.8},
967 | {'date': new Date('2012-05-08'), 'temperature': 70.0},
968 | {'date': new Date('2012-05-09'), 'temperature': 69.8},
969 | {'date': new Date('2012-05-10'), 'temperature': 71.3},
970 | {'date': new Date('2012-05-11'), 'temperature': 69.4},
971 | {'date': new Date('2012-05-12'), 'temperature': 72.0},
972 | {'date': new Date('2012-05-13'), 'temperature': 72.4},
973 | {'date': new Date('2012-05-14'), 'temperature': 72.5},
974 | {'date': new Date('2012-05-15'), 'temperature': 67.6},
975 | {'date': new Date('2012-05-16'), 'temperature': 69.0},
976 | {'date': new Date('2012-05-17'), 'temperature': 72.7},
977 | {'date': new Date('2012-05-18'), 'temperature': 73.7},
978 | {'date': new Date('2012-05-19'), 'temperature': 77.5},
979 | {'date': new Date('2012-05-20'), 'temperature': 75.8},
980 | {'date': new Date('2012-05-21'), 'temperature': 76.9},
981 | {'date': new Date('2012-05-22'), 'temperature': 78.8},
982 | {'date': new Date('2012-05-23'), 'temperature': 77.7},
983 | {'date': new Date('2012-05-24'), 'temperature': 80.6},
984 | {'date': new Date('2012-05-25'), 'temperature': 81.4},
985 | {'date': new Date('2012-05-26'), 'temperature': 82.3},
986 | {'date': new Date('2012-05-27'), 'temperature': 80.3},
987 | {'date': new Date('2012-05-28'), 'temperature': 80.3},
988 | {'date': new Date('2012-05-29'), 'temperature': 82.2},
989 | {'date': new Date('2012-05-30'), 'temperature': 81.9},
990 | {'date': new Date('2012-05-31'), 'temperature': 82.4},
991 | {'date': new Date('2012-06-01'), 'temperature': 77.9},
992 | {'date': new Date('2012-06-02'), 'temperature': 81.1},
993 | {'date': new Date('2012-06-03'), 'temperature': 82.2},
994 | {'date': new Date('2012-06-04'), 'temperature': 81.2},
995 | {'date': new Date('2012-06-05'), 'temperature': 83.0},
996 | {'date': new Date('2012-06-06'), 'temperature': 83.2},
997 | {'date': new Date('2012-06-07'), 'temperature': 82.1},
998 | {'date': new Date('2012-06-08'), 'temperature': 77.5},
999 | {'date': new Date('2012-06-09'), 'temperature': 77.9},
1000 | {'date': new Date('2012-06-10'), 'temperature': 82.9},
1001 | {'date': new Date('2012-06-11'), 'temperature': 86.8},
1002 | {'date': new Date('2012-06-12'), 'temperature': 85.3},
1003 | {'date': new Date('2012-06-13'), 'temperature': 76.9},
1004 | {'date': new Date('2012-06-14'), 'temperature': 84.5},
1005 | {'date': new Date('2012-06-15'), 'temperature': 84.4},
1006 | {'date': new Date('2012-06-16'), 'temperature': 83.8},
1007 | {'date': new Date('2012-06-17'), 'temperature': 82.5},
1008 | {'date': new Date('2012-06-18'), 'temperature': 82.9},
1009 | {'date': new Date('2012-06-19'), 'temperature': 82.5},
1010 | {'date': new Date('2012-06-20'), 'temperature': 81.3},
1011 | {'date': new Date('2012-06-21'), 'temperature': 80.8},
1012 | {'date': new Date('2012-06-22'), 'temperature': 81.7},
1013 | {'date': new Date('2012-06-23'), 'temperature': 83.9},
1014 | {'date': new Date('2012-06-24'), 'temperature': 85.5},
1015 | {'date': new Date('2012-06-25'), 'temperature': 87.2},
1016 | {'date': new Date('2012-06-26'), 'temperature': 88.0},
1017 | {'date': new Date('2012-06-27'), 'temperature': 89.6},
1018 | {'date': new Date('2012-06-28'), 'temperature': 86.7},
1019 | {'date': new Date('2012-06-29'), 'temperature': 85.3},
1020 | {'date': new Date('2012-06-30'), 'temperature': 81.7},
1021 | {'date': new Date('2012-07-01'), 'temperature': 78.5},
1022 | {'date': new Date('2012-07-02'), 'temperature': 83.1},
1023 | {'date': new Date('2012-07-03'), 'temperature': 83.1},
1024 | {'date': new Date('2012-07-04'), 'temperature': 84.5},
1025 | {'date': new Date('2012-07-05'), 'temperature': 84.6},
1026 | {'date': new Date('2012-07-06'), 'temperature': 84.2},
1027 | {'date': new Date('2012-07-07'), 'temperature': 86.7},
1028 | {'date': new Date('2012-07-08'), 'temperature': 84.3},
1029 | {'date': new Date('2012-07-09'), 'temperature': 83.7},
1030 | {'date': new Date('2012-07-10'), 'temperature': 77.1},
1031 | {'date': new Date('2012-07-11'), 'temperature': 77.4},
1032 | {'date': new Date('2012-07-12'), 'temperature': 80.6},
1033 | {'date': new Date('2012-07-13'), 'temperature': 81.4},
1034 | {'date': new Date('2012-07-14'), 'temperature': 80.2},
1035 | {'date': new Date('2012-07-15'), 'temperature': 81.8},
1036 | {'date': new Date('2012-07-16'), 'temperature': 77.3},
1037 | {'date': new Date('2012-07-17'), 'temperature': 80.8},
1038 | {'date': new Date('2012-07-18'), 'temperature': 81.6},
1039 | {'date': new Date('2012-07-19'), 'temperature': 80.9},
1040 | {'date': new Date('2012-07-20'), 'temperature': 83.9},
1041 | {'date': new Date('2012-07-21'), 'temperature': 85.6},
1042 | {'date': new Date('2012-07-22'), 'temperature': 83.6},
1043 | {'date': new Date('2012-07-23'), 'temperature': 84.0},
1044 | {'date': new Date('2012-07-24'), 'temperature': 83.0},
1045 | {'date': new Date('2012-07-25'), 'temperature': 84.8},
1046 | {'date': new Date('2012-07-26'), 'temperature': 84.4},
1047 | {'date': new Date('2012-07-27'), 'temperature': 84.3},
1048 | {'date': new Date('2012-07-28'), 'temperature': 83.9},
1049 | {'date': new Date('2012-07-29'), 'temperature': 85.0},
1050 | {'date': new Date('2012-07-30'), 'temperature': 84.9},
1051 | {'date': new Date('2012-07-31'), 'temperature': 86.3},
1052 | {'date': new Date('2012-08-01'), 'temperature': 86.5},
1053 | {'date': new Date('2012-08-02'), 'temperature': 85.8},
1054 | {'date': new Date('2012-08-03'), 'temperature': 85.3},
1055 | {'date': new Date('2012-08-04'), 'temperature': 86.0},
1056 | {'date': new Date('2012-08-05'), 'temperature': 84.2},
1057 | {'date': new Date('2012-08-06'), 'temperature': 81.9},
1058 | {'date': new Date('2012-08-07'), 'temperature': 86.5},
1059 | {'date': new Date('2012-08-08'), 'temperature': 86.1},
1060 | {'date': new Date('2012-08-09'), 'temperature': 86.8},
1061 | {'date': new Date('2012-08-10'), 'temperature': 88.0},
1062 | {'date': new Date('2012-08-11'), 'temperature': 85.1},
1063 | {'date': new Date('2012-08-12'), 'temperature': 87.4},
1064 | {'date': new Date('2012-08-13'), 'temperature': 88.0},
1065 | {'date': new Date('2012-08-14'), 'temperature': 88.0},
1066 | {'date': new Date('2012-08-15'), 'temperature': 87.2},
1067 | {'date': new Date('2012-08-16'), 'temperature': 86.1},
1068 | {'date': new Date('2012-08-17'), 'temperature': 86.8},
1069 | {'date': new Date('2012-08-18'), 'temperature': 84.9},
1070 | {'date': new Date('2012-08-19'), 'temperature': 76.8},
1071 | {'date': new Date('2012-08-20'), 'temperature': 80.6},
1072 | {'date': new Date('2012-08-21'), 'temperature': 80.0},
1073 | {'date': new Date('2012-08-22'), 'temperature': 78.2},
1074 | {'date': new Date('2012-08-23'), 'temperature': 79.1},
1075 | {'date': new Date('2012-08-24'), 'temperature': 81.9},
1076 | {'date': new Date('2012-08-25'), 'temperature': 84.7},
1077 | {'date': new Date('2012-08-26'), 'temperature': 83.5},
1078 | {'date': new Date('2012-08-27'), 'temperature': 82.1},
1079 | {'date': new Date('2012-08-28'), 'temperature': 84.0},
1080 | {'date': new Date('2012-08-29'), 'temperature': 85.7},
1081 | {'date': new Date('2012-08-30'), 'temperature': 87.2},
1082 | {'date': new Date('2012-08-31'), 'temperature': 82.9},
1083 | {'date': new Date('2012-09-01'), 'temperature': 84.8},
1084 | {'date': new Date('2012-09-02'), 'temperature': 83.9},
1085 | {'date': new Date('2012-09-03'), 'temperature': 85.5},
1086 | {'date': new Date('2012-09-04'), 'temperature': 86.4},
1087 | {'date': new Date('2012-09-05'), 'temperature': 85.8},
1088 | {'date': new Date('2012-09-06'), 'temperature': 85.4},
1089 | {'date': new Date('2012-09-07'), 'temperature': 85.3},
1090 | {'date': new Date('2012-09-08'), 'temperature': 81.9},
1091 | {'date': new Date('2012-09-09'), 'temperature': 74.8},
1092 | {'date': new Date('2012-09-10'), 'temperature': 71.6},
1093 | {'date': new Date('2012-09-11'), 'temperature': 75.9},
1094 | {'date': new Date('2012-09-12'), 'temperature': 82.1},
1095 | {'date': new Date('2012-09-13'), 'temperature': 80.5},
1096 | {'date': new Date('2012-09-14'), 'temperature': 70.0},
1097 | {'date': new Date('2012-09-15'), 'temperature': 71.2},
1098 | {'date': new Date('2012-09-16'), 'temperature': 70.3},
1099 | {'date': new Date('2012-09-17'), 'temperature': 72.1},
1100 | {'date': new Date('2012-09-18'), 'temperature': 73.7},
1101 | {'date': new Date('2012-09-19'), 'temperature': 72.7},
1102 | {'date': new Date('2012-09-20'), 'temperature': 71.7},
1103 | {'date': new Date('2012-09-21'), 'temperature': 72.9},
1104 | {'date': new Date('2012-09-22'), 'temperature': 73.1},
1105 | {'date': new Date('2012-09-23'), 'temperature': 75.6},
1106 | {'date': new Date('2012-09-24'), 'temperature': 78.3},
1107 | {'date': new Date('2012-09-25'), 'temperature': 78.3},
1108 | {'date': new Date('2012-09-26'), 'temperature': 79.6},
1109 | {'date': new Date('2012-09-27'), 'temperature': 76.4},
1110 | {'date': new Date('2012-09-28'), 'temperature': 77.2},
1111 | {'date': new Date('2012-09-29'), 'temperature': 75.2},
1112 | {'date': new Date('2012-09-30'), 'temperature': 71.9}
1113 | ]
1114 | },
1115 | ];
1116 |
--------------------------------------------------------------------------------
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datencia/d3js-angular-examples/15fb9bfac99246a8f8985f8e464fc1bebeb3823d/src/assets/.gitkeep
--------------------------------------------------------------------------------
/src/browserslist:
--------------------------------------------------------------------------------
1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 | # For IE 9-11 support, please uncomment the last line of the file and adjust as needed
5 | > 0.5%
6 | last 2 versions
7 | Firefox ESR
8 | not dead
9 | # IE 9-11
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false
7 | };
8 |
9 | /*
10 | * In development mode, to ignore zone related error stack frames such as
11 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
12 | * import the following file, but please comment it out in production mode
13 | * because it will have performance impact when throw error
14 | */
15 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
16 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datencia/d3js-angular-examples/15fb9bfac99246a8f8985f8e464fc1bebeb3823d/src/favicon.ico
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | D3jsAngularExample
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
32 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.log(err));
13 |
--------------------------------------------------------------------------------
/src/polyfills.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * This file includes polyfills needed by Angular and is loaded before the app.
3 | * You can add your own extra polyfills to this file.
4 | *
5 | * This file is divided into 2 sections:
6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
8 | * file.
9 | *
10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13 | *
14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
15 | */
16 |
17 | /***************************************************************************************************
18 | * BROWSER POLYFILLS
19 | */
20 |
21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/
22 | // import 'core-js/es6/symbol';
23 | // import 'core-js/es6/object';
24 | // import 'core-js/es6/function';
25 | // import 'core-js/es6/parse-int';
26 | // import 'core-js/es6/parse-float';
27 | // import 'core-js/es6/number';
28 | // import 'core-js/es6/math';
29 | // import 'core-js/es6/string';
30 | // import 'core-js/es6/date';
31 | // import 'core-js/es6/array';
32 | // import 'core-js/es6/regexp';
33 | // import 'core-js/es6/map';
34 | // import 'core-js/es6/weak-map';
35 | // import 'core-js/es6/set';
36 |
37 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */
38 | // import 'classlist.js'; // Run `npm install --save classlist.js`.
39 |
40 | /** IE10 and IE11 requires the following for the Reflect API. */
41 | // import 'core-js/es6/reflect';
42 |
43 |
44 | /** Evergreen browsers require these. **/
45 | // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
46 | import 'core-js/es7/reflect';
47 |
48 |
49 | /**
50 | * Web Animations `@angular/platform-browser/animations`
51 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
52 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
53 | **/
54 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
55 |
56 | /**
57 | * By default, zone.js will patch all possible macroTask and DomEvents
58 | * user can disable parts of macroTask/DomEvents patch by setting following flags
59 | */
60 |
61 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
62 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
63 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
64 |
65 | /*
66 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
67 | * with the following flag, it will bypass `zone.js` patch for IE/Edge
68 | */
69 | // (window as any).__Zone_enable_cross_context_check = true;
70 |
71 | /***************************************************************************************************
72 | * Zone JS is required by default for Angular itself.
73 | */
74 | import 'zone.js/dist/zone'; // Included with Angular CLI.
75 |
76 |
77 |
78 | /***************************************************************************************************
79 | * APPLICATION IMPORTS
80 | */
81 |
--------------------------------------------------------------------------------
/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | @import "~@angular/material/prebuilt-themes/indigo-pink.css";
4 |
--------------------------------------------------------------------------------
/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "es2015",
6 | "types": []
7 | },
8 | "exclude": [
9 | "src/test.ts",
10 | "**/*.spec.ts"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/src/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/spec",
5 | "module": "commonjs",
6 | "types": [
7 | "jasmine",
8 | "node"
9 | ]
10 | },
11 | "files": [
12 | "test.ts",
13 | "polyfills.ts"
14 | ],
15 | "include": [
16 | "**/*.spec.ts",
17 | "**/*.d.ts"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "moduleResolution": "node",
9 | "emitDecoratorMetadata": true,
10 | "experimentalDecorators": true,
11 | "target": "es5",
12 | "typeRoots": [
13 | "node_modules/@types"
14 | ],
15 | "lib": [
16 | "es2017",
17 | "dom"
18 | ]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rulesDirectory": [
3 | "node_modules/codelyzer"
4 | ],
5 | "rules": {
6 | "arrow-return-shorthand": true,
7 | "callable-types": true,
8 | "class-name": true,
9 | "comment-format": [
10 | true,
11 | "check-space"
12 | ],
13 | "curly": true,
14 | "deprecation": {
15 | "severity": "warn"
16 | },
17 | "eofline": true,
18 | "forin": true,
19 | "import-blacklist": [
20 | true,
21 | "rxjs/Rx"
22 | ],
23 | "import-spacing": true,
24 | "indent": [
25 | true,
26 | "spaces"
27 | ],
28 | "interface-over-type-literal": true,
29 | "label-position": true,
30 | "max-line-length": [
31 | true,
32 | 140
33 | ],
34 | "member-access": false,
35 | "member-ordering": [
36 | true,
37 | {
38 | "order": [
39 | "static-field",
40 | "instance-field",
41 | "static-method",
42 | "instance-method"
43 | ]
44 | }
45 | ],
46 | "no-arg": true,
47 | "no-bitwise": true,
48 | "no-console": [
49 | true,
50 | "debug",
51 | "info",
52 | "time",
53 | "timeEnd",
54 | "trace"
55 | ],
56 | "no-construct": true,
57 | "no-debugger": true,
58 | "no-duplicate-super": true,
59 | "no-empty": false,
60 | "no-empty-interface": true,
61 | "no-eval": true,
62 | "no-inferrable-types": [
63 | true,
64 | "ignore-params"
65 | ],
66 | "no-misused-new": true,
67 | "no-non-null-assertion": true,
68 | "no-shadowed-variable": true,
69 | "no-string-literal": false,
70 | "no-string-throw": true,
71 | "no-switch-case-fall-through": true,
72 | "no-trailing-whitespace": true,
73 | "no-unnecessary-initializer": true,
74 | "no-unused-expression": true,
75 | "no-use-before-declare": true,
76 | "no-var-keyword": true,
77 | "object-literal-sort-keys": false,
78 | "one-line": [
79 | true,
80 | "check-open-brace",
81 | "check-catch",
82 | "check-else",
83 | "check-whitespace"
84 | ],
85 | "prefer-const": true,
86 | "quotemark": [
87 | true,
88 | "single"
89 | ],
90 | "radix": true,
91 | "semicolon": [
92 | true,
93 | "always"
94 | ],
95 | "triple-equals": [
96 | true,
97 | "allow-null-check"
98 | ],
99 | "typedef-whitespace": [
100 | true,
101 | {
102 | "call-signature": "nospace",
103 | "index-signature": "nospace",
104 | "parameter": "nospace",
105 | "property-declaration": "nospace",
106 | "variable-declaration": "nospace"
107 | }
108 | ],
109 | "unified-signatures": true,
110 | "variable-name": false,
111 | "whitespace": [
112 | true,
113 | "check-branch",
114 | "check-decl",
115 | "check-operator",
116 | "check-separator",
117 | "check-type"
118 | ],
119 | "no-output-on-prefix": true,
120 | "use-input-property-decorator": true,
121 | "use-output-property-decorator": true,
122 | "use-host-property-decorator": true,
123 | "no-input-rename": true,
124 | "no-output-rename": true,
125 | "use-life-cycle-interface": true,
126 | "use-pipe-transform-interface": true,
127 | "component-class-suffix": true,
128 | "directive-class-suffix": true
129 | }
130 | }
131 |
--------------------------------------------------------------------------------