Switch to unified view

a b/mobile/ElderCare/AddElderScreen.js
1
import React, { useState } from 'react';
2
import {
3
    StyleSheet,
4
    Text,
5
    View,
6
    Image,
7
    TouchableOpacity,
8
    Alert,
9
    ActivityIndicator,
10
} from 'react-native';
11
import { Picker } from '@react-native-picker/picker';
12
import Data from './dataHandler'; // Import the data handling class
13
let eldersData = new Data(); // Create an instance of the data handling class
14
export default function AddElderScreen() {
15
    const [selectedElder, setSelectedElder] = useState('1'); // Default to '1'
16
    const [loading, setLoading] = useState(false); // State for loading
17
18
    const [addedElders, setAddedElders] = useState([]); // State for added elders
19
20
    const handleAdd1 = () => {
21
        // Construct the API URL
22
        const apiUrl = 'http://192.168.10.7:5000/add_elder'; // Replace with your server URL
23
24
        // Set loading to true
25
        setLoading(true);
26
27
        // Make the API request to add an elder
28
        fetch(apiUrl, {
29
            method: 'POST',
30
            headers: {
31
                'Content-Type': 'application/json',
32
            },
33
            body: JSON.stringify({ id: selectedElder }),
34
        })
35
            .then((response) => response.json())
36
            .then((data) => {
37
                // Show success message
38
                Alert.alert('Success', data.message);
39
            })
40
            .catch((error) => {
41
                // Show error message
42
                Alert.alert('Error', 'Failed to add elder. Please try again.');
43
            })
44
            .finally(() => {
45
                // Set loading to false
46
                setLoading(false);
47
            });
48
    };
49
50
    const handleAdd = async () => {
51
        setLoading(true);
52
        setAddedElders([...addedElders, selectedElder]);
53
        await eldersData.addData(selectedElder);
54
        console.log(addedElders);
55
        Alert.alert('Success', 'Elder added successfully');
56
        setLoading(false);
57
    };
58
59
    return (
60
        <View style={styles.container}>
61
            <View style={styles.header}>
62
                <Image
63
                    source={require('./assets/logo.png')} // Replace with your logo path
64
                    style={styles.logo}
65
                />
66
                <Text style={styles.appName}>ElderCare+</Text>
67
                <Text style={styles.slogan}>Add New Elder Person</Text>
68
            </View>
69
            <View style={styles.content}>
70
                <Text style={styles.description}>
71
                    Select an elder from the list below to admit into
72
                    ElderCare+.
73
                </Text>
74
                <View style={styles.pickerContainer}>
75
                    <Picker
76
                        selectedValue={selectedElder}
77
                        style={styles.picker}
78
                        onValueChange={(itemValue) =>
79
                            setSelectedElder(itemValue)
80
                        }>
81
                        <Picker.Item label="Elder 1" value="1" />
82
                        <Picker.Item label="Elder 2" value="2" />
83
                        <Picker.Item label="Elder 3" value="3" />
84
                        <Picker.Item label="Elder 4" value="4" />
85
                        <Picker.Item label="Elder 5" value="5" />
86
                        <Picker.Item label="Elder 6" value="6" />
87
                        <Picker.Item label="Elder 7" value="7" />
88
                        <Picker.Item label="Elder 8" value="8" />
89
                        <Picker.Item label="Elder 9" value="9" />
90
                        <Picker.Item label="Elder 10" value="10" />
91
                        <Picker.Item label="Elder 11" value="11" />
92
                        <Picker.Item label="Elder 12" value="12" />
93
                        <Picker.Item label="Elder 13" value="13" />
94
                        <Picker.Item label="Elder 14" value="14" />
95
                        <Picker.Item label="Elder 15" value="15" />
96
                        <Picker.Item label="Elder 16" value="16" />
97
                        <Picker.Item label="Elder 17" value="17" />
98
                        <Picker.Item label="Elder 18" value="18" />
99
                    </Picker>
100
                </View>
101
                {loading ? (
102
                    <ActivityIndicator
103
                        size="large"
104
                        color="#FF1B08"
105
                        style={styles.loader}
106
                    />
107
                ) : (
108
                    <TouchableOpacity
109
                        style={styles.button}
110
                        onPress={handleAdd}
111
                        disabled={loading}>
112
                        <Text style={styles.buttonText}>Add Elder</Text>
113
                    </TouchableOpacity>
114
                )}
115
                <Text style={styles.footerHeading}>Need Assistance?</Text>
116
                <Text style={styles.footerText}>
117
                    If you need help with adding an elder, click the dropdown to
118
                    open a list of available elder persons then select one
119
                    elder.
120
                </Text>
121
            </View>
122
        </View>
123
    );
124
}
125
126
const styles = StyleSheet.create({
127
    container: {
128
        flex: 1,
129
        backgroundColor: '#F2F4F9', // Light gray background for the entire screen
130
    },
131
    header: {
132
        flex: 0.3, // Occupies 30% of the screen height
133
        justifyContent: 'center',
134
        alignItems: 'center',
135
        backgroundColor: '#2D328C', // Blue background for the header
136
        padding: 20,
137
        borderBottomRightRadius: 30, // Rounded corners for a better look
138
        borderBottomLeftRadius: 30,
139
    },
140
    logo: {
141
        width: 100,
142
        height: 100,
143
        resizeMode: 'contain',
144
    },
145
    appName: {
146
        fontSize: 24,
147
        color: '#fff',
148
        fontWeight: 'bold',
149
        marginTop: 10,
150
    },
151
    slogan: {
152
        fontSize: 16,
153
        color: '#fff',
154
        marginTop: 5,
155
    },
156
    content: {
157
        flex: 0.7, // Occupies the remaining space
158
        justifyContent: 'center',
159
        alignItems: 'center',
160
        padding: 20,
161
    },
162
    description: {
163
        fontSize: 18,
164
        color: '#000',
165
        textAlign: 'center',
166
        marginBottom: 20,
167
    },
168
    pickerContainer: {
169
        width: '100%',
170
        borderColor: '#2D328C',
171
        borderWidth: 1,
172
        borderRadius: 5,
173
        backgroundColor: '#fff',
174
        marginBottom: 20,
175
    },
176
    picker: {
177
        height: 50,
178
        width: '100%',
179
    },
180
    button: {
181
        width: '100%',
182
        height: 50,
183
        backgroundColor: '#FF1B08', // Red background for the button
184
        justifyContent: 'center',
185
        alignItems: 'center',
186
        borderRadius: 5,
187
    },
188
    buttonText: {
189
        color: '#fff',
190
        fontSize: 18,
191
        fontWeight: 'bold',
192
    },
193
    footerHeading: {
194
        fontSize: 20,
195
        color: '#2D328C',
196
        fontWeight: 'bold',
197
        marginTop: 30,
198
        textAlign: 'center',
199
    },
200
    footerText: {
201
        fontSize: 16,
202
        color: '#555',
203
        textAlign: 'center',
204
        marginTop: 10,
205
    },
206
    loader: {
207
        marginTop: 20,
208
    },
209
});