← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 4121: Separated loading of data entry forms and data values into two actions

 

Merge authors:
  Lars Helge Øverland (larshelge)
------------------------------------------------------------
revno: 4121 [merge]
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2011-07-12 17:55:55 +0200
message:
  Separated loading of data entry forms and data values into two actions
added:
  dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/responseDataValues.vm
modified:
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java
  dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/defaultForm.vm
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/sectionForm.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
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java	2011-07-12 13:49:47 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java	2011-07-12 15:55:08 +0000
@@ -289,7 +289,7 @@
                 String dataElementValue = getValue( dataValues, dataElementId, optionComboId );
 
                 // -------------------------------------------------------------
-                // Insert data value for data element in output code
+                // Insert data value for data element in output code for boolean
                 // -------------------------------------------------------------
 
                 if ( dataElement.getType().equals( DataElement.VALUE_TYPE_BOOL ) )
@@ -297,17 +297,6 @@
                     inputHtml = inputHtml.replace( "input", "select" );
                     inputHtml = inputHtml.replaceAll( "value=\".*?\"", "" );
                 }
-                else
-                {
-                    if ( inputHtml.contains( EMPTY_VALUE_TAG ) )
-                    {
-                        inputHtml = inputHtml.replace( EMPTY_VALUE_TAG, "value=\"" + dataElementValue + "\"" );
-                    }
-                    else
-                    {
-                        inputHtml += "value=\"" + dataElementValue + "\"";
-                    }
-                }
 
                 // -------------------------------------------------------------
                 // Insert title info

=== added file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java	2011-07-12 14:44:28 +0000
@@ -0,0 +1,90 @@
+package org.hisp.dhis.de.action;
+
+/*
+ * Copyright (c) 2004-2010, 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.Collection;
+
+import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.datavalue.DataValue;
+import org.hisp.dhis.datavalue.DataValueService;
+import org.hisp.dhis.de.state.SelectedStateManager;
+import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.hisp.dhis.period.Period;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Lars Helge Overland
+ */
+public class GetDataValuesForDataSetAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private DataValueService dataValueService;
+
+    public void setDataValueService( DataValueService dataValueService )
+    {
+        this.dataValueService = dataValueService;
+    }
+
+    private SelectedStateManager selectedStateManager;
+
+    public void setSelectedStateManager( SelectedStateManager selectedStateManager )
+    {
+        this.selectedStateManager = selectedStateManager;
+    }
+
+    // -------------------------------------------------------------------------
+    // Output
+    // -------------------------------------------------------------------------
+
+    private Collection<DataValue> dataValues;
+
+    public Collection<DataValue> getDataValues()
+    {
+        return dataValues;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action implementation
+    // -------------------------------------------------------------------------
+
+    public String execute()
+    {
+        Period period = selectedStateManager.getSelectedPeriod();
+        DataSet dataSet = selectedStateManager.getSelectedDataSet();
+        OrganisationUnit unit = selectedStateManager.getSelectedOrganisationUnit();
+        
+        dataValues = dataValueService.getDataValues( unit, period, dataSet.getDataElements() );
+        
+        return SUCCESS;
+    }
+}

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml	2011-06-27 10:39:01 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml	2011-07-12 14:44:28 +0000
@@ -19,7 +19,13 @@
     <property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
   </bean>
 
-	<!-- Actions -->
+  <!-- Actions -->
+
+  <bean id="org.hisp.dhis.de.action.GetDataValuesForDataSetAction" class="org.hisp.dhis.de.action.GetDataValuesForDataSetAction"
+	scope="prototype">
+    <property name="selectedStateManager" ref="org.hisp.dhis.de.state.SelectedStateManager" />
+	<property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
+  </bean>
 
   <bean id="org.hisp.dhis.de.action.LoadOrganisationUnitAction" class="org.hisp.dhis.de.action.LoadOrganisationUnitAction"
     scope="prototype">

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml	2011-06-23 08:20:44 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml	2011-07-12 14:44:28 +0000
@@ -12,6 +12,10 @@
       <result name="success" type="redirect">displayForm.action</result>
     </action>
 
