dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #37720
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 19264: Program indicator add/edit screen. Included filter.
Merge authors:
Lars Helge Øverland (larshelge)
------------------------------------------------------------
revno: 19264 [merge]
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-06-02 20:23:24 +0200
message:
Program indicator add/edit screen. Included filter.
modified:
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/programindicator/GetProgramIndicatorAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/resources/org/hisp/dhis/trackedentity/i18n_module.properties
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramIndicator.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/javascript/programIndicator.js
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/programIndicatorForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramIndicator.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-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2015-06-02 12:31:34 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2015-06-02 18:23:24 +0000
@@ -906,7 +906,7 @@
.message
{
- border: 1px solid #ccc;
+ border: 1px solid #ddd;
border-radius: 3px;
width: 450px;
padding: 9px;
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/programindicator/GetProgramIndicatorAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/programindicator/GetProgramIndicatorAction.java 2015-03-29 20:22:47 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/programindicator/GetProgramIndicatorAction.java 2015-06-02 18:23:24 +0000
@@ -86,6 +86,13 @@
{
return description;
}
+
+ private String filter;
+
+ public String getFilter()
+ {
+ return filter;
+ }
private List<Constant> constants;
@@ -105,6 +112,8 @@
programIndicator = programIndicatorService.getProgramIndicator( id );
description = programIndicatorService.getExpressionDescription( programIndicator.getExpression() );
+
+ filter = programIndicatorService.getExpressionDescription( programIndicator.getFilter() );
constants = new ArrayList<>( constantService.getAllConstants() );
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/resources/org/hisp/dhis/trackedentity/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/resources/org/hisp/dhis/trackedentity/i18n_module.properties 2015-06-02 12:18:46 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/resources/org/hisp/dhis/trackedentity/i18n_module.properties 2015-06-02 18:23:24 +0000
@@ -547,4 +547,7 @@
hide_section = Hide section
template_reminder_message_management=Template reminder message management
expression_description=Expression description
-expression_items=Expression items
\ No newline at end of file
+expression_items=Expression items
+filter_items=Filter items
+filter_description=Filter description
+select_program_stage=Select program stage
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramIndicator.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramIndicator.vm 2015-02-16 11:46:32 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramIndicator.vm 2015-06-02 18:23:24 +0000
@@ -73,18 +73,6 @@
</td>
<td></td>
</tr>
- <tr>
- <td><label for="programStageId">$i18n.getString( "program_stage" ) </label></td>
- <td>
- <select id="programStageId" name="programStageId" onChange="getTrackedEntityDataElements();">
- <option value=''>[$i18n.getString('please_select')]</option>
- #foreach( $programStage in $program.programStages )
- <option value='$programStage.uid'>$programStage.displayName</option>
- #end
- </select>
- </td>
- <td></td>
- </tr>
</table>
<br>
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/javascript/programIndicator.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/javascript/programIndicator.js 2015-06-02 15:46:55 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/javascript/programIndicator.js 2015-06-02 18:23:24 +0000
@@ -57,9 +57,9 @@
}
}
-function getTrackedEntityDataElements() {
- clearListById('dataElements');
- clearListById('deSumId');
+function getTrackedEntityDataElements( type ) {
+ var fieldId = type + '-data-elements';
+ clearListById(fieldId);
var programStageId = getFieldValue('programStageId');
jQuery.getJSON('getTrackedEntityDataElements.action',
@@ -68,7 +68,7 @@
programStageId: programStageId
}
, function( json ) {
- var dataElements = jQuery('#dataElements');
+ var dataElements = jQuery('#' + fieldId);
for( i in json.dataElements ) {
if( json.dataElements[i].type == 'int' || json.dataElements[i].type == 'date' ) {
dataElements.append("<option value='" + json.dataElements[i].id + "' title='" + json.dataElements[i].name + "' suggested='" + json.dataElements[i].optionset + "'>" + json.dataElements[i].name + "</option>");
@@ -77,45 +77,55 @@
});
}
-function insertDataElement( element ) {
- var programStageId = getFieldValue('programStageId');
- var dataElementId = element.options[element.selectedIndex].value;
-
- insertTextCommon('expression', "#{" + programStageId + "." + dataElementId + "}");
- getConditionDescription();
-}
-
-function insertData( element, key ){
- var attributeId = element.options[element.selectedIndex].value;
-
- insertTextCommon('expression', key + "{" + attributeId + "}");
- getConditionDescription();
-}
-
-function insertInfo( element, isProgramStageProperty ) {
- var id = "";
- if( isProgramStageProperty ) {
- id = getFieldValue('programStageId');
- }
- else {
- id = getFieldValue('programId');
- }
-
- value = element.options[element.selectedIndex].value.replace('*', id);
- insertTextCommon('expression', value);
- getConditionDescription();
-}
-
-function insertOperator( value ) {
- insertTextCommon('expression', ' ' + value + ' ');
+function insertDataElement( type ) {
+ var psFieldId = type + '-program-stage',
+ deFieldId = type + '-data-elements',
+ areaId = type,
+ programStageId = getFieldValue(psFieldId),
+ dataElementId = getFieldValue(deFieldId);
+
+ insertTextCommon(areaId, "#{" + programStageId + "." + dataElementId + "}");
+ getConditionDescription();
+}
+
+function insertAttribute( type ){
+ var atFieldId = type + '-attributes',
+ areaId = type,
+ attributeId = getFieldValue(atFieldId);
+
+ insertTextCommon(areaId, "A{" + attributeId + "}");
+ getConditionDescription();
+}
+
+function insertVariable( type ){
+ var varFieldId = type + '-variables',
+ areaId = type,
+ variableId = getFieldValue(varFieldId);
+
+ insertTextCommon(areaId, "V{" + variableId + "}");
+ getConditionDescription();
+}
+
+function insertConstant( type ){
+ var coFieldId = type + '-constants',
+ areaId = type,
+ constantId = getFieldValue(coFieldId);
+
+ insertTextCommon(areaId, "C{" + constantId + "}");
+ getConditionDescription();
+}
+
+function insertOperator( type, value ) {
+ insertTextCommon(type, ' ' + value + ' ');
getConditionDescription();
}
function getConditionDescription() {
var expression = getFieldValue('expression');
+
if( expression == '' )
{
- setInnerHTML('aggregationDescription', '');
+ setInnerHTML('expression-description', '');
}
else
{
@@ -124,11 +134,11 @@
}, function( json ) {
if( json.valid ){
setFieldValue('checkExpression', json.message);
- setInnerHTML('aggregationDescription', json.description);
+ setInnerHTML('expression-description', json.description);
}
else {
setFieldValue('checkExpression','');
- setInnerHTML('aggregationDescription', json.message);
+ setInnerHTML('expression-description', json.message);
}
});
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/programIndicatorForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/programIndicatorForm.vm 2015-06-02 15:46:55 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/programIndicatorForm.vm 2015-06-02 18:23:24 +0000
@@ -1,7 +1,12 @@
-<table>
+<!-- Expression -->
+
+<table style="margin-top:10px">
+ <tr>
+ <td><div class="message message-info">The expression defines how the indicator is calculated</div></td>
+ </tr>
<tr>
<th>$i18n.getString( "expression_items" )</th>
- </tr>
+ </tr>
<tr>
<td>
@@ -19,13 +24,20 @@
<table style="width:100%">
<tr>
<td>
- <input type='text' id='txtSearchValue' name='txtSearchValue' onKeyUp="filterExpressionSelect(event, this.value, 'dataElements');" placeholder="$i18n.getString('filter')" />
- <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('txtSearchValue', '');" />
+ <select id="expression-program-stage" onChange="getTrackedEntityDataElements('expression');" style="width:35%;margin-right:20px;">
+ <option value=''>[ $i18n.getString('select_program_stage') ]</option>
+ #foreach( $programStage in $program.programStages )
+ <option value='$programStage.uid'>$programStage.displayName</option>
+ #end
+ </select>
+ <input type='text' id='expression-de-search' onKeyUp="filterExpressionSelect(event, this.value, 'expression-data-elements');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('expression-de-search', '');" />
+
</td>
</tr>
<tr>
<td>
- <select multiple id="dataElements" name="dataElements" size="7" style="width:100%" ondblclick="insertDataElement(this);"></select>
+ <select multiple id="expression-data-elements" name="expression-data-elements" size="7" style="width:100%" ondblclick="insertDataElement('expression');"></select>
</td>
</tr>
</table>
@@ -37,13 +49,13 @@
<table style="width:100%">
<tr>
<td>
- <input type='text' id='txtSearchAttrValue' name='txtSearchAttrValue' onKeyUp="filterExpressionSelect(event, this.value, 'attributes');" placeholder="$i18n.getString('filter')" />
- <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('txtSearchAttrValue', '');" />
+ <input type='text' id='expression-attr-search' onKeyUp="filterExpressionSelect(event, this.value, 'expression-attributes');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('expression-attr-search', '');" />
</td>
</tr>
<tr>
<td>
- <select multiple id="attributes" name="attributes" size="7" style="width:100%" ondblclick="insertData(this,'A');">
+ <select multiple id="expression-attributes" name="expression-attributes" size="7" style="width:100%" ondblclick="insertAttribute(this,'A');">
#foreach( $programAttribute in $program.programAttributes )
#if( $programAttribute.attribute.valueType=='number' )
<option value='$programAttribute.attribute.uid'>$encoder.htmlEncode($programAttribute.attribute.displayName)</option>
@@ -59,18 +71,18 @@
<table style="width:100%">
<tr>
<td>
- <input type='text' id='txtSearchPropertyValue' name='txtSearchValue' onKeyUp="filterExpressionSelect(event, this.value, 'programProperty');" placeholder="$i18n.getString('filter')" />
- <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('txtSearchPropertyValue', '');" />
+ <input type='text' id='expression-var-search' onKeyUp="filterExpressionSelect(event, this.value, 'expression-variables');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('expression-var-search', '');" />
</td>
</tr>
<tr>
<td>
- <select multiple id="programProperty" name="programProperty" size="7" style="width:100%" ondblclick="insertInfo(this, false);" >
- <option value="V{incident_date}">$i18n.getString( "incident_date" )</option>
- <option value="V{enrollment_date}">$i18n.getString( "date_of_enrollment" )</option>
- <option value="V{current_date}">$i18n.getString( "current_date" )</option>
- <option value="V{value_count}">$i18n.getString( "value_count" )</option>
- <option value="V{zero_pos_value_count}">$i18n.getString( "zero_pos_value_count" )</option>
+ <select multiple id="expression-variables" name="expression-variables" size="7" style="width:100%" ondblclick="insertVariable('expression');" >
+ <option value="incident_date">$i18n.getString( "incident_date" )</option>
+ <option value="enrollment_date">$i18n.getString( "date_of_enrollment" )</option>
+ <option value="current_date">$i18n.getString( "current_date" )</option>
+ <option value="value_count">$i18n.getString( "value_count" )</option>
+ <option value="zero_pos_value_count">$i18n.getString( "zero_pos_value_count" )</option>
</select>
</td>
</tr>
@@ -83,13 +95,13 @@
<table style="width:100%">
<tr>
<td>
- <input type='text' id='txtSearchContsValue' name='txtSearchAttrValue' onKeyUp="filterExpressionSelect(event, this.value, 'constants');" placeholder="$i18n.getString('filter')" />
- <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('txtSearchContsValue', '');" />
+ <input type='text' id='expression-const-search' onKeyUp="filterExpressionSelect(event, this.value, 'expression-constants');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('expression-const-search', '');" />
</td>
</tr>
<tr>
<td>
- <select multiple id="constants" name="constants" size="7" style="width:100%" ondblclick="insertData(this,'C');">
+ <select multiple id="expression-constants" name="expression-constants" size="7" style="width:100%" ondblclick="insertConstant('expression');">
#foreach( $constant in $constants )
<option value='$constant.uid'>$encoder.htmlEncode($constant.displayName)</option>
#end
@@ -112,13 +124,13 @@
</td>
</tr>
<tr>
- <td>
- <a class="greyButtonLink" href="javascript:insertOperator( '(' )" title="$i18n.getString( 'left_brackets' )">(</a>
- <a class="greyButtonLink" href="javascript:insertOperator( ')' )" title="$i18n.getString( 'right_brackets' )">)</a>
- <a class="greyButtonLink" href="javascript:insertOperator( '*' )" title="$i18n.getString( 'multiply' )">*</a>
- <a class="greyButtonLink" href="javascript:insertOperator( '/' )" title="$i18n.getString( 'divide' )">/</a>
- <a class="greyButtonLink" href="javascript:insertOperator( '+' )" title="$i18n.getString( 'plus' )">+</a>
- <a class="greyButtonLink" href="javascript:insertOperator( '-' )" title="$i18n.getString( 'minus' )">-</a><br><br>
+ <td style="padding-top:4px">
+ <a class="greyButtonLink" href="javascript:insertOperator( 'expression', '(' )" title="$i18n.getString( 'left_brackets' )">(</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'expression', ')' )" title="$i18n.getString( 'right_brackets' )">)</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'expression', '*' )" title="$i18n.getString( 'multiply' )">*</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'expression', '/' )" title="$i18n.getString( 'divide' )">/</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'expression', '+' )" title="$i18n.getString( 'plus' )">+</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'expression', '-' )" title="$i18n.getString( 'minus' )">-</a><br><br>
</td>
</tr>
<tr>
@@ -126,12 +138,135 @@
</tr>
<tr>
<td>
- <div id='aggregationDescription' style="padding: 5px 0 20px 0">$!encoder.htmlEncode($!description)</div>
- <input type="hidden" id="checkExpression" name="checkExpression" title="$i18n.getString('expression_is_not_well_formed')" class="{validate:{required:true}}" />
- </td>
- </tr>
-</table>
+ <div id='expression-description' style="padding: 5px 0 20px 0">$!encoder.htmlEncode($!description)</div>
+ <input type="hidden" id="checkExpression" name="checkExpression" title="$i18n.getString('expression_is_not_well_formed')" class="{validate:{required:true}}" />
+ </td>
+ </tr>
+</table>
+
+<!-- Filter -->
+
+<table style="margin-top:30px">
+ <tr>
+ <td><div class="message message-info">The filter is applied to events and filters the data source used for the calculation</div></td>
+ </tr>
+ <tr>
+ <th>$i18n.getString( "filter_items" )</th>
+ </tr>
+ <tr>
+ <td>
+
+ <div id="filter-tabs" style="width:670px; margin: 1px 0;">
+ <ul>
+ <li><a href="#filter-tab1">$i18n.getString("data_elements")</a></li>
+ #if($program.type!='3')
+ <li><a href="#filter-tab2">$i18n.getString("attributes")</a></li>
+ #end
+ <li><a href="#filter-tab4">$i18n.getString("constants")</a></li>
+ </ul>
+
+ <div id="filter-tab1">
+ <table style="width:100%">
+ <tr>
+ <td>
+ <select id="filter-program-stage" onChange="getTrackedEntityDataElements('filter');" style="width:35%;margin-right:20px;">
+ <option value=''>[ $i18n.getString('select_program_stage') ]</option>
+ #foreach( $programStage in $program.programStages )
+ <option value='$programStage.uid'>$programStage.displayName</option>
+ #end
+ </select>
+ <input type='text' id='filter-de-search' onKeyUp="filterExpressionSelect(event, this.value, 'filter-data-elements');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('filter-de-search', '');" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <select multiple id="filter-data-elements" name="filter-data-elements" size="7" style="width:100%" ondblclick="insertDataElement('filter');"></select>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ #if($program.type!='3')
+
+ <div id="filter-tab2">
+ <table style="width:100%">
+ <tr>
+ <td>
+ <input type='text' id='filter-attr-search' onKeyUp="filterExpressionSelect(event, this.value, 'filter-attributes');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('filter-attr-search', '');" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <select multiple id="filter-attributes" name="filter-attributes" size="7" style="width:100%" ondblclick="insertAttribute('filter');">
+ #foreach( $programAttribute in $program.programAttributes )
+ #if( $programAttribute.attribute.valueType=='number' )
+ <option value='$programAttribute.attribute.uid'>$encoder.htmlEncode($programAttribute.attribute.displayName)</option>
+ #end
+ #end
+ </select>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ #end
+
+ <div id="filter-tab4">
+ <table style="width:100%">
+ <tr>
+ <td>
+ <input type='text' id='filter-const-search' onKeyUp="filterExpressionSelect(event, this.value, 'filter-constants');" placeholder="$i18n.getString('filter')" />
+ <input type='button' value='$i18n.getString("clear")' onClick="setFieldValue('filter-const-search', '');" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <select multiple id="filter-constants" name="filter-constants" size="7" style="width:100%" ondblclick="insertConstant('filter')">
+ #foreach( $constant in $constants )
+ <option value='$constant.uid'>$encoder.htmlEncode($constant.displayName)</option>
+ #end
+ </select>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+
+ </td>
+ </tr>
+ <tr>
+ <th style="padding-top:15px">$i18n.getString( "filter" ) <span class="tipText">Tip: use abs(x) sin(x) cos(x) tan(x) ln(x) log(x) sqrt(x) mod(x,y) oizp(x) zing(x)</span></th>
+ </tr>
+ <tr>
+ <td>
+ <textarea style="width:665px" id="filter" name="filter" onkeyup='getConditionDescription();' >$!encoder.htmlEncode($!programIndicator.filter)</textarea>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-top:4px">
+ <a class="greyButtonLink" href="javascript:insertOperator( 'filter', '(' )" title="$i18n.getString( 'left_brackets' )">(</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'filter', ')' )" title="$i18n.getString( 'right_brackets' )">)</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'filter', '*' )" title="$i18n.getString( 'multiply' )">*</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'filter', '/' )" title="$i18n.getString( 'divide' )">/</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'filter', '+' )" title="$i18n.getString( 'plus' )">+</a>
+ <a class="greyButtonLink" href="javascript:insertOperator( 'filter', '-' )" title="$i18n.getString( 'minus' )">-</a><br><br>
+ </td>
+ </tr>
+ <tr>
+ <th style="padding-top:4px">$i18n.getString( "filter_description" )</th>
+ </tr>
+ <tr>
+ <td>
+ <div id='filter-description' style="padding: 5px 0 20px 0">$!encoder.htmlEncode($!description)</div>
+ <input type="hidden" id="checkExpression" name="checkExpression" title="$i18n.getString('expression_is_not_well_formed')" class="{validate:{required:true}}" />
+ </td>
+ </tr>
+</table>
<script type="text/javascript">
$('#expression-tabs').tabs();
+ $('#filter-tabs').tabs();
</script>
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramIndicator.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramIndicator.vm 2015-03-31 16:25:10 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramIndicator.vm 2015-06-02 18:23:24 +0000
@@ -77,18 +77,6 @@
</td>
<td></td>
</tr>
- <tr>
- <td><label for="programStageId">$i18n.getString( "program_stage" ) </label></td>
- <td>
- <select id="programStageId" name="programStageId" onChange="getTrackedEntityDataElements();">
- <option value=''>[$i18n.getString('please_select')]</option>
- #foreach( $programStage in $programIndicator.program.programStages )
- <option value='$programStage.uid'>$encoder.htmlEncode($programStage.displayName)</option>
- #end
- </select>
- </td>
- <td></td>
- </tr>
</table>
<br>