-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApodsListComponent.js
108 lines (101 loc) · 2.38 KB
/
ApodsListComponent.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
'use strict';
var React = require('react-native');
var {
ScrollView,
View,
TouchableOpacity,
StyleSheet,
Text,
Image,
StatusBarIOS,
} = React;
var Dimensions = require('Dimensions');
class ApodsListComponent extends React.Component {
onPress(item) {
return () => {
if (this.props.onItemSelected) {
this.props.onItemSelected(this.props.items.indexOf(item));
}
};
}
render() {
return (
<View style={{flex:1, backgroundColor:'#FFFFFF'}}>
<View style={styles.headerSpacer} />
<View style={styles.header}>
<Text style={styles.headerTitle}>Recent APODS</Text>
</View>
<View style={styles.headerSeparator} />
<ScrollView style={styles.apodsScrollView} contentContainerStyle={styles.apodsContent}>
{this.props.items.map((item) => {
var image = item.imageThumbUrl ?
<Image
source={{uri: item.imageThumbUrl}}
style={styles.apodItemIcon}>
</Image> :
null;
return (
<TouchableOpacity onPress={this.onPress(item)}>
<View style={styles.apodItemWrapper}>
{image}
<Text style={styles.apodItemText}>{item.title}</Text>
</View>
</TouchableOpacity>
);
})}
{this.props.items.length % 2 == 1 ?
<View style={styles.apodItemWrapper} /> :
null}
</ScrollView>
</View>
);
}
}
var styles = StyleSheet.create({
// ScrollView
apodsScrollView: {
flex: 1,
backgroundColor: '#FFFFFF',
},
apodsContent: {
justifyContent:'space-around',
flexDirection:'row',
flexWrap:'wrap',
},
// Header
headerSpacer: {
height: 20,
},
header: {
height: 30,
backgroundColor:'#FEFEFE',
justifyContent:'center',
alignItems:'center',
},
headerSeparator: {
height: 1,
backgroundColor:'#F0F0F0',
},
headerTitle: {
fontWeight:'600',
},
// Apod Item
apodItemWrapper: {
margin: 5,
width: (Dimensions.get('window').width - 20) / 2,
alignItems:'center',
},
apodItemIcon: {
width:80,
height:80,
borderRadius:40,
resizeMode: Image.resizeMode.cover,
},
apodItemText: {
fontSize: 12,
color:'#000000',
flex: 1,
marginTop: 5,
}
});
module.exports = ApodsListComponent;