@eohjsc/react-native-smart-city 0.3.90 → 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 +1 -1
- 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
|
@@ -19,6 +19,37 @@ import { Constants, normalize } from '../../configs/Constants';
|
|
|
19
19
|
import styles from './Styles/index';
|
|
20
20
|
import Routes from '../../utils/Route';
|
|
21
21
|
|
|
22
|
+
export const CameraItem = ({
|
|
23
|
+
item,
|
|
24
|
+
width,
|
|
25
|
+
height,
|
|
26
|
+
thumbnail,
|
|
27
|
+
amount,
|
|
28
|
+
handleFullScreen,
|
|
29
|
+
goToPlayBack,
|
|
30
|
+
}) => {
|
|
31
|
+
return (
|
|
32
|
+
<View style={styles.wrap}>
|
|
33
|
+
{!!item && (
|
|
34
|
+
<MediaPlayerDetail
|
|
35
|
+
id={item?.id}
|
|
36
|
+
uri={item?.configuration?.uri}
|
|
37
|
+
thumbnail={thumbnail}
|
|
38
|
+
key={`camera-device-${item?.id}`}
|
|
39
|
+
style={styles.camera}
|
|
40
|
+
wrapStyles={styles.wrapStyles}
|
|
41
|
+
resizeMode={'cover'}
|
|
42
|
+
cameraName={amount !== 1 && item?.configuration?.name}
|
|
43
|
+
amount={amount}
|
|
44
|
+
handleFullScreen={handleFullScreen}
|
|
45
|
+
goToPlayBack={goToPlayBack(item, thumbnail)}
|
|
46
|
+
width={width}
|
|
47
|
+
height={height}
|
|
48
|
+
/>
|
|
49
|
+
)}
|
|
50
|
+
</View>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
22
53
|
const AllCamera = () => {
|
|
23
54
|
const t = useTranslations();
|
|
24
55
|
const carouselRef = useRef();
|
|
@@ -73,35 +104,18 @@ const AllCamera = () => {
|
|
|
73
104
|
[navigate]
|
|
74
105
|
);
|
|
75
106
|
|
|
76
|
-
const
|
|
107
|
+
const renderItem = ({ item }) => {
|
|
77
108
|
return (
|
|
78
|
-
<View style={styles.
|
|
79
|
-
{
|
|
80
|
-
<
|
|
81
|
-
|
|
82
|
-
|
|
109
|
+
<View style={styles.wrapItem}>
|
|
110
|
+
{amount === 1 ? (
|
|
111
|
+
<CameraItem
|
|
112
|
+
key={item?.id}
|
|
113
|
+
item={item}
|
|
83
114
|
thumbnail={thumbnail}
|
|
84
|
-
key={`camera-device-${item?.id}`}
|
|
85
|
-
style={styles.camera}
|
|
86
|
-
wrapStyles={styles.wrapStyles}
|
|
87
|
-
resizeMode={'cover'}
|
|
88
|
-
cameraName={amount !== 1 && item?.configuration?.name}
|
|
89
115
|
amount={amount}
|
|
90
116
|
handleFullScreen={handleFullScreen}
|
|
91
|
-
goToPlayBack={goToPlayBack
|
|
92
|
-
width={width}
|
|
93
|
-
height={height}
|
|
117
|
+
goToPlayBack={goToPlayBack}
|
|
94
118
|
/>
|
|
95
|
-
)}
|
|
96
|
-
</View>
|
|
97
|
-
);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
const renderItem = ({ item }) => {
|
|
101
|
-
return (
|
|
102
|
-
<View style={styles.wrapItem}>
|
|
103
|
-
{amount === 1 ? (
|
|
104
|
-
<CameraItem key={item?.id} item={item} />
|
|
105
119
|
) : amount === 4 ? (
|
|
106
120
|
<>
|
|
107
121
|
<View style={styles.row}>
|
|
@@ -110,12 +124,20 @@ const AllCamera = () => {
|
|
|
110
124
|
item={item[0]}
|
|
111
125
|
width={Constants.width / 2}
|
|
112
126
|
height={112}
|
|
127
|
+
thumbnail={thumbnail}
|
|
128
|
+
amount={amount}
|
|
129
|
+
handleFullScreen={handleFullScreen}
|
|
130
|
+
goToPlayBack={goToPlayBack}
|
|
113
131
|
/>
|
|
114
132
|
<CameraItem
|
|
115
133
|
key={item?.id}
|
|
116
134
|
item={item[1]}
|
|
117
135
|
width={Constants.width / 2}
|
|
118
136
|
height={112}
|
|
137
|
+
thumbnail={thumbnail}
|
|
138
|
+
amount={amount}
|
|
139
|
+
handleFullScreen={handleFullScreen}
|
|
140
|
+
goToPlayBack={goToPlayBack}
|
|
119
141
|
/>
|
|
120
142
|
</View>
|
|
121
143
|
<View style={styles.row}>
|
|
@@ -130,20 +152,66 @@ const AllCamera = () => {
|
|
|
130
152
|
item={item[3]}
|
|
131
153
|
width={Constants.width / 2}
|
|
132
154
|
height={112}
|
|
155
|
+
thumbnail={thumbnail}
|
|
156
|
+
amount={amount}
|
|
157
|
+
handleFullScreen={handleFullScreen}
|
|
158
|
+
goToPlayBack={goToPlayBack}
|
|
133
159
|
/>
|
|
134
160
|
</View>
|
|
135
161
|
</>
|
|
136
162
|
) : (
|
|
137
163
|
<>
|
|
138
164
|
<View style={styles.row}>
|
|
139
|
-
<CameraItem
|
|
140
|
-
|
|
141
|
-
|
|
165
|
+
<CameraItem
|
|
166
|
+
key={item?.id}
|
|
167
|
+
item={item[0]}
|
|
168
|
+
thumbnail={thumbnail}
|
|
169
|
+
amount={amount}
|
|
170
|
+
handleFullScreen={handleFullScreen}
|
|
171
|
+
goToPlayBack={goToPlayBack}
|
|
172
|
+
/>
|
|
173
|
+
<CameraItem
|
|
174
|
+
key={item?.id}
|
|
175
|
+
item={item[1]}
|
|
176
|
+
thumbnail={thumbnail}
|
|
177
|
+
amount={amount}
|
|
178
|
+
handleFullScreen={handleFullScreen}
|
|
179
|
+
goToPlayBack={goToPlayBack}
|
|
180
|
+
/>
|
|
181
|
+
<CameraItem
|
|
182
|
+
key={item?.id}
|
|
183
|
+
item={item[2]}
|
|
184
|
+
thumbnail={thumbnail}
|
|
185
|
+
amount={amount}
|
|
186
|
+
handleFullScreen={handleFullScreen}
|
|
187
|
+
goToPlayBack={goToPlayBack}
|
|
188
|
+
/>
|
|
142
189
|
</View>
|
|
143
190
|
<View style={styles.row}>
|
|
144
|
-
<CameraItem
|
|
145
|
-
|
|
146
|
-
|
|
191
|
+
<CameraItem
|
|
192
|
+
key={item?.id}
|
|
193
|
+
item={item[3]}
|
|
194
|
+
thumbnail={thumbnail}
|
|
195
|
+
amount={amount}
|
|
196
|
+
handleFullScreen={handleFullScreen}
|
|
197
|
+
goToPlayBack={goToPlayBack}
|
|
198
|
+
/>
|
|
199
|
+
<CameraItem
|
|
200
|
+
key={item?.id}
|
|
201
|
+
item={item[4]}
|
|
202
|
+
thumbnail={thumbnail}
|
|
203
|
+
amount={amount}
|
|
204
|
+
handleFullScreen={handleFullScreen}
|
|
205
|
+
goToPlayBack={goToPlayBack}
|
|
206
|
+
/>
|
|
207
|
+
<CameraItem
|
|
208
|
+
key={item?.id}
|
|
209
|
+
item={item[5]}
|
|
210
|
+
thumbnail={thumbnail}
|
|
211
|
+
amount={amount}
|
|
212
|
+
handleFullScreen={handleFullScreen}
|
|
213
|
+
goToPlayBack={goToPlayBack}
|
|
214
|
+
/>
|
|
147
215
|
</View>
|
|
148
216
|
</>
|
|
149
217
|
)}
|
|
@@ -24,7 +24,7 @@ const MultiUnits = () => {
|
|
|
24
24
|
const isFocused = useIsFocused();
|
|
25
25
|
const idUser = useGetIdUser();
|
|
26
26
|
const { navigate } = useNavigation();
|
|
27
|
-
const { params = {} } = useRoute();
|
|
27
|
+
const { params = {}, name: currentRouteName } = useRoute();
|
|
28
28
|
const { isMultiUnits = false, unitName = '', unit, isOwner } = params;
|
|
29
29
|
const [data, setData] = useState([]);
|
|
30
30
|
const tabName = useMemo(
|
|
@@ -84,7 +84,7 @@ const MultiUnits = () => {
|
|
|
84
84
|
? AUTOMATE_TYPE.ONE_TAP_ONLY
|
|
85
85
|
: AUTOMATE_TYPE.VALUE_CHANGE,
|
|
86
86
|
unit: { id: unit?.id },
|
|
87
|
-
|
|
87
|
+
closeScreen: currentRouteName,
|
|
88
88
|
isMultiUnits,
|
|
89
89
|
},
|
|
90
90
|
});
|
|
@@ -144,7 +144,7 @@ describe('Test MultiUnits', () => {
|
|
|
144
144
|
screen: Routes.AddNewAutoSmart,
|
|
145
145
|
params: {
|
|
146
146
|
type: AUTOMATE_TYPE.VALUE_CHANGE,
|
|
147
|
-
|
|
147
|
+
closeScreen: undefined,
|
|
148
148
|
isMultiUnits: true,
|
|
149
149
|
unit: { id: undefined },
|
|
150
150
|
},
|
|
@@ -217,7 +217,7 @@ describe('Test MultiUnits', () => {
|
|
|
217
217
|
screen: Routes.AddNewAutoSmart,
|
|
218
218
|
params: {
|
|
219
219
|
type: AUTOMATE_TYPE.ONE_TAP_ONLY,
|
|
220
|
-
|
|
220
|
+
closeScreen: undefined,
|
|
221
221
|
isMultiUnits: true,
|
|
222
222
|
unit: { id: undefined },
|
|
223
223
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { FlatList, TouchableOpacity } from 'react-native';
|
|
3
3
|
import { act, create } from 'react-test-renderer';
|
|
4
4
|
import MockAdapter from 'axios-mock-adapter';
|
|
@@ -12,31 +12,9 @@ import Routes from '../../../utils/Route';
|
|
|
12
12
|
import { AccessibilityLabel } from '../../../configs/Constants';
|
|
13
13
|
import api from '../../../utils/Apis/axios';
|
|
14
14
|
import { API } from '../../../configs';
|
|
15
|
+
import { useNavigation } from '@react-navigation/native';
|
|
15
16
|
|
|
16
17
|
const mock = new MockAdapter(api.axiosInstance);
|
|
17
|
-
const mockedNavigate = jest.fn();
|
|
18
|
-
const mockSetState = jest.fn();
|
|
19
|
-
|
|
20
|
-
jest.mock('@react-navigation/native', () => {
|
|
21
|
-
return {
|
|
22
|
-
...jest.requireActual('@react-navigation/native'),
|
|
23
|
-
useNavigation: () => ({
|
|
24
|
-
navigate: mockedNavigate,
|
|
25
|
-
setOptions: () => ({
|
|
26
|
-
headerRight: jest.fn(),
|
|
27
|
-
}),
|
|
28
|
-
}),
|
|
29
|
-
useIsFocused: jest.fn(),
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
jest.mock('react', () => {
|
|
34
|
-
return {
|
|
35
|
-
...jest.requireActual('react'),
|
|
36
|
-
memo: (x) => x,
|
|
37
|
-
useState: jest.fn((init) => [init, mockSetState]),
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
18
|
|
|
41
19
|
const wrapComponent = () => (
|
|
42
20
|
<SCProvider initState={mockSCStore({})}>
|
|
@@ -46,10 +24,21 @@ const wrapComponent = () => (
|
|
|
46
24
|
|
|
47
25
|
describe('Test Automate', () => {
|
|
48
26
|
let tree;
|
|
27
|
+
const navigation = useNavigation();
|
|
28
|
+
const mockedNavigate = useNavigation().navigate;
|
|
29
|
+
beforeAll(() => {
|
|
30
|
+
useNavigation.mockImplementation(() => ({
|
|
31
|
+
...navigation,
|
|
32
|
+
setOptions: jest.fn(),
|
|
33
|
+
}));
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
afterAll(() => {
|
|
37
|
+
useNavigation.mockImplementation(() => navigation);
|
|
38
|
+
});
|
|
49
39
|
|
|
50
40
|
beforeEach(() => {
|
|
51
41
|
mockedNavigate.mockClear();
|
|
52
|
-
mockSetState.mockClear();
|
|
53
42
|
});
|
|
54
43
|
|
|
55
44
|
it('Test success get Automate onPress onAddNew', async () => {
|
|
@@ -89,13 +78,10 @@ describe('Test Automate', () => {
|
|
|
89
78
|
};
|
|
90
79
|
mock.onGet(API.AUTOMATE.GET_SMART()).reply(200, response.data);
|
|
91
80
|
|
|
92
|
-
useState.mockImplementation(() => [false, mockSetState]);
|
|
93
|
-
useState.mockImplementation(() => [response.data, mockSetState]);
|
|
94
|
-
|
|
95
81
|
await act(async () => {
|
|
96
82
|
tree = await create(wrapComponent());
|
|
97
83
|
});
|
|
98
|
-
|
|
84
|
+
|
|
99
85
|
const instance = tree.root;
|
|
100
86
|
const FlatLists = instance.findAllByType(FlatList);
|
|
101
87
|
expect(FlatLists).toHaveLength(2);
|
|
@@ -108,7 +94,7 @@ describe('Test Automate', () => {
|
|
|
108
94
|
expect(mockedNavigate).toBeCalledWith(Routes.UnitStack, {
|
|
109
95
|
screen: Routes.AddNewAutoSmart,
|
|
110
96
|
params: {
|
|
111
|
-
|
|
97
|
+
closeScreen: undefined,
|
|
112
98
|
isMultiUnits: true,
|
|
113
99
|
type: 'automate',
|
|
114
100
|
unit: { id: undefined },
|
|
@@ -142,13 +128,10 @@ describe('Test Automate', () => {
|
|
|
142
128
|
};
|
|
143
129
|
mock.onGet(API.AUTOMATE.GET_SMART()).reply(200, response.data);
|
|
144
130
|
|
|
145
|
-
useState.mockImplementation(() => [false, mockSetState]);
|
|
146
|
-
useState.mockImplementation(() => [response.data, mockSetState]);
|
|
147
|
-
|
|
148
131
|
await act(async () => {
|
|
149
132
|
tree = await create(wrapComponent());
|
|
150
133
|
});
|
|
151
|
-
|
|
134
|
+
|
|
152
135
|
const instance = tree.root;
|
|
153
136
|
const FlatLists = instance.findAllByType(FlatList);
|
|
154
137
|
expect(FlatLists).toHaveLength(3);
|
|
@@ -162,7 +145,7 @@ describe('Test Automate', () => {
|
|
|
162
145
|
screen: Routes.ScriptDetail,
|
|
163
146
|
params: {
|
|
164
147
|
automate: response.data[0].automates[0],
|
|
165
|
-
|
|
148
|
+
closeScreen: undefined,
|
|
166
149
|
isMultiUnits: true,
|
|
167
150
|
name: 'script',
|
|
168
151
|
type: 'one_tap',
|
|
@@ -172,6 +155,7 @@ describe('Test Automate', () => {
|
|
|
172
155
|
},
|
|
173
156
|
});
|
|
174
157
|
});
|
|
158
|
+
|
|
175
159
|
it('Test success get Automate onPressArrowRight to ScriptDetail', async () => {
|
|
176
160
|
const response = {
|
|
177
161
|
status: 200,
|
|
@@ -198,9 +182,6 @@ describe('Test Automate', () => {
|
|
|
198
182
|
};
|
|
199
183
|
mock.onGet(API.AUTOMATE.GET_SMART()).reply(200, response.data);
|
|
200
184
|
|
|
201
|
-
useState.mockImplementation(() => [false, mockSetState]);
|
|
202
|
-
useState.mockImplementation(() => [response.data, mockSetState]);
|
|
203
|
-
|
|
204
185
|
await act(async () => {
|
|
205
186
|
tree = await create(wrapComponent());
|
|
206
187
|
});
|
|
@@ -7,7 +7,11 @@ import React, {
|
|
|
7
7
|
} from 'react';
|
|
8
8
|
import { View, TouchableOpacity, FlatList, Image } from 'react-native';
|
|
9
9
|
import { IconFill } from '@ant-design/icons-react-native/es';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
useNavigation,
|
|
12
|
+
useIsFocused,
|
|
13
|
+
useRoute,
|
|
14
|
+
} from '@react-navigation/native';
|
|
11
15
|
import { useSCContextSelector } from '../../context';
|
|
12
16
|
|
|
13
17
|
import styles from './Styles/indexStyles';
|
|
@@ -34,6 +38,7 @@ const Automate = () => {
|
|
|
34
38
|
const { setOptions, navigate } = useNavigation();
|
|
35
39
|
const [automatesData, setAutomatesData] = useState([]);
|
|
36
40
|
const [isLoading, setIsLoading] = useState(false);
|
|
41
|
+
const { name: currentRouteName } = useRoute();
|
|
37
42
|
const starredScriptIds = useSCContextSelector(
|
|
38
43
|
(state) => state.automate.starredScriptIds
|
|
39
44
|
);
|
|
@@ -72,7 +77,7 @@ const Automate = () => {
|
|
|
72
77
|
type: item?.type,
|
|
73
78
|
havePermission: isOwner || idUser === item?.user,
|
|
74
79
|
unit: { id },
|
|
75
|
-
|
|
80
|
+
closeScreen: currentRouteName,
|
|
76
81
|
automate: item,
|
|
77
82
|
isMultiUnits: type === UNIT_TYPES.MULTI,
|
|
78
83
|
},
|
|
@@ -85,7 +90,7 @@ const Automate = () => {
|
|
|
85
90
|
params: {
|
|
86
91
|
unit: { id },
|
|
87
92
|
type: AUTOMATE_TYPE.AUTOMATE,
|
|
88
|
-
|
|
93
|
+
closeScreen: currentRouteName,
|
|
89
94
|
isMultiUnits: unitType === UNIT_TYPES.MULTI,
|
|
90
95
|
},
|
|
91
96
|
});
|
|
@@ -46,7 +46,7 @@ describe('Test DetailHistoryChart', () => {
|
|
|
46
46
|
.reply(200, [{ data: [1, 2, 3] }]);
|
|
47
47
|
|
|
48
48
|
await act(async () => {
|
|
49
|
-
tree = renderer.create(wrapComponent(item, sensor));
|
|
49
|
+
tree = await renderer.create(wrapComponent(item, sensor));
|
|
50
50
|
});
|
|
51
51
|
const instance = tree.root;
|
|
52
52
|
const historyChart = instance.findAllByType(HistoryChart);
|
|
@@ -60,7 +60,7 @@ describe('Test DetailHistoryChart', () => {
|
|
|
60
60
|
configuration: { ...item?.configuration, type: 'line_chart' },
|
|
61
61
|
};
|
|
62
62
|
await act(async () => {
|
|
63
|
-
tree = renderer.create(wrapComponent(item, sensor));
|
|
63
|
+
tree = await renderer.create(wrapComponent(item, sensor));
|
|
64
64
|
});
|
|
65
65
|
const instance = tree.root;
|
|
66
66
|
const historyChart = instance.findAllByType(HistoryChart);
|
|
@@ -15,7 +15,9 @@ describe('Test EmergencyCountdown', () => {
|
|
|
15
15
|
let tree;
|
|
16
16
|
it(' EmergencyCountdown resolved_emergency', async () => {
|
|
17
17
|
await act(async () => {
|
|
18
|
-
tree = renderer.create(
|
|
18
|
+
tree = await renderer.create(
|
|
19
|
+
wrapComponent('stopCount', 'resolved_emergency')
|
|
20
|
+
);
|
|
19
21
|
});
|
|
20
22
|
const instance = tree.root;
|
|
21
23
|
const texts = instance.findAllByType(Text);
|
|
@@ -23,7 +25,7 @@ describe('Test EmergencyCountdown', () => {
|
|
|
23
25
|
});
|
|
24
26
|
it(' EmergencyCountdown not resolved_emergency', async () => {
|
|
25
27
|
await act(async () => {
|
|
26
|
-
tree = renderer.create(
|
|
28
|
+
tree = await renderer.create(
|
|
27
29
|
wrapComponent('stopCount', 'not_resolve_emergency')
|
|
28
30
|
);
|
|
29
31
|
});
|
|
@@ -48,7 +48,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
48
48
|
};
|
|
49
49
|
|
|
50
50
|
await act(async () => {
|
|
51
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
51
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
52
52
|
});
|
|
53
53
|
const instance = tree.root;
|
|
54
54
|
const detailHistoryChart = instance.findAllByType(VisualChart);
|
|
@@ -80,7 +80,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
80
80
|
};
|
|
81
81
|
|
|
82
82
|
await act(async () => {
|
|
83
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
83
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
84
84
|
});
|
|
85
85
|
const instance = tree.root;
|
|
86
86
|
const actionGroup = instance.findAllByType(ActionGroup);
|
|
@@ -110,7 +110,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
110
110
|
};
|
|
111
111
|
|
|
112
112
|
await act(async () => {
|
|
113
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
113
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
114
114
|
});
|
|
115
115
|
const instance = tree.root;
|
|
116
116
|
const mediaPlayerDetail = instance.findAllByType(MediaPlayerDetail);
|
|
@@ -142,7 +142,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
142
142
|
};
|
|
143
143
|
|
|
144
144
|
await act(async () => {
|
|
145
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
145
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
146
146
|
});
|
|
147
147
|
const instance = tree.root;
|
|
148
148
|
const flatListItems = instance.findAllByType(FlatListItems);
|
|
@@ -164,7 +164,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
164
164
|
};
|
|
165
165
|
|
|
166
166
|
await act(async () => {
|
|
167
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
167
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
168
168
|
});
|
|
169
169
|
const instance = tree.root;
|
|
170
170
|
const flatListItems = instance.findAllByType(SmartIr);
|
|
@@ -186,7 +186,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
186
186
|
};
|
|
187
187
|
|
|
188
188
|
await act(async () => {
|
|
189
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
189
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
190
190
|
});
|
|
191
191
|
const instance = tree.root;
|
|
192
192
|
const flatListItems = instance.findAllByType(FooterInfo);
|
|
@@ -210,7 +210,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
210
210
|
};
|
|
211
211
|
|
|
212
212
|
await act(async () => {
|
|
213
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
213
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
214
214
|
});
|
|
215
215
|
const instance = tree.root;
|
|
216
216
|
const flatListItems = instance.findAllByType(Anemometer);
|
|
@@ -234,7 +234,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
234
234
|
};
|
|
235
235
|
|
|
236
236
|
await act(async () => {
|
|
237
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
237
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
238
238
|
});
|
|
239
239
|
const instance = tree.root;
|
|
240
240
|
const flatListItems = instance.findAllByType(ProgressBar);
|
|
@@ -258,7 +258,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
258
258
|
};
|
|
259
259
|
|
|
260
260
|
await act(async () => {
|
|
261
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
261
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
262
262
|
});
|
|
263
263
|
const instance = tree.root;
|
|
264
264
|
const flatListItems = instance.findAllByType(Compass);
|
|
@@ -282,7 +282,7 @@ describe('Test SensorDisplayItem', () => {
|
|
|
282
282
|
};
|
|
283
283
|
|
|
284
284
|
await act(async () => {
|
|
285
|
-
tree = renderer.create(wrapComponent({ item, sensor }));
|
|
285
|
+
tree = await renderer.create(wrapComponent({ item, sensor }));
|
|
286
286
|
});
|
|
287
287
|
const instance = tree.root;
|
|
288
288
|
const flatListItems = instance.findAllByType(DeviceAlertStatus);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react';
|
|
1
|
+
import React, { memo, useEffect, useState } from 'react';
|
|
2
2
|
import { styles } from './ChartWrapperStyles';
|
|
3
3
|
import { View } from 'react-native';
|
|
4
4
|
import DateTimeRangeChange from '../../../commons/DateTimeRangeChange';
|
|
5
5
|
import moment from 'moment';
|
|
6
6
|
|
|
7
|
-
const ChartWrapper = ({ children, onChangeDate, showTime }) => {
|
|
7
|
+
const ChartWrapper = memo(({ children, onChangeDate, showTime }) => {
|
|
8
8
|
const [value, setValue] = useState([moment().subtract(6, 'days'), moment()]);
|
|
9
9
|
|
|
10
10
|
useEffect(() => {
|
|
@@ -34,6 +34,6 @@ const ChartWrapper = ({ children, onChangeDate, showTime }) => {
|
|
|
34
34
|
{children}
|
|
35
35
|
</View>
|
|
36
36
|
);
|
|
37
|
-
};
|
|
37
|
+
});
|
|
38
38
|
|
|
39
39
|
export default ChartWrapper;
|
|
@@ -32,7 +32,7 @@ export const convertLineChartData = (data = [], valueType = 'raw', groupBy) => {
|
|
|
32
32
|
arr.push([moment(data[i].x), data[i].y]);
|
|
33
33
|
}
|
|
34
34
|
if (valueType === 'raw') {
|
|
35
|
-
return arr;
|
|
35
|
+
return arr.map((i) => [i[0].valueOf(), i[1]]);
|
|
36
36
|
}
|
|
37
37
|
if (groupBy) {
|
|
38
38
|
arr = _.groupBy(arr, groupByFunc[groupBy]);
|
|
@@ -203,7 +203,7 @@ describe('Test LinearChartWidget', () => {
|
|
|
203
203
|
assertChartData(chart.props.options.series[0].data, [['1970-01', 200]]);
|
|
204
204
|
});
|
|
205
205
|
|
|
206
|
-
it('Test render aggregation sum', async () => {
|
|
206
|
+
it('Test render aggregation sum by day', async () => {
|
|
207
207
|
mockAxios.onGet(API.CONFIG.DISPLAY_HISTORY_V3()).reply(200, {
|
|
208
208
|
configs: [
|
|
209
209
|
{
|
|
@@ -93,3 +93,11 @@ export const useEvaluateValue = () => {
|
|
|
93
93
|
|
|
94
94
|
return evaluateValue;
|
|
95
95
|
};
|
|
96
|
+
|
|
97
|
+
export const useGetEvaluateValue = (configId) => {
|
|
98
|
+
const valueEvaluations = useSCContextSelector((state) => {
|
|
99
|
+
return state.valueEvaluations;
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
return valueEvaluations[configId];
|
|
103
|
+
};
|
|
@@ -6,11 +6,19 @@ import DeviceInfo from '../';
|
|
|
6
6
|
import { View } from 'react-native';
|
|
7
7
|
import { SCProvider } from '../../../context';
|
|
8
8
|
import { mockSCStore } from '../../../context/mockStore';
|
|
9
|
+
import { useRoute } from '@react-navigation/native';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const wrapComponent = () => (
|
|
12
|
+
<SCProvider initState={mockSCStore({})}>
|
|
13
|
+
<DeviceInfo />
|
|
14
|
+
</SCProvider>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
describe('Test DeviceInfo', () => {
|
|
18
|
+
let tree;
|
|
19
|
+
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
useRoute.mockReturnValue({
|
|
14
22
|
params: {
|
|
15
23
|
deviceInfo: [
|
|
16
24
|
{
|
|
@@ -29,30 +37,20 @@ jest.mock('@react-navigation/core', () => {
|
|
|
29
37
|
},
|
|
30
38
|
],
|
|
31
39
|
},
|
|
32
|
-
})
|
|
33
|
-
};
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const wrapComponent = () => (
|
|
37
|
-
<SCProvider initState={mockSCStore({})}>
|
|
38
|
-
<DeviceInfo />
|
|
39
|
-
</SCProvider>
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
describe('Test DeviceInfo', () => {
|
|
43
|
-
let tree;
|
|
40
|
+
});
|
|
41
|
+
});
|
|
44
42
|
|
|
45
43
|
it('render DeviceInfo', async () => {
|
|
46
44
|
await act(async () => {
|
|
47
45
|
tree = await create(wrapComponent());
|
|
48
46
|
});
|
|
49
47
|
const instance = tree.root;
|
|
50
|
-
const
|
|
48
|
+
const battery = instance.findAll(
|
|
51
49
|
(el) =>
|
|
52
50
|
el.props.accessibilityLabel ===
|
|
53
51
|
AccessibilityLabel.DEVICE_INFO_BATTERY && el.type === View
|
|
54
52
|
);
|
|
55
|
-
expect(
|
|
53
|
+
expect(battery.length).toEqual(1);
|
|
56
54
|
|
|
57
55
|
const rssiNode = instance.findAll(
|
|
58
56
|
(el) =>
|
|
@@ -13,15 +13,15 @@ const DeviceInfo = () => {
|
|
|
13
13
|
const { deviceInfo } = params;
|
|
14
14
|
const configuration = deviceInfo[0] ? deviceInfo[0].configuration : {};
|
|
15
15
|
|
|
16
|
-
const renderRow = (accessibilityLabel, textLeft, textRight) => {
|
|
16
|
+
const renderRow = (accessibilityLabel, textLeft, textRight, index) => {
|
|
17
17
|
return (
|
|
18
|
-
|
|
18
|
+
<React.Fragment key={index}>
|
|
19
19
|
<View style={styles.row} accessibilityLabel={accessibilityLabel}>
|
|
20
20
|
<Text style={styles.textLeft}>{t(textLeft)}</Text>
|
|
21
21
|
<Text style={styles.textRight}>{textRight}</Text>
|
|
22
22
|
</View>
|
|
23
23
|
<View style={styles.separator} />
|
|
24
|
-
|
|
24
|
+
</React.Fragment>
|
|
25
25
|
);
|
|
26
26
|
};
|
|
27
27
|
|
|
@@ -44,11 +44,12 @@ const DeviceInfo = () => {
|
|
|
44
44
|
)}
|
|
45
45
|
|
|
46
46
|
{configuration.chip_info &&
|
|
47
|
-
Object.entries(configuration.chip_info).map((item) => {
|
|
47
|
+
Object.entries(configuration.chip_info).map((item, index) => {
|
|
48
48
|
return renderRow(
|
|
49
49
|
AccessibilityLabel.DEVICE_INFO_CHIP_INFO,
|
|
50
50
|
item[0],
|
|
51
|
-
item[1]
|
|
51
|
+
item[1],
|
|
52
|
+
index
|
|
52
53
|
);
|
|
53
54
|
})}
|
|
54
55
|
</View>
|