Skip to content

Commit

Permalink
AngularJS Tutorial Part 5 - Creating Individual Pages for Characters …
Browse files Browse the repository at this point in the history
…and Movies
  • Loading branch information
aashnisshah committed Aug 20, 2016
1 parent 0c50a4c commit 1b04e6d
Show file tree
Hide file tree
Showing 8 changed files with 186 additions and 5 deletions.
10 changes: 10 additions & 0 deletions app.js
Expand Up @@ -8,6 +8,16 @@ angularApp.config(['$routeProvider',
controller : 'MainCtrl', controller : 'MainCtrl',
controllerAs : 'main' controllerAs : 'main'
}) })
.when('/character/:id', {
templateUrl: 'views/character.html',
controller: 'CharacterCtrl',
controllerAs: 'character'
})
.when('/movie/:id', {
templateUrl: 'views/movie.html',
controller: 'MovieCtrl',
controllerAs: 'movie'
})
.otherwise('/'); .otherwise('/');
} }
]); ]);
22 changes: 22 additions & 0 deletions controllers/character.js
@@ -0,0 +1,22 @@
angularApp.controller('CharacterCtrl', [
'$routeParams',
'$scope',
'SwapiService',
function($routeParams, $scope, SwapiService){

$scope.character = {};
$scope.loading = true;
$scope.id = $routeParams.id;

SwapiService.people()
.then(function(data) {
angular.forEach(data.data.results, function(person) {
if (person.name.toLowerCase() === $routeParams.id.toLowerCase()) {
angular.copy(person, $scope.character);
console.log(person);
}
});
$scope.loading = false;
});
}
]);
5 changes: 4 additions & 1 deletion controllers/main.js
Expand Up @@ -26,7 +26,10 @@ angularApp.controller('MainCtrl', [
// adding film names to list of films // adding film names to list of films
angular.forEach($scope.filmInfo, function(film) { angular.forEach($scope.filmInfo, function(film) {
var api_call = 'http://swapi.co/api/films/' + film.episode_id + '/'; var api_call = 'http://swapi.co/api/films/' + film.episode_id + '/';
$scope.films[api_call] = film.title; $scope.films[api_call] = {
'title': film.title,
'episode_id': film.episode_id
};
}); });
}); });


Expand Down
21 changes: 21 additions & 0 deletions controllers/movie.js
@@ -0,0 +1,21 @@
angularApp.controller('MovieCtrl', [
'$routeParams',
'$scope',
'SwapiService',
function($routeParams, $scope, SwapiService){

$scope.movie = {};
$scope.loading = true;
$scope.id = $routeParams.id;

SwapiService.films()
.then(function(data) {
angular.forEach(data.data.results, function(film) {
if (film.episode_id == $routeParams.id) {
angular.copy(film, $scope.movie);
}
});
$scope.loading = false;
});
}
]);
2 changes: 2 additions & 0 deletions index.html
Expand Up @@ -12,6 +12,8 @@


<!-- Controllers --> <!-- Controllers -->
<script type="text/javascript" src="controllers/main.js"></script> <script type="text/javascript" src="controllers/main.js"></script>
<script type="text/javascript" src="controllers/character.js"></script>
<script type="text/javascript" src="controllers/movie.js"></script>


<!-- Services --> <!-- Services -->
<script type="text/javascript" src="services/swapi.js"></script> <script type="text/javascript" src="services/swapi.js"></script>
Expand Down
63 changes: 63 additions & 0 deletions views/character.html
@@ -0,0 +1,63 @@
<div class="col-md-10 col-md-offset-1" ng-if="loading">
<div class="page-header">
<h1>Loading...</h1>
</div>
</div>

<div class="col-md-10 col-md-offset-1" ng-if="!loading">
<div ng-if="character.name">

<div class="page-header">
<h1>{{ character.name }}</h1>
</div>

<p><a href="#/">Home</a><p>

<div class="panel panel-default">
<div class="panel-body">
Name: {{ character.name }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Height: {{ character.height }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Mass: {{ character.mass }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Hair Color: {{ character.hair_color }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Eye Color: {{ character.eye_color }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Birth Year: {{ character.birth_year }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Gender: {{ character.gender }}
</div>
</div>

</div>

<div ng-if="!character.name">

<div class="page-header">
<h1>No one by the name {{ id }} exists :(</h1>
</div>

<a href="#/">Return Home?</a>

</div>
</div>
12 changes: 8 additions & 4 deletions views/main.html
Expand Up @@ -5,12 +5,16 @@ <h1>Star Wars</h1>
</div> </div>


<div class="panel panel-default" ng-repeat="person in data"> <div class="panel panel-default" ng-repeat="person in data">
<div class="panel-heading">{{ person.name }}</div> <div class="panel-heading">
<a href="#/character/{{ person.name }}">{{ person.name }}</a>
</div>
<div class="panel-body"> <div class="panel-body">
<ul class="btn-group" ng-repeat="film in person.films"> <ul class="btn-group" ng-repeat="film in person.films">
<button class="btn btn-primary"> <a href="#/movie/{{ films[film].episode_id }}">
{{ films[film] }} <button class="btn btn-primary">
</button> {{ films[film].title }}
</button>
</a>
</ul> </ul>
</div> </div>
</div> </div>
Expand Down
56 changes: 56 additions & 0 deletions views/movie.html
@@ -0,0 +1,56 @@
<div class="col-md-10 col-md-offset-1" ng-if="loading">
<div class="page-header">
<h1>Loading...</h1>
</div>
</div>

<div class="col-md-10 col-md-offset-1" ng-if="!loading">
<div ng-if="movie.title">
<div class="page-header">
<h1>Episode {{ id }}: {{ movie.title }}</h1>
</div>

<p><a href="#/">Home</a><p>

<div class="panel panel-default">
<div class="panel-body">
Name: {{ movie.title }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Opening Crawl:
<p>
{{ movie.opening_crawl }}
</p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Director: {{ movie.director }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Producer: {{ movie.producer }}
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
Release Date: {{ movie.release_date }}
</div>
</div>


</div>

<div ng-if="!movie.title">

<div class="page-header">
<h1>There is no Episode {{ id }} yet :(</h1>
</div>

<a href="#/">Return Home?</a>

</div>
</div>

0 comments on commit 1b04e6d

Please sign in to comment.