* Disable Delete button and document selection when partitionKey.systemKey = true for noSql.
* Update unit tests
* Always show delete button. Use single delete API for systemKey containers
* Initial implementation of shift and ctrl click to select
* Implement shift-ctrl selection
* Fix snapshot, update selectionHelper comment
* Fix missing type
* Properly disable cursor selection
* Update snapshots
* Do not enable (multiselect) if readonly
* Consider meta key for mac and ctrl for everything else
* Update message de->fabric to v3
* Reinstate get authorization token path which doesn't get called every 5 minutes anymore
* Remove obsolete comment
* Add missing types
* Fix format
* Fix build issue
* Revert "Reinstate get authorization token path which doesn't get called every 5 minutes anymore"
This reverts commit a3f3511043.
* Keep 3 old fabric message types enums for compatibility with the portal
* Re-add warning comment about not changing existing message type enums
---------
Co-authored-by: Laurent Nguyen <[email protected]>
* Document page now loads list of docs and displays selection
* DocumentsTabV2 now properly loads documents, show partition keys and display first doc with proper selection behavior. Move it to its own folder.
* Extract table in a separate component
* Resizable columns on the document table
* Fix selection behavior and some layout issue
* Adding table scrolling
* Fix NaN height issue
* Fix NaN height issue
* Fix column sizing + cell selection
* Improvement in width size. Add Load More
* Add react editor and pass column headers
* Dynamic columns for pk
* Fix initial columns size
* Add nav buttons
* Editing content updates buttons state
* Discard and save buttons working
* Fix save new document. Implement delete.
* Remove debug display
* Fix unexpand filter and reformat
* Fix compil issues
* Add refresh button
* Update column header placeholder style
* Implement delete multiple docs
* Fix multi delete
* Fix show/hide delete button
* Fix selection behavior
* Fix UX with buttons behavior and editor display
* Fix UX issue with not discarding edit changes
* Add some TODO's
* Remove debugging info and reformat
* Add mongo support
* Fix build issues
* Fix table header. Remove debug statement
* Restore broken nosql
* Fix mongo save new document/update document
* Fix bugs with clicking on newly created documents
* Fix comment
* Fix double fetch issue when clicking on an item
* Auto-select last document when saving new document
* Fix resourceTokenPartitionKey code
* Fix format
* Fix isQueryCopilotSampleContainer flag
* Fix unused code
* Call tab when updating error flag
* Destructure props to make useEffect dependencies work
* Fix loadStartKey
* minor update
* Fix format
* Add title to table
* Fix table coming off its container with unwanted horizontal scrollbar
* Increase table width. Fix eslint issue.
* Move refresh documents button from table back to DocumentsTabV2
* Fix load more text centering
* Don't show Load More if nothing to show
* Fix columns min width
* Add keyboard shortcuts
* Add keyboard handlers to load more and refresh button
* Add keyboard support to select table row
* Disable eslint issue from fluent library
* Connect cancel query button
* Add Fluent V9 theme for Fabric (#1821)
* Clean up dependencies and memoize internal functions and object. Move methods and object that don't depend on state outside of component.
* Fix filter disappearing when clicking Apply Filter
* Fix typo and format
* Implement bulk delete for nosql
* Replace filter ui components with fluent ui
* Remove jquery calls
* Migrate unit test to DocumentsTabV2
* Remove DocumentsTab and MongoDocumentsTab. Fix build issues.
* Properly handle activetab
* Remove comments and unused code
* Port keyboard shortcuts from commitId 1f4d0f2
* Port item editor shortcuts to improved Items tab branch (#1831)
* set filter focus on Ctrl+Shift+F
* implement filter enter/esc keybinds
* remove debugging
* Collapse filter when query is executed
* Fix monaco editor not happy when parent is null
* Fix how bulk delete operation gets called when no partition key
* Fix update id list after delete
* Fix deleteDocuments
* Fix build issue
* Fix bug in mongo delete
* Fix mongo delete flow
* Proper error handling in mongo
* Handle >100 bulk delete operations
* Add unit tests for DocumentsTableComponent
* More improvements to table unit tests
* Fix import. Disable selection test for now
* Add more DocumentsTab unit react tests
* Remove selection test
* Add more unit tests. Add lcov coverage report to display in vscode
* Move unit tests to correct file
* Add unit test on command bar
* Fix build issues
* Add more unit tests
* Remove unneeded call
* Add DocumentsTab for Mongo API
* Fix linting errors
* Update fluent ui v9 dependency. Color columns separation. Fix refresh button placement to not interfere with header cell width.
* Revert @fluentui/react-components to a safe version that compiles
* Add confirmation window when documents have been deleted
* Fix mongo unit tests
* Fix format
* Update src/Common/dataAccess/deleteDocument.ts
Co-authored-by: Ashley Stanton-Nurse <[email protected]>
* Update src/Common/dataAccess/deleteDocument.ts
Co-authored-by: Ashley Stanton-Nurse <[email protected]>
* Update src/Common/dataAccess/deleteDocument.ts
Co-authored-by: Ashley Stanton-Nurse <[email protected]>
* Fix bug with markup. Simplify code.
* Protect against creating React editor without parent node
* Replace rendering tests with snapshot match
* Add test screenshot to troubleshoot e2e test
* Revert "Add test screenshot to troubleshoot e2e test"
This reverts commit 1b8138ade0.
* Attempt 2 at troubleshooting failing test
* Revert "Attempt 2 at troubleshooting failing test"
This reverts commit 3e51a593bf.
* Delete button now shows if one or more rows are selected
---------
Co-authored-by: Vsevolod Kukol <[email protected]>
Co-authored-by: Ashley Stanton-Nurse <[email protected]>
* Use Promise for allResourceToken fabric message. Cleanup token message handling and add debounce.
* Improve rpc and update initalization flow
* Fix format
* Rev up message names for new version
* Refactor RPC with Fabric
* Build fix
* Fix build
* Fix format
* Update Message types
* Fix format
* Fix comments
* Fabric toolbar style and support to show/hide it (#1720)
* Add Fabric specific Toolbar design
* Add Fabric message to show/hide the Toolbar
* Fix CommandBarUtil formatting
* Update zustand state on setToolbarStatus to trigger a redraw of the command bar with updated visibility
---------
Co-authored-by: Laurent Nguyen <[email protected]>
* Fix format
---------
Co-authored-by: Vsevolod Kukol <[email protected]>
* Fix datatables issue and indicator not loading for Table API > Entities
* Fix jquery and datatables compile issues. Add patch for datatables.net-colreorder error in types
* Fix side panel size. Fix bug resizing side panel.
* Update PanelContainerComponent unit test snapshot
* Fix commented code
* Update contracts for new all resource messages
* Add timestamp to token message signature
* Reconstruct resource tree with databases and collections parsed from token dictionary keys
* Create FabricDatabase and FabricCollection to turn off interaction
* Remove unnecessary FabricCollection derived class
* Handle resource tokens
* Bug fix
* Fix linting issues
* Fix update document
* Fix partitition keys
* Remove special case for FabricDatabase tree node
* Modify readCollections to follow normal flow with Fabric
* Move fabric databases refresh to data access and remove special case in Explorer
* Revert Explorer.tsx changes
* Disable database context menu and delete container context menu
* Remove create database/container button for Fabric
* Fix format
* Renew token logic
* Parallelize read collections calls to speed up
* Disable readDatabaseOffer, because it is too slow for now
* Reduce TOKEN_VALIDITY_MS a bit to make sure renewal happens before expiration. Receving new tokens new refreshes databases
* Add container element for Main app in HTML
* Do not handle "openTab" message anymore
* Fix style of main div
* Simplify conditional load of the fabric .css
* Fix format
* Fix tsc can't find dynamic less import
---------
Co-authored-by: Armando Trejo Oliver <[email protected]>
* For Fabric, send message to get Authorization token from iframe parent
* tokenProvider: set date header and return token
* Expect account endpoint on initialize message from Fabric
* Fix format
---------
Co-authored-by: artrejo <[email protected]>
* Listen to iframe messages. Test posting message.
* Plug new container message to show New Container dialog
* Rename message action to type
* Fix format
* Fix format
* Remove console.log() statement
* Rework fabric init flow. Implement open Collection Tab from fabric.
* Rename method to better match its purpose
* Update src/hooks/useKnockoutExplorer.ts
Use connectionString from message
Co-authored-by: Vsevolod Kukol <[email protected]>
* Fix format
* For openTab action open first collection if not specified. Clean up FabricContract.
* Reformat FabricContracts
* Highlight current node selection using them token
* Reformat
* Automatically expand nodes in resource tree if underlying database or collection is expanded. Fix AllowedOrigins. Cleanup code.
* Fix format
* Fix lint issue
* Don't show the home screen for Fabric (#1636)
* Fix formatting
* Database name to open can be overridden by value in session storage
---------
Co-authored-by: Vsevolod Kukol <[email protected]>
* Alternate tree running fluentui v9 Tree component
* Fix tree update after sp, udf and trigger load
* Enable scrolling for subtrees
* Clean up duplicates
* Restore current tree
* Reformat
* Update package-lock.json
[Preview this branch](https://cosmos-explorer-preview.azurewebsites.net/pull/762?feature.someFeatureFlagYouMightNeed=true)
The main change in this PR fixes the snapshot functionality in the Publish pane-related components. Because the code cell outputs are now rendered in their own iframes for security reasons, a single snapshot of the notebook is no longer possible: each cell output takes its own snapshot and the snapshots are collated on the main notebook snapshot.
- Move the snapshot functionality to notebook components: this removes the reference of the notebook DOM node that we must pass to the Publish pane via explorer.
- Add slice in the state and actions in notebook redux for notebook snapshot requests and result
- Add post robot message to take snapshots and receive results
- Add logic in `NotebookRenderer` to wait for all output snapshots done before taking the main one collating.
- Use `zustand` to share snapshot between Redux world and React world. This solves the issue of keeping the `PanelContainer` component generic, while being able to update its children (`PublishPanel` component) with the new snapshot.
Additional changes:
- Add `local()` in `@font-face` to check if font is already installed before downloading the font (must be done for Safari, but not Edge/Chrome)
- Add "Export output to image" menu item in notebook cell, since each cell output can take its own snapshot (which can be downloaded)

This change enables notebooks to escape HTML (which is a vector for malicious attacks).
We import `MarkdownCell` from the `@nteract/stateful-components` sources so that we can point it to the version of `@nteract/markdown` which contains [this fix](https://github.com/nteract/markdown/commit/e19c7cc590a4379fc507f67a7b4228363b9d8631).
This is a temporary workaround from upgrading to `@nteract/stateful-components` to `7.0.0` which causes build and runtime issues see #599).
The file `package-lock.json` is not in sync with `package.json` anymore. This causes build issues when upgrading a package.
This change sync's `package-lock.json` and fixes the build issues.
This fixes a bug that prevents getting focus to a text cell (effectively preventing editing) when the window height is small after double-clicking on a neighboring code cell.
The issue is that selecting a text cell is broken likely because there's a behavior change in MonacoEditor that keeps the focus on the code cell. The selection issue will probably be resolved when migrating the text cell to Monaco (which will acquire and keep focus the same way), but for now, this will disable the faulty code which doesn't appear to work anymore (presumably auto-scrolling to the cell).
Constrain left pane container to height: 100% so that scrollbar show up when content wants to overflow.
The `main` classname seems too generic, but I left it alone (so I don't break anything), since this part will eventually be ported to React.
Opening notebook (which contains code cell), then "Items"-> document editor is broken. Our JsonEditor component will hang at `monaco.editor.create()`.
Matching the `monaco-editor` version with `@nteract/monaco-editor` fixes it.
I looked into using one, but we cannot rely nteract, because it does not get loaded if notebook isn't enabled. Forcing nteract to use ours (if at all possible) isn't a good idea, since their code is tuned to their version.
For now, we'll have to keep the versions in sync.
* Add Telemetry to command bar buttons
* Count and report # of files/notebooks/directories in myNotebook to telemetry
* Add resource tree clicks to Telemetry
* Log to Telemetry: opened notebook cell counts by type, kernelspec name
* Fix unit test
* Move Telemetry processor call in notebook traceNotebookTelemetry action from reducer to epic. Use action to trace other info.
* Fix react duplicate key error
* Log notebook cell context menu actions
* Reformat and cleanup
* Move resource tree tracing code out of render(). Only call once when tree is updated
* Fix build issues
* Upgrade nteract packages and related dependencies to make new stateful-component work
* Switch to new monacoEditor
* Configure store using nteract mythic configuration
* Replace CodeMirror with Monaco editor in NotebookReadOnlyRenderer
* Reformat
* Upgrade d3 to latest to resolve d3-selection conflicts with nteract/data-explorer that broke D3ForceGraph
* Upgrade jupyterlab terminal widget to work with latest version of react. Upgrade jupyterlab services to include latest fix for websocket auth
* Update jest test snapshots
* Upgrade packages to fix build issues
* Remove comment
* Fix unit tests
* Fix unit test snapshot
* Remove useless @types/node-fetch
* Enable hiding prompt when hiding inputs (so that only output is showing)
* Fix format
* Rename variable
* Use nteract prompt instead of copying source
* Add generic component
* Add validation. Rename to widgetRenderer
* Remove test code from splash screen
* Clean up infobox
* Fix styling/layout
* Move test code into unit test
* Replace <input> and <labe> by <TextField> and <Text> respectively. Fix style.
* Replace InfoBoxComponent with UI fabric MessageBar. Fix styling for TextField
* Use MessageBar for error message
* Rename WdigetRendererComponent to SmartUiComponent
* Remove old resource tree and its various components
* Fix stored procedure, udf, trigger not always deleting when context menu option chosen
* Reformat and fix eslint warnings
* Remove CommandButtonOptions
* Initial migration from ADO
* Bug fixes
* Fix bugs. Make active area smaller and require shift + ctrl + dbl click
* Add missing features
* Switch from HashMap to Map as it is already polyfilled