Focal Point
[SHARING] Text over Image in a basic report

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

April 26, 2019, 06:07 PM
Doug
[SHARING] Text over Image in a basic report
Closing Comments: I knew that We Can Do That in WebFOCUS! I hope more people benefit from this and "Invent Applications around it".

Original Post: So, here's what I produced in App Studio (Text Editing) using TABLE, READFILE, A lot of HTML Tags, DIV, etc...

The question is: Can we do this in InfoAssist? Only kidding... How about a basic
TABLE FILE [filename]
... ... ... 
END
... Without -READFILE into variable then !IB.AMPing the variable in -HTMLFORM...? I have all those images, sized as needed...

Thanks, Doug

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




   In FOCUS Since 1983 ~ from FOCUS to WebFOCUS.
   Current: WebFOCUS Administrator at FIS Worldpay | 8204, 8206
April 28, 2019, 05:15 PM
Waz
You may be able to do this with CSS.


But there is very little info to go on.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

April 29, 2019, 01:53 PM
Doug
Thanks Waz... And, just to add to it, The number of rows returned varies... So, Looping is required the way that I am doing it, successfully, now.

Maybe this is a NFR,,,
April 30, 2019, 09:44 PM
dbeagan
Are you looking for something like this?

-* Download images to /baseapp
-* https://i.postimg.cc/3wxVh7vH/chevrongrn.png
-* https://i.postimg.cc/Nfy0sqRm/chevronyel.png
-* https://i.postimg.cc/jq35YdnR/chevronred.png

 TABLE FILE GGSALES
 SUM
 COMPUTE Date1/MDYY   = DATE; NOPRINT
 COMPUTE Date2/A8MDYY = Date1; NOPRINT
 COMPUTE Date3/A10    = EDIT(Date2,'99/99/9999'); NOPRINT
 COMPUTE Image/A15    = IF DATE LT '19960801' THEN 'chevrongrn.png' ELSE IF DATE LT '19970201' THEN 'chevronyel.png' ELSE 'chevronred.png'; NOPRINT
 COMPUTE Data/A999    = '<div style="position:relative;text-align:center;"><img src="/ibi_apps/run.bip?BIP_REQUEST_TYPE=BIP_RUN&|BIP_folder=IBFS%253A%252FEDA%252FEDASERVE%252Fbaseapp&|BIP_item=' |
                         Image | '"><div style="position:absolute;top:50%;left:50%;transform:translate(-50%,-40%);">&|nbsp;&|nbsp;' |
                         Date3 | '</div></div>';
      BY REGION AS ''
      BY ST     AS ''
  ACROSS PCD    AS ''
 ON TABLE SET STYLE *
 INCLUDE=IBFS:/FILE/IBI_HTML_DIR/ibi_themes/Warm.sty, $
 ENDSTYLE
 END  



WebFOCUS 8.2.06
May 01, 2019, 01:01 PM
Tony A
Doug,

This would be an excellent example for the type of functions I demoed at Summit in 2016/17. The text could be laid on top of an SVG without issue.

T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
May 01, 2019, 08:59 PM
dbeagan
Tony A great idea.

 TABLE FILE GGSALES
 SUM
 COMPUTE Date1/MDYY   = DATE; NOPRINT
 COMPUTE Date2/A8MDYY = Date1; NOPRINT
 COMPUTE Date3/A10    = EDIT(Date2,'99/99/9999'); NOPRINT
 COMPUTE Color/A15    = IF DATE LT '19960801' THEN 'lime' ELSE IF DATE LT '19970201' THEN 'yellow' ELSE 'red'; NOPRINT
 COMPUTE Data/A999    = '<div style="position:relative;text-align:center;"><svg width="110" height="20"><polygon points="0,1 20,10 0,23 110,23 130,10 110,1" style="fill:'|
                         Color | ';stroke:gray;stroke-width:2;" /><div style="position:absolute;top:50%;left:50%;transform:translate(-50%,-40%);">' |
                         Date3 | '</div></div>';
      BY REGION AS ''
      BY ST     AS ''
  ACROSS PCD    AS ''
 ON TABLE SET STYLE *
 INCLUDE=IBFS:/FILE/IBI_HTML_DIR/ibi_themes/Warm.sty, $
 ENDSTYLE
 END