+    <action name="getDataValues" class="org.hisp.dhis.de.action.GetDataValuesForDataSetAction">
+	  <result name="success" type="velocity-json">/dhis-web-dataentry/responseDataValues.vm</result>
+	</action>
+
     <action name="displayForm" class="org.hisp.dhis.de.action.LoadOrganisationUnitAction">
       <interceptor-ref name="organisationUnitTreeStack" />
       <result name="success" type="velocity">/main.vm</result>

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/defaultForm.vm'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/defaultForm.vm	2011-07-12 13:49:47 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/defaultForm.vm	2011-07-12 15:55:08 +0000
@@ -66,7 +66,7 @@
 		      <option value="false" #if( $dataValue.value == "false" ) selected="selected" #end>$i18n.getString( "no" )</option>
 		    </select>
 	    #else
-		    <input name="entryfield" id="$dataEntryId" type="text" value="$!encoder.htmlEncode( $dataValue.value )" #if( $auth.hasAccess( "dhis-web-dataentry", "saveValue") ) onchange="saveVal(${dataElement.id},${optionCombo.id})" ondblclick="viewHist(${dataElement.id},${optionCombo.id})" #else disabled="disabled"#end onkeyup="return keyPress(event,this)" class="entryField #if( $minMaxError ) minmax#end" tabindex="$tabIndex" #if( $locked )disabled="disabled"#end>
+		    <input name="entryfield" id="$dataEntryId" type="text" #if( $auth.hasAccess( "dhis-web-dataentry", "saveValue") ) onchange="saveVal(${dataElement.id},${optionCombo.id})" ondblclick="viewHist(${dataElement.id},${optionCombo.id})" #else disabled="disabled"#end onkeyup="return keyPress(event,this)" class="entryField #if( $minMaxError ) minmax#end" tabindex="$tabIndex" #if( $locked )disabled="disabled"#end>
 	    #end
 	    </td>
 	    #set( $tabIndex = $tabIndex + 1 )

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js	2011-07-11 10:41:54 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js	2011-07-12 15:55:08 +0000
@@ -53,7 +53,7 @@
             if ( json.periodValid )
             {
                 showLoader();
-                $( '#contentDiv' ).load( 'select.action', displayEntryFormCompleted );
+                $( '#contentDiv' ).load( 'select.action', loadDataValues );
             }
         } else
         {
@@ -146,7 +146,7 @@
             {
                 showLoader();
                 $( '#selectedPeriodIndex' ).val( periodIndex );
-                $( '#contentDiv' ).load( 'select.action', setDisplayModes );
+                $( '#contentDiv' ).load( 'select.action', loadDataValuesAndDisplayModes );
             } else
             {
                 clearEntryForm();
@@ -165,7 +165,7 @@
 
     var url = 'select.action?displayMode=' + $( "input[name='displayMode']:checked" ).val();
 
-    $( '#contentDiv' ).load( url, displayEntryFormCompleted );
+    $( '#contentDiv' ).load( url, loadDataValues );
 }
 
 // -----------------------------------------------------------------------------
@@ -179,27 +179,50 @@
     $( '#currentPeriod' ).html( periodName );
 
     var periodIndex = $( '#selectedPeriodIndex' ).val();
-
+    
     if ( periodIndex && periodIndex != -1 )
     {
         showLoader();
         var url = 'select.action?selectedPeriodIndex=' + periodIndex;
-        $( '#contentDiv' ).load( url, setDisplayModes );
+        $( '#contentDiv' ).load( url, loadDataValuesAndDisplayModes );
     }
 }
 
