index.tsx 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. import React from 'react'
  2. import styles from './index.module.scss'
  3. interface dataType {
  4. name: string
  5. customN?: string
  6. type: string
  7. addTxt: { time: string; pos: string; backEnd: string }
  8. extra: string
  9. position: {
  10. x: number
  11. y: number
  12. }
  13. text: {
  14. title: string
  15. content: string
  16. }[]
  17. }
  18. interface nodeProps {
  19. type?: string
  20. className?: string
  21. nameClick?: () => void
  22. style?: React.CSSProperties
  23. data: dataType
  24. }
  25. const RightLine = () => {
  26. return (
  27. <div className={`${styles.rightLine}`} id='rightLine'>
  28. <div className='line'></div>
  29. <div className='arrow'></div>
  30. </div>
  31. )
  32. }
  33. const RightLineDash = ({ className }: { className?: string }) => {
  34. return (
  35. <div className={`${styles.rightLineDash} ${className}`} id='rightLineDash'>
  36. <div className='line'></div>
  37. <div className='arrow'></div>
  38. </div>
  39. )
  40. }
  41. const BottomLine = () => {
  42. return (
  43. <div className={styles.bottomLine} id='bottomLine'>
  44. <div className='line'></div>
  45. <div className='arrow'></div>
  46. </div>
  47. )
  48. }
  49. const BottomLineDash = () => {
  50. return (
  51. <div className={styles.bottomLineDash} id='bottomLineDash'>
  52. <div className='line'></div>
  53. <div className='arrow'></div>
  54. </div>
  55. )
  56. }
  57. const TurnRightLine = () => {
  58. return (
  59. <div className={styles.turnRightLine} id='turnRightLine'>
  60. <div className='line'></div>
  61. <div className='arrow'></div>
  62. </div>
  63. )
  64. }
  65. const TurnBottomRightLine = () => {
  66. return (
  67. <div className={styles.turnBottomRightLine} id='turnBottomRightLine'>
  68. <div className='line'></div>
  69. <div className='arrow'></div>
  70. </div>
  71. )
  72. }
  73. const TurnBottomRightLineDash = () => {
  74. return (
  75. <div className={styles.turnBottomRightLineDash} id='turnBottomRightLineDash'>
  76. <div className='line'></div>
  77. <div className='arrow'></div>
  78. </div>
  79. )
  80. }
  81. const NodeNormal = ({ className, nameClick, style, data }: nodeProps) => {
  82. return (
  83. <div className={`${styles.nodeNormal} ${className}`} style={style} id='nodeNormal'>
  84. <div
  85. className='bg'
  86. onClick={e => {
  87. nameClick?.()
  88. console.log(123)
  89. }}
  90. >
  91. <div className='span1 songFont'> {data.name}</div>
  92. <div className='span2'>{data.customN}</div>
  93. </div>
  94. <div className='time'>{data.addTxt.time}</div>
  95. <div className='txt'>{data.addTxt.pos}</div>
  96. <div className='extra'>{data.extra}</div>
  97. </div>
  98. )
  99. }
  100. const NodeActive = ({ className, nameClick, style, data }: nodeProps) => {
  101. return (
  102. <div className={`${styles.nodeActive} ${className}`} style={style} id='nodeActive'>
  103. <div
  104. className='bg'
  105. onClick={e => {
  106. e.stopPropagation()
  107. nameClick?.()
  108. }}
  109. >
  110. <div className='span1 songFont'> {data.name}</div>
  111. <div className='span2'>{data.customN}</div>
  112. </div>
  113. <div className='time'>{data.addTxt.time}</div>
  114. <div className='txt'>{data.addTxt.pos}</div>
  115. <div className='extra'>{data.extra}</div>
  116. </div>
  117. )
  118. }
  119. const NodeFalse = ({ className, nameClick, style, data }: nodeProps) => {
  120. return (
  121. <div className={`${styles.nodeFalse} ${className}`} style={style} id='nodeFalse'>
  122. <div
  123. className='bg'
  124. onClick={e => {
  125. e.stopPropagation()
  126. nameClick?.()
  127. }}
  128. >
  129. <div className='span1 songFont'> {data.name}</div>
  130. <div className='span2'>{data.customN}</div>
  131. </div>
  132. <div className='time'>{data.addTxt.time}</div>
  133. <div className='txt'>{data.addTxt.pos}</div>
  134. <div className='extra'>{data.extra}</div>
  135. </div>
  136. )
  137. }
  138. const NodeRight = ({ type, className, nameClick, style, data }: nodeProps) => {
  139. return (
  140. <div className={`${styles.nodeRight} ${className}`} id='nodeRight' style={style}>
  141. <RightLine />
  142. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  143. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  144. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  145. </div>
  146. )
  147. }
  148. const NodeRightDash = ({ type, className, nameClick, style, data }: nodeProps) => {
  149. return (
  150. <div className={`${styles.nodeRightDash} ${className}`} id='nodeRightDash' style={style}>
  151. <RightLineDash />
  152. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  153. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  154. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  155. </div>
  156. )
  157. }
  158. const NodeBottom = ({ type, className, nameClick, style, data }: nodeProps) => {
  159. return (
  160. <div className={`${styles.nodeBottom} ${className}`} id='nodeBottom' style={style}>
  161. <BottomLine />
  162. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  163. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  164. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  165. </div>
  166. )
  167. }
  168. const NodeBottomDash = ({ type, className, nameClick, style, data }: nodeProps) => {
  169. return (
  170. <div className={`${styles.nodeBottomDash} ${className}`} id='nodeBottomDash' style={style}>
  171. <BottomLineDash />
  172. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  173. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  174. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  175. </div>
  176. )
  177. }
  178. const NodeTurnRight = ({ type, className, nameClick, style, data }: nodeProps) => {
  179. return (
  180. <div className={`${styles.nodeTurnRight} ${className}`} id='nodeTurnRight' style={style}>
  181. <TurnRightLine />
  182. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  183. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  184. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  185. </div>
  186. )
  187. }
  188. const NodeTurnBottomRight = ({ type, className, nameClick, style, data }: nodeProps) => {
  189. return (
  190. <div
  191. className={`${styles.nodeTurnBottomRight} ${className}`}
  192. id='nodeTurnBottomRight'
  193. style={style}
  194. >
  195. <TurnBottomRightLine />
  196. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  197. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  198. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  199. </div>
  200. )
  201. }
  202. const NodeTurnBottomDashRight = ({ type, className, nameClick, style, data }: nodeProps) => {
  203. return (
  204. <div
  205. className={`${styles.nodeTurnBottomDashRight} ${className}`}
  206. id='nodeTurnBottomDashRight'
  207. style={style}
  208. >
  209. <TurnBottomRightLineDash />
  210. {type === 'normal' && <NodeNormal nameClick={nameClick} data={data} />}
  211. {type === 'active' && <NodeActive nameClick={nameClick} data={data} />}
  212. {type === 'false' && <NodeFalse nameClick={nameClick} data={data} />}
  213. </div>
  214. )
  215. }
  216. export {
  217. NodeRightDash,
  218. NodeTurnBottomRight,
  219. NodeTurnBottomDashRight,
  220. NodeTurnRight,
  221. NodeRight,
  222. NodeBottom,
  223. NodeBottomDash,
  224. RightLine,
  225. RightLineDash,
  226. BottomLine,
  227. BottomLineDash,
  228. TurnRightLine,
  229. NodeNormal,
  230. NodeActive,
  231. NodeFalse
  232. }