├── .gitignore
├── README.md
├── index.html
├── slides
├── .gitignore
├── .travis.yml
├── Gruntfile.js
├── LICENSE
├── README.md
├── css
│ ├── print
│ │ ├── paper.css
│ │ └── pdf.css
│ ├── reveal.css
│ └── theme
│ │ ├── README.md
│ │ ├── beige.css
│ │ ├── blood.css
│ │ ├── default.css
│ │ ├── moon.css
│ │ ├── night.css
│ │ ├── serif.css
│ │ ├── simple.css
│ │ ├── sky.css
│ │ ├── solarized.css
│ │ ├── source
│ │ ├── beige.scss
│ │ ├── blood.scss
│ │ ├── default.scss
│ │ ├── moon.scss
│ │ ├── night.scss
│ │ ├── serif.scss
│ │ ├── simple.scss
│ │ ├── sky.scss
│ │ └── solarized.scss
│ │ └── template
│ │ ├── mixins.scss
│ │ ├── settings.scss
│ │ └── theme.scss
├── demos
│ ├── AI-editor
│ │ ├── angular.js
│ │ ├── app.js
│ │ ├── css
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.min.css
│ │ │ └── style.css
│ │ ├── d3.js
│ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ └── glyphicons-halflings-regular.woff
│ │ └── index.html
│ ├── a-donut-chart-editor
│ │ ├── angular-route.js
│ │ ├── angular.js
│ │ ├── app.js
│ │ ├── d3.js
│ │ ├── donut-chart.directive.js
│ │ ├── edit.html
│ │ ├── graph.html
│ │ ├── index.html
│ │ ├── live.html
│ │ └── style.css
│ ├── arch-angels
│ │ ├── Church_Heart_of_the_Andes.jpg
│ │ ├── angel.png
│ │ ├── d3.js
│ │ └── index.html
│ ├── d3-intro
│ │ ├── d3.js
│ │ └── div-bar-chart.html
│ ├── lets-make-a-donut-chart-directive
│ │ ├── angular.js
│ │ ├── d3.js
│ │ ├── v0-directive.html
│ │ ├── v0.1-d3-layout.pie.html
│ │ ├── v0.2-d3-layout.pie.html
│ │ ├── v0.5-directive.html
│ │ ├── v0.5.1-directive.html
│ │ ├── v0.5.2-directive.html
│ │ ├── v1-directive.html
│ │ ├── v1.1-directive.html
│ │ ├── v2-sharing-data.html
│ │ ├── v2.1-sharing-data.html
│ │ ├── v3-updating-data.html
│ │ ├── v3.1-updating-data.html
│ │ ├── v4-updating-shared-data-with-watch-and-apply.html
│ │ ├── v4.1-updating-shared-data-with-watch-and-apply.html
│ │ ├── v5-ng-repeat-and-scope-inheritance-part1.html
│ │ ├── v6-ng-repeat-and-scope-inheritance-part2.html
│ │ ├── v7-animation.html
│ │ ├── v8-enter-and-exit.html
│ │ └── v9-using-a-controller-and-seperating-out-business-logic.html
│ ├── life-expectancy
│ │ ├── 12s0108.xls
│ │ ├── angular.js
│ │ ├── d3.js
│ │ ├── index.html
│ │ ├── life-expectancy-by-sex-race-and-state.csv
│ │ ├── states.topojson
│ │ ├── style.css
│ │ └── topojson.js
│ ├── live-code-donut-chart
│ │ ├── angular.js
│ │ ├── arctween.snippet.js
│ │ ├── d3.js
│ │ ├── enter-exit.snippet.js
│ │ ├── index.html
│ │ ├── mousedown.snippet.js
│ │ ├── start.html
│ │ ├── trial-1.html
│ │ ├── trial-2.html
│ │ ├── trial-3.html
│ │ ├── trial-4.html
│ │ ├── trial-5.html
│ │ ├── trial-6-talk1.html
│ │ ├── trial-7.talk2.1.html
│ │ └── trial-8.talk2.2.html
│ └── responsive
│ │ ├── angular.js
│ │ ├── app.js
│ │ ├── bar-chart.directive.js
│ │ ├── d3.js
│ │ └── index.html
├── img
│ ├── andrew-gelman-school-vouchers-map.png
│ ├── anscombes_quartet.svg
│ ├── central-limit-theorem.png
│ ├── d3-on-angular.png
│ ├── donut-chart-1.png
│ ├── hackreactor-logo-white-bg.png
│ ├── hackreactor-logo.png
│ ├── hello-kitty.png
│ ├── hp-spog-1.png
│ ├── hp-spog-2.png
│ ├── monsoonco-logo-black-bg.png
│ ├── monsoonco-logo.png
│ ├── monty-hall.png
│ ├── paolo-de-matteis.jpg
│ ├── simpsons-paradox.png
│ ├── small-multiples-with-ng-repeat.png
│ ├── the-horse-in-motion.gif
│ └── the-horse-in-motion.jpg
├── index.html
├── js
│ ├── reveal.js
│ └── reveal.min.js
├── lib
│ ├── css
│ │ ├── twilight.css
│ │ └── zenburn.css
│ ├── font
│ │ ├── league_gothic-webfont.eot
│ │ ├── league_gothic-webfont.svg
│ │ ├── league_gothic-webfont.ttf
│ │ ├── league_gothic-webfont.woff
│ │ └── league_gothic_license
│ └── js
│ │ ├── classList.js
│ │ ├── head.min.js
│ │ └── html5shiv.js
├── package.json
├── plugin
│ ├── highlight
│ │ └── highlight.js
│ ├── leap
│ │ └── leap.js
│ ├── markdown
│ │ ├── example.html
│ │ ├── example.md
│ │ ├── markdown.js
│ │ └── marked.js
│ ├── math
│ │ └── math.js
│ ├── multiplex
│ │ ├── client.js
│ │ ├── index.js
│ │ └── master.js
│ ├── notes-server
│ │ ├── client.js
│ │ ├── index.js
│ │ └── notes.html
│ ├── notes
│ │ ├── notes.html
│ │ └── notes.js
│ ├── postmessage
│ │ ├── example.html
│ │ └── postmessage.js
│ ├── print-pdf
│ │ └── print-pdf.js
│ ├── remotes
│ │ └── remotes.js
│ ├── search
│ │ └── search.js
│ └── zoom-js
│ │ └── zoom.js
└── test
│ ├── examples
│ ├── assets
│ │ ├── image1.png
│ │ └── image2.png
│ ├── barebones.html
│ ├── embedded-media.html
│ ├── math.html
│ └── slide-backgrounds.html
│ ├── qunit-1.12.0.css
│ ├── qunit-1.12.0.js
│ ├── test-markdown-element-attributes.html
│ ├── test-markdown-element-attributes.js
│ ├── test-markdown-slide-attributes.html
│ ├── test-markdown-slide-attributes.js
│ ├── test-markdown.html
│ ├── test-markdown.js
│ ├── test.html
│ └── test.js
└── talk.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | notes.txt
2 | todo.md
3 | .DS_Store
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Slides from my Angular + D3 meetup talk at Google
2 | ===
3 | [View Slideshow](http://vicapow.github.io/angular-d3-talk/slides/)
4 |
5 | ## Demos
6 |
7 | all the demos can be found under `slides/demos`. here's a few quick lines to each
8 |
9 | + [AI Editor](http://vicapow.github.io/angular-d3-talk/slides/demos/AI-editor/index.html)
10 | + [A Donut Chart Creator](http://vicapow.github.io/angular-d3-talk/slides/demos/a-donut-chart-editor/index.html)
11 | + [A DIV Bar Chart](http://vicapow.github.io/angular-d3-talk/slides/demos/d3-intro/div-bar-chart.html)
12 | + [Lets Make A Donut Chart](http://vicapow.github.io/angular-d3-talk/slides/demos/lets-make-a-donut-chart-directive/v9-using-a-controller-and-seperating-out-business-logic.html)
13 | + [Life Expectancy](http://vicapow.github.io/angular-d3-talk/slides/demos/life-expectancy/index.html)
14 | + [Responsive](http://vicapow.github.io/angular-d3-talk/slides/demos/responsive/index.html)
15 |
16 |
17 | ## Angular + D3 book
18 |
19 | I've written an e-book that goes into much more detail:
20 |
21 | [https://leanpub.com/d3angularjs](https://leanpub.com/d3angularjs)
22 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | fork the code here
7 |
8 | By Victor Powell @vicapow
9 |
10 | Demos
11 |
12 | all the demos can be found under slides/demos
. here's a few quick lines to each
13 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/slides/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .svn
3 | log/*.log
4 | tmp/**
5 | node_modules/
6 | .sass-cache
--------------------------------------------------------------------------------
/slides/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.8
4 | before_script:
5 | - npm install -g grunt-cli
--------------------------------------------------------------------------------
/slides/Gruntfile.js:
--------------------------------------------------------------------------------
1 | /* global module:false */
2 |
3 | module.exports = function(grunt) {
4 | var port = grunt.option('port') || 8000;
5 | // Project configuration
6 | grunt.initConfig({
7 | pkg: grunt.file.readJSON('package.json'),
8 | meta: {
9 | banner:
10 | '/*!\n' +
11 | ' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
12 | ' * http://lab.hakim.se/reveal-js\n' +
13 | ' * MIT licensed\n' +
14 | ' *\n' +
15 | ' * Copyright (C) 2013 Hakim El Hattab, http://hakim.se\n' +
16 | ' */'
17 | },
18 |
19 | qunit: {
20 | files: [ 'test/*.html' ]
21 | },
22 |
23 | uglify: {
24 | options: {
25 | banner: '<%= meta.banner %>\n'
26 | },
27 | build: {
28 | src: 'js/reveal.js',
29 | dest: 'js/reveal.min.js'
30 | }
31 | },
32 |
33 | cssmin: {
34 | compress: {
35 | files: {
36 | 'css/reveal.min.css': [ 'css/reveal.css' ]
37 | }
38 | }
39 | },
40 |
41 | sass: {
42 | main: {
43 | files: {
44 | 'css/theme/default.css': 'css/theme/source/default.scss',
45 | 'css/theme/beige.css': 'css/theme/source/beige.scss',
46 | 'css/theme/night.css': 'css/theme/source/night.scss',
47 | 'css/theme/serif.css': 'css/theme/source/serif.scss',
48 | 'css/theme/simple.css': 'css/theme/source/simple.scss',
49 | 'css/theme/sky.css': 'css/theme/source/sky.scss',
50 | 'css/theme/moon.css': 'css/theme/source/moon.scss',
51 | 'css/theme/solarized.css': 'css/theme/source/solarized.scss',
52 | 'css/theme/blood.css': 'css/theme/source/blood.scss'
53 | }
54 | }
55 | },
56 |
57 | jshint: {
58 | options: {
59 | curly: false,
60 | eqeqeq: true,
61 | immed: true,
62 | latedef: true,
63 | newcap: true,
64 | noarg: true,
65 | sub: true,
66 | undef: true,
67 | eqnull: true,
68 | browser: true,
69 | expr: true,
70 | globals: {
71 | head: false,
72 | module: false,
73 | console: false,
74 | unescape: false
75 | }
76 | },
77 | files: [ 'Gruntfile.js', 'js/reveal.js' ]
78 | },
79 |
80 | connect: {
81 | server: {
82 | options: {
83 | port: port,
84 | base: '.'
85 | }
86 | }
87 | },
88 |
89 | zip: {
90 | 'reveal-js-presentation.zip': [
91 | 'index.html',
92 | 'css/**',
93 | 'js/**',
94 | 'lib/**',
95 | 'images/**',
96 | 'plugin/**'
97 | ]
98 | },
99 |
100 | watch: {
101 | main: {
102 | files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
103 | tasks: 'default'
104 | },
105 | theme: {
106 | files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
107 | tasks: 'themes'
108 | }
109 | }
110 |
111 | });
112 |
113 | // Dependencies
114 | grunt.loadNpmTasks( 'grunt-contrib-qunit' );
115 | grunt.loadNpmTasks( 'grunt-contrib-jshint' );
116 | grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
117 | grunt.loadNpmTasks( 'grunt-contrib-uglify' );
118 | grunt.loadNpmTasks( 'grunt-contrib-watch' );
119 | grunt.loadNpmTasks( 'grunt-contrib-sass' );
120 | grunt.loadNpmTasks( 'grunt-contrib-connect' );
121 | grunt.loadNpmTasks( 'grunt-zip' );
122 |
123 | // Default task
124 | grunt.registerTask( 'default', [ 'jshint', 'cssmin', 'uglify', 'qunit' ] );
125 |
126 | // Theme task
127 | grunt.registerTask( 'themes', [ 'sass' ] );
128 |
129 | // Package presentation to archive
130 | grunt.registerTask( 'package', [ 'default', 'zip' ] );
131 |
132 | // Serve presentation locally
133 | grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
134 |
135 | // Run tests
136 | grunt.registerTask( 'test', [ 'jshint', 'qunit' ] );
137 |
138 | };
139 |
--------------------------------------------------------------------------------
/slides/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (C) 2013 Hakim El Hattab, http://hakim.se
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/slides/css/print/pdf.css:
--------------------------------------------------------------------------------
1 | /* Default Print Stylesheet Template
2 | by Rob Glazebrook of CSSnewbie.com
3 | Last Updated: June 4, 2008
4 |
5 | Feel free (nay, compelled) to edit, append, and
6 | manipulate this file as you see fit. */
7 |
8 |
9 | /* SECTION 1: Set default width, margin, float, and
10 | background. This prevents elements from extending
11 | beyond the edge of the printed page, and prevents
12 | unnecessary background images from printing */
13 |
14 | * {
15 | -webkit-print-color-adjust: exact;
16 | }
17 |
18 | body {
19 | font-size: 18pt;
20 | width: 297mm;
21 | height: 229mm;
22 | margin: 0 auto !important;
23 | border: 0;
24 | padding: 0;
25 | float: none !important;
26 | overflow: visible;
27 | }
28 |
29 | html {
30 | width: 100%;
31 | height: 100%;
32 | overflow: visible;
33 | }
34 |
35 | @page {
36 | size: letter landscape;
37 | margin: 0;
38 | }
39 |
40 | /* SECTION 2: Remove any elements not needed in print.
41 | This would include navigation, ads, sidebars, etc. */
42 | .nestedarrow,
43 | .controls,
44 | .reveal .progress,
45 | .reveal.overview,
46 | .fork-reveal,
47 | .share-reveal,
48 | .state-background {
49 | display: none !important;
50 | }
51 |
52 | /* SECTION 3: Set body font face, size, and color.
53 | Consider using a serif font for readability. */
54 | body, p, td, li, div {
55 | font-size: 18pt;
56 | }
57 |
58 | /* SECTION 4: Set heading font face, sizes, and color.
59 | Differentiate your headings from your body text.
60 | Perhaps use a large sans-serif for distinction. */
61 | h1,h2,h3,h4,h5,h6 {
62 | text-shadow: 0 0 0 #000 !important;
63 | }
64 |
65 | /* SECTION 5: Make hyperlinks more usable.
66 | Ensure links are underlined, and consider appending
67 | the URL to the end of the link for usability. */
68 | a:link,
69 | a:visited {
70 | font-weight: normal;
71 | text-decoration: underline;
72 | }
73 |
74 | .reveal pre code {
75 | overflow: hidden !important;
76 | font-family: monospace !important;
77 | }
78 |
79 |
80 | /* SECTION 6: more reveal.js specific additions by @skypanther */
81 | ul, ol, div, p {
82 | visibility: visible;
83 | position: static;
84 | width: auto;
85 | height: auto;
86 | display: block;
87 | overflow: visible;
88 | margin: auto;
89 | }
90 | .reveal {
91 | width: auto !important;
92 | height: auto !important;
93 | overflow: hidden !important;
94 | }
95 | .reveal .slides {
96 | position: static;
97 | width: 100%;
98 | height: auto;
99 |
100 | left: auto;
101 | top: auto;
102 | margin: 0 !important;
103 | padding: 0 !important;
104 |
105 | overflow: visible;
106 | display: block;
107 |
108 | text-align: center;
109 |
110 | -webkit-perspective: none;
111 | -moz-perspective: none;
112 | -ms-perspective: none;
113 | perspective: none;
114 |
115 | -webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */
116 | -moz-perspective-origin: 50% 50%;
117 | -ms-perspective-origin: 50% 50%;
118 | perspective-origin: 50% 50%;
119 | }
120 | .reveal .slides section {
121 |
122 | page-break-after: always !important;
123 |
124 | visibility: visible !important;
125 | position: relative !important;
126 | width: 100% !important;
127 | height: 229mm !important;
128 | min-height: 229mm !important;
129 | display: block !important;
130 | overflow: hidden !important;
131 |
132 | left: 0 !important;
133 | top: 0 !important;
134 | margin: 0 !important;
135 | padding: 2cm 2cm 0 2cm !important;
136 | box-sizing: border-box !important;
137 |
138 | opacity: 1 !important;
139 |
140 | -webkit-transform-style: flat !important;
141 | -moz-transform-style: flat !important;
142 | -ms-transform-style: flat !important;
143 | transform-style: flat !important;
144 |
145 | -webkit-transform: none !important;
146 | -moz-transform: none !important;
147 | -ms-transform: none !important;
148 | transform: none !important;
149 | }
150 | .reveal section.stack {
151 | margin: 0 !important;
152 | padding: 0 !important;
153 | page-break-after: avoid !important;
154 | height: auto !important;
155 | min-height: auto !important;
156 | }
157 | .reveal .absolute-element {
158 | margin-left: 2.2cm;
159 | margin-top: 1.8cm;
160 | }
161 | .reveal section .fragment {
162 | opacity: 1 !important;
163 | visibility: visible !important;
164 |
165 | -webkit-transform: none !important;
166 | -moz-transform: none !important;
167 | -ms-transform: none !important;
168 | transform: none !important;
169 | }
170 | .reveal section .slide-background {
171 | position: absolute;
172 | top: 0;
173 | left: 0;
174 | width: 100%;
175 | z-index: 0;
176 | }
177 | .reveal section>* {
178 | position: relative;
179 | z-index: 1;
180 | }
181 | .reveal img {
182 | box-shadow: none;
183 | }
184 | .reveal .roll {
185 | overflow: visible;
186 | line-height: 1em;
187 | }
188 | .reveal small a {
189 | font-size: 16pt !important;
190 | }
191 |
--------------------------------------------------------------------------------
/slides/css/theme/README.md:
--------------------------------------------------------------------------------
1 | ## Dependencies
2 |
3 | Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceding: https://github.com/hakimel/reveal.js#full-setup
4 |
5 | You also need to install Ruby and then Sass (with `gem install sass`).
6 |
7 | ## Creating a Theme
8 |
9 | To create your own theme, start by duplicating any ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source) and adding it to the compilation list in the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js).
10 |
11 | Each theme file does four things in the following order:
12 |
13 | 1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)**
14 | Shared utility functions.
15 |
16 | 2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)**
17 | Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.
18 |
19 | 3. **Override**
20 | This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding full selectors with hardcoded styles.
21 |
22 | 4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
23 | The template theme file which will generate final CSS output based on the currently defined variables.
24 |
25 | When you are done, run `grunt themes` to compile the Sass file to CSS and you are ready to use your new theme.
26 |
--------------------------------------------------------------------------------
/slides/css/theme/moon.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
2 | /**
3 | * Solarized Dark theme for reveal.js.
4 | * Author: Achim Staebler
5 | */
6 | @font-face {
7 | font-family: 'League Gothic';
8 | src: url("../../lib/font/league_gothic-webfont.eot");
9 | src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
10 | font-weight: normal;
11 | font-style: normal; }
12 |
13 | /**
14 | * Solarized colors by Ethan Schoonover
15 | */
16 | html * {
17 | color-profile: sRGB;
18 | rendering-intent: auto; }
19 |
20 | /*********************************************
21 | * GLOBAL STYLES
22 | *********************************************/
23 | body {
24 | background: #002b36;
25 | background-color: #002b36; }
26 |
27 | .reveal {
28 | font-family: "Lato", sans-serif;
29 | font-size: 36px;
30 | font-weight: normal;
31 | letter-spacing: -0.02em;
32 | color: #93a1a1; }
33 |
34 | ::selection {
35 | color: white;
36 | background: #d33682;
37 | text-shadow: none; }
38 |
39 | /*********************************************
40 | * HEADERS
41 | *********************************************/
42 | .reveal h1,
43 | .reveal h2,
44 | .reveal h3,
45 | .reveal h4,
46 | .reveal h5,
47 | .reveal h6 {
48 | margin: 0 0 20px 0;
49 | color: #eee8d5;
50 | font-family: "League Gothic", Impact, sans-serif;
51 | line-height: 0.9em;
52 | letter-spacing: 0.02em;
53 | text-transform: uppercase;
54 | text-shadow: none; }
55 |
56 | .reveal h1 {
57 | text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
58 |
59 | /*********************************************
60 | * LINKS
61 | *********************************************/
62 | .reveal a:not(.image) {
63 | color: #268bd2;
64 | text-decoration: none;
65 | -webkit-transition: color .15s ease;
66 | -moz-transition: color .15s ease;
67 | -ms-transition: color .15s ease;
68 | -o-transition: color .15s ease;
69 | transition: color .15s ease; }
70 |
71 | .reveal a:not(.image):hover {
72 | color: #78b9e6;
73 | text-shadow: none;
74 | border: none; }
75 |
76 | .reveal .roll span:after {
77 | color: #fff;
78 | background: #1a6091; }
79 |
80 | /*********************************************
81 | * IMAGES
82 | *********************************************/
83 | .reveal section img {
84 | margin: 15px 0px;
85 | background: rgba(255, 255, 255, 0.12);
86 | border: 4px solid #93a1a1;
87 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
88 | -webkit-transition: all .2s linear;
89 | -moz-transition: all .2s linear;
90 | -ms-transition: all .2s linear;
91 | -o-transition: all .2s linear;
92 | transition: all .2s linear; }
93 |
94 | .reveal a:hover img {
95 | background: rgba(255, 255, 255, 0.2);
96 | border-color: #268bd2;
97 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
98 |
99 | /*********************************************
100 | * NAVIGATION CONTROLS
101 | *********************************************/
102 | .reveal .controls div.navigate-left,
103 | .reveal .controls div.navigate-left.enabled {
104 | border-right-color: #268bd2; }
105 |
106 | .reveal .controls div.navigate-right,
107 | .reveal .controls div.navigate-right.enabled {
108 | border-left-color: #268bd2; }
109 |
110 | .reveal .controls div.navigate-up,
111 | .reveal .controls div.navigate-up.enabled {
112 | border-bottom-color: #268bd2; }
113 |
114 | .reveal .controls div.navigate-down,
115 | .reveal .controls div.navigate-down.enabled {
116 | border-top-color: #268bd2; }
117 |
118 | .reveal .controls div.navigate-left.enabled:hover {
119 | border-right-color: #78b9e6; }
120 |
121 | .reveal .controls div.navigate-right.enabled:hover {
122 | border-left-color: #78b9e6; }
123 |
124 | .reveal .controls div.navigate-up.enabled:hover {
125 | border-bottom-color: #78b9e6; }
126 |
127 | .reveal .controls div.navigate-down.enabled:hover {
128 | border-top-color: #78b9e6; }
129 |
130 | /*********************************************
131 | * PROGRESS BAR
132 | *********************************************/
133 | .reveal .progress {
134 | background: rgba(0, 0, 0, 0.2); }
135 |
136 | .reveal .progress span {
137 | background: #268bd2;
138 | -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
139 | -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
140 | -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
141 | -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
142 | transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
143 |
144 | /*********************************************
145 | * SLIDE NUMBER
146 | *********************************************/
147 | .reveal .slide-number {
148 | color: #268bd2; }
149 |
--------------------------------------------------------------------------------
/slides/css/theme/night.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700);
2 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
3 | /**
4 | * Black theme for reveal.js.
5 | *
6 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
7 | */
8 | /*********************************************
9 | * GLOBAL STYLES
10 | *********************************************/
11 | body {
12 | background: #111111;
13 | background-color: #111111; }
14 |
15 | .reveal {
16 | font-family: "Open Sans", sans-serif;
17 | font-size: 30px;
18 | font-weight: normal;
19 | letter-spacing: -0.02em;
20 | color: #eeeeee; }
21 |
22 | ::selection {
23 | color: white;
24 | background: #e7ad52;
25 | text-shadow: none; }
26 |
27 | /*********************************************
28 | * HEADERS
29 | *********************************************/
30 | .reveal h1,
31 | .reveal h2,
32 | .reveal h3,
33 | .reveal h4,
34 | .reveal h5,
35 | .reveal h6 {
36 | margin: 0 0 20px 0;
37 | color: #eeeeee;
38 | font-family: "Montserrat", Impact, sans-serif;
39 | line-height: 0.9em;
40 | letter-spacing: -0.03em;
41 | text-transform: none;
42 | text-shadow: none; }
43 |
44 | .reveal h1 {
45 | text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
46 |
47 | /*********************************************
48 | * LINKS
49 | *********************************************/
50 | .reveal a:not(.image) {
51 | color: #e7ad52;
52 | text-decoration: none;
53 | -webkit-transition: color .15s ease;
54 | -moz-transition: color .15s ease;
55 | -ms-transition: color .15s ease;
56 | -o-transition: color .15s ease;
57 | transition: color .15s ease; }
58 |
59 | .reveal a:not(.image):hover {
60 | color: #f3d7ac;
61 | text-shadow: none;
62 | border: none; }
63 |
64 | .reveal .roll span:after {
65 | color: #fff;
66 | background: #d08a1d; }
67 |
68 | /*********************************************
69 | * IMAGES
70 | *********************************************/
71 | .reveal section img {
72 | margin: 15px 0px;
73 | background: rgba(255, 255, 255, 0.12);
74 | border: 4px solid #eeeeee;
75 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
76 | -webkit-transition: all .2s linear;
77 | -moz-transition: all .2s linear;
78 | -ms-transition: all .2s linear;
79 | -o-transition: all .2s linear;
80 | transition: all .2s linear; }
81 |
82 | .reveal a:hover img {
83 | background: rgba(255, 255, 255, 0.2);
84 | border-color: #e7ad52;
85 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
86 |
87 | /*********************************************
88 | * NAVIGATION CONTROLS
89 | *********************************************/
90 | .reveal .controls div.navigate-left,
91 | .reveal .controls div.navigate-left.enabled {
92 | border-right-color: #e7ad52; }
93 |
94 | .reveal .controls div.navigate-right,
95 | .reveal .controls div.navigate-right.enabled {
96 | border-left-color: #e7ad52; }
97 |
98 | .reveal .controls div.navigate-up,
99 | .reveal .controls div.navigate-up.enabled {
100 | border-bottom-color: #e7ad52; }
101 |
102 | .reveal .controls div.navigate-down,
103 | .reveal .controls div.navigate-down.enabled {
104 | border-top-color: #e7ad52; }
105 |
106 | .reveal .controls div.navigate-left.enabled:hover {
107 | border-right-color: #f3d7ac; }
108 |
109 | .reveal .controls div.navigate-right.enabled:hover {
110 | border-left-color: #f3d7ac; }
111 |
112 | .reveal .controls div.navigate-up.enabled:hover {
113 | border-bottom-color: #f3d7ac; }
114 |
115 | .reveal .controls div.navigate-down.enabled:hover {
116 | border-top-color: #f3d7ac; }
117 |
118 | /*********************************************
119 | * PROGRESS BAR
120 | *********************************************/
121 | .reveal .progress {
122 | background: rgba(0, 0, 0, 0.2); }
123 |
124 | .reveal .progress span {
125 | background: #e7ad52;
126 | -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
127 | -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
128 | -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
129 | -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
130 | transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
131 |
132 | /*********************************************
133 | * SLIDE NUMBER
134 | *********************************************/
135 | .reveal .slide-number {
136 | color: #e7ad52; }
137 |
--------------------------------------------------------------------------------
/slides/css/theme/simple.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
2 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
3 | /**
4 | * A simple theme for reveal.js presentations, similar
5 | * to the default theme. The accent color is darkblue.
6 | *
7 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
8 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
9 | */
10 | /*********************************************
11 | * GLOBAL STYLES
12 | *********************************************/
13 | body {
14 | background: white;
15 | background-color: white; }
16 |
17 | .reveal {
18 | font-family: "Lato", sans-serif;
19 | font-size: 36px;
20 | font-weight: normal;
21 | letter-spacing: -0.02em;
22 | color: black; }
23 |
24 | ::selection {
25 | color: white;
26 | background: rgba(0, 0, 0, 0.99);
27 | text-shadow: none; }
28 |
29 | /*********************************************
30 | * HEADERS
31 | *********************************************/
32 | .reveal h1,
33 | .reveal h2,
34 | .reveal h3,
35 | .reveal h4,
36 | .reveal h5,
37 | .reveal h6 {
38 | margin: 0 0 20px 0;
39 | color: black;
40 | font-family: "News Cycle", Impact, sans-serif;
41 | line-height: 0.9em;
42 | letter-spacing: 0.02em;
43 | text-transform: none;
44 | text-shadow: none; }
45 |
46 | .reveal h1 {
47 | text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
48 |
49 | /*********************************************
50 | * LINKS
51 | *********************************************/
52 | .reveal a:not(.image) {
53 | color: darkblue;
54 | text-decoration: none;
55 | -webkit-transition: color .15s ease;
56 | -moz-transition: color .15s ease;
57 | -ms-transition: color .15s ease;
58 | -o-transition: color .15s ease;
59 | transition: color .15s ease; }
60 |
61 | .reveal a:not(.image):hover {
62 | color: #0000f1;
63 | text-shadow: none;
64 | border: none; }
65 |
66 | .reveal .roll span:after {
67 | color: #fff;
68 | background: #00003f; }
69 |
70 | /*********************************************
71 | * IMAGES
72 | *********************************************/
73 | .reveal section img {
74 | margin: 15px 0px;
75 | background: rgba(255, 255, 255, 0.12);
76 | border: 4px solid black;
77 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
78 | -webkit-transition: all .2s linear;
79 | -moz-transition: all .2s linear;
80 | -ms-transition: all .2s linear;
81 | -o-transition: all .2s linear;
82 | transition: all .2s linear; }
83 |
84 | .reveal a:hover img {
85 | background: rgba(255, 255, 255, 0.2);
86 | border-color: darkblue;
87 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
88 |
89 | /*********************************************
90 | * NAVIGATION CONTROLS
91 | *********************************************/
92 | .reveal .controls div.navigate-left,
93 | .reveal .controls div.navigate-left.enabled {
94 | border-right-color: darkblue; }
95 |
96 | .reveal .controls div.navigate-right,
97 | .reveal .controls div.navigate-right.enabled {
98 | border-left-color: darkblue; }
99 |
100 | .reveal .controls div.navigate-up,
101 | .reveal .controls div.navigate-up.enabled {
102 | border-bottom-color: darkblue; }
103 |
104 | .reveal .controls div.navigate-down,
105 | .reveal .controls div.navigate-down.enabled {
106 | border-top-color: darkblue; }
107 |
108 | .reveal .controls div.navigate-left.enabled:hover {
109 | border-right-color: #0000f1; }
110 |
111 | .reveal .controls div.navigate-right.enabled:hover {
112 | border-left-color: #0000f1; }
113 |
114 | .reveal .controls div.navigate-up.enabled:hover {
115 | border-bottom-color: #0000f1; }
116 |
117 | .reveal .controls div.navigate-down.enabled:hover {
118 | border-top-color: #0000f1; }
119 |
120 | /*********************************************
121 | * PROGRESS BAR
122 | *********************************************/
123 | .reveal .progress {
124 | background: rgba(0, 0, 0, 0.2); }
125 |
126 | .reveal .progress span {
127 | background: darkblue;
128 | -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
129 | -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
130 | -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
131 | -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
132 | transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
133 |
134 | /*********************************************
135 | * SLIDE NUMBER
136 | *********************************************/
137 | .reveal .slide-number {
138 | color: darkblue; }
139 |
--------------------------------------------------------------------------------
/slides/css/theme/source/beige.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Beige theme for reveal.js.
3 | *
4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
5 | */
6 |
7 |
8 | // Default mixins and settings -----------------
9 | @import "../template/mixins";
10 | @import "../template/settings";
11 | // ---------------------------------------------
12 |
13 |
14 |
15 | // Include theme-specific fonts
16 | @font-face {
17 | font-family: 'League Gothic';
18 | src: url('../../lib/font/league_gothic-webfont.eot');
19 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
20 | url('../../lib/font/league_gothic-webfont.woff') format('woff'),
21 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
22 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
23 |
24 | font-weight: normal;
25 | font-style: normal;
26 | }
27 |
28 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
29 |
30 |
31 | // Override theme settings (see ../template/settings.scss)
32 | $mainColor: #333;
33 | $headingColor: #333;
34 | $headingTextShadow: none;
35 | $backgroundColor: #f7f3de;
36 | $linkColor: #8b743d;
37 | $linkColorHover: lighten( $linkColor, 20% );
38 | $selectionBackgroundColor: rgba(79, 64, 28, 0.99);
39 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
40 |
41 | // Background generator
42 | @mixin bodyBackground() {
43 | @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) );
44 | }
45 |
46 |
47 |
48 | // Theme template ------------------------------
49 | @import "../template/theme";
50 | // ---------------------------------------------
--------------------------------------------------------------------------------
/slides/css/theme/source/blood.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Blood theme for reveal.js
3 | * Author: Walther http://github.com/Walther
4 | *
5 | * Designed to be used with highlight.js theme
6 | * "monokai_sublime.css" available from
7 | * https://github.com/isagalaev/highlight.js/
8 | *
9 | * For other themes, change $codeBackground accordingly.
10 | *
11 | */
12 |
13 | // Default mixins and settings -----------------
14 | @import "../template/mixins";
15 | @import "../template/settings";
16 | // ---------------------------------------------
17 |
18 | // Include theme-specific fonts
19 |
20 | @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
21 |
22 | // Colors used in the theme
23 | $blood: #a23;
24 | $coal: #222;
25 | $codeBackground: #23241f;
26 |
27 | // Main text
28 | $mainFont: Ubuntu, 'sans-serif';
29 | $mainFontSize: 36px;
30 | $mainColor: #eee;
31 |
32 | // Headings
33 | $headingFont: Ubuntu, 'sans-serif';
34 | $headingTextShadow: 2px 2px 2px $coal;
35 |
36 | // h1 shadow, borrowed humbly from
37 | // (c) Default theme by Hakim El Hattab
38 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
39 |
40 | // Links
41 | $linkColor: $blood;
42 | $linkColorHover: lighten( $linkColor, 20% );
43 |
44 | // Text selection
45 | $selectionBackgroundColor: $blood;
46 | $selectionColor: #fff;
47 |
48 | // Background generator
49 | @mixin bodyBackground() {
50 | @include radial-gradient( $coal, lighten( $coal, 25% ) );
51 | }
52 |
53 | // Theme template ------------------------------
54 | @import "../template/theme";
55 | // ---------------------------------------------
56 |
57 | // some overrides after theme template import
58 |
59 | .reveal p {
60 | font-weight: 300;
61 | text-shadow: 1px 1px $coal;
62 | }
63 |
64 | .reveal h1,
65 | .reveal h2,
66 | .reveal h3,
67 | .reveal h4,
68 | .reveal h5,
69 | .reveal h6 {
70 | font-weight: 700;
71 | }
72 |
73 | .reveal a:not(.image),
74 | .reveal a:not(.image):hover {
75 | text-shadow: 2px 2px 2px #000;
76 | }
77 |
78 | .reveal small a:not(.image),
79 | .reveal small a:not(.image):hover {
80 | text-shadow: 1px 1px 1px #000;
81 | }
82 |
83 | .reveal p code {
84 | background-color: $codeBackground;
85 | display: inline-block;
86 | border-radius: 7px;
87 | }
88 |
89 | .reveal small code {
90 | vertical-align: baseline;
91 | }
--------------------------------------------------------------------------------
/slides/css/theme/source/default.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Default theme for reveal.js.
3 | *
4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
5 | */
6 |
7 |
8 | // Default mixins and settings -----------------
9 | @import "../template/mixins";
10 | @import "../template/settings";
11 | // ---------------------------------------------
12 |
13 |
14 |
15 | // Include theme-specific fonts
16 | @font-face {
17 | font-family: 'League Gothic';
18 | src: url('../../lib/font/league_gothic-webfont.eot');
19 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
20 | url('../../lib/font/league_gothic-webfont.woff') format('woff'),
21 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
22 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
23 |
24 | font-weight: normal;
25 | font-style: normal;
26 | }
27 |
28 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
29 |
30 | // Override theme settings (see ../template/settings.scss)
31 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
32 |
33 | // Background generator
34 | @mixin bodyBackground() {
35 | @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) );
36 | }
37 |
38 |
39 |
40 | // Theme template ------------------------------
41 | @import "../template/theme";
42 | // ---------------------------------------------
--------------------------------------------------------------------------------
/slides/css/theme/source/moon.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Solarized Dark theme for reveal.js.
3 | * Author: Achim Staebler
4 | */
5 |
6 |
7 | // Default mixins and settings -----------------
8 | @import "../template/mixins";
9 | @import "../template/settings";
10 | // ---------------------------------------------
11 |
12 |
13 |
14 | // Include theme-specific fonts
15 | @font-face {
16 | font-family: 'League Gothic';
17 | src: url('../../lib/font/league_gothic-webfont.eot');
18 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
19 | url('../../lib/font/league_gothic-webfont.woff') format('woff'),
20 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
21 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
22 |
23 | font-weight: normal;
24 | font-style: normal;
25 | }
26 |
27 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
28 |
29 | /**
30 | * Solarized colors by Ethan Schoonover
31 | */
32 | html * {
33 | color-profile: sRGB;
34 | rendering-intent: auto;
35 | }
36 |
37 | // Solarized colors
38 | $base03: #002b36;
39 | $base02: #073642;
40 | $base01: #586e75;
41 | $base00: #657b83;
42 | $base0: #839496;
43 | $base1: #93a1a1;
44 | $base2: #eee8d5;
45 | $base3: #fdf6e3;
46 | $yellow: #b58900;
47 | $orange: #cb4b16;
48 | $red: #dc322f;
49 | $magenta: #d33682;
50 | $violet: #6c71c4;
51 | $blue: #268bd2;
52 | $cyan: #2aa198;
53 | $green: #859900;
54 |
55 | // Override theme settings (see ../template/settings.scss)
56 | $mainColor: $base1;
57 | $headingColor: $base2;
58 | $headingTextShadow: none;
59 | $backgroundColor: $base03;
60 | $linkColor: $blue;
61 | $linkColorHover: lighten( $linkColor, 20% );
62 | $selectionBackgroundColor: $magenta;
63 |
64 |
65 |
66 | // Theme template ------------------------------
67 | @import "../template/theme";
68 | // ---------------------------------------------
69 |
--------------------------------------------------------------------------------
/slides/css/theme/source/night.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Black theme for reveal.js.
3 | *
4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
5 | */
6 |
7 |
8 | // Default mixins and settings -----------------
9 | @import "../template/mixins";
10 | @import "../template/settings";
11 | // ---------------------------------------------
12 |
13 |
14 | // Include theme-specific fonts
15 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700);
16 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
17 |
18 |
19 | // Override theme settings (see ../template/settings.scss)
20 | $backgroundColor: #111;
21 |
22 | $mainFont: 'Open Sans', sans-serif;
23 | $linkColor: #e7ad52;
24 | $linkColorHover: lighten( $linkColor, 20% );
25 | $headingFont: 'Montserrat', Impact, sans-serif;
26 | $headingTextShadow: none;
27 | $headingLetterSpacing: -0.03em;
28 | $headingTextTransform: none;
29 | $selectionBackgroundColor: #e7ad52;
30 | $mainFontSize: 30px;
31 |
32 |
33 | // Theme template ------------------------------
34 | @import "../template/theme";
35 | // ---------------------------------------------
--------------------------------------------------------------------------------
/slides/css/theme/source/serif.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * A simple theme for reveal.js presentations, similar
3 | * to the default theme. The accent color is brown.
4 | *
5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed.
6 | */
7 |
8 |
9 | // Default mixins and settings -----------------
10 | @import "../template/mixins";
11 | @import "../template/settings";
12 | // ---------------------------------------------
13 |
14 |
15 |
16 | // Override theme settings (see ../template/settings.scss)
17 | $mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
18 | $mainColor: #000;
19 | $headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
20 | $headingColor: #383D3D;
21 | $headingTextShadow: none;
22 | $headingTextTransform: none;
23 | $backgroundColor: #F0F1EB;
24 | $linkColor: #51483D;
25 | $linkColorHover: lighten( $linkColor, 20% );
26 | $selectionBackgroundColor: #26351C;
27 |
28 | .reveal a:not(.image) {
29 | line-height: 1.3em;
30 | }
31 |
32 |
33 | // Theme template ------------------------------
34 | @import "../template/theme";
35 | // ---------------------------------------------
36 |
--------------------------------------------------------------------------------
/slides/css/theme/source/simple.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * A simple theme for reveal.js presentations, similar
3 | * to the default theme. The accent color is darkblue.
4 | *
5 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
6 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
7 | */
8 |
9 |
10 | // Default mixins and settings -----------------
11 | @import "../template/mixins";
12 | @import "../template/settings";
13 | // ---------------------------------------------
14 |
15 |
16 |
17 | // Include theme-specific fonts
18 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
20 |
21 |
22 | // Override theme settings (see ../template/settings.scss)
23 | $mainFont: 'Lato', sans-serif;
24 | $mainColor: #000;
25 | $headingFont: 'News Cycle', Impact, sans-serif;
26 | $headingColor: #000;
27 | $headingTextShadow: none;
28 | $headingTextTransform: none;
29 | $backgroundColor: #fff;
30 | $linkColor: #00008B;
31 | $linkColorHover: lighten( $linkColor, 20% );
32 | $selectionBackgroundColor: rgba(0, 0, 0, 0.99);
33 |
34 |
35 |
36 | // Theme template ------------------------------
37 | @import "../template/theme";
38 | // ---------------------------------------------
--------------------------------------------------------------------------------
/slides/css/theme/source/sky.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Sky theme for reveal.js.
3 | *
4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
5 | */
6 |
7 |
8 | // Default mixins and settings -----------------
9 | @import "../template/mixins";
10 | @import "../template/settings";
11 | // ---------------------------------------------
12 |
13 |
14 |
15 | // Include theme-specific fonts
16 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
17 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
18 |
19 |
20 | // Override theme settings (see ../template/settings.scss)
21 | $mainFont: 'Open Sans', sans-serif;
22 | $mainColor: #333;
23 | $headingFont: 'Quicksand', sans-serif;
24 | $headingColor: #333;
25 | $headingLetterSpacing: -0.08em;
26 | $headingTextShadow: none;
27 | $backgroundColor: #f7fbfc;
28 | $linkColor: #3b759e;
29 | $linkColorHover: lighten( $linkColor, 20% );
30 | $selectionBackgroundColor: #134674;
31 |
32 | // Fix links so they are not cut off
33 | .reveal a:not(.image) {
34 | line-height: 1.3em;
35 | }
36 |
37 | // Background generator
38 | @mixin bodyBackground() {
39 | @include radial-gradient( #add9e4, #f7fbfc );
40 | }
41 |
42 |
43 |
44 | // Theme template ------------------------------
45 | @import "../template/theme";
46 | // ---------------------------------------------
47 |
--------------------------------------------------------------------------------
/slides/css/theme/source/solarized.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Solarized Light theme for reveal.js.
3 | * Author: Achim Staebler
4 | */
5 |
6 |
7 | // Default mixins and settings -----------------
8 | @import "../template/mixins";
9 | @import "../template/settings";
10 | // ---------------------------------------------
11 |
12 |
13 |
14 | // Include theme-specific fonts
15 | @font-face {
16 | font-family: 'League Gothic';
17 | src: url('../../lib/font/league_gothic-webfont.eot');
18 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
19 | url('../../lib/font/league_gothic-webfont.woff') format('woff'),
20 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
21 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
22 |
23 | font-weight: normal;
24 | font-style: normal;
25 | }
26 |
27 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
28 |
29 |
30 | /**
31 | * Solarized colors by Ethan Schoonover
32 | */
33 | html * {
34 | color-profile: sRGB;
35 | rendering-intent: auto;
36 | }
37 |
38 | // Solarized colors
39 | $base03: #002b36;
40 | $base02: #073642;
41 | $base01: #586e75;
42 | $base00: #657b83;
43 | $base0: #839496;
44 | $base1: #93a1a1;
45 | $base2: #eee8d5;
46 | $base3: #fdf6e3;
47 | $yellow: #b58900;
48 | $orange: #cb4b16;
49 | $red: #dc322f;
50 | $magenta: #d33682;
51 | $violet: #6c71c4;
52 | $blue: #268bd2;
53 | $cyan: #2aa198;
54 | $green: #859900;
55 |
56 | // Override theme settings (see ../template/settings.scss)
57 | $mainColor: $base00;
58 | $headingColor: $base01;
59 | $headingTextShadow: none;
60 | $backgroundColor: $base3;
61 | $linkColor: $blue;
62 | $linkColorHover: lighten( $linkColor, 20% );
63 | $selectionBackgroundColor: $magenta;
64 |
65 | // Background generator
66 | // @mixin bodyBackground() {
67 | // @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) );
68 | // }
69 |
70 |
71 |
72 | // Theme template ------------------------------
73 | @import "../template/theme";
74 | // ---------------------------------------------
75 |
--------------------------------------------------------------------------------
/slides/css/theme/template/mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin vertical-gradient( $top, $bottom ) {
2 | background: $top;
3 | background: -moz-linear-gradient( top, $top 0%, $bottom 100% );
4 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) );
5 | background: -webkit-linear-gradient( top, $top 0%, $bottom 100% );
6 | background: -o-linear-gradient( top, $top 0%, $bottom 100% );
7 | background: -ms-linear-gradient( top, $top 0%, $bottom 100% );
8 | background: linear-gradient( top, $top 0%, $bottom 100% );
9 | }
10 |
11 | @mixin horizontal-gradient( $top, $bottom ) {
12 | background: $top;
13 | background: -moz-linear-gradient( left, $top 0%, $bottom 100% );
14 | background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) );
15 | background: -webkit-linear-gradient( left, $top 0%, $bottom 100% );
16 | background: -o-linear-gradient( left, $top 0%, $bottom 100% );
17 | background: -ms-linear-gradient( left, $top 0%, $bottom 100% );
18 | background: linear-gradient( left, $top 0%, $bottom 100% );
19 | }
20 |
21 | @mixin radial-gradient( $outer, $inner, $type: circle ) {
22 | background: $outer;
23 | background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
24 | background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) );
25 | background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
26 | background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
27 | background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
28 | background: radial-gradient( center, $type cover, $inner 0%, $outer 100% );
29 | }
--------------------------------------------------------------------------------
/slides/css/theme/template/settings.scss:
--------------------------------------------------------------------------------
1 | // Base settings for all themes that can optionally be
2 | // overridden by the super-theme
3 |
4 | // Background of the presentation
5 | $backgroundColor: #2b2b2b;
6 |
7 | // Primary/body text
8 | $mainFont: 'Lato', sans-serif;
9 | $mainFontSize: 36px;
10 | $mainColor: #eee;
11 |
12 | // Headings
13 | $headingMargin: 0 0 20px 0;
14 | $headingFont: 'League Gothic', Impact, sans-serif;
15 | $headingColor: #eee;
16 | $headingLineHeight: 0.9em;
17 | $headingLetterSpacing: 0.02em;
18 | $headingTextTransform: uppercase;
19 | $headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2);
20 | $heading1TextShadow: $headingTextShadow;
21 |
22 | // Links and actions
23 | $linkColor: #13DAEC;
24 | $linkColorHover: lighten( $linkColor, 20% );
25 |
26 | // Text selection
27 | $selectionBackgroundColor: #FF5E99;
28 | $selectionColor: #fff;
29 |
30 | // Generates the presentation background, can be overridden
31 | // to return a background image or gradient
32 | @mixin bodyBackground() {
33 | background: $backgroundColor;
34 | }
--------------------------------------------------------------------------------
/slides/css/theme/template/theme.scss:
--------------------------------------------------------------------------------
1 | // Base theme template for reveal.js
2 |
3 | /*********************************************
4 | * GLOBAL STYLES
5 | *********************************************/
6 |
7 | body {
8 | @include bodyBackground();
9 | background-color: $backgroundColor;
10 | }
11 |
12 | .reveal {
13 | font-family: $mainFont;
14 | font-size: $mainFontSize;
15 | font-weight: normal;
16 | letter-spacing: -0.02em;
17 | color: $mainColor;
18 | }
19 |
20 | ::selection {
21 | color: $selectionColor;
22 | background: $selectionBackgroundColor;
23 | text-shadow: none;
24 | }
25 |
26 | /*********************************************
27 | * HEADERS
28 | *********************************************/
29 |
30 | .reveal h1,
31 | .reveal h2,
32 | .reveal h3,
33 | .reveal h4,
34 | .reveal h5,
35 | .reveal h6 {
36 | margin: $headingMargin;
37 | color: $headingColor;
38 |
39 | font-family: $headingFont;
40 | line-height: $headingLineHeight;
41 | letter-spacing: $headingLetterSpacing;
42 |
43 | text-transform: $headingTextTransform;
44 | text-shadow: $headingTextShadow;
45 | }
46 |
47 | .reveal h1 {
48 | text-shadow: $heading1TextShadow;
49 | }
50 |
51 |
52 | /*********************************************
53 | * LINKS
54 | *********************************************/
55 |
56 | .reveal a:not(.image) {
57 | color: $linkColor;
58 | text-decoration: none;
59 |
60 | -webkit-transition: color .15s ease;
61 | -moz-transition: color .15s ease;
62 | -ms-transition: color .15s ease;
63 | -o-transition: color .15s ease;
64 | transition: color .15s ease;
65 | }
66 | .reveal a:not(.image):hover {
67 | color: $linkColorHover;
68 |
69 | text-shadow: none;
70 | border: none;
71 | }
72 |
73 | .reveal .roll span:after {
74 | color: #fff;
75 | background: darken( $linkColor, 15% );
76 | }
77 |
78 |
79 | /*********************************************
80 | * IMAGES
81 | *********************************************/
82 |
83 | .reveal section img {
84 | margin: 15px 0px;
85 | background: rgba(255,255,255,0.12);
86 | border: 4px solid $mainColor;
87 |
88 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
89 |
90 | -webkit-transition: all .2s linear;
91 | -moz-transition: all .2s linear;
92 | -ms-transition: all .2s linear;
93 | -o-transition: all .2s linear;
94 | transition: all .2s linear;
95 | }
96 |
97 | .reveal a:hover img {
98 | background: rgba(255,255,255,0.2);
99 | border-color: $linkColor;
100 |
101 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
102 | }
103 |
104 |
105 | /*********************************************
106 | * NAVIGATION CONTROLS
107 | *********************************************/
108 |
109 | .reveal .controls div.navigate-left,
110 | .reveal .controls div.navigate-left.enabled {
111 | border-right-color: $linkColor;
112 | }
113 |
114 | .reveal .controls div.navigate-right,
115 | .reveal .controls div.navigate-right.enabled {
116 | border-left-color: $linkColor;
117 | }
118 |
119 | .reveal .controls div.navigate-up,
120 | .reveal .controls div.navigate-up.enabled {
121 | border-bottom-color: $linkColor;
122 | }
123 |
124 | .reveal .controls div.navigate-down,
125 | .reveal .controls div.navigate-down.enabled {
126 | border-top-color: $linkColor;
127 | }
128 |
129 | .reveal .controls div.navigate-left.enabled:hover {
130 | border-right-color: $linkColorHover;
131 | }
132 |
133 | .reveal .controls div.navigate-right.enabled:hover {
134 | border-left-color: $linkColorHover;
135 | }
136 |
137 | .reveal .controls div.navigate-up.enabled:hover {
138 | border-bottom-color: $linkColorHover;
139 | }
140 |
141 | .reveal .controls div.navigate-down.enabled:hover {
142 | border-top-color: $linkColorHover;
143 | }
144 |
145 |
146 | /*********************************************
147 | * PROGRESS BAR
148 | *********************************************/
149 |
150 | .reveal .progress {
151 | background: rgba(0,0,0,0.2);
152 | }
153 | .reveal .progress span {
154 | background: $linkColor;
155 |
156 | -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
157 | -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
158 | -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
159 | -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
160 | transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
161 | }
162 |
163 | /*********************************************
164 | * SLIDE NUMBER
165 | *********************************************/
166 | .reveal .slide-number {
167 | color: $linkColor;
168 | }
169 |
170 |
171 |
--------------------------------------------------------------------------------
/slides/demos/AI-editor/css/style.css:
--------------------------------------------------------------------------------
1 | body{
2 | margin: auto;
3 | }
4 |
5 | h2 {
6 | color: #777;
7 | }
8 |
9 | *{
10 | -webkit-touch-callout: none;
11 | -webkit-user-select: none;
12 | -khtml-user-select: none;
13 | -moz-user-select: none;
14 | -ms-user-select: none;
15 | user-select: none;
16 | }
17 |
18 | .axis .domain{
19 | fill: none;
20 | stroke-width: 1;
21 | stroke: #333;
22 | }
23 |
24 | .axis text{
25 | font-size: 10px;
26 | fill: #000;
27 | opacity: 0.5;
28 | }
29 |
30 | .panel{
31 | width: 900px;
32 | margin: auto;
33 | }
34 |
35 | .player{
36 | display: block;
37 | /*clear: both;*/
38 | }
39 |
40 | .player .fields{
41 | float: left;
42 | }
43 |
44 | .player radar-chart{
45 | width: 100%;
46 | height: 400px;
47 | /*background-color: blue;*/
48 | overflow: hidden;
49 | display: block;
50 | }
51 |
52 | radar-chart .nob{
53 | display: none;
54 | fill: #eee;
55 | stroke: #666;
56 | opacity: 0.8;
57 | }
58 |
59 | radar-chart svg:hover .nob{
60 | display: inherit;
61 | }
62 |
63 | .averages radar-chart svg:hover .nob{
64 | display: none;
65 | }
66 |
67 | radar-chart svg .area{
68 | fill: #FF5704;
69 | opacity: 0.7;
70 | }
71 |
72 | .averages radar-chart .area{
73 | fill: #FF5704;
74 | opacity: 0.9;
75 | }
76 |
77 | radar-chart .label{
78 | font-size: 1.2em;
79 | font-weight: inherit;
80 | fill: #777;
81 | }
82 |
83 | radar-chart .tick text{
84 | font-size: 1.2em;
85 | }
--------------------------------------------------------------------------------
/slides/demos/AI-editor/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vicapow/angular-d3-talk/2976848ba151f367eba91ced7723c8b1faaf0cf1/slides/demos/AI-editor/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/slides/demos/AI-editor/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vicapow/angular-d3-talk/2976848ba151f367eba91ced7723c8b1faaf0cf1/slides/demos/AI-editor/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/slides/demos/AI-editor/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vicapow/angular-d3-talk/2976848ba151f367eba91ced7723c8b1faaf0cf1/slides/demos/AI-editor/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/slides/demos/AI-editor/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | AI Editor
5 |
7 |
8 |
9 |
10 |
11 |
12 |
AI Character Creator
13 |
14 |
15 |
Attributes
16 |
21 |
22 |
23 |
51 |
52 |
53 |
Average attributes
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
AI character types
62 |
63 |
64 |
65 |
66 |
67 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/app.js:
--------------------------------------------------------------------------------
1 | var app = angular.module('myApp', ['ngRoute']);
2 |
3 | // this should be in a factory and not global but we'll leave it like this to
4 | // keep the example simple.
5 | var data = [
6 | { label: 'Sarah', value: 10 },
7 | { label: 'Victor', value: 20 }
8 | ];
9 |
10 | app.controller('MainCtrl', function($scope, $location){
11 | $scope.data = data;
12 | // so that our directive can know how to access the values from our data.
13 | $scope.accessor = function(d){ return d.value };
14 | $scope.done = function(){ $location.path('/'); };
15 | $scope.add = function(){
16 | $scope.data.push({ label: 'Victor', value: 100 })
17 | };
18 | $scope.remove = function(datum){
19 | $scope.data.splice(this.$index, 1);
20 | };
21 | $scope.edit = function(){ $location.path('/edit'); };
22 | $scope.live = function(){ $location.path('/live'); };
23 | });
24 |
25 | app.config(function($routeProvider){
26 | $routeProvider
27 | .when('/', {
28 | controller: 'MainCtrl',
29 | templateUrl: 'graph.html'
30 | })
31 | .when('/edit', {
32 | controller: 'MainCtrl',
33 | templateUrl: 'edit.html'
34 | })
35 | .when('/live', {
36 | controller: 'MainCtrl',
37 | templateUrl: 'live.html'
38 | })
39 | .otherwise({ redirectTo: '/' })
40 | });
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/donut-chart.directive.js:
--------------------------------------------------------------------------------
1 | app.directive('donutChart', function() {
2 |
3 | return {
4 | scope: { // isolate scope
5 | 'data': '=',
6 | 'onClick': '&',
7 | 'accessor': '='
8 | },
9 | restrict: 'E',
10 | link: link
11 | };
12 |
13 | function link(scope, element) {
14 | // the d3 bits
15 | console.log('scope.data', scope.data);
16 | var color = d3.scale.category10();
17 | var el = element[0];
18 | var width = el.clientWidth;
19 | var height = el.clientHeight;
20 | var min = Math.min(width, height);
21 | var accessor = scope.accessor || Number;
22 | var pie = d3.layout.pie().sort(null).value(accessor);
23 | var arc = d3.svg.arc()
24 | .outerRadius(min / 2 * 0.9)
25 | .innerRadius(min / 2 * 0.5);
26 |
27 | var svg = d3.select(el).append('svg')
28 | .attr({width: width, height: height})
29 | .append('g')
30 | .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');
31 |
32 | svg.on('mousedown', function(d) {
33 | // yo angular, the code in this callback might make a change to the scope!
34 | // so be sure to apply $watch's and catch errors.
35 | scope.$apply(function(){
36 | if(scope.onClick) scope.onClick();
37 | });
38 | });
39 |
40 | function arcTween(a) {
41 | // see: http://bl.ocks.org/mbostock/1346410
42 | var i = d3.interpolate(this._current, a);
43 | this._current = i(0);
44 | return function(t) {
45 | return arc(i(t));
46 | };
47 | }
48 |
49 | // add the s for each arc slice
50 | var arcs = svg.selectAll('path.arc').data(pie(scope.data))
51 | .enter().append('path')
52 | .attr('class', 'arc')
53 | .style('stroke', 'white')
54 | .attr('fill', function(d, i) { return color(i) })
55 | // store the initial angles
56 | .each(function(d) { return this._current = d });
57 |
58 | // our data changed! update the arcs, adding, updating, or removing
59 | // elements as needed
60 | scope.$watch('data', function(newData, oldData){
61 | console.log('data changed!');
62 | var data = newData.slice(0); // copy
63 | var duration = 500;
64 | var PI = Math.PI;
65 | while(data.length < oldData.length) data.push(0);
66 | arcs = svg.selectAll('.arc').data(pie(data));
67 | arcs.transition().duration(duration).attrTween('d', arcTween);
68 | // transition in any new slices
69 | arcs.enter().append('path')
70 | .style('stroke', 'white')
71 | .attr('class', 'arc')
72 | .attr('fill', function(d, i){ return color(i) })
73 | .each(function(d) {
74 | this._current = { startAngle: 2 * PI - 0.001, endAngle: 2 * PI }
75 | })
76 | .transition().duration(duration).attrTween('d', arcTween);
77 | // transition out any slices with size = 0
78 | arcs.filter(function(d){ return d.data === 0 })
79 | .transition()
80 | .duration(duration)
81 | .each(function(d){ d.startAngle = 2 * PI - 0.001; d.endAngle = 2 * PI; })
82 | .attrTween('d', arcTween).remove();
83 | // IMPORTANT! the third argument, `true`, tells angular to watch for
84 | // changes to array elements.
85 | }, true);
86 | }
87 | });
88 |
89 | app.controller('MainController', function($scope){
90 | // controller "knows" nothing about donut charts
91 | $scope.shared = { data: [1] };
92 | $scope.chartClicked = function(){
93 | var n = Math.round(Math.random() * 9) + 1;
94 | $scope.shared.data = d3.range(n).map(function(d){ return Math.random(); });
95 | }
96 | });
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/edit.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/graph.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/live.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/slides/demos/a-donut-chart-editor/style.css:
--------------------------------------------------------------------------------
1 |
2 |
3 | donut-chart{
4 | width: 100%;
5 | top: 20%;
6 | height: 80%;
7 | position: absolute;
8 | pointer-events: none;
9 | }
10 | .controls{
11 | float: right;
12 | text-align: right;
13 | }
14 |
15 | * {
16 | -webkit-box-sizing: border-box;
17 | box-sizing: border-box;
18 | -webkit-appearance: none;
19 | -webkit-user-select: none;
20 | user-select: none;
21 | outline: none;
22 | }
23 |
24 | /*
25 | * just some select styles from: http://designmodo.github.io/Flat-UI/
26 | */
27 |
28 | body{
29 | font-family: "Lato", Helvetica, Arial, sans-serif;
30 | }
31 |
32 | button{
33 | border: none;
34 | border-radius: 6px;
35 | line-height: 1.471;
36 | padding: 10px 19px;
37 | color: #ffffff;
38 | background-color: #1abc9c;
39 | font-size: 17px;
40 | -webkit-font-smoothing: subpixel-antialiased;
41 | -webkit-transition: 0.25s linear;
42 | transition: 0.25s linear;
43 | }
44 |
45 | button:hover{
46 | color: #ffffff;
47 | background-color: #48c9b0;
48 | }
49 |
50 | input{
51 | border: 2px solid #bdc3c7;
52 | color: #34495e;
53 | font-size: 15px;
54 | padding: 8px 12px;
55 | height: 42px;
56 | -webkit-appearance: none;
57 | border-radius: 6px;
58 | -webkit-box-shadow: none;
59 | box-shadow: none;
60 | -webkit-transition: border .25s linear, color .25s linear, background-color .25s linear;
61 | transition: border .25s linear, color .25s linear, background-color .25s linear;
62 | }
--------------------------------------------------------------------------------
/slides/demos/arch-angels/Church_Heart_of_the_Andes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vicapow/angular-d3-talk/2976848ba151f367eba91ced7723c8b1faaf0cf1/slides/demos/arch-angels/Church_Heart_of_the_Andes.jpg
--------------------------------------------------------------------------------
/slides/demos/arch-angels/angel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vicapow/angular-d3-talk/2976848ba151f367eba91ced7723c8b1faaf0cf1/slides/demos/arch-angels/angel.png
--------------------------------------------------------------------------------
/slides/demos/arch-angels/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
16 |
17 |
18 |
45 |
46 |
--------------------------------------------------------------------------------
/slides/demos/d3-intro/div-bar-chart.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
19 |
20 |
31 |
32 |
--------------------------------------------------------------------------------
/slides/demos/lets-make-a-donut-chart-directive/v0-directive.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/slides/demos/lets-make-a-donut-chart-directive/v0.1-d3-layout.pie.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
15 |
16 |
17 |
18 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/slides/demos/lets-make-a-donut-chart-directive/v0.2-d3-layout.pie.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
15 |
16 |
17 |
18 |
36 |
37 |
38 |
39 |