<& /Elements/Header, Title => $title,
Refresh => $session{'tickets_refresh_interval'} || RT->Config->Get('SearchResultsRefreshInterval', $session{'CurrentUser'} ),
&>
% if ( $m->comp_exists( '/Ticket/Elements/Tabs' ) ) {
<& /Ticket/Elements/Tabs, Title => $title, Query => $ARGS{Query}, &>
% } else {
<& /Elements/Tabs &>
%# this space is to make following elements a bit lower to avoid overlap
%#
% }
<div style="position:relative" class="gantt" id="GanttChartDIV"></div>
<script>
// here's all the html code neccessary to display the chart object
// Future idea would be to allow XML file name to be passed in and chart tasks built from file.
var g = new JSGantt.GanttChart('g',document.getElementById('GanttChartDIV'),
'<% $options{'DefaultFormat'} || 'day' %>' );
g.setShowRes(<% $options{'ShowOwner'}? 1 : 0 %>);
g.setShowDur(<% $options{'ShowDuration'}? 1 : 0 %> );
g.setShowComp(<% $options{'ShowProgress'} ? 1 : 0 %> );
g.setCaptionType('Resource'); // Set to Show Caption (None,Caption,Resource,Duration,Complete)
//var gr = new Graphics();
if( g ) {
// Parameters (pID, pName, pStart, pEnd, pColor, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption)
// You can also use the XML file parser JSGantt.parseXML('project.xml',g)
% use JSON;
% for my $id ( @$ids ) {
% my $json = to_json( [ $id, map { $info->{$id}{$_} } qw/name start end
% color link milestone owner progress has_members parent open
% depends/ ] );
% $json =~ s/^\[//; $json =~ s/\]$//;
g.AddTaskItem(new JSGantt.TaskItem( <% $json |n%> ));
% }
g.Draw();
g.DrawDependencies();
}
else {
alert("not defined");
}
</script>
<%init>
my $title = loc('JSGantt Results');
my @Tickets;
my %options;
if ( RT->Config->Get('JSGanttOptions') ) {
%options = RT->Config->Get('JSGanttOptions');
}
if ( $Ticket ) {
@Tickets = RT::Extension::JSGantt->AllRelatedTickets(
Ticket => $Ticket,
CurrentUser => $session{CurrentUser},
);
}
elsif ($Query) {
my $Tickets = RT::Tickets->new( $session{'CurrentUser'} );
$Tickets->FromSQL($Query);
if ( $OrderBy =~ /\|/ ) {
# Multiple Sorts
my @OrderBy = split /\|/, $OrderBy;
my @Order = split /\|/, $Order;
$Tickets->OrderByCols(
map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } }
( 0 .. $#OrderBy ) );
}
else {
$Tickets->OrderBy( FIELD => $OrderBy, ORDER => $Order );
}
@Tickets = @{ $Tickets->ItemsArrayRef };
}
my ( $ids, $info ) = RT::Extension::JSGantt->TicketsInfo(
Tickets => \@Tickets,
CurrentUser => $session{CurrentUser},
);
</%init>
<%args>
$Query => undef
$OrderBy => 'id'
$Order => 'ASC'
$Ticket => undef
</%args>