/**
* Created by yuanfenghua on 2018/6/18.
*/
'use strict'
import React, { Component } from 'react';
import { findDOMNode } from 'react-dom';
import { connect } from 'react-redux';
import { DragSource } from 'react-dnd';
import { Tooltip } from 'antd';
import { MinusOutlined } from '@ant-design/icons';
import Style from './style.css';
const stationSource = {
beginDrag(props, monitor, component) {
const dom = findDOMNode(component);
const rect = {
x: dom.offsetLeft - dom.offsetParent.scrollLeft,
y: dom.offsetTop - dom.offsetParent.scrollTop
};
const spotInlist = {
x: dom.getBoundingClientRect().left,
y: dom.getBoundingClientRect().top
};
return {
info: props.info,
rect: rect,
spotInlist: spotInlist,
deployed: props.info.deployed
};
},
endDrag(props, monitor) {
if (!monitor.didDrop() && props.onRemoveSpot) {
props.onRemoveSpot(monitor.getItem().info);
}
},
canDrag(props) {
if (props.size) {
//热点图上的热点可拖拽
return true;
} else {
//测点树未布设的叶结点可拖拽
return !props.children && props.info.deployed == false
}
},
};
function collect(connect, monitor) {
return {
connectDragSource: connect.dragSource(),
isDragging: monitor.isDragging()
}
}
class StationSpot extends React.Component {
constructor(props) {
super(props);
}
renderTreeTitle = () => {
const { isDragging, info } = this.props;
const { spotId, location, deployed } = info;
const opacity = isDragging ? 0.4 : 1;
return (
{location.length >= 12 ? location.substring(0, 12) + "..." : location}
{deployed ? : null}
);
};
onRemoveSpot = () => {
const { onRemoveSpot, info } = this.props;
if (onRemoveSpot) {
onRemoveSpot(info);
}
};
renderHotspot = () => {
const { info, size } = this.props;
const { key, location, x, y, screenWidth, screenHeight } = info;
const { width, height } = size;
let style = {
position: 'absolute',
left: width * x / screenWidth,
top: height * y / screenHeight,
cursor: 'move'
};
return
};
render() {
const { connectDragSource, size } = this.props;
return connectDragSource(
size ? this.renderHotspot() : this.renderTreeTitle()
);
}
}
export default connect()(DragSource('stationSpot', stationSource, collect)(StationSpot));