Browse Source

Merge pull request #2272 from Budibase/fix/export-2193

Fix exporting data from table
pull/2287/head
Martin McKeaveney 5 years ago
committed by GitHub
parent
commit
415aedcc69
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      packages/builder/src/components/backend/DataTable/modals/ExportModal.svelte
  2. 6
      packages/server/src/api/controllers/view/exporters.js
  3. 4
      packages/server/src/middleware/currentapp.js

4
packages/builder/src/components/backend/DataTable/modals/ExportModal.svelte

@ -18,10 +18,12 @@
let exportFormat = FORMATS[0].key let exportFormat = FORMATS[0].key
async function exportView() { async function exportView() {
const filename = `export.${exportFormat}`
download( download(
`/api/views/export?view=${encodeURIComponent( `/api/views/export?view=${encodeURIComponent(
view view
)}&format=${exportFormat}` )}&format=${exportFormat}`,
filename
) )
} }
</script> </script>

6
packages/server/src/api/controllers/view/exporters.js

@ -3,7 +3,11 @@ exports.csv = function (headers, rows) {
for (let row of rows) { for (let row of rows) {
csv = `${csv}\n${headers csv = `${csv}\n${headers
.map(header => `"${row[header]}"`.trim()) .map(header => {
let val = row[header]
val = typeof val === "object" ? JSON.stringify(val) : val
return `"${val}"`.trim()
})
.join(",")}` .join(",")}`
} }
return csv return csv

4
packages/server/src/middleware/currentapp.js

@ -10,7 +10,7 @@ const CouchDB = require("../db")
module.exports = async (ctx, next) => { module.exports = async (ctx, next) => {
// try to get the appID from the request // try to get the appID from the request
const requestAppId = getAppId(ctx) let requestAppId = getAppId(ctx)
// get app cookie if it exists // get app cookie if it exists
let appCookie = null let appCookie = null
try { try {
@ -29,6 +29,8 @@ module.exports = async (ctx, next) => {
clearCookie(ctx, Cookies.CurrentApp) clearCookie(ctx, Cookies.CurrentApp)
return next() return next()
} }
// if the request app ID wasn't set, update it with the cookie
requestAppId = requestAppId || appId
} }
let appId, let appId,

Loading…
Cancel
Save