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 = "";