mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 11:01:37 -05:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
295004c42e | ||
|
|
45333e8852 | ||
|
|
e1280022d6 | ||
|
|
c90d630703 | ||
|
|
bfcdf28cbc | ||
|
|
1c694cbd3b | ||
|
|
2b0aba119d | ||
|
|
59cc8e5d7f | ||
|
|
f8da5bd1c7 | ||
|
|
26667eb1dc | ||
|
|
5e6a9ca9fa | ||
|
|
4ecf5fae84 | ||
|
|
f76500d5f0 | ||
|
|
2a212edf1e | ||
|
|
7bcd19987b | ||
|
|
0ce5f02dd2 | ||
|
|
0831e9e161 |
@@ -2,7 +2,7 @@
|
||||
"name": "agent",
|
||||
"displayName": "SQL Server Agent",
|
||||
"description": "Manage and troubleshoot SQL Server Agent jobs",
|
||||
"version": "0.38.0",
|
||||
"version": "0.39.0",
|
||||
"publisher": "Microsoft",
|
||||
"preview": true,
|
||||
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/LICENSE.txt",
|
||||
|
||||
28
extensions/cms/README.md
Normal file
28
extensions/cms/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Microsoft Central Management Servers for Azure Data Studio
|
||||
|
||||
## Central Management Servers *(preview)*
|
||||
The Central Management Servers extension allows users to store a list of instances of SQL Server that is organized into one or more groups. Actions that are taken using a CMS group act on all servers in the server group.
|
||||
|
||||
This experience is currently in its initial preview. Please report issues and feature requests [here.](https://github.com/microsoft/azuredatastudio/issues)
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/30873802/57338070-eba5af00-70e0-11e9-911c-ddaa166b59b8.png" width="800px" />
|
||||
|
||||
### How do I start Central Management Servers?
|
||||
Central Management Servers can be viewed by clicking on the Connections icon (Ctrl/Cmd + G). The first time you download the extension, the CMS view will be minimized, and you can open it by click on **Central Management Servers**
|
||||
|
||||
### Where can I learn more about Central Management Servers
|
||||
To learn more conceptually about Central Management Servers, [you can read more here.](https://docs.microsoft.com/sql/ssms/register-servers/create-a-central-management-server-and-server-group)
|
||||
|
||||
## 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.
|
||||
|
||||
## Privacy Statement
|
||||
|
||||
The [Microsoft Enterprise and Developer Privacy Statement](https://privacy.microsoft.com/en-us/privacystatement) describes the privacy statement of this software.
|
||||
|
||||
## License
|
||||
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
Licensed under the [Source EULA](https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/LICENSE.txt).
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "dacpac",
|
||||
"displayName": "SQL Server Dacpac",
|
||||
"description": "SQL Server Dacpac for Azure Data Studio.",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"publisher": "Microsoft",
|
||||
"preview": true,
|
||||
"engines": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "import",
|
||||
"displayName": "SQL Server Import",
|
||||
"description": "SQL Server Import for Azure Data Studio supports importing CSV or JSON files into SQL Server.",
|
||||
"version": "0.7.0",
|
||||
"version": "0.8.0",
|
||||
"publisher": "Microsoft",
|
||||
"preview": true,
|
||||
"engines": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "profiler",
|
||||
"displayName": "SQL Server Profiler",
|
||||
"description": "SQL Server Profiler for Azure Data Studio",
|
||||
"version": "0.7.0",
|
||||
"version": "0.8.0",
|
||||
"publisher": "Microsoft",
|
||||
"preview": true,
|
||||
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/LICENSE.txt",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "schema-compare",
|
||||
"displayName": "SQL Server Schema Compare",
|
||||
"description": "SQL Server Schema Compare for Azure Data Studio supports comparing the schemas of databases and dacpacs.",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"publisher": "Microsoft",
|
||||
"preview": true,
|
||||
"engines": {
|
||||
|
||||
@@ -11,7 +11,7 @@ import * as os from 'os';
|
||||
import { SchemaCompareResult } from '../schemaCompareResult';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
const CompareButtonText: string = localize('schemaCompareDialog.compare', 'Compare');
|
||||
const OkButtonText: string = localize('schemaCompareDialog.ok', 'Ok');
|
||||
const CancelButtonText: string = localize('schemaCompareDialog.cancel', 'Cancel');
|
||||
const SourceTitle: string = localize('schemaCompareDialog.SourceTitle', 'Source');
|
||||
const TargetTitle: string = localize('schemaCompareDialog.TargetTitle', 'Target');
|
||||
@@ -75,7 +75,7 @@ export class SchemaCompareDialog {
|
||||
|
||||
this.initializeDialog();
|
||||
|
||||
this.dialog.okButton.label = CompareButtonText;
|
||||
this.dialog.okButton.label = OkButtonText;
|
||||
this.dialog.okButton.onClick(async () => await this.execute());
|
||||
|
||||
this.dialog.cancelButton.label = CancelButtonText;
|
||||
|
||||
@@ -16,6 +16,8 @@ const diffEditorTitle = localize('schemaCompare.ObjectDefinitionsTitle', 'Object
|
||||
export class SchemaCompareResult {
|
||||
private differencesTable: azdata.TableComponent;
|
||||
private loader: azdata.LoadingComponent;
|
||||
private startText: azdata.TextComponent;
|
||||
private waitText: azdata.TextComponent;
|
||||
private editor: azdata.workspace.ModelViewEditor;
|
||||
private diffEditor: azdata.DiffEditorComponent;
|
||||
private splitView: azdata.SplitViewContainer;
|
||||
@@ -76,7 +78,7 @@ export class SchemaCompareResult {
|
||||
this.createGenerateScriptButton(view);
|
||||
this.createApplyButton(view);
|
||||
this.createOptionsButton(view);
|
||||
this.resetButtons();
|
||||
this.resetButtons(true);
|
||||
|
||||
let toolBar = view.modelBuilder.toolbarContainer();
|
||||
toolBar.addToolbarItems([{
|
||||
@@ -131,15 +133,24 @@ export class SchemaCompareResult {
|
||||
this.sourceTargetFlexLayout.addItem(this.targetNameComponent, { CSSStyles: { 'width': '45%', 'height': '25px', 'margin-top': '10px', 'margin-left': '15px' } });
|
||||
|
||||
this.loader = view.modelBuilder.loadingComponent().component();
|
||||
this.waitText = view.modelBuilder.text().withProperties({
|
||||
value: localize('schemaCompare.waitText', 'Initializing Comparison. This might take a moment.')
|
||||
}).component();
|
||||
|
||||
this.startText = view.modelBuilder.text().withProperties({
|
||||
value: localize('schemaCompare.startText', 'Press Compare to start Schema Comparison.')
|
||||
}).component();
|
||||
|
||||
this.noDifferencesLabel = view.modelBuilder.text().withProperties({
|
||||
value: localize('schemaCompare.noDifferences', 'No schema differences were found')
|
||||
value: localize('schemaCompare.noDifferences', 'No schema differences were found.')
|
||||
}).component();
|
||||
|
||||
this.flexModel = view.modelBuilder.flexContainer().component();
|
||||
this.flexModel.addItem(toolBar.component(), { flex: 'none' });
|
||||
this.flexModel.addItem(sourceTargetLabels, { flex: 'none' });
|
||||
this.flexModel.addItem(this.sourceTargetFlexLayout, { flex: 'none' });
|
||||
this.flexModel.addItem(this.loader, { CSSStyles: { 'margin-top': '30px' } });
|
||||
this.flexModel.addItem(this.startText, { CSSStyles: { 'margin': 'auto' } });
|
||||
|
||||
this.flexModel.setLayout({
|
||||
flexFlow: 'column',
|
||||
height: '100%'
|
||||
@@ -151,7 +162,6 @@ export class SchemaCompareResult {
|
||||
|
||||
public start(): void {
|
||||
this.editor.openEditor();
|
||||
this.execute();
|
||||
}
|
||||
|
||||
private async execute(): Promise<void> {
|
||||
@@ -202,6 +212,7 @@ export class SchemaCompareResult {
|
||||
});
|
||||
|
||||
this.flexModel.removeItem(this.loader);
|
||||
this.flexModel.removeItem(this.waitText);
|
||||
this.switchButton.enabled = true;
|
||||
this.compareButton.enabled = true;
|
||||
this.optionsButton.enabled = true;
|
||||
@@ -267,10 +278,12 @@ export class SchemaCompareResult {
|
||||
return script;
|
||||
}
|
||||
|
||||
private reExecute(): void {
|
||||
private startCompare(): void {
|
||||
this.flexModel.removeItem(this.splitView);
|
||||
this.flexModel.removeItem(this.noDifferencesLabel);
|
||||
this.flexModel.removeItem(this.startText);
|
||||
this.flexModel.addItem(this.loader, { CSSStyles: { 'margin-top': '30px' } });
|
||||
this.flexModel.addItem(this.waitText, { CSSStyles: { 'margin-top': '30px', 'align-self': 'center' } });
|
||||
this.diffEditor.updateProperties({
|
||||
contentLeft: os.EOL,
|
||||
contentRight: os.EOL,
|
||||
@@ -278,7 +291,7 @@ export class SchemaCompareResult {
|
||||
});
|
||||
|
||||
this.differencesTable.selectedRows = null;
|
||||
this.resetButtons();
|
||||
this.resetButtons(false);
|
||||
this.execute();
|
||||
}
|
||||
|
||||
@@ -293,7 +306,7 @@ export class SchemaCompareResult {
|
||||
}).component();
|
||||
|
||||
this.compareButton.onDidClick(async (click) => {
|
||||
this.reExecute();
|
||||
this.startCompare();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -376,10 +389,17 @@ export class SchemaCompareResult {
|
||||
});
|
||||
}
|
||||
|
||||
private resetButtons(): void {
|
||||
this.compareButton.enabled = false;
|
||||
this.optionsButton.enabled = false;
|
||||
this.switchButton.enabled = false;
|
||||
private resetButtons(beforeCompareStart: boolean): void {
|
||||
if (beforeCompareStart) {
|
||||
this.compareButton.enabled = true;
|
||||
this.optionsButton.enabled = true;
|
||||
this.switchButton.enabled = true;
|
||||
}
|
||||
else {
|
||||
this.compareButton.enabled = false;
|
||||
this.optionsButton.enabled = false;
|
||||
this.switchButton.enabled = false;
|
||||
}
|
||||
this.generateScriptButton.enabled = false;
|
||||
this.applyButton.enabled = false;
|
||||
this.generateScriptButton.title = localize('schemaCompare.generateScriptEnabledButton', 'Generate script to deploy changes to target');
|
||||
@@ -421,7 +441,7 @@ export class SchemaCompareResult {
|
||||
]
|
||||
});
|
||||
|
||||
this.reExecute();
|
||||
this.startCompare();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"gettingStartedUrl": "https://go.microsoft.com/fwlink/?linkid=862039",
|
||||
"releaseNotesUrl": "https://go.microsoft.com/fwlink/?linkid=875578",
|
||||
"documentationUrl": "https://go.microsoft.com/fwlink/?linkid=862277",
|
||||
"vscodeVersion": "1.31.1",
|
||||
"vscodeVersion": "1.33.1",
|
||||
"commit": "9ca6200018fc206d67a47229f991901a8a453781",
|
||||
"date": "2017-12-15T12:00:00.000Z",
|
||||
"recommendedExtensions": [
|
||||
@@ -47,6 +47,7 @@
|
||||
"Microsoft.import",
|
||||
"Microsoft.powershell",
|
||||
"Microsoft.profiler",
|
||||
"Microsoft.schema-compare",
|
||||
"Microsoft.sql-vnext",
|
||||
"Redgate.sql-search",
|
||||
"IDERA.sqldm-performance-insights"
|
||||
|
||||
@@ -28,6 +28,7 @@ export class HeaderFilter {
|
||||
private cancelButton: Button;
|
||||
private workingFilters: any;
|
||||
private columnDef: any;
|
||||
private buttonStyles: IButtonStyles;
|
||||
|
||||
constructor(options: any) {
|
||||
this.options = mixin(options, this.defaults, false);
|
||||
@@ -220,6 +221,8 @@ export class HeaderFilter {
|
||||
const cancelElement = jQuery('#filter-cancel-button');
|
||||
cancelElement.bind('click', () => this.hideMenu());
|
||||
|
||||
this.applyStyles();
|
||||
|
||||
jQuery(':checkbox', $filter).bind('click', (e) => {
|
||||
this.workingFilters = this.changeWorkingFilter(filterItems, this.workingFilters, jQuery(e.target));
|
||||
});
|
||||
@@ -237,9 +240,25 @@ export class HeaderFilter {
|
||||
}
|
||||
|
||||
public style(styles: IButtonStyles): void {
|
||||
this.okButton.style(styles);
|
||||
this.clearButton.style(styles);
|
||||
this.cancelButton.style(styles);
|
||||
this.buttonStyles = styles;
|
||||
this.applyStyles();
|
||||
}
|
||||
|
||||
private applyStyles() {
|
||||
if (this.buttonStyles) {
|
||||
const styles = this.buttonStyles;
|
||||
if (this.okButton) {
|
||||
this.okButton.style(styles);
|
||||
}
|
||||
|
||||
if (this.clearButton) {
|
||||
this.clearButton.style(styles);
|
||||
}
|
||||
|
||||
if (this.cancelButton) {
|
||||
this.cancelButton.style(styles);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private columnsResized() {
|
||||
|
||||
@@ -176,10 +176,12 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On
|
||||
|
||||
this.overrideCellFn = (rowNumber, columnId, value?, data?): string => {
|
||||
let returnVal = '';
|
||||
// replace the line breaks with space since the edit text control cannot
|
||||
// render line breaks and strips them, updating the value.
|
||||
if (Services.DBCellValue.isDBCellValue(value)) {
|
||||
returnVal = value.displayValue;
|
||||
returnVal = this.spacefyLinebreaks(value.displayValue);
|
||||
} else if (typeof value === 'string') {
|
||||
returnVal = value;
|
||||
returnVal = this.spacefyLinebreaks(value);
|
||||
}
|
||||
return returnVal;
|
||||
};
|
||||
@@ -405,6 +407,13 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On
|
||||
this.refreshGrid();
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the line breaks with space.
|
||||
*/
|
||||
private spacefyLinebreaks(inputStr: string): string {
|
||||
return inputStr.replace(/(\r\n|\n|\r)/g, ' ');
|
||||
}
|
||||
|
||||
private refreshGrid(): Thenable<void> {
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
const self = this;
|
||||
|
||||
@@ -259,6 +259,8 @@ table.step-list tr.step-row td {
|
||||
jobhistory-component {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
jobhistory-component > .jobhistory-heading-container {
|
||||
|
||||
@@ -15,12 +15,6 @@ jobsview-component {
|
||||
display: block;
|
||||
}
|
||||
|
||||
jobhistory-component {
|
||||
height: 100%;
|
||||
width : 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.job-heading-container {
|
||||
height: 50px;
|
||||
border-bottom: 3px solid #f4f4f4;
|
||||
|
||||
@@ -306,7 +306,7 @@ export class CodeComponent extends AngularDisposable implements OnInit, OnChange
|
||||
private setFocusAndScroll(): void {
|
||||
if (this.cellModel.id === this._activeCellId) {
|
||||
this._editor.focus();
|
||||
this._editor.getContainer().scrollIntoView();
|
||||
this._editor.getContainer().scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@ export class TextCellComponent extends CellView implements OnInit, AfterContentI
|
||||
this.toggleEditMode(this.isActive());
|
||||
|
||||
if (this.output && this.output.nativeElement) {
|
||||
(<HTMLElement>this.output.nativeElement).scrollTo();
|
||||
(<HTMLElement>this.output.nativeElement).scrollTo({ behavior: 'smooth' });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -141,7 +141,11 @@ export class ProfilerTableEditor extends BaseEditor implements IProfilerControll
|
||||
this._findCountChangeListener = input.data.onFindCountChange(() => this._updateFinderMatchState());
|
||||
|
||||
this._profilerTable.setData(input.data);
|
||||
this._profilerTable.columns = input.columns;
|
||||
this._profilerTable.columns = input.columns.map(c => {
|
||||
c.formatter = textFormatter;
|
||||
return c;
|
||||
});
|
||||
|
||||
this._profilerTable.autosizeColumns();
|
||||
this._input.data.currentFindPosition.then(val => {
|
||||
this._profilerTable.setActiveCell(val.row, val.col);
|
||||
|
||||
1
src/sql/workbench/parts/tasks/browser/media/error.svg
Normal file
1
src/sql/workbench/parts/tasks/browser/media/error.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#d02e00;}</style></defs><title>globalerror_red</title><path class="cls-1" d="M8,0a7.92,7.92,0,0,1,4,1.09A8.15,8.15,0,0,1,14.91,4a8,8,0,0,1,.81,1.91,8,8,0,0,1-.81,6.16A8.15,8.15,0,0,1,12,14.92a8,8,0,0,1-8.07,0,8.15,8.15,0,0,1-2.87-2.87A8,8,0,0,1,1.09,4,8.15,8.15,0,0,1,4,1.11,7.92,7.92,0,0,1,8,0ZM8,15a6.88,6.88,0,0,0,1.86-.25,7,7,0,0,0,4.89-4.89,7.07,7.07,0,0,0,0-3.73A7,7,0,0,0,9.86,1.27a7.07,7.07,0,0,0-3.73,0A7,7,0,0,0,1.25,6.15a7.07,7.07,0,0,0,0,3.73,7,7,0,0,0,4.89,4.89A6.88,6.88,0,0,0,8,15Zm3.46-9.76L8.71,8l2.75,2.76-.7.7L8,8.73,5.24,11.48l-.7-.7L7.29,8,4.54,5.26l.7-.7L8,7.31l2.76-2.75Z"/></svg>
|
||||
|
After Width: | Height: | Size: 721 B |
@@ -45,7 +45,7 @@
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.not-started {
|
||||
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.not-started {
|
||||
background-image: url('status_queuedtask.svg');
|
||||
}
|
||||
|
||||
@@ -63,14 +63,14 @@
|
||||
background-image: url("loading_inverse.svg");
|
||||
}
|
||||
|
||||
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success,
|
||||
.vs-dark .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success,
|
||||
.hc-black .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success {
|
||||
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success {
|
||||
background-image: url("status_success.svg");
|
||||
}
|
||||
|
||||
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled,
|
||||
.vs-dark .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled,
|
||||
.hc-black .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled {
|
||||
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled {
|
||||
background-image: url("status_cancelled.svg");
|
||||
}
|
||||
|
||||
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.error {
|
||||
background-image: url("error.svg");
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
|
||||
.extension-view .extensionTab-view .list-row.extensionTab-list .extension-details .title {
|
||||
font-size: 15px;
|
||||
line-height: 1.4em;
|
||||
font-weight: 700;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
@@ -56,6 +57,7 @@
|
||||
|
||||
.extension-view .extensionTab-view .list-row.extensionTab-list .extension-details .description {
|
||||
font-size: 13px;
|
||||
line-height: 1.4em;
|
||||
overflow: hidden;
|
||||
white-space: pre-wrap;
|
||||
text-overflow: ellipsis;
|
||||
@@ -63,6 +65,7 @@
|
||||
|
||||
.extension-view .extensionTab-view .list-row.extensionTab-list .extension-details .publisher {
|
||||
font-size: 90%;
|
||||
line-height: 1.4em;
|
||||
padding-right: 6px;
|
||||
opacity: .6;
|
||||
font-weight: 600;
|
||||
@@ -71,4 +74,4 @@
|
||||
.no-extensionTab-label {
|
||||
font-size: 12px;
|
||||
padding: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,13 +29,10 @@ import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/la
|
||||
|
||||
class ExtensionListDelegate implements IListVirtualDelegate<IDashboardUITab> {
|
||||
|
||||
constructor(
|
||||
private _height: number
|
||||
) {
|
||||
}
|
||||
private static readonly HEIGHT = 101;
|
||||
|
||||
public getHeight(element: IDashboardUITab): number {
|
||||
return this._height;
|
||||
return ExtensionListDelegate.HEIGHT;
|
||||
}
|
||||
|
||||
public getTemplateId(element: IDashboardUITab): string {
|
||||
@@ -91,7 +88,6 @@ class ExtensionListRenderer implements IListRenderer<IDashboardUITab, ExtensionL
|
||||
}
|
||||
|
||||
export class NewDashboardTabDialog extends Modal {
|
||||
public static EXTENSIONLIST_HEIGHT = 101;
|
||||
|
||||
// MEMBER letIABLES ////////////////////////////////////////////////////
|
||||
private _addNewTabButton: Button;
|
||||
@@ -165,7 +161,7 @@ export class NewDashboardTabDialog extends Modal {
|
||||
private createExtensionList(container: HTMLElement) {
|
||||
// Create a fixed list view for the extensions
|
||||
let extensionTabViewContainer = DOM.$('.extensionTab-view');
|
||||
let delegate = new ExtensionListDelegate(NewDashboardTabDialog.EXTENSIONLIST_HEIGHT);
|
||||
let delegate = new ExtensionListDelegate();
|
||||
let extensionTabRenderer = new ExtensionListRenderer();
|
||||
this._extensionList = new List<IDashboardUITab>(extensionTabViewContainer, delegate, [extensionTabRenderer]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user