Focal Point
53 Graph Engine - here's a nice example

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/2881003931

November 28, 2005, 04:50 PM
<JG>
53 Graph Engine - here's a nice example
Sorry guys I don't have an online url to load the image, but give the code a try.

I had to build this a few weeks ago and have made it generic with data and metadata embeded.

It shows the power of the annotation feature in the 53 engine.

(using annotations could have been an alternative approach for Jims
Pie chart: Show slice label, % value AND true value of slice problem because you could display them as a table in the chart)

For the annotation part of the code It should really be in dm loops but for clarity it's fully expanded.

***** Note 53 and up only.



-*
-* the master
FILEDEF XDATAMAS DISK XDATA.MAS
-RUN
-WRITE XDATAMAS FILE=XDATA ,SUFFIX=FIX
-WRITE XDATAMAS SEGNAME=XDATA,SEGTYPE=S02
-WRITE XDATAMAS FIELDNAME =COUNTER ,E01 ,I1 ,A1 ,$
-WRITE XDATAMAS FIELDNAME =COMPANY ,E02 ,A25 ,A25 ,$
-WRITE XDATAMAS FIELDNAME =AREA ,E03 ,A32 ,A32 ,$
-WRITE XDATAMAS FIELDNAME =VALUE ,E04 ,D10.1 ,A10 ,$

-*
-* The data
FILEDEF XDATA DISK XDATA.FTM
-RUN
-WRITE XDATA 1Company A Measure A 63.0
-WRITE XDATA 1Company A Measure B 98.0
-WRITE XDATA 1Company A Measure C -34.7
-WRITE XDATA 1Company A Measure D 64.0
-WRITE XDATA 1Company A Measure E -34.4
-WRITE XDATA 1Company A Measure F 42.0
-WRITE XDATA 1Company A Measure G -38.1
-WRITE XDATA 1Company A Measure H 26.0
-WRITE XDATA 1Company A Measure I -76.9
-WRITE XDATA 1Company A Measure J 15.0
-WRITE XDATA 1Company A Measure k 6.0
-WRITE XDATA 1Company A Measure L 102.7
-WRITE XDATA 1Company A Measure M 16.0
-WRITE XDATA 1Company A Measure N 3.1
-WRITE XDATA 1Company A Measure O 5.6
-WRITE XDATA 1Company A Measure P 8.7
-RUN
-* The setup
-SET &L1= 'Measure A \nMeasure B';
-SET &L2= 'Measure D';
-SET &L3= 'Measure F';
-SET &L4= 'Measure H \nMeasure J';
-SET &L5= 'Measure K';
-SET &L6= 'Measure L\n.\nMeasure M\n.\nMeasure N\n.\nMeasure O';

DEFINE FILE XDATA
P1/D10.1 MISSING ON=IF AREA EQ 'Measure A' THEN VALUE ELSE
IF AREA EQ 'Measure D' THEN MISSING ELSE
IF AREA EQ 'Measure F' THEN MISSING ELSE
IF AREA EQ 'Measure H' THEN MISSING ELSE
IF AREA EQ 'Measure J' THEN VALUE ELSE
IF AREA EQ 'Measure K' THEN MISSING ELSE 0;

P2F/D10.1 MISSING ON=IF AREA EQ 'Measure A' THEN 0 ELSE
IF AREA EQ 'Measure B' THEN VALUE ELSE
IF AREA EQ 'Measure D' THEN VALUE ELSE
IF AREA EQ 'Measure F' THEN VALUE ELSE
IF AREA EQ 'Measure H' THEN VALUE ELSE
IF AREA EQ 'Measure J' THEN 0 ELSE
IF AREA EQ 'Measure K' THEN VALUE ELSE 0;

BARS/A34=IF AREA EQ 'Measure A' THEN '1 Measure A \nMeasure B' ELSE
IF AREA EQ 'Measure B' THEN '1 Measure A \nMeasure B' ELSE
IF AREA EQ 'Measure C' THEN ' ' ELSE
IF AREA EQ 'Measure D' THEN '2 Measure D' ELSE
IF AREA EQ 'Measure E' THEN ' ' ELSE
IF AREA EQ 'Measure F' THEN '3 Measure F' ELSE
IF AREA EQ 'Measure G' THEN ' ' ELSE
IF AREA EQ 'Measure H' THEN '4 Measure H Measure J' ELSE
IF AREA EQ 'Measure I' THEN ' ' ELSE
IF AREA EQ 'Measure J' THEN '4 Measure H Measure J' ELSE
IF AREA EQ 'Measure K' THEN '5 Measure K' ELSE ' ';
END
TABLE FILE XDATA
SUM P1
COMPUTE P2/D10.1=IF BARS EQ '1 Measure A \nMeasure B' THEN P2F - P1 ELSE
IF BARS EQ '4 Measure H Measure J ' THEN P2F - P1 ELSE P2F;
BY BARS
WHERE BARS NE ' '
ON TABLE HOLD AS H1
END
-RUN
TABLE FILE XDATA
SUM VALUE
ACROSS AREA COLUMNS 'Measure C' AND 'Measure E'
AND 'Measure G' AND 'Measure I'
AND 'Measure L' AND 'Measure M'
AND 'Measure N' AND 'Measure O'
BY COMPANY
WHERE BARS EQ ''
ON TABLE SAVE AS PCENTS
END
-RUN
-READ PCENTS &TITLE.A25. &PC1.A10. &PC2.A10. &PC3.A10. &PC4.A10. &PC5.A10. &PC6.A10. &PC7.A10. &PC8.A10.
-RUN
-* The Graph
GRAPH FILE H1
SUM P1 P2
BY BARS AS ''

ON GRAPH SET LOOKGRAPH HBRSTK1
ON GRAPH SET GRAPHEDIT SERVER
ON GRAPH SET BARNUMB ON
ON GRAPH SET 3D OFF
ON GRAPH SET VAXIS 500
ON GRAPH SET HAXIS 900
ON GRAPH SET VZERO OFF
ON GRAPH SET GRID OFF
ON GRAPH SET GRAPHSTYLE *
setFontSizeAbsolute(true)
setFontSize(6);
setFontSize(getO1Label(),5);
setFontSize(getX1Label(),6);
setFontSize(getY1Label(),6);
setFontSize(getDataText(),6);
setPlace(false);
-*
-* Set new display rectangles for the graph and the footnote areas
setRect(getFrame(),new Rectangle(-10000,-3000,21000,17000));
setRect(getFootnote(),new Rectangle(-10000,-17000,5525,12303));
-*
-* Set the title according to company being processed
setTitleDisplay(true);
setTitleString("A Graph for &TITLE.EVAL");
setTextJustHoriz(getTitle(), 1);
-*
-* Set the footnote text
setTextJustHoriz(getFootnote(),1);
setFootnoteString("&L6.EVAL");
-*
-* Set the annotation text and position of the annotaion text box (1 block for each value)
setDisplay(getAnnotationBox(0), true);
setDisplay(getAnnotation(0), true);
setTextString(getAnnotation(0), "&PC1.EVAL%");
setFillColor(getAnnotation(0), new Color (0,0,0));
setFontSize(getAnnotation(0),6);
setFontStyle(getAnnotation(0), 0);
setFillColor(getAnnotationBox(0), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(0), false);
setRect(getAnnotation(0), new Rectangle (11000, 9000, 2700, 1800));

setDisplay(getAnnotationBox(1), true);
setDisplay(getAnnotation(1), true);
setTextString(getAnnotation(1), "&PC2.EVAL%");
setFillColor(getAnnotation(1), new Color (0,0,0));
setFontStyle(getAnnotation(1), 0);
setFillColor(getAnnotationBox(1), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(1), false);
setRect(getAnnotation(1), new Rectangle (11000, 6000, 2700, 1800));

setDisplay(getAnnotationBox(2), true);
setDisplay(getAnnotation(2), true);
setTextString(getAnnotation(2), "&PC3.EVAL%");
setFillColor(getAnnotation(2), new Color (0,0,0));
setFontStyle(getAnnotation(2), 0);
setFillColor(getAnnotationBox(2), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(2), false);
setRect(getAnnotation(2), new Rectangle (11000, 3000, 2700, 1800));

setDisplay(getAnnotationBox(3), true);
setDisplay(getAnnotation(3), true);
setTextString(getAnnotation(3), "&PC4.EVAL%");
setFillColor(getAnnotation(3), new Color (0,0,0));
setFontStyle(getAnnotation(3), 0);
setFillColor(getAnnotationBox(3), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(3), false);
setRect(getAnnotation(3), new Rectangle (11000, 0000, 2700, 1800));


setDisplay(getAnnotationBox(4), true);
setDisplay(getAnnotation(4), true);
setTextString(getAnnotation(4), "&PC5.EVAL");
setFillColor(getAnnotation(4), new Color (0,0,0));
setFontStyle(getAnnotation(4), 0);
setFillColor(getAnnotationBox(4), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(4), false);
setRect(getAnnotation(4), new Rectangle (0000, -6000, 2700, 1500));

setDisplay(getAnnotationBox(5), true);
setDisplay(getAnnotation(5), true);
setTextString(getAnnotation(5), "&PC6.EVAL");
setFillColor(getAnnotation(5), new Color (0,0,0));
setFontStyle(getAnnotation(5), 0);
setFillColor(getAnnotationBox(5), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(5), false);
setRect(getAnnotation(5), new Rectangle (0000, -9000, 2700, 1500));

setDisplay(getAnnotationBox(6), true);
setDisplay(getAnnotation(6), true);
setTextString(getAnnotation(6), "&PC7.EVAL");
setFillColor(getAnnotation(6), new Color (0,0,0));
setFontStyle(getAnnotation(6), 0);
setFillColor(getAnnotationBox(6), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(6), false);
setRect(getAnnotation(6), new Rectangle (0000, -12000, 2700, 1500));

