2015-12-01 05:06:34 +00:00
/*----------------------------------------------------------------------------------| www.giz.de |----/
Deutsche Gesellschaft für International Zusammenarbeit ( GIZ ) Gmb
/-------------------------------------------------------------------------------------------------------/
2016-01-14 07:44:50 +00:00
@ version 3.3 . 0
2016-01-31 20:24:19 +00:00
@ build 31 st January , 2016
2015-12-01 05:06:34 +00:00
@ created 15 th June , 2012
@ package Cost Benefit Projection
@ subpackage intervention . js
@ author Llewellyn van der Merwe < http : //www.vdm.io>
@ owner Deutsche Gesellschaft für International Zusammenarbeit ( GIZ ) Gmb
@ copyright Copyright ( C ) 2015. All Rights Reserved
@ license GNU / GPL Version 2 or later - http : //www.gnu.org/licenses/gpl-2.0.html
/-------------------------------------------------------------------------------------------------------/
Cost Benefit Projection Tool .
/------------------------------------------------------------------------------------------------------*/
// Some Global Values
2016-01-31 20:28:30 +00:00
jform _oSAonkbhIG _required = false ;
jform _XkMHBjZeDC _required = false ;
2015-12-01 05:06:34 +00:00
// Initial Script
jQuery ( document ) . ready ( function ( )
{
2016-01-31 20:28:30 +00:00
var type _oSAonkb = jQuery ( "#jform_type input[type='radio']:checked" ) . val ( ) ;
oSAonkb ( type _oSAonkb ) ;
2015-12-01 05:06:34 +00:00
2016-01-31 20:28:30 +00:00
var type _osTQPbV = jQuery ( "#jform_type input[type='radio']:checked" ) . val ( ) ;
osTQPbV ( type _osTQPbV ) ;
2016-01-14 07:44:50 +00:00
2016-01-31 20:28:30 +00:00
var company _XkMHBjZ = jQuery ( "#jform_company" ) . val ( ) ;
XkMHBjZ ( company _XkMHBjZ ) ;
2015-12-01 05:06:34 +00:00
} ) ;
2016-01-31 20:28:30 +00:00
// the oSAonkb function
function oSAonkb ( type _oSAonkb )
2015-12-01 05:06:34 +00:00
{
2016-01-14 07:44:50 +00:00
// set the function logic
2016-01-31 20:28:30 +00:00
if ( type _oSAonkb == 2 )
2015-12-01 05:06:34 +00:00
{
jQuery ( '#jform_interventions' ) . closest ( '.control-group' ) . show ( ) ;
2016-01-31 20:28:30 +00:00
if ( jform _oSAonkbhIG _required )
2015-12-01 05:06:34 +00:00
{
updateFieldRequired ( 'interventions' , 0 ) ;
jQuery ( '#jform_interventions' ) . prop ( 'required' , 'required' ) ;
jQuery ( '#jform_interventions' ) . attr ( 'aria-required' , true ) ;
jQuery ( '#jform_interventions' ) . addClass ( 'required' ) ;
2016-01-31 20:28:30 +00:00
jform _oSAonkbhIG _required = false ;
2015-12-01 05:06:34 +00:00
}
}
else
{
jQuery ( '#jform_interventions' ) . closest ( '.control-group' ) . hide ( ) ;
2016-01-31 20:28:30 +00:00
if ( ! jform _oSAonkbhIG _required )
2015-12-01 05:06:34 +00:00
{
updateFieldRequired ( 'interventions' , 1 ) ;
jQuery ( '#jform_interventions' ) . removeAttr ( 'required' ) ;
jQuery ( '#jform_interventions' ) . removeAttr ( 'aria-required' ) ;
jQuery ( '#jform_interventions' ) . removeClass ( 'required' ) ;
2016-01-31 20:28:30 +00:00
jform _oSAonkbhIG _required = true ;
2015-12-01 05:06:34 +00:00
}
}
}
2016-01-31 20:28:30 +00:00
// the osTQPbV function
function osTQPbV ( type _osTQPbV )
2015-12-01 05:06:34 +00:00
{
2016-01-14 07:44:50 +00:00
// set the function logic
2016-01-31 20:28:30 +00:00
if ( type _osTQPbV == 1 )
2015-12-01 05:06:34 +00:00
{
jQuery ( '#jform_intervention' ) . closest ( '.control-group' ) . show ( ) ;
}
else
{
jQuery ( '#jform_intervention' ) . closest ( '.control-group' ) . hide ( ) ;
}
}
2016-01-31 20:28:30 +00:00
// the XkMHBjZ function
function XkMHBjZ ( company _XkMHBjZ )
2016-01-14 07:44:50 +00:00
{
2016-01-31 20:28:30 +00:00
if ( isSet ( company _XkMHBjZ ) && company _XkMHBjZ . constructor !== Array )
2016-01-14 07:44:50 +00:00
{
2016-01-31 20:28:30 +00:00
var temp _XkMHBjZ = company _XkMHBjZ ;
var company _XkMHBjZ = [ ] ;
company _XkMHBjZ . push ( temp _XkMHBjZ ) ;
2016-01-14 07:44:50 +00:00
}
2016-01-31 20:28:30 +00:00
else if ( ! isSet ( company _XkMHBjZ ) )
2016-01-14 07:44:50 +00:00
{
2016-01-31 20:28:30 +00:00
var company _XkMHBjZ = [ ] ;
2016-01-14 07:44:50 +00:00
}
2016-01-31 20:28:30 +00:00
var company = company _XkMHBjZ . some ( company _XkMHBjZ _SomeFunc ) ;
2016-01-14 07:44:50 +00:00
// set this function logic
if ( company )
{
jQuery ( '#jform_country' ) . closest ( '.control-group' ) . show ( ) ;
2016-01-31 20:28:30 +00:00
if ( jform _XkMHBjZeDC _required )
2016-01-14 07:44:50 +00:00
{
updateFieldRequired ( 'country' , 0 ) ;
jQuery ( '#jform_country' ) . prop ( 'required' , 'required' ) ;
jQuery ( '#jform_country' ) . attr ( 'aria-required' , true ) ;
jQuery ( '#jform_country' ) . addClass ( 'required' ) ;
2016-01-31 20:28:30 +00:00
jform _XkMHBjZeDC _required = false ;
2016-01-14 07:44:50 +00:00
}
}
else
{
jQuery ( '#jform_country' ) . closest ( '.control-group' ) . hide ( ) ;
2016-01-31 20:28:30 +00:00
if ( ! jform _XkMHBjZeDC _required )
2016-01-14 07:44:50 +00:00
{
updateFieldRequired ( 'country' , 1 ) ;
jQuery ( '#jform_country' ) . removeAttr ( 'required' ) ;
jQuery ( '#jform_country' ) . removeAttr ( 'aria-required' ) ;
jQuery ( '#jform_country' ) . removeClass ( 'required' ) ;
2016-01-31 20:28:30 +00:00
jform _XkMHBjZeDC _required = true ;
2016-01-14 07:44:50 +00:00
}
}
}
2016-01-31 20:28:30 +00:00
// the XkMHBjZ Some function
function company _XkMHBjZ _SomeFunc ( company _XkMHBjZ )
2016-01-14 07:44:50 +00:00
{
// set the function logic
2016-01-31 20:28:30 +00:00
if ( company _XkMHBjZ == 0 )
2016-01-14 07:44:50 +00:00
{
return true ;
}
return false ;
}
2015-12-01 05:06:34 +00:00
// update required fields
function updateFieldRequired ( name , status )
{
var not _required = jQuery ( '#jform_not_required' ) . val ( ) ;
if ( status == 1 )
{
if ( isSet ( not _required ) && not _required != 0 )
{
not _required = not _required + ',' + name ;
}
else
{
not _required = ',' + name ;
}
}
else
{
if ( isSet ( not _required ) && not _required != 0 )
{
not _required = not _required . replace ( ',' + name , '' ) ;
}
}
jQuery ( '#jform_not_required' ) . val ( not _required ) ;
}
// the isSet function
function isSet ( val )
{
if ( ( val != undefined ) && ( val != null ) && 0 !== val . length ) {
return true ;
}
return false ;
}
jQuery ( document ) . ready ( function ( )
{
var inter _type = jQuery ( "#jform_type input[type='radio']:checked" ) . val ( ) ;
var interventions = jQuery ( '#jform_intervention' ) . val ( ) ;
if ( 1 == inter _type && interventions ) {
getBuildTable ( interventions , 'jform_intervention' , 'nee' ) ;
} else if ( 2 == inter _type && interventions ) {
getBuildTable ( interventions , 'jform_interventions' , 'ja' ) ;
}
jQuery ( '.save-modal-data' ) . text ( 'Done' ) ;
} ) ;
function getClusterData ( array , idName ) {
var cluster = JSON . stringify ( array ) ;
getClusterData _server ( cluster , idName ) . done ( function ( result ) {
if ( result . table ) {
buildTable ( result . table , idName ) ;
// ubdate the main set of values
jQuery ( '#jform_intervention' ) . val ( result . values ) ;
} else {
jQuery ( '#table_' + idName ) . remove ( ) ;
jQuery ( '#jform_intervention' ) . val ( '' ) ;
jQuery ( '.btn-wrapper' ) . show ( ) ;
jQuery ( '#inputYYYNote' ) . remove ( ) ;
}
} )
}
function getClusterData _server ( cluster , idName ) {
var getUrl = "index.php?option=com_costbenefitprojection&task=ajax.getClusterData&format=json" ;
if ( token . length > 0 && cluster . length > 0 && idName . length > 0 ) {
var request = 'token=' + token + '&idName=' + idName + '&cluster=' + cluster ;
}
return jQuery . ajax ( {
type : 'GET' ,
url : getUrl ,
dataType : 'jsonp' ,
data : request ,
jsonp : 'callback'
} ) ;
}
function getBuildTable _server ( string , idName , cluster ) {
var getUrl = "index.php?option=com_costbenefitprojection&task=ajax.interventionBuildTable&format=json" ;
if ( token . length > 0 && string . length > 0 && idName . length > 0 ) {
var request = 'token=' + token + '&idName=' + idName + '&oject=' + string + '&cluster=' + cluster ;
}
return jQuery . ajax ( {
type : 'GET' ,
url : getUrl ,
dataType : 'jsonp' ,
data : request ,
jsonp : 'callback'
} ) ;
}
function getBuildTable ( intervention , idName , cluster ) {
if ( 'ne' == cluster )
{
var intervention = JSON . stringify ( intervention ) ;
cluster = 'nee' ;
}
getBuildTable _server ( intervention , idName , cluster ) . done ( function ( result ) {
if ( result ) {
buildTable ( result , idName ) ;
} else {
jQuery ( '#table_' + idName ) . remove ( ) ;
}
} )
}
function buildTable ( result , idName ) {
jQuery ( '#table_' + idName ) . remove ( ) ;
jQuery ( '#' + idName ) . closest ( '.control-group' ) . append ( result ) ;
// check if we have cross match values
if ( jQuery ( ".eRrOr" ) . length > 0 ) {
jQuery ( '.btn-wrapper' ) . hide ( ) ;
if ( jQuery ( '#inputYYYNote' ) . length <= 0 ) {
jQuery ( '#system-message-container' ) . append ( '<div id="inputYYYNote" class="alert alert-error"><p>Values cross match between selected interventions please update all in red!</p></div>' ) ;
}
} else {
jQuery ( '.btn-wrapper' ) . show ( ) ;
jQuery ( '#inputYYYNote' ) . remove ( ) ;
}
}
function updateSelection ( row )
{
var groupId = jQuery ( row ) . find ( "select:first" ) . attr ( "id" ) ;
var percentValue = jQuery ( row ) . find ( ".text_area:first" ) . val ( ) ;
var arr = groupId . split ( '-' ) ;
if ( arr [ 1 ] != 1 )
{
var selection = { } ;
jQuery ( row ) . find ( "select:first option" ) . each ( function ( )
{
// first get the values and text
selection [ jQuery ( this ) . text ( ) ] = jQuery ( this ) . val ( ) ;
} ) ;
jQuery . each ( causerisk , function ( i , group ) {
jQuery ( row ) . find ( "select:first option[value='" + group + "']" ) . remove ( ) ;
} ) ;
if ( percentValue )
{
var text = jQuery ( row ) . find ( ".chzn-single:first span" ) . text ( ) ;
jQuery ( row ) . find ( "select:first" ) . append ( jQuery ( '<option>' , {
value : selection [ text ] ,
text : text
} ) ) ;
}
jQuery ( row ) . find ( "select:first" ) . trigger ( "liszt:updated" ) ;
if ( percentValue )
{
jQuery ( row ) . find ( "select:first option:selected" ) . val ( selection [ text ] ) ;
jQuery ( row ) . find ( ".chzn-single:first span" ) . text ( text ) ;
}
}
}
function changeFieldValue ( id , value ) {
if ( id . length > 0 ) {
value = jQuery . trim ( value ) ;
if ( value . match ( /[^0-9\.]/g ) || ! value ) {
jQuery ( '#' + id ) . css ( { 'color' : 'red' } ) ;
jQuery ( '#' + id ) . removeClass ( 'eRrOr' ) ;
jQuery ( '#' + id ) . addClass ( 'eRrOr' ) ;
alert ( 'Only numbers should be used, not (' + value + ')' ) ;
} else {
// update value
jQuery ( '#' + id ) . val ( value ) ;
// we must also update the main set of values
var mainset = jQuery ( '#jform_intervention' ) . val ( ) ;
mainset = jQuery . parseJSON ( mainset )
var key = id . split ( '_' ) ;
mainset [ key [ 0 ] ] [ key [ 1 ] ] = value ;
mainset = JSON . stringify ( mainset ) ;
jQuery ( '#jform_intervention' ) . val ( mainset ) ;
jQuery ( '#' + id ) . removeClass ( 'eRrOr' ) ;
jQuery ( '#' + id ) . css ( { 'color' : '' } ) ;
}
// okay update the value
if ( jQuery ( ".eRrOr" ) . length > 0 ) {
jQuery ( '.btn-wrapper' ) . hide ( ) ;
if ( jQuery ( '#inputYYYNote' ) . length <= 0 ) {
jQuery ( '#system-message-container' ) . append ( '<div id="inputYYYNote" class="alert alert-error"><p>Values cross match between selected interventions please update all in red!</p></div>' ) ;
}
} else {
jQuery ( '.btn-wrapper' ) . show ( ) ;
jQuery ( '#inputYYYNote' ) . remove ( ) ;
}
}
}