I'm using JpGraph to make a Gantt chart for a convention. I found this example at the bottom of the page and I'm trying to alter it to what I need displayed. I was able to set the leftMark
to the side of the bar that I want the text to appear. However, the text is not within the bar. I tried to change the alignment to "left, top"
but I get either an error $bar->leftMark->title->SetTextAlign('left','top');
Fatal error: Call to undefined method Text::SetTextAlign() in C:\xampp\htdocs\ganttChart\chart.php on line 82
or no effect on the graph.
Please see my example of what I was able to do with the graph: example.
Questions:
What classes, includes, or code an I missing in order to complete this task?
Do you know of an example that I can follow that has the same effect that I am looking for, described in the paragraph and example above?
PHP Code:
<?php // content="text/plain; charset=utf-8"
// Gantt hour example
require_once ('jpgraph/src/jpgraph.php');
require_once ('jpgraph/src/jpgraph_gantt.php');
require_once ('jpgraph/src/jpgraph_canvas.php');
require_once ('jpgraph/src/jpgraph_canvtools.php');
require_once ('jpgraph/src/jpgraph_text.inc.php');
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
$graph = new GanttGraph();
$graph->SetMarginColor('blue:1.7');
$graph->SetColor('white');
$graph->SetBackgroundGradient('navy','white',GRAD_HOR,BGRAD_MARGIN);
$graph->scale->hour->SetBackgroundColor('lightyellow:1.5');
$graph->scale->hour->SetFont(FF_FONT1);
$graph->scale->day->SetBackgroundColor('lightyellow:1.5');
$graph->scale->day->SetFont(FF_FONT1,FS_BOLD);
$graph->title->Set("Example of hours in scale");
$graph->title->SetColor('white');
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);
$graph->ShowHeaders(GANTT_HDAY | GANTT_HHOUR);
$graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
$graph->scale->week->SetFont(FF_FONT1);
$graph->scale->hour->SetIntervall(1);
$graph->scale->hour->SetStyle(HOURSTYLE_HM24);
$graph->scale->day->SetStyle(DAYSTYLE_SHORTDAYDATE3);
$data = array(
array(0,"Room 1", "2001-01-26 04:30","2001-01-26 14:00"),
array(0,"Room 1", "2001-01-26 15:30","2001-01-26 19:00"),
array(1,"Room 2", "2001-01-26 10:00","2001-01-26 18:00"),
array(2,"Room 3", "2001-01-26","2001-01-27 10:00")
);
for($i=0; $i<count($data); ++$i) {
$bar = new GanttBar(
$data[$i][0],
$data[$i][3],
$data[$i][2],
$data[$i][3],
"",100);
if( count($data[$i])>4 )
$bar->title->SetFont($data[$i][4],$data[$i][5],$data[$i][6] );
$bar->SetPattern(BAND_RDIAG,"yellow");
$bar->SetFillColor("red");
//$bar->SetTextAlign('left');
$bar->leftMark->Show();
//$bar->rightMark->title->Set("Events name");
$bar->leftMark->title->Set("Events name");
//$bar->rightMark->SetType(MARK_FILLEDCIRCLE);
//$bar->rightMark->SetWidth(10);
//$bar->rightMark->SetColor("red");
//$bar->rightMark->SetFillColor("red");
//$bar->leftMark->title->SetTextAlign('left');
$bar->leftMark->title->Center(50,150,75);
$bar->leftMark->title->SetFont(FF_ARIAL,FS_BOLD,12);
$bar->leftMark->title->SetColor("black");
$bar->leftMark->title->SetAlign('left','top');
$graph->Add($bar);
}
$graph->Stroke();
?>
I figured this out see my example and code below:Example
code:
<?php // content="text/plain; charset=utf-8"
// Gantt hour example
require_once ('jpgraph/src/jpgraph.php');
require_once ('jpgraph/src/jpgraph_gantt.php');
require_once ('jpgraph/src/jpgraph_canvas.php');
require_once ('jpgraph/src/jpgraph_canvtools.php');
require_once ('jpgraph/src/jpgraph_text.inc.php');
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
$graph = new GanttGraph();
$graph->SetMarginColor('blue:1.7');
$graph->SetColor('white');
$graph->SetBackgroundGradient('navy','white',GRAD_HOR,BGRAD_MARGIN);
$graph->scale->hour->SetBackgroundColor('lightyellow:1.5');
$graph->scale->hour->SetFont(FF_FONT1);
$graph->scale->day->SetBackgroundColor('lightgreen:1.5');
$graph->scale->day->SetFont(FF_FONT1,FS_BOLD);
$graph->title->Set("Example of hours in scale");
$graph->title->SetColor('white');
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);
$graph->ShowHeaders(GANTT_HDAY | GANTT_HHOUR);
$graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
$graph->scale->week->SetFont(FF_FONT1);
$graph->scale->hour->SetIntervall(1);
$graph->scale->hour->SetStyle(HOURSTYLE_HMAMPM);
$graph->scale->hour->grid->SetColor('lightgray');
$graph->scale->day->SetStyle(DAYSTYLE_SHORTDAYDATE3);
$data = array(
array(0,"Room 1", "2001-01-26 02:30","2001-01-26 14:00:00","Sonic"),
array(0,"Room 1", "2001-01-26 15:30","2001-01-26 19:00","SailorMoon"),
array(1,"Room 2", "2001-01-26 10:00","2001-01-26 18:00","Gundam Wing"),
array(2,"Room 3", "2001-01-26","2001-01-26 10:00","No appologies")
);
for($i=0; $i<count($data); ++$i) {
$txt = new Text();
$txt->SetScalePos($data[$i][2],$data[$i][0]);
$txt->SetMargin(50);
$txt->SetFont(FF_VERDANA,FS_BOLD,12);
$txt->SetAlign('left','center');
$txt->Set($data[$i][4]);
$txt->SetParagraphAlign('left');
//$txt->SetWordWrap(10);
$txt->SetBox('lightyellow');
$txt->SetShadow();
$graph->Add($txt);
$bar = new GanttBar(
$data[$i][0],
$data[$i][1],
$data[$i][2],
$data[$i][3],
$data[$i][4],100);
if( count($data[$i])>4 )
$bar->title->SetFont($data[$i][4],$data[$i][5],$data[$i][6] );
$bar->title->SetFont(FF_VERDANA,FS_BOLD,12);
$bar->SetPattern(BAND_RDIAG,"yellow");
$bar->SetFillColor("red");
$graph->Add($bar);
}
$graph->Stroke();
?>