@ledvance/ui-biz-bundle 1.1.67 → 1.1.69

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 (240) hide show
  1. package/.babelrc +31 -31
  2. package/.eslintignore +5 -5
  3. package/.eslintrc.js +27 -27
  4. package/.prettierrc.js +1 -1
  5. package/.versionrc +5 -5
  6. package/package.json +74 -74
  7. package/rn-cli.config.js +8 -8
  8. package/src/hooks/DeviceDpStateHooks.d.ts +14 -14
  9. package/src/hooks/DeviceDpStateHooks.ts +50 -50
  10. package/src/modules/biorhythm/BiorhythmActions.d.ts +8 -8
  11. package/src/modules/biorhythm/BiorhythmActions.ts +324 -324
  12. package/src/modules/biorhythm/BiorhythmBean.d.ts +58 -58
  13. package/src/modules/biorhythm/BiorhythmBean.ts +230 -230
  14. package/src/modules/biorhythm/BiorhythmEditPage.d.ts +14 -14
  15. package/src/modules/biorhythm/BiorhythmEditPage.tsx +324 -324
  16. package/src/modules/biorhythm/BiorhythmPage.d.ts +10 -10
  17. package/src/modules/biorhythm/BiorhythmPage.tsx +796 -796
  18. package/src/modules/biorhythm/IconSelect.d.ts +2 -2
  19. package/src/modules/biorhythm/IconSelect.tsx +81 -81
  20. package/src/modules/biorhythm/Router.ts +34 -34
  21. package/src/modules/biorhythm/circular/ItemIcon.d.ts +22 -22
  22. package/src/modules/biorhythm/circular/ItemIcon.tsx +172 -172
  23. package/src/modules/biorhythm/circular/Progress.d.ts +24 -24
  24. package/src/modules/biorhythm/circular/Progress.tsx +411 -411
  25. package/src/modules/biorhythm/circular/TimeCircular.d.ts +11 -11
  26. package/src/modules/biorhythm/circular/TimeCircular.tsx +70 -70
  27. package/src/modules/biorhythm/iconListData.d.ts +7 -7
  28. package/src/modules/biorhythm/iconListData.ts +29 -29
  29. package/src/modules/biorhythm/pIdList.d.ts +2 -2
  30. package/src/modules/biorhythm/pIdList.ts +35 -35
  31. package/src/modules/biorhythm/res/BiologicalRes.d.ts +43 -43
  32. package/src/modules/biorhythm/res/BiologicalRes.ts +41 -41
  33. package/src/modules/config/ldvConfig.d.ts +2 -2
  34. package/src/modules/config/ldvConfig.tsx +18 -18
  35. package/src/modules/fixedTime/FixedTimeActions.ts +173 -173
  36. package/src/modules/fixedTime/FixedTimeDetailPage.tsx +372 -372
  37. package/src/modules/fixedTime/FixedTimePage.tsx +213 -213
  38. package/src/modules/fixedTime/Router.ts +26 -26
  39. package/src/modules/flags/FlagActions.ts +267 -267
  40. package/src/modules/flags/FlagEditPage.tsx +441 -441
  41. package/src/modules/flags/FlagInfo.tsx +563 -563
  42. package/src/modules/flags/FlagItem.tsx +90 -90
  43. package/src/modules/flags/FlagPage.tsx +277 -277
  44. package/src/modules/flags/Router.ts +25 -25
  45. package/src/modules/history/HistoryPage.d.ts +2 -2
  46. package/src/modules/history/HistoryPage.tsx +261 -261
  47. package/src/modules/history/Router.ts +16 -16
  48. package/src/modules/history/SwitchHistoryPageActions.d.ts +14 -14
  49. package/src/modules/history/SwitchHistoryPageActions.ts +76 -76
  50. package/src/modules/mood/AddMoodPage.d.ts +10 -10
  51. package/src/modules/mood/AddMoodPage.tsx +792 -792
  52. package/src/modules/mood/DynamicMoodEditorPage.d.ts +6 -6
  53. package/src/modules/mood/DynamicMoodEditorPage.tsx +561 -561
  54. package/src/modules/mood/FantasyMood.tsx +176 -176
  55. package/src/modules/mood/FantasyMoodEditPage.tsx +582 -582
  56. package/src/modules/mood/FantasyMoodItem.tsx +104 -104
  57. package/src/modules/mood/FantasyRouter.ts +35 -35
  58. package/src/modules/mood/MixMood/AddMixMoodPage.tsx +247 -247
  59. package/src/modules/mood/MixMood/MixMoodActions.ts +128 -128
  60. package/src/modules/mood/MixMood/MixMoodEditPage.tsx +721 -721
  61. package/src/modules/mood/MixMood/MixMoodItem.tsx +134 -134
  62. package/src/modules/mood/MixMood/MixMoodPage.tsx +326 -326
  63. package/src/modules/mood/MixMood/MixSceneBeans.ts +364 -364
  64. package/src/modules/mood/MixMood/RecommendMixMoodItem.tsx +69 -69
  65. package/src/modules/mood/MixMood/Router.ts +44 -44
  66. package/src/modules/mood/MoodItem.d.ts +11 -11
  67. package/src/modules/mood/MoodItem.tsx +114 -114
  68. package/src/modules/mood/MoodPage.d.ts +16 -16
  69. package/src/modules/mood/MoodPage.tsx +296 -296
  70. package/src/modules/mood/RecommendMoodItem.d.ts +13 -13
  71. package/src/modules/mood/RecommendMoodItem.tsx +74 -74
  72. package/src/modules/mood/Router.ts +53 -53
  73. package/src/modules/mood/StaticMoodEditorPage.d.ts +16 -16
  74. package/src/modules/mood/StaticMoodEditorPage.tsx +320 -320
  75. package/src/modules/mood/tools.d.ts +3 -3
  76. package/src/modules/mood/tools.ts +11 -11
  77. package/src/modules/music/MusicDataBean.d.ts +47 -47
  78. package/src/modules/music/MusicDataBean.ts +167 -167
  79. package/src/modules/music/MusicManager.d.ts +27 -27
  80. package/src/modules/music/MusicManager.ts +207 -207
  81. package/src/modules/music/MusicPage.d.ts +10 -10
  82. package/src/modules/music/MusicPage.tsx +347 -347
  83. package/src/modules/music/MusicPageActions.d.ts +35 -35
  84. package/src/modules/music/MusicPageActions.ts +317 -317
  85. package/src/modules/music/Router.ts +16 -16
  86. package/src/modules/music/SelecetGenre.d.ts +7 -7
  87. package/src/modules/music/SelecetGenre.tsx +63 -63
  88. package/src/modules/music/color.d.ts +2 -2
  89. package/src/modules/music/color.ts +73 -73
  90. package/src/modules/music/res/index.d.ts +10 -10
  91. package/src/modules/music/res/index.ts +9 -9
  92. package/src/modules/powerOnBehavior/PowerOnBehaviorActions.ts +11 -11
  93. package/src/modules/powerOnBehavior/PowerOnBehaviorPage.tsx +173 -173
  94. package/src/modules/powerOnBehavior/Router.ts +16 -16
  95. package/src/modules/randomTime/RandomTimeActions.ts +160 -160
  96. package/src/modules/randomTime/RandomTimeDetailPage.tsx +337 -337
  97. package/src/modules/randomTime/RandomTimePage.tsx +214 -214
  98. package/src/modules/randomTime/Router.ts +25 -25
  99. package/src/modules/randomTime/Summary.tsx +122 -122
  100. package/src/modules/scene/SceneAction.d.ts +13 -13
  101. package/src/modules/scene/SceneAction.ts +473 -473
  102. package/src/modules/scene/SceneDetailPage.d.ts +1 -1
  103. package/src/modules/scene/SceneDetailPage.tsx +421 -421
  104. package/src/modules/scene/SceneInfo.d.ts +72 -72
  105. package/src/modules/scene/SceneInfo.ts +1059 -1059
  106. package/src/modules/scene/ScenePage.d.ts +7 -7
  107. package/src/modules/scene/ScenePage.tsx +147 -147
  108. package/src/modules/select/SelectPage.d.ts +12 -12
  109. package/src/modules/select/SelectPage.tsx +137 -137
  110. package/src/modules/sleepWakeup/DeviceState.d.ts +9 -9
  111. package/src/modules/sleepWakeup/DeviceState.tsx +99 -99
  112. package/src/modules/sleepWakeup/LdvScheduleItem.d.ts +15 -15
  113. package/src/modules/sleepWakeup/LdvScheduleItem.tsx +176 -176
  114. package/src/modules/sleepWakeup/Router.ts +25 -25
  115. package/src/modules/sleepWakeup/SleepWakeUpActions.d.ts +2 -2
  116. package/src/modules/sleepWakeup/SleepWakeUpActions.ts +180 -180
  117. package/src/modules/sleepWakeup/SleepWakeUpDetailPage.d.ts +2 -2
  118. package/src/modules/sleepWakeup/SleepWakeUpDetailPage.tsx +616 -616
  119. package/src/modules/sleepWakeup/SleepWakeUpPage.d.ts +13 -13
  120. package/src/modules/sleepWakeup/SleepWakeUpPage.tsx +424 -424
  121. package/src/modules/sleepWakeup/utils.d.ts +44 -44
  122. package/src/modules/sleepWakeup/utils.ts +253 -253
  123. package/src/modules/timeSchedule/DeviceState.d.ts +17 -17
  124. package/src/modules/timeSchedule/DeviceState.tsx +94 -94
  125. package/src/modules/timeSchedule/LdvScheduleItem.d.ts +15 -15
  126. package/src/modules/timeSchedule/LdvScheduleItem.tsx +130 -130
  127. package/src/modules/timeSchedule/ManualSetting.d.ts +14 -14
  128. package/src/modules/timeSchedule/ManualSetting.tsx +219 -219
  129. package/src/modules/timeSchedule/MoodSetting.d.ts +11 -11
  130. package/src/modules/timeSchedule/MoodSetting.tsx +228 -228
  131. package/src/modules/timeSchedule/Router.ts +25 -25
  132. package/src/modules/timeSchedule/ScheduleScene.d.ts +6 -6
  133. package/src/modules/timeSchedule/ScheduleScene.tsx +144 -144
  134. package/src/modules/timeSchedule/SingleLightView.d.ts +12 -12
  135. package/src/modules/timeSchedule/SingleLightView.tsx +175 -175
  136. package/src/modules/timeSchedule/TimeScheduleBean.d.ts +14 -14
  137. package/src/modules/timeSchedule/TimeScheduleBean.ts +18 -18
  138. package/src/modules/timeSchedule/TimeScheduleEditpage.d.ts +6 -6
  139. package/src/modules/timeSchedule/TimeScheduleEditpage.tsx +765 -765
  140. package/src/modules/timeSchedule/TimeSchedulePage.d.ts +13 -13
  141. package/src/modules/timeSchedule/TimeSchedulePage.tsx +358 -358
  142. package/src/modules/timeSchedule/components/ColorList.ts +23 -23
  143. package/src/modules/timeSchedule/components/LampSwitchCard.tsx +106 -106
  144. package/src/modules/timeSchedule/mix/MixLightActions.d.ts +3 -3
  145. package/src/modules/timeSchedule/mix/MixLightActions.ts +49 -49
  146. package/src/modules/timeSchedule/mix/MixLightBean.d.ts +10 -10
  147. package/src/modules/timeSchedule/mix/MixLightBean.ts +9 -9
  148. package/src/modules/timeSchedule/mix/MixLightView.d.ts +7 -7
  149. package/src/modules/timeSchedule/mix/MixLightView.tsx +197 -197
  150. package/src/modules/timeSchedule/utils.d.ts +1 -1
  151. package/src/modules/timeSchedule/utils.ts +6 -6
  152. package/src/modules/timer/Router.ts +16 -16
  153. package/src/modules/timer/TimerPage.d.ts +11 -11
  154. package/src/modules/timer/TimerPage.tsx +384 -384
  155. package/src/modules/timer/TimerPageAction.d.ts +22 -22
  156. package/src/modules/timer/TimerPageAction.ts +131 -131
  157. package/src/navigation/Routers.d.ts +15 -15
  158. package/src/navigation/Routers.ts +46 -44
  159. package/src/navigation/tools.d.ts +9 -9
  160. package/src/navigation/tools.ts +21 -21
  161. package/src/newModules/biorhythm/BiorhythmActions.ts +374 -374
  162. package/src/newModules/biorhythm/BiorhythmBean.ts +230 -230
  163. package/src/newModules/biorhythm/BiorhythmEditPage.tsx +267 -267
  164. package/src/newModules/biorhythm/BiorhythmPage.tsx +642 -642
  165. package/src/newModules/biorhythm/IconSelect.tsx +84 -84
  166. package/src/newModules/biorhythm/Router.ts +33 -33
  167. package/src/newModules/biorhythm/circular/ItemIcon.d.ts +22 -22
  168. package/src/newModules/biorhythm/circular/ItemIcon.tsx +172 -172
  169. package/src/newModules/biorhythm/circular/Progress.d.ts +24 -24
  170. package/src/newModules/biorhythm/circular/Progress.tsx +371 -371
  171. package/src/newModules/biorhythm/circular/TimeCircular.d.ts +11 -11
  172. package/src/newModules/biorhythm/circular/TimeCircular.tsx +64 -64
  173. package/src/newModules/biorhythm/iconListData.ts +29 -29
  174. package/src/newModules/biorhythm/pIdList.ts +35 -35
  175. package/src/newModules/biorhythm/res/BiologicalRes.d.ts +43 -43
  176. package/src/newModules/biorhythm/res/BiologicalRes.ts +41 -41
  177. package/src/newModules/childLock/ChildLockPage.tsx +97 -97
  178. package/src/newModules/childLock/Router.ts +16 -16
  179. package/src/newModules/energyConsumption/EnergyConsumptionActions.ts +23 -23
  180. package/src/newModules/energyConsumption/EnergyConsumptionChart.tsx +84 -84
  181. package/src/newModules/energyConsumption/EnergyConsumptionDetail.tsx +322 -322
  182. package/src/newModules/energyConsumption/EnergyConsumptionPage.tsx +393 -393
  183. package/src/newModules/energyConsumption/Router.ts +34 -34
  184. package/src/newModules/energyConsumption/co2Data.ts +23655 -23655
  185. package/src/newModules/energyConsumption/component/BarChart.tsx +93 -93
  186. package/src/newModules/energyConsumption/component/EnergyModal.tsx +284 -284
  187. package/src/newModules/energyConsumption/component/Overview.tsx +118 -118
  188. package/src/newModules/fixedTime/FixedTimeActions.ts +241 -241
  189. package/src/newModules/fixedTime/FixedTimeDetailPage.tsx +345 -345
  190. package/src/newModules/fixedTime/FixedTimePage.tsx +302 -302
  191. package/src/newModules/fixedTime/Router.ts +25 -25
  192. package/src/newModules/lightMode/LightModePage.tsx +204 -204
  193. package/src/newModules/lightMode/Router.ts +16 -16
  194. package/src/newModules/mood/AddMoodPage.tsx +194 -194
  195. package/src/newModules/mood/DynamicMoodEditorPage.tsx +650 -650
  196. package/src/newModules/mood/Interface.ts +220 -220
  197. package/src/newModules/mood/MixDynamicMoodEditor.tsx +786 -786
  198. package/src/newModules/mood/MoodActions.ts +232 -232
  199. package/src/newModules/mood/MoodInfo.ts +2151 -2151
  200. package/src/newModules/mood/MoodItem.tsx +160 -160
  201. package/src/newModules/mood/MoodPage.tsx +386 -386
  202. package/src/newModules/mood/MoodParse.ts +443 -443
  203. package/src/newModules/mood/RecommendMoodItem.tsx +81 -81
  204. package/src/newModules/mood/Router.ts +43 -43
  205. package/src/newModules/mood/StaticMoodEditorPage.tsx +290 -290
  206. package/src/newModules/overchargeSwitch/OverchargeSwitchPage.tsx +96 -96
  207. package/src/newModules/overchargeSwitch/Router.ts +16 -16
  208. package/src/newModules/powerOnBehavior/LightBehaviorPage.tsx +266 -266
  209. package/src/newModules/powerOnBehavior/PlugBehaviorPage.tsx +173 -173
  210. package/src/newModules/powerOnBehavior/PowerOnBehaviorActions.ts +106 -106
  211. package/src/newModules/powerOnBehavior/Router.ts +27 -27
  212. package/src/newModules/randomTime/RandomTimeActions.ts +238 -238
  213. package/src/newModules/randomTime/RandomTimeDetailPage.tsx +325 -325
  214. package/src/newModules/randomTime/RandomTimePage.tsx +299 -299
  215. package/src/newModules/randomTime/Router.ts +25 -25
  216. package/src/newModules/randomTime/Summary.tsx +116 -116
  217. package/src/newModules/remoteControl/RemoteControlActions.ts +5 -5
  218. package/src/newModules/remoteControl/RemoteControlPage.tsx +51 -51
  219. package/src/newModules/remoteControl/Router.ts +15 -15
  220. package/src/newModules/select/Route.ts +16 -16
  221. package/src/newModules/select/SelectPage.d.ts +12 -12
  222. package/src/newModules/select/SelectPage.tsx +137 -137
  223. package/src/newModules/sleepWakeUp/Interface.ts +69 -69
  224. package/src/newModules/sleepWakeUp/Router.ts +24 -24
  225. package/src/newModules/sleepWakeUp/SleepWakeUpActions.ts +317 -317
  226. package/src/newModules/sleepWakeUp/SleepWakeUpDetailPage.tsx +661 -661
  227. package/src/newModules/sleepWakeUp/SleepWakeUpPage.tsx +455 -455
  228. package/src/newModules/sleepWakeUp/utils.ts +253 -253
  229. package/src/newModules/swithInching/Router.ts +16 -16
  230. package/src/newModules/swithInching/SwithInching.tsx +231 -231
  231. package/src/newModules/swithInching/SwithInchingAction.ts +55 -55
  232. package/src/newModules/swithInching/pickerView.tsx +91 -91
  233. package/src/newModules/timeSchedule/Interface.ts +142 -142
  234. package/src/newModules/timeSchedule/Router.ts +25 -25
  235. package/src/newModules/timeSchedule/TimeScheduleActions.ts +53 -53
  236. package/src/newModules/timeSchedule/TimeScheduleDetailPage.tsx +648 -648
  237. package/src/newModules/timeSchedule/TimeSchedulePage.tsx +253 -253
  238. package/src/newModules/timeSchedule/components/ManuaSettings.tsx +460 -460
  239. package/src/newModules/timeSchedule/components/ScheduleCard.tsx +125 -125
  240. package/tsconfig.json +50 -50
@@ -1,248 +1,248 @@
1
- import React from 'react'
2
- import { FlatList, StyleSheet, Text, View } from 'react-native'
3
- import { MixSceneInfo } from './MixSceneBeans'
4
- import Page from '@ledvance/base/src/components/Page'
5
- import { Utils } from 'tuya-panel-kit'
6
- import { useNavigation, useRoute } from '@react-navigation/native'
7
- import { useCreation, useReactive } from 'ahooks'
8
- import I18n from '@ledvance/base/src/i18n'
9
- import Spacer from '@ledvance/base/src/components/Spacer'
10
- import RecommendMixMoodItem from './RecommendMixMoodItem'
11
- import { SceneNodeTransitionMode } from '@ledvance/ui-biz-bundle/src/modules/scene/SceneInfo'
12
- import { ui_biz_routerKey } from '../../../navigation/Routers'
13
- import { difference, head, map, range } from 'lodash'
14
- import { Result } from '@ledvance/base/src/models/modules/Result'
15
- import { MixMoodPageProps } from './MixMoodPage'
16
-
17
- const cx = Utils.RatioUtils.convertX
18
-
19
- export interface AddMixMoodPageParams {
20
- isStatic: boolean,
21
- mixMoods: MixSceneInfo[],
22
- modDeleteFlag: (mode: 'add' | 'edit' | 'del', isStatic: boolean, currentMood: MixSceneInfo) => Promise<Result<any>>
23
- moduleParams: MixMoodPageProps
24
- }
25
-
26
- interface RecommendMixMood {
27
- title: string
28
- mixMood?: MixSceneInfo
29
- }
30
-
31
- interface AddMoodPageState {
32
- recommendMixMoods: RecommendMixMood[]
33
- }
34
-
35
- const AddMixMoodPage = () => {
36
- const navigation = useNavigation()
37
- const routeParams = useRoute().params as AddMixMoodPageParams
38
- const { mainId, secondlyId } = useCreation(() => {
39
- const mixMoods: any[] = []
40
- routeParams.mixMoods.forEach(mix => {
41
- mixMoods.push(mix.mainLamp)
42
- mixMoods.push(mix.secondlyLamp)
43
- })
44
- const useIds = map(mixMoods, 'id')
45
- const idRange = range(0, 256)
46
- const mainId: number = head(difference(idRange, useIds)) ?? -1
47
- useIds.push(mainId)
48
- const secondlyId: number = head(difference(idRange, useIds)) ?? -1
49
- return { mainId, secondlyId }
50
- }, [routeParams.mixMoods])
51
- const state = useReactive<AddMoodPageState>({
52
- recommendMixMoods: getRecommendMixMoods(routeParams.isStatic, mainId, secondlyId),
53
- })
54
-
55
- return (
56
- <Page
57
- backText={I18n.getLang('add_new_static_mood_system_back')}
58
- headlineText={I18n.getLang(routeParams.isStatic ? 'add_new_static_mood_headline_text' : 'add_new_dynamic_mood_headline_text')}>
59
- <View style={styles.root}>
60
- <Text style={styles.desc}>
61
- {I18n.getLang(routeParams.isStatic ? 'add_new_static_mood_description_text' : 'add_new_dynamic_mood_description_text')}
62
- </Text>
63
- <FlatList
64
- style={{ flex: 1 }}
65
- data={state.recommendMixMoods}
66
- renderItem={({ item }) => {
67
- return (
68
- <RecommendMixMoodItem
69
- title={item.title}
70
- mixMood={item.mixMood}
71
- isStatic={routeParams.isStatic}
72
- onPress={() => {
73
- const params = {
74
- mode: 'add',
75
- isStatic: routeParams.isStatic,
76
- currentMood: !!item.mixMood ? item.mixMood : newMixMood(mainId, secondlyId, routeParams.isStatic),
77
- moods: routeParams.mixMoods,
78
- modDeleteFlag: routeParams.modDeleteFlag,
79
- moduleParams: routeParams.moduleParams
80
- }
81
- navigation.navigate(ui_biz_routerKey.ui_biz_mix_mood_edit, params)
82
- }} />
83
- )
84
- }}
85
- ItemSeparatorComponent={() => <Spacer />}
86
- ListHeaderComponent={() => <Spacer />}
87
- ListFooterComponent={() => <Spacer />}
88
- keyExtractor={item => item.title} />
89
- </View>
90
- </Page>
91
- )
92
- }
93
-
94
- export const defSecondly = {
95
- id: -1,
96
- speed: 100,
97
- mode: 10,
98
- nodes: [],
99
- version: 0,
100
- expand: 0,
101
- reserved1: 0,
102
- reserved2: 0,
103
- segmented: 0,
104
- loop: 0,
105
- excessive: 0,
106
- direction: 0,
107
- }
108
-
109
- const node = { h: 0, s: 100, v: 100, brightness: 100, colorTemp: 0 }
110
-
111
- function newMixMood(mainId: number, secondlyId: number, isStatic: boolean): MixSceneInfo {
112
- return {
113
- name: '',
114
- mainLamp: {
115
- id: mainId,
116
- speed: 100,
117
- mode: isStatic ? SceneNodeTransitionMode.Static : 1,
118
- nodes: isStatic ? [{...node}] : [{...node}, {...node}]
119
- },
120
- secondlyLamp: {
121
- ...defSecondly,
122
- id: secondlyId,
123
- speed: 100,
124
- mode: 10,
125
- nodes: [{...node, isColorNode: true}, {...node, isColorNode: true}]
126
- }
127
- }
128
- }
129
-
130
- function getRecommendMixMoods(isStatic: boolean, mainId: number, secondlyId: number): RecommendMixMood[] {
131
- if (isStatic) {
132
- return [
133
- {
134
- title: I18n.getLang('add_new_static_mood_field_headline_text1'),
135
- },
136
- {
137
- title: I18n.getLang('add_new_static_mood_field_headline_text2'),
138
- mixMood: {
139
- name: I18n.getLang('add_new_static_mood_field_headline_text2'),
140
- mainLamp: {
141
- id: mainId,
142
- mode: SceneNodeTransitionMode.Static,
143
- speed: 0,
144
- nodes: [
145
- { h: 0, s: 0, v: 0, brightness: 100, colorTemp: 20 }
146
- ]
147
- },
148
- secondlyLamp: {
149
- ...defSecondly,
150
- id: -1,
151
- speed: 100,
152
- mode: 10,
153
- nodes: []
154
- }
155
- },
156
- },
157
- {
158
- title: I18n.getLang('add_new_dynamic_mood_field_headline_text3'),
159
- mixMood: {
160
- name: I18n.getLang('add_new_dynamic_mood_field_headline_text3'),
161
- mainLamp: {
162
- id: mainId,
163
- mode: SceneNodeTransitionMode.Static,
164
- speed: 0,
165
- nodes: [
166
- { h: 0, s: 0, v: 0, brightness: 100, colorTemp: 40 },
167
- ]
168
- },
169
- secondlyLamp: {
170
- ...defSecondly,
171
- id: -1,
172
- speed: 100,
173
- mode: 10,
174
- nodes: []
175
- }
176
- },
177
- },
178
- {
179
- title: I18n.getLang('add_new_static_mood_field_headline_text4'),
180
- mixMood: {
181
- name: I18n.getLang('add_new_static_mood_field_headline_text4'),
182
- mainLamp: {
183
- id: mainId,
184
- mode: SceneNodeTransitionMode.Static,
185
- speed: 0,
186
- nodes: [
187
- { h: 0, s: 0, v: 0, brightness: 100, colorTemp: 50 },
188
- ]
189
- },
190
- secondlyLamp: {
191
- ...defSecondly,
192
- id: -1,
193
- speed: 100,
194
- mode: 10,
195
- nodes: []
196
- }
197
- },
198
- },
199
- ]
200
- }
201
- return [
202
- {
203
- title: I18n.getLang('add_new_static_mood_field_headline_text1'),
204
- },
205
- {
206
- title: I18n.getLang('add_new_static_mood_field_headline_text2'),
207
- mixMood: {
208
- name: I18n.getLang('add_new_static_mood_field_headline_text2'),
209
- mainLamp: {
210
- id: mainId,
211
- speed: 14,
212
- mode: SceneNodeTransitionMode.Jump,
213
- nodes: [
214
- { h: 0, s: 0, v: 0, brightness: 30, colorTemp: 30 },
215
- { h: 0, s: 0, v: 0, brightness: 60, colorTemp: 60 },
216
- { h: 0, s: 0, v: 0, brightness: 90, colorTemp: 90 }
217
- ]
218
- },
219
- secondlyLamp: {
220
- ...defSecondly,
221
- id: secondlyId,
222
- speed: 14,
223
- mode: 10,
224
- nodes: [
225
- { h: 60, s: 20, v: 100, brightness: 0, colorTemp: 0, isColorNode: true },
226
- { h: 180, s: 40, v: 100, brightness: 0, colorTemp: 0, isColorNode: true },
227
- { h: 300, s: 60, v: 100, brightness: 0, colorTemp: 0, isColorNode: true },
228
- ]
229
- },
230
- },
231
- },
232
- ]
233
- }
234
-
235
- const styles = StyleSheet.create({
236
- root: {
237
- flex: 1,
238
- flexDirection: 'column',
239
- },
240
- desc: {
241
- color: '#000',
242
- fontSize: cx(16),
243
- marginHorizontal: cx(24),
244
- marginTop: cx(12),
245
- },
246
- })
247
-
1
+ import React from 'react'
2
+ import { FlatList, StyleSheet, Text, View } from 'react-native'
3
+ import { MixSceneInfo } from './MixSceneBeans'
4
+ import Page from '@ledvance/base/src/components/Page'
5
+ import { Utils } from 'tuya-panel-kit'
6
+ import { useNavigation, useRoute } from '@react-navigation/native'
7
+ import { useCreation, useReactive } from 'ahooks'
8
+ import I18n from '@ledvance/base/src/i18n'
9
+ import Spacer from '@ledvance/base/src/components/Spacer'
10
+ import RecommendMixMoodItem from './RecommendMixMoodItem'
11
+ import { SceneNodeTransitionMode } from '@ledvance/ui-biz-bundle/src/modules/scene/SceneInfo'
12
+ import { ui_biz_routerKey } from '../../../navigation/Routers'
13
+ import { difference, head, map, range } from 'lodash'
14
+ import { Result } from '@ledvance/base/src/models/modules/Result'
15
+ import { MixMoodPageProps } from './MixMoodPage'
16
+
17
+ const cx = Utils.RatioUtils.convertX
18
+
19
+ export interface AddMixMoodPageParams {
20
+ isStatic: boolean,
21
+ mixMoods: MixSceneInfo[],
22
+ modDeleteFlag: (mode: 'add' | 'edit' | 'del', isStatic: boolean, currentMood: MixSceneInfo) => Promise<Result<any>>
23
+ moduleParams: MixMoodPageProps
24
+ }
25
+
26
+ interface RecommendMixMood {
27
+ title: string
28
+ mixMood?: MixSceneInfo
29
+ }
30
+
31
+ interface AddMoodPageState {
32
+ recommendMixMoods: RecommendMixMood[]
33
+ }
34
+
35
+ const AddMixMoodPage = () => {
36
+ const navigation = useNavigation()
37
+ const routeParams = useRoute().params as AddMixMoodPageParams
38
+ const { mainId, secondlyId } = useCreation(() => {
39
+ const mixMoods: any[] = []
40
+ routeParams.mixMoods.forEach(mix => {
41
+ mixMoods.push(mix.mainLamp)
42
+ mixMoods.push(mix.secondlyLamp)
43
+ })
44
+ const useIds = map(mixMoods, 'id')
45
+ const idRange = range(0, 256)
46
+ const mainId: number = head(difference(idRange, useIds)) ?? -1
47
+ useIds.push(mainId)
48
+ const secondlyId: number = head(difference(idRange, useIds)) ?? -1
49
+ return { mainId, secondlyId }
50
+ }, [routeParams.mixMoods])
51
+ const state = useReactive<AddMoodPageState>({
52
+ recommendMixMoods: getRecommendMixMoods(routeParams.isStatic, mainId, secondlyId),
53
+ })
54
+
55
+ return (
56
+ <Page
57
+ backText={I18n.getLang('add_new_static_mood_system_back')}
58
+ headlineText={I18n.getLang(routeParams.isStatic ? 'add_new_static_mood_headline_text' : 'add_new_dynamic_mood_headline_text')}>
59
+ <View style={styles.root}>
60
+ <Text style={styles.desc}>
61
+ {I18n.getLang(routeParams.isStatic ? 'add_new_static_mood_description_text' : 'add_new_dynamic_mood_description_text')}
62
+ </Text>
63
+ <FlatList
64
+ style={{ flex: 1 }}
65
+ data={state.recommendMixMoods}
66
+ renderItem={({ item }) => {
67
+ return (
68
+ <RecommendMixMoodItem
69
+ title={item.title}
70
+ mixMood={item.mixMood}
71
+ isStatic={routeParams.isStatic}
72
+ onPress={() => {
73
+ const params = {
74
+ mode: 'add',
75
+ isStatic: routeParams.isStatic,
76
+ currentMood: !!item.mixMood ? item.mixMood : newMixMood(mainId, secondlyId, routeParams.isStatic),
77
+ moods: routeParams.mixMoods,
78
+ modDeleteFlag: routeParams.modDeleteFlag,
79
+ moduleParams: routeParams.moduleParams
80
+ }
81
+ navigation.navigate(ui_biz_routerKey.ui_biz_mix_mood_edit, params)
82
+ }} />
83
+ )
84
+ }}
85
+ ItemSeparatorComponent={() => <Spacer />}
86
+ ListHeaderComponent={() => <Spacer />}
87
+ ListFooterComponent={() => <Spacer />}
88
+ keyExtractor={item => item.title} />
89
+ </View>
90
+ </Page>
91
+ )
92
+ }
93
+
94
+ export const defSecondly = {
95
+ id: -1,
96
+ speed: 100,
97
+ mode: 10,
98
+ nodes: [],
99
+ version: 0,
100
+ expand: 0,
101
+ reserved1: 0,
102
+ reserved2: 0,
103
+ segmented: 0,
104
+ loop: 0,
105
+ excessive: 0,
106
+ direction: 0,
107
+ }
108
+
109
+ const node = { h: 0, s: 100, v: 100, brightness: 100, colorTemp: 0 }
110
+
111
+ function newMixMood(mainId: number, secondlyId: number, isStatic: boolean): MixSceneInfo {
112
+ return {
113
+ name: '',
114
+ mainLamp: {
115
+ id: mainId,
116
+ speed: 100,
117
+ mode: isStatic ? SceneNodeTransitionMode.Static : 1,
118
+ nodes: isStatic ? [{...node}] : [{...node}, {...node}]
119
+ },
120
+ secondlyLamp: {
121
+ ...defSecondly,
122
+ id: secondlyId,
123
+ speed: 100,
124
+ mode: 10,
125
+ nodes: [{...node, isColorNode: true}, {...node, isColorNode: true}]
126
+ }
127
+ }
128
+ }
129
+
130
+ function getRecommendMixMoods(isStatic: boolean, mainId: number, secondlyId: number): RecommendMixMood[] {
131
+ if (isStatic) {
132
+ return [
133
+ {
134
+ title: I18n.getLang('add_new_static_mood_field_headline_text1'),
135
+ },
136
+ {
137
+ title: I18n.getLang('add_new_static_mood_field_headline_text2'),
138
+ mixMood: {
139
+ name: I18n.getLang('add_new_static_mood_field_headline_text2'),
140
+ mainLamp: {
141
+ id: mainId,
142
+ mode: SceneNodeTransitionMode.Static,
143
+ speed: 0,
144
+ nodes: [
145
+ { h: 0, s: 0, v: 0, brightness: 100, colorTemp: 20 }
146
+ ]
147
+ },
148
+ secondlyLamp: {
149
+ ...defSecondly,
150
+ id: -1,
151
+ speed: 100,
152
+ mode: 10,
153
+ nodes: []
154
+ }
155
+ },
156
+ },
157
+ {
158
+ title: I18n.getLang('add_new_dynamic_mood_field_headline_text3'),
159
+ mixMood: {
160
+ name: I18n.getLang('add_new_dynamic_mood_field_headline_text3'),
161
+ mainLamp: {
162
+ id: mainId,
163
+ mode: SceneNodeTransitionMode.Static,
164
+ speed: 0,
165
+ nodes: [
166
+ { h: 0, s: 0, v: 0, brightness: 100, colorTemp: 40 },
167
+ ]
168
+ },
169
+ secondlyLamp: {
170
+ ...defSecondly,
171
+ id: -1,
172
+ speed: 100,
173
+ mode: 10,
174
+ nodes: []
175
+ }
176
+ },
177
+ },
178
+ {
179
+ title: I18n.getLang('add_new_static_mood_field_headline_text4'),
180
+ mixMood: {
181
+ name: I18n.getLang('add_new_static_mood_field_headline_text4'),
182
+ mainLamp: {
183
+ id: mainId,
184
+ mode: SceneNodeTransitionMode.Static,
185
+ speed: 0,
186
+ nodes: [
187
+ { h: 0, s: 0, v: 0, brightness: 100, colorTemp: 50 },
188
+ ]
189
+ },
190
+ secondlyLamp: {
191
+ ...defSecondly,
192
+ id: -1,
193
+ speed: 100,
194
+ mode: 10,
195
+ nodes: []
196
+ }
197
+ },
198
+ },
199
+ ]
200
+ }
201
+ return [
202
+ {
203
+ title: I18n.getLang('add_new_static_mood_field_headline_text1'),
204
+ },
205
+ {
206
+ title: I18n.getLang('add_new_static_mood_field_headline_text2'),
207
+ mixMood: {
208
+ name: I18n.getLang('add_new_static_mood_field_headline_text2'),
209
+ mainLamp: {
210
+ id: mainId,
211
+ speed: 14,
212
+ mode: SceneNodeTransitionMode.Jump,
213
+ nodes: [
214
+ { h: 0, s: 0, v: 0, brightness: 30, colorTemp: 30 },
215
+ { h: 0, s: 0, v: 0, brightness: 60, colorTemp: 60 },
216
+ { h: 0, s: 0, v: 0, brightness: 90, colorTemp: 90 }
217
+ ]
218
+ },
219
+ secondlyLamp: {
220
+ ...defSecondly,
221
+ id: secondlyId,
222
+ speed: 14,
223
+ mode: 10,
224
+ nodes: [
225
+ { h: 60, s: 20, v: 100, brightness: 0, colorTemp: 0, isColorNode: true },
226
+ { h: 180, s: 40, v: 100, brightness: 0, colorTemp: 0, isColorNode: true },
227
+ { h: 300, s: 60, v: 100, brightness: 0, colorTemp: 0, isColorNode: true },
228
+ ]
229
+ },
230
+ },
231
+ },
232
+ ]
233
+ }
234
+
235
+ const styles = StyleSheet.create({
236
+ root: {
237
+ flex: 1,
238
+ flexDirection: 'column',
239
+ },
240
+ desc: {
241
+ color: '#000',
242
+ fontSize: cx(16),
243
+ marginHorizontal: cx(24),
244
+ marginTop: cx(12),
245
+ },
246
+ })
247
+
248
248
  export default AddMixMoodPage