<!--METADATA NAME="TeeChart Pro v8 ActiveX Control" TYPE="TypeLib" UUID="{EB7A6012-79A9-4A1A-91AF-F2A92FCA3406}"-->
<%
' ************************************************************
' Script starting point via 2 entry points, one to create Chart
' and HTML page, the other to retrieve the image into the page
' ************************************************************
if Request.QueryString("GetChartImage")=1 Then
Response.BinaryWrite(RetrieveImage)
else
CreatePage
end if
Function RetrieveImage()
RetrieveImage=Session("ExportImg")
End function
Function BuildChart(AChart)
' ************************************************************
' Setup some Chart appearance characteristics
' These and the Series could all be created externally and be
' saved/imported as a Chart template file. See the
' "Save time on serverside coding" example
' ************************************************************
AChart.Aspect.Chart3DPercent=30
AChart.Header.Text.Item(0)="TeeChart Hotspot map example"
AChart.Header.Font.Height=12
AChart.Header.Font.Color=vbBlack
AChart.Header.Font.Bold=True
AChart.Panel.Gradient.Visible=True
AChart.Width=500
AChart.Height=300
' Setup Series
AChart.AddSeries(scBar)
AChart.AddSeries(scLine)
AChart.Series(0).ColorEachPoint=True
AChart.Series(1).asLine.Pointer.Visible=True
AChart.Series(1).asLine.Pointer.Brush.Color=vbGreen
AChart.Series(0).FillSampleValues(8)
AChart.Series(1).FillSampleValues(8)
End Function
Function GenerateChartHotSpot(AChart, AMapName)
Const vbQuote = """"
Dim t, tempWidth, tempHeight
Dim Height3D, Width3D, StartHeightZ, StartWidthZ, ZCount
Dim SeriesHeight3D, SeriesWidth3D
Dim tmpText
Dim result
' ************************************************************
' We use a session variable here to store the Chart image between calls
' to the script. The script is called twice. Once to create the Chart,
' export it, and create the html page with MAP and the second time to
' allow the created page to import the image via img src from the image
' variable (see Function RetrieveImage() above).
' ************************************************************
Session("ExportImg") = AChart.Export.asPNG.SaveToStream
Height3D = AChart.Aspect.Height3D 'Total Chart Z space Height displacement (pixels)
Width3D = AChart.Aspect.Width3D 'Total Chart Z space Width displacement (pixels)
ZCount = AChart.SeriesCount 'Series Count to subdivide Z space
SeriesHeight3D = Height3D / ZCount 'Z space Height of each Series
SeriesWidth3D = Width3D / ZCount 'Z space Width of each Series
result = "<html>" + vbCrLf
result = result + "<SCRIPT LANGUAGE=JAVASCRIPT>function RunCode(SeriesType,Value){alert(SeriesType + ' value: ' + Value);}</SCRIPT>" + vbCrLf
result = result + "<HEAD><title>TeeChart Pro AX Control using Tee Template files serverside</title>"
result = result + "<LINK REL=STYLESHEET TYPE=""text/css"" HREF=""Style.css""></HEAD><BODY>"
result = result + "<img src=""TeeChartAX300x66.jpg"">"
result = result + "<br><br>"
result = result + "<a href=""ASPHome.htm"">メインへ戻る</a>"
result = result + "<hr>"
result = result + "<body>" + vbCrLf
result = result + "<img USEMAP=" + vbQuote + "#" + AMapName + vbQuote + " src=" + vbQuote + "Hotspot.asp?GetChartImage=1" + vbQuote + " border=0>" + vbCrLf
result = result + "<MAP name=" + vbQuote + AMapName + vbQuote + " > " + vbCrLf
For TheSeries = (AChart.SeriesCount - 1) To 0 Step -1
StartHeightZ = (ZCount - (TheSeries + 1)) * (Height3D / ZCount)
StartWidthZ = (ZCount - (TheSeries + 1)) * (Width3D / ZCount)
' ****** Here using 'With', not supported in all ASP versions ******
With AChart.Series(TheSeries)
Select Case .SeriesType
Case scLine, scPoint:
if .SeriesType = scLine then
tempWidth = .asLine.Pointer.HorizontalSize
tempHeight = .asLine.Pointer.VerticalSize
else
tempWidth = .asPoint.Pointer.HorizontalSize
tempHeight = .asPoint.Pointer.VerticalSize
end if
For t = 0 To .Count - 1
X = .CalcXPos(t) + StartWidthZ
Y = .CalcYPos(t) - StartHeightZ
result = result + "<AREA shape=" + vbQuote + "poly" + vbQuote + " coords=" + _
vbQuote + CStr(X - tempWidth) + "," + CStr(Y - tempHeight) + "," + _
CStr(X - tempWidth + SeriesWidth3D) + "," + CStr(Y - tempHeight - SeriesHeight3D) + "," + _
CStr(X + tempWidth + SeriesWidth3D) + "," + CStr(Y - tempHeight - SeriesHeight3D) + "," + _
CStr(X + tempWidth + SeriesWidth3D) + "," + CStr(Y + tempHeight - SeriesHeight3D) + "," + _
CStr(X + tempWidth) + "," + CStr(Y + tempHeight) + "," + _
CStr(X - tempWidth) + "," + CStr(Y + tempHeight) + vbQuote + _
" HREF=" + vbQuote + "javascript:RunCode('Point'," + CStr(.YValues.Value(t)) + ");" + vbQuote + ">" + vbCrLf
Next
Case scBar:
tempWidth = .asBar.BarWidth
For t = 0 To .Count - 1
tempStartY = .asBar.GetOriginPos(t) - StartHeightZ
tempEndY = .CalcYPos(t) - StartHeightZ
X = .CalcXPos(t) + StartWidthZ
Select Case .asBar.BarStyle
Case bsPyramid:
result = result + "<AREA shape=" + vbQuote + "poly" + vbQuote + " coords=" + _
vbQuote + CStr(X) + "," + CStr(tempStartY) + "," + _
CStr(X + tempWidth) + "," + CStr(tempStartY) + "," + _
CStr(X + tempWidth + SeriesWidth3D) + "," + CStr(tempStartY - SeriesHeight3D) + "," + _
CStr(X + (tempWidth \ 2)) + "," + CStr(tempEndY) + vbQuote + _
" HREF=" + vbQuote + "javascript:RunCode('Bar'," + CStr(.YValues.Value(t)) + ");" + vbQuote + ">" + vbCrLf
Case bsInvPyramid:
result = result + "<AREA shape=" + vbQuote + "poly" + vbQuote + " coords=" + _
vbQuote + CStr(X) + "," + CStr(tempEndY) + "," + _
CStr(X + SeriesWidth3D) + "," + CStr(tempEndY - SeriesHeight3D) + "," + _
CStr(X + tempWidth + SeriesWidth3D) + "," + CStr(tempEndY - SeriesHeight3D) + "," + _
CStr(X + (tempWidth \ 2)) + "," + CStr(tempStartY) + vbQuote + _
" HREF=" + vbQuote + "javascript:RunCode('Bar'," + CStr(.YValues.Value(t)) + ");" + vbQuote + ">" + vbCrLf
Case Else
result = result + "<AREA shape=" + vbQuote + "poly" + vbQuote + " coords=" + _
vbQuote + CStr(X) + "," + CStr(tempStartY) + "," + _
CStr(X + tempWidth) + "," + CStr(tempStartY) + "," + _
CStr(X + tempWidth + SeriesWidth3D) + "," + CStr(tempStartY - SeriesHeight3D) + "," + _
CStr(X + tempWidth + SeriesWidth3D) + "," + CStr(tempEndY - SeriesHeight3D) + "," + _
CStr(X + SeriesWidth3D) + "," + CStr(tempEndY - SeriesHeight3D) + "," + _
CStr(X) + "," + CStr(tempEndY) + vbQuote + _
" HREF=" + vbQuote + "javascript:RunCode('Bar'," + CStr(.YValues.Value(t)) + ");" + vbQuote + ">" + vbCrLf
End Select
Next
End Select
End With
Next
result = result + "<AREA shape=" + vbQuote + "default" + vbQuote + " nohref>" + vbCrLf + "</MAP>" + vbCrLf
result = result + "<br><p>Click on the LineSeries' Points or anywhere on the BarSeries' Bars to interact "
result = result + "with the Chart image.</p>"
result = result + "<HR>Copyright © 2008 NEWTONE Corporation</BODY></HTML></body>" + vbCrLf
result = result + "</html>"
GenerateChartHotSpot = result
End Function
Function CreatePage
Set TChart1 = CreateObject("TeeChart.TChart")
BuildChart(TChart1)
Response.Expires = 0
Response.Write(GenerateChartHotSpot(TChart1, "ChartMap"))
End Function
%>