mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Notebooks: Add Command + Keyboard Shortcut to Clear Outputs of Active Cell (#6169)
* Add command to clear cell output with test * Fix typo * PR Comments
This commit is contained in:
@@ -36,6 +36,10 @@ if (context.RunTest) {
|
||||
await (new NotebookTester()).sqlNbMultipleCellsTest(this.test.title);
|
||||
});
|
||||
|
||||
test('Clear cell output - SQL notebook', async function () {
|
||||
await (new NotebookTester()).sqlNbClearOutputs(this.test.title);
|
||||
});
|
||||
|
||||
test('Clear all outputs - SQL notebook ', async function () {
|
||||
await (new NotebookTester()).sqlNbClearAllOutputs(this.test.title);
|
||||
});
|
||||
@@ -133,6 +137,11 @@ class NotebookTester {
|
||||
await this.verifyClearAllOutputs(notebook);
|
||||
}
|
||||
|
||||
async sqlNbClearOutputs(title: string): Promise<void> {
|
||||
let notebook = await this.openNotebook(sqlNotebookContent, sqlKernelMetadata, title + this.invocationCount++);
|
||||
await this.verifyClearOutputs(notebook);
|
||||
}
|
||||
|
||||
@stressify({ dop: NotebookTester.ParallelCount })
|
||||
async sqlNbMultipleCellsTest(title: string): Promise<void> {
|
||||
let notebook = await this.openNotebook(sqlNotebookMultipleCellsContent, sqlKernelMetadata, title + this.invocationCount++, true);
|
||||
@@ -380,15 +389,22 @@ class NotebookTester {
|
||||
assert(clearedOutputs, 'Outputs of all the code cells from Python notebook should be cleared');
|
||||
console.log('After clearing cell outputs');
|
||||
}
|
||||
|
||||
async verifyClearOutputs(notebook: azdata.nb.NotebookEditor): Promise<void> {
|
||||
let cellWithOutputs = notebook.document.cells[0].contents && notebook.document.cells[0].contents.outputs && notebook.document.cells[0].contents.outputs.length > 0;
|
||||
assert(cellWithOutputs === true, 'Expected first cell to have outputs');
|
||||
let clearedOutputs = await notebook.clearOutput(notebook.document.cells[0]);
|
||||
let firstCell = notebook.document.cells[0];
|
||||
assert(firstCell.contents && firstCell.contents.outputs && firstCell.contents.outputs.length === 0, `Expected Output: 0, Actual: '${firstCell.contents.outputs.length}'`);
|
||||
assert(clearedOutputs, 'Outputs of requested code cell should be cleared');
|
||||
}
|
||||
|
||||
async cellLanguageTest(content: azdata.nb.INotebookContents, testName: string, languageConfigured: string, metadataInfo: any) {
|
||||
let notebookJson = Object.assign({}, content, { metadata: metadataInfo });
|
||||
let uri = writeNotebookToFile(notebookJson, testName);
|
||||
console.log('Notebook uri ' + uri);
|
||||
let notebook = await azdata.nb.showNotebookDocument(uri);
|
||||
console.log('Notebook is opened');
|
||||
await notebook.document.save();
|
||||
let languageInNotebook = notebook.document.cells[0].contents.metadata.language;
|
||||
console.log('Language set in cell: ' + languageInNotebook);
|
||||
assert(languageInNotebook === languageConfigured, `Expected cell language is: ${languageConfigured}, Actual: ${languageInNotebook}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,10 @@
|
||||
"title": "%notebook.command.runactivecell%",
|
||||
"icon": "resources/dark/touchbar_run_cell.png"
|
||||
},
|
||||
{
|
||||
"command": "notebook.command.clearactivecellresult",
|
||||
"title": "%notebook.command.clearactivecellresult%"
|
||||
},
|
||||
{
|
||||
"command": "notebook.command.runallcells",
|
||||
"title": "%notebook.command.runallcells%"
|
||||
@@ -155,6 +159,10 @@
|
||||
"command": "notebook.command.runactivecell",
|
||||
"when": "notebookEditorVisible"
|
||||
},
|
||||
{
|
||||
"command": "notebook.command.clearactivecellresult",
|
||||
"when": "notebookEditorVisible"
|
||||
},
|
||||
{
|
||||
"command": "notebook.command.runallcells",
|
||||
"when": "notebookEditorVisible"
|
||||
@@ -234,6 +242,11 @@
|
||||
"key": "F5",
|
||||
"when": "activeEditor == workbench.editor.notebookEditor"
|
||||
},
|
||||
{
|
||||
"command": "notebook.command.clearactivecellresult",
|
||||
"key": "Ctrl+Shift+R",
|
||||
"when": "activeEditor == workbench.editor.notebookEditor"
|
||||
},
|
||||
{
|
||||
"command": "notebook.command.runallcells",
|
||||
"key": "Ctrl+Shift+F5",
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"notebook.command.open": "Open Notebook",
|
||||
"notebook.analyzeJupyterNotebook": "Analyze in Notebook",
|
||||
"notebook.command.runactivecell": "Run Cell",
|
||||
"notebook.command.clearactivecellresult": "Clear Cell Result",
|
||||
"notebook.command.runallcells": "Run Cells",
|
||||
"notebook.command.addcode": "Add Code Cell",
|
||||
"notebook.command.addtext": "Add Text Cell",
|
||||
|
||||
@@ -42,6 +42,9 @@ export async function activate(extensionContext: vscode.ExtensionContext): Promi
|
||||
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.runallcells', () => {
|
||||
runAllCells();
|
||||
}));
|
||||
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.clearactivecellresult', () => {
|
||||
clearActiveCellOutput();
|
||||
}));
|
||||
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.addcell', async () => {
|
||||
let cellType: CellType;
|
||||
try {
|
||||
@@ -152,6 +155,19 @@ async function runActiveCell(): Promise<void> {
|
||||
}
|
||||
}
|
||||
|
||||
async function clearActiveCellOutput(): Promise<void> {
|
||||
try {
|
||||
let notebook = azdata.nb.activeNotebookEditor;
|
||||
if (notebook) {
|
||||
await notebook.clearOutput();
|
||||
} else {
|
||||
throw new Error(noNotebookVisible);
|
||||
}
|
||||
} catch (err) {
|
||||
vscode.window.showErrorMessage(getErrorMessage(err));
|
||||
}
|
||||
}
|
||||
|
||||
async function runAllCells(): Promise<void> {
|
||||
try {
|
||||
let notebook = azdata.nb.activeNotebookEditor;
|
||||
|
||||
Reference in New Issue
Block a user