|
@@ -0,0 +1,231 @@
|
|
1
|
+//Nathalia A. Alicea
|
|
2
|
+//código para la implementación de los Tabs y las pantalla de "Sobre Nosotros", "Insignia", "Tienda" y "Contacto"
|
|
3
|
+
|
|
4
|
+import * as React from 'react';
|
|
5
|
+import {useState, useEffect} from 'react';
|
|
6
|
+import {Text, View, Button, Linking, Image, FlatList, TextInput, StyleSheet, ScrollView } from 'react-native';
|
|
7
|
+import { NavigationContainer } from '@react-navigation/native';
|
|
8
|
+import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';
|
|
9
|
+import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
10
|
+
|
|
11
|
+//Json que se están usando como ejemplo de lo que se usaría con una API
|
|
12
|
+//import JsonNosotros from '../nosotros.json'
|
|
13
|
+//import insignias from '../insignias.json'
|
|
14
|
+
|
|
15
|
+import HomeScreen from '../codes/screen/Homescreen/index';
|
|
16
|
+
|
|
17
|
+import fetch_json from '../fetch_json';
|
|
18
|
+
|
|
19
|
+//función con código para la pantalla de "Sobre Nosotros" donde la data se extrae de Json files.
|
|
20
|
+function Nosotros() {
|
|
21
|
+
|
|
22
|
+ const [jsonNosotros, setNosotros] = useState([]);
|
|
23
|
+ const url = 'http://136.145.231.41/raices_api/api/nosotros/read.php?id=2';
|
|
24
|
+
|
|
25
|
+ useEffect(() => {
|
|
26
|
+ fetch_json(url, setNosotros);
|
|
27
|
+ });
|
|
28
|
+
|
|
29
|
+ return (
|
|
30
|
+ <View style = {{
|
|
31
|
+ flex:1,
|
|
32
|
+ alignItems: "center",
|
|
33
|
+ justifyContent: "space-evenly",
|
|
34
|
+ backgroundColor: "#efffea"}}
|
|
35
|
+ >
|
|
36
|
+ <Text></Text>
|
|
37
|
+ <Image style = {{width: 260, height: 130}} source={require('../image/logowebes.png')}/>
|
|
38
|
+ <Text></Text>
|
|
39
|
+ <Text></Text>
|
|
40
|
+ <ScrollView>
|
|
41
|
+ {jsonNosotros.map((item)=>{
|
|
42
|
+ return (
|
|
43
|
+ <View key ={item.key} >
|
|
44
|
+ <Image style = {styles.image} source={{uri: item.imagen}} />
|
|
45
|
+ <Text style={styles.item}>{item.nombre} {item.apellido} </Text>
|
|
46
|
+ <Text style={styles.itemLetters}>{item.descripcion}</Text>
|
|
47
|
+ <Text></Text>
|
|
48
|
+ </View>
|
|
49
|
+ )
|
|
50
|
+ })}
|
|
51
|
+ </ScrollView>
|
|
52
|
+ <ScrollView>
|
|
53
|
+ <View >
|
|
54
|
+ <View>
|
|
55
|
+ <Text style={styles.itemMVV}>Misión</Text>
|
|
56
|
+ <Text style={styles.itemLettersMVV}>Aportar a la transformación hacia la sostenibilidad a nivel individual, empresarial y organizacional a través de la educación y de la promoción y validación de negocios locales que venden productos o servicios sostenibles.</Text>
|
|
57
|
+ </View>
|
|
58
|
+ <View>
|
|
59
|
+ <Text style={styles.itemMVV}>Visión</Text>
|
|
60
|
+ <Text style={styles.itemLettersMVV}>Ser reconocidos globalmente como una organización educativa con confiabilidad y compromiso con la educación sobre la sostenibilidad y la promoción y validación de productos y servicios sostenibles locales, destacando y contribuyendo al bienestar de la ciudadanía, el desarrollo económico local, el comercio justo y la conservación del ambiente.</Text>
|
|
61
|
+ </View>
|
|
62
|
+ <View>
|
|
63
|
+ <Text style={styles.itemMVV}>Valores</Text>
|
|
64
|
+ <Text style={styles.itemLettersMVV}>Educación, Respeto y responsabilidad social y ambiental, Comercio justo, Confiabilidad, Disciplina, Empatía y solidaridad, Equidad, Honestidad, Humanidad y respeto, Integridad y objetividad</Text>
|
|
65
|
+ </View>
|
|
66
|
+ </View>
|
|
67
|
+ </ScrollView>
|
|
68
|
+
|
|
69
|
+ </View>
|
|
70
|
+ );
|
|
71
|
+
|
|
72
|
+}
|
|
73
|
+
|
|
74
|
+//función donde se extraen las insignias y las descripciones de las mismas y se muestran en el tab de "Insignias".
|
|
75
|
+function Logos() {
|
|
76
|
+ const [jsonInsignias, setInsignias] = useState([]);
|
|
77
|
+ const url = 'http://136.145.231.41/raices_api/api/nosotros/read.php?id=1';
|
|
78
|
+
|
|
79
|
+ useEffect(() => {
|
|
80
|
+ fetch_json(url, setInsignias);
|
|
81
|
+ });
|
|
82
|
+
|
|
83
|
+ return (
|
|
84
|
+ <View style = {{
|
|
85
|
+ flex:1,
|
|
86
|
+ alignItems: "center",
|
|
87
|
+ justifyContent: "space-evenly",
|
|
88
|
+ backgroundColor: "#efffea"}}
|
|
89
|
+ >
|
|
90
|
+ <Text></Text>
|
|
91
|
+ <Image style = {{width: 260, height: 130}} source={require('../image/logowebes.png')}/>
|
|
92
|
+ <Text></Text>
|
|
93
|
+ <Text></Text>
|
|
94
|
+ <ScrollView>
|
|
95
|
+ {jsonInsignias.map((item)=>{
|
|
96
|
+ return (
|
|
97
|
+ <View key ={item.id} >
|
|
98
|
+ <Image style = {styles.image} source={{uri: item.imagen}} />
|
|
99
|
+ <Text style={styles.description}>{item.nombre} </Text>
|
|
100
|
+ <Text></Text>
|
|
101
|
+ </View>
|
|
102
|
+ )
|
|
103
|
+ })}
|
|
104
|
+ </ScrollView>
|
|
105
|
+ </View>
|
|
106
|
+ );
|
|
107
|
+}
|
|
108
|
+
|
|
109
|
+//función para Tienda.
|
|
110
|
+function Tienda() {
|
|
111
|
+
|
|
112
|
+ return (
|
|
113
|
+ <View style={{
|
|
114
|
+ flex: 1,
|
|
115
|
+ justifyContent: "center",
|
|
116
|
+ alignItems: "center",
|
|
117
|
+ backgroundColor: "#efffea"
|
|
118
|
+ }}>
|
|
119
|
+ <HomeScreen />
|
|
120
|
+ </View>
|
|
121
|
+ );
|
|
122
|
+}
|
|
123
|
+
|
|
124
|
+//función donde los clientes o personas interesadas pueden escribir un email a raices.
|
|
125
|
+function Contacto() {
|
|
126
|
+ return (
|
|
127
|
+ <View style = {{
|
|
128
|
+ flex:1,
|
|
129
|
+ alignItems: "center",
|
|
130
|
+ justifyContent: "space-evenly",
|
|
131
|
+ backgroundColor: "#efffea"}}>
|
|
132
|
+
|
|
133
|
+ <Image style = {{width: 260, height: 130}} source={require('../image/logowebes.png')}/>
|
|
134
|
+ <Text style={{ fontSize: 20, color: '#2d4b09', fontWeight: '800' }}>Para solicitudes o reclamos: </Text>
|
|
135
|
+ <View style={{padding:20}}>
|
|
136
|
+
|
|
137
|
+ <Text style={{ fontSize: 10, color: '#4c5b4b', fontWeight: '500' }}>
|
|
138
|
+ Con el próposito de poder comunicarnos de la manera más efectiva posible, favor de proveer la siguiente información: propósito de comunicación, nombre, apellido y correo electrónico. Nos estaremos comunicando con usted prontamente.
|
|
139
|
+ </Text>
|
|
140
|
+ <Button onPress={() => Linking.openURL('mailto:contacto@raices.com?subject=SendMail&body=Favor de incluir motivo de comunicación e información personal.') } title="Contáctanos!" color="#2d4b09" />
|
|
141
|
+ </View>
|
|
142
|
+ </View>
|
|
143
|
+ );
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+}
|
|
147
|
+
|
|
148
|
+//estilos de stylesheets
|
|
149
|
+const styles = StyleSheet.create({
|
|
150
|
+ image:{
|
|
151
|
+ flex:2,
|
|
152
|
+ height: 150,
|
|
153
|
+ resizeMode: "contain"
|
|
154
|
+ },
|
|
155
|
+ container: {
|
|
156
|
+ flex: 1,
|
|
157
|
+ backgroundColor:'#58AB63',
|
|
158
|
+ paddingTop:40,
|
|
159
|
+ paddingHorizontal: 20,
|
|
160
|
+ },
|
|
161
|
+ item: {
|
|
162
|
+ marginTop:30,
|
|
163
|
+ padding:10,
|
|
164
|
+ backgroundColor: '#77aa5a',
|
|
165
|
+ fontSize: 20,
|
|
166
|
+ color: "#fff",
|
|
167
|
+ justifyContent: "flex-end"
|
|
168
|
+
|
|
169
|
+ },
|
|
170
|
+ description: {
|
|
171
|
+ padding:10,
|
|
172
|
+ backgroundColor: '#77aa5a',
|
|
173
|
+ fontSize: 20,
|
|
174
|
+ color: "#fff",
|
|
175
|
+ textAlign: "center",
|
|
176
|
+ alignItems: "stretch"
|
|
177
|
+
|
|
178
|
+ },
|
|
179
|
+ itemLetters: {
|
|
180
|
+ padding: 30,
|
|
181
|
+ backgroundColor: '#77aa5a',
|
|
182
|
+ fontSize: 10,
|
|
183
|
+ color: "#fff",
|
|
184
|
+ justifyContent: "flex-start"
|
|
185
|
+ },
|
|
186
|
+ itemMVV:{
|
|
187
|
+ padding: 10,
|
|
188
|
+ fontSize: 15,
|
|
189
|
+ color: "green"},
|
|
190
|
+ itemLettersMVV: {
|
|
191
|
+ padding: 10,
|
|
192
|
+ fontSize: 10,
|
|
193
|
+ color: "#77aa5a",
|
|
194
|
+ justifyContent: "flex-start"
|
|
195
|
+ }
|
|
196
|
+});
|
|
197
|
+
|
|
198
|
+const Tab = createMaterialTopTabNavigator();
|
|
199
|
+
|
|
200
|
+//todas las pantalla de los tabs.
|
|
201
|
+function MyTabs() {
|
|
202
|
+ const insets = useSafeAreaInsets();
|
|
203
|
+ return (
|
|
204
|
+ <Tab.Navigator screenOptions ={{ style: { backgroundColor: "white", marginTop: insets.top }, activeTintColor: "#228B22", labelStyle: { fontSize: 12 } }}>
|
|
205
|
+ <Tab.Screen name="Sobre Nosotros"
|
|
206
|
+ component={Nosotros}
|
|
207
|
+ options={{ tabBarLabel: 'Sobre Nosotros' }}
|
|
208
|
+ />
|
|
209
|
+ <Tab.Screen name="Insignias"
|
|
210
|
+ component={Logos}
|
|
211
|
+ options={{ tabBarLabel: 'Insignias' }}
|
|
212
|
+ />
|
|
213
|
+ <Tab.Screen name="Tienda"
|
|
214
|
+ component={Tienda}
|
|
215
|
+ options={{ tabBarLabel: 'Tienda' }}
|
|
216
|
+ />
|
|
217
|
+ <Tab.Screen name="Contacto"
|
|
218
|
+ component={Contacto}
|
|
219
|
+ options={{ tabBarLabel: 'Contacto' }}
|
|
220
|
+ />
|
|
221
|
+ </Tab.Navigator>
|
|
222
|
+ );
|
|
223
|
+}
|
|
224
|
+
|
|
225
|
+export default function TopTabNavigator() {
|
|
226
|
+ return (
|
|
227
|
+ <NavigationContainer>
|
|
228
|
+ <MyTabs />
|
|
229
|
+ </NavigationContainer>
|
|
230
|
+ )
|
|
231
|
+}
|