Index: trunk/grails-app/controllers/ReportController.groovy
===================================================================
--- trunk/grails-app/controllers/ReportController.groovy	(revision 534)
+++ trunk/grails-app/controllers/ReportController.groovy	(revision 535)
@@ -44,10 +44,21 @@
 
     def reactiveRatio = {
-        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
 
         params.reportTitle = "Reactive Ratio Report"
+        params.logoUrl = resource(dir:'images',file:'logo.png', absolute:true)
         params.currentUser = authService.currentUser
-        params.startDate = dateUtilService.yesterday-14
-        params.endDate = dateUtilService.tomorrow+15
+
+        if(params.startDate == 'struct')
+            params.startDate = dateUtilService.makeDate(params.startDate_year, params.startDate_month, params.startDate_day)
+        else
+            params.startDate = dateUtilService.today-7
+        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
+
+        if(params.endDate == 'struct')
+            params.endDate = dateUtilService.makeDate(params.endDate_year, params.endDate_month, params.endDate_day)
+        else
+            params.endDate = dateUtilService.today
+        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
+
         def dataModel = [taskReportService.getReactiveRatio(params, RCU.getLocale(request))]
 
Index: trunk/grails-app/services/TaskReportService.groovy
===================================================================
--- trunk/grails-app/services/TaskReportService.groovy	(revision 534)
+++ trunk/grails-app/services/TaskReportService.groovy	(revision 535)
@@ -24,27 +24,16 @@
         def result = [:]
 
-        def currentUser = authService.currentUser
-        def startOfToday = dateUtilService.today
-        def startOfYesterday = dateUtilService.yesterday
-        def startOfTomorrow = dateUtilService.tomorrow
-        def oneWeekAgo = dateUtilService.oneWeekAgo
-
-        def paginateParams = [:]
-        paginateParams.max = Math.min(params?.max?.toInteger() ?: 10, paramsMax)
-        paginateParams.offset = params?.offset?.toInteger() ?: 0
-
-        def sort = "task." + (params?.sort ?: "targetStartDate")
-        def order = params?.order == "desc" ? "desc" : "asc"
-        def orderBy = " order by " + sort + ' ' + order
-
         def namedParams = [:]
         namedParams.startDate = params.startDate ?: dateUtilService.today
-        namedParams.endDate = params.endDate ?: dateUtilService.tomorrow
+        namedParams.endDate = params.endDate ?: dateUtilService.today
+        namedParams.endDate++ // Start of next day required.
         namedParams.immediateCallout = TaskType.read(1)
         namedParams.unscheduledBreakin = TaskType.read(2)
         namedParams.preventativeMaintenance = TaskType.read(4)
+        namedParams.notStarted = TaskStatus.read(1)
 
         result.taskQuery = "from Task as task \
                                         where (task.trash = false \
+                                                    and task.taskStatus != :notStarted \
                                                     and task.targetStartDate < :endDate \
                                                     and task.targetStartDate >= :startDate \
@@ -56,18 +45,25 @@
                                         )"
 
-        result.taskQuery = "select distinct task " + result.taskQuery + orderBy
-        result.taskList = Task.executeQuery(result.taskQuery, namedParams, paginateParams)
+        result.taskQuery = "select distinct task " + result.taskQuery
+        result.taskList = Task.executeQuery(result.taskQuery, namedParams)
         result.taskCount = result.taskList.size()
 
         // Counts
-        result.totalTaskOnAssetCount = 0
+        result.totalAssetsOnTasksCount = 0
         result.immediateCalloutCount = 0
         result.unscheduledBreakinCount = 0
         result.preventativeMaintenanceCount = 0
 
-        // Count the tasks performed against assets.
+        result.summaryOfCalculationMethod = 'HQL query: \n\n'
+        def tempStringArray = result.taskQuery.split('    ')
+        tempStringArray.each() {
+            if(it != '') result.summaryOfCalculationMethod += it +'\n'
+        }
+        result.summaryOfCalculationMethod += '\n'+'Calculations: '+'\n\n'
+
+        result.summaryOfCalculationMethod += 'totalAssetsOnTasksCount = A count of unique assets on each task. \n'
         result.taskList.each() { task ->
             if(task.primaryAsset) {
-                result.totalTaskOnAssetCount++
+                result.totalAssetsOnTasksCount++
                 if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
                 if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
@@ -76,5 +72,5 @@
             task.associatedAssets.each() { associatedAsset ->
                 if(associatedAsset.id != task.primaryAsset?.id) {
-                    result.totalTaskOnAssetCount++
+                    result.totalAssetsOnTasksCount++
                     if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
                     if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
@@ -88,12 +84,14 @@
         result.totalPreventativePercentage = 0
 
+        result.summaryOfCalculationMethod += 'totalPreventativeCount = unscheduledBreakinCount + preventativeMaintenanceCount\n'
         result.totalPreventativeCount = result.unscheduledBreakinCount + result.preventativeMaintenanceCount
         try {
-            result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalTaskOnAssetCount)*100
-            result.immediateCalloutPercentage = result.immediateCalloutPercentage.toInteger()
-            result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalTaskOnAssetCount)*100
-            result.totalPreventativePercentage = result.totalPreventativePercentage.toInteger()
+            result.summaryOfCalculationMethod += 'immediateCalloutPercentage = (immediateCalloutCount / totalAssetsOnTasksCount)*100 \n'
+            result.summaryOfCalculationMethod += 'totalPreventativePercentage = (totalPreventativeCount / totalAssetsOnTasksCount)*100 \n'
+            result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalAssetsOnTasksCount)*100
+            result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalAssetsOnTasksCount)*100
         }
         catch(ArithmeticException e) {
+            log.error "Could not calculate percentages: "+e
         }
 
Index: trunk/grails-app/views/appCore/start.gsp
===================================================================
--- trunk/grails-app/views/appCore/start.gsp	(revision 534)
+++ trunk/grails-app/views/appCore/start.gsp	(revision 535)
@@ -6,4 +6,5 @@
     <nav:resources override="true"/>
     <resource:tabView skin="tabviewCustom" />
+    <resource:dateChooser />
 </head>
     <body>
@@ -98,5 +99,5 @@
                                     <tr class="prop">
                                         <td valign="top" class="name">
-                                            <label>Frequent Reports:</label>
+                                            <label>Frequently Used:</label>
                                         </td>
                                         <td valign="top" class="value">
@@ -105,5 +106,9 @@
                                                                             jasper="reactiveRatio"
                                                                             name="Reactive Ratio"
-                                                                            format="PDF, HTML, XLS"/>
+                                                                            format="PDF, XLS">
+                                                <richui:dateChooser name="startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
+                                                to
+                                                <richui:dateChooser name="endDate" format="dd-MM-yyyy" value="${new Date()}" />
+                                            </g:jasperReport>
                                             <br />
                                             <g:jasperReport controller="report"
@@ -111,5 +116,5 @@
                                                                             jasper="templatePortrait"
                                                                             name="Template (Portrait)"
-                                                                            format="PDF, HTML, XLS"/>
+                                                                            format="PDF, XLS"/>
                                             <br />
                                             <g:jasperReport controller="report"
@@ -117,5 +122,5 @@
                                                                             jasper="templateLandscape"
                                                                             name="Template (Landscape)"
-                                                                            format="PDF, HTML, XLS"/>
+                                                                            format="PDF, XLS"/>
                                             <br />
                                         </td>