WebFOCUS 8.2.06
May 02, 2019, 03:59 PM
Tony A
I was suggesting taking it one step further by using a FUNCTION - because then it is reuseable within InfoAssist.

I've added the date conversion to remind people that you can do all sorts of things in FUNCTIONs.

EX -LINES * EDAPUT MASTER,ORD_PROGRESS,CV,MEM
FILE=ORD_PROGRESS,SUFFIX=FOC
SEGNAME=SEG1
FIELD=ORDER_NO,   ,A15   ,A15   ,FIELDTYPE=I, $
FIELD=CUST_PO,    ,A15   ,A15   ,$
FIELD=LOCATION,   ,A30   ,A30   ,$
FIELD=DATE_ORD,     MISSING ON ,A8DMYY ,A8   ,$
FIELD=DATE_RCVD,    MISSING ON ,A8DMYY ,A8   ,$
FIELD=DATE_INTBEG,  MISSING ON ,A8DMYY ,A8   ,$
FIELD=DATE_INTEND,  MISSING ON ,A8DMYY ,A8   ,$
FIELD=DATE_SHIPPED, MISSING ON ,A8DMYY ,A8   ,$
FIELD=DATE_INSBEG,  MISSING ON ,A8DMYY ,A8   ,$
FIELD=DATE_INSEND,  MISSING ON ,A8DMYY ,A8   ,$
EDAPUT*
-RUN

CREATE FILE ORD_PROGRESS
MODIFY FILE ORD_PROGRESS
FREEFORM ORDER_NO CUST_PO LOCATION DATE_ORD DATE_RCVD DATE_INTBEG DATE_INTEND DATE_SHIPPED DATE_INSBEG DATE_INSEND
DATA
SO11463445,PO,SomeWhere,24012019,30012019,31012019,20022019,20022019,23022019,,$
SO11489767,PO,SomeWhere,29012019,05022019,0,,,,,$
SO11489768,PO,SomeWhere,29012019,05022019,06022019,9,,,,$
SO11515973,PO,SomeWhere,04022019,0,0,9,,,,$
SO11515974,PO,SomeWhere,04022019,15022019,18022019,20022019,20022019,23022019,,$
SO11528583,PO,SomeWhere,06022019,15022019,15022019,9,,,,$
SO11534772,PO,SomeWhere,04022019,12022019,14022019,28022019,28022019,06032019,,$
SO11534774,PO,SomeWhere,04022019,05022019,06022019,22022019,,,,$
SO11534775,PO,SomeWhere,07022019,12022019,13022019,,,,,$
END
-RUN

DEFINE FUNCTION F_CHEVRON (DISPDATE/A8, INFMT/A8, OUTFMT/A8)
  COLOUR/A27     = IF DISPDATE EQ ''  THEN '#fff'
              ELSE IF DISPDATE EQ '0' THEN '#f00'
	      ELSE IF DISPDATE EQ '9' THEN '#fefbbf' ELSE '#b2efc6';
  F_DISPDATE/A17 = IF DISPDATE IN ('','0','9') THEN '' ELSE
                   IF SUBSTRING(LJUST(8,OUTFMT,'A8'),3,1) IN ('D','M') THEN EDIT(DATECVT(DISPDATE, INFMT, OUTFMT),'99/99/9999')
                                                                       ELSE EDIT(DATECVT(DISPDATE, INFMT, OUTFMT),'9999/99/99');
  F_CHEVRON/A350 = '<svg width="120" height="21" version="1.1" xmlns="http://www.w3.org/2000/svg">'
                || '<polygon points="0,1 20,11 0,21 110,21 130,11 110,1" style="fill:' || COLOUR || ';stroke:#000;stroke-width:0.25;" />'
                || '<text x="65" y="11" dy="0.35em" text-anchor=middle style="font-size:12px;fill:#000;">' || F_DISPDATE || ' </text>'
                || '</svg>';
END
-RUN

