Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Evaluation : Tri et Export

  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 2 weeks ago #134016 by mattheoh
Evaluation : Tri et Export was created by mattheoh
Bonjour,
j utilise le système d'évaluation pour présneter une synthèse à la fin de mon questionnaire.
Pour se faire je fais remonter équations qui font un Count par rapport aux différentes réponses.

- blabla de l'equation 1 (count = 3 fois)
- blabla de l'equation 2 (count = 5 fois)
- blabla de l'equation 3 (count = 1 fois)

J'ai 2 petites questions :

1/ Est il possible de faire un tri de mes équations (du plus grand count au plus petit) - j ai cru comprendre en cherchant qu'il fallait le faire en JS
2/ Y a t il un moyen d'exporter l'évaluation en PDF et de l'associer au résultat (afin de pouvoir archiver ou consulter le PDF de l'évaluation depuis le back office notamment)

Merci à tous pour vos lumières !
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 years 2 weeks ago #134018 by Nickko
Replied by Nickko on topic Evaluation : Tri et Export
Non, à priori, les équations étant des calcules par rapport aux données de la DB, il suffit de refaire les calcules en post traitement ou alors de stocker le résultat des équations.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 2 weeks ago #134019 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
Merci de ta réponse.
les résultats de mes équations sont bien stockés.
A l heure actuelle, j affiche les intitulés des questions des équations en tant que synthèse (si et ssi >= à 1).
Maintenant, je cherche donc à les trier de l'équation ayant le plus grand résultat à la plus petite.

Quand tu dis calcul post traitement , le fait de les traiter dans l'éval répond bien à ce besoin.
Du coup là ou je bloque c'est sur la fonction de tri... j ai pas trop vu d'exemple.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 years 2 weeks ago #134021 by Nickko
Replied by Nickko on topic Evaluation : Tri et Export
Je ne comprends pas ton histoire de tri, pose toi, prend un bon café, met de la musique et raconte nous ce que tu fais, pourquoi, comment, etc.

Pour aller plus vite, tu peux peut-être nous envoyer un export de ton sondage peut-être qu'en voyant ce que tu as fait, ce sera plus clair.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 2 weeks ago #134022 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
^^ je peux pas pour la la musique , y a ma femme qui dort :P

C'est relativement simple, je peux t'exporter le sondage, mais c'est pas vraiment lui ma préoccupation... c'est plutot la synthèse ne sortie.
donc je vais te la coller et tu vas vite comprendre :
Code:
<h1>Vos points critiques :</h1>
<ul>
{if(C3213 >= 1,"<li>"+C3213.question+"</li>","")}
{if((C33 >= 1) or (C331 >= 1) or (C332 >= 1) or (C332b >= 1),"<li>"+C33.question+"</li>","")}
{if((C332 >= 1) or (C332b >= 1),"<li>"+C332.question+"</li>","")}
{if((C341 >= 1) or (C342 >= 1) or (C343 >= 1),"<li>"+C341.question+"</li>","")}
{if((C35 >= 1) or (C351 >= 1),"<li>"+C35.question+"</li>","")}
{if((C41 >= 1) or(C42 >= 1),"<li>"+C41.question+"</li>","")}
{if(C44 >= 1,"<li>"+C44.question+"</li>","")}
{if(C410 >= 1,"<li>"+C410.question+"</li>","")}
{if(C534 >= 1,"<li>"+C534.question+"</li>","")}
{if(C54 >= 1,"<li>"+C54.question+"</li>","")}
{if(C55 >= 1,"<li>"+C55.question+"</li>","")}
{if(C56 >= 1,"<li>"+C56.question+"</li>","")}
{if(C563 >= 1,"<li>"+C563.question+"</li>","")}
{if(C63 >= 1,"<li>"+C63.question+"</li>","")}
{if(C64 >= 1,"<li>"+C64.question+"</li>","")}
{if(C65 >= 1,"<li>"+C65.question+"</li>","")}
{if(C652 >= 1,"<li>"+C652.question+"</li>","")}
{if(C66 >= 1,"<li>"+C66.question+"</li>","")}
{if(C68 >= 1,"<li>"+C68.question+"</li>","")}
{if((C721 >= 1) or (C731 >= 1),"<li>"+C721.question+"</li>","")}
{if((C722 >= 1) or (C732 >= 1),"<li>"+C722.question+"</li>","")}
{if((C724 >= 1) or (C734 >= 1),"<li>"+C724.question+"</li>","")}
{if((C725 >= 1) or (C735 >= 1),"<li>"+C725.question+"</li>","")}
{if((C726 >= 1) or (C736 >= 1),"<li>"+C726.question+"</li>","")}
{if(C82 >= 1,"<li>"+C82.question+"</li>","")}
{if(C97 >= 1,"<li>"+C97.question+"</li>","")}
{if(C98 >= 1,"<li>"+C98.question+"</li>","")}
{if(C11 >= 1,"<li>"+C11.question+"</li>","")}
{if(C123 >= 1,"<li>"+C123.question+"</li>","")}
{if(C124 >= 1,"<li>"+C124.question+"</li>","")}
{if(C125 >= 1,"<li>"+C125.question+"</li>","")}
{if(C142 >= 1,"<li>"+C142.question+"</li>","")}
{if(C143 >= 1,"<li>"+C143.question+"</li>","")}
{if(C17 >= 1,"<li>"+C17.question+"</li>","")}
{if(C1712 >= 1,"<li>"+C1712.question+"</li>","")}
</ul>

