ztZbPath method

dynamic ztZbPath(
  1. dynamic x,
  2. dynamic y,
  3. dynamic w,
  4. dynamic h,
)

Implementation

ztZbPath(x, y, w, h) {
  var pathData = {};
  var linePath = []; //静态绘制线
  // var lastLinePath = []; //最新动态绘制线
  dynamic zb = "";
  for (var ztzbi = 0, ztzbil = ztzb.length; ztzbi < ztzbil; ztzbi++) {
    zb = ztzb[ztzbi];
    int i = 0, il = 0, j = 0, jj = 0;
    double px = 0, py = 0, leftW = 0;
    double wlx = kW / 2;//kW % 2 == 0 ? kW / 2 : (kW / 2) as int;
    double lx = 0;
    //开始结束索引
    int startIndex =
        kStartI - 1 < 0 ? kStartI : kStartI - 1; //如果不是第一根k线,要从左外屏画进来
    int stopIndex = kStopI + 1 > chartData.kDataL
        ? chartData.kDataL
        : kStopI + 1; //如果不是最后一根线,要从屏幕画到右侧屏幕外
    if (startIndex == kStartI - 1) {
      leftW = kWG;
    } else {
      leftW = 0;
    }
    //设置指标配置属性和计算结果
    var zbpro = indicator.config[zb];
    var zbdata = zbData[zb];
    if (zb == Indicator['MA']) {
      i = 0;
      il = zbpro['title']['value'].length;
      for (; i < il; i++) {
        var tipName = zbpro['title']['value'][i];
        //创建一条数据
        var path = [];
        linePath.add({
          'zb': zb,
          'stroke': {
            'color': zbpro['style'][tipName]['color'],
            'strokeWidth': zbpro['style'][tipName]['strokeWidth'],
          },
          'linePath': path,
        });
        //创建一条数据
        // var lastPath = [];
        // lastLinePath.add({
        //   'zb': zb,
        //   'stroke': {
        //     'color': zbpro['style'][tipName]['color'],
        //     'strokeWidth': zbpro['style'][tipName]['strokeWidth'],
        //   },
        //   'linePath': lastPath,
        // });
        //获取数据
        var mad = zbdata[tipName]??[];
        mad = mad.length>0?mad.sublist(startIndex, stopIndex):[];
        var madl = mad.length;
        j = 0;
        jj = 0;
        for (; j < madl; j++) {
          if (!Tools.isNaN(mad[j])) {
            px = x + (j + 1) * kWG + kStartX - kW - leftW;
            py = y + Tools.priceToY(kYh, mad[j], kYMin, kScale);
            lx = wlx + px;
            if (jj == 0) {
              path.add([
                "moveTo",
                [lx, py]
              ]);
            } else {
              // if (stopIndex == chartData.kDataL && j == madl - 1) {
              //   //最后一根
              //   lastPath.add(["moveTo", path[path.length - 1][1]]);
              //   lastPath.add([
              //     "lineTo",
              //     [lx, py]
              //   ]);
              // } else {
                path.add([
                  "lineTo",
                  [lx, py]
                ]);
              // }
            }
            jj++;
          }
        }
      }
    } else if (zb == Indicator['BOLL']) {
      var bollL = 0;
      for (var key in zbdata.keys) {
        //创建一条数据
        var path = [];
        linePath.add({
          'zb': zb,
          'stroke': {
            'color': zbpro['style'][key]['color'],
            'strokeWidth': zbpro['style'][key]['strokeWidth'],
          },
          'linePath': path,
        });
        //创建一条数据
        // var lastPath = [];
        // lastLinePath.add({
        //   'zb': zb,
        //   'stroke': {
        //     'color': zbpro['style'][key]['color'],
        //     'strokeWidth': zbpro['style'][key]['strokeWidth'],
        //   },
        //   'linePath': lastPath,
        // });
        //获取数据
        var boll = zbdata[key];
        boll = boll.sublist(startIndex, stopIndex);
        bollL = boll.length;
        j = 0;
        jj = 0;
        for (; j < bollL; j++) {
          if (!Tools.isNaN(boll[j])) {
            px = x + (j + 1) * kWG + kStartX - kW - leftW;
            py = y + Tools.priceToY(kYh, boll[j], kYMin, kScale);
            lx = wlx + px;
            if (jj == 0) {
              path.add([
                "moveTo",
                [lx, py]
              ]);
            } else {
              // if (stopIndex == chartData.kDataL && j == bollL - 1) {
              //   //最后一根
              //   lastPath.add(["moveTo", path[path.length - 1][1]]);
              //   lastPath.add([
              //     "lineTo",
              //     [lx, py]
              //   ]);
              // } else {
                path.add([
                  "lineTo",
                  [lx, py]
                ]);
              // }
            }
            jj++;
          }
        }
      }
    } else if (zb == Indicator['SAR']) {
      var sarl = 0, sar = [];
      for (var key in zbdata.keys) {
        if (key == "SAR") continue;
        //创建一条数据
        var path = [];
        linePath.add({
          'zb': zb,
          'stroke': {
            'color': zbpro['style'][key]['color'],
            'strokeWidth': zbpro['style'][key]['strokeWidth'],
          },
          'drawCircle': true,
          'linePath': path,
        });
        //创建一条数据
        // var lastPath = [];
        // lastLinePath.add({
        //   'zb': zb,
        //   'stroke': {
        //     'color': zbpro['style'][key]['color'],
        //     'strokeWidth': zbpro['style'][key]['strokeWidth'],
        //   },
        //   'drawCircle': true,
        //   'linePath': lastPath,
        // });
        sar = zbdata[key];
        sar = sar.sublist(startIndex, stopIndex);
        sarl = sar.length;
        j = 0;
        for (; j < sarl; j++) {
          if (!Tools.isNaN(sar[j])) {
            px = x + (j + 1) * kWG + kStartX - kW - leftW;
            py = y + Tools.priceToY(kYh, sar[j], kYMin, kScale);
            lx = wlx + px;
            // if (stopIndex == chartData.kDataL && j == sarl - 1) {
            //   //最后一根
            //   lastPath.add([
            //     "drawCircle",
            //     [lx, py, Tools.max(1, kW * 0.4)]
            //   ]);
            // } else {
              path.add([
                "drawCircle",
                [lx, py, Tools.max(1, kW * 0.4)]
              ]);
            // }
          }
        }
      }
    } else {
      for (var dv in zbdata.keys) {
        //创建一条数据
        var path = [];
        linePath.add({
          'zb': zb,
          'stroke': {
            'color': zbpro['style'][dv]['color'],
            'strokeWidth': zbpro['style'][dv]['strokeWidth'],
          },
          'linePath': path,
        });
        //创建一条数据
        // var lastPath = [];
        // lastLinePath.add({
        //   'zb': zb,
        //   'stroke': {
        //     'color': zbpro['style'][dv]['color'],
        //     'strokeWidth': zbpro['style'][dv]['strokeWidth'],
        //   },
        //   'linePath': lastPath,
        // });
        //获取数据
        var d2 = zbdata[dv];
        d2 = d2.sublist(startIndex, stopIndex);
        var d2l = d2.length;
        j = 0;
        jj = 0;
        for (; j < d2l; j++) {
          if (!Tools.isNaN(d2[j])) {
            px = x + (j + 1) * kWG + kStartX - kW - leftW;
            py = y + Tools.priceToY(kYh, d2[j], kYMin, kScale);
            lx = wlx + px;
            if (jj == 0) {
              path.add([
                "moveTo",
                [lx, py]
              ]);
            } else {
              // if (stopIndex == chartData.kDataL && j == d2l - 1) {
              //   //最后一根
              //   lastPath.add(["moveTo", path[path.length - 1][1]]);
              //   lastPath.add([
              //     "lineTo",
              //     [lx, py]
              //   ]);
              // } else {
                path.add([
                  "lineTo",
                  [lx, py]
                ]);
              // }
            }
            jj++;
          }
        }
      }
    }
  }
  // pathData = {'linePath': linePath, 'lastLinePath': lastLinePath};
  pathData = {'linePath': linePath};
  return pathData;
}