DEFINE FILE ORD_PROGRESS
  G_DATE_ORD/A350     = F_CHEVRON(DATE_ORD, 'I8DMYY', 'A8MDYY');
  G_DATE_RCVD/A350    = F_CHEVRON(DATE_RCVD, 'I8DMYY', 'A8MDYY');
  G_DATE_INTBEG/A350  = F_CHEVRON(DATE_INTBEG, 'I8DMYY', 'A8MDYY');
  G_DATE_INTEND/A350  = F_CHEVRON(DATE_INTEND, 'I8DMYY', 'A8MDYY');
  G_DATE_SHIPPED/A350 = F_CHEVRON(DATE_SHIPPED, 'I8DMYY', 'A8MDYY');
  G_DATE_INSBEG/A350  = F_CHEVRON(DATE_INSBEG, 'I8DMYY', 'A8MDYY');
  G_DATE_INSEND/A350  = F_CHEVRON(DATE_INSEND, 'I8DMYY', 'A8MDYY');
END

TABLE FILE ORD_PROGRESS
PRINT
	  CUST_PO      AS 'Customer,PO'
	  LOCATION     AS 'Location'
	  G_DATE_ORD     AS 'Order,Date'
	  G_DATE_RCVD    AS 'Inventory,Received'
	  G_DATE_INTBEG  AS 'Intergaration,Start'
	  G_DATE_INTEND  AS 'Integration,Complete'
	  G_DATE_SHIPPED AS 'Ship to,Location'
	  G_DATE_INSBEG  AS 'Installation,Start'
	  G_DATE_INSEND  AS 'Installation,Complete'
   BY ORDER_NO     AS 'Sales,Order,
ON TABLE SET PAGE NOLEAD
ON TABLE SET ACROSSTITLE SIDE
ON TABLE SET STYLE *
  grid=off, $
  type=report, lines-per-page=unlimited, $
  type=title, justify=center, $
ENDSTYLE
END
-RUN


T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
May 02, 2019, 04:40 PM
FP Mod Chuck
Good One


Thank you for using Focal Point!

Chuck Wolff - Focal Point Moderator
WebFOCUS 7x and 8x, Windows, Linux All output Formats
May 03, 2019, 09:41 AM
dbeagan
Tony, I like it.


WebFOCUS 8.2.06
May 07, 2019, 09:51 AM
Doug
Excellent Tony! I knew we could We can do that in WebFOCUS!, and in InfoAssist... How great is that!

See you at Summit?
May 07, 2019, 10:11 AM
Tony A
Yes Doug, I'll be there this year.



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
May 07, 2019, 05:06 PM
Doug
Yea! See you there... In Your Session...

So, why do I get this (No Chevrons):
With this code (Yep, I changed it a pit to better match my scenario):
-*EX -LINES * EDAPUT MASTER,ORDERZ,CV,MEM
FILEDEF ORDERZ DISK D:\IBI\APPS\BUSINESS_INTELLIGENCE\ORDERZ.mas
-RUN
-WRITE ORDERZ FILE=ORDERZ,SUFFIX=FOC
-WRITE ORDERZ SEGNAME=SEG1
-WRITE ORDERZ FIELD=SO_NUMBER,    ,A15   ,A15,   TITLE='SO Number', ,FIELDTYPE=I, $
-WRITE ORDERZ FIELD=PO_NUMBER,    ,A15   ,A15,   TITLE='PO Number', ,$
-WRITE ORDERZ FIELD=LOCATION,     ,A30   ,A30,   TITLE='', ,$
-WRITE ORDERZ FIELD=DATE_ORD,     MISSING ON ,A8DMYY ,A8   ,$
-WRITE ORDERZ FIELD=DATE_RCVD,    MISSING ON ,A8DMYY ,A8   ,$
-WRITE ORDERZ FIELD=DATE_INTBEG,  MISSING ON ,A8DMYY ,A8   ,$
-WRITE ORDERZ FIELD=DATE_INTEND,  MISSING ON ,A8DMYY ,A8   ,$
-WRITE ORDERZ FIELD=DATE_SHIPPED, MISSING ON ,A8DMYY ,A8   ,$
-WRITE ORDERZ FIELD=DATE_INSBEG,  MISSING ON ,A8DMYY ,A8   ,$
-WRITE ORDERZ FIELD=DATE_INSEND,  MISSING ON ,A8DMYY ,A8   ,$
-*EDAPUT*
-RUN