voilà tu vois j'affiche le contenu de mes questions (équations) en sortie de sondage.
ce que j'ai besoin de faire, c'est de trier cette liste, en partant de l'équation ayant le plus grand résultat à celle ayant le plus petit...
c'est tout :) (enfin pour ainsi dire)
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 years 2 weeks ago #134028 by Nickko
Replied by Nickko on topic Evaluation : Tri et Export
Comme tu le dis, ça n'a rien a voir le sondage, là, il faudrait traiter la source HTML côté client, ça fait trop longtemps que je n'ai plus fait ça pour t'aider, tu devrais regarder du côté des forums HTML / Web design.

Sinon, peut-être que Denis ou un autre membre du forum plus expérimenté que moi en Javascript pourront t'aider.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 2 weeks ago #134080 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
ça marche merci Niccko !
je continue les recherches de mon coté...
je vois bien des fonctions pour trier en JS : developer.mozilla.org/fr/docs/Web/JavaSc...s_globaux/Array/sort
mais n'étant pas développeur, je ne vois pas trop comment l'adapter à mon cas.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 years 2 weeks ago - 8 years 2 weeks ago #134085 by DenisChenu
Replied by DenisChenu on topic Evaluation : Tri et Export
Salut,

En ajoutant un data-sort="{C3213.NAOK}" ou un truc comme ça : james.padolsey.com/javascript/sorting-elements-with-jquery/
Code:
<ul id='sorting'>
{if(C3213.NAOK >= 1,"<li data-sort='"+C3213.NAOK+"'>"+C3213.question+"</li>","")}
</ul>

Et pour la fonction de tri:
Code:
$('#sorting li').sortElements(function(a, b){
    return $(a).data('sort') >= $(b).data('sort') ? 1 : -1;
});

Si ca marche : ca serait cool de l'avoir dans les workaround.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Last edit: 8 years 2 weeks ago by DenisChenu.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 2 weeks ago - 8 years 2 weeks ago #134094 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
Bonjour Denis,
merci beaucoup de ta réponse.
Bon j ai fait plusieurs tests infructueux pour le moment.

