in client/client/app/components/ngbProjectInfoPanel/ngbProjectInfo/ngbProjectSummary/ngbProjectSummary.controller.js [51:140]
INIT() {
if (!this.projectContext.tracks)
return;
const files = [];
const items = this.projectContext.tracks;
const datasetsId = items.reduce((datasetsID, item) => {
const id = item && item.project ? item.project.id : null;
if (id) {
if (!datasetsID.includes(id)) {
datasetsID.push(id);
}
}
return datasetsID;
}, []);
this.datasets = this.projectContext.datasets.filter(project => datasetsId.includes(project.id)).map(dataset => {
dataset.metadata = sortObjectByKeyValue(dataset.metadata);
return dataset;
});
for (const item of items) {
let added = false;
const name = this.getTrackFileName(item);
const customName = this.getCustomName(item) || '';
const annotationFiles = this.projectContext.reference && this.projectContext.reference.annotationFiles;
let metadata = {};
if (
!annotationFiles || !annotationFiles.some(el => el.id === item.id && el.format === item.format)
) {
metadata = sortObjectByKeyValue(item.metadata);
} else if (
this.projectContext &&
this.projectContext.datasets &&
this.projectContext.datasets.length > 0
) {
const metadataObj = this.datasets.reduce((result, dataset) => {
const [itemInfo] = dataset.items
.filter(dsItem => dsItem.format === item.format && dsItem.id === item.id);
if (itemInfo) {
result = itemInfo.metadata;
}
return result;
}, {});
metadata = sortObjectByKeyValue(metadataObj);
}
for (const file of files) {
if (file.type === item.format) {
if (!file.names.some((nameObj) => nameObj.name === name && nameObj.id === item.id)) {
file.names.push({
customName,
name,
metadata,
id: item.id || item.name,
track: item
});
}
added = true;
break;
}
}
if (!added) {
files.push({
names: [{
customName,
name,
metadata,
id: item.id || item.name,
track: item
}],
type: item.format,
});
}
}
files.forEach(f => {
f.names.sort((a, b) => {
const {customName: aCustomName, name: aName} = a;
const {customName: bCustomName, name: bName} = b;
const aDisplayName = (aCustomName || aName).toLowerCase();
const bDisplayName = (bCustomName || bName).toLowerCase();
if (aDisplayName > bDisplayName) {
return 1;
}
if (aDisplayName < bDisplayName) {
return -1;
}
return 0;
});
});
this.files = files;
this.checkHeatmapConsistency(this.currentHeatmapId, this.files.filter(this.isHeatmapSelector));
}