| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | --- | 
					
						
							|  |  |  | id: 5d8a4cfbe6b6180ed9a1ca04 | 
					
						
							| 
									
										
										
										
											2021-10-21 10:07:52 -07:00
										 |  |  | title: Step 39 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | challengeType: 0 | 
					
						
							| 
									
										
										
										
											2021-10-21 10:07:52 -07:00
										 |  |  | dashedName: step-39 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | # --description--
 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | Add two more `style` functions; one to set the `cursor` to `pointer`, and another to set the `font` to `10px verdana`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You will add some hover effects later, so the pointer will make for a better experience. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | # --hints--
 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | test-text | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert( | 
					
						
							|  |  |  |   $('.tick > text').filter( | 
					
						
							|  |  |  |     (node, index) => | 
					
						
							|  |  |  |       index.style.cursor === 'pointer' && index.style.font === '10px verdana' | 
					
						
							|  |  |  |   ).length === 9 | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | # --seed--
 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | ## --before-user-code--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```html | 
					
						
							|  |  |  | <!DOCTYPE html> | 
					
						
							|  |  |  | <html> | 
					
						
							|  |  |  |   <head> | 
					
						
							|  |  |  |     <title>D3 Dashboard</title> | 
					
						
							|  |  |  |     <style> | 
					
						
							|  |  |  |       body { | 
					
						
							|  |  |  |         background-color: #ccc; | 
					
						
							|  |  |  |         padding: 100px 10px; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .dashboard { | 
					
						
							|  |  |  |         width: 980px; | 
					
						
							|  |  |  |         height: 500px; | 
					
						
							|  |  |  |         background-color: white; | 
					
						
							|  |  |  |         box-shadow: 5px 5px 5px 5px #888; | 
					
						
							|  |  |  |         margin: auto; | 
					
						
							|  |  |  |         display: flex; | 
					
						
							|  |  |  |         align-items: center; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     </style> | 
					
						
							|  |  |  |   </head> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   <body> | 
					
						
							|  |  |  |     <div class="dashboard"></div> | 
					
						
							|  |  |  |   </body> | 
					
						
							|  |  |  | </html> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```html | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   const data = [  | 
					
						
							|  |  |  |     { year: 2012, followers: { twitter: 2594, tumblr:  401, instagram:   83 }}, | 
					
						
							|  |  |  |     { year: 2013, followers: { twitter: 3049, tumblr:  440, instagram:  192 }}, | 
					
						
							|  |  |  |     { year: 2014, followers: { twitter: 3511, tumblr:  415, instagram:  511 }}, | 
					
						
							|  |  |  |     { year: 2015, followers: { twitter: 3619, tumblr:  492, instagram: 1014 }}, | 
					
						
							|  |  |  |     { year: 2016, followers: { twitter: 4046, tumblr:  543, instagram: 2066 }}, | 
					
						
							|  |  |  |     { year: 2017, followers: { twitter: 3991, tumblr:  701, instagram: 3032 }}, | 
					
						
							|  |  |  |     { year: 2018, followers: { twitter: 3512, tumblr: 1522, instagram: 4512 }}, | 
					
						
							|  |  |  |     { year: 2019, followers: { twitter: 3274, tumblr: 1989, instagram: 4715 }}, | 
					
						
							|  |  |  |     { year: 2020, followers: { twitter: 2845, tumblr: 2040, instagram: 4801 }} | 
					
						
							|  |  |  |   ]; | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   const svgMargin = 70, | 
					
						
							|  |  |  |     svgWidth = 700, | 
					
						
							|  |  |  |     svgHeight = 500, | 
					
						
							|  |  |  |     twitterColor = '#7cd9d1', | 
					
						
							|  |  |  |     tumblrColor = '#f6dd71', | 
					
						
							|  |  |  |     instagramColor = '#fd9b98'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const lineGraph = d3.select('.dashboard') | 
					
						
							|  |  |  |     .append('svg') | 
					
						
							|  |  |  |     .attr('width', svgWidth) | 
					
						
							|  |  |  |     .attr('height', svgHeight); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const yScale = d3.scaleLinear() | 
					
						
							|  |  |  |     .domain([0, 5000]) | 
					
						
							|  |  |  |     .range([svgHeight - svgMargin, svgMargin]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const xScale = d3.scaleLinear() | 
					
						
							|  |  |  |     .domain([2012, 2020]) | 
					
						
							|  |  |  |     .range([svgMargin, svgWidth - svgMargin]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const yAxis = d3.axisLeft(yScale) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const xAxis = d3.axisBottom(xScale) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   lineGraph.append('g') | 
					
						
							|  |  |  |     .call(yAxis) | 
					
						
							|  |  |  |     .attr('transform', `translate(${svgMargin}, 0)`) | 
					
						
							|  |  |  |     .style('font', '10px verdana'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   lineGraph.append('g') | 
					
						
							|  |  |  |     .call(xAxis) | 
					
						
							|  |  |  |     .attr('transform', `translate(0, ${svgHeight - svgMargin})`) | 
					
						
							|  |  |  |     .selectAll('text') | 
					
						
							|  |  |  |     .style('transform', 'translate(-12px, 0) rotate(-50deg)') | 
					
						
							|  |  |  |     .style('text-anchor', 'end') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  | # --solutions--
 | 
					
						
							| 
									
										
										
										
											2020-02-25 22:53:07 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```html | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   const data = [  | 
					
						
							|  |  |  |     { year: 2012, followers: { twitter: 2594, tumblr:  401, instagram:   83 }}, | 
					
						
							|  |  |  |     { year: 2013, followers: { twitter: 3049, tumblr:  440, instagram:  192 }}, | 
					
						
							|  |  |  |     { year: 2014, followers: { twitter: 3511, tumblr:  415, instagram:  511 }}, | 
					
						
							|  |  |  |     { year: 2015, followers: { twitter: 3619, tumblr:  492, instagram: 1014 }}, | 
					
						
							|  |  |  |     { year: 2016, followers: { twitter: 4046, tumblr:  543, instagram: 2066 }}, | 
					
						
							|  |  |  |     { year: 2017, followers: { twitter: 3991, tumblr:  701, instagram: 3032 }}, | 
					
						
							|  |  |  |     { year: 2018, followers: { twitter: 3512, tumblr: 1522, instagram: 4512 }}, | 
					
						
							|  |  |  |     { year: 2019, followers: { twitter: 3274, tumblr: 1989, instagram: 4715 }}, | 
					
						
							|  |  |  |     { year: 2020, followers: { twitter: 2845, tumblr: 2040, instagram: 4801 }} | 
					
						
							|  |  |  |   ]; | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   const svgMargin = 70, | 
					
						
							|  |  |  |     svgWidth = 700, | 
					
						
							|  |  |  |     svgHeight = 500, | 
					
						
							|  |  |  |     twitterColor = '#7cd9d1', | 
					
						
							|  |  |  |     tumblrColor = '#f6dd71', | 
					
						
							|  |  |  |     instagramColor = '#fd9b98'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const lineGraph = d3.select('.dashboard') | 
					
						
							|  |  |  |     .append('svg') | 
					
						
							|  |  |  |     .attr('width', svgWidth) | 
					
						
							|  |  |  |     .attr('height', svgHeight); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const yScale = d3.scaleLinear() | 
					
						
							|  |  |  |     .domain([0, 5000]) | 
					
						
							|  |  |  |     .range([svgHeight - svgMargin, svgMargin]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const xScale = d3.scaleLinear() | 
					
						
							|  |  |  |     .domain([2012, 2020]) | 
					
						
							|  |  |  |     .range([svgMargin, svgWidth - svgMargin]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const yAxis = d3.axisLeft(yScale) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const xAxis = d3.axisBottom(xScale) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   lineGraph.append('g') | 
					
						
							|  |  |  |     .call(yAxis) | 
					
						
							|  |  |  |     .attr('transform', `translate(${svgMargin}, 0)`) | 
					
						
							|  |  |  |     .style('font', '10px verdana'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   lineGraph.append('g') | 
					
						
							|  |  |  |     .call(xAxis) | 
					
						
							|  |  |  |     .attr('transform', `translate(0, ${svgHeight - svgMargin})`) | 
					
						
							|  |  |  |     .selectAll('text') | 
					
						
							|  |  |  |     .style('transform', 'translate(-12px, 0) rotate(-50deg)') | 
					
						
							|  |  |  |     .style('text-anchor', 'end') | 
					
						
							|  |  |  |     .style('cursor', 'pointer') | 
					
						
							|  |  |  |     .style('font', '10px verdana'); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | ``` |