timeAxis method

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

Implementation

timeAxis(x, y, w, h) {
  var pathData = {};
  var linePath = [];
  var txtPath = [];
  var xTxtSize = {};
  double xTxtWidth = 0.0;
  double xOfferY = 0.0;
  int xgapc = 0;
  int i = 0;
  if (chartData.kDataL > 0) {
    //测量时间宽度
    String clstr = Tools.intervalTimeFormat(chartData.klineData[0]['time'],klineState.widget.propertys['interval']);
    xTxtSize = Tools.getStrW(clstr,style['xAxisStyle']['font']);
    xTxtWidth = xTxtSize['width']*2;
    xOfferY = (h-xTxtSize['height'])/2;
    xgapc = (xTxtWidth / kWG).floor();
    if (kxPreGapC != xgapc) {
      kxPreGapC = xgapc;
      //缩放逻辑 从新计算
      kXTime = [];
      for (i = kStopI-(xgapc/2).floor(); i >= kStartI; i -= xgapc) {
        kXTime.insert(0, i);
      }
    } else {
      if(kXTime.isNotEmpty){
        for (i = kXTime[0] - xgapc; i >= kStartI; i -= xgapc) {
          kXTime.insert(0, i);
        }
        for (i = kXTime[kXTime.length - 1] + xgapc;
          i < kStopI-(xgapc/2).floor();
          i += xgapc) {
          kXTime.add(i);
        }
      }else{
        for (i = kStopI-(xgapc/2).floor(); i >= kStartI; i -= xgapc) {
          kXTime.insert(0, i);
        }
      }
    }
    var tfStr = '', tfx = 0;
    for (i = 0; i < kXTime.length; i++) {
      if(kXTime[i]<kStartI || kXTime[i]>kStopI)continue;
      int t = Tools.getLocalTime(chartData.klineData[kXTime[i]]['time'],chartData.serveZone,chartData.timeZone);
      tfStr = Tools.intervalTimeFormat(t,
          klineState.widget.propertys['interval']);
      tfx = ((kXTime[i] - kStartI) * kWG + kGap + kW / 2 + kStartX).floor();
      txtPath.add([
        tfStr,
        x + tfx,
        y+xOfferY,
        {'xlayout': 'center'}
      ]);
    }
  }
  pathData = {'linePath': linePath, 'txtPath': txtPath};
  return pathData;
}