1// Name: LineChart.LineChart.debug.js 2// Assembly: AjaxControlToolkit 3// Version: 4.1.7.1213 4// FileVersion: 4.1.7.1213 5Type.registerNamespace("Sys.Extended.UI"); 6 7Sys.Extended.UI.LineChart = function (element) { 8 Sys.Extended.UI.LineChart.initializeBase(this, [element]); 9 var id = this.get_id(); 10 id = id.replace("_ctl00", ""); 11 this._parentDiv = document.getElementById(id + "__ParentDiv"); 12 13 this._chartWidth = '300'; 14 this._chartHeight = '300'; 15 this._chartTitle = ''; 16 this._categoriesAxis = ''; 17 this._series = null; 18 this._chartType = Sys.Extended.UI.LineChartType.Basic; 19 this._theme = 'LineChart'; 20 this._valueAxisLines = 9; 21 this._chartTitleColor = ''; 22 this._valueAxisLineColor = ''; 23 this._categoryAxisLineColor = ''; 24 this._baseLineColor = ''; 25 this._tooltipBackgroundColor = '#ffffff'; 26 this._tooltipFontColor = '#0E426C'; 27 this._tooltipBorderColor = '#B85B3E'; 28 this._areaDataLabel = ''; 29 30 this.yMax = 0; 31 this.yMin = 0; 32 this.roundedTickRange = 0; 33 this.startX = 0; 34 this.startY = 0; 35 this.endX = 0; 36 this.endY = 0; 37 this.xInterval = 0; 38 this.yInterval = 0; 39 this.arrXAxis; 40 this.arrXAxisLength = 0; 41 this.charLength = 3.5; 42 this.arrCombinedData = null; 43 this._toolTipDiv; 44} 45 46Sys.Extended.UI.LineChart.prototype = { 47 48 initialize: function () { 49 Sys.Extended.UI.LineChart.callBaseMethod(this, "initialize"); 50 51 if (!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1")) { 52 throw 'Browser does not support SVG.'; 53 } 54 55 if (this._valueAxisLines == 0) { 56 this._valueAxisLines = 9; 57 } 58 59 this.generateTooltipDiv(); 60 this.generateLineChart(); 61 }, 62 63 dispose: function () { 64 Sys.Extended.UI.LineChart.callBaseMethod(this, "dispose"); 65 }, 66 67 generateTooltipDiv: function () { 68 this._divTooltip = $common.createElementFromTemplate({ 69 nodeName: 'div', 70 properties: { 71 id: this.get_id() + '_tooltipDiv', 72 style: { 73 position: 'absolute', 74 backgroundColor: this._tooltipBackgroundColor, 75 borderStyle: 'solid', 76 borderWidth: '5px', 77 borderColor: this._tooltipBorderColor, 78 left: '0px', 79 top: '0px', 80 color: this._tooltipFontColor, 81 visibility: 'hidden', 82 zIndex: '10000', 83 padding: '10px' 84 } 85 } 86 }, this._parentDiv); 87 }, 88 89 generateLineChart: function () { 90 91 this.arrXAxis = this._categoriesAxis.split(','); 92 this.arrXAxisLength = this.arrXAxis.length; 93 94 this.calculateMinMaxValues(); 95 this.calculateInterval(); 96 this.calculateValueAxis(); 97 var svgContents = this.initializeSVG(); 98 svgContents = svgContents + String.format('<text x="{0}" y="{1}" id="ChartTitle" style="fill:{3}">{2}</text>', parseInt(this._chartWidth) / 2 - (this._chartTitle.length * this.charLength), parseInt(this._chartHeight) * 5 / 100, this._chartTitle, this._chartTitleColor); 99 100 svgContents = svgContents + this.drawBackgroundHorizontalLines(); 101 svgContents = svgContents + this.drawBackgroundVerticalLines(); 102 svgContents = svgContents + this.drawBaseLines(); 103 svgContents = svgContents + this.drawLegendArea(); 104 svgContents = svgContents + this.drawAxisValues(); 105 this._parentDiv.innerHTML = this._parentDiv.innerHTML + svgContents; 106 this.drawLines(); 107 }, 108 109 calculateInterval: function () { 110 this.startX = (this._chartWidth * 10 / 100) + 0.5; 111 this.endX = parseInt(this._chartWidth) - 4.5; 112 113 if (this.yMin >= 0) 114 this.startY = Math.round(parseInt(this._chartHeight) - (parseInt(this._chartHeight) * 24 / 100)) + 0.5; 115 else
116 this.startY = Math.round(parseInt(this._chartHeight) - (parseInt(this._chartHeight) * 12 / 100)) / 2 + 0.5; 117 118 this.yInterval = this.startY / (this._valueAxisLines + 1); 119 }, 120 121 calculateMinMaxValues: function (chartType) { 122 var seriesMax; 123 var seriesMin; 124 var arrData; 125 126 if (this._chartType == Sys.Extended.UI.LineChartType.Basic) { 127 for (var i = 0; i < this._series.length; i++) { 128 arrData = new Array(); 129 for (var j = 0; j < this._series[i].Data.length; j++) { 130 arrData[j] = this._series[i].Data[j]; 131 } 132 seriesMax = Math.max.apply(null, arrData); 133 seriesMin = Math.min.apply(null, arrData); 134 if (i == 0) { 135 this.yMax = seriesMax; 136 this.yMin = seriesMin; 137 } 138 else { 139 if (seriesMax > this.yMax) 140 this.yMax = seriesMax; 141 if (seriesMin < this.yMin) 142 this.yMin = seriesMin; 143 } 144 } 145 } 146 else { 147 this.arrCombinedData = null; 148 for (var i = 0; i < this._series.length; i++) { 149 arrData = new Array(); 150 for (var j = 0; j < this._series[i].Data.length; j++) { 151 arrData[j] = this._series[i].Data[j]; 152 } 153 if (this.arrCombinedData == null) 154 this.arrCombinedData = arrData; 155 else { 156 for (j = 0; j < this._series[i].Data.length; j++) { 157 this.arrCombinedData[j] = parseFloat(this.arrCombinedData[j]) + parseFloat(arrData[j]); 158 } 159 } 160 } 161 162 for (var i = 0; i < this._series.length; i++) { 163 seriesMin = Math.min.apply(null, this._series[i].Data); 164 if (i == 0) { 165 this.yMin = seriesMin; 166 } 167 else { 168 if (seriesMin < this.yMin) 169 this.yMin = seriesMin; 170 } 171 } 172 173 this.yMax = Math.max.apply(null, this.arrCombinedData); 174 } 175 176 if (this.yMin < 0) { 177 this._valueAxisLines = Math.round(this._valueAxisLines / 2); 178 } 179 }, 180 181 calculateValueAxis: function () { 182 var range; 183 var unroundedTickSize; 184 var x; 185 var pow10x; 186 187 if (this.yMin >= 0) { 188 range = this.yMax; 189 } 190 else { 191 range = this.yMax > Math.abs(this.yMin) ? this.yMax : Math.abs(this.yMin); 192 } 193 194 unroundedTickSize = range / (this._valueAxisLines - 1); 195 if (unroundedTickSize < 1) { 196 this.roundedTickRange = unroundedTickSize.toFixed(1); 197 } 198 else { 199 x = Math.ceil((Math.log(unroundedTickSize) / Math.log(10)) - 1); 200 pow10x = Math.pow(10, x); 201 this.roundedTickRange = Math.ceil(unroundedTickSize / pow10x) * pow10x; 202 } 203 this.startX = this.startX + (this.roundedTickRange * 10 * this._valueAxisLines / 10).toString().length * this.charLength; 204 }, 205 206 drawBackgroundHorizontalLines: function () { 207 var horizontalLineContents = ''; 208 for (var i = 1; i <= this._valueAxisLines; i++) { 209 horizontalLineContents = horizontalLineContents + String.format('<path d="M{0} {2} {1} {2}" id="HorizontalLine" style="stroke:{3}"></path>', this.startX, this.endX, this.startY - (this.yInterval * i), this._categoryAxisLineColor); 210 } 211 212 if (this.yMin < 0) { 213 for (var i = 1; i <= this._valueAxisLines; i++) { 214 horizontalLineContents = horizontalLineContents + String.format('<path d="M{0} {2} {1} {2}" id="HorizontalLine" style="stroke:{3}"></path>', this.startX, this.endX, this.startY + (this.yInterval * i), this._categoryAxisLineColor); 215 } 216 } 217 return horizontalLineContents; 218 }, 219
220 drawBackgroundVerticalLines: function () { 221 var verticalLineContents = ''; 222 this.xInterval = Math.round((parseInt(this._chartWidth) - this.startX) / this.arrXAxisLength); 223 224 for (var i = 0; i < this.arrXAxisLength; i++) { 225 verticalLineContents = verticalLineContents + String.format('<path id="VerticalLine" d="M{0} {1} {0} {2}" style="stroke:{3}"></path>', ((parseInt(this._chartWidth) - 5) - (this.xInterval * i)), (this.startY - (this.yInterval * this._valueAxisLines)), this.startY, this._valueAxisLineColor); 226 } 227 228 if (this.yMin < 0) { 229 for (var i = 0; i < this.arrXAxisLength; i++) { 230 verticalLineContents = verticalLineContents + String.format('<path id="VerticalLine" d="M{0} {1} {0} {2}" style="stroke:{3}"></path>', ((parseInt(this._chartWidth) - 5) - (this.xInterval * i)), (this.startY + (this.yInterval * this._valueAxisLines)), this.startY, this._valueAxisLineColor); 231 } 232 } 233 return verticalLineContents; 234 }, 235 236 drawBaseLines: function () { 237 var baseLineContents = ''; 238 239 baseLineContents = baseLineContents + String.format('<path d="M{0} {1} {2} {1}" id="BaseLine" style="stroke:{3}"></path>', this.startX, this.startY, this.endX, this._baseLineColor); 240 baseLineContents = baseLineContents + String.format('<path d="M{0} {1} {0} {2}" id="BaseLine" style="stroke:{3}"></path>', this.startX, (this.startY - (this.yInterval * this._valueAxisLines)), this.startY, this._baseLineColor); 241 baseLineContents = baseLineContents + String.format('<path d="M{0} {1} {0} {2}" id="BaseLine" style="stroke:{3}"></path>', this.startX, this.startY, this.startY + 4, this._baseLineColor); 242 243 for (var i = 0; i < this.arrXAxisLength; i++) { 244 baseLineContents = baseLineContents + String.format('<path d="M{0} {1} {0} {2}" id="BaseLine" style="stroke:{3}"></path>', ((parseInt(this._chartWidth) - 5) - (this.xInterval * i)), this.startY, this.startY + 4, this._baseLineColor); 245 } 246 247 for (var i = 0; i <= this._valueAxisLines; i++) { 248 baseLineContents = baseLineContents + String.format('<path d="M{0} {2} {1} {2}" id="BaseLine" style="stroke:{3}"></path>', this.startX - 4, this.startX, this.startY - (this.yInterval * i), this._baseLineColor); 249 } 250 251 if (this.yMin < 0) { 252 baseLineContents = baseLineContents + String.format('<path d="M{0} {1} {0} {2}" id="BaseLine" style="stroke:{3}"></path>', this.startX, (this.startY + (this.yInterval * this._valueAxisLines)), this.startY, this._baseLineColor); 253 for (var i = 1; i <= this._valueAxisLines; i++) { 254 baseLineContents = baseLineContents + String.format('<path d="M{0} {2} {1} {2}" id="BaseLine" style="stroke:{3}"></path>', this.startX - 4, this.startX, this.startY + (this.yInterval * i), this._baseLineColor); 255 } 256 } 257 return baseLineContents; 258 }, 259 260 drawLegendArea: function () { 261 var legendContents = ''; 262 var legendAreaStartHeight = (parseInt(this._chartHeight) * 82 / 100) + 5; 263 var legendBoxWidth = 7.5; 264 var legendBoxHeight = 7.5; 265 var spaceInLegendContents = 5; 266 267 var legendCharLength = 0; 268 for (var i = 0; i < this._series.length; i++) { 269 legendCharLength = legendCharLength + this._series[i].Name.length; 270 } 271 var legendAreaWidth = Math.round((legendCharLength * 5) / 2) + Math.round((legendBoxWidth + (spaceInLegendContents * 2)) * this._series.length); 272 var isLegendNextLine = false; 273 if (legendAreaWidth > parseInt(this._chartWidth) /2) { 274 legendAreaWidth = legendAreaWidth / 2; 275 isLegendNextLine = true; 276 } 277 278 legendContents = legendContents + '<g>'; 279 legendContents = legendContents + String.format('<path d="M{0} {1} {2} {1} {2} {3} {0} {3} z" id="LegendArea" stroke=""></path>', parseInt(this._chartWidth) * 50 / 100 - (legendAreaWidth / 2), legendAreaStartHeight, Math.round(parseInt(this._chartWidth) * 50 / 100 + (legendCharLength * 5)) + Math.round((legendB
279oxWidth + (spaceInLegendContents * 2)) * this._series.length), Math.round(parseInt(this._chartHeight) * 97.5 / 100)); 280 281 var startText = parseInt(this._chartWidth) * 50 / 100 - (legendAreaWidth / 2) + 5 + legendBoxWidth + spaceInLegendContents; 282 var nextStartText = startText; 283 var startLegend = parseInt(this._chartWidth) * 50 / 100 - (legendAreaWidth / 2) + 5; 284 var nextStartLegend = startLegend; 285 for (var i = 0; i < this._series.length; i++) { 286 if (isLegendNextLine && i == Math.round(this._series.length / 2)) { 287 startText = parseInt(this._chartWidth) * 50 / 100 - (legendAreaWidth / 2) + 5 + legendBoxWidth + spaceInLegendContents; 288 nextStartText = startText; 289 startLegend = parseInt(this._chartWidth) * 50 / 100 - (legendAreaWidth / 2) + 5; 290 nextStartLegend = startLegend; 291 legendAreaStartHeight = (parseInt(this._chartHeight) * 89 / 100) + 5; 292 isLegendNextLine = false; 293 } 294 startLegend = nextStartLegend; 295 startText = nextStartText; 296 legendContents = legendContents + String.format('<path d="M{0} {1} {2} {1} {2} {3} {0} {3} z" id="Legend{4}" style="fill:{5}"></path>', startLegend, legendAreaStartHeight + legendBoxHeight, startLegend + legendBoxWidth, legendAreaStartHeight + 15, i + 1, this._series[i].LineColor); 297 legendContents = legendContents + String.format('<text x="{0}" y="{1}" id="LegendText">{2}</text>', startText, legendAreaStartHeight + 15, this._series[i].Name); 298 if (this._series[i].Name.length > 10) { 299 nextStartLegend = startLegend + (this._series[i].Name.length * 5) + legendBoxWidth + (spaceInLegendContents * 2); 300 nextStartText = startText + (this._series[i].Name.length * 5) + legendBoxWidth + (spaceInLegendContents * 2); 301 } 302 else { 303 nextStartLegend = nextStartLegend + (this._series[i].Name.length * 6) + legendBoxWidth + (spaceInLegendContents * 2); 304 nextStartText = nextStartText + (this._series[i].Name.length * 6) + legendBoxWidth + (spaceInLegendContents * 2); 305 } 306 } 307 legendContents = legendContents + '</g>'; 308 return legendContents; 309 }, 310 311 drawAxisValues: function () { 312 var axisContents = ''; 313 var textLength = 0; 314 for (var i = 0; i < this.arrXAxisLength; i++) { 315 textLength = this.arrXAxis[i].toString().length * this.charLength; 316 axisContents = axisContents + String.format('<text id="SeriesAxis" x="{0}" y="{1}" fill-opacity="1">{2}</text>', Math.round(this.startX + (this.xInterval * i) + (this.xInterval * 50 / 100) - (textLength)), this.startY + Math.round(this.yInterval * 65 / 100), this.arrXAxis[i]); 317 } 318 319 for (var i = 0; i <= this._valueAxisLines; i++) { 320 axisContents = axisContents + String.format('<text id="ValueAxis" x="{0}" y="{1}">{2}</text>', this.startX - ((this.roundedTickRange * 10 * i / 10).toString().length * 5.5) - 10, this.startY - (this.yInterval * i) + 3.5, this.roundedTickRange * 10 * i / 10); 321 } 322 323 if (this.yMin < 0) { 324 for (var i = 1; i <= this._valueAxisLines; i++) { 325 axisContents = axisContents + String.format('<text id="ValueAxis" x="{0}" y="{1}">-{2}</text>', this.startX - ((this.roundedTickRange * 10 * i / 10).toString().length * 5.5) - 15, this.startY + (this.yInterval * i), this.roundedTickRange * 10 * i / 10); 326 } 327 } 328 329 return axisContents; 330 }, 331 332 initializeSVG: function () { 333 var svgContents = String.format('<?xml-stylesheet type="text/css" href="{0}.css"?>', this._theme); 334 svgContents = svgContents + String.format('<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="{0}" height="{1}" style="position: relative; display: block;">', this._chartWidth, this._chartHeight); 335 svgContents = svgContents + '<defs>'; 336 svgContents = svgContents + '<linearGradient gradientTransform="rotate(0)">'; 337 svgContents = svgContents + '<stop offset="0%" id="LinearGradient-Stop1"></stop>'; 338 svgContents = svgContents + '<stop offset="25%" id="LinearGradient-Stop2"></stop>'; 339 svgContents = svgContents + '<stop offset="100%" id="LinearGradient-Stop3"></stop></linearGradient>'; 340 svgContents = svgContents + '</defs>'; 341 342 svgContents = svgContents + String.format('<path fill="none" stroke-opacity="1" fill-opacity="1" stroke-linejoin="round" stroke-linecap="square" d="M5 {0} {1} {0} {1} {2} 5 {2} z"/>
342', parseInt(this._chartHeight) * 1 / 10 + 5, parseInt(this._chartWidth) - 5, parseInt(this._chartHeight) - parseInt(this._chartHeight) * 1 / 10); 343 svgContents = svgContents + String.format('<path id="ChartBackGround" stroke="" d="M0 0 {0} 0 {0} {1} 0 {1} z"/>', this._chartWidth, this._chartHeight); 344 svgContents = svgContents + String.format('<path fill="#fff" stroke-opacity="1" fill-opacity="0" stroke-linejoin="round" stroke-linecap="square" stroke="" d="M5 {0} {1} {0} {1} {2} 5 {2} z" />', parseInt(this._chartHeight) * 1 / 10 + 5, parseInt(this._chartWidth) - 5, parseInt(this._chartHeight) - parseInt(this._chartHeight) * 1 / 10); 345 346 return svgContents; 347 }, 348 349 drawLines: function () { 350 var lineContents = ''; 351 var yVal = 0; 352 var lastStartX; 353 var lastStartY; 354 355 lastStartX = new Array(); 356 lastStartY = new Array(); 357 for (var j = 0; j < this._series.length; j++) { 358 lastStartX[j] = this.startX; 359 lastStartY[j] = this.startY; 360 } 361 this.animateLines(this, lastStartX, lastStartY, 0, 0); 362 }, 363 364 animateLines: function (me, lastStartX, lastStartY, yVal, index) { 365 for (var j = 0; j < me._series.length; j++) { 366 yVal = 0; 367 if (me._chartType == Sys.Extended.UI.LineChartType.Stacked) { 368 for (k = 0; k <= j; k++) { 369 yVal = parseFloat(yVal) + parseFloat(me._series[k].Data[index]); 370 } 371 } 372 else { 373 yVal = me._series[j].Data[index]; 374 } 375 376 if (me._chartType == Sys.Extended.UI.LineChartType.Stacked) { 377 if (me.arrCombinedData[index] > 0) { 378 if (index > 0) 379 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<path d="M{0} {1} {2} {3}" id="Line{4}" style="fill:{5};stroke:{5}"></path>', lastStartX[j], lastStartY[j], me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) - 7.5, yVal); 380 else 381 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) - 7.5, yVal); 382 } 383 else { 384 if (index > 0) 385 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<path d="M{0} {1} {2} {3}" id="Line{4}" style="fill:{5};stroke:{5}"></path>', lastStartX[j], lastStartY[j], me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) + 7.5, yVal); 386 else 387 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) + 7.5, yVal); 388 } 389 } 390 else { 391 if (yVal > 0) { 392 if (index > 0) 393 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<path d="M{0} {1} {2} {3}" id="Line{4}" style="fill:{5};stroke:{5}"></path>', lastStartX[j], lastStartY[j], me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) - 7.5, yVal); 394 else 395 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) - 7.5, yVal); 396 } 397 else { 398 if (index > 0) 399 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<path d="M{0} {1} {2} {3}" id="Line{4}" style="fill:{5};stroke:{5}"></path>', lastStartX[j], lastStartY[j], me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) + 7.5, yVal); 400 else 401 me._parentDiv.innerHTML = me._parentDiv.innerHTML.replace('</svg>', '') + String.format('<circle id="Dot{2}" cx="{0}" cy="{1}" r="4" style="fill:{3};stroke:{3}" onmouseover="ShowTooltip(this, evt, {4}, \'{5}\')" onmouseout="HideTooltip(this, evt)"></circle>', me.startX + (me.xInterval * index) + (me.xInterval / 2), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)), j + 1, me._series[j].LineColor, yVal, me._areaDataLabel) + String.format('<text id="LegendText" x="{0}" y="{1}">{2}</text>', me.startX + (me.xInterval * index) + (me.xInterval * 20 / 100), me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)) + 7.5, yVal); 402 } 403 } 404 405 lastStartX[j] = me.startX + (me.xInterval * index) + (me.xInterval / 2) + 3; 406 lastStartY[j] = me.startY - Math.round(yVal * (me.yInterval / me.roundedTickRange)); 407 } 408 409 index++; 410 411 if (index < me.arrXAxisLength) { 412 setTimeout(function () { 413 me.animateLines(me, lastStartX, lastStartY, 0, index); 414 }, 400); 415 } 416 }, 417 418 get_chartWidth: function () { 419 return this._chartWidth; 420 }, 421 set_chartWidth: function (value) { 422 this._chartWidth = value; 423 }, 424
425 get_chartHeight: function () { 426 return this._chartHeight; 427 }, 428 set_chartHeight: function (value) { 429 this._chartHeight = value; 430 }, 431 432 get_chartTitle: function () { 433 return this._chartTitle; 434 }, 435 set_chartTitle: function (value) { 436 this._chartTitle = value; 437 }, 438 439 get_categoriesAxis: function () { 440 return this._categoriesAxis; 441 }, 442 set_categoriesAxis: function (value) { 443 this._categoriesAxis = value; 444 }, 445 446 get_ClientSeries: function () { 447 return this._series; 448 }, 449 set_ClientSeries: function (value) { 450 this._series = value; 451 }, 452 453 get_chartType: function () { 454 return this._chartType; 455 }, 456 set_chartType: function (value) { 457 this._chartType = value; 458 }, 459 460 get_theme: function () { 461 return this._theme; 462 }, 463 set_theme: function (value) { 464 this._theme = value; 465 }, 466 467 get_valueAxisLines: function () { 468 return this._valueAxisLines; 469 }, 470 set_valueAxisLines: function (value) { 471 this._valueAxisLines = value; 472 }, 473 474 get_chartTitleColor: function () { 475 return this._chartTitleColor; 476 }, 477 set_chartTitleColor: function (value) { 478 this._chartTitleColor = value; 479 }, 480 481 get_valueAxisLineColor: function () { 482 return this._valueAxisLineColor; 483 }, 484 set_valueAxisLineColor: function (value) { 485 this._valueAxisLineColor = value; 486 }, 487 488 get_categoryAxisLineColor: function () { 489 return this._categoryAxisLineColor; 490 }, 491 set_categoryAxisLineColor: function (value) { 492 this._categoryAxisLineColor = value; 493 }, 494 495 get_baseLineColor: function () { 496 return this._baseLineColor; 497 }, 498 set_baseLineColor: function (value) { 499 this._baseLineColor = value; 500 }, 501 502 get_tooltipBackgroundColor: function () { 503 return this.tooltipBackgroundColor; 504 }, 505 set_tooltipBackgroundColor: function (value) { 506 this.tooltipBackgroundColor = value; 507 }, 508 509 get_tooltipFontColor: function () { 510 return this._tooltipFontColor; 511 }, 512 set_tooltipFontColor: function (value) { 513 this._tooltipFontColor = value; 514 }, 515 516 get_tooltipBorderColor: function () { 517 return this._tooltipBorderColor; 518 }, 519 set_tooltipBorderColor: function (value) { 520 this._tooltipBorderColor = value; 521 }, 522 523 get_areaDataLabel: function () { 524 return this._areaDataLabel; 525 }, 526 set_areaDataLabel: function (value) { 527 this._areaDataLabel = value; 528 } 529 530}; 531 532Sys.Extended.UI.LineChart.registerClass("Sys.Extended.UI.LineChart", Sys.Extended.UI.ControlBase); 533Sys.registerComponent(Sys.Extended.UI.LineChart, { name: 'LineChart', parameters: [{ name: 'ClientSeries', type: 'LineChartSeries[]'}] }); 534 535Sys.Extended.UI.LineChartType = function () { 536 /// <summary> 537 /// Type of Line Chart 538 /// </summary> 539 /// <field name="Basic" type="Number" integer="true" /> 540 /// <field name="Stacked" type="Number" integer="true" /> 541 throw Error.invalidOperation(); 542} 543Sys.Extended.UI.LineChartType.prototype = { 544 Basic: 0, 545 Stacked: 1 546} 547 548Sys.Extended.UI.LineChartType.registerEnum("Sys.Extended.UI.LineChartType", false);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.