@ledvance/group-ui-biz-bundle 1.0.37 → 1.0.39

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 (124) hide show
  1. package/package.json +1 -1
  2. package/src/modules/biorhythm/BiorhythmActions.ts +216 -0
  3. package/src/modules/biorhythm/BiorhythmBean.ts +230 -0
  4. package/src/modules/biorhythm/BiorhythmDetailPage.tsx +261 -0
  5. package/src/modules/biorhythm/BiorhythmPage.tsx +706 -0
  6. package/src/modules/biorhythm/IconSelect.tsx +84 -0
  7. package/src/modules/biorhythm/circular/ItemIcon.d.ts +22 -0
  8. package/src/modules/biorhythm/circular/ItemIcon.tsx +173 -0
  9. package/src/modules/biorhythm/circular/Progress.d.ts +24 -0
  10. package/src/modules/biorhythm/circular/Progress.tsx +412 -0
  11. package/src/modules/biorhythm/circular/TimeCircular.d.ts +11 -0
  12. package/src/modules/biorhythm/circular/TimeCircular.tsx +70 -0
  13. package/src/modules/biorhythm/circular/biorhythm_plantimer.png +0 -0
  14. package/src/modules/biorhythm/circular/rhythm_icon.png +0 -0
  15. package/src/modules/biorhythm/iconListData.ts +30 -0
  16. package/src/modules/biorhythm/pIdList.ts +36 -0
  17. package/src/modules/biorhythm/res/BiologicalRes.d.ts +43 -0
  18. package/src/modules/biorhythm/res/BiologicalRes.ts +42 -0
  19. package/src/modules/biorhythm/res/Biological_Rhythm.png +0 -0
  20. package/src/modules/biorhythm/res/Biological_Rhythm_12.png +0 -0
  21. package/src/modules/biorhythm/res/Biological_Rhythm_new.png +0 -0
  22. package/src/modules/biorhythm/res/Biological_Rhythm_new_12.png +0 -0
  23. package/src/modules/biorhythm/res/iconsMaterialOutlinedAccountGroups.png +0 -0
  24. package/src/modules/biorhythm/res/iconsMaterialOutlinedAccountGroups@2x.png +0 -0
  25. package/src/modules/biorhythm/res/iconsMaterialOutlinedAccountGroups@3x.png +0 -0
  26. package/src/modules/biorhythm/res/iconsMaterialOutlinedArrowsNavAdd.png +0 -0
  27. package/src/modules/biorhythm/res/iconsMaterialOutlinedArrowsNavAdd@2x.png +0 -0
  28. package/src/modules/biorhythm/res/iconsMaterialOutlinedArrowsNavAdd@3x.png +0 -0
  29. package/src/modules/biorhythm/res/iconsMaterialOutlinedArrowsNavArrowForwardIos.png +0 -0
  30. package/src/modules/biorhythm/res/iconsMaterialOutlinedArrowsNavArrowForwardIos@2x.png +0 -0
  31. package/src/modules/biorhythm/res/iconsMaterialOutlinedArrowsNavArrowForwardIos@3x.png +0 -0
  32. package/src/modules/biorhythm/res/iconsMaterialOutlinedBuildingsHome.png +0 -0
  33. package/src/modules/biorhythm/res/iconsMaterialOutlinedBuildingsHome@2x.png +0 -0
  34. package/src/modules/biorhythm/res/iconsMaterialOutlinedBuildingsHome@3x.png +0 -0
  35. package/src/modules/biorhythm/res/iconsMaterialOutlinedEditorFavoriteBorder.png +0 -0
  36. package/src/modules/biorhythm/res/iconsMaterialOutlinedEditorFavoriteBorder@2x.png +0 -0
  37. package/src/modules/biorhythm/res/iconsMaterialOutlinedEditorFavoriteBorder@3x.png +0 -0
  38. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherBed.png +0 -0
  39. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherBed@2x.png +0 -0
  40. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherBed@3x.png +0 -0
  41. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherBusinessCenter.png +0 -0
  42. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherBusinessCenter@2x.png +0 -0
  43. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherBusinessCenter@3x.png +0 -0
  44. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherChair.png +0 -0
  45. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherChair@2x.png +0 -0
  46. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherChair@3x.png +0 -0
  47. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherCoffee.png +0 -0
  48. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherCoffee@2x.png +0 -0
  49. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherCoffee@3x.png +0 -0
  50. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherDirectionsCar.png +0 -0
  51. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherDirectionsCar@2x.png +0 -0
  52. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherDirectionsCar@3x.png +0 -0
  53. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherFitnessCenter.png +0 -0
  54. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherFitnessCenter@2x.png +0 -0
  55. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherFitnessCenter@3x.png +0 -0
  56. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherHeadphones.png +0 -0
  57. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherHeadphones@2x.png +0 -0
  58. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherHeadphones@3x.png +0 -0
  59. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherMenuBook.png +0 -0
  60. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherMenuBook@2x.png +0 -0
  61. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherMenuBook@3x.png +0 -0
  62. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherMusicNote.png +0 -0
  63. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherMusicNote@2x.png +0 -0
  64. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherMusicNote@3x.png +0 -0
  65. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherNotificationsNone.png +0 -0
  66. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherNotificationsNone@2x.png +0 -0
  67. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherNotificationsNone@3x.png +0 -0
  68. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherPottedPlant.png +0 -0
  69. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherPottedPlant@2x.png +0 -0
  70. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherPottedPlant@3x.png +0 -0
  71. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherRestaurant.png +0 -0
  72. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherRestaurant@2x.png +0 -0
  73. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherRestaurant@3x.png +0 -0
  74. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherSentimentSatisfied.png +0 -0
  75. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherSentimentSatisfied@2x.png +0 -0
  76. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherSentimentSatisfied@3x.png +0 -0
  77. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherSportsEsports.png +0 -0
  78. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherSportsEsports@2x.png +0 -0
  79. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherSportsEsports@3x.png +0 -0
  80. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherTv.png +0 -0
  81. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherTv@2x.png +0 -0
  82. package/src/modules/biorhythm/res/iconsMaterialOutlinedOtherTv@3x.png +0 -0
  83. package/src/modules/biorhythm/res/iconsMaterialOutlinedTimeAccessAlarm.png +0 -0
  84. package/src/modules/biorhythm/res/iconsMaterialOutlinedTimeAccessAlarm@2x.png +0 -0
  85. package/src/modules/biorhythm/res/iconsMaterialOutlinedTimeAccessAlarm@3x.png +0 -0
  86. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherBedtime.png +0 -0
  87. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherBedtime@2x.png +0 -0
  88. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherBedtime@3x.png +0 -0
  89. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherPartlyCloudyDay.png +0 -0
  90. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherPartlyCloudyDay@2x.png +0 -0
  91. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherPartlyCloudyDay@3x.png +0 -0
  92. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherStarOutline.png +0 -0
  93. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherStarOutline@2x.png +0 -0
  94. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherStarOutline@3x.png +0 -0
  95. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherWbSunny.png +0 -0
  96. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherWbSunny@2x.png +0 -0
  97. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherWbSunny@3x.png +0 -0
  98. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherWbTwilight.png +0 -0
  99. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherWbTwilight@2x.png +0 -0
  100. package/src/modules/biorhythm/res/iconsMaterialOutlinedWheatherWbTwilight@3x.png +0 -0
  101. package/src/modules/music/MusicActions.ts +61 -0
  102. package/src/modules/music/MusicDataBean.ts +292 -0
  103. package/src/modules/music/MusicManager.ts +206 -0
  104. package/src/modules/music/MusicPage.tsx +206 -0
  105. package/src/modules/music/res/app_music_ball@2x.png +0 -0
  106. package/src/modules/music/res/app_music_ball@3x.png +0 -0
  107. package/src/modules/music/res/app_music_game@2x.png +0 -0
  108. package/src/modules/music/res/app_music_game@3x.png +0 -0
  109. package/src/modules/music/res/app_music_music@2x.png +0 -0
  110. package/src/modules/music/res/app_music_music@3x.png +0 -0
  111. package/src/modules/music/res/app_music_romantic@2x.png +0 -0
  112. package/src/modules/music/res/app_music_romantic@3x.png +0 -0
  113. package/src/modules/music/res/iconsMaterialOutlinedArrowsNavCheck.png +0 -0
  114. package/src/modules/music/res/iconsMaterialOutlinedArrowsNavCheck@2x.png +0 -0
  115. package/src/modules/music/res/iconsMaterialOutlinedArrowsNavCheck@3x.png +0 -0
  116. package/src/modules/music/res/illustrationsFeaturesMusic.png +0 -0
  117. package/src/modules/music/res/illustrationsFeaturesMusic@2x.png +0 -0
  118. package/src/modules/music/res/illustrationsFeaturesMusic@3x.png +0 -0
  119. package/src/modules/music/res/illustrationsFeaturesMusicDisabled.png +0 -0
  120. package/src/modules/music/res/illustrationsFeaturesMusicDisabled@2x.png +0 -0
  121. package/src/modules/music/res/illustrationsFeaturesMusicDisabled@3x.png +0 -0
  122. package/src/modules/music/res/index.d.ts +10 -0
  123. package/src/modules/music/res/index.ts +9 -0
  124. package/src/navigation/Routers.ts +46 -0
@@ -0,0 +1,412 @@
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 = this.getTimeIntVale(iconDataList[i].newStartTime ? iconDataList[i].newStartTime : iconDataList[i].startTime)
52
+ const jData = this.getTimeIntVale(iconDataList[j].newStartTime ? iconDataList[j].newStartTime : iconDataList[j].startTime)
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 = this.getTimeIntVale(iconDataList[c].startTime)
100
+ let endTimes = this.getTimeIntVale(iconDataList[tmpIndex].startTime)
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 { startTime } = item
226
+
227
+ let timeArray = startTime.split(':')
228
+
229
+ let hourTime = timeArray[0]
230
+ let mineTime = timeArray[1]
231
+
232
+ //时间对应的弧度
233
+ let timeAngle = (Math.PI * 2) / (24 * 60) * (parseInt(hourTime) * 60 + parseInt(mineTime))
234
+ let newRadius = radius - annularHeight + 22
235
+
236
+ //1.5 为解决将圆当作一个点处理代理的误差
237
+ let leftValeu = newRadius + (Math.sin(timeAngle) * newRadius) + 1.5
238
+ let topValue = newRadius - (Math.cos(timeAngle) * newRadius) + 1.5
239
+ const type = typeof item?.icon === 'string'
240
+
241
+ return (
242
+ <ItemIcon
243
+ key={item.id}
244
+ leftValeu={leftValeu}
245
+ topValue={topValue}
246
+ imageSource={setImg(item?.iconId) || type && { uri: item?.icon } || item?.icon}
247
+ circularRadius={newRadius}
248
+ onPanMoving={(_xValue, _yValue, angle) => {
249
+
250
+ if (this.timer) {
251
+ clearTimeout(this.timer)
252
+ this.timer = null
253
+ }
254
+
255
+ //角度转换为表盘时间
256
+ let angleValue = angle
257
+ let angleMins = 24 * 60 / 360//每度多少分钟
258
+ let totalMins = Math.abs(angleMins * angleValue)
259
+ item.startTime = this.createFormTime(totalMins)
260
+
261
+ this.setState({ iconDataList: [].concat(iconDataList) })
262
+ }}
263
+
264
+ onPanMoveEnd={() => {
265
+ const { ret, failMinutes } = this.checkTimesFormat(item.startTime)
266
+ if (!ret) {
267
+ let changeMinutes = (failMinutes || 0) + 60
268
+ if (changeMinutes > 60 * 24) {
269
+ changeMinutes = 30
270
+ }
271
+ const time = this.createFormTime(changeMinutes)
272
+ item.startTime = time
273
+ this.setState({ iconDataList: [].concat(iconDataList) }, () => {
274
+ this.playTimeChangeCallBack(item.id, time)
275
+ })
276
+ } else {
277
+ this.playTimeChangeCallBack(item.id, item.startTime)
278
+ }
279
+ }}
280
+ />
281
+ )
282
+ })}
283
+
284
+ {/*----- 环内视图 ------*/}
285
+ <View
286
+ style={[
287
+ styles.contentView,
288
+ {
289
+ left: (this.props.annularHeight),
290
+ top: this.props.annularHeight,
291
+ width: (this.props.radius - this.props.annularHeight) * 2,
292
+ height: (this.props.radius - this.props.annularHeight) * 2,
293
+ borderRadius: this.props.radius,
294
+ },
295
+ ]}>
296
+ {this.props.children}
297
+ </View>
298
+ </View>
299
+ )
300
+ }
301
+
302
+ //时间调整回调业务层
303
+ playTimeChangeCallBack(id: number, time: string) {
304
+ const { onPanMoved } = this.props
305
+
306
+ if (this.timer) {
307
+ clearTimeout(this.timer)
308
+ this.timer = null
309
+ }
310
+
311
+ //延时0.5秒后更新计划
312
+ this.timer = setTimeout(() => {
313
+ onPanMoved && onPanMoved(id, time)
314
+ }, 500)
315
+ }
316
+
317
+ //获取时间分钟
318
+ getTimeIntVale(time) {
319
+ if (!time) {
320
+ return 0
321
+ }
322
+
323
+ let timeArray = time.split(':')
324
+ let hourTime = timeArray[0]
325
+ let mineTime = timeArray[1]
326
+
327
+ return parseInt(hourTime) * 60 + parseInt(mineTime)
328
+ }
329
+
330
+ //拼接时间
331
+ createFormTime(totalMinutes) {
332
+ let hoursTime = parseInt((totalMinutes / 60).toString()).toString()
333
+ if (hoursTime.length < 2) {
334
+ hoursTime = '0' + hoursTime
335
+ }
336
+ let minuteTime = Math.round(totalMinutes % 60).toString()
337
+ if (minuteTime.length < 2) {
338
+ minuteTime = '0' + minuteTime
339
+ }
340
+ return hoursTime + ':' + minuteTime
341
+ }
342
+
343
+ //判断时间是否合法
344
+ checkTimesFormat(newTimeMinutes) {
345
+ for (const elem of this.timeIconList) {
346
+ const { startTime } = elem
347
+ if (startTime === newTimeMinutes) {
348
+ continue
349
+ }
350
+
351
+ let planTimeList = startTime.split(':')
352
+ let newTimeList = newTimeMinutes.split(':')
353
+
354
+ //转换为分钟
355
+ let planMinutes = (parseInt(planTimeList[0]) * 60) + parseInt(planTimeList[1])
356
+ let newMinutes = (parseInt(newTimeList[0]) * 60) + parseInt(newTimeList[1])
357
+
358
+ if (Math.abs(planMinutes - newMinutes) < 15) {
359
+ return { ret: false, failMinutes: planMinutes }
360
+ }
361
+ }
362
+
363
+ return { ret: true }
364
+ }
365
+
366
+ getColorTempStringVale(colorTempInt) {
367
+ // 蓝色:80CBFF 黄色:FFCD66
368
+ let limitBottomColor = '#FFCD66'
369
+ let limitTopColor = '#80CBFF'
370
+
371
+ if (parseInt(colorTempInt) >= 100) {
372
+ return { rgbColor: [128, 203, 255], normalColor: limitTopColor }
373
+ }
374
+
375
+ if (parseInt(colorTempInt) <= 0) {
376
+ return { rgbColor: [255, 205, 102], normalColor: limitBottomColor }
377
+ }
378
+
379
+ let redStat = parseInt('FF', 16)
380
+ let redEnd = parseInt('80', 16)
381
+ let redStep = Math.round(redStat + ((redEnd - redStat) / 100) * colorTempInt)
382
+
383
+ let gStart = parseInt('CD', 16)
384
+ let gEnd = parseInt('CB', 16)
385
+ let gStep = Math.round(gStart + ((gEnd - gStart) / 100) * colorTempInt)
386
+
387
+ let bStart = parseInt('66', 16)
388
+ let bEnd = parseInt('FF', 16)
389
+ let bStep = Math.round(bStart + ((bEnd - bStart) / 100) * colorTempInt)
390
+
391
+ let colorVale = '#' + redStep.toString(16) + gStep.toString(16) + bStep.toString(16)
392
+ // console.log('色温值 -----------> colorVale: ',colorVale);
393
+
394
+ let colorRGBAry = [redStep, gStep, bStep]
395
+ return { rgbColor: colorRGBAry, normalColor: colorVale }
396
+ }
397
+ }
398
+
399
+ const styles = StyleSheet.create({
400
+ contentView: {
401
+ position: 'absolute',
402
+ justifyContent: 'center',
403
+ alignItems: 'center',
404
+ backgroundColor: '#FFFFFF',
405
+ borderRadius: 130,
406
+ },
407
+ angleView: {
408
+ height: 260,
409
+ width: 260,
410
+ borderRadius: 130,
411
+ },
412
+ })
@@ -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,70 @@
1
+ import React, {useEffect, useState} from 'react'
2
+ import {Image, StyleSheet, View} from 'react-native'
3
+ import Progress from './Progress'
4
+ import {Plan} from '../BiorhythmBean'
5
+ import {getSystemTimeFormat} from '@ledvance/base/src/api/native'
6
+ import BiologicalRes from '../res/BiologicalRes'
7
+
8
+ interface TimeCircularProps {
9
+ planList: Plan[]
10
+ onPanMoved?: (id: number, time: string) => void
11
+ planEdit?: Boolean
12
+ replaceStatus?: Boolean
13
+ gradient?: Boolean
14
+ isSupportTemperature: boolean
15
+ }
16
+
17
+ const TimeCircular = (
18
+ props: TimeCircularProps = {
19
+ planList: [],
20
+ planEdit: false,
21
+ replaceStatus: false,
22
+ gradient: false,
23
+ isSupportTemperature: false,
24
+ },
25
+ ) => {
26
+ const {planList, onPanMoved, planEdit, replaceStatus, gradient, isSupportTemperature} = props
27
+ const styles = dynamicStyleSheet
28
+
29
+ const enabledPlanList = planList.filter(plan => plan.enable)
30
+ const [timeDialPic, setTimeDialPic] = useState(BiologicalRes.ic_warning_amber_sun)
31
+
32
+ useEffect(() => {
33
+ const updateDialPic = async () => {
34
+ const is24Hour = await getSystemTimeFormat() === 24
35
+ if (is24Hour) {
36
+ setTimeDialPic(replaceStatus ? BiologicalRes.ic_warning_amber_sun : BiologicalRes.ic_warning_amber_new)
37
+ } else {
38
+ setTimeDialPic(replaceStatus ? BiologicalRes.ic_warning_amber_sun_12 : BiologicalRes.ic_warning_amber_new_12)
39
+ }
40
+ }
41
+
42
+ updateDialPic().then()
43
+ }, [replaceStatus])
44
+
45
+ return (
46
+ <View style={styles.container}>
47
+ <Progress
48
+ radius={130}
49
+ annularHeight={44}
50
+ timeIconList={enabledPlanList}
51
+ planEdit={planEdit}
52
+ gradient={gradient}
53
+ isSupportTemperature={isSupportTemperature}
54
+ onPanMoved={(id: number, time: string) => {
55
+ onPanMoved && onPanMoved(id, time)
56
+ }}>
57
+ <Image source={timeDialPic} style={{width: 172, height: 172}}/>
58
+ </Progress>
59
+ </View>
60
+ )
61
+ }
62
+
63
+ const dynamicStyleSheet = StyleSheet.create({
64
+ container: {
65
+ alignItems: 'center',
66
+ justifyContent: 'center',
67
+ },
68
+ })
69
+
70
+ 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
+ }