Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi
  • Page :
  • 1
  • 2

SUJET : Array number with Filter option needs one column with formula

Array number with Filter option needs one column with formula il y a 2 mois 3 semaines #104251

  • pmp
  • Portrait de pmp
  • Hors ligne
  • Junior Lime
  • Messages : 20
  • Karma: 0
Hello,

I am new to this and found very interesting . I am trying to setup a evaluation survey. I have added two questions. q1 a multiple choice type and second question is Array Numbers with filter condition on Q1.with subquestions Y Scale 3 Sub questions SQ0001-SQ0003 and X scale 5 Sub questions SQ0001 to SQ0005. Now SQ0005 needs to calculate automatically based on the formula. How Can i achieve this. I saw many posting, but i am not sure how to get this done.

Would appreciate any help
Pièces jointes :
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 3 semaines #104261

  • tpartner
  • Portrait de tpartner
  • Hors ligne
  • LimeSurvey Team
  • Messages : 3813
  • Remerciements reçus 683
  • Karma: 328
You will need to use JavaScript to automatically load those inputs.

1) Set up your survey to use JavaScript.

2) Add this script to the source of the array.

<script type="text/javascript" charset="utf-8">	
 
	$(document).ready(function(){
		var thisQuestion = $('#question{QID}');
 
		// Add some classes for manipulation
		$('tr.subquestions-list', thisQuestion).each(function(i){
			$('> *', this).each(function(i){
				$(this).addClass('col-'+i+'');
			});
		});
		$('.col-2 input[type="text"]', thisQuestion).addClass('final');
		$('.col-3 input[type="text"]', thisQuestion).addClass('percent');
		$('.col-4 input[type="text"]', thisQuestion).addClass('rating');
 
		// Disable the "Rating" inputs
		$('input.rating', thisQuestion).prop('disabled', true);
 
		// Listeners on the "Final" and "Percent" inputs
		$('input.final, input.percent', thisQuestion).change(function(event) {
			handleRating(this);
		});
		$('input.final, input.percent', thisQuestion).keyup(function(event) {
			handleRating(this);
		});		
		function handleRating(thisInput) {
			var thisRow = $(thisInput).closest('tr.subquestions-list');
			var thisFinal = $('input.final', thisRow).val();
			var thisPercent = $('input.percent', thisRow).val();
			if(thisFinal != '' && thisPercent != '') {
				$('input.rating', thisRow).val(thisFinal * thisPercent / 100)
			}
			else {
				$('input.rating', thisRow).val('');
			}
		}
 
		// Re-enable the "Rating" inputs on submit
		$('form#limesurvey').submit(function(){			
			$('input.rating', thisQuestion).prop('disabled', false);
		});
	});
 
</script>

.
Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

LimeSurvey is open-source and run entirely by volunteers so please consider donating to support the project.
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: pmp

Array number with Filter option needs one column with formula il y a 2 mois 3 semaines #104304

  • pmp
  • Portrait de pmp
  • Hors ligne
  • Junior Lime
  • Messages : 20
  • Karma: 0
This is sweet. It worked- I couldn't imagine we have such huge possibilities of this tool.
I luv it :cheer:

Thanks a lot for helping me in this
PMP
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 3 semaines #104310

  • pmp
  • Portrait de pmp
  • Hors ligne
  • Junior Lime
  • Messages : 20
  • Karma: 0
Is there a way I can get the Total of the last column. I am not getting the total option enable as it is array Numbers type.
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 3 semaines #104317

  • tpartner
  • Portrait de tpartner
  • Hors ligne
  • LimeSurvey Team
  • Messages : 3813
  • Remerciements reçus 683
  • Karma: 328
Can you provide a screenshot or mockup?
Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

LimeSurvey is open-source and run entirely by volunteers so please consider donating to support the project.
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 3 semaines #104321

  • pmp
  • Portrait de pmp
  • Hors ligne
  • Junior Lime
  • Messages : 20
  • Karma: 0
Attached the mockup-
Appreciate your help-
Pièces jointes :
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 2 semaines #104323

  • tpartner
  • Portrait de tpartner
  • Hors ligne
  • LimeSurvey Team
  • Messages : 3813
  • Remerciements reçus 683
  • Karma: 328
Okay, I get it.

Do you need this recorded in the data or is it just a visual for the respondent?


.
Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

