Skip to content

Commit 3d9d251

Browse files
committed
List of character cards + name search.
1 parent 2bc7e91 commit 3d9d251

File tree

3 files changed

+44
-17
lines changed

3 files changed

+44
-17
lines changed

app/characters/_characters.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.crt{
2+
&__form{
3+
width: 100%;
4+
}
5+
}

app/characters/characters.controller.js

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55
.module('app')
66
.controller('CharactersController', CharactersController);
77

8-
function CharactersController($log, charactersService, $cordovaToast) {
8+
function CharactersController($log, charactersService, $cordovaToast, throwErr, $scope, $cordovaKeyboard) {
99

1010
var vm = this;
1111
vm.title = 'CharactersController';
12-
//vm.request = request;
13-
vm.characters = charactersService.getList().$object;
12+
vm.filter = '';
13+
// Let's start with something cool ;)
14+
vm.characters = charactersService.getList({nameStartsWith:'Deadpool'}).$object;
1415
vm.keep = keep;
16+
vm.search = search;
17+
vm.searching = false;
1518

1619
activate();
1720

@@ -21,16 +24,28 @@
2124
$log.debug(vm.title + ' instantiated');
2225
}
2326

24-
function keep(){
27+
function keep() {
2528
$cordovaToast.showShortBottom('Not implemented yet…');
2629
}
2730

28-
//function request(){
29-
// charactersService.getList().then(function (characters) {
30-
// $log.debug(characters.length + ' characters:', characters);
31-
// $cordovaToast.showLongBottom(characters.length + ' characters in stock');
32-
// }).catch(throwErr);
33-
//}
31+
function search() {
32+
var criteria = vm.filter ? {nameStartsWith: vm.filter} : {};
33+
var promise = charactersService.getList(criteria);
34+
vm.characters = promise.$object;
35+
vm.searching = true;
36+
$cordovaKeyboard.close();
37+
return promise.then(log).catch(throwErr).finally(hideSpinner);
38+
39+
///////////
40+
41+
function log(characters) {
42+
$log.debug(characters.length + ' results:', characters);
43+
}
44+
45+
function hideSpinner(){
46+
vm.searching = false;
47+
}
48+
}
3449

3550
}
3651

app/characters/tab-characters.jade

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
ion-view.crt(view-title='Characters')
2-
ion-content.has-tabs
3-
.list.card(ng-repeat="character in vm.characters track by character.id")
4-
.item.item-image
5-
img(ng-src="{{character.getThumbnailUrl()}}")
6-
.item.item-icon-right.assertive
7-
i.icon.ion-android-favorite-outline(ng-click='vm.keep()')
8-
| {{character.name}}
2+
ion-content
3+
.bar.item-input-inset
4+
form.crt__form(name='crtSearchForm', novalidate, ng-submit='vm.search()', autocomplete="off")
5+
label.item-input-wrapper
6+
i.icon.ion-ios-search.placeholder-icon
7+
input(type='search', placeholder='Name starts with…', name='name',
8+
ng-model='vm.filter', spellcheck="false")
9+
ion-spinner.spinner-assertive(ng-if='vm.searching')
10+
.list.card(ng-repeat="character in vm.characters track by character.id")
11+
.item.item-image(ui-sref='tab.character-detail({character:character})')
12+
img(ng-src="{{character.getThumbnailUrl()}}")
13+
.item.item-icon-right.assertive
14+
i.icon.ion-android-favorite-outline(ng-click='vm.keep()')
15+
| {{character.name}}

0 commit comments

Comments
 (0)