DigiGuide Print Template Basic Example
Below is an example of a simplified Finder report. Hyperlinks will take you to the documentation for that function or variable
//
// nColumsToPrint is the number of colums to use, can't be zero. Setting it too high will produce a large
// number of pages so beware!
var nColumsToPrint = 3;
//
// Set some constants for the report
var nProgCount = GetProgrammeCount();
var nPageWidth = GetPageWidth();
var nPageHeight = GetPageHeight();
//
// If we have multple columns then we need to get the column width
var nColumnWidth = nPageWidth / nColumsToPrint;
//
// Header template
var strHeaderTemplate = "<p><h1>Finder View: Search for " + Options.ReportDescription +
"<hr noshade width=\"100%%\">";
var strProgrammeDetailsTemplate = "<p><b>$StartTime</b> $ProgrammeName<br>" +
"Category: $CategoryName, Duration($Duration)<br>" +
"$Description</p>";
var strProgrammeDetailsTemplateWithoutDescription = "<p><b>$StartTime</b> $ProgrammeName<br>" +
"Category: $CategoryName, Duration($Duration)<br>";
//
// Could add a footer in here too...
var nPageBottom = nPageHeight;
var nCurrentX = 0;
var nCurrentY = 0;
var nTopY = 0;
var nMaxY = 0;
var nCurrentColumn = 1;
var dtDay;
//
// Just set the top and the "current" day.
if( nProgCount )
{
nTopY = PlaceHeader( 0 );
nCurrentY = nTopY;
dtDay = new Date( GetProgrammeInfo( 0, "$USStartDateTime" ) );
}
function NextColumn( nProg )
//
// Go to the next column, if we are on the last column then throw a new page
{
//
// If we are on the last column then we should do a page throw.
if( nCurrentColumn >= nColumsToPrint )
{
DebugOut( "Newpage");
NewPage();
nCurrentColumn = 0;
nTopY = PlaceHeader( nProg );
nCurrentY = nTopY;
nCurrentX = 0;
}
else
{
nCurrentY = nTopY;
nCurrentX += nColumnWidth;
nCurrentColumn++;
}
}
function PlaceHeader( nProg )
{
var strPrintHeader;
strPrintHeader = GetProgrammeInfo( 1, strHeaderTemplate );
nHeaderHeight = MeasureText( nPageWidth, strPrintHeader );
PlaceText( 0, 0, nPageWidth, strPrintHeader );
return nHeaderHeight;
}
for (var nProg = 0; nProg < nProgCount; nProg++ )
{
//
// Decide whether to show the descriptions for shows based on how they have been highlighted
// and the options the user has selected.
var strProgrammeDetails;
if( ShouldIncludeProgrammeDescription( nProg ) )
{
strProgrammeDetails = GetProgrammeInfo( nProg, strProgrammeDetailsTemplate );
}
else
{
strProgrammeDetails = GetProgrammeInfo( nProg, strProgrammeDetailsTemplateWithoutDescription );
}
var nProgHeight = MeasureText( nColumnWidth, strProgrammeDetails );
//
// If the object wont fit then try another column
if( nCurrentY + nProgHeight > nPageBottom )
{
NextColumn( nProg );
}
PlaceText( nCurrentX, nCurrentY, nColumnWidth, strProgrammeDetails );
nCurrentY += nProgHeight;
}
|