For this setup, upload the dat file on the survey "upload file" page and call the below script for calling the design file
<exec when="init">
def getCodeFile(fname, zipHeader):
try:
CodesData = File( "%s/%s" % (gv.survey.path, fname), zipHeader)
except IOError:
CodesData = ""
return CodesData
</exec>
<exec when="init">
tcbcd = getCodeFile("cbc_design.dat", "code")
</exec>
After this copy the question replace list, update attributes (and no. of attributes), update looprows (based on tasks), update question label and update piping of attributes for CBC question accordingly.
<quota label="TcbcQu" overquota="noqual" sheet="CBCversion"/>
<number
label="TCBC_Version"
size="3"
where="execute,survey,report">
<title>CBC Version</title>
<exec>
print p.markers
for x in p.markers:
if "/CBCversion/varCBC_" in x:
TCBC_Version.val = int(x.split("_")[-1])
break
</exec>
</number>
<suspend/>
<define label="att_tCBC1_list">
<row label="r1"><span class="pricebig">$79</span></row>
<row label="r2"><span class="pricebig">$129</span></row>
<row label="r3"><span class="pricebig">$179</span></row>
<row label="r4"><span class="pricebig">$229</span></row>
<row label="r5"><span class="pricebig">$279</span></row>
<row label="r6"><span class="pricebig">$329</span></row></define>
<define label="att_tCBC2_list">
<row label="r1"><u>Both</u> fitness center and restaurant on-site</row>
<row label="r2"><u>Only fitness center</u> on-site</row>
<row label="r3"><u>Only restaurant</u> on-site</row>
<row label="r4"><u>No</u> fitness center or restaurant on-site</row></define>
<define label="att_tCBC3_list">
<row label="r1">Marriott</row>
<row label="r2">Hilton</row>
<row label="r3">IHG</row>
<row label="r4">Wyndham</row>
<row label="r5">Choice Hotels</row>
<row label="r6">Hyatt</row>
<row label="r7">Radisson</row>
<row label="r8">Best Western</row>
<row label="r9">Independent</row></define>
<define label="att_tCBC4_list">
<row label="r1">Enhanced high-speed internet</row>
<row label="r2">High-speed internet</row>
<row label="r3">Only access to public wi-fi network</row></define>
<define label="att_tCBC5_list">
<row label="r1">Guest Room, 1 King Bed</row>
<row label="r2">Guest Room, 2 Queen Beds</row>
<row label="r3">Suite, 1 King Bed</row></define>
<define label="att_tCBC6_list">
<row label="r1">Hotel located a <u>5 to 10 minute walk</u> from key destinations, attractions and dining options</row>
<row label="r2">Hotel located a <u>10 to 15 minute walk</u> from key destinations, attractions and dining options</row>
<row label="r3">Hotel located <u>more than 15 minute walk</u> from key destinations, attractions and dining options</row></define>
<loop label="TCBCloop" vars="var1">
<block label="TCBC">
<exec>
codes = str(TCBC_Version.val) + "_[loopvar: label]"
for x in range(1,4):
codeF = codes + "_" + str(x)
cbciter = tcbcd.get(codeF)
if cbciter:
for n in range(1,7):
punchQ = allQuestions["Att%sc%s_[loopvar: label]" % (str(n),str(x))]
if int(cbciter["att" + str(n)]) gt 0:
punchQ.val = punchQ.attr("r" +cbciter["att" + str(n)]).index
</exec>
<select
label="Att1c1_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 1 for Concept 1</title>
<insert as="choices" source="att_tCBC1_list"/>
</select>
<select
label="Att2c1_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 2 for Concept 1</title>
<insert as="choices" source="att_tCBC2_list"/>
</select>
<select
label="Att3c1_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 3 for Concept 1</title>
<insert as="choices" source="att_tCBC3_list"/>
</select>
<select
label="Att4c1_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 4 for Concept 1</title>
<insert as="choices" source="att_tCBC4_list"/>
</select>
<select
label="Att5c1_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 5 for Concept 1</title>
<insert as="choices" source="att_tCBC5_list"/>
</select>
<select
label="Att6c1_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 6 for Concept 1</title>
<insert as="choices" source="att_tCBC6_list"/>
</select>
<suspend/>
<select
label="Att1c2_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 1 for Concept 2</title>
<insert as="choices" source="att_tCBC1_list"/>
</select>
<select
label="Att2c2_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 2 for Concept 2</title>
<insert as="choices" source="att_tCBC2_list"/>
</select>
<select
label="Att3c2_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 3 for Concept 2</title>
<insert as="choices" source="att_tCBC3_list"/>
</select>
<select
label="Att4c2_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 4 for Concept 2</title>
<insert as="choices" source="att_tCBC4_list"/>
</select>
<select
label="Att5c2_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 5 for Concept 2</title>
<insert as="choices" source="att_tCBC5_list"/>
</select>
<select
label="Att6c2_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 6 for Concept 2</title>
<insert as="choices" source="att_tCBC6_list"/>
</select>
<suspend/>
<select
label="Att1c3_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 1 for Concept 3</title>
<insert as="choices" source="att_tCBC1_list"/>
</select>
<select
label="Att2c3_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 2 for Concept 3</title>
<insert as="choices" source="att_tCBC2_list"/>
</select>
<select
label="Att3c3_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 3 for Concept 3</title>
<insert as="choices" source="att_tCBC3_list"/>
</select>
<select
label="Att4c3_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 4 for Concept 3</title>
<insert as="choices" source="att_tCBC4_list"/>
</select>
<select
label="Att5c3_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 5 for Concept 3</title>
<insert as="choices" source="att_tCBC5_list"/>
</select>
<select
label="Att6c3_[loopvar: label]"
optional="1"
where="execute,survey,report">
<title>Attribute 6 for Concept 3</title>
<insert as="choices" source="att_tCBC6_list"/>
</select>
<suspend/>
<radio
label="TCBCD_[loopvar: label]"
fir="off"
surveyDisplay="desktop">
<title>CBC Demo</title>
<comment>Select one</comment>
<row label="ra1" optional="1" where="notdp">Genre</row>
<row label="ra6" optional="1" where="notdp">Additional cosmetic items</row>
<row label="ra2" optional="1" where="notdp">Additional story content</row>
<row label="ra4" optional="1" where="notdp">Additional characters</row>
<row label="ra5" optional="1" where="notdp">Additional in-game items</row>
<row label="r1" ss:rowClassNames="lastrow inputrow"/>
<style name="question.left"/>
<style name="question.left-blank-legend"/>
<style name="question.element" rows="r1"><![CDATA[
\@if ec.simpleList
<div class="element $(rowStyle) $(levels) $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${v2_insertStyle('el.label.start')}
$(text)
${v2_insertStyle('el.label.end')}
<div class="input_label">GET STARTED</div><div class="selected_image show_when_selected"></div>
</div>
\@else
<$(tag) $(headers) class="cell nonempty element $(levels) ${"desktop" if this.grouping.cols else "mobile"} border-collapse $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${v2_insertStyle('el.label.start')}
$(text)
${v2_insertStyle('el.label.end')}
<div class="input_label">GET STARTED</div><div class="selected_image show_when_selected"></div>
</$(tag)>
\@endif
]]></style>
<style cols="c1" name="question.element" rows="ra1,ra2,ra4,ra5,ra6,ra7,ra8,ra9,ra10,ra11,ra12"><![CDATA[
\@if ec.simpleList
<div class="element $(rowStyle) $(levels) $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${Att1c1_[loopvar: label].selected.text if ec.row.label=="ra1" else ""}
${res.loctab %(Att6c1_[loopvar: label].selected.text) if ec.row.label=="ra6" else ""}
${res.ticktab %(Att2c1_[loopvar: label].selected.text) if ec.row.label=="ra2" else ""}
${res.ticktab %(Att4c1_[loopvar: label].selected.text) if ec.row.label=="ra4" else ""}
${res.ticktab %(Att5c1_[loopvar: label].selected.text) if ec.row.label=="ra5" else ""}
</div>
\@else
<$(tag) $(headers) class="cell nonempty element $(levels) ${"desktop" if this.grouping.cols else "mobile"} border-collapse $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${Att1c1_[loopvar: label].selected.text if ec.row.label=="ra1" else ""}
${res.loctab %(Att6c1_[loopvar: label].selected.text) if ec.row.label=="ra6" else ""}
${res.ticktab %(Att2c1_[loopvar: label].selected.text) if ec.row.label=="ra2" else ""}
${res.ticktab %(Att4c1_[loopvar: label].selected.text) if ec.row.label=="ra4" else ""}
${res.ticktab %(Att5c1_[loopvar: label].selected.text) if ec.row.label=="ra5" else ""}
</$(tag)>
\@endif
]]></style>
<style cols="c2" name="question.element" rows="ra1,ra2,ra4,ra5,ra6,ra7,ra8,ra9,ra10,ra11,ra12"><![CDATA[
\@if ec.simpleList
<div class="element $(rowStyle) $(levels) $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${Att1c2_[loopvar: label].selected.text if ec.row.label=="ra1" else ""}
${res.loctab %(Att6c2_[loopvar: label].selected.text) if ec.row.label=="ra6" else ""}
${res.ticktab %(Att2c2_[loopvar: label].selected.text) if ec.row.label=="ra2" else ""}
${res.ticktab %(Att4c2_[loopvar: label].selected.text) if ec.row.label=="ra4" else ""}
${res.ticktab %(Att5c2_[loopvar: label].selected.text) if ec.row.label=="ra5" else ""}
</div>
\@else
<$(tag) $(headers) class="cell nonempty element $(levels) ${"desktop" if this.grouping.cols else "mobile"} border-collapse $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${Att1c2_[loopvar: label].selected.text if ec.row.label=="ra1" else ""}
${res.loctab %(Att6c2_[loopvar: label].selected.text) if ec.row.label=="ra6" else ""}
${res.ticktab %(Att2c2_[loopvar: label].selected.text) if ec.row.label=="ra2" else ""}
${res.ticktab %(Att4c2_[loopvar: label].selected.text) if ec.row.label=="ra4" else ""}
${res.ticktab %(Att5c2_[loopvar: label].selected.text) if ec.row.label=="ra5" else ""}
</$(tag)>
\@endif
]]></style>
<style cols="c3" name="question.element" rows="ra1,ra2,ra4,ra5,ra6,ra7,ra8,ra9,ra10,ra11,ra12"><![CDATA[
\@if ec.simpleList
<div class="element $(rowStyle) $(levels) $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${Att1c3_[loopvar: label].selected.text if ec.row.label=="ra1" else ""}
${res.loctab %(Att6c3_[loopvar: label].selected.text) if ec.row.label=="ra6" else ""}
${res.ticktab %(Att2c3_[loopvar: label].selected.text) if ec.row.label=="ra2" else ""}
${res.ticktab %(Att4c3_[loopvar: label].selected.text) if ec.row.label=="ra4" else ""}
${res.ticktab %(Att5c3_[loopvar: label].selected.text) if ec.row.label=="ra5" else ""}
</div>
\@else
<$(tag) $(headers) class="cell nonempty element $(levels) ${"desktop" if this.grouping.cols else "mobile"} border-collapse $(extraClasses) ${col.group.styles.ss.groupClassNames if col.group else (row.group.styles.ss.groupClassNames if row.group else "")} $(col.styles.ss.colClassNames) $(row.styles.ss.rowClassNames) ${"clickableCell" if isClickable else ""}"$(extra)>
${Att1c3_[loopvar: label].selected.text if ec.row.label=="ra1" else ""}
${res.loctab %(Att6c3_[loopvar: label].selected.text) if ec.row.label=="ra6" else ""}
${res.ticktab %(Att2c3_[loopvar: label].selected.text) if ec.row.label=="ra2" else ""}
${res.ticktab %(Att4c3_[loopvar: label].selected.text) if ec.row.label=="ra4" else ""}
${res.ticktab %(Att5c3_[loopvar: label].selected.text) if ec.row.label=="ra5" else ""}
</$(tag)>
\@endif
]]></style>
<style name="question.after"><![CDATA[
<style>
table.grid.grid-table-mode{
border-collapse: separate;
border-spacing: 20px 0px;
}
th.col-legend{
border-bottom: none !important;
background-color: rgb(255, 165, 6);
text-transform: uppercase;
color: #fff;
font-weight: bold;
}
td.element{
border-bottom: none !important;
border-top: none !important;
}
td.element.lastrow{
border-bottom: 1px solid #ccc !important;
}
.pricebig{
font-size: 40px;
}
.iconcell{
width: 15%;
}
.textcell{
width: 85%;
}
.icontables{
padding: 5px;
width: 100%;
text-align: left;
}
td.element.inputrow{
background: rgb(255, 165, 6) !important;
height: 30px !important;
vertical-align: middle;
}
td.element.inputrow.cellchecked .input_label, td.element.inputrow .selected_image, .lastrow input.radio{
display: none;
}
td.element.inputrow .input_label{
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
color:#fff;
font-weight: bold;
text-align: center;
}
td.element.inputrow.cellchecked .selected_image{
display: block;
height: 80%;
width: 80%;
margin-left: auto;
margin-right: auto;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='1395.32 536.393 28.287 21.213'%3E%3Cdefs%3E%3Cstyle%3E .cls-1 %7B fill: %23fff; %7D %3C/style%3E%3C/defs%3E%3Cg id='Best_icon' data-name='Best icon' transform='translate%28-130 2%29'%3E%3Crect id='Rectangle_6' data-name='Rectangle 6' class='cls-1' width='6' height='24' transform='translate%281549.364 534.393%29 rotate%2845%29'/%3E%3Crect id='Rectangle_7' data-name='Rectangle 7' class='cls-1' width='6' height='16' transform='translate%281540.876 551.364%29 rotate%28135%29'/%3E%3C/g%3E%3C/svg%3E%0A");
font-size: 15px;
color:#fff;
font-weight: bold;
text-align: center;
}
.cell-sub-wrapper{
display: none !important;
}
</style>
<script>
jQuery(document).ready(function(){
jQuery("#btn_continue, #btn_finish").hide();
jQuery(".td.element.inputrow").each(function(){
if(jQuery(this).find('input[type="radio"]').first().attr("checked")){
jQuery(this).addClass('cellchecked');
jQuery("#btn_continue, #btn_finish").show();
}else{
jQuery(this).removeClass('cellchecked');
}
});
// sync the input state
jQuery("td.element.inputrow.clickableCell").on("click", function(e){
e.preventDefault();
e.stopPropagation();
jQuery(this).parents(".answers").find("td.element").removeClass('cellchecked');
jQuery(this).addClass('cellchecked');
var jQueryradio = jQuery(this).find('input[type="radio"]');
if (jQueryradio.prop("checked")){
jQueryradio.prop("checked",false);
jQuery(this).removeClass('cellchecked');
jQuery("#btn_continue, #btn_finish").hide();
}
else{
jQueryradio.prop("checked",true);
jQuery("#btn_continue, #btn_finish").show();
}
});
});
</script>
]]></style>
<col label="c1" value="1">[pipe: Att3c1_[loopvar: label]]</col>
<col label="c2" value="2">[pipe: Att3c2_[loopvar: label]]</col>
<col label="c3" value="3">[pipe: Att3c3_[loopvar: label]]</col>
</radio>
</block>
<looprow label="1">
<loopvar name="var1">1</loopvar>
</looprow>
<looprow label="2">
<loopvar name="var1">2</loopvar>
</looprow>
<looprow label="3">
<loopvar name="var1">3</loopvar>
</looprow>
<looprow label="4">
<loopvar name="var1">4</loopvar>
</looprow>
<looprow label="5">
<loopvar name="var1">5</loopvar>
</looprow>
<looprow label="6">
<loopvar name="var1">6</loopvar>
</looprow>
</loop>
<suspend/>