Updated existing serialization code so it actually supports serialization. Still needs work to replace the saveAs function when a QueryProvider doesn't support save as, but want to handle in separate PR.
Removed separate MainThread/ExtHostSerializationProvider code as the DataProtocol code is the right place to put this code
Plumbed support through the gridOutputComponent to use the new serialize method in the serialization provider
Refactored the resultSerializer so majority of code can be shared between both implementations (for example file save dialog -> save -> show file on completion)
* Update to latest SQLToolsService release
* extension recommendation on application launch
* Introducing Visualizer (SandDance) to the SQL Query Editor. (#6347)
* Created Visualizer icon in the results grid. Utilized a context key so that the icon only shows if Visualizer extensions (currently, just SandDance) is installed. Visualizer icon open up SandDance in a top-level document.
* When the user clicks on Charts, visualizer recommendation popup appears. User can click on "Install Extensions" to download the visualizer extensions.
* Enabled SQL Query Editor to pass query data to SandDance extension.
* Introducing Visualizer (SandDance) to the SQL Query Editor. (#6347)
* Created Visualizer icon in the results grid. Utilized a context key so that the icon only shows if Visualizer extensions (currently, just SandDance) is installed. Visualizer icon open up SandDance in a top-level document.
* When the user clicks on Charts, visualizer recommendation popup appears. User can click on "Install Extensions" to download the visualizer extensions.
* Enabled SQL Query Editor to pass query data to SandDance extension.
* Cleaned code; made changes according to PR comments
* removed the test service for extensions gallary
* Cleaned up code according to PR changes
* unid changes to build/azure-piplines
* Removed all the build/azure-pipelines changes
* removed changes on media/language.svg
* refactored extension recommendation system to allow it to be generic
* updated extensionsViews to support generic extension query search; added localized constants for visualizer extensions
* Made syntax and error message changes acccording to PR comments.
* Updated recommendation message according to scenario type
* Allow column resizing in preview table
* added property to TableComponentProperties
* hooked up new prop into model view
* new setOptions
* adding enum to azdata interface
* bring in slickgrid 2.3.30
* PR feedback
* fixed context for data explorer
* added more files
* initial servers and database context menu actions finished
* added all actions for servers and databases with correct conditions
* added nodetype and nodelabel for subtype actions
* added nodeinfo logic to oe shim
* fixed context for cms
* added all scripting actions to data explorer
* review comments
* fix import
* fix correct context key
* removed unused import
* separate PR for commands and menus added
* rename mssql context menu nodes
* remove command id constants
- Updated the notebook API to add a change kind, and support saved, executed and other simplified status
- Plumbed this through to the main thread classes
- Support sending the events from cell / input to the notebook model so they loop over the extension host as a content changed event
- Add executed event from the cell
* Adding include exclude boxes
* Adding as table component generic column and rememebering state.
* converged custome action and select checkboxes, moved sc checkbox to middle, can have multiple checkboxes and can remember state now
* adding action on column as a common column property
* Taking PR comments
* Changing Arg name as per CR comment
* Taking a PR comment
* extension now working
* make button messages better
* fix diff editor title disappearing and remove border from source and target name boxes
* redoing a bunch of stuff that disappeared after rebasing
* add images and add to extensions.ts
* moving a few changes to the right place after rebase
* formatting
* Initial schema compare options working code
* Adding description.icon etc.
* Enabling disabling options button
* Name change: SchemaCompareOptions to DeploymentOptions. To reflect SqltoolsService side parameters
* Adding sorting and correct sql tools version
* Adding options button themes
* Formatting fix
* Adding get default options call to get options from tools service
* Exclude/Include changes - first commit
* Adding border to checkboxes
* Taking PR comments
* Updating to latest sqltools with schema compare options
* extension now working
* fix diff editor title disappearing and remove border from source and target name boxes
* redoing a bunch of stuff that disappeared after rebasing
* add images and add to extensions.ts
* moving a few changes to the right place after rebase
* formatting
* update toolbar svgs
* addressing comments
* add return types
* Adding PR comments
* Adding light and dark theme icons
* Fixing the diff editor title for dark theme
This is a partial fix that lays groundwork for full "Prompt to connect" if a kernel needs a connection.
I am waiting on Yurong's refactoring of connection handling before doing any of the prompt work.
- Adds kernel metadata about whether a connection is required.
- For Jupyter, only Spark kernels are listed as requiring a connection
- If this is true and there's no active connection, will show notification and not call execute
In the future, this path will still be used if user is prompted to connect and cancels out.
The future change will be to inject a "connect" handler from notebook.component to the cell callback and use to set connection context
* intial code for diff view inside model view
* Adding basic Split View Container depending on Flex Layout
* Enabled resizing between top and bottom view
* cleaning up some of the sqlops references
* Adding height as per CR comment
* first set of changes to experiment the registration of cms related apis
* Adding cms service entry to workbench
* Adding basic functionality for add remove reg servers and group
* Returning relative path as part of RegServerResult as string
* Removing the cms apis from core. Having mssql extension expose them for cms extension
* Propogating the backend name changes to apis
* Fixing some missing sqlops references
* Adding a sqltools service version with CMS apis available
* Add azdata.d.ts for new extensibility APIs
* Update azdata typing files for connection API proposal
* Add implementation for azdata module
* Fix build break in agent
- Added `runCell` API. Updated runCell button to listen to events on the model so it'll reflect run cell when called from other sources
- Plumbed through kernelspec info to the extension side so when changed, it's updated
- Fixed bug in ConnectionProfile where it didn't copy from options but instead overrode with empty wrapper functions
Here's the rough test code (it's in the sql-vnext extension and will be out in a separate PR)
```ts
it('Should connect to local notebook server with result 2', async function() {
this.timeout(60000);
let pythonNotebook = Object.assign({}, expectedNotebookContent, { metadata: { kernelspec: { name: "python3", display_name: "Python 3" }}});
let uri = writeNotebookToFile(pythonNotebook);
await ensureJupyterInstalled();
let notebook = await sqlops.nb.showNotebookDocument(uri);
should(notebook.document.cells).have.length(1);
let ran = await notebook.runCell(notebook.document.cells[0]);
should(ran).be.true('Notebook runCell failed');
let cellOutputs = notebook.document.cells[0].contents.outputs;
should(cellOutputs).have.length(1);
let result = (<sqlops.nb.IExecuteResult>cellOutputs[0]).data['text/plain'];
should(result).equal('2');
try {
// TODO support closing the editor. Right now this prompts and there's no override for this. Need to fix in core
// Close the editor using the recommended vscode API
//await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
}
catch (e) {}
});
it('Should connect to remote spark server with result 2', async function() {
this.timeout(240000);
let uri = writeNotebookToFile(expectedNotebookContent);
await ensureJupyterInstalled();
// Given a connection to a server exists
let connectionId = await connectToSparkIntegrationServer();
// When I open a Spark notebook and run the cell
let notebook = await sqlops.nb.showNotebookDocument(uri, {
connectionId: connectionId
});
should(notebook.document.cells).have.length(1);
let ran = await notebook.runCell(notebook.document.cells[0]);
should(ran).be.true('Notebook runCell failed');
// Then I expect to get the output result of 1+1, executed remotely against the Spark endpoint
let cellOutputs = notebook.document.cells[0].contents.outputs;
should(cellOutputs).have.length(4);
let sparkResult = (<sqlops.nb.IStreamResult>cellOutputs[3]).text;
should(sparkResult).equal('2');
try {
// TODO support closing the editor. Right now this prompts and there's no override for this. Need to fix in core
// Close the editor using the recommended vscode API
//await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
}
catch (e) {}
});
});
```
* Added Unified connection support
* Use generic way to do expandNode.
Cleanup the ported code and removed unreference code. Added as needed later.
Resolved PR comments.
* Minor fixes and removed timer for all expanders for now. If any providers can't response, the tree node will spin and wait. We may improve later.
* Change handSessionClose to not thenable.
Added a node to OE to show error message instead of reject. So we could show partial expanded result if get any.
Resolve PR comments
* Minor fixes of PR comments
- Add edit API that can be used in the extension
- Separated document and editor classes out since this is the point those get big. I can refactor back in if needed to ease code review
- Based this off text editing APIs but tweaked for the fact this is a cell/array based set of edits
Full plumb through of Session support. Also fixed some test issues
- Load session and get necessary information in kernels list
- Run Cell button now works as expected
- Added a ToggleAction base class which can be used for anything that switches icons. I'd still prefer to have this be dynamic and as clean as the extension classes
- Fixed account test unhandled promise rejections (caused by incorrect / invalid tests) that made it hard to see all the test run output.
Implements provider contribution in the MainThreadNotebook, with matching function calls in the ExtHostNotebook class. This will allow us to proxy through notebook providers (specifically, creation of a notebook manager with required content, server managers) from an extension up through to the main process.
Implemented in this PR:
- Callthroughs for content and server manager APIs
- Very basic unit tests covering provider & manager registration
Not implemented:
- Fuller unit tests on the specific callthrough methods for content & server manager.
- Contribution point needed to test this (so we can actually pass through the extension's existing Notebook implementation)
* add dom component for model view
* formatting
* make css style hardcoded in dom.component
* comment out the unused CSS
* address comments
* address comment
* Fixes#1856 Object Explorer needs Icons field for nodes separate from type/subtype
- Adds in the concept of a themeable icon path which matches VSCode's implementation. This should help support theme-based overrides in the future