Code Layering dashboard (#4883)

* move dashboard to workbench

* revert xlf file changes

* 💄

* 💄

* add back removed functions
This commit is contained in:
Anthony Dresser
2019-04-09 00:26:57 -07:00
committed by GitHub
parent 9e9164c4ee
commit 8bdcc3267a
145 changed files with 543 additions and 535 deletions

View File

@@ -101,7 +101,7 @@ const vscodeResources = [
'out-build/sql/parts/admin/**/*.html',
'out-build/sql/parts/connection/connectionDialog/media/*.{gif,png,svg}',
'out-build/sql/parts/common/dblist/**/*.html',
'out-build/sql/parts/dashboard/**/*.html',
'out-build/sql/workbench/parts/dashboard/**/*.html',
'out-build/sql/parts/disasterRecovery/**/*.html',
'out-build/sql/parts/common/modal/media/**',
'out-build/sql/parts/grid/load/lib/**',

View File

@@ -7,8 +7,8 @@ import { EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } fro
import { IConfigurationRegistry, Extensions as ConfigExtensions } from 'vs/platform/configuration/common/configurationRegistry';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { Registry } from 'vs/platform/registry/common/platform';
import { DashboardEditor } from 'sql/parts/dashboard/dashboardEditor';
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
import { DashboardEditor } from 'sql/workbench/parts/dashboard/dashboardEditor';
import { DashboardInput } from 'sql/workbench/parts/dashboard/dashboardInput';
import { AddServerGroupAction, AddServerAction } from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
import { ClearRecentConnectionsAction, GetCurrentConnectionStringAction } from 'sql/parts/connection/common/connectionActions';

View File

@@ -14,7 +14,7 @@ import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { QueryInput } from 'sql/parts/query/common/queryInput';
import { EditDataInput } from 'sql/parts/editData/common/editDataInput';
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
import { DashboardInput } from 'sql/workbench/parts/dashboard/dashboardInput';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';

View File

@@ -1,25 +0,0 @@
<!--
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-->
<div >
<table class="grid-table">
<tr *ngFor="let row of rows" class="grid-table-row">
<ng-container *ngFor="let col of cols">
<ng-container *ngIf="getContent(row,col) !== undefined">
<td class="table-cell" [colSpan]=getColspan(row,col) [rowSpan]=getRowspan(row,col) [width]="getWidgetWidth(row,col)" [height]="getWidgetHeight(row,col)">
<dashboard-widget-wrapper *ngIf="isWidget(row,col)" [_config]="getWidgetContent(row,col)" style="position:absolute;" [style.width]="getWidgetWidth(row,col)" [style.height]="getWidgetHeight(row,col)">
</dashboard-widget-wrapper>
<webview-content *ngIf="isWebview(row,col)" [webviewId]="getWebviewId(row,col)">
</webview-content>
</td>
</ng-container>
</ng-container>
</tr>
</table>
</div>

View File

@@ -6,8 +6,8 @@
'use strict';
import { append, $ } from 'vs/base/browser/dom';
import { IInsightTypeContrib } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IDashboardTabContrib } from 'sql/parts/dashboard/common/dashboardTab.contribution';
import { IInsightTypeContrib } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { IDashboardTabContrib } from 'sql/workbench/parts/dashboard/common/dashboardTab.contribution';
import { localize } from 'vs/nls';
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import 'vs/css!../common/media/jobs';
import 'sql/parts/dashboard/common/dashboardPanelStyles';
import 'sql/workbench/parts/dashboard/common/dashboardPanelStyles';
import * as nls from 'vs/nls';
import { Component, Inject, forwardRef, ChangeDetectorRef, ViewChild, Injectable } from '@angular/core';

View File

@@ -15,7 +15,7 @@ import { ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeServic
import * as colors from 'vs/platform/theme/common/colorRegistry';
import { IColorTheme, IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { ComponentWithIconBase } from 'sql/parts/modelComponents/componentWithIconBase';
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
import { StatusIndicator, CardProperties, ActionDescriptor } from 'sql/workbench/api/common/sqlExtHostTypes';

View File

@@ -12,7 +12,7 @@ import {
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
import * as azdata from 'azdata';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { ContainerBase } from 'sql/parts/modelComponents/componentBase';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';

View File

@@ -12,7 +12,7 @@ import {
import { IComponent, IComponentDescriptor, IModelStore } from 'sql/parts/modelComponents/interfaces';
import { FlexLayout, FlexItemLayout } from 'azdata';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { ContainerBase } from 'sql/parts/modelComponents/componentBase';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';

View File

@@ -13,7 +13,7 @@ import {
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
import { FormLayout, FormItemLayout } from 'azdata';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { ContainerBase } from 'sql/parts/modelComponents/componentBase';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';

View File

@@ -12,7 +12,7 @@ import {
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
import { GroupLayout, GroupItemLayout } from 'azdata';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { ContainerBase } from 'sql/parts/modelComponents/componentBase';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';

View File

@@ -9,7 +9,7 @@ import {
ElementRef, OnInit, ChangeDetectorRef, ReflectiveInjector, Injector, ComponentRef
} from '@angular/core';
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
import { error } from 'sql/base/common/log';
import { AngularDisposable } from 'sql/base/node/lifecycle';
import { IComponent, IComponentConfig, IComponentDescriptor, IModelStore, COMPONENT_CONFIG } from './interfaces';
@@ -167,4 +167,4 @@ export class ModelComponentWrapper extends AngularDisposable implements OnInit {
}
}
}
}

View File

@@ -15,7 +15,7 @@ import * as DOM from 'vs/base/browser/dom';
import { ICellModel } from 'sql/parts/notebook/models/modelInterfaces';
import { CellContext, CellActionBase } from 'sql/parts/notebook/cellViews/codeActions';
import { NotebookModel } from 'sql/parts/notebook/models/notebookModel';
import { ToggleMoreWidgetAction } from 'sql/parts/dashboard/common/actions';
import { ToggleMoreWidgetAction } from 'sql/workbench/parts/dashboard/common/actions';
import { CellTypes, CellType } from 'sql/parts/notebook/models/contracts';
import { CellModel } from 'sql/parts/notebook/models/cell';

View File

@@ -11,7 +11,7 @@ import { CommonModule, APP_BASE_HREF } from '@angular/common';
import { BrowserModule } from '@angular/platform-browser';
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
import { IBootstrapParams, ISelector, providerIterator } from 'sql/services/bootstrap/bootstrapService';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';

View File

@@ -9,7 +9,7 @@ import { IInsightOptions, IInsight } from './insights/interfaces';
import { Graph } from './insights/graphInsight';
import { QueryEditor } from 'sql/parts/query/editor/queryEditor';
import { IClipboardService } from 'sql/platform/clipboard/common/clipboardService';
import { IInsightsConfig } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightsConfig } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { resolveCurrentDirectory, getRootPath } from 'sql/platform/node/pathUtilities';
import { localize } from 'vs/nls';

View File

@@ -10,7 +10,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
import { InsightType, IInsightOptions } from './insights/interfaces';
import { DataDirection, ChartType, LegendPosition, DataType } from 'sql/parts/dashboard/widgets/insights/views/charts/interfaces';
import { DataDirection, ChartType, LegendPosition, DataType } from 'sql/workbench/parts/dashboard/widgets/insights/views/charts/interfaces';
const insightRegistry = Registry.as<IInsightRegistry>(Extensions.InsightContribution);

View File

@@ -10,14 +10,14 @@ import 'vs/css!./chartView';
import { IPanelView } from 'sql/base/browser/ui/panel/panel';
import { Insight } from './insights/insight';
import QueryRunner from 'sql/platform/query/common/queryRunner';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { ChartOptions, IChartOption, ControlType } from './chartOptions';
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox';
import { IInsightOptions } from './insights/interfaces';
import { CopyAction, SaveImageAction, CreateInsightAction, IChartActionContext } from './actions';
import { Taskbar } from 'sql/base/browser/ui/taskbar/taskbar';
import { ChartType } from 'sql/parts/dashboard/widgets/insights/views/charts/interfaces';
import { ChartType } from 'sql/workbench/parts/dashboard/widgets/insights/views/charts/interfaces';
import { Registry } from 'vs/platform/registry/common/platform';
import * as DOM from 'vs/base/browser/dom';
import { SelectBox } from 'vs/base/browser/ui/selectBox/selectBox';

View File

@@ -6,7 +6,7 @@
import 'vs/css!./countInsight';
import { IInsight, InsightType } from './interfaces';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { $, clearNode } from 'vs/base/browser/dom';

View File

@@ -13,9 +13,9 @@ import * as colors from 'vs/platform/theme/common/colorRegistry';
import { editorLineNumbers } from 'vs/editor/common/view/editorColorRegistry';
import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { IInsightOptions, IInsight } from './interfaces';
import { ChartType, DataDirection, LegendPosition, DataType, IPointDataSet, customMixin } from 'sql/parts/dashboard/widgets/insights/views/charts/interfaces';
import { ChartType, DataDirection, LegendPosition, DataType, IPointDataSet, customMixin } from 'sql/workbench/parts/dashboard/widgets/insights/views/charts/interfaces';
const noneLineGraphs = [ChartType.Doughnut, ChartType.Pie];

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { IInsight, IInsightOptions, InsightType } from './interfaces';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { $ } from 'vs/base/browser/dom';
import { mixin } from 'vs/base/common/objects';

View File

@@ -6,8 +6,8 @@
'use strict';
import { Graph } from './graphInsight';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { DataDirection, ChartType } from 'sql/parts/dashboard/widgets/insights/views/charts/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { DataDirection, ChartType } from 'sql/workbench/parts/dashboard/widgets/insights/views/charts/interfaces';
import { ImageInsight } from './imageInsight';
import { TableInsight } from './tableInsight';
import { IInsightOptions, IInsight, InsightType, IInsightCtor } from './interfaces';

View File

@@ -6,8 +6,8 @@
'use strict';
import { Dimension } from 'vs/base/browser/dom';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { DataDirection, ChartType, LegendPosition, DataType } from 'sql/parts/dashboard/widgets/insights/views/charts/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { DataDirection, ChartType, LegendPosition, DataType } from 'sql/workbench/parts/dashboard/widgets/insights/views/charts/interfaces';
export interface IInsightOptions {
type: InsightType | ChartType;

View File

@@ -6,7 +6,7 @@
'use strict';
import { IInsight, InsightType } from './interfaces';
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { TableDataView } from 'sql/base/browser/ui/table/tableDataView';
import { Table } from 'sql/base/browser/ui/table/table';
import { attachTableStyler } from 'sql/platform/theme/common/styler';

View File

@@ -15,7 +15,7 @@ import { WizardNavigation } from 'sql/platform/dialog/wizardNavigation.component
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry';
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
import { IBootstrapParams, ISelector, providerIterator } from 'sql/services/bootstrap/bootstrapService';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';

View File

@@ -20,7 +20,7 @@ import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilit
import { ICredentialsService } from 'sql/platform/credentials/common/credentialsService';
import * as ConnectionContracts from 'sql/parts/connection/common/connection';
import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager';
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
import { DashboardInput } from 'sql/workbench/parts/dashboard/dashboardInput';
import { ConnectionGlobalStatus } from 'sql/parts/connection/common/connectionGlobalStatus';
import { ConnectionStatusbarItem } from 'sql/parts/connection/common/connectionStatus';
import * as TelemetryKeys from 'sql/common/telemetryKeys';

View File

@@ -8,7 +8,7 @@ import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
import { Extensions as ConfigurationExtension } from 'vs/platform/configuration/common/configurationRegistry';
import { deepClone } from 'vs/base/common/objects';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
export const Extensions = {
dashboardContainerContributions: 'dashboard.contributions.container'
@@ -89,4 +89,4 @@ export function registerNavSectionContainerType(id: string, schema: IJSONSchema)
export function generateNavSectionContainerTypeSchemaProperties(): IJSONSchemaMap {
return dashboardContainerRegistry.navSectionContainerTypeSchemaProperties;
}
}

View File

@@ -9,10 +9,10 @@ import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';
import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { ProviderProperties } from 'sql/parts/dashboard/widgets/properties/propertiesWidget.component';
import { DATABASE_DASHBOARD_TABS } from 'sql/parts/dashboard/pages/databaseDashboardPage.contribution';
import { SERVER_DASHBOARD_TABS, SERVER_DASHBOARD_PROPERTIES } from 'sql/parts/dashboard/pages/serverDashboardPage.contribution';
import { DASHBOARD_CONFIG_ID, DASHBOARD_TABS_KEY_PROPERTY } from 'sql/parts/dashboard/pages/dashboardPageContribution';
import { ProviderProperties } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component';
import { DATABASE_DASHBOARD_TABS } from 'sql/workbench/parts/dashboard/pages/databaseDashboardPage.contribution';
import { SERVER_DASHBOARD_TABS, SERVER_DASHBOARD_PROPERTIES } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.contribution';
import { DASHBOARD_CONFIG_ID, DASHBOARD_TABS_KEY_PROPERTY } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution';
export const Extensions = {
DashboardContributions: 'dashboard.contributions'

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Type } from '@angular/core';
import { IInsightsConfig, IInsightsView } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightsConfig, IInsightsView } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import * as platform from 'vs/platform/registry/common/platform';
import { IJSONSchema } from 'vs/base/common/jsonSchema';

View File

@@ -2,7 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IInsightsConfig } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightsConfig } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import * as platform from 'vs/platform/registry/common/platform';
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
@@ -112,4 +112,4 @@ export function registerDashboardWidget(id: string, description: string, schema:
export function registerNonCustomDashboardWidget(id: string, description: string, val: IInsightsConfig): WidgetIdentifier {
return dashboardWidgetRegistry.registerNonCustomDashboardWidget(id, description, val);
}
}

View File

@@ -17,7 +17,7 @@ import { WizardNavigation } from 'sql/platform/dialog/wizardNavigation.component
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry';
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
import { IBootstrapParams, ISelector, providerIterator } from 'sql/services/bootstrap/bootstrapService';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';

View File

@@ -7,7 +7,7 @@ import { IConnectionManagementService } from 'sql/platform/connection/common/con
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { IInsightsConfig } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightsConfig } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { IScriptingService } from 'sql/platform/scripting/common/scriptingService';
import { IRestoreDialogController } from 'sql/platform/restore/common/restoreService';
import { IAngularEventingService, AngularEventType } from 'sql/platform/angularEventing/common/angularEventingService';

