* src/SelfServe/Example/SelfServeExample.rp.ts.
Portal changes for DedicatedGateway
1. Change Sqlx endpoints to SqlDedicatedGateway endpoint
2. Remove D32s from the SKU list
3. Add telemetry
4. Remove SKU details field per discussion
5. Support dynamic instance scaling.
* format files to ensure format check and lint tests pass
* Lint fixes
* Lint fixes
* Added metrics blade link
* updated conditions for warning banner
* fixed lint error
* Incorporate metrics link and CR feedback
* Lint fixes
* CR feedback and fix links
* CR feedback and fix links
* Link fix
* More fixes to the Dedicated Gateway layout
* Format check
* Fix casing
Co-authored-by: Srinath Narayanan <srnara@microsoft.com>
[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)
![image](https://user-images.githubusercontent.com/21954022/117454706-b5f16600-af46-11eb-8535-6bf99f3d9170.png)
[Preview this branch](https://cosmos-explorer-preview.azurewebsites.net/pull/746)
We have a custom implementation of `Markdown` cell that we use in `NotebookRenderer`. This custom implementation disables HTML rendering in markdown cells. This change uses the same for `NotebookReadOnlyRenderer` which we use for Gallery.
While working on #549 I realized there were a few places where 'explorer' was only needed to expand the notifications console, so I stripped those out where it was easy.
With this change TabsBase objects will retain a reference to the TabsManager they belong to, so they can ask it if they're the active tab or not.
This removes the possibility for bugs like activating an unmanaged tab, or having more than one active tab, etc.
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](e19c7cc590).
This is a temporary workaround from upgrading to `@nteract/stateful-components` to `7.0.0` which causes build and runtime issues see #599).
* Dynamic link to HEAD of a given PR
* Display pr name and link in notification console
* Pass along query string to Explorer
This means you can write a URL like:
https://cosmos-explorer-preview.azurewebsites.net/pull/123?feature.enableFoo=true
and when Explorer loads it'll have enableFoo set to true in the features
object.
* Fix Lint errors in QueryUtils
* Format
* Simplify diff
Co-authored-by: Your Name <you@example.com>
Co-authored-by: Steve Faulkner <southpolesteve@gmail.com>
Co-authored-by: Steve Faulkner <471400+southpolesteve@users.noreply.github.com>
Co-authored-by: Jordi Bunster <jbunster@microsoft.com>
When building queries with projections, the resulting query does not include the "id" property as part of the projection. The "id" property is used by the results grid to display as the RowKey so the result is queries wih projections do not show the RowKey.
This change fixes this by including "id" as part of the projections.
* Portal changes for DedicatedGateway
Changes to support creation and deletion of DedicatedGateway resource.
Tested locally with various scenarios.
* Portal changes for DedicatedGateway. CR feedback
* Stylecop changes
* Removing TODO comments
* exposed baselineValues
* added getOnSaveNotification
* disable UI when onSave is taking place
* minro edits
* made polling optional
* added optional polling
* added default
* Added portal notifications
* merged more changes
* minor edits
* added label for description
* Added correlationids and polling of refresh
* Added correlationids and polling of refresh
* minor edit
* added label tooltip
* removed ClassInfo decorator
* Added dynamic decription
* added info and warninf types for description
* more changes to promise retry
* promise retry changes
* compile errors fixed
* New changes
* added operationstatus link
* merged sqlxEdits
* undid sqlx changes
* added completed notification
* passed retryInterval in notif options
* more changes
* added polling on landing on the page
* edits for error display
* added keys blade link
* added link generation
* added link to blade
* Modified info and description
* fixed format errors
* Second cut of the Portal
* OnChange for Number of instances
* added keys for texts
* fixed lint errors
* Added support for undefined dynamic description
* fixed failing test
* disable save/discard buttons
* fixed sqlx errors
* Dedicated Gateway changes to add the keys blade
* Change connectionStringText
* Change connectionStringText
* Text changes
* Added UI improvements
* Code review feedback
* undid package lock changes
Co-authored-by: Srinath Narayanan <srnara@microsoft.com>
* Portal changes for DedicatedGateway
Changes to support creation and deletion of DedicatedGateway resource.
Tested locally with various scenarios.
* Portal changes for DedicatedGateway. CR feedback
* Stylecop changes
* created selfServe.html landing page
* Removing TODO comments
* exposed baselineValues
* added getOnSaveNotification
* disable UI when onSave is taking place
* minro edits
* made polling optional
* added optional polling
* added default
* Added portal notifications
* merged more changes
* minor edits
* added label for description
* Added correlationids and polling of refresh
* Added correlationids and polling of refresh
* minor edit
* added label tooltip
* removed ClassInfo decorator
* Added dynamic decription
* added info and warninf types for description
* more changes to promise retry
* promise retry changes
* added spinner on selfserve load
* compile errors fixed
* New changes
* added operationstatus link
* merged sqlxEdits
* undid sqlx changes
* added completed notification
* passed retryInterval in notif options
* more retry changes
* more changes
* added polling on landing on the page
* edits for error display
* added keys blade link
* added link generation
* added link to blade
* Modified info and description
* fixed format errors
* added selfserve contract to output files
* addressed PR comments
Co-authored-by: Balaji Sridharan <fnbalaji@microsoft.com>
Co-authored-by: fnbalaji <75445927+fnbalaji@users.noreply.github.com>
* Fix subscription leak
* Update src/Explorer/SplashScreen/SplashScreen.tsx
Co-authored-by: Laurent Nguyen <laurent.nguyen@microsoft.com>
* Array needs to exist in the first place
Co-authored-by: Laurent Nguyen <laurent.nguyen@microsoft.com>
Currently, the first time a user opens the New Container pane, the autoscale setting is not being read from the flight info. This is because the flight into is being set in resetData(), which is not called the 1st time a user opens the pane.
This change adds logic to set the flight info on the open call.
- [x] Don't show extension in name field for publish
- [x] Open "Your published work" tab after publishing
- [x] Continue showing dialog for Report Abuse status
- [x] For showing COC in Public Gallery tab show backdrop of thumbnails
- [x] Liked -> My Favorites & Your published work -> My published work
I got cold feet at the thought of merging #324 in one go, so I'm going to split it into smaller chunks and keep rebasing the large one until there's no more Q.
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).
* added recursion and inition decorators
* working version
* added todo comment and removed console.log
* Added Recursive add
* removed type requirement
* proper resolution of promises
* added custom element and base class
* Made selfServe standalone page
* Added custom renderer as async type
* Added overall defaults
* added inital open from data explorer
* removed landingpage
* added feature for self serve type
* renamed sqlx->example and added invalid type
* Added comments for Example
* removed unnecessary changes
* Resolved PR comments
Added tests
Moved onSubmt and initialize inside base class
Moved testExplorer to separate folder
made fields of SelfServe Class non static
* fixed lint errors
* fixed compilation errors
* Removed reactbinding changes
* renamed dropdown -> choice
* Added SelfServeComponent
* Addressed PR comments
* added toggle, visibility, text display,commandbar
* added sqlx example
* added onRefrssh
* formatting changes
* rmoved radioswitch display
* updated smartui tests
* Added more tests
* onSubmit -> onSave
* Resolved PR comments
* added recursion and inition decorators
* working version
* added todo comment and removed console.log
* Added Recursive add
* removed type requirement
* proper resolution of promises
* added custom element and base class
* Made selfServe standalone page
* Added custom renderer as async type
* Added overall defaults
* added inital open from data explorer
* removed landingpage
* added feature for self serve type
* renamed sqlx->example and added invalid type
* Added comments for Example
* removed unnecessary changes
* Resolved PR comments
Added tests
Moved onSubmt and initialize inside base class
Moved testExplorer to separate folder
made fields of SelfServe Class non static
* fixed lint errors
* fixed compilation errors
* Removed reactbinding changes
* renamed dropdown -> choice
* Added SelfServeComponent
* Addressed PR comments
* merged master
* added selfservetype.none for emulator and hosted experience
* fixed formatting errors
* Removed "any" type
* undid package.json changes
* Adding autoscale flight info
* Add flight info to cassandra collection pane
* Add telemetry for autoscale toggle on/off in create resource blade and scale/settings
* Run formatting and add expected properties to test file
* removing empty line
* Updating to pass unit tests
Co-authored-by: Steve Faulkner <southpolesteve@gmail.com>
* Add a skip link to allow people who navigate sequentially through content more direct access to the primary content of the Data Explorer
Co-authored-by: Chris Cao (Zen3 Infosolutions America Inc) <v-yiqcao@microsoft.com>
* Rename id of partition key field in Add Collection Pane to ensure no elements contain duplicate attributes.
Co-authored-by: Chris Cao (Zen3 Infosolutions America Inc) <v-yiqcao@microsoft.com>
* Initial change of estimated cost to table format
* Converted cost estimate to table format and added different data for current vs updated cost estimates.
* lint fixes
* Changed the names of some interfaces
* Refactored a unit call to use an argument interface to avoid future confusion.
* Changed the severity of the save warning
* Format fix
* Fixed test due to styling change
Co-authored-by: Steve Faulkner <southpolesteve@gmail.com>
* Adds information text further explaining estimated cost.
* Minor tweak to cost messaging
* Updated unit tests
* Added text and link for capacity planner when choosing manual RUs
- Removed `readCollectionQuotaInfo` call. The only data we need is the usage size which we can get via the ARM metrics call instead.
- Added `getCollectionUsageSize` which fetches the `DataUsage` and `IndexUsage` metrics, converts them to KB, and returns the sum as the total usage size
- Make sure we pass the error message string instead of an error object when we call `TelemetryProcessor.traceFailure` since TelemetryProcessor will call `JSON.stringify` on the error object which would result in an empty object
- Removed ErrorParserUtility since it only works on specific error types. We can just log the full error message and manually derive information we need from the message.
- Added option to include stack trace in `getErrorMessage`. This is useful for figuring out where the client side script errors are coming from.
- Some minor refactors
In case of Serverless Cassandra accounts we don't have any Settings to tweak in the Settings Tab. So this change hides the option to open Settings tab in those cases.
* Index refresh component introduced
- Made all notifications in Mongo Index editor have 12 font size
- Added indexing policy refresh to sql indexing policy editor
- Added "you have unsaved changes" message, replace old message for lazy indexing policy changes
* formatting changes
* addressed PR comments
* Adds tables test
* Include .env var
* Adds asElement on again
* Add further loading states
* Format
* Hope to not lose focus
* Adds ID to shared key and modifies value of input directly
* Fix tables test
* Format
* Try uploading screenshots
* indent
* Fixes connection string
* Try wildcard upload path
* Rebuilds test structure, assertions, dependencies
* Wait longer for container create
* format
- created `getErrorMessage` function which takes in an error string or any type of error object and returns the correct error message
- replaced `error.message` with `getErrorMessage` since `error` could be a string in some cases
- merged sendNotificationForError.ts with ErrorHandlingUtils.ts
- some minor refactoring
In part 2, I will make the following changes:
- Make `Logger.logError` function take an error message string instead of an error object. This will reduce some redundancy where the `getErrorMessage` function is being called twice (the error object passed by the caller is already an error message).
- Update every `TelemetryProcessor.traceFailure` call to make sure we pass in an error message instead of an error object since we stringify the data we send.
* added SettingsV2 Tab
* lint changes
* foxed failing test
* Addressed PR comments
- removed dangerouslySetInnerHtml
- removed underscore dependency
- added AccessibleElement
- removed unnecesary exceptions to linting
* split render into separate functions
- removed sinon in test
- Added some enums to replace constant strings
- removed dangerously set inner html
- made autopilot input as StatefulValue
* add settingscomponent snapshot
* fixed linting errors
* fixed errors
* addressed PR comments
- Moved StatefulValue to new class
- Split render to more functions for throughputInputComponents
* Added sub components
- Added tests for SettingsRenderUtls
- Added empty test files for adding tests later
* Moved all inputs to fluent UI
- removed rupm
- added reusable styles
* Added Tabs
- Added ToolTipLabel component
- Removed toggleables for individual components
- Removed accessible elements
- Added IndexingPolicyComponent
* Added more tests
* Addressed PR comments
* Moved Label radio buttons to choicegroup
* fixed lint errors
* Removed StatefulValue
- Moved conflict res tab to the end
- Added styling for autpilot radiobuttons
* fixed linting errors
* fix bugs from merge to master
* fixed formatting issue
* Addressed PR comments
- Added unit tests for smaller methods within each component
* fixed linting errors
* removed redundant snapshots
* removed empty line
* made separate props objects for subcomponents
* Moved dirty checks to sub components
* Made indesing policy component height = 80% of view port
- modified auto pilot v3 messages
- Added Fluent UI tolltip
-
* Moved warning messages inline
* moved conflict res helpers out
* fixed bugs
* added stack style for message
* fixed tests
* Added tests
* fixed linting and format errors
* undid changes
* more edits
* fixed compile errors
* fixed compile errors
* fixed errors
* fixed bug with save and discard buttons
* fixed compile errors
* added MongoIndexingPolicy component
* addressed PR comments
* moved read indexes to scale context
* added add index feature
* added AddMongoIndexComponent
* Added collapsible portions and focus changes
* removed unnecessary imports
* finetuned UI
* more edits
* Added mongoindexeditor flight
- Moved add index UI to within current index pane
* minro edits
* Added separate warning messages for index refresh
* aligned items
* Fixed tests
* minor edits
* resolved PR comments
* modified refs usage
* compile errors fixed
* moved fetch of notifications and offer to within the tab activation
* fixed PR comments
* added error handling
* added AAD verification
* removed l empty line
* added back line
* deleted file
* added file
* addressed PR comments
* addressed PR comments
* fixed format error
* updated package.json
* updated package-lock.json
- removed the `isFixed` check in both new and old settings tab so that the options to switch between manual and autoscale shows up for fixed collections
- updated the message below the text box to inform the users that the max RU for fixed collections is 10000
- updated validation rule so that the max RU cannot exceed 10000 for fixed collections for both autoscale and manual
We need to record `subscriptionId` when publishing a notebook, also we want to restrict notebooks to only from a particular `subscriptionId` when accessing `My published work` tab. This change passes the `subscriptionId` as part of the URL when publishing or accessing published notebooks.
* '[ID: 833708][Screen Reader - CosmosDB – New KeySpace] Visual label(Keyspace id) and aria-label(Database id) is not same for Keyspace id edit field.'
* 'update on aria-label'
* Adds tables test
* Include .env var
* Adds asElement on again
* Add further loading states
* Format
* Hope to not lose focus
* Adds ID to shared key and modifies value of input directly
* Fix tables test
* Format
* Try uploading screenshots
* indent
* Fixes connection string
* Try wildcard upload path
1. After moving read databases call to RP for Tables API, we lose the `_rid` property. Since we are reading Table's database offer with SDK, we need the `_rid` of the database to find its offer. Without `_rid`, we won't be able to find the database offer and the Scale tab would disappear again. The fix is to use SDK to read databases for Table API so we have `_rid`.
2. There's a bug in the non-aad code path for updating offers which prevents users from switching from manual to autoscale and vice versa. The fix is to properly set the option headers.
Since I've cleaned up all the places that use `_rid` and `_self` of a database in my previous commit (d525afa142), we are safe to use RP to read databases for all APIs except Tables.
For Tables API, since RP doesn't support any database level operations, I have to hardcode the read database response. The only property we need in the Tables database is the id which is the string that we display in the resource tree.
Currently we maintain a cache of all database offers which can be stale since we have moved to lazy loading the offers. Instead of reading the offer from the cache, we should just find the selected database and get the offer directly by calling `database.offer()`.
The DataTable control creates 3 tables in the DOM, one for the header, one for the body and one for the footer. Because of this when navigating through the tablem it says "leaving table", when it is really the same table. It seems this is not the default and because of the option **dom: "RZlfrtip"**, the DataTable is created this way.
If I remove that setting, it will only create one table, BUT other things break, because there is a lot of custom DOM manipulation assuming the DOM was the way it was before (gross). This make me question if we wanted this on purpose to maybe solve a cross browser scrolling issue.
Instead I decided to leave it as is, until migrating to Microsoft's Fluent UI is prioritized. However I did add a summary attribute to each table, so that when listening to the narrator, it make more sense when leaving one part of the table into another part of the table. While not optimal, it should at least satisfy accessibility concern of it being confusing.
* 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
Things like ConfigContext.BACKEND_ENDPOINT are dynamically changed, and assigning them statically like this only bypasses that mechanism :(
Co-authored-by: Steve Faulkner <471400+southpolesteve@users.noreply.github.com>
* Update NotificationConsoleComponent.tsx
'Accessibiliy for alt image'
* Update NotificationConsoleComponent.tsx
'meet Unit test problems'
* Update NotificationConsoleComponent.test.tsx.snap
Update for snapshot
Co-authored-by: Chris896 <caoyiqun2017@gmail.com>
* 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
* added SettingsV2 Tab
* lint changes
* foxed failing test
* Addressed PR comments
- removed dangerouslySetInnerHtml
- removed underscore dependency
- added AccessibleElement
- removed unnecesary exceptions to linting
* split render into separate functions
- removed sinon in test
- Added some enums to replace constant strings
- removed dangerously set inner html
- made autopilot input as StatefulValue
* add settingscomponent snapshot
* fixed linting errors
* fixed errors
* addressed PR comments
- Moved StatefulValue to new class
- Split render to more functions for throughputInputComponents
* Added sub components
- Added tests for SettingsRenderUtls
- Added empty test files for adding tests later
* Moved all inputs to fluent UI
- removed rupm
- added reusable styles
* Added Tabs
- Added ToolTipLabel component
- Removed toggleables for individual components
- Removed accessible elements
- Added IndexingPolicyComponent
* Added more tests
* Addressed PR comments
* Moved Label radio buttons to choicegroup
* fixed lint errors
* Removed StatefulValue
- Moved conflict res tab to the end
- Added styling for autpilot radiobuttons
* fixed linting errors
* fix bugs from merge to master
* fixed formatting issue
* Addressed PR comments
- Added unit tests for smaller methods within each component
* fixed linting errors
* removed redundant snapshots
* removed empty line
* made separate props objects for subcomponents
* Moved dirty checks to sub components
* Made indesing policy component height = 80% of view port
- modified auto pilot v3 messages
- Added Fluent UI tolltip
-
* Moved warning messages inline
* moved conflict res helpers out
* fixed bugs
* added stack style for message
* fixed tests
* Added tests
* fixed linting and format errors
* undid changes
* more edits
* fixed compile errors
* fixed compile errors
* fixed errors
* fixed bug with save and discard buttons
* fixed compile errors
* addressed PR comments
* Enable hiding prompt when hiding inputs (so that only output is showing)
* Fix format
* Rename variable
* Use nteract prompt instead of copying source
Today, if we have non notebook file in the container and we try to download the file, it fails. That is because, the filetype is always defined as notebook in the call to content provider's get method. Fixing it to use the right type in this change.
* Adds e2e baseline SQL test in puppeteer
* fix lint
* Skip index test
* add to ci
* Stop waiting for server
* Switch to headless mode
* Adds wait-for-server to package.json and uses it in puppeteer CI
* Adds waiton
* top level wait on
* Adds env var to secrets ci.yml
* use existing connection string
* redo tests
* nits and hopefully fix timeout issue
* Fix config file
* try waiting for delete container menu
* Removes statuseval
* Remove unused var
* Slow down and add quotes to selector
* Fix blocking point, remove wait
* Reduce to 50
* Adds database delete stuff
* remove logs, add back waitFors
* Finish container SQL spec test
ConfigContext defines all kinds of URLs and what not, I'm not
sure about the security implications of allowing all this stuff to
be modifiable by just anyone.
* Fix settings tab issue for cassandra and add feature flag
* Adding the rest of the changes....
Co-authored-by: Steve Faulkner <southpolesteve@gmail.com>
* Add support for no offers when serverless accounts
* Add workaround for ignoring failed /offers when using connection string
* Revert @azure/cosmos upgrade
* minro code edits
* Added support for acknowledging code of conduct
- Added CodeOfConduct component that shows links and a checkbox that must be acknwledged before seeing the public galley
- Added verbose message for notebook publish error (when another notebook with the same name exists in the gallery)
- Added a feature flag for enabling code of conduct acknowledgement
* Added Info Component
* minor edit
* fixed failign tests
* publish tab displayed only when code of conduct accepted
* added code of conduct fetch during publish
* fixed bug
* added test and addressed PR comments
* changed line endings
* added comment
* addressed PR comments
* 1) Updated mongo collection create pane to display a better error when a shard key is ill formed.
2) Updated an error message to use double quotes since no string interpolation is used. I thought it was included in a previoue PR but I guess the change didn't get staged.
* Added support for taking screenshot
- Screenshot is taken using html2canvas package
- Converted to base 64 and uploaded to metadata
- For Using first display output
- Notebok object is passed instead of string, to publish pane
- The first cell with output present is parsed out
- The dom is also parsed to get corresponding div element to take screenshot of the first output
* fixed bug
* Addressed PR comments
- FIxed bug that didn't capture screenshot when mutiple notebook tabs are opened
* removed unnecessary dependencies
* fixed compile issues
* more edits
* Added support for custom image upload
- Dropdown gives an option for URL or image upload
- Preview shows how the card will be displayed in the gallery
- base64 converted image stored in metadata document
- Max limit is 1.5MiB for the image
* fixed lint errors
* addressed PR comments
- Added test
* added snapshot
* fixed failing test