mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-23 11:01:38 -05:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
088cac030f | ||
|
|
bd3c293f94 | ||
|
|
17db0b7d09 |
13
CHANGELOG.md
13
CHANGELOG.md
@@ -1,18 +1,5 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
## Version 0.30.6
|
|
||||||
* Release date: June 20, 2018
|
|
||||||
* Release status: Public Preview
|
|
||||||
|
|
||||||
## What's new in this version
|
|
||||||
* **SQL Server Profiler for SQL Operations Studio *Preview*** extension initial release
|
|
||||||
* The new **SQL Data Warehouse** extension includes rich customizable dashboard widgets surfacing insights to your data warehouse. This unlocks key scenarios around managing and tuning your data warehouse to ensure it is optimized for consistent performance.
|
|
||||||
* **Edit Data "Filtering and Sorting"** support
|
|
||||||
* **SQL Server Agent for SQL Operations Studio *Preview*** extension enhancements for Jobs and Job History views
|
|
||||||
* Improved **Wizard & Dialog UI Builder Framework** extensibility APIs
|
|
||||||
* Update VS Code Platform source code integrating [March 2018 (1.22)](https://code.visualstudio.com/updates/v1_22) and [April 2018 (1.23)](https://code.visualstudio.com/updates/v1_23) releases
|
|
||||||
* Fix GitHub Issues
|
|
||||||
|
|
||||||
## Version 0.29.3
|
## Version 0.29.3
|
||||||
* Release date: May 7, 2018
|
* Release date: May 7, 2018
|
||||||
* Release status: Public Preview
|
* Release status: Public Preview
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -4,16 +4,16 @@
|
|||||||
|
|
||||||
SQL Operations Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
|
SQL Operations Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
|
||||||
|
|
||||||
**Download SQL Operations Studio June Public Preview**
|
**Download SQL Operations Studio May Public Preview**
|
||||||
|
|
||||||
Platform | Link
|
Platform | Link
|
||||||
-- | --
|
-- | --
|
||||||
Windows Setup Installer | https://go.microsoft.com/fwlink/?linkid=875602
|
Windows Setup Installer | https://go.microsoft.com/fwlink/?linkid=873386
|
||||||
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=875603
|
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=873387
|
||||||
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=875604
|
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=873388
|
||||||
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=875605
|
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=873389
|
||||||
Linux RPM | https://go.microsoft.com/fwlink/?linkid=875606
|
Linux RPM | https://go.microsoft.com/fwlink/?linkid=873390
|
||||||
Linux DEB | https://go.microsoft.com/fwlink/?linkid=875607
|
Linux DEB | https://go.microsoft.com/fwlink/?linkid=873391
|
||||||
|
|
||||||
Go to our [download page](https://aka.ms/sqlopsstudio) for more specific instructions.
|
Go to our [download page](https://aka.ms/sqlopsstudio) for more specific instructions.
|
||||||
|
|
||||||
@@ -61,7 +61,6 @@ The [Microsoft Enterprise and Developer Privacy Statement](https://privacy.micro
|
|||||||
## Contributions and "thank you"
|
## Contributions and "thank you"
|
||||||
We would like to thank all our users who raised issues, and in particular the following users who helped contribute fixes:
|
We would like to thank all our users who raised issues, and in particular the following users who helped contribute fixes:
|
||||||
|
|
||||||
* lanceklinger `Fix for double clicking column handle in results table #1504`
|
|
||||||
* westerncj for `Removed duplicate contribution from README.md (#753)`
|
* westerncj for `Removed duplicate contribution from README.md (#753)`
|
||||||
* ntovas for `Fix for duplicate extensions shown in "Save File" dialog. (#779)`
|
* ntovas for `Fix for duplicate extensions shown in "Save File" dialog. (#779)`
|
||||||
* SebastianPfliegel for `Add cursor snippet (#475)`
|
* SebastianPfliegel for `Add cursor snippet (#475)`
|
||||||
|
|||||||
@@ -658,7 +658,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dataprotocol-client": "github:Microsoft/sqlops-dataprotocolclient#0.1.9",
|
"dataprotocol-client": "github:Microsoft/sqlops-dataprotocolclient#0.1.8.2",
|
||||||
"opener": "^1.4.3",
|
"opener": "^1.4.3",
|
||||||
"service-downloader": "github:anthonydresser/service-downloader#0.1.2",
|
"service-downloader": "github:anthonydresser/service-downloader#0.1.2",
|
||||||
"vscode-extension-telemetry": "^0.0.15"
|
"vscode-extension-telemetry": "^0.0.15"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
|
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
|
||||||
"version": "1.4.0-alpha.46",
|
"version": "1.4.0-alpha.45",
|
||||||
"downloadFileNames": {
|
"downloadFileNames": {
|
||||||
"Windows_86": "win-x86-netcoreapp2.1.zip",
|
"Windows_86": "win-x86-netcoreapp2.1.zip",
|
||||||
"Windows_64": "win-x64-netcoreapp2.1.zip",
|
"Windows_64": "win-x64-netcoreapp2.1.zip",
|
||||||
|
|||||||
@@ -10,13 +10,6 @@ Common SQL Profiler use-cases taken from https://docs.microsoft.com/en-us/sql/to
|
|||||||
- Monitoring the performance of SQL Server to tune workloads.
|
- Monitoring the performance of SQL Server to tune workloads.
|
||||||
- Correlating performance counters to diagnose problems.
|
- Correlating performance counters to diagnose problems.
|
||||||
|
|
||||||
## SQL Server Profiler 0.1.1 Release
|
|
||||||
The SQL Server Profiler for SQL Operations Studio *Preview* extension is now available. This is the initial preview release for a new lightweight XEvent-based profiler. The SQL Server Profiler extension tries to make it simple to quickly trace server activity for troubleshooting and monitoring.
|
|
||||||
|
|
||||||
We'll continue to enhance this extension over the next couple releases. Take a look at the below screenshot to see what's currently available.
|
|
||||||
|
|
||||||
<img width="850" src="https://user-images.githubusercontent.com/599935/41578613-fa10e8bc-7347-11e8-8b97-9fb7d186c9f6.png">
|
|
||||||
|
|
||||||
## Code of Conduct
|
## Code of Conduct
|
||||||
|
|
||||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "profiler",
|
"name": "profiler",
|
||||||
"displayName": "SQL Server Profiler",
|
"displayName": "SQL Server Profiler",
|
||||||
"description": "SQL Server Profiler for SQL Operations Studio",
|
"description": "SQL Server Profiler for SQL Operations Studio",
|
||||||
"version": "0.1.1",
|
"version": "0.30.0",
|
||||||
"publisher": "Microsoft",
|
"publisher": "Microsoft",
|
||||||
"preview": true,
|
"preview": true,
|
||||||
"license": "https://raw.githubusercontent.com/Microsoft/sqlopsstudio/master/LICENSE.txt",
|
"license": "https://raw.githubusercontent.com/Microsoft/sqlopsstudio/master/LICENSE.txt",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sqlops",
|
"name": "sqlops",
|
||||||
"version": "0.30.6",
|
"version": "0.30.5",
|
||||||
"distro": "8c3e97e3425cc9814496472ab73e076de2ba99ee",
|
"distro": "8c3e97e3425cc9814496472ab73e076de2ba99ee",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Microsoft Corporation"
|
"name": "Microsoft Corporation"
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
"reflect-metadata": "^0.1.8",
|
"reflect-metadata": "^0.1.8",
|
||||||
"rxjs": "5.4.0",
|
"rxjs": "5.4.0",
|
||||||
"semver": "4.3.6",
|
"semver": "4.3.6",
|
||||||
"slickgrid": "github:anthonydresser/SlickGrid#2.3.20",
|
"slickgrid": "github:anthonydresser/SlickGrid#2.3.16",
|
||||||
"spdlog": "0.6.0",
|
"spdlog": "0.6.0",
|
||||||
"sudo-prompt": "^8.0.0",
|
"sudo-prompt": "^8.0.0",
|
||||||
"svg.js": "^2.2.5",
|
"svg.js": "^2.2.5",
|
||||||
|
|||||||
@@ -27,16 +27,14 @@
|
|||||||
"reportIssueUrl": "https://github.com/Microsoft/sqlopsstudio/issues/new?labels=customer%20reported%20issue",
|
"reportIssueUrl": "https://github.com/Microsoft/sqlopsstudio/issues/new?labels=customer%20reported%20issue",
|
||||||
"requestFeatureUrl": "https://github.com/Microsoft/sqlopsstudio/issues/new?labels=feature-request"
|
"requestFeatureUrl": "https://github.com/Microsoft/sqlopsstudio/issues/new?labels=feature-request"
|
||||||
},
|
},
|
||||||
"gettingStartedUrl": "https://go.microsoft.com/fwlink/?linkid=862039",
|
"releaseNotesUrl": "https://go.microsoft.com/fwlink/?linkid=862039",
|
||||||
"releaseNotesUrl": "https://go.microsoft.com/fwlink/?linkid=875578",
|
|
||||||
"documentationUrl": "https://go.microsoft.com/fwlink/?linkid=862277",
|
"documentationUrl": "https://go.microsoft.com/fwlink/?linkid=862277",
|
||||||
"commit": "9ca6200018fc206d67a47229f991901a8a453781",
|
"commit": "9ca6200018fc206d67a47229f991901a8a453781",
|
||||||
"date": "2017-12-15T12:00:00.000Z",
|
"date": "2017-12-15T12:00:00.000Z",
|
||||||
"recommendedExtensions": [
|
"recommendedExtensions": [
|
||||||
"Microsoft.agent",
|
"Microsoft.agent",
|
||||||
"Microsoft.profiler",
|
|
||||||
"Microsoft.server-report",
|
|
||||||
"Microsoft.whoisactive",
|
"Microsoft.whoisactive",
|
||||||
|
"Microsoft.server-report",
|
||||||
"Redgate.sql-search"
|
"Redgate.sql-search"
|
||||||
],
|
],
|
||||||
"extensionsGallery": {
|
"extensionsGallery": {
|
||||||
|
|||||||
@@ -5,9 +5,4 @@
|
|||||||
|
|
||||||
.editdata-component * {
|
.editdata-component * {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
|
||||||
|
|
||||||
#workbench\.editor\.editDataEditor .monaco-toolbar .monaco-select-box {
|
|
||||||
margin-top: 4px;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
}
|
}
|
||||||
@@ -93,10 +93,10 @@ export default class ButtonComponent extends ComponentBase implements IComponent
|
|||||||
this._button.enabled = this.enabled;
|
this._button.enabled = this.enabled;
|
||||||
this._button.label = this.label;
|
this._button.label = this.label;
|
||||||
if (this.width) {
|
if (this.width) {
|
||||||
this._button.setWidth(this.convertSize(this.width.toString()));
|
this._button.setWidth(this.width.toString());
|
||||||
}
|
}
|
||||||
if (this.height) {
|
if (this.height) {
|
||||||
this._button.setWidth(this.convertSize(this.height.toString()));
|
this._button.setWidth(this.height.toString());
|
||||||
}
|
}
|
||||||
this.updateIcon();
|
this.updateIcon();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { attachInputBoxStyler, attachListStyler } from 'vs/platform/theme/common
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'modelview-checkbox',
|
selector: 'modelview-checkbox',
|
||||||
template: `
|
template: `
|
||||||
<div #input [style.width]="getWidth()"></div>
|
<div #input style="width: 100%"></div>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
export default class CheckBoxComponent extends ComponentBase implements IComponent, OnDestroy, AfterViewInit {
|
export default class CheckBoxComponent extends ComponentBase implements IComponent, OnDestroy, AfterViewInit {
|
||||||
|
|||||||
@@ -146,12 +146,11 @@ export abstract class ComponentBase extends Disposable implements IComponent, On
|
|||||||
return this.height ? this.convertSize(this.height) : '';
|
return this.height ? this.convertSize(this.height) : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
protected convertSize(size: number | string, defaultValue?: string): string {
|
protected convertSize(size: number | string): string {
|
||||||
defaultValue = defaultValue || '';
|
|
||||||
if (types.isUndefinedOrNull(size)) {
|
if (types.isUndefinedOrNull(size)) {
|
||||||
return defaultValue;
|
return '100%';
|
||||||
}
|
}
|
||||||
let convertedSize: string = size ? size.toString() : defaultValue;
|
let convertedSize: string = size ? size.toString() : '100%';
|
||||||
if (!convertedSize.toLowerCase().endsWith('px') && !convertedSize.toLowerCase().endsWith('%')) {
|
if (!convertedSize.toLowerCase().endsWith('px') && !convertedSize.toLowerCase().endsWith('%')) {
|
||||||
convertedSize = convertedSize + 'px';
|
convertedSize = convertedSize + 'px';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,26 +145,18 @@ export default class DropDownComponent extends ComponentBase implements ICompone
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getSelectedValue(): string {
|
private getSelectedValue(): string {
|
||||||
if (this.values && this.values.length > 0 && this.valuesHaveDisplayName()) {
|
if (this.values && this.valuesHaveDisplayName()) {
|
||||||
let selectedValue = <sqlops.CategoryValue>this.value || <sqlops.CategoryValue>this.values[0];
|
let valueCategory = (<sqlops.CategoryValue[]>this.values).find(v => v.name === this.value);
|
||||||
if (!this.value) {
|
|
||||||
this.value = selectedValue;
|
|
||||||
}
|
|
||||||
let valueCategory = (<sqlops.CategoryValue[]>this.values).find(v => v.name === selectedValue.name);
|
|
||||||
|
|
||||||
return valueCategory && valueCategory.displayName;
|
return valueCategory && valueCategory.displayName;
|
||||||
} else {
|
} else {
|
||||||
if (!this.value && this.values && this.values.length > 0) {
|
return this.value;
|
||||||
this.value = <string>this.values[0];
|
|
||||||
}
|
|
||||||
return <string>this.value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private setSelectedValue(newValue: string): void {
|
private setSelectedValue(newValue: string): void {
|
||||||
if (this.values && this.valuesHaveDisplayName()) {
|
if (this.values && this.valuesHaveDisplayName()) {
|
||||||
let valueCategory = (<sqlops.CategoryValue[]>this.values).find(v => v.displayName === newValue);
|
let valueCategory = (<sqlops.CategoryValue[]>this.values).find(v => v.displayName === newValue);
|
||||||
this.value = valueCategory;
|
this.value = valueCategory && valueCategory.name;
|
||||||
} else {
|
} else {
|
||||||
this.value = newValue;
|
this.value = newValue;
|
||||||
}
|
}
|
||||||
@@ -172,8 +164,8 @@ export default class DropDownComponent extends ComponentBase implements ICompone
|
|||||||
|
|
||||||
// CSS-bound properties
|
// CSS-bound properties
|
||||||
|
|
||||||
private get value(): string | sqlops.CategoryValue {
|
private get value(): string {
|
||||||
return this.getPropertyOrDefault<sqlops.DropDownProperties, string | sqlops.CategoryValue>((props) => props.value, '');
|
return this.getPropertyOrDefault<sqlops.DropDownProperties, string>((props) => props.value, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
private get editable(): boolean {
|
private get editable(): boolean {
|
||||||
@@ -188,8 +180,8 @@ export default class DropDownComponent extends ComponentBase implements ICompone
|
|||||||
return !this.editable ? '' : 'none';
|
return !this.editable ? '' : 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
private set value(newValue: string | sqlops.CategoryValue) {
|
private set value(newValue: string) {
|
||||||
this.setPropertyFromUI<sqlops.DropDownProperties, string | sqlops.CategoryValue>(this.setValueProperties, newValue);
|
this.setPropertyFromUI<sqlops.DropDownProperties, string>(this.setValueProperties, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private get values(): string[] | sqlops.CategoryValue[] {
|
private get values(): string[] | sqlops.CategoryValue[] {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class FlexItem {
|
|||||||
template: `
|
template: `
|
||||||
<div *ngIf="items" class="flexContainer" [style.flexFlow]="flexFlow" [style.justifyContent]="justifyContent"
|
<div *ngIf="items" class="flexContainer" [style.flexFlow]="flexFlow" [style.justifyContent]="justifyContent"
|
||||||
[style.alignItems]="alignItems" [style.alignContent]="alignContent" [style.height]="height" [style.width]="width">
|
[style.alignItems]="alignItems" [style.alignContent]="alignContent" [style.height]="height" [style.width]="width">
|
||||||
<div *ngFor="let item of items" [style.flex]="getItemFlex(item)" [style.textAlign]="textAlign" [style.order]="getItemOrder(item)" >
|
<div *ngFor="let item of items" [style.flex]="getItemFlex(item)" [style.order]="getItemOrder(item)" >
|
||||||
<model-component-wrapper [descriptor]="item.descriptor" [modelStore]="modelStore">
|
<model-component-wrapper [descriptor]="item.descriptor" [modelStore]="modelStore">
|
||||||
</model-component-wrapper>
|
</model-component-wrapper>
|
||||||
</div>
|
</div>
|
||||||
@@ -40,7 +40,6 @@ export default class FlexContainer extends ContainerBase<FlexItemLayout> impleme
|
|||||||
private _justifyContent: string;
|
private _justifyContent: string;
|
||||||
private _alignItems: string;
|
private _alignItems: string;
|
||||||
private _alignContent: string;
|
private _alignContent: string;
|
||||||
private _textAlign: string;
|
|
||||||
private _height: string;
|
private _height: string;
|
||||||
private _width: string;
|
private _width: string;
|
||||||
|
|
||||||
@@ -66,7 +65,6 @@ export default class FlexContainer extends ContainerBase<FlexItemLayout> impleme
|
|||||||
this._justifyContent = layout.justifyContent ? layout.justifyContent : '';
|
this._justifyContent = layout.justifyContent ? layout.justifyContent : '';
|
||||||
this._alignItems = layout.alignItems ? layout.alignItems : '';
|
this._alignItems = layout.alignItems ? layout.alignItems : '';
|
||||||
this._alignContent = layout.alignContent ? layout.alignContent : '';
|
this._alignContent = layout.alignContent ? layout.alignContent : '';
|
||||||
this._textAlign = layout.textAlign ? layout.textAlign : '';
|
|
||||||
this._height = this.convertSize(layout.height);
|
this._height = this.convertSize(layout.height);
|
||||||
this._width = this.convertSize(layout.width);
|
this._width = this.convertSize(layout.width);
|
||||||
|
|
||||||
@@ -98,10 +96,6 @@ export default class FlexContainer extends ContainerBase<FlexItemLayout> impleme
|
|||||||
return this._alignContent;
|
return this._alignContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public get textAlign(): string {
|
|
||||||
return this._textAlign;
|
|
||||||
}
|
|
||||||
|
|
||||||
private getItemFlex(item: FlexItem): string {
|
private getItemFlex(item: FlexItem): string {
|
||||||
return item.config ? item.config.flex : '1 1 auto';
|
return item.config ? item.config.flex : '1 1 auto';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,15 +16,13 @@ import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboar
|
|||||||
import { ContainerBase } from 'sql/parts/modelComponents/componentBase';
|
import { ContainerBase } from 'sql/parts/modelComponents/componentBase';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { getContentHeight, getContentWidth, Dimension } from 'vs/base/browser/dom';
|
|
||||||
|
|
||||||
export interface TitledFormItemLayout {
|
export interface TitledFormItemLayout {
|
||||||
title: string;
|
title: string;
|
||||||
actions?: string[];
|
actions?: string[];
|
||||||
isFormComponent: Boolean;
|
isFormComponent: Boolean;
|
||||||
horizontal: boolean;
|
horizontal: boolean;
|
||||||
componentWidth?: number | string;
|
componentWidth: number;
|
||||||
componentHeight?: number | string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FormLayout {
|
export interface FormLayout {
|
||||||
@@ -39,7 +37,7 @@ class FormItem {
|
|||||||
template: `
|
template: `
|
||||||
<div #container *ngIf="items" class="form-table" [style.width]="getFormWidth()" [style.height]="getFormHeight()">
|
<div #container *ngIf="items" class="form-table" [style.width]="getFormWidth()" [style.height]="getFormHeight()">
|
||||||
<ng-container *ngFor="let item of items">
|
<ng-container *ngFor="let item of items">
|
||||||
<div class="form-row" *ngIf="isFormComponent(item)" [style.height]="getRowHeight(item)">
|
<div class="form-row" *ngIf="isFormComponent(item)">
|
||||||
|
|
||||||
<ng-container *ngIf="isHorizontal(item)">
|
<ng-container *ngIf="isHorizontal(item)">
|
||||||
<div class="form-cell">{{getItemTitle(item)}}</div>
|
<div class="form-cell">{{getItemTitle(item)}}</div>
|
||||||
@@ -58,10 +56,10 @@ class FormItem {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<div class="form-vertical-container" *ngIf="isVertical(item)" [style.height]="getRowHeight(item)">
|
<div class="form-vertical-container" *ngIf="isVertical(item)">
|
||||||
<div class="form-item-row">{{getItemTitle(item)}}</div>
|
<div class="form-item-row">{{getItemTitle(item)}}</div>
|
||||||
<div class="form-item-row" [style.width]="getComponentWidth(item)" [style.height]="getRowHeight(item)">
|
<div class="form-item-row" [style.width]="getComponentWidth(item)">
|
||||||
<model-component-wrapper [descriptor]="item.descriptor" [modelStore]="modelStore" [style.width]="getComponentWidth(item)" [style.height]="getRowHeight(item)">
|
<model-component-wrapper [descriptor]="item.descriptor" [modelStore]="modelStore" [style.width]="getComponentWidth(item)">
|
||||||
</model-component-wrapper>
|
</model-component-wrapper>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="itemHasActions(item)" class="form-item-row form-actions-table form-item-last-row">
|
<div *ngIf="itemHasActions(item)" class="form-item-row form-actions-table form-item-last-row">
|
||||||
@@ -103,10 +101,6 @@ export default class FormContainer extends ContainerBase<FormItemLayout> impleme
|
|||||||
ngAfterViewInit(): void {
|
ngAfterViewInit(): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(): void {
|
|
||||||
super.layout();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// IComponent implementation
|
/// IComponent implementation
|
||||||
|
|
||||||
public get alignItems(): string {
|
public get alignItems(): string {
|
||||||
@@ -118,21 +112,16 @@ export default class FormContainer extends ContainerBase<FormItemLayout> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getFormWidth(): string {
|
private getFormWidth(): string {
|
||||||
return this.convertSize(this._formLayout && this._formLayout.width, '');
|
return this.convertSize(this._formLayout && this._formLayout.width);
|
||||||
}
|
}
|
||||||
|
|
||||||
private getFormHeight(): string {
|
private getFormHeight(): string {
|
||||||
return this.convertSize(this._formLayout && this._formLayout.height, '');
|
return this.convertSize(this._formLayout && this._formLayout.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
private getComponentWidth(item: FormItem): string {
|
private getComponentWidth(item: FormItem): string {
|
||||||
let itemConfig = item.config;
|
let itemConfig = item.config;
|
||||||
return (itemConfig && itemConfig.componentWidth) ? this.convertSize(itemConfig.componentWidth, '') : '';
|
return (itemConfig && itemConfig.componentWidth) ? itemConfig.componentWidth + 'px' : '';
|
||||||
}
|
|
||||||
|
|
||||||
private getRowHeight(item: FormItem): string {
|
|
||||||
let itemConfig = item.config;
|
|
||||||
return (itemConfig && itemConfig.componentHeight) ? this.convertSize(itemConfig.componentHeight, '') : '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private getItemTitle(item: FormItem): string {
|
private getItemTitle(item: FormItem): string {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import { RowSelectionModel } from 'sql/base/browser/ui/table/plugins/rowSelectio
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'modelview-table',
|
selector: 'modelview-table',
|
||||||
template: `
|
template: `
|
||||||
<div #table style="width: 100%;height:100%"></div>
|
<div #table style="width: 100%"></div>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
export default class TableComponent extends ComponentBase implements IComponent, OnDestroy, AfterViewInit {
|
export default class TableComponent extends ComponentBase implements IComponent, OnDestroy, AfterViewInit {
|
||||||
@@ -92,8 +92,9 @@ export default class TableComponent extends ComponentBase implements IComponent,
|
|||||||
let options = <Slick.GridOptions<any>>{
|
let options = <Slick.GridOptions<any>>{
|
||||||
syncColumnCellResize: true,
|
syncColumnCellResize: true,
|
||||||
enableColumnReorder: false,
|
enableColumnReorder: false,
|
||||||
|
rowHeight: 45,
|
||||||
enableCellNavigation: true,
|
enableCellNavigation: true,
|
||||||
forceFitColumns: true,
|
forceFitColumns: true
|
||||||
};
|
};
|
||||||
|
|
||||||
this._table = new Table<Slick.SlickData>(this._inputContainer.nativeElement, this._tableData, this._tableColumns, options);
|
this._table = new Table<Slick.SlickData>(this._inputContainer.nativeElement, this._tableData, this._tableColumns, options);
|
||||||
|
|||||||
@@ -19,10 +19,8 @@ import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
|||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { IObjectExplorerService } from '../../objectExplorer/common/objectExplorerService';
|
|
||||||
import { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
|
import { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
|
||||||
import { TPromise } from 'vs/base/common/winjs.base';
|
import { TPromise } from 'vs/base/common/winjs.base';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
|
||||||
|
|
||||||
// Contribute Global Actions
|
// Contribute Global Actions
|
||||||
const category = nls.localize('profilerCategory', "Profiler");
|
const category = nls.localize('profilerCategory', "Profiler");
|
||||||
@@ -39,9 +37,20 @@ CommandsRegistry.registerCommand({
|
|||||||
let editorService: IWorkbenchEditorService = accessor.get(IWorkbenchEditorService);
|
let editorService: IWorkbenchEditorService = accessor.get(IWorkbenchEditorService);
|
||||||
let instantiationService: IInstantiationService = accessor.get(IInstantiationService);
|
let instantiationService: IInstantiationService = accessor.get(IInstantiationService);
|
||||||
let connectionService: IConnectionManagementService = accessor.get(IConnectionManagementService);
|
let connectionService: IConnectionManagementService = accessor.get(IConnectionManagementService);
|
||||||
let objectExplorerService: IObjectExplorerService = accessor.get(IObjectExplorerService);
|
|
||||||
|
|
||||||
let connectionProfile = TaskUtilities.getCurrentGlobalConnection(objectExplorerService, connectionService, editorService);
|
// TODO: for test-only, grab the first MSSQL active connection for the profiler session
|
||||||
|
// TODO: when finishing the feature the connection should come from the launch context
|
||||||
|
let connectionProfile: IConnectionProfile;
|
||||||
|
let activeConnections = connectionService.getActiveConnections();
|
||||||
|
if (activeConnections) {
|
||||||
|
for (let i = 0; i < activeConnections.length; ++i) {
|
||||||
|
if (activeConnections[i].providerName === 'MSSQL') {
|
||||||
|
connectionProfile = activeConnections[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let profilerInput = instantiationService.createInstance(ProfilerInput, connectionProfile);
|
let profilerInput = instantiationService.createInstance(ProfilerInput, connectionProfile);
|
||||||
return editorService.openEditor(profilerInput, { pinned: true }, false).then(() => TPromise.as(true));
|
return editorService.openEditor(profilerInput, { pinned: true }, false).then(() => TPromise.as(true));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -202,6 +202,8 @@ export class ProfilerEditor extends BaseEditor {
|
|||||||
this._register(attachSelectBoxStyler(this._sessionTemplateSelector, this.themeService));
|
this._register(attachSelectBoxStyler(this._sessionTemplateSelector, this.themeService));
|
||||||
|
|
||||||
this._actionBar.setContent([
|
this._actionBar.setContent([
|
||||||
|
{ action: this._connectAction },
|
||||||
|
{ element: Taskbar.createTaskbarSeparator() },
|
||||||
{ action: this._startAction },
|
{ action: this._startAction },
|
||||||
{ action: this._stopAction },
|
{ action: this._stopAction },
|
||||||
{ element: dropdownContainer },
|
{ element: dropdownContainer },
|
||||||
@@ -384,20 +386,21 @@ export class ProfilerEditor extends BaseEditor {
|
|||||||
|
|
||||||
if (e.isConnected) {
|
if (e.isConnected) {
|
||||||
this._connectAction.connected = this.input.state.isConnected;
|
this._connectAction.connected = this.input.state.isConnected;
|
||||||
|
this._startAction.enabled = this.input.state.isConnected;
|
||||||
|
this._stopAction.enabled = false;
|
||||||
|
this._pauseAction.enabled = false;
|
||||||
|
|
||||||
if (this.input.state.isConnected) {
|
if (this.input.state.isConnected) {
|
||||||
this._sessionTemplateSelector.disable();
|
this._sessionTemplateSelector.disable();
|
||||||
} else {
|
} else {
|
||||||
this._sessionTemplateSelector.enable();
|
this._sessionTemplateSelector.enable();
|
||||||
this._startAction.enabled = this.input.state.isConnected;
|
|
||||||
this._stopAction.enabled = false;
|
|
||||||
this._pauseAction.enabled = false;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.isPaused){
|
if (e.isPaused){
|
||||||
this._pauseAction.paused = this.input.state.isPaused;
|
this._pauseAction.paused = this.input.state.isPaused;
|
||||||
this._pauseAction.enabled = !this.input.state.isStopped && (this.input.state.isRunning || this.input.state.isPaused);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.isStopped || e.isRunning) {
|
if (e.isStopped || e.isRunning) {
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
|||||||
import { EditorInput } from 'vs/workbench/common/editor';
|
import { EditorInput } from 'vs/workbench/common/editor';
|
||||||
import { IEditorModel } from 'vs/platform/editor/common/editor';
|
import { IEditorModel } from 'vs/platform/editor/common/editor';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
import { generateUuid } from 'vs/base/common/uuid';
|
import { generateUuid } from 'vs/base/common/uuid';
|
||||||
|
|
||||||
@@ -36,15 +35,14 @@ export class ProfilerInput extends EditorInput implements IProfilerSession {
|
|||||||
constructor(
|
constructor(
|
||||||
private _connection: IConnectionProfile,
|
private _connection: IConnectionProfile,
|
||||||
@IInstantiationService private _instantiationService: IInstantiationService,
|
@IInstantiationService private _instantiationService: IInstantiationService,
|
||||||
@IProfilerService private _profilerService: IProfilerService,
|
@IProfilerService private _profilerService: IProfilerService
|
||||||
@INotificationService private _notificationService: INotificationService
|
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
this._state = new ProfilerState();
|
this._state = new ProfilerState();
|
||||||
// set inital state
|
// set inital state
|
||||||
this.state.change({
|
this.state.change({
|
||||||
isConnected: true,
|
isConnected: true,
|
||||||
isStopped: true,
|
isStopped: false,
|
||||||
isPaused: false,
|
isPaused: false,
|
||||||
isRunning: false,
|
isRunning: false,
|
||||||
autoscroll: true
|
autoscroll: true
|
||||||
@@ -125,21 +123,7 @@ export class ProfilerInput extends EditorInput implements IProfilerSession {
|
|||||||
return this._state;
|
return this._state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public onSessionStopped(notification: sqlops.ProfilerSessionStoppedParams) {
|
|
||||||
this._notificationService.error(nls.localize("profiler.sessionStopped", "XEvent Profiler Session stopped unexpectedly on the server {0}.", this._connection.serverName));
|
|
||||||
|
|
||||||
this.state.change({
|
|
||||||
isStopped: true,
|
|
||||||
isPaused: false,
|
|
||||||
isRunning: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public onMoreRows(eventMessage: sqlops.ProfilerSessionEvents) {
|
public onMoreRows(eventMessage: sqlops.ProfilerSessionEvents) {
|
||||||
if (eventMessage.eventsLost){
|
|
||||||
this._notificationService.warn(nls.localize("profiler.eventsLost", "The XEvent Profiler session for {0} has lost events.", this._connection.serverName));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i: number = 0; i < eventMessage.events.length && i < 500; ++i) {
|
for (let i: number = 0; i < eventMessage.events.length && i < 500; ++i) {
|
||||||
let e: sqlops.ProfilerEvent = eventMessage.events[i];
|
let e: sqlops.ProfilerEvent = eventMessage.events[i];
|
||||||
let data = {};
|
let data = {};
|
||||||
|
|||||||
@@ -25,10 +25,6 @@ export interface IProfilerSession {
|
|||||||
* Called by the service when more rows are available to render
|
* Called by the service when more rows are available to render
|
||||||
*/
|
*/
|
||||||
onMoreRows(events: sqlops.ProfilerSessionEvents);
|
onMoreRows(events: sqlops.ProfilerSessionEvents);
|
||||||
/**
|
|
||||||
* Called by the service when the session is closed unexpectedly
|
|
||||||
*/
|
|
||||||
onSessionStopped(events: sqlops.ProfilerSessionStoppedParams);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,10 +65,6 @@ export interface IProfilerService {
|
|||||||
* The method called by the service provider for when more rows are available to render
|
* The method called by the service provider for when more rows are available to render
|
||||||
*/
|
*/
|
||||||
onMoreRows(params: sqlops.ProfilerSessionEvents): void;
|
onMoreRows(params: sqlops.ProfilerSessionEvents): void;
|
||||||
/**
|
|
||||||
* The method called by the service provider for when more rows are available to render
|
|
||||||
*/
|
|
||||||
onSessionStopped(params: sqlops.ProfilerSessionStoppedParams): void;
|
|
||||||
/**
|
/**
|
||||||
* Gets a list of the session templates that are specified in the settings
|
* Gets a list of the session templates that are specified in the settings
|
||||||
* @param provider An optional string to limit the session template to a specific
|
* @param provider An optional string to limit the session template to a specific
|
||||||
|
|||||||
@@ -82,11 +82,6 @@ export class ProfilerService implements IProfilerService {
|
|||||||
this._sessionMap.get(this._idMap.reverseGet(params.sessionId)).onMoreRows(params);
|
this._sessionMap.get(this._idMap.reverseGet(params.sessionId)).onMoreRows(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public onSessionStopped(params: sqlops.ProfilerSessionStoppedParams): void {
|
|
||||||
|
|
||||||
this._sessionMap.get(this._idMap.reverseGet(params.ownerUri)).onSessionStopped(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
public connectSession(id: ProfilerSessionID): Thenable<boolean> {
|
public connectSession(id: ProfilerSessionID): Thenable<boolean> {
|
||||||
return this._runAction(id, provider => provider.connectSession(this._idMap.get(id)));
|
return this._runAction(id, provider => provider.connectSession(this._idMap.get(id)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,10 +48,6 @@ export class ProfilerTestBackend implements sqlops.ProfilerProvider {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
registerOnSessionStopped(handler: (response: sqlops.ProfilerSessionStoppedParams) => any) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
private intervalFn(guid: string): number {
|
private intervalFn(guid: string): number {
|
||||||
return setTimeout(() => {
|
return setTimeout(() => {
|
||||||
let data = this.testData[this.index++];
|
let data = this.testData[this.index++];
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ export class DialogPane extends Disposable implements IThemable {
|
|||||||
this._body.appendChild(tabContainer);
|
this._body.appendChild(tabContainer);
|
||||||
this.initializeModelViewContainer(tabContainer, tab.content, tab);
|
this.initializeModelViewContainer(tabContainer, tab.content, tab);
|
||||||
this._tabbedPanel.onTabChange(e => {
|
this._tabbedPanel.onTabChange(e => {
|
||||||
tabContainer.style.height = (this.getTabDimension().height - this._tabbedPanel.headersize) + 'px';
|
|
||||||
this._onTabChange.fire(tab.content);
|
this._onTabChange.fire(tab.content);
|
||||||
});
|
});
|
||||||
this._tabbedPanel.pushTab({
|
this._tabbedPanel.pushTab({
|
||||||
@@ -92,7 +91,7 @@ export class DialogPane extends Disposable implements IThemable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getTabDimension(): DOM.Dimension {
|
private getTabDimension(): DOM.Dimension {
|
||||||
return new DOM.Dimension(DOM.getContentWidth(this._body), DOM.getContentHeight(this._body));
|
return new DOM.Dimension(DOM.getContentWidth(this._body), DOM.getContentHeight(this._body))
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(): void {
|
public layout(): void {
|
||||||
|
|||||||
10
src/sql/sqlops.d.ts
vendored
10
src/sql/sqlops.d.ts
vendored
@@ -1409,7 +1409,6 @@ declare module 'sqlops' {
|
|||||||
disconnectSession(sessionId: string): Thenable<boolean>;
|
disconnectSession(sessionId: string): Thenable<boolean>;
|
||||||
|
|
||||||
registerOnSessionEventsAvailable(handler: (response: ProfilerSessionEvents) => any): void;
|
registerOnSessionEventsAvailable(handler: (response: ProfilerSessionEvents) => any): void;
|
||||||
registerOnSessionStopped(handler: (response: ProfilerSessionStoppedParams) => any): void;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IProfilerTableRow {
|
export interface IProfilerTableRow {
|
||||||
@@ -1450,15 +1449,6 @@ declare module 'sqlops' {
|
|||||||
sessionId: string;
|
sessionId: string;
|
||||||
|
|
||||||
events: ProfilerEvent[];
|
events: ProfilerEvent[];
|
||||||
|
|
||||||
eventsLost: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ProfilerSessionStoppedParams {
|
|
||||||
|
|
||||||
ownerUri: string;
|
|
||||||
|
|
||||||
sessionId: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// File browser interfaces -----------------------------------------------------------------------
|
// File browser interfaces -----------------------------------------------------------------------
|
||||||
|
|||||||
16
src/sql/sqlops.proposed.d.ts
vendored
16
src/sql/sqlops.proposed.d.ts
vendored
@@ -216,11 +216,6 @@ declare module 'sqlops' {
|
|||||||
* Container Width
|
* Container Width
|
||||||
*/
|
*/
|
||||||
width?: number | string;
|
width?: number | string;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
textAlign?: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FlexItemLayout {
|
export interface FlexItemLayout {
|
||||||
@@ -237,8 +232,7 @@ declare module 'sqlops' {
|
|||||||
|
|
||||||
export interface FormItemLayout {
|
export interface FormItemLayout {
|
||||||
horizontal?: boolean;
|
horizontal?: boolean;
|
||||||
componentWidth?: number | string;
|
componentWidth?: number;
|
||||||
componentHeight?: number | string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FormLayout {
|
export interface FormLayout {
|
||||||
@@ -310,8 +304,8 @@ declare module 'sqlops' {
|
|||||||
export type InputBoxInputType = 'color' | 'date' | 'datetime-local' | 'email' | 'month' | 'number' | 'password' | 'range' | 'search' | 'text' | 'time' | 'url' | 'week';
|
export type InputBoxInputType = 'color' | 'date' | 'datetime-local' | 'email' | 'month' | 'number' | 'password' | 'range' | 'search' | 'text' | 'time' | 'url' | 'week';
|
||||||
|
|
||||||
export interface ComponentProperties {
|
export interface ComponentProperties {
|
||||||
height?: number | string;
|
height: number | string;
|
||||||
width?: number | string;
|
width: number | string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface InputBoxProperties extends ComponentProperties {
|
export interface InputBoxProperties extends ComponentProperties {
|
||||||
@@ -360,7 +354,7 @@ declare module 'sqlops' {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface DropDownProperties extends ComponentProperties {
|
export interface DropDownProperties extends ComponentProperties {
|
||||||
value?: string | CategoryValue;
|
value?: string;
|
||||||
values?: string[] | CategoryValue[];
|
values?: string[] | CategoryValue[];
|
||||||
editable?: boolean;
|
editable?: boolean;
|
||||||
}
|
}
|
||||||
@@ -424,7 +418,7 @@ declare module 'sqlops' {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface DropDownComponent extends Component, DropDownProperties {
|
export interface DropDownComponent extends Component, DropDownProperties {
|
||||||
value: string | CategoryValue;
|
value: string;
|
||||||
values: string[] | CategoryValue[];
|
values: string[] | CategoryValue[];
|
||||||
onValueChanged: vscode.Event<any>;
|
onValueChanged: vscode.Event<any>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -518,13 +518,6 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
|
|||||||
this._proxy.$onSessionEventsAvailable(handle, response);
|
this._proxy.$onSessionEventsAvailable(handle, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Profiler session stopped unexpectedly notification
|
|
||||||
*/
|
|
||||||
public $onSessionStopped(handle: number, response: sqlops.ProfilerSessionStoppedParams): void {
|
|
||||||
this._proxy.$onSessionStopped(handle, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Agent Job Provider methods
|
* Agent Job Provider methods
|
||||||
|
|||||||
@@ -771,10 +771,10 @@ class DropDownWrapper extends ComponentWrapper implements sqlops.DropDownCompone
|
|||||||
this._emitterMap.set(ComponentEventType.onDidChange, new Emitter<any>());
|
this._emitterMap.set(ComponentEventType.onDidChange, new Emitter<any>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public get value(): string | sqlops.CategoryValue {
|
public get value(): string {
|
||||||
return this.properties['value'];
|
return this.properties['value'];
|
||||||
}
|
}
|
||||||
public set value(v: string | sqlops.CategoryValue) {
|
public set value(v: string) {
|
||||||
this.setProperty('value', v);
|
this.setProperty('value', v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -432,10 +432,6 @@ export class MainThreadDataProtocol implements MainThreadDataProtocolShape {
|
|||||||
this._profilerService.onMoreRows(response);
|
this._profilerService.onMoreRows(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
public $onSessionStopped(handle: number, response: sqlops.ProfilerSessionStoppedParams): void {
|
|
||||||
this._profilerService.onSessionStopped(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
public $unregisterProvider(handle: number): TPromise<any> {
|
public $unregisterProvider(handle: number): TPromise<any> {
|
||||||
let capabilitiesRegistration = this._capabilitiesRegistrations[handle];
|
let capabilitiesRegistration = this._capabilitiesRegistrations[handle];
|
||||||
if (capabilitiesRegistration) {
|
if (capabilitiesRegistration) {
|
||||||
|
|||||||
@@ -237,10 +237,6 @@ export function createApiFactory(
|
|||||||
extHostDataProvider.$onSessionEventsAvailable(provider.handle, response);
|
extHostDataProvider.$onSessionEventsAvailable(provider.handle, response);
|
||||||
});
|
});
|
||||||
|
|
||||||
provider.registerOnSessionStopped((response: sqlops.ProfilerSessionStoppedParams) => {
|
|
||||||
extHostDataProvider.$onSessionStopped(provider.handle, response);
|
|
||||||
});
|
|
||||||
|
|
||||||
return extHostDataProvider.$registerProfilerProvider(provider);
|
return extHostDataProvider.$registerProfilerProvider(provider);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -416,7 +416,6 @@ export interface MainThreadDataProtocolShape extends IDisposable {
|
|||||||
$onFilePathsValidated(handle: number, response: sqlops.FileBrowserValidatedParams): void;
|
$onFilePathsValidated(handle: number, response: sqlops.FileBrowserValidatedParams): void;
|
||||||
$onScriptingComplete(handle: number, message: sqlops.ScriptingCompleteResult): void;
|
$onScriptingComplete(handle: number, message: sqlops.ScriptingCompleteResult): void;
|
||||||
$onSessionEventsAvailable(handle: number, response: sqlops.ProfilerSessionEvents): void;
|
$onSessionEventsAvailable(handle: number, response: sqlops.ProfilerSessionEvents): void;
|
||||||
$onSessionStopped(handle: number, response: sqlops.ProfilerSessionStoppedParams): void;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback when a session has completed initialization
|
* Callback when a session has completed initialization
|
||||||
|
|||||||
@@ -29,14 +29,14 @@ export class OpenGettingStartedInBrowserAction extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
run(): TPromise<any> {
|
run(): TPromise<any> {
|
||||||
const uri = URI.parse(product.gettingStartedUrl);
|
const uri = URI.parse(product.releaseNotesUrl);
|
||||||
return this.openerService.open(uri);
|
return this.openerService.open(uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ShowCurrentReleaseNotesAction extends AbstractShowReleaseNotesAction {
|
export class ShowCurrentReleaseNotesAction extends AbstractShowReleaseNotesAction {
|
||||||
|
|
||||||
static ID = 'update.showGettingStarted';
|
static ID = 'update.showCurrentCarbonReleaseNotes';
|
||||||
static LABEL = nls.localize('showReleaseNotes', "Show Getting Started");
|
static LABEL = nls.localize('showReleaseNotes', "Show Getting Started");
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -397,16 +397,8 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate<ISelectOptio
|
|||||||
container.appendChild(this.selectDropDownContainer);
|
container.appendChild(this.selectDropDownContainer);
|
||||||
|
|
||||||
this.layoutSelectDropDown();
|
this.layoutSelectDropDown();
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
return {
|
return {
|
||||||
dispose: () => {
|
dispose: () => container.removeChild(this.selectDropDownContainer) // remove to take out the CSS rules we add
|
||||||
try {
|
|
||||||
container.removeChild(this.selectDropDownContainer); // remove to take out the CSS rules we add
|
|
||||||
} catch(e) {
|
|
||||||
// if this fails it means it is already removed
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -999,8 +999,8 @@ export class CodeMenu {
|
|||||||
arrays.coalesce([
|
arrays.coalesce([
|
||||||
// new MenuItem({ label: mnemonicLabel(nls.localize({ key: 'miWelcome', comment: ['&& denotes a mnemonic'] }, "&&Welcome")), click: () => this.windowsService.sendToFocused('vscode:runAction', 'workbench.action.showWelcomePage') }),
|
// new MenuItem({ label: mnemonicLabel(nls.localize({ key: 'miWelcome', comment: ['&& denotes a mnemonic'] }, "&&Welcome")), click: () => this.windowsService.sendToFocused('vscode:runAction', 'workbench.action.showWelcomePage') }),
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
product.gettingStartedUrl ?
|
product.releaseNotesUrl ?
|
||||||
this.createMenuItem(nls.localize({ key: 'miGettingStarted', comment: ['&& denotes a mnemonic'] }, "Getting &&Started"), 'update.showGettingStarted')
|
this.createMenuItem(nls.localize({ key: 'miReleaseNotes', comment: ['&& denotes a mnemonic'] }, "Getting &&Started"), 'update.showCurrentCarbonReleaseNotes')
|
||||||
: null,
|
: null,
|
||||||
product.documentationUrl ?
|
product.documentationUrl ?
|
||||||
this.createMenuItem(nls.localize({ key: 'miDocumentation', comment: ['&& denotes a mnemonic'] }, "&&Documentation"), 'workbench.action.openDocumentationUrl')
|
this.createMenuItem(nls.localize({ key: 'miDocumentation', comment: ['&& denotes a mnemonic'] }, "&&Documentation"), 'workbench.action.openDocumentationUrl')
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ export interface IProductConfiguration {
|
|||||||
};
|
};
|
||||||
documentationUrl: string;
|
documentationUrl: string;
|
||||||
releaseNotesUrl: string;
|
releaseNotesUrl: string;
|
||||||
gettingStartedUrl: string;
|
|
||||||
keyboardShortcutsUrlMac: string;
|
keyboardShortcutsUrlMac: string;
|
||||||
keyboardShortcutsUrlLinux: string;
|
keyboardShortcutsUrlLinux: string;
|
||||||
keyboardShortcutsUrlWin: string;
|
keyboardShortcutsUrlWin: string;
|
||||||
|
|||||||
@@ -5889,9 +5889,9 @@ slice-ansi@0.0.4:
|
|||||||
version "0.0.4"
|
version "0.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
|
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
|
||||||
|
|
||||||
"slickgrid@github:anthonydresser/SlickGrid#2.3.20":
|
"slickgrid@github:anthonydresser/SlickGrid#2.3.16":
|
||||||
version "2.3.17"
|
version "2.3.16"
|
||||||
resolved "https://codeload.github.com/anthonydresser/SlickGrid/tar.gz/4b5abb02758844d96886ebf97cc5d84efcecb2af"
|
resolved "https://codeload.github.com/anthonydresser/SlickGrid/tar.gz/0cdbb91ca4f24e296e156b704dab51ea9e1cf3ac"
|
||||||
dependencies:
|
dependencies:
|
||||||
jquery ">=1.8.0"
|
jquery ">=1.8.0"
|
||||||
jquery-ui ">=1.8.0"
|
jquery-ui ">=1.8.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user