У меня есть страница, которая получает данные из API и отображает их в таблице.
Затем на ней есть кнопка для экспорта этих данных в файл CSV.Он работает, как и ожидалось, в Google Chrome, но в Firefox нет, и он не выдает ошибку.
Отказ от ответственности: о части регулярных выражений, я знаю, что это некрасиво и плохо написано, но я не смогсделать это только в одной строке.
Вот код: HTML Button
<div class="export-container">
<button class="csv request-submit-button export-button" onclick="csvButton()">
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 29.978 29.978" version="1.1" viewBox="0 0 29.978 29.978" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<path d="m25.462 19.105v6.848h-20.947v-6.848h-4.026v8.861c0 1.111 0.9 2.012 2.016 2.012h24.967c1.115 0 2.016-0.9 2.016-2.012v-8.861h-4.026z"/>
<path d="m14.62 18.426l-5.764-6.965s-0.877-0.828 0.074-0.828 3.248 0 3.248 0 0-0.557 0-1.416v-8.723s-0.129-0.494 0.615-0.494h4.572c0.536 0 0.524 0.416 0.524 0.416v8.742 1.266s1.842 0 2.998 0c1.154 0 0.285 0.867 0.285 0.867s-4.904 6.51-5.588 7.193c-0.492 0.495-0.964-0.058-0.964-0.058z"/>
</svg>
Exportar
</button>
</div>
JS Код:
var getData = (url) => {
fetch(url, {
headers: {
'Authorization': "Basic " + btoa('email/token' + ":" + token)
},
credentials: 'omit'
})
.then(response => response.json())
.then(result => {
TICKETS_CSV = [...TICKETS_CSV, ...result.results];
console.log('RESULTS TicketsCSV: ', TICKETS_CSV);
if(result.next_page !== null){
getData(result.next_page);
} else {
_gerarCsv(TICKETS_CSV, ORG_CSV);
return
}
return (result);
})
.catch(error => console.error('FETCH ERROR TICKETS CSV: ', error));
};
function csvButton(){
if(MSG_CSV == true){
TICKETS_CSV = [];
getData(URL_CSV, TICKETS_CSV);
} else {
alert("Nenhum ticket para ser exportado");
return;
}
}
var _gerarCsv = function(obj, org){
var csv = 'ID; Assunto; Tipo; Solicitante; Criado Em; Ultima Atividade; Status; Modulo; Severidade; Organização\n';
obj.forEach(function(row){
var subject = row.subject;
var status_csv = STATUS[row.status].name;
subject = subject.replace(/,/g, '');
subject = subject.replace(/(\r\n|\n|\r)/gm, " ");
subject = subject.replace(/\s+/g, ' ').trim();
subject = subject.replace(/\#\s?/g, '');
csv += row.id;
csv += ";" + subject;
csv += ";" + TYPE[row.type];
csv += ";" + getUserName(row.requester_id);
csv += ";" + convertDate(row.created_at);
csv += ";" + convertDate(row.updated_at);
csv += ";" + status_csv;
csv += ";" + getCustomFieldModulo(row.custom_fields);
csv += ";" + getCustomFieldSeveridade(row.custom_fields);
csv += ";" + org;
csv += '\n';
});
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
hiddenElement.target = '_blank';
hiddenElement.download = 'tickets.csv';
hiddenElement.click();
};
Я сделал все тесты и нашелиз-за того, что код проходит через все его части, он просто не загружает файл