April 27, 200421 yr Hi all: I'm working on a scheduling system with a graphical display of a schedule, using the xmChart plugin. However, I'm having a hard time getting the formatting right for the chart data. For those of you unfamiliar with xmChart, if I've got three items on the agenda in a five day week, the data might look like this: (0 0; //Monday, no meetings 12 14; // Tuesday, meeting from noon to 2pm 0 0; // Wednesday, no meetings 10 12 13 15; // Thursday, a meeting from 10-12, another from 1-3pm 0 0;) // Friday, no meetings. Now, I've gotten to the point where I have my found set & am able to pull the data for the chartable items. What's NOT going right is being able to fill in the "0 0;" for empty days. Something is so wrong with my loop that I'm not even going to bother entering it here - I think my logic is faulty at the core. The data I'm using includes having the day of the week represented as a number (for sorting purposes) as well as the numerical hours as shown above. I need to step through the sorted data and, for items that appear on a particular day, fit the numerical hours between the semi-colons; for days that have no meetings, I've got to have the "0 0;"...Can anyone show me the logic for this? Thanks -Stanley
April 27, 200421 yr Hey Stanley, I've done several different types of charts with xmChart, so I may be able to help. What kind of records are you sorting? Are they days or meetings?
April 27, 200421 yr Author Ender: Thanks for chipping in. They're classes, actually. The data in the records (for the chart) is all numeric - nStartTime, nEndTime, nDayOfWeek. I've got it sorting, and pulling the right data - that's fine. But I'm not catching empty days. Also, I'm working with a Gantt Chart (like the last sample on that page in the xmGallery file.) Right now I'm using a very long list of If statements in a loop which runs through all the class records (once they've been sorted by day & start time), and I've got a global I am incrementing to track where I am. Each If checks for the day of the week, thus: If [Classes::nDayOfWeek =1] copy & paste hour data End If If [Classes::nDayOfWeek (isnot) 1 & Classes::gTracker = 1] Insert Text [Classses::tChartText; "0 0;" Set Field [Classes::gTracker; 2] End If This is reiterated for all 7 days of the week, within the loop. The idea being to track what day I'm on, and to use the gTracker to identify where to put in the "0 0;" lines. But it doesn't work. The first day (in my test) is empty, and it works then, but the gTracker stops at "2"... -Stanley
April 27, 200421 yr How about something like this: Set Field [ gTracker , 1 ] //Holds the last day of week Set Field [ gChartText, "" ] //Holds the chart text as it's built Go to Record/Request/Page [ First ] Loop If [ nDayOfWeek <> gTracker ] If [ nDayOfWeek = gTracker+1 ] Set Field [ gChartText, ChartText & "0 0;" ] Else Set Field [ gTracker , nDayOfWeek ] Set Field [ gChartText , gChartText & ";" & <Hour Data> ] End If Else Set Field [ gChartText , gChartText & ";" & <Hour Data> ] End If Go to Record/Request/Page [ Next ] Exit Loop If [ gTracker >= 8 or Status(CurrentRecord) = Status(CurrentFoundCount)] End Loop Loop //In case there are no events late in the week, this puts empties in graph for those dates Exit Loop If [ gTracker >= 8 ] Set Field [ gChartText, ChartText & "0 0;" ] Set Field [ gTracker , gTracker + 1 ] End Loop I'm not sure if it works, but that's probably how I would start.
April 27, 200421 yr Author Ender: That didn't work, but you set me on the right path, especially regarding adding the last items to the list. I also discovered that I was skipping blank days in the middle, but I've (finally) got the thing figured out. Thanks -Stanley
April 27, 200421 yr Using the script debugger in Developer is especially helpful in debugging scripts like this (if you can afford it.)
April 28, 200421 yr Author Ender: In the end, it was nothing the script debugger would have seen - all bad syntax in calculations, really (and bad calculations, too)... -Stanley
Create an account or sign in to comment