selectTradeLineData method
dynamic
selectTradeLineData()
Implementation
selectTradeLineData() {
bool result = false;
//py检测偏移 如果线距离鼠标点在 +py 和 -py 之间 则算选中
//btnPy检测偏移 如果按钮距离鼠标点在 +btnPy 和 -btnPy 之间 则算选中
//py2 py3的绝对值 线距离鼠标点的物理距离 用来判断哪根线里鼠标点最近
//py3 线和鼠标点在坐标系上的差值,鼠标在线上方为负值在线下方为正值
//oy 线在坐标系k线区域的y坐标
List selectLineList = [];
var obj = {};
double my = klineState.currentPosition.dy;
int i = 0;
//判断线是否在可选范围内
//挂单
if (chartData.orderData.isNotEmpty) {
for (i = 0; i < chartData.orderData.length; i++) {
obj = chartData.orderData[i];
if (obj['codeId'] != klineState.widget.propertys['codeId'] ||
obj['tr_price'] > kYMax ||
obj['tr_price'] < kYMin) {
continue;
}
if (obj['isShowHoverX'] ||
obj['isShowHoverZyZs'] ||
obj['isShowHoverLine']) {
selectLineList.add({
'oy': obj['oy'],
'py2': my - obj['oy'],
'line': json.decode(json.encode(obj)),
'type': "gd"
});
result = true;
} else if (obj['isShowHoverZyX']) {
//委托止盈关闭按钮
selectLineList.add({
'oy': obj['zyoy'],
'py2': my - obj['zyoy'],
'line': json.decode(json.encode(obj)),
'type': "gdzy"
});
result = true;
} else if (obj['isShowHoverZsX']) {
//委托止损关闭按钮
selectLineList.add({
'oy': obj['zsoy'],
'py2': my - obj['zsoy'],
'line': json.decode(json.encode(obj)),
'type': "gdzs"
});
result = true;
} else if (obj['isShowHoverZy']) {
//委托止盈线
selectLineList.add({
'oy': obj['zyoy'],
'py2': my - obj['zyoy'],
'line': json.decode(json.encode(obj)),
'type': "draggdzy"
});
result = true;
} else if (obj['isShowHoverZs']) {
//委托止损线
selectLineList.add({
'oy': obj['zsoy'],
'py2': my - obj['zsoy'],
'line': json.decode(json.encode(obj)),
'type': "draggdzs"
});
result = true;
} else if (obj['isOnLine']) {
result = true;
}
}
}
//持仓
if (chartData.positionData.isNotEmpty) {
for (i = 0; i < chartData.positionData.length; i++) {
obj = chartData.positionData[i];
if (obj['codeId'] != klineState.widget.propertys['codeId'] ||
obj['tr_price'] > kYMax ||
obj['tr_price'] < kYMin) {
continue;
}
if (obj['isShowHoverX'] ||
obj['isShowHoverZyZs'] ||
obj['isShowHoverLine']) {
selectLineList.add({
'oy': obj['oy'],
'py2': my - obj['oy'],
'line': json.decode(json.encode(obj)),
'type': "cc"
});
result = true;
} else if (obj['isShowHoverZyX']) {
//持仓止盈关闭按钮
selectLineList.add({
'oy': obj['zyoy'],
'py2': my - obj['zyoy'],
'line': json.decode(json.encode(obj)),
'type': "cczy"
});
result = true;
} else if (obj['isShowHoverZsX']) {
//持仓止损关闭按钮
selectLineList.add({
'oy': obj['zsoy'],
'py2': my - obj['zsoy'],
'line': json.decode(json.encode(obj)),
'type': "cczs"
});
result = true;
} else if (obj['isShowHoverZy']) {
//持仓止盈线
selectLineList.add({
'oy': obj['zyoy'],
'py2': my - obj['zyoy'],
'line': json.decode(json.encode(obj)),
'type': "dragcczy"
});
result = true;
} else if (obj['isShowHoverZs']) {
//持仓止损线
selectLineList.add({
'oy': obj['zsoy'],
'py2': my - obj['zsoy'],
'line': json.decode(json.encode(obj)),
'type': "dragcczs"
});
result = true;
} else if (obj['isOnLine']) {
result = true;
}
}
}
//排序
if (selectLineList.isNotEmpty) {
selectLineList.sort((a, b) {
return a['py2'].compareTo(b['py2']);
});
//只有按下的时候才确定具体选中了哪条线
selectTradeData = selectLineList[selectLineList.length - 1];
} else {
selectTradeData = null;
}
return result;
}