9
9
import { Component , ViewEncapsulation } from '@angular/core' ;
10
10
import { BehaviorSubject } from 'rxjs/index' ;
11
11
12
+
13
+ type State = {
14
+ name : string ,
15
+ capital : string
16
+ } ;
17
+
18
+
12
19
@Component ( {
13
20
moduleId : module . id ,
14
21
selector : 'virtual-scroll-demo' ,
@@ -23,6 +30,61 @@ export class VirtualScrollDemo {
23
30
. map ( ( _ , i ) => ( 1 + Math . floor ( ( 10000 - i ) / 1000 ) ) * 20 ) ;
24
31
randomData = Array ( 10000 ) . fill ( 0 ) . map ( ( ) => Math . round ( Math . random ( ) * 100 ) ) ;
25
32
observableData = new BehaviorSubject < number [ ] > ( [ ] ) ;
33
+ states = [
34
+ { name : 'Alabama' , capital : 'Montgomery' } ,
35
+ { name : 'Alaska' , capital : 'Juneau' } ,
36
+ { name : 'Arizona' , capital : 'Phoenix' } ,
37
+ { name : 'Arkansas' , capital : 'Little Rock' } ,
38
+ { name : 'California' , capital : 'Sacramento' } ,
39
+ { name : 'Colorado' , capital : 'Denver' } ,
40
+ { name : 'Connecticut' , capital : 'Hartford' } ,
41
+ { name : 'Delaware' , capital : 'Dover' } ,
42
+ { name : 'Florida' , capital : 'Tallahassee' } ,
43
+ { name : 'Georgia' , capital : 'Atlanta' } ,
44
+ { name : 'Hawaii' , capital : 'Honolulu' } ,
45
+ { name : 'Idaho' , capital : 'Boise' } ,
46
+ { name : 'Illinois' , capital : 'Springfield' } ,
47
+ { name : 'Indiana' , capital : 'Indianapolis' } ,
48
+ { name : 'Iowa' , capital : 'Des Moines' } ,
49
+ { name : 'Kansas' , capital : 'Topeka' } ,
50
+ { name : 'Kentucky' , capital : 'Frankfort' } ,
51
+ { name : 'Louisiana' , capital : 'Baton Rouge' } ,
52
+ { name : 'Maine' , capital : 'Augusta' } ,
53
+ { name : 'Maryland' , capital : 'Annapolis' } ,
54
+ { name : 'Massachusetts' , capital : 'Boston' } ,
55
+ { name : 'Michigan' , capital : 'Lansing' } ,
56
+ { name : 'Minnesota' , capital : 'St. Paul' } ,
57
+ { name : 'Mississippi' , capital : 'Jackson' } ,
58
+ { name : 'Missouri' , capital : 'Jefferson City' } ,
59
+ { name : 'Montana' , capital : 'Helena' } ,
60
+ { name : 'Nebraska' , capital : 'Lincoln' } ,
61
+ { name : 'Nevada' , capital : 'Carson City' } ,
62
+ { name : 'New Hampshire' , capital : 'Concord' } ,
63
+ { name : 'New Jersey' , capital : 'Trenton' } ,
64
+ { name : 'New Mexico' , capital : 'Santa Fe' } ,
65
+ { name : 'New York' , capital : 'Albany' } ,
66
+ { name : 'North Carolina' , capital : 'Raleigh' } ,
67
+ { name : 'North Dakota' , capital : 'Bismarck' } ,
68
+ { name : 'Ohio' , capital : 'Columbus' } ,
69
+ { name : 'Oklahoma' , capital : 'Oklahoma City' } ,
70
+ { name : 'Oregon' , capital : 'Salem' } ,
71
+ { name : 'Pennsylvania' , capital : 'Harrisburg' } ,
72
+ { name : 'Rhode Island' , capital : 'Providence' } ,
73
+ { name : 'South Carolina' , capital : 'Columbia' } ,
74
+ { name : 'South Dakota' , capital : 'Pierre' } ,
75
+ { name : 'Tennessee' , capital : 'Nashville' } ,
76
+ { name : 'Texas' , capital : 'Austin' } ,
77
+ { name : 'Utah' , capital : 'Salt Lake City' } ,
78
+ { name : 'Vermont' , capital : 'Montpelier' } ,
79
+ { name : 'Virginia' , capital : 'Richmond' } ,
80
+ { name : 'Washington' , capital : 'Olympia' } ,
81
+ { name : 'West Virginia' , capital : 'Charleston' } ,
82
+ { name : 'Wisconsin' , capital : 'Madison' } ,
83
+ { name : 'Wyoming' , capital : 'Cheyenne' } ,
84
+ ] ;
85
+ statesObservable = new BehaviorSubject ( this . states ) ;
86
+ indexTrackFn = ( index : number ) => index ;
87
+ nameTrackFn = ( _ : number , item : State ) => item . name ;
26
88
27
89
constructor ( ) {
28
90
this . emitData ( ) ;
@@ -35,4 +97,11 @@ export class VirtualScrollDemo {
35
97
setTimeout ( ( ) => this . emitData ( ) , 1000 ) ;
36
98
}
37
99
}
100
+
101
+ sortBy ( prop : 'name' | 'capital' ) {
102
+ this . statesObservable . next ( this . states . map ( s => ( { ...s } ) ) . sort ( ( a , b ) => {
103
+ const aProp = a [ prop ] , bProp = b [ prop ] ;
104
+ return aProp < bProp ? - 1 : ( aProp > bProp ? 1 : 0 ) ;
105
+ } ) ) ;
106
+ }
38
107
}
0 commit comments