ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Les Tag Clouds   



L'auteur

Mike Gagnon
Canada Canada
Membre Simple
# 0000000025
enregistré le 14/10/2004

Gagnon Mike
Pte Claire Quebec - Canada
de la société MCRG Software
Fiche personnelle


Note des membres
pas de note

Contributions > 09 - Automation > Internet Explorer

Les Tag Clouds
# 0000000443
ajouté le 29/04/2007 13:57:11 et modifié le 29/04/2007
consulté 5871 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0

Description
Que sont ces tag cloulds?
D'après Wikipedia:
Un Tag Cloud (ou la liste pesée dans la conception visuelle) peut être employé comme description visuelle du contenu utilisées sur un site Web. Souvent, des étiquettes plus fréquemment utilisées sont dépeintes dans une plus grande police ou autrement soulignées, alors que l'ordre montré est généralement alphabétique. Ainsi tous les deux qui trouvent une étiquette par alphabet et par la popularité sont possibles. Le choix d'une étiquette simple dans un Tag Cloud mènera généralement à une collection d'articles qui sont associés à cette étiquette.
Mais il aussi possible d'utiliser cette technique avec des rapports Foxpro qui seront dirigés vers un site Web par example. Les deux examples ici montre un effet très dramatique de l'utilisation des tag clouds.

On peut voir des examples ici
http://del.icio.us/tag/
http://beta.communities.microsoft.com/tagspace/
http://coelomic.wordpress.com/2006/01/02/tag-clouds/
Code source :
&& Tag clouds example 1

Local lnMaxbrightness, lnMaxFontsize, lnMinFontsize, lcHTML, lnCol
lnMaxbrightness=200
lnMaxFontsize=49
lnMinFontsize=7

Close Databases All
Open Database Home()+"Samples\Northwind\Northwind.dbc"

Select;
   Customers.Companyname,;
   CustomerStats.nOrders,;
   Sum(Orderdetails.quantity * Orderdetails.unitprice * (1-Orderdetails.discount)) As nTotal,;
   (CustomerStats.dTo-CustomerStats.dFrom+1) As nDays;
From;
   Customers,orders,orderdetails,;
   (Select;
       Customerid,;
       Count(*) As nOrders,;
       Min(orderdate) As dFrom,;
       Max(orderdate) As dTo;
    From;
       Orders;
       Group By 1;
   ) As CustomerStats;
   Group By Companyname,nOrders,nDays;
   Order By Companyname;
Where Customers.Customerid = CustomerStats.Customerid;
   and Orders.Customerid = Customers.Customerid;
   and Orders.Orderid = Orderdetails.Orderid;
Into Cursor curCustomers nofilter

Select;
   Max(nTotal/nOrders) As nMaxAverageOrders,;
   Max(nTotal/nDays) As nMaxAverageTotal;
From curCustomers;
Into Cursor curMax

lcHTML = ""
Select curCustomers
Scan
   lnCol = Int(Mton(curCustomers.nTotal/curCustomers.nDays/curMax.nMaxAverageTotal*lnMaxbrightness))
   TEXT to lcHTML additive Textmerge Noshow
   <a style="font-size:<<Int(Mton(curCustomers.nTotal/curCustomers.nOrders/curMax.nMaxAverageOrders*(lnMaxFontsize-lnMinfontsize)+lnMinfontsize+.5))>>pt;
color:#<<Right(Transform(65793*(lnMaxBrightness-lnCol),"
@0"),6)>>;"><<curCustomers.Companyname>></a>
   ENDTEXT
EndScan

Local lcFile
lcFile = Addbs(GetEnv("TEMP"))+Sys(2015)+".html"
Strtofile("<html><body>"+lcHTML+"</body></html>",lcFile)
o = CreateObject("internetexplorer.application")
o.navigate2("file://"+lcFile)
o.Visible = .T.

&& Tag clouds plus dramatique

Local lnMinBrightness, lnMaxbrightness
Local lnMaxFontsize, lnMinFontsize
Local lnColorEmphasis, lnFontsizeEmphasis
Local lcHTML, lnCount

lnMinBrightness=20
lnMaxbrightness=100

lnMaxFontsize=32
lnMinFontsize=7

Close Databases All
Open Database Home()+"Samples\Northwind\Northwind.dbc"

Select;
   Customers.Companyname,;
   CustomerStats.nOrders,;
   Sum(Orderdetails.quantity * Orderdetails.unitprice * (1-Orderdetails.discount)) As nTotal,;
   (CustomerStats.dTo-CustomerStats.dFrom+1) As nDays;
From;
   Customers,orders,orderdetails,;
   (Select;
       Customerid,;
       Count(*) As nOrders,;
       Min(orderdate) As dFrom,;
       Max(orderdate) As dTo;
    From;
       Orders;
       Group By 1;
   ) As CustomerStats;
   Group By Companyname,nOrders,nDays;
   Order By Companyname;
Where Customers.Customerid = CustomerStats.Customerid;
   and Orders.Customerid = Customers.Customerid;
   and Orders.Orderid = Orderdetails.Orderid;
Into Cursor curCustomers nofilter

Select;
   Max(nTotal/nOrders) As nMaxAverageOrders,;
   Max(nTotal/nDays) As nMaxAverageTotal;
From curCustomers;
Into Cursor curMax

TEXT to lcHTML Textmerge Noshow
<html><style type="text/css">
.tag {font-family:Arial,Helvetica; line-height:<<lnMaxFontsize+2>>pt; vertical-align:baseline; }
</style>
<script language="jscript">
function resizeenter(cId) {document.getElementById(cId).style.fontSize="<<lnMaxFontsize>>pt";}
function resizeleave(cId,nSize) {document.getElementById(cId).style.fontSize=nSize+"pt";}
</script>
<body bgcolor="#0000000">
ENDTEXT

*=<<lnMaxFontsize>>pt;

lnCount=0
Select curCustomers
Scan
   lnCount = lnCount + 1
   If lnCount%2=0
      lnR=.5
      lnG=.5
      lnB=1
   Else
      lnR=.5
      lnG=1
      lnB=.5
   Endif

   lnColorEmphasis    = Mton(curCustomers.nTotal/curCustomers.nDays/curMax.nMaxAverageTotal)
   lnFontsizeEmphasis = Mton(curCustomers.nTotal/curCustomers.nOrders/curMax.nMaxAverageOrders)
   TEXT to lcHTML Additive Textmerge Noshow
<a id="<<lnCount>>" class="tag" originalfontsize="8pt" _nocrlf_
style="font-size:<<Int(lnFontsizeEmphasis*(lnMaxFontsize-lnMinfontsize)+lnMinfontsize+.5))>>pt; _nocrlf_
color:rgb(_nocrlf_
<<Int((lnColorEmphasis*(lnMaxbrightness-lnMinBrightness)+lnMinBrightness)*lnR+.5)>>%,_nocrlf_
<<Int((lnColorEmphasis*(lnMaxbrightness-lnMinBrightness)+lnMinBrightness)*lnG+.5)>>%,_nocrlf_
<<Int((lnColorEmphasis*(lnMaxbrightness-lnMinBrightness)+lnMinBrightness)*lnB+.5)>>%)_nocrlf_
;"
 title="average $<<curCustomers.nTotal/curCustomers.nOrders>> per order
average cashflow $<<curCustomers.nTotal/curCustomers.nDays>> per day"
 _nocrlf_
onmouseenter="javascript:resizeenter('<<lnCount>>');" _nocrlf_
onmouseleave="javascript:resizeleave('<<lnCount>>',_nocrlf_
<<Int(lnFontsizeEmphasis*(lnMaxFontsize-lnMinfontsize)+lnMinfontsize+.5))>>);"
>_nocrlf_
<<curCustomers.Companyname>></a>
   ENDTEXT
Endscan

lcHTML = Strtran(lcHTML,"_nocrlf_"+Chr(13)+Chr(10)," ")

Local lcFile
lcFile = Addbs(Getenv("TEMP"))+Sys(2015)+".html"
Strtofile(lcHTML+"</body></html>",lcFile)
o = Createobject("internetexplorer.application")
o.navigate2("file://"+lcFile)
o.Visible = .T.
Commentaires
le 29/05/2007, Robert Plagnard a écrit :
Bonjour,

Je ne connaissais pas. L'effet est remarquable.
Dans le 1er cas on n'a pas l'iimpression d'activer quelque chose.
Dans le 2ième cas les couleurs ne sont pas très visibles et quand on survole le texte, comme il y a changement de taille, ca se réorganise tout le temps. C'est pas très lisible.

Mais où est le drame ? Est-ce une expression typique de ce pays de neige (comme dit le chanteur).

Robert


Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2019.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3