Экспорт в Excel (CSV) по текущему фильтру
This commit is contained in:
parent
b0e57124c2
commit
e06467d4a8
@ -61,6 +61,9 @@
|
||||
<button class="kt-ai-btn" id="sortBtn">
|
||||
<svg class="kt-icon"><use href="#arrowUpDown"></use></svg><span id="sortLabel">Сначала новые</span>
|
||||
</button>
|
||||
<button class="kt-ai-btn" id="exportBtn">
|
||||
<svg class="kt-icon"><use href="#download"></use></svg><span>Экспорт в Excel</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
35
script.js
35
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 = "";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user