1: FibRetracer.prototype.draw = function () { 2: if (this.context == null) { 3: this.context = this.renderCanvas[0].getContext("2d"); 4: }
5:
6: if (this.fibPoint == null) { 7: return;
8: }
9:
10: this.context.clearRect(0, 0, this.renderCanvas.attr("width"), this.renderCanvas.attr("height")); 11:
12: var viewport = this.element.igDataChart("option", "gridAreaRect"); 13: this.context.save();
14: this.context.beginPath();
15: this.context.moveTo(viewport.left, viewport.top);
16: this.context.lineTo(viewport.left + viewport.width, viewport.top);
17: this.context.lineTo(viewport.left + viewport.width, viewport.top + viewport.height);
18: this.context.lineTo(viewport.left, viewport.top + viewport.height);
19: this.context.lineTo(viewport.left, viewport.top);
20: this.context.clip();
21:
22: var scaledPoint = this.getScaled(this.fibPoint);
23: var scaledRightBottom = this.getScaled({ 24: x: this.fibPoint.x + this.fibWidth,
25: y: this.fibPoint.y - this.fibHeight
26: });
27:
28: var viewport = { 29: top: scaledPoint.y,
30: left: scaledPoint.x,
31: width: scaledRightBottom.x - scaledPoint.x,
32: height: scaledRightBottom.y - scaledPoint.y
33: };
34:
35: var values = [
36: 0.0,
37: 23.6,
38: 38.2,
39: 100.0
40: ];
41:
42: var entries = [];
43: var entry;
44:
45: for (var i = 0; i < values.length; i++) { 46: var val = values[i];
47: entries.push(
48: { 49: text: val.toString(),
50: value: val
51: });
52:
53: }
54:
55: for (var j = 0; j < entries.length; j++) { 56: entry = entries[j];
57: entry.desiredWidth = this.context.measureText(entry.text).width;
58: }
59:
60: if (viewport.width == 0 ||
61: viewport.height == 0 ||
62: isNaN(viewport.width) ||
63: isNaN(viewport.height)) { 64: return;
65: }
66:
67: this.context.strokeStyle = "red";
68: this.context.fillStyle = "red";
69: this.context.lineWidth = 1.0;
70:
71: for (var j = 0; j < entries.length; j++) { 72: entry = entries[j];
73: var yPos = (viewport.top + viewport.height) -
74: (viewport.height * entry.value / 100.0);
75: var xLeft = viewport.left;
76: var xRight = viewport.left + viewport.width;
77: if (isNaN(yPos) ||
78: isNaN(xLeft) ||
79: isNaN(xRight)) { 80: continue;
81: }
82:
83: this.context.beginPath();
84: this.context.moveTo(xLeft, yPos);
85: this.context.lineTo(xRight, yPos);
86: this.context.stroke();
87:
88: this.context.textBaseline = "bottom";
89: this.context.fillText(entry.text, xRight - entry.desiredWidth, yPos);
90: }
91:
92: this.context.restore();
93: };