CREATE FILE ORDERZ
MODIFY FILE ORDERZ
FREEFORM SO_NUMBER PO_NUMBER LOCATION DATE_ORD DATE_RCVD DATE_INTBEG DATE_INTEND DATE_SHIPPED DATE_INSBEG DATE_INSEND
DATA
011463445,000000123,Tennessee,24012019,30012019,31012019,20022019,20022019,23022019,,$
011489767,000000456,New York,29012019,05022019,0,,,,,$
011489768,000000789,Tennessee,29012019,05022019,06022019,9,,,,$
011515973,000000101,New York,04022019,0,0,9,,,,$
011515974,000000112,Tennessee,04022019,15022019,18022019,20022019,20022019,23022019,,$
011528583,000000131,New York,06022019,15022019,15022019,9,,,,$
011534772,000000516,Tennessee,04022019,12022019,14022019,28022019,28022019,06032019,,$
011534774,000000718,Virginia,04022019,05022019,06022019,22022019,,,,$
011534775,000000910,Kansas,07022019,12022019,13022019,,,,,$
END
-RUN

DEFINE FUNCTION F_CHEVRON (DISPDATE/A8, INFMT/A8, OUTFMT/A8)
  COLOUR/A27 = IF DISPDATE EQ ''  THEN '#fff'
          ELSE IF DISPDATE EQ '0' THEN '#f00'
          ELSE IF DISPDATE EQ '9' THEN '#fefbbf' ELSE '#b2efc6';
  F_DISPDATE/A17 = IF DISPDATE IN ('','0','9')                         THEN 'n/a' ELSE
                   IF SUBSTRING(LJUST(8,OUTFMT,'A8'),3,1) IN ('D','M') THEN EDIT(DATECVT(DISPDATE, INFMT, OUTFMT),'99/99/9999')
                                                                       ELSE EDIT(DATECVT(DISPDATE, INFMT, OUTFMT),'9999/99/99');
  F_CHEVRON/A350 = '<svg width="120" height="21" version="1.1" xmlns="http://www.w3.org/2000/svg">'
                || '<polygon points="0,1 20,11 0,21 110,21 130,11 110,1" style="fill:' || COLOUR || ';stroke:#000;stroke-width:0.25;" />'
                || '<text x="65" y="11" dy="0.35em" text-anchor=middle style="font-size:12px;fill:#000;">' || F_DISPDATE || ' </text>'
                || '</svg>';
END
-RUN

DEFINE FILE ORDERZ
  G_DATE_ORD/A350     = F_CHEVRON(DATE_ORD, 'I8DMYY', 'A8MDYY');
  G_DATE_RCVD/A350    = F_CHEVRON(DATE_RCVD, 'I8DMYY', 'A8MDYY');
  G_DATE_INTBEG/A350  = F_CHEVRON(DATE_INTBEG, 'I8DMYY', 'A8MDYY');
  G_DATE_INTEND/A350  = F_CHEVRON(DATE_INTEND, 'I8DMYY', 'A8MDYY');
  G_DATE_SHIPPED/A350 = F_CHEVRON(DATE_SHIPPED, 'I8DMYY', 'A8MDYY');
  G_DATE_INSBEG/A350  = F_CHEVRON(DATE_INSBEG, 'I8DMYY', 'A8MDYY');
  G_DATE_INSEND/A350  = F_CHEVRON(DATE_INSEND, 'I8DMYY', 'A8MDYY');
END

TABLE FILE ORDERZ
PRINT PO_NUMBER      AS 'Customer,PO'
	  LOCATION       AS 'Location'
	  G_DATE_ORD     AS 'Order,Date'
	  G_DATE_RCVD    AS 'Inventory,Received'
	  G_DATE_INTBEG  AS 'Intergaration,Start'
	  G_DATE_INTEND  AS 'Integration,Complete'
	  G_DATE_SHIPPED AS 'Ship to,Location'
	  G_DATE_INSBEG  AS 'Installation,Start'
	  G_DATE_INSEND  AS 'Installation,Complete'
