Jump to content
Software FX Community

RE: Dual Y Axis questions


Software FX

Recommended Posts

>> However when I set the series legend text after I assigned the recordset to the chart object my 

>> series legend displayed my desired text. Is this what you expect and if so why?

Yes. When reading the data from ADO we will use the field names as the series labels, if you want to overwrite them you need to set them after the ADOResultset statement. There is a property called DataStyle that allows you to change this behavior but it is usually easier to set the labels after the ADOResultset

>> Can I have two series legends? One for each Y axis?

No

>> The AdjustScale parameter doesn't appear to work on AXIS_Y2

Please try adjusting the scale after the data has been passed to the chart.

>> Is there an existing Command (e.g. CFX_ID_HORZGRID) for toggling the AXIS_Y2 grid?

No.

>> Do I have to write my own command?

Please note that this will only work in Internet Explorer

>> I tried via the example in the docs but what I've done doesn't work.

There are a couple of details in your code, handling the UserCommand needs to be done at the client level, I am including sample code that shows how to do this

<%@ Language=VBScript %>

<HTML>

<BODY>

<!-- #include virtual="/Include/CfxIE.inc" -->

<script LANGUAGE="VBScript">

<!--

Sub Chart1_UserCommand(wParam,lParam,nRes)

If wParam = 1 then

Chart1.Axis(1).Grid = Not Chart1.Axis(1).Grid

End If

End Sub

-->

</script>

<%

Set ChartFX1 = Server.CreateObject("ChartFX.WebServer")

ChartFX1.Chart3D = False

ChartFX1.Gallery = LINES

ChartFX1.OpenDataEx COD_VALUES,2,1

ChartFX1.CloseData COD_VALUES

ChartFX1.Series(0).YAxis = AXIS_Y

ChartFX1.Series(1).YAxis = AXIS_Y2

ChartFX1.OpenDataEx COD_VALUES,2,5

For i = 0 to 1

For j = 0 to 5

ChartFX1.ValueEx(i,j) = Rnd()

Next

Next

ChartFX1.CloseData COD_VALUES

'Toolbar control

ChartFX1.ToolBar = true

'Add command to control Axis_Y2 grid

ChartFX1.Commands.AddCommand 1

ChartFX1.Commands(1).Style = CBIS_TWOSTATE

ChartFX1.Commands(1).Picture = 9

ChartFX1.Commands(1).Text = "Horizontal grid axis Y2"

ChartFX1.Commands(1).Enabled = true

ChartFX1.ToolBarObj.AddItems 1,9

'Assign the command id to added button

ChartFX1.ToolBarObj(9).CommandID = 1

'Remove toolbar items

ChartFX1.ToolBarObj.RemoveItems 1,0

ChartFX1.ToolBarObj.RemoveItems 4,1

ChartFX1.ToolBarObj.RemoveItems 7,5

ChartFX1.ToolBarObj.RemoveItems 4,7

%>

<%=ChartFX1.GetHtmlTag("100%","75%","Auto","Chart1")%>

</body>

</html>

-----Original Message-----

From: David Patrick [ mailto:dpatrick@msotech.com]

Posted At: Saturday, April 08, 2000 1:16 AM

Posted To: Client

Conversation: Dual Y Axis questions

Subject: Dual Y Axis questions

I'm working with the IE 2000 server demo and have a few questions.

I'm running on an NT4.0 SP6 box acting as both client and server. My data

is coming from an Access database via a ADO recordset. The data set

contains six fields, five series with each series having 3,232 points. The

sixth series is the X coordinate. I'm using a Line type chart.

1. The series legend kept defaulting to the field names from my SQL query

instead of what I thought I was setting it to via the

ChartFX1.Series(0).Legend = "DC Voltage" statement. However when I set the

series legend text after I assigned the recordset to the chart object my

series legend displayed my desired text. Is this what you expect and if so

why?

2. Can I have two series legends? One for each Y axis?

3. The AdjustScale parameter doesn't appear to work on AXIS_Y2 if it is

also applied to AXIS_Y. I get "nice" values on AXIS_Y but not AXIS_Y2.

Shouldn't I expect to get "nice" values on AXIS_Y2?

4. Is there an existing Command (e.g. CFX_ID_HORZGRID) for toggling the

AXIS_Y2 grid? I 've added a button to the toolbar for such a command. Do I

have to write my own command? I tried via the example in the docs but what

I've done doesn't work.

Following is the asp page contents.

Regards,

David

<%@ Language=VBScript %>

<!-- #include virtual="/Include/CfxIE.inc" -->

<% ' VI 6.0 Scripting Object Model Enabled %>

<!--#include file="_ScriptLibrary/pm.asp"-->

<% if StartPageProcessing() Then Response.End() %>

<form name="thisForm" METHOD="post">

<html>

<head>

<meta NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

