/**
* Launch export of allelematrix
* @function
* @async
*/
async function exportMatrix(){
$('#AbortExport').show();
exportIsAbort=false;
let sendedMarkersProlis = $("#MarkersProfils option:selected").map(function(){return $(this).val().split(",");}).get();
sendedMarkersProlis = removeAll(sendedMarkersProlis, "");
let sendedMarkers = selectedMarkers;
console.log(sendedMarkers);
let isAnExport= true, askedPage = undefined;
let argumentsArray = {sendedMarkers, sendedMarkersProlis, clientPageSize, isAnExport, askedPage};
argumentsArray = setArgumentArray("allelematrix-search",argumentsArray);
let link = await getMatrix(argumentsArray);
console.log(link);
argumentsArray.asynchid = link.metadata.status[0].message;
console.log(argumentsArray.asynchid);
argumentsArray = setArgumentArray('allelematrix-search/status', argumentsArray);
await getExportStatus(argumentsArray);
}
/**
* Launch export of allelematrix
* @function
* @async
*/
async function ExportDetailsGermplasms(){
let jsonHmap = [], argumentsArray;
let selectedGermplasms = $("#Germplasms option:selected").map(function(){return $(this).text().split(",");}).get();
let l = Ladda.create( document.querySelector( '#ExportGermplasmsDetails'));
let step = (1/(selectedGermplasms.length/100)), avancement = 0;
argumentsArray = setArgumentArray("germplasm-search");
exportGermplasmsIsAbort=false;
$('#AbortExportGermplasmsDetails').show();
l.start();
l.setProgress( avancement );
selectedGermplasms = removeAll(selectedGermplasms, "");
console.log(selectedGermplasms);
if(argumentsArray.urlEndPoint!=='' && argumentsArray.urlEndPoint!==undefined && argumentsArray.urlEndPoint!==null){
for(let i=0; i<selectedGermplasms.length; i){
if(exportGermplasmsIsAbort===false){
let j;
let germplasmIdArray=[];
for(j=i; j<i+100; j++){
germplasmIdArray.push(selectedGermplasms[j]);
}
i=j;
argumentsArray.germplasmIdArray = germplasmIdArray;
let resp = await getGermplasmsDetails(argumentsArray);
console.log(resp);
avancement += step;
l.setProgress(avancement);
console.log(step);
console.log(avancement);
for(let j=0; j<resp.result.data.length; j++){
jsonHmap[resp.result.data[j].germplasmDbId]=resp.result.data[j];
}
}else{
l.setProgress(1);
l.stop();
$('#AbortExportGermplasmsDetails').hide();
return;
}
}
}
l.setProgress(1);
console.log(jsonHmap);
let fieldTab = getFieldFormJson(jsonHmap);
console.log(fieldTab);
let tsvString = buildTsvString(jsonHmap, selectedGermplasms, fieldTab);
download($('#selectionMap').find('option:selected').val()+'.tsv',tsvString);
$('#AbortExportGermplasmsDetails').hide();
l.stop();
}
/**
* Generate field Tab from Json-Hmap
* @function
* @param {Array} HMap - Json-Hmap
*/
function getFieldFormJson(HMap){
let fieldTab = [];
Object.keys(HMap).forEach(function(element){
for(let key in HMap[element]){
if(!isInArray(fieldTab,key) && key !== 'germplasmDbId'){
if(HMap[element][key]!==null && HMap[element][key]!==undefined && HMap[element][key]!==''){
fieldTab[key]=true;
}else{
fieldTab[key]=false;
}
}else{
if(fieldTab[key]===false && (HMap[element][key]!==null && HMap[element][key]!==undefined && HMap[element][key]!=='')){
fieldTab[key]=true;
}
}
}
});
console.log(fieldTab);
return fieldTab;
}
/**
* Generate Tsv String
* @function
* @param {Array} HMap - Json-Hmap
* @param {Array} selectedGermplasms - The selected Germplasms
* @param {Array} fieldTab - Fields of the futur file
*/
function buildTsvString(jsonHmap, selectedGermplasms, fieldTab){
let tsvString ='';
let tempstring = 'germplasmDbId \tmarkerProfileDbId \t';
Object.keys(fieldTab).forEach(function (element){
if(fieldTab[element]===true){
tempstring += element + '\t';
}
});
tempstring+='\n';
selectedGermplasms.forEach(function (element){
tsvString+=cpyResp[element][0].germplasmDbId + "\t";
if(cpyResp[element].length===1){
tsvString+=cpyResp[element][0].markerProfileDbId;
}else{
cpyResp[element].forEach(function(element2){
tsvString+=element2.markerProfileDbId + ' ; ';
});
}
tsvString+='\t';
Object.keys(fieldTab).forEach(function (element2){
if(fieldTab[element2]===true){
if(jsonHmap[element]!== null && jsonHmap[element]!==undefined){
if(jsonHmap[element][element2]!==null && jsonHmap[element][element2]!== undefined){
tsvString+= jsonHmap[element][element2] + '\t'
}else{
tsvString+='\t';
}
}
}
});
tsvString+='\n';
});
tsvString = tempstring + tsvString;
return tsvString;
}
/**
* Generate Tsv String
* @exports Germplasms details
* @function
* @param {Strint} filename - Name of the futur file
* @param {String} tsvData- The string to encoded in the tsv file
*/
function download(filename, tsvData) {
let element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(tsvData));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}