dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #11099
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 3109: Applied patch from Hieu. Implements data set assignment editor. Great work.
------------------------------------------------------------
revno: 3109
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2011-03-21 15:30:16 +0100
message:
Applied patch from Hieu. Implements data set assignment editor. Great work.
added:
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/DefinedAssociationsEditorAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/ShowedAssociationsEditorAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/htmlGrid.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/javascript/editor.js
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/loadIcon.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/viewEditorForm.vm
modified:
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module.properties
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module_vi_VN.properties
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/struts.xml
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/index.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/menu.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 directory 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor'
=== added file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/DefinedAssociationsEditorAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/DefinedAssociationsEditorAction.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/DefinedAssociationsEditorAction.java 2011-03-21 14:30:16 +0000
@@ -0,0 +1,138 @@
+package org.hisp.dhis.dataset.action.editor;
+
+/*
+ * Copyright (c) 2004-2011, 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 org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.dataset.DataSetService;
+import org.hisp.dhis.organisationunit.OrganisationUnitService;
+import org.hisp.dhis.source.Source;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Dang Duy Hieu
+ * @version $Id$
+ */
+public class DefinedAssociationsEditorAction
+ implements Action
+{
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+
+ private DataSetService dataSetService;
+
+ public void setDataSetService( DataSetService dataSetService )
+ {
+ this.dataSetService = dataSetService;
+ }
+
+ private OrganisationUnitService organisationUnitService;
+
+ public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
+ {
+ this.organisationUnitService = organisationUnitService;
+ }
+
+ // -------------------------------------------------------------------------
+ // Input
+ // -------------------------------------------------------------------------
+
+ private Integer orgUnitId;
+
+ public void setOrgUnitId( Integer orgUnitId )
+ {
+ this.orgUnitId = orgUnitId;
+ }
+
+ private Integer dataSetId;
+
+ public void setDataSetId( Integer dataSetId )
+ {
+ this.dataSetId = dataSetId;
+ }
+
+ private boolean assigned;
+
+ public void setAssigned( boolean assigned )
+ {
+ this.assigned = assigned;
+ }
+
+ // -------------------------------------------------------------------------
+ // Output
+ // -------------------------------------------------------------------------
+
+ public Integer getOrgUnitId()
+ {
+ return orgUnitId;
+ }
+
+ public Integer getDataSetId()
+ {
+ return dataSetId;
+ }
+
+ public boolean isAssigned()
+ {
+ return assigned;
+ }
+
+ private String title;
+
+ public String getTitle()
+ {
+ return title;
+ }
+
+ // -------------------------------------------------------------------------
+ // Action implement
+ // -------------------------------------------------------------------------
+
+ public String execute()
+ throws Exception
+ {
+ DataSet dataSet = dataSetService.getDataSet( dataSetId );
+ Source source = organisationUnitService.getOrganisationUnit( orgUnitId );
+
+ title = source.getName() + " ( " + dataSet.getName() + " )";
+
+ if ( assigned )
+ {
+ dataSet.getSources().add( source );
+ }
+ else
+ {
+ dataSet.getSources().remove( source );
+ }
+
+ dataSetService.updateDataSet( dataSet );
+
+ return SUCCESS;
+ }
+}
=== added file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/ShowedAssociationsEditorAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/ShowedAssociationsEditorAction.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/java/org/hisp/dhis/dataset/action/editor/ShowedAssociationsEditorAction.java 2011-03-21 14:30:16 +0000
@@ -0,0 +1,181 @@
+package org.hisp.dhis.dataset.action.editor;
+
+/*
+ * Copyright (c) 2004-2011, 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.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.common.GridHeader;
+import org.hisp.dhis.databrowser.MetaValue;
+import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.dataset.DataSetService;
+import org.hisp.dhis.dataset.comparator.DataSetNameComparator;
+import org.hisp.dhis.i18n.I18n;
+import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.hisp.dhis.organisationunit.comparator.OrganisationUnitNameComparator;
+import org.hisp.dhis.oust.manager.SelectionTreeManager;
+import org.hisp.dhis.system.grid.ListGrid;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author Dang Duy Hieu
+ * @version $Id$
+ */
+public class ShowedAssociationsEditorAction
+ implements Action
+{
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+
+ private SelectionTreeManager selectionTreeManager;
+
+ public void setSelectionTreeManager( SelectionTreeManager selectionTreeManager )
+ {
+ this.selectionTreeManager = selectionTreeManager;
+ }
+
+ private DataSetService dataSetService;
+
+ public void setDataSetService( DataSetService dataSetService )
+ {
+ this.dataSetService = dataSetService;
+ }
+
+ // -------------------------------------------------------------------------
+ // I18n
+ // -------------------------------------------------------------------------
+
+ private I18n i18n;
+
+ public void setI18n( I18n i18n )
+ {
+ this.i18n = i18n;
+ }
+
+ // -------------------------------------------------------------------------
+ // Output
+ // -------------------------------------------------------------------------
+
+ private Grid grid = new ListGrid();
+
+ public Grid getGrid()
+ {
+ return grid;
+ }
+
+ public List<Object> getMetaValues()
+ {
+ return grid.getColumn( 0 );
+ }
+
+ public Map<Integer, List<Object>> getMetaValueMaps()
+ {
+ Map<Integer, List<Object>> maps = new Hashtable<Integer, List<Object>>();
+
+ for ( List<Object> row : grid.getRows() )
+ {
+ if ( !row.isEmpty() && row.size() > 1 )
+ {
+ maps.put( ((MetaValue) row.get( 0 )).getId(), row.subList( 1, row.size() ) );
+ }
+ }
+
+ return maps;
+ }
+
+ // -------------------------------------------------------------------------
+ // Action implement
+ // -------------------------------------------------------------------------
+
+ public String execute()
+ throws Exception
+ {
+ OrganisationUnit parent = selectionTreeManager.getReloadedSelectedOrganisationUnit();
+
+ if ( parent == null )
+ {
+ return SUCCESS;
+ }
+
+ Set<DataSet> assignedDataSets = null;
+
+ List<DataSet> dataSets = new ArrayList<DataSet>( dataSetService.getAllDataSets() );
+
+ List<OrganisationUnit> children = new ArrayList<OrganisationUnit>();
+
+ if ( parent.getChildren() == null || parent.getChildren().isEmpty() )
+ {
+ children.add( parent );
+ }
+ else
+ {
+ children.addAll( parent.getChildren() );
+ }
+
+ Collections.sort( dataSets, new DataSetNameComparator() );
+
+ Collections.sort( children, new OrganisationUnitNameComparator() );
+
+ grid.addHeader( new GridHeader( i18n.getString( "organisation_units" ), false, true ) );
+
+ for ( DataSet dataSet : dataSets )
+ {
+ grid.addHeader( new GridHeader( dataSet.getName(), dataSet.getId() + "", String.class.getName(), false,
+ false ) );
+ }
+
+ for ( OrganisationUnit child : children )
+ {
+ assignedDataSets = new HashSet<DataSet>( child.getDataSets() );
+
+ grid.addRow().addValue( new MetaValue( child.getId(), child.getName() ) );
+
+ for ( DataSet dataSet : dataSets )
+ {
+ if ( assignedDataSets.contains( dataSet ) )
+ {
+ grid.addValue( new MetaValue( child.getId(), dataSet.getId() + "", "true" ) );
+ }
+ else
+ {
+ grid.addValue( new MetaValue( child.getId(), dataSet.getId() + "", "false" ) );
+ }
+ }
+ }
+
+ return SUCCESS;
+ }
+}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/META-INF/dhis/beans.xml 2011-03-16 21:33:31 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/META-INF/dhis/beans.xml 2011-03-21 14:30:16 +0000
@@ -418,4 +418,26 @@
</property>
</bean>
+ <bean id="org.hisp.dhis.dataset.action.editor.ShowedAssociationsEditorAction"
+ class="org.hisp.dhis.dataset.action.editor.ShowedAssociationsEditorAction"
+ scope="prototype">
+ <property name="dataSetService">
+ <ref bean="org.hisp.dhis.dataset.DataSetService"/>
+ </property>
+ <property name="selectionTreeManager">
+ <ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager"/>
+ </property>
+ </bean>
+
+ <bean id="org.hisp.dhis.dataset.action.editor.DefinedAssociationsEditorAction"
+ class="org.hisp.dhis.dataset.action.editor.DefinedAssociationsEditorAction"
+ scope="prototype">
+ <property name="dataSetService">
+ <ref bean="org.hisp.dhis.dataset.DataSetService"/>
+ </property>
+ <property name="organisationUnitService">
+ <ref bean="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+ </property>
+ </bean>
+
</beans>
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module.properties 2011-03-15 02:56:47 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module.properties 2011-03-21 14:30:16 +0000
@@ -92,10 +92,8 @@
section_management = Dataset Section management
intro_dataset = Create, update, view and delete data sets and custom forms. A data set is a collection of data elements for which data is entered.
intro_dataset_section = Create, update, view and delete data set sections. Sections can be inserted into data sets to make them more comprehensible.
-intro_dataset_assignment_editor = Assign data sets to organisation units. This page allow you to assign one or many data sets to one or many organisation units.
+intro_dataset_assignment_editor = Assign data sets to organisation units as grid page.
edit_compulsory_data_elements = Edit compulsory data elements
-assign_multidataset = Multi-datasets
-assign_multidataset_manage = Assign multi-datasets to orgunit Management
available_datasets = Available DataSets
selected_datasets = Selected DataSets
orgunit_tree = Organisation Unit Tree
@@ -129,3 +127,6 @@
section_sort_order = Section sort order
confirm_delete_section = Are you sure you want to delete this section?
specify_name = Please specify a name
+select_org_unit = Select organisation unit
+assigned = Assigned
+unassigned = Unassigned
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module_vi_VN.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module_vi_VN.properties 2011-02-22 08:41:34 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/org/hisp/dhis/dataset/i18n_module_vi_VN.properties 2011-03-21 14:30:16 +0000
@@ -1,149 +1,152 @@
-view_section_management=Qu\u1EA3n l\u00FD hi\u1EC3n th\u1ECB th\u00E0nh ph\u1EA7n t\u1EADp d\u1EEF li\u1EC7u
-view_as=Xem nh\u01B0
-update_section=C\u1EADp nh\u1EADt section
-update_dataset_section=C\u1EADp nh\u1EADt th\u00E0nh ph\u1EA7n t\u1EADp d\u1EEF li\u1EC7u
-update_dataset=C\u1EADp nh\u1EADt t\u1EADp d\u1EEF li\u1EC7u
-unable_delete=Kh\u00F4ng th\u1EC3 x\u00F3a m\u1EABu nh\u1EADp d\u1EEF li\u1EC7u
-title=Ti\u00EAu \u0111\u1EC1
-specify_name=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh t\u00EAn
-specify_label=Vui l\u00F2ng nh\u1EADp nh\u00E3n
-sort_section=S\u1EAFp x\u1EBFp section
-sort=S\u1EAFp x\u1EBFp
+view_section_management=Qu\u1ea3n l\u00fd hi\u1ec3n th\u1ecb th\u00e0nh ph\u1ea7n t\u1eadp d\u1eef li\u1ec7u
+view_as=Xem nh\u01b0
+update_section=C\u1eadp nh\u1eadt section
+update_dataset_section=C\u1eadp nh\u1eadt th\u00e0nh ph\u1ea7n t\u1eadp d\u1eef li\u1ec7u
+update_dataset=C\u1eadp nh\u1eadt t\u1eadp d\u1eef li\u1ec7u
+unable_delete=Kh\u00f4ng th\u1ec3 x\u00f3a m\u1eabu nh\u1eadp d\u1eef li\u1ec7u
+title=Ti\u00eau \u0111\u1ec1
+specify_name=Vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh t\u00ean
+specify_label=Vui l\u00f2ng nh\u1eadp nh\u00e3n
+sort_section=S\u1eafp x\u1ebfp section
+sort=S\u1eafp x\u1ebfp
semi-permanent=Semi-permanent
-selected_sections=Danh sa1ch Section \u0111\u01B0\u1EE3c ch\u1ECDn
-selected_section_elements=Danh s\u00E1ch Element \u0111\u01B0\u1EE3c ch\u1ECDn
-selected_datasets=T\u1EADp h\u1EE3p d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c ch\u1ECDn
-selected_data_elements=Nh\u1EEFng ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c ch\u1ECDn
-selectdataelement_insert=Ch\u00E8n
-selectdataelement=C\u00E1c ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u c\u00F3 s\u1EB5n
-select_period_type=Ch\u1ECDn lo\u1EA1i th\u1EDDi \u0111i\u1EC3m
-select_optioncombo=C\u00E1c m\u1EE5c ch\u1ECDn ph\u00E2n lo\u1EA1i c\u00F3 s\u1EB5n
-select_none=Kh\u00F4ng ch\u1ECDn
-select_level=Ch\u1ECDn c\u1EA5p
-select_dataset=Ch\u1ECDn t\u1EADp d\u1EEF li\u1EC7u
-select_customvalue=C\u00E1c gi\u00E1 tr\u1ECB t\u00F9y ch\u1ECDn \u0111\u01B0\u1EE3c ch\u1ECDn
-select_categorycombo=Ch\u1ECDn k\u1EBFt h\u1EE3p ph\u00E2n lo\u1EA1i
-select=[Ch\u1ECDn]
-section_sort_order=Th\u1EE9 t\u1EF1 s\u1EAFp x\u1EBFp
-section_management=Qu\u1EA3n l\u00FD th\u00E0nh ph\u1EA7n t\u1EADp d\u1EEF li\u1EC7u
-section_layout=S\u01A1 \u0111\u1ED3 th\u00E0nh ph\u1EA7n t\u1EADp d\u1EEF li\u1EC7u
-section_grey_field_managment=Qu\u1EA3n l\u00FD c\u00E1c c\u1ED9t m\u00E0u x\u00E1m
-section_details=Chi ti\u1EBFt Section
-save_success=L\u01B0u th\u00E0nh c\u00F4ng
-save_close=L\u01B0u v\u00E0 \u0110\u00F3ng
+selected_sections=Danh sa1ch Section \u0111\u01b0\u1ee3c ch\u1ecdn
+selected_section_elements=Danh s\u00e1ch Element \u0111\u01b0\u1ee3c ch\u1ecdn
+selected_datasets=T\u1eadp h\u1ee3p d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c ch\u1ecdn
+selected_data_elements=Nh\u1eefng ph\u1ea7n t\u1eed d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c ch\u1ecdn
+selectdataelement_insert=Ch\u00e8n
+selectdataelement=C\u00e1c ph\u1ea7n t\u1eed d\u1eef li\u1ec7u c\u00f3 s\u1eb5n
+select_period_type=Ch\u1ecdn lo\u1ea1i th\u1eddi \u0111i\u1ec3m
+select_optioncombo=C\u00e1c m\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i c\u00f3 s\u1eb5n
+select_none=Kh\u00f4ng ch\u1ecdn
+select_level=Ch\u1ecdn c\u1ea5p
+select_dataset=Ch\u1ecdn t\u1eadp d\u1eef li\u1ec7u
+select_customvalue=C\u00e1c gi\u00e1 tr\u1ecb t\u00f9y ch\u1ecdn \u0111\u01b0\u1ee3c ch\u1ecdn
+select_categorycombo=Ch\u1ecdn k\u1ebft h\u1ee3p ph\u00e2n lo\u1ea1i
+select=[Ch\u1ecdn]
+section_sort_order=Th\u1ee9 t\u1ef1 s\u1eafp x\u1ebfp
+section_management=Qu\u1ea3n l\u00fd th\u00e0nh ph\u1ea7n t\u1eadp d\u1eef li\u1ec7u
+section_layout=S\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n t\u1eadp d\u1eef li\u1ec7u
+section_grey_field_managment=Qu\u1ea3n l\u00fd c\u00e1c c\u1ed9t m\u00e0u x\u00e1m
+section_details=Chi ti\u1ebft Section
+save_success=L\u01b0u th\u00e0nh c\u00f4ng
+save_close=L\u01b0u v\u00e0 \u0110\u00f3ng
routine=Routine
-rename_success=\u0110\u1ED5i t\u00EAn th\u00E0nh c\u00F4ng
-rename_failed=\u0110\u1ED5i t\u00EAn kh\u00F4ng th\u00E0nh c\u00F4ng
-remove_selected=H\u1EE7y b\u1ECF l\u1EF1a ch\u1ECDn
-remove_all=H\u1EE7y b\u1ECF to\u00E0n b\u1ED9
-please_select_dataset_or_categorycombo=H\u00E3y ch\u1ECDn t\u1EADp d\u1EEF li\u1EC7u v\u00E0 category combo t\u01B0\u01A1ng \u1EE9ng
-please_select_dataset=H\u00E3y ch\u1ECDn m\u1ED9t t\u1EADp d\u1EEF li\u1EC7u
-pivot=B\u1EA3ng xoay
-period_type=Lo\u1EA1i th\u1EDDi \u0111i\u1EC3m
-parent_dataset=T\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cha
-overview=T\u1ED5ng quan
-orgunit_tree=C\u00E2y \u0111\u01A1n v\u1ECB
-organisation_unit_level=C\u1EA5p \u0111\u01A1n v\u1ECB
-org_units=C\u00E1c \u0111\u01A1n v\u1ECB
-optional=T\u00F9y ch\u1ECDn m\u1EDF r\u1ED9ng
-operations=Thao t\u00E1c
-number_of_data_elements=S\u1ED1 ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u
-nr=S\u1ED1 th\u1EE9 t\u1EF1
-not_change_old_but_assign_new_only=Kh\u00F4ng thay \u0111\u1ED5i vi\u1EC7c g\u00E1n c\u0169 ch\u1EC9 g\u00E1n th\u00EAm m\u1EDBi.
-no_orgunit_is_selected=Kh\u00F4ng c\u00F3 \u0111\u01A1n v\u1ECB n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
-no_more_elements_to_select=T\u1EA5t c\u1EA3 c\u00E1c ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u \u0111\u00E3 \u0111\u01B0\u1EE3c \u0111\u1ECBnh v\u1ECB trong m\u1EABu. X\u00F3a c\u00E1c c\u1ED9t ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u t\u1EEB m\u1EABu s\u1EBD l\u00E0m cho xu\u1EA5t hi\u1EC7n l\u1EA1i trong bi\u1EC3u m\u1EABu hi\u1EC7n ra.
-new=Th\u00EAm m\u1EDBi
-move_selected=Di chuy\u1EC3n l\u1EF1a ch\u1ECDn
-move_all=Chuy\u1EC3n to\u00E0n b\u1ED9
-manage_greyed_fields=Qu\u1EA3n l\u00FD c\u00E1c tr\u01B0\u1EDDng b\u00F4i x\u00E1m
-manage_custom_values=Qu\u1EA3n l\u00FD c\u00E1c danh s\u00E1ch d\u1EEF li\u1EC7u t\u00F9y ch\u1ECDn
-loading=\u0110ang t\u1EA3i d\u1EEF li\u1EC7u, ch\u1EDD trong gi\u00E2y l\u00E1t ...
-level_must_be_int=C\u1EA5p ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn
-level=C\u1EA5p
-label=Nh\u00E3n
-intro_dataset_section=T\u1EA1o m\u1EDBi, c\u1EADp nh\u1EADt, xem v\u00E0 x\u00F3a c\u00E1c section c\u1EE7a t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u. C\u00E1c Section c\u00F3 th\u1EC3 \u0111\u01B0\u1EE3c th\u00EAm v\u00E0o c\u00E1c t\u1EADp d\u1EEF li\u1EC7u gi\u00FAp ch\u00FAng d\u1EC5 hi\u1EC3u h\u01A1n.
-intro_dataset_association_management=Nh\u00ECn bao qu\u00E1t c\u00E1c t\u1EADp d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c g\u00E1n v\u1EDBi c\u00E1c \u0111\u01A1n v\u1ECB, v\u00E0 d\u1EC5 d\u00E0ng k\u1EBFt g\u00E1n v\u00E0 h\u1EE7y g\u00E1n cho c\u00E1c t\u1EADp d\u1EEF li\u1EC7u.
-intro_dataset=T\u1EA1o m\u1EDBi, c\u1EADp nh\u1EADt, xem v\u00E0 x\u00F3a c\u00E1c t\u1EADp d\u1EEF li\u1EC7u. T\u1EADp d\u1EEF li\u1EC7u l\u00E0 m\u1ED9t t\u1EADp h\u1EE3p ch\u1EE9a c\u00E1c ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u c\u00F3 gi\u00E1 tr\u1ECB. Trang n\u00E0y c\u0169ng cho ph\u00E9p b\u1EA1n t\u1EF1 thi\u1EBFt k\u1EBF giao di\u1EC7n nh\u1EADp li\u1EC7u c\u00F9ng v\u1EDBi c\u00E1c danh s\u00E1ch t\u00F9y ch\u1ECDn.
-intro_assign_multidataset=G\u00E1n \u0111a t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cho c\u00E1c \u0111\u01A1n v\u1ECB. \u0110a t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u l\u00E0 g\u1ED3m nhi\u1EC1u t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u. Ch\u1EE9c n\u0103ng n\u00E0y cho ph\u00E9p g\u00E1n m\u1ED9t hay nhi\u1EC1u t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cho m\u1ED9t hay nhi\u1EC1u \u0111\u01A1n v\u1ECB.
-illegal_associations=M\u1ED9t t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u kh\u00F4ng th\u1EC3 \u0111\u01B0\u1EE3c g\u00E1n cho hai \u0111\u01A1n v\u1ECB m\u00E0 m\u1ED9t \u0111\u01A1n v\u1ECB l\u00E0 cha tr\u1EF1c ti\u1EBFp hay gi\u00E1n ti\u1EBFp c\u1EE7a \u0111\u01A1n v\u1ECB kia.
+rename_success=\u0110\u1ed5i t\u00ean th\u00e0nh c\u00f4ng
+rename_failed=\u0110\u1ed5i t\u00ean kh\u00f4ng th\u00e0nh c\u00f4ng
+remove_selected=H\u1ee7y b\u1ecf l\u1ef1a ch\u1ecdn
+remove_all=H\u1ee7y b\u1ecf to\u00e0n b\u1ed9
+please_select_dataset_or_categorycombo=H\u00e3y ch\u1ecdn t\u1eadp d\u1eef li\u1ec7u v\u00e0 category combo t\u01b0\u01a1ng \u1ee9ng
+please_select_dataset=H\u00e3y ch\u1ecdn m\u1ed9t t\u1eadp d\u1eef li\u1ec7u
+pivot=B\u1ea3ng xoay
+period_type=Lo\u1ea1i th\u1eddi \u0111i\u1ec3m
+parent_dataset=T\u1eadp h\u1ee3p d\u1eef li\u1ec7u cha
+overview=T\u1ed5ng quan
+orgunit_tree=C\u00e2y \u0111\u01a1n v\u1ecb
+organisation_unit_level=C\u1ea5p \u0111\u01a1n v\u1ecb
+org_units=C\u00e1c \u0111\u01a1n v\u1ecb
+optional=T\u00f9y ch\u1ecdn m\u1edf r\u1ed9ng
+operations=Thao t\u00e1c
+number_of_data_elements=S\u1ed1 ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+nr=S\u1ed1 th\u1ee9 t\u1ef1
+not_change_old_but_assign_new_only=Kh\u00f4ng thay \u0111\u1ed5i vi\u1ec7c g\u00e1n c\u0169 ch\u1ec9 g\u00e1n th\u00eam m\u1edbi.
+no_orgunit_is_selected=Kh\u00f4ng c\u00f3 \u0111\u01a1n v\u1ecb n\u00e0o \u0111\u01b0\u1ee3c ch\u1ecdn
+no_more_elements_to_select=T\u1ea5t c\u1ea3 c\u00e1c ph\u1ea7n t\u1eed d\u1eef li\u1ec7u \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ecbnh v\u1ecb trong m\u1eabu. X\u00f3a c\u00e1c c\u1ed9t ph\u1ea7n t\u1eed d\u1eef li\u1ec7u t\u1eeb m\u1eabu s\u1ebd l\u00e0m cho xu\u1ea5t hi\u1ec7n l\u1ea1i trong bi\u1ec3u m\u1eabu hi\u1ec7n ra.
+new=Th\u00eam m\u1edbi
+move_selected=Di chuy\u1ec3n l\u1ef1a ch\u1ecdn
+move_all=Chuy\u1ec3n to\u00e0n b\u1ed9
+manage_greyed_fields=Qu\u1ea3n l\u00fd c\u00e1c tr\u01b0\u1eddng b\u00f4i x\u00e1m
+manage_custom_values=Qu\u1ea3n l\u00fd c\u00e1c danh s\u00e1ch d\u1eef li\u1ec7u t\u00f9y ch\u1ecdn
+loading=\u0110ang t\u1ea3i d\u1eef li\u1ec7u, ch\u1edd trong gi\u00e2y l\u00e1t ...
+level_must_be_int=C\u1ea5p ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 nguy\u00ean
+level=C\u1ea5p
+label=Nh\u00e3n
+intro_dataset_section=T\u1ea1o m\u1edbi, c\u1eadp nh\u1eadt, xem v\u00e0 x\u00f3a c\u00e1c section c\u1ee7a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u. C\u00e1c Section c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c th\u00eam v\u00e0o c\u00e1c t\u1eadp d\u1eef li\u1ec7u gi\u00fap ch\u00fang d\u1ec5 hi\u1ec3u h\u01a1n.
+intro_dataset_association_management=Nh\u00ecn bao qu\u00e1t c\u00e1c t\u1eadp d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c g\u00e1n v\u1edbi c\u00e1c \u0111\u01a1n v\u1ecb, v\u00e0 d\u1ec5 d\u00e0ng k\u1ebft g\u00e1n v\u00e0 h\u1ee7y g\u00e1n cho c\u00e1c t\u1eadp d\u1eef li\u1ec7u.
+intro_dataset=T\u1ea1o m\u1edbi, c\u1eadp nh\u1eadt, xem v\u00e0 x\u00f3a c\u00e1c t\u1eadp d\u1eef li\u1ec7u. T\u1eadp d\u1eef li\u1ec7u l\u00e0 m\u1ed9t t\u1eadp h\u1ee3p ch\u1ee9a c\u00e1c ph\u1ea7n t\u1eed d\u1eef li\u1ec7u c\u00f3 gi\u00e1 tr\u1ecb. Trang n\u00e0y c\u0169ng cho ph\u00e9p b\u1ea1n t\u1ef1 thi\u1ebft k\u1ebf giao di\u1ec7n nh\u1eadp li\u1ec7u c\u00f9ng v\u1edbi c\u00e1c danh s\u00e1ch t\u00f9y ch\u1ecdn.
+intro_dataset_assignment_editor=G\u00e1n \u0111a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u cho c\u00e1c \u0111\u01a1n v\u1ecb. \u0110a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u l\u00e0 g\u1ed3m nhi\u1ec1u t\u1eadp h\u1ee3p d\u1eef li\u1ec7u theo d\u1ea1ng l\u01b0\u1edbi.
+illegal_associations=M\u1ed9t t\u1eadp h\u1ee3p d\u1eef li\u1ec7u kh\u00f4ng th\u1ec3 \u0111\u01b0\u1ee3c g\u00e1n cho hai \u0111\u01a1n v\u1ecb m\u00e0 m\u1ed9t \u0111\u01a1n v\u1ecb l\u00e0 cha tr\u1ef1c ti\u1ebfp hay gi\u00e1n ti\u1ebfp c\u1ee7a \u0111\u01a1n v\u1ecb kia.
id=Id
-group_filter=L\u1ECDc theo nh\u00F3m
-group=Nh\u00F3m
-greying_area=V\u00F9ng m\u00E0u x\u00E1m
-get_data=L\u1EA5y ra d\u1EEF li\u1EC7u
-frequency=T\u1EA7n xu\u1EA5t
-first_select_de_and_cc=Tr\u01B0\u1EDBc h\u1EBFt ch\u1ECDn ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u v\u00E0 m\u1EE5c ch\u1ECDn ph\u00E2n lo\u1EA1i
-filter_by_name=L\u1ECDc theo t\u00EAn
-filter=B\u1ED9 l\u1ECDc
-failed_to_delete=Kh\u00F4ng th\u1EC3 x\u00F3a.Kh\u00F4ng cho ph\u00E9p x\u00F3a dataset \u0111\u01B0\u1EE3c tham chi\u1EBFu b\u1EDFi dataset kh\u00E1c
-existing_custom_values_for_this_data_element_are_listed=C\u00E1c gi\u00E1 tr\u1ECB hi\u1EC7n c\u00F3 \u0111\u1ED1i v\u1EDBi c\u00E1c ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c li\u1EC7t k\u00EA
-enable=Hi\u1EC7u l\u1EF1c
-edit_section=Ch\u1EC9nh s\u1EEDa Section
-edit_dataset=S\u1EEDa t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-edit_custom_values=Ch\u1EC9nh s\u1EEDa c\u00E1c gi\u00E1 tr\u1ECB t\u00F9y ch\u1ECDn
-edit_compulsory_data_elements=Ch\u1EC9nh s\u1EEDa c\u00E1c ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u b\u1EAFt bu\u1ED9c
-duplicates_are_not_allowed=Tr\u00F9ng l\u1EB7p kh\u00F4ng \u0111\u01B0\u1EE3c ph\u00E9p
-duplicate_short_names=T\u00EAn r\u00FAt g\u1ECDn n\u00E0y \u0111\u00E3 t\u1ED3n t\u1EA1i
-duplicate_section_names=Section n\u00E0y tr\u00F9ng l\u1EB7p t\u00EAn
-duplicate_names=T\u00EAn n\u00E0y \u0111\u00E3 \u0111\u01B0\u1EE3c d\u00F9ng
-duplicate_codes=M\u00E3 s\u1ED1 n\u00E0y \u0111\u00E3 t\u1ED3n t\u1EA1i
-done_custom_value=Ho\u00E0n t\u1EA5t
-done=Ho\u00E0n t\u1EA5t
-disable=M\u1EA5t hi\u1EC7u l\u1EF1c
-design_data_entry_form=Thi\u1EBFt k\u1EBF m\u1EABu nh\u1EADp d\u1EEF li\u1EC7u
-delete_success=X\u00F3a th\u00E0nh c\u00F4ng
-delete_custom_value=X\u00F3a
-delete=X\u00F3a t\u1EADp d\u1EEF li\u1EC7u
-define_inheritance=\u0110\u1ECBnh ngh\u0129a s\u1EF1 k\u1EBF th\u1EEBa
-define_dataset_inheritance=\u0110\u1ECBnh ngh\u0129a s\u1EF1 k\u1EBF th\u1EEBa t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-define_dataset_associations=G\u00E1n t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cho \u0111\u01A1n v\u1ECB
-define_associations=G\u00E1n t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cho \u0111\u01A1n v\u1ECB
-define=\u0110\u1ECBnh ngh\u0129a
-default_category_selected=M\u1EE5c ch\u1ECDn ph\u00E2n lo\u1EA1i m\u1EB7c \u0111\u1ECBnh \u0111\u00E3 \u0111\u01B0\u1EE3c ch\u1ECDn
-de_must_be_selected_first=Ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u ph\u1EA3i \u0111\u01B0\u1EE3c ch\u1ECDn tr\u01B0\u1EDBc h\u1EBFt
-datasets_different_orgunitlist=C\u00E1c t\u1EADp d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c ch\u1ECDn tr\u00EAn kh\u00E1c nhau v\u1EC1 danh s\u00E1ch c\u00E1c \u0111\u01A1n v\u1ECB g\u00E1n.
-datasets=C\u00E1c t\u1EADp d\u1EEF li\u1EC7u
-dataset_section=Ph\u1EA7n c\u1EE7a t\u1EADp d\u1EEF li\u1EC7u
+group_filter=L\u1ecdc theo nh\u00f3m
+group=Nh\u00f3m
+greying_area=V\u00f9ng m\u00e0u x\u00e1m
+get_data=L\u1ea5y ra d\u1eef li\u1ec7u
+frequency=T\u1ea7n xu\u1ea5t
+first_select_de_and_cc=Tr\u01b0\u1edbc h\u1ebft ch\u1ecdn ph\u1ea7n t\u1eed d\u1eef li\u1ec7u v\u00e0 m\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i
+filter_by_name=L\u1ecdc theo t\u00ean
+filter=B\u1ed9 l\u1ecdc
+failed_to_delete=Kh\u00f4ng th\u1ec3 x\u00f3a.Kh\u00f4ng cho ph\u00e9p x\u00f3a dataset \u0111\u01b0\u1ee3c tham chi\u1ebfu b\u1edfi dataset kh\u00e1c
+existing_custom_values_for_this_data_element_are_listed=C\u00e1c gi\u00e1 tr\u1ecb hi\u1ec7n c\u00f3 \u0111\u1ed1i v\u1edbi c\u00e1c ph\u1ea7n t\u1eed d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea
+enable=Hi\u1ec7u l\u1ef1c
+edit_section=Ch\u1ec9nh s\u1eeda Section
+edit_dataset=S\u1eeda t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+edit_custom_values=Ch\u1ec9nh s\u1eeda c\u00e1c gi\u00e1 tr\u1ecb t\u00f9y ch\u1ecdn
+edit_compulsory_data_elements=Ch\u1ec9nh s\u1eeda c\u00e1c ph\u1ea7n t\u1eed d\u1eef li\u1ec7u b\u1eaft bu\u1ed9c
+duplicates_are_not_allowed=Tr\u00f9ng l\u1eb7p kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p
+duplicate_short_names=T\u00ean r\u00fat g\u1ecdn n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i
+duplicate_section_names=Section n\u00e0y tr\u00f9ng l\u1eb7p t\u00ean
+duplicate_names=T\u00ean n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c d\u00f9ng
+duplicate_codes=M\u00e3 s\u1ed1 n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i
+done_custom_value=Ho\u00e0n t\u1ea5t
+done=Ho\u00e0n t\u1ea5t
+disable=M\u1ea5t hi\u1ec7u l\u1ef1c
+design_data_entry_form=Thi\u1ebft k\u1ebf m\u1eabu nh\u1eadp d\u1eef li\u1ec7u
+delete_success=X\u00f3a th\u00e0nh c\u00f4ng
+delete_custom_value=X\u00f3a
+delete=X\u00f3a t\u1eadp d\u1eef li\u1ec7u
+define_inheritance=\u0110\u1ecbnh ngh\u0129a s\u1ef1 k\u1ebf th\u1eeba
+define_dataset_inheritance=\u0110\u1ecbnh ngh\u0129a s\u1ef1 k\u1ebf th\u1eeba t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+define_dataset_associations=G\u00e1n t\u1eadp h\u1ee3p d\u1eef li\u1ec7u cho \u0111\u01a1n v\u1ecb
+define_associations=G\u00e1n t\u1eadp h\u1ee3p d\u1eef li\u1ec7u cho \u0111\u01a1n v\u1ecb
+define=\u0110\u1ecbnh ngh\u0129a
+default_category_selected=M\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i m\u1eb7c \u0111\u1ecbnh \u0111\u00e3 \u0111\u01b0\u1ee3c ch\u1ecdn
+de_must_be_selected_first=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u ph\u1ea3i \u0111\u01b0\u1ee3c ch\u1ecdn tr\u01b0\u1edbc h\u1ebft
+datasets_different_orgunitlist=C\u00e1c t\u1eadp d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c ch\u1ecdn tr\u00ean kh\u00e1c nhau v\u1ec1 danh s\u00e1ch c\u00e1c \u0111\u01a1n v\u1ecb g\u00e1n.
+datasets=C\u00e1c t\u1eadp d\u1eef li\u1ec7u
+dataset_section=Ph\u1ea7n c\u1ee7a t\u1eadp d\u1eef li\u1ec7u
dataset_menu=Dataset menu
-dataset_management=Qu\u1EA3n l\u00FD t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-dataset_list=Danh s\u00E1ch t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-dataset_details=Chi ti\u1EBFt t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-dataset_association_management=Qu\u1EA3n l\u00FD li\u00EAn k\u1EBFt t\u1EADp d\u1EEF li\u1EC7u
-dataset_assignment_editor=Hi\u1EC7u ch\u1EC9nh g\u1EAFn k\u1EBFt t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-dataset=T\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-dataentryform_management=Qu\u1EA3n l\u00FD bi\u1EC3u nh\u1EADp d\u1EEF li\u1EC7u
-dataentryform_duplicate_names=M\u1ED9t bi\u1EC3u nh\u1EADp d\u1EEF li\u1EC7u v\u1EDBi t\u00EAn n\u00E0y \u0111\u00E3 t\u1ED3n t\u1EA1i
-dataentryform_details=Chi ti\u1EBFt bi\u1EC3u nh\u1EADp d\u1EEF li\u1EC7u
-dataentryform_design=Thi\u1EBFt k\u1EBF m\u1EABu nh\u1EADp d\u1EEF li\u1EC7u
-dataentryform_confirm_delete=B\u1EA1n c\u00F3 ch\u1EAFc ch\u1EAFn l\u00E0 mu\u1ED1n x\u00F3a bi\u1EC3u nh\u1EADp d\u1EEF li\u1EC7u n\u00E0y?
-dataentryform=Bi\u1EC3u nh\u1EADp d\u1EEF li\u1EC7u
-dataelement_is_inserted=Th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u \u0111\u00E3 ch\u00E8n v\u00E0o
-dataelement_count_mismatch=M\u1ED9t ph\u1EA7n c\u1EE7a c\u00E1c ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u trong t\u1EADp d\u1EEF li\u1EC7u b\u1ECB thi\u1EBFu t\u1EEB bi\u1EC3u nh\u1EADp d\u1EEF li\u1EC7u t\u00F9y ch\u1ECDn, b\u1EA1n c\u00F3 mu\u1ED1n ti\u1EBFp t\u1EE5c?
-data_set_sort_order=Th\u1EE9 t\u1EF1 s\u1EAFp x\u1EBFp t\u1EADp d\u1EEF li\u1EC7u
-data_elements_defined_in_parent_dataset=Ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u \u0111\u00E3 \u0111\u1ECBnh ngh\u0129a trong t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cha
-data_element=Ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u
-data=D\u1EEF li\u1EC7u
-cv_removed=Gi\u00E1 tr\u1ECB t\u00F9y ch\u1ECDn \u0111\u00E3 x\u00F3a
-cv_must_be_selected_first=C\u00E1c gi\u00E1 tr\u1ECB t\u00F9y ch\u1ECDn ph\u1EA3i \u0111\u01B0\u1EE3c ch\u1ECDn tr\u01B0\u1EDBc h\u1EBFt
-cv_must_be_added=Gi\u00E1 tr\u1ECB t\u00F9y ch\u1ECDn v\u0103n b\u1EA3n ph\u1EA3i \u0111\u01B0\u1EE3c th\u00EAm v\u00E0o
-confirm_save=H\u00E0nh \u0111\u1ED9ng n\u00E0y s\u1EBD thay \u0111\u1ED5i nh\u1EEFng \u0111\u01A1n v\u1ECB \u0111\u00E3 \u0111\u01B0\u1EE3c g\u00E1n tr\u01B0\u1EDBc \u0111\u00F3 cho c\u00E1c t\u1EADp d\u1EEF li\u1EC7u l\u1EF1a ch\u1ECDn tr\u00EAn.\nB\u1EA1n c\u00F3 mu\u1ED1n ti\u1EBFp t\u1EE5c?
-confirm_delete=B\u1EA1n c\u00F3 ch\u1EAFc l\u00E0 mu\u1ED1n x\u00F3a t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u n\u00E0y kh\u00F4ng?
-choose_dataset=Ch\u01B0a ch\u1ECDn t\u1EADp d\u1EEF li\u1EC7u
-cc_must_be_selected_first=M\u1EE5c ch\u1ECDn ph\u00E2n lo\u1EA1i ph\u1EA3i \u0111\u01B0\u1EE3c ch\u1ECDn tr\u01B0\u1EDBc h\u1EBFt
-category_combo=C\u00E1c li\u00EAn k\u1EBFt ph\u00E2n lo\u1EA1i
-available_sections=Danh s\u00E1ch Section hi\u1EC7n c\u00F3
-available_section_elements=Danh s\u00E1ch Element hi\u1EC7n c\u00F3
-available_for_mobile_reporting=S\u1EB5n s\u00E0ng cho b\u00E1o c\u00E1o tr\u00EAn \u0110TD\u0110
-available_datasets=T\u1EADp h\u1EE3p d\u1EEF li\u1EC7u hi\u1EC7n c\u00F3
-available_data_elements=Ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u c\u00F3 s\u1EB5n
-available_customvalue=C\u00E1c gi\u00E1 tr\u1ECB t\u00F9y ch\u1ECDn \u0111\u01B0\u1EE3c \u0111\u1EC1 xu\u1EA5t
-assign_multidataset_manage=Qu\u1EA3n l\u00FD g\u00E1n \u0111a t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u cho c\u00E1c \u0111\u01A1n v\u1ECB
-assign_multidataset=\u0110a t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-assign=G\u00E1n
-apply=C\u1EADp nh\u1EADt
-add_success=T\u1EADp h\u1EE3p d\u1EEF li\u1EC7u \u0111\u00E3 \u0111\u01B0\u1EE3c t\u1EA1o
-add_section=Th\u00EAm section
-add_new_dataset=Th\u00EAm m\u1EDBi t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
-add_new_custom_value=Th\u00EAm m\u1EDBi
-add_dataset_section=Th\u00EAm m\u1ED9t ph\u1EA7n c\u1EE7a t\u1EADp d\u1EEF li\u1EC7u
-add_dataset=Th\u00EAm t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u
+dataset_management=Qu\u1ea3n l\u00fd t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+dataset_list=Danh s\u00e1ch t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+dataset_details=Chi ti\u1ebft t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+dataset_association_management=Qu\u1ea3n l\u00fd li\u00ean k\u1ebft t\u1eadp d\u1eef li\u1ec7u
+dataset_assignment_editor=Hi\u1ec7u ch\u1ec9nh g\u1eafn k\u1ebft t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+dataset=T\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+dataentryform_management=Qu\u1ea3n l\u00fd bi\u1ec3u nh\u1eadp d\u1eef li\u1ec7u
+dataentryform_duplicate_names=M\u1ed9t bi\u1ec3u nh\u1eadp d\u1eef li\u1ec7u v\u1edbi t\u00ean n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i
+dataentryform_details=Chi ti\u1ebft bi\u1ec3u nh\u1eadp d\u1eef li\u1ec7u
+dataentryform_design=Thi\u1ebft k\u1ebf m\u1eabu nh\u1eadp d\u1eef li\u1ec7u
+dataentryform_confirm_delete=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn l\u00e0 mu\u1ed1n x\u00f3a bi\u1ec3u nh\u1eadp d\u1eef li\u1ec7u n\u00e0y?
+dataentryform=Bi\u1ec3u nh\u1eadp d\u1eef li\u1ec7u
+dataelement_is_inserted=Th\u00e0nh ph\u1ea7n d\u1eef li\u1ec7u \u0111\u00e3 ch\u00e8n v\u00e0o
+dataelement_count_mismatch=M\u1ed9t ph\u1ea7n c\u1ee7a c\u00e1c ph\u1ea7n t\u1eed d\u1eef li\u1ec7u trong t\u1eadp d\u1eef li\u1ec7u b\u1ecb thi\u1ebfu t\u1eeb bi\u1ec3u nh\u1eadp d\u1eef li\u1ec7u t\u00f9y ch\u1ecdn, b\u1ea1n c\u00f3 mu\u1ed1n ti\u1ebfp t\u1ee5c?
+data_set_sort_order=Th\u1ee9 t\u1ef1 s\u1eafp x\u1ebfp t\u1eadp d\u1eef li\u1ec7u
+data_elements_defined_in_parent_dataset=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u \u0111\u00e3 \u0111\u1ecbnh ngh\u0129a trong t\u1eadp h\u1ee3p d\u1eef li\u1ec7u cha
+data_element=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+data=D\u1eef li\u1ec7u
+cv_removed=Gi\u00e1 tr\u1ecb t\u00f9y ch\u1ecdn \u0111\u00e3 x\u00f3a
+cv_must_be_selected_first=C\u00e1c gi\u00e1 tr\u1ecb t\u00f9y ch\u1ecdn ph\u1ea3i \u0111\u01b0\u1ee3c ch\u1ecdn tr\u01b0\u1edbc h\u1ebft
+cv_must_be_added=Gi\u00e1 tr\u1ecb t\u00f9y ch\u1ecdn v\u0103n b\u1ea3n ph\u1ea3i \u0111\u01b0\u1ee3c th\u00eam v\u00e0o
+confirm_save=H\u00e0nh \u0111\u1ed9ng n\u00e0y s\u1ebd thay \u0111\u1ed5i nh\u1eefng \u0111\u01a1n v\u1ecb \u0111\u00e3 \u0111\u01b0\u1ee3c g\u00e1n tr\u01b0\u1edbc \u0111\u00f3 cho c\u00e1c t\u1eadp d\u1eef li\u1ec7u l\u1ef1a ch\u1ecdn tr\u00ean.\nB\u1ea1n c\u00f3 mu\u1ed1n ti\u1ebfp t\u1ee5c?
+confirm_delete=B\u1ea1n c\u00f3 ch\u1eafc l\u00e0 mu\u1ed1n x\u00f3a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u n\u00e0y kh\u00f4ng?
+choose_dataset=Ch\u01b0a ch\u1ecdn t\u1eadp d\u1eef li\u1ec7u
+cc_must_be_selected_first=M\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i ph\u1ea3i \u0111\u01b0\u1ee3c ch\u1ecdn tr\u01b0\u1edbc h\u1ebft
+category_combo=C\u00e1c li\u00ean k\u1ebft ph\u00e2n lo\u1ea1i
+available_sections=Danh s\u00e1ch Section hi\u1ec7n c\u00f3
+available_section_elements=Danh s\u00e1ch Element hi\u1ec7n c\u00f3
+available_for_mobile_reporting=S\u1eb5n s\u00e0ng cho b\u00e1o c\u00e1o tr\u00ean \u0110TD\u0110
+available_datasets=T\u1eadp h\u1ee3p d\u1eef li\u1ec7u hi\u1ec7n c\u00f3
+available_data_elements=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u c\u00f3 s\u1eb5n
+available_customvalue=C\u00e1c gi\u00e1 tr\u1ecb t\u00f9y ch\u1ecdn \u0111\u01b0\u1ee3c \u0111\u1ec1 xu\u1ea5t
+assign_multidataset_manage=Qu\u1ea3n l\u00fd g\u00e1n \u0111a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u cho c\u00e1c \u0111\u01a1n v\u1ecb
+assign_multidataset=\u0110a t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+assign=G\u00e1n
+apply=C\u1eadp nh\u1eadt
+add_success=T\u1eadp h\u1ee3p d\u1eef li\u1ec7u \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o
+add_section=Th\u00eam section
+add_new_dataset=Th\u00eam m\u1edbi t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+add_new_custom_value=Th\u00eam m\u1edbi
+add_dataset_section=Th\u00eam m\u1ed9t ph\u1ea7n c\u1ee7a t\u1eadp d\u1eef li\u1ec7u
+add_dataset=Th\u00eam t\u1eadp h\u1ee3p d\u1eef li\u1ec7u
+Select organisation unit=Ch\u1ecdn \u0111\u01a1n v\u1ecb
+assigned=\u0110\u00e3 g\u00e1n
+unassigned=Ch\u01b0a g\u00e1n
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/struts.xml 2011-03-16 21:33:31 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/resources/struts.xml 2011-03-21 14:30:16 +0000
@@ -306,5 +306,24 @@
<result name="success" type="redirect">dataSet.action</result>
</action>
+ <!-- Dataset Editor -->
+
+ <action name="displayEditorForm" class="org.hisp.dhis.dataset.action.NoAction">
+ <result name="success" type="velocity">/main.vm</result>
+ <param name="page">/dhis-web-maintenance-dataset/viewEditorForm.vm</param>
+ <param name="menu">/dhis-web-maintenance-dataset/menu.vm</param>
+ <param name="javascripts">../dhis-web-commons/oust/oust.js,javascript/editor.js</param>
+ </action>
+
+ <action name="showedAssociationsEditor"
+ class="org.hisp.dhis.dataset.action.editor.ShowedAssociationsEditorAction">
+ <result name="success" type="velocity">/dhis-web-maintenance-dataset/htmlGrid.vm</result>
+ </action>
+
+ <action name="definedAssociationsEditor"
+ class="org.hisp.dhis.dataset.action.editor.DefinedAssociationsEditorAction">
+ <result name="success" type="velocity">/dhis-web-maintenance-dataset/loadIcon.vm</result>
+ </action>
+
</package>
</struts>
=== added file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/htmlGrid.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/htmlGrid.vm 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/htmlGrid.vm 2011-03-21 14:30:16 +0000
@@ -0,0 +1,55 @@
+<style type="text/css">
+.gridTable th
+{
+ text-align: center;
+ width: 100%;
+}
+
+.gridTable td
+{
+ text-align: center;
+ padding: 8px 35px 8px 35px;
+ width: 100%;
+}
+
+.gridLeft td
+{
+ text-align: left;
+}
+</style>
+
+<h3>$!encoder.htmlEncode( $grid.title )</h3>
+
+<h5>$!encoder.htmlEncode( $grid.subtitle )</h5>
+
+<table class="listTable gridTable" border="1px">
+
+#set( $headers = $grid.getVisibleHeaders() )
+
+<thead>
+<tr>
+#foreach( $header in $headers )
+<th #if( $header.meta )style="text-align:left;min-width:180px;"#end>$!encoder.htmlEncode( $header.name )</th>
+#end
+</tr>
+</thead>
+
+<tbody>
+#foreach( $meta in $!MetaValues )
+ #set( $list = $!MetaValueMaps.get( $meta.id ) )
+ <tr>
+ <td>$meta</td>
+ #foreach( $item in $list )
+ #set( $title = $meta + " ( " + $headers.get( $velocityCount ).name + " )" )
+ <td>
+ <div id="div$item.id$item.name">
+ <img #if ( $item.metaValue == "true" ) src="../images/assign_a.png" #else src="../images/forum_denied.png" #end onclick="changeAssociatedStatus( $item.id, $item.name, $item.metaValue )" style="cursor:pointer" title="$title"/>
+ <span #if ( $item.metaValue == "true" ) style="color:blue" #end>#if ( $item.metaValue == "true" ) $i18n.getString( "assigned" ) #else $i18n.getString( "unassigned" ) #end</span>
+ </div>
+ </td>
+ #end
+ </tr>
+#end
+</tbody>
+
+</table>
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/index.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/index.vm 2011-03-16 21:33:31 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/index.vm 2011-03-21 14:30:16 +0000
@@ -5,4 +5,5 @@
#introListImgItem( "dataSet.action" "dataset" "dataset" )
#introListImgItem( "showMobileDataSet.action" "mobile_dataset" "dataset" )
#introListImgItem( "section.action" "dataset_section" "dataset" )
+ #introListImgItem( "displayEditorForm.action" "dataset_assignment_editor" "dataset" )
</ul>
\ No newline at end of file
=== added file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/javascript/editor.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/javascript/editor.js 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/javascript/editor.js 2011-03-21 14:30:16 +0000
@@ -0,0 +1,21 @@
+
+function displayAssociatedForm()
+{
+ var url = "showedAssociationsEditor.action";
+
+ showLoader();
+
+ $( "#contentDiv" ).load( url, function(){
+ hideLoader();
+ });
+}
+
+function changeAssociatedStatus( orgunitId, dataSetId, assigned )
+{
+ var url = "definedAssociationsEditor.action?";
+ url += "orgUnitId=" + orgunitId ;
+ url += "&dataSetId=" + dataSetId;
+ url += "&assigned=" + !assigned;
+
+ $( "#div" + orgunitId + dataSetId ).load( url );
+}
\ No newline at end of file
=== added file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/loadIcon.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/loadIcon.vm 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/loadIcon.vm 2011-03-21 14:30:16 +0000
@@ -0,0 +1,2 @@
+<img #if ( $assigned ) src="../images/assign_a.png" #else src="../images/forum_denied.png" #end onclick="changeAssociatedStatus( $orgUnitId, $dataSetId, $assigned )" style="cursor:pointer" title="$title"/>
+<span #if ( $assigned ) style="color:blue" #end>#if ( $assigned ) $i18n.getString( 'assigned' ) #else $i18n.getString( 'unassigned' ) #end</span>
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/menu.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/menu.vm 2011-03-16 21:33:31 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/menu.vm 2011-03-21 14:30:16 +0000
@@ -4,4 +4,5 @@
<li><a href="dataSet.action">$i18n.getString( "dataset" ) </a></li>
<li><a href="showMobileDataSet.action">$i18n.getString( "mobile_dataset" ) </a></li>
<li><a href="section.action">$i18n.getString( "dataset_section" ) </a></li>
+ <li><a href="displayEditorForm.action">$i18n.getString( "dataset_assignment_editor" ) </a></li>
</ul>
\ No newline at end of file
=== added file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/viewEditorForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/viewEditorForm.vm 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataset/src/main/webapp/dhis-web-maintenance-dataset/viewEditorForm.vm 2011-03-21 14:30:16 +0000
@@ -0,0 +1,30 @@
+
+<h3>$i18n.getString( "dataset_assignment_editor" )</h3>
+
+<table>
+ <col width="330"/>
+ <tr>
+ <th>$i18n.getString( "select_org_unit" )</th>
+ </tr>
+ <tr>
+ <td><div id="selectionTree" style="width:325px; height:240px"></div></td>
+ </tr>
+</table>
+
+#parse( "dhis-web-commons/loader/loader.vm" )
+
+<div id="contentDiv">
+</div>
+
+<script type="text/javascript">
+
+ jQuery(document).ready(function(){
+
+ selectionTreeSelection.setListenerFunction( displayAssociatedForm );
+ selectionTreeSelection.setMultipleSelectionAllowed( false );
+ selectionTree.clearSelectedOrganisationUnits();
+ selectionTree.buildSelectionTree();
+ });
+
+ var i18n_processing = '$encoder.jsEscape( $i18n.getString( "processing" ) , "'")';
+</script>