timeSeriesLook.tsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { EyeOutlined } from "@ant-design/icons";
  2. import { Tooltip } from "antd";
  3. import React, { useEffect, useState } from "react"
  4. import { getTimeSeriesList, WEEK_SERIRES } from "./const"
  5. const totalHour = 48;
  6. interface Props {
  7. timeSeries: string, // 投放时间
  8. }
  9. const TimeSeriesLook: React.FC<Props> = (prosp) => {
  10. const { timeSeries } = prosp
  11. const [text, setText] = useState<string[]>([])
  12. useEffect(() => {
  13. if (timeSeries) {
  14. if (timeSeries === getTimeSeriesList().join('')) {
  15. setText([])
  16. } else {
  17. let newTimesText: string[] = []
  18. WEEK_SERIRES.forEach((item, index) => {
  19. let data = timeSeries.slice(index * totalHour, totalHour + totalHour * index)
  20. let times: string[] = []
  21. let startTime = ''
  22. let endTime = ''
  23. for (let i = 0; i < data.length; i++) {
  24. if (data[i] === '1') {
  25. const hour = Math.floor(i / 2);
  26. const curHour = ('00' + hour).slice(-2);
  27. const curMinute = i % 2 ? '30' : '00'
  28. const nextHour = ('00' + (hour + 1)).slice(-2);
  29. if (!startTime) {
  30. startTime = `${curHour}:${curMinute}`
  31. endTime = i % 2 ? `${nextHour}:00` : `${curHour}:${curMinute}`
  32. } else {
  33. endTime = i % 2 ? `${nextHour}:00` : `${curHour}:${curMinute}`
  34. }
  35. if (data.length === i + 1) {
  36. if (startTime && endTime) {
  37. times.push(`${startTime}-${endTime}`)
  38. }
  39. }
  40. } else {
  41. if (startTime && endTime) {
  42. times.push(`${startTime}-${endTime}`)
  43. }
  44. startTime = ''
  45. endTime = ''
  46. }
  47. }
  48. if (times.length > 0) {
  49. newTimesText.push(`${item}:${times.toString()}`)
  50. }
  51. })
  52. setText(newTimesText)
  53. }
  54. } else {
  55. setText([])
  56. }
  57. }, [timeSeries])
  58. return <>
  59. {text.length === 0 ? '不限' : <Tooltip title={text.map((item, index) => <div key={index}>{item}</div>)}>
  60. <a><EyeOutlined /></a>
  61. </Tooltip>}
  62. </>
  63. }
  64. export default React.memo(TimeSeriesLook)