-function displayEntryFormCompleted()
-{
-    addEventListeners();
-    hideLoader();
-    enable( 'validationButton' );
-    updateIndicators();
+// -----------------------------------------------------------------------------
+// Form
+// -----------------------------------------------------------------------------
+
+function loadDataValues()
+{
+	insertDataValues();
+	displayEntryFormCompleted();
+}
+
+function loadDataValuesAndDisplayModes()
+{
+	insertDataValues();
+	setDisplayModes();
+	displayEntryFormCompleted();
+}
+
+function insertDataValues()
+{
+	$.getJSON( 'getDataValues.action', function( json )
+	{
+		$.each( json.dataValues, function( i, value )
+		{
+			var fieldId = '#' + value.id;
+			
+			if ( $( fieldId ) )
+			{
+				$( fieldId ).val( value.val );
+			}
+		} );
+	} );
 }
 
 function setDisplayModes()
 {
-    displayEntryFormCompleted();
-
     $.getJSON( 'loadDisplayModes.action', function( json )
     {
         $( '#displayModeCustom' ).removeAttr( 'disabled' );
@@ -213,10 +236,12 @@
         if ( json.displayMode == 'customform' )
         {
             $( '#displayModeCustom' ).attr( 'checked', 'checked' );
-        } else if ( json.displayMode == 'sectionform' )
+        } 
+        else if ( json.displayMode == 'sectionform' )
         {
             $( '#displayModeSection' ).attr( 'checked', 'checked' );
-        } else
+        } 
+        else
         {
             $( '#displayModeDefault' ).attr( 'checked', 'checked' );
         }
@@ -232,6 +257,14 @@
     } );
 }
 
+function displayEntryFormCompleted()
+{
+    addEventListeners();
+    hideLoader();
+    enable( 'validationButton' );
+    updateIndicators();
+}
+
 function valueFocus( e )
 {
 	var id = e.target.id;

=== added file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/responseDataValues.vm'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/responseDataValues.vm	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/responseDataValues.vm	2011-07-12 14:44:28 +0000
@@ -0,0 +1,8 @@
+#set( $size = $dataValues.size() )
+{ "dataValues": [
+#foreach( $value in $dataValues )
+{
+  "id":"${value.dataElement.id}-${value.optionCombo.id}-val",
+  "val":"${value.value}"
+}#if( $velocityCount < $size ),#end
+#end ] }

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/sectionForm.vm'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/sectionForm.vm	2011-07-12 13:49:47 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/sectionForm.vm	2011-07-12 15:55:08 +0000
@@ -80,7 +80,7 @@
           <option value="false" #if( $dataValue.value == "false" ) selected="selected" #end>$i18n.getString( "no" )</option>
         </select>
         #else
-        <input name="entryfield" id="$dataEntryId" type="text" value="$!encoder.htmlEncode( $dataValue.value )" #if( $auth.hasAccess( "dhis-web-dataentry", "saveValue") ) onchange="saveVal(${dataElement.id},${optionCombo.id})" ondblclick="viewHist(${dataElement.id},${optionCombo.id})" #else disabled="disabled"#end onkeyup="return keyPress(event,this)" class="entryField #if( $minMaxError ) minmax#elseif( $locked || $greyedField ) grey#end" tabindex="$tabIndex" #if( $locked || $greyedField )disabled="disabled"#end>
+        <input name="entryfield" id="$dataEntryId" type="text" #if( $auth.hasAccess( "dhis-web-dataentry", "saveValue") ) onchange="saveVal(${dataElement.id},${optionCombo.id})" ondblclick="viewHist(${dataElement.id},${optionCombo.id})" #else disabled="disabled"#end onkeyup="return keyPress(event,this)" class="entryField #if( $minMaxError ) minmax#elseif( $locked || $greyedField ) grey#end" tabindex="$tabIndex" #if( $locked || $greyedField )disabled="disabled"#end>
         #end
       </td>
       #set( $tabIndex = $tabIndex + 1 )