@eohjsc/react-native-smart-city 0.2.20 → 0.2.26

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.
Files changed (340) hide show
  1. package/README.md +1 -1
  2. package/assets/images/Add.svg +5 -0
  3. package/assets/images/AddLocationMaps/Point.svg +3 -0
  4. package/assets/images/CheckCircle.svg +4 -0
  5. package/assets/images/Close.svg +3 -0
  6. package/assets/images/HowToStart.svg +14 -0
  7. package/assets/images/OneTap.svg +14 -0
  8. package/assets/images/OneTap@1x.svg +14 -0
  9. package/assets/images/Rearrange.svg +3 -0
  10. package/assets/images/Schedule.svg +39 -0
  11. package/assets/images/WeatherChange.svg +49 -0
  12. package/package.json +12 -2
  13. package/src/Images/Common/ActiveButton.png +0 -0
  14. package/src/Images/Common/ActiveButton@2x.png +0 -0
  15. package/src/Images/Common/ActiveButton@3x.png +0 -0
  16. package/src/Images/Common/arrow-back.png +0 -0
  17. package/src/Images/Common/checked@2x.png +0 -0
  18. package/src/Images/Common/checked@3x.png +0 -0
  19. package/src/Images/Common/file.png +0 -0
  20. package/src/Images/Common/fullscreen.png +0 -0
  21. package/src/Images/Common/refresh.png +0 -0
  22. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +1 -1
  23. package/src/commons/ActionGroup/OnOffTemplate/index.js +4 -4
  24. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +7 -4
  25. package/src/commons/ActionGroup/StatesGridActionTemplate.js +12 -3
  26. package/src/commons/ActionGroup/ThreeButtonTemplate.js +13 -6
  27. package/src/commons/ActionGroup/ThreeButtonTemplateStyle.js +1 -1
  28. package/src/commons/ActionGroup/TimerActionTemplate.js +158 -33
  29. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +8 -13
  30. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +3 -3
  31. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +26 -45
  32. package/src/commons/ActionGroup/__test__/ThreeButtonTemplate.test.js +11 -5
  33. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +14 -8
  34. package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +17 -23
  35. package/src/commons/ActionGroup/__test__/__snapshots__/ThreeButtonTemplate.test.js.snap +241 -223
  36. package/src/commons/ActionGroup/__test__/index.test.js +39 -107
  37. package/src/commons/ActionGroup/hooks/useDropdownAction.js +2 -1
  38. package/src/commons/ActionTemplate/ActionTemplateStyles.js +14 -0
  39. package/src/commons/ActionTemplate/OnOffButtonAction.js +40 -0
  40. package/src/commons/ActionTemplate/OnOffButtonActionStyles.js +11 -0
  41. package/src/commons/ActionTemplate/OneButtonAction.js +26 -0
  42. package/src/commons/ActionTemplate/OneButtonActionStyles.js +11 -0
  43. package/src/commons/ActionTemplate/ThreeButtonAction.js +55 -0
  44. package/src/commons/ActionTemplate/ThreeButtonActionStyles.js +11 -0
  45. package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +34 -0
  46. package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +33 -0
  47. package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +35 -0
  48. package/src/commons/ActionTemplate/__test__/index.test.js +71 -0
  49. package/src/commons/ActionTemplate/index.js +69 -0
  50. package/src/commons/Automate/ItemAddNewScriptAction.js +30 -0
  51. package/src/commons/Automate/ItemAddNewScriptActionStyles.js +38 -0
  52. package/src/commons/Automate/ItemAutomate.js +33 -0
  53. package/src/commons/Automate/ItemAutomateStyles.js +33 -0
  54. package/src/commons/Automate/ItemScriptAction.js +45 -0
  55. package/src/commons/Automate/ItemScriptActionStyles.js +42 -0
  56. package/src/commons/BottomScrollPicker/index.js +58 -0
  57. package/src/commons/BottomScrollPicker/styles.js +13 -0
  58. package/src/commons/BottomSheet/index.js +36 -0
  59. package/src/commons/BottomSheet/styles.js +37 -0
  60. package/src/commons/Button/index.js +6 -1
  61. package/src/commons/CameraDevice/index.js +2 -1
  62. package/src/commons/ChartLoading/__test__/ChartLoading.test.js +9 -7
  63. package/src/commons/ChartLoading/index.js +2 -1
  64. package/src/commons/DateTimeRangeChange/index.js +2 -1
  65. package/src/commons/Device/ConnectedViewHeader.js +3 -1
  66. package/src/commons/Device/DeviceAlertStatus.js +5 -2
  67. package/src/commons/Device/DisconnectedView.js +34 -26
  68. package/src/commons/Device/Emergency/EmergencyButton.js +2 -1
  69. package/src/commons/Device/Emergency/EmergencyDetail.js +2 -1
  70. package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +14 -6
  71. package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +10 -2
  72. package/src/commons/Device/FlatListItems.js +3 -2
  73. package/src/commons/Device/FooterInfo.js +2 -1
  74. package/src/commons/Device/HistoryChart.js +2 -1
  75. package/src/commons/Device/ItemAddNew/index.js +6 -1
  76. package/src/commons/Device/SensorConnectedStatus.js +2 -1
  77. package/src/commons/Device/WindDirection/Compass/Compass.test.js +19 -11
  78. package/src/commons/Device/WindDirection/Compass/index.js +1 -1
  79. package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +9 -3
  80. package/src/commons/Device/WindSpeed/LinearChart/__test__/__snapshots__/LinearChart.test.js.snap +0 -81
  81. package/src/commons/Device/WindSpeed/LinearChart/index.js +2 -1
  82. package/src/commons/Device/__test__/ConnectedViewHeader.test.js +16 -8
  83. package/src/commons/Device/__test__/DeviceAlertStatus.test.js +13 -5
  84. package/src/commons/Device/__test__/DisconnectedView.test.js +13 -5
  85. package/src/commons/Device/__test__/FlatListItems.test.js +9 -1
  86. package/src/commons/Device/__test__/FooterInfo.test.js +13 -4
  87. package/src/commons/Device/__test__/SensorConnectedStatus.test.js +9 -1
  88. package/src/commons/Device/__test__/__snapshots__/DisconnectedView.test.js.snap +20 -20
  89. package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +28 -0
  90. package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -1
  91. package/src/commons/EmergencyButton/AlertSent.js +3 -2
  92. package/src/commons/Explore/CityItem/index.js +2 -1
  93. package/src/commons/Explore/HeaderExplore/index.js +2 -1
  94. package/src/commons/Explore/HeaderLabel/index.js +2 -1
  95. package/src/commons/Explore/SearchBox/__test__/SearchBox.test.js +9 -2
  96. package/src/commons/Explore/SearchBox/index.js +2 -1
  97. package/src/commons/Explore/__test__/CityItem.test.js +13 -15
  98. package/src/commons/Explore/__test__/HeaderLabel.test.js +15 -9
  99. package/src/commons/Header/HeaderCustom.js +17 -1
  100. package/src/commons/Header/Styles/HeaderCustomStyles.js +2 -2
  101. package/src/commons/Header/__test__/HeaderCT.test.js +12 -4
  102. package/src/commons/HeaderAni/index.js +6 -3
  103. package/src/commons/IconComponent/index.js +18 -3
  104. package/src/commons/ImagePicker/__test__/ImagePicker.test.js +19 -13
  105. package/src/commons/ImagePicker/index.js +3 -1
  106. package/src/commons/MediaPlayer/index.js +2 -1
  107. package/src/commons/MediaPlayerDetail/__test__/MediaPlayerDetail.test.js +14 -8
  108. package/src/commons/MediaPlayerDetail/index.js +4 -1
  109. package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +11 -20
  110. package/src/commons/MenuActionAddnew/index.js +2 -1
  111. package/src/commons/Modal/ModalBottom.js +51 -0
  112. package/src/commons/Modal/ModalFullVideo.js +2 -1
  113. package/src/commons/Modal/Styles/ModalBottomStyles.js +35 -0
  114. package/src/commons/Modal/index.js +2 -1
  115. package/src/commons/NavBar/index.js +2 -2
  116. package/src/commons/SelectActionCard/SelectActionStyles.js +16 -0
  117. package/src/commons/SelectActionCard/index.js +30 -0
  118. package/src/commons/Sharing/DevicePermissionsCheckbox.js +2 -1
  119. package/src/commons/Sharing/MemberList.js +3 -1
  120. package/src/commons/Sharing/RowMember.js +3 -2
  121. package/src/commons/Sharing/StationDevicePermissions.js +2 -1
  122. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +15 -9
  123. package/src/commons/Sharing/__test__/MemberList.test.js +17 -25
  124. package/src/commons/Sharing/__test__/StationDevicePermission.test.js +17 -12
  125. package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +0 -9
  126. package/src/commons/SubUnit/OneTap/ItemOneTap.js +97 -0
  127. package/src/commons/SubUnit/OneTap/ItemOneTapStyles.js +41 -0
  128. package/src/commons/SubUnit/OneTap/OneTapStyles.js +36 -0
  129. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +149 -0
  130. package/src/commons/SubUnit/OneTap/index.js +39 -0
  131. package/src/commons/SubUnit/ShortDetail.js +11 -6
  132. package/src/commons/SubUnit/__test__/ShortDetail.test.js +14 -6
  133. package/src/commons/Today/__test__/Today.test.js +9 -1
  134. package/src/commons/Today/__test__/__snapshots__/Today.test.js.snap +1 -1
  135. package/src/commons/Today/index.js +2 -1
  136. package/src/commons/Unit/SharedUnit.js +2 -1
  137. package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +1 -2
  138. package/src/commons/UnitSummary/AirQuality/__test__/index.test.js +16 -17
  139. package/src/commons/UnitSummary/AirQuality/index.js +5 -120
  140. package/src/commons/UnitSummary/AirQuality/styles.js +112 -0
  141. package/src/commons/UnitSummary/TotalPowerConsumption/index.js +2 -1
  142. package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +15 -9
  143. package/src/commons/WheelDateTimePicker/Picker.js +57 -0
  144. package/src/commons/WheelDateTimePicker/index.js +160 -0
  145. package/src/commons/WheelDateTimePicker/styles.js +21 -0
  146. package/src/configs/API.js +25 -0
  147. package/src/configs/Colors.js +1 -0
  148. package/src/configs/Constants.js +46 -0
  149. package/src/configs/Images.js +1 -0
  150. package/src/configs/SCConfig.js +7 -0
  151. package/src/context/SCContext.tsx +7 -37
  152. package/src/context/actionType.ts +11 -0
  153. package/src/context/mockStore.ts +49 -0
  154. package/src/context/reducer.ts +23 -0
  155. package/src/hooks/Common/__test__/useTranslations.test.js +23 -0
  156. package/src/hooks/Common/index.js +2 -0
  157. package/src/hooks/Common/useGetIdUser.js +9 -0
  158. package/src/hooks/Common/useTranslations.ts +34 -0
  159. package/src/iot/Monitor.js +2 -1
  160. package/src/iot/RemoteControl/Bluetooth.js +2 -6
  161. package/src/iot/RemoteControl/GoogleHome.js +1 -1
  162. package/src/iot/RemoteControl/Internet.js +1 -1
  163. package/src/iot/RemoteControl/LG.js +57 -15
  164. package/src/iot/RemoteControl/__test__/Bluetooth.test.js +3 -5
  165. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +3 -3
  166. package/src/iot/RemoteControl/__test__/Internet.test.js +1 -8
  167. package/src/iot/RemoteControl/__test__/LgThinq.test.js +7 -10
  168. package/src/iot/RemoteControl/index.js +1 -1
  169. package/src/iot/states.js +1 -0
  170. package/src/navigations/SharedStack.js +2 -1
  171. package/src/navigations/UnitStack.js +62 -1
  172. package/src/screens/AQIGuide/__test__/AQIGuide.test.js +9 -1
  173. package/src/screens/AQIGuide/index.js +2 -2
  174. package/src/screens/ActivityLog/__test__/index.test.js +14 -39
  175. package/src/screens/ActivityLog/index.js +2 -1
  176. package/src/screens/AddCommon/SelectSubUnit.js +5 -4
  177. package/src/screens/AddCommon/SelectUnit.js +3 -2
  178. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +61 -0
  179. package/src/screens/AddCommon/__test__/SelectUnit.test.js +18 -10
  180. package/src/screens/AddLocationMaps/index.js +2 -1
  181. package/src/screens/AddNewAction/Device/DeviceStyles.js +43 -0
  182. package/src/screens/AddNewAction/Device/__test__/index.test.js +42 -0
  183. package/src/screens/AddNewAction/Device/index.js +33 -0
  184. package/src/screens/AddNewAction/SelectAction.js +152 -0
  185. package/src/screens/AddNewAction/SelectDevice.js +120 -0
  186. package/src/screens/AddNewAction/Styles/SelectActionStyles.js +24 -0
  187. package/src/screens/AddNewAction/Styles/SelectDeviceStyles.js +36 -0
  188. package/src/screens/AddNewAction/__test__/SelectAction.test.js +172 -0
  189. package/src/screens/AddNewAction/__test__/SelectDevice.test.js +191 -0
  190. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +55 -0
  191. package/src/screens/AddNewAutoSmart/index.js +85 -0
  192. package/src/screens/AddNewAutoSmart/styles/AddNewAutoSmartStyles.js +36 -0
  193. package/src/screens/AddNewDevice/ConnectDevices.js +2 -1
  194. package/src/screens/AddNewDevice/ConnectingDevices.js +2 -1
  195. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +29 -13
  196. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +19 -7
  197. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +16 -6
  198. package/src/screens/AddNewDevice/hooks/useStateAlertRename.js +2 -1
  199. package/src/screens/AddNewDevice/index.js +2 -1
  200. package/src/screens/AddNewGateway/ConnectedGateway.js +2 -1
  201. package/src/screens/AddNewGateway/ConnectingGateway.js +99 -24
  202. package/src/screens/AddNewGateway/ConnectingGatewayStyles.js +92 -0
  203. package/src/screens/AddNewGateway/SetupGatewayWifi.js +3 -2
  204. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +35 -72
  205. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +14 -4
  206. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +20 -10
  207. package/src/screens/AddNewGateway/hooks/useStateAlertRename.js +2 -1
  208. package/src/screens/AddNewGateway/index.js +2 -1
  209. package/src/screens/AddNewOneTap/AddNewOneTapStyles.js +43 -0
  210. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +129 -0
  211. package/src/screens/AddNewOneTap/index.js +80 -0
  212. package/src/screens/AddNewScriptAction/AddNewScriptActionStyles.js +28 -0
  213. package/src/screens/AddNewScriptAction/index.js +100 -0
  214. package/src/screens/AllCamera/index.js +2 -1
  215. package/src/screens/Device/HeaderDevice/styles.js +2 -2
  216. package/src/screens/Device/__test__/detail.test.js +26 -18
  217. package/src/screens/Device/detail.js +56 -28
  218. package/src/screens/Device/hooks/useCountUp.js +4 -0
  219. package/src/screens/Device/hooks/useEmergencyButton.js +3 -2
  220. package/src/screens/Device/styles.js +5 -1
  221. package/src/screens/DeviceInfo/__test__/index.test.js +12 -3
  222. package/src/screens/DeviceInfo/index.js +2 -1
  223. package/src/screens/EditActionsList/Styles/indexStyles.js +84 -0
  224. package/src/screens/EditActionsList/index.js +186 -0
  225. package/src/screens/EmergencyContacts/EmergencyContactsAddNew.js +3 -2
  226. package/src/screens/EmergencyContacts/EmergencyContactsList.js +9 -2
  227. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +2 -1
  228. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +15 -18
  229. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +19 -23
  230. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +10 -25
  231. package/src/screens/EmergencyContacts/hook.js +3 -2
  232. package/src/screens/Explore/index.js +3 -2
  233. package/src/screens/GuestInfo/components/AccessScheduleItem.js +27 -0
  234. package/src/screens/GuestInfo/components/AccessScheduleSheet.js +193 -0
  235. package/src/screens/GuestInfo/components/HeaderGuestInfo.js +31 -0
  236. package/src/screens/GuestInfo/components/RecurringDetail.js +99 -0
  237. package/src/screens/GuestInfo/components/RowGuestInfo.js +31 -0
  238. package/src/screens/GuestInfo/components/TemporaryDetail.js +46 -0
  239. package/src/screens/GuestInfo/constant.js +59 -0
  240. package/src/screens/GuestInfo/index.js +151 -0
  241. package/src/screens/GuestInfo/styles/AccessScheduleDetailStyles.js +31 -0
  242. package/src/screens/GuestInfo/styles/AccessScheduleItemStyles.js +22 -0
  243. package/src/screens/GuestInfo/styles/HeaderGuestInfoStyles.js +31 -0
  244. package/src/screens/GuestInfo/styles/indexStyles.js +38 -0
  245. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +13 -1
  246. package/src/screens/ManageAccess/hooks/index.js +4 -0
  247. package/src/screens/ManageAccess/index.js +49 -20
  248. package/src/screens/ManageAccess/styles/ManageAccessStyles.js +3 -0
  249. package/src/screens/PlayBackCamera/index.js +9 -5
  250. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +2 -11
  251. package/src/screens/ScanChipQR/components/QRScan/index.js +2 -1
  252. package/src/screens/ScriptDetail/Styles/indexStyles.js +143 -0
  253. package/src/screens/ScriptDetail/index.js +243 -0
  254. package/src/screens/SharedUnit/TabHeader.js +2 -1
  255. package/src/screens/SharedUnit/__test__/TabHeader.test.js +40 -0
  256. package/src/screens/SharedUnit/index.js +3 -2
  257. package/src/screens/Sharing/MemberList.js +2 -1
  258. package/src/screens/Sharing/SelectPermission.js +2 -1
  259. package/src/screens/Sharing/SelectUser.js +3 -2
  260. package/src/screens/Sharing/__test__/MemberList.test.js +17 -13
  261. package/src/screens/Sharing/__test__/SelectPermission.test.js +16 -8
  262. package/src/screens/Sharing/__test__/SelectUser.test.js +33 -15
  263. package/src/screens/Sharing/hooks/index.js +22 -17
  264. package/src/screens/SubUnit/AddSubUnit.js +3 -2
  265. package/src/screens/SubUnit/Detail.js +5 -4
  266. package/src/screens/SubUnit/ManageSubUnit.js +10 -9
  267. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +17 -11
  268. package/src/screens/SubUnit/__test__/Detail.test.js +11 -31
  269. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +42 -31
  270. package/src/screens/SyncLGDevice/AddLGDevice.js +3 -2
  271. package/src/screens/TDSGuide/__test__/TDSGuide.test.js +9 -1
  272. package/src/screens/TDSGuide/index.js +2 -1
  273. package/src/screens/UVIndexGuide/__test__/UVIndexGuide.test.js +9 -1
  274. package/src/screens/UVIndexGuide/index.js +2 -1
  275. package/src/screens/Unit/AddMenu.js +3 -2
  276. package/src/screens/Unit/Detail.js +65 -20
  277. package/src/screens/Unit/ManageUnit/index.js +4 -3
  278. package/src/screens/Unit/ManageUnit.js +5 -4
  279. package/src/screens/Unit/MoreMenu.js +3 -2
  280. package/src/screens/Unit/SelectLocation.js +8 -2
  281. package/src/screens/Unit/SelectLocationStyles.js +11 -0
  282. package/src/screens/Unit/__test__/AddMenu.test.js +15 -15
  283. package/src/screens/Unit/__test__/CheckSendEmail.test.js +19 -10
  284. package/src/screens/Unit/__test__/Detail.test.js +92 -33
  285. package/src/screens/Unit/__test__/ManageUnit.test.js +16 -23
  286. package/src/screens/Unit/components/Header/index.js +2 -1
  287. package/src/screens/Unit/components/ListMyAllUnit/index.js +2 -1
  288. package/src/screens/Unit/components/MyUnit/index.js +2 -1
  289. package/src/screens/Unit/components/SearchLocation/index.js +2 -1
  290. package/src/screens/Unit/components/SharedUnit/index.js +2 -1
  291. package/src/screens/Unit/components/__test__/SharedUnit.test.js +11 -2
  292. package/src/screens/UnitSummary/__test__/index.test.js +12 -4
  293. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +13 -3
  294. package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +2 -1
  295. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -12
  296. package/src/screens/UnitSummary/components/PowerConsumption/index.js +2 -1
  297. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -2
  298. package/src/screens/UnitSummary/components/Temperature/index.js +2 -1
  299. package/src/screens/UnitSummary/components/TotalPowerConsumption/index.js +2 -1
  300. package/src/screens/UnitSummary/components/UvIndex/__test__/__snapshots__/index.test.js.snap +37 -37
  301. package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +14 -6
  302. package/src/screens/UnitSummary/components/UvIndex/index.js +2 -1
  303. package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +11 -5
  304. package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -1
  305. package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +13 -7
  306. package/src/screens/UnitSummary/index.js +2 -1
  307. package/src/screens/WaterQualityGuide/__test__/index.test.js +12 -12
  308. package/src/screens/WaterQualityGuide/index.js +2 -1
  309. package/src/utils/Converter/array.js +4 -0
  310. package/src/utils/Converter/time.js +29 -4
  311. package/src/utils/I18n/index.ts +6 -0
  312. package/src/utils/I18n/translations/en.json +48 -2
  313. package/src/utils/I18n/translations/vi.json +45 -1
  314. package/src/utils/I18n/translations.ts +45 -0
  315. package/src/utils/Route/index.js +8 -0
  316. package/src/commons/ChartLoading/__test__/__snapshots__/ChartLoading.test.js.snap +0 -66
  317. package/src/commons/Device/HistoryChart/__test__/HistoryChart.test.js +0 -57
  318. package/src/commons/Device/HistoryChart/__test__/__snapshots__/HistoryChart.test.js.snap +0 -593
  319. package/src/commons/Explore/SearchBox/__test__/__snapshots__/SearchBox.test.js.snap +0 -59
  320. package/src/commons/Explore/__test__/HeaderExplore.test.js +0 -21
  321. package/src/commons/Header/__test__/Header.test.js +0 -24
  322. package/src/commons/MenuActionAddnew/__test__/__snapshots__/MenuActionAddNew.test.js.snap +0 -788
  323. package/src/commons/Sharing/__test__/__snapshots__/WrapHeaderScrollable.test.js.snap +0 -174
  324. package/src/commons/UnitSummary/AirQuality/__test__/__snapshots__/index.test.js.snap +0 -26679
  325. package/src/iot/RemoteControl/__test__/index.test.js +0 -101
  326. package/src/iot/__test__/Monitor.test.js +0 -119
  327. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactAddNew.test.js.snap +0 -1706
  328. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactList.test.js.snap +0 -4276
  329. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactsSelectContacts.test.js.snap +0 -2240
  330. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +0 -358
  331. package/src/screens/Unit/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  332. package/src/screens/Unit/MyAllUnit/__test__/index.test.js +0 -48
  333. package/src/screens/Unit/components/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  334. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -48
  335. package/src/screens/Unit/components/__test__/MyUnit.test.js +0 -85
  336. package/src/screens/UnitSummary/components/WaterQuality/__test__/__snapshots__/index.test.js.snap +0 -1574
  337. package/src/screens/WaterQualityGuide/__test__/__snapshots__/index.test.js.snap +0 -3375
  338. package/src/utils/Converter/__test__/time.test.js +0 -126
  339. package/src/utils/I18n/index.js +0 -19
  340. package/src/utils/I18n/index.test.js +0 -7
