extends ./head
block content
div.panel.panel-default.col-lg-12.col-md-12(style="float: left; height:auto")
div.row.panel-heading
h4.text-center Custom detail template
div#heatmap-table-1(style="width:800px;margin:20px auto 50px auto; height:auto")
div.panel-body.pull-left(style="width:50%")
p This is the classic display of a heatmap.
:marked
* **tableID**(_String_): The id of the HTML element
* **options**(_Object_): The option of the heatMap table
* **columnWidth**(_String_): Set the width of columns, "70px" by default
* **valuesSetting**(_Array_):
* **{value: "", color: ""}**: color is a value of css color
* **{value: "", cssClass: ""}**: cssClass is a css class
* **{value: "", html: ""}**:
* **headerTemplateID**(String): The name of handlebars template
* **headerTemplateData**(Object): {header: ["..", ".."]}
* **detailTemplateID**(String): The name of handlebars template
* **Data structure**:
```
[{
"rowLabel": String,
"values": Array,
"linkLabel": String,
"linkURL": String,
"detailData": [Object],
"children": [Object]
}];
```
div.pull-right(style="width:50%;overflow:auto;")
div
ul.nav.nav-tabs(role="tablist")
li.active(role="presentation")
a(href="#javascript", aria-controls="javascript", role="tab", data-toggle="tab") Javascript
li(role="presentation")
a(href="#html", aria-controls="html", role="tab", data-toggle="tab") HTML
li(role="presentation")
a(href="#css", aria-controls="css", role="tab", data-toggle="tab") CSS
div.tab-content
div#javascript.tab-pane.active(role="tabpanel")
textarea#javascriptCode(name="javascriptCode",style="max-height:200px;overflow:auto;font-size:11px").
var heatmapTableOptions = {
valuesSetting: [
{ value: 'Positive', html: '
\

\

\
'
},
{ value: 'High', cssClass: 'red'},
{ value: 'NotDetected', color: 'lightgray'}
],
columnWidth: "120px",
headerTemplateID: "headerTemplate",
headerTemplateData: {header:['MANotDetected',
'MAPositive',
'ESTPositive']},
detailTemplateID: "detailTemplate"
}
var heatMapTable = new HeatMapTable({
tableID: "heatmap-table-1",
options: heatmapTableOptions
});
var data = [
{
"rowLabel": "Human anatomical entity",
"linkLabel": "[TS-2178]",
"linkURL": "http://www.nextprot.org/db/term/TS-2178",
"values": ["NotDetected", "High", "Positive"],
"detailData": [
{
"dbSource": "Bgee",
"description": "Expression detected at 25-44 year-old adult stage",
"ensembl": "ENSG00000254647",
"ensemblLink": "http://bgee.unil.ch/bgee/bgee?page=expression\&action=data\&\stage_id=HsapDO:0000090\&organ_id=EV:0100070\&gene_id=ENSG00000254647\&stage_children=on",
"evidenceCodeName": "Microarray",
"value": "Positive"
}
],
"children": [
{
"rowLabel": "Fluid and secretion",
"linkLabel": "[TS-2101]",
"linkURL": "http://www.nextprot.org/db/term/TS-2101",
"values": ["NotDetected", "High", "Positive"],
"children": [
{
"linkLabel": "[TS-0079]",
"linkURL": "http://www.nextprot.org/db/term/TS-0079",
"rowLabel": "Blood",
"values": ["", "High", "Positive"],
"children": []
}
]
}
],
}
];
heatMapTable.loadJSONData(data);
heatMapTable.show();
div#html.tab-pane.active(role="tabpanel")
textarea#htmlCode(name="htmlCode",style="max-height:300px;height:100%;overflow:auto;font-size:11px;").
div#css.tab-pane.active(role="tabpanel")
textarea#cssCode(name="cssCode",style="max-height:300px;height:100%;overflow:auto;font-size:11px;").
.red {
background-color: red;
}
.detection-method {
background-color: #7cba0f;
}
.dbSource {
background-color: #dedede;
color: #999;
}
.Positive {
color: #FFA10A;
}
//- button.btn.btn-default.center-block(style="margin-bottom:20px;",onclick='executeCode("#heatmap-table-1", simpleHeatMap)') Execute
script.
var simpleHeatMap;
var executeCode = function (outputDiv, mirrorCode) {
$(outputDiv).empty();
var code = mirrorCode.getValue();
eval(code);
$(outputDiv).animate({opacity: "100"}, 2000);
};
window.onload = function () {
javascriptCode = CodeMirror.fromTextArea($("#javascriptCode")[0], {
mode: "javascript",
lineNumbers: true,
lineWrapping: true,
styleActiveLine: true,
matchBrackets: true,
readOnly: true
});
htmlCode = CodeMirror.fromTextArea($("#htmlCode")[0], {
mode: "xml",
htmlMode: true,
lineNumbers: true,
lineWrapping: true,
readOnly: true
});
cssCode = CodeMirror.fromTextArea($("#cssCode")[0], {
mode: "css",
lineNumbers: true,
lineWrapping: true,
readOnly: true
});
$(function () {
executeCode("#heatmap-table-1", javascriptCode);
//can't remove this code, because codeMirror can't render a element which is invisiable
$('#html').each( function () {
$(this).removeClass('active')
});
$('#css').each( function () {
$(this).removeClass('active')
});
});
};
script.
Handlebars.registerHelper('createHeader', function(columnName, block) {
var result = {};
result.columnWidth = "120px";
result.columnName = columnName;
return block.fn(result);
});
script#headerTemplate(type="text/x-handlebars-template").
{{#each header}}
{{#createHeader this}}
{{columnName}}
{{/createHeader}}
{{/each}}
script#detailTemplate(type="text/x-handlebars-template").
{{evidenceCodeName}}
{{dbSource}}
{{ensembl}}
{{description}}
{{#if qualityQualifier}}
{{qualityQualifier}}
{{/if}}
style.
.red {
background-color: red;
}
.detection-method {
background-color: #7cba0f;
color: white;
}
.dbSource {
background-color: #dedede;
color: #999;
}
.Positive {
color: #FFA10A;
}