Commit 8ff86ee3 by Tonk

add delete connected device function, update get connected device

parent 897d2eda
...@@ -63,10 +63,10 @@ class Input extends Component { ...@@ -63,10 +63,10 @@ class Input extends Component {
</View> </View>
{touched && {touched &&
((error && ( ((error && (
<Text style={[theme.smDescription, theme.textDanger, styles.errPosition]}>{error}</Text> <Text style={[theme.description, theme.textDanger, styles.errPosition]}>{error}</Text>
)) || )) ||
(warning && ( (warning && (
<Text style={[theme.smDescription, theme.textWarning, styles.errPosition]}>{warning}</Text> <Text style={[theme.description, theme.textWarning, styles.errPosition]}>{warning}</Text>
)))} )))}
</View> </View>
); );
......
...@@ -63,7 +63,7 @@ const InputField = ({ ...@@ -63,7 +63,7 @@ const InputField = ({
item.field === name && item.error ? ( item.field === name && item.error ? (
<Text <Text
key={`${index}`} key={`${index}`}
style={[theme.smDescription, theme.textDanger, { bottom: -15, position: 'absolute' }]} style={[theme.description, theme.textDanger, { bottom: -15, position: 'absolute' }]}
> >
{item.error} {item.error}
</Text> </Text>
......
...@@ -43,7 +43,7 @@ class MeterCard extends Component { ...@@ -43,7 +43,7 @@ class MeterCard extends Component {
{ backgroundColor: isPowerOn === 1 ? 'rgba(65, 204, 0, 0.59)' : 'rgba(223, 0, 0, 0.59)' }, { backgroundColor: isPowerOn === 1 ? 'rgba(65, 204, 0, 0.59)' : 'rgba(223, 0, 0, 0.59)' },
]} ]}
> >
<Text style={[theme.smDescription, theme.textWhite]}>{isPowerOn === 1 ? 'ON' : 'OFF'}</Text> <Text style={[theme.description, theme.textWhite]}>{isPowerOn === 1 ? 'ON' : 'OFF'}</Text>
</View> </View>
<View style={[theme.centerContainer]}> <View style={[theme.centerContainer]}>
{item.img ? ( {item.img ? (
...@@ -63,7 +63,7 @@ class MeterCard extends Component { ...@@ -63,7 +63,7 @@ class MeterCard extends Component {
<Row style={{ alignItems: 'center' }}> <Row style={{ alignItems: 'center' }}>
<Text style={[theme.smallTitle, { marginRight: 15 }]}>{item.name || 'Untitled'}</Text> <Text style={[theme.smallTitle, { marginRight: 15 }]}>{item.name || 'Untitled'}</Text>
</Row> </Row>
<Text style={[theme.smDescription]} numberOfLines={2}> <Text style={[theme.description]} numberOfLines={2}>
{item.description} {item.description}
</Text> </Text>
<Row style={{ marginTop: 10 }}> <Row style={{ marginTop: 10 }}>
...@@ -89,7 +89,7 @@ class MeterCard extends Component { ...@@ -89,7 +89,7 @@ class MeterCard extends Component {
{ backgroundColor: isPowerOn === 1 ? 'rgba(65, 204, 0, 0.59)' : 'rgba(223, 0, 0, 0.59)' }, { backgroundColor: isPowerOn === 1 ? 'rgba(65, 204, 0, 0.59)' : 'rgba(223, 0, 0, 0.59)' },
]} ]}
> >
<Text style={[theme.smDescription, theme.textWhite]}>{isPowerOn === 1 ? 'ON' : 'OFF'}</Text> <Text style={[theme.description, theme.textWhite]}>{isPowerOn === 1 ? 'ON' : 'OFF'}</Text>
</View> </View>
<View style={[theme.centerContainer]}> <View style={[theme.centerContainer]}>
{item.img ? ( {item.img ? (
...@@ -109,7 +109,7 @@ class MeterCard extends Component { ...@@ -109,7 +109,7 @@ class MeterCard extends Component {
<Row style={{ alignItems: 'center' }}> <Row style={{ alignItems: 'center' }}>
<Text style={[theme.smallTitle, { marginRight: 15 }]}>{item.name}</Text> <Text style={[theme.smallTitle, { marginRight: 15 }]}>{item.name}</Text>
</Row> </Row>
<Text style={[theme.smDescription]} numberOfLines={2}> <Text style={[theme.description]} numberOfLines={2}>
{item.description} {item.description}
</Text> </Text>
<Row style={{ marginTop: 10 }}> <Row style={{ marginTop: 10 }}>
......
...@@ -74,11 +74,6 @@ export const theme = StyleSheet.create({ ...@@ -74,11 +74,6 @@ export const theme = StyleSheet.create({
fontFamily: 'Avenir-Roman', fontFamily: 'Avenir-Roman',
color: color.grey, color: color.grey,
}, },
smDescription: {
fontSize: 12,
fontFamily: 'Avenir-Roman',
color: color.grey,
},
input: { input: {
fontSize: 16, fontSize: 16,
paddingTop: 20, paddingTop: 20,
......
import app, { fireStore } from '../../firebase'; import app, { fireStore } from '../../firebase';
import axios from 'axios'; import axios from 'axios';
import _ from 'lodash'; import _ from 'lodash';
import { getExistedConnectedDeviceAction } from './timersAction';
const baseURL = 'https://us-central1-safetcut-20cdf.cloudfunctions.net'; const baseURL = 'https://us-central1-safetcut-20cdf.cloudfunctions.net';
...@@ -240,6 +241,66 @@ export const setSubBreakerStatus = (value, MainIndex, SubIndex) => async (dispat ...@@ -240,6 +241,66 @@ export const setSubBreakerStatus = (value, MainIndex, SubIndex) => async (dispat
console.log(error); console.log(error);
} }
}; };
export const addConnectedDevice = (mcbLinkId, subBreakerId, deviceData) => async (dispatch, getState) => {
const { currentSelectedDeviceReducer, timersReducer } = getState();
const { currentSelectedData } = currentSelectedDeviceReducer;
const { existedConnectedDevice } = timersReducer;
const selectedDeviceId = currentSelectedData.deviceId;
const getDocRef = () => {
const docRef = fireStore
.collection('device')
.doc(selectedDeviceId)
.collection('mcbLinks')
.doc(mcbLinkId)
.collection('subBreakers')
.doc(subBreakerId);
return docRef;
};
const newConnectedDevice = existedConnectedDevice.map(
x => x.index + 1 === subBreakerId && [...x[index], deviceData]
);
try {
const docRef = getDocRef();
await docRef.add(deviceData);
dispatch(getExistedConnectedDeviceAction(newConnectedDevice));
} catch (error) {}
};
export const deleteConnectedDevice = data => async (dispatch, getState) => {
const { currentSelectedDeviceReducer, timersReducer } = getState();
const { currentSelectedData } = currentSelectedDeviceReducer;
const { existedConnectedDevice } = timersReducer;
const selectedDeviceId = currentSelectedData.deviceId;
const { mcbLinkId, subBreakerId, connectedDeviceId } = data;
console.log('action connected device', existedConnectedDevice);
const getDocRef = () => {
const docRef = fireStore
.collection('device')
.doc(selectedDeviceId)
.collection('mcbLinks')
.doc(mcbLinkId)
.collection('subBreakers')
.doc(subBreakerId)
.collection('electronicDevices')
.doc(connectedDeviceId);
return docRef;
};
const newConnectedDevice = existedConnectedDevice.map(x =>
x.filter(device => device.connectedDeviceId !== connectedDeviceId)
);
try {
dispatch(getExistedConnectedDeviceAction(newConnectedDevice));
const docRef = getDocRef();
await docRef.delete();
} catch (error) {
console.log(error);
}
};
// export const getCurrentSelectedData = (deviceId, mcbLinkId, subBreakerId) => (dispatch, getState) => { // export const getCurrentSelectedData = (deviceId, mcbLinkId, subBreakerId) => (dispatch, getState) => {
// const { currentSelectedDeviceReducer } = getState(); // const { currentSelectedDeviceReducer } = getState();
......
...@@ -151,6 +151,8 @@ export const getTimers = () => async (dispatch, getState) => { ...@@ -151,6 +151,8 @@ export const getTimers = () => async (dispatch, getState) => {
existedConnectedDevice.push( existedConnectedDevice.push(
connectedDevices.docs.map(connectedDevice => connectedDevices.docs.map(connectedDevice =>
Object.assign(connectedDevice.data(), { Object.assign(connectedDevice.data(), {
mcbLinkId: mcbLink.id,
subBreakerId: subBreaker.id,
connectedDeviceId: connectedDevice.id, connectedDeviceId: connectedDevice.id,
}) })
) )
......
...@@ -192,7 +192,7 @@ class NotificationScreen extends React.Component { ...@@ -192,7 +192,7 @@ class NotificationScreen extends React.Component {
)} )}
<View style={{ display: 'flex', flexDirection: 'column', flex: 1 }}> <View style={{ display: 'flex', flexDirection: 'column', flex: 1 }}>
<View style={[theme.rowContainer, { justifyContent: 'space-between', marginBottom: 10 }]}> <View style={[theme.rowContainer, { justifyContent: 'space-between', marginBottom: 10 }]}>
<Text style={[theme.smDescription, { color: '#b9babc' }]}>{data.user || 'unknown'}</Text> <Text style={[theme.description, { color: '#b9babc' }]}>{data.user || 'unknown'}</Text>
{!data.read && ( {!data.read && (
<View <View
...@@ -207,7 +207,7 @@ class NotificationScreen extends React.Component { ...@@ -207,7 +207,7 @@ class NotificationScreen extends React.Component {
}, },
]} ]}
> >
<Text style={[theme.smDescription, theme.textWhite]}>New</Text> <Text style={[theme.description, theme.textWhite]}>New</Text>
</View> </View>
)} )}
</View> </View>
...@@ -215,7 +215,7 @@ class NotificationScreen extends React.Component { ...@@ -215,7 +215,7 @@ class NotificationScreen extends React.Component {
<Text style={[theme.normalText, theme.textDark]}> <Text style={[theme.normalText, theme.textDark]}>
{data.action} {data.device} {data.action} {data.device}
</Text> </Text>
<Text style={[theme.smDescription, { color: '#b9babc' }]}> <Text style={[theme.description, { color: '#b9babc' }]}>
{format(data.time * 1000, 'hh:mm A')} {format(data.time * 1000, 'hh:mm A')}
</Text> </Text>
</View> </View>
......
...@@ -82,8 +82,6 @@ class SmartMeterDetailScreen extends Component { ...@@ -82,8 +82,6 @@ class SmartMeterDetailScreen extends Component {
) { ) {
this.setSubBreakersState(); this.setSubBreakersState();
} }
console.log('S', this.state);
console.log('PROPS', this.props);
}; };
handleToggle = async value => { handleToggle = async value => {
this.setState({ isWaiting: true }); this.setState({ isWaiting: true });
...@@ -92,12 +90,9 @@ class SmartMeterDetailScreen extends Component { ...@@ -92,12 +90,9 @@ class SmartMeterDetailScreen extends Component {
await this.props.setMainStatus(value); await this.props.setMainStatus(value);
const getShadowInterval = setInterval(async () => { const getShadowInterval = setInterval(async () => {
console.log('getShadow');
this.setState(() => { this.setState(() => {
const { currentSelectedData, breakerStatus } = this.props; const { currentSelectedData, breakerStatus } = this.props;
if (this.props.desiredBreakerStatus === this.props.breakerStatus) { if (this.props.desiredBreakerStatus === this.props.breakerStatus) {
console.log('Interval Handletoggle');
clearInterval(getShadowInterval); clearInterval(getShadowInterval);
return { return {
...@@ -226,7 +221,7 @@ class SmartMeterDetailScreen extends Component { ...@@ -226,7 +221,7 @@ class SmartMeterDetailScreen extends Component {
index % 3 === 0 ? { marginRight: 0 } : { marginLeft: 10 }, index % 3 === 0 ? { marginRight: 0 } : { marginLeft: 10 },
]} ]}
> >
<Text style={[theme.smDescription, { color: item.value > item.limit ? color.white : color.grey }]}> <Text style={[theme.description, { color: item.value > item.limit ? color.white : color.grey }]}>
{item.name} {item.name}
</Text> </Text>
<Text <Text
...@@ -245,7 +240,7 @@ class SmartMeterDetailScreen extends Component { ...@@ -245,7 +240,7 @@ class SmartMeterDetailScreen extends Component {
<Text <Text
style={[ style={[
theme.smDescription, theme.description,
theme.textDark, theme.textDark,
{ {
color: item.value > item.limit ? color.white : color.darkGrey, color: item.value > item.limit ? color.white : color.darkGrey,
...@@ -296,11 +291,8 @@ class SmartMeterDetailScreen extends Component { ...@@ -296,11 +291,8 @@ class SmartMeterDetailScreen extends Component {
await this.props.getCurrentSelectedShadow(); await this.props.getCurrentSelectedShadow();
const getShadowInterval = setInterval(async () => { const getShadowInterval = setInterval(async () => {
console.log('getShadow');
this.setState(() => { this.setState(() => {
if (this.props.desiredBreakerStatus === this.props.breakerStatus) { if (this.props.desiredBreakerStatus === this.props.breakerStatus) {
console.log('Interval HandletoggleSubBreaker');
clearInterval(getShadowInterval); clearInterval(getShadowInterval);
return { isWaiting: false }; return { isWaiting: false };
} else { } else {
...@@ -314,7 +306,6 @@ class SmartMeterDetailScreen extends Component { ...@@ -314,7 +306,6 @@ class SmartMeterDetailScreen extends Component {
return { isWaiting: false }; return { isWaiting: false };
} }
}); });
console.log('checkedTimes', checkedTimes);
++checkedTimes; ++checkedTimes;
await this.props.getCurrentSelectedShadow(); await this.props.getCurrentSelectedShadow();
this.setSubBreakersState(); this.setSubBreakersState();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment