@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.
- package/README.md +1 -1
- package/assets/images/Add.svg +5 -0
- package/assets/images/AddLocationMaps/Point.svg +3 -0
- package/assets/images/CheckCircle.svg +4 -0
- package/assets/images/Close.svg +3 -0
- package/assets/images/HowToStart.svg +14 -0
- package/assets/images/OneTap.svg +14 -0
- package/assets/images/OneTap@1x.svg +14 -0
- package/assets/images/Rearrange.svg +3 -0
- package/assets/images/Schedule.svg +39 -0
- package/assets/images/WeatherChange.svg +49 -0
- package/package.json +12 -2
- package/src/Images/Common/ActiveButton.png +0 -0
- package/src/Images/Common/ActiveButton@2x.png +0 -0
- package/src/Images/Common/ActiveButton@3x.png +0 -0
- package/src/Images/Common/arrow-back.png +0 -0
- package/src/Images/Common/checked@2x.png +0 -0
- package/src/Images/Common/checked@3x.png +0 -0
- package/src/Images/Common/file.png +0 -0
- package/src/Images/Common/fullscreen.png +0 -0
- package/src/Images/Common/refresh.png +0 -0
- package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +1 -1
- package/src/commons/ActionGroup/OnOffTemplate/index.js +4 -4
- package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +7 -4
- package/src/commons/ActionGroup/StatesGridActionTemplate.js +12 -3
- package/src/commons/ActionGroup/ThreeButtonTemplate.js +13 -6
- package/src/commons/ActionGroup/ThreeButtonTemplateStyle.js +1 -1
- package/src/commons/ActionGroup/TimerActionTemplate.js +158 -33
- package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +8 -13
- package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +3 -3
- package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +26 -45
- package/src/commons/ActionGroup/__test__/ThreeButtonTemplate.test.js +11 -5
- package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +14 -8
- package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +17 -23
- package/src/commons/ActionGroup/__test__/__snapshots__/ThreeButtonTemplate.test.js.snap +241 -223
- package/src/commons/ActionGroup/__test__/index.test.js +39 -107
- package/src/commons/ActionGroup/hooks/useDropdownAction.js +2 -1
- package/src/commons/ActionTemplate/ActionTemplateStyles.js +14 -0
- package/src/commons/ActionTemplate/OnOffButtonAction.js +40 -0
- package/src/commons/ActionTemplate/OnOffButtonActionStyles.js +11 -0
- package/src/commons/ActionTemplate/OneButtonAction.js +26 -0
- package/src/commons/ActionTemplate/OneButtonActionStyles.js +11 -0
- package/src/commons/ActionTemplate/ThreeButtonAction.js +55 -0
- package/src/commons/ActionTemplate/ThreeButtonActionStyles.js +11 -0
- package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +34 -0
- package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +33 -0
- package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +35 -0
- package/src/commons/ActionTemplate/__test__/index.test.js +71 -0
- package/src/commons/ActionTemplate/index.js +69 -0
- package/src/commons/Automate/ItemAddNewScriptAction.js +30 -0
- package/src/commons/Automate/ItemAddNewScriptActionStyles.js +38 -0
- package/src/commons/Automate/ItemAutomate.js +33 -0
- package/src/commons/Automate/ItemAutomateStyles.js +33 -0
- package/src/commons/Automate/ItemScriptAction.js +45 -0
- package/src/commons/Automate/ItemScriptActionStyles.js +42 -0
- package/src/commons/BottomScrollPicker/index.js +58 -0
- package/src/commons/BottomScrollPicker/styles.js +13 -0
- package/src/commons/BottomSheet/index.js +36 -0
- package/src/commons/BottomSheet/styles.js +37 -0
- package/src/commons/Button/index.js +6 -1
- package/src/commons/CameraDevice/index.js +2 -1
- package/src/commons/ChartLoading/__test__/ChartLoading.test.js +9 -7
- package/src/commons/ChartLoading/index.js +2 -1
- package/src/commons/DateTimeRangeChange/index.js +2 -1
- package/src/commons/Device/ConnectedViewHeader.js +3 -1
- package/src/commons/Device/DeviceAlertStatus.js +5 -2
- package/src/commons/Device/DisconnectedView.js +34 -26
- package/src/commons/Device/Emergency/EmergencyButton.js +2 -1
- package/src/commons/Device/Emergency/EmergencyDetail.js +2 -1
- package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +14 -6
- package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +10 -2
- package/src/commons/Device/FlatListItems.js +3 -2
- package/src/commons/Device/FooterInfo.js +2 -1
- package/src/commons/Device/HistoryChart.js +2 -1
- package/src/commons/Device/ItemAddNew/index.js +6 -1
- package/src/commons/Device/SensorConnectedStatus.js +2 -1
- package/src/commons/Device/WindDirection/Compass/Compass.test.js +19 -11
- package/src/commons/Device/WindDirection/Compass/index.js +1 -1
- package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +9 -3
- package/src/commons/Device/WindSpeed/LinearChart/__test__/__snapshots__/LinearChart.test.js.snap +0 -81
- package/src/commons/Device/WindSpeed/LinearChart/index.js +2 -1
- package/src/commons/Device/__test__/ConnectedViewHeader.test.js +16 -8
- package/src/commons/Device/__test__/DeviceAlertStatus.test.js +13 -5
- package/src/commons/Device/__test__/DisconnectedView.test.js +13 -5
- package/src/commons/Device/__test__/FlatListItems.test.js +9 -1
- package/src/commons/Device/__test__/FooterInfo.test.js +13 -4
- package/src/commons/Device/__test__/SensorConnectedStatus.test.js +9 -1
- package/src/commons/Device/__test__/__snapshots__/DisconnectedView.test.js.snap +20 -20
- package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +28 -0
- package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -1
- package/src/commons/EmergencyButton/AlertSent.js +3 -2
- package/src/commons/Explore/CityItem/index.js +2 -1
- package/src/commons/Explore/HeaderExplore/index.js +2 -1
- package/src/commons/Explore/HeaderLabel/index.js +2 -1
- package/src/commons/Explore/SearchBox/__test__/SearchBox.test.js +9 -2
- package/src/commons/Explore/SearchBox/index.js +2 -1
- package/src/commons/Explore/__test__/CityItem.test.js +13 -15
- package/src/commons/Explore/__test__/HeaderLabel.test.js +15 -9
- package/src/commons/Header/HeaderCustom.js +17 -1
- package/src/commons/Header/Styles/HeaderCustomStyles.js +2 -2
- package/src/commons/Header/__test__/HeaderCT.test.js +12 -4
- package/src/commons/HeaderAni/index.js +6 -3
- package/src/commons/IconComponent/index.js +18 -3
- package/src/commons/ImagePicker/__test__/ImagePicker.test.js +19 -13
- package/src/commons/ImagePicker/index.js +3 -1
- package/src/commons/MediaPlayer/index.js +2 -1
- package/src/commons/MediaPlayerDetail/__test__/MediaPlayerDetail.test.js +14 -8
- package/src/commons/MediaPlayerDetail/index.js +4 -1
- package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +11 -20
- package/src/commons/MenuActionAddnew/index.js +2 -1
- package/src/commons/Modal/ModalBottom.js +51 -0
- package/src/commons/Modal/ModalFullVideo.js +2 -1
- package/src/commons/Modal/Styles/ModalBottomStyles.js +35 -0
- package/src/commons/Modal/index.js +2 -1
- package/src/commons/NavBar/index.js +2 -2
- package/src/commons/SelectActionCard/SelectActionStyles.js +16 -0
- package/src/commons/SelectActionCard/index.js +30 -0
- package/src/commons/Sharing/DevicePermissionsCheckbox.js +2 -1
- package/src/commons/Sharing/MemberList.js +3 -1
- package/src/commons/Sharing/RowMember.js +3 -2
- package/src/commons/Sharing/StationDevicePermissions.js +2 -1
- package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +15 -9
- package/src/commons/Sharing/__test__/MemberList.test.js +17 -25
- package/src/commons/Sharing/__test__/StationDevicePermission.test.js +17 -12
- package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +0 -9
- package/src/commons/SubUnit/OneTap/ItemOneTap.js +97 -0
- package/src/commons/SubUnit/OneTap/ItemOneTapStyles.js +41 -0
- package/src/commons/SubUnit/OneTap/OneTapStyles.js +36 -0
- package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +149 -0
- package/src/commons/SubUnit/OneTap/index.js +39 -0
- package/src/commons/SubUnit/ShortDetail.js +11 -6
- package/src/commons/SubUnit/__test__/ShortDetail.test.js +14 -6
- package/src/commons/Today/__test__/Today.test.js +9 -1
- package/src/commons/Today/__test__/__snapshots__/Today.test.js.snap +1 -1
- package/src/commons/Today/index.js +2 -1
- package/src/commons/Unit/SharedUnit.js +2 -1
- package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +1 -2
- package/src/commons/UnitSummary/AirQuality/__test__/index.test.js +16 -17
- package/src/commons/UnitSummary/AirQuality/index.js +5 -120
- package/src/commons/UnitSummary/AirQuality/styles.js +112 -0
- package/src/commons/UnitSummary/TotalPowerConsumption/index.js +2 -1
- package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +15 -9
- package/src/commons/WheelDateTimePicker/Picker.js +57 -0
- package/src/commons/WheelDateTimePicker/index.js +160 -0
- package/src/commons/WheelDateTimePicker/styles.js +21 -0
- package/src/configs/API.js +25 -0
- package/src/configs/Colors.js +1 -0
- package/src/configs/Constants.js +46 -0
- package/src/configs/Images.js +1 -0
- package/src/configs/SCConfig.js +7 -0
- package/src/context/SCContext.tsx +7 -37
- package/src/context/actionType.ts +11 -0
- package/src/context/mockStore.ts +49 -0
- package/src/context/reducer.ts +23 -0
- package/src/hooks/Common/__test__/useTranslations.test.js +23 -0
- package/src/hooks/Common/index.js +2 -0
- package/src/hooks/Common/useGetIdUser.js +9 -0
- package/src/hooks/Common/useTranslations.ts +34 -0
- package/src/iot/Monitor.js +2 -1
- package/src/iot/RemoteControl/Bluetooth.js +2 -6
- package/src/iot/RemoteControl/GoogleHome.js +1 -1
- package/src/iot/RemoteControl/Internet.js +1 -1
- package/src/iot/RemoteControl/LG.js +57 -15
- package/src/iot/RemoteControl/__test__/Bluetooth.test.js +3 -5
- package/src/iot/RemoteControl/__test__/GoogleHome.test.js +3 -3
- package/src/iot/RemoteControl/__test__/Internet.test.js +1 -8
- package/src/iot/RemoteControl/__test__/LgThinq.test.js +7 -10
- package/src/iot/RemoteControl/index.js +1 -1
- package/src/iot/states.js +1 -0
- package/src/navigations/SharedStack.js +2 -1
- package/src/navigations/UnitStack.js +62 -1
- package/src/screens/AQIGuide/__test__/AQIGuide.test.js +9 -1
- package/src/screens/AQIGuide/index.js +2 -2
- package/src/screens/ActivityLog/__test__/index.test.js +14 -39
- package/src/screens/ActivityLog/index.js +2 -1
- package/src/screens/AddCommon/SelectSubUnit.js +5 -4
- package/src/screens/AddCommon/SelectUnit.js +3 -2
- package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +61 -0
- package/src/screens/AddCommon/__test__/SelectUnit.test.js +18 -10
- package/src/screens/AddLocationMaps/index.js +2 -1
- package/src/screens/AddNewAction/Device/DeviceStyles.js +43 -0
- package/src/screens/AddNewAction/Device/__test__/index.test.js +42 -0
- package/src/screens/AddNewAction/Device/index.js +33 -0
- package/src/screens/AddNewAction/SelectAction.js +152 -0
- package/src/screens/AddNewAction/SelectDevice.js +120 -0
- package/src/screens/AddNewAction/Styles/SelectActionStyles.js +24 -0
- package/src/screens/AddNewAction/Styles/SelectDeviceStyles.js +36 -0
- package/src/screens/AddNewAction/__test__/SelectAction.test.js +172 -0
- package/src/screens/AddNewAction/__test__/SelectDevice.test.js +191 -0
- package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +55 -0
- package/src/screens/AddNewAutoSmart/index.js +85 -0
- package/src/screens/AddNewAutoSmart/styles/AddNewAutoSmartStyles.js +36 -0
- package/src/screens/AddNewDevice/ConnectDevices.js +2 -1
- package/src/screens/AddNewDevice/ConnectingDevices.js +2 -1
- package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +29 -13
- package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +19 -7
- package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +16 -6
- package/src/screens/AddNewDevice/hooks/useStateAlertRename.js +2 -1
- package/src/screens/AddNewDevice/index.js +2 -1
- package/src/screens/AddNewGateway/ConnectedGateway.js +2 -1
- package/src/screens/AddNewGateway/ConnectingGateway.js +99 -24
- package/src/screens/AddNewGateway/ConnectingGatewayStyles.js +92 -0
- package/src/screens/AddNewGateway/SetupGatewayWifi.js +3 -2
- package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +35 -72
- package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +14 -4
- package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +20 -10
- package/src/screens/AddNewGateway/hooks/useStateAlertRename.js +2 -1
- package/src/screens/AddNewGateway/index.js +2 -1
- package/src/screens/AddNewOneTap/AddNewOneTapStyles.js +43 -0
- package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +129 -0
- package/src/screens/AddNewOneTap/index.js +80 -0
- package/src/screens/AddNewScriptAction/AddNewScriptActionStyles.js +28 -0
- package/src/screens/AddNewScriptAction/index.js +100 -0
- package/src/screens/AllCamera/index.js +2 -1
- package/src/screens/Device/HeaderDevice/styles.js +2 -2
- package/src/screens/Device/__test__/detail.test.js +26 -18
- package/src/screens/Device/detail.js +56 -28
- package/src/screens/Device/hooks/useCountUp.js +4 -0
- package/src/screens/Device/hooks/useEmergencyButton.js +3 -2
- package/src/screens/Device/styles.js +5 -1
- package/src/screens/DeviceInfo/__test__/index.test.js +12 -3
- package/src/screens/DeviceInfo/index.js +2 -1
- package/src/screens/EditActionsList/Styles/indexStyles.js +84 -0
- package/src/screens/EditActionsList/index.js +186 -0
- package/src/screens/EmergencyContacts/EmergencyContactsAddNew.js +3 -2
- package/src/screens/EmergencyContacts/EmergencyContactsList.js +9 -2
- package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +2 -1
- package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +15 -18
- package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +19 -23
- package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +10 -25
- package/src/screens/EmergencyContacts/hook.js +3 -2
- package/src/screens/Explore/index.js +3 -2
- package/src/screens/GuestInfo/components/AccessScheduleItem.js +27 -0
- package/src/screens/GuestInfo/components/AccessScheduleSheet.js +193 -0
- package/src/screens/GuestInfo/components/HeaderGuestInfo.js +31 -0
- package/src/screens/GuestInfo/components/RecurringDetail.js +99 -0
- package/src/screens/GuestInfo/components/RowGuestInfo.js +31 -0
- package/src/screens/GuestInfo/components/TemporaryDetail.js +46 -0
- package/src/screens/GuestInfo/constant.js +59 -0
- package/src/screens/GuestInfo/index.js +151 -0
- package/src/screens/GuestInfo/styles/AccessScheduleDetailStyles.js +31 -0
- package/src/screens/GuestInfo/styles/AccessScheduleItemStyles.js +22 -0
- package/src/screens/GuestInfo/styles/HeaderGuestInfoStyles.js +31 -0
- package/src/screens/GuestInfo/styles/indexStyles.js +38 -0
- package/src/screens/ManageAccess/__test__/ManageAccess.test.js +13 -1
- package/src/screens/ManageAccess/hooks/index.js +4 -0
- package/src/screens/ManageAccess/index.js +49 -20
- package/src/screens/ManageAccess/styles/ManageAccessStyles.js +3 -0
- package/src/screens/PlayBackCamera/index.js +9 -5
- package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +2 -11
- package/src/screens/ScanChipQR/components/QRScan/index.js +2 -1
- package/src/screens/ScriptDetail/Styles/indexStyles.js +143 -0
- package/src/screens/ScriptDetail/index.js +243 -0
- package/src/screens/SharedUnit/TabHeader.js +2 -1
- package/src/screens/SharedUnit/__test__/TabHeader.test.js +40 -0
- package/src/screens/SharedUnit/index.js +3 -2
- package/src/screens/Sharing/MemberList.js +2 -1
- package/src/screens/Sharing/SelectPermission.js +2 -1
- package/src/screens/Sharing/SelectUser.js +3 -2
- package/src/screens/Sharing/__test__/MemberList.test.js +17 -13
- package/src/screens/Sharing/__test__/SelectPermission.test.js +16 -8
- package/src/screens/Sharing/__test__/SelectUser.test.js +33 -15
- package/src/screens/Sharing/hooks/index.js +22 -17
- package/src/screens/SubUnit/AddSubUnit.js +3 -2
- package/src/screens/SubUnit/Detail.js +5 -4
- package/src/screens/SubUnit/ManageSubUnit.js +10 -9
- package/src/screens/SubUnit/__test__/AddSubUnit.test.js +17 -11
- package/src/screens/SubUnit/__test__/Detail.test.js +11 -31
- package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +42 -31
- package/src/screens/SyncLGDevice/AddLGDevice.js +3 -2
- package/src/screens/TDSGuide/__test__/TDSGuide.test.js +9 -1
- package/src/screens/TDSGuide/index.js +2 -1
- package/src/screens/UVIndexGuide/__test__/UVIndexGuide.test.js +9 -1
- package/src/screens/UVIndexGuide/index.js +2 -1
- package/src/screens/Unit/AddMenu.js +3 -2
- package/src/screens/Unit/Detail.js +65 -20
- package/src/screens/Unit/ManageUnit/index.js +4 -3
- package/src/screens/Unit/ManageUnit.js +5 -4
- package/src/screens/Unit/MoreMenu.js +3 -2
- package/src/screens/Unit/SelectLocation.js +8 -2
- package/src/screens/Unit/SelectLocationStyles.js +11 -0
- package/src/screens/Unit/__test__/AddMenu.test.js +15 -15
- package/src/screens/Unit/__test__/CheckSendEmail.test.js +19 -10
- package/src/screens/Unit/__test__/Detail.test.js +92 -33
- package/src/screens/Unit/__test__/ManageUnit.test.js +16 -23
- package/src/screens/Unit/components/Header/index.js +2 -1
- package/src/screens/Unit/components/ListMyAllUnit/index.js +2 -1
- package/src/screens/Unit/components/MyUnit/index.js +2 -1
- package/src/screens/Unit/components/SearchLocation/index.js +2 -1
- package/src/screens/Unit/components/SharedUnit/index.js +2 -1
- package/src/screens/Unit/components/__test__/SharedUnit.test.js +11 -2
- package/src/screens/UnitSummary/__test__/index.test.js +12 -4
- package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +13 -3
- package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +2 -1
- package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -12
- package/src/screens/UnitSummary/components/PowerConsumption/index.js +2 -1
- package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -2
- package/src/screens/UnitSummary/components/Temperature/index.js +2 -1
- package/src/screens/UnitSummary/components/TotalPowerConsumption/index.js +2 -1
- package/src/screens/UnitSummary/components/UvIndex/__test__/__snapshots__/index.test.js.snap +37 -37
- package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +14 -6
- package/src/screens/UnitSummary/components/UvIndex/index.js +2 -1
- package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +11 -5
- package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -1
- package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +13 -7
- package/src/screens/UnitSummary/index.js +2 -1
- package/src/screens/WaterQualityGuide/__test__/index.test.js +12 -12
- package/src/screens/WaterQualityGuide/index.js +2 -1
- package/src/utils/Converter/array.js +4 -0
- package/src/utils/Converter/time.js +29 -4
- package/src/utils/I18n/index.ts +6 -0
- package/src/utils/I18n/translations/en.json +48 -2
- package/src/utils/I18n/translations/vi.json +45 -1
- package/src/utils/I18n/translations.ts +45 -0
- package/src/utils/Route/index.js +8 -0
- package/src/commons/ChartLoading/__test__/__snapshots__/ChartLoading.test.js.snap +0 -66
- package/src/commons/Device/HistoryChart/__test__/HistoryChart.test.js +0 -57
- package/src/commons/Device/HistoryChart/__test__/__snapshots__/HistoryChart.test.js.snap +0 -593
- package/src/commons/Explore/SearchBox/__test__/__snapshots__/SearchBox.test.js.snap +0 -59
- package/src/commons/Explore/__test__/HeaderExplore.test.js +0 -21
- package/src/commons/Header/__test__/Header.test.js +0 -24
- package/src/commons/MenuActionAddnew/__test__/__snapshots__/MenuActionAddNew.test.js.snap +0 -788
- package/src/commons/Sharing/__test__/__snapshots__/WrapHeaderScrollable.test.js.snap +0 -174
- package/src/commons/UnitSummary/AirQuality/__test__/__snapshots__/index.test.js.snap +0 -26679
- package/src/iot/RemoteControl/__test__/index.test.js +0 -101
- package/src/iot/__test__/Monitor.test.js +0 -119
- package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactAddNew.test.js.snap +0 -1706
- package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactList.test.js.snap +0 -4276
- package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactsSelectContacts.test.js.snap +0 -2240
- package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +0 -358
- package/src/screens/Unit/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
- package/src/screens/Unit/MyAllUnit/__test__/index.test.js +0 -48
- package/src/screens/Unit/components/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
- package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -48
- package/src/screens/Unit/components/__test__/MyUnit.test.js +0 -85
- package/src/screens/UnitSummary/components/WaterQuality/__test__/__snapshots__/index.test.js.snap +0 -1574
- package/src/screens/WaterQualityGuide/__test__/__snapshots__/index.test.js.snap +0 -3375
- package/src/utils/Converter/__test__/time.test.js +0 -126
- package/src/utils/I18n/index.js +0 -19
- 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 {
|
|
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 {
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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 {
|
|
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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
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)} ${
|
|
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
|
+
};
|
|
@@ -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
|
|
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
|
-
"
|
|
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
|
|
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
|
+
};
|
package/src/utils/Route/index.js
CHANGED
|
@@ -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
|
-
});
|