diff --git a/index.html b/index.html index 5fcdd60..6ce3705 100644 --- a/index.html +++ b/index.html @@ -61,6 +61,9 @@ + diff --git a/script.js b/script.js index ad5d972..857370b 100644 --- a/script.js +++ b/script.js @@ -488,11 +488,46 @@ function bindEvents() { if (e.target === this) closeModal(); }); $("reqForm").addEventListener("submit", onFormSubmit); + $("exportBtn").addEventListener("click", exportExcel); document.addEventListener("keydown", function (e) { if (e.key === "Escape" && !$("modal").hidden) closeModal(); }); } +function csvCell(v) { + var s = v == null ? "" : String(v); + return '"' + s.replace(/"/g, '""') + '"'; +} + +function exportExcel() { + var rows = visibleReqs(); + if (rows.length === 0) { + toast("Нечего экспортировать"); + return; + } + var head = ["Номер", "Оборудование", "Место", "Класс", "Статус", "Создана", "Обновлена", "Исполнитель", "Описание"]; + var lines = [head.map(csvCell).join(",")]; + for (var i = 0; i < rows.length; i++) { + var r = rows[i]; + lines.push([ + r.id, r.equipment, r.place, r.cls, + STATUS_LABEL[r.status] || r.status, + fmtDate(r.created), fmtDate(r.updated), + r.resp || "", r.desc || "" + ].map(csvCell).join(",")); + } + var blob = new Blob([lines.join("\r\n")], { type: "application/vnd.ms-excel" }); + var url = URL.createObjectURL(blob); + var a = document.createElement("a"); + a.href = url; + a.download = "zayavki-remont-" + todayStr() + ".xls"; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + setTimeout(function () { URL.revokeObjectURL(url); }, 1000); + toast("Выгружено заявок: " + rows.length); +} + function doClearFilters() { state.filter = "all"; state.search = "";