Difference between revisions of "Show multi, single question in new style"

From Catglobe Wiki
Jump to: navigation, search
(Created page with "Test")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Test
+
== Challenge ==
 +
 
 +
In order to be more flexible in displaying questions
 +
 
 +
As a questionnaire creator
 +
 
 +
I want to show answer option of single/multi question in buttons
 +
 
 +
'''Example'''
 +
 
 +
I want to show answer option like this
 +
 
 +
[[File:Button option.png]]
 +
 
 +
== Solution ==
 +
 
 +
*Create a single/multi question
 +
*Set number of cols you want in question properties
 +
 
 +
[[File:Col question.png]]
 +
 
 +
*Add css to question style sheet
 +
*Add js
 +
 
 +
== Code ==
 +
 
 +
*Javascript
 +
 
 +
<source lang="javascript">
 +
quest.onInit=function(){
 +
Single_Multi_Question_New_Style("Q2_Rest",[999],"selected",true);
 +
}
 +
function Single_Multi_Question_New_Style(questionLabel, arrNoMulti, classname, isMulti){
 +
var obj;
 +
$(".answer_option_cell").css("width",100/$(".answer_option_cell tr:eq(0) td").length +"%");
 +
 +
$("input[name*='QUESTION." + questionLabel + "']").each(function(){
 +
if($(this).is(':checked')){
 +
obj = $("input[name$='QUESTION." + questionLabel + "'][value='" + $(this).val() +"']").parent().siblings().children();
 +
obj.addClass(classname);
 +
}
 +
});
 +
 +
$("a.option_link").click(function(){
 +
if(isMulti){
 +
var input_sibling = $(this).parent().siblings().children().val();
 +
if($.inArray(Number(input_sibling), arrNoMulti)!=-1){
 +
var isChecked = $(this).hasClass(classname);
 +
$("a.option_link").removeClass(classname);
 +
if(!isChecked)$(this).addClass(classname);
 +
}
 +
else {
 +
$(this).toggleClass(classname);
 +
$.each(arrNoMulti,function(i,v){
 +
obj = $("input[name$='QUESTION." + questionLabel + "'][value='" + v +"']").parent().siblings().children();
 +
obj.removeClass(classname);
 +
});
 +
}
 +
}
 +
else{
 +
$("a.option_link").removeClass(classname);
 +
$(this).toggleClass(classname);
 +
}
 +
 +
});
 +
}
 +
</source>
 +
 
 +
*CSS
 +
 
 +
<source lang="css">
 +
input[type="radio"] {
 +
display:none;
 +
}
 +
input[type="checkbox"] {
 +
display:none;
 +
}
 +
a.option_link{
 +
-moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
 +
-webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
 +
box-shadow:inset 0px 1px 0px 0px #ffffff;
 +
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) );
 +
background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% );
 +
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9');
 +
background-color:#f9f9f9;
 +
-webkit-border-top-left-radius:4px;
 +
-moz-border-radius-topleft:4px;
 +
border-top-left-radius:4px;
 +
-webkit-border-top-right-radius:4px;
 +
-moz-border-radius-topright:4px;
 +
border-top-right-radius:4px;
 +
-webkit-border-bottom-right-radius:4px;
 +
-moz-border-radius-bottomright:4px;
 +
border-bottom-right-radius:4px;
 +
-webkit-border-bottom-left-radius:4px;
 +
-moz-border-radius-bottomleft:4px;
 +
border-bottom-left-radius:4px;
 +
text-indent:0;
 +
border:1px solid #dcdcdc;
 +
display:inline-block;
 +
color:#000000!important;
 +
font-family:Arial;
 +
font-size:15px;
 +
font-weight:normal;
 +
font-style:normal;
 +
height: 30px;
 +
line-height: 20px;
 +
padding-top: 10px;
 +
width:100%;
 +
text-decoration:none;
 +
text-align:center!important;
 +
text-shadow:1px 1px 0px #ffffff;
 +
margin-top:2px;
 +
}
 +
