=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/validation/ValidationRuleService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/validation/ValidationRuleService.java 2012-02-01 10:50:31 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/validation/ValidationRuleService.java 2012-09-22 18:42:59 +0000 @@ -27,16 +27,14 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import org.hisp.dhis.common.Grid; +import java.util.Collection; +import java.util.Date; + import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; -import java.util.Collection; -import java.util.Date; -import java.util.List; - /** * @author Margrethe Store * @version $Id: ValidationRuleService.java 5434 2008-06-18 18:57:59Z larshelg $ @@ -52,33 +50,6 @@ // ------------------------------------------------------------------------- /** - * Returns a Grid containing the percentage of aggregated violations. Periods - * are listed as columns and Sources are listed as rows. - */ - Grid getAggregateValidationResult( Collection results, List periods, List sources ); - - /** - * Validates AggregatedDataValues. - * - * @param startDate the start date. - * @param endDate the end date. - * @param sources a collection of Sources. - * @return a collection of ValidationResults for each validation violation. - */ - Collection validateAggregate( Date startDate, Date endDate, Collection sources ); - - /** - * Validate AggregatedDataValues. - * - * @param startDate the start date. - * @param endDate the end date. - * @param sources a collection of Sources. - * @param group a group of ValidationRules. - * @return a collection of ValidationResults for each validation violation. - */ - public Collection validateAggregate( Date startDate, Date endDate, Collection sources, ValidationRuleGroup group ); - - /** * Validate DataValues. * * @param startDate the start date. === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java 2012-09-22 15:04:26 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java 2012-09-22 18:42:59 +0000 @@ -38,27 +38,20 @@ import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.hisp.dhis.common.GenericIdentifiableObjectStore; -import org.hisp.dhis.common.Grid; import org.hisp.dhis.constant.ConstantService; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementOperand; -import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.dataset.DataSet; -import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.datavalue.DataValueService; import org.hisp.dhis.expression.ExpressionService; import org.hisp.dhis.i18n.I18nService; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; -import org.hisp.dhis.system.grid.ListGrid; -import org.hisp.dhis.system.util.CompositeCounter; import org.hisp.dhis.system.util.Filter; import org.hisp.dhis.system.util.FilterUtils; import org.springframework.transaction.annotation.Transactional; @@ -106,20 +99,6 @@ this.periodService = periodService; } - private DataSetService dataSetService; - - public void setDataSetService( DataSetService dataSetService ) - { - this.dataSetService = dataSetService; - } - - private DataElementService dataElementService; - - public void setDataElementService( DataElementService dataElementService ) - { - this.dataElementService = dataElementService; - } - private DataValueService dataValueService; public void setDataValueService( DataValueService dataValueService ) @@ -145,106 +124,6 @@ // ValidationRule business logic // ------------------------------------------------------------------------- - // ------------------------------------------------------------------------- - // Aggregate TODO remove - // ------------------------------------------------------------------------- - - public Grid getAggregateValidationResult( Collection results, List periods, - List sources ) - { - int number = validationRuleStore.getCount(); - - Grid grid = new ListGrid(); - - CompositeCounter counter = new CompositeCounter(); - - for ( ValidationResult result : results ) - { - counter.count( result.getPeriod(), result.getSource() ); - } - - grid.addRow(); - grid.addValue( StringUtils.EMPTY ); - - for ( Period period : periods ) - { - grid.addValue( period.getName() ); - } - - for ( OrganisationUnit source : sources ) - { - grid.addRow(); - grid.addValue( source.getName() ); - - for ( Period period : periods ) - { - double percentage = (double) (100 * counter.getCount( period, source )) / number; - - grid.addValue( String.valueOf( getRounded( percentage, DECIMALS ) ) ); - } - } - - return grid; - } - - public Collection validateAggregate( Date startDate, Date endDate, - Collection sources ) - { - Map constantMap = constantService.getConstantMap(); - - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - - Collection validationRules = getAllValidationRules(); - - Set dataElements = getDataElementsInValidationRules( validationRules ); - - Collection validationViolations = new HashSet(); - - for ( OrganisationUnit source : sources ) - { - for ( Period period : periods ) - { - validationViolations.addAll( validateInternal( period, source, validationRules, dataElements, constantMap, true, - validationViolations.size() ) ); - } - } - - return validationViolations; - } - - public Collection validateAggregate( Date startDate, Date endDate, - Collection sources, ValidationRuleGroup group ) - { - Map constantMap = constantService.getConstantMap(); - - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - - Collection dataSets = dataSetService.getDataSetsBySources( sources ); - - Set dataElements = new HashSet( dataElementService.getDataElementsByDataSets( dataSets ) ); - - Collection validationRules = getValidationRulesByDataElements( dataElements ); - - validationRules.retainAll( group.getMembers() ); - - Collection validationViolations = new HashSet(); - - for ( OrganisationUnit source : sources ) - { - for ( Period period : periods ) - { - validationViolations.addAll( validateInternal( period, source, validationRules, dataElements, constantMap, true, - validationViolations.size() ) ); - } - } - - return validationViolations; - } - - // ------------------------------------------------------------------------- - // Regular - // ------------------------------------------------------------------------- - public Collection validate( Date startDate, Date endDate, Collection sources ) { Map constantMap = constantService.getConstantMap(); === 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 2012-09-19 03:00:37 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2012-09-22 18:42:59 +0000 @@ -364,8 +364,6 @@ - - === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java 2012-07-20 11:41:57 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java 2012-09-22 18:42:59 +0000 @@ -38,17 +38,11 @@ import static org.hisp.dhis.expression.Operator.less_than; import static org.hisp.dhis.expression.Operator.less_than_or_equal_to; -import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; -import org.amplecode.quick.BatchHandler; -import org.amplecode.quick.BatchHandlerFactory; import org.hisp.dhis.DhisTest; -import org.hisp.dhis.aggregation.AggregatedDataValue; -import org.hisp.dhis.common.Grid; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementCategoryCombo; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; @@ -59,7 +53,6 @@ import org.hisp.dhis.datavalue.DataValueService; import org.hisp.dhis.expression.Expression; import org.hisp.dhis.expression.ExpressionService; -import org.hisp.dhis.jdbc.batchhandler.AggregatedDataValueBatchHandler; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.MonthlyPeriodType; @@ -67,7 +60,6 @@ import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.PeriodType; import org.hisp.dhis.system.util.MathUtils; -import org.junit.Ignore; import org.junit.Test; /** @@ -77,8 +69,6 @@ public class ValidationRuleServiceTest extends DhisTest { - private BatchHandlerFactory batchHandlerFactory; - private DataElement dataElementA; private DataElement dataElementB; @@ -145,8 +135,6 @@ public void setUpTest() throws Exception { - batchHandlerFactory = (BatchHandlerFactory) getBean( "batchHandlerFactory" ); - validationRuleService = (ValidationRuleService) getBean( ValidationRuleService.ID ); dataElementService = (DataElementService) getBean( DataElementService.ID ); @@ -257,118 +245,6 @@ // ---------------------------------------------------------------------- @Test - public void testGetAggregatedValidationResult() - { - validationRuleService.saveValidationRule( validationRuleA ); - validationRuleService.saveValidationRule( validationRuleB ); - validationRuleService.saveValidationRule( validationRuleC ); - validationRuleService.saveValidationRule( validationRuleD ); - - List periods = new ArrayList(); - periods.add( periodA ); - periods.add( periodB ); - - List sources = new ArrayList(); - sources.add( sourceA ); - sources.add( sourceB ); - - Collection results = new HashSet(); - - results.add( new ValidationResult( periodA, sourceA, validationRuleA, 1, 1 ) ); - results.add( new ValidationResult( periodA, sourceA, validationRuleB, 1, 1 ) ); - results.add( new ValidationResult( periodA, sourceA, validationRuleC, 1, 1 ) ); - results.add( new ValidationResult( periodB, sourceB, validationRuleA, 1, 1 ) ); - results.add( new ValidationResult( periodB, sourceB, validationRuleB, 1, 1 ) ); - - Grid grid = validationRuleService.getAggregateValidationResult( results, periods, sources ); - - // First row is Periods, first column in each row is Source - - assertEquals( "75.0", grid.getValue( 1, 1 ) ); - assertEquals( "0.0", grid.getValue( 1, 2 ) ); - assertEquals( "0.0", grid.getValue( 2, 1 ) ); - assertEquals( "50.0", grid.getValue( 2, 2 ) ); - } - - @Test - @Ignore - public void testValidateAggregatedDateDateSources() - { - periodService.addPeriod( periodA ); - periodService.addPeriod( periodB ); - - BatchHandler batchHandler = batchHandlerFactory.createBatchHandler( - AggregatedDataValueBatchHandler.class ).init(); - - batchHandler.addObject( new AggregatedDataValue( dataElementA.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceA.getId(), 0, 1.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementB.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceA.getId(), 0, 2.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementC.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceA.getId(), 0, 3.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementD.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceA.getId(), 0, 4.0 ) ); - - batchHandler.addObject( new AggregatedDataValue( dataElementA.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceA.getId(), 0, 1.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementB.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceA.getId(), 0, 2.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementC.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceA.getId(), 0, 3.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementD.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceA.getId(), 0, 4.0 ) ); - - batchHandler.addObject( new AggregatedDataValue( dataElementA.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceB.getId(), 0, 1.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementB.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceB.getId(), 0, 2.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementC.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceB.getId(), 0, 3.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementD.getId(), categoryOptionCombo.getId(), periodA - .getId(), 0, sourceB.getId(), 0, 4.0 ) ); - - batchHandler.addObject( new AggregatedDataValue( dataElementA.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceB.getId(), 0, 1.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementB.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceB.getId(), 0, 2.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementC.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceB.getId(), 0, 3.0 ) ); - batchHandler.addObject( new AggregatedDataValue( dataElementD.getId(), categoryOptionCombo.getId(), periodB - .getId(), 0, sourceB.getId(), 0, 4.0 ) ); - - batchHandler.flush(); - - validationRuleService.saveValidationRule( validationRuleA ); - validationRuleService.saveValidationRule( validationRuleB ); - validationRuleService.saveValidationRule( validationRuleC ); - validationRuleService.saveValidationRule( validationRuleD ); - - Collection results = validationRuleService.validateAggregate( getDate( 2000, 2, 1 ), getDate( - 2000, 6, 1 ), sourcesA ); - - Collection reference = new HashSet(); - - reference.add( new ValidationResult( periodA, sourceA, validationRuleA, 3.0, -1.0 ) ); - reference.add( new ValidationResult( periodB, sourceA, validationRuleA, 3.0, -1.0 ) ); - reference.add( new ValidationResult( periodA, sourceB, validationRuleA, 3.0, -1.0 ) ); - reference.add( new ValidationResult( periodB, sourceB, validationRuleA, 3.0, -1.0 ) ); - - reference.add( new ValidationResult( periodA, sourceA, validationRuleB, -1.0, 4.0 ) ); - reference.add( new ValidationResult( periodB, sourceA, validationRuleB, -1.0, 4.0 ) ); - reference.add( new ValidationResult( periodA, sourceB, validationRuleB, -1.0, 4.0 ) ); - reference.add( new ValidationResult( periodB, sourceB, validationRuleB, -1.0, 4.0 ) ); - - for ( ValidationResult result : results ) - { - assertFalse( MathUtils.expressionIsTrue( result.getLeftsideValue(), result.getValidationRule() - .getOperator(), result.getRightsideValue() ) ); - } - - assertEquals( results.size(), 8 ); - assertEquals( reference, results ); - } - - @Test public void testValidateDateDateSources() { dataValueService.addDataValue( createDataValue( dataElementA, periodA, sourceA, "1", categoryOptionCombo ) ); === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java 2012-07-20 11:41:57 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java 2012-09-22 18:42:59 +0000 @@ -38,8 +38,6 @@ import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; -import org.hisp.dhis.period.Period; -import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.util.SessionUtils; import org.hisp.dhis.validation.ValidationResult; import org.hisp.dhis.validation.ValidationRuleGroup; @@ -84,13 +82,6 @@ { this.organisationUnitService = organisationUnitService; } - - private PeriodService periodService; - - public void setPeriodService( PeriodService periodService ) - { - this.periodService = periodService; - } // ------------------------------------------------------------------------- // Input/output @@ -148,18 +139,6 @@ return aggregateResults; } - private boolean aggregate; - - public boolean isAggregate() - { - return aggregate; - } - - public void setAggregate( boolean aggregate ) - { - this.aggregate = aggregate; - } - private boolean maxExceeded; public boolean isMaxExceeded() @@ -182,54 +161,23 @@ { organisationUnit = organisationUnitService.getOrganisationUnit( organisationUnitId ); - if ( aggregate ) // Aggregate data source + Collection organisationUnits = organisationUnitService.getOrganisationUnitWithChildren( organisationUnit.getId() ); + + if ( validationRuleGroupId == -1 ) { - List organisationUnits = new ArrayList( organisationUnit.getChildren() ); - - List periods = new ArrayList( periodService.namePeriods( - periodService.getPeriodsBetweenDates( format.parseDate( startDate ), format.parseDate( endDate ) ), format ) ); - - log.info( "Number of periods: " + periods.size() + ", number of organisation units: " + organisationUnits.size() ); - - if ( validationRuleGroupId == -1 ) - { - log.info( "Validating aggregate data for all rules" ); - - validationResults = new ArrayList( validationRuleService.validateAggregate( format - .parseDate( startDate ), format.parseDate( endDate ), organisationUnits ) ); - } - else - { - ValidationRuleGroup group = validationRuleService.getValidationRuleGroup( validationRuleGroupId ); - - log.info( "Validating aggregate data for rules for group: '" + group.getName() + "'" ); - - validationResults = new ArrayList( validationRuleService.validateAggregate( format - .parseDate( startDate ), format.parseDate( endDate ), organisationUnits, group ) ); - } - - aggregateResults = validationRuleService.getAggregateValidationResult( validationResults, periods, organisationUnits ); + log.info( "Validating captured data for all rules" ); + + validationResults = new ArrayList( validationRuleService.validate( format + .parseDate( startDate ), format.parseDate( endDate ), organisationUnits ) ); } - else // Captured data source + else { - Collection organisationUnits = organisationUnitService.getOrganisationUnitWithChildren( organisationUnit.getId() ); - - if ( validationRuleGroupId == -1 ) - { - log.info( "Validating captured data for all rules" ); - - validationResults = new ArrayList( validationRuleService.validate( format - .parseDate( startDate ), format.parseDate( endDate ), organisationUnits ) ); - } - else - { - ValidationRuleGroup group = validationRuleService.getValidationRuleGroup( validationRuleGroupId ); - - log.info( "Validating captured data for rules for group: '" + group.getName() + "'" ); - - validationResults = new ArrayList( validationRuleService.validate( format - .parseDate( startDate ), format.parseDate( endDate ), organisationUnits, group ) ); - } + ValidationRuleGroup group = validationRuleService.getValidationRuleGroup( validationRuleGroupId ); + + log.info( "Validating captured data for rules for group: '" + group.getName() + "'" ); + + validationResults = new ArrayList( validationRuleService.validate( format + .parseDate( startDate ), format.parseDate( endDate ), organisationUnits, group ) ); } maxExceeded = validationResults.size() > ValidationRuleService.MAX_VIOLATIONS; === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml 2012-07-25 13:18:48 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml 2012-09-22 18:42:59 +0000 @@ -191,9 +191,6 @@ - - - - $i18n.getString( "select_parent_organisation_unit" ) + $i18n.getString( "select_parent_organisation_unit" ) === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/javascript/runValidation.js' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/javascript/runValidation.js 2012-07-26 08:45:54 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/javascript/runValidation.js 2012-09-22 18:42:59 +0000 @@ -45,21 +45,6 @@ return false; } -function drillDownValidation( orgUnitId ) -{ - setHeaderWaitMessage( i18n_analysing_please_wait ); - - var url = 'runValidationAction.action?organisationUnitId=' + orgUnitId + '&startDate=' + startDate + '&endDate=' - + endDate + '&validationRuleGroupId=' + validationRuleGroupId + '&aggregate=' + aggregate; - - $.get( url, function( data ) - { - hideHeaderMessage(); - $( "div#analysisResult" ).html( data ); - setTableStyles(); - } ); -} - function displayValidationDetailsDialog() { $( '#validationResultDetailsDiv' ).dialog( { @@ -78,44 +63,6 @@ ); } -function aggregateChanged() -{ - var aggregate = getListValue( 'aggregate' ); - - if ( aggregate == 'true' ) - { - $( 'span#info' ).html( i18n_aggregate_data_info ); - } else - { - $( 'span#info' ).html( i18n_captured_data_info ); - } -} - -function showAggregateResults() -{ - $( 'div#validationResults' ).hide(); - $( 'div#aggregateResults' ).show(); - var button = document.getElementById( "resultTypeButton" ); - button.onclick = function() - { - showValidationResults(); - }; - button.value = "See validation"; -} - -function showValidationResults() -{ - $( 'div#aggregateResults' ).hide(); - $( 'div#validationResults' ).show(); - - var button = document.getElementById( "resultTypeButton" ); - button.onclick = function() - { - showAggregateResults(); - }; - button.value = "See statistics"; -} - function exportValidationResult( type ) { var url = 'exportValidationResult.action?type=' + type + === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/runValidationForm.vm' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/runValidationForm.vm 2012-07-26 08:45:54 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/runValidationForm.vm 2012-09-22 18:42:59 +0000 @@ -18,6 +18,9 @@
+ + + - - + - + === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/viewValidationResultForm.vm' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/viewValidationResultForm.vm 2011-09-08 17:31:21 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/viewValidationResultForm.vm 2012-09-22 18:42:59 +0000 @@ -16,24 +16,21 @@ - - - - +
$i18n.getString( 'select_parameters' )
@@ -48,22 +51,14 @@
- - - -
$i18n.getString( "captured_data_info" )$i18n.getString( "select_parent_organisation_unit" )
-
+
$i18n.getString( "start_date" ): $startDate #if( $aggregate )#end
$i18n.getString( "end_date" ): $endDate
@@ -77,7 +74,7 @@ #foreach( $result in $validationResults ) - $!result.source.name + $!result.source.name $!format.formatPeriod( $result.period ) $!result.validationRule.leftSide.description $!result.leftsideValue @@ -96,34 +93,6 @@
- - #end