Skip to content

Commit 0a1626b

Browse files
committed
sidebar component
1 parent 132412d commit 0a1626b

File tree

2 files changed

+117
-0
lines changed

2 files changed

+117
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/**
2+
* Sidebar Component
3+
*
4+
* @memberOf riccardo
5+
* @description
6+
* Sidebar component.
7+
*/
8+
9+
(function () {
10+
'use strict';
11+
12+
angular.module('riccardo').component('riccardoSidebar', {
13+
bindings: {},
14+
controller: SidebarCmptCtrl,
15+
templateUrl: 'app/common/sidebar/riccardo-sidebar.html'
16+
});
17+
18+
SidebarCmptCtrl.$inject = ['$rootScope', '$state', 'peopleService'];
19+
20+
/**
21+
* @name SidebarCmptCtrl
22+
* @function SidebarCmptCtrl
23+
* @memberOf riccardo.SidebarCmptCtrl
24+
* @param $rootScope
25+
* @param $state
26+
* @description
27+
* Sidebar component controller.
28+
*/
29+
function SidebarCmptCtrl($rootScope, $state, peopleService) {
30+
var $ctrl = this;
31+
$ctrl.open = true;
32+
33+
$rootScope.overlay = true;
34+
35+
// Get the people from the service
36+
peopleService.getPeople()
37+
// Supply the success and failure response
38+
.then(successRequest, failureRequest);
39+
40+
/**
41+
* @name successRequest
42+
* @function successRequest
43+
* @memberOf riccardo.PersonDetailsCmptCtrl
44+
* @param response
45+
* @description
46+
* HTTP success response.
47+
*/
48+
function successRequest(response) {
49+
if (!!response.data.People) {
50+
$ctrl.people = response.data.People;
51+
// Hide loader
52+
$rootScope.overlay = false;
53+
} else {
54+
console.error('Http request error in retrieving the information from the server');
55+
// Hide loader
56+
$rootScope.overlay = false;
57+
}
58+
}
59+
60+
/**
61+
* @name failureRequest
62+
* @function failureRequest
63+
* @memberOf riccardo.PersonDetailsCmptCtrl
64+
* @param reason
65+
* @description
66+
* HTTP failure reason.
67+
*/
68+
function failureRequest(reason) {
69+
console.error('Error in sending the request to the server: ', reason.data);
70+
// Hide loader
71+
$rootScope.overlay = false;
72+
}
73+
}
74+
}());
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<a
2+
class="link hamburgerMenu"
3+
title="Riccardo Menu"
4+
ng-click="$ctrl.open = true"
5+
></a>
6+
7+
<aside ng-class="{ 'sidebar': true, 'open': $ctrl.open, 'close': !$ctrl.open }">
8+
<div class="transparentOverlay" ng-click="$ctrl.open = false"></div>
9+
<a aria-label="Dismiss" class="closeSidebar" ng-click="$ctrl.open = false"></a>
10+
11+
<div class="sidebarScroller">
12+
<div class="sidebarLogoContainer">
13+
<a ui-sref="riccardo-exercise">
14+
<img class="logo" src="assets/images/riccardo-logo.png" alt="Riccardo Logo">
15+
</a>
16+
</div>
17+
18+
<div class="sidebarActionContainer">
19+
Search: <input type="text" ng-model="$ctrl.search" />
20+
</div>
21+
22+
<div class="sidebarActionContainer">
23+
Sort by:
24+
<select ng-model="$ctrl.order">
25+
<option value="name">Alphabetical</option>
26+
<option value="rating">Rating</option>
27+
</select>
28+
</div>
29+
30+
<div
31+
ng-repeat="person in $ctrl.people | filter: $ctrl.search | orderBy: $ctrl.order"
32+
class="sidebarElement"
33+
>
34+
<a
35+
class="sidebarMenuItem link"
36+
ui-sref="person-details({ id: person.id, name: person.name, person: person })"
37+
ui-sref-active="active"
38+
>
39+
<span class="sidebarMenuItemLabel">{{ person.name }}</span>
40+
</a>
41+
</div>
42+
</div>
43+
</aside>

0 commit comments

Comments
 (0)