nodes-chart.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import React from 'react';
  2. import { connect } from 'react-redux';
  3. import NodesChartElements from './nodes-chart-elements';
  4. import ZoomableCanvas from '../components/zoomable-canvas';
  5. import { transformToString } from '../utils/transform-utils';
  6. import { clickBackground } from '../actions/app-actions';
  7. import {
  8. graphLimitsSelector,
  9. graphZoomStateSelector,
  10. } from '../selectors/graph-view/zoom';
  11. import { CONTENT_INCLUDED } from '../constants/naming';
  12. import { changeRoleStatus } from '@/api/admin/sys-role';
  13. const EdgeMarkerDefinition = ({ selectedNodeId }) => {
  14. const markerOffset = selectedNodeId ? '35' : '40';
  15. const markerSize = selectedNodeId ? '10' : '30';
  16. return (
  17. <defs>
  18. <marker
  19. className="edge-marker"
  20. id="end-arrow"
  21. viewBox="1 0 10 10"
  22. refX={markerOffset}
  23. refY="3.5"
  24. markerWidth={markerSize}
  25. markerHeight={markerSize}
  26. orient="auto">
  27. <polygon className="link" points="0 0, 10 3.5, 0 7" />
  28. </marker>
  29. </defs>
  30. );
  31. };
  32. class NodesChart extends React.Component {
  33. constructor(props, context) {
  34. super(props, context);
  35. this.handleMouseClick = this.handleMouseClick.bind(this);
  36. }
  37. handleMouseClick() {
  38. console.log(2000,'nodes-chart.js,handleMouseClick')
  39. if (this.props.selectedNodeId) {
  40. this.props.clickBackground();
  41. }
  42. }
  43. renderContent(transform) {
  44. return (
  45. <g transform={transformToString(transform)}>
  46. <EdgeMarkerDefinition selectedNodeId={this.props.selectedNodeId} />
  47. <NodesChartElements />
  48. </g>
  49. );
  50. }
  51. render() {
  52. return (
  53. <div className="nodes-chart">
  54. <ZoomableCanvas
  55. onClick={this.handleMouseClick}
  56. boundContent={CONTENT_INCLUDED}
  57. limitsSelector={graphLimitsSelector}
  58. zoomStateSelector={graphZoomStateSelector}
  59. disabled={this.props.selectedNodeId}>
  60. {transform => this.renderContent(transform)}
  61. </ZoomableCanvas>
  62. </div>
  63. );
  64. }
  65. }
  66. function mapStateToProps(state) {
  67. return {
  68. selectedNodeId: state.get('selectedNodeId'),
  69. };
  70. }
  71. export default connect(
  72. mapStateToProps,
  73. { clickBackground }
  74. )(NodesChart);