- J'ai testé la fonction dans le head ou directement dans le code source de l'éval
- J'ai ajouté la fonction Jquery jQuery.fn.sortElements dans le head, dans l'eval, ou pas du tout (mais là sortElements n'est pas interprété !)
- j ai essayé avec et sans les .NAOK
.... mes conditions marchent bien mais pas de tri. :-/

J'ai essayé également avec ce fiddle jsfiddle.net/D2NtS/
en reprenant la même structure , mais idem, ça ne trie pas.

On doit pas être loin, mais je dois louper un truc...
portant le code source a l air clean , les valeurs sont bien injectés dans les <li>
Code:
<ul class="listitems">
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="3">
    <p>  contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="3">
    <p>contenu de la question</p>
  </li>
  <li data-position="4">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="2">
    <p>contenu de la question</p>
  </li>
  <li data-position="2">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
    <p>contenu de la question</p>
  </li>
  <li data-position="1">
  <p>contenu de la question</p>
  </li>
</ul>

J'ai l impression que la fonction de tri n'est pas interpété.
Y aurait pas un souci avec le JQuery , pourtant il semble bien appelé....
et dans les erreurs du déboggueur, j ai juste cela : "Uncaught SyntaxError: Unexpected end of input" mais ça ne renvoie sur rien.

code source de la page à toute fin utile : pastebin.com/F88UEN70

Edit, je viens de faire un nouvel essai avec cette fonction : jsfiddle.net/3uYUq/ :
Code:
$(function(){
    var elems = $('#sorting').children('li').remove();
    elems.sort(function(a,b){
        return parseInt(b.id) > parseInt(a.id);
    });
    $('#sorting').append(elems);
});

C'est mieux , les li bougent enfin mais... c'est pas bien trié :/ ! mais on avance :-p
Last edit: 8 years 2 weeks ago by mattheoh.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 2 weeks ago - 8 years 2 weeks ago #134100 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
Alleluyah, je crois que c'est bon.

Voici la structure HTML dans mon éval (je vous mets seulement un bout mais ce qu'est intéressant , c'est qe fais aussi des somme de résultats)
Code:
<ul id='sorting'>
{if(C3213.NAOK >= 1,"<li id='"+C3213.NAOK+"'>"+C3213.question+"</li>","")}
{if((C33.NAOK >= 1) or (C331.NAOK >= 1),"<li id='"+sum(C33.NAOK,C331.NAOK)+"'>"+C33.question+"</li>","")}
{if((C332.NAOK >= 1) or (C332b.NAOK >= 1),"<li id='"+sum(C332.NAOK,C332b.NAOK)+"'>"+C332.question+"</li>","")}
{if((C341.NAOK >= 1) or (C342.NAOK >= 1) or (C343.NAOK >= 1),"<li id='"+sum(C341.NAOK,C342.NAOK,C343.NAOK)+"'>"+C341.question+"</li>","")}
</ul>

et voici la fonction ajoutée à la suite (éprouvée avec plus de 10 résultats car certaines fonctions de ce type bloquaient à 10 d'aprés ce que j'ai lu)
Code:
<script type="text/javascript">
$("#sorting li").sort(function(a, b) {
  return parseInt(b.id) - parseInt(a.id);
}).each(function() {
  var elem = $(this);
  elem.remove();
  $(elem).appendTo("#sorting");
});
</script>

source : jsfiddle.net/THMu3/370/

voici le résultat :



Si vous pensez la méthode intéressante, pas de soucis pour le mettre dans le workaround, mais on fait comment ?! :-p
un grand merci à toi Denis en tout cas et à Nickko pour le démarrage.

Maintenant , par rapport à ma deuxième question : enregistrement et / ou export de l'éval en PDF - vous auriez des pistes ? car j ai cherché et j'ai rien vu de particulier.
Merci encore de votre aide.
Last edit: 8 years 2 weeks ago by mattheoh.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 5 days ago - 8 years 5 days ago #134806 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
Salut !
Je reviens vers vous car j'ai un petit problème avec ma fonction de tri.

Je l'ai placé dans l'évaluation, et elle trie par id les <li> la précédant , pour rappel voici la fonction :
Code:
<script type="text/javascript">
$("#sorting li").sort(function(a, b) {
  return parseInt(b.id) - parseInt(a.id);
}).each(function() {
  var elem = $(this);
  elem.remove();
  $(elem).appendTo("#sorting");
});
</script>

Parrallèlement, j'ai besoin de sauvegarder l'évaluation au format pdf.
Pour ce faire je charge le contenu d'une div dans un script php via Ajax... (code ajouté dans le pstpl)
Voici le bout de code , qui est placé aprés la fonction de tri.
Code:
<script type="text/javascript" charset="utf-8">
 
  $(window).load(function(){
  $(document).ready(function() {
  var content = $("#canvas").html();
  var fichier = "{INFO1}-{SAVEDID}";
  var societe = "{INFO1}";
  var personne = "{INFO4}";
  var expert = "{TOKEN:FIRSTNAME} {TOKEN:LASTNAME}";
  var expertmail = "{TOKEN:EMAIL}";
    $.ajax({
        url: "/upload/templates/bpf-cosmed/views/html2pdf/pdf_engine.php",
        method: "post",
        data: { filename: fichier, data: content, company: societe, person: personne, exp: expert, expmail: expertmail },
    });
});
});
</script>

Le souci c'est que je récupère le html uniquement jusqu'à l'id #sorting (qui est le démarrage des <li>) ...
si j enlève la fonction de tri, l intégralité de mon html est bien envoyé vers le script de conversion pdf.
je pense qu'il y a un conflit mais je ne sais pas du tout comment le gérer.
J'ai essayé de remonter / descendre le script dans la page, mais ça ne change rien.
Quelqu'un aurait une idée ?

PS : n hésitez pas à me faire signe, si vous voulez que je le rajoute ou vous passe le code pour les workarounds.
Last edit: 8 years 5 days ago by mattheoh.
The topic has been locked.
  • mattheoh
  • mattheoh's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
8 years 5 days ago #134884 by mattheoh
Replied by mattheoh on topic Evaluation : Tri et Export
Bon finalement ça marche nickel !
- Tri des réponses par ordre de répétition via une premiere fonction
- génération de l'évaluation sous forme de pdf (enregistrement du doc sur le serveur, ou bouton d'envoi par mail)

A noter que pour la génération aprés avoir fait de multiples tests non satisfaisants avec JSPDF (flou, taille des docs...), je suis parti sur la librairie PHP HTML2PDF.
ça marche plutot pas mal !
The following user(s) said Thank You: DenisChenu
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose