Welcome to the LimeSurvey Community Forum

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

Tableau avec questions différents types

  • MONIMEAU
  • MONIMEAU's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
4 years 6 months ago #188841 by MONIMEAU
Bonjour,

Est-il possible de créer un tableau comportant en colonne plusieurs questions correspondant à différents types de réponses possibles ?

Par exemple en ligne un identifiant (ou prénom ou rang), puis en colonne des questions de différents types (une date en année ; une question OUI/NON; une date en mois/semaine; ...)

Merci par avance pour votre aide.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 6 months ago #188852 by Nickko
Replied by Nickko on topic Tableau avec questions différents types
Pas de manière facile, il faut créer tes différentes questions et les regrouper dans un tableau à l'aide de Javascript.

Denis devrait pouvoir t'en dire plus

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 6 months ago #188855 by DenisChenu
Replied by DenisChenu on topic Tableau avec questions différents types
C'est faisable avec un gros packet de javascript
Tu as la base du script pour les anciennes version ici : manual.limesurvey.org/Workarounds:_Quest...stion_types_in_array
Au cas ou @tpartner de partnersurveys.com/ est celui qui connait bien ce genre de solution.

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.
The topic has been locked.
More
4 years 6 months ago #189080 by loconstantin
Replied by loconstantin on topic Tableau avec questions différents types
On utilise ce workaround sur notre version 2.06 mais est-ce qu'il y a un moyen de le faire fonctionner sur la version 3?

Merci
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 6 months ago #189086 by DenisChenu
Replied by DenisChenu on topic Tableau avec questions différents types
tparner l'a déjà modifié, il faut chercher sur le forum anglais.

Mais la base reste la même.

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.
The following user(s) said Thank You: loconstantin
The topic has been locked.
More
4 years 3 weeks ago #194758 by GabrielSaavedra76
Replied by GabrielSaavedra76 on topic Tableau avec questions de différents types
Bonjour,

Avec le même objectif que @Monimeau, j'ai suivi les instructions pour la création du tableau. Je cherche à aligner 1) une question à choix multiple (une option de réponse par ligne), 2) une liste déroulante et 3) deux échelles likert. Toutefois, le processus est un vrai casse-tête étant donné mes connaissances en JS et CSS.

Ce que j'ai essayé :

- Le workaround proposé par tpartner ( manual.limesurvey.org/Workarounds:_Quest...stion_types_in_array ). J'ai téléchargé le modèle qu'il propose. Sauf qu'avec la version 3.22.5 (thème Fruity), il semblerait avoir un conflit. Je mets en pièce jointe un screenshot du résultat de son script avec ma version de LS. De plus, j'utilise des types de question différents à ceux qu'il utilise dans son exemple, ce qui m'amène à modifier le script. Je suis tout à fait partant pour le faire mais sans connaître les codes pour chaque question et les commandes à utiliser ça va vite faire n'importe quoi.