View File

@@ -17,12 +17,12 @@ import { IScriptingService } from 'sql/platform/scripting/common/scriptingServic
import { EditDataInput } from 'sql/parts/editData/common/editDataInput';
import { IAdminService } from 'sql/workbench/services/admin/common/adminService';
import { IRestoreDialogController } from 'sql/platform/restore/common/restoreService';
import { IInsightsConfig } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { IInsightsConfig } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import { IInsightsDialogService } from 'sql/workbench/services/insights/common/insightsDialogService';
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
import { QueryInput } from 'sql/parts/query/common/queryInput';
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
import { DashboardInput } from 'sql/workbench/parts/dashboard/dashboardInput';
import { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService';
import { IBackupUiService } from 'sql/workbench/services/backup/common/backupUiService';

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Action, IAction } from 'vs/base/common/actions';
import * as nls from 'vs/nls';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
@@ -182,16 +183,16 @@ export class AddFeatureTabAction extends Action {
private handleDashboardEvent(event: IAngularEvent): void {
switch (event.event) {
case AngularEventType.NEW_TABS:
let openedTabs = <IDashboardTab[]>event.payload.dashboardTabs;
const openedTabs = <IDashboardTab[]>event.payload.dashboardTabs;
openedTabs.forEach(tab => {
let existedTab = this._openedTabs.find(i => i === tab);
const existedTab = this._openedTabs.find(i => i === tab);
if (!existedTab) {
this._openedTabs.push(tab);
}
});
break;
case AngularEventType.CLOSE_TAB:
let index = this._openedTabs.findIndex(i => i.id === event.payload.id);
const index = this._openedTabs.findIndex(i => i.id === event.payload.id);
this._openedTabs.splice(index, 1);
break;
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as types from 'vs/base/common/types';
import { generateUuid } from 'vs/base/common/uuid';
import { Registry } from 'vs/platform/registry/common/platform';
@@ -9,16 +10,16 @@ import * as nls from 'vs/nls';
import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { error } from 'sql/base/common/log';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { WIDGETS_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
import { WEBVIEW_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWebviewContainer.contribution';
import { MODELVIEW_CONTAINER } from 'sql/parts/dashboard/containers/dashboardModelViewContainer.contribution';
import { CONTROLHOST_CONTAINER } from 'sql/parts/dashboard/containers/dashboardControlHostContainer.contribution';
import { NAV_SECTION } from 'sql/parts/dashboard/containers/dashboardNavSection.contribution';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { WIDGETS_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
import { WEBVIEW_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWebviewContainer.contribution';
import { MODELVIEW_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardModelViewContainer.contribution';
import { CONTROLHOST_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardControlHostContainer.contribution';
import { NAV_SECTION } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.contribution';
import { IDashboardContainerRegistry, Extensions as DashboardContainerExtensions } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
import { SingleConnectionManagementService } from 'sql/services/common/commonServiceInterface.service';
import * as Constants from 'sql/platform/connection/common/constants';
@@ -33,31 +34,6 @@ const containerTypes = [
NAV_SECTION
];
/**
* @returns whether the provided parameter is a JavaScript Array and each element in the array is a number.
*/
function isNumberArray(value: any): value is number[] {
return types.isArray(value) && (<any[]>value).every(elem => types.isNumber(elem));
}
/**
* Does a compare against the val passed in and the compare string
* @param val string or array of strings to compare the compare value to; if array, it will compare each val in the array
* @param compare value to compare to
*/
function stringOrStringArrayCompare(val: string | Array<string>, compare: string): boolean {
if (types.isUndefinedOrNull(val)) {
return true;
} else if (types.isString(val)) {
return val === compare;
} else if (types.isStringArray(val)) {
return val.some(item => item === compare);
} else {
return false;
}
}
/**
* Validates configs to make sure nothing will error out and returns the modified widgets
* @param config Array of widgets to validate
@@ -88,11 +64,11 @@ export function validateGridConfig(config: WidgetConfig[], originalConfig: Widge
}
export function initExtensionConfigs(configurations: WidgetConfig[]): Array<WidgetConfig> {
let widgetRegistry = <IInsightRegistry>Registry.as(Extensions.InsightContribution);
const widgetRegistry = <IInsightRegistry>Registry.as(Extensions.InsightContribution);
return configurations.map((config) => {
if (config.widget && Object.keys(config.widget).length === 1) {
let key = Object.keys(config.widget)[0];
let insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
const key = Object.keys(config.widget)[0];
const insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
if (insightConfig !== undefined) {
// Setup the default properties for this extension if needed
if (!config.when && insightConfig.when) {
@@ -121,7 +97,7 @@ export function initExtensionConfigs(configurations: WidgetConfig[]): Array<Widg
* @param widgets Array of widgets to add provider onto
*/
export function addProvider<T extends { connectionManagementService: SingleConnectionManagementService }>(config: WidgetConfig[], collection: T): Array<WidgetConfig> {
let provider = collection.connectionManagementService.connectionInfo.providerId;
const provider = collection.connectionManagementService.connectionInfo.providerId;
return config.map((item) => {
if (item.provider === undefined) {
item.provider = provider;
@@ -135,9 +111,9 @@ export function addProvider<T extends { connectionManagementService: SingleConne
* @param widgets Array of widgets to add edition onto
*/
export function addEdition<T extends { connectionManagementService: SingleConnectionManagementService }>(config: WidgetConfig[], collection: DashboardServiceInterface): Array<WidgetConfig> {
let connectionInfo: ConnectionManagementInfo = collection.connectionManagementService.connectionInfo;
const connectionInfo: ConnectionManagementInfo = collection.connectionManagementService.connectionInfo;
if (connectionInfo.serverInfo) {
let edition = connectionInfo.serverInfo.engineEditionId;
const edition = connectionInfo.serverInfo.engineEditionId;
return config.map((item) => {
if (item.edition === undefined) {
item.edition = edition;
@@ -184,10 +160,10 @@ export function filterConfigs<T extends { provider?: string | string[], when?: s
*/
function hasCompatibleProvider(provider: string | string[], contextKeyService: IContextKeyService): boolean {
let isCompatible = true;
let connectionProvider = contextKeyService.getContextKeyValue<string>(Constants.connectionProviderContextKey);
const connectionProvider = contextKeyService.getContextKeyValue<string>(Constants.connectionProviderContextKey);
if (connectionProvider) {
let providers = (provider instanceof Array) ? provider : [provider];
let matchingProvider = providers.find((p) => p === connectionProvider || p === Constants.anyProviderName);
const providers = (provider instanceof Array) ? provider : [provider];
const matchingProvider = providers.find((p) => p === connectionProvider || p === Constants.anyProviderName);
isCompatible = (matchingProvider !== undefined);
} // Else there's no connection context so skip the check
return isCompatible;
@@ -198,17 +174,17 @@ function hasCompatibleProvider(provider: string | string[], contextKeyService: I
* @param container dashboard container
*/
export function getDashboardContainer(container: object): { result: boolean, message: string, container: object } {
let key = Object.keys(container)[0];
let containerTypeFound = containerTypes.find(c => (c === key));
const key = Object.keys(container)[0];
const containerTypeFound = containerTypes.find(c => (c === key));
if (!containerTypeFound) {
let dashboardContainer = dashboardcontainerRegistry.getRegisteredContainer(key);
const dashboardContainer = dashboardcontainerRegistry.getRegisteredContainer(key);
if (!dashboardContainer) {
let errorMessage = nls.localize('unknownDashboardContainerError', '{0} is an unknown container.', key);
const errorMessage = nls.localize('unknownDashboardContainerError', '{0} is an unknown container.', key);
error(errorMessage);
return { result: false, message: errorMessage, container: null };
return { result: false, message: errorMessage, container: undefined };
} else {
container = dashboardContainer.container;
}
}
return { result: true, message: null, container: container };
}
return { result: true, message: undefined, container: container };
}

View File

@@ -4,10 +4,13 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-->
<panel class="dashboard-panel" (onTabChange)="handleTabChange($event)" (onTabClose)="handleTabClose($event)" [actions]="panelActions">
<tab [visibilityType]="'visibility'" *ngFor="let tab of tabs" [title]="tab.title" class="fullsize" [identifier]="tab.id" [canClose]="tab.canClose" [actions]="tab.actions">
<panel class="dashboard-panel" (onTabChange)="handleTabChange($event)" (onTabClose)="handleTabClose($event)"
[actions]="panelActions">
<tab [visibilityType]="'visibility'" *ngFor="let tab of tabs" [title]="tab.title" class="fullsize"
[identifier]="tab.id" [canClose]="tab.canClose" [actions]="tab.actions">
<ng-template>
<dashboard-home-container *ngIf="tab.id === 'homeTab'; else not_home" [properties]="propertiesWidget" [tab]="tab">
<dashboard-home-container *ngIf="tab.id === 'homeTab'; else not_home" [properties]="propertiesWidget"
[tab]="tab">
</dashboard-home-container>
<ng-template #not_home>
<dashboard-webview-container *ngIf="getContentType(tab) === 'webview-container'" [tab]="tab">
@@ -27,4 +30,4 @@
</ng-template>
</ng-template>
</tab>
</panel>
</panel>

View File

@@ -3,24 +3,24 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!sql/parts/dashboard/common/dashboardPage';
import 'sql/parts/dashboard/common/dashboardPanelStyles';
import 'vs/css!sql/workbench/parts/dashboard/common/dashboardPage';
import 'sql/workbench/parts/dashboard/common/dashboardPanelStyles';
import { Component, Inject, forwardRef, ViewChild, ElementRef, ViewChildren, QueryList, ChangeDetectorRef } from '@angular/core';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { CommonServiceInterface, SingleConnectionManagementService } from 'sql/services/common/commonServiceInterface.service';
import { WidgetConfig, TabConfig, TabSettingConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { IPropertiesConfig } from 'sql/parts/dashboard/pages/serverDashboardPage.contribution';
import { WidgetConfig, TabConfig, TabSettingConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { IPropertiesConfig } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.contribution';
import { PanelComponent } from 'sql/base/browser/ui/panel/panel.component';
import { IDashboardRegistry, Extensions as DashboardExtensions, IDashboardTab } from 'sql/platform/dashboard/common/dashboardRegistry';
import { PinUnpinTabAction, AddFeatureTabAction } from './actions';
import { TabComponent, TabChild } from 'sql/base/browser/ui/panel/tab.component';
import { AngularEventType, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
import { DashboardTab, IConfigModifierCollection } from 'sql/parts/dashboard/common/interfaces';
import * as dashboardHelper from 'sql/parts/dashboard/common/dashboardHelper';
import { WIDGETS_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
import { DashboardTab, IConfigModifierCollection } from 'sql/workbench/parts/dashboard/common/interfaces';
import * as dashboardHelper from 'sql/workbench/parts/dashboard/common/dashboardHelper';
import { WIDGETS_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
import { AngularDisposable } from 'sql/base/node/lifecycle';
import * as Constants from 'sql/platform/connection/common/constants';
@@ -41,7 +41,7 @@ const dashboardRegistry = Registry.as<IDashboardRegistry>(DashboardExtensions.Da
@Component({
selector: 'dashboard-page',
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/common/dashboardPage.component.html'))
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/common/dashboardPage.component.html'))
})
export abstract class DashboardPage extends AngularDisposable implements IConfigModifierCollection {
@@ -140,7 +140,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
allTabs = this.setAndRemoveHomeTab(allTabs, homeWidgets);
// If preview features are disabled only show the home tab
let extensionTabsEnabled = this.configurationService.getValue('workbench')['enablePreviewFeatures'];
const extensionTabsEnabled = this.configurationService.getValue('workbench')['enablePreviewFeatures'];
if (!extensionTabsEnabled) {
allTabs = [];
}
@@ -148,18 +148,18 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
// Load tab setting configs
this._tabSettingConfigs = this.dashboardService.getSettings<Array<TabSettingConfig>>([this.context, 'tabs'].join('.'));
let pinnedDashboardTabs: IDashboardTab[] = [];
let alwaysShowTabs = allTabs.filter(tab => tab.alwaysShow);
const pinnedDashboardTabs: IDashboardTab[] = [];
const alwaysShowTabs = allTabs.filter(tab => tab.alwaysShow);
this._tabSettingConfigs.forEach(config => {
if (config.tabId && types.isBoolean(config.isPinned)) {
let tab = allTabs.find(i => i.id === config.tabId);
const tab = allTabs.find(i => i.id === config.tabId);
if (tab) {
if (config.isPinned) {
pinnedDashboardTabs.push(tab);
} else {
// overwrite always show if specify in user settings
let index = alwaysShowTabs.findIndex(i => i.id === tab.id);
const index = alwaysShowTabs.findIndex(i => i.id === tab.id);
alwaysShowTabs.splice(index, 1);
}
}
@@ -170,9 +170,9 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
this.loadNewTabs(alwaysShowTabs);
// Set panel actions
let openedTabs = [...pinnedDashboardTabs, ...alwaysShowTabs];
const openedTabs = [...pinnedDashboardTabs, ...alwaysShowTabs];
if (extensionTabsEnabled) {
let addNewTabAction = this.instantiationService.createInstance(AddFeatureTabAction, allTabs, openedTabs, this.dashboardService.getUnderlyingUri());
const addNewTabAction = this.instantiationService.createInstance(AddFeatureTabAction, allTabs, openedTabs, this.dashboardService.getUnderlyingUri());
this._tabsDispose.push(addNewTabAction);
this.panelActions = [addNewTabAction];
} else {
@@ -181,7 +181,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
this._cd.detectChanges();
this._tabsDispose.push(this.dashboardService.onPinUnpinTab(e => {
let tabConfig = this._tabSettingConfigs.find(i => i.tabId === e.tabId);
const tabConfig = this._tabSettingConfigs.find(i => i.tabId === e.tabId);
if (tabConfig) {
tabConfig.isPinned = e.isPinned;
} else {
@@ -196,7 +196,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
}
private setAndRemoveHomeTab(allTabs: IDashboardTab[], homeWidgets: WidgetConfig[]): IDashboardTab[] {
let homeTabConfig: TabConfig = {
const homeTabConfig: TabConfig = {
id: 'homeTab',
provider: Constants.anyProviderName,
publisher: undefined,
@@ -209,11 +209,11 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
actions: []
};
let homeTabIndex = allTabs.findIndex((tab) => tab.isHomeTab === true);
const homeTabIndex = allTabs.findIndex((tab) => tab.isHomeTab === true);
if (homeTabIndex !== undefined && homeTabIndex > -1) {
// Have a tab: get its information and copy over to the home tab definition
let homeTab = allTabs.splice(homeTabIndex, 1)[0];
let tabConfig = this.initTabComponents(homeTab);
const homeTab = allTabs.splice(homeTabIndex, 1)[0];
const tabConfig = this.initTabComponents(homeTab);
homeTabConfig.id = tabConfig.id;
homeTabConfig.container = tabConfig.container;
}
@@ -222,17 +222,17 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
}
private rewriteConfig(): void {
let writeableConfig = objects.deepClone(this._tabSettingConfigs);
const writeableConfig = objects.deepClone(this._tabSettingConfigs);
let target: ConfigurationTarget = ConfigurationTarget.USER;
const target: ConfigurationTarget = ConfigurationTarget.USER;
this.dashboardService.writeSettings([this.context, 'tabs'].join('.'), writeableConfig, target);
}
private loadNewTabs(dashboardTabs: IDashboardTab[], openLastTab: boolean = false) {
if (dashboardTabs && dashboardTabs.length > 0) {
let selectedTabs = dashboardTabs.map(v => this.initTabComponents(v)).map(v => {
let actions = [];
let tabSettingConfig = this._tabSettingConfigs.find(i => i.tabId === v.id);
const selectedTabs = dashboardTabs.map(v => this.initTabComponents(v)).map(v => {
const actions = [];
const tabSettingConfig = this._tabSettingConfigs.find(i => i.tabId === v.id);
let isPinned = false;
if (tabSettingConfig) {
isPinned = tabSettingConfig.isPinned;
@@ -241,7 +241,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
}
actions.push(this.instantiationService.createInstance(PinUnpinTabAction, v.id, this.dashboardService.getUnderlyingUri(), isPinned));
let config = v as TabConfig;
const config = v as TabConfig;
config.context = this.context;
config.editable = false;
config.canClose = true;
@@ -253,7 +253,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
if (openLastTab) {
// put this immediately on the stack so that is ran *after* the tab is rendered
setTimeout(() => {
let selectedLastTab = selectedTabs.pop();
const selectedLastTab = selectedTabs.pop();
this._panel.selectTab(selectedLastTab.id);
});
}
@@ -261,11 +261,11 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
}
private initTabComponents(value: IDashboardTab): { id: string; title: string; container: object; alwaysShow: boolean; } {
let containerResult = dashboardHelper.getDashboardContainer(value.container);
const containerResult = dashboardHelper.getDashboardContainer(value.container);
if (!containerResult.result) {
return { id: value.id, title: value.title, container: { 'error-container': undefined }, alwaysShow: value.alwaysShow };
}
let key = Object.keys(containerResult.container)[0];
const key = Object.keys(containerResult.container)[0];
if (key === WIDGETS_CONTAINER || key === GRID_CONTAINER) {
let configs = <WidgetConfig[]>Object.values(containerResult.container)[0];
this._configModifiers.forEach(cb => {
@@ -284,12 +284,12 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
return { id: value.id, title: value.title, container: containerResult.container, alwaysShow: value.alwaysShow };
}
private getContentType(tab: TabConfig): string {
protected getContentType(tab: TabConfig): string {
return tab.container ? Object.keys(tab.container)[0] : '';
}
private addNewTab(tab: TabConfig): void {
let existedTab = this.tabs.find(i => i.id === tab.id);
const existedTab = this.tabs.find(i => i.id === tab.id);
if (!existedTab) {
this.tabs.push(tab);
this._cd.detectChanges();
@@ -297,7 +297,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
}
private getProperties(): Array<WidgetConfig> {
let properties = this.dashboardService.getSettings<IPropertiesConfig[] | string | boolean>([this.context, 'properties'].join('.'));
const properties = this.dashboardService.getSettings<IPropertiesConfig[] | string | boolean>([this.context, 'properties'].join('.'));
this._propertiesConfigLocation = 'default';
if (types.isUndefinedOrNull(properties)) {
return [this.propertiesWidget];
@@ -307,7 +307,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
return [this.propertiesWidget];
} else if (types.isArray(properties)) {
return properties.map((item) => {
let retVal = Object.assign({}, this.propertiesWidget);
const retVal = Object.assign({}, this.propertiesWidget);
retVal.edition = item.edition;
retVal.provider = item.provider;
retVal.widget = { 'properties-widget': { properties: item.properties } };
@@ -340,13 +340,13 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
public handleTabChange(tab: TabComponent): void {
this._cd.detectChanges();
let localtab = this._tabs.find(i => i.id === tab.identifier);
const localtab = this._tabs.find(i => i.id === tab.identifier);
this._editEnabled.fire(localtab.editable);
this._cd.detectChanges();
}
public handleTabClose(tab: TabComponent): void {
let index = this.tabs.findIndex(i => i.id === tab.identifier);
const index = this.tabs.findIndex(i => i.id === tab.identifier);
this.tabs.splice(index, 1);
this.angularEventingService.sendAngularEvent(this.dashboardService.getUnderlyingUri(), AngularEventType.CLOSE_TAB, { id: tab.identifier });
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./dashboardPanel';
import { registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService';

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { localize } from 'vs/nls';
@@ -10,9 +11,9 @@ import * as types from 'vs/base/common/types';
import * as Constants from 'sql/platform/connection/common/constants';
import { registerTab } from 'sql/platform/dashboard/common/dashboardRegistry';
import { generateContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/parts/dashboard/containers/dashboardNavSection.contribution';
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.contribution';
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
export interface IDashboardTabContrib {
id: string;
@@ -85,7 +86,7 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardTabContrib | IDashboardTabCo
if (!types.isBoolean(alwaysShow)) {
alwaysShow = true;
}
let publisher = extension.description.publisher;
const publisher = extension.description.publisher;
if (!title) {
extension.collector.error(localize('dashboardTab.contribution.noTitleError', 'No title specified for extension.'));
return;
@@ -113,8 +114,8 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardTabContrib | IDashboardTabCo
}
let result = true;
let containerkey = Object.keys(container)[0];
let containerValue = Object.values(container)[0];
const containerkey = Object.keys(container)[0];
const containerValue = Object.values(container)[0];
switch (containerkey) {
case WIDGETS_CONTAINER:
@@ -133,10 +134,10 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardTabContrib | IDashboardTabCo
}
}
for (let extension of extensions) {
for (const extension of extensions) {
const { value } = extension;
if (Array.isArray<IDashboardTabContrib>(value)) {
for (let command of value) {
for (const command of value) {
handleCommand(command, extension);
}
} else {

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { InjectionToken, OnDestroy } from '@angular/core';
import { NgGridItemConfig } from 'angular2-grid';
import { Action } from 'vs/base/common/actions';

View File

@@ -2,18 +2,16 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { localize } from 'vs/nls';
import { join } from 'path';
import { createCSSRule } from 'vs/base/browser/dom';
import { URI } from 'vs/base/common/uri';
import { registerContainer, generateContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/parts/dashboard/containers/dashboardNavSection.contribution';
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
import { WEBVIEW_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWebviewContainer.contribution';
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.contribution';
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
import { WEBVIEW_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWebviewContainer.contribution';
const containerTypes = [
WIDGETS_CONTAINER,
@@ -58,7 +56,7 @@ const containerContributionSchema: IJSONSchema = {
ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboardContainerContrib[]>({ extensionPoint: 'dashboard.containers', jsonSchema: containerContributionSchema }).setHandler(extensions => {
function handleCommand(dashboardContainer: IDashboardContainerContrib, extension: IExtensionPointUser<any>) {
let { id, container } = dashboardContainer;
const { id, container } = dashboardContainer;
if (!id) {
extension.collector.error(localize('dashboardContainer.contribution.noIdError', 'No id in dashboard container specified for extension.'));
return;
@@ -74,10 +72,10 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboar
}
let result = true;
let containerkey = Object.keys(container)[0];
let containerValue = Object.values(container)[0];
const containerkey = Object.keys(container)[0];
const containerValue = Object.values(container)[0];
let containerTypeFound = containerTypes.find(c => (c === containerkey));
const containerTypeFound = containerTypes.find(c => (c === containerkey));
if (!containerTypeFound) {
extension.collector.error(localize('dashboardTab.contribution.unKnownContainerType', 'Unknown container type defines in dashboard container for extension.'));
return;
@@ -100,10 +98,10 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboar
}
}
for (let extension of extensions) {
for (const extension of extensions) {
const { value } = extension;
if (Array.isArray<IDashboardContainerContrib>(value)) {
for (let command of value) {
for (const command of value) {
handleCommand(command, extension);
}
} else {

View File

@@ -2,15 +2,16 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./dashboardControlHostContainer';
import { Component, forwardRef, Input, AfterContentInit, ViewChild, OnChanges } from '@angular/core';
import { Event, Emitter } from 'vs/base/common/event';
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { ControlHostContent } from 'sql/parts/dashboard/contents/controlHostContent.component';
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { ControlHostContent } from 'sql/workbench/parts/dashboard/contents/controlHostContent.component';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
@Component({
@@ -38,7 +39,7 @@ export class DashboardControlHostContainer extends DashboardTab implements After
this._onResize.fire();
}));
let container = <any>this.tab.container;
const container = <any>this.tab.container;
if (container['controlhost-container'] && container['controlhost-container'].type) {
this._hostContent.setControlType(container['controlhost-container'].type);
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';

View File

@@ -7,8 +7,8 @@ import 'vs/css!./dashboardErrorContainer';
import { Component, Inject, Input, forwardRef, ViewChild, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
import { Event, Emitter } from 'vs/base/common/event';
@@ -39,7 +39,7 @@ export class DashboardErrorContainer extends DashboardTab implements AfterViewIn
}
ngAfterViewInit() {
let errorMessage = this._errorMessageContainer.nativeElement as HTMLElement;
const errorMessage = this._errorMessageContainer.nativeElement as HTMLElement;
errorMessage.innerText = nls.localize('dashboardNavSection_loadTabError', 'The "{0}" section has invalid content. Please contact extension owner.', this.tab.title);
}

View File

@@ -0,0 +1,28 @@
<!--
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-->
<div>
<table class="grid-table">
<tr *ngFor="let row of rows" class="grid-table-row">
<ng-container *ngFor="let col of cols">
<ng-container *ngIf="getContent(row,col) !== undefined">
<td class="table-cell" [colSpan]=getColspan(row,col) [rowSpan]=getRowspan(row,col)
[width]="getWidgetWidth(row,col)" [height]="getWidgetHeight(row,col)">
<dashboard-widget-wrapper *ngIf="isWidget(row,col)" [_config]="getWidgetContent(row,col)"
style="position:absolute;" [style.width]="getWidgetWidth(row,col)"
[style.height]="getWidgetHeight(row,col)">
</dashboard-widget-wrapper>
<webview-content *ngIf="isWebview(row,col)" [webviewId]="getWebviewId(row,col)">
</webview-content>
</td>
</ng-container>
</ng-container>
</tr>
</table>
</div>

View File

@@ -8,10 +8,10 @@ import 'vs/css!./dashboardGridContainer';
import { Component, Inject, Input, forwardRef, ElementRef, ViewChildren, QueryList, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { TabConfig, WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
import { WebviewContent } from 'sql/parts/dashboard/contents/webviewContent.component';
import { TabConfig, WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
import { WebviewContent } from 'sql/workbench/parts/dashboard/contents/webviewContent.component';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
import { Event, Emitter } from 'vs/base/common/event';
@@ -35,7 +35,7 @@ export interface GridWebviewConfig extends GridCellConfig {
@Component({
selector: 'dashboard-grid-container',
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/containers/dashboardGridContainer.component.html')),
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/containers/dashboardGridContainer.component.html')),
providers: [{ provide: TabChild, useExisting: forwardRef(() => DashboardGridContainer) }]
})
export class DashboardGridContainer extends DashboardTab implements OnDestroy {
@@ -52,14 +52,14 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
protected cols: number[];
protected getContent(row: number, col: number): GridCellConfig {
let widget = this._contents.filter(w => w.row === row && w.col === col);
const widget = this._contents.filter(w => w.row === row && w.col === col);
return widget ? widget[0] : undefined;
}
protected getWidgetContent(row: number, col: number): GridWidgetConfig {
let content = this.getContent(row, col);
const content = this.getContent(row, col);
if (content) {
let widgetConfig = <GridWidgetConfig>content;
const widgetConfig = <GridWidgetConfig>content;
if (widgetConfig && widgetConfig.widget) {
return widgetConfig;
}
@@ -68,9 +68,9 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
}
protected getWebviewContent(row: number, col: number): GridWebviewConfig {
let content = this.getContent(row, col);
const content = this.getContent(row, col);
if (content) {
let webviewConfig = <GridWebviewConfig>content;
const webviewConfig = <GridWebviewConfig>content;
if (webviewConfig && webviewConfig.webview) {
return webviewConfig;
}
@@ -80,17 +80,17 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
protected isWidget(row: number, col: number): boolean {
let widgetConfig = this.getWidgetContent(row, col);
const widgetConfig = this.getWidgetContent(row, col);
return widgetConfig !== undefined;
}
protected isWebview(row: number, col: number): boolean {
let webview = this.getWebviewContent(row, col);
const webview = this.getWebviewContent(row, col);
return webview !== undefined;
}
protected getWebviewId(row: number, col: number): string {
let widgetConfig = this.getWebviewContent(row, col);
const widgetConfig = this.getWebviewContent(row, col);
if (widgetConfig && widgetConfig.webview) {
return widgetConfig.webview.id;
}
@@ -98,7 +98,7 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
}
protected getColspan(row: number, col: number): string {
let content = this.getContent(row, col);
const content = this.getContent(row, col);
let colspan: string = '1';
if (content && content.colspan) {
colspan = this.convertToNumber(content.colspan, this.cols.length).toString();
@@ -107,7 +107,7 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
}
protected getRowspan(row: number, col: number): string {
let content = this.getContent(row, col);
const content = this.getContent(row, col);
if (content && (content.rowspan)) {
return this.convertToNumber(content.rowspan, this.rows.length).toString();
} else {
@@ -116,17 +116,15 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
}
protected getWidgetWidth(row: number, col: number): string {
let content = this.getContent(row, col);
let colspan = this.getColspan(row, col);
let columnCount = this.convertToNumber(colspan, this.cols.length);
const colspan = this.getColspan(row, col);
const columnCount = this.convertToNumber(colspan, this.cols.length);
return columnCount * this.cellWidth + 'px';
}
protected getWidgetHeight(row: number, col: number): string {
let content = this.getContent(row, col);
let rowspan = this.getRowspan(row, col);
let rowCount = this.convertToNumber(rowspan, this.rows.length);
const rowspan = this.getRowspan(row, col);
const rowCount = this.convertToNumber(rowspan, this.rows.length);
return rowCount * this.cellHeight + 'px';
}
@@ -181,7 +179,7 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
}
private createIndexes(indexes: number[]) {
let max = Math.max(...indexes) + 1;
const max = Math.max(...indexes) + 1;
return Array(max).fill(0).map((x, i) => i);
}

View File

@@ -2,11 +2,12 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';
import { generateDashboardGridLayoutSchema } from 'sql/parts/dashboard/pages/dashboardPageContribution';
import { generateDashboardGridLayoutSchema } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution';
import { registerContainerType, registerNavSectionContainerType } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
export const GRID_CONTAINER = 'grid-container';
@@ -23,8 +24,8 @@ registerNavSectionContainerType(GRID_CONTAINER, gridContainersSchema);
export function validateGridContainerContribution(extension: IExtensionPointUser<any>, gridConfigs: object[]): boolean {
let result = true;
gridConfigs.forEach(widgetConfig => {
let allKeys = Object.keys(widgetConfig);
let widgetOrWebviewKey = allKeys.find(key => key === 'widget' || key === 'webview');
const allKeys = Object.keys(widgetConfig);
const widgetOrWebviewKey = allKeys.find(key => key === 'widget' || key === 'webview');
if (!widgetOrWebviewKey) {
result = false;
extension.collector.error(nls.localize('gridContainer.invalidInputs', 'widgets or webviews are expected inside widgets-container for extension.'));

View File

@@ -7,12 +7,12 @@ import 'vs/css!./dashboardHomeContainer';
import { Component, forwardRef, Input, ChangeDetectorRef, Inject, ViewChild, ContentChild } from '@angular/core';
import { DashboardWidgetContainer } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.component';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardWidgetContainer } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.component';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { AngularEventType, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { ScrollableDirective } from 'sql/base/browser/ui/scrollable/scrollable.directive';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
@@ -51,7 +51,7 @@ export class DashboardHomeContainer extends DashboardWidgetContainer {
}
ngAfterContentInit() {
let collapsedVal = this.dashboardService.getSettings<string>(`${this.properties.context}.properties`);
const collapsedVal = this.dashboardService.getSettings<string>(`${this.properties.context}.properties`);
if (collapsedVal === 'collapsed') {
this._propertiesClass.collapsed = true;
}

View File

@@ -2,14 +2,15 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./dashboardWebviewContainer';
import { Component, forwardRef, Input, AfterContentInit, ViewChild } from '@angular/core';
import { Event, Emitter } from 'vs/base/common/event';
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';

View File

@@ -8,22 +8,21 @@ import 'vs/css!./dashboardNavSection';
import { Component, Inject, Input, forwardRef, ViewChild, ElementRef, ViewChildren, QueryList, OnDestroy, ChangeDetectorRef, OnChanges, AfterContentInit } from '@angular/core';
import { CommonServiceInterface, SingleConnectionManagementService } from 'sql/services/common/commonServiceInterface.service';
import { WidgetConfig, TabConfig, NavSectionConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { WidgetConfig, TabConfig, NavSectionConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { PanelComponent, IPanelOptions, NavigationBarLayout } from 'sql/base/browser/ui/panel/panel.component';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
import { DashboardTab, IConfigModifierCollection } from 'sql/parts/dashboard/common/interfaces';
import { WIDGETS_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
import * as dashboardHelper from 'sql/parts/dashboard/common/dashboardHelper';
import { DashboardTab, IConfigModifierCollection } from 'sql/workbench/parts/dashboard/common/interfaces';
import { WIDGETS_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
import * as dashboardHelper from 'sql/workbench/parts/dashboard/common/dashboardHelper';
import { Event, Emitter } from 'vs/base/common/event';
import * as nls from 'vs/nls';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
@Component({
selector: 'dashboard-nav-section',
providers: [{ provide: TabChild, useExisting: forwardRef(() => DashboardNavSection) }],
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/containers/dashboardNavSection.component.html'))
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/containers/dashboardNavSection.component.html'))
})
export class DashboardNavSection extends DashboardTab implements OnDestroy, OnChanges, AfterContentInit, IConfigModifierCollection {
@Input() private tab: TabConfig;
@@ -91,14 +90,13 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
private loadNewTabs(dashboardTabs: NavSectionConfig[]) {
if (dashboardTabs && dashboardTabs.length > 0) {
let selectedTabs = dashboardTabs.map(v => {
let containerResult = dashboardHelper.getDashboardContainer(v.container);
dashboardTabs.map(v => {
const containerResult = dashboardHelper.getDashboardContainer(v.container);
if (!containerResult.result) {
return { id: v.id, title: v.title, container: { 'error-container': undefined } };
}
let key = Object.keys(containerResult.container)[0];
const key = Object.keys(containerResult.container)[0];
if (key === WIDGETS_CONTAINER || key === GRID_CONTAINER) {
let configs = <WidgetConfig[]>Object.values(containerResult.container)[0];
this._configModifiers.forEach(cb => {
@@ -116,7 +114,7 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
}
return { id: v.id, title: v.title, container: containerResult.container, iconClass: v.iconClass };
}).map(v => {
let config = v as TabConfig;
const config = v as TabConfig;
config.context = this.tab.context;
config.editable = false;
config.canClose = false;
@@ -127,14 +125,14 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
}
private addNewTab(tab: TabConfig): void {
let existedTab = this.tabs.find(i => i.id === tab.id);
const existedTab = this.tabs.find(i => i.id === tab.id);
if (!existedTab) {
this.tabs.push(tab);
this._cd.detectChanges();
}
}
private getContentType(tab: TabConfig): string {
protected getContentType(tab: TabConfig): string {
return tab.container ? Object.keys(tab.container)[0] : '';
}
@@ -147,8 +145,8 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
}
public layout() {
let activeTabId = this._panel.getActiveTab;
let localtab = this._tabs.find(i => i.id === activeTabId);
const activeTabId = this._panel.getActiveTab;
const localtab = this._tabs.find(i => i.id === activeTabId);
this._cd.detectChanges();
localtab.layout();
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';
@@ -10,10 +11,10 @@ import { createCSSRule } from 'vs/base/browser/dom';
import { URI } from 'vs/base/common/uri';
import { IdGenerator } from 'vs/base/common/idGenerator';
import { NavSectionConfig, IUserFriendlyIcon } from 'sql/parts/dashboard/common/dashboardWidget';
import { NavSectionConfig, IUserFriendlyIcon } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { registerContainerType, generateNavSectionContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
export const NAV_SECTION = 'nav-section';
@@ -55,7 +56,7 @@ const navSectionContainerSchema: IJSONSchema = {
}
};
let NavSectionSchema: IJSONSchema = {
const NavSectionSchema: IJSONSchema = {
type: 'array',
description: nls.localize('dashboard.container.left-nav-bar', "The list of dashboard containers that will be displayed in this navigation section."),
items: navSectionContainerSchema
@@ -117,8 +118,8 @@ export function validateNavSectionContributionAndRegisterIcon(extension: IExtens
section.iconClass = createCSSRuleForIcon(section.icon, extension);
}
let containerKey = Object.keys(section.container)[0];
let containerValue = Object.values(section.container)[0];
const containerKey = Object.keys(section.container)[0];
const containerValue = Object.values(section.container)[0];
switch (containerKey) {
case WIDGETS_CONTAINER:
@@ -135,4 +136,4 @@ export function validateNavSectionContributionAndRegisterIcon(extension: IExtens
});
return result;
}
}

View File

@@ -2,15 +2,16 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./dashboardWebviewContainer';
import { Component, forwardRef, Input, AfterContentInit, ViewChild } from '@angular/core';
import { Event, Emitter } from 'vs/base/common/event';
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { WebviewContent } from 'sql/parts/dashboard/contents/webviewContent.component';
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { WebviewContent } from 'sql/workbench/parts/dashboard/contents/webviewContent.component';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
@Component({

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';

View File

@@ -7,9 +7,9 @@ import 'vs/css!./dashboardWidgetContainer';
import { Component, Inject, Input, forwardRef, ViewChild, OnDestroy, ChangeDetectorRef, AfterContentInit } from '@angular/core';
import { TabConfig, WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
import { WidgetContent } from 'sql/parts/dashboard/contents/widgetContent.component';
import { TabConfig, WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
import { WidgetContent } from 'sql/workbench/parts/dashboard/contents/widgetContent.component';
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
import { Event, Emitter } from 'vs/base/common/event';

View File

@@ -2,13 +2,13 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';
import { generateDashboardWidgetSchema } from 'sql/parts/dashboard/pages/dashboardPageContribution';
import { generateDashboardWidgetSchema } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution';
import { registerContainerType, registerNavSectionContainerType } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
export const WIDGETS_CONTAINER = 'widgets-container';
@@ -24,12 +24,12 @@ registerNavSectionContainerType(WIDGETS_CONTAINER, widgetsSchema);
export function validateWidgetContainerContribution(extension: IExtensionPointUser<any>, WidgetConfigs: object[]): boolean {
let result = true;
WidgetConfigs.forEach(widgetConfig => {
let allKeys = Object.keys(widgetConfig);
let widgetKey = allKeys.find(key => key === 'widget');
const allKeys = Object.keys(widgetConfig);
const widgetKey = allKeys.find(key => key === 'widget');
if (!widgetKey) {
result = false;
extension.collector.error(nls.localize('widgetContainer.invalidInputs', 'The list of widgets is expected inside widgets-container for extension.'));
}
});
return result;
}
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./controlHostContent';
import { Component, forwardRef, Input, OnInit, Inject, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';
@@ -12,10 +13,10 @@ import { CommonServiceInterface } from 'sql/services/common/commonServiceInterfa
import * as azdata from 'azdata';
import { memoize } from 'vs/base/common/decorators';
import { AgentViewComponent } from '../../jobManagement/agent/agentView.component';
import { AgentViewComponent } from '../../../../parts/jobManagement/agent/agentView.component';
@Component({
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/contents/controlHostContent.component.html')),
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/contents/controlHostContent.component.html')),
selector: 'controlhost-content'
})
export class ControlHostContent {
@@ -49,8 +50,8 @@ export class ControlHostContent {
@memoize
public get connection(): azdata.connection.Connection {
let currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
let connection: azdata.connection.Connection = {
const currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
const connection: azdata.connection.Connection = {
providerName: currentConnection.providerName,
connectionId: currentConnection.id,
options: currentConnection.options

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!sql/media/icons/common-icons';
import 'vs/css!./dashboardWidgetWrapper';
@@ -10,19 +11,19 @@ import {
ElementRef, OnInit, ChangeDetectorRef, ReflectiveInjector, Injector, Type, ComponentRef
} from '@angular/core';
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { WidgetConfig, WIDGET_CONFIG, IDashboardWidget } from 'sql/parts/dashboard/common/dashboardWidget';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
import { WidgetConfig, WIDGET_CONFIG, IDashboardWidget } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
import { error } from 'sql/base/common/log';
import { RefreshWidgetAction, ToggleMoreWidgetAction, DeleteWidgetAction, CollapseWidgetAction } from 'sql/parts/dashboard/common/actions';
import { RefreshWidgetAction, ToggleMoreWidgetAction, DeleteWidgetAction, CollapseWidgetAction } from 'sql/workbench/parts/dashboard/common/actions';
import { AngularDisposable } from 'sql/base/node/lifecycle';
/* Widgets */
import { PropertiesWidgetComponent } from 'sql/parts/dashboard/widgets/properties/propertiesWidget.component';
import { ExplorerWidget } from 'sql/parts/dashboard/widgets/explorer/explorerWidget.component';
import { TasksWidget } from 'sql/parts/dashboard/widgets/tasks/tasksWidget.component';
import { InsightsWidget } from 'sql/parts/dashboard/widgets/insights/insightsWidget.component';
import { WebviewWidget } from 'sql/parts/dashboard/widgets/webview/webviewWidget.component';
import { PropertiesWidgetComponent } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component';
import { ExplorerWidget } from 'sql/workbench/parts/dashboard/widgets/explorer/explorerWidget.component';
import { TasksWidget } from 'sql/workbench/parts/dashboard/widgets/tasks/tasksWidget.component';
import { InsightsWidget } from 'sql/workbench/parts/dashboard/widgets/insights/insightsWidget.component';
import { WebviewWidget } from 'sql/workbench/parts/dashboard/widgets/webview/webviewWidget.component';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
@@ -46,7 +47,7 @@ const componentMap: { [x: string]: Type<IDashboardWidget> } = {
@Component({
selector: 'dashboard-widget-wrapper',
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/contents/dashboardWidgetWrapper.component.html'))
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component.html'))
})
export class DashboardWidgetWrapper extends AngularDisposable implements OnInit {
@Input() private _config: WidgetConfig;
@@ -97,9 +98,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
}
ngOnInit() {
let self = this;
this._register(self.themeService.onDidColorThemeChange((event: IColorTheme) => {
self.updateTheme(event);
this._register(this.themeService.onDidColorThemeChange((event: IColorTheme) => {
this.updateTheme(event);
}));
}
@@ -149,8 +149,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
error('Exactly 1 widget must be defined per space');
return;
}
let key = Object.keys(this._config.widget)[0];
let selector = this.getOrCreateSelector(key);
const key = Object.keys(this._config.widget)[0];
const selector = this.getOrCreateSelector(key);
if (selector === undefined) {
error('Could not find selector', key);
return;
@@ -158,23 +158,23 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
// If _config.name is not set, set it to _config.widget.name
if (!this._config.name) {
let widget = Object.values(this._config.widget)[0];
const widget = Object.values(this._config.widget)[0];
if (widget.name) {
this._config.name = widget.name;
}
}
let componentFactory = this._componentFactoryResolver.resolveComponentFactory(selector);
const componentFactory = this._componentFactoryResolver.resolveComponentFactory(selector);
let viewContainerRef = this.componentHost.viewContainerRef;
const viewContainerRef = this.componentHost.viewContainerRef;
viewContainerRef.clear();
let injector = ReflectiveInjector.resolveAndCreate([{ provide: WIDGET_CONFIG, useValue: this._config }], this._injector);
const injector = ReflectiveInjector.resolveAndCreate([{ provide: WIDGET_CONFIG, useValue: this._config }], this._injector);
let componentRef: ComponentRef<IDashboardWidget>;
try {
componentRef = viewContainerRef.createComponent(componentFactory, 0, injector);
this._component = componentRef.instance;
let actions = componentRef.instance.actions;
const actions = componentRef.instance.actions;
if (componentRef.instance.refresh) {
actions.push(new RefreshWidgetAction(this.refresh, this));
}
@@ -186,7 +186,7 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
error('Error rendering widget', key, e);
return;
}
let el = <HTMLElement>componentRef.location.nativeElement;
const el = <HTMLElement>componentRef.location.nativeElement;
// set widget styles to conform to its box
el.style.overflow = 'hidden';
@@ -207,8 +207,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
let selector = componentMap[key];
if (selector === undefined) {
// Load the widget from the registry
let widgetRegistry = <IInsightRegistry>Registry.as(Extensions.InsightContribution);
let insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
const widgetRegistry = <IInsightRegistry>Registry.as(Extensions.InsightContribution);
const insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
if (insightConfig === undefined) {
return undefined;
}
@@ -221,12 +221,12 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
}
private updateTheme(theme: IColorTheme): void {
let el = <HTMLElement>this._ref.nativeElement;
let headerEl: HTMLElement = this.header.nativeElement;
const el = <HTMLElement>this._ref.nativeElement;
const headerEl: HTMLElement = this.header.nativeElement;
let borderColor = theme.getColor(themeColors.SIDE_BAR_BACKGROUND, true);
let backgroundColor = theme.getColor(colors.editorBackground, true);
let foregroundColor = theme.getColor(themeColors.SIDE_BAR_FOREGROUND, true);
let border = theme.getColor(colors.contrastBorder, true);
const foregroundColor = theme.getColor(themeColors.SIDE_BAR_FOREGROUND, true);
const border = theme.getColor(colors.contrastBorder, true);
if (this._config.background_color) {
backgroundColor = theme.getColor(this._config.background_color);
@@ -273,4 +273,4 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
headerEl.style.padding = this._config.padding;
}
}
}
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./webviewContent';
import { Component, forwardRef, Input, OnInit, Inject, ElementRef } from '@angular/core';
@@ -11,16 +12,13 @@ import { IDisposable } from 'vs/base/common/lifecycle';
import { addDisposableListener, EventType } from 'vs/base/browser/dom';
import { memoize } from 'vs/base/common/decorators';
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { IDashboardWebview, IDashboardViewService } from 'sql/platform/dashboard/common/dashboardViewService';
import { AngularDisposable } from 'sql/base/node/lifecycle';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import * as azdata from 'azdata';
import { IContextKey } from 'vs/platform/contextkey/common/contextkey';
import { WebviewElement } from 'vs/workbench/contrib/webview/electron-browser/webviewElement';
import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService';
@@ -69,8 +67,8 @@ export class WebviewContent extends AngularDisposable implements OnInit, IDashbo
@memoize
public get connection(): azdata.connection.Connection {
let currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
let connection: azdata.connection.Connection = {
const currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
const connection: azdata.connection.Connection = {
providerName: currentConnection.providerName,
connectionId: currentConnection.id,
options: currentConnection.options

View File

@@ -8,10 +8,10 @@ import 'vs/css!./widgetContent';
import { Component, Inject, Input, forwardRef, ViewChild, ViewChildren, QueryList, ChangeDetectorRef, ElementRef, AfterViewInit } from '@angular/core';
import { NgGridConfig, NgGrid, NgGridItem } from 'angular2-grid';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { subscriptionToDisposable, AngularDisposable } from 'sql/base/node/lifecycle';
import { IDisposable } from 'vs/base/common/lifecycle';
@@ -69,7 +69,7 @@ function configSorter(a, b): number {
@Component({
selector: 'widget-content',
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/contents/widgetContent.component.html'))
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/contents/widgetContent.component.html'))
})
export class WidgetContent extends AngularDisposable implements AfterViewInit {
@Input() private widgets: WidgetConfig[];
@@ -125,8 +125,8 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
ngAfterViewInit() {
if (this.scrollContent) {
let container = this._scrollContainer.nativeElement as HTMLElement;
let scrollable = this._scrollable.nativeElement as HTMLElement;
const container = this._scrollContainer.nativeElement as HTMLElement;
const scrollable = this._scrollable.nativeElement as HTMLElement;
container.removeChild(scrollable);
this._scrollableElement = new ScrollableElement(scrollable, {
@@ -140,7 +140,7 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
});
container.appendChild(this._scrollableElement.getDomNode());
let initalHeight = getContentHeight(scrollable);
const initalHeight = getContentHeight(scrollable);
this._scrollableElement.setScrollDimensions({
scrollHeight: getContentHeight(scrollable),
height: getContentHeight(container)
@@ -152,7 +152,7 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
// unforunately because of angular rendering behavior we need to do a double check to make sure nothing changed after this point
setTimeout(() => {
let currentheight = getContentHeight(scrollable);
const currentheight = getContentHeight(scrollable);
if (initalHeight !== currentheight) {
this._scrollableElement.setScrollDimensions({
scrollHeight: currentheight,
@@ -176,8 +176,8 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
}
private resetScrollDimensions() {
let container = this._scrollContainer.nativeElement as HTMLElement;
let scrollable = this._scrollable.nativeElement as HTMLElement;
const container = this._scrollContainer.nativeElement as HTMLElement;
const scrollable = this._scrollable.nativeElement as HTMLElement;
this._scrollableElement.setScrollDimensions({
scrollHeight: getContentHeight(scrollable),
@@ -219,8 +219,8 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
}));
this._editDispose.push(subscriptionToDisposable(this._grid.onResizeStop.subscribe((e: NgGridItem) => {
this._onResize.fire();
let event = e.getEventOutput();
let config = this.originalConfig.find(i => i.id === event.payload.id);
const event = e.getEventOutput();
const config = this.originalConfig.find(i => i.id === event.payload.id);
if (!config.gridItemConfig) {
config.gridItemConfig = {};
@@ -228,7 +228,7 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
config.gridItemConfig.sizex = e.sizex;
config.gridItemConfig.sizey = e.sizey;
let component = this._widgets.find(i => i.id === event.payload.id);
const component = this._widgets.find(i => i.id === event.payload.id);
component.layout();
this._rewriteConfig();
@@ -236,9 +236,9 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
})));
this._editDispose.push(subscriptionToDisposable(this._grid.onDragStop.subscribe((e: NgGridItem) => {
this._onResize.fire();
let event = e.getEventOutput();
const event = e.getEventOutput();
this._items.forEach(i => {
let config = this.originalConfig.find(j => j.id === i.getEventOutput().payload.id);
const config = this.originalConfig.find(j => j.id === i.getEventOutput().payload.id);
if ((config.gridItemConfig && config.gridItemConfig.col) || config.id === event.payload.id) {
if (!config.gridItemConfig) {
config.gridItemConfig = {};
@@ -261,12 +261,12 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
}
private _rewriteConfig(): void {
let writeableConfig = objects.deepClone(this.originalConfig);
const writeableConfig = objects.deepClone(this.originalConfig);
writeableConfig.forEach(i => {
delete i.id;
});
let target: ConfigurationTarget = ConfigurationTarget.USER;
const target: ConfigurationTarget = ConfigurationTarget.USER;
this.dashboardService.writeSettings([this.context, 'widgets'].join('.'), writeableConfig, target);
}
}

View File

@@ -11,8 +11,8 @@ import { Router } from '@angular/router';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import * as Utils from 'sql/platform/connection/common/utils';
import { RefreshWidgetAction, EditDashboardAction } from 'sql/parts/dashboard/common/actions';
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
import { RefreshWidgetAction, EditDashboardAction } from 'sql/workbench/parts/dashboard/common/actions';
import { DashboardPage } from 'sql/workbench/parts/dashboard/common/dashboardPage.component';
import { AngularDisposable } from 'sql/base/node/lifecycle';
import { IColorTheme, IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
@@ -47,7 +47,7 @@ export class DashboardComponent extends AngularDisposable implements OnInit {
ngOnInit() {
this._register(this.themeService.onDidColorThemeChange(this.updateTheme, this));
this.updateTheme(this.themeService.getColorTheme());
let profile: IConnectionProfile = this._bootstrapService.getOriginalConnectionProfile();
const profile: IConnectionProfile = this._bootstrapService.getOriginalConnectionProfile();
this.actionbar = new ActionBar(this.actionbarContainer.nativeElement);
this.actionbar.push(new RefreshWidgetAction(this.refresh, this), {
icon: true,
@@ -65,7 +65,7 @@ export class DashboardComponent extends AngularDisposable implements OnInit {
}
private updateTheme(theme: IColorTheme): void {
let headerEl = <HTMLElement>this.header.nativeElement;
const headerEl = <HTMLElement>this.header.nativeElement;
headerEl.style.borderBottomColor = theme.getColor(themeColors.SIDE_BAR_BACKGROUND, true).toString();
headerEl.style.borderBottomWidth = '1px';
headerEl.style.borderBottomStyle = 'solid';

View File

@@ -24,31 +24,31 @@ import * as TelemetryUtils from 'sql/common/telemetryUtilities';
import * as TelemetryKeys from 'sql/common/telemetryKeys';
/* Services */
import { BreadcrumbService } from 'sql/parts/dashboard/services/breadcrumb.service';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { BreadcrumbService } from 'sql/workbench/parts/dashboard/services/breadcrumb.service';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
/* Directives */
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
/* Base Components */
import { DashboardComponent } from 'sql/parts/dashboard/dashboard.component';
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { DashboardWidgetContainer } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.component';
import { DashboardGridContainer } from 'sql/parts/dashboard/containers/dashboardGridContainer.component';
import { DashboardWebviewContainer } from 'sql/parts/dashboard/containers/dashboardWebviewContainer.component';
import { DashboardModelViewContainer } from 'sql/parts/dashboard/containers/dashboardModelViewContainer.component';
import { DashboardErrorContainer } from 'sql/parts/dashboard/containers/dashboardErrorContainer.component';
import { DashboardNavSection } from 'sql/parts/dashboard/containers/dashboardNavSection.component';
import { WidgetContent } from 'sql/parts/dashboard/contents/widgetContent.component';
import { DashboardComponent } from 'sql/workbench/parts/dashboard/dashboard.component';
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
import { DashboardWidgetContainer } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.component';
import { DashboardGridContainer } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.component';
import { DashboardWebviewContainer } from 'sql/workbench/parts/dashboard/containers/dashboardWebviewContainer.component';
import { DashboardModelViewContainer } from 'sql/workbench/parts/dashboard/containers/dashboardModelViewContainer.component';
import { DashboardErrorContainer } from 'sql/workbench/parts/dashboard/containers/dashboardErrorContainer.component';
import { DashboardNavSection } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.component';
import { WidgetContent } from 'sql/workbench/parts/dashboard/contents/widgetContent.component';
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
import { WebviewContent } from 'sql/parts/dashboard/contents/webviewContent.component';
import { WebviewContent } from 'sql/workbench/parts/dashboard/contents/webviewContent.component';
import { BreadcrumbComponent } from 'sql/base/browser/ui/breadcrumb/breadcrumb.component';
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
import { DashboardHomeContainer } from 'sql/parts/dashboard/containers/dashboardHomeContainer.component';
import { ControlHostContent } from 'sql/parts/dashboard/contents/controlHostContent.component';
import { DashboardControlHostContainer } from 'sql/parts/dashboard/containers/dashboardControlHostContainer.component';
import { DashboardHomeContainer } from 'sql/workbench/parts/dashboard/containers/dashboardHomeContainer.component';
import { ControlHostContent } from 'sql/workbench/parts/dashboard/contents/controlHostContent.component';
import { DashboardControlHostContainer } from 'sql/workbench/parts/dashboard/containers/dashboardControlHostContainer.component';
import { JobsViewComponent } from 'sql/parts/jobManagement/views/jobsView.component';
import { AgentViewComponent } from 'sql/parts/jobManagement/agent/agentView.component';
import { AlertsViewComponent } from 'sql/parts/jobManagement/views/alertsView.component';
@@ -61,11 +61,11 @@ import { EditableDropDown } from 'sql/base/browser/ui/editableDropdown/editableD
import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox.component';
import LoadingSpinner from 'sql/parts/modelComponents/loadingSpinner.component';
let baseComponents = [DashboardHomeContainer, DashboardComponent, DashboardWidgetWrapper, DashboardWebviewContainer,
const baseComponents = [DashboardHomeContainer, DashboardComponent, DashboardWidgetWrapper, DashboardWebviewContainer,
DashboardWidgetContainer, DashboardGridContainer, DashboardErrorContainer, DashboardNavSection, ModelViewContent, WebviewContent, WidgetContent,
ComponentHostDirective, BreadcrumbComponent, ControlHostContent, DashboardControlHostContainer,
JobsViewComponent, AgentViewComponent, JobHistoryComponent, JobStepsViewComponent, AlertsViewComponent, ProxiesViewComponent, OperatorsViewComponent,
DashboardModelViewContainer, ModelComponentWrapper, Checkbox, EditableDropDown, SelectBox, InputBox, LoadingSpinner ];
DashboardModelViewContainer, ModelComponentWrapper, Checkbox, EditableDropDown, SelectBox, InputBox, LoadingSpinner];
/* Panel */
import { PanelModule } from 'sql/base/browser/ui/panel/panel.module';
@@ -73,21 +73,21 @@ import { PanelModule } from 'sql/base/browser/ui/panel/panel.module';
import { ScrollableModule } from 'sql/base/browser/ui/scrollable/scrollable.module';
/* Pages */
import { ServerDashboardPage } from 'sql/parts/dashboard/pages/serverDashboardPage.component';
import { DatabaseDashboardPage } from 'sql/parts/dashboard/pages/databaseDashboardPage.component';
import { ServerDashboardPage } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.component';
import { DatabaseDashboardPage } from 'sql/workbench/parts/dashboard/pages/databaseDashboardPage.component';
let pageComponents = [ServerDashboardPage, DatabaseDashboardPage];
const pageComponents = [ServerDashboardPage, DatabaseDashboardPage];
/* Widget Components */
import { PropertiesWidgetComponent } from 'sql/parts/dashboard/widgets/properties/propertiesWidget.component';
import { ExplorerWidget } from 'sql/parts/dashboard/widgets/explorer/explorerWidget.component';
import { TasksWidget } from 'sql/parts/dashboard/widgets/tasks/tasksWidget.component';
import { InsightsWidget } from 'sql/parts/dashboard/widgets/insights/insightsWidget.component';
import { WebviewWidget } from 'sql/parts/dashboard/widgets/webview/webviewWidget.component';
import { PropertiesWidgetComponent } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component';
import { ExplorerWidget } from 'sql/workbench/parts/dashboard/widgets/explorer/explorerWidget.component';
import { TasksWidget } from 'sql/workbench/parts/dashboard/widgets/tasks/tasksWidget.component';
import { InsightsWidget } from 'sql/workbench/parts/dashboard/widgets/insights/insightsWidget.component';
import { WebviewWidget } from 'sql/workbench/parts/dashboard/widgets/webview/webviewWidget.component';
import { JobStepsViewComponent } from 'sql/parts/jobManagement/views/jobStepsView.component';
import { IInstantiationService, _util } from 'vs/platform/instantiation/common/instantiation';
let widgetComponents = [
const widgetComponents = [
PropertiesWidgetComponent,
ExplorerWidget,
TasksWidget,
@@ -96,10 +96,10 @@ let widgetComponents = [
];
/* Insights */
let insightComponents = Registry.as<IInsightRegistry>(Extensions.InsightContribution).getAllCtors();
const insightComponents = Registry.as<IInsightRegistry>(Extensions.InsightContribution).getAllCtors();
/* Model-backed components */
let extensionComponents = Registry.as<IComponentRegistry>(ComponentExtensions.ComponentContribution).getAllCtors();
const extensionComponents = Registry.as<IComponentRegistry>(ComponentExtensions.ComponentContribution).getAllCtors();
// Setup routes for various child components
const appRoutes: Routes = [

View File

@@ -2,11 +2,12 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Registry } from 'vs/platform/registry/common/platform';
import { IConfigurationRegistry, Extensions, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry';
import { DASHBOARD_CONFIG_ID } from 'sql/parts/dashboard/pages/dashboardPageContribution';
import { DATABASE_DASHBOARD_SETTING, DATABASE_DASHBOARD_PROPERTIES, DATABASE_DASHBOARD_TABS, databaseDashboardSettingSchema, databaseDashboardPropertiesSchema, databaseDashboardTabsSchema } from 'sql/parts/dashboard/pages/databaseDashboardPage.contribution';
import { SERVER_DASHBOARD_SETTING, SERVER_DASHBOARD_PROPERTIES, SERVER_DASHBOARD_TABS, serverDashboardSettingSchema, serverDashboardPropertiesSchema, serverDashboardTabsSchema } from 'sql/parts/dashboard/pages/serverDashboardPage.contribution';
import { DASHBOARD_CONFIG_ID } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution';
import { DATABASE_DASHBOARD_SETTING, DATABASE_DASHBOARD_PROPERTIES, DATABASE_DASHBOARD_TABS, databaseDashboardSettingSchema, databaseDashboardPropertiesSchema, databaseDashboardTabsSchema } from 'sql/workbench/parts/dashboard/pages/databaseDashboardPage.contribution';
import { SERVER_DASHBOARD_SETTING, SERVER_DASHBOARD_PROPERTIES, SERVER_DASHBOARD_TABS, serverDashboardSettingSchema, serverDashboardPropertiesSchema, serverDashboardTabsSchema } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.contribution';
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
const dashboardConfig: IConfigurationNode = {

View File

@@ -15,7 +15,7 @@ import { DashboardInput } from './dashboardInput';
import { DashboardModule } from './dashboard.module';
import { bootstrapAngular } from 'sql/services/bootstrap/bootstrapService';
import { IDashboardComponentParams } from 'sql/services/bootstrap/bootstrapParams';
import { DASHBOARD_SELECTOR } from 'sql/parts/dashboard/dashboard.component';
import { DASHBOARD_SELECTOR } from 'sql/workbench/parts/dashboard/dashboard.component';
import { ConnectionContextKey } from 'sql/parts/connection/common/connectionContextKey';
import { IDashboardService } from 'sql/platform/dashboard/browser/dashboardService';
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
@@ -64,7 +64,7 @@ export class DashboardEditor extends BaseEditor {
} else {
profile = this.input.connectionProfile;
}
let serverInfo = this._connMan.getConnectionInfo(this.input.uri).serverInfo;
const serverInfo = this._connMan.getConnectionInfo(this.input.uri).serverInfo;
this._dashboardService.changeToDashboard({ profile, serverInfo });
}
@@ -88,7 +88,7 @@ export class DashboardEditor extends BaseEditor {
$(parentElement).clearChildren();
if (!input.hasBootstrapped) {
let container = DOM.$<HTMLElement>('.dashboardEditor');
const container = DOM.$<HTMLElement>('.dashboardEditor');
container.style.height = '100%';
this._dashboardContainer = DOM.append(parentElement, container);
this.input.container = this._dashboardContainer;
@@ -110,13 +110,13 @@ export class DashboardEditor extends BaseEditor {
} else {
profile = this.input.connectionProfile;
}
let serverInfo = this._connMan.getConnectionInfo(this.input.uri).serverInfo;
const serverInfo = this._connMan.getConnectionInfo(this.input.uri).serverInfo;
this._dashboardService.changeToDashboard({ profile, serverInfo });
let scopedContextService = this._contextKeyService.createScoped(input.container);
let connectionContextKey = new ConnectionContextKey(scopedContextService);
const scopedContextService = this._contextKeyService.createScoped(input.container);
const connectionContextKey = new ConnectionContextKey(scopedContextService);
connectionContextKey.set(input.connectionProfile);
let params: IDashboardComponentParams = {
const params: IDashboardComponentParams = {
connection: input.connectionProfile,
ownerUri: input.uri,
scopedContextService,
@@ -125,7 +125,7 @@ export class DashboardEditor extends BaseEditor {
input.hasBootstrapped = true;
let uniqueSelector = bootstrapAngular(this.instantiationService,
const uniqueSelector = bootstrapAngular(this.instantiationService,
DashboardModule,
this._dashboardContainer,
DASHBOARD_SELECTOR,

View File

@@ -51,7 +51,7 @@ export class DashboardInput extends EditorInput {
this._initializedPromise = _connectionService.connectIfNotConnected(_connectionProfile, 'dashboard').then(
u => {
this._uri = u;
let info = this._connectionService.getConnectionInfo(u);
const info = this._connectionService.getConnectionInfo(u);
if (info) {
this._onConnectionChanged = this._connectionService.onConnectionChanged(e => {
if (e.connectionUri === u) {
@@ -115,7 +115,7 @@ export class DashboardInput extends EditorInput {
return;
}
let parentNode = this._parentContainer.parentNode;
const parentNode = this._parentContainer.parentNode;
if (parentNode) {
parentNode.removeChild(this._parentContainer);
this._parentContainer = null;

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Extensions, IDashboardWidgetRegistry } from 'sql/platform/dashboard/common/widgetRegistry';
import { Registry } from 'vs/platform/registry/common/platform';
@@ -14,7 +15,7 @@ let widgetRegistry = <IDashboardWidgetRegistry>Registry.as(Extensions.DashboardW
export function generateDashboardWidgetSchema(type?: 'database' | 'server', extension?: boolean): IJSONSchema {
let schemas;
if (extension) {
let extensionSchemas = type === 'server' ? widgetRegistry.serverWidgetSchema.extensionProperties : type === 'database' ? widgetRegistry.databaseWidgetSchema.extensionProperties : widgetRegistry.allSchema.extensionProperties;
const extensionSchemas = type === 'server' ? widgetRegistry.serverWidgetSchema.extensionProperties : type === 'database' ? widgetRegistry.databaseWidgetSchema.extensionProperties : widgetRegistry.allSchema.extensionProperties;
schemas = type === 'server' ? widgetRegistry.serverWidgetSchema.properties : type === 'database' ? widgetRegistry.databaseWidgetSchema.properties : widgetRegistry.allSchema.properties;
schemas = mixin(schemas, extensionSchemas, true);
} else {
@@ -64,7 +65,7 @@ export function generateDashboardWidgetSchema(type?: 'database' | 'server', exte
export function generateDashboardGridLayoutSchema(type?: 'database' | 'server', extension?: boolean): IJSONSchema {
let schemas;
if (extension) {
let extensionSchemas = type === 'server' ? widgetRegistry.serverWidgetSchema.extensionProperties : type === 'database' ? widgetRegistry.databaseWidgetSchema.extensionProperties : widgetRegistry.allSchema.extensionProperties;
const extensionSchemas = type === 'server' ? widgetRegistry.serverWidgetSchema.extensionProperties : type === 'database' ? widgetRegistry.databaseWidgetSchema.extensionProperties : widgetRegistry.allSchema.extensionProperties;
schemas = type === 'server' ? widgetRegistry.serverWidgetSchema.properties : type === 'database' ? widgetRegistry.databaseWidgetSchema.properties : widgetRegistry.allSchema.properties;
schemas = mixin(schemas, extensionSchemas, true);
} else {

View File

@@ -5,11 +5,11 @@
import { OnInit, Inject, forwardRef, ChangeDetectorRef, ElementRef } from '@angular/core';
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
import { BreadcrumbClass } from 'sql/parts/dashboard/services/breadcrumb.service';
import { DashboardPage } from 'sql/workbench/parts/dashboard/common/dashboardPage.component';
import { BreadcrumbClass } from 'sql/workbench/parts/dashboard/services/breadcrumb.service';
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';

View File

@@ -5,11 +5,11 @@
import { OnInit, Inject, forwardRef, ChangeDetectorRef, ElementRef } from '@angular/core';
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
import { BreadcrumbClass } from 'sql/parts/dashboard/services/breadcrumb.service';
import { DashboardPage } from 'sql/workbench/parts/dashboard/common/dashboardPage.component';
import { BreadcrumbClass } from 'sql/workbench/parts/dashboard/services/breadcrumb.service';
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
@@ -50,7 +50,7 @@ export class ServerDashboardPage extends DashboardPage implements OnInit {
super(dashboardService, el, _cd, instantiationService, notificationService, angularEventingService, configurationService);
// special-case handling for MSSQL data provider
let connInfo = this.dashboardService.connectionManagementService.connectionInfo;
const connInfo = this.dashboardService.connectionManagementService.connectionInfo;
if (connInfo && connInfo.providerId === 'MSSQL') {
// revert back to default database
this._letDashboardPromise = this.dashboardService.connectionManagementService.changeDatabase('master').then();

View File

@@ -2,9 +2,10 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls';
import { generateDashboardWidgetSchema, generateDashboardTabSchema } from 'sql/parts/dashboard/pages/dashboardPageContribution';
import { generateDashboardWidgetSchema, generateDashboardTabSchema } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution';
export interface IPropertiesConfig {
edition: number | Array<number>;
@@ -73,7 +74,7 @@ export const serverDashboardPropertiesSchema: IJSONSchema = {
]
};
let defaultVal = [
const defaultVal = [
{
name: 'Tasks',
widget: {
@@ -122,4 +123,4 @@ export const serverDashboardTabsSchema: IJSONSchema = {
export const SERVER_DASHBOARD_SETTING = 'dashboard.server.widgets';
export const SERVER_DASHBOARD_PROPERTIES = 'dashboard.server.properties';
export const SERVER_DASHBOARD_TABS = 'dashboard.server.tabs';
export const SERVER_DASHBOARD_TABS = 'dashboard.server.tabs';

View File

@@ -24,7 +24,7 @@ export class BreadcrumbService implements IBreadcrumbService {
private itemBreadcrums: MenuItem[];
private _currentPage: BreadcrumbClass;
constructor( @Inject(forwardRef(() => CommonServiceInterface)) private commonService: DashboardServiceInterface) {
constructor(@Inject(forwardRef(() => CommonServiceInterface)) private commonService: DashboardServiceInterface) {
this.commonService.onUpdatePage(() => {
this.setBreadcrumbs(this._currentPage);
});
@@ -34,13 +34,13 @@ export class BreadcrumbService implements IBreadcrumbService {
public setBreadcrumbs(page: BreadcrumbClass) {
this._currentPage = page;
this.itemBreadcrums = [];
let refList: MenuItem[] = this.getBreadcrumbsLink(page);
const refList: MenuItem[] = this.getBreadcrumbsLink(page);
this.breadcrumbItem.next(refList);
}
private getBreadcrumbsLink(page: BreadcrumbClass): MenuItem[] {
this.itemBreadcrums = [];
let profile = this.commonService.connectionManagementService.connectionInfo.connectionProfile;
const profile = this.commonService.connectionManagementService.connectionInfo.connectionProfile;
this.itemBreadcrums.push({ label: nls.localize('homeCrumb', 'Home') });
switch (page) {
case BreadcrumbClass.DatabasePage:

View File

@@ -17,7 +17,7 @@ import { IQueryManagementService } from 'sql/platform/query/common/queryManageme
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
import { AngularEventType, IAngularEvent, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
import { IDashboardTab } from 'sql/platform/dashboard/common/dashboardRegistry';
import { TabSettingConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { TabSettingConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
/* VS imports */

View File

@@ -79,7 +79,7 @@ export class ObjectMetadataWrapper implements ObjectMetadata {
// otherwise compare the schema
} else {
let schemaCompare: number = metadata1.schema && metadata2.schema
const schemaCompare: number = metadata1.schema && metadata2.schema
? metadata1.schema.localeCompare(metadata2.schema)
// schemas are not expected to be undefined, but if they are then compare using object names
: 0;
@@ -172,7 +172,7 @@ export class ExplorerController extends TreeDefaults.DefaultController {
}
protected onEnter(tree: tree.ITree, event: IKeyboardEvent): boolean {
let result = super.onEnter(tree, event);
const result = super.onEnter(tree, event);
if (result) {
const focus = tree.getFocus();
if (focus && !(focus instanceof ObjectMetadataWrapper)) {
@@ -251,8 +251,8 @@ export class ExplorerRenderer implements tree.IRenderer {
}
public renderTemplate(tree: tree.ITree, templateId: string, container: HTMLElement): IListTemplate {
let row = $('.list-row');
let label = $('.label');
const row = $('.list-row');
const label = $('.label');
let icon: HTMLElement;
if (templateId === TEMPLATEIDS.object) {
@@ -313,7 +313,7 @@ export class ExplorerFilter implements tree.IFilter {
if (!this._filterString) {
return true;
}
let filterString = this._filterString.trim().toLowerCase();
const filterString = this._filterString.trim().toLowerCase();
return element.databaseName.toLowerCase().includes(filterString);
}
@@ -330,7 +330,7 @@ export class ExplorerFilter implements tree.IFilter {
let metadataType: MetadataType;
if (filterString.includes(':')) {
let filterArray = filterString.split(':');
const filterArray = filterString.split(':');
if (filterArray.length > 2) {
filterString = filterArray.slice(1, filterArray.length - 1).join(':');
@@ -371,7 +371,7 @@ export class ExplorerFilter implements tree.IFilter {
}
function getExplorerActions(element: TreeResource, instantiationService: IInstantiationService, capabilitiesService: ICapabilitiesService, info: ConnectionManagementInfo): IAction[] {
let actions: IAction[] = [];
const actions: IAction[] = [];
if (element instanceof ObjectMetadataWrapper) {
if (element.metadataType === MetadataType.View || element.metadataType === MetadataType.Table) {
@@ -430,7 +430,7 @@ class ExplorerScriptSelectAction extends ScriptSelectAction {
}
public run(actionContext: BaseActionContext): Promise<boolean> {
let promise = super.run(actionContext);
const promise = super.run(actionContext);
this.progressService.showWhile(promise);
return promise;
}
@@ -449,7 +449,7 @@ class ExplorerScriptCreateAction extends ScriptCreateAction {
}
public run(actionContext: BaseActionContext): Promise<boolean> {
let promise = super.run(actionContext);
const promise = super.run(actionContext);
this.progressService.showWhile(promise);
return promise;
}
@@ -468,7 +468,7 @@ class ExplorerScriptAlterAction extends ScriptAlterAction {
}
public run(actionContext: BaseActionContext): Promise<boolean> {
let promise = super.run(actionContext);
const promise = super.run(actionContext);
this.progressService.showWhile(promise);
return promise;
}
@@ -487,7 +487,7 @@ class ExplorerScriptExecuteAction extends ScriptExecuteAction {
}
public run(actionContext: BaseActionContext): Promise<boolean> {
let promise = super.run(actionContext);
const promise = super.run(actionContext);
this.progressService.showWhile(promise);
return promise;
}
@@ -504,7 +504,7 @@ class ExplorerManageAction extends ManageAction {
}
public run(actionContext: ManageActionContext): Promise<boolean> {
let promise = super.run(actionContext);
const promise = super.run(actionContext);
this._progressService.showWhile(promise);
return promise;
}

View File

@@ -10,7 +10,7 @@ import 'vs/css!./media/explorerWidget';
import { Component, Inject, forwardRef, ChangeDetectorRef, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Router } from '@angular/router';
import { DashboardWidget, IDashboardWidget, WidgetConfig, WIDGET_CONFIG } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardWidget, IDashboardWidget, WidgetConfig, WIDGET_CONFIG } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
import { ExplorerFilter, ExplorerRenderer, ExplorerDataSource, ExplorerController, ObjectMetadataWrapper, ExplorerModel } from './explorerTree';
@@ -31,7 +31,7 @@ import { ScrollbarVisibility } from 'vs/base/common/scrollable';
@Component({
selector: 'explorer-widget',
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/widgets/explorer/explorerWidget.component.html'))
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/dashboard/widgets/explorer/explorerWidget.component.html'))
})
export class ExplorerWidget extends DashboardWidget implements IDashboardWidget, OnInit {
private _input: InputBox;
@@ -75,9 +75,9 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
ngOnInit() {
this._inited = true;
let placeholderLabel = this._config.context === 'database' ? nls.localize('seachObjects', 'Search by name of type (a:, t:, v:, f:, or sp:)') : nls.localize('searchDatabases', 'Search databases');
const placeholderLabel = this._config.context === 'database' ? nls.localize('seachObjects', 'Search by name of type (a:, t:, v:, f:, or sp:)') : nls.localize('searchDatabases', 'Search databases');
let inputOptions: IInputOptions = {
const inputOptions: IInputOptions = {
placeholder: placeholderLabel,
ariaLabel: placeholderLabel
};
@@ -106,7 +106,7 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
this._register(toDisposableSubscription(this._bootstrap.metadataService.metadata.subscribe(
data => {
if (data) {
let objectData = ObjectMetadataWrapper.createFromObjectMetadata(data.objectMetadata);
const objectData = ObjectMetadataWrapper.createFromObjectMetadata(data.objectMetadata);
objectData.sort(ObjectMetadataWrapper.sort);
this._treeDataSource.data = objectData;
this._tree.setInput(new ExplorerModel());
@@ -117,13 +117,13 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
}
)));
} else {
let currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
const currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
this._register(toDisposableSubscription(this._bootstrap.metadataService.databaseNames.subscribe(
data => {
// Handle the case where there is no metadata service
data = data || [];
let profileData = data.map(d => {
let profile = new ConnectionProfile(this.capabilitiesService, currentProfile);
const profileData = data.map(d => {
const profile = new ConnectionProfile(this.capabilitiesService, currentProfile);
profile.databaseName = d;
return profile;
});

View File

@@ -6,7 +6,7 @@
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { registerDashboardWidget } from 'sql/platform/dashboard/common/widgetRegistry';
let explorerSchema: IJSONSchema = {
const explorerSchema: IJSONSchema = {
type: 'object',
};

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Action } from 'vs/base/common/actions';
import * as nls from 'vs/nls';

View File

@@ -2,15 +2,16 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import {
Component, Inject, forwardRef, AfterContentInit,
ComponentFactoryResolver, ViewChild, ChangeDetectorRef, Injector
} from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { DashboardWidget, IDashboardWidget, WIDGET_CONFIG, WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardWidget, IDashboardWidget, WIDGET_CONFIG, WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
import { InsightAction, InsightActionContext } from 'sql/workbench/common/actions';
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
import { IInsightsConfig, IInsightsView } from './interfaces';
@@ -85,9 +86,9 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
this._parseConfig().then(() => {
if (!this._checkStorage()) {
let promise = this._runQuery();
const promise = this._runQuery();
this.queryObv = Observable.fromPromise(promise);
let cancelablePromise = createCancelablePromise(() => {
const cancelablePromise = createCancelablePromise(() => {
return promise.then(
result => {
this._loading = false;
@@ -150,7 +151,7 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
}
get actions(): Array<Action> {
let actions: Array<Action> = [];
const actions: Array<Action> = [];
if (this.insightConfig.details && (this.insightConfig.details.query || this.insightConfig.details.queryFile)) {
actions.push(this.instantiationService.createInstance(InsightAction, InsightAction.ID, InsightAction.LABEL));
}
@@ -167,8 +168,8 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
private _storeResult(result: SimpleExecuteResult): SimpleExecuteResult {
if (this.insightConfig.cacheId) {
let currentTime = new Date();
let store: IStorageResult = {
const currentTime = new Date();
const store: IStorageResult = {
date: currentTime.toString(),
results: result
};
@@ -181,10 +182,10 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
private _checkStorage(): boolean {
if (this.insightConfig.cacheId) {
let storage = this.storageService.get(this._getStorageKey(), StorageScope.GLOBAL);
const storage = this.storageService.get(this._getStorageKey(), StorageScope.GLOBAL);
if (storage) {
let storedResult: IStorageResult = JSON.parse(storage);
let date = new Date(storedResult.date);
const storedResult: IStorageResult = JSON.parse(storage);
const date = new Date(storedResult.date);
this.lastUpdated = nls.localize('insights.lastUpdated', "Last Updated: {0} {1}", date.toLocaleTimeString(), date.toLocaleDateString());
this._loading = false;
if (this._init) {
@@ -235,10 +236,10 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
return;
}
let componentFactory = this._componentFactoryResolver.resolveComponentFactory<IInsightsView>(insightRegistry.getCtorFromId(this._typeKey));
const componentFactory = this._componentFactoryResolver.resolveComponentFactory<IInsightsView>(insightRegistry.getCtorFromId(this._typeKey));
let componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory, 0, this._injector);
let componentInstance = componentRef.instance;
const componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory, 0, this._injector);
const componentInstance = componentRef.instance;
// check if the setter is defined
if (componentInstance.setConfig) {
@@ -289,7 +290,7 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
// When the editor.accessibilitySupport setting is on, we will force the chart type to be table.
// so that the information is accessible to the user.
// count chart type is already a text based chart, we don't have to apply this rule for it.
let isAccessibilitySupportOn = this._configurationService.getValue('editor.accessibilitySupport') === 'on';
const isAccessibilitySupportOn = this._configurationService.getValue('editor.accessibilitySupport') === 'on';
if (isAccessibilitySupportOn && this._typeKey !== 'count') {
this._typeKey = 'table';
}
@@ -297,7 +298,7 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
if (types.isStringArray(this.insightConfig.query)) {
this.insightConfig.query = this.insightConfig.query.join(' ');
} else if (this.insightConfig.queryFile) {
let filePath = await resolveQueryFilePath(this.insightConfig.queryFile,
const filePath = await resolveQueryFilePath(this.insightConfig.queryFile,
this._workspaceContextService,
this._configurationResolverService);

Some files were not shown because too many files have changed in this diff Show More