kTradeEdit method

dynamic kTradeEdit(
  1. dynamic x,
  2. dynamic y,
  3. dynamic w,
  4. 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;
}