setDisplay(getAnnotationBox(7), true);
setDisplay(getAnnotation(7), true);
setTextString(getAnnotation(7), "&PC8.EVAL");
setFillColor(getAnnotation(7), new Color (0,0,0));
setFontStyle(getAnnotation(7), 0);
setFillColor(getAnnotationBox(7), new Color(255,255,255));
setTransparentBorderColor(getAnnotationBox(7), false);
setRect(getAnnotation(7), new Rectangle (0000, -15000, 2700, 1500));
-*
-* Set the O1 axis labels
setGroupLabelArray("&L1.EVAL",
"&L2.EVAL",
"&L3.EVAL",
"&L4.EVAL",
"&L5.EVAL");
setDataTextDisplay(true);
setDataTextPosition(4);
setFillColor(getSeries(1),new Color(169,171,195));
setFillColor(getSeries(0),new Color(222,224,226));
setMarkerDisplay(true);
setConnectLineMarkers(false);
setConnectScatterMarkers(false);
setO1LabelDisplay(true);
setO1MajorGridDisplay(false);
setO1MinorGridDisplay(false);
setAxisAssignment(0,0);
setAxisAssignment(1,0);
setAxisAssignment(2,0);
setAxisAssignment(3,0);

setY1LabelDisplay(true);

setY1AxisSide(0);
setO1AxisLineDisplay(false);

setY1MajorGridDisplay(false);
setY1MinorGridDisplay(false);

setTextFormatPreset(getY1Label(),-1);
setTextFormatPattern(getY1Label(),"#.##");

setSeriesDefaultTransparentBorderColor(false);
setUseSeriesBorderDefaults(false);
setLegendDisplay(false);

setMarkerSizeDefault(60);
setY1LabelAutofit(false);

setFontSizeAbsolute(true)
setFontSize(getY1Label(),7);
setX1LabelAutofit(false);
setO1LabelWrap(true);
setFontSize(getX1Label(),7);
setO1LabelAutofit(false);
setFontSize(getO1Label(),7);

setDepthRadius(0);
setFrameDisplay(false);
setFillColor(getChartBackground(), new Color(181,183,189));
setBorderColor(getChartBackground(), new Color(181,183,189));
setFillColor(getFrame(), new Color(181,183,189));
setFillColor(getLegendArea(),new Color(181,183,189));
ENDSTYLE
ON GRAPH PCHOLD FORMAT PNG
END
-RUN



JG

This message has been edited. Last edited by: <Mabel>,
November 28, 2005, 06:21 PM
susannah
thats so nice of you. thanks jg
say, how about an article for the developers' corner thing...you can include the screen shot of your image...

This message has been edited. Last edited by: susannah,




In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
November 29, 2005, 09:41 AM
<Maryellen>
Good suggestion, Susannah!

JG we'll be contacting you shortly about turning this topic into an article for Focus on Developers.

I would also like to take this opportunity to invite all our Focal Point developers to consider writing an article for FOD. Or if you have some suggestions for topics of interest, please send those along too. Currently, we're trying to recruit writers for PDF related issues. You can reply to this thread, or private message me at your convenience.

Thanks all!

Maryellen
November 29, 2005, 10:21 AM
mgrackin
Maryellen,

What kind of PDF related issues are you refering to when you say you would like articles for the FOD sections of Focal Point?

I have recently used the DEFINE FUNCTION features of the FOCUS language and would be willing to write up something about this for FOD.


Thanks!

Mickey

FOCUS/WebFOCUS 1990 - 2011
November 29, 2005, 12:02 PM
reFOCUSing
quote:
PDF related issues

Yes what type of PDF content are you looking for?
December 05, 2005, 06:17 PM
<Maryellen>
Hi -- Let me throw this back to the community. What types of PDF-related articles/solutions are you interested in reading about?

A little while ago, one of the members asked why there were no PDF-related articles on Focus on Developers' Website.

Here's a new post regarding PDF's, ACROSS column wrapping in PDF.

Let me know what you think.

Thanks!

Maryellen
December 05, 2005, 06:53 PM
reFOCUSing
Here is the post you are talking about:
Why no PDF topics on Focal Point

Maybe this topic should be move there.

Here are some ideas I have:
1) Formating differences between HTML, EXL2K and PDF.
2) How to format headings, subheadings, footings and subfootings in PDF.
3) Using spot markers in PDF.
December 06, 2005, 12:18 AM
susannah
I agree with reFocusing.
all about the differences;
if there are any special features that pdf has that other format lack,
A comprehensive compendium, a tutorial.




In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
December 06, 2005, 02:27 PM
Carol Dobson
Sorry Susannah and Maryellen, I have not had time to put anything together on PDF. Perhaps someone else will volunteer!



WebFOCUS 7.6.6/TomCat/Win2k3
December 06, 2005, 04:47 PM
<Maryellen>
Not a problem, Carol. Completely understand -- I believe everybody is swamped this time of year.

Thanks and let me know if I can help with anything.

Maryellen

Wink