1
1
// Some mockjax code to simulate Ajax calls
2
2
var phoneList = [
3
- {
4
- maker : 'HTC' ,
5
- model : 'One S' ,
6
- screen : 4.3 ,
7
- resolution : 540 ,
8
- storage : [ 8 , 16 ]
9
- } ,
10
- {
11
- maker : 'Samsung' ,
12
- model : 'Galaxy S4' ,
13
- screen : 5 ,
14
- resolution : 1080 ,
15
- storage : [ 16 , 32 , 64 ]
16
- } ,
17
- {
18
- maker : 'HTC' ,
19
- model : 'One' ,
20
- screen : 4.7 ,
21
- resolution : 1080 ,
22
- storage : [ 32 , 64 ]
23
- } ,
24
- {
25
- maker : 'Motorola' ,
26
- model : 'Droid 4' ,
27
- screen : 4 ,
28
- resolution : 540 ,
29
- storage : [ 8 ]
30
- } ,
31
- {
32
- maker : 'Motorola' ,
33
- model : 'Droid RAZR HD' ,
34
- screen : 4.7 ,
35
- resolution : 720 ,
36
- storage : [ 16 ]
37
- } ,
38
- {
39
- maker : 'LG' ,
40
- model : 'Optimus 4X HD' ,
41
- screen : 4.7 ,
42
- resolution : 720 ,
43
- storage : [ 16 ]
44
- } ,
45
- {
46
- maker : 'HTC' ,
47
- model : 'Butterfly' ,
48
- screen : 5 ,
49
- resolution : 1080 ,
50
- storage : [ 16 ]
51
- } ,
52
- {
53
- maker : 'Motorola' ,
54
- model : 'Moto X' ,
55
- screen : 4.7 ,
56
- resolution : 720 ,
57
- storage : [ 16 , 32 ]
58
- } ,
3
+ {
4
+ maker : 'HTC' ,
5
+ model : 'One S' ,
6
+ screen : 4.3 ,
7
+ resolution : 540 ,
8
+ storage : [ 8 , 16 ]
9
+ } ,
10
+ {
11
+ maker : 'Samsung' ,
12
+ model : 'Galaxy S4' ,
13
+ screen : 5 ,
14
+ resolution : 1080 ,
15
+ storage : [ 16 , 32 , 64 ]
16
+ } ,
17
+ {
18
+ maker : 'HTC' ,
19
+ model : 'One' ,
20
+ screen : 4.7 ,
21
+ resolution : 1080 ,
22
+ storage : [ 32 , 64 ]
23
+ } ,
24
+ {
25
+ maker : 'Motorola' ,
26
+ model : 'Droid 4' ,
27
+ screen : 4 ,
28
+ resolution : 540 ,
29
+ storage : [ 8 ]
30
+ } ,
31
+ {
32
+ maker : 'Motorola' ,
33
+ model : 'Droid RAZR HD' ,
34
+ screen : 4.7 ,
35
+ resolution : 720 ,
36
+ storage : [ 16 ]
37
+ } ,
38
+ {
39
+ maker : 'LG' ,
40
+ model : 'Optimus 4X HD' ,
41
+ screen : 4.7 ,
42
+ resolution : 720 ,
43
+ storage : [ 16 ]
44
+ } ,
45
+ {
46
+ maker : 'HTC' ,
47
+ model : 'Butterfly' ,
48
+ screen : 5 ,
49
+ resolution : 1080 ,
50
+ storage : [ 16 ]
51
+ } ,
52
+ {
53
+ maker : 'Motorola' ,
54
+ model : 'Moto X' ,
55
+ screen : 4.7 ,
56
+ resolution : 720 ,
57
+ storage : [ 16 , 32 ]
58
+ }
59
59
] ;
60
60
61
+ function arrayIntersect ( a , b ) {
62
+ return $ . grep ( a , function ( i ) {
63
+ return $ . inArray ( i , b ) > - 1 ;
64
+ } ) ;
65
+ }
66
+
67
+ function arrayToInt ( array ) {
68
+ var output = [ ] ;
69
+
70
+ for ( var i = 0 ; i < array . length ; i ++ ) {
71
+ if ( array [ i ] && ! isNaN ( + array [ i ] ) ) output . push ( + array [ i ] ) ;
72
+ }
73
+
74
+ return output ;
75
+ }
76
+
77
+ function arrayToFloat ( array ) {
78
+ var output = [ ] ;
79
+
80
+ for ( var i = 0 ; i < array . length ; i ++ ) {
81
+ if ( array [ i ] && ! isNaN ( parseFloat ( array [ i ] ) ) ) output . push ( parseFloat ( array [ i ] ) ) ;
82
+ }
83
+
84
+ return output ;
85
+ }
86
+
61
87
function getPhones ( screen , resolution , storage ) {
88
+ var _screen = arrayToFloat ( [ ] . concat ( screen ) ) ,
89
+ _resolution = arrayToInt ( [ ] . concat ( resolution ) ) ,
90
+ _storage = arrayToInt ( [ ] . concat ( storage ) ) ;
91
+
62
92
return $ . grep ( phoneList , function ( item , index ) {
63
93
var s = true , r = true , st = true ;
64
94
65
- if ( screen ) {
66
- s = item . screen == screen ;
95
+ if ( _screen . length ) {
96
+ s = $ . inArray ( item . screen , _screen ) > - 1 ;
67
97
}
68
98
69
- if ( resolution ) {
70
- r = item . resolution == resolution ;
99
+ if ( _resolution . length ) {
100
+ r = $ . inArray ( item . resolution , _resolution ) > - 1 ;
71
101
}
72
102
73
- if ( storage ) {
74
- st = item . storage . indexOf ( storage ) > - 1 ;
103
+ if ( _storage . length ) {
104
+ st = arrayIntersect ( item . storage , _storage ) . length > 0 ;
75
105
}
76
106
77
107
return ! ! ( s && r && st ) ;
@@ -126,7 +156,7 @@ $.mockjax({
126
156
contentType : 'application/json; charset=utf-8' ,
127
157
responseTime : 1000 ,
128
158
response : function ( settings ) {
129
- this . responseText = JSON . stringify ( getScreens ( parseFloat ( settings . data . resolution ) , parseFloat ( settings . data . storage ) ) ) ;
159
+ this . responseText = JSON . stringify ( getScreens ( settings . data . resolution , settings . data . storage ) ) ;
130
160
}
131
161
} ) ;
132
162
@@ -135,7 +165,7 @@ $.mockjax({
135
165
contentType : 'application/json; charset=utf-8' ,
136
166
responseTime : 1000 ,
137
167
response : function ( settings ) {
138
- this . responseText = JSON . stringify ( getResolutions ( parseFloat ( settings . data . screen ) , parseFloat ( settings . data . storage ) ) ) ;
168
+ this . responseText = JSON . stringify ( getResolutions ( settings . data . screen , settings . data . storage ) ) ;
139
169
}
140
170
} ) ;
141
171
@@ -144,7 +174,7 @@ $.mockjax({
144
174
contentType : 'application/json; charset=utf-8' ,
145
175
responseTime : 1000 ,
146
176
response : function ( settings ) {
147
- this . responseText = JSON . stringify ( getStorages ( parseFloat ( settings . data . screen ) , parseFloat ( settings . data . resolution ) ) ) ;
177
+ this . responseText = JSON . stringify ( getStorages ( settings . data . screen , settings . data . resolution ) ) ;
148
178
}
149
179
} ) ;
150
180
@@ -153,6 +183,6 @@ $.mockjax({
153
183
contentType : 'application/json; charset=utf-8' ,
154
184
responseTime : 1000 ,
155
185
response : function ( settings ) {
156
- this . responseText = JSON . stringify ( getPhones ( parseFloat ( settings . data . screen ) , parseFloat ( settings . data . resolution ) , parseFloat ( settings . data . storage ) ) ) ;
186
+ this . responseText = JSON . stringify ( getPhones ( settings . data . screen , settings . data . resolution , settings . data . storage ) ) ;
157
187
}
158
188
} ) ;
0 commit comments