<link REL="stylesheet" TYPE="text/css"

HREF="stylesheets/SCE%20Hydran.css">

<title>Monitoring System</title>

</head>

<%

Set CBAconn = Server.CreateObject("ADODB.Connection")

CBAconn.ConnectionTimeout = Application("CBADATA_ConnectionTimeout")

CBAconn.CommandTimeout = Application("CBADATA_CommandTimeout")

CBAconn.Open Application("CBADATA_ConnectionString"), _

Application("CBADATA_RuntimeUserName"), _

Application("CBADATA_RuntimePassword")

set rstTrendData = Server.CreateObject("ADODB.Recordset")

rstTrendData.ActiveConnection = CBAconn

sqlstmt = "select ch1_value,ch2_value,ch3_value,ch4_value,ch5_value, " &_

"event_record_number from rtr008_olm_ev_data where " &_

"event_header_id = 138;"

rstTrendData.Open sqlstmt

%>

<%

Private Sub ChartFX1_UserCommand(wParam,lParam,nRes)

Response.Write "Now we're in here"

If wParam = 1 then

If nRes = 1 then

ChartFX1.Commands(1).Picture = 10

Y2Axis.Grid = 1

Else Y2Axis.Grid = 0

End If

End If

End Sub

%>

<body>

<h1> Monitoring System</h1>

<div id="NavBar">

<a HREF="default.htm">Logout</a>

<a HREF="search.htm">Search</a>

<a HREF="heartbeat.asp">Heartbeat</a>

<a HREF="monitordetails.asp">Monitor Details</a>

<br>

</div>

<br>

<%

Set ChartFX1 = Server.CreateObject("ChartFX.WebServer")

Set YAxis = ChartFX1.Axis(AXIS_Y)

Set Y2Axis = ChartFX1.Axis(AXIS_Y2)

Set XAxis = ChartFX1.Axis(AXIS_X)

'Set number of series and points per series

ChartFX1.OpenDataEx COD_VALUES,5,3232

ChartFX1.CloseData COD_VALUES

'Left Y axis settings

YAxis.AutoScale = false

YAxis.AdjustScale

YAxis.Grid = true

'Right Y axis settings

Y2Axis.AutoScale = false

Y2Axis.AdjustScale

Y2Axis.Grid = true

'X axis settings

XAxis.AutoScale = false

XAxis.AdjustScale

'Data series formating

ChartFX1.DataType(0) = CDT_VALUE

ChartFX1.DataType(1) = CDT_VALUE

ChartFX1.DataType(2) = CDT_VALUE

ChartFX1.DataType(3) = CDT_VALUE

ChartFX1.DataType(4) = CDT_VALUE

ChartFX1.DataType(5) = CDT_LABEL

ChartFX1.MarkerShape = MK_NONE

'Assign series to right Y axis

ChartFX1.Series(3).YAxis = AXIS_Y2

' General Settings

ChartFX1.Gallery = LINES

ChartFX1.Chart3D = 0

ChartFX1.Rgb2DBk = RGB(204,204,204)

ChartFX1.AllowResize = false

'Toolbar control

ChartFX1.ToolBar = true

'Add command to control Axis_Y2 grid

ChartFX1.Commands.AddCommand 1

ChartFX1.Commands(1).Style = CBIS_TWOSTATE

ChartFX1.Commands(1).Picture = 9

ChartFX1.Commands(1).Text = "Horizontal grid axis Y2"

ChartFX1.Commands(1).Enabled = true

ChartFX1.ToolBarObj.AddItems 1,9

'Assign the command id to added button

ChartFX1.ToolBarObj(9).CommandID = 1

'Remove toolbar items

ChartFX1.ToolBarObj.RemoveItems 1,0

ChartFX1.ToolBarObj.RemoveItems 4,1

ChartFX1.ToolBarObj.RemoveItems 7,5

ChartFX1.ToolBarObj.RemoveItems 4,7

'Grid settings

XAxis.Grid = True

YAxis.Grid = True

'Need to figure out toolbar button to enable/disable

'right y axis grid

'Y2Axis.Grid = True

ChartFX1.ADOResultset rstTrendData

rstTrendData.Close

'Series legend settings

'MUST come after assigning recordset to chart object

ChartFX1.SerLegBox = true

ChartFX1.SerLegBoxObj.Moveable = false

ChartFX1.Series(0).Legend = "DC Voltage"

ChartFX1.Series(1).Legend = "Circuit"

ChartFX1.Series(2).Legend = "Event"

ChartFX1.Series(3).Legend = "Current"

ChartFX1.Series(4).Legend = "Spare Ch 5"

%>

<%=ChartFX1.GetHtmlTag("100%","75%")%>

<br>

</body>

<% ' VI 6.0 Scripting Object Model Enabled %>

<% EndPageProcessing() %>

</form>

</html>

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...