BY    SO_NUMBER      AS 'Region'
ON TABLE SET PAGE NOLEAD
ON TABLE SET ACROSSTITLE SIDE
ON TABLE SET STYLE *
  grid=off, $
  type=report, font=arial, lines-per-page=unlimited, $
  type=title, justify=center, $
ENDSTYLE
END  

May 08, 2019, 04:40 AM
Tony A
Works fine for me (once I get rid of the permanent master code etc.!!).

What browser and browser version are you using?

I am guessing that you're using IE8!! You need IE9 minimum for SVG support.

Also beware that IE's SVG is quite "loose" and if you exceed width and/or height specs, IE will "adjust"nthe SVG. Chrome will not, so the SVG in the Function will truncate. So you might like to change it to the following -

  F_CHEVRON/A350 = '<svg width="100" height="21" version="1.1" xmlns="http://www.w3.org/2000/svg">'
                || '<polygon points="0,1 15,11 0,21 85,21 100,11 85,1" style="fill:' || COLOUR || ';stroke:#000;stroke-width:0.25;" />'
                || '<text x="50" y="11" dy="0.35em" text-anchor=middle style="font-size:12px;fill:#000;">' || F_DISPDATE || ' </text>'
                || '</svg>';


You still need IE9 minimum though Smiler

T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
May 08, 2019, 09:25 AM
Doug
Two things:
1) I'm outputting to IE 11.
2) The 'EX -LINES * EDAPUT MASTER,ORDERZ,CV,MEM' produces the "Cannot include resource specified IBFS:/-LINES" error. So, I changed to the FILEDEF.

I guess it goes deeper as I don't get the chevons from the code in dbeagan's May 01 2019 20:59 post either.

I'll take Much Better notes in your Summmit Session(s) this year... I Promise Smiler
May 08, 2019, 09:53 AM
Tony A
1) I don't have IE11 so cannot test (emulation from Edge). Check the mode from within developer tools to see what mode it is actually running in - just in case! Even though it says it's IE11, it might be running in emulation because of HTML headers etc.

2) You are running from within "MRE" so you need the alternate EXEC or prefix with -MRNOEDIT - but you knew that and it was just a "senior moment" Wink

T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
May 08, 2019, 10:27 AM
Doug
Yeah... I knew that... sometime ago... I seem to have forgotten more than I can remember Smiler ... Stack Overflow? Anyway, that worked... Of course it did Smiler

I'm so looking forward to Summit to see how much more I can cram into this brain of mine... And do a Major Defrag to clear out all the stuff that's changed since 1983...
May 09, 2019, 12:16 PM
Hallway
Nice Thread


Hallway

 
Prod: 8202M1
Test: 8202M4
Repository:
 
OS:
 
Outputs:
 
 
 
 
May 09, 2019, 12:48 PM
Doug
Now, I'm making a 'Nice Thread' (Thanks Hallway) even better.

Of course Tony was correct in what he stated. However, it needed "ON TABLE PCHOLD FORMAT AHTML", or HTML, added for it to work on my system from within App Studio. Weird... But that's all that I did (There's a lot of Browser stuff going on here, which is fine). Maybe there's a deeper explanation to that which may or may not be discovered. But, here it is... Tony's Original Fex, with that one PCHOLD line added.

Thanks Again Tony... See you at Summit Smiler
May 09, 2019, 05:29 PM
Waz
Awesome technique.

Wish I had a use for it. Perhaps I should invent one.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

May 10, 2019, 05:17 AM
Tony A
Thanks Waz!

@ Doug, I was a little concerned when you suggested AHTML but having just tried it, the FILTER option actually shows the graphic (8.2.05) which is reassuring!

Even sorting works fine (on initial checks anyway!).

T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
May 10, 2019, 10:03 AM
Doug
Waz: Go For It!
quote:
Perhaps I should invent one.
Tony: You got me going on this and I kept on going. You're a great Teacher... Professor...
Of course, I knew that We Can Do That in WebFOCUS!
I hope more people benefit from this and "Invent Applications around it.
See You At Summit!

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




   In FOCUS Since 1983 ~ from FOCUS to WebFOCUS.
   Current: WebFOCUS Administrator at FIS Worldpay | 8204, 8206