diff --git a/webApp/src/main/scala/wust/webApp/views/DownloadHelper.scala b/webApp/src/main/scala/wust/webApp/views/DownloadHelper.scala index 4a8a032bd..7510f72ff 100644 --- a/webApp/src/main/scala/wust/webApp/views/DownloadHelper.scala +++ b/webApp/src/main/scala/wust/webApp/views/DownloadHelper.scala @@ -2,8 +2,22 @@ package wust.webApp.views import org.scalajs.dom import scala.scalajs.js +import scala.scalajs.js.JSConverters._ object DownloadHelper { + + // type: is type of data, e.g. text/csv, application/json + // endings: 'transparent' (keep lineendings as is) or 'native' (convert to system lineendings) + def promptDownload(fileName: String, data: String, `type`: Option[String] = None, endings: Option[String] = None): Unit = { + promptDownload( + fileName, + new dom.Blob( + js.Array(data), + js.Dynamic.literal(`type` = `type`.orUndefined, endings = endings.orUndefined).asInstanceOf[dom.BlobPropertyBag] + ) + ) + } + def promptDownload(fileName: String, blob: dom.Blob): Unit = { val elem = dom.document.createElement("a").asInstanceOf[dom.html.Anchor] val url = dom.URL.createObjectURL(blob) diff --git a/webApp/src/main/scala/wust/webApp/views/TableView.scala b/webApp/src/main/scala/wust/webApp/views/TableView.scala index 995120478..063d93caa 100644 --- a/webApp/src/main/scala/wust/webApp/views/TableView.scala +++ b/webApp/src/main/scala/wust/webApp/views/TableView.scala @@ -337,10 +337,9 @@ object TableView { val data = CsvHelper.tableToCsv(node, propertyGroup) DownloadHelper.promptDownload( fileName = StringOps.trimToMaxLength(node.str, 50) + ".csv", - blob = new dom.Blob(js.Array(data), js.Dynamic.literal( - `type` = "text/csv",// type of content - endings = "native" // convert lineendings for us to support native os preference - ).asInstanceOf[dom.BlobPropertyBag]) + data = data, + `type` = Some("text/csv"), + endings = Some("native") ) } )