mirror of
https://github.com/frappe/books.git
synced 2024-12-23 19:39:07 +00:00
Added feature to download json data
This commit is contained in:
parent
482f7875bb
commit
b4c6faae17
@ -16,6 +16,7 @@ import path from 'path';
|
|||||||
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib';
|
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib';
|
||||||
import { IPC_ACTIONS, IPC_MESSAGES } from './messages';
|
import { IPC_ACTIONS, IPC_MESSAGES } from './messages';
|
||||||
import saveHtmlAsPdf from './saveHtmlAsPdf';
|
import saveHtmlAsPdf from './saveHtmlAsPdf';
|
||||||
|
import saveReportAsJson from './saveReportAsJson';
|
||||||
|
|
||||||
const isDevelopment = process.env.NODE_ENV !== 'production';
|
const isDevelopment = process.env.NODE_ENV !== 'production';
|
||||||
const isMac = process.platform === 'darwin';
|
const isMac = process.platform === 'darwin';
|
||||||
@ -193,6 +194,10 @@ ipcMain.handle(IPC_ACTIONS.SAVE_HTML_AS_PDF, async (event, html, savePath) => {
|
|||||||
return await saveHtmlAsPdf(html, savePath);
|
return await saveHtmlAsPdf(html, savePath);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.handle(IPC_ACTIONS.SAVE_REPORT_AS_JSON, async (event, data, savePath) => {
|
||||||
|
return await saveReportAsJson(data, savePath);
|
||||||
|
});
|
||||||
|
|
||||||
/* ------------------------------
|
/* ------------------------------
|
||||||
* Register app lifecycle methods
|
* Register app lifecycle methods
|
||||||
* ------------------------------*/
|
* ------------------------------*/
|
||||||
|
@ -23,4 +23,5 @@ export const DB_CONN_FAILURE = {
|
|||||||
INVALID_FILE: 'invalid-file',
|
INVALID_FILE: 'invalid-file',
|
||||||
CANT_OPEN: 'cant-open',
|
CANT_OPEN: 'cant-open',
|
||||||
CANT_CONNECT: 'cant-connect',
|
CANT_CONNECT: 'cant-connect',
|
||||||
|
SAVE_REPORT_AS_JSON: 'save-report-as-json',
|
||||||
};
|
};
|
||||||
|
@ -102,6 +102,7 @@ import Row from '@/components/Row';
|
|||||||
import WithScroll from '@/components/WithScroll';
|
import WithScroll from '@/components/WithScroll';
|
||||||
import FormControl from '@/components/Controls/FormControl';
|
import FormControl from '@/components/Controls/FormControl';
|
||||||
import reportViewConfig from '@/../reports/view';
|
import reportViewConfig from '@/../reports/view';
|
||||||
|
import { makeJSON } from '@/utils';
|
||||||
import { ipcRenderer } from 'electron';
|
import { ipcRenderer } from 'electron';
|
||||||
import { IPC_ACTIONS } from '@/messages';
|
import { IPC_ACTIONS } from '@/messages';
|
||||||
|
|
||||||
@ -275,6 +276,20 @@ export default {
|
|||||||
},
|
},
|
||||||
async downloadAsJson() {
|
async downloadAsJson() {
|
||||||
const savePath = await this.getSavePath();
|
const savePath = await this.getSavePath();
|
||||||
|
if (!savePath) return;
|
||||||
|
let jsonData = [];
|
||||||
|
let gstRecord = {};
|
||||||
|
let keys = this.reportData.columns;
|
||||||
|
let rows = this.reportData.rows;
|
||||||
|
rows.forEach((values) => {
|
||||||
|
keys.forEach((key) => {
|
||||||
|
gstRecord[key.fieldname] = values[key.fieldname];
|
||||||
|
});
|
||||||
|
jsonData.push(gstRecord);
|
||||||
|
gstRecord = {};
|
||||||
|
});
|
||||||
|
console.log(jsonData);
|
||||||
|
makeJSON(JSON.stringify(jsonData), savePath);
|
||||||
console.log('download complete');
|
console.log('download complete');
|
||||||
},
|
},
|
||||||
async getSavePath() {
|
async getSavePath() {
|
||||||
|
9
src/saveReportAsJson.js
Normal file
9
src/saveReportAsJson.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import { shell } from 'electron';
|
||||||
|
|
||||||
|
export default async function makeJSON(data, savePath) {
|
||||||
|
fs.writeFile(savePath, data, (error) => {
|
||||||
|
if (error) throw error;
|
||||||
|
return shell.openPath(savePath);
|
||||||
|
});
|
||||||
|
}
|
@ -173,6 +173,10 @@ export async function makePDF(html, savePath) {
|
|||||||
ipcRenderer.invoke(IPC_ACTIONS.SAVE_HTML_AS_PDF, html, savePath);
|
ipcRenderer.invoke(IPC_ACTIONS.SAVE_HTML_AS_PDF, html, savePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function makeJSON(data, savePath) {
|
||||||
|
ipcRenderer.invoke(IPC_ACTIONS.SAVE_REPORT_AS_JSON, data, savePath);
|
||||||
|
}
|
||||||
|
|
||||||
export function getActionsForDocument(doc) {
|
export function getActionsForDocument(doc) {
|
||||||
if (!doc) return [];
|
if (!doc) return [];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user