diff --git a/packages/api/src/controllers/archive.js b/packages/api/src/controllers/archive.js index 92c31c0fd..a9147169a 100644 --- a/packages/api/src/controllers/archive.js +++ b/packages/api/src/controllers/archive.js @@ -5,6 +5,7 @@ const { archivedir, clearArchiveLinksCache, resolveArchiveFolder } = require('.. const socket = require('../utility/socket'); const { saveFreeTableData } = require('../utility/freeTableStorage'); const loadFilesRecursive = require('../utility/loadFilesRecursive'); +const getJslFileName = require('../utility/getJslFileName'); module.exports = { folders_meta: true, @@ -150,6 +151,15 @@ module.exports = { return true; }, + saveJslData_meta: true, + async saveJslData({ folder, file, jslid }) { + const source = getJslFileName(jslid); + const target = path.join(resolveArchiveFolder(folder), `${file}.jsonl`); + await fs.copyFile(source, target); + socket.emitChanged(`archive-files-changed-${folder}`); + return true; + }, + async getNewArchiveFolder({ database }) { const isLink = database.endsWith(database); const name = isLink ? database.slice(0, -5) : database; diff --git a/packages/web/src/tabs/ProfilerTab.svelte b/packages/web/src/tabs/ProfilerTab.svelte index 823b63c9a..2e1c8a4ee 100644 --- a/packages/web/src/tabs/ProfilerTab.svelte +++ b/packages/web/src/tabs/ProfilerTab.svelte @@ -20,6 +20,15 @@ testEnabled: () => getCurrentEditor()?.isProfiling(), onClick: () => getCurrentEditor().stopProfiling(), }); + + registerCommand({ + id: 'profiler.save', + category: 'Profiler', + name: 'Save', + icon: 'icon save', + testEnabled: () => getCurrentEditor()?.saveEnabled(), + onClick: () => getCurrentEditor().save(), + }); @@ -111,5 +141,6 @@ +