Sort categories based on score

MeilingMeiling Quebec, CanadaCommunity Member Qubie ✭

Sort categories based on score

Hi -

Hoping someone can help me out with this.

I have a survey/personality test which yields scores in 4 categories. Is there a way to show a message that displays the category names in descending order at the of the survey.

For example:

A = 4

B = 10

C = 2

D = 8

Display: B D A C

Thanks,

Meiling

Answers

  • ahmedAahmedA IndiaCommunity Member Superuser ✭✭✭✭

    If you can source the score for each category from an embedded data, then you can use the code below. It basically pastes the scores in the choices of a multiple choice question. You can look up string manipulations online if you want to paste in a descriptive type question.

    Your first line would look something like this :

    ans = { A: "${e://Field/score_a}", B: "${e://Field/score_b}" ....... }

    Qualtrics.SurveyEngine.addOnReady(function(){
    	ans = {A:"4", B:"10",C:"2",D:"8"}
    	text_entry = [];
    	sorted_ans = [];
    	for (var score in ans) {
    		sorted_ans.push([score, ans[score]]);
    	}
    	sorted_ans.sort(function(a, b) {
    		return a[1] - b[1];
    	});
    	sorted_ans.forEach(ent => {
    		text_entry.push("The score for "+ent[0]+" is "+ent[1])});
    
    	text_entry.reverse();
    	for(i=0;i<text_entry.length;i++){
    		this.getChoiceContainer().querySelectorAll("span label").innerText = text_entry[i];
    	}
    });
    
  • MeilingMeiling Quebec, CanadaCommunity Member Qubie ✭

    Hi Ahmed - thanks for your help. I tried putting it in to a descriptive question at the end (the categories are F, I, S, H and I have the embedded data that shows the scores). However, when I preview the survey, it just displays the coding language...where do I go from here (I don't have any coding background).


    Here are your F.I.S.H. scores:


    Flexible: ${gr://SC_bCOtuGSckQp3Aqx/Score}

    Informed: ${gr://SC_erIpxxnGTGkQgvj/Score}

    Structured: ${gr://SC_5oqd1krTjVRweX3/Score}

    Harmonious: ${gr://SC_0NhlpiPMt1nvR2d/Score}

     


    ans = { F: "${gr://SC_bCOtuGSckQp3Aqx/Score}", I: "${gr://SC_erIpxxnGTGkQgvj/Score}", S: "${gr://SC_5oqd1krTjVRweX3/Score}", H: "${gr://SC_0NhlpiPMt1nvR2d/Score}"}


    Qualtrics.SurveyEngine.addOnReady(function(){ ans = {F:"4",I:"10",S:"2",H:"8"} text_entry = []; sorted_ans = []; for (var score in ans) { sorted_ans.push([score, ans[score]]); } sorted_ans.sort(function(a, b) { return a[1] - b[1]; }); sorted_ans.forEach(ent => { text_entry.push("The score for "+ent[0]+" is "+ent[1])}); text_entry.reverse();for(i=0;i<text_entry.length;i++){ this.getChoiceContainer().querySelectorAll("span label").innerText = text_entry[i];


    }


    });

  • ahmedAahmedA IndiaCommunity Member Superuser ✭✭✭✭

    Either change the descriptive text question to a multiple choice with 4 choices or change the last line to the following: this.getQuestionContainer().innerHTML += text_entry[i] + "<br>";

  • MeilingMeiling Quebec, CanadaCommunity Member Qubie ✭

    Ok - now it displays the scores but how can the code be hidden and just have the user the categories sorted by descending score displayed to the user - so in this case:

    IFHS




  • ahmedAahmedA IndiaCommunity Member Superuser ✭✭✭✭

    Please update the question or create a new question with your EXACT detailed requirements and ALL the relevant details about your current setup.

Sign In to Comment