a.option_link:hover{
 +
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #e9e9e9), color-stop(1, #f9f9f9) );
 +
background:-moz-linear-gradient( center top, #e9e9e9 5%, #f9f9f9 100% );
 +
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e9e9e9', endColorstr='#f9f9f9');
 +
background-color:#e9e9e9;
 +
}
 +
a.selected{
 +
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #175691), color-stop(1, #003e76) )!important;
 +
background: -moz-linear-gradient(center top , #175691 5%, #003e76 100%) repeat scroll 0 0 rgba(0, 0, 0, 0) !important;
 +
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#175691', endColorstr='#003e76')!important;
 +
border-color: #175691;
 +
background-color:#175691!important;
 +
box-shadow: none;
 +
color: #fff !important;
 +
text-shadow: none;
 +
}
 +
.answer_option_cell td {
 +
text-align: left;
 +
vertical-align: middle;
 +
width: 100%;
 +
}
 +
.answer_option_cell td:first-child {
 +
text-align: left;
 +
vertical-align: middle;
 +
width: auto;
 +
}
 +
.answer_option_cell td:first {
 +
text-align: left;
 +
vertical-align: middle;
 +
width: auto;
 +
}
 +
</source>

Latest revision as of 10:50, 29 September 2014

Challenge

In order to be more flexible in displaying questions

As a questionnaire creator

I want to show answer option of single/multi question in buttons

Example

I want to show answer option like this

Button option.png

Solution

  • Create a single/multi question
  • Set number of cols you want in question properties

Col question.png

  • Add css to question style sheet
  • Add js

Code

  • Javascript
quest.onInit=function(){
 Single_Multi_Question_New_Style("Q2_Rest",[999],"selected",true);
}
function Single_Multi_Question_New_Style(questionLabel, arrNoMulti, classname, isMulti){
 var obj;
 $(".answer_option_cell").css("width",100/$(".answer_option_cell tr:eq(0) td").length +"%");
 
 $("input[name*='QUESTION." + questionLabel + "']").each(function(){
 if($(this).is(':checked')){
 obj = $("input[name$='QUESTION." + questionLabel + "'][value='" + $(this).val() +"']").parent().siblings().children(); 
 obj.addClass(classname);
 } 
 });
 
 $("a.option_link").click(function(){
 if(isMulti){
 var input_sibling = $(this).parent().siblings().children().val();
 if($.inArray(Number(input_sibling), arrNoMulti)!=-1){
 var isChecked = $(this).hasClass(classname);
 $("a.option_link").removeClass(classname);
 if(!isChecked)$(this).addClass(classname);
 } 
 else {
 $(this).toggleClass(classname);
 $.each(arrNoMulti,function(i,v){
 obj = $("input[name$='QUESTION." + questionLabel + "'][value='" + v +"']").parent().siblings().children();
 obj.removeClass(classname);
 });
 } 
 }
 else{
 $("a.option_link").removeClass(classname);
 $(this).toggleClass(classname);
 } 
 
 });
}
  • CSS
input[type="radio"] {
 display:none;
}
input[type="checkbox"] {
 display:none;
}
a.option_link{
 -moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
 -webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
 box-shadow:inset 0px 1px 0px 0px #ffffff;
 background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) );
 background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% );
 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9');
 background-color:#f9f9f9;
 -webkit-border-top-left-radius:4px;
 -moz-border-radius-topleft:4px;
 border-top-left-radius:4px;
 -webkit-border-top-right-radius:4px;
 -moz-border-radius-topright:4px;
 border-top-right-radius:4px;
 -webkit-border-bottom-right-radius:4px;
 -moz-border-radius-bottomright:4px;
 border-bottom-right-radius:4px;
 -webkit-border-bottom-left-radius:4px;
 -moz-border-radius-bottomleft:4px;
 border-bottom-left-radius:4px;
 text-indent:0;
 border:1px solid #dcdcdc;
 display:inline-block;
 color:#000000!important;
 font-family:Arial;
 font-size:15px;
 font-weight:normal;
 font-style:normal;
 height: 30px;
 line-height: 20px;
 padding-top: 10px;
 width:100%;
 text-decoration:none;
 text-align:center!important;
 text-shadow:1px 1px 0px #ffffff;
 margin-top:2px;
}
a.option_link:hover{
 background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #e9e9e9), color-stop(1, #f9f9f9) );
 background:-moz-linear-gradient( center top, #e9e9e9 5%, #f9f9f9 100% );
 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e9e9e9', endColorstr='#f9f9f9');
 background-color:#e9e9e9;
}
a.selected{
 background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #175691), color-stop(1, #003e76) )!important;
 background: -moz-linear-gradient(center top , #175691 5%, #003e76 100%) repeat scroll 0 0 rgba(0, 0, 0, 0) !important;
 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#175691', endColorstr='#003e76')!important;
 border-color: #175691;
 background-color:#175691!important;
 box-shadow: none;
 color: #fff !important;
 text-shadow: none;
}
.answer_option_cell td {
 text-align: left;
 vertical-align: middle;
 width: 100%;
}
.answer_option_cell td:first-child {
 text-align: left;
 vertical-align: middle;
 width: auto;
}
.answer_option_cell td:first {
 text-align: left;
 vertical-align: middle;
 width: auto;
}