mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Code Layering dashboard (#4883)
* move dashboard to workbench * revert xlf file changes * 💄 * 💄 * add back removed functions
This commit is contained in:
@@ -101,7 +101,7 @@ const vscodeResources = [
|
|||||||
'out-build/sql/parts/admin/**/*.html',
|
'out-build/sql/parts/admin/**/*.html',
|
||||||
'out-build/sql/parts/connection/connectionDialog/media/*.{gif,png,svg}',
|
'out-build/sql/parts/connection/connectionDialog/media/*.{gif,png,svg}',
|
||||||
'out-build/sql/parts/common/dblist/**/*.html',
|
'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/disasterRecovery/**/*.html',
|
||||||
'out-build/sql/parts/common/modal/media/**',
|
'out-build/sql/parts/common/modal/media/**',
|
||||||
'out-build/sql/parts/grid/load/lib/**',
|
'out-build/sql/parts/grid/load/lib/**',
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import { EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } fro
|
|||||||
import { IConfigurationRegistry, Extensions as ConfigExtensions } from 'vs/platform/configuration/common/configurationRegistry';
|
import { IConfigurationRegistry, Extensions as ConfigExtensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||||
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
|
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
import { Registry } from 'vs/platform/registry/common/platform';
|
||||||
import { DashboardEditor } from 'sql/parts/dashboard/dashboardEditor';
|
import { DashboardEditor } from 'sql/workbench/parts/dashboard/dashboardEditor';
|
||||||
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
|
import { DashboardInput } from 'sql/workbench/parts/dashboard/dashboardInput';
|
||||||
import { AddServerGroupAction, AddServerAction } from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
import { AddServerGroupAction, AddServerAction } from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
||||||
import { ClearRecentConnectionsAction, GetCurrentConnectionStringAction } from 'sql/parts/connection/common/connectionActions';
|
import { ClearRecentConnectionsAction, GetCurrentConnectionStringAction } from 'sql/parts/connection/common/connectionActions';
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/
|
|||||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
||||||
import { EditDataInput } from 'sql/parts/editData/common/editDataInput';
|
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 { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
||||||
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
|
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
|
||||||
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
|
||||||
|
|||||||
@@ -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>
|
|
||||||
@@ -6,8 +6,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { append, $ } from 'vs/base/browser/dom';
|
import { append, $ } from 'vs/base/browser/dom';
|
||||||
import { IInsightTypeContrib } from 'sql/parts/dashboard/widgets/insights/interfaces';
|
import { IInsightTypeContrib } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
|
||||||
import { IDashboardTabContrib } from 'sql/parts/dashboard/common/dashboardTab.contribution';
|
import { IDashboardTabContrib } from 'sql/workbench/parts/dashboard/common/dashboardTab.contribution';
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
|
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!../common/media/jobs';
|
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 * as nls from 'vs/nls';
|
||||||
import { Component, Inject, forwardRef, ChangeDetectorRef, ViewChild, Injectable } from '@angular/core';
|
import { Component, Inject, forwardRef, ChangeDetectorRef, ViewChild, Injectable } from '@angular/core';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeServic
|
|||||||
import * as colors from 'vs/platform/theme/common/colorRegistry';
|
import * as colors from 'vs/platform/theme/common/colorRegistry';
|
||||||
import { IColorTheme, IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
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 { ComponentWithIconBase } from 'sql/parts/modelComponents/componentWithIconBase';
|
||||||
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
||||||
import { StatusIndicator, CardProperties, ActionDescriptor } from 'sql/workbench/api/common/sqlExtHostTypes';
|
import { StatusIndicator, CardProperties, ActionDescriptor } from 'sql/workbench/api/common/sqlExtHostTypes';
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
||||||
import * as azdata from 'azdata';
|
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 { ContainerBase } from 'sql/parts/modelComponents/componentBase';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
import { IComponent, IComponentDescriptor, IModelStore } from 'sql/parts/modelComponents/interfaces';
|
import { IComponent, IComponentDescriptor, IModelStore } from 'sql/parts/modelComponents/interfaces';
|
||||||
import { FlexLayout, FlexItemLayout } from 'azdata';
|
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 { ContainerBase } from 'sql/parts/modelComponents/componentBase';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import {
|
|||||||
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
||||||
import { FormLayout, FormItemLayout } from 'azdata';
|
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 { ContainerBase } from 'sql/parts/modelComponents/componentBase';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/parts/modelComponents/interfaces';
|
||||||
import { GroupLayout, GroupItemLayout } from 'azdata';
|
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 { ContainerBase } from 'sql/parts/modelComponents/componentBase';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.component';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
ElementRef, OnInit, ChangeDetectorRef, ReflectiveInjector, Injector, ComponentRef
|
ElementRef, OnInit, ChangeDetectorRef, ReflectiveInjector, Injector, ComponentRef
|
||||||
} from '@angular/core';
|
} 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 { error } from 'sql/base/common/log';
|
||||||
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
||||||
import { IComponent, IComponentConfig, IComponentDescriptor, IModelStore, COMPONENT_CONFIG } from './interfaces';
|
import { IComponent, IComponentConfig, IComponentDescriptor, IModelStore, COMPONENT_CONFIG } from './interfaces';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import * as DOM from 'vs/base/browser/dom';
|
|||||||
import { ICellModel } from 'sql/parts/notebook/models/modelInterfaces';
|
import { ICellModel } from 'sql/parts/notebook/models/modelInterfaces';
|
||||||
import { CellContext, CellActionBase } from 'sql/parts/notebook/cellViews/codeActions';
|
import { CellContext, CellActionBase } from 'sql/parts/notebook/cellViews/codeActions';
|
||||||
import { NotebookModel } from 'sql/parts/notebook/models/notebookModel';
|
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 { CellTypes, CellType } from 'sql/parts/notebook/models/contracts';
|
||||||
import { CellModel } from 'sql/parts/notebook/models/cell';
|
import { CellModel } from 'sql/parts/notebook/models/cell';
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { CommonModule, APP_BASE_HREF } from '@angular/common';
|
|||||||
import { BrowserModule } from '@angular/platform-browser';
|
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 { IBootstrapParams, ISelector, providerIterator } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
|
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { IInsightOptions, IInsight } from './insights/interfaces';
|
|||||||
import { Graph } from './insights/graphInsight';
|
import { Graph } from './insights/graphInsight';
|
||||||
import { QueryEditor } from 'sql/parts/query/editor/queryEditor';
|
import { QueryEditor } from 'sql/parts/query/editor/queryEditor';
|
||||||
import { IClipboardService } from 'sql/platform/clipboard/common/clipboardService';
|
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 { resolveCurrentDirectory, getRootPath } from 'sql/platform/node/pathUtilities';
|
||||||
|
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
|||||||
|
|
||||||
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
||||||
import { InsightType, IInsightOptions } from './insights/interfaces';
|
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);
|
const insightRegistry = Registry.as<IInsightRegistry>(Extensions.InsightContribution);
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ import 'vs/css!./chartView';
|
|||||||
import { IPanelView } from 'sql/base/browser/ui/panel/panel';
|
import { IPanelView } from 'sql/base/browser/ui/panel/panel';
|
||||||
import { Insight } from './insights/insight';
|
import { Insight } from './insights/insight';
|
||||||
import QueryRunner from 'sql/platform/query/common/queryRunner';
|
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 { ChartOptions, IChartOption, ControlType } from './chartOptions';
|
||||||
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
||||||
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox';
|
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox';
|
||||||
import { IInsightOptions } from './insights/interfaces';
|
import { IInsightOptions } from './insights/interfaces';
|
||||||
import { CopyAction, SaveImageAction, CreateInsightAction, IChartActionContext } from './actions';
|
import { CopyAction, SaveImageAction, CreateInsightAction, IChartActionContext } from './actions';
|
||||||
import { Taskbar } from 'sql/base/browser/ui/taskbar/taskbar';
|
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 { Registry } from 'vs/platform/registry/common/platform';
|
||||||
import * as DOM from 'vs/base/browser/dom';
|
import * as DOM from 'vs/base/browser/dom';
|
||||||
import { SelectBox } from 'vs/base/browser/ui/selectBox/selectBox';
|
import { SelectBox } from 'vs/base/browser/ui/selectBox/selectBox';
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
import 'vs/css!./countInsight';
|
import 'vs/css!./countInsight';
|
||||||
|
|
||||||
import { IInsight, InsightType } from './interfaces';
|
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';
|
import { $, clearNode } from 'vs/base/browser/dom';
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ import * as colors from 'vs/platform/theme/common/colorRegistry';
|
|||||||
import { editorLineNumbers } from 'vs/editor/common/view/editorColorRegistry';
|
import { editorLineNumbers } from 'vs/editor/common/view/editorColorRegistry';
|
||||||
import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService';
|
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 { 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];
|
const noneLineGraphs = [ChartType.Doughnut, ChartType.Pie];
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { IInsight, IInsightOptions, InsightType } from './interfaces';
|
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 { $ } from 'vs/base/browser/dom';
|
||||||
import { mixin } from 'vs/base/common/objects';
|
import { mixin } from 'vs/base/common/objects';
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { Graph } from './graphInsight';
|
import { Graph } from './graphInsight';
|
||||||
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
|
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
|
||||||
import { DataDirection, ChartType } from 'sql/parts/dashboard/widgets/insights/views/charts/interfaces';
|
import { DataDirection, ChartType } from 'sql/workbench/parts/dashboard/widgets/insights/views/charts/interfaces';
|
||||||
import { ImageInsight } from './imageInsight';
|
import { ImageInsight } from './imageInsight';
|
||||||
import { TableInsight } from './tableInsight';
|
import { TableInsight } from './tableInsight';
|
||||||
import { IInsightOptions, IInsight, InsightType, IInsightCtor } from './interfaces';
|
import { IInsightOptions, IInsight, InsightType, IInsightCtor } from './interfaces';
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
import { Dimension } from 'vs/base/browser/dom';
|
import { Dimension } from 'vs/base/browser/dom';
|
||||||
|
|
||||||
import { IInsightData } from 'sql/parts/dashboard/widgets/insights/interfaces';
|
import { IInsightData } from 'sql/workbench/parts/dashboard/widgets/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';
|
||||||
|
|
||||||
export interface IInsightOptions {
|
export interface IInsightOptions {
|
||||||
type: InsightType | ChartType;
|
type: InsightType | ChartType;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { IInsight, InsightType } from './interfaces';
|
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 { TableDataView } from 'sql/base/browser/ui/table/tableDataView';
|
||||||
import { Table } from 'sql/base/browser/ui/table/table';
|
import { Table } from 'sql/base/browser/ui/table/table';
|
||||||
import { attachTableStyler } from 'sql/platform/theme/common/styler';
|
import { attachTableStyler } from 'sql/platform/theme/common/styler';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { WizardNavigation } from 'sql/platform/dialog/wizardNavigation.component
|
|||||||
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry';
|
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry';
|
||||||
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.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 { IBootstrapParams, ISelector, providerIterator } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
|
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilit
|
|||||||
import { ICredentialsService } from 'sql/platform/credentials/common/credentialsService';
|
import { ICredentialsService } from 'sql/platform/credentials/common/credentialsService';
|
||||||
import * as ConnectionContracts from 'sql/parts/connection/common/connection';
|
import * as ConnectionContracts from 'sql/parts/connection/common/connection';
|
||||||
import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager';
|
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 { ConnectionGlobalStatus } from 'sql/parts/connection/common/connectionGlobalStatus';
|
||||||
import { ConnectionStatusbarItem } from 'sql/parts/connection/common/connectionStatus';
|
import { ConnectionStatusbarItem } from 'sql/parts/connection/common/connectionStatus';
|
||||||
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
|
|||||||
import { Extensions as ConfigurationExtension } from 'vs/platform/configuration/common/configurationRegistry';
|
import { Extensions as ConfigurationExtension } from 'vs/platform/configuration/common/configurationRegistry';
|
||||||
import { deepClone } from 'vs/base/common/objects';
|
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 = {
|
export const Extensions = {
|
||||||
dashboardContainerContributions: 'dashboard.contributions.container'
|
dashboardContainerContributions: 'dashboard.contributions.container'
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
|
|||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||||
|
|
||||||
import { ProviderProperties } from 'sql/parts/dashboard/widgets/properties/propertiesWidget.component';
|
import { ProviderProperties } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component';
|
||||||
import { DATABASE_DASHBOARD_TABS } from 'sql/parts/dashboard/pages/databaseDashboardPage.contribution';
|
import { DATABASE_DASHBOARD_TABS } from 'sql/workbench/parts/dashboard/pages/databaseDashboardPage.contribution';
|
||||||
import { SERVER_DASHBOARD_TABS, SERVER_DASHBOARD_PROPERTIES } from 'sql/parts/dashboard/pages/serverDashboardPage.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/parts/dashboard/pages/dashboardPageContribution';
|
import { DASHBOARD_CONFIG_ID, DASHBOARD_TABS_KEY_PROPERTY } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution';
|
||||||
|
|
||||||
export const Extensions = {
|
export const Extensions = {
|
||||||
DashboardContributions: 'dashboard.contributions'
|
DashboardContributions: 'dashboard.contributions'
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
import { Type } from '@angular/core';
|
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 * as platform from 'vs/platform/registry/common/platform';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 * as platform from 'vs/platform/registry/common/platform';
|
||||||
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { WizardNavigation } from 'sql/platform/dialog/wizardNavigation.component
|
|||||||
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry';
|
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry';
|
||||||
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.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 { IBootstrapParams, ISelector, providerIterator } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
|
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { IConnectionManagementService } from 'sql/platform/connection/common/con
|
|||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
||||||
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
|
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 { IScriptingService } from 'sql/platform/scripting/common/scriptingService';
|
||||||
import { IRestoreDialogController } from 'sql/platform/restore/common/restoreService';
|
import { IRestoreDialogController } from 'sql/platform/restore/common/restoreService';
|
||||||
import { IAngularEventingService, AngularEventType } from 'sql/platform/angularEventing/common/angularEventingService';
|
import { IAngularEventingService, AngularEventType } from 'sql/platform/angularEventing/common/angularEventingService';
|
||||||
|
|||||||
@@ -17,12 +17,12 @@ import { IScriptingService } from 'sql/platform/scripting/common/scriptingServic
|
|||||||
import { EditDataInput } from 'sql/parts/editData/common/editDataInput';
|
import { EditDataInput } from 'sql/parts/editData/common/editDataInput';
|
||||||
import { IAdminService } from 'sql/workbench/services/admin/common/adminService';
|
import { IAdminService } from 'sql/workbench/services/admin/common/adminService';
|
||||||
import { IRestoreDialogController } from 'sql/platform/restore/common/restoreService';
|
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 { IInsightsDialogService } from 'sql/workbench/services/insights/common/insightsDialogService';
|
||||||
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
|
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
|
||||||
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
|
||||||
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
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 { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
|
||||||
import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService';
|
import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService';
|
||||||
import { IBackupUiService } from 'sql/workbench/services/backup/common/backupUiService';
|
import { IBackupUiService } from 'sql/workbench/services/backup/common/backupUiService';
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { Action, IAction } from 'vs/base/common/actions';
|
import { Action, IAction } from 'vs/base/common/actions';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
||||||
@@ -182,16 +183,16 @@ export class AddFeatureTabAction extends Action {
|
|||||||
private handleDashboardEvent(event: IAngularEvent): void {
|
private handleDashboardEvent(event: IAngularEvent): void {
|
||||||
switch (event.event) {
|
switch (event.event) {
|
||||||
case AngularEventType.NEW_TABS:
|
case AngularEventType.NEW_TABS:
|
||||||
let openedTabs = <IDashboardTab[]>event.payload.dashboardTabs;
|
const openedTabs = <IDashboardTab[]>event.payload.dashboardTabs;
|
||||||
openedTabs.forEach(tab => {
|
openedTabs.forEach(tab => {
|
||||||
let existedTab = this._openedTabs.find(i => i === tab);
|
const existedTab = this._openedTabs.find(i => i === tab);
|
||||||
if (!existedTab) {
|
if (!existedTab) {
|
||||||
this._openedTabs.push(tab);
|
this._openedTabs.push(tab);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case AngularEventType.CLOSE_TAB:
|
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);
|
this._openedTabs.splice(index, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import * as types from 'vs/base/common/types';
|
import * as types from 'vs/base/common/types';
|
||||||
import { generateUuid } from 'vs/base/common/uuid';
|
import { generateUuid } from 'vs/base/common/uuid';
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
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 { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
|
|
||||||
import { error } from 'sql/base/common/log';
|
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 { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
||||||
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
|
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
|
||||||
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
|
||||||
import { WIDGETS_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
import { WIDGETS_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
||||||
import { GRID_CONTAINER } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
|
import { GRID_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
|
||||||
import { WEBVIEW_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWebviewContainer.contribution';
|
import { WEBVIEW_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWebviewContainer.contribution';
|
||||||
import { MODELVIEW_CONTAINER } from 'sql/parts/dashboard/containers/dashboardModelViewContainer.contribution';
|
import { MODELVIEW_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardModelViewContainer.contribution';
|
||||||
import { CONTROLHOST_CONTAINER } from 'sql/parts/dashboard/containers/dashboardControlHostContainer.contribution';
|
import { CONTROLHOST_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardControlHostContainer.contribution';
|
||||||
import { NAV_SECTION } from 'sql/parts/dashboard/containers/dashboardNavSection.contribution';
|
import { NAV_SECTION } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.contribution';
|
||||||
import { IDashboardContainerRegistry, Extensions as DashboardContainerExtensions } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
import { IDashboardContainerRegistry, Extensions as DashboardContainerExtensions } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
||||||
import { SingleConnectionManagementService } from 'sql/services/common/commonServiceInterface.service';
|
import { SingleConnectionManagementService } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import * as Constants from 'sql/platform/connection/common/constants';
|
import * as Constants from 'sql/platform/connection/common/constants';
|
||||||
@@ -33,31 +34,6 @@ const containerTypes = [
|
|||||||
NAV_SECTION
|
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
|
* Validates configs to make sure nothing will error out and returns the modified widgets
|
||||||
* @param config Array of widgets to validate
|
* @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> {
|
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) => {
|
return configurations.map((config) => {
|
||||||
if (config.widget && Object.keys(config.widget).length === 1) {
|
if (config.widget && Object.keys(config.widget).length === 1) {
|
||||||
let key = Object.keys(config.widget)[0];
|
const key = Object.keys(config.widget)[0];
|
||||||
let insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
|
const insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
|
||||||
if (insightConfig !== undefined) {
|
if (insightConfig !== undefined) {
|
||||||
// Setup the default properties for this extension if needed
|
// Setup the default properties for this extension if needed
|
||||||
if (!config.when && insightConfig.when) {
|
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
|
* @param widgets Array of widgets to add provider onto
|
||||||
*/
|
*/
|
||||||
export function addProvider<T extends { connectionManagementService: SingleConnectionManagementService }>(config: WidgetConfig[], collection: T): Array<WidgetConfig> {
|
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) => {
|
return config.map((item) => {
|
||||||
if (item.provider === undefined) {
|
if (item.provider === undefined) {
|
||||||
item.provider = provider;
|
item.provider = provider;
|
||||||
@@ -135,9 +111,9 @@ export function addProvider<T extends { connectionManagementService: SingleConne
|
|||||||
* @param widgets Array of widgets to add edition onto
|
* @param widgets Array of widgets to add edition onto
|
||||||
*/
|
*/
|
||||||
export function addEdition<T extends { connectionManagementService: SingleConnectionManagementService }>(config: WidgetConfig[], collection: DashboardServiceInterface): Array<WidgetConfig> {
|
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) {
|
if (connectionInfo.serverInfo) {
|
||||||
let edition = connectionInfo.serverInfo.engineEditionId;
|
const edition = connectionInfo.serverInfo.engineEditionId;
|
||||||
return config.map((item) => {
|
return config.map((item) => {
|
||||||
if (item.edition === undefined) {
|
if (item.edition === undefined) {
|
||||||
item.edition = edition;
|
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 {
|
function hasCompatibleProvider(provider: string | string[], contextKeyService: IContextKeyService): boolean {
|
||||||
let isCompatible = true;
|
let isCompatible = true;
|
||||||
let connectionProvider = contextKeyService.getContextKeyValue<string>(Constants.connectionProviderContextKey);
|
const connectionProvider = contextKeyService.getContextKeyValue<string>(Constants.connectionProviderContextKey);
|
||||||
if (connectionProvider) {
|
if (connectionProvider) {
|
||||||
let providers = (provider instanceof Array) ? provider : [provider];
|
const providers = (provider instanceof Array) ? provider : [provider];
|
||||||
let matchingProvider = providers.find((p) => p === connectionProvider || p === Constants.anyProviderName);
|
const matchingProvider = providers.find((p) => p === connectionProvider || p === Constants.anyProviderName);
|
||||||
isCompatible = (matchingProvider !== undefined);
|
isCompatible = (matchingProvider !== undefined);
|
||||||
} // Else there's no connection context so skip the check
|
} // Else there's no connection context so skip the check
|
||||||
return isCompatible;
|
return isCompatible;
|
||||||
@@ -198,17 +174,17 @@ function hasCompatibleProvider(provider: string | string[], contextKeyService: I
|
|||||||
* @param container dashboard container
|
* @param container dashboard container
|
||||||
*/
|
*/
|
||||||
export function getDashboardContainer(container: object): { result: boolean, message: string, container: object } {
|
export function getDashboardContainer(container: object): { result: boolean, message: string, container: object } {
|
||||||
let key = Object.keys(container)[0];
|
const key = Object.keys(container)[0];
|
||||||
let containerTypeFound = containerTypes.find(c => (c === key));
|
const containerTypeFound = containerTypes.find(c => (c === key));
|
||||||
if (!containerTypeFound) {
|
if (!containerTypeFound) {
|
||||||
let dashboardContainer = dashboardcontainerRegistry.getRegisteredContainer(key);
|
const dashboardContainer = dashboardcontainerRegistry.getRegisteredContainer(key);
|
||||||
if (!dashboardContainer) {
|
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);
|
error(errorMessage);
|
||||||
return { result: false, message: errorMessage, container: null };
|
return { result: false, message: errorMessage, container: undefined };
|
||||||
} else {
|
} else {
|
||||||
container = dashboardContainer.container;
|
container = dashboardContainer.container;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { result: true, message: null, container: container };
|
return { result: true, message: undefined, container: container };
|
||||||
}
|
}
|
||||||
@@ -4,10 +4,13 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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">
|
<panel class="dashboard-panel" (onTabChange)="handleTabChange($event)" (onTabClose)="handleTabClose($event)"
|
||||||
<tab [visibilityType]="'visibility'" *ngFor="let tab of tabs" [title]="tab.title" class="fullsize" [identifier]="tab.id" [canClose]="tab.canClose" [actions]="tab.actions">
|
[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>
|
<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>
|
</dashboard-home-container>
|
||||||
<ng-template #not_home>
|
<ng-template #not_home>
|
||||||
<dashboard-webview-container *ngIf="getContentType(tab) === 'webview-container'" [tab]="tab">
|
<dashboard-webview-container *ngIf="getContentType(tab) === 'webview-container'" [tab]="tab">
|
||||||
@@ -3,24 +3,24 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!sql/parts/dashboard/common/dashboardPage';
|
import 'vs/css!sql/workbench/parts/dashboard/common/dashboardPage';
|
||||||
import 'sql/parts/dashboard/common/dashboardPanelStyles';
|
import 'sql/workbench/parts/dashboard/common/dashboardPanelStyles';
|
||||||
|
|
||||||
import { Component, Inject, forwardRef, ViewChild, ElementRef, ViewChildren, QueryList, ChangeDetectorRef } from '@angular/core';
|
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 { CommonServiceInterface, SingleConnectionManagementService } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { WidgetConfig, TabConfig, TabSettingConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { WidgetConfig, TabConfig, TabSettingConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { IPropertiesConfig } from 'sql/parts/dashboard/pages/serverDashboardPage.contribution';
|
import { IPropertiesConfig } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.contribution';
|
||||||
import { PanelComponent } from 'sql/base/browser/ui/panel/panel.component';
|
import { PanelComponent } from 'sql/base/browser/ui/panel/panel.component';
|
||||||
import { IDashboardRegistry, Extensions as DashboardExtensions, IDashboardTab } from 'sql/platform/dashboard/common/dashboardRegistry';
|
import { IDashboardRegistry, Extensions as DashboardExtensions, IDashboardTab } from 'sql/platform/dashboard/common/dashboardRegistry';
|
||||||
import { PinUnpinTabAction, AddFeatureTabAction } from './actions';
|
import { PinUnpinTabAction, AddFeatureTabAction } from './actions';
|
||||||
import { TabComponent, TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabComponent, TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
import { AngularEventType, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
import { AngularEventType, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
||||||
import { DashboardTab, IConfigModifierCollection } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab, IConfigModifierCollection } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import * as dashboardHelper from 'sql/parts/dashboard/common/dashboardHelper';
|
import * as dashboardHelper from 'sql/workbench/parts/dashboard/common/dashboardHelper';
|
||||||
import { WIDGETS_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
import { WIDGETS_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
||||||
import { GRID_CONTAINER } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
|
import { GRID_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
|
||||||
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
||||||
import * as Constants from 'sql/platform/connection/common/constants';
|
import * as Constants from 'sql/platform/connection/common/constants';
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ const dashboardRegistry = Registry.as<IDashboardRegistry>(DashboardExtensions.Da
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dashboard-page',
|
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 {
|
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);
|
allTabs = this.setAndRemoveHomeTab(allTabs, homeWidgets);
|
||||||
|
|
||||||
// If preview features are disabled only show the home tab
|
// 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) {
|
if (!extensionTabsEnabled) {
|
||||||
allTabs = [];
|
allTabs = [];
|
||||||
}
|
}
|
||||||
@@ -148,18 +148,18 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
// Load tab setting configs
|
// Load tab setting configs
|
||||||
this._tabSettingConfigs = this.dashboardService.getSettings<Array<TabSettingConfig>>([this.context, 'tabs'].join('.'));
|
this._tabSettingConfigs = this.dashboardService.getSettings<Array<TabSettingConfig>>([this.context, 'tabs'].join('.'));
|
||||||
|
|
||||||
let pinnedDashboardTabs: IDashboardTab[] = [];
|
const pinnedDashboardTabs: IDashboardTab[] = [];
|
||||||
let alwaysShowTabs = allTabs.filter(tab => tab.alwaysShow);
|
const alwaysShowTabs = allTabs.filter(tab => tab.alwaysShow);
|
||||||
|
|
||||||
this._tabSettingConfigs.forEach(config => {
|
this._tabSettingConfigs.forEach(config => {
|
||||||
if (config.tabId && types.isBoolean(config.isPinned)) {
|
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 (tab) {
|
||||||
if (config.isPinned) {
|
if (config.isPinned) {
|
||||||
pinnedDashboardTabs.push(tab);
|
pinnedDashboardTabs.push(tab);
|
||||||
} else {
|
} else {
|
||||||
// overwrite always show if specify in user settings
|
// 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);
|
alwaysShowTabs.splice(index, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,9 +170,9 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
this.loadNewTabs(alwaysShowTabs);
|
this.loadNewTabs(alwaysShowTabs);
|
||||||
|
|
||||||
// Set panel actions
|
// Set panel actions
|
||||||
let openedTabs = [...pinnedDashboardTabs, ...alwaysShowTabs];
|
const openedTabs = [...pinnedDashboardTabs, ...alwaysShowTabs];
|
||||||
if (extensionTabsEnabled) {
|
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._tabsDispose.push(addNewTabAction);
|
||||||
this.panelActions = [addNewTabAction];
|
this.panelActions = [addNewTabAction];
|
||||||
} else {
|
} else {
|
||||||
@@ -181,7 +181,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
|
|
||||||
this._tabsDispose.push(this.dashboardService.onPinUnpinTab(e => {
|
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) {
|
if (tabConfig) {
|
||||||
tabConfig.isPinned = e.isPinned;
|
tabConfig.isPinned = e.isPinned;
|
||||||
} else {
|
} else {
|
||||||
@@ -196,7 +196,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
private setAndRemoveHomeTab(allTabs: IDashboardTab[], homeWidgets: WidgetConfig[]): IDashboardTab[] {
|
private setAndRemoveHomeTab(allTabs: IDashboardTab[], homeWidgets: WidgetConfig[]): IDashboardTab[] {
|
||||||
let homeTabConfig: TabConfig = {
|
const homeTabConfig: TabConfig = {
|
||||||
id: 'homeTab',
|
id: 'homeTab',
|
||||||
provider: Constants.anyProviderName,
|
provider: Constants.anyProviderName,
|
||||||
publisher: undefined,
|
publisher: undefined,
|
||||||
@@ -209,11 +209,11 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
actions: []
|
actions: []
|
||||||
};
|
};
|
||||||
|
|
||||||
let homeTabIndex = allTabs.findIndex((tab) => tab.isHomeTab === true);
|
const homeTabIndex = allTabs.findIndex((tab) => tab.isHomeTab === true);
|
||||||
if (homeTabIndex !== undefined && homeTabIndex > -1) {
|
if (homeTabIndex !== undefined && homeTabIndex > -1) {
|
||||||
// Have a tab: get its information and copy over to the home tab definition
|
// Have a tab: get its information and copy over to the home tab definition
|
||||||
let homeTab = allTabs.splice(homeTabIndex, 1)[0];
|
const homeTab = allTabs.splice(homeTabIndex, 1)[0];
|
||||||
let tabConfig = this.initTabComponents(homeTab);
|
const tabConfig = this.initTabComponents(homeTab);
|
||||||
homeTabConfig.id = tabConfig.id;
|
homeTabConfig.id = tabConfig.id;
|
||||||
homeTabConfig.container = tabConfig.container;
|
homeTabConfig.container = tabConfig.container;
|
||||||
}
|
}
|
||||||
@@ -222,17 +222,17 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
private rewriteConfig(): void {
|
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);
|
this.dashboardService.writeSettings([this.context, 'tabs'].join('.'), writeableConfig, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadNewTabs(dashboardTabs: IDashboardTab[], openLastTab: boolean = false) {
|
private loadNewTabs(dashboardTabs: IDashboardTab[], openLastTab: boolean = false) {
|
||||||
if (dashboardTabs && dashboardTabs.length > 0) {
|
if (dashboardTabs && dashboardTabs.length > 0) {
|
||||||
let selectedTabs = dashboardTabs.map(v => this.initTabComponents(v)).map(v => {
|
const selectedTabs = dashboardTabs.map(v => this.initTabComponents(v)).map(v => {
|
||||||
let actions = [];
|
const actions = [];
|
||||||
let tabSettingConfig = this._tabSettingConfigs.find(i => i.tabId === v.id);
|
const tabSettingConfig = this._tabSettingConfigs.find(i => i.tabId === v.id);
|
||||||
let isPinned = false;
|
let isPinned = false;
|
||||||
if (tabSettingConfig) {
|
if (tabSettingConfig) {
|
||||||
isPinned = tabSettingConfig.isPinned;
|
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));
|
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.context = this.context;
|
||||||
config.editable = false;
|
config.editable = false;
|
||||||
config.canClose = true;
|
config.canClose = true;
|
||||||
@@ -253,7 +253,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
if (openLastTab) {
|
if (openLastTab) {
|
||||||
// put this immediately on the stack so that is ran *after* the tab is rendered
|
// put this immediately on the stack so that is ran *after* the tab is rendered
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
let selectedLastTab = selectedTabs.pop();
|
const selectedLastTab = selectedTabs.pop();
|
||||||
this._panel.selectTab(selectedLastTab.id);
|
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; } {
|
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) {
|
if (!containerResult.result) {
|
||||||
return { id: value.id, title: value.title, container: { 'error-container': undefined }, alwaysShow: value.alwaysShow };
|
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) {
|
if (key === WIDGETS_CONTAINER || key === GRID_CONTAINER) {
|
||||||
let configs = <WidgetConfig[]>Object.values(containerResult.container)[0];
|
let configs = <WidgetConfig[]>Object.values(containerResult.container)[0];
|
||||||
this._configModifiers.forEach(cb => {
|
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 };
|
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] : '';
|
return tab.container ? Object.keys(tab.container)[0] : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
private addNewTab(tab: TabConfig): void {
|
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) {
|
if (!existedTab) {
|
||||||
this.tabs.push(tab);
|
this.tabs.push(tab);
|
||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
@@ -297,7 +297,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getProperties(): Array<WidgetConfig> {
|
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';
|
this._propertiesConfigLocation = 'default';
|
||||||
if (types.isUndefinedOrNull(properties)) {
|
if (types.isUndefinedOrNull(properties)) {
|
||||||
return [this.propertiesWidget];
|
return [this.propertiesWidget];
|
||||||
@@ -307,7 +307,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
return [this.propertiesWidget];
|
return [this.propertiesWidget];
|
||||||
} else if (types.isArray(properties)) {
|
} else if (types.isArray(properties)) {
|
||||||
return properties.map((item) => {
|
return properties.map((item) => {
|
||||||
let retVal = Object.assign({}, this.propertiesWidget);
|
const retVal = Object.assign({}, this.propertiesWidget);
|
||||||
retVal.edition = item.edition;
|
retVal.edition = item.edition;
|
||||||
retVal.provider = item.provider;
|
retVal.provider = item.provider;
|
||||||
retVal.widget = { 'properties-widget': { properties: item.properties } };
|
retVal.widget = { 'properties-widget': { properties: item.properties } };
|
||||||
@@ -340,13 +340,13 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig
|
|||||||
|
|
||||||
public handleTabChange(tab: TabComponent): void {
|
public handleTabChange(tab: TabComponent): void {
|
||||||
this._cd.detectChanges();
|
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._editEnabled.fire(localtab.editable);
|
||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
public handleTabClose(tab: TabComponent): void {
|
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.tabs.splice(index, 1);
|
||||||
this.angularEventingService.sendAngularEvent(this.dashboardService.getUnderlyingUri(), AngularEventType.CLOSE_TAB, { id: tab.identifier });
|
this.angularEventingService.sendAngularEvent(this.dashboardService.getUnderlyingUri(), AngularEventType.CLOSE_TAB, { id: tab.identifier });
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./dashboardPanel';
|
import 'vs/css!./dashboardPanel';
|
||||||
|
|
||||||
import { registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService';
|
import { registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService';
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import { localize } from 'vs/nls';
|
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 * as Constants from 'sql/platform/connection/common/constants';
|
||||||
import { registerTab } from 'sql/platform/dashboard/common/dashboardRegistry';
|
import { registerTab } from 'sql/platform/dashboard/common/dashboardRegistry';
|
||||||
import { generateContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
import { generateContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
||||||
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/parts/dashboard/containers/dashboardNavSection.contribution';
|
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.contribution';
|
||||||
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
||||||
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
|
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
|
||||||
|
|
||||||
export interface IDashboardTabContrib {
|
export interface IDashboardTabContrib {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -85,7 +86,7 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardTabContrib | IDashboardTabCo
|
|||||||
if (!types.isBoolean(alwaysShow)) {
|
if (!types.isBoolean(alwaysShow)) {
|
||||||
alwaysShow = true;
|
alwaysShow = true;
|
||||||
}
|
}
|
||||||
let publisher = extension.description.publisher;
|
const publisher = extension.description.publisher;
|
||||||
if (!title) {
|
if (!title) {
|
||||||
extension.collector.error(localize('dashboardTab.contribution.noTitleError', 'No title specified for extension.'));
|
extension.collector.error(localize('dashboardTab.contribution.noTitleError', 'No title specified for extension.'));
|
||||||
return;
|
return;
|
||||||
@@ -113,8 +114,8 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardTabContrib | IDashboardTabCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
let result = true;
|
let result = true;
|
||||||
let containerkey = Object.keys(container)[0];
|
const containerkey = Object.keys(container)[0];
|
||||||
let containerValue = Object.values(container)[0];
|
const containerValue = Object.values(container)[0];
|
||||||
|
|
||||||
switch (containerkey) {
|
switch (containerkey) {
|
||||||
case WIDGETS_CONTAINER:
|
case WIDGETS_CONTAINER:
|
||||||
@@ -133,10 +134,10 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardTabContrib | IDashboardTabCo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let extension of extensions) {
|
for (const extension of extensions) {
|
||||||
const { value } = extension;
|
const { value } = extension;
|
||||||
if (Array.isArray<IDashboardTabContrib>(value)) {
|
if (Array.isArray<IDashboardTabContrib>(value)) {
|
||||||
for (let command of value) {
|
for (const command of value) {
|
||||||
handleCommand(command, extension);
|
handleCommand(command, extension);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { InjectionToken, OnDestroy } from '@angular/core';
|
import { InjectionToken, OnDestroy } from '@angular/core';
|
||||||
import { NgGridItemConfig } from 'angular2-grid';
|
import { NgGridItemConfig } from 'angular2-grid';
|
||||||
import { Action } from 'vs/base/common/actions';
|
import { Action } from 'vs/base/common/actions';
|
||||||
@@ -2,18 +2,16 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import { localize } from 'vs/nls';
|
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 { registerContainer, generateContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
||||||
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/parts/dashboard/containers/dashboardNavSection.contribution';
|
import { NAV_SECTION, validateNavSectionContributionAndRegisterIcon } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.contribution';
|
||||||
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
||||||
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
|
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
|
||||||
import { WEBVIEW_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWebviewContainer.contribution';
|
import { WEBVIEW_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWebviewContainer.contribution';
|
||||||
|
|
||||||
const containerTypes = [
|
const containerTypes = [
|
||||||
WIDGETS_CONTAINER,
|
WIDGETS_CONTAINER,
|
||||||
@@ -58,7 +56,7 @@ const containerContributionSchema: IJSONSchema = {
|
|||||||
ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboardContainerContrib[]>({ extensionPoint: 'dashboard.containers', jsonSchema: containerContributionSchema }).setHandler(extensions => {
|
ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboardContainerContrib[]>({ extensionPoint: 'dashboard.containers', jsonSchema: containerContributionSchema }).setHandler(extensions => {
|
||||||
|
|
||||||
function handleCommand(dashboardContainer: IDashboardContainerContrib, extension: IExtensionPointUser<any>) {
|
function handleCommand(dashboardContainer: IDashboardContainerContrib, extension: IExtensionPointUser<any>) {
|
||||||
let { id, container } = dashboardContainer;
|
const { id, container } = dashboardContainer;
|
||||||
if (!id) {
|
if (!id) {
|
||||||
extension.collector.error(localize('dashboardContainer.contribution.noIdError', 'No id in dashboard container specified for extension.'));
|
extension.collector.error(localize('dashboardContainer.contribution.noIdError', 'No id in dashboard container specified for extension.'));
|
||||||
return;
|
return;
|
||||||
@@ -74,10 +72,10 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboar
|
|||||||
}
|
}
|
||||||
|
|
||||||
let result = true;
|
let result = true;
|
||||||
let containerkey = Object.keys(container)[0];
|
const containerkey = Object.keys(container)[0];
|
||||||
let containerValue = Object.values(container)[0];
|
const containerValue = Object.values(container)[0];
|
||||||
|
|
||||||
let containerTypeFound = containerTypes.find(c => (c === containerkey));
|
const containerTypeFound = containerTypes.find(c => (c === containerkey));
|
||||||
if (!containerTypeFound) {
|
if (!containerTypeFound) {
|
||||||
extension.collector.error(localize('dashboardTab.contribution.unKnownContainerType', 'Unknown container type defines in dashboard container for extension.'));
|
extension.collector.error(localize('dashboardTab.contribution.unKnownContainerType', 'Unknown container type defines in dashboard container for extension.'));
|
||||||
return;
|
return;
|
||||||
@@ -100,10 +98,10 @@ ExtensionsRegistry.registerExtensionPoint<IDashboardContainerContrib | IDashboar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let extension of extensions) {
|
for (const extension of extensions) {
|
||||||
const { value } = extension;
|
const { value } = extension;
|
||||||
if (Array.isArray<IDashboardContainerContrib>(value)) {
|
if (Array.isArray<IDashboardContainerContrib>(value)) {
|
||||||
for (let command of value) {
|
for (const command of value) {
|
||||||
handleCommand(command, extension);
|
handleCommand(command, extension);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -2,15 +2,16 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./dashboardControlHostContainer';
|
import 'vs/css!./dashboardControlHostContainer';
|
||||||
|
|
||||||
import { Component, forwardRef, Input, AfterContentInit, ViewChild, OnChanges } from '@angular/core';
|
import { Component, forwardRef, Input, AfterContentInit, ViewChild, OnChanges } from '@angular/core';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
|
|
||||||
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { ControlHostContent } from 'sql/parts/dashboard/contents/controlHostContent.component';
|
import { ControlHostContent } from 'sql/workbench/parts/dashboard/contents/controlHostContent.component';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -38,7 +39,7 @@ export class DashboardControlHostContainer extends DashboardTab implements After
|
|||||||
this._onResize.fire();
|
this._onResize.fire();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let container = <any>this.tab.container;
|
const container = <any>this.tab.container;
|
||||||
if (container['controlhost-container'] && container['controlhost-container'].type) {
|
if (container['controlhost-container'] && container['controlhost-container'].type) {
|
||||||
this._hostContent.setControlType(container['controlhost-container'].type);
|
this._hostContent.setControlType(container['controlhost-container'].type);
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|
||||||
@@ -7,8 +7,8 @@ import 'vs/css!./dashboardErrorContainer';
|
|||||||
|
|
||||||
import { Component, Inject, Input, forwardRef, ViewChild, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';
|
import { Component, Inject, Input, forwardRef, ViewChild, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';
|
||||||
|
|
||||||
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
@@ -39,7 +39,7 @@ export class DashboardErrorContainer extends DashboardTab implements AfterViewIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngAfterViewInit() {
|
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);
|
errorMessage.innerText = nls.localize('dashboardNavSection_loadTabError', 'The "{0}" section has invalid content. Please contact extension owner.', this.tab.title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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>
|
||||||
@@ -8,10 +8,10 @@ import 'vs/css!./dashboardGridContainer';
|
|||||||
import { Component, Inject, Input, forwardRef, ElementRef, ViewChildren, QueryList, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
import { Component, Inject, Input, forwardRef, ElementRef, ViewChildren, QueryList, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
||||||
|
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { TabConfig, WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { TabConfig, WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
|
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
|
||||||
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { WebviewContent } from 'sql/parts/dashboard/contents/webviewContent.component';
|
import { WebviewContent } from 'sql/workbench/parts/dashboard/contents/webviewContent.component';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
@@ -35,7 +35,7 @@ export interface GridWebviewConfig extends GridCellConfig {
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dashboard-grid-container',
|
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) }]
|
providers: [{ provide: TabChild, useExisting: forwardRef(() => DashboardGridContainer) }]
|
||||||
})
|
})
|
||||||
export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
||||||
@@ -52,14 +52,14 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
|||||||
protected cols: number[];
|
protected cols: number[];
|
||||||
|
|
||||||
protected getContent(row: number, col: number): GridCellConfig {
|
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;
|
return widget ? widget[0] : undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getWidgetContent(row: number, col: number): GridWidgetConfig {
|
protected getWidgetContent(row: number, col: number): GridWidgetConfig {
|
||||||
let content = this.getContent(row, col);
|
const content = this.getContent(row, col);
|
||||||
if (content) {
|
if (content) {
|
||||||
let widgetConfig = <GridWidgetConfig>content;
|
const widgetConfig = <GridWidgetConfig>content;
|
||||||
if (widgetConfig && widgetConfig.widget) {
|
if (widgetConfig && widgetConfig.widget) {
|
||||||
return widgetConfig;
|
return widgetConfig;
|
||||||
}
|
}
|
||||||
@@ -68,9 +68,9 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected getWebviewContent(row: number, col: number): GridWebviewConfig {
|
protected getWebviewContent(row: number, col: number): GridWebviewConfig {
|
||||||
let content = this.getContent(row, col);
|
const content = this.getContent(row, col);
|
||||||
if (content) {
|
if (content) {
|
||||||
let webviewConfig = <GridWebviewConfig>content;
|
const webviewConfig = <GridWebviewConfig>content;
|
||||||
if (webviewConfig && webviewConfig.webview) {
|
if (webviewConfig && webviewConfig.webview) {
|
||||||
return webviewConfig;
|
return webviewConfig;
|
||||||
}
|
}
|
||||||
@@ -80,17 +80,17 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
|||||||
|
|
||||||
|
|
||||||
protected isWidget(row: number, col: number): boolean {
|
protected isWidget(row: number, col: number): boolean {
|
||||||
let widgetConfig = this.getWidgetContent(row, col);
|
const widgetConfig = this.getWidgetContent(row, col);
|
||||||
return widgetConfig !== undefined;
|
return widgetConfig !== undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected isWebview(row: number, col: number): boolean {
|
protected isWebview(row: number, col: number): boolean {
|
||||||
let webview = this.getWebviewContent(row, col);
|
const webview = this.getWebviewContent(row, col);
|
||||||
return webview !== undefined;
|
return webview !== undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getWebviewId(row: number, col: number): string {
|
protected getWebviewId(row: number, col: number): string {
|
||||||
let widgetConfig = this.getWebviewContent(row, col);
|
const widgetConfig = this.getWebviewContent(row, col);
|
||||||
if (widgetConfig && widgetConfig.webview) {
|
if (widgetConfig && widgetConfig.webview) {
|
||||||
return widgetConfig.webview.id;
|
return widgetConfig.webview.id;
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected getColspan(row: number, col: number): string {
|
protected getColspan(row: number, col: number): string {
|
||||||
let content = this.getContent(row, col);
|
const content = this.getContent(row, col);
|
||||||
let colspan: string = '1';
|
let colspan: string = '1';
|
||||||
if (content && content.colspan) {
|
if (content && content.colspan) {
|
||||||
colspan = this.convertToNumber(content.colspan, this.cols.length).toString();
|
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 {
|
protected getRowspan(row: number, col: number): string {
|
||||||
let content = this.getContent(row, col);
|
const content = this.getContent(row, col);
|
||||||
if (content && (content.rowspan)) {
|
if (content && (content.rowspan)) {
|
||||||
return this.convertToNumber(content.rowspan, this.rows.length).toString();
|
return this.convertToNumber(content.rowspan, this.rows.length).toString();
|
||||||
} else {
|
} else {
|
||||||
@@ -116,17 +116,15 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected getWidgetWidth(row: number, col: number): string {
|
protected getWidgetWidth(row: number, col: number): string {
|
||||||
let content = this.getContent(row, col);
|
const colspan = this.getColspan(row, col);
|
||||||
let colspan = this.getColspan(row, col);
|
const columnCount = this.convertToNumber(colspan, this.cols.length);
|
||||||
let columnCount = this.convertToNumber(colspan, this.cols.length);
|
|
||||||
|
|
||||||
return columnCount * this.cellWidth + 'px';
|
return columnCount * this.cellWidth + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getWidgetHeight(row: number, col: number): string {
|
protected getWidgetHeight(row: number, col: number): string {
|
||||||
let content = this.getContent(row, col);
|
const rowspan = this.getRowspan(row, col);
|
||||||
let rowspan = this.getRowspan(row, col);
|
const rowCount = this.convertToNumber(rowspan, this.rows.length);
|
||||||
let rowCount = this.convertToNumber(rowspan, this.rows.length);
|
|
||||||
|
|
||||||
return rowCount * this.cellHeight + 'px';
|
return rowCount * this.cellHeight + 'px';
|
||||||
}
|
}
|
||||||
@@ -181,7 +179,7 @@ export class DashboardGridContainer extends DashboardTab implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private createIndexes(indexes: number[]) {
|
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);
|
return Array(max).fill(0).map((x, i) => i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2,11 +2,12 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
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';
|
import { registerContainerType, registerNavSectionContainerType } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
||||||
|
|
||||||
export const GRID_CONTAINER = 'grid-container';
|
export const GRID_CONTAINER = 'grid-container';
|
||||||
@@ -23,8 +24,8 @@ registerNavSectionContainerType(GRID_CONTAINER, gridContainersSchema);
|
|||||||
export function validateGridContainerContribution(extension: IExtensionPointUser<any>, gridConfigs: object[]): boolean {
|
export function validateGridContainerContribution(extension: IExtensionPointUser<any>, gridConfigs: object[]): boolean {
|
||||||
let result = true;
|
let result = true;
|
||||||
gridConfigs.forEach(widgetConfig => {
|
gridConfigs.forEach(widgetConfig => {
|
||||||
let allKeys = Object.keys(widgetConfig);
|
const allKeys = Object.keys(widgetConfig);
|
||||||
let widgetOrWebviewKey = allKeys.find(key => key === 'widget' || key === 'webview');
|
const widgetOrWebviewKey = allKeys.find(key => key === 'widget' || key === 'webview');
|
||||||
if (!widgetOrWebviewKey) {
|
if (!widgetOrWebviewKey) {
|
||||||
result = false;
|
result = false;
|
||||||
extension.collector.error(nls.localize('gridContainer.invalidInputs', 'widgets or webviews are expected inside widgets-container for extension.'));
|
extension.collector.error(nls.localize('gridContainer.invalidInputs', 'widgets or webviews are expected inside widgets-container for extension.'));
|
||||||
@@ -7,12 +7,12 @@ import 'vs/css!./dashboardHomeContainer';
|
|||||||
|
|
||||||
import { Component, forwardRef, Input, ChangeDetectorRef, Inject, ViewChild, ContentChild } from '@angular/core';
|
import { Component, forwardRef, Input, ChangeDetectorRef, Inject, ViewChild, ContentChild } from '@angular/core';
|
||||||
|
|
||||||
import { DashboardWidgetContainer } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.component';
|
import { DashboardWidgetContainer } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.component';
|
||||||
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
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 { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { AngularEventType, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
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 { ScrollableDirective } from 'sql/base/browser/ui/scrollable/scrollable.directive';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ export class DashboardHomeContainer extends DashboardWidgetContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngAfterContentInit() {
|
ngAfterContentInit() {
|
||||||
let collapsedVal = this.dashboardService.getSettings<string>(`${this.properties.context}.properties`);
|
const collapsedVal = this.dashboardService.getSettings<string>(`${this.properties.context}.properties`);
|
||||||
if (collapsedVal === 'collapsed') {
|
if (collapsedVal === 'collapsed') {
|
||||||
this._propertiesClass.collapsed = true;
|
this._propertiesClass.collapsed = true;
|
||||||
}
|
}
|
||||||
@@ -2,14 +2,15 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./dashboardWebviewContainer';
|
import 'vs/css!./dashboardWebviewContainer';
|
||||||
|
|
||||||
import { Component, forwardRef, Input, AfterContentInit, ViewChild } from '@angular/core';
|
import { Component, forwardRef, Input, AfterContentInit, ViewChild } from '@angular/core';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
|
|
||||||
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|
||||||
@@ -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 { 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 { 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 { PanelComponent, IPanelOptions, NavigationBarLayout } from 'sql/base/browser/ui/panel/panel.component';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
import { DashboardTab, IConfigModifierCollection } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab, IConfigModifierCollection } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { WIDGETS_CONTAINER } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
import { WIDGETS_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
||||||
import { GRID_CONTAINER } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
|
import { GRID_CONTAINER } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
|
||||||
import * as dashboardHelper from 'sql/parts/dashboard/common/dashboardHelper';
|
import * as dashboardHelper from 'sql/workbench/parts/dashboard/common/dashboardHelper';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
import * as nls from 'vs/nls';
|
|
||||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dashboard-nav-section',
|
selector: 'dashboard-nav-section',
|
||||||
providers: [{ provide: TabChild, useExisting: forwardRef(() => DashboardNavSection) }],
|
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 {
|
export class DashboardNavSection extends DashboardTab implements OnDestroy, OnChanges, AfterContentInit, IConfigModifierCollection {
|
||||||
@Input() private tab: TabConfig;
|
@Input() private tab: TabConfig;
|
||||||
@@ -91,14 +90,13 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
|
|||||||
|
|
||||||
private loadNewTabs(dashboardTabs: NavSectionConfig[]) {
|
private loadNewTabs(dashboardTabs: NavSectionConfig[]) {
|
||||||
if (dashboardTabs && dashboardTabs.length > 0) {
|
if (dashboardTabs && dashboardTabs.length > 0) {
|
||||||
let selectedTabs = dashboardTabs.map(v => {
|
dashboardTabs.map(v => {
|
||||||
|
const containerResult = dashboardHelper.getDashboardContainer(v.container);
|
||||||
let containerResult = dashboardHelper.getDashboardContainer(v.container);
|
|
||||||
if (!containerResult.result) {
|
if (!containerResult.result) {
|
||||||
return { id: v.id, title: v.title, container: { 'error-container': undefined } };
|
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) {
|
if (key === WIDGETS_CONTAINER || key === GRID_CONTAINER) {
|
||||||
let configs = <WidgetConfig[]>Object.values(containerResult.container)[0];
|
let configs = <WidgetConfig[]>Object.values(containerResult.container)[0];
|
||||||
this._configModifiers.forEach(cb => {
|
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 };
|
return { id: v.id, title: v.title, container: containerResult.container, iconClass: v.iconClass };
|
||||||
}).map(v => {
|
}).map(v => {
|
||||||
let config = v as TabConfig;
|
const config = v as TabConfig;
|
||||||
config.context = this.tab.context;
|
config.context = this.tab.context;
|
||||||
config.editable = false;
|
config.editable = false;
|
||||||
config.canClose = false;
|
config.canClose = false;
|
||||||
@@ -127,14 +125,14 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
|
|||||||
}
|
}
|
||||||
|
|
||||||
private addNewTab(tab: TabConfig): void {
|
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) {
|
if (!existedTab) {
|
||||||
this.tabs.push(tab);
|
this.tabs.push(tab);
|
||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private getContentType(tab: TabConfig): string {
|
protected getContentType(tab: TabConfig): string {
|
||||||
return tab.container ? Object.keys(tab.container)[0] : '';
|
return tab.container ? Object.keys(tab.container)[0] : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,8 +145,8 @@ export class DashboardNavSection extends DashboardTab implements OnDestroy, OnCh
|
|||||||
}
|
}
|
||||||
|
|
||||||
public layout() {
|
public layout() {
|
||||||
let activeTabId = this._panel.getActiveTab;
|
const activeTabId = this._panel.getActiveTab;
|
||||||
let localtab = this._tabs.find(i => i.id === activeTabId);
|
const localtab = this._tabs.find(i => i.id === activeTabId);
|
||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
localtab.layout();
|
localtab.layout();
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
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 { URI } from 'vs/base/common/uri';
|
||||||
import { IdGenerator } from 'vs/base/common/idGenerator';
|
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 { registerContainerType, generateNavSectionContainerTypeSchemaProperties } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
||||||
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
import { WIDGETS_CONTAINER, validateWidgetContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.contribution';
|
||||||
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/parts/dashboard/containers/dashboardGridContainer.contribution';
|
import { GRID_CONTAINER, validateGridContainerContribution } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.contribution';
|
||||||
|
|
||||||
export const NAV_SECTION = 'nav-section';
|
export const NAV_SECTION = 'nav-section';
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ const navSectionContainerSchema: IJSONSchema = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let NavSectionSchema: IJSONSchema = {
|
const NavSectionSchema: IJSONSchema = {
|
||||||
type: 'array',
|
type: 'array',
|
||||||
description: nls.localize('dashboard.container.left-nav-bar', "The list of dashboard containers that will be displayed in this navigation section."),
|
description: nls.localize('dashboard.container.left-nav-bar', "The list of dashboard containers that will be displayed in this navigation section."),
|
||||||
items: navSectionContainerSchema
|
items: navSectionContainerSchema
|
||||||
@@ -117,8 +118,8 @@ export function validateNavSectionContributionAndRegisterIcon(extension: IExtens
|
|||||||
section.iconClass = createCSSRuleForIcon(section.icon, extension);
|
section.iconClass = createCSSRuleForIcon(section.icon, extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
let containerKey = Object.keys(section.container)[0];
|
const containerKey = Object.keys(section.container)[0];
|
||||||
let containerValue = Object.values(section.container)[0];
|
const containerValue = Object.values(section.container)[0];
|
||||||
|
|
||||||
switch (containerKey) {
|
switch (containerKey) {
|
||||||
case WIDGETS_CONTAINER:
|
case WIDGETS_CONTAINER:
|
||||||
@@ -2,15 +2,16 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./dashboardWebviewContainer';
|
import 'vs/css!./dashboardWebviewContainer';
|
||||||
|
|
||||||
import { Component, forwardRef, Input, AfterContentInit, ViewChild } from '@angular/core';
|
import { Component, forwardRef, Input, AfterContentInit, ViewChild } from '@angular/core';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
|
|
||||||
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { TabConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { TabConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { WebviewContent } from 'sql/parts/dashboard/contents/webviewContent.component';
|
import { WebviewContent } from 'sql/workbench/parts/dashboard/contents/webviewContent.component';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|
||||||
@@ -7,9 +7,9 @@ import 'vs/css!./dashboardWidgetContainer';
|
|||||||
|
|
||||||
import { Component, Inject, Input, forwardRef, ViewChild, OnDestroy, ChangeDetectorRef, AfterContentInit } from '@angular/core';
|
import { Component, Inject, Input, forwardRef, ViewChild, OnDestroy, ChangeDetectorRef, AfterContentInit } from '@angular/core';
|
||||||
|
|
||||||
import { TabConfig, WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { TabConfig, WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { DashboardTab } from 'sql/parts/dashboard/common/interfaces';
|
import { DashboardTab } from 'sql/workbench/parts/dashboard/common/interfaces';
|
||||||
import { WidgetContent } from 'sql/parts/dashboard/contents/widgetContent.component';
|
import { WidgetContent } from 'sql/workbench/parts/dashboard/contents/widgetContent.component';
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
||||||
|
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
@@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
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 { registerContainerType, registerNavSectionContainerType } from 'sql/platform/dashboard/common/dashboardContainerRegistry';
|
||||||
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
|
||||||
|
|
||||||
export const WIDGETS_CONTAINER = 'widgets-container';
|
export const WIDGETS_CONTAINER = 'widgets-container';
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ registerNavSectionContainerType(WIDGETS_CONTAINER, widgetsSchema);
|
|||||||
export function validateWidgetContainerContribution(extension: IExtensionPointUser<any>, WidgetConfigs: object[]): boolean {
|
export function validateWidgetContainerContribution(extension: IExtensionPointUser<any>, WidgetConfigs: object[]): boolean {
|
||||||
let result = true;
|
let result = true;
|
||||||
WidgetConfigs.forEach(widgetConfig => {
|
WidgetConfigs.forEach(widgetConfig => {
|
||||||
let allKeys = Object.keys(widgetConfig);
|
const allKeys = Object.keys(widgetConfig);
|
||||||
let widgetKey = allKeys.find(key => key === 'widget');
|
const widgetKey = allKeys.find(key => key === 'widget');
|
||||||
if (!widgetKey) {
|
if (!widgetKey) {
|
||||||
result = false;
|
result = false;
|
||||||
extension.collector.error(nls.localize('widgetContainer.invalidInputs', 'The list of widgets is expected inside widgets-container for extension.'));
|
extension.collector.error(nls.localize('widgetContainer.invalidInputs', 'The list of widgets is expected inside widgets-container for extension.'));
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./controlHostContent';
|
import 'vs/css!./controlHostContent';
|
||||||
|
|
||||||
import { Component, forwardRef, Input, OnInit, Inject, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';
|
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 * as azdata from 'azdata';
|
||||||
import { memoize } from 'vs/base/common/decorators';
|
import { memoize } from 'vs/base/common/decorators';
|
||||||
import { AgentViewComponent } from '../../jobManagement/agent/agentView.component';
|
import { AgentViewComponent } from '../../../../parts/jobManagement/agent/agentView.component';
|
||||||
|
|
||||||
@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'
|
selector: 'controlhost-content'
|
||||||
})
|
})
|
||||||
export class ControlHostContent {
|
export class ControlHostContent {
|
||||||
@@ -49,8 +50,8 @@ export class ControlHostContent {
|
|||||||
|
|
||||||
@memoize
|
@memoize
|
||||||
public get connection(): azdata.connection.Connection {
|
public get connection(): azdata.connection.Connection {
|
||||||
let currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
|
const currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
|
||||||
let connection: azdata.connection.Connection = {
|
const connection: azdata.connection.Connection = {
|
||||||
providerName: currentConnection.providerName,
|
providerName: currentConnection.providerName,
|
||||||
connectionId: currentConnection.id,
|
connectionId: currentConnection.id,
|
||||||
options: currentConnection.options
|
options: currentConnection.options
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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!sql/media/icons/common-icons';
|
||||||
import 'vs/css!./dashboardWidgetWrapper';
|
import 'vs/css!./dashboardWidgetWrapper';
|
||||||
|
|
||||||
@@ -10,19 +11,19 @@ import {
|
|||||||
ElementRef, OnInit, ChangeDetectorRef, ReflectiveInjector, Injector, Type, ComponentRef
|
ElementRef, OnInit, ChangeDetectorRef, ReflectiveInjector, Injector, Type, ComponentRef
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
|
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
|
||||||
import { WidgetConfig, WIDGET_CONFIG, IDashboardWidget } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { WidgetConfig, WIDGET_CONFIG, IDashboardWidget } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
import { Extensions, IInsightRegistry } from 'sql/platform/dashboard/common/insightRegistry';
|
||||||
import { error } from 'sql/base/common/log';
|
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';
|
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
||||||
|
|
||||||
/* Widgets */
|
/* Widgets */
|
||||||
import { PropertiesWidgetComponent } from 'sql/parts/dashboard/widgets/properties/propertiesWidget.component';
|
import { PropertiesWidgetComponent } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component';
|
||||||
import { ExplorerWidget } from 'sql/parts/dashboard/widgets/explorer/explorerWidget.component';
|
import { ExplorerWidget } from 'sql/workbench/parts/dashboard/widgets/explorer/explorerWidget.component';
|
||||||
import { TasksWidget } from 'sql/parts/dashboard/widgets/tasks/tasksWidget.component';
|
import { TasksWidget } from 'sql/workbench/parts/dashboard/widgets/tasks/tasksWidget.component';
|
||||||
import { InsightsWidget } from 'sql/parts/dashboard/widgets/insights/insightsWidget.component';
|
import { InsightsWidget } from 'sql/workbench/parts/dashboard/widgets/insights/insightsWidget.component';
|
||||||
import { WebviewWidget } from 'sql/parts/dashboard/widgets/webview/webviewWidget.component';
|
import { WebviewWidget } from 'sql/workbench/parts/dashboard/widgets/webview/webviewWidget.component';
|
||||||
|
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ const componentMap: { [x: string]: Type<IDashboardWidget> } = {
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dashboard-widget-wrapper',
|
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 {
|
export class DashboardWidgetWrapper extends AngularDisposable implements OnInit {
|
||||||
@Input() private _config: WidgetConfig;
|
@Input() private _config: WidgetConfig;
|
||||||
@@ -97,9 +98,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
let self = this;
|
this._register(this.themeService.onDidColorThemeChange((event: IColorTheme) => {
|
||||||
this._register(self.themeService.onDidColorThemeChange((event: IColorTheme) => {
|
this.updateTheme(event);
|
||||||
self.updateTheme(event);
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,8 +149,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
error('Exactly 1 widget must be defined per space');
|
error('Exactly 1 widget must be defined per space');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let key = Object.keys(this._config.widget)[0];
|
const key = Object.keys(this._config.widget)[0];
|
||||||
let selector = this.getOrCreateSelector(key);
|
const selector = this.getOrCreateSelector(key);
|
||||||
if (selector === undefined) {
|
if (selector === undefined) {
|
||||||
error('Could not find selector', key);
|
error('Could not find selector', key);
|
||||||
return;
|
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 _config.name is not set, set it to _config.widget.name
|
||||||
if (!this._config.name) {
|
if (!this._config.name) {
|
||||||
let widget = Object.values(this._config.widget)[0];
|
const widget = Object.values(this._config.widget)[0];
|
||||||
if (widget.name) {
|
if (widget.name) {
|
||||||
this._config.name = 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();
|
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>;
|
let componentRef: ComponentRef<IDashboardWidget>;
|
||||||
try {
|
try {
|
||||||
componentRef = viewContainerRef.createComponent(componentFactory, 0, injector);
|
componentRef = viewContainerRef.createComponent(componentFactory, 0, injector);
|
||||||
this._component = componentRef.instance;
|
this._component = componentRef.instance;
|
||||||
let actions = componentRef.instance.actions;
|
const actions = componentRef.instance.actions;
|
||||||
if (componentRef.instance.refresh) {
|
if (componentRef.instance.refresh) {
|
||||||
actions.push(new RefreshWidgetAction(this.refresh, this));
|
actions.push(new RefreshWidgetAction(this.refresh, this));
|
||||||
}
|
}
|
||||||
@@ -186,7 +186,7 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
error('Error rendering widget', key, e);
|
error('Error rendering widget', key, e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let el = <HTMLElement>componentRef.location.nativeElement;
|
const el = <HTMLElement>componentRef.location.nativeElement;
|
||||||
|
|
||||||
// set widget styles to conform to its box
|
// set widget styles to conform to its box
|
||||||
el.style.overflow = 'hidden';
|
el.style.overflow = 'hidden';
|
||||||
@@ -207,8 +207,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
let selector = componentMap[key];
|
let selector = componentMap[key];
|
||||||
if (selector === undefined) {
|
if (selector === undefined) {
|
||||||
// Load the widget from the registry
|
// Load the widget from the registry
|
||||||
let widgetRegistry = <IInsightRegistry>Registry.as(Extensions.InsightContribution);
|
const widgetRegistry = <IInsightRegistry>Registry.as(Extensions.InsightContribution);
|
||||||
let insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
|
const insightConfig = widgetRegistry.getRegisteredExtensionInsights(key);
|
||||||
if (insightConfig === undefined) {
|
if (insightConfig === undefined) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@@ -221,12 +221,12 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
}
|
}
|
||||||
|
|
||||||
private updateTheme(theme: IColorTheme): void {
|
private updateTheme(theme: IColorTheme): void {
|
||||||
let el = <HTMLElement>this._ref.nativeElement;
|
const el = <HTMLElement>this._ref.nativeElement;
|
||||||
let headerEl: HTMLElement = this.header.nativeElement;
|
const headerEl: HTMLElement = this.header.nativeElement;
|
||||||
let borderColor = theme.getColor(themeColors.SIDE_BAR_BACKGROUND, true);
|
let borderColor = theme.getColor(themeColors.SIDE_BAR_BACKGROUND, true);
|
||||||
let backgroundColor = theme.getColor(colors.editorBackground, true);
|
let backgroundColor = theme.getColor(colors.editorBackground, true);
|
||||||
let foregroundColor = theme.getColor(themeColors.SIDE_BAR_FOREGROUND, true);
|
const foregroundColor = theme.getColor(themeColors.SIDE_BAR_FOREGROUND, true);
|
||||||
let border = theme.getColor(colors.contrastBorder, true);
|
const border = theme.getColor(colors.contrastBorder, true);
|
||||||
|
|
||||||
if (this._config.background_color) {
|
if (this._config.background_color) {
|
||||||
backgroundColor = theme.getColor(this._config.background_color);
|
backgroundColor = theme.getColor(this._config.background_color);
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./webviewContent';
|
import 'vs/css!./webviewContent';
|
||||||
|
|
||||||
import { Component, forwardRef, Input, OnInit, Inject, ElementRef } from '@angular/core';
|
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 { addDisposableListener, EventType } from 'vs/base/browser/dom';
|
||||||
import { memoize } from 'vs/base/common/decorators';
|
import { memoize } from 'vs/base/common/decorators';
|
||||||
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
||||||
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
|
||||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
|
||||||
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { IDashboardWebview, IDashboardViewService } from 'sql/platform/dashboard/common/dashboardViewService';
|
import { IDashboardWebview, IDashboardViewService } from 'sql/platform/dashboard/common/dashboardViewService';
|
||||||
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
|
|
||||||
import * as azdata from 'azdata';
|
import * as azdata from 'azdata';
|
||||||
import { IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
|
||||||
import { WebviewElement } from 'vs/workbench/contrib/webview/electron-browser/webviewElement';
|
import { WebviewElement } from 'vs/workbench/contrib/webview/electron-browser/webviewElement';
|
||||||
import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService';
|
import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService';
|
||||||
|
|
||||||
@@ -69,8 +67,8 @@ export class WebviewContent extends AngularDisposable implements OnInit, IDashbo
|
|||||||
|
|
||||||
@memoize
|
@memoize
|
||||||
public get connection(): azdata.connection.Connection {
|
public get connection(): azdata.connection.Connection {
|
||||||
let currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
|
const currentConnection = this._dashboardService.connectionManagementService.connectionInfo.connectionProfile;
|
||||||
let connection: azdata.connection.Connection = {
|
const connection: azdata.connection.Connection = {
|
||||||
providerName: currentConnection.providerName,
|
providerName: currentConnection.providerName,
|
||||||
connectionId: currentConnection.id,
|
connectionId: currentConnection.id,
|
||||||
options: currentConnection.options
|
options: currentConnection.options
|
||||||
@@ -8,10 +8,10 @@ import 'vs/css!./widgetContent';
|
|||||||
import { Component, Inject, Input, forwardRef, ViewChild, ViewChildren, QueryList, ChangeDetectorRef, ElementRef, AfterViewInit } from '@angular/core';
|
import { Component, Inject, Input, forwardRef, ViewChild, ViewChildren, QueryList, ChangeDetectorRef, ElementRef, AfterViewInit } from '@angular/core';
|
||||||
import { NgGridConfig, NgGrid, NgGridItem } from 'angular2-grid';
|
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 { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
|
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
|
||||||
import { subscriptionToDisposable, AngularDisposable } from 'sql/base/node/lifecycle';
|
import { subscriptionToDisposable, AngularDisposable } from 'sql/base/node/lifecycle';
|
||||||
|
|
||||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||||
@@ -69,7 +69,7 @@ function configSorter(a, b): number {
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'widget-content',
|
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 {
|
export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
||||||
@Input() private widgets: WidgetConfig[];
|
@Input() private widgets: WidgetConfig[];
|
||||||
@@ -125,8 +125,8 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
|||||||
|
|
||||||
ngAfterViewInit() {
|
ngAfterViewInit() {
|
||||||
if (this.scrollContent) {
|
if (this.scrollContent) {
|
||||||
let container = this._scrollContainer.nativeElement as HTMLElement;
|
const container = this._scrollContainer.nativeElement as HTMLElement;
|
||||||
let scrollable = this._scrollable.nativeElement as HTMLElement;
|
const scrollable = this._scrollable.nativeElement as HTMLElement;
|
||||||
container.removeChild(scrollable);
|
container.removeChild(scrollable);
|
||||||
|
|
||||||
this._scrollableElement = new ScrollableElement(scrollable, {
|
this._scrollableElement = new ScrollableElement(scrollable, {
|
||||||
@@ -140,7 +140,7 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
|||||||
});
|
});
|
||||||
|
|
||||||
container.appendChild(this._scrollableElement.getDomNode());
|
container.appendChild(this._scrollableElement.getDomNode());
|
||||||
let initalHeight = getContentHeight(scrollable);
|
const initalHeight = getContentHeight(scrollable);
|
||||||
this._scrollableElement.setScrollDimensions({
|
this._scrollableElement.setScrollDimensions({
|
||||||
scrollHeight: getContentHeight(scrollable),
|
scrollHeight: getContentHeight(scrollable),
|
||||||
height: getContentHeight(container)
|
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
|
// unforunately because of angular rendering behavior we need to do a double check to make sure nothing changed after this point
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
let currentheight = getContentHeight(scrollable);
|
const currentheight = getContentHeight(scrollable);
|
||||||
if (initalHeight !== currentheight) {
|
if (initalHeight !== currentheight) {
|
||||||
this._scrollableElement.setScrollDimensions({
|
this._scrollableElement.setScrollDimensions({
|
||||||
scrollHeight: currentheight,
|
scrollHeight: currentheight,
|
||||||
@@ -176,8 +176,8 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private resetScrollDimensions() {
|
private resetScrollDimensions() {
|
||||||
let container = this._scrollContainer.nativeElement as HTMLElement;
|
const container = this._scrollContainer.nativeElement as HTMLElement;
|
||||||
let scrollable = this._scrollable.nativeElement as HTMLElement;
|
const scrollable = this._scrollable.nativeElement as HTMLElement;
|
||||||
|
|
||||||
this._scrollableElement.setScrollDimensions({
|
this._scrollableElement.setScrollDimensions({
|
||||||
scrollHeight: getContentHeight(scrollable),
|
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._editDispose.push(subscriptionToDisposable(this._grid.onResizeStop.subscribe((e: NgGridItem) => {
|
||||||
this._onResize.fire();
|
this._onResize.fire();
|
||||||
let event = e.getEventOutput();
|
const event = e.getEventOutput();
|
||||||
let config = this.originalConfig.find(i => i.id === event.payload.id);
|
const config = this.originalConfig.find(i => i.id === event.payload.id);
|
||||||
|
|
||||||
if (!config.gridItemConfig) {
|
if (!config.gridItemConfig) {
|
||||||
config.gridItemConfig = {};
|
config.gridItemConfig = {};
|
||||||
@@ -228,7 +228,7 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
|||||||
config.gridItemConfig.sizex = e.sizex;
|
config.gridItemConfig.sizex = e.sizex;
|
||||||
config.gridItemConfig.sizey = e.sizey;
|
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();
|
component.layout();
|
||||||
this._rewriteConfig();
|
this._rewriteConfig();
|
||||||
@@ -236,9 +236,9 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
|||||||
})));
|
})));
|
||||||
this._editDispose.push(subscriptionToDisposable(this._grid.onDragStop.subscribe((e: NgGridItem) => {
|
this._editDispose.push(subscriptionToDisposable(this._grid.onDragStop.subscribe((e: NgGridItem) => {
|
||||||
this._onResize.fire();
|
this._onResize.fire();
|
||||||
let event = e.getEventOutput();
|
const event = e.getEventOutput();
|
||||||
this._items.forEach(i => {
|
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.col) || config.id === event.payload.id) {
|
||||||
if (!config.gridItemConfig) {
|
if (!config.gridItemConfig) {
|
||||||
config.gridItemConfig = {};
|
config.gridItemConfig = {};
|
||||||
@@ -261,12 +261,12 @@ export class WidgetContent extends AngularDisposable implements AfterViewInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _rewriteConfig(): void {
|
private _rewriteConfig(): void {
|
||||||
let writeableConfig = objects.deepClone(this.originalConfig);
|
const writeableConfig = objects.deepClone(this.originalConfig);
|
||||||
|
|
||||||
writeableConfig.forEach(i => {
|
writeableConfig.forEach(i => {
|
||||||
delete i.id;
|
delete i.id;
|
||||||
});
|
});
|
||||||
let target: ConfigurationTarget = ConfigurationTarget.USER;
|
const target: ConfigurationTarget = ConfigurationTarget.USER;
|
||||||
this.dashboardService.writeSettings([this.context, 'widgets'].join('.'), writeableConfig, target);
|
this.dashboardService.writeSettings([this.context, 'widgets'].join('.'), writeableConfig, target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,8 +11,8 @@ import { Router } from '@angular/router';
|
|||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
|
||||||
import * as Utils from 'sql/platform/connection/common/utils';
|
import * as Utils from 'sql/platform/connection/common/utils';
|
||||||
import { RefreshWidgetAction, EditDashboardAction } from 'sql/parts/dashboard/common/actions';
|
import { RefreshWidgetAction, EditDashboardAction } from 'sql/workbench/parts/dashboard/common/actions';
|
||||||
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
import { DashboardPage } from 'sql/workbench/parts/dashboard/common/dashboardPage.component';
|
||||||
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
import { AngularDisposable } from 'sql/base/node/lifecycle';
|
||||||
|
|
||||||
import { IColorTheme, IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
import { IColorTheme, IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
||||||
@@ -47,7 +47,7 @@ export class DashboardComponent extends AngularDisposable implements OnInit {
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this._register(this.themeService.onDidColorThemeChange(this.updateTheme, this));
|
this._register(this.themeService.onDidColorThemeChange(this.updateTheme, this));
|
||||||
this.updateTheme(this.themeService.getColorTheme());
|
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 = new ActionBar(this.actionbarContainer.nativeElement);
|
||||||
this.actionbar.push(new RefreshWidgetAction(this.refresh, this), {
|
this.actionbar.push(new RefreshWidgetAction(this.refresh, this), {
|
||||||
icon: true,
|
icon: true,
|
||||||
@@ -65,7 +65,7 @@ export class DashboardComponent extends AngularDisposable implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private updateTheme(theme: IColorTheme): void {
|
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.borderBottomColor = theme.getColor(themeColors.SIDE_BAR_BACKGROUND, true).toString();
|
||||||
headerEl.style.borderBottomWidth = '1px';
|
headerEl.style.borderBottomWidth = '1px';
|
||||||
headerEl.style.borderBottomStyle = 'solid';
|
headerEl.style.borderBottomStyle = 'solid';
|
||||||
@@ -24,31 +24,31 @@ import * as TelemetryUtils from 'sql/common/telemetryUtilities';
|
|||||||
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
||||||
|
|
||||||
/* Services */
|
/* Services */
|
||||||
import { BreadcrumbService } from 'sql/parts/dashboard/services/breadcrumb.service';
|
import { BreadcrumbService } from 'sql/workbench/parts/dashboard/services/breadcrumb.service';
|
||||||
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 { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
|
|
||||||
/* Directives */
|
/* Directives */
|
||||||
import { ComponentHostDirective } from 'sql/parts/dashboard/common/componentHost.directive';
|
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive';
|
||||||
|
|
||||||
/* Base Components */
|
/* Base Components */
|
||||||
import { DashboardComponent } from 'sql/parts/dashboard/dashboard.component';
|
import { DashboardComponent } from 'sql/workbench/parts/dashboard/dashboard.component';
|
||||||
import { DashboardWidgetWrapper } from 'sql/parts/dashboard/contents/dashboardWidgetWrapper.component';
|
import { DashboardWidgetWrapper } from 'sql/workbench/parts/dashboard/contents/dashboardWidgetWrapper.component';
|
||||||
import { DashboardWidgetContainer } from 'sql/parts/dashboard/containers/dashboardWidgetContainer.component';
|
import { DashboardWidgetContainer } from 'sql/workbench/parts/dashboard/containers/dashboardWidgetContainer.component';
|
||||||
import { DashboardGridContainer } from 'sql/parts/dashboard/containers/dashboardGridContainer.component';
|
import { DashboardGridContainer } from 'sql/workbench/parts/dashboard/containers/dashboardGridContainer.component';
|
||||||
import { DashboardWebviewContainer } from 'sql/parts/dashboard/containers/dashboardWebviewContainer.component';
|
import { DashboardWebviewContainer } from 'sql/workbench/parts/dashboard/containers/dashboardWebviewContainer.component';
|
||||||
import { DashboardModelViewContainer } from 'sql/parts/dashboard/containers/dashboardModelViewContainer.component';
|
import { DashboardModelViewContainer } from 'sql/workbench/parts/dashboard/containers/dashboardModelViewContainer.component';
|
||||||
import { DashboardErrorContainer } from 'sql/parts/dashboard/containers/dashboardErrorContainer.component';
|
import { DashboardErrorContainer } from 'sql/workbench/parts/dashboard/containers/dashboardErrorContainer.component';
|
||||||
import { DashboardNavSection } from 'sql/parts/dashboard/containers/dashboardNavSection.component';
|
import { DashboardNavSection } from 'sql/workbench/parts/dashboard/containers/dashboardNavSection.component';
|
||||||
import { WidgetContent } from 'sql/parts/dashboard/contents/widgetContent.component';
|
import { WidgetContent } from 'sql/workbench/parts/dashboard/contents/widgetContent.component';
|
||||||
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
import { ModelViewContent } from 'sql/parts/modelComponents/modelViewContent.component';
|
||||||
import { ModelComponentWrapper } from 'sql/parts/modelComponents/modelComponentWrapper.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 { BreadcrumbComponent } from 'sql/base/browser/ui/breadcrumb/breadcrumb.component';
|
||||||
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
|
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
|
||||||
import { DashboardHomeContainer } from 'sql/parts/dashboard/containers/dashboardHomeContainer.component';
|
import { DashboardHomeContainer } from 'sql/workbench/parts/dashboard/containers/dashboardHomeContainer.component';
|
||||||
import { ControlHostContent } from 'sql/parts/dashboard/contents/controlHostContent.component';
|
import { ControlHostContent } from 'sql/workbench/parts/dashboard/contents/controlHostContent.component';
|
||||||
import { DashboardControlHostContainer } from 'sql/parts/dashboard/containers/dashboardControlHostContainer.component';
|
import { DashboardControlHostContainer } from 'sql/workbench/parts/dashboard/containers/dashboardControlHostContainer.component';
|
||||||
import { JobsViewComponent } from 'sql/parts/jobManagement/views/jobsView.component';
|
import { JobsViewComponent } from 'sql/parts/jobManagement/views/jobsView.component';
|
||||||
import { AgentViewComponent } from 'sql/parts/jobManagement/agent/agentView.component';
|
import { AgentViewComponent } from 'sql/parts/jobManagement/agent/agentView.component';
|
||||||
import { AlertsViewComponent } from 'sql/parts/jobManagement/views/alertsView.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 { InputBox } from 'sql/base/browser/ui/inputBox/inputBox.component';
|
||||||
import LoadingSpinner from 'sql/parts/modelComponents/loadingSpinner.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,
|
DashboardWidgetContainer, DashboardGridContainer, DashboardErrorContainer, DashboardNavSection, ModelViewContent, WebviewContent, WidgetContent,
|
||||||
ComponentHostDirective, BreadcrumbComponent, ControlHostContent, DashboardControlHostContainer,
|
ComponentHostDirective, BreadcrumbComponent, ControlHostContent, DashboardControlHostContainer,
|
||||||
JobsViewComponent, AgentViewComponent, JobHistoryComponent, JobStepsViewComponent, AlertsViewComponent, ProxiesViewComponent, OperatorsViewComponent,
|
JobsViewComponent, AgentViewComponent, JobHistoryComponent, JobStepsViewComponent, AlertsViewComponent, ProxiesViewComponent, OperatorsViewComponent,
|
||||||
DashboardModelViewContainer, ModelComponentWrapper, Checkbox, EditableDropDown, SelectBox, InputBox, LoadingSpinner ];
|
DashboardModelViewContainer, ModelComponentWrapper, Checkbox, EditableDropDown, SelectBox, InputBox, LoadingSpinner];
|
||||||
|
|
||||||
/* Panel */
|
/* Panel */
|
||||||
import { PanelModule } from 'sql/base/browser/ui/panel/panel.module';
|
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';
|
import { ScrollableModule } from 'sql/base/browser/ui/scrollable/scrollable.module';
|
||||||
|
|
||||||
/* Pages */
|
/* Pages */
|
||||||
import { ServerDashboardPage } from 'sql/parts/dashboard/pages/serverDashboardPage.component';
|
import { ServerDashboardPage } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.component';
|
||||||
import { DatabaseDashboardPage } from 'sql/parts/dashboard/pages/databaseDashboardPage.component';
|
import { DatabaseDashboardPage } from 'sql/workbench/parts/dashboard/pages/databaseDashboardPage.component';
|
||||||
|
|
||||||
let pageComponents = [ServerDashboardPage, DatabaseDashboardPage];
|
const pageComponents = [ServerDashboardPage, DatabaseDashboardPage];
|
||||||
|
|
||||||
/* Widget Components */
|
/* Widget Components */
|
||||||
import { PropertiesWidgetComponent } from 'sql/parts/dashboard/widgets/properties/propertiesWidget.component';
|
import { PropertiesWidgetComponent } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component';
|
||||||
import { ExplorerWidget } from 'sql/parts/dashboard/widgets/explorer/explorerWidget.component';
|
import { ExplorerWidget } from 'sql/workbench/parts/dashboard/widgets/explorer/explorerWidget.component';
|
||||||
import { TasksWidget } from 'sql/parts/dashboard/widgets/tasks/tasksWidget.component';
|
import { TasksWidget } from 'sql/workbench/parts/dashboard/widgets/tasks/tasksWidget.component';
|
||||||
import { InsightsWidget } from 'sql/parts/dashboard/widgets/insights/insightsWidget.component';
|
import { InsightsWidget } from 'sql/workbench/parts/dashboard/widgets/insights/insightsWidget.component';
|
||||||
import { WebviewWidget } from 'sql/parts/dashboard/widgets/webview/webviewWidget.component';
|
import { WebviewWidget } from 'sql/workbench/parts/dashboard/widgets/webview/webviewWidget.component';
|
||||||
import { JobStepsViewComponent } from 'sql/parts/jobManagement/views/jobStepsView.component';
|
import { JobStepsViewComponent } from 'sql/parts/jobManagement/views/jobStepsView.component';
|
||||||
import { IInstantiationService, _util } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService, _util } from 'vs/platform/instantiation/common/instantiation';
|
||||||
|
|
||||||
let widgetComponents = [
|
const widgetComponents = [
|
||||||
PropertiesWidgetComponent,
|
PropertiesWidgetComponent,
|
||||||
ExplorerWidget,
|
ExplorerWidget,
|
||||||
TasksWidget,
|
TasksWidget,
|
||||||
@@ -96,10 +96,10 @@ let widgetComponents = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
/* Insights */
|
/* Insights */
|
||||||
let insightComponents = Registry.as<IInsightRegistry>(Extensions.InsightContribution).getAllCtors();
|
const insightComponents = Registry.as<IInsightRegistry>(Extensions.InsightContribution).getAllCtors();
|
||||||
|
|
||||||
/* Model-backed components */
|
/* 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
|
// Setup routes for various child components
|
||||||
const appRoutes: Routes = [
|
const appRoutes: Routes = [
|
||||||
@@ -2,11 +2,12 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
import { Registry } from 'vs/platform/registry/common/platform';
|
||||||
import { IConfigurationRegistry, Extensions, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry';
|
import { IConfigurationRegistry, Extensions, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry';
|
||||||
import { DASHBOARD_CONFIG_ID } from 'sql/parts/dashboard/pages/dashboardPageContribution';
|
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/parts/dashboard/pages/databaseDashboardPage.contribution';
|
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/parts/dashboard/pages/serverDashboardPage.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 configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
|
||||||
const dashboardConfig: IConfigurationNode = {
|
const dashboardConfig: IConfigurationNode = {
|
||||||
@@ -15,7 +15,7 @@ import { DashboardInput } from './dashboardInput';
|
|||||||
import { DashboardModule } from './dashboard.module';
|
import { DashboardModule } from './dashboard.module';
|
||||||
import { bootstrapAngular } from 'sql/services/bootstrap/bootstrapService';
|
import { bootstrapAngular } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { IDashboardComponentParams } from 'sql/services/bootstrap/bootstrapParams';
|
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 { ConnectionContextKey } from 'sql/parts/connection/common/connectionContextKey';
|
||||||
import { IDashboardService } from 'sql/platform/dashboard/browser/dashboardService';
|
import { IDashboardService } from 'sql/platform/dashboard/browser/dashboardService';
|
||||||
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
|
||||||
@@ -64,7 +64,7 @@ export class DashboardEditor extends BaseEditor {
|
|||||||
} else {
|
} else {
|
||||||
profile = this.input.connectionProfile;
|
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 });
|
this._dashboardService.changeToDashboard({ profile, serverInfo });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ export class DashboardEditor extends BaseEditor {
|
|||||||
$(parentElement).clearChildren();
|
$(parentElement).clearChildren();
|
||||||
|
|
||||||
if (!input.hasBootstrapped) {
|
if (!input.hasBootstrapped) {
|
||||||
let container = DOM.$<HTMLElement>('.dashboardEditor');
|
const container = DOM.$<HTMLElement>('.dashboardEditor');
|
||||||
container.style.height = '100%';
|
container.style.height = '100%';
|
||||||
this._dashboardContainer = DOM.append(parentElement, container);
|
this._dashboardContainer = DOM.append(parentElement, container);
|
||||||
this.input.container = this._dashboardContainer;
|
this.input.container = this._dashboardContainer;
|
||||||
@@ -110,13 +110,13 @@ export class DashboardEditor extends BaseEditor {
|
|||||||
} else {
|
} else {
|
||||||
profile = this.input.connectionProfile;
|
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 });
|
this._dashboardService.changeToDashboard({ profile, serverInfo });
|
||||||
let scopedContextService = this._contextKeyService.createScoped(input.container);
|
const scopedContextService = this._contextKeyService.createScoped(input.container);
|
||||||
let connectionContextKey = new ConnectionContextKey(scopedContextService);
|
const connectionContextKey = new ConnectionContextKey(scopedContextService);
|
||||||
connectionContextKey.set(input.connectionProfile);
|
connectionContextKey.set(input.connectionProfile);
|
||||||
|
|
||||||
let params: IDashboardComponentParams = {
|
const params: IDashboardComponentParams = {
|
||||||
connection: input.connectionProfile,
|
connection: input.connectionProfile,
|
||||||
ownerUri: input.uri,
|
ownerUri: input.uri,
|
||||||
scopedContextService,
|
scopedContextService,
|
||||||
@@ -125,7 +125,7 @@ export class DashboardEditor extends BaseEditor {
|
|||||||
|
|
||||||
input.hasBootstrapped = true;
|
input.hasBootstrapped = true;
|
||||||
|
|
||||||
let uniqueSelector = bootstrapAngular(this.instantiationService,
|
const uniqueSelector = bootstrapAngular(this.instantiationService,
|
||||||
DashboardModule,
|
DashboardModule,
|
||||||
this._dashboardContainer,
|
this._dashboardContainer,
|
||||||
DASHBOARD_SELECTOR,
|
DASHBOARD_SELECTOR,
|
||||||
@@ -51,7 +51,7 @@ export class DashboardInput extends EditorInput {
|
|||||||
this._initializedPromise = _connectionService.connectIfNotConnected(_connectionProfile, 'dashboard').then(
|
this._initializedPromise = _connectionService.connectIfNotConnected(_connectionProfile, 'dashboard').then(
|
||||||
u => {
|
u => {
|
||||||
this._uri = u;
|
this._uri = u;
|
||||||
let info = this._connectionService.getConnectionInfo(u);
|
const info = this._connectionService.getConnectionInfo(u);
|
||||||
if (info) {
|
if (info) {
|
||||||
this._onConnectionChanged = this._connectionService.onConnectionChanged(e => {
|
this._onConnectionChanged = this._connectionService.onConnectionChanged(e => {
|
||||||
if (e.connectionUri === u) {
|
if (e.connectionUri === u) {
|
||||||
@@ -115,7 +115,7 @@ export class DashboardInput extends EditorInput {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let parentNode = this._parentContainer.parentNode;
|
const parentNode = this._parentContainer.parentNode;
|
||||||
if (parentNode) {
|
if (parentNode) {
|
||||||
parentNode.removeChild(this._parentContainer);
|
parentNode.removeChild(this._parentContainer);
|
||||||
this._parentContainer = null;
|
this._parentContainer = null;
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* 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 { Extensions, IDashboardWidgetRegistry } from 'sql/platform/dashboard/common/widgetRegistry';
|
||||||
|
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
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 {
|
export function generateDashboardWidgetSchema(type?: 'database' | 'server', extension?: boolean): IJSONSchema {
|
||||||
let schemas;
|
let schemas;
|
||||||
if (extension) {
|
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 = type === 'server' ? widgetRegistry.serverWidgetSchema.properties : type === 'database' ? widgetRegistry.databaseWidgetSchema.properties : widgetRegistry.allSchema.properties;
|
||||||
schemas = mixin(schemas, extensionSchemas, true);
|
schemas = mixin(schemas, extensionSchemas, true);
|
||||||
} else {
|
} else {
|
||||||
@@ -64,7 +65,7 @@ export function generateDashboardWidgetSchema(type?: 'database' | 'server', exte
|
|||||||
export function generateDashboardGridLayoutSchema(type?: 'database' | 'server', extension?: boolean): IJSONSchema {
|
export function generateDashboardGridLayoutSchema(type?: 'database' | 'server', extension?: boolean): IJSONSchema {
|
||||||
let schemas;
|
let schemas;
|
||||||
if (extension) {
|
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 = type === 'server' ? widgetRegistry.serverWidgetSchema.properties : type === 'database' ? widgetRegistry.databaseWidgetSchema.properties : widgetRegistry.allSchema.properties;
|
||||||
schemas = mixin(schemas, extensionSchemas, true);
|
schemas = mixin(schemas, extensionSchemas, true);
|
||||||
} else {
|
} else {
|
||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
import { OnInit, Inject, forwardRef, ChangeDetectorRef, ElementRef } from '@angular/core';
|
import { OnInit, Inject, forwardRef, ChangeDetectorRef, ElementRef } from '@angular/core';
|
||||||
|
|
||||||
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
import { DashboardPage } from 'sql/workbench/parts/dashboard/common/dashboardPage.component';
|
||||||
import { BreadcrumbClass } from 'sql/parts/dashboard/services/breadcrumb.service';
|
import { BreadcrumbClass } from 'sql/workbench/parts/dashboard/services/breadcrumb.service';
|
||||||
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
|
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
|
||||||
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
import { DashboardServiceInterface } from 'sql/workbench/parts/dashboard/services/dashboardServiceInterface.service';
|
||||||
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
import { IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
||||||
|
|
||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
import { OnInit, Inject, forwardRef, ChangeDetectorRef, ElementRef } from '@angular/core';
|
import { OnInit, Inject, forwardRef, ChangeDetectorRef, ElementRef } from '@angular/core';
|
||||||
|
|
||||||
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
import { DashboardPage } from 'sql/workbench/parts/dashboard/common/dashboardPage.component';
|
||||||
import { BreadcrumbClass } from 'sql/parts/dashboard/services/breadcrumb.service';
|
import { BreadcrumbClass } from 'sql/workbench/parts/dashboard/services/breadcrumb.service';
|
||||||
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
|
import { IBreadcrumbService } from 'sql/base/browser/ui/breadcrumb/interfaces';
|
||||||
import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget';
|
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
|
||||||
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 { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
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);
|
super(dashboardService, el, _cd, instantiationService, notificationService, angularEventingService, configurationService);
|
||||||
|
|
||||||
// special-case handling for MSSQL data provider
|
// special-case handling for MSSQL data provider
|
||||||
let connInfo = this.dashboardService.connectionManagementService.connectionInfo;
|
const connInfo = this.dashboardService.connectionManagementService.connectionInfo;
|
||||||
if (connInfo && connInfo.providerId === 'MSSQL') {
|
if (connInfo && connInfo.providerId === 'MSSQL') {
|
||||||
// revert back to default database
|
// revert back to default database
|
||||||
this._letDashboardPromise = this.dashboardService.connectionManagementService.changeDatabase('master').then();
|
this._letDashboardPromise = this.dashboardService.connectionManagementService.changeDatabase('master').then();
|
||||||
@@ -2,9 +2,10 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as nls from 'vs/nls';
|
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 {
|
export interface IPropertiesConfig {
|
||||||
edition: number | Array<number>;
|
edition: number | Array<number>;
|
||||||
@@ -73,7 +74,7 @@ export const serverDashboardPropertiesSchema: IJSONSchema = {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
let defaultVal = [
|
const defaultVal = [
|
||||||
{
|
{
|
||||||
name: 'Tasks',
|
name: 'Tasks',
|
||||||
widget: {
|
widget: {
|
||||||
@@ -24,7 +24,7 @@ export class BreadcrumbService implements IBreadcrumbService {
|
|||||||
private itemBreadcrums: MenuItem[];
|
private itemBreadcrums: MenuItem[];
|
||||||
private _currentPage: BreadcrumbClass;
|
private _currentPage: BreadcrumbClass;
|
||||||
|
|
||||||
constructor( @Inject(forwardRef(() => CommonServiceInterface)) private commonService: DashboardServiceInterface) {
|
constructor(@Inject(forwardRef(() => CommonServiceInterface)) private commonService: DashboardServiceInterface) {
|
||||||
this.commonService.onUpdatePage(() => {
|
this.commonService.onUpdatePage(() => {
|
||||||
this.setBreadcrumbs(this._currentPage);
|
this.setBreadcrumbs(this._currentPage);
|
||||||
});
|
});
|
||||||
@@ -34,13 +34,13 @@ export class BreadcrumbService implements IBreadcrumbService {
|
|||||||
public setBreadcrumbs(page: BreadcrumbClass) {
|
public setBreadcrumbs(page: BreadcrumbClass) {
|
||||||
this._currentPage = page;
|
this._currentPage = page;
|
||||||
this.itemBreadcrums = [];
|
this.itemBreadcrums = [];
|
||||||
let refList: MenuItem[] = this.getBreadcrumbsLink(page);
|
const refList: MenuItem[] = this.getBreadcrumbsLink(page);
|
||||||
this.breadcrumbItem.next(refList);
|
this.breadcrumbItem.next(refList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private getBreadcrumbsLink(page: BreadcrumbClass): MenuItem[] {
|
private getBreadcrumbsLink(page: BreadcrumbClass): MenuItem[] {
|
||||||
this.itemBreadcrums = [];
|
this.itemBreadcrums = [];
|
||||||
let profile = this.commonService.connectionManagementService.connectionInfo.connectionProfile;
|
const profile = this.commonService.connectionManagementService.connectionInfo.connectionProfile;
|
||||||
this.itemBreadcrums.push({ label: nls.localize('homeCrumb', 'Home') });
|
this.itemBreadcrums.push({ label: nls.localize('homeCrumb', 'Home') });
|
||||||
switch (page) {
|
switch (page) {
|
||||||
case BreadcrumbClass.DatabasePage:
|
case BreadcrumbClass.DatabasePage:
|
||||||
@@ -17,7 +17,7 @@ import { IQueryManagementService } from 'sql/platform/query/common/queryManageme
|
|||||||
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
||||||
import { AngularEventType, IAngularEvent, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
import { AngularEventType, IAngularEvent, IAngularEventingService } from 'sql/platform/angularEventing/common/angularEventingService';
|
||||||
import { IDashboardTab } from 'sql/platform/dashboard/common/dashboardRegistry';
|
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';
|
import { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
|
|
||||||
/* VS imports */
|
/* VS imports */
|
||||||
@@ -79,7 +79,7 @@ export class ObjectMetadataWrapper implements ObjectMetadata {
|
|||||||
|
|
||||||
// otherwise compare the schema
|
// otherwise compare the schema
|
||||||
} else {
|
} else {
|
||||||
let schemaCompare: number = metadata1.schema && metadata2.schema
|
const schemaCompare: number = metadata1.schema && metadata2.schema
|
||||||
? metadata1.schema.localeCompare(metadata2.schema)
|
? metadata1.schema.localeCompare(metadata2.schema)
|
||||||
// schemas are not expected to be undefined, but if they are then compare using object names
|
// schemas are not expected to be undefined, but if they are then compare using object names
|
||||||
: 0;
|
: 0;
|
||||||
@@ -172,7 +172,7 @@ export class ExplorerController extends TreeDefaults.DefaultController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected onEnter(tree: tree.ITree, event: IKeyboardEvent): boolean {
|
protected onEnter(tree: tree.ITree, event: IKeyboardEvent): boolean {
|
||||||
let result = super.onEnter(tree, event);
|
const result = super.onEnter(tree, event);
|
||||||
if (result) {
|
if (result) {
|
||||||
const focus = tree.getFocus();
|
const focus = tree.getFocus();
|
||||||
if (focus && !(focus instanceof ObjectMetadataWrapper)) {
|
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 {
|
public renderTemplate(tree: tree.ITree, templateId: string, container: HTMLElement): IListTemplate {
|
||||||
let row = $('.list-row');
|
const row = $('.list-row');
|
||||||
let label = $('.label');
|
const label = $('.label');
|
||||||
|
|
||||||
let icon: HTMLElement;
|
let icon: HTMLElement;
|
||||||
if (templateId === TEMPLATEIDS.object) {
|
if (templateId === TEMPLATEIDS.object) {
|
||||||
@@ -313,7 +313,7 @@ export class ExplorerFilter implements tree.IFilter {
|
|||||||
if (!this._filterString) {
|
if (!this._filterString) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
let filterString = this._filterString.trim().toLowerCase();
|
const filterString = this._filterString.trim().toLowerCase();
|
||||||
return element.databaseName.toLowerCase().includes(filterString);
|
return element.databaseName.toLowerCase().includes(filterString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ export class ExplorerFilter implements tree.IFilter {
|
|||||||
let metadataType: MetadataType;
|
let metadataType: MetadataType;
|
||||||
|
|
||||||
if (filterString.includes(':')) {
|
if (filterString.includes(':')) {
|
||||||
let filterArray = filterString.split(':');
|
const filterArray = filterString.split(':');
|
||||||
|
|
||||||
if (filterArray.length > 2) {
|
if (filterArray.length > 2) {
|
||||||
filterString = filterArray.slice(1, filterArray.length - 1).join(':');
|
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[] {
|
function getExplorerActions(element: TreeResource, instantiationService: IInstantiationService, capabilitiesService: ICapabilitiesService, info: ConnectionManagementInfo): IAction[] {
|
||||||
let actions: IAction[] = [];
|
const actions: IAction[] = [];
|
||||||
|
|
||||||
if (element instanceof ObjectMetadataWrapper) {
|
if (element instanceof ObjectMetadataWrapper) {
|
||||||
if (element.metadataType === MetadataType.View || element.metadataType === MetadataType.Table) {
|
if (element.metadataType === MetadataType.View || element.metadataType === MetadataType.Table) {
|
||||||
@@ -430,7 +430,7 @@ class ExplorerScriptSelectAction extends ScriptSelectAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public run(actionContext: BaseActionContext): Promise<boolean> {
|
public run(actionContext: BaseActionContext): Promise<boolean> {
|
||||||
let promise = super.run(actionContext);
|
const promise = super.run(actionContext);
|
||||||
this.progressService.showWhile(promise);
|
this.progressService.showWhile(promise);
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
@@ -449,7 +449,7 @@ class ExplorerScriptCreateAction extends ScriptCreateAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public run(actionContext: BaseActionContext): Promise<boolean> {
|
public run(actionContext: BaseActionContext): Promise<boolean> {
|
||||||
let promise = super.run(actionContext);
|
const promise = super.run(actionContext);
|
||||||
this.progressService.showWhile(promise);
|
this.progressService.showWhile(promise);
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
@@ -468,7 +468,7 @@ class ExplorerScriptAlterAction extends ScriptAlterAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public run(actionContext: BaseActionContext): Promise<boolean> {
|
public run(actionContext: BaseActionContext): Promise<boolean> {
|
||||||
let promise = super.run(actionContext);
|
const promise = super.run(actionContext);
|
||||||
this.progressService.showWhile(promise);
|
this.progressService.showWhile(promise);
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
@@ -487,7 +487,7 @@ class ExplorerScriptExecuteAction extends ScriptExecuteAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public run(actionContext: BaseActionContext): Promise<boolean> {
|
public run(actionContext: BaseActionContext): Promise<boolean> {
|
||||||
let promise = super.run(actionContext);
|
const promise = super.run(actionContext);
|
||||||
this.progressService.showWhile(promise);
|
this.progressService.showWhile(promise);
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
@@ -504,7 +504,7 @@ class ExplorerManageAction extends ManageAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public run(actionContext: ManageActionContext): Promise<boolean> {
|
public run(actionContext: ManageActionContext): Promise<boolean> {
|
||||||
let promise = super.run(actionContext);
|
const promise = super.run(actionContext);
|
||||||
this._progressService.showWhile(promise);
|
this._progressService.showWhile(promise);
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ import 'vs/css!./media/explorerWidget';
|
|||||||
import { Component, Inject, forwardRef, ChangeDetectorRef, OnInit, ViewChild, ElementRef } from '@angular/core';
|
import { Component, Inject, forwardRef, ChangeDetectorRef, OnInit, ViewChild, ElementRef } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
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 { CommonServiceInterface } from 'sql/services/common/commonServiceInterface.service';
|
||||||
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
||||||
import { ExplorerFilter, ExplorerRenderer, ExplorerDataSource, ExplorerController, ObjectMetadataWrapper, ExplorerModel } from './explorerTree';
|
import { ExplorerFilter, ExplorerRenderer, ExplorerDataSource, ExplorerController, ObjectMetadataWrapper, ExplorerModel } from './explorerTree';
|
||||||
@@ -31,7 +31,7 @@ import { ScrollbarVisibility } from 'vs/base/common/scrollable';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'explorer-widget',
|
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 {
|
export class ExplorerWidget extends DashboardWidget implements IDashboardWidget, OnInit {
|
||||||
private _input: InputBox;
|
private _input: InputBox;
|
||||||
@@ -75,9 +75,9 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this._inited = true;
|
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,
|
placeholder: placeholderLabel,
|
||||||
ariaLabel: placeholderLabel
|
ariaLabel: placeholderLabel
|
||||||
};
|
};
|
||||||
@@ -106,7 +106,7 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
this._register(toDisposableSubscription(this._bootstrap.metadataService.metadata.subscribe(
|
this._register(toDisposableSubscription(this._bootstrap.metadataService.metadata.subscribe(
|
||||||
data => {
|
data => {
|
||||||
if (data) {
|
if (data) {
|
||||||
let objectData = ObjectMetadataWrapper.createFromObjectMetadata(data.objectMetadata);
|
const objectData = ObjectMetadataWrapper.createFromObjectMetadata(data.objectMetadata);
|
||||||
objectData.sort(ObjectMetadataWrapper.sort);
|
objectData.sort(ObjectMetadataWrapper.sort);
|
||||||
this._treeDataSource.data = objectData;
|
this._treeDataSource.data = objectData;
|
||||||
this._tree.setInput(new ExplorerModel());
|
this._tree.setInput(new ExplorerModel());
|
||||||
@@ -117,13 +117,13 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
} else {
|
} else {
|
||||||
let currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
|
const currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
|
||||||
this._register(toDisposableSubscription(this._bootstrap.metadataService.databaseNames.subscribe(
|
this._register(toDisposableSubscription(this._bootstrap.metadataService.databaseNames.subscribe(
|
||||||
data => {
|
data => {
|
||||||
// Handle the case where there is no metadata service
|
// Handle the case where there is no metadata service
|
||||||
data = data || [];
|
data = data || [];
|
||||||
let profileData = data.map(d => {
|
const profileData = data.map(d => {
|
||||||
let profile = new ConnectionProfile(this.capabilitiesService, currentProfile);
|
const profile = new ConnectionProfile(this.capabilitiesService, currentProfile);
|
||||||
profile.databaseName = d;
|
profile.databaseName = d;
|
||||||
return profile;
|
return profile;
|
||||||
});
|
});
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import { registerDashboardWidget } from 'sql/platform/dashboard/common/widgetRegistry';
|
import { registerDashboardWidget } from 'sql/platform/dashboard/common/widgetRegistry';
|
||||||
|
|
||||||
let explorerSchema: IJSONSchema = {
|
const explorerSchema: IJSONSchema = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { Action } from 'vs/base/common/actions';
|
import { Action } from 'vs/base/common/actions';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|
||||||
@@ -2,15 +2,16 @@
|
|||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Component, Inject, forwardRef, AfterContentInit,
|
Component, Inject, forwardRef, AfterContentInit,
|
||||||
ComponentFactoryResolver, ViewChild, ChangeDetectorRef, Injector
|
ComponentFactoryResolver, ViewChild, ChangeDetectorRef, Injector
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { Observable } from 'rxjs/Observable';
|
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 { 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 { InsightAction, InsightActionContext } from 'sql/workbench/common/actions';
|
||||||
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
||||||
import { IInsightsConfig, IInsightsView } from './interfaces';
|
import { IInsightsConfig, IInsightsView } from './interfaces';
|
||||||
@@ -85,9 +86,9 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
|
|
||||||
this._parseConfig().then(() => {
|
this._parseConfig().then(() => {
|
||||||
if (!this._checkStorage()) {
|
if (!this._checkStorage()) {
|
||||||
let promise = this._runQuery();
|
const promise = this._runQuery();
|
||||||
this.queryObv = Observable.fromPromise(promise);
|
this.queryObv = Observable.fromPromise(promise);
|
||||||
let cancelablePromise = createCancelablePromise(() => {
|
const cancelablePromise = createCancelablePromise(() => {
|
||||||
return promise.then(
|
return promise.then(
|
||||||
result => {
|
result => {
|
||||||
this._loading = false;
|
this._loading = false;
|
||||||
@@ -150,7 +151,7 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
get actions(): Array<Action> {
|
get actions(): Array<Action> {
|
||||||
let actions: Array<Action> = [];
|
const actions: Array<Action> = [];
|
||||||
if (this.insightConfig.details && (this.insightConfig.details.query || this.insightConfig.details.queryFile)) {
|
if (this.insightConfig.details && (this.insightConfig.details.query || this.insightConfig.details.queryFile)) {
|
||||||
actions.push(this.instantiationService.createInstance(InsightAction, InsightAction.ID, InsightAction.LABEL));
|
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 {
|
private _storeResult(result: SimpleExecuteResult): SimpleExecuteResult {
|
||||||
if (this.insightConfig.cacheId) {
|
if (this.insightConfig.cacheId) {
|
||||||
let currentTime = new Date();
|
const currentTime = new Date();
|
||||||
let store: IStorageResult = {
|
const store: IStorageResult = {
|
||||||
date: currentTime.toString(),
|
date: currentTime.toString(),
|
||||||
results: result
|
results: result
|
||||||
};
|
};
|
||||||
@@ -181,10 +182,10 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
|
|
||||||
private _checkStorage(): boolean {
|
private _checkStorage(): boolean {
|
||||||
if (this.insightConfig.cacheId) {
|
if (this.insightConfig.cacheId) {
|
||||||
let storage = this.storageService.get(this._getStorageKey(), StorageScope.GLOBAL);
|
const storage = this.storageService.get(this._getStorageKey(), StorageScope.GLOBAL);
|
||||||
if (storage) {
|
if (storage) {
|
||||||
let storedResult: IStorageResult = JSON.parse(storage);
|
const storedResult: IStorageResult = JSON.parse(storage);
|
||||||
let date = new Date(storedResult.date);
|
const date = new Date(storedResult.date);
|
||||||
this.lastUpdated = nls.localize('insights.lastUpdated', "Last Updated: {0} {1}", date.toLocaleTimeString(), date.toLocaleDateString());
|
this.lastUpdated = nls.localize('insights.lastUpdated', "Last Updated: {0} {1}", date.toLocaleTimeString(), date.toLocaleDateString());
|
||||||
this._loading = false;
|
this._loading = false;
|
||||||
if (this._init) {
|
if (this._init) {
|
||||||
@@ -235,10 +236,10 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
return;
|
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);
|
const componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory, 0, this._injector);
|
||||||
let componentInstance = componentRef.instance;
|
const componentInstance = componentRef.instance;
|
||||||
|
|
||||||
// check if the setter is defined
|
// check if the setter is defined
|
||||||
if (componentInstance.setConfig) {
|
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.
|
// 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.
|
// 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.
|
// 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') {
|
if (isAccessibilitySupportOn && this._typeKey !== 'count') {
|
||||||
this._typeKey = 'table';
|
this._typeKey = 'table';
|
||||||
}
|
}
|
||||||
@@ -297,7 +298,7 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
if (types.isStringArray(this.insightConfig.query)) {
|
if (types.isStringArray(this.insightConfig.query)) {
|
||||||
this.insightConfig.query = this.insightConfig.query.join(' ');
|
this.insightConfig.query = this.insightConfig.query.join(' ');
|
||||||
} else if (this.insightConfig.queryFile) {
|
} else if (this.insightConfig.queryFile) {
|
||||||
let filePath = await resolveQueryFilePath(this.insightConfig.queryFile,
|
const filePath = await resolveQueryFilePath(this.insightConfig.queryFile,
|
||||||
this._workspaceContextService,
|
this._workspaceContextService,
|
||||||
this._configurationResolverService);
|
this._configurationResolverService);
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user