11/* global angular */
22angular . module ( 'codexen' )
3- . controller ( 'SnippetsListController' , function ( $auth , Snippet , $scope , $state , $scope ) {
3+ . controller ( 'SnippetsListController' , function ( $auth , Snippet , $scope , $state , $scope , $filter , mySnippets ) {
44 var vm = this
55
6- vm . isLoaded = false
7-
8- vm . search = $state . params . search
6+ vm . isLoading = false
97
108 vm . snippetId = parseInt ( $state . params . id )
11- $scope . $on ( '$stateChangeStart' , function ( e , toState , toParams ) {
12- vm . snippetId = parseInt ( toParams . id )
13- } )
149
15- var loadSnippets = function ( ) {
16- if ( $auth . isAuthenticated ) {
17- Snippet . findMine ( {
18- 'include' : [ 'Tag' ]
19- } )
20- . success ( function ( data ) {
21- console . log ( 'snippets fetched' , data )
22- vm . isLoaded = true
23- vm . snippets = data
24- vm . isGuest = false
25- } )
26- } else {
27- vm . isLoaded = true
28- vm . isGuest = true
29- vm . snippets = void 0
30- }
31- }
10+ vm . snippets = mySnippets
3211
33- loadSnippets ( )
12+ vm . searchSnippets = searchSnippets
13+ vm . searchSnippets ( )
3414
35- $scope . $on ( 'userSignIn' , function ( ) {
36- loadSnippets ( )
37- } )
15+ // TODO: add Navigation methods
16+ // vm.nextSnippet()
17+ // vm.priorSnippet()
18+ // vm.firstSnippet()
19+ // vm.lastSnippet()
3820
39- $scope . $on ( 'userSignOut' , function ( ) {
40- loadSnippets ( )
21+ // TODO: keyboard navigating UX
22+
23+ $scope . $on ( '$stateChangeStart' , function ( e , toState , toParams ) {
24+ vm . snippetId = parseInt ( toParams . id )
25+ if ( ! vm . snippetId && vm . filtered [ 0 ] ) {
26+ $state . go ( 'snippets.detail' , { id : vm . filtered [ 0 ] . id } )
27+ }
4128 } )
4229
30+
4331 $scope . $on ( 'snippetUpdated' , function ( e , snippet ) {
4432 $state . go ( 'snippets.detail' , { id : snippet . id } )
4533 loadSnippets ( )
@@ -64,4 +52,32 @@ angular.module('codexen')
6452 loadSnippets ( )
6553 } )
6654
55+ $scope . $on ( 'tagSelected' , function ( e , tag ) {
56+ e . stopPropagation ( )
57+ $scope . $apply ( function ( ) {
58+ vm . search = '#' + tag . name
59+ searchSnippets ( )
60+ } )
61+ } )
62+
63+ function loadSnippets ( ) {
64+ if ( $auth . isAuthenticated ) {
65+ Snippet . findMine ( {
66+ 'include' : [ 'Tag' ]
67+ } )
68+ . success ( function ( data ) {
69+ vm . snippets = data
70+ } )
71+ } else {
72+ vm . snippets = void 0
73+ }
74+ }
75+
76+ function searchSnippets ( ) {
77+ vm . filtered = $filter ( 'searchSnippets' ) ( mySnippets , vm . search )
78+ if ( vm . search && vm . filtered [ 0 ] && ( ! vm . snippetId || vm . snippetId !== vm . filtered [ 0 ] . id ) ) {
79+ $state . go ( 'snippets.detail' , { id : vm . filtered [ 0 ] . id } )
80+ }
81+ }
82+
6783 } )
0 commit comments