hierarchic-heatmap-table-component
Version:
A visualisation tool for displaying rows in a hiearchic manner with heatmap capabilities
98 lines (88 loc) • 3.79 kB
JavaScript
Handlebars.registerHelper('createHeader', function(columnName, block) {
var result = {};
result.columnWidth = "85px";
result.columnName = columnName;
return block.fn(result);
});
headerTemplateSrc =
'<div style="overflow:hidden">\
<div class="pull-left type">Tissue/ Cell type</div>\
<div class="pull-right">\
<div style="overflow:hidden">\
<div class="mRNA-header">mRNA</div><div class="protein-header">Protein</div>\
</div>\
<div style="overflow:hidden">\
<div class="methodology-header MicroArray-header">MA</div><div class="methodology-header EST-header">EST</div><div class="methodology-header IHC-header">IHC</div>\
</div>\
</div>\
</div>'
;
detailTemplateSrc =
'<span class="detection-method">{{evidenceCodeName}}</span> <span class="dbSource">{{dbSource}}</span> <span class="ensembl-link"><a href="{{ensemblLink}}">{{ensembl}}</a></span>\
<div>\
<span class="{{value}} glyphicon glyphicon-stop"></span>\
<span>{{description}}</span>\
{{#if qualityQualifier}}\
<span class="silver">{{qualityQualifier}}</span>\
{{/if}}\
</div>'
;
var headerTemplateData = {header:['Positive',
'NotDetected',
'Positive',
'High',
'Medium',
'Low',
'NotDetected']
};
var heatmapTableOptions = {
valuesSetting: [
// { value: 'Positive', color: '#FFA10A'},
{ value: 'Positive', color: '#FFA10A'},
{ value: 'NotDetected', color: "lightgray"},
{ value: 'Low', color: '#FFE6BD'},
{ value: 'Medium', color: '#FFC870'},
{ value: 'High', color: '#FFA10A'}
],
columnWidth: "30px",
detailTemplateSrc: detailTemplateSrc,
headerTemplateSrc: headerTemplateSrc,
headerTemplateData: headerTemplateData,
}
var applicationName = 'protein expression app'; //please provide a name for your application
var clientInfo = 'JinJin'; //please provide some information about you
var nx = new Nextprot.Client(applicationName, clientInfo);
// var proteinAccession = 'NX_Q01101'; //Corresponds to Breast cancer protein -> http://www.nextprot.org/db/entry/NX_P38398/expression
var proteinAccession = nx.getEntryName();
var heatMapTableName = "heatmap-table";
var heatMapTable = HeatMapTable({
tableID: heatMapTableName,
options: heatmapTableOptions
});
heatMapTable.showLoadingStatus();
nx.getAnnotationsByCategory(proteinAccession, 'expression-profile').then(function (data) {
var experimentalContext = {};
$.ajax(
{
type: "get",
url: "https://api.nextprot.org/entry/"+proteinAccession+"/experimental-context.json",
// url: "./data/experimental-context.json",
async: false,
success: function (data) {
data = data['entry']['experimentalContexts'];
for (var i = 0; i < data.length; i++) {
if (data[i].developmentalStage && data[i].developmentalStage.name != "unknown") {
experimentalContext[data[i].contextId] = data[i].developmentalStage.name;
}
}
},
error: function (msg) {
console.log(msg);
}
}
);
var heatmapData = convertNextProtDataIntoHeatMapTableFormat(experimentalContext, data);
heatMapTable.loadJSONData(heatmapData);
heatMapTable.show();
heatMapTable.hideLoadingStatus();
});