- Le plugin proposé par M. Chenu : www.limesurvey.org/index.php?option=com_...textadapt&Itemid=729 . Ici, le problème c'est que je ne sais pas comment faire pour importer le plugin dans la plateforme (et ne suis pas sûr si celui ci pourrait m'être utile pour ce que je cherche à faire). Il me semble que je dois utiliser git (outil dont je dispose et je l'ai utilisé quelques fois avec github). Cependant, je ne connais pas toutes les commandes et je ne sais pas comment m'y prendre.

Si quelqu'un pourrait m'éclairer je lui serais très reconnaissant.

Je vous remercie de votre aide.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 3 weeks ago #194764 by Joffm
Voulez-vous faire ça?




Juste un petit javascript facile à changer.


Voici un exemple.

File Attachment:

File Name: limesurvey...8928.lss
File Size:21 KB


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
4 years 3 weeks ago #194778 by GabrielSaavedra76
Replied by GabrielSaavedra76 on topic Tableau avec questions de différents types
Bonjour Joffm,

Merci pour votre excellente réactivité et le script que vous me proposez. Je l'ai téléchargé et passé la matinée à l'adapter avec mon contenu. Toutefois, je dois surement ignorer quelque chose parce qu'en modifiant uniquement les options de réponse je n'obtiens pas le même résultat que vous (voire pièce jointe "Resultat Script Joffm"). Il marche que si je modifie uniquement les intitulés des labels dans l'onglet d'édition des questions (pièce jointe "Resultat Script Joffm labels").

Globalement je cherche à faire plus ou moins ce que vous illustrez dans les images. Je mets en pièce jointe un aperçu du résultat recherché.

Par ailleurs, est-ce que ça serait envisageable de préciser le processus derrière la démarche ? Ou partager des ressources qui permettent de comprendre comment vous avez fait ? Je comprends bien-sur que le forum ne soit pas dédié à des tutoriels JS mais je dois refaire le même tableau une dizaine de fois avec des items différents et ça serait parfait d'être un peu plus autonome avec la plateforme.

Je vous remercie de votre aimable aide,
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 3 weeks ago #194779 by Joffm
Bonjour

Code:
<script type="text/javascript" charset="utf-8">
  $(document).on('ready pjax:scriptcomplete',function(){
    var thisQuestion = $('#question{QID}');
 
    // Insert selects
    $('.answer-item.answer_cell_X001', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
                          <option value="">Please choose...</option>\
                          <option value="1">a</option>\
                          <option value="2">b</option>\
                          <option value="3">c</option>\
                          <option value="4">d</option>\
                          <option value="5">e</option>\
                        </select>'); 
    $('.answer-item.answer_cell_X003', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
                          <option value="">Please choose...</option>\
                          <option value="1">simple</option>\
                          <option value="2">difficile</option>\
                          <option value="3">tres difficile</option>\
                          <option value="4">NSP</option>\
                        </select>'); 
 
    // Listeners
    $('.inserted-select', thisQuestion).on('change', function(i) {
      if($(this).val() != '') {
        $(this).closest('.answer-item').find('input:text').val($.trim($('option:selected', this).text())).trigger('change');
      }
      else {
        $(this).closest('.answer-item').find('input:text').val('').trigger('change');
      }
    });
 
    // Returning to page
    $('.with-select input:text', thisQuestion).each(function(i) {
      var thisCell = $(this).closest('.answer-item');
      var inputText = $.trim($(this).val());
      var selectval = $('select.inserted-select option', thisCell).filter(function () { return $(this).html() == inputText; }).val();
      $('select.inserted-select', thisCell).val(selectval);
    });
 
    // Clean-up styles
    $('select.inserted-select', thisQuestion).css({
      'max-width': '100%'
    });
    $('.with-select input:text', thisQuestion).css({
      'position': 'absolute',
      'left': '-9999em'
    });
  });
</script>




Rappelez-vous: le script est pour un tableau (texte)

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
4 years 3 weeks ago #194788 by GabrielSaavedra76
Replied by GabrielSaavedra76 on topic Tableau avec questions de différents types
Merci pour ce nouveau script, Joffm.

J'avais bien compris que le script était fait pour le tableau (textes) mais pas son fonctionnement. Ce n'est pas tout-à-fait intuitif quand on ne parle pas JS. Je l'ai un peu modifié pour qu'il ressemble davantage à ce que je cherche (voir pièce jointe).

J'ai également compris que lorsqu'on veut ajouter des items qui se déplient il faut aller dans la partie " // Insert selects ". Mais comment faire si on veut faire apparaître des boutons radio, échelles à choix multiple... Bref n'importe quelle autre type de question ? D'ailleurs vous faites une deuxième question dans le document que vous m'avez envoyé. Cette question elle sert à quoi exactement ? Quand on l'efface l'enquête ne marche plus.

Je serais partant pour faire un dossier avec plusieurs modèles pour les autres utilisateurs avec les différents types de questions. Il me faut juste des repères. Je suis allé voir le manuel pour avoir les classes de chaque question mais je ne trouve pas ce qu'il faut, comme dans l'exemple que vous m'avez fournit :

$('.answer-item.answer_cell_X001', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\

En tout cas merci beaucoup de votre aimable aide !
Attachments:
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 3 weeks ago #194799 by Joffm

Mais comment faire si on veut faire apparaître des boutons radio, échelles à choix multiple...



Code:
<script type="text/javascript" charset="utf-8">
  $(document).ready(function(){  
 
    // Identify this question
    var thisQuestion = $('#question{QID}');
 
    // Assign column-specific classes
    $('table.subquestion-list tr', thisQuestion).each(function(i) {
 
      $('> *:gt(0)', this).each(function(i){
        $(this).addClass('column-'+(i+1));
        $(this).attr('data-column', i+1);
      });
    });
 
 
    // Hide the text inputs in columns 1
    $('.column-1 input[type="text"]', thisQuestion).hide();
 
    // Loop through all column-1 inputs
    $('.answer-item.column-1 input[type="text"]', thisQuestion).each(function(i) {
      var thisID = $(this).attr('id');
      var thisValue = $(this).val();
 
      // Insert the radios
      $(this).parent().addClass('radio').append('<span class="inserted-radio-wrapper">\
                    <input id="'+thisID+'-1" class="radio" value="1" name="'+thisID.replace(/answer/, '')+'_radio" type="radio">\
                    <label class="control-label radio-label" for="'+thisID+'-1">No Opportunity</label>\
                  </span><br/>\
                  <span class="inserted-radio-wrapper">\
                    <input id="'+thisID+'-2" class="radio" value="2" name="'+thisID.replace(/answer/, '')+'_radio" type="radio">\
                    <label class="control-label radio-label" for="'+thisID+'-2">Opportunity, no Participation</label>\
                  </span><br/>\
                  <span class="inserted-radio-wrapper">\
                    <input id="'+thisID+'-3" class="radio" value="3" name="'+thisID.replace(/answer/, '')+'_radio" type="radio">\
                    <label class="control-label radio-label" for="'+thisID+'-3">Participated</label>\
                  </span>');
 
      // Initial radio states
      $(this).closest('td').find('input[type="radio"][value="'+thisValue+'"]').prop('checked', true);
    });
 
    // Listener on the radios
    $('.answer-item.column-1 input[type="radio"]', thisQuestion).on('click', function() {
      var thisInput = $(this).closest('td').find('input[type="text"]');
      $(this).closest('td').find('input[type="text"]').val($(this).val());
      checkconditions($(thisInput).val(), $(thisInput).attr('name'), 'text');
    });
 
 
    // Some clean-up styles for the radios (could be placed in template.css)
    $('thead th, .answer-item.column-1', thisQuestion).css({
      'text-align': 'left',
            'margin-left': '0px'
    });
    $('.answer-item.column-1 .inserted-radio-wrapper', thisQuestion).css({
      'display': 'inline-block',
      'margin': '0px 0px 0 0px',
            'padding-left':'20px'
    });
    $('.answer-item.column-1 label', thisQuestion).css({
      'padding': '0'
    });
    $('.answer-item.column-1 .radio-label', thisQuestion).css({
      'padding-left': '3px',
      'margin-right': '3px',
            'padding':'0px 0px 0px 3px',
            'margin-left':'10px'
    });
 
 
    // Fix up the row background colours
    var rowIndex = 0;
    $('table.subquestion-list tbody tr', thisQuestion).each(function(i){
      rowIndex ++;
      $(this).removeClass('array1, array2');
      if(rowIndex % 2 == 0) {
        $(this).addClass('array1');
      }
      else {
        $(this).addClass('array2');
      }
    });
  });
</script>

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 3 weeks ago #194800 by DenisChenu
Replied by DenisChenu on topic Tableau avec questions différents types
J'ai juste une remarque concernant ce type de tableau .

C'est pas fait pour internet ....
En fait : c'est super difficile à comprendre ....

Il vaut peut être faire 1 groupe/page par métier et avoir quelque chose de plus agréable à remplir et à comprendre.

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.
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose