Bueno, en B03 se muestran:
S (siempre)
máximo 3 de los colegios clasificados 5-7 en A06.
Eso significa que tienes que elegir 3 de todos los A06 (5-7) al azar.
Mi solución:
Primero cambié los códigos:
A06,A07 con códigos de subpreguntas: "Y01", Y02", ...
B03 con códigos de subpreguntas
eje y: "Y01", Y02", ...
eje x: "X01", X02", ...
1. Como contenedor para todos los resultados, cree una pregunta del tipo "Múltiples textos breves" (ocultos) (eMat).
Codifiqué las subpreguntas así:
Para el primer número:
b1 (base 1)
r1 (aleatorio 1)
z1 (número 1)
b2 (base 2)
r2 (aleatorio 2)
z2 (número 2)
b3 (base 2)
r3 (aleatorio 2)
z3 (número 2)
tot (total)
2. En una pregunta tipo "Ecuación", calculas los valores uno tras otro.
Primero crees un texto que contenga un símbolo para cada colegio elegido (5-7) y guárdelo en "eMat_b1"
{eMat_b1=join(if(A06_Y01>4,"A",""),if(A06_Y02>4,"B",""),if(A06_Y04>4,"D",""),if(A06_Y05 >4,"E",""),if(A06_Y06>4,"F",""),if(A06_Y07>4,"G",""),if(A06_Y08>4,"H"," "))}
Obtendrá algo como "ACGH"
Este es el valor inicial.
Ahora elige el primer símbolo aleatorio:
Necesitas un número aleatorio desde 1 hasta la longitud del texto (en este caso 4)
Guardas esto en "eMat_r1"
{eMat_r1=if(is_empty(eMat_r1),rand(1,strlen(eMat_b1)),eMat_r1)}
Ahora extrae el símbolo que está en este punto de eMat_b1 y lo guarda en eMat_z1.
{
eMat_z1=substr(eMat_b1,sum(eMat_r1,-1),1)}
Se resta 1 porque el primer índice de la función "substr" es 0.
Ahora ya tienes el primer colegio (un símbolo del colegio), que se mostrará más adelante.
Finalmente, elimine este símbolo del texto (eMat_b1)
y guarde el nuevo texto en eMat_b2.
{eMat_b2=str_replace(eMat_z1,"",eMat_b1)}
Ahora repite esto dos veces más para obtener los otros símbolos.
eMat_r2=
eMat_z2=
eMat_b3=
...
Finalmente, combinas los tres símbolos y los guardas en eMat_tot
{eMat_tot=join("#",eMat_z1,eMat_z2,eMat_z3)}
Aquí obtendrá algo como "#GAH".
Este es el primer paso.
Para mostrar solo los tres colegios (y S) en el eje x de la matriz, use el plugin "hideEmptyColumn", aquí como un script.
Significa que no se mostrarán las columnas sin título.
Así que tienes que usar la ecuación para dar un título a los tres colegios seleccionados, pero no a los otros.
Eso es fácil:
En la subpregunta del eje x
X01:
{if(strpos(eMat_tot,"A")>0,"C","")}
Si hay una "A" en eMat_tot, el título es "C", de lo contrario está vacío.
Y siempre se muestra X03 : S.
El script:
Code:
<script>
/*
* JavaScript functions to hide empty answers colum in LimeSurvey
* This allow using Expression Manager to hide answers in array question type
*
* @author Denis Chenu <denis@sondages.pro>
* @copyright 2013-2015 Denis Chenu <https://sondages.pro>
* @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
* @version 1.1
*
*/
$("table.question,table.ls-answers").each(function(){
var basetable=$(this);
basetable.find('col.odd,col.even,col.ls-col-odd,col.ls-col-even').addClass('havewidth');
$(this).find("thead th").each(function(){
if($.trim($(this).html())==""){
if(basetable.find('col.havewidth').length){
basetable.find('col.havewidth').removeAttr('width').removeClass('havewidth');
}
var colindex=$(this).parent('tr').find('td,th').index($(this));
basetable.find('col').eq(colindex).css('width',0);
basetable.find('col').eq(colindex).width(0);
basetable.find('tr').each(function(){
$(this).find('td,th').eq(colindex).addClass('hideEmptyColumn-hiddencolumn').children().hide();
});
basetable.addClass('hideEmptyColumn-widthhiddencolumn');
}
});
});
</script>
<style type="text/css">td.hideEmptyColumn-hiddencolumn,th.hideEmptyColumn-hiddencolumn{
overflow:hidden !important;
border-spacing:0 !important;
border-collapse:collapse !important;
padding:0 !important;
width: 0 !important;
height: 0 !important;
min-width: 0 !important;
}
td.hideEmptyColumn-hiddencolumn *,th.hideEmptyColumn-hiddencolumn * {
display:none;
}
table.ls-answers > tbody > tr > td.hideEmptyColumn-hiddencolumn{border-collapse:collapse !important;}
table.hideEmptyColumn-widthhiddencolumn{
border-collapse:collapse !important;
}
</style>
Este script solo no funciona en la versión 5.3.27., pero esta arreglado en 5.3.28.