diff --git a/src/browser/modules/Stream/FrameTitlebar.jsx b/src/browser/modules/Stream/FrameTitlebar.jsx
index 208266741dc..c8d93b1564d 100644
--- a/src/browser/modules/Stream/FrameTitlebar.jsx
+++ b/src/browser/modules/Stream/FrameTitlebar.jsx
@@ -63,11 +63,13 @@ import {
transformResultRecordsToResultArray
} from 'browser/modules/Stream/CypherFrame/helpers'
import { csvFormat } from 'services/bolt/cypherTypesFormatting'
+import arrayHasItems from 'shared/utils/array-has-items'
class FrameTitlebar extends Component {
hasData () {
return this.props.numRecords > 0
}
+
exportCSV (records) {
const exportData = stringifyResultArray(
csvFormat,
@@ -81,28 +83,64 @@ class FrameTitlebar extends Component {
})
saveAs(blob, 'export.csv')
}
+
+ exportTXT = () => {
+ const { frame } = this.props
+
+ if (frame.type === 'history') {
+ const asTxt = frame.result
+ .map(result => {
+ const safe = `${result}`.trim()
+
+ if (safe.startsWith(':')) {
+ return safe
+ }
+
+ return safe.endsWith(';') ? safe : `${safe};`
+ })
+ .join('\n\n')
+ const blob = new Blob([asTxt], {
+ type: 'text/plain;charset=utf-8'
+ })
+
+ saveAs(blob, 'history.txt')
+ }
+ }
+
exportPNG () {
const { svgElement, graphElement, type } = this.props.visElement
downloadPNGFromSVG(svgElement, graphElement, type)
}
+
exportSVG () {
const { svgElement, graphElement, type } = this.props.visElement
downloadSVG(svgElement, graphElement, type)
}
+
exportGrass (data) {
var blob = new Blob([data], {
type: 'text/plain;charset=utf-8'
})
saveAs(blob, 'style.grass')
}
+
canExport = () => {
let props = this.props
const { frame = {} } = props
+
return (
- (frame.type === 'cypher' && (this.hasData() || props.visElement)) ||
+ this.canExportTXT() ||
+ (frame.type === 'cypher' && (this.hasData() || this.props.visElement)) ||
(frame.type === 'style' && this.hasData())
)
}
+
+ canExportTXT () {
+ const { frame = {} } = this.props
+
+ return frame.type === 'history' && arrayHasItems(frame.result)
+ }
+
render () {
let props = this.props
const { frame = {} } = props
@@ -142,6 +180,11 @@ class FrameTitlebar extends Component {
Export CSV
+
+
+ Export TXT
+
+
.
+ *
+ */
+
+export default function arrayHasItems (arr) {
+ return Array.isArray(arr) && arr.length > 0
+}