kTradeEdit method
dynamic
kTradeEdit(
- dynamic x,
- dynamic y,
- dynamic w,
- dynamic h,
Implementation
kTradeEdit(x, y, w, h) {
var pathData = {};
var linePath = [];
var txtPath = [];
// var obj = {};
double oy = 0;
var gdt1Size = {};
// var gdt1w = 0; //第一段文案宽度
// var gdt2Size = {};
// var gdt2w = 0; //第二段文案宽度
double infoBgH = 28; //信息背景矩形块高度
// var infoBgLeft = x + 30; //信息背景矩形块距离左边距离
if (selectTradeData != null &&
["draggdzy", "draggdzs", "dragcczy", "dragcczs"]
.contains(selectTradeData?['type'])) {
//减去偏移计算出正确的线的y坐标
oy = klineState.currentPosition.dy - selectTradeData?['py2'] - y;
var orderPrice = Tools.yToPrice(
h, oy, kYMin, kScale, klineState.widget.propertys['priceDigits'])
.toString();
var styleProperty = style['posLineStyle']['property'];
if (selectTradeData?['type'] == 'draggdzy' ||
selectTradeData?['type'] == 'draggdzs') {
styleProperty = style['orderLineStyle']['property'];
}
var reactRound = styleProperty['reactRound'];
// var lineColor = styleProperty['lineColor']; //线颜色
// var lineStrokeWidth = styleProperty['lineStrokeWidth']; //线宽
// var lineDotted = styleProperty['lineDotted']; //挂单线是否绘制虚线
// var infoBorderColor = styleProperty['infoBorderColor']; //信息边线色
// var infoFullColor = styleProperty['infoFullColor']; //信息填充色
// var infoStrokeWidth = styleProperty['infoStrokeWidth']; //信息边线宽
// var infoFontColor = styleProperty['infoFontColor']; //信息字体颜色
// var amountBorderColor = styleProperty['amountBorderColor']; //数量边线色
// var amountFullColor = styleProperty['amountFullColor']; //数量填充色
// var amountStrokeWidth = styleProperty['amountStrokeWidth']; //数量边线宽
// var amountFontColor = styleProperty['amountFontColor']; //数量字体颜色
// var zyzsBtnBorderColor = styleProperty['zyzsBtnBorderColor']; //止盈止损边线色
// var zyzsBtnFullColor = styleProperty['zyzsBtnFullColor']; //止盈止损填充色
// var zyzsBtnStrokeWidth = styleProperty['zyzsBtnStrokeWidth']; //止盈止损边线宽
// var zyzsBtnFontColor = styleProperty['zyzsBtnFontColor']; //止盈止损字体颜色
// var yPriceBorderColor = styleProperty['yPriceBorderColor']; //y轴价格边线色
var yPriceFullColor = styleProperty['yPriceFullColor']; //y轴价格填充色
var yPriceStrokeWidth = styleProperty['yPriceStrokeWidth']; //y轴价格边线宽
// var yPriceFontColor = styleProperty['yPriceFontColor']; //y轴价格字体颜色
var zyzsDotted = styleProperty['zyzsDotted']; //止盈止损线是否绘制虚线
// var zyzsInfoFontColor = styleProperty[
// 'zyzsInfoFontColor']; //这里是止盈止损线的信息内容字体颜色,其余颜色从挂单线取,或者取红绿色
// obj = selectTradeData?['line'];
var fullColor = style[ColorType['downColor']];
// if (obj.containsKey('tr_side')) {
// switch (obj['tr_side']) {
// case 1: //现货买入
// fullColor = style[ColorType['upColor']];
// break;
// case 2: //现货卖出
// fullColor = style[ColorType['downColor']];
// break;
// case 3: //合约开多
// fullColor = style[ColorType['upColor']];
// break;
// case 4: //合约开空
// fullColor = style[ColorType['downColor']];
// break;
// case 5: //合约平多
// fullColor = style[ColorType['upColor']];
// break;
// case 6: //合约平空
// fullColor = style[ColorType['downColor']];
// break;
// }
// }
//止盈止损背景颜色
// var dragbgcolor = style[ColorType['downColor']];
if ((oy - selectTradeData?['oy']).abs() > 5) {
if (selectTradeData?['type'] != null &&
selectTradeData?['type'] != '') {
// var trzyzstxt = "";
switch (selectTradeData?['type']) {
case "dragcczy": //止盈
case "draggdzy": //止盈
fullColor = style[ColorType['upColor']];
// if (obj.containsKey('tr_zy_order_price') &&
// obj['tr_zy_order_price'] > 0) {
// trzyzstxt =
// selectTradeData?['line']['tr_zy_limitstr'];
// trzyzstxt = trzyzstxt
// .replaceAll("v", obj['tr_zy_order_price'].toString())
// .replaceAll("v1", orderPrice);
// } else {
// trzyzstxt =
// selectTradeData?['line']['tr_zy_marketstr'];
// trzyzstxt = trzyzstxt.replaceAll("v1", orderPrice);
// }
// gdt1Size =
// Tools.getStrW(trzyzstxt, style['posLineStyle']['font']);
// gdt1w = gdt1Size['width'];
// gdt2Size = Tools.getStrW(
// obj['tr_amount'], style['posLineStyle']['font']);
// gdt2w = gdt2Size['width'];
// dragbgcolor = style[ColorType['upColor']];
break;
case "dragcczs": //止损
case "draggdzs": //止损
fullColor = style[ColorType['downColor']];
// dragbgcolor = style[ColorType['downColor']];
// if (obj.containsKey('tr_zs_order_price') &&
// obj['tr_zs_order_price'] > 0) {
// trzyzstxt =
// selectTradeData?['line']['tr_zs_limitstr'];
// trzyzstxt = trzyzstxt
// .replaceAll("v", obj['tr_zs_order_price'].toString())
// .replaceAll("v1", orderPrice);
// } else {
// trzyzstxt =
// selectTradeData?['line']['tr_zs_marketstr'];
// trzyzstxt = trzyzstxt.replaceAll("v1", orderPrice);
// }
// gdt1Size =
// Tools.getStrW(trzyzstxt, style['posLineStyle']['font']);
// gdt1w = gdt1Size['width'];
// gdt2Size = Tools.getStrW(
// obj['tr_amount'], style['posLineStyle']['font']);
// gdt2w = gdt2Size['width'];
break;
}
//这里测这个字,就是为了获取文字的高度给y轴用的,如果直接测量y轴价格的高度,应该没有文字高,跟其他y轴上的对象对不上高度
gdt1Size = Tools.getStrW('测', style['posLineStyle']['font']);
double doublePadding = 8;
double bgw = initYW-20+doublePadding;
double bgx = x + w - bgw-10+doublePadding/2;
infoBgH = gdt1Size['height'] + doublePadding;
// var bg1 = [
// infoBgLeft,
// y + oy - infoBgH / 2,
// gdt1w + doublePadding,
// infoBgH,
// reactRound
// ];
//止盈背景
// callTradeLineReactPath(linePath, [], selectTradeData?['type'], 0,
// dragbgcolor, bg1, false, 0, '');
//止盈信息
// callTradeLineTxtPath(
// txtPath,
// [],
// selectTradeData?['type'],
// 0,
// zyzsInfoFontColor,
// [
// trzyzstxt,
// bg1[0] + bg1[2] / 2,
// y + oy,
// {'ylayout': 'center', 'xlayout': 'center'}
// ]);
// var bg2 = [
// bg1[0] + bg1[2],
// bg1[1],
// gdt2w + doublePadding,
// bg1[3],
// reactRound
// ];
//数量背景
// callTradeLineReactPath(linePath, [], selectTradeData?['type'], 0,
// amountFullColor, bg2, true, amountStrokeWidth, amountBorderColor);
//数量信息
// callTradeLineTxtPath(
// txtPath,
// [],
// selectTradeData?['type'],
// 0,
// amountFontColor,
// [
// obj['tr_amount'],
// bg2[0] + bg2[2] / 2,
// y + oy,
// {'ylayout': 'center', 'xlayout': 'center'}
// ]);
var lineData4 = {
'type': selectTradeData?['type'],
'stroke': {
'color': fullColor,
'style': PaintingStyle.stroke,
},
'property': {'dottedLine': zyzsDotted},
'linePath': [
[
"moveTo",
[x, y + oy]
],
[
"lineTo",
[bgx, y + oy]
]
],
};
linePath.insert(0, lineData4);
var bg4 = [bgx, y + oy - infoBgH / 2, bgw, infoBgH, reactRound];
//y轴价格背景
callTradeLineReactPath(linePath, [], selectTradeData?['type'], 0,
yPriceFullColor, bg4, true, yPriceStrokeWidth, fullColor);
//y轴价格信息
callTradeLineTxtPath(
txtPath,
[],
selectTradeData?['type'],
0,
fullColor,
[
orderPrice,
bg4[0] + bg4[2] / 2,
y + oy,
{'ylayout': 'center', 'xlayout': 'center'}
]);
}
}
}
pathData = {
'linePath': linePath,
'txtPath': txtPath,
};
return pathData;
}