-
Notifications
You must be signed in to change notification settings - Fork 0
/
AddTea.js
123 lines (118 loc) · 3.35 KB
/
AddTea.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import React, { Component } from 'react';
import {View, StyleSheet, TextInput, Button, Text } from 'react-native';
import {sendAndWaitWithTimeout} from './socketUtil.js';
const styles = StyleSheet.create({
mainContainer: {
flex: 1,
height: '100%',
backgroundColor: 'lightyellow',
alignContent: 'center',
justifyContent: 'center',
},
title: {
marginLeft: 10,
marginBottom: 50,
fontSize: 30,
fontWeight: 'bold'
},
text: {
fontSize: 15,
fontWeight: 'bold',
marginLeft: 10,
},
textInput: {
borderWidth: 1,
borderColor: 'lightgrey',
margin: 10,
marginTop: 2,
lineHeight: 20,
fontSize: 15,
}
})
export class AddTea extends Component {
constructor(props) {
super(props);
this.state = {
name: '',
steepTime: '0',
temp: '0',
}
}
validateInputs = (name, steepTime, temp) => {
if (name == '') {
alert('Name can not be empty')
} else if (!name.match(/^[\w\s]+$/)) {
alert('No special character should be used in name')
} else if (!steepTime.match(/^[0-9]+$/i)) {
alert('No special character should be used in steep time')
} else if (parseInt(steepTime) <= 0 || parseInt(steepTime) > 1800) {
alert('Steep time is out of bound')
} else if (!temp.match(/^[0-9]+$/i)) {
alert('No special character should be used in temperature')
} else if (parseInt(temp) <= 60 || parseInt(temp) > 120) {
alert('Temperature is out of bound')
} else {
return true;
}
return false;
}
onSubmit = () => {
if(this.validateInputs(this.state.name, this.state.steepTime, this.state.temp)) {
let newTea = {
name: this.state.name,
steepTime: parseInt(this.state.steepTime),
temp: parseInt(this.state.temp),
isCustom: 1,
}
let newTeaProfileArray = this.props.navigation.state.params.teas
let data = {
"msgId": 9,
"tea": newTea,
}
sendAndWaitWithTimeout(data, (msg) => {
newTea.teaId = msg.teaId
newTeaProfileArray.push(newTea)
const {navigate} = this.props.navigation
navigate('Home', {newTeaProfileArray})
}, 9)
}
}
render() {
return (
<View style={styles.mainContainer}>
<Text style={styles.title}>Add Tea</Text>
<Text style={styles.text}>Name:</Text>
<TextInput
style={styles.textInput}
placeholder="Tea name"
onChangeText={text => this.setState({name: text})}
value={this.state.name}
returnKeyType="next"
maxLength={20}
/>
<Text style={styles.text}>Steep Time:</Text>
<TextInput
style={styles.textInput}
placeholder="Steep time"
onChangeText={text => this.setState({steepTime: text})}
value={this.state.steepTime}
returnKeyType="next"
maxLength={20}
/>
<Text style={styles.text}>Temperature:</Text>
<TextInput
style={styles.textInput}
placeholder="Temperature"
onChangeText={text => this.setState({temp: text})}
value={this.state.temp}
returnKeyType="done"
maxLength={20}
/>
<Button
title="Save"
onPress={() => this.onSubmit()}
/>
</View>
)
}
}