dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #05257
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1723: Show DataValueAudits on history pop-up.
------------------------------------------------------------
revno: 1723
committer: Quang <Quang@Quang-PC>
branch nick: dhis2
timestamp: Fri 2010-04-02 09:43:38 +0700
message:
Show DataValueAudits on history pop-up.
modified:
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java
dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml
dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/HistoryAction.java
dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/SaveValueAction.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/org/hisp/dhis/de/i18n_module.properties
dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties
dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.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/datavalue/hibernate/HibernateDataValueStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java 2009-12-24 14:47:25 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java 2010-04-02 02:43:38 +0000
@@ -42,6 +42,7 @@
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
import org.hisp.dhis.datavalue.DataValue;
+import org.hisp.dhis.datavalue.DataValueAuditStore;
import org.hisp.dhis.datavalue.DataValueStore;
import org.hisp.dhis.period.Period;
import org.hisp.dhis.period.PeriodStore;
@@ -49,7 +50,8 @@
/**
* @author Torgeir Lorange Ostby
- * @version $Id: HibernateDataValueStore.java 5715 2008-09-17 14:05:28Z larshelg $
+ * @version $Id: HibernateDataValueStore.java 5715 2008-09-17 14:05:28Z larshelg
+ * $
*/
public class HibernateDataValueStore
implements DataValueStore
@@ -78,7 +80,14 @@
{
this.periodStore = periodStore;
}
-
+
+ private DataValueAuditStore dataValueAuditStore;
+
+ public void setDataValueAuditStore( DataValueAuditStore dataValueAuditStore )
+ {
+ this.dataValueAuditStore = dataValueAuditStore;
+ }
+
// -------------------------------------------------------------------------
// Support methods for reloading periods
// -------------------------------------------------------------------------
@@ -134,31 +143,40 @@
public void deleteDataValue( DataValue dataValue )
{
Session session = sessionFactory.getCurrentSession();
-
+ session.beginTransaction();
+ dataValueAuditStore.deleteDataValuesByDataValue( dataValue );
session.delete( dataValue );
}
public int deleteDataValuesBySource( Source source )
{
Session session = sessionFactory.getCurrentSession();
-
+ session.beginTransaction();
+ Query queryAudit = session.createQuery( "delete DataValueAudit where dataValue.source = :source" );
+ queryAudit.setEntity( "source", source );
+ queryAudit.executeUpdate();
+
Query query = session.createQuery( "delete DataValue where source = :source" );
query.setEntity( "source", source );
-
return query.executeUpdate();
}
public int deleteDataValuesByDataElement( DataElement dataElement )
{
Session session = sessionFactory.getCurrentSession();
-
+ session.beginTransaction();
+ Query queryAudit = session.createQuery( "delete DataValueAudit where dataValue.dataElement = :dataElement" );
+ queryAudit.setEntity( "dataElement", dataElement );
+ queryAudit.executeUpdate();
+
Query query = session.createQuery( "delete DataValue where dataElement = :dataElement" );
query.setEntity( "dataElement", dataElement );
- return query.executeUpdate();
+ return query.executeUpdate();
}
- public DataValue getDataValue( Source source, DataElement dataElement, Period period, DataElementCategoryOptionCombo optionCombo )
+ public DataValue getDataValue( Source source, DataElement dataElement, Period period,
+ DataElementCategoryOptionCombo optionCombo )
{
Session session = sessionFactory.getCurrentSession();
@@ -177,20 +195,16 @@
return (DataValue) criteria.uniqueResult();
}
-
+
public String getValue( int dataElementId, int periodId, int sourceId, int categoryOptionComboId )
{
- final String sql =
- "SELECT value " +
- "FROM datavalue " +
- "WHERE dataelementid='" + dataElementId + "' " +
- "AND periodid='" + periodId + "' " +
- "AND sourceid='" + sourceId + "' " +
- "AND categoryoptioncomboid='" + categoryOptionComboId + "'";
-
+ final String sql = "SELECT value " + "FROM datavalue " + "WHERE dataelementid='" + dataElementId + "' "
+ + "AND periodid='" + periodId + "' " + "AND sourceid='" + sourceId + "' " + "AND categoryoptioncomboid='"
+ + categoryOptionComboId + "'";
+
return statementManager.getHolder().queryForString( sql );
}
-
+
// -------------------------------------------------------------------------
// Collections of DataValues
// -------------------------------------------------------------------------
@@ -269,7 +283,8 @@
}
@SuppressWarnings( "unchecked" )
- public Collection<DataValue> getDataValues( Source source, Period period, Collection<DataElement> dataElements, Collection<DataElementCategoryOptionCombo> optionCombos )
+ public Collection<DataValue> getDataValues( Source source, Period period, Collection<DataElement> dataElements,
+ Collection<DataElementCategoryOptionCombo> optionCombos )
{
Period storedPeriod = reloadPeriod( period );
@@ -290,7 +305,8 @@
}
@SuppressWarnings( "unchecked" )
- public Collection<DataValue> getDataValues( DataElement dataElement, Period period, Collection<? extends Source> sources )
+ public Collection<DataValue> getDataValues( DataElement dataElement, Period period,
+ Collection<? extends Source> sources )
{
Period storedPeriod = reloadPeriod( period );
@@ -336,7 +352,7 @@
}
@SuppressWarnings( "unchecked" )
- public Collection<DataValue> getDataValues( DataElement dataElement, DataElementCategoryOptionCombo optionCombo,
+ public Collection<DataValue> getDataValues( DataElement dataElement, DataElementCategoryOptionCombo optionCombo,
Collection<Period> periods, Collection<? extends Source> sources )
{
Collection<Period> storedPeriods = new ArrayList<Period>();
@@ -396,7 +412,7 @@
criteria.addOrder( Order.asc( "dataElement" ) );
criteria.addOrder( Order.asc( "period" ) );
criteria.addOrder( Order.asc( "source" ) );
-
+
criteria.setFirstResult( firstResult );
criteria.setMaxResults( maxResults );
}
@@ -409,7 +425,7 @@
{
Session session = sessionFactory.getCurrentSession();
- Criteria criteria = session.createCriteria( DataValue.class );
+ Criteria criteria = session.createCriteria( DataValue.class );
criteria.add( Restrictions.in( "optionCombo", optionCombos ) );
return criteria.list();
@@ -420,7 +436,7 @@
{
Session session = sessionFactory.getCurrentSession();
- Criteria criteria = session.createCriteria( DataValue.class );
+ Criteria criteria = session.createCriteria( DataValue.class );
criteria.add( Restrictions.eq( "dataElement", dataElement ) );
return criteria.list();
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2010-03-31 16:21:57 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2010-04-02 02:43:38 +0000
@@ -52,8 +52,8 @@
class="org.hisp.dhis.datavalue.hibernate.HibernateDataValueStore">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="statementManager" ref="statementManager"/>
- <property name="periodStore"
- ref="org.hisp.dhis.period.PeriodStore"/>
+ <property name="periodStore" ref="org.hisp.dhis.period.PeriodStore"/>
+ <property name="dataValueAuditStore" ref="org.hisp.dhis.datavalue.DataValueAuditStore"/>
</bean>
<bean id="org.hisp.dhis.indicator.IndicatorStore"
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml 2010-03-31 16:21:57 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml 2010-04-02 02:43:38 +0000
@@ -8,7 +8,7 @@
<generator class="native" />
</id>
- <many-to-one name="dataValue" class="org.hisp.dhis.datavalue.DataValue">
+ <many-to-one name="dataValue" class="org.hisp.dhis.datavalue.DataValue" cascade="delete">
<column name="dataelementid" />
<column name="periodid" />
=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/HistoryAction.java'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/HistoryAction.java 2009-10-18 22:44:41 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/HistoryAction.java 2010-04-02 02:43:38 +0000
@@ -27,6 +27,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.util.Collection;
import java.util.List;
import org.hisp.dhis.dataelement.DataElement;
@@ -34,6 +35,8 @@
import org.hisp.dhis.dataelement.DataElementCategoryService;
import org.hisp.dhis.dataelement.DataElementService;
import org.hisp.dhis.datavalue.DataValue;
+import org.hisp.dhis.datavalue.DataValueAudit;
+import org.hisp.dhis.datavalue.DataValueAuditService;
import org.hisp.dhis.datavalue.DataValueService;
import org.hisp.dhis.de.comments.StandardCommentsManager;
import org.hisp.dhis.de.history.DataElementHistory;
@@ -99,6 +102,13 @@
this.standardCommentsManager = standardCommentsManager;
}
+ private DataValueAuditService dataValueAuditService;
+
+ public void setDataValueAuditService( DataValueAuditService dataValueAuditService )
+ {
+ this.dataValueAuditService = dataValueAuditService;
+ }
+
// -------------------------------------------------------------------------
// Input
// -------------------------------------------------------------------------
@@ -161,6 +171,13 @@
return standardComments;
}
+ private Collection<DataValueAudit> dataValueAudits;
+
+ public Collection<DataValueAudit> getDataValueAudits()
+ {
+ return dataValueAudits;
+ }
+
// -------------------------------------------------------------------------
// Action implementation
// -------------------------------------------------------------------------
@@ -201,6 +218,12 @@
isHistoryValid = false;
}
+ /*
+ * Data Value Audit
+ */
+
+ dataValueAudits = dataValueAuditService.getDataValueAuditByDataValue( dataValue );
+
return SUCCESS;
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/SaveValueAction.java'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/SaveValueAction.java 2010-03-31 16:21:57 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/SaveValueAction.java 2010-04-02 02:43:38 +0000
@@ -198,7 +198,9 @@
else
{
LOG.debug( "Updating DataValue, value added/changed" );
-
+
+ DataValueAudit audit = new DataValueAudit(dataValue, dataValue.getValue(), storedBy, new Date(), value);
+
dataValue.setValue( value );
dataValue.setTimestamp( new Date() );
dataValue.setStoredBy( storedBy );
@@ -208,8 +210,10 @@
/*
* Add DataValueAudit
*/
- DataValueAudit audit = new DataValueAudit(dataValue, "", storedBy, new Date(), "");
- dataValueAuditService.addDataValueAudit( audit );
+ if ( value != null )
+ {
+ dataValueAuditService.addDataValueAudit( audit );
+ }
}
if ( dataValue != null )
=== 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 2010-03-31 16:21:57 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml 2010-04-02 02:43:38 +0000
@@ -259,6 +259,7 @@
<property name="dataValueService" ref="org.hisp.dhis.datavalue.DataValueService" />
<property name="standardCommentsManager"
ref="org.hisp.dhis.de.comments.StandardCommentsManager" />
+ <property name="dataValueAuditService" ref="org.hisp.dhis.datavalue.DataValueAuditService" />
</bean>
<bean id="org.hisp.dhis.de.action.MinMaxGeneratingAction" class="org.hisp.dhis.de.action.MinMaxGeneratingAction"
=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties 2010-03-17 10:19:14 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties 2010-04-02 02:43:38 +0000
@@ -120,4 +120,8 @@
no_outlier_values_found = No outlier values found.
specify_input_date = Please specify an input date
specify_valid_input_date = Please enter a valid input date
-no_outlier_values_found = No outlier values found.
\ No newline at end of file
+no_outlier_values_found = No outlier values found.
+datavalue_history = Data Value History
+change_from = change from
+to = to
+on = On
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties 2010-03-26 08:53:58 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties 2010-04-02 02:43:38 +0000
@@ -217,3 +217,138 @@
audit=Ki\u1EC3m tra gi\u00E1 tr\u1ECB d\u1EEF li\u1EC7u
multidimensional_data_entry=Nh\u1EADp d\u1EEF li\u1EC7u \u0111a chi\u1EC1u
run_validation=Ki\u1EC3m tra d\u1EEF li\u1EC7u
+#Resource generated by I18n Resource Editor
+#Fri Apr 02 09:38:23 ICT 2010
+validate=Ki\u1EC3m tra t\u00EDnh h\u1EE3p l\u1EC7
+import_from_excel=Nh\u1EADp t\u1EEB file Excel (M\u1EABu \u0111\u00E3 \u0111\u01B0\u1EE3c xu\u1EA5t ra)
+saving_comment_failed_status_code=L\u01B0u ch\u00FA th\u00EDch kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 tr\u1EA1ng th\u00E1i
+description=M\u00F4 t\u1EA3
+use_short_names=S\u1EED d\u1EE5ng t\u00EAn vi\u1EBFt t\u1EAFt
+saving_value_failed_error_code=L\u01B0u gi\u00E1 tr\u1ECB kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 l\u1ED7i
+entry=Gi\u00E1 tr\u1ECB
+datavalue_history=L\u1ECBch s\u1EED gi\u00E1 tr\u1ECB d\u1EEF li\u1EC7u
+data_set=T\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
+dataelement_comment=Ch\u00FA th\u00EDch
+confirm_undo=B\u1EA1n c\u00F3 ch\u1EAFc ch\u1EAFn b\u1EA1n s\u1EBD x\u00F3a b\u1ECF vi\u1EC7c \u0111\u0103ng k\u00ED n\u00E0y?
+successful_validation=Gi\u00E1 tr\u1ECB h\u1EE3p l\u1EC7
+data_entry=Nh\u1EADp d\u1EEF li\u1EC7u
+stored_by=Ng\u01B0\u1EDDi nh\u1EADp li\u1EC7u
+order_by_entry=Th\u1EE9 t\u1EF1 theo \u0111\u0103ng k\u00FD
+saving_value_failed_status_code=L\u01B0u gi\u00E1 tr\u1ECB kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 tr\u1EA1ng th\u00E1i
+max_limit=Gi\u1EDBi h\u1EA1n cao nh\u1EA5t
+dv_deleted=\u0110\u00E3 x\u00F3a
+delete_min_max_values=X\u00F3a gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t / l\u1EDBn nh\u1EA5t
+saving_comment_failed_error_code=L\u01B0u ch\u00FA th\u00EDch kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 l\u1ED7i
+organisation_unit=\u0110\u01A1n v\u1ECB
+value_of_data_element_greater=Gi\u00E1 tr\u1ECB c\u1EE7a th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u sau l\u1EDBn h\u01A1n gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t cho ph\u00E9p
+yes=C\u00F3
+max=L\u1EDBn nh\u1EA5t
+generate_min_max=T\u1EA1o gi\u1EDBi b\u1EA1n min/max
+date=Ng\u00E0y
+audit_operation=Lo\u1EA1i thao t\u00E1c
+validation_result=K\u1EBFt qu\u1EA3 ki\u1EC3m tra t\u00EDnh h\u1EE3p l\u1EC7
+down=Xu\u1ED1ng
+dv_updated=\u0110\u00E3 c\u1EADp nh\u1EADt
+value_of_data_element_less=Gi\u00E1 tr\u1ECB c\u1EE7a th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u th\u1EA5p h\u01A1n gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t cho ph\u00E9p
+save=L\u01B0u
+saving_minmax_failed_error_code=L\u01B0u gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t/nh\u1ECF nh\u1EA5t kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 l\u1ED7i
+min_max_limits=Gi\u1EDBi h\u1EA1n l\u1EDBn nh\u1EA5t - nh\u1ECF nh\u1EA5t
+left_description=M\u00F4 t\u1EA3 v\u1EBF tr\u00E1i
+comment=Ch\u00FA th\u00EDch
+dataelement_history=L\u1ECBch s\u1EED ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u
+minimum_must_less_than_maximum=Gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t ph\u1EA3i nh\u1ECF h\u01A1n gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t
+unsuccessful_validation=Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7. C\u1EE5 th\u1EC3 nh\u01B0 sau\:
+specify_minimum_value=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t
+equal_to=
+code=M\u00E3 ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u
+use_section_form=Nh\u1EADp theo t\u1EEB ph\u1EA7n
+change_order=\u0110\u1ED5i th\u1EE9 t\u1EF1
+specify_valid_input_date=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh m\u1ED9t ng\u00E0y nh\u1EADp h\u1EE3p l\u1EC7
+not_equal_to=
+audit_stored_by=Th\u1EF1c hi\u1EC7n b\u1EDFi
+value=Gi\u00E1 tr\u1ECB
+specify_maximum_value=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t
+operator=To\u00E1n t\u1EED
+on=V\u00E0o l\u00FAc
+no_dataelement_selected=Kh\u00F4ng th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
+min_max_values=Gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t/nh\u1ECF nh\u1EA5t
+data_element=Ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u
+please_design_a_custom_form=Vui l\u00F2ng thi\u1EBFt k\u1EBF m\u1ED9t giao di\u1EC7n cho t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u n\u00E0y\!
+data_element_order=Th\u1EE9 t\u1EF1 th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u
+up=L\u00EAn
+minimum_value_must_integer=Gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn
+yes_no=Kh\u00F4ng/c\u00F3
+close=\u0110\u00F3ng
+history_not_valid=L\u1ECBch s\u1EEF d\u1EEF li\u1EC7u kh\u00F4ng \u0111\u01B0\u1EE3c \u00E1p d\u1EE5ng cho ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u n\u00E0y\!
+save_calculated=L\u01B0u c\u00E1c gi\u00E1 tr\u1ECB \u0111\u00E3 \u0111\u01B0\u1EE3c t\u00EDnh to\u00E1n
+value_date=Gi\u00E1 tr\u1ECB ng\u00E0y th\u00E1ng
+generate_values=Ph\u00E1t sinh gi\u00E1 tr\u1ECB
+type=Ki\u1EC3u d\u1EEF li\u1EC7u
+interpolation=Ph\u00E9p n\u1ED9i suy
+no_organisationunit_selected=Kh\u00F4ng \u0111\u01A1n v\u1ECB n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
+nr=S\u1ED1
+audit_value=Ki\u1EC3m tra gi\u00E1 tr\u1ECB
+use_default_form=D\u00F9ng giao di\u1EC7n m\u1EB7c \u0111\u1ECBnh
+no=Kh\u00F4ng
+edit_min_max_for=Ch\u1EC9nh s\u1EEDa gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t / l\u1EDBn nh\u1EA5t cho
+later_periods=Th\u1EDDi k\u1EF3 sau
+min_limit=Gi\u1EDBi h\u1EA1n th\u1EA5p nh\u1EA5t
+custom_comment=Ch\u00FA th\u00EDch ng\u1EABu nhi\u00EAn
+period=Th\u1EDDi \u0111i\u1EC3m
+to=th\u00E0nh
+no_outlier_values_found=Kh\u00F4ng t\u00ECm th\u1EA5y gi\u00E1 tr\u1ECB b\u00EAn ngo\u00E0i n\u00E0o.
+calculated_data_elements=C\u00E1c th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u \u0111\u00E3 \u0111\u01B0\u1EE3c t\u00EDnh to\u00E1n
+complete=Ho\u00E0n Ch\u1EC9nh
+order_by_code=Th\u1EE9 t\u1EF1 theo m\u00E3
+name=T\u00EAn
+generate_missing_values=Ph\u00E1t sinh nh\u1EEFng gi\u00E1 tr\u1ECB ch\u01B0a c\u00F3
+timestamp=Th\u1EDDi \u0111i\u1EC3m
+use_standard_form=Nh\u1EADp theo m\u1EABu chu\u1EA9n
+change=Thay \u0111\u1ED5i
+less_than=
+dv_added=\u0110\u00E3 th\u00EAm
+data_entry_is_not_possible=Kh\u00F4ng th\u1EC3 nh\u1EADp d\u1EEF li\u1EC7u v\u00EC t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u ch\u01B0a c\u00F3 ph\u1EA7n t\u1EED.
+move=Chuy\u1EC3n
+no_option_selected=Kh\u00F4ng t\u00F9y ch\u1ECDn n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
+right_description=M\u00F4 t\u1EA3 v\u1EBF ph\u1EA3i
+move_up=Di chuy\u1EC3n l\u00EAn tr\u00EAn
+reset_order_inherit=Thi\u1EBFt l\u1EADp th\u1EE9 t\u1EF1/th\u1EEBa k\u1EBF t\u1EEB cha
+generate_missing_value=Ph\u00E1t sinh gi\u00E1 tr\u1ECB ch\u01B0a c\u00F3
+no_value=Kh\u00F4ng c\u00F3 gi\u00E1 tr\u1ECB
+expression=Bi\u1EC3u th\u1EE9c
+not_set=Ch\u01B0a thi\u1EBFt l\u1EADp
+specify_input_date=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh ng\u00E0y nh\u1EADp
+earlier_periods=Th\u1EDDi k\u1EF3 tr\u01B0\u1EDBc
+average=Trung b\u00ECnh
+saving_zero_values_unnecessary=L\u01B0u tr\u1EEF gi\u00E1 tr\u1ECB 0 th\u00EC kh\u00F4ng c\u1EA7n thi\u1EBFt theo nh\u01B0 h\u1EC7 th\u1ED1ng c\u1EE7a b\u1EA1n \u0111\u00E3 c\u00E0i \u0111\u1EB7t\!
+validation_rule=Quy lu\u1EADt ki\u1EC3m tra t\u00EDnh h\u1EE3p l\u1EC7
+text=Chu\u1ED7i
+edit_min_max=Ch\u1EC9nh s\u1EEDa gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t / l\u1EDBn nh\u1EA5t
+confirm_complete=B\u1EA1n c\u00F3 ch\u1EAFc ch\u1EAFn t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u n\u00E0y \u0111\u00E3 ho\u00E0n ch\u1EC9nh?
+audit_from=T\u1EEB
+maximum_value_must_integer=Gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn
+undo=S\u1EEDa l\u1EA1i b\u00E1o c\u00E1o
+audit_time=Th\u1EDDi gian ki\u1EC3m tra
+no_comment=Kh\u00F4ng c\u00F3 ch\u00FA th\u00EDch
+maximum=L\u1EDBn nh\u1EA5t
+value_type=Lo\u1EA1i gi\u00E1 tr\u1ECB
+change_from=thay \u0111\u1ED5i
+followup=Ti\u1EBFp theo
+the_following_values_are_outliers=C\u00E1c gi\u00E1 tr\u1ECB sau \u0111\u00E2y \u0111\u01B0\u1EE3c xem nh\u01B0 kh\u00F4ng c\u00F3 trong h\u1EC7 th\u1ED1ng.
+audit_to=\u0110\u1EBFn
+value_must_integer=Gi\u00E1 tr\u1ECB ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn
+order_by_name=Th\u1EE9 t\u1EF1 theo t\u00EAn
+select=Ch\u1ECDn
+number=S\u1ED1
+greater_than_or_equal_to=
+move_down=Di chuy\u1EC3n xu\u1ED1ng d\u01B0\u1EDBi
+export_entry_template=Xu\u1EA5t m\u00E0n h\u00ECnh nh\u1EADp li\u1EC7u ra file Excel
+greater_than=
+min=Nh\u1ECF nh\u1EA5t
+minimum=Nh\u1ECF nh\u1EA5t
+the_following_values_violates_rules=C\u00E1c gi\u00E1 tr\u1ECB sau \u0111\u00E2y kh\u00F4ng h\u1EE3p l\u1EC7
+cancel=H\u1EE7y b\u1ECF
+no_period_selected=Kh\u00F4ng th\u1EDDi \u0111i\u1EC3m n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
+audit=Ki\u1EC3m tra gi\u00E1 tr\u1ECB d\u1EEF li\u1EC7u
+multidimensional_data_entry=Nh\u1EADp d\u1EEF li\u1EC7u \u0111a chi\u1EC1u
+run_validation=Ki\u1EC3m tra d\u1EEF li\u1EC7u
=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.vm'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.vm 2010-01-29 09:05:27 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.vm 2010-04-02 02:43:38 +0000
@@ -93,6 +93,21 @@
categoryOptionComboId=${dataElementHistory.optionCombo.id}">
</td>
</tr>
+ <tr>
+ <!-- Data Value History -->
+ <td colspan="2">
+ <h4>$encoder.htmlEncode( $i18n.getString( "datavalue_history" ) )</h4>
+ #foreach( $eachDataValueAudit in $dataValueAudits )
+ <p>
+ $encoder.htmlEncode( $i18n.getString( "on" ) ) $eachDataValueAudit.timeStamp,
+ $eachDataValueAudit.storedBy
+ $encoder.htmlEncode( $i18n.getString( "change_from" ) ) $eachDataValueAudit.value
+ $encoder.htmlEncode( $i18n.getString( "to" ) ) $eachDataValueAudit.comment.
+ </p>
+ #end
+ </td>
+ </tr>
+
</table>
<p><input type="button" value="$encoder.htmlEncode( $i18n.getString( "close" ) )" onclick="window.opener.location.reload();window.close()"></p>