BlockComment.jsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import React from 'react'
  2. import LazyLoad from 'react-lazyload'
  3. import cls from 'classnames'
  4. import newEventStores from 'stores/newEvent'
  5. import Block from './base/Block'
  6. import BlockOrder from './base/BlockOrder'
  7. import BlockDel from './base/BlockDel'
  8. import BlockCommentWrap from './base/comment/BlockCommentWrap'
  9. export default class BlockComment extends Block {
  10. constructor(props) {
  11. super(props)
  12. this.state.showComment = newEventStores.showComment
  13. this.changeShowComment = this.changeShowComment.bind(this)
  14. }
  15. changeShowComment(showComment) {
  16. if (this.state.showComment !== showComment) {
  17. this.setState({ showComment })
  18. }
  19. }
  20. render() {
  21. let jengaContent = document.getElementsByClassName('jenga-content')[0]
  22. let getRelChildComs = () => {
  23. return (
  24. <div
  25. className={cls(
  26. 'btn-clear btn-toggle-sub btn-toggle-sub-empty',
  27. 'btn-toggle-sub-empty-' + this.getLineColor(),
  28. { 'btn-toggle-sub-comment-zip': !this.state.showComment }
  29. )}
  30. />
  31. )
  32. }
  33. return (
  34. <LazyLoad height={26} overflow={true} scrollContainer={jengaContent}>
  35. <div className="block-wrap block-wrap-comment f--h">
  36. <span
  37. className={cls('index-line', 'index-line-' + this.getLineColor(), {
  38. 'index-last-line': this.props.isLast,
  39. 'index-last-line-comment-zip': !this.state.showComment,
  40. 'index-virtual-layer': this.props.virtualLayer
  41. })}
  42. style={this.indexLeftStyle()}
  43. />
  44. <div
  45. className={cls('flex-1', {
  46. 'flex-wrap-disabled': !this.state.isEnable
  47. })}
  48. >
  49. <div
  50. className={cls('block-item block-comment f--h', {
  51. 'block-active': this.state.isActive
  52. })}
  53. // onDragOver={this.onDragOver}
  54. // onDrop={this.onDrop}
  55. onClick={this.onSelectBlock}
  56. onContextMenu={this.onContextMenu}
  57. >
  58. <BlockDel
  59. isActive={this.state.isActive}
  60. layer={this.props.layer}
  61. bid={this.props.bid}
  62. />
  63. <BlockOrder
  64. layer={this.props.layer}
  65. bid={this.props.bid}
  66. eventNodeId={this.props.eventNodeId}
  67. className={
  68. !this.state.showComment ? 'block-order-comment-zip' : ''
  69. }
  70. extraGapGroupLayer={this.extraGapGroupLayer()}
  71. />
  72. <div
  73. className="block-gap"
  74. style={{
  75. left: -this.getGapLeft() + 'px',
  76. padding: '0 ' + this.getGapLeft() / 2 + 'px'
  77. }}
  78. />
  79. {getRelChildComs()}
  80. <div
  81. id={'block-main-' + this.props.bid}
  82. className="block-main flex-1 f--h"
  83. style={this.blockMainStyle()}
  84. draggable={true}
  85. // onDragStart={this.onDragStart}
  86. // onDragEnd={this.onDragEnd}
  87. >
  88. <div
  89. id={'over-cover-' + this.props.bid}
  90. className="over-cover"
  91. />
  92. <BlockCommentWrap
  93. bid={this.props.bid}
  94. eventNodeId={this.props.eventNodeId}
  95. changeShowComment={this.changeShowComment}
  96. />
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. </LazyLoad>
  102. )
  103. }
  104. }