LimeSurvey is open-source and run entirely by volunteers so please consider donating to support the project.
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 2 semaines #104328

  • pmp
  • Portrait de pmp
  • Hors ligne
  • Junior Lime
  • Messages : 20
  • Karma: 0
this is to be recorded-
Thanks
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 2 semaines #104354

  • tpartner
  • Portrait de tpartner
  • Hors ligne
  • LimeSurvey Team
  • Messages : 3813
  • Remerciements reçus 683
  • Karma: 328
Okay, in that case, I would add another sub-question to the array - "Total".

Then use this script instead of the one above. In addition to previous functionality, it will:
- Hide the first 3 inputs in the "Total" row
- Dynamically load the column totals into the "Total" inputs
<script type="text/javascript" charset="utf-8">	
 
	$(document).ready(function(){
		var thisQuestion = $('#question{QID}');
		var qID = {QID};
 
		// Add some classes for manipulation
		$('tr.subquestions-list', thisQuestion).each(function(i){
			$('> *', this).each(function(i){
				$(this).addClass('col-'+i+'');
			});
		});
		$('tr.subquestions-list:last', thisQuestion).addClass('last');
		$('tr.subquestions-list:not(.last) .col-2 input[type="text"]', thisQuestion).addClass('final');
		$('tr.subquestions-list:not(.last) .col-3 input[type="text"]', thisQuestion).addClass('percent');
		$('tr.subquestions-list:not(.last) .col-4 input[type="text"]', thisQuestion).addClass('rating');
 
		// Disable the "Rating" inputs
		$('input.rating', thisQuestion).prop('disabled', true);
 
		// Hide the unwanted total inputs
		$('tr.subquestions-list.last input[type="text"]:not(:last)', thisQuestion).hide();
 
		// Initial totals
		$('tr.subquestions-list.last input[type="text"]', thisQuestion).val(0).prop('disabled', true);
		var lastRowCode = $('tr.subquestions-list:last', thisQuestion).attr('id').split('X'+qID)[1];
 
		// Listeners on the "Final" and "Percent" inputs
		$('input.final, input.percent', thisQuestion).change(function(event) {
			handleRating(this);
		});
		$('input.final, input.percent', thisQuestion).keyup(function(event) {
			handleRating(this);
		});		
		function handleRating(thisInput) {
			var thisRow = $(thisInput).closest('tr.subquestions-list');
			var thisFinal = $('input.final', thisRow).val();
			var thisPercent = $('input.percent', thisRow).val();
			if(thisFinal != '' && thisPercent != '') {
				$('input.rating', thisRow).val(thisFinal * thisPercent / 100)
			}
			else {
				$('input.rating', thisRow).val('');
			}
		}
 
		// Listeners on the inputs to load totals
		$('tr.subquestions-list:not(.last) input[type="text"]:not(.rating)', thisQuestion).change(function(event) {
			handleTotals();
		});
		$('tr.subquestions-list:not(.last) input[type="text"]:not(.rating)', thisQuestion).keyup(function(event) {
			handleTotals();
		});	
		function handleTotals() {
			$('tr.subquestions-list.last input[type="text"]', thisQuestion).each(function(i) {
				var thisCode = $(this).attr('id').split('X'+qID+lastRowCode+'_')[1];
				var newTotal = 0;
				$('tr.subquestions-list:not(.last) input[type="text"][id$="_'+thisCode+'"]', thisQuestion).each(function(i) {
					if($.isNumeric($(this).val())) {
						newTotal = newTotal + Number($(this).val());
					}
				});
				$(this).val(newTotal);
			});
		}
 
		// Re-enable the "Rating" inputs on submit
		$('form#limesurvey').submit(function(){			
			$('input.rating, tr.subquestions-list.last input[type="text"]', thisQuestion).prop('disabled', false);
		});
	});
 
</script>


Capture_2014-01-31.png


.
Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

LimeSurvey is open-source and run entirely by volunteers so please consider donating to support the project.
L'administrateur a désactivé l'accès en écriture pour le public.

Array number with Filter option needs one column with formula il y a 2 mois 2 semaines #104356

  • pmp
  • Portrait de pmp
  • Hors ligne
  • Junior Lime
  • Messages : 20
  • Karma: 0
Yesss. It worked.
Thank you verymuch, this is an awsome tool. No doubt.
L'administrateur a désactivé l'accès en écriture pour le public.
  • Page :
  • 1
  • 2
Modérateurs: ITEd
Temps de génération de la page : 0.150 secondes
Donation Image