diff --git a/lib/charts/line.js b/lib/charts/line.js index 1dae811..74ee43e 100644 --- a/lib/charts/line.js +++ b/lib/charts/line.js @@ -45,17 +45,17 @@ this.defaults.hasMackLine = true; this.defaults.hasXAxis = true; this.defaults.hasYAxis = true; - this.defaults.XAxisTick = 10; - this.defaults.YAxisTick = 4; - this.defaults.XAxisOrient = "bottom"; - this.defaults.YAxisOrient = "left"; - this.defaults.XAxisPadding = 10; - this.defaults.YAxisPadding = 10; - this.defaults.XAxisDomain = []; - this.defaults.YAxisDomain = []; - this.defaults.XAxisFontSize = 10; - this.defaults.YAxisFontSize = 10; - this.defaults.YAxisStartDy = 20; + this.defaults.xAxisTick = 10; + this.defaults.yAxisTick = 4; + this.defaults.xAxisOrient = "bottom"; + this.defaults.yAxisOrient = "left"; + this.defaults.xAxisPadding = 10; + this.defaults.yAxisPadding = 10; + // this.defaults.xAxisDomain = []; + // this.defaults.yAxisDomain = []; + this.defaults.xAxisFontSize = 10; + this.defaults.yAxisFontSize = 10; + this.defaults.yAxisStartDy = 20; this.defaults.hasXGrid = true; this.defaults.hasYGrid = true; @@ -63,7 +63,11 @@ this.defaults.titleColor = "#000"; this.defaults.subtitleColor = "#000"; this.defaults.AxisColor = "#000"; - this.defaults.gridColor = "#efefef"; + // this.defaults.gridColor = "#efefef"; + this.defaults.gridColor = "#000"; + this.defaults.unchosen0pacity = 0.15; + this.defaults.grid0pacity = 0.1; + this.defaults.chosenGrid0pacity = 0.2; //设置用户指定属性 this.setOptions(options); @@ -189,15 +193,16 @@ if (conf.hasXAxis) { var axisColor = conf.AxisColor; var gridColor = conf.gridColor; + var grid0pacity = conf.grid0pacity; var hasDataTitle = conf.hasDataTitle; - var XAxisPadding = conf.XAxisPadding; + var xAxisPadding = conf.xAxisPadding; var margin = conf.margin; var startX = margin[3]; var startY = conf.height - margin[2]; var xWidth = this.xWidth; var maxLength = this.maxLength; var yHeight = this.yHeight; - var fontSize = conf.XAxisFontSize; + var fontSize = conf.xAxisFontSize; var tickLength; if (conf.hasXGrid) { @@ -206,7 +211,7 @@ tickLength = 5; } - var tick = conf.XAxisTick; + var tick = conf.xAxisTick; var tickStep; if (tick % maxLength === 0) { tickStep = xWidth / tick; @@ -216,21 +221,23 @@ } var xAxis = canvas.set(); + var xGrid = canvas.set(); var xAxisText = canvas.set(); xAxis.push(canvas.path("M" + startX + "," + startY + "L" + (startX + xWidth) + "," + startY)); var l = titles.length; for (var i = 0; i < tick; i++) { - xAxis.push(canvas.path("M" + (startX + i * tickStep) + "," + startY + "L" + (startX + i * tickStep) + "," + (startY - tickLength)) - .attr({"stroke": gridColor})); + xGrid.push(canvas.path("M" + (startX + i * tickStep) + "," + startY + "L" + (startX + i * tickStep) + "," + (startY - tickLength))); if (hasDataTitle && i < l - 1) { - xAxisText.push(canvas.text((startX + i * tickStep), startY + XAxisPadding, titles[i + 1])); + xAxisText.push(canvas.text((startX + i * tickStep), startY + xAxisPadding, titles[i + 1])); } } - xAxis.attr({fill: axisColor, "stroke-width":2}); + xAxis.attr({fill: axisColor, "stroke-width": 2}); + xGrid.attr({"stroke": gridColor, "stroke-width": 2, "stroke-opacity": grid0pacity}); xAxisText.attr({"font-size": fontSize}); this.xAxis = xAxis; + this.xGrid = xGrid; this.xAxisText = xAxisText; this.xTick = xWidth / maxLength; } @@ -246,18 +253,19 @@ if (conf.hasYAxis) { var axisColor = conf.AxisColor; var gridColor = conf.gridColor; + var grid0pacity = conf.grid0pacity; var margin = conf.margin; - var YAxisStartDy = conf.YAxisStartDy; - var yHeight = this.yHeight - YAxisStartDy; + var yAxisStartDy = conf.yAxisStartDy; + var yHeight = this.yHeight - yAxisStartDy; var xWidth = this.xWidth; var startX = margin[3]; var startY = margin[0] + yHeight; - var YAxisPadding = conf.YAxisPadding; + var yAxisPadding = conf.yAxisPadding; var max = this.max; var min = this.min; - var fontSize = conf.YAxisFontSize; + var fontSize = conf.yAxisFontSize; - var tick = conf.YAxisTick; + var tick = conf.yAxisTick; var tickStep = yHeight / tick; var d = (max - min) % (tick - 1); @@ -274,19 +282,21 @@ } var yAxis = canvas.set(); + var yGrid = canvas.set(); var yAxisText = canvas.set(); var dx = - yAxis.push(canvas.path("M" + startX + "," + (startY + YAxisStartDy) + "L" + startX + "," + (startY - yHeight))); + yAxis.push(canvas.path("M" + startX + "," + (startY + yAxisStartDy) + "L" + startX + "," + (startY - yHeight))); for (var i = 0; i < tick; i++) { - yAxis.push(canvas.path("M" + startX+ "," + (startY - i * tickStep) + "L" + (startX + tickLength) + "," + (startY - i * tickStep)) - .attr({"stroke": gridColor})); - yAxisText.push(canvas.text(startX - YAxisPadding, (startY - i * tickStep), (min + i * d))); + yGrid.push(canvas.path("M" + startX + "," + (startY - i * tickStep) + "L" + (startX + tickLength) + "," + (startY - i * tickStep))); + yAxisText.push(canvas.text(startX - yAxisPadding, (startY - i * tickStep), (min + i * d))); } - yAxis.attr({fill: axisColor, "stroke-width":2}); + yAxis.attr({fill: axisColor, "stroke-width": 2}); + yGrid.attr({"stroke": gridColor, "stroke-width": 2, "stroke-opacity": grid0pacity}); yAxisText.attr({"font-size": fontSize}); this.yAxis = yAxis; + this.yGrid = yGrid; this.yAxisText = yAxisText; this.yHeight = yHeight; @@ -343,7 +353,7 @@ var yHeight = this.yHeight; var x0 = conf.margin[3]; var y0 = this.y0; - var YAxisStartDy = conf.YAxisStartDy; + var yAxisStartDy = conf.yAxisStartDy; var radius = conf.nodeRadius; var j, l; @@ -397,16 +407,20 @@ var chosen = this.chosen; var chosenNum = this.chosenNum; var lines = this.lines; + var uo = conf.unchosen0pacity; var nodesList = this.nodesList; + var xGrid = this.xGrid; + var grid0pacity = conf.grid0pacity; + var cgo = conf.chosenGrid0pacity; var xAxisText = this.xAxisText; - var XAxisFontSize = conf.XAxisFontSize; + var xAxisFontSize = conf.xAxisFontSize; var highLight = function (num) { var line = lines[num]; - lines.attr({"stroke-opacity": 0.2}); + lines.attr({"stroke-opacity": uo}); nodesList.forEach(function (d) { - d.attr({"fill-opacity": 0.2}); + d.attr({"fill-opacity": uo}); }); line.attr({"stroke-opacity": 1}).toFront(); @@ -474,17 +488,25 @@ nodesList.forEach(function (d) { d.forEach (function (d) { if (hoverMode) { + var nodeNum = d.data('num'); d.mouseover(function () { d.animate({r: (radius + 2) * 2}, 100); - xAxisText[d.data('num')].animate({'font-size': XAxisFontSize * 2}, 100); + xGrid[nodeNum].animate({'stroke-opacity': cgo}, 100); + xAxisText[nodeNum].animate({'font-size': xAxisFontSize * 2}, 100); floatTag.html('