@@ -1,12 +1,13 @@
1
1
  import React, { memo, useMemo } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../../../hooks/Common/useTranslations';
4
4
  import { Today, Section } from '../../../../commons';
5
5
  import Text from '../../../../commons/Text';
6
6
  import ConfigHistoryChart from '../../../../commons/UnitSummary/ConfigHistoryChart';
7
7
  import Item from './Item';
8
8
 
9
9
  const WaterQuality = memo(({ summaryDetail }) => {
10
+ const t = useTranslations();
10
11
  const { ph_id, tur_id, clo_id } = summaryDetail;
11
12
  const showBoxHistory = useMemo(() => {
12
13
  return ph_id || tur_id || clo_id ? true : false;
@@ -1,20 +1,26 @@
1
1
  import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
3
  import { TESTID } from '../../../../configs/Constants';
4
+ import { SCProvider } from '../../../../context';
5
+ import { mockSCStore } from '../../../../context/mockStore';
4
6
  import TotalPowerConsumption from '../TotalPowerConsumption/index';
5
7
 
8
+ const wrapComponent = () => (
9
+ <SCProvider initState={mockSCStore({})}>
10
+ <TotalPowerConsumption
11
+ total={{
12
+ value: 10,
13
+ }}
14
+ />
15
+ </SCProvider>
16
+ );
17
+
6
18
  describe('Test Total Power Consumption', () => {
7
19
  let tree;
8
20
 
9
21
  test('render Total Power Consumption', () => {
10
22
  act(() => {
11
- tree = renderer.create(
12
- <TotalPowerConsumption
13
- total={{
14
- value: 10,
15
- }}
16
- />
17
- );
23
+ tree = renderer.create(wrapComponent());
18
24
  });
19
25
  const instance = tree.root;
20
26
  const item = instance.find(
@@ -3,7 +3,7 @@ import { View, StyleSheet } from 'react-native';
3
3
  import { useNavigation } from '@react-navigation/native';
4
4
  import { TouchableOpacity } from 'react-native';
5
5
  import { IconOutline } from '@ant-design/icons-react-native';
6
- import { t } from 'i18n-js';
6
+ import { useTranslations } from '../../hooks/Common/useTranslations';
7
7
 
8
8
  import { API, Colors } from '../../configs';
9
9
  import Routes from '../../utils/Route';
@@ -20,6 +20,7 @@ import WaterQuality from './components/WaterQuality';
20
20
  import { TESTID } from '../../configs/Constants';
21
21
 
22
22
  const UnitSummary = memo(({ route }) => {
23
+ const t = useTranslations();
23
24
  const { unit, summary } = route.params;
24
25
  const [summaryDetail, setSummaryDetail] = useState({});
25
26
 
@@ -5,6 +5,8 @@ import WaterQualityGuide from '../index';
5
5
  import { create, act } from 'react-test-renderer';
6
6
  import { TESTID } from '../../../configs/Constants';
7
7
  import Text from '../../../commons/Text';
8
+ import { SCProvider } from '../../../context';
9
+ import { mockSCStore } from '../../../context/mockStore';
8
10
 
9
11
  jest.mock('react-redux', () => ({
10
12
  ...jest.requireActual('react-redux'),
@@ -16,6 +18,12 @@ jest.mock('react', () => ({
16
18
  useLayoutEffect: jest.fn(),
17
19
  }));
18
20
 
21
+ const wrapComponent = (route) => (
22
+ <SCProvider initState={mockSCStore({})}>
23
+ <WaterQualityGuide route={route} />
24
+ </SCProvider>
25
+ );
26
+
19
27
  describe('Test WaterQualityGuide', () => {
20
28
  let route;
21
29
 
@@ -91,7 +99,7 @@ describe('Test WaterQualityGuide', () => {
91
99
 
92
100
  test('render WaterQualityGuide default turbidityGuide', async () => {
93
101
  act(() => {
94
- tree = create(<WaterQualityGuide route={route} />);
102
+ tree = create(wrapComponent(route));
95
103
  });
96
104
  const instance = tree.root;
97
105
 
@@ -115,14 +123,12 @@ describe('Test WaterQualityGuide', () => {
115
123
  expect(textDescription1).toHaveLength(0);
116
124
  expect(textTitleLevel1).toHaveLength(0);
117
125
  expect(textDescriptionLevel1).toHaveLength(0);
118
-
119
- expect(tree.toJSON()).toMatchSnapshot();
120
126
  });
121
127
 
122
128
  test('render WaterQualityGuide with turbidityGuide', async () => {
123
129
  route.params.waterType = 'turbidity';
124
130
  act(() => {
125
- tree = create(<WaterQualityGuide route={route} />);
131
+ tree = create(wrapComponent(route));
126
132
  });
127
133
  const instance = tree.root;
128
134
 
@@ -146,14 +152,12 @@ describe('Test WaterQualityGuide', () => {
146
152
  expect(textDescription1).toHaveLength(0);
147
153
  expect(textTitleLevel1).toHaveLength(0);
148
154
  expect(textDescriptionLevel1).toHaveLength(0);
149
-
150
- expect(tree.toJSON()).toMatchSnapshot();
151
155
  });
152
156
 
153
157
  test('render WaterQualityGuide with cloGuide', async () => {
154
158
  route.params.waterType = 'clo';
155
159
  act(() => {
156
- tree = create(<WaterQualityGuide route={route} />);
160
+ tree = create(wrapComponent(route));
157
161
  });
158
162
  const instance = tree.root;
159
163
 
@@ -177,14 +181,12 @@ describe('Test WaterQualityGuide', () => {
177
181
  expect(textDescription1).toHaveLength(0);
178
182
  expect(textTitleLevel1).toHaveLength(0);
179
183
  expect(textDescriptionLevel1).toHaveLength(0);
180
-
181
- expect(tree.toJSON()).toMatchSnapshot();
182
184
  });
183
185
 
184
186
  test('render WaterQualityGuide with phGuide', async () => {
185
187
  route.params.waterType = 'ph';
186
188
  act(() => {
187
- tree = create(<WaterQualityGuide route={route} />);
189
+ tree = create(wrapComponent(route));
188
190
  });
189
191
  const instance = tree.root;
190
192
 
@@ -208,7 +210,5 @@ describe('Test WaterQualityGuide', () => {
208
210
  expect(textDescription1).toHaveLength(1);
209
211
  expect(textTitleLevel1).toHaveLength(14);
210
212
  expect(textDescriptionLevel1).toHaveLength(14);
211
-
212
- expect(tree.toJSON()).toMatchSnapshot();
213
213
  });
214
214
  });
@@ -1,6 +1,6 @@
1
1
  import React, { memo, useCallback, useMemo } from 'react';
2
2
  import { View, ScrollView, StyleSheet, SafeAreaView } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
4
 
5
5
  import Text from '../../commons/Text';
6
6
  import { Colors, Theme } from '../../configs';
@@ -9,6 +9,7 @@ import { TESTID } from '../../configs/Constants';
9
9
  import { useSCContextSelector } from '../../context';
10
10
 
11
11
  const WaterQualityGuide = memo(({ route }) => {
12
+ const t = useTranslations();
12
13
  const { waterType } = route.params;
13
14
  const language = useSCContextSelector((state) => state.language);
14
15
 
@@ -5,3 +5,7 @@ export const removeDuplicateSearch = (recentSearch, description) => {
5
5
  }
6
6
  });
7
7
  };
8
+
9
+ // Sequence generator function
10
+ export const range = (start, stop, step) =>
11
+ Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);
@@ -1,4 +1,4 @@
1
- import { t } from 'i18n-js';
1
+ import t from '../../hooks/Common/useTranslations';
2
2
  import moment from 'moment';
3
3
 
4
4
  export const transformDatetime = (data = {}, listFieldName = []) => {
@@ -19,7 +19,7 @@ export const transformDatetime = (data = {}, listFieldName = []) => {
19
19
  });
20
20
  };
21
21
 
22
- export const timeDifference = (current, previous) => {
22
+ export const timeDifference = (current, previous, symbol = false) => {
23
23
  let msPerMinute = 60 * 1000;
24
24
  let msPerHour = msPerMinute * 60;
25
25
  let msPerDay = msPerHour * 24;
@@ -33,9 +33,11 @@ export const timeDifference = (current, previous) => {
33
33
  if (second < 0) {
34
34
  second = 0;
35
35
  }
36
- return `${second} ${t('seconds_ago')}`;
36
+ return `${second} ${symbol ? t('secs_ago') : t('seconds_ago')}`;
37
37
  } else if (elapsed < msPerHour) {
38
- return `${Math.round(elapsed / msPerMinute)} ${t('minutes_ago')}`;
38
+ return `${Math.round(elapsed / msPerMinute)} ${
39
+ symbol ? t('mins_ago') : t('minutes_ago')
40
+ }`;
39
41
  } else if (elapsed < msPerDay) {
40
42
  return `${Math.round(elapsed / msPerHour)} ${t('hours_ago')}`;
41
43
  } else if (elapsed < msPerMonth) {
@@ -62,3 +64,26 @@ export const getTitleFromTime = (time, current) => {
62
64
  return moment(time).format('DD/MM/YYYY');
63
65
  }
64
66
  };
67
+
68
+ export const getDateData = (initialDate, max, min) => {
69
+ let dateData = [];
70
+ let dateIndex = -1;
71
+ const date = moment(min);
72
+ const today = moment();
73
+
74
+ while (date <= max) {
75
+ const dateString = date.isSame(today, 'day')
76
+ ? t('today')
77
+ : date.format('ddd DD/MM');
78
+ dateData.push({
79
+ text: dateString,
80
+ value: moment(date),
81
+ });
82
+ if (date.isSame(initialDate, 'day')) {
83
+ dateIndex = dateData.length - 1;
84
+ }
85
+ date.add(1, 'days');
86
+ }
87
+ const indexInitialDate = dateIndex !== -1 ? dateIndex : 0;
88
+ return [dateData, indexInitialDate];
89
+ };
@@ -0,0 +1,6 @@
1
+ export { getTranslate } from './translations';
2
+ export type {
3
+ InterPolateString,
4
+ Language,
5
+ TranslationString,
6
+ } from './translations';
@@ -100,7 +100,7 @@
100
100
  "Yesterday": "Yesterday",
101
101
  "last_updated_%{minutes}_minutes_ago": "Last updated %{minutes} minutes ago",
102
102
  "Last %{days} ago": "Last %{days} days",
103
- "Welcome %{name}": "Welcome %{name}",
103
+ "Welcome {name}": "Welcome {name}",
104
104
  "devices": "Devices",
105
105
  "Turbidity": "Turbidity",
106
106
  "pH": "pH",
@@ -180,6 +180,9 @@
180
180
  "text_recommended_clo": "The higher the residual chlorine levels in the supply, the better and longer the chemical will be able to protect the system from contamination. However, high levels of chlorine make the water smell and give it a bad taste, which will discourage people from drinking it. \nFor normal domestic use, residual chlorine levels at the point where the consumer collects water should be between 0.2 and 0.5 mg/l. The higher level will be close to the disinfection point and the lower level at the far extremities of the supply network.",
181
181
  "text_low_level": "Low",
182
182
  "text_high_level": "High",
183
+ "launch_one_tap": "Launch One-Tap",
184
+ "des_launch_one_tap": "Quick button create at the dashboard",
185
+ "active_list": "Actions List",
183
186
  "text_very_good_level": "Very good",
184
187
  "text_good_level": "Good",
185
188
  "text_moderate_level": "Moderate",
@@ -308,6 +311,9 @@
308
311
  "text_remove_sub_unit_success": "Remove sub unit success!",
309
312
  "text_remove_sub_unit_fail": "Remove sub unit fail!",
310
313
  "camera": "Camera",
314
+ "favorites": "Favorites",
315
+ "add_to_favorites": "Add to Favorites",
316
+ "remove_from_favorites": "Remove from Favorites",
311
317
  "add_new_device": "Add new device",
312
318
  "add_new_device_message_no_unit": "You cannot add new device. You have to add a new unit first.",
313
319
  "add_member": "Add member",
@@ -448,7 +454,9 @@
448
454
  "what_is_tds_title": "What is TDS?",
449
455
  "what_is_tds_text": "TDS: is the total dissolved solids present in a certain amount of water - (the total number of charged ions, including salts, minerals or metals) that exist in a certain volume of water. High TDS is also responsible for turbidity and sedimentation in water. TDS is expressed in mg / L or parts per million (parts per million).",
450
456
  "tds_guidlines_title": "TDS guidlines for drinking water",
451
- "tds_guidlines_text": "Ideally, the TDS for drinking water should be below 300ppm and the maximum limit considered safe is 500ppm. Water sources with TDS <50ppm are usually water at a fairly pure level or water after being filtered through the RO system - this is water that contains a small amount of minerals and is completely assured to drink directly.",
457
+ "tds_guidlines_text_1": "Ideally, the TDS for drinking water should be below 300ppm and the maximum limit considered safe is 500ppm. Water sources with TDS <50ppm are usually water at a fairly pure level or water after being filtered through the RO system - this is water that contains a small amount of minerals and is completely assured to drink directly.",
458
+ "tds_guidlines_text_2": "Alpha 139G Water Purifier is certified to the national standards TCVN 11978:2017 & QCVN 4-2009/BKHCN about water purifiers for household use by the Ministry of Science and Technology.",
459
+ "tds_guidlines_text_3": "The quality of filtered water meets the standard of direct drinking water, QCVN 6-1:2010/BYT of the Ministry of Health includes 21 toxic physicochemical indicators such as: Arsenic, Ammonium, Lead, Cyanide, Mercury, Copper, Nitrate.. and 5 microbiological indicators: E.coli bacteria, Coliform, Streptococci feacal, Pseudomonas aeruginosa, Spores of sulfite-reducing anaerobic bacteria, ensuring absolute safety for users' health when drinking directly without boiling .(*).",
452
460
  "your_booking_is_safety": "Your booking is safely reserved. However, please be aware that there is no refund for cancellation.",
453
461
  "no_spot_available": "No spots available",
454
462
  "status_full_info": "No spots available at this moment.",
@@ -591,7 +599,9 @@
591
599
  "emergency_alert": "EMERGENCY ALERT!",
592
600
  "the_emergency_button_has_been_activated": "The Emergency button has been activated at unit ",
593
601
  "seconds_ago": "seconds ago",
602
+ "secs_ago": "secs ago",
594
603
  "minutes_ago": "minutes ago",
604
+ "mins_ago": "mins ago",
595
605
  "hours_ago": "hours ago",
596
606
  "days_ago": "days ago",
597
607
  "months_ago": "months ago",
@@ -669,6 +679,18 @@
669
679
  "owners": "Owners",
670
680
  "guest": "Guest",
671
681
  "no_guest": "No guest",
682
+ "guest_info": "Guest Information",
683
+ "eoh_account_id": "EoH account ID",
684
+ "access_schedule": "Access Schedule",
685
+ "always": "Always",
686
+ "recurring": "Recurring",
687
+ "temporary": "Temporary",
688
+ "set_time": "Set time",
689
+ "set_date_time": "Set date and time",
690
+ "start": "Start",
691
+ "end": "End",
692
+ "repeat": "Repeat",
693
+ "add_action": "Add action",
672
694
  "connecting_your_gateway": "Connecting your gateway",
673
695
  "general_trading_conditions": "General Trading Conditions",
674
696
  "station_name": "Station name",
@@ -688,10 +710,34 @@
688
710
  "request_fail": "Request fail",
689
711
  "modbus_fail": "Modbus failrate",
690
712
  "rssi_node": "RSSI Node",
713
+ "edit_actions_list": "Edit Actions List",
714
+ "des_edit_actions_list": "Click on the order number to rearrange automatic order",
691
715
  "please_add_your_phone_number_and_chip_name": "Please add your phone number and chip name",
692
716
  "phone_number_of_data_sim": "Phone number of data sim",
693
717
  "select_a_sub_unit": "Select a sub-unit that you want to add this gateway",
694
718
  "all_camera": "All Cameras",
695
719
  "gateway_name": "Gateway name",
720
+ "activated_time": "Activated {time}",
721
+ "activated_successfully": "Activated successfully.",
722
+ "activation_failed": "Activation failed.",
723
+ "set_hour": "Set hour",
724
+ "sync_lg_device": "Sync LG device",
725
+ "lg_sync_failed": "Sync LG device failed!",
726
+ "lg_sync_success": "Sync LG device success!",
727
+ "setting_at": "Setting at",
728
+ "name_your_button": "Name your button",
729
+ "continue": "Continue",
730
+ "tap_to_run": "Tap to run",
731
+ "how_to_start": "How to start",
732
+ "set_up {name}": "Setup {name}",
733
+ "action": "Action",
734
+ "actions_list": "Actions list",
735
+ "delette_action": "Delete action?",
736
+ "message_delete_action": "Are you sure you want to delete action of \n{actionName} in {stationName}?",
737
+ "add_script": "Add Script",
738
+ "go_to_automate_scripts": "Go to automate scripts",
739
+ "Script": "Script",
740
+ "create_smart": "Create Smart",
741
+ "choose_the_automation_method_you_want": "Choose the automation method you want",
696
742
  "error_please_try_later": "Error! Please try later"
697
743
  }
@@ -39,6 +39,9 @@
39
39
  "machine_status": "Trạng thái máy",
40
40
  "tank_working_normally": "Máy lọc hoạt động bình thường.",
41
41
  "filters": "Lõi lọc",
42
+ "launch_one_tap": "Khởi chạy một lần chạm",
43
+ "des_launch_one_tap": "Tạo nút nhanh trên trang tổng quan",
44
+ "active_list": "Danh sách hành động",
42
45
  "filtering": "Đang sục rửa",
43
46
  "insufficient_water_input": "Thiếu nước đầu vào.",
44
47
  "check_water_leak": "Kiểm tra rò rỉ nước.",
@@ -50,6 +53,7 @@
50
53
  "auth_already_have_an_account": "Bạn đã có tài khoản? ",
51
54
  "tds_infomation": "Chỉ số TDS",
52
55
  "what_is_tds_title": "TDS là gì?",
56
+ "add_action": "Thêm hành động",
53
57
  "what_is_tds_text": "TDS là tổng chất rắn hoà tan tồn tại trong một lượng nước nhất định - (tổng số các ion mang điện tích, bao gồm muối, khoáng chất hoặc kim loại) tồn tại trong một thể tích nước nhất định. TDS cao cũng là nguyên nhân gây ra độ đục và trầm tích trong nước. TDS được biểu thị bằng đơn vị mg/L hoặc ppm (parts per million - phần triệu).",
54
58
  "tds_guidlines_title": "Chỉ số TDS cho nước uống",
55
59
  "tds_guidlines_text_1": "Lý tưởng nhất, TDS cho nước uống phải dưới 300mg/lít và giới hạn tối đa được coi là an toàn là 500mg/lít. Với các nguồn nước có TDS < 50ppm thường là nước ở mức khá tinh khiết hoặc nước sau khi lọc qua hệ thống RO - đây là nước có chứa lượng khoáng nhỏ và hoàn toàn yên tâm để sử dụng uống trực tiếp.",
@@ -61,6 +65,8 @@
61
65
  "verify": "Xác nhận",
62
66
  "text_new_unit": "Địa điểm",
63
67
  "text_sub_units": "Khu vực",
68
+ "edit_actions_list": "Chỉnh sửa danh sách hành động",
69
+ "des_edit_actions_list": "Bấm vào số đơn hàng để sắp xếp lại đơn hàng tự động",
64
70
  "sub_unit": "Khu vực",
65
71
  "sub_units": "Khu vực",
66
72
  "device": "Thiết bị",
@@ -109,7 +115,7 @@
109
115
  "Today": "Hôm nay",
110
116
  "last_updated_%{minutes}_minutes_ago": "Cập nhật lần cuối %{minutes} phút trước",
111
117
  "Last %{days} ago": "%{days} ngày qua",
112
- "Welcome %{name}": "Chào mừng đến %{name}",
118
+ "Welcome {name}": "Chào mừng đến {name}",
113
119
  "devices": "thiết bị",
114
120
  "text_no_units": "Chưa có địa điểm. Nhấn + để tạo địa điểm đầu tiên.",
115
121
  "text_last_7_days": "7 ngày qua",
@@ -338,6 +344,9 @@
338
344
  "text_remove_sub_unit_success": "Xóa khu vực thành công!",
339
345
  "text_remove_sub_unit_fail": "Xóa khu vực thất bại!",
340
346
  "camera": "Camera",
347
+ "favorites": "Yêu thích",
348
+ "add_to_favorites": "Thêm vào yêu thích",
349
+ "remove_from_favorites": "Loại khỏi yêu thích",
341
350
  "add_new_device": "Thêm thiết bị",
342
351
  "add_new_device_message_no_unit": "Để thêm thiết bị mới, trước tiên bạn cần tạo một địa điểm.",
343
352
  "add_member": "Thêm thành viên",
@@ -594,7 +603,9 @@
594
603
  "emergency_alert": "Khẩn cấp!",
595
604
  "the_emergency_button_has_been_activated": "Nút cảnh báo khẩn cấp vừa được kích hoạt tại địa điểm ",
596
605
  "seconds_ago": "giây trước",
606
+ "secs_ago": "giây trước",
597
607
  "minutes_ago": "phút trước",
608
+ "mins_ago": "phút trước",
598
609
  "hours_ago": "giờ trước",
599
610
  "days_ago": "ngày trước",
600
611
  "months_ago": "tháng trước",
@@ -665,6 +676,17 @@
665
676
  "owners": "Chủ sỡ hữu",
666
677
  "guest": "Khách",
667
678
  "no_guest": "Không có vị khách nào",
679
+ "guest_info": "Thông tin khách",
680
+ "eoh_account_id": "ID tài khoản EoH",
681
+ "access_schedule": "Lịch truy cập",
682
+ "always": "Luôn luôn",
683
+ "recurring": "Tuần hoàn",
684
+ "temporary": "Tạm thời",
685
+ "set_time": "Chọn thời gian",
686
+ "set_date_time": "Chọn ngày và thời gian",
687
+ "start": "Bắt đầu",
688
+ "end": "Kết thúc",
689
+ "repeat": "Lặp lại",
668
690
  "please_select_a_wifi_network": "Vui lòng chọn mạng Wi-Fi và nhập mật khẩu",
669
691
  "wifi_name": "Tên Wi-Fi",
670
692
  "password": "Mật khẩu",
@@ -696,5 +718,27 @@
696
718
  "select_a_sub_unit": "Lựa chọn một khu vực mà bạn muốn thêm gateway",
697
719
  "all_camera": "All Cameras",
698
720
  "gateway_name": "Tên Gateway",
721
+ "activated_time": "Đã kích hoạt {time}",
722
+ "activated_successfully": "Đã kích hoạt thành công.",
723
+ "activation_failed": "Kích hoạt đã thất bại.",
724
+ "set_hour": "Đặt giờ",
725
+ "sync_lg_device": "Đồng bộ thiết bị LG",
726
+ "lg_sync_failed": "Đồng bộ thiết bị LG thất bại!",
727
+ "lg_sync_success": "Đồng bộ thiết bị LG thành công!",
728
+ "setting_at": "Thiết lập tại",
729
+ "name_your_button": "Đặt tên cho nút nhấn của bạn",
730
+ "continue": "Tiếp tục",
731
+ "tap_to_run": "Nhấn để chạy",
732
+ "how_to_start": "Cách khởi động",
733
+ "set_up {name}": "Thiết lập {name}",
734
+ "action": "Hành động",
735
+ "actions_list": "Dánh sách hành động",
736
+ "delette_action": "Xoá hành động ?",
737
+ "message_delete_action": "Bạn có chắc chắn muốn xóa hành động của {actionName} trong {stationName} không ?",
738
+ "add_script": "Thêm Kịch Bản",
739
+ "go_to_automate_scripts": "Đi đến kịch bản tự động",
740
+ "Script": "Kịch bản",
741
+ "create_smart": "Tạo thông minh",
742
+ "choose_the_automation_method_you_want": "Chọn phương thức tự động hóa mà bạn mong muốn",
699
743
  "error_please_try_later": "Lỗi! Vui lòng thử lại sau"
700
744
  }
@@ -0,0 +1,45 @@
1
+ import MessageFormat from '@messageformat/core';
2
+
3
+ import en from './translations/en.json';
4
+ import vi from './translations/vi.json';
5
+
6
+ export type TranslationString = keyof typeof en;
7
+ export type Language = 'en' | 'vi';
8
+
9
+ const res = {
10
+ en,
11
+ vi,
12
+ };
13
+ export type InterPolateString = {
14
+ [name: string]: string;
15
+ };
16
+
17
+ const formatMess = new MessageFormat('en');
18
+
19
+ const formatMessage = (message: string, interpolateStr: InterPolateString) => {
20
+ try {
21
+ const compiledMsg = formatMess.compile(message);
22
+ return compiledMsg(interpolateStr);
23
+ } catch {
24
+ return message;
25
+ }
26
+ };
27
+
28
+ export const getTranslate = (
29
+ language: Language,
30
+ key: TranslationString,
31
+ interpolateStr?: InterPolateString
32
+ ) => {
33
+ // @ts-ignore
34
+ if (!res[language][key]) {
35
+ return key;
36
+ }
37
+
38
+ if (!interpolateStr) {
39
+ // @ts-ignore
40
+ return res[language][key];
41
+ }
42
+
43
+ // @ts-ignore
44
+ return formatMessage(res[language][key], interpolateStr);
45
+ };
@@ -94,10 +94,18 @@ const Routes = {
94
94
  TermAndPolicy: 'TermAndPolicy',
95
95
  Browser: 'Browser',
96
96
  ManageAccess: 'ManageAccess',
97
+ SelectDevice: 'SelectDevice',
98
+ SelectAction: 'SelectAction',
99
+ GuestInfo: 'GuestInfo',
97
100
  AddLGDevice: 'AddLGDevice',
98
101
  AddLGDeviceStack: 'AddLGDeviceStack',
102
+ ScriptDetail: 'ScriptDetail',
103
+ EditActionsList: 'EditActionsList',
99
104
  PlaybackCamera: 'PlaybackCamera',
105
+ AddNewAutoSmart: 'AddNewAutoSmart',
100
106
  AllCamera: 'AllCamera',
107
+ AddNewOneTap: 'AddNewOneTap',
108
+ AddNewScriptAction: 'AddNewScriptAction',
101
109
  };
102
110
 
103
111
  export default Routes;
@@ -1,66 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`Test chart loading create chart loading 1`] = `
4
- <RNSVGSvgView
5
- bbHeight={300}
6
- bbWidth="100%"
7
- focusable={false}
8
- height={300}
9
- style={
10
- Array [
11
- Object {
12
- "backgroundColor": "transparent",
13
- "borderWidth": 0,
14
- },
15
- Object {
16
- "flex": 0,
17
- "height": 300,
18
- "width": "100%",
19
- },
20
- ]
21
- }
22
- width="100%"
23
- >
24
- <RNSVGGroup>
25
- <RNSVGText
26
- content={null}
27
- dx={Array []}
28
- dy={Array []}
29
- fill={4278190080}
30
- font={
31
- Object {
32
- "fontSize": "20",
33
- "fontWeight": "bold",
34
- "textAnchor": "middle",
35
- }
36
- }
37
- propList={
38
- Array [
39
- "fill",
40
- ]
41
- }
42
- rotate={Array []}
43
- x={
44
- Array [
45
- "50%",
46
- ]
47
- }
48
- y={
49
- Array [
50
- "47%",
51
- ]
52
- }
53
- >
54
- <RNSVGTSpan
55
- content="loading"
56
- dx={Array []}
57
- dy={Array []}
58
- font={Object {}}
59
- rotate={Array []}
60
- x={Array []}
61
- y={Array []}
62
- />
63
- </RNSVGText>
64
- </RNSVGGroup>
65
- </RNSVGSvgView>
66
- `;
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- import renderer from 'react-test-renderer';
3
- import HistoryChart from '../../HistoryChart';
4
-
5
- describe('Test HistoryChart', () => {
6
- beforeAll(() => {
7
- Date.now = jest.fn(() => new Date('2021-01-24T12:00:00.000Z'));
8
- });
9
- test('render HistoryChart line_chart', () => {
10
- const datas = [
11
- {
12
- id: 1,
13
- title: 'title',
14
- color: 'red',
15
- data: [
16
- [1, 2],
17
- [2, 3],
18
- ],
19
- },
20
- ];
21
- const render = renderer
22
- .create(
23
- <HistoryChart
24
- configuration={{ type: 'line_chart' }}
25
- datas={datas}
26
- setStartDate={Date.now()}
27
- setEndDate={Date.now()}
28
- />
29
- )
30
- .toJSON();
31
- expect(render).toMatchSnapshot();
32
- });
33
- test('render HistoryChart horizontal_bar_chart', () => {
34
- const datas = [
35
- {
36
- id: 1,
37
- title: 'title',
38
- color: 'red',
39
- data: [
40
- [1, 2],
41
- [2, 3],
42
- ],
43
- },
44
- ];
45
- const render = renderer
46
- .create(
47
- <HistoryChart
48
- configuration={{ type: 'horizontal_bar_chart' }}
49
- datas={datas}
50
- setStartDate={Date.now}
51
- setEndDate={Date.now}
52
- />
53
- )
54
- .toJSON();
55
- expect(render).toMatchSnapshot();
56
- });
57
- });