Cost-Benefit-Projection/site/models/forms/intervention.js

345 lines
9.8 KiB
JavaScript

/*----------------------------------------------------------------------------------| www.giz.de |----/
Deutsche Gesellschaft für International Zusammenarbeit (GIZ) Gmb
/-------------------------------------------------------------------------------------------------------/
@version 3.5.x
@build 27th May, 2022
@created 15th 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
jform_vvvvvvyvwj_required = false;
jform_vvvvvwavwk_required = false;
// Initial Script
jQuery(document).ready(function()
{
var type_vvvvvvy = jQuery("#jform_type input[type='radio']:checked").val();
vvvvvvy(type_vvvvvvy);
var type_vvvvvvz = jQuery("#jform_type input[type='radio']:checked").val();
vvvvvvz(type_vvvvvvz);
var company_vvvvvwa = jQuery("#jform_company").val();
vvvvvwa(company_vvvvvwa);
});
// the vvvvvvy function
function vvvvvvy(type_vvvvvvy)
{
// set the function logic
if (type_vvvvvvy == 2)
{
jQuery('#jform_interventions').closest('.control-group').show();
// add required attribute to interventions field
if (jform_vvvvvvyvwj_required)
{
updateFieldRequired('interventions',0);
jQuery('#jform_interventions').prop('required','required');
jQuery('#jform_interventions').attr('aria-required',true);
jQuery('#jform_interventions').addClass('required');
jform_vvvvvvyvwj_required = false;
}
}
else
{
jQuery('#jform_interventions').closest('.control-group').hide();
// remove required attribute from interventions field
if (!jform_vvvvvvyvwj_required)
{
updateFieldRequired('interventions',1);
jQuery('#jform_interventions').removeAttr('required');
jQuery('#jform_interventions').removeAttr('aria-required');
jQuery('#jform_interventions').removeClass('required');
jform_vvvvvvyvwj_required = true;
}
}
}
// the vvvvvvz function
function vvvvvvz(type_vvvvvvz)
{
// set the function logic
if (type_vvvvvvz == 1)
{
jQuery('#jform_intervention').closest('.control-group').show();
}
else
{
jQuery('#jform_intervention').closest('.control-group').hide();
}
}
// the vvvvvwa function
function vvvvvwa(company_vvvvvwa)
{
if (isSet(company_vvvvvwa) && company_vvvvvwa.constructor !== Array)
{
var temp_vvvvvwa = company_vvvvvwa;
var company_vvvvvwa = [];
company_vvvvvwa.push(temp_vvvvvwa);
}
else if (!isSet(company_vvvvvwa))
{
var company_vvvvvwa = [];
}
var company = company_vvvvvwa.some(company_vvvvvwa_SomeFunc);
// set this function logic
if (company)
{
jQuery('#jform_country').closest('.control-group').show();
// add required attribute to country field
if (jform_vvvvvwavwk_required)
{
updateFieldRequired('country',0);
jQuery('#jform_country').prop('required','required');
jQuery('#jform_country').attr('aria-required',true);
jQuery('#jform_country').addClass('required');
jform_vvvvvwavwk_required = false;
}
}
else
{
jQuery('#jform_country').closest('.control-group').hide();
// remove required attribute from country field
if (!jform_vvvvvwavwk_required)
{
updateFieldRequired('country',1);
jQuery('#jform_country').removeAttr('required');
jQuery('#jform_country').removeAttr('aria-required');
jQuery('#jform_country').removeClass('required');
jform_vvvvvwavwk_required = true;
}
}
}
// the vvvvvwa Some function
function company_vvvvvwa_SomeFunc(company_vvvvvwa)
{
// set the function logic
if (company_vvvvvwa == 0)
{
return true;
}
return false;
}
// update fields required
function updateFieldRequired(name, status) {
// check if not_required exist
if (jQuery('#jform_not_required').length > 0) {
var not_required = jQuery('#jform_not_required').val().split(",");
if(status == 1)
{
not_required.push(name);
}
else
{
not_required = removeFieldFromNotRequired(not_required, name);
}
jQuery('#jform_not_required').val(fixNotRequiredArray(not_required).toString());
}
}
// remove field from not_required
function removeFieldFromNotRequired(array, what) {
return array.filter(function(element){
return element !== what;
});
}
// fix not required array
function fixNotRequiredArray(array) {
var seen = {};
return removeEmptyFromNotRequiredArray(array).filter(function(item) {
return seen.hasOwnProperty(item) ? false : (seen[item] = true);
});
}
// remove empty from not_required array
function removeEmptyFromNotRequiredArray(array) {
return array.filter(function (el) {
// remove ( 一_一) as well - lol
return (el.length > 0 && '一_一' !== el);
});
}
// 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();
}
}
}