ztZbPath method
dynamic
ztZbPath(
- dynamic x,
- dynamic y,
- dynamic w,
- 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;
}