core-resource-app-test
Version:
App that contains assets and scripts for the core apps
298 lines (245 loc) • 10.3 kB
JavaScript
//====================================================================================
// DATAELEMENT & DATA ELEMENT GROUP & CATEGORY OPTION COMBO
//====================================================================================
function DataDictionary()
{
var ALL_KEY = 'all';
var dataElementsGroups = new Array();
var dataElementGroupList = new Array();
var indicatorGroups = new Array();
var indicatorGroupList = new Array();
var categoryOptionComboList = new Array();
var params = {};
this.loadDataElementGroups = function( jQuerySelectionString )
{
var target = jQuery( jQuerySelectionString );
target.children().remove();
if ( dataElementsGroups.length == 0 )
{
jQuery.getJSON( '../dhis-web-commons-ajax-json/getDataElementGroups.action', function( json )
{
target.append( '<option value="' + ALL_KEY + '">ALL</option>' );
dataElementsGroups.push( new DataElementGroup( ALL_KEY, 'ALL' ) );
jQuery.each( json.dataElementGroups, function( i, item )
{
dataElementsGroups.push( new DataElementGroup( item.id, item.name ) );
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
} );
} else
{
jQuery.each( dataElementsGroups, function( i, item )
{
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
}
};
this.loadAllDataElements = function( jQuerySelectionString )
{
this.loadDataElementsByGroup( '0', jQuerySelectionString );
};
this.loadDataElementsByGroup = function( id, jQuerySelectionString )
{
var target = jQuery( jQuerySelectionString );
target.children().remove();
var des = dataElementGroupList[id];
if ( des == null )
{
des = new Array();
jQuery.getJSON( '../dhis-web-commons-ajax-json/getDataElements.action', {
id : id
}, function( json )
{
jQuery.each( json.dataElements, function( i, item )
{
des.push( new DataElement( item.id, item.name ) );
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
dataElementGroupList[id] = des;
} );
} else
{
jQuery.each( des, function( i, item )
{
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
}
};
this.loadIndicatorGroups = function( jQuerySelectionString )
{
var target = jQuery( jQuerySelectionString );
target.children().remove();
if ( indicatorGroups.length == 0 )
{
jQuery.getJSON( '../dhis-web-commons-ajax-json/getIndicatorGroups.action', function( json )
{
target.append( '<option value="' + ALL_KEY + '">ALL</option>' );
indicatorGroups.push( new IndicatorGroup( ALL_KEY, 'ALL' ) );
jQuery.each( json.indicatorGroups, function( i, item )
{
indicatorGroups.push( new IndicatorGroup( item.id, item.name ) );
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
} );
} else
{
jQuery.each( indicatorGroups, function( i, item )
{
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
}
};
this.loadAllIndicators = function( jQuerySelectionString )
{
this.loadIndicatorsByGroup( ALL_KEY, jQuerySelectionString );
};
this.loadIndicatorsByGroup = function( id, jQuerySelectionString )
{
var target = jQuery( jQuerySelectionString );
target.children().remove();
var ins = indicatorGroupList[id];
if ( ins == null )
{
ins = new Array();
jQuery.getJSON( '../dhis-web-commons-ajax-json/getIndicators.action', {
id : id
}, function( json )
{
jQuery.each( json.indicators, function( i, item )
{
ins.push( new Indicator( item.id, item.name ) );
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
indicatorGroupList[id] = ins;
} );
} else
{
jQuery.each( ins, function( i, item )
{
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
}
};
this.loadCategoryOptionComboByDE = function( id, jQuerySelectionString )
{
var target = jQuery( jQuerySelectionString );
target.children().remove();
var options = categoryOptionComboList[id];
if ( options == null )
{
options = new Array();
jQuery.getJSON( '../dhis-web-commons-ajax-json/getCategoryOptionCombos.action', {
id : id
}, function( json )
{
jQuery.each( json.categoryOptionCombos, function( i, item )
{
options.push( new OptionCombo( item.id, item.name ) );
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
categoryOptionComboList[id] = options;
} );
} else
{
jQuery.each( options, function( i, item )
{
target.append( '<option value="' + item.id + '">' + item.name + '</option>' );
} );
}
};
this.reloadOperands = function( currentpage )
{
this.params.currentPage = currentpage;
this.loadOperands( this.jQuerySelectionString, this.params );
};
this.changeOperandsPageSize = function( pagesize )
{
this.params.pageSize = pagesize;
this.loadOperands( this.jQuerySelectionString, this.params );
};
this.loadOperands = function( jQuerySelectionString, params )
{
var target = jQuery( jQuerySelectionString );
target.children().remove();
this.params = params;
this.jQuerySelectionString = jQuerySelectionString;
jQuery.postJSON(
'../dhis-web-commons-ajax-json/getOperands.action',
this.params,
function( json )
{
jQuery.each( json.operands, function( i, item )
{
target.append( '<option value="#{' + item.operandId + '}">' + item.operandName
+ '</option>' );
} );
if ( params.usePaging )
{
var numberOfPages = json.paging.numberOfPages;
var currentPage = json.paging.currentPage;
var pageSize = json.paging.pageSize;
var startPage = json.paging.startPage;
var html = '<div id="operandPaging_div">';
if ( numberOfPages > 1 )
{
html += 'Page: <select onchange="dataDictionary.reloadOperands( this.value )" style="width:60px">';
for ( var i = 1; i <= numberOfPages; i++ )
{
html += '<option value="' + i + '"' + (currentPage == i ? 'selected=true' : '')
+ '>' + i + '</option>';
}
html += '</select>';
if ( currentPage == startPage )
{
html += '<button type="button" disabled="disabled">Previous page</button>';
html += '<button type="button" onclick="dataDictionary.reloadOperands( '
+ (parseInt( currentPage ) + 1) + ' )">Next page</button>';
}
else if ( currentPage == numberOfPages )
{
html += '<button type="button" onclick="dataDictionary.reloadOperands( '
+ (parseInt( currentPage ) - 1) + ' )">Previous page</button>';
html += '<button type="button" disabled="disabled">Next page</button>';
}
else
{
html += '<button type="button" onclick="dataDictionary.reloadOperands( '
+ (parseInt( currentPage ) - 1) + ')">Previous page</button>';
html += '<button type="button" onclick="dataDictionary.reloadOperands( '
+ (parseInt( currentPage ) + 1) + ')">Next page</button>';
}
}
html += 'Size: <input type="text" style="width:50px" onchange="dataDictionary.changeOperandsPageSize( this.value )" value="'
+ pageSize + '"/></div>';
jQuery( '#operandPaging_div' ).remove();
jQuery( html ).insertAfter( target );
}
} );
};
}
var dataDictionary = new DataDictionary();
function DataElementGroup( id_, name_ )
{
this.id = id_;
this.name = name_;
}
function DataElement( id_, name_ )
{
this.id = id_;
this.name = name_;
}
function OptionCombo( id_, name_ )
{
this.id = id_;
this.name = name_;
}
function IndicatorGroup( id_, name_ )
{
this.id = id_;
this.name = name_;
}
function Indicator( id_, name_ )
{
this.id = id_;
this.name = name_;
}