← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 12068: WIP, adding data element and category option combo data attributes in section data set report

 

------------------------------------------------------------
revno: 12068
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2013-09-12 20:06:02 +0200
message:
  WIP, adding data element and category option combo data attributes in section data set report
added:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GridValue.java
modified:
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/datasetreport/impl/DefaultDataSetReportService.java
  dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/renderSectionDataSetReportForm.vm


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GridValue.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GridValue.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GridValue.java	2013-09-12 18:06:02 +0000
@@ -0,0 +1,106 @@
+package org.hisp.dhis.common;
+
+/*
+ * Copyright (c) 2004-2013, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Lars Helge Overland
+ */
+public class GridValue
+{
+    private Object value;
+    
+    private Map<Object, Object> attributes = new HashMap<Object, Object>();
+
+    // ---------------------------------------------------------------------
+    // Constructors
+    // ---------------------------------------------------------------------
+
+    public GridValue( Object value )
+    {
+        this.value = value;
+    }
+    
+    public GridValue( Object value, Map<Object, Object> attributes )
+    {
+        this.value = value;
+        this.attributes = attributes;
+    }
+    
+    // ---------------------------------------------------------------------
+    // Logic
+    // ---------------------------------------------------------------------
+
+    public void attr( Object attribute, Object value )
+    {
+        this.attributes.put( attribute, value );
+    }
+    
+    public Object attr( Object attribute )
+    {
+        return this.attributes.get( attribute );
+    }
+    
+    public boolean hasAttr( Object attribute )
+    {
+        return this.attributes.containsKey( attribute );
+    }
+
+    @Override
+    public String toString()
+    {
+        return value != null ? value.toString() : null;
+    }
+
+    // ---------------------------------------------------------------------
+    // Get and set methods
+    // ---------------------------------------------------------------------
+
+    public Object getValue()
+    {
+        return value;
+    }
+
+    public void setValue( Object value )
+    {
+        this.value = value;
+    }
+
+    public Map<Object, Object> getAttributes()
+    {
+        return attributes;
+    }
+
+    public void setAttributes( Map<Object, Object> attributes )
+    {
+        this.attributes = attributes;
+    }
+}

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/datasetreport/impl/DefaultDataSetReportService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/datasetreport/impl/DefaultDataSetReportService.java	2013-08-23 16:05:01 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/datasetreport/impl/DefaultDataSetReportService.java	2013-09-12 18:06:02 +0000
@@ -36,6 +36,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -44,6 +45,7 @@
 
 import org.hisp.dhis.common.Grid;
 import org.hisp.dhis.common.GridHeader;
+import org.hisp.dhis.common.GridValue;
 import org.hisp.dhis.common.comparator.IdentifiableObjectNameComparator;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
@@ -79,6 +81,9 @@
     private static final String DEFAULT_HEADER = "Value";
     private static final String TOTAL_HEADER = "Total";
     private static final String SPACE = " ";
+    
+    private static final String ATTR_DE = "de";
+    private static final String ATTR_CO = "co";
 
     // -------------------------------------------------------------------------
     // Dependencies
@@ -194,10 +199,14 @@
             for ( DataElement dataElement : dataElements )
             {
                 grid.addRow();
-                grid.addValue( dataElement.getName() ); // Data element name
+                grid.addValue( new GridValue( dataElement.getName() ) ); // Data element name
 
                 for ( DataElementCategoryOptionCombo optionCombo : optionCombos ) // Values
                 {
+                    Map<Object, Object> attributes = new HashMap<Object, Object>();
+                    attributes.put( ATTR_DE, dataElement.getUid() );
+                    attributes.put( ATTR_CO, optionCombo.getUid() );
+                    
                     Double value = null;
 
                     if ( selectedUnitOnly )
@@ -211,7 +220,7 @@
                         value = valueMap.get( dataElement.getUid() + SEPARATOR + optionCombo.getUid() );
                     }
 
-                    grid.addValue( value );
+                    grid.addValue( new GridValue( value, attributes ) );
                 }
 
                 if ( categoryCombo.doSubTotals() && !selectedUnitOnly ) // Sub-total
@@ -220,7 +229,7 @@
                     {
                         Double value = subTotalMap.get( dataElement.getUid() + SEPARATOR + categoryOption.getUid() );
 
-                        grid.addValue( value );
+                        grid.addValue( new GridValue( value ) );
                     }
                 }
 
@@ -228,7 +237,7 @@
                 {
                     Double value = totalMap.get( String.valueOf( dataElement.getUid() ) );
 
-                    grid.addValue( value );
+                    grid.addValue( new GridValue( value ) );
                 }
             }
 
@@ -238,6 +247,8 @@
         return grids;
     }
 
+    // TODO convert to sections and render similarily
+    
     public Grid getDefaultDataSetReport( DataSet dataSet, Period period, OrganisationUnit unit, Set<OrganisationUnitGroup> groups, boolean selectedUnitOnly, I18nFormat format, I18n i18n )
     {
         List<DataElement> dataElements = new ArrayList<DataElement>( dataSet.getDataElements() );

=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/renderSectionDataSetReportForm.vm'
--- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/renderSectionDataSetReportForm.vm	2012-09-03 19:48:33 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/renderSectionDataSetReportForm.vm	2013-09-12 18:06:02 +0000
@@ -5,6 +5,11 @@
   width: 90px;
   line-height: 170%;
 }
+
+.lAln
+{
+  text-align: left;
+}
 </style>
 
 #parse( "dhis-web-reporting/renderDataSetReportHeader.vm" )
@@ -28,7 +33,8 @@
 <tr>
 #foreach( $col in $row )
 #set( $index = ( $velocityCount - 1 ) )
-#if( $grid.getVisibleHeaders().get( $index ).meta )<td style="text-align:left">$!encoder.htmlEncode( $col )</td>#else <td>$!format.formatValue( $col )</td>#end
+#if( $grid.getVisibleHeaders().get( $index ).meta )<td class="lAln">$!encoder.htmlEncode( $col.value )</td>
+#else<td #if( $col.hasAttr( 'de' ) )data-de="$!{col.attr( 'de' )}"#end #if( $col.hasAttr( 'co' ) )data-co="$!{col.attr( 'co' )}"#end>$!format.formatValue( $col.value )</td>#end
 #end
 </tr>
 #end