markers overview - export data to csv

This commit is contained in:
Azgaar 2021-09-28 11:01:00 +03:00
parent 972850e7ad
commit 0c18589140
2 changed files with 21 additions and 1 deletions

View file

@ -3377,6 +3377,7 @@
<button id="markersAddFromOverview" data-tip="Add a new marker. Hold Shift to add multiple" class="icon-plus"></button>
<button id="markersGenerationConfig" data-tip="Config markers generation options" class="icon-cog"></button>
<button id="markersRemoveAll" data-tip="Remove all unlocked markers" class="icon-trash"></button>
<button id="markersExport" data-tip="Save markers data as a text file (.csv)" class="icon-download"></button>
</div>
</div>

View file

@ -10,6 +10,7 @@ function overviewMarkers() {
const markersAddFromOverview = document.getElementById("markersAddFromOverview");
const markersGenerationConfig = document.getElementById("markersGenerationConfig");
const markersRemoveAll = document.getElementById("markersRemoveAll");
const markersExport = document.getElementById("markersExport");
addLines();
@ -26,7 +27,8 @@ function overviewMarkers() {
listen(markersOverviewRefresh, "click", addLines),
listen(markersAddFromOverview, "click", toggleAddMarker),
listen(markersGenerationConfig, "click", configMarkersGeneration),
listen(markersRemoveAll, "click", triggerRemoveAll)
listen(markersRemoveAll, "click", triggerRemoveAll),
listen(markersExport, "click", exportMarkers)
];
function handleLineClick(ev) {
@ -66,6 +68,7 @@ function overviewMarkers() {
editMarker(i);
}
// TODO: highlight markers on hover
function highlightMarkerOn(event) {
if (!layerIsOn("toggleLabels")) toggleLabels();
// burgLabels.select("[data-id='" + burg + "']").classed("drag", true);
@ -129,6 +132,22 @@ function overviewMarkers() {
addLines();
}
function exportMarkers() {
const headers = "Id,Type,Icon,Name,Note,X,Y\n";
const body = pack.markers.map(marker => {
const {i, type, icon, x, y} = marker;
const id = `marker${i}`;
const note = notes.find(note => note.id === id);
const legend = escape(note.legend);
return [id, type, icon, note.name, legend, x, y].join(",");
});
const data = headers + body.join("\n");
const fileName = getFileName("Markers") + ".csv";
downloadFile(data, fileName);
}
function close() {
listeners.forEach(removeListener => removeListener());