11// Some mockjax code to simulate Ajax calls
22var 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+ }
5959] ;
6060
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+
6187function getPhones ( screen , resolution , storage ) {
88+ var _screen = arrayToFloat ( [ ] . concat ( screen ) ) ,
89+ _resolution = arrayToInt ( [ ] . concat ( resolution ) ) ,
90+ _storage = arrayToInt ( [ ] . concat ( storage ) ) ;
91+
6292 return $ . grep ( phoneList , function ( item , index ) {
6393 var s = true , r = true , st = true ;
6494
65- if ( screen ) {
66- s = item . screen == screen ;
95+ if ( _screen . length ) {
96+ s = $ . inArray ( item . screen , _screen ) > - 1 ;
6797 }
6898
69- if ( resolution ) {
70- r = item . resolution == resolution ;
99+ if ( _resolution . length ) {
100+ r = $ . inArray ( item . resolution , _resolution ) > - 1 ;
71101 }
72102
73- if ( storage ) {
74- st = item . storage . indexOf ( storage ) > - 1 ;
103+ if ( _storage . length ) {
104+ st = arrayIntersect ( item . storage , _storage ) . length > 0 ;
75105 }
76106
77107 return ! ! ( s && r && st ) ;
@@ -126,7 +156,7 @@ $.mockjax({
126156 contentType : 'application/json; charset=utf-8' ,
127157 responseTime : 1000 ,
128158 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 ) ) ;
130160 }
131161} ) ;
132162
@@ -135,7 +165,7 @@ $.mockjax({
135165 contentType : 'application/json; charset=utf-8' ,
136166 responseTime : 1000 ,
137167 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 ) ) ;
139169 }
140170} ) ;
141171
@@ -144,7 +174,7 @@ $.mockjax({
144174 contentType : 'application/json; charset=utf-8' ,
145175 responseTime : 1000 ,
146176 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 ) ) ;
148178 }
149179} ) ;
150180
@@ -153,6 +183,6 @@ $.mockjax({
153183 contentType : 'application/json; charset=utf-8' ,
154184 responseTime : 1000 ,
155185 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 ) ) ;
157187 }
158188} ) ;
0 commit comments