Import initial din SVN ROAAUTO/Trunk @HEAD
This commit is contained in:
366
COMUN/utile/web/wwwebgraphs.prg
Normal file
366
COMUN/utile/web/wwwebgraphs.prg
Normal file
@@ -0,0 +1,366 @@
|
||||
**
|
||||
** wwwebgraphs.fxp
|
||||
**
|
||||
SET PROCEDURE TO wwWebGraphs ADDITIVE
|
||||
SET PROCEDURE TO wwUtils ADDITIVE
|
||||
SET PROCEDURE TO wwAPI ADDITIVE
|
||||
RETURN
|
||||
EXTERNAL ARRAY laGraphs, laLabels, laLegend
|
||||
ENDPROC
|
||||
*
|
||||
DEFINE CLASS wwWebGraphs AS Relation
|
||||
ngRaphtype = 0
|
||||
ccAption = ""
|
||||
ooWc = .NULL.
|
||||
coWcprogid = "OWC10.ChartSpace"
|
||||
cpHysicalpath = ""
|
||||
clOgicalpath = ""
|
||||
niMagetimeout = 300
|
||||
ciMagename = ""
|
||||
niMagewidth = 750
|
||||
niMageheight = 480
|
||||
cbAckcolor = "lightyellow"
|
||||
csEries1color = "darkred"
|
||||
csEries2color = "darkblue"
|
||||
csEries3color = "darkgreen"
|
||||
csEries4color = "orange"
|
||||
csEries5color = "purple"
|
||||
csEries6color = "pink"
|
||||
nMaxColors = 6
|
||||
nsHowlegend = 1
|
||||
*
|
||||
FUNCTION Init
|
||||
LPARAMETER llNoexistcheck
|
||||
|
||||
IF .NOT. llNoexistcheck .AND. .NOT. isComobject(thIs.coWcprogid)
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
thIs.ooWc = CREATEOBJECT(thIs.coWcprogid)
|
||||
IF VARTYPE(thIs.ooWc)<>"O"
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
RETURN
|
||||
ENDFUNC
|
||||
*
|
||||
FUNCTION GraphSetup
|
||||
LOCAL loGraph
|
||||
loGraph = thIs.ooWc.chArts.adD()
|
||||
loGraph.tyPe = thIs.ngRaphtype
|
||||
IF thIs.nsHowlegend>0
|
||||
loGraph.haSlegend = .T.
|
||||
ENDIF
|
||||
loGraph.plOtarea.inTerior.coLor = thIs.cbAckcolor
|
||||
IF .NOT. EMPTY(thIs.ccAption)
|
||||
thIs.ooWc.haSchartspacetitle = .T.
|
||||
thIs.ooWc.chArtspacetitle.caPtion = thIs.ccAption
|
||||
thIs.ooWc.chArtspacetitle.foNt.boLd = .T.
|
||||
ENDIF
|
||||
RETURN loGraph
|
||||
ENDFUNC
|
||||
*
|
||||
PROCEDURE ShowGraphFromCursor
|
||||
LOCAL x, y, loGraph, lnFields, lnRows, lnSeries, lcElement, lcArray, lnx, ocOnst
|
||||
lnFields = AFIELDS(laFields, ALIAS())
|
||||
lnRows = RECCOUNT()
|
||||
lnSeries = lnFields-1
|
||||
DIMENSION laLabels[lnRows]
|
||||
FOR x = 1 TO lnSeries
|
||||
lcArray = "DIMENSION laValues"+TRANSFORM(x)+"["+ ;
|
||||
TRANSFORM(lnRows)+"]"
|
||||
&lcArray
|
||||
ENDFOR
|
||||
x = 0
|
||||
SCAN
|
||||
x = x+1
|
||||
laLabels[x] = TRIM(EVALUATE(FIELD(2)))
|
||||
FOR y = 1 TO lnSeries
|
||||
lcElement = "laValues"+TRANSFORM(y)+"["+TRANSFORM(x)+"]"
|
||||
&lcElement = EVALUATE(FIELD(y+1))
|
||||
ENDFOR
|
||||
ENDSCAN
|
||||
ocOnst = thIs.ooWc.coNstants
|
||||
loGraph = thIs.grAphsetup()
|
||||
lnx = 0
|
||||
FOR x = 1 TO lnSeries
|
||||
loGraph.seRiescollection.adD()
|
||||
loSeries = loGraph.seRiescollection(x-1)
|
||||
lnx = lnx + 1
|
||||
IF .NOT. INLIST(thIs.ngRaphtype, 18, 19, 58, 59)
|
||||
|
||||
IF lnx > this.nMaxColors && 6 culori maxim
|
||||
lnx = 1
|
||||
ENDIF
|
||||
|
||||
loSeries.inTerior.coLor = EVALUATE("THIS.cSeries"+ ;
|
||||
TRANSFORM(lnx)+"Color")
|
||||
ELSE
|
||||
IF x>1
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDIF
|
||||
lcArray = "@laValues"+TRANSFORM(x)
|
||||
loSeries.caPtion = PROPER(STRTRAN(TRIM(laFields(x+1,1)), "_", " "))
|
||||
loSeries.seTdata(ocOnst.chDimcategories,ocOnst.chDataliteral, ;
|
||||
@laLabels)
|
||||
loSeries.SetData(oConst.chDimValues, oConst.chDataLiteral, &lcArray)
|
||||
ENDFOR
|
||||
ENDPROC
|
||||
*
|
||||
PROCEDURE ShowGraphFromArray
|
||||
LPARAMETER laLabels, laSeries1, lcSeries1, laSeries2, lcSeries2, ;
|
||||
laSeries3, lcSeries3, laSeries4, lcSeries4, laSeries5, ;
|
||||
lcSeries5, laSeries6, lcSeries6
|
||||
LOCAL x, loGraph, lnSeries, lcArray, lcLabel
|
||||
lnSeries = (PCOUNT()-1)/2
|
||||
loGraph = thIs.grAphsetup()
|
||||
ocOnst = thIs.ooWc.coNstants
|
||||
FOR x = 1 TO lnSeries
|
||||
loGraph.seRiescollection.adD()
|
||||
IF .NOT. INLIST(thIs.ngRaphtype, 18, 19)
|
||||
loGraph.seRiescollection(x-1).inTerior.coLor = ;
|
||||
EVALUATE("THIS.cSeries"+ ;
|
||||
TRANSFORM(x)+"Color")
|
||||
ENDIF
|
||||
lcArray = "@laSeries"+TRANSFORM(x)
|
||||
lcLabel = EVALUATE("lcSeries"+TRANSFORM(x))
|
||||
loGraph.seRiescollection(x-1).caPtion = lcLabel
|
||||
loGraph.seRiescollection(x-1).seTdata(ocOnst.chDimcategories, ;
|
||||
ocOnst.chDataliteral,@laLabels)
|
||||
loGraph.SeriesCollection(x-1).SetData(oConst.chDimValues, oConst.chDataLiteral, &lcArray)
|
||||
ENDFOR
|
||||
ENDPROC
|
||||
*
|
||||
PROCEDURE ShowGraphFromMultiDimensionalArray
|
||||
LPARAMETER laGraphs, laLegend
|
||||
LOCAL loGraph, lnSeries, lnRows, llLegend, x, y
|
||||
lnSeries = ALEN(laGraphs, 2)-1
|
||||
lnRows = ALEN(laGraphs, 1)
|
||||
loGraph = thIs.grAphsetup()
|
||||
IF TYPE('ALEN(laLegend)')="N"
|
||||
llLegend = .T.
|
||||
ELSE
|
||||
llLegend = .F.
|
||||
loGraph.haSlegend = .F.
|
||||
ENDIF
|
||||
ocOnst = thIs.ooWc.coNstants
|
||||
DIMENSION laLabels[lnRows]
|
||||
FOR y = 1 TO lnRows
|
||||
laLabels[y] = laGraphs(y,1)
|
||||
ENDFOR
|
||||
FOR x = 2 TO lnSeries+1
|
||||
loGraph.seRiescollection.adD()
|
||||
IF .NOT. INLIST(thIs.ngRaphtype, 18, 19)
|
||||
loGraph.seRiescollection(x-2).inTerior.coLor = ;
|
||||
EVALUATE("THIS.cSeries"+ ;
|
||||
TRANSFORM(x)+"Color")
|
||||
ENDIF
|
||||
DIMENSION laArray[lnRows]
|
||||
FOR y = 1 TO lnRows
|
||||
laArray[y] = laGraphs(y,x)
|
||||
ENDFOR
|
||||
IF llLegend
|
||||
loGraph.seRiescollection(x-2).caPtion = laLegend(x-1)
|
||||
ENDIF
|
||||
loGraph.seRiescollection(x-2).seTdata(ocOnst.chDimcategories, ;
|
||||
ocOnst.chDataliteral,@laLabels)
|
||||
loGraph.seRiescollection(x-2).seTdata(ocOnst.chDimvalues, ;
|
||||
ocOnst.chDataliteral,@laArray)
|
||||
ENDFOR
|
||||
ENDPROC
|
||||
*
|
||||
FUNCTION GetOutput
|
||||
thIs.seTgraphicsoptions(thIs.ooWc.chArts(0))
|
||||
deLetefiles(thIs.cpHysicalpath+"IMG*.gif",thIs.niMagetimeout)
|
||||
thIs.ciMagename = "IMG"+SYS(2015)+TRANSFORM(apPlication.prOcessid)+".gif"
|
||||
thIs.ooWc.exPortpicture(thIs.cpHysicalpath+thIs.ciMagename,"gif", ;
|
||||
thIs.niMagewidth,thIs.niMageheight)
|
||||
RETURN '<img src="'+thIs.clOgicalpath+thIs.ciMagename+'">'
|
||||
ENDFUNC
|
||||
*
|
||||
PROCEDURE Clear
|
||||
thIs.ooWc.clEar()
|
||||
ENDPROC
|
||||
*
|
||||
FUNCTION ShowGraphInForm
|
||||
LPARAMETER lcFormcaption
|
||||
LOCAL loForm, as, foRm
|
||||
loForm = CREATEOBJECT("GraphForm")
|
||||
loForm.adDobject("oPicture","image")
|
||||
loForm.heIght = thIs.niMageheight
|
||||
loForm.wiDth = thIs.niMagewidth
|
||||
loForm.auTocenter = .T.
|
||||
IF .NOT. EMPTY(lcFormcaption)
|
||||
loForm.caPtion = lcFormcaption
|
||||
ENDIF
|
||||
loForm.opIcture.leFt = 0
|
||||
loForm.opIcture.toP = 0
|
||||
loForm.opIcture.heIght = thIs.niMageheight
|
||||
loForm.opIcture.wiDth = thIs.niMagewidth
|
||||
loForm.opIcture.piCture = thIs.cpHysicalpath+thIs.ciMagename
|
||||
loForm.opIcture.viSible = .T.
|
||||
loForm.shOw()
|
||||
RETURN loForm
|
||||
ENDFUNC
|
||||
*
|
||||
PROCEDURE GetGraphTypes
|
||||
LPARAMETER lcCursorname
|
||||
IF EMPTY(lcCursorname)
|
||||
lcCursorname = "wwWebGraphTypes"
|
||||
ENDIF
|
||||
CREATE CURSOR (lcCursorname) (naMe C (80), id I)
|
||||
TEXT TO lcVar
|
||||
#define chChartTypeColumnClustered 0
|
||||
#define chChartTypeColumnStacked 1
|
||||
#define chChartTypeColumnStacked100 2
|
||||
#define chChartTypeBarClustered 3
|
||||
#define chChartTypeBarStacked 4
|
||||
#define chChartTypeBarStacked100 5
|
||||
#define chChartTypeLine 6
|
||||
#define chChartTypeLineStacked 8
|
||||
#define chChartTypeLineStacked100 10
|
||||
#define chChartTypeLineMarkers 7
|
||||
#define chChartTypeLineStackedMarkers 9
|
||||
#define chChartTypeLineStacked100Markers 11
|
||||
#define chChartTypeSmoothLine 12
|
||||
#define chChartTypeSmoothLineStacked 14
|
||||
#define chChartTypeSmoothLineStacked100 16
|
||||
#define chChartTypeSmoothLineMarkers 13
|
||||
#define chChartTypeSmoothLineStackedMarkers 15
|
||||
#define chChartTypeSmoothLineStacked100Markers 17
|
||||
#define chChartTypePie 18
|
||||
#define chChartTypePieExploded 19
|
||||
#define chChartTypePieStacked 20
|
||||
#define chChartTypeScatterMarkers 21
|
||||
#define chChartTypeScatterLine 25
|
||||
#define chChartTypeScatterLineMarkers 24
|
||||
#define chChartTypeScatterLineFilled 26
|
||||
#define chChartTypeScatterSmoothLine 23
|
||||
#define chChartTypeScatterSmoothLineMarkers 22
|
||||
#define chChartTypeBubble 27
|
||||
#define chChartTypeBubbleLine 28
|
||||
#define chChartTypeArea 29
|
||||
#define chChartTypeAreaStacked 30
|
||||
#define chChartTypeAreaStacked100 31
|
||||
#define chChartTypeDoughnut 32
|
||||
#define chChartTypeDoughnutExploded 33
|
||||
#define chChartTypeRadarLine 34
|
||||
#define chChartTypeRadarLineMarkers 35
|
||||
#define chChartTypeRadarLineFilled 36
|
||||
#define chChartTypeRadarSmoothLine 37
|
||||
#define chChartTypeRadarSmoothLineMarkers 38
|
||||
#define chChartTypeStockHLC 39
|
||||
#define chChartTypeStockOHLC 40
|
||||
#define chChartTypePolarMarkers 41
|
||||
#define chChartTypePolarLine 42
|
||||
#define chChartTypePolarLineMarkers 43
|
||||
#define chChartTypePolarSmoothLine 44
|
||||
#define chChartTypePolarSmoothLineMarkers 45
|
||||
#define chChartTypeColumn3D 46
|
||||
#define chChartTypeColumnClustered3D 47
|
||||
#define chChartTypeColumnStacked3D 48
|
||||
#define chChartTypeColumnStacked1003D 49
|
||||
#define chChartTypeBar3D 50
|
||||
#define chChartTypeBarClustered3D 51
|
||||
#define chChartTypeBarStacked3D 52
|
||||
#define chChartTypeBarStacked1003D 53
|
||||
#define chChartTypeLine3D 54
|
||||
#define chChartTypeLineOverlapped3D 55
|
||||
#define chChartTypeLineStacked3D 56
|
||||
#define chChartTypeLineStacked1003D 57
|
||||
#define chChartTypePie3D 58
|
||||
#define chChartTypePieExploded3D 59
|
||||
#define chChartTypeArea3D 60
|
||||
#define chChartTypeAreaOverlapped3D 61
|
||||
#define chChartTypeAreaStacked3D 62
|
||||
#define chChartTypeAreaStacked1003D 63
|
||||
ENDTEXT
|
||||
lnLines = ALINES(laLines, lcVar)
|
||||
FOR x = 1 TO lnLines
|
||||
lcValue = exTract(laLines(x)," ",CHR(13), ,.T.)
|
||||
INSERT INTO (lcCursorname) (naMe, id) VALUES ;
|
||||
(exTract(laLines(x),"#define "," "), VAL(lcValue))
|
||||
ENDFOR
|
||||
REPLACE naMe WITH STRTRAN(naMe, "chChartType", "") ALL
|
||||
ENDPROC
|
||||
*
|
||||
PROCEDURE SetGraphicsOptions
|
||||
LPARAMETER loChart
|
||||
RETURN
|
||||
ENDPROC
|
||||
*
|
||||
PROCEDURE nGraphType_Assign
|
||||
LPARAMETER lvGraphtype
|
||||
IF VARTYPE(lvGraphtype)="N"
|
||||
thIs.ngRaphtype = lvGraphtype
|
||||
RETURN
|
||||
ENDIF
|
||||
IF VARTYPE(lvGraphtype)="C"
|
||||
lvGraphtype = UPPER(lvGraphtype)
|
||||
DO CASE
|
||||
CASE lvGraphtype="BAR3D"
|
||||
thIs.ngRaphtype = 50
|
||||
CASE lvGraphtype="BAR"
|
||||
thIs.ngRaphtype = 0
|
||||
CASE lvGraphtype="PIE3D"
|
||||
thIs.ngRaphtype = 58
|
||||
CASE lvGraphtype="PIE"
|
||||
thIs.ngRaphtype = 18
|
||||
CASE lvGraphtype="PIEEXPLODED3D"
|
||||
thIs.ngRaphtype = 59
|
||||
CASE lvGraphtype="PIEEXPLODED"
|
||||
thIs.ngRaphtype = 19
|
||||
CASE lvGraphtype="COLUMN3D"
|
||||
thIs.ngRaphtype = 51
|
||||
CASE lvGraphtype="COLUMN"
|
||||
thIs.ngRaphtype = 3
|
||||
CASE lvGraphtype="LINE3D"
|
||||
thIs.ngRaphtype = 54
|
||||
CASE lvGraphtype="LINEPOINTS"
|
||||
thIs.ngRaphtype = 7
|
||||
CASE lvGraphtype="LINE"
|
||||
thIs.ngRaphtype = 6
|
||||
ENDCASE
|
||||
ENDIF
|
||||
ENDPROC
|
||||
*
|
||||
ENDDEFINE
|
||||
*
|
||||
DEFINE CLASS GraphForm AS Form
|
||||
shOwwindow = 2
|
||||
caPtion = "Graph Results"
|
||||
maXbutton = .F.
|
||||
boRderstyle = 2
|
||||
ENDDEFINE
|
||||
*
|
||||
FUNCTION IsCOMObject
|
||||
LPARAMETER lcProgid, lcClassid, lcClassdescript
|
||||
IF EMPTY(lcProgid)
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
loApi = CREATEOBJECT("wwAPI")
|
||||
lcClassid = loApi.reAdregistrystring(-2147483648,lcProgid+"\CLSID","")
|
||||
IF ISNULL(lcClassid)
|
||||
lcClassid = ""
|
||||
lcClassdescription = ""
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
lcClassdescript = loApi.reAdregistrystring(-2147483648,lcProgid,"")
|
||||
IF ISNULL(lcClassdescript)
|
||||
lcClassdescript = ""
|
||||
ENDIF
|
||||
RETURN .T.
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION DeleteFiles
|
||||
PARAMETER lcFilespec, lnTimeout
|
||||
PRIVATE lnX, lnFiles, loApi
|
||||
lnTimeout = IIF(EMPTY(lnTimeout), 300, lnTimeout)
|
||||
lnFiles = ADIR(laFiles, lcFilespec)
|
||||
FOR lnX = 1 TO lnFiles
|
||||
ldTime = CTOT(DTOC(laFiles(lnX,3))+" "+laFiles(lnX,4))
|
||||
IF ldTime+lnTimeout<DATETIME()
|
||||
ERASE (ADDBS(JUSTPATH(lcFilespec))+laFiles(lnX,1))
|
||||
ENDIF
|
||||
ENDFOR
|
||||
RETURN .T.
|
||||
ENDFUNC
|
||||
Reference in New Issue
Block a user