Welcome to the LimeSurvey Community Forum

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

Multiple question types in array modifiy

More
13 years 8 months ago #73470 by DenisChenu
Seems to star rating system implemented for 5 point choice in yii, but it was very bad HTML rendered.

:)

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. - Professional support - Plugins, theme and development .
I don't answer to private message.
The topic has been locked.
More
13 years 8 months ago #73503 by iosononando
This is fantastic!!! Thanks a lot!!!! I will put my hands on it right away! :D
The topic has been locked.
More
13 years 8 months ago #73507 by Mazi

iosononando wrote: This is fantastic!!! Thanks a lot!!!! I will put my hands on it right away! :D

You're welcome :-)

If our hints have been helpful and you enjoy limesurvey please consider a donation to the team .
We do all this in our free time and you don't have to pay a penny for this software.

Without your help we can't keep this project alive.

Best regards/Beste Grüße,
Dr. Marcel Minke
survey-consulting.com
offlinesurveys.com
Feel free to contact me by email for professional LimeSurvey support!
The topic has been locked.
More
13 years 7 months ago - 13 years 7 months ago #75086 by erregi
Hi all,

i've just tried the " Multiple question type in array " workaround.
It works if the multiple questions is the first element, but not working if there are other questions before the table. (see the attachments)

i've tryed for hours a solution without success! :(

Thanks in advance for the support!

Working (table as first answer):


Not Working (table as second answer):
Last edit: 13 years 7 months ago by erregi.
The topic has been locked.
More
13 years 7 months ago #75112 by tpartner
erregi, please attach a sample survey with that group and your JavaScript in it and I'll see if I can come up with a fix.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
More
13 years 7 months ago #75148 by erregi
please find attacched the survey.
The JS code is inside the question "0.1"

In this example i have only one question before the "table with questions" but i need to make it work in any position of a question group.

Thank You for your help!


File Attachment:

File Name: erregi_lim...8641.lss
File Size:79.01 KB
The topic has been locked.
More
13 years 7 months ago #75157 by tpartner
Adding an parameter for the start question number should do the trick.

So, this:
Code:
function sideBySide(rows, columns) {
Changes to this:
Code:
function sideBySide(rows, columns, startQuestion) {

And, this:
Code:
if(rowNum <= rows) {
Changes to this:
Code:
if(rowNum <= rows &amp;&amp; i >= startQuestion-1) {

Then, calling the function if you have 2 questions before the "inline" questions (as in my sample survey below), this
Code:
sideBySide(5, 5);
Changes to this:
Code:
sideBySide(5, 5, 3);

The complete script would be:
Code:
<script type="text/javascript" charset="utf-8">
 
  $(document).ready(function() { 
 
    // Call the "sideBySide" function with number of rows, columns and the start question number
    sideBySide(5, 5, 3);
  });
 
  function sideBySide(rows, columns, startQuestion) {
 
    /*********** 
    Display multiple questions side by side
    ***********/
 
    if ($('div.qRow1').length == 0) {
 
      var rowNum = 0;
      var colNum = 1;
      var rowList = new Array(); 
 
      //////// Add question classes for later use ////////
 
      // Loop through all questions and add row and column specific classes
      $('div[id^="question"]').each(function(i) {
        /* This IF condition only needed if there are questions 
        preceding or following the "inline" questions*/
        if(rowNum <= rows &amp;&amp; i >= startQuestion-1) {
          $(this).addClass('qRow'+rowNum+'').addClass('qCol'+colNum+'').addClass('inlineQuestion');
          if(rowNum == 0 &amp;&amp; colNum > 1) {
            $(this).addClass('columnLabel');
          }
          if(rowNum > 0 &amp;&amp; colNum == 1) {
            $(this).addClass('rowLabel');
          }
          else if(rowNum > 0 &amp;&amp; colNum > 1) {
            $(this).addClass('questionCell');
          }
          if(colNum == columns) {
            rowList.push('qRow'+rowNum+'');
            rowNum++;
            colNum = 1;
          }
          else {
            colNum++;
          }
        }
        else {
          $(this).addClass('normalQuestion');
        }
      }); 
 
 
      //////// Survey layout manipulation ////////
 
      // Fix the width of the survey
      $('table.outerframe').css({
        'width': '900px'
      });
 
      // Wrap each "row" in a wrapper div
      $(rowList).each(function(i) {
        $('.'+this+'').wrapAll('<div id="inlineWrapper'+i+'" class="inlineRow" />');
      }); 
 
      // Style the wrapper divs
      $('.inlineRow').css({
        'width': '850px',
        'margin': '0 auto 0 auto',
        'clear': 'both'
      });
      $( '.inlineRow:first' ).css({
        'margin-top': '10px'
      });
 
      // Get all the questions to sit politely side by side
      $( '.inlineQuestion' ).css({
        'float': 'left',
 
        'height':'41px',
        'overflow':'hidden',
        'margin-bottom': '-5px'    
      });
      $( '.inlineQuestion .questionhelp' ).hide();
      $( '.inlineQuestion .survey-question-help' ).parent().hide();
 
      // A little space under the last row
      $( '.inlineRow:last .inlineQuestion' ).css({
        'margin-bottom': '10px'
      });
 
      /* Any questions not displayed inline (this is only needed 
                        if there are questions following the "inline" questions)*/
      $( '.normalQuestion' ).css({
        'clear': 'both'   
      });
 
      //////// Column manipulation ////////
 
      // Set the column widths - can be set individually if necessary
      // Must add up to less than 100%
      $( '.qCol1' ).css({
        'width': '12%'
      });
      $( '.qCol2, .qCol3, .qCol4, .qCol5' ).css({
        'width': '22%'
      });
 
      //////// Question manipulation ////////
 
      // Hide the answer element in boilerplate questions
      $( 'div.boilerplate td.answer' ).parent().hide();
 
      // Hide the question text elements in non-boilerplate questions
      $('div.questionCell td.questiontext').parent().hide();
 
      // Push the question tables to 100%
      $( 'div.inlineRow table' ).css({
        'width': '100%'
      });
 
      // Get everything to line up nicely vertically
      $( '.inlineQuestion td.questiontext, .inlineQuestion td.answer p' ).css({
        'text-align': 'center'
      });
 
      // Adjust cell heights so everything lines up nicely horizontally
      $( '.inlineQuestion td.answer, .inlineQuestion td.questiontext' ).css({
        'height':'35px',
        'overflow':'hidden',
        'padding':'0.5em'
      });
      $( '#inlineWrapper0 .inlineQuestion' ).css({ 'height':'50px' });
      $( '#inlineWrapper0 td.questiontext' ).css({
        'height':'50px'
      });
 
      // Yes-no question styles
      $( 'div.yes-no ul' ).css({
        'text-align': 'center',
        'font-size': '90%',
        'margin': '0',
        'padding-bottom': '5px'
      });
      $( 'div.yes-no li' ).css({
        'padding-right': '1.5em'
      });
      $( 'div.yes-no td.answer' ).css({
        'padding-bottom': '0'
      });
 
      // Short-text question styles
      $( 'div.text-short input' ).css({
        'width': '125px',
        'margin-left': '0'
      });
 
      // Numeric question styles
      $( 'div.numeric input' ).css({
        'width': '125px',
        'margin-left': '0'
      });
      $( 'div.numeric p.tip' ).css({
        'display': 'none'
      });
 
      // Get rid of the margins around select boxes    
      $( 'p.question' ).css({ 'margin':'0' }); 
 
    }
  }
 
</script>

Here is your sample survey back with the modified code. I have added another question before the "inline" questions so the "inlines" star at question 3.

File Attachment:

File Name: limesurvey...1_TP.lss
File Size:81.02 KB

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: erregi
The topic has been locked.
More
13 years 7 months ago #75160 by erregi
the script works if you have other questions BEFORE "the grid" but it doesn't work if you have other questions after it.

I made a new example with those elements(see the attachment):

2 questions
Grid with questions
2 questions

Thanks again for your Help!


File Attachment:

File Name: erregi_lim...3823.lss
File Size:89.68 KB
The topic has been locked.
More
13 years 7 months ago #75161 by tpartner
Change this line:
Code:
if(rowNum <= rows &amp;&amp; i >= startQuestion-1) {

To this:
Code:
if(rowNum <= rows-1 &amp;&amp; i >= startQuestion-1) {

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: erregi
The topic has been locked.
More
13 years 5 months ago - 13 years 5 months ago #78609 by barbarian
Hello!

I want to place one "short text question" and one "array" question (with four radio buttons) side-by-side, like Tpartner explained. But it doesn´t work for me, means it has no effect.
Code:
<script type="text/javascript" charset="utf-8">
 
    $(document).ready(function() {
 
        var qText = 18a;       
        var qArray = 18b;
 
        // Fix the width of the survey
        $( 'table.outerframe' ).css({'width': '900px'});
 
        // Wrap the 2 questions in a container div and style it
        $('#question'+qText+', #question'+qArray+'').wrapAll('<div class="inlineWrapper" />');
        $('.inlineWrapper').append('<div style="clear:both" />');
        $('.inlineWrapper').css({
            'width': '75%',
            'margin':'0 auto 10px auto',
            'background-color':'#FFFFFF'
        });
        $('.inlineWrapper *').css({
            'padding': '0',
            'margin':'0'
        });
 
        // Hide the question and the help text
        $('#question'+qText+' td.questiontext, #question'+qArray+' td.questiontext').parent().hide();
        $('#question'+qText+' > table:eq(1), #question'+qArray+' > table:eq(1)').hide();
        $('#question'+qText+' td.survey-question-help, #question'+qArray+' td.survey-question-help').parent().hide();
 
        //Hide the answer cell of the array
        $('#question'+qArray+' table.question thead tr').children(":first").hide();
        $('#question'+qArray+' table.question tbody tr').children(":first").hide();
        $('#question'+qArray+' col').attr('width', '');
 
        // Push all question tables to 100%
        $('#question'+qText+' table, #question'+qArray+' table').css({'width': '100%'});
 
        // Get the 2 questions to sit politely side by side
        $('#question'+qText+', #question'+qArray+'').css({'float':'left'});
        $('#question'+qText+'').css({'padding':'15px 0 5px 25px'});
        $('#question'+qText+'').css({'padding-top':'27px'}); // Adjust here for wrapped array labels
        $('#question'+qArray+'').css({'padding':'5px 0 10px 0'});
        $('#question'+qArray+' table.question td').css({'padding':'4px'});
        $('#question'+qText+' table:first').attr('align', 'left');
        $('#question'+qText+' label').css({
            'display':'inline', 
            'width':'auto', 
            'margin-right':'10px'
        });
 
        // Set the widths of the 2 questions
        $('#question'+qText+'').css({'width': '35%'});
        $('#question'+qArray+'').css({'width': '58%'});
 
    });
 
</script>
Maybe someone can help me please.
Using 1.92+
Last edit: 13 years 5 months ago by barbarian.
The topic has been locked.
More
13 years 5 months ago #78614 by Mazi
Please tell us which template you are using and post a link to a sample survey.

Best regards/Beste Grüße,
Dr. Marcel Minke
survey-consulting.com
offlinesurveys.com
Feel free to contact me by email for professional LimeSurvey support!
The topic has been locked.
More
13 years 5 months ago #78628 by barbarian
Hey!

test-survey
test
key:test

It´s the default-Template, language is german

The questions 18 and 19 shall be side-by-side

Thanks for your answer:-)
The topic has been locked.
More
13 years 5 months ago #78709 by barbarian
or, if it´s easier, I could use Dual Array.
But then I need on the left column a Drop Down BUT on the right Radio Buttons.
(as a result I would have two questions in one question type)
The topic has been locked.
More
13 years 4 months ago #80285 by AlexiaK
Hi all,

In my survey I will be needing something similar to what the multiple question types in an array can offer (I will need text, yes/no, then two dropdown lists). And so I decided to try the code that was provided ( docs.limesurvey.org/tiki-index.php?page_...stion_types_in_array ), but the result looks like what someone posted previously. And I really don't know what I'm doing that's wrong as I've just copied and pasted the code. I'm using the default template and I have the 1.92+.


Thank you in advance for your help!
The topic has been locked.
More
13 years 4 months ago #80305 by tpartner
Can you activate a sample survey?

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
Moderators: tpartnerholch

Lime-years ahead

Online-surveys for every purse and purpose