RingData.tsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import { CurrentDot, RealRing, RingCommon, TargetRing } from "../components/Rings"
  2. const startArc = (time: number) => {
  3. var date = new Date(time);
  4. var hour = date.getHours();
  5. var minute = date.getMinutes();
  6. var second = date.getSeconds();
  7. return (hour * 3600 + minute * 60 + second) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0;
  8. }
  9. const durationArc = (start_time: number, end_time: number) => {
  10. var duration = (end_time - start_time) / 1000;
  11. return duration / (24 * 3600) * 2 * Math.PI;
  12. }
  13. export const haveSmallRing = (data: any) => {
  14. if (data.scenario == 'FAST_SLEEP')
  15. return true
  16. return false
  17. }
  18. export const getCommon = (data: any, isBigRing: boolean) => {
  19. const commonBig: RingCommon = {
  20. useCase: 'Record',
  21. radius: 50,
  22. lineWidth: 8,
  23. isFast: true,
  24. status: 'WAIT_FOR_START'
  25. }
  26. const commonSmall: RingCommon = {
  27. useCase: 'Record',
  28. radius: 40,
  29. lineWidth: 8,
  30. isFast: true,
  31. status: 'WAIT_FOR_START'
  32. }
  33. if (isBigRing) {
  34. return commonBig
  35. }
  36. return commonSmall
  37. }
  38. export const getBgRing = () => {
  39. return {
  40. color: '#767676'
  41. }
  42. }
  43. export const getDot = (data: any, isBigRing: boolean) => {
  44. const currentDotBig: CurrentDot = {
  45. color: '#AAFF00',
  46. lineWidth: 8,
  47. borderColor: 'black'
  48. }
  49. const currentDotSmall: CurrentDot = {
  50. color: '#00FFFF',
  51. lineWidth: 8,
  52. borderColor: 'black'
  53. }
  54. if (isBigRing) {
  55. if (data && data.scenario == 'SLEEP') {
  56. currentDotBig.color = '#00FFFF'
  57. }
  58. return currentDotBig
  59. }
  60. else {
  61. return currentDotSmall
  62. }
  63. }
  64. export const getTarget = (data: any, isBigRing: boolean) => {
  65. const targetRingBig: TargetRing = {
  66. color: '#FF0000',
  67. startArc: 0,
  68. durationArc: 0
  69. }
  70. const targetRingSmall: TargetRing = {
  71. color: '#FF0000',
  72. startArc: 0,
  73. durationArc: 0
  74. }
  75. if (isBigRing) {
  76. if (data.scenario == 'SLEEP') {
  77. targetRingBig.color = '#00FFFF'
  78. targetRingBig.startArc = startArc(data.sleep.target_start_time)
  79. targetRingBig.durationArc = durationArc(data.sleep.start_time, data.sleep.target_end_time)
  80. }
  81. else {
  82. targetRingBig.startArc = startArc(data.fast.target_start_time)
  83. targetRingBig.durationArc = durationArc(data.fast.target_start_time, data.fast.target_end_time)
  84. }
  85. return targetRingBig
  86. }
  87. else {
  88. targetRingSmall.startArc = startArc(data.sleep.target_start_time)
  89. targetRingSmall.durationArc = durationArc(data.sleep.target_start_time, data.sleep.target_end_time)
  90. return targetRingSmall
  91. }
  92. }
  93. export const getReal = (data: any, isBigRing: boolean, isRecord: boolean) => {
  94. const realRingBig: RealRing = {
  95. color: '#AAFF00',
  96. startArc: 0,
  97. durationArc: 0
  98. }
  99. const realRingSmall: RealRing = {
  100. color: '#00FFFF',
  101. startArc: 0,
  102. durationArc: 0
  103. }
  104. if (isBigRing) {
  105. if (data.scenario == 'SLEEP') {
  106. realRingBig.color = '#00FFFF'
  107. realRingBig.startArc = startArc(data.sleep.real_start_time)
  108. realRingBig.durationArc = durationArc(data.sleep.real_start_time, isRecord ? (data.sleep.real_end_time ? data.sleep.real_end_time : new Date().getTime()) : new Date().getTime())
  109. }
  110. else {
  111. realRingBig.startArc = startArc(data.fast.real_start_time)
  112. realRingBig.durationArc = durationArc(data.fast.real_start_time, isRecord ? (data.fast.real_end_time ? data.fast.real_end_time : new Date().getTime()) : new Date().getTime())
  113. }
  114. return realRingBig
  115. }
  116. else {
  117. realRingSmall.startArc = startArc(data.sleep.real_start_time)
  118. realRingSmall.durationArc = durationArc(data.sleep.real_start_time, isRecord ? (data.sleep.real_end_time ? data.sleep.real_end_time : new Date().getTime()) : new Date().getTime())
  119. // if (isRecord && !isBigRing){
  120. // debugger
  121. // }
  122. return realRingSmall
  123. }
  124. }