@eohjsc/react-native-smart-city 0.3.89 → 0.3.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +1 -1
- package/src/commons/ActionTemplate/CurtainAction.js +2 -2
- package/src/commons/ActionTemplate/OnOffButtonAction.js +2 -2
- package/src/commons/ActionTemplate/OnOffSimpleAction.js +2 -2
- package/src/commons/ActionTemplate/OnOffSmartLockAction.js +2 -2
- package/src/commons/ActionTemplate/OneButtonAction.js +2 -2
- package/src/commons/ActionTemplate/ThreeButtonAction.js +2 -2
- package/src/commons/ActionTemplate/__test__/CurtainAction.test.js +1 -1
- package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +1 -1
- package/src/commons/ActionTemplate/__test__/OnOffSimpleAction.test.js +1 -1
- package/src/commons/ActionTemplate/__test__/OnOffSmartLockAction.test.js +1 -1
- package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +1 -1
- package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +1 -1
- package/src/commons/ActionTemplate/__test__/index.test.js +21 -70
- package/src/commons/ActionTemplate/index.js +19 -55
- package/src/commons/Alert/__test__/Alert.test.js +1 -1
- package/src/commons/Auth/__test__/OtpInputList.test.js +4 -2
- package/src/commons/Auth/__test__/SocialButton.test.js +4 -2
- package/src/commons/BackDefault/__test__/BackDefault.test.js +1 -1
- package/src/commons/Button/__test__/Button.test.js +1 -1
- package/src/commons/ButtonPopup/__test__/ButtonPopup.test.js +1 -1
- package/src/commons/Calendar/__test__/Calendar.test.js +1 -1
- package/src/commons/ChartLoading/__test__/ChartLoading.test.js +1 -1
- package/src/commons/CircleButton/__test__/CircleButton.test.js +1 -1
- package/src/commons/CircleView/__test__/CircleView.test.js +1 -1
- package/src/commons/DateTimeRangeChange/__test__/DateTimeButton.test.js +4 -2
- package/src/commons/DateTimeRangeChange/index.js +31 -48
- package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +2 -2
- package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +1 -1
- package/src/commons/Device/FlatListItems.js +1 -1
- package/src/commons/Device/Hanet/ItemHanetDevice.test.js +2 -2
- package/src/commons/Device/HistoryChart.js +6 -49
- package/src/commons/Device/LinearChart/LinearChart.test.js +1 -1
- package/src/commons/Device/ProgressBar/__test__/ProgressBar.test.js +3 -4
- package/src/commons/Device/ProgressBar/index.js +6 -4
- package/src/commons/Device/ProgressBar/styles.js +9 -6
- package/src/commons/Device/RainningSensor/__test__/CurrentRainSensor.test.js +5 -5
- package/src/commons/Device/SonosSpeaker/__test__/SonosSpeaker.test.js +3 -3
- package/src/commons/Device/WindDirection/Compass/Compass.test.js +2 -2
- package/src/commons/Device/WindSpeed/LinearChart/index.js +1 -1
- package/src/commons/Device/__test__/DeviceAlertStatus.test.js +3 -3
- package/src/commons/Device/__test__/DisconnectedView.test.js +2 -2
- package/src/commons/Device/__test__/FlatListItems.test.js +1 -1
- package/src/commons/Device/__test__/SensorConnectedStatus.test.js +1 -1
- package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +1 -1
- package/src/commons/Form/__test__/CurrencyInput.test.js +2 -2
- package/src/commons/Form/__test__/TextInput.test.js +2 -2
- package/src/commons/Form/__test__/TextInputPassword.test.js +2 -2
- package/src/commons/FullLoading/__test__/index.test.js +2 -2
- package/src/commons/ImageButton/__test__/ImageButton.test.js +1 -1
- package/src/commons/OneTapTemplate/NumberUpDownActionTemplate.js +2 -2
- package/src/commons/OneTapTemplate/OptionsDropdownActionTemplate.js +4 -4
- package/src/commons/OneTapTemplate/StatesGridActionTemplate.js +4 -4
- package/src/commons/OneTapTemplate/__test__/NumberUpDownActionTemplate.test.js +2 -2
- package/src/commons/OneTapTemplate/__test__/OptionsDropdownActionTemplate.test.js +1 -1
- package/src/commons/OneTapTemplate/__test__/StatesGridActionTemplate.test.js +2 -2
- package/src/commons/RowItem/__test__/RowItem.test.js +1 -1
- package/src/commons/RowUser/__test__/RowUser.test.js +1 -1
- package/src/commons/Section/Section.test.js +2 -2
- package/src/commons/SelectSubUnit/__test__/SelectSubUnit.test.js +1 -1
- package/src/commons/SelectUnit/__test__/SelectUnit.test.js +3 -3
- package/src/commons/Sharing/__test__/ButtonRemoveMember.test.js +1 -1
- package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +1 -1
- package/src/commons/Sharing/__test__/MemberList.test.js +6 -4
- package/src/commons/Sharing/__test__/RowMember.test.js +2 -2
- package/src/commons/Sharing/__test__/StationDevicePermission.test.js +3 -3
- package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +4 -2
- package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +2 -10
- package/src/commons/SubUnit/OneTap/index.js +3 -1
- package/src/commons/TextButton/__test__/TextButton.test.js +2 -2
- package/src/commons/Today/__test__/Today.test.js +1 -1
- package/src/commons/TouchableScale/__test__/TouchableScale.test.js +1 -1
- package/src/commons/UnitSummary/AirQuality/index.js +2 -2
- package/src/commons/UnitSummary/ConfigHistoryChart/index.js +0 -6
- package/src/commons/UnitSummary/__test__/TotalPowerBox.test.js +1 -1
- package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +1 -1
- package/src/commons/ViewButtonBottom/__test__/ViewButtonBottom.test.js +1 -1
- package/src/configs/API.js +9 -32
- package/src/configs/Constants.js +2 -30
- package/src/context/reducer.ts +3 -1
- package/src/hoc/__test__/withRemoteControl.test.js +1 -1
- package/src/navigations/UnitStack.js +23 -13
- package/src/screens/ActivityLog/FilterPopup.js +4 -4
- package/src/screens/ActivityLog/__test__/FilterPopup.test.js +2 -2
- package/src/screens/ActivityLog/__test__/index.test.js +2 -2
- package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +3 -3
- package/src/screens/AddCommon/__test__/SelectUnit.test.js +5 -5
- package/src/screens/AddNewAction/ChooseAction.js +180 -0
- package/src/screens/AddNewAction/ChooseConfig.js +207 -0
- package/src/screens/AddNewAction/Components/SelectDevices.js +75 -0
- package/src/screens/AddNewAction/Device/__test__/index.test.js +1 -1
- package/src/screens/AddNewAction/NewActionWrapper.js +55 -0
- package/src/screens/AddNewAction/SelectControlDevices.js +107 -0
- package/src/screens/AddNewAction/SelectMonitorDevices.js +142 -0
- package/src/screens/AddNewAction/SetupConfigCondition.js +245 -0
- package/src/screens/AddNewAction/Styles/SetupSensorStyles.js +1 -1
- package/src/screens/AddNewAction/__test__/{SelectAction.test.js → ChooseAction.test.js} +94 -114
- package/src/screens/AddNewAction/__test__/ChooseConfig.test.js +211 -0
- package/src/screens/AddNewAction/__test__/{SelectSensorDevices.test.js → SelectControlDevices.test.js} +32 -83
- package/src/screens/AddNewAction/__test__/SelectMonitorDevices.test.js +92 -0
- package/src/screens/AddNewAction/__test__/SetupSensor.test.js +9 -22
- package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +2 -3
- package/src/screens/AddNewAutoSmart/index.js +13 -33
- package/src/screens/AddNewGateway/PlugAndPlay/__test__/ConnectRouterGuide.test.js +1 -1
- package/src/screens/AddNewGateway/PlugAndPlay/__test__/FirstWarning.test.js +1 -1
- package/src/screens/AddNewGateway/PlugAndPlay/__test__/ZigbeeDeviceConnectGuide.test.js +1 -1
- package/src/screens/AddNewGateway/__test__/ConnectingWifiGuide.test.js +1 -1
- package/src/screens/AddNewGateway/__test__/ScanGatewayQR.test.js +2 -2
- package/src/screens/AddNewGateway/__test__/ScanModbusQR.test.js +3 -3
- package/src/screens/AddNewGateway/__test__/ScanWifiDeviceQR.test.js +2 -2
- package/src/screens/AddNewGateway/__test__/SelectDeviceSubUnit.test.js +3 -3
- package/src/screens/AddNewGateway/__test__/SelectDeviceUnit.test.js +1 -1
- package/src/screens/AddNewGateway/__test__/ShareWifiPassword.test.js +1 -1
- package/src/screens/AddNewOneTap/index.js +16 -7
- package/src/screens/AllCamera/__test__/index.test.js +18 -57
- package/src/screens/AllCamera/index.js +98 -30
- package/src/screens/Automate/MultiUnits.js +2 -2
- package/src/screens/Automate/__test__/MultiUnits.test.js +2 -2
- package/src/screens/Automate/__test__/index.test.js +19 -38
- package/src/screens/Automate/index.js +8 -3
- package/src/screens/Device/__test__/DetailHistoryChart.test.js +2 -2
- package/src/screens/Device/__test__/EmergencyCountdown.test.js +4 -2
- package/src/screens/Device/__test__/sensorDisplayItem.test.js +10 -10
- package/src/screens/Device/components/ChartWrapper.js +3 -3
- package/src/screens/Device/components/VisualChart.js +1 -1
- package/src/screens/Device/components/__test__/VisualChart.test.js +1 -1
- package/src/screens/Device/hooks/useEvaluateValue.js +8 -0
- package/src/screens/DeviceInfo/__test__/index.test.js +16 -18
- package/src/screens/DeviceInfo/index.js +6 -5
- package/src/screens/EditActionsList/__tests__/index.test.js +14 -6
- package/src/screens/Notification/__test__/Notification.test.js +65 -74
- package/src/screens/Notification/index.js +14 -14
- package/src/screens/ScriptDetail/__test__/index.test.js +2 -8
- package/src/screens/ScriptDetail/index.js +9 -88
- package/src/screens/ScriptDetail/utils.js +112 -0
- package/src/screens/SelectUnit/__test__/index.test.js +0 -5
- package/src/screens/SelectUnit/index.js +1 -2
- package/src/screens/Sharing/Components/TitleCheckBox.js +2 -2
- package/src/screens/SmartAccount/SuccessfullyConnected/__test__/SuccessfullyConnected.test.js +3 -3
- package/src/screens/SmartAccount/__test__/Connecting.test.js +1 -1
- package/src/screens/SmartAccount/__test__/SmartAccount.test.js +3 -3
- package/src/screens/SmartIr/__test__/ButtonsBottom.test.js +1 -1
- package/src/screens/SmartIr/__test__/GroupButtonByType.test.js +5 -5
- package/src/screens/SmartIr/__test__/SelectBrand.test.js +2 -2
- package/src/screens/SmartIr/__test__/SelectDeviceType.test.js +2 -2
- package/src/screens/SmartIr/__test__/SmartIr.test.js +2 -2
- package/src/screens/Template/__test__/detail.test.js +10 -2
- package/src/screens/Unit/__test__/Detail.test.js +7 -13
- package/src/screens/Unit/components/__test__/Header.test.js +4 -4
- package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +1 -1
- package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +14 -6
- package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +1 -1
- package/src/screens/UnitSummary/components/Temperature/index.js +2 -2
- package/src/screens/UnitSummary/components/UvIndex/index.js +2 -2
- package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -2
- package/src/screens/UnitSummary/components/__test__/TotalPowerBox.test.js +1 -1
- package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +1 -1
- package/src/screens/UnitSummary/components/__test__/index.test.js +2 -2
- package/src/utils/Apis/axios.js +3 -0
- package/src/utils/I18n/translations/en.json +1 -0
- package/src/utils/I18n/translations/vi.json +1 -0
- package/src/utils/Route/index.js +6 -3
- package/src/screens/AddNewAction/SelectAction.js +0 -570
- package/src/screens/AddNewAction/SelectSensorDevices.js +0 -236
- package/src/screens/AddNewAction/SetupSensor.js +0 -263
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React, { memo, useCallback, useState } from 'react';
|
|
2
|
-
import { useTranslations } from '../../hooks/Common/useTranslations';
|
|
1
|
+
import React, { memo, useCallback, useEffect, useState } from 'react';
|
|
3
2
|
import { StyleSheet, View } from 'react-native';
|
|
3
|
+
import moment from 'moment/moment';
|
|
4
|
+
import DateTimePickerModal from 'react-native-modal-datetime-picker';
|
|
4
5
|
|
|
5
|
-
import { Colors } from '../../configs';
|
|
6
6
|
import Text from '../Text';
|
|
7
|
+
import { Colors } from '../../configs';
|
|
7
8
|
import DateTimeButton from './DateTimeButton';
|
|
8
|
-
import
|
|
9
|
-
import
|
|
9
|
+
import { useTranslations } from '../../hooks/Common/useTranslations';
|
|
10
|
+
import { DATE_TIME_FORMAT } from '../../configs/Constants';
|
|
10
11
|
|
|
11
12
|
const DateTimeRangeChange = memo(
|
|
12
13
|
({
|
|
@@ -18,11 +19,12 @@ const DateTimeRangeChange = memo(
|
|
|
18
19
|
selectEnd,
|
|
19
20
|
inline = true,
|
|
20
21
|
}) => {
|
|
21
|
-
const format = showTime ?
|
|
22
|
+
const format = showTime ? DATE_TIME_FORMAT.DMY_HM : DATE_TIME_FORMAT.DMY;
|
|
22
23
|
const mode = showTime ? 'datetime' : 'date';
|
|
23
24
|
const t = useTranslations();
|
|
24
|
-
|
|
25
|
-
const
|
|
25
|
+
|
|
26
|
+
const [startDate, setStartDate] = useState(moment(startTime));
|
|
27
|
+
const [endDate, setEndDate] = useState(moment(endTime));
|
|
26
28
|
|
|
27
29
|
const [eventPicker, setEventPicker] = useState({
|
|
28
30
|
showModalEnd: false,
|
|
@@ -30,34 +32,18 @@ const DateTimeRangeChange = memo(
|
|
|
30
32
|
});
|
|
31
33
|
|
|
32
34
|
const onStart = useCallback(() => {
|
|
33
|
-
setEventPicker(
|
|
34
|
-
...state,
|
|
35
|
-
showModalStart: true,
|
|
36
|
-
showModalEnd: false,
|
|
37
|
-
}));
|
|
35
|
+
setEventPicker({ showModalStart: true });
|
|
38
36
|
}, []);
|
|
37
|
+
|
|
39
38
|
const onEnd = useCallback(() => {
|
|
40
|
-
setEventPicker(
|
|
41
|
-
...state,
|
|
42
|
-
showModalStart: false,
|
|
43
|
-
showModalEnd: true,
|
|
44
|
-
}));
|
|
39
|
+
setEventPicker({ showModalEnd: true });
|
|
45
40
|
}, []);
|
|
41
|
+
|
|
46
42
|
const onConfirmStart = useCallback(
|
|
47
43
|
(date) => {
|
|
48
44
|
const selectedDate = date ? moment(date) : moment().valueOf();
|
|
49
|
-
setEventPicker((state) => {
|
|
50
|
-
if (typeof date === 'number') {
|
|
51
|
-
onCancel();
|
|
52
|
-
return state;
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
...state,
|
|
56
|
-
showModalStart: false,
|
|
57
|
-
showModalEnd: true,
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
45
|
selectStart(selectedDate);
|
|
46
|
+
onCancel();
|
|
61
47
|
},
|
|
62
48
|
[onCancel, selectStart]
|
|
63
49
|
);
|
|
@@ -65,30 +51,27 @@ const DateTimeRangeChange = memo(
|
|
|
65
51
|
const onConfirmEnd = useCallback(
|
|
66
52
|
(date) => {
|
|
67
53
|
const selectedDate = date ? moment(date) : moment().valueOf();
|
|
68
|
-
setEventPicker((state) => {
|
|
69
|
-
if (typeof date === 'number') {
|
|
70
|
-
onCancel();
|
|
71
|
-
return state;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return {
|
|
75
|
-
...state,
|
|
76
|
-
showModalEnd: false,
|
|
77
|
-
};
|
|
78
|
-
});
|
|
79
54
|
selectEnd(selectedDate);
|
|
55
|
+
onCancel();
|
|
80
56
|
},
|
|
81
57
|
[onCancel, selectEnd]
|
|
82
58
|
);
|
|
83
59
|
|
|
84
60
|
const onCancel = useCallback(() => {
|
|
85
|
-
setEventPicker(
|
|
86
|
-
...state,
|
|
61
|
+
setEventPicker({
|
|
87
62
|
showModalEnd: false,
|
|
88
63
|
showModalStart: false,
|
|
89
|
-
})
|
|
64
|
+
});
|
|
90
65
|
}, []);
|
|
91
66
|
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
setStartDate(moment(startTime));
|
|
69
|
+
}, [startTime]);
|
|
70
|
+
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
setEndDate(moment(endTime));
|
|
73
|
+
}, [endTime]);
|
|
74
|
+
|
|
92
75
|
return (
|
|
93
76
|
<View
|
|
94
77
|
style={[styles.dateTimeView, !inline && styles.spaceBetween, style]}
|
|
@@ -99,7 +82,7 @@ const DateTimeRangeChange = memo(
|
|
|
99
82
|
</Text>
|
|
100
83
|
<DateTimeButton onPress={onStart} style={!inline && styles.button}>
|
|
101
84
|
<Text type={'Label'} color={Colors.Gray8} style={styles.txtTime}>
|
|
102
|
-
{
|
|
85
|
+
{startDate.format(format)}
|
|
103
86
|
</Text>
|
|
104
87
|
</DateTimeButton>
|
|
105
88
|
</View>
|
|
@@ -109,13 +92,13 @@ const DateTimeRangeChange = memo(
|
|
|
109
92
|
</Text>
|
|
110
93
|
<DateTimeButton onPress={onEnd} style={!inline && styles.button}>
|
|
111
94
|
<Text type={'Label'} color={Colors.Gray8} style={styles.txtTime}>
|
|
112
|
-
{
|
|
95
|
+
{endDate.format(format)}
|
|
113
96
|
</Text>
|
|
114
97
|
</DateTimeButton>
|
|
115
98
|
</View>
|
|
116
99
|
<DateTimePickerModal
|
|
117
100
|
isVisible={eventPicker.showModalStart}
|
|
118
|
-
date={
|
|
101
|
+
date={startDate.valueOf()}
|
|
119
102
|
mode={mode}
|
|
120
103
|
onConfirm={onConfirmStart}
|
|
121
104
|
onCancel={onCancel}
|
|
@@ -128,7 +111,7 @@ const DateTimeRangeChange = memo(
|
|
|
128
111
|
/>
|
|
129
112
|
<DateTimePickerModal
|
|
130
113
|
isVisible={eventPicker.showModalEnd}
|
|
131
|
-
date={
|
|
114
|
+
date={endDate.valueOf()}
|
|
132
115
|
mode={mode}
|
|
133
116
|
onConfirm={onConfirmEnd}
|
|
134
117
|
onCancel={onCancel}
|
|
@@ -138,7 +121,7 @@ const DateTimeRangeChange = memo(
|
|
|
138
121
|
cancelTextIOS={t('cancel')}
|
|
139
122
|
confirmTextIOS={t('confirm')}
|
|
140
123
|
maximumDate={new Date()}
|
|
141
|
-
minimumDate={
|
|
124
|
+
minimumDate={startDate.valueOf()}
|
|
142
125
|
/>
|
|
143
126
|
</View>
|
|
144
127
|
);
|
|
@@ -18,7 +18,7 @@ describe('Test EmergencyButton', () => {
|
|
|
18
18
|
let tree;
|
|
19
19
|
it('create EmergencyButton', async () => {
|
|
20
20
|
await act(async () => {
|
|
21
|
-
tree = renderer.create(wrapComponent());
|
|
21
|
+
tree = await renderer.create(wrapComponent());
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
const instance = tree.root;
|
|
@@ -29,7 +29,7 @@ describe('Test EmergencyButton', () => {
|
|
|
29
29
|
it('long press EmergencyButton', async () => {
|
|
30
30
|
const mockFunction = jest.fn();
|
|
31
31
|
await act(async () => {
|
|
32
|
-
tree = renderer.create(wrapComponent(mockFunction));
|
|
32
|
+
tree = await renderer.create(wrapComponent(mockFunction));
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
const instance = tree.root;
|
|
@@ -39,7 +39,7 @@ describe('Test EmergencyDetail', () => {
|
|
|
39
39
|
};
|
|
40
40
|
useIsFocused.mockImplementation(() => true);
|
|
41
41
|
await act(async () => {
|
|
42
|
-
tree = renderer.create(wrapComponent(item));
|
|
42
|
+
tree = await renderer.create(wrapComponent(item));
|
|
43
43
|
});
|
|
44
44
|
const instance = tree.root;
|
|
45
45
|
const button = instance.findAllByType(VLCPlayer);
|
|
@@ -36,7 +36,7 @@ describe('Test ItemHanetDevice', () => {
|
|
|
36
36
|
|
|
37
37
|
it('render ItemHanetDevice', async () => {
|
|
38
38
|
await act(async () => {
|
|
39
|
-
tree = renderer.create(wrapComponent(props));
|
|
39
|
+
tree = await renderer.create(wrapComponent(props));
|
|
40
40
|
});
|
|
41
41
|
const instance = tree.root;
|
|
42
42
|
const touches = instance.findAllByType(TouchableWithoutFeedback);
|
|
@@ -49,7 +49,7 @@ describe('Test ItemHanetDevice', () => {
|
|
|
49
49
|
it('render ItemHanetDevice sensor has icon', async () => {
|
|
50
50
|
props.sensor.icon_kit = 'icon';
|
|
51
51
|
await act(async () => {
|
|
52
|
-
tree = renderer.create(wrapComponent(props));
|
|
52
|
+
tree = await renderer.create(wrapComponent(props));
|
|
53
53
|
});
|
|
54
54
|
const instance = tree.root;
|
|
55
55
|
const touches = instance.findAllByType(TouchableWithoutFeedback);
|
|
@@ -9,17 +9,10 @@ import Button from '../../commons/Button';
|
|
|
9
9
|
import CurrencyInput from '../../commons/Form/CurrencyInput';
|
|
10
10
|
import DateTimeRangeChange from '../DateTimeRangeChange';
|
|
11
11
|
import HorizontalBarChart from './HorizontalBarChart';
|
|
12
|
-
import DateTimePickerModal from 'react-native-modal-datetime-picker';
|
|
13
12
|
import LinearChart from './LinearChart';
|
|
14
13
|
import ChartAggregationOption from '../ChartAggregationOption';
|
|
15
14
|
import { formatMoney } from '../../utils/Utils';
|
|
16
15
|
|
|
17
|
-
export const dateTimeType = {
|
|
18
|
-
date: 'date',
|
|
19
|
-
time: 'time',
|
|
20
|
-
dateTime: 'datetime',
|
|
21
|
-
};
|
|
22
|
-
|
|
23
16
|
const { width } = Dimensions.get('window');
|
|
24
17
|
|
|
25
18
|
const HistoryChart = memo(
|
|
@@ -50,25 +43,10 @@ const HistoryChart = memo(
|
|
|
50
43
|
});
|
|
51
44
|
const [price, setPrice] = useState(null);
|
|
52
45
|
|
|
53
|
-
const
|
|
54
|
-
setEventPicker((state) => ({
|
|
55
|
-
...state,
|
|
56
|
-
showModalStart: true,
|
|
57
|
-
showModalEnd: false,
|
|
58
|
-
}));
|
|
59
|
-
}, []);
|
|
60
|
-
const onEnd = useCallback(() => {
|
|
61
|
-
setEventPicker((state) => ({
|
|
62
|
-
...state,
|
|
63
|
-
showModalStart: false,
|
|
64
|
-
showModalEnd: true,
|
|
65
|
-
}));
|
|
66
|
-
}, []);
|
|
67
|
-
const onConfirmStart = useCallback(
|
|
46
|
+
const selectStart = useCallback(
|
|
68
47
|
(date) => {
|
|
69
48
|
setEventPicker((state) => {
|
|
70
49
|
if (typeof date === 'number') {
|
|
71
|
-
onCancel();
|
|
72
50
|
return state;
|
|
73
51
|
}
|
|
74
52
|
if (moment(date) < state.endTime) {
|
|
@@ -89,15 +67,15 @@ const HistoryChart = memo(
|
|
|
89
67
|
};
|
|
90
68
|
}
|
|
91
69
|
});
|
|
70
|
+
onCancel();
|
|
92
71
|
},
|
|
93
72
|
[onCancel, setStartDate, setEndDate]
|
|
94
73
|
);
|
|
95
74
|
|
|
96
|
-
const
|
|
75
|
+
const selectEnd = useCallback(
|
|
97
76
|
(date) => {
|
|
98
77
|
setEventPicker((state) => {
|
|
99
78
|
if (typeof date === 'number') {
|
|
100
|
-
onCancel();
|
|
101
79
|
return state;
|
|
102
80
|
}
|
|
103
81
|
if (moment(date).add(1, 'day') > state.startTime) {
|
|
@@ -120,6 +98,7 @@ const HistoryChart = memo(
|
|
|
120
98
|
};
|
|
121
99
|
}
|
|
122
100
|
});
|
|
101
|
+
onCancel();
|
|
123
102
|
},
|
|
124
103
|
[onCancel, setStartDate, setEndDate]
|
|
125
104
|
);
|
|
@@ -197,8 +176,8 @@ const HistoryChart = memo(
|
|
|
197
176
|
) && (
|
|
198
177
|
<DateTimeRangeChange
|
|
199
178
|
startTime={eventPicker.startTime}
|
|
200
|
-
|
|
201
|
-
|
|
179
|
+
selectStart={selectStart}
|
|
180
|
+
selectEnd={selectEnd}
|
|
202
181
|
endTime={eventPicker.endTime}
|
|
203
182
|
formatType={formatType}
|
|
204
183
|
/>
|
|
@@ -234,28 +213,6 @@ const HistoryChart = memo(
|
|
|
234
213
|
{t('total_power_price')} <Text bold>{formatMoney(totalPrice)}</Text>
|
|
235
214
|
</Text>
|
|
236
215
|
)}
|
|
237
|
-
<DateTimePickerModal
|
|
238
|
-
isVisible={eventPicker.showModalStart}
|
|
239
|
-
date={eventPicker.startTime?._d}
|
|
240
|
-
mode={formatType || 'datetime'}
|
|
241
|
-
onConfirm={onConfirmStart}
|
|
242
|
-
onCancel={onCancel}
|
|
243
|
-
display="spinner"
|
|
244
|
-
headerTextIOS={t('pick_a_date')}
|
|
245
|
-
cancelTextIOS={t('cancel')}
|
|
246
|
-
confirmTextIOS={t('confirm')}
|
|
247
|
-
/>
|
|
248
|
-
<DateTimePickerModal
|
|
249
|
-
isVisible={eventPicker.showModalEnd}
|
|
250
|
-
date={eventPicker.endTime?._d}
|
|
251
|
-
mode={formatType || 'datetime'}
|
|
252
|
-
onConfirm={onConfirmEnd}
|
|
253
|
-
onCancel={onCancel}
|
|
254
|
-
display="spinner"
|
|
255
|
-
headerTextIOS={t('pick_a_date')}
|
|
256
|
-
cancelTextIOS={t('cancel')}
|
|
257
|
-
confirmTextIOS={t('confirm')}
|
|
258
|
-
/>
|
|
259
216
|
</View>
|
|
260
217
|
);
|
|
261
218
|
}
|
|
@@ -18,7 +18,7 @@ describe('Test LinearChart', () => {
|
|
|
18
18
|
},
|
|
19
19
|
];
|
|
20
20
|
await act(async () => {
|
|
21
|
-
tree = renderer.create(<LinearChart datas={data} />);
|
|
21
|
+
tree = await renderer.create(<LinearChart datas={data} />);
|
|
22
22
|
});
|
|
23
23
|
const instance = tree.root;
|
|
24
24
|
const views = instance.findAllByType(View);
|
|
@@ -36,14 +36,13 @@ describe('Test ProgressBar', () => {
|
|
|
36
36
|
configuration: { max_value: 100 },
|
|
37
37
|
value: 8,
|
|
38
38
|
};
|
|
39
|
-
const data = [{ value: 10 }];
|
|
39
|
+
const data = [{ value: 10, unit: 'oC' }];
|
|
40
40
|
await act(async () => {
|
|
41
|
-
tree = renderer.create(wrapComponent(item, data));
|
|
41
|
+
tree = await renderer.create(wrapComponent(item, data));
|
|
42
42
|
});
|
|
43
43
|
const instance = tree.root;
|
|
44
44
|
const texts = instance.findAllByType(Text);
|
|
45
45
|
expect(texts[0].props.children).toBe('Value bar');
|
|
46
|
-
expect(texts[1].props.children).toEqual(
|
|
47
|
-
expect(texts[2].props.children).toEqual([10, ' ', undefined]);
|
|
46
|
+
expect(texts[1].props.children).toEqual('Max value: 100 oC');
|
|
48
47
|
});
|
|
49
48
|
});
|
|
@@ -23,7 +23,7 @@ const ProgressBar = memo(({ data = [], item }) => {
|
|
|
23
23
|
</Text>
|
|
24
24
|
|
|
25
25
|
<Text size={16} style={styles.textMaxValue}>
|
|
26
|
-
{t('max_value')}: {maxValue}
|
|
26
|
+
{`${t('max_value')}: ${maxValue} ${unit || measure}`}
|
|
27
27
|
</Text>
|
|
28
28
|
|
|
29
29
|
<View style={styles.wrapProgressBar}>
|
|
@@ -36,9 +36,11 @@ const ProgressBar = memo(({ data = [], item }) => {
|
|
|
36
36
|
borderWidth={0}
|
|
37
37
|
borderRadius={10}
|
|
38
38
|
/>
|
|
39
|
-
<
|
|
40
|
-
{
|
|
41
|
-
|
|
39
|
+
<View>
|
|
40
|
+
<Text numberOfLines={1} style={styles.textValue}>
|
|
41
|
+
{value}
|
|
42
|
+
</Text>
|
|
43
|
+
</View>
|
|
42
44
|
</View>
|
|
43
45
|
</View>
|
|
44
46
|
);
|
|
@@ -6,29 +6,32 @@ export default StyleSheet.create({
|
|
|
6
6
|
container: {
|
|
7
7
|
flex: 1,
|
|
8
8
|
flexDirection: 'column', //column direction
|
|
9
|
-
|
|
10
|
-
marginLeft: 60,
|
|
9
|
+
marginHorizontal: 30,
|
|
11
10
|
borderWidth: 1,
|
|
12
|
-
padding:
|
|
11
|
+
padding: 16,
|
|
13
12
|
borderRadius: 8,
|
|
14
13
|
borderColor: Colors.Gray4,
|
|
15
14
|
marginBottom: 12,
|
|
16
15
|
},
|
|
17
16
|
textLabel: {
|
|
18
|
-
paddingHorizontal:
|
|
17
|
+
paddingHorizontal: 15,
|
|
19
18
|
paddingTop: 8,
|
|
20
19
|
},
|
|
21
20
|
textMaxValue: {
|
|
22
|
-
|
|
21
|
+
marginTop: 20,
|
|
22
|
+
marginLeft: 14,
|
|
23
|
+
textAlign: 'left',
|
|
24
|
+
fontWeight: 'bold',
|
|
25
|
+
textTransform: 'uppercase',
|
|
23
26
|
},
|
|
24
27
|
wrapProgressBar: {
|
|
25
28
|
flex: 1,
|
|
26
29
|
flexDirection: 'row',
|
|
27
30
|
justifyContent: 'center',
|
|
28
31
|
alignItems: 'center',
|
|
29
|
-
padding: 8,
|
|
30
32
|
},
|
|
31
33
|
textValue: {
|
|
32
34
|
marginLeft: 8,
|
|
35
|
+
width: 45,
|
|
33
36
|
},
|
|
34
37
|
});
|
|
@@ -19,7 +19,7 @@ describe('Test CurrentRainSensor', () => {
|
|
|
19
19
|
},
|
|
20
20
|
];
|
|
21
21
|
await act(async () => {
|
|
22
|
-
tree = renderer.create(<CurrentRainSensor data={data} />);
|
|
22
|
+
tree = await renderer.create(<CurrentRainSensor data={data} />);
|
|
23
23
|
});
|
|
24
24
|
const instance = tree.root;
|
|
25
25
|
const Views = instance.findAllByType(View);
|
|
@@ -38,7 +38,7 @@ describe('Test CurrentRainSensor', () => {
|
|
|
38
38
|
},
|
|
39
39
|
];
|
|
40
40
|
await act(async () => {
|
|
41
|
-
tree = renderer.create(<CurrentRainSensor data={data} />);
|
|
41
|
+
tree = await renderer.create(<CurrentRainSensor data={data} />);
|
|
42
42
|
});
|
|
43
43
|
const instance = tree.root;
|
|
44
44
|
const Views = instance.findAllByType(View);
|
|
@@ -47,7 +47,7 @@ describe('Test CurrentRainSensor', () => {
|
|
|
47
47
|
|
|
48
48
|
it('render CurrentRainSensor data empty', async () => {
|
|
49
49
|
await act(async () => {
|
|
50
|
-
tree = renderer.create(<CurrentRainSensor data={[]} />);
|
|
50
|
+
tree = await renderer.create(<CurrentRainSensor data={[]} />);
|
|
51
51
|
});
|
|
52
52
|
const instance = tree.root;
|
|
53
53
|
const Views = instance.findAllByType(View);
|
|
@@ -66,7 +66,7 @@ describe('Test CurrentRainSensor', () => {
|
|
|
66
66
|
},
|
|
67
67
|
];
|
|
68
68
|
await act(async () => {
|
|
69
|
-
tree = renderer.create(<CurrentRainSensor data={data} />);
|
|
69
|
+
tree = await renderer.create(<CurrentRainSensor data={data} />);
|
|
70
70
|
});
|
|
71
71
|
const instance = tree.root;
|
|
72
72
|
const fimage = instance.findAllByType(FImage);
|
|
@@ -85,7 +85,7 @@ describe('Test CurrentRainSensor', () => {
|
|
|
85
85
|
},
|
|
86
86
|
];
|
|
87
87
|
await act(async () => {
|
|
88
|
-
tree = renderer.create(<CurrentRainSensor data={data} />);
|
|
88
|
+
tree = await renderer.create(<CurrentRainSensor data={data} />);
|
|
89
89
|
});
|
|
90
90
|
const instance = tree.root;
|
|
91
91
|
const iconComponent = instance.findAllByType(IconComponent);
|
|
@@ -18,7 +18,7 @@ describe('Test SonosSpeaker', () => {
|
|
|
18
18
|
let tree;
|
|
19
19
|
it('create SonosSpeaker', async () => {
|
|
20
20
|
await act(async () => {
|
|
21
|
-
tree = renderer.create(wrapComponent());
|
|
21
|
+
tree = await renderer.create(wrapComponent());
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
const instance = tree.root;
|
|
@@ -28,7 +28,7 @@ describe('Test SonosSpeaker', () => {
|
|
|
28
28
|
|
|
29
29
|
it('Test handleClickButton', async () => {
|
|
30
30
|
await act(async () => {
|
|
31
|
-
tree = renderer.create(wrapComponent());
|
|
31
|
+
tree = await renderer.create(wrapComponent());
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
const instance = tree.root;
|
|
@@ -43,7 +43,7 @@ describe('Test SonosSpeaker', () => {
|
|
|
43
43
|
|
|
44
44
|
it('Test onValueChange', async () => {
|
|
45
45
|
await act(async () => {
|
|
46
|
-
tree = renderer.create(wrapComponent());
|
|
46
|
+
tree = await renderer.create(wrapComponent());
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
const instance = tree.root;
|
|
@@ -20,7 +20,7 @@ describe('Test Compass', () => {
|
|
|
20
20
|
},
|
|
21
21
|
];
|
|
22
22
|
await act(async () => {
|
|
23
|
-
tree = renderer.create(wrapComponent(data));
|
|
23
|
+
tree = await renderer.create(wrapComponent(data));
|
|
24
24
|
});
|
|
25
25
|
const instance = tree.root;
|
|
26
26
|
const textInputs = instance.findAllByType(Text);
|
|
@@ -29,7 +29,7 @@ describe('Test Compass', () => {
|
|
|
29
29
|
|
|
30
30
|
it('create Compass data null', async () => {
|
|
31
31
|
await act(async () => {
|
|
32
|
-
tree = renderer.create(wrapComponent([]));
|
|
32
|
+
tree = await renderer.create(wrapComponent([]));
|
|
33
33
|
});
|
|
34
34
|
const instance = tree.root;
|
|
35
35
|
const textInputs = instance.findAllByType(Text);
|
|
@@ -30,7 +30,7 @@ describe('Test Device Alert Status', () => {
|
|
|
30
30
|
},
|
|
31
31
|
];
|
|
32
32
|
await act(async () => {
|
|
33
|
-
tree = renderer.create(wrapComponent(data));
|
|
33
|
+
tree = await renderer.create(wrapComponent(data));
|
|
34
34
|
});
|
|
35
35
|
const instance = tree.root;
|
|
36
36
|
const item = instance.find(
|
|
@@ -49,7 +49,7 @@ describe('Test Device Alert Status', () => {
|
|
|
49
49
|
},
|
|
50
50
|
];
|
|
51
51
|
await act(async () => {
|
|
52
|
-
tree = renderer.create(wrapComponent(data));
|
|
52
|
+
tree = await renderer.create(wrapComponent(data));
|
|
53
53
|
});
|
|
54
54
|
const instance = tree.root;
|
|
55
55
|
const item = instance.findAll(
|
|
@@ -65,7 +65,7 @@ describe('Test Device Alert Status', () => {
|
|
|
65
65
|
},
|
|
66
66
|
];
|
|
67
67
|
await act(async () => {
|
|
68
|
-
tree = renderer.create(wrapComponent(data));
|
|
68
|
+
tree = await renderer.create(wrapComponent(data));
|
|
69
69
|
});
|
|
70
70
|
const instance = tree.root;
|
|
71
71
|
const item = instance.findAll(
|
|
@@ -18,7 +18,7 @@ describe('Test DisconnectedView', () => {
|
|
|
18
18
|
it('render DisconnectedView icon test', async () => {
|
|
19
19
|
const sensor = { icon: 'test' };
|
|
20
20
|
await act(async () => {
|
|
21
|
-
tree = renderer.create(wrapComponent(sensor));
|
|
21
|
+
tree = await renderer.create(wrapComponent(sensor));
|
|
22
22
|
});
|
|
23
23
|
const instance = tree.root;
|
|
24
24
|
const suggestion = instance.findByProps({ testID: 'suggestions' });
|
|
@@ -30,7 +30,7 @@ describe('Test DisconnectedView', () => {
|
|
|
30
30
|
const isDeviceHasBle = true;
|
|
31
31
|
const sensor = { icon: 'test' };
|
|
32
32
|
await act(async () => {
|
|
33
|
-
tree = renderer.create(wrapComponent(sensor, isDeviceHasBle));
|
|
33
|
+
tree = await renderer.create(wrapComponent(sensor, isDeviceHasBle));
|
|
34
34
|
});
|
|
35
35
|
const instance = tree.root;
|
|
36
36
|
const suggestion = instance.findByProps({ testID: 'suggestions' });
|
|
@@ -16,7 +16,7 @@ describe('Test Sensor Connected Status', () => {
|
|
|
16
16
|
|
|
17
17
|
it('render Sensor Connected Status', async () => {
|
|
18
18
|
await act(async () => {
|
|
19
|
-
tree = renderer.create(wrapComponent());
|
|
19
|
+
tree = await renderer.create(wrapComponent());
|
|
20
20
|
});
|
|
21
21
|
const instance = tree.root;
|
|
22
22
|
const item = instance.find(
|
|
@@ -19,7 +19,7 @@ describe('Test DisplayChecking', () => {
|
|
|
19
19
|
|
|
20
20
|
it('create LoadingMessage', async () => {
|
|
21
21
|
await act(async () => {
|
|
22
|
-
tree = renderer.create(wrapComponent(visible, onClose, message));
|
|
22
|
+
tree = await renderer.create(wrapComponent(visible, onClose, message));
|
|
23
23
|
});
|
|
24
24
|
const instance = tree.root;
|
|
25
25
|
const textInputs = instance.findAllByType(TouchableOpacity);
|
|
@@ -9,7 +9,7 @@ describe('Test CurrencyInput', () => {
|
|
|
9
9
|
const testCurrencyInputWithValue = (value) => {
|
|
10
10
|
it('test CurrencyInput with value', async () => {
|
|
11
11
|
await act(async () => {
|
|
12
|
-
tree = renderer.create(
|
|
12
|
+
tree = await renderer.create(
|
|
13
13
|
<CurrencyInput value={value} minValue={0} maxValue={100000} />
|
|
14
14
|
);
|
|
15
15
|
});
|
|
@@ -27,7 +27,7 @@ describe('Test CurrencyInput', () => {
|
|
|
27
27
|
it('test CurrencyInput change text', async () => {
|
|
28
28
|
const mockOnChange = jest.fn();
|
|
29
29
|
await act(async () => {
|
|
30
|
-
tree = renderer.create(
|
|
30
|
+
tree = await renderer.create(
|
|
31
31
|
<CurrencyInput
|
|
32
32
|
value={20}
|
|
33
33
|
minValue={-10}
|
|
@@ -8,7 +8,7 @@ describe('Test _TextInput', () => {
|
|
|
8
8
|
it('render _TextInput', async () => {
|
|
9
9
|
const mockFunc = jest.fn();
|
|
10
10
|
await act(async () => {
|
|
11
|
-
tree = renderer.create(
|
|
11
|
+
tree = await renderer.create(
|
|
12
12
|
<_TextInput
|
|
13
13
|
label={1234}
|
|
14
14
|
defaultValue={'station.name'}
|
|
@@ -28,7 +28,7 @@ describe('Test _TextInput', () => {
|
|
|
28
28
|
it('render _TextInput lable null', async () => {
|
|
29
29
|
const mockFunc = jest.fn();
|
|
30
30
|
await act(async () => {
|
|
31
|
-
tree = renderer.create(
|
|
31
|
+
tree = await renderer.create(
|
|
32
32
|
<_TextInput
|
|
33
33
|
label={true}
|
|
34
34
|
defaultValue={'station.name'}
|
|
@@ -9,7 +9,7 @@ describe('Test _TextInputPassword', () => {
|
|
|
9
9
|
it('render _TextInputPassword', async () => {
|
|
10
10
|
const mockFunc = jest.fn();
|
|
11
11
|
await act(async () => {
|
|
12
|
-
tree = renderer.create(
|
|
12
|
+
tree = await renderer.create(
|
|
13
13
|
<_TextInputPassword
|
|
14
14
|
secureTextEntry
|
|
15
15
|
label={'1234'}
|
|
@@ -35,7 +35,7 @@ describe('Test _TextInputPassword', () => {
|
|
|
35
35
|
it('render _TextInputPassword lable null', async () => {
|
|
36
36
|
const mockFunc = jest.fn();
|
|
37
37
|
await act(async () => {
|
|
38
|
-
tree = renderer.create(
|
|
38
|
+
tree = await renderer.create(
|
|
39
39
|
<_TextInputPassword
|
|
40
40
|
label={false}
|
|
41
41
|
secureTextEntry
|
|
@@ -24,7 +24,7 @@ describe('Test FullLoading', () => {
|
|
|
24
24
|
};
|
|
25
25
|
it('render FullLoading no custom', async () => {
|
|
26
26
|
await act(async () => {
|
|
27
|
-
tree = renderer.create(wrapComponent(props));
|
|
27
|
+
tree = await renderer.create(wrapComponent(props));
|
|
28
28
|
});
|
|
29
29
|
const instance = tree.root;
|
|
30
30
|
const activityIndicator = instance.findAllByType(ActivityIndicator);
|
|
@@ -32,7 +32,7 @@ describe('Test FullLoading', () => {
|
|
|
32
32
|
});
|
|
33
33
|
it('render FullLoading custom', async () => {
|
|
34
34
|
await act(async () => {
|
|
35
|
-
tree = renderer.create(
|
|
35
|
+
tree = await renderer.create(
|
|
36
36
|
wrapComponent({ ...props, customIcon: <Image /> })
|
|
37
37
|
);
|
|
38
38
|
});
|