From 66df4de8be0849d6146c4ca1c33081f861ff4707 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jun 2011 22:13:43 +0000 Subject: [PATCH] New: Graph js librairie can accept colors and mix bar with plots. --- htdocs/adherents/index.php | 10 +- htdocs/comm/propal/class/propal.class.php | 16 +-- htdocs/comm/propal/stats/index.php | 159 +++++++++++----------- htdocs/lib/functions.lib.php | 66 ++++++--- 4 files changed, 140 insertions(+), 111 deletions(-) diff --git a/htdocs/adherents/index.php b/htdocs/adherents/index.php index bb0f145dc54..91e5173c20f 100644 --- a/htdocs/adherents/index.php +++ b/htdocs/adherents/index.php @@ -154,7 +154,6 @@ if ($conf->use_javascript_ajax) $SommeD=0; $dataval=array(); $datalabels=array(); - $dataseries=array(); foreach ($AdherentType as $key => $adhtype) { $datalabels[]=$adhtype->getNomUrl(0,dol_size(16)); @@ -167,15 +166,18 @@ if ($conf->use_javascript_ajax) $SommeC+=isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0; $SommeD+=isset($MembersResiliated[$key])?$MembersResiliated[$key]:0; } + /* + $dataseries=array(); $dataseries[]=array('label'=>$langs->trans("MembersStatusToValid"),'values'=> $dataval['draft']); $dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'values'=> $dataval['notuptodate']); $dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'values'=> $dataval['uptodate']); $dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'values'=> $dataval['resiliated']); - $data=array('series'=>$dataseries,'xlabel'=>$datalabels); - dol_print_graph('stats2',300,180,$data,1,'bar'); - $dataseries=array(); + $data=array('series'=>$dataseries,'seriestype'=>array('bar','bar','bar','bar'),'xlabel'=>$datalabels); + dol_print_graph('stats2',300,180,$data,1,'barline'); */ + + $dataseries=array(); $dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'values'=>array(round($SommeB))); $dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'values'=>array(round($SommeC))); $dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'values'=>array(round($SommeD))); diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 4eca267b20f..7b0ebae6e9f 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -62,7 +62,7 @@ class Propal extends CommonObject var $author; var $ref; var $ref_client; - var $statut; // 0, 1, 2, 3, 4 + var $statut; // 0 (draft), 1 (validated), 2 (signed), 3 (not signed), 4 (billed) var $datec; // Date of creation var $datev; // Date of validation var $date; // Date of proposal @@ -1994,9 +1994,9 @@ class Propal extends CommonObject /** - * \brief Return label of status of proposal (draft, validated, ...) - * \param mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto - * \return string Label + * Return label of status of proposal (draft, validated, ...) + * @param mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto + * @return string Label */ function getLibStatut($mode=0) { @@ -2004,10 +2004,10 @@ class Propal extends CommonObject } /** - * \brief Return label of a status (draft, validated, ...) - * \param statut id statut - * \param mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto - * \return string Label + * Return label of a status (draft, validated, ...) + * @param statut id statut + * @param mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto + * @return string Label */ function LibStatut($statut,$mode=1) { diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index ba355164110..c4f4b83c7bf 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -19,11 +19,11 @@ */ /** - \file htdocs/comm/propal/stats/index.php - \ingroup propale - \brief Page des stats propositions commerciales - \version $Id$ -*/ + * \file htdocs/comm/propal/stats/index.php + * \ingroup propale + * \brief Page des stats propositions commerciales + * \version $Id$ + */ require("../../../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/comm/propal/class/propalestats.class.php"); @@ -32,21 +32,24 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/dolgraph.class.php"); $WIDTH=500; $HEIGHT=200; -// S�curit� acc�s client +// Security check if ($user->societe_id > 0) { - $action = ''; - $socid = $user->societe_id; + $action = ''; + $socid = $user->societe_id; } $year = strftime("%Y", time()); $startyear=$year-2; $endyear=$year; + /* * View */ +$langs->load("propal"); + llxHeader(); print_fiche_titre($langs->trans("ProposalsStatistics"), $mesg); @@ -65,40 +68,40 @@ $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear); if (!$user->rights->societe->client->voir || $user->societe_id) { - $filenamenb = $dir.'/proposalsnbinyear-'.$user->id.'-'.$year.'.png'; - $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-'.$user->id.'-'.$year.'.png'; + $filenamenb = $dir.'/proposalsnbinyear-'.$user->id.'-'.$year.'.png'; + $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-'.$user->id.'-'.$year.'.png'; } else { - $filenamenb = $dir.'/proposalsnbinyear-'.$year.'.png'; - $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-'.$year.'.png'; + $filenamenb = $dir.'/proposalsnbinyear-'.$year.'.png'; + $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-'.$year.'.png'; } $px = new DolGraph(); $mesg = $px->isGraphKo(); if (! $mesg) { - $px->SetData($data); - $px->SetPrecisionY(0); - $i=$startyear; - while ($i <= $endyear) - { - $legend[]=$i; - $i++; - } - $px->SetLegend($legend); - $px->SetMaxValue($px->GetCeilMaxValue()); - $px->SetMinValue(min(0,$px->GetFloorMinValue())); - $px->SetWidth($WIDTH); - $px->SetHeight($HEIGHT); - $px->SetYLabel($langs->trans("NbOfProposals")); - $px->SetShading(3); - $px->SetHorizTickIncrement(1); - $px->SetPrecisionY(0); - $px->mode='depth'; - $px->SetTitle($langs->trans("NumberOfProposalsByMonth")); + $px->SetData($data); + $px->SetPrecisionY(0); + $i=$startyear; + while ($i <= $endyear) + { + $legend[]=$i; + $i++; + } + $px->SetLegend($legend); + $px->SetMaxValue($px->GetCeilMaxValue()); + $px->SetMinValue(min(0,$px->GetFloorMinValue())); + $px->SetWidth($WIDTH); + $px->SetHeight($HEIGHT); + $px->SetYLabel($langs->trans("NbOfProposals")); + $px->SetShading(3); + $px->SetHorizTickIncrement(1); + $px->SetPrecisionY(0); + $px->mode='depth'; + $px->SetTitle($langs->trans("NumberOfProposalsByMonth")); - $px->draw($filenamenb); + $px->draw($filenamenb); } // Build graphic amount of object @@ -108,40 +111,40 @@ $data = $stats->getAmountByMonthWithPrevYear($endyear,$startyear); if (!$user->rights->societe->client->voir || $user->societe_id) { - $filenameamount = $dir.'/proposalsamountinyear-'.$user->id.'-'.$year.'.png'; - $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$user->id.'-'.$year.'.png'; + $filenameamount = $dir.'/proposalsamountinyear-'.$user->id.'-'.$year.'.png'; + $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$user->id.'-'.$year.'.png'; } else { - $filenameamount = $dir.'/proposalsamountinyear-'.$year.'.png'; - $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$year.'.png'; + $filenameamount = $dir.'/proposalsamountinyear-'.$year.'.png'; + $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$year.'.png'; } $px = new DolGraph(); $mesg = $px->isGraphKo(); if (! $mesg) { - $px->SetData($data); - $px->SetPrecisionY(0); - $i=$startyear; - while ($i <= $endyear) - { - $legend[]=$i; - $i++; - } - $px->SetLegend($legend); - $px->SetMaxValue($px->GetCeilMaxValue()); - $px->SetMinValue(min(0,$px->GetFloorMinValue())); - $px->SetWidth($WIDTH); - $px->SetHeight($HEIGHT); - $px->SetYLabel($langs->trans("AmountOfProposals")); - $px->SetShading(3); - $px->SetHorizTickIncrement(1); - $px->SetPrecisionY(0); - $px->mode='depth'; - $px->SetTitle($langs->trans("AmountOfProposalsByMonthHT")); + $px->SetData($data); + $px->SetPrecisionY(0); + $i=$startyear; + while ($i <= $endyear) + { + $legend[]=$i; + $i++; + } + $px->SetLegend($legend); + $px->SetMaxValue($px->GetCeilMaxValue()); + $px->SetMinValue(min(0,$px->GetFloorMinValue())); + $px->SetWidth($WIDTH); + $px->SetHeight($HEIGHT); + $px->SetYLabel($langs->trans("AmountOfProposals")); + $px->SetShading(3); + $px->SetHorizTickIncrement(1); + $px->SetPrecisionY(0); + $px->mode='depth'; + $px->SetTitle($langs->trans("AmountOfProposalsByMonthHT")); - $px->draw($filenameamount); + $px->draw($filenameamount); } print ''; @@ -161,25 +164,25 @@ print ''; $oldyear=0; foreach ($data as $val) { - $year = $val['year']; - print $avg; - while ($oldyear > $year+1) - { // If we have empty year - $oldyear--; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - } - print ''; + $year = $val['year']; + print $avg; + while ($oldyear > $year+1) + { // If we have empty year + $oldyear--; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + print ''; print ''; - print ''; - print ''; - print ''; - print ''; - $oldyear=$year; + print ''; + print ''; + print ''; + print ''; + $oldyear=$year; } print '
'.$oldyear.'000
'.$oldyear.'000
'.$year.''.$val['nb'].''.price(price2num($val['total'],'MT'),1).''.price(price2num($val['avg'],'MT'),1).'
'.$val['nb'].''.price(price2num($val['total'],'MT'),1).''.price(price2num($val['avg'],'MT'),1).'
'; @@ -192,9 +195,9 @@ print ''; print '
'; if ($mesg) { print $mesg; } else { - print ''.$langs->trans('; - print "
\n"; - print ''.$langs->trans('; + print ''.$langs->trans('; + print "
\n"; + print ''.$langs->trans('; } print '
'; diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 1c42417573c..5e3f0f415d8 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -1267,8 +1267,11 @@ function dol_print_graph($htmlid,$width,$height,$data,$showlegend=0,$type='pie') { if ($type == 'pie') { - // data is array('series'=>array(0=>serie1,1=>serie2,...)); - // serie is array('label'=>'label', values=>array(0=>val)) + // data is array('series'=>array(serie1,serie2,...), + // 'seriestype'=>array('bar','line',...), + // 'seriescolor'=>array(0=>'#999999',1=>'#999999',...) + // 'xlabel'=>array(0=>labelx1,1=>labelx2,...)); + // serieX is array('label'=>'label', values=>array(0=>val)) print ' '; } - else if ($type == 'bar') + else if ($type == 'barline') { - // data is array('series'=>array(0=>serie1,1=>serie2,...),'xlabel'=>array(0=>label1,1=>label2,...)); - // serie is array('label'=>'label', values=>array(0=>val1,1=>val2,...)) + // data is array('series'=>array(serie1,serie2,...), + // 'seriestype'=>array('bar','line',...), + // 'seriescolor'=>array(0=>'#999999',1=>'#999999',...) + // 'xlabel'=>array(0=>labelx1,1=>labelx2,...)); + // serieX is array('label'=>'label', values=>array(0=>y1,1=>y2,...)) with same nb of value than into xlabel print '