Skip to content

Commit d52ab3b

Browse files
committed
Added the functions required to provide the town's data
1 parent 28dad10 commit d52ab3b

2 files changed

Lines changed: 120 additions & 3 deletions

File tree

index.html

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,32 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8">
5-
<title>Section 2: JavaScript Language Basics</title>
5+
<title>Section 7: Get Ready for the Future: ES6 / ES2015</title>
6+
7+
<style>
8+
.box {
9+
width: 200px;
10+
padding: 60px;
11+
text-align: center;
12+
font-size: 30px;
13+
margin-top: 50px;
14+
}
15+
16+
.green { background-color: green; }
17+
.blue { background-color: dodgerblue; }
18+
.orange { background-color: orangered; }
19+
20+
</style>
21+
622
</head>
723

824
<body>
9-
<h1>Section 2: JavaScript Language Basics</h1>
25+
<h1>Section 7: Get Ready for the Future: ES6 / ES2015</h1>
26+
27+
<div class="box green">I'm green!</div>
28+
<div class="box blue">I'm blue!</div>
29+
<div class="box orange">I'm orange!</div>
30+
31+
<script src="script.js"></script>
1032
</body>
11-
</html>
33+
</html>

script.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
class Park {
2+
constructor(name, area, numberOfTrees, age) {
3+
this.name = name,
4+
this.area = area,
5+
this.numberOfTrees = numberOfTrees,
6+
this.age = age
7+
}
8+
getTreeDensity(park) {
9+
return park.numberOfTrees / park.area;
10+
}
11+
}
12+
13+
class Street {
14+
constructor(name, length, yearBuilt, size) {
15+
this.name = name,
16+
this.length = length,
17+
this.yearBuilt = yearBuilt,
18+
this.size = size,
19+
this.sizeClassification = this.sizeClassification();
20+
}
21+
22+
sizeClassification() {
23+
const streetSize = this.size;
24+
if (!streetSize) {
25+
return 'normal';
26+
}
27+
if (streetSize > 20) {
28+
return 'huge';
29+
}
30+
if (streetSize > 10 ) {
31+
return 'big'
32+
}
33+
return 'small';
34+
}
35+
}
36+
37+
class Town {
38+
constructor(name, parks, streets) {
39+
this.name = name,
40+
this.parks = parks,
41+
this.streets = streets
42+
}
43+
getAverageAges() {
44+
let avrg = 0;
45+
this.parks.forEach(park => {
46+
avrg += park.age;
47+
});
48+
return avrg;
49+
}
50+
51+
getParkWith1000Trees() {
52+
const park = this.parks.find(({numberOfTrees}) => numberOfTrees >= 1000);
53+
return park.name;
54+
}
55+
56+
getTotalLenghtOfStreets() {
57+
let total = 0;
58+
this.streets.forEach(street => {
59+
total += street.length;
60+
});
61+
return total;
62+
}
63+
getAvergLenghtOfStreets() {
64+
return this.getTotalLenghtOfStreets() / this.streets.length;
65+
}
66+
}
67+
68+
{
69+
const park1 = new Park('Green Park', 156, 50, 500);
70+
const park2 = new Park('National Park', 156, 50, 200);
71+
const park3 = new Park('Naional Park', 156, 1000, 1100);
72+
73+
const allParks = [park1, park2, park3];
74+
75+
const street1 = new Street('Ocean Avenue', 20, 1999, 11);
76+
const street2 = new Street('Evergreen Street', 20, 2008, 10);
77+
const street3 = new Street('4th Street', 20, 2015);
78+
const street4 = new Street('Sunset Boulevard', 20, 1982, 21);
79+
80+
const allStreets = [street1, street2, street3, street4];
81+
82+
const town = new Town('The Town', allParks, allStreets);
83+
84+
console.log('-----------------------PARKS REPORT-------------------------------------');
85+
console.log(`Our ${town.parks.length} parks have an average age of ${town.getAverageAges()} years.`)
86+
town.parks.forEach(park => {
87+
console.log(`${park.name} has a tree density of ${park.getTreeDensity(park)} trees per square km.`);
88+
});
89+
console.log(`${town.getParkWith1000Trees()} has more than 1000 trees.`)
90+
console.log('----------------------STREETS REPORT------------------------------------');
91+
console.log(`Our ${town.streets.length} streets have a total lenght of ${town.getTotalLenghtOfStreets()} km, with an average of ${town.getAvergLenghtOfStreets()} km.`);
92+
town.streets.forEach(street => {
93+
console.log(`${street.name}, built in ${street.yearBuilt}, is a ${street.sizeClassification} street`);
94+
});
95+
}

0 commit comments

Comments
 (0)