Changeset 535 for trunk


Ignore:
Timestamp:
May 16, 2010, 5:47:34 PM (15 years ago)
Author:
gav
Message:

Improvements to Reactive Ratio Report.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/ReportController.groovy

    r533 r535  
    4444
    4545    def reactiveRatio = {
    46         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
    4746
    4847        params.reportTitle = "Reactive Ratio Report"
     48        params.logoUrl = resource(dir:'images',file:'logo.png', absolute:true)
    4949        params.currentUser = authService.currentUser
    50         params.startDate = dateUtilService.yesterday-14
    51         params.endDate = dateUtilService.tomorrow+15
     50
     51        if(params.startDate == 'struct')
     52            params.startDate = dateUtilService.makeDate(params.startDate_year, params.startDate_month, params.startDate_day)
     53        else
     54            params.startDate = dateUtilService.today-7
     55        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
     56
     57        if(params.endDate == 'struct')
     58            params.endDate = dateUtilService.makeDate(params.endDate_year, params.endDate_month, params.endDate_day)
     59        else
     60            params.endDate = dateUtilService.today
     61        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
     62
    5263        def dataModel = [taskReportService.getReactiveRatio(params, RCU.getLocale(request))]
    5364
  • trunk/grails-app/services/TaskReportService.groovy

    r533 r535  
    2424        def result = [:]
    2525
    26         def currentUser = authService.currentUser
    27         def startOfToday = dateUtilService.today
    28         def startOfYesterday = dateUtilService.yesterday
    29         def startOfTomorrow = dateUtilService.tomorrow
    30         def oneWeekAgo = dateUtilService.oneWeekAgo
    31 
    32         def paginateParams = [:]
    33         paginateParams.max = Math.min(params?.max?.toInteger() ?: 10, paramsMax)
    34         paginateParams.offset = params?.offset?.toInteger() ?: 0
    35 
    36         def sort = "task." + (params?.sort ?: "targetStartDate")
    37         def order = params?.order == "desc" ? "desc" : "asc"
    38         def orderBy = " order by " + sort + ' ' + order
    39 
    4026        def namedParams = [:]
    4127        namedParams.startDate = params.startDate ?: dateUtilService.today
    42         namedParams.endDate = params.endDate ?: dateUtilService.tomorrow
     28        namedParams.endDate = params.endDate ?: dateUtilService.today
     29        namedParams.endDate++ // Start of next day required.
    4330        namedParams.immediateCallout = TaskType.read(1)
    4431        namedParams.unscheduledBreakin = TaskType.read(2)
    4532        namedParams.preventativeMaintenance = TaskType.read(4)
     33        namedParams.notStarted = TaskStatus.read(1)
    4634
    4735        result.taskQuery = "from Task as task \
    4836                                        where (task.trash = false \
     37                                                    and task.taskStatus != :notStarted \
    4938                                                    and task.targetStartDate < :endDate \
    5039                                                    and task.targetStartDate >= :startDate \
     
    5645                                        )"
    5746
    58         result.taskQuery = "select distinct task " + result.taskQuery + orderBy
    59         result.taskList = Task.executeQuery(result.taskQuery, namedParams, paginateParams)
     47        result.taskQuery = "select distinct task " + result.taskQuery
     48        result.taskList = Task.executeQuery(result.taskQuery, namedParams)
    6049        result.taskCount = result.taskList.size()
    6150
    6251        // Counts
    63         result.totalTaskOnAssetCount = 0
     52        result.totalAssetsOnTasksCount = 0
    6453        result.immediateCalloutCount = 0
    6554        result.unscheduledBreakinCount = 0
    6655        result.preventativeMaintenanceCount = 0
    6756
    68         // Count the tasks performed against assets.
     57        result.summaryOfCalculationMethod = 'HQL query: \n\n'
     58        def tempStringArray = result.taskQuery.split('    ')
     59        tempStringArray.each() {
     60            if(it != '') result.summaryOfCalculationMethod += it +'\n'
     61        }
     62        result.summaryOfCalculationMethod += '\n'+'Calculations: '+'\n\n'
     63
     64        result.summaryOfCalculationMethod += 'totalAssetsOnTasksCount = A count of unique assets on each task. \n'
    6965        result.taskList.each() { task ->
    7066            if(task.primaryAsset) {
    71                 result.totalTaskOnAssetCount++
     67                result.totalAssetsOnTasksCount++
    7268                if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
    7369                if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
     
    7672            task.associatedAssets.each() { associatedAsset ->
    7773                if(associatedAsset.id != task.primaryAsset?.id) {
    78                     result.totalTaskOnAssetCount++
     74                    result.totalAssetsOnTasksCount++
    7975                    if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
    8076                    if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
     
    8884        result.totalPreventativePercentage = 0
    8985
     86        result.summaryOfCalculationMethod += 'totalPreventativeCount = unscheduledBreakinCount + preventativeMaintenanceCount\n'
    9087        result.totalPreventativeCount = result.unscheduledBreakinCount + result.preventativeMaintenanceCount
    9188        try {
    92             result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalTaskOnAssetCount)*100
    93             result.immediateCalloutPercentage = result.immediateCalloutPercentage.toInteger()
    94             result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalTaskOnAssetCount)*100
    95             result.totalPreventativePercentage = result.totalPreventativePercentage.toInteger()
     89            result.summaryOfCalculationMethod += 'immediateCalloutPercentage = (immediateCalloutCount / totalAssetsOnTasksCount)*100 \n'
     90            result.summaryOfCalculationMethod += 'totalPreventativePercentage = (totalPreventativeCount / totalAssetsOnTasksCount)*100 \n'
     91            result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalAssetsOnTasksCount)*100
     92            result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalAssetsOnTasksCount)*100
    9693        }
    9794        catch(ArithmeticException e) {
     95            log.error "Could not calculate percentages: "+e
    9896        }
    9997
  • trunk/grails-app/views/appCore/start.gsp

    r533 r535  
    66    <nav:resources override="true"/>
    77    <resource:tabView skin="tabviewCustom" />
     8    <resource:dateChooser />
    89</head>
    910    <body>
     
    9899                                    <tr class="prop">
    99100                                        <td valign="top" class="name">
    100                                             <label>Frequent Reports:</label>
     101                                            <label>Frequently Used:</label>
    101102                                        </td>
    102103                                        <td valign="top" class="value">
     
    105106                                                                            jasper="reactiveRatio"
    106107                                                                            name="Reactive Ratio"
    107                                                                             format="PDF, HTML, XLS"/>
     108                                                                            format="PDF, XLS">
     109                                                <richui:dateChooser name="startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
     110                                                to
     111                                                <richui:dateChooser name="endDate" format="dd-MM-yyyy" value="${new Date()}" />
     112                                            </g:jasperReport>
    108113                                            <br />
    109114                                            <g:jasperReport controller="report"
     
    111116                                                                            jasper="templatePortrait"
    112117                                                                            name="Template (Portrait)"
    113                                                                             format="PDF, HTML, XLS"/>
     118                                                                            format="PDF, XLS"/>
    114119                                            <br />
    115120                                            <g:jasperReport controller="report"
     
    117122                                                                            jasper="templateLandscape"
    118123                                                                            name="Template (Landscape)"
    119                                                                             format="PDF, HTML, XLS"/>
     124                                                                            format="PDF, XLS"/>
    120125                                            <br />
    121126                                        </td>
  • trunk/web-app/reports/reactiveRatio.jrxml

    r533 r535  
    11<?xml version="1.0" encoding="UTF-8"?>
    2 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="name" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="782" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20">
     2<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reportName" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="782" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20" isSummaryNewPage="true">
    33        <property name="ireport.scriptlethandling" value="0"/>
    44        <property name="ireport.encoding" value="UTF-8"/>
    55        <property name="ireport.zoom" value="1.0"/>
    66        <property name="ireport.x" value="0"/>
    7         <property name="ireport.y" value="0"/>
     7        <property name="ireport.y" value="405"/>
    88        <import value="java.util.*"/>
    99        <import value="net.sf.jasperreports.engine.*"/>
     
    2929                </box>
    3030        </style>
     31        <style name="table 1" isDefault="false">
     32                <box>
     33                        <pen lineWidth="1.0" lineColor="#000000"/>
     34                </box>
     35        </style>
     36        <style name="table 1_TH" isDefault="false" mode="Opaque" backcolor="#F0F8FF">
     37                <box>
     38                        <pen lineWidth="0.5" lineColor="#000000"/>
     39                </box>
     40        </style>
     41        <style name="table 1_CH" isDefault="false" mode="Opaque" backcolor="#BFE1FF">
     42                <box>
     43                        <pen lineWidth="0.5" lineColor="#000000"/>
     44                </box>
     45        </style>
     46        <style name="table 1_TD" isDefault="false" mode="Opaque" backcolor="#FFFFFF">
     47                <box>
     48                        <pen lineWidth="0.5" lineColor="#000000"/>
     49                </box>
     50        </style>
     51        <style name="Crosstab Data Text" isDefault="false" hAlign="Center"/>
    3152        <subDataset name="dataset1"/>
    3253        <subDataset name="Table Dataset 1"/>
     54        <subDataset name="Table Dataset 2"/>
     55        <subDataset name="dataset2"/>
    3356        <parameter name="reportTitle" class="java.lang.String"/>
    3457        <parameter name="currentUser" class="java.lang.String"/>
    35         <field name="immediateCalloutPercentage" class="java.lang.Integer"/>
    36         <field name="totalPreventativePercentage" class="java.lang.Integer"/>
     58        <parameter name="logoUrl" class="java.lang.String"/>
     59        <parameter name="startDateString" class="java.lang.String"/>
     60        <parameter name="endDateString" class="java.lang.String"/>
     61        <field name="immediateCalloutPercentage" class="java.math.BigDecimal"/>
     62        <field name="totalPreventativePercentage" class="java.math.BigDecimal"/>
     63        <field name="immediateCalloutCount" class="java.lang.Integer"/>
     64        <field name="totalAssetsOnTasksCount" class="java.lang.Integer"/>
     65        <field name="totalPreventativeCount" class="java.lang.Integer"/>
     66        <field name="unscheduledBreakinCount" class="java.lang.Integer"/>
     67        <field name="preventativeMaintenanceCount" class="java.lang.Integer"/>
     68        <field name="taskQuery" class="java.lang.String"/>
     69        <field name="summaryOfCalculationMethod" class="java.lang.String"/>
    3770        <background>
    3871                <band splitType="Stretch"/>
    3972        </background>
    4073        <pageHeader>
    41                 <band height="60" splitType="Stretch">
    42                         <textField>
    43                                 <reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
    44                                 <textElement textAlignment="Center" markup="none">
     74                <band height="121" splitType="Stretch">
     75                        <textField>
     76                                <reportElement key="staticText-1" x="0" y="57" width="340" height="30"/>
     77                                <textElement textAlignment="Center" verticalAlignment="Top" markup="none">
    4578                                        <font size="20"/>
    4679                                </textElement>
    4780                                <textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
    4881                        </textField>
     82                        <image>
     83                                <reportElement x="0" y="0" width="340" height="57"/>
     84                                <imageExpression class="java.net.URL"><![CDATA[new URL($P{logoUrl})]]></imageExpression>
     85                        </image>
     86                        <textField pattern="dd-MMM-yyyy" isBlankWhenNull="true">
     87                                <reportElement x="0" y="87" width="340" height="20"/>
     88                                <textElement textAlignment="Center" verticalAlignment="Middle" markup="none"/>
     89                                <textFieldExpression class="java.lang.String"><![CDATA[$P{startDateString}+" to "+$P{endDateString}]]></textFieldExpression>
     90                        </textField>
    4991                </band>
    5092        </pageHeader>
    5193        <columnHeader>
    52                 <band height="17" splitType="Stretch"/>
     94                <band splitType="Stretch"/>
    5395        </columnHeader>
    5496        <detail>
    55                 <band height="129" splitType="Stretch">
    56                         <textField>
     97                <band height="394" splitType="Stretch">
     98                        <textField isBlankWhenNull="true">
     99                                <reportElement x="0" y="40" width="157" height="20"/>
     100                                <textElement verticalAlignment="Middle" markup="none"/>
     101                                <textFieldExpression class="java.lang.String"><![CDATA["Immediate Callout: "]]></textFieldExpression>
     102                        </textField>
     103                        <textField isBlankWhenNull="true">
     104                                <reportElement x="0" y="60" width="157" height="20"/>
     105                                <textElement verticalAlignment="Middle" markup="none"/>
     106                                <textFieldExpression class="java.lang.String"><![CDATA["Total Preventative: "]]></textFieldExpression>
     107                        </textField>
     108                        <textField pattern="#,##0.00 %" isBlankWhenNull="true">
     109                                <reportElement x="157" y="40" width="79" height="20"/>
     110                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     111                                <textFieldExpression class="java.lang.String"><![CDATA[$F{immediateCalloutPercentage}.setScale(2, RoundingMode.HALF_UP)]]></textFieldExpression>
     112                        </textField>
     113                        <textField isBlankWhenNull="true">
     114                                <reportElement x="157" y="60" width="79" height="20"/>
     115                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     116                                <textFieldExpression class="java.lang.String"><![CDATA[$F{totalPreventativePercentage}.setScale(2, RoundingMode.HALF_UP)]]></textFieldExpression>
     117                        </textField>
     118                        <textField pattern="###0.00" isBlankWhenNull="true">
     119                                <reportElement x="236" y="40" width="117" height="20"/>
     120                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     121                                <textFieldExpression class="java.lang.String"><![CDATA[$F{immediateCalloutCount}]]></textFieldExpression>
     122                        </textField>
     123                        <textField isBlankWhenNull="true">
     124                                <reportElement x="236" y="60" width="117" height="20"/>
     125                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     126                                <textFieldExpression class="java.lang.String"><![CDATA[$F{totalPreventativeCount}]]></textFieldExpression>
     127                        </textField>
     128                        <textField pattern="###0.00" isBlankWhenNull="true">
     129                                <reportElement x="0" y="80" width="157" height="20"/>
     130                                <textElement verticalAlignment="Middle"/>
     131                                <textFieldExpression class="java.lang.String"><![CDATA["Total: "]]></textFieldExpression>
     132                        </textField>
     133                        <textField isBlankWhenNull="true">
     134                                <reportElement x="157" y="80" width="79" height="20"/>
     135                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     136                        </textField>
     137                        <textField isBlankWhenNull="true">
     138                                <reportElement x="236" y="80" width="117" height="20"/>
     139                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     140                                <textFieldExpression class="java.lang.String"><![CDATA[$F{totalAssetsOnTasksCount}]]></textFieldExpression>
     141                        </textField>
     142                        <line>
     143                                <reportElement x="0" y="100" width="353" height="1" forecolor="#999999"/>
     144                        </line>
     145                        <line>
     146                                <reportElement x="0" y="79" width="353" height="1" forecolor="#999999"/>
     147                        </line>
     148                        <line>
     149                                <reportElement x="0" y="60" width="353" height="1" forecolor="#999999"/>
     150                        </line>
     151                        <line>
     152                                <reportElement x="0" y="39" width="353" height="1" forecolor="#999999"/>
     153                        </line>
     154                        <textField isBlankWhenNull="true">
     155                                <reportElement x="0" y="20" width="157" height="20"/>
     156                                <textElement verticalAlignment="Middle" markup="none"/>
     157                        </textField>
     158                        <textField pattern="###0.00" isBlankWhenNull="true">
     159                                <reportElement x="236" y="20" width="117" height="20"/>
     160                                <textElement verticalAlignment="Middle"/>
     161                        </textField>
     162                        <textField pattern="#,##0.00 %" isBlankWhenNull="true">
     163                                <reportElement x="157" y="20" width="79" height="20"/>
     164                                <textElement verticalAlignment="Middle"/>
     165                        </textField>
     166                        <line>
     167                                <reportElement x="0" y="20" width="353" height="1" forecolor="#999999"/>
     168                        </line>
     169                        <pie3DChart>
     170                                <chart theme="default">
     171                                        <reportElement x="426" y="0" width="356" height="197"/>
     172                                        <chartTitle/>
     173                                        <chartSubtitle/>
     174                                        <chartLegend/>
     175                                </chart>
     176                                <pieDataset>
     177                                        <pieSeries>
     178                                                <keyExpression><![CDATA["Immediate"]]></keyExpression>
     179                                                <valueExpression><![CDATA[$F{immediateCalloutPercentage}]]></valueExpression>
     180                                                <labelExpression><![CDATA[$F{immediateCalloutPercentage}.setScale(0, RoundingMode.HALF_UP)]]></labelExpression>
     181                                        </pieSeries>
     182                                        <pieSeries>
     183                                                <keyExpression><![CDATA["Preventative"]]></keyExpression>
     184                                                <valueExpression><![CDATA[$F{totalPreventativePercentage}]]></valueExpression>
     185                                                <labelExpression><![CDATA[$F{totalPreventativePercentage}.setScale(0, RoundingMode.HALF_UP)]]></labelExpression>
     186                                        </pieSeries>
     187                                </pieDataset>
     188                                <pie3DPlot depthFactor="0.1" isCircular="false">
     189                                        <plot>
     190                                                <seriesColor seriesOrder="0" color="#FF0000"/>
     191                                                <seriesColor seriesOrder="1" color="#00CC00"/>
     192                                                <seriesColor seriesOrder="2" color="#FFFF66"/>
     193                                        </plot>
     194                                        <itemLabel color="#000000" backgroundColor="#FFFFFF"/>
     195                                </pie3DPlot>
     196                        </pie3DChart>
     197                        <textField isBlankWhenNull="true">
     198                                <reportElement x="236" y="257" width="117" height="20"/>
     199                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     200                                <textFieldExpression class="java.lang.String"><![CDATA[$F{preventativeMaintenanceCount}]]></textFieldExpression>
     201                        </textField>
     202                        <textField isBlankWhenNull="true">
     203                                <reportElement x="236" y="277" width="117" height="20"/>
     204                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     205                                <textFieldExpression><![CDATA[$F{totalPreventativeCount}]]></textFieldExpression>
     206                        </textField>
     207                        <textField isBlankWhenNull="true">
     208                                <reportElement x="157" y="277" width="79" height="20"/>
     209                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     210                        </textField>
     211                        <line>
     212                                <reportElement x="0" y="297" width="353" height="1" forecolor="#999999"/>
     213                        </line>
     214                        <textField isBlankWhenNull="true">
     215                                <reportElement x="0" y="257" width="157" height="20"/>
     216                                <textElement verticalAlignment="Middle" markup="none"/>
     217                                <textFieldExpression><![CDATA["Preventative Maintenance"]]></textFieldExpression>
     218                        </textField>
     219                        <textField pattern="#,##0.00 %" isBlankWhenNull="true">
     220                                <reportElement x="157" y="237" width="79" height="20"/>
     221                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     222                        </textField>
     223                        <textField pattern="###0.00" isBlankWhenNull="true">
     224                                <reportElement x="236" y="217" width="117" height="20"/>
     225                                <textElement verticalAlignment="Middle"/>
     226                        </textField>
     227                        <line>
     228                                <reportElement x="0" y="257" width="353" height="1" forecolor="#999999"/>
     229                        </line>
     230                        <textField pattern="###0.00" isBlankWhenNull="true">
     231                                <reportElement x="236" y="197" width="117" height="20"/>
     232                                <textElement verticalAlignment="Middle"/>
     233                                <textFieldExpression><![CDATA["Count (Assets on Tasks)"]]></textFieldExpression>
     234                        </textField>
     235                        <textField isBlankWhenNull="true">
     236                                <reportElement x="0" y="237" width="157" height="20"/>
     237                                <textElement verticalAlignment="Middle" markup="none"/>
     238                                <textFieldExpression class="java.lang.String"><![CDATA["Unscheduled Breaking: "]]></textFieldExpression>
     239                        </textField>
     240                        <line>
     241                                <reportElement x="0" y="276" width="353" height="1" forecolor="#999999"/>
     242                        </line>
     243                        <pie3DChart>
     244                                <chart>
     245                                        <reportElement x="426" y="197" width="356" height="197"/>
     246                                        <chartTitle/>
     247                                        <chartSubtitle/>
     248                                        <chartLegend/>
     249                                </chart>
     250                                <pieDataset>
     251                                        <pieSeries>
     252                                                <keyExpression><![CDATA["Immediate"]]></keyExpression>
     253                                                <valueExpression><![CDATA[$F{immediateCalloutCount}]]></valueExpression>
     254                                                <labelExpression><![CDATA[$F{immediateCalloutCount}]]></labelExpression>
     255                                        </pieSeries>
     256                                        <pieSeries>
     257                                                <keyExpression><![CDATA["Preventative Maintenance"]]></keyExpression>
     258                                                <valueExpression><![CDATA[$F{preventativeMaintenanceCount}]]></valueExpression>
     259                                                <labelExpression><![CDATA[$F{preventativeMaintenanceCount}]]></labelExpression>
     260                                        </pieSeries>
     261                                        <pieSeries>
     262                                                <keyExpression><![CDATA["Unscheduled Breakin"]]></keyExpression>
     263                                                <valueExpression><![CDATA[$F{unscheduledBreakinCount}]]></valueExpression>
     264                                                <labelExpression><![CDATA[$F{unscheduledBreakinCount}]]></labelExpression>
     265                                        </pieSeries>
     266                                </pieDataset>
     267                                <pie3DPlot depthFactor="0.1" isCircular="false">
     268                                        <plot>
     269                                                <seriesColor seriesOrder="0" color="#FF0000"/>
     270                                                <seriesColor seriesOrder="1" color="#00CC00"/>
     271                                                <seriesColor seriesOrder="2" color="#FFFF66"/>
     272                                        </plot>
     273                                        <itemLabel color="#000000" backgroundColor="#FFFFFF"/>
     274                                </pie3DPlot>
     275                        </pie3DChart>
     276                        <textField isBlankWhenNull="true">
     277                                <reportElement x="0" y="217" width="157" height="20"/>
     278                                <textElement verticalAlignment="Middle" markup="none"/>
     279                        </textField>
     280                        <textField pattern="###0.00" isBlankWhenNull="true">
     281                                <reportElement x="236" y="237" width="117" height="20"/>
     282                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     283                                <textFieldExpression class="java.lang.String"><![CDATA[$F{unscheduledBreakinCount}]]></textFieldExpression>
     284                        </textField>
     285                        <line>
     286                                <reportElement x="0" y="217" width="353" height="1" forecolor="#999999"/>
     287                        </line>
     288                        <textField pattern="#,##0.00 %" isBlankWhenNull="true">
     289                                <reportElement x="157" y="217" width="79" height="20"/>
     290                                <textElement verticalAlignment="Middle"/>
     291                        </textField>
     292                        <line>
     293                                <reportElement x="0" y="236" width="353" height="1" forecolor="#999999"/>
     294                        </line>
     295                        <textField isBlankWhenNull="true">
     296                                <reportElement x="157" y="257" width="79" height="20"/>
     297                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
     298                        </textField>
     299                        <textField isBlankWhenNull="true">
     300                                <reportElement x="0" y="197" width="157" height="20"/>
     301                                <textElement verticalAlignment="Middle" markup="none"/>
     302                                <textFieldExpression><![CDATA["Description"]]></textFieldExpression>
     303                        </textField>
     304                        <textField pattern="#,##0.00 %" isBlankWhenNull="true">
     305                                <reportElement x="157" y="197" width="79" height="20"/>
     306                                <textElement verticalAlignment="Middle"/>
     307                        </textField>
     308                        <textField pattern="###0.00" isBlankWhenNull="true">
     309                                <reportElement x="0" y="277" width="157" height="20"/>
     310                                <textElement verticalAlignment="Middle"/>
     311                                <textFieldExpression class="java.lang.String"><![CDATA["Total Preventative: "]]></textFieldExpression>
     312                        </textField>
     313                        <textField pattern="#,##0.00 %" isBlankWhenNull="true">
     314                                <reportElement x="157" y="0" width="79" height="20"/>
     315                                <textElement verticalAlignment="Middle"/>
     316                                <textFieldExpression><![CDATA["Percentage (%)"]]></textFieldExpression>
     317                        </textField>
     318                        <textField isBlankWhenNull="true">
    57319                                <reportElement x="0" y="0" width="157" height="20"/>
    58                                 <textElement markup="none"/>
    59                                 <textFieldExpression class="java.lang.String"><![CDATA["Immediate Callout (%): "]]></textFieldExpression>
    60                         </textField>
    61                         <textField>
    62                                 <reportElement x="0" y="20" width="157" height="20"/>
    63                                 <textElement markup="none"/>
    64                                 <textFieldExpression class="java.lang.String"><![CDATA["Total Preventative (%): "]]></textFieldExpression>
    65                         </textField>
    66                         <textField pattern="###0.00">
    67                                 <reportElement x="157" y="0" width="200" height="20"/>
    68                                 <textElement/>
    69                                 <textFieldExpression class="java.lang.String"><![CDATA[$F{immediateCalloutPercentage}]]></textFieldExpression>
    70                         </textField>
    71                         <textField>
    72                                 <reportElement x="157" y="20" width="200" height="20"/>
    73                                 <textElement/>
    74                                 <textFieldExpression class="java.lang.String"><![CDATA[$F{totalPreventativePercentage}]]></textFieldExpression>
     320                                <textElement verticalAlignment="Middle" markup="none"/>
     321                                <textFieldExpression><![CDATA["Description"]]></textFieldExpression>
     322                        </textField>
     323                        <textField pattern="###0.00" isBlankWhenNull="true">
     324                                <reportElement x="236" y="0" width="117" height="20"/>
     325                                <textElement verticalAlignment="Middle"/>
     326                                <textFieldExpression><![CDATA["Count (Assets on Tasks)"]]></textFieldExpression>
    75327                        </textField>
    76328                </band>
    77329        </detail>
    78330        <columnFooter>
    79                 <band height="142" splitType="Stretch"/>
     331                <band splitType="Stretch"/>
    80332        </columnFooter>
    81333        <pageFooter>
     
    113365                </band>
    114366        </pageFooter>
     367        <summary>
     368                <band height="555">
     369                        <textField>
     370                                <reportElement key="staticText-1" x="221" y="0" width="340" height="30"/>
     371                                <textElement textAlignment="Center" verticalAlignment="Top" markup="none">
     372                                        <font size="20"/>
     373                                </textElement>
     374                                <textFieldExpression class="java.lang.String"><![CDATA["Summary of Calculation Method"]]></textFieldExpression>
     375                        </textField>
     376                        <textField>
     377                                <reportElement x="0" y="30" width="782" height="311"/>
     378                                <textElement/>
     379                                <textFieldExpression class="java.lang.String"><![CDATA[$F{summaryOfCalculationMethod}]]></textFieldExpression>
     380                        </textField>
     381                </band>
     382        </summary>
    115383        <noData>
    116384                <band height="85" splitType="Stretch">
Note: See TracChangeset for help on using the changeset viewer.