📄 gantt.php
字号:
<?php
include_once( "inc/utility_all.php" );
include( "inc/jpgraph/jpgraph.php" );
include( "inc/jpgraph/jpgraph_gantt.php" );
$query = "SELECT * from PROJ_PROJECT where PROJ_ID='".$PROJ_ID."'";
$cursor = exequery( $connection, $query );
if ( $ROW = mysql_fetch_array( $cursor ) )
{
$PROJ_NAME = $ROW['PROJ_NAME'];
}
$query = "SELECT min(TASK_START_TIME) as start_date,max(TASK_END_TIME) as end_date from PROJ_TASK where PROJ_ID='".$PROJ_ID."'";
$cursor = exequery( $connection, $query );
if ( $ROW = mysql_fetch_array( $cursor ) )
{
$start_date = $ROW['start_date'];
$end_date = $ROW['end_date'];
}
( );
$graph = new GanttGraph( );
$graph->title->Set( $PROJ_NAME );
$graph->title->SetFont( FF_SIMSUN, FS_BOLD, 13 );
$graph->ShowHeaders( GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK );
$graph->scale->SetDateLocale( "chs" );
$graph->scale->week->SetStyle( WEEKSTYLE_TDOA );
if ( $start_date && $end_date )
{
$day_diff = floor( ( strtotime( $end_date ) - strtotime( $start_date ) ) / 86400 );
if ( 240 < $day_diff )
{
$graph->ShowHeaders( GANTT_HYEAR | GANTT_HMONTH );
}
else if ( 90 < $day_diff )
{
$graph->ShowHeaders( GANTT_HYEAR | GANTT_HMONTH | GANTT_HWEEK );
$graph->scale->week->SetStyle( WEEKSTYLE_WNBR );
}
if ( date( "w", strtotime( $end_date ) ) == 0 )
{
$end_date = date( "Y-m-d", strtotime( "+1 week", strtotime( $end_date ) ) );
}
$graph->SetDateRange( $start_date, $end_date );
}
$graph->scale->actinfo->vgrid->SetColor( "gray" );
$graph->scale->actinfo->SetColor( "darkgray" );
$graph->scale->actinfo->SetColTitles( array( "任务名称", "负责人", "工期", "开始日期", "结束日期" ), array( 120, 80, 30, 60, 60 ) );
$graph->scale->actinfo->SetFont( FF_SIMSUN, FS_NORMAL, 9 );
$query = "SELECT * from PROJ_TASK where PROJ_ID='".$PROJ_ID."' order by TASK_NO";
$cursor = exequery( $connection, $query );
$TASK_COUNT = 0;
while ( $ROW = mysql_fetch_array( $cursor ) )
{
++$TASK_COUNT;
$TASK_ID = $ROW['TASK_ID'];
$TASK_NO = $ROW['TASK_NO'];
$TASK_NAME = $ROW['TASK_NAME'];
$TASK_USER = $ROW['TASK_USER'];
$DETAIL_DESC = $ROW['DETAIL_DESC'];
$TASK_START_TIME = $ROW['TASK_START_TIME'];
$TASK_END_TIME = $ROW['TASK_END_TIME'];
$TASK_TIME = $ROW['TASK_TIME'];
$START_END = $ROW['START_END'];
$TASK_MILESTONE = $ROW['TASK_MILESTONE'];
$TASK_PERCENT_COMPLETE = $ROW['TASK_PERCENT_COMPLETE'];
$query1 = "SELECT USER_NAME from USER where USER_ID='".$TASK_USER."'";
$cursor1 = exequery( $connection, $query1 );
if ( $ROW = mysql_fetch_array( $cursor1 ) )
{
$TASK_USER_NAME = $ROW['USER_NAME'];
}
if ( $TASK_MILESTONE == 1 )
{
( $TASK_COUNT, array(
$TASK_NAME."(里程碑)",
$TASK_USER_NAME,
"-",
"-",
"-"
), $TASK_START_TIME, "" );
$bar = new MileStone( );
$bar->title->SetFont( FF_SIMSUN, FS_NORMAL );
$graph->Add( $bar );
}
else
{
if ( 100 < $TASK_PERCENT_COMPLETE )
{
$TASK_PERCENT_COMPLETE = 100;
}
else if ( $TASK_PERCENT_COMPLETE < 0 )
{
$TASK_PERCENT_COMPLETE = 0;
}
$caption = "[".$TASK_PERCENT_COMPLETE."%]";
( $TASK_COUNT, array(
$TASK_NAME,
$TASK_USER_NAME,
$TASK_TIME."工作日",
$TASK_START_TIME,
$TASK_END_TIME
), $TASK_START_TIME, $TASK_END_TIME );
$bar = new GanttBar( );
$bar->title->SetFont( FF_SIMSUN, FS_NORMAL );
$bar->progress->Set( $TASK_PERCENT_COMPLETE / 100 );
$bar->SetPattern( BAND_RDIAG, "blue" );
( $caption );
$bar->caption = new TextProperty( );
$bar->caption->SetFont( FF_SIMSUN, FS_NORMAL, 10 );
$bar->caption->Align( "left", "center" );
$graph->Add( $bar );
}
}
$graph->Stroke( );
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -