From b1d34d7b2ed8c670fdea9679d166bd1e41bff39e Mon Sep 17 00:00:00 2001 From: Andrew Carlson Date: Wed, 6 Nov 2019 11:09:33 -0500 Subject: [PATCH 1/2] add download command to file menu --- packages/docmanager-extension/src/index.ts | 16 ++++++++++++++++ packages/docregistry/src/context.ts | 22 ++++++++++++++++++++++ packages/docregistry/src/registry.ts | 5 +++++ 3 files changed, 43 insertions(+) diff --git a/packages/docmanager-extension/src/index.ts b/packages/docmanager-extension/src/index.ts index 6e0e69e9598a..45d52dd6da57 100644 --- a/packages/docmanager-extension/src/index.ts +++ b/packages/docmanager-extension/src/index.ts @@ -67,6 +67,8 @@ namespace CommandIDs { export const saveAs = 'docmanager:save-as'; + export const download = 'docmanager:download'; + export const toggleAutosave = 'docmanager:toggle-autosave'; export const showInFileBrowser = 'docmanager:show-in-file-browser'; @@ -576,6 +578,18 @@ function addCommands( } }); + commands.addCommand(CommandIDs.download, { + label: 'Download', + caption: 'Download the file to your computer', + isEnabled, + execute: () => { + if (isEnabled()) { + let context = docManager.contextForWidget(shell.currentWidget); + return context.download(); + } + } + }); + commands.addCommand(CommandIDs.toggleAutosave, { label: 'Autosave Documents', isToggled: () => docManager.autosave, @@ -605,6 +619,7 @@ function addCommands( CommandIDs.restoreCheckpoint, CommandIDs.save, CommandIDs.saveAs, + CommandIDs.download, CommandIDs.toggleAutosave ].forEach(command => { palette.addItem({ command, category }); @@ -613,6 +628,7 @@ function addCommands( if (mainMenu) { mainMenu.settingsMenu.addGroup([{ command: CommandIDs.toggleAutosave }], 5); + mainMenu.fileMenu.addGroup([{ command: CommandIDs.download }], 6); } } diff --git a/packages/docregistry/src/context.ts b/packages/docregistry/src/context.ts index c90ffadbaed3..a5d530ac16d1 100644 --- a/packages/docregistry/src/context.ts +++ b/packages/docregistry/src/context.ts @@ -270,6 +270,28 @@ export class Context }); } + /** + * Download a file. + * + * @param path - The path of the file to be downloaded. + * + * @returns A promise which resolves when the file has begun + * downloading. + */ + async download(): Promise { + console.log({ path: this._path }); + console.log(this._manager); + const url = await this._manager.contents.getDownloadUrl(this._path); + console.log({ url }); + let element = document.createElement('a'); + element.href = url; + element.download = ''; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + return void 0; + } + /** * Revert the document contents to disk contents. */ diff --git a/packages/docregistry/src/registry.ts b/packages/docregistry/src/registry.ts index 6ced181decf3..e18bca497806 100644 --- a/packages/docregistry/src/registry.ts +++ b/packages/docregistry/src/registry.ts @@ -882,6 +882,11 @@ export namespace DocumentRegistry { */ saveAs(): Promise; + /** + * Save the document to a different path chosen by the user. + */ + download(): Promise; + /** * Revert the document contents to disk contents. */ From 723e4c041fee983cbd96c8b67ecb557dc52497c3 Mon Sep 17 00:00:00 2001 From: Andrew Carlson Date: Wed, 6 Nov 2019 11:14:49 -0500 Subject: [PATCH 2/2] remote console.log --- packages/docregistry/src/context.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/docregistry/src/context.ts b/packages/docregistry/src/context.ts index a5d530ac16d1..dd59a5c66cc2 100644 --- a/packages/docregistry/src/context.ts +++ b/packages/docregistry/src/context.ts @@ -279,10 +279,7 @@ export class Context * downloading. */ async download(): Promise { - console.log({ path: this._path }); - console.log(this._manager); const url = await this._manager.contents.getDownloadUrl(this._path); - console.log({ url }); let element = document.createElement('a'); element.href = url; element.download = '';