@ledvance/ui-biz-bundle 1.1.59 → 1.1.61

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 (120) hide show
  1. package/package.json +1 -1
  2. package/src/modules/flags/FlagEditPage.tsx +22 -14
  3. package/src/modules/flags/FlagPage.tsx +7 -18
  4. package/src/modules/mood/DynamicMoodEditorPage.tsx +12 -14
  5. package/src/modules/mood/FantasyMoodEditPage.tsx +12 -14
  6. package/src/modules/mood/StaticMoodEditorPage.tsx +12 -13
  7. package/src/modules/timer/TimerPage.tsx +58 -56
  8. package/src/newModules/biorhythm/BiorhythmActions.ts +374 -0
  9. package/src/newModules/biorhythm/BiorhythmBean.ts +230 -0
  10. package/src/newModules/biorhythm/BiorhythmEditPage.tsx +267 -0
  11. package/src/newModules/biorhythm/BiorhythmPage.tsx +638 -0
  12. package/src/newModules/biorhythm/IconSelect.tsx +85 -0
  13. package/src/newModules/biorhythm/Router.ts +34 -0
  14. package/src/newModules/biorhythm/circular/ItemIcon.d.ts +22 -0
  15. package/src/newModules/biorhythm/circular/ItemIcon.tsx +173 -0
  16. package/src/newModules/biorhythm/circular/Progress.d.ts +24 -0
  17. package/src/newModules/biorhythm/circular/Progress.tsx +372 -0
  18. package/src/newModules/biorhythm/circular/TimeCircular.d.ts +11 -0
  19. package/src/newModules/biorhythm/circular/TimeCircular.tsx +64 -0
  20. package/src/newModules/biorhythm/circular/biorhythm_plantimer.png +0 -0
  21. package/src/newModules/biorhythm/circular/rhythm_icon.png +0 -0
  22. package/src/newModules/biorhythm/iconListData.ts +30 -0
  23. package/src/newModules/biorhythm/pIdList.ts +36 -0
  24. package/src/newModules/biorhythm/res/BiologicalRes.d.ts +43 -0
  25. package/src/newModules/biorhythm/res/BiologicalRes.ts +42 -0
  26. package/src/newModules/biorhythm/res/Biological_Rhythm.png +0 -0
  27. package/src/newModules/biorhythm/res/Biological_Rhythm_12.png +0 -0
  28. package/src/newModules/biorhythm/res/Biological_Rhythm_new.png +0 -0
  29. package/src/newModules/biorhythm/res/Biological_Rhythm_new_12.png +0 -0
  30. package/src/newModules/biorhythm/res/iconsMaterialOutlinedAccountGroups.png +0 -0
  31. package/src/newModules/biorhythm/res/iconsMaterialOutlinedAccountGroups@2x.png +0 -0
  32. package/src/newModules/biorhythm/res/iconsMaterialOutlinedAccountGroups@3x.png +0 -0
  33. package/src/newModules/biorhythm/res/iconsMaterialOutlinedArrowsNavAdd.png +0 -0
  34. package/src/newModules/biorhythm/res/iconsMaterialOutlinedArrowsNavAdd@2x.png +0 -0
  35. package/src/newModules/biorhythm/res/iconsMaterialOutlinedArrowsNavAdd@3x.png +0 -0
  36. package/src/newModules/biorhythm/res/iconsMaterialOutlinedArrowsNavArrowForwardIos.png +0 -0
  37. package/src/newModules/biorhythm/res/iconsMaterialOutlinedArrowsNavArrowForwardIos@2x.png +0 -0
  38. package/src/newModules/biorhythm/res/iconsMaterialOutlinedArrowsNavArrowForwardIos@3x.png +0 -0
  39. package/src/newModules/biorhythm/res/iconsMaterialOutlinedBuildingsHome.png +0 -0
  40. package/src/newModules/biorhythm/res/iconsMaterialOutlinedBuildingsHome@2x.png +0 -0
  41. package/src/newModules/biorhythm/res/iconsMaterialOutlinedBuildingsHome@3x.png +0 -0
  42. package/src/newModules/biorhythm/res/iconsMaterialOutlinedEditorFavoriteBorder.png +0 -0
  43. package/src/newModules/biorhythm/res/iconsMaterialOutlinedEditorFavoriteBorder@2x.png +0 -0
  44. package/src/newModules/biorhythm/res/iconsMaterialOutlinedEditorFavoriteBorder@3x.png +0 -0
  45. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherBed.png +0 -0
  46. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherBed@2x.png +0 -0
  47. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherBed@3x.png +0 -0
  48. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherBusinessCenter.png +0 -0
  49. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherBusinessCenter@2x.png +0 -0
  50. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherBusinessCenter@3x.png +0 -0
  51. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherChair.png +0 -0
  52. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherChair@2x.png +0 -0
  53. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherChair@3x.png +0 -0
  54. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherCoffee.png +0 -0
  55. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherCoffee@2x.png +0 -0
  56. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherCoffee@3x.png +0 -0
  57. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherDirectionsCar.png +0 -0
  58. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherDirectionsCar@2x.png +0 -0
  59. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherDirectionsCar@3x.png +0 -0
  60. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherFitnessCenter.png +0 -0
  61. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherFitnessCenter@2x.png +0 -0
  62. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherFitnessCenter@3x.png +0 -0
  63. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherHeadphones.png +0 -0
  64. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherHeadphones@2x.png +0 -0
  65. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherHeadphones@3x.png +0 -0
  66. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherMenuBook.png +0 -0
  67. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherMenuBook@2x.png +0 -0
  68. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherMenuBook@3x.png +0 -0
  69. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherMusicNote.png +0 -0
  70. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherMusicNote@2x.png +0 -0
  71. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherMusicNote@3x.png +0 -0
  72. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherNotificationsNone.png +0 -0
  73. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherNotificationsNone@2x.png +0 -0
  74. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherNotificationsNone@3x.png +0 -0
  75. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherPottedPlant.png +0 -0
  76. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherPottedPlant@2x.png +0 -0
  77. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherPottedPlant@3x.png +0 -0
  78. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherRestaurant.png +0 -0
  79. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherRestaurant@2x.png +0 -0
  80. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherRestaurant@3x.png +0 -0
  81. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherSentimentSatisfied.png +0 -0
  82. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherSentimentSatisfied@2x.png +0 -0
  83. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherSentimentSatisfied@3x.png +0 -0
  84. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherSportsEsports.png +0 -0
  85. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherSportsEsports@2x.png +0 -0
  86. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherSportsEsports@3x.png +0 -0
  87. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherTv.png +0 -0
  88. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherTv@2x.png +0 -0
  89. package/src/newModules/biorhythm/res/iconsMaterialOutlinedOtherTv@3x.png +0 -0
  90. package/src/newModules/biorhythm/res/iconsMaterialOutlinedTimeAccessAlarm.png +0 -0
  91. package/src/newModules/biorhythm/res/iconsMaterialOutlinedTimeAccessAlarm@2x.png +0 -0
  92. package/src/newModules/biorhythm/res/iconsMaterialOutlinedTimeAccessAlarm@3x.png +0 -0
  93. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherBedtime.png +0 -0
  94. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherBedtime@2x.png +0 -0
  95. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherBedtime@3x.png +0 -0
  96. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherPartlyCloudyDay.png +0 -0
  97. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherPartlyCloudyDay@2x.png +0 -0
  98. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherPartlyCloudyDay@3x.png +0 -0
  99. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherStarOutline.png +0 -0
  100. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherStarOutline@2x.png +0 -0
  101. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherStarOutline@3x.png +0 -0
  102. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherWbSunny.png +0 -0
  103. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherWbSunny@2x.png +0 -0
  104. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherWbSunny@3x.png +0 -0
  105. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherWbTwilight.png +0 -0
  106. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherWbTwilight@2x.png +0 -0
  107. package/src/newModules/biorhythm/res/iconsMaterialOutlinedWheatherWbTwilight@3x.png +0 -0
  108. package/src/newModules/energyConsumption/EnergyConsumptionDetail.tsx +84 -83
  109. package/src/newModules/energyConsumption/EnergyConsumptionPage.tsx +133 -132
  110. package/src/newModules/energyConsumption/component/EnergyModal.tsx +119 -117
  111. package/src/newModules/energyConsumption/component/Overview.tsx +38 -36
  112. package/src/newModules/mood/AddMoodPage.tsx +37 -21
  113. package/src/newModules/mood/DynamicMoodEditorPage.tsx +7 -2
  114. package/src/newModules/mood/MixDynamicMoodEditor.tsx +8 -2
  115. package/src/newModules/mood/StaticMoodEditorPage.tsx +9 -2
  116. package/src/newModules/timeSchedule/Interface.ts +1 -0
  117. package/src/newModules/timeSchedule/TimeScheduleDetailPage.tsx +203 -202
  118. package/src/newModules/timeSchedule/TimeSchedulePage.tsx +35 -34
  119. package/src/newModules/timeSchedule/components/ManuaSettings.tsx +11 -10
  120. package/src/newModules/timeSchedule/components/ScheduleCard.tsx +63 -60
@@ -0,0 +1,372 @@
1
+ import React, { Component } from 'react'
2
+ import { StyleSheet, View } from 'react-native'
3
+
4
+ import ItemIcon from './ItemIcon'
5
+ import Svg, { Circle } from 'react-native-svg'
6
+ import iconList from '../iconListData'
7
+ import { cctToColor } from '@ledvance/base/src/utils/cctUtils'
8
+
9
+ export default class Progress extends Component<any> {
10
+ timeIconList: any[]
11
+ timer: any
12
+ state: any
13
+
14
+ constructor(props) {
15
+ super(props)
16
+ const { timeIconList } = this.props
17
+
18
+ this.timeIconList = timeIconList.map(item => ({ ...item }))
19
+ this.state = {
20
+ iconDataList: this.timeIconList,
21
+ }
22
+ }
23
+
24
+ UNSAFE_componentWillReceiveProps(nextProps) {
25
+ if (nextProps) {
26
+ const { timeIconList, planEdit } = nextProps
27
+ if (timeIconList.length !== this.state.iconDataList.length || planEdit) {
28
+ this.timeIconList = timeIconList.map(item => ({ ...item }))
29
+ this.setState({ iconDataList: this.timeIconList })
30
+ }
31
+ }
32
+ }
33
+
34
+ componentWillUnmount() {
35
+ if (this.timer) {
36
+ clearTimeout(this.timer)
37
+ this.timer = null
38
+ }
39
+ }
40
+
41
+ render() {
42
+ //radius 大圆半径,annularHeight 环宽
43
+ const { radius, annularHeight } = this.props
44
+ const { iconDataList } = this.state
45
+ //换算颜色
46
+ if (iconDataList && iconDataList.length > 0) {
47
+ //排序从小到大
48
+ let min
49
+ for (let i = 0; i < iconDataList.length; i++) {
50
+ for (let j = i; j < iconDataList.length; j++) {
51
+ const iData = iconDataList[i].newStartTime ? iconDataList[i].newStartTime : iconDataList[i].time
52
+ const jData = iconDataList[j].newStartTime ? iconDataList[j].newStartTime : iconDataList[j].time
53
+ if (iData > jData) {
54
+ min = iconDataList[j]
55
+ iconDataList[j] = iconDataList[i]
56
+ iconDataList[i] = min
57
+ }
58
+ }
59
+ }
60
+
61
+ //取出色温、亮度
62
+ for (const elem of iconDataList) {
63
+ const { action } = elem
64
+
65
+ if (elem.light) {
66
+ continue
67
+ }
68
+
69
+ if (elem.colorTemp) {
70
+ continue
71
+ }
72
+
73
+ action.map((item) => {
74
+ const { uri, startValue } = item
75
+ if (uri.indexOf('Brightness') !== -1) {
76
+ elem.light = startValue
77
+ } else if (uri.indexOf('ColorTemperature') !== -1) {
78
+ let clrTemp = (startValue - 2700) / 38
79
+ let colorObj = this.getColorTempStringVale(clrTemp) //占比换算成色值
80
+ //console.log(' 色值数据 ----------> ',colorObj)
81
+
82
+ elem.colorTemp = colorObj.normalColor
83
+ elem.rgbColor = colorObj.rgbColor
84
+ }
85
+ })
86
+ }
87
+ }
88
+
89
+ //有多少个时间点就分为几段弧
90
+ let linearGradientList: any[] = []
91
+ for (let c = 0; c < iconDataList.length; c++) {
92
+ let tmpIndex = c + 1
93
+ if (tmpIndex > iconDataList.length - 1) {
94
+ tmpIndex = 0
95
+ }
96
+ let statRGBColer = iconDataList[c].rgbColor
97
+ let iconDataRgbClr = iconDataList[tmpIndex].rgbColor
98
+
99
+ let startTimes = iconDataList[c].time
100
+ let endTimes = iconDataList[tmpIndex].time
101
+
102
+ let totalMins = Math.abs(endTimes - startTimes)
103
+ if (tmpIndex === 0) {
104
+ totalMins = 1440 - startTimes + endTimes
105
+ }
106
+
107
+ let circleLength = (Math.PI * 2) / (24 * 60) * (totalMins)
108
+ let timeAngle = 360 / (24 * 60) * startTimes
109
+
110
+ // console.log('--- 开始时间 ---------->: ',iconDataList[c].startTime,'分钟数:',startTimes);
111
+ // console.log('--- 结束时间 ---------->: ',iconDataList[tmpIndex].startTime,'分钟数:',endTimes);
112
+ // console.log('--- 分段时长 ----------> ',totalMins);
113
+ // console.log('--- 弧长 ----------> ',circleLength);
114
+
115
+ linearGradientList.push({
116
+ startRbg: statRGBColer,
117
+ endRgb: this.props.gradient && statRGBColer || iconDataRgbClr,
118
+ circleLength: circleLength,
119
+ startAngle: timeAngle,
120
+ brightness: iconDataList[c].brightness
121
+ })
122
+ }
123
+
124
+ //console.log('--- 分段数据 ----------> ',linearGradientList)
125
+ let aCircleList: any[] = []
126
+ for (let l = 0; l < linearGradientList.length; l++) {
127
+ const elem = linearGradientList[l]
128
+ let startRGB = elem.startRbg
129
+ let endRGB = elem.endRgb
130
+ const brightness = elem.brightness || 0;
131
+ //兼容不支持色温的灯
132
+ if (!startRGB || !endRGB) {
133
+ startRGB = [122, 122, 122]
134
+ endRGB = [122, 122, 122]
135
+ }
136
+
137
+ //计算各时间段颜色变化值
138
+ const arcArr: () => any = () => {
139
+ let progressLength = (this.props.radius - 18) * elem.circleLength //每段的弧长
140
+ const step = 60 // 设置到100则已经比较难看出来颜色断层
141
+ const gradientColor = (startRGB, endRGB, step) => {
142
+ let startR = startRGB[0]
143
+ let startG = startRGB[1]
144
+ let startB = startRGB[2]
145
+ let endR = endRGB[0]
146
+ let endG = endRGB[1]
147
+ let endB = endRGB[2]
148
+ let sR = (endR - startR) / step // 总差值
149
+ let sG = (endG - startG) / step
150
+ let sB = (endB - startB) / step
151
+ let colorArr: any[] = []
152
+ for (let i = 0; i < step; i++) {
153
+ let color = Number(brightness) === 0 ? 'rgb(0, 0, 0)' : (this.props.isSupportTemperature && cctToColor(1)) || `rgb(${parseInt(sR * i + startR, 10)},
154
+ ${parseInt(sG * i + startG, 10)},
155
+ ${parseInt(sB * i + startB, 10)},
156
+ ${Number(brightness) / 100}
157
+ )`
158
+
159
+ colorArr.push(color)
160
+ }
161
+ return colorArr
162
+ }
163
+
164
+ let colorArr = gradientColor(startRGB, endRGB, step)
165
+ // 计算每个步进中的弧长
166
+ let arcLengthArr = colorArr.map((color, index) => ({
167
+ arcLength: [index * (progressLength / step), 10000000],
168
+ color: color,
169
+ arcAngle: elem.startAngle,
170
+ }))
171
+
172
+ //circleTotalLength = circleTotalLength + progressLength;
173
+ arcLengthArr.reverse() //数组倒序
174
+ return arcLengthArr
175
+ }
176
+
177
+ aCircleList = aCircleList.concat(arcArr())
178
+ }
179
+
180
+ let radiusValue = (this.props.radius).toString() //圆心坐标
181
+ let circleR = (this.props.radius - 22).toString() // 半径长度 (不包含宽度值)
182
+ const circleView = aCircleList.map((d, index) => {
183
+ return (
184
+ <Circle
185
+ key={`c${index}`}
186
+ cx={radiusValue}
187
+ cy={radiusValue}
188
+ r={circleR}
189
+ stroke={d.color}
190
+ strokeDasharray={d.arcLength}
191
+ strokeWidth="44"
192
+ rotation={-(90 - d.arcAngle)}
193
+ originX={radiusValue}
194
+ originY={radiusValue}
195
+ //strokeOpacity = {1.0}
196
+ strokeLinecap="butt"
197
+ fill="none"
198
+ />
199
+ )
200
+ })
201
+
202
+ const setImg = (id) => {
203
+ const imgIcon = iconList?.find(val => val?.id === id)?.icon
204
+ return imgIcon
205
+ }
206
+
207
+ return (
208
+ <View /*style = {{ backgroundColor: '#000000'}}*/>
209
+
210
+ <Svg width={this.props.radius * 2} height={this.props.radius * 2}>
211
+
212
+ {iconDataList.length > 0 ? circleView :
213
+ <Circle
214
+ cx={radiusValue}
215
+ cy={radiusValue}
216
+ r={circleR}
217
+ strokeWidth="44"
218
+ stroke={'#DEDEDE'}
219
+ fill={'none'} />}
220
+ </Svg>
221
+
222
+ {/*----- 环上图标 ------*/}
223
+ {this.timeIconList && this.timeIconList.map((item) => {
224
+
225
+ const { time } = item
226
+
227
+ //时间对应的弧度
228
+ let timeAngle = (Math.PI * 2) / (24 * 60) * time
229
+ let newRadius = radius - annularHeight + 22
230
+
231
+ //1.5 为解决将圆当作一个点处理代理的误差
232
+ let leftValeu = newRadius + (Math.sin(timeAngle) * newRadius) + 1.5
233
+ let topValue = newRadius - (Math.cos(timeAngle) * newRadius) + 1.5
234
+ const type = typeof item?.icon === 'string'
235
+
236
+ return (
237
+ <ItemIcon
238
+ key={item.index}
239
+ leftValeu={leftValeu}
240
+ topValue={topValue}
241
+ imageSource={setImg(item?.iconId) || type && { uri: item?.icon } || item?.icon}
242
+ circularRadius={newRadius}
243
+ onPanMoving={(_xValue, _yValue, angle) => {
244
+
245
+ if (this.timer) {
246
+ clearTimeout(this.timer)
247
+ this.timer = null
248
+ }
249
+
250
+ //角度转换为表盘时间
251
+ let angleValue = angle
252
+ let angleMins = 24 * 60 / 360//每度多少分钟
253
+ let totalMins = Math.abs(angleMins * angleValue)
254
+ item.time = totalMins
255
+
256
+ this.setState({ iconDataList: [].concat(iconDataList) })
257
+ }}
258
+
259
+ onPanMoveEnd={() => {
260
+ const { ret, failMinutes } = this.checkTimesFormat(item.time)
261
+ if (!ret) {
262
+ let changeMinutes = (failMinutes || 0) + 60
263
+ if (changeMinutes > 60 * 24) {
264
+ changeMinutes = 30
265
+ }
266
+ item.time = changeMinutes
267
+ this.setState({ iconDataList: [].concat(iconDataList) }, () => {
268
+ this.playTimeChangeCallBack(item.index, Math.round(changeMinutes))
269
+ })
270
+ } else {
271
+ this.playTimeChangeCallBack(item.index, Math.round(item.time))
272
+ }
273
+ }}
274
+ />
275
+ )
276
+ })}
277
+
278
+ {/*----- 环内视图 ------*/}
279
+ <View
280
+ style={[
281
+ styles.contentView,
282
+ {
283
+ left: (this.props.annularHeight),
284
+ top: this.props.annularHeight,
285
+ width: (this.props.radius - this.props.annularHeight) * 2,
286
+ height: (this.props.radius - this.props.annularHeight) * 2,
287
+ borderRadius: this.props.radius,
288
+ },
289
+ ]}>
290
+ {this.props.children}
291
+ </View>
292
+ </View>
293
+ )
294
+ }
295
+
296
+ //时间调整回调业务层
297
+ playTimeChangeCallBack(id: number, time: number) {
298
+ const { onPanMoved } = this.props
299
+
300
+ if (this.timer) {
301
+ clearTimeout(this.timer)
302
+ this.timer = null
303
+ }
304
+
305
+ //延时0.5秒后更新计划
306
+ this.timer = setTimeout(() => {
307
+ onPanMoved && onPanMoved(id, time)
308
+ }, 500)
309
+ }
310
+
311
+ //判断时间是否合法
312
+ checkTimesFormat(newTimeMinutes) {
313
+ for (const elem of this.timeIconList) {
314
+ const { time } = elem
315
+ if (time === newTimeMinutes) {
316
+ continue
317
+ }
318
+ if (Math.abs(time - newTimeMinutes) < 15) {
319
+ return { ret: false, failMinutes: time }
320
+ }
321
+ }
322
+
323
+ return { ret: true }
324
+ }
325
+
326
+ getColorTempStringVale(colorTempInt) {
327
+ // 蓝色:80CBFF 黄色:FFCD66
328
+ let limitBottomColor = '#FFCD66'
329
+ let limitTopColor = '#80CBFF'
330
+
331
+ if (parseInt(colorTempInt) >= 100) {
332
+ return { rgbColor: [128, 203, 255], normalColor: limitTopColor }
333
+ }
334
+
335
+ if (parseInt(colorTempInt) <= 0) {
336
+ return { rgbColor: [255, 205, 102], normalColor: limitBottomColor }
337
+ }
338
+
339
+ let redStat = parseInt('FF', 16)
340
+ let redEnd = parseInt('80', 16)
341
+ let redStep = Math.round(redStat + ((redEnd - redStat) / 100) * colorTempInt)
342
+
343
+ let gStart = parseInt('CD', 16)
344
+ let gEnd = parseInt('CB', 16)
345
+ let gStep = Math.round(gStart + ((gEnd - gStart) / 100) * colorTempInt)
346
+
347
+ let bStart = parseInt('66', 16)
348
+ let bEnd = parseInt('FF', 16)
349
+ let bStep = Math.round(bStart + ((bEnd - bStart) / 100) * colorTempInt)
350
+
351
+ let colorVale = '#' + redStep.toString(16) + gStep.toString(16) + bStep.toString(16)
352
+ // console.log('色温值 -----------> colorVale: ',colorVale);
353
+
354
+ let colorRGBAry = [redStep, gStep, bStep]
355
+ return { rgbColor: colorRGBAry, normalColor: colorVale }
356
+ }
357
+ }
358
+
359
+ const styles = StyleSheet.create({
360
+ contentView: {
361
+ position: 'absolute',
362
+ justifyContent: 'center',
363
+ alignItems: 'center',
364
+ backgroundColor: '#FFFFFF',
365
+ borderRadius: 130,
366
+ },
367
+ angleView: {
368
+ height: 260,
369
+ width: 260,
370
+ borderRadius: 130,
371
+ },
372
+ })
@@ -0,0 +1,11 @@
1
+ import { Plan } from '../BiorhythmBean';
2
+ interface TimeCircularProps {
3
+ planList: Plan[];
4
+ onPanMoved?: (id: number, time: string) => void;
5
+ planEdit?: Boolean;
6
+ replaceStatus?: Boolean;
7
+ gradient?: Boolean;
8
+ isSupportTemperature: boolean;
9
+ }
10
+ declare const TimeCircular: (props?: TimeCircularProps) => any;
11
+ export default TimeCircular;
@@ -0,0 +1,64 @@
1
+ import React from 'react'
2
+ import {Image, StyleSheet, View} from 'react-native'
3
+ import Progress from './Progress'
4
+ import {Plan} from '../BiorhythmBean'
5
+ import BiologicalRes from '../res/BiologicalRes'
6
+ import { useCreation } from 'ahooks'
7
+ import { useSystemTimeFormate } from '@ledvance/base/src/models/modules/NativePropsSlice'
8
+
9
+ interface TimeCircularProps {
10
+ planList: Plan[]
11
+ onPanMoved?: (id: number, time: number) => void
12
+ planEdit?: Boolean
13
+ replaceStatus?: Boolean
14
+ gradient?: Boolean
15
+ isSupportTemperature: boolean
16
+ }
17
+
18
+ const TimeCircular = (
19
+ props: TimeCircularProps = {
20
+ planList: [],
21
+ planEdit: false,
22
+ replaceStatus: false,
23
+ gradient: false,
24
+ isSupportTemperature: false,
25
+ },
26
+ ) => {
27
+ const {planList, onPanMoved, planEdit, replaceStatus, gradient, isSupportTemperature} = props
28
+ const styles = dynamicStyleSheet
29
+ const is24Hour = useSystemTimeFormate()
30
+ const enabledPlanList = planList.filter(plan => plan.enable)
31
+ const timeDialPic = useCreation(() =>{
32
+ if(is24Hour){
33
+ return replaceStatus ? BiologicalRes.ic_warning_amber_sun : BiologicalRes.ic_warning_amber_new
34
+ }else{
35
+ return replaceStatus ? BiologicalRes.ic_warning_amber_sun_12 : BiologicalRes.ic_warning_amber_new_12
36
+ }
37
+ }, [is24Hour, replaceStatus])
38
+
39
+ return (
40
+ <View style={styles.container}>
41
+ <Progress
42
+ radius={130}
43
+ annularHeight={44}
44
+ timeIconList={enabledPlanList}
45
+ planEdit={planEdit}
46
+ gradient={gradient}
47
+ isSupportTemperature={isSupportTemperature}
48
+ onPanMoved={(id: number, time: number) => {
49
+ onPanMoved && onPanMoved(id, time)
50
+ }}>
51
+ <Image source={timeDialPic} style={{width: 172, height: 172}}/>
52
+ </Progress>
53
+ </View>
54
+ )
55
+ }
56
+
57
+ const dynamicStyleSheet = StyleSheet.create({
58
+ container: {
59
+ alignItems: 'center',
60
+ justifyContent: 'center',
61
+ },
62
+ })
63
+
64
+ export default TimeCircular
@@ -0,0 +1,30 @@
1
+ import BiologicalRes from './res/BiologicalRes'
2
+
3
+ const iconList = [
4
+ {id: 1, icon: BiologicalRes.biorhythom_Icon1, selectStatus: false, disabled: false},
5
+ {id: 2, icon: BiologicalRes.biorhythom_Icon2, selectStatus: false, disabled: false},
6
+ {id: 3, icon: BiologicalRes.biorhythom_Icon3, selectStatus: false, disabled: false},
7
+ {id: 4, icon: BiologicalRes.biorhythom_Icon4, selectStatus: false, disabled: false},
8
+ {id: 5, icon: BiologicalRes.biorhythom_Icon5, selectStatus: false, disabled: false},
9
+ {id: 6, icon: BiologicalRes.biorhythom_Icon6, selectStatus: false, disabled: false},
10
+ {id: 7, icon: BiologicalRes.biorhythom_Icon7, selectStatus: false, disabled: false},
11
+ {id: 8, icon: BiologicalRes.biorhythom_Icon8, selectStatus: false, disabled: false},
12
+ {id: 9, icon: BiologicalRes.biorhythom_Icon9, selectStatus: false, disabled: false},
13
+ {id: 10, icon: BiologicalRes.biorhythom_Icon10, selectStatus: false, disabled: false},
14
+ {id: 11, icon: BiologicalRes.biorhythom_Icon11, selectStatus: false, disabled: false},
15
+ {id: 12, icon: BiologicalRes.biorhythom_Icon12, selectStatus: false, disabled: false},
16
+ {id: 13, icon: BiologicalRes.biorhythom_Icon13, selectStatus: false, disabled: false},
17
+ {id: 14, icon: BiologicalRes.biorhythom_Icon14, selectStatus: false, disabled: false},
18
+ {id: 15, icon: BiologicalRes.biorhythom_Icon15, selectStatus: false, disabled: false},
19
+ {id: 16, icon: BiologicalRes.biorhythom_Icon16, selectStatus: false, disabled: false},
20
+ {id: 17, icon: BiologicalRes.biorhythom_Icon17, selectStatus: false, disabled: false},
21
+ {id: 18, icon: BiologicalRes.biorhythom_Icon18, selectStatus: false, disabled: false},
22
+ {id: 19, icon: BiologicalRes.biorhythom_Icon19, selectStatus: false, disabled: false},
23
+ {id: 20, icon: BiologicalRes.biorhythom_Icon20, selectStatus: false, disabled: false},
24
+ {id: 21, icon: BiologicalRes.biorhythom_Icon21, selectStatus: false, disabled: false},
25
+ {id: 22, icon: BiologicalRes.biorhythom_Icon22, selectStatus: false, disabled: false},
26
+ {id: 23, icon: BiologicalRes.biorhythom_Icon23, selectStatus: false, disabled: false},
27
+ {id: 24, icon: BiologicalRes.biorhythom_Icon24, selectStatus: false, disabled: false},
28
+ ]
29
+
30
+ export default iconList
@@ -0,0 +1,36 @@
1
+ const pIdList = [
2
+ '2tb7pu47xmtakusc',
3
+ 'jde6i6cjuqafvhep',
4
+ 'nertorg6rigv9kcs',
5
+ 'upbvn0aceeduokg8',
6
+ 'vz1ecmcefgtcjmze',
7
+ '9pub2u7xzwe3luhn',
8
+ 'eyqghznptocb0c09',
9
+ 'qrj3ubhrz2udkkp3',
10
+ 'edlnwro9m0jhogfk',
11
+ 'qaf91tzgkjhzxdlg',
12
+ 'yy0mpo6vahmhhnyx',
13
+ 'pfdsrf1aa9p2iqm7',
14
+ 'aanbfdroxoikeemq',
15
+ 'n19x26xmhzsoduoc',
16
+ 'cnwub7a6xrvr8tg1',
17
+ 'ix2a1uedckqziihs',
18
+ 'hlodwjcku419f9q3',
19
+ 'ntdbtyr4e5rk0nva',
20
+ 'ck9ujelnqptkc2gu',
21
+ 'poor3eeaue1xtmtj',
22
+ 'f84gfg5bqwopeh6b',
23
+ '11w17umtgr8i7pzr',
24
+ 'bivme7hztqwtansf',
25
+ '3eeippeoos24ebym',
26
+ 'greysrcf5qraouxc',
27
+ 'zadmgcev0sjzfzxx',
28
+ 'wdk5pdrtqlguvbhx',
29
+ 'rfzv1m0tt7bczqaf',
30
+ 'qusibjjgjyarjs6w',
31
+ 'hqad0c0jizozhhzl',
32
+ 'bvctkpyefwowjfnh',
33
+ 'z7g5wwtayzypqhdo',
34
+ ]
35
+
36
+ export default pIdList
@@ -0,0 +1,43 @@
1
+ declare const _default: {
2
+ ic_warning_amber_sun: any;
3
+ ic_warning_amber_sun_12: any;
4
+ ic_warning_amber_new: any;
5
+ ic_warning_amber_new_12: any;
6
+ biorhythom_add: any;
7
+ biorhythom_select_rightIcon: any;
8
+ biorhythom_Icon1: any;
9
+ biorhythom_Icon2: any;
10
+ biorhythom_Icon3: any;
11
+ biorhythom_Icon4: any;
12
+ biorhythom_Icon5: any;
13
+ biorhythom_Icon6: any;
14
+ biorhythom_Icon7: any;
15
+ biorhythom_Icon8: any;
16
+ biorhythom_Icon9: any;
17
+ biorhythom_Icon10: any;
18
+ biorhythom_Icon11: any;
19
+ biorhythom_Icon12: any;
20
+ biorhythom_Icon13: any;
21
+ biorhythom_Icon14: any;
22
+ biorhythom_Icon15: any;
23
+ biorhythom_Icon16: any;
24
+ biorhythom_Icon17: any;
25
+ biorhythom_Icon18: any;
26
+ biorhythom_Icon19: any;
27
+ biorhythom_Icon20: any;
28
+ biorhythom_Icon21: any;
29
+ biorhythom_Icon22: any;
30
+ biorhythom_Icon23: any;
31
+ biorhythom_Icon24: any;
32
+ rhythm_icon1: string;
33
+ rhythm_icon1_1: any;
34
+ rhythm_icon2: string;
35
+ rhythm_icon2_1: any;
36
+ rhythm_icon3: string;
37
+ rhythm_icon3_1: any;
38
+ rhythm_icon4: string;
39
+ rhythm_icon4_1: any;
40
+ rhythm_icon12_1: any;
41
+ rhythm_icon12: string;
42
+ };
43
+ export default _default;
@@ -0,0 +1,42 @@
1
+ export default {
2
+ ic_warning_amber_sun: require('./Biological_Rhythm.png'),
3
+ ic_warning_amber_sun_12: require('./Biological_Rhythm_12.png'),
4
+ ic_warning_amber_new: require('./Biological_Rhythm_new.png'),
5
+ ic_warning_amber_new_12: require('./Biological_Rhythm_new_12.png'),
6
+ biorhythom_add: require('./iconsMaterialOutlinedArrowsNavAdd.png'),
7
+ biorhythom_select_rightIcon: require('./iconsMaterialOutlinedArrowsNavArrowForwardIos.png'),
8
+ biorhythom_Icon1: require('./iconsMaterialOutlinedWheatherWbTwilight.png'),
9
+ biorhythom_Icon2: require('./iconsMaterialOutlinedWheatherWbSunny.png'),
10
+ biorhythom_Icon3: require('./iconsMaterialOutlinedWheatherBedtime.png'),
11
+ biorhythom_Icon4: require('./iconsMaterialOutlinedWheatherPartlyCloudyDay.png'),
12
+ biorhythom_Icon5: require('./iconsMaterialOutlinedTimeAccessAlarm.png'),
13
+ biorhythom_Icon6: require('./iconsMaterialOutlinedOtherNotificationsNone.png'),
14
+ biorhythom_Icon7: require('./iconsMaterialOutlinedBuildingsHome.png'),
15
+ biorhythom_Icon8: require('./iconsMaterialOutlinedOtherBed.png'),
16
+ biorhythom_Icon9: require('./iconsMaterialOutlinedOtherChair.png'),
17
+ biorhythom_Icon10: require('./iconsMaterialOutlinedOtherDirectionsCar.png'),
18
+ biorhythom_Icon11: require('./iconsMaterialOutlinedOtherBusinessCenter.png'),
19
+ biorhythom_Icon12: require('./iconsMaterialOutlinedAccountGroups.png'),
20
+ biorhythom_Icon13: require('./iconsMaterialOutlinedOtherMenuBook.png'),
21
+ biorhythom_Icon14: require('./iconsMaterialOutlinedOtherHeadphones.png'),
22
+ biorhythom_Icon15: require('./iconsMaterialOutlinedOtherMusicNote.png'),
23
+ biorhythom_Icon16: require('./iconsMaterialOutlinedOtherFitnessCenter.png'),
24
+ biorhythom_Icon17: require('./iconsMaterialOutlinedOtherSportsEsports.png'),
25
+ biorhythom_Icon18: require('./iconsMaterialOutlinedOtherTv.png'),
26
+ biorhythom_Icon19: require('./iconsMaterialOutlinedOtherRestaurant.png'),
27
+ biorhythom_Icon20: require('./iconsMaterialOutlinedOtherCoffee.png'),
28
+ biorhythom_Icon21: require('./iconsMaterialOutlinedWheatherStarOutline.png'),
29
+ biorhythom_Icon22: require('./iconsMaterialOutlinedEditorFavoriteBorder.png'),
30
+ biorhythom_Icon23: require('./iconsMaterialOutlinedOtherSentimentSatisfied.png'),
31
+ biorhythom_Icon24: require('./iconsMaterialOutlinedOtherPottedPlant.png'),
32
+ rhythm_icon1: 'rhythm_icon1',
33
+ rhythm_icon1_1: require('./iconsMaterialOutlinedWheatherWbTwilight.png'),
34
+ rhythm_icon2: 'rhythm_icon2',
35
+ rhythm_icon2_1: require('./iconsMaterialOutlinedWheatherWbSunny.png'),
36
+ rhythm_icon3: 'rhythm_icon3',
37
+ rhythm_icon3_1: require('./iconsMaterialOutlinedOtherChair.png'),
38
+ rhythm_icon4: 'rhythm_icon4',
39
+ rhythm_icon4_1: require('./iconsMaterialOutlinedWheatherBedtime.png'),
40
+ rhythm_icon12_1: require('./iconsMaterialOutlinedTimeAccessAlarm.png'),
41
+ rhythm_icon12: 'rhythm_icon12',
42
+ }