Layer grid code (#5029)
* layer grid * errors; edit data still not showing up * fix edit data * fix tab spaces
@@ -107,10 +107,8 @@ const vscodeResources = [
|
|||||||
'out-build/sql/workbench/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/workbench/parts/grid/media/**',
|
||||||
'out-build/sql/parts/grid/load/loadJquery.js',
|
'out-build/sql/workbench/parts/grid/views/**/*.html',
|
||||||
'out-build/sql/parts/grid/media/**',
|
|
||||||
'out-build/sql/parts/grid/views/**/*.html',
|
|
||||||
'out-build/sql/parts/tasks/**/*.html',
|
'out-build/sql/parts/tasks/**/*.html',
|
||||||
'out-build/sql/parts/taskHistory/viewlet/media/**',
|
'out-build/sql/parts/taskHistory/viewlet/media/**',
|
||||||
'out-build/sql/parts/jobManagement/common/media/*.svg',
|
'out-build/sql/parts/jobManagement/common/media/*.svg',
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ classes should alter those!
|
|||||||
|
|
||||||
.slick-header-column.ui-state-default {
|
.slick-header-column.ui-state-default {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
|
||||||
/*box-sizing: content-box !important; use this for Firefox! */
|
/*box-sizing: content-box !important; use this for Firefox! */
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
-o-text-overflow: ellipsis;
|
-o-text-overflow: ellipsis;
|
||||||
@@ -47,7 +46,6 @@ classes should alter those!
|
|||||||
}
|
}
|
||||||
|
|
||||||
.slick-sort-indicator {
|
.slick-sort-indicator {
|
||||||
display: inline-block;
|
|
||||||
width: 8px;
|
width: 8px;
|
||||||
height: 5px;
|
height: 5px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
@@ -116,9 +114,6 @@ classes should alter those!
|
|||||||
border-top-color: silver;
|
border-top-color: silver;
|
||||||
}
|
}
|
||||||
|
|
||||||
.slick-group {
|
|
||||||
}
|
|
||||||
|
|
||||||
.slick-group-toggle {
|
.slick-group-toggle {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,10 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!./media/table';
|
import 'vs/css!./media/table';
|
||||||
|
import 'vs/css!./media/slick.grid';
|
||||||
|
import 'vs/css!./media/slickColorTheme';
|
||||||
|
import 'vs/css!./media/slickGrid';
|
||||||
|
|
||||||
import { TableDataView } from './tableDataView';
|
import { TableDataView } from './tableDataView';
|
||||||
import { IDisposableDataProvider, ITableSorter, ITableMouseEvent, ITableConfiguration, ITableStyles } from 'sql/base/browser/ui/table/interfaces';
|
import { IDisposableDataProvider, ITableSorter, ITableMouseEvent, ITableConfiguration, ITableStyles } from 'sql/base/browser/ui/table/interfaces';
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import { IQueryModelService } from 'sql/platform/query/common/queryModel';
|
|||||||
import { bootstrapAngular } from 'sql/platform/bootstrap/node/bootstrapService';
|
import { bootstrapAngular } from 'sql/platform/bootstrap/node/bootstrapService';
|
||||||
import { BareResultsGridInfo } from 'sql/parts/query/editor/queryResultsEditor';
|
import { BareResultsGridInfo } from 'sql/parts/query/editor/queryResultsEditor';
|
||||||
import { IEditDataComponentParams } from 'sql/platform/bootstrap/node/bootstrapParams';
|
import { IEditDataComponentParams } from 'sql/platform/bootstrap/node/bootstrapParams';
|
||||||
import { EditDataModule } from 'sql/parts/grid/views/editData/editData.module';
|
import { EditDataModule } from 'sql/workbench/parts/grid/views/editData/editData.module';
|
||||||
import { EDITDATA_SELECTOR } from 'sql/parts/grid/views/editData/editData.component';
|
import { EDITDATA_SELECTOR } from 'sql/workbench/parts/grid/views/editData/editData.component';
|
||||||
import { EditDataResultsInput } from 'sql/parts/editData/common/editDataResultsInput';
|
import { EditDataResultsInput } from 'sql/parts/editData/common/editDataResultsInput';
|
||||||
import { CancellationToken } from 'vs/base/common/cancellation';
|
import { CancellationToken } from 'vs/base/common/cancellation';
|
||||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
export let ResizeContents = 'ResizeContents';
|
|
||||||
export let RefreshContents = 'RefreshContents';
|
|
||||||
export let ToggleResultPane = 'ToggleResultPane';
|
|
||||||
export let ToggleMessagePane = 'ToggleMessagePane';
|
|
||||||
export let CopySelection = 'CopySelection';
|
|
||||||
export let CopyWithHeaders = 'CopyWithHeaders';
|
|
||||||
export let CopyMessagesSelection = 'CopyMessagesSelection';
|
|
||||||
export let SelectAll = 'SelectAll';
|
|
||||||
export let SelectAllMessages = 'SelectAllMessages';
|
|
||||||
export let SaveAsCsv = 'SaveAsCSV';
|
|
||||||
export let SaveAsJSON = 'SaveAsJSON';
|
|
||||||
export let SaveAsExcel = 'SaveAsExcel';
|
|
||||||
export let SaveAsXML = 'SaveAsXML';
|
|
||||||
export let ViewAsChart = 'ViewAsChart';
|
|
||||||
export let GoToNextQueryOutputTab = 'GoToNextQueryOutputTab';
|
|
||||||
export let GoToNextGrid = 'GoToNextGrid';
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
const jQuery = require('jquery');
|
|
||||||
const $ = jQuery;
|
|
||||||
@@ -3,14 +3,10 @@
|
|||||||
* 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/grid/media/slickColorTheme';
|
import 'vs/css!sql/workbench/parts/grid/media/flexbox';
|
||||||
import 'vs/css!sql/parts/grid/media/flexbox';
|
import 'vs/css!sql/workbench/parts/grid/media/styles';
|
||||||
import 'vs/css!sql/parts/grid/media/styles';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slick.grid';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slickGrid';
|
|
||||||
import 'vs/css!../common/media/jobs';
|
import 'vs/css!../common/media/jobs';
|
||||||
import 'vs/css!sql/media/icons/common-icons';
|
import 'vs/css!sql/media/icons/common-icons';
|
||||||
import 'vs/css!sql/base/browser/ui/table/media/table';
|
|
||||||
|
|
||||||
import * as dom from 'vs/base/browser/dom';
|
import * as dom from 'vs/base/browser/dom';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|||||||
@@ -3,14 +3,10 @@
|
|||||||
* 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/grid/media/slickColorTheme';
|
import 'vs/css!sql/workbench/parts/grid/media/flexbox';
|
||||||
import 'vs/css!sql/parts/grid/media/flexbox';
|
import 'vs/css!sql/workbench/parts/grid/media/styles';
|
||||||
import 'vs/css!sql/parts/grid/media/styles';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slick.grid';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slickGrid';
|
|
||||||
import 'vs/css!../common/media/jobs';
|
import 'vs/css!../common/media/jobs';
|
||||||
import 'vs/css!sql/media/icons/common-icons';
|
import 'vs/css!sql/media/icons/common-icons';
|
||||||
import 'vs/css!sql/base/browser/ui/table/media/table';
|
|
||||||
|
|
||||||
import * as azdata from 'azdata';
|
import * as azdata from 'azdata';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|||||||
@@ -3,14 +3,10 @@
|
|||||||
* 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/grid/media/slickColorTheme';
|
import 'vs/css!sql/workbench/parts/grid/media/flexbox';
|
||||||
import 'vs/css!sql/parts/grid/media/flexbox';
|
import 'vs/css!sql/workbench/parts/grid/media/styles';
|
||||||
import 'vs/css!sql/parts/grid/media/styles';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slick.grid';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slickGrid';
|
|
||||||
import 'vs/css!../common/media/jobs';
|
import 'vs/css!../common/media/jobs';
|
||||||
import 'vs/css!sql/media/icons/common-icons';
|
import 'vs/css!sql/media/icons/common-icons';
|
||||||
import 'vs/css!sql/base/browser/ui/table/media/table';
|
|
||||||
|
|
||||||
import * as dom from 'vs/base/browser/dom';
|
import * as dom from 'vs/base/browser/dom';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
|||||||
@@ -3,14 +3,10 @@
|
|||||||
* 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/grid/media/slickColorTheme';
|
import 'vs/css!sql/workbench/parts/grid/media/flexbox';
|
||||||
import 'vs/css!sql/parts/grid/media/flexbox';
|
import 'vs/css!sql/workbench/parts/grid/media/styles';
|
||||||
import 'vs/css!sql/parts/grid/media/styles';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slick.grid';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slickGrid';
|
|
||||||
import 'vs/css!../common/media/jobs';
|
import 'vs/css!../common/media/jobs';
|
||||||
import 'vs/css!sql/media/icons/common-icons';
|
import 'vs/css!sql/media/icons/common-icons';
|
||||||
import 'vs/css!sql/base/browser/ui/table/media/table';
|
|
||||||
|
|
||||||
import * as dom from 'vs/base/browser/dom';
|
import * as dom from 'vs/base/browser/dom';
|
||||||
import * as azdata from 'azdata';
|
import * as azdata from 'azdata';
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
|||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { Dimension } from 'vs/base/browser/dom';
|
import { Dimension } from 'vs/base/browser/dom';
|
||||||
import { textFormatter, slickGridDataItemColumnValueExtractor } from 'sql/parts/grid/services/sharedServices';
|
import { textFormatter, slickGridDataItemColumnValueExtractor } from 'sql/base/browser/ui/table/formatters';
|
||||||
import { PROFILER_MAX_MATCHES } from 'sql/parts/profiler/editor/controller/profilerFindWidget';
|
import { PROFILER_MAX_MATCHES } from 'sql/parts/profiler/editor/controller/profilerFindWidget';
|
||||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||||
import { IStatusbarService, StatusbarAlignment, IStatusbarEntry } from 'vs/platform/statusbar/common/statusbar';
|
import { IStatusbarService, StatusbarAlignment } from 'vs/platform/statusbar/common/statusbar';
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
|
|
||||||
export interface ProfilerTableViewState {
|
export interface ProfilerTableViewState {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { ProfilerTableEditor, ProfilerTableViewState } from './controller/profil
|
|||||||
import * as Actions from 'sql/parts/profiler/contrib/profilerActions';
|
import * as Actions from 'sql/parts/profiler/contrib/profilerActions';
|
||||||
import { CONTEXT_PROFILER_EDITOR, PROFILER_TABLE_COMMAND_SEARCH } from './interfaces';
|
import { CONTEXT_PROFILER_EDITOR, PROFILER_TABLE_COMMAND_SEARCH } from './interfaces';
|
||||||
import { SelectBox } from 'sql/base/browser/ui/selectBox/selectBox';
|
import { SelectBox } from 'sql/base/browser/ui/selectBox/selectBox';
|
||||||
import { textFormatter, slickGridDataItemColumnValueExtractor } from 'sql/parts/grid/services/sharedServices';
|
import { textFormatter, slickGridDataItemColumnValueExtractor } from 'sql/base/browser/ui/table/formatters';
|
||||||
import { ProfilerResourceEditor } from './profilerResourceEditor';
|
import { ProfilerResourceEditor } from './profilerResourceEditor';
|
||||||
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
||||||
import { ITextModel } from 'vs/editor/common/model';
|
import { ITextModel } from 'vs/editor/common/model';
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
import 'vs/css!sql/media/overwriteVsIcons';
|
import 'vs/css!sql/media/overwriteVsIcons';
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
import { Registry } from 'vs/platform/registry/common/platform';
|
||||||
import { EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/browser/editor';
|
import { EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/browser/editor';
|
||||||
@@ -28,8 +27,8 @@ import {
|
|||||||
RunQueryKeyboardAction, RunCurrentQueryKeyboardAction, CancelQueryKeyboardAction, RefreshIntellisenseKeyboardAction, ToggleQueryResultsKeyboardAction,
|
RunQueryKeyboardAction, RunCurrentQueryKeyboardAction, CancelQueryKeyboardAction, RefreshIntellisenseKeyboardAction, ToggleQueryResultsKeyboardAction,
|
||||||
RunQueryShortcutAction, RunCurrentQueryWithActualPlanKeyboardAction, FocusOnCurrentQueryKeyboardAction, ParseSyntaxAction
|
RunQueryShortcutAction, RunCurrentQueryWithActualPlanKeyboardAction, FocusOnCurrentQueryKeyboardAction, ParseSyntaxAction
|
||||||
} from 'sql/parts/query/execution/keyboardQueryActions';
|
} from 'sql/parts/query/execution/keyboardQueryActions';
|
||||||
import * as gridActions from 'sql/parts/grid/views/gridActions';
|
import * as gridActions from 'sql/workbench/parts/grid/views/gridActions';
|
||||||
import * as gridCommands from 'sql/parts/grid/views/gridCommands';
|
import * as gridCommands from 'sql/workbench/parts/grid/views/gridCommands';
|
||||||
import { QueryPlanEditor } from 'sql/parts/queryPlan/queryPlanEditor';
|
import { QueryPlanEditor } from 'sql/parts/queryPlan/queryPlanEditor';
|
||||||
import { QueryPlanInput } from 'sql/parts/queryPlan/queryPlanInput';
|
import { QueryPlanInput } from 'sql/parts/queryPlan/queryPlanInput';
|
||||||
import * as Constants from 'sql/parts/query/common/constants';
|
import * as Constants from 'sql/parts/query/common/constants';
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { ITree } from 'vs/base/parts/tree/browser/tree';
|
|||||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
|
|
||||||
import QueryRunner from 'sql/platform/query/common/queryRunner';
|
import QueryRunner from 'sql/platform/query/common/queryRunner';
|
||||||
import { SaveFormat } from 'sql/parts/grid/common/interfaces';
|
import { SaveFormat } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
import { Table } from 'sql/base/browser/ui/table/table';
|
import { Table } from 'sql/base/browser/ui/table/table';
|
||||||
import { GridTableState } from 'sql/parts/query/editor/gridPanel';
|
import { GridTableState } from 'sql/parts/query/editor/gridPanel';
|
||||||
import { QueryEditor } from './queryEditor';
|
import { QueryEditor } from './queryEditor';
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import { Table } from 'sql/base/browser/ui/table/table';
|
|||||||
import { ScrollableSplitView, IView } from 'sql/base/browser/ui/scrollableSplitview/scrollableSplitview';
|
import { ScrollableSplitView, IView } from 'sql/base/browser/ui/scrollableSplitview/scrollableSplitview';
|
||||||
import { MouseWheelSupport } from 'sql/base/browser/ui/table/plugins/mousewheelTableScroll.plugin';
|
import { MouseWheelSupport } from 'sql/base/browser/ui/table/plugins/mousewheelTableScroll.plugin';
|
||||||
import { AutoColumnSize } from 'sql/base/browser/ui/table/plugins/autoSizeColumns.plugin';
|
import { AutoColumnSize } from 'sql/base/browser/ui/table/plugins/autoSizeColumns.plugin';
|
||||||
import { SaveFormat } from 'sql/parts/grid/common/interfaces';
|
import { SaveFormat } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
import { IGridActionContext, SaveResultAction, CopyResultAction, SelectAllGridAction, MaximizeTableAction, RestoreTableAction, ChartDataAction } from 'sql/parts/query/editor/actions';
|
import { IGridActionContext, SaveResultAction, CopyResultAction, SelectAllGridAction, MaximizeTableAction, RestoreTableAction, ChartDataAction } from 'sql/parts/query/editor/actions';
|
||||||
import { CellSelectionModel } from 'sql/base/browser/ui/table/plugins/cellSelectionModel.plugin';
|
import { CellSelectionModel } from 'sql/base/browser/ui/table/plugins/cellSelectionModel.plugin';
|
||||||
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
|
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
|
||||||
import { escape } from 'sql/base/common/strings';
|
import { escape } from 'sql/base/common/strings';
|
||||||
import { hyperLinkFormatter, textFormatter } from 'sql/parts/grid/services/sharedServices';
|
import { hyperLinkFormatter, textFormatter } from 'sql/base/browser/ui/table/formatters';
|
||||||
import { CopyKeybind } from 'sql/base/browser/ui/table/plugins/copyKeybind.plugin';
|
import { CopyKeybind } from 'sql/base/browser/ui/table/plugins/copyKeybind.plugin';
|
||||||
import { AdditionalKeyBindings } from 'sql/base/browser/ui/table/plugins/additionalKeyBindings.plugin';
|
import { AdditionalKeyBindings } from 'sql/base/browser/ui/table/plugins/additionalKeyBindings.plugin';
|
||||||
import { ITableStyles, ITableMouseEvent } from 'sql/base/browser/ui/table/interfaces';
|
import { ITableStyles, ITableMouseEvent } from 'sql/base/browser/ui/table/interfaces';
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
@@ -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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
export class RunTimeInformation {
|
class RunTimeInformation {
|
||||||
runtimePerThreads: RuntimePerThread[];
|
runtimePerThreads: RuntimePerThread[];
|
||||||
public get actualRows(): number {
|
public get actualRows(): number {
|
||||||
let total = 0;
|
let total = 0;
|
||||||
@@ -27,14 +27,14 @@ export class RunTimeInformation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class RuntimePerThread {
|
class RuntimePerThread {
|
||||||
threadId: number;
|
threadId: number;
|
||||||
actualRow: number;
|
actualRow: number;
|
||||||
actualExecutionMode: string;
|
actualExecutionMode: string;
|
||||||
actualExecutions: number;
|
actualExecutions: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class IndexObject {
|
class IndexObject {
|
||||||
database: string;
|
database: string;
|
||||||
schema: string;
|
schema: string;
|
||||||
table: string;
|
table: string;
|
||||||
@@ -53,7 +53,7 @@ export class IndexObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PlanNode {
|
class PlanNode {
|
||||||
root: PlanNode;
|
root: PlanNode;
|
||||||
subtreeCost: number;
|
subtreeCost: number;
|
||||||
private childrenNodes: PlanNode[];
|
private childrenNodes: PlanNode[];
|
||||||
|
|||||||
@@ -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 'vs/css!sql/parts/grid/load/css/qp';
|
import 'vs/css!./media/qp';
|
||||||
|
|
||||||
import { ElementRef, Component, Inject, forwardRef, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
import { ElementRef, Component, Inject, forwardRef, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
||||||
import * as QP from 'html-query-plan';
|
import * as QP from 'html-query-plan';
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
import { ElementRef, Component, Inject, forwardRef, OnDestroy, Input, OnInit } from '@angular/core';
|
|
||||||
import { Subscription, Subject } from 'rxjs/Rx';
|
|
||||||
|
|
||||||
import { PlanXmlParser, PlanNode } from 'sql/parts/queryPlan/planXmlParser';
|
|
||||||
import { TabChild } from 'sql/base/browser/ui/panel/tab.component';
|
|
||||||
import { Table } from 'sql/base/browser/ui/table/table';
|
|
||||||
import { attachTableStyler } from 'sql/platform/theme/common/styler';
|
|
||||||
import { IQueryComponentParams } from 'sql/platform/bootstrap/node/bootstrapParams';
|
|
||||||
import * as GridContentEvents from 'sql/parts/grid/common/gridContentEvents';
|
|
||||||
import { DataService } from 'sql/parts/grid/services/dataService';
|
|
||||||
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
|
||||||
|
|
||||||
import { localize } from 'vs/nls';
|
|
||||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
|
||||||
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
|
||||||
|
|
||||||
export const TOP_OPERATIONS_SELECTOR: string = 'top-operations-component';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: TOP_OPERATIONS_SELECTOR,
|
|
||||||
template: '',
|
|
||||||
providers: [{ provide: TabChild, useExisting: forwardRef(() => TopOperationsComponent) }]
|
|
||||||
})
|
|
||||||
export class TopOperationsComponent extends TabChild implements OnDestroy, OnInit {
|
|
||||||
|
|
||||||
private _operations: Array<PlanNode> = [];
|
|
||||||
private _table: Table<any>;
|
|
||||||
private _dataService: DataService;
|
|
||||||
private _columns: Array<Slick.Column<any>> = [
|
|
||||||
{ name: localize('topOperations.operation', 'Operation'), field: 'operation' },
|
|
||||||
{ name: localize('topOperations.object', 'Object'), field: 'object' },
|
|
||||||
{ name: localize('topOperations.estCost', 'Est Cost'), field: 'estCost' },
|
|
||||||
{ name: localize('topOperations.estSubtreeCost', 'Est Subtree Cost'), field: 'estSubtreeCost' },
|
|
||||||
{ name: localize('topOperations.actualRows', 'Actual Rows'), field: 'actualRows' },
|
|
||||||
{ name: localize('topOperations.estRows', 'Est Rows'), field: 'estRows' },
|
|
||||||
{ name: localize('topOperations.actualExecutions', 'Actual Executions'), field: 'actualExecutions' },
|
|
||||||
{ name: localize('topOperations.estCPUCost', 'Est CPU Cost'), field: 'estCPUCost' },
|
|
||||||
{ name: localize('topOperations.estIOCost', 'Est IO Cost'), field: 'estIOCost' },
|
|
||||||
{ name: localize('topOperations.parallel', 'Parallel'), field: 'parallel' },
|
|
||||||
{ name: localize('topOperations.actualRebinds', 'Actual Rebinds'), field: 'actualRebinds' },
|
|
||||||
{ name: localize('topOperations.estRebinds', 'Est Rebinds'), field: 'estRebinds' },
|
|
||||||
{ name: localize('topOperations.actualRewinds', 'Actual Rewinds'), field: 'actualRewinds' },
|
|
||||||
{ name: localize('topOperations.estRewinds', 'Est Rewinds'), field: 'estRewinds' },
|
|
||||||
{ name: localize('topOperations.partitioned', 'Partitioned'), field: 'partitioned' }
|
|
||||||
];
|
|
||||||
|
|
||||||
@Input() public queryParameters: IQueryComponentParams;
|
|
||||||
|
|
||||||
private _disposables: Array<IDisposable> = [];
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
@Inject(forwardRef(() => ElementRef)) private _el: ElementRef,
|
|
||||||
@Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService
|
|
||||||
) {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this._dataService = this.queryParameters.dataService;
|
|
||||||
this.subscribeWithDispose(this._dataService.gridContentObserver, (type) => {
|
|
||||||
switch (type) {
|
|
||||||
case GridContentEvents.ResizeContents:
|
|
||||||
this.layout();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnDestroy() {
|
|
||||||
dispose(this._disposables);
|
|
||||||
}
|
|
||||||
|
|
||||||
public set planXml(val: string) {
|
|
||||||
let parser: PlanXmlParser = new PlanXmlParser(val);
|
|
||||||
this._operations = parser.topOperations;
|
|
||||||
let data = this._operations.map(i => {
|
|
||||||
return {
|
|
||||||
operation: i.title,
|
|
||||||
object: i.indexObject.title,
|
|
||||||
estCost: i.estimatedOperatorCost,
|
|
||||||
estSubtreeCost: i.subtreeCost,
|
|
||||||
actualRows: i.runtimeInfo.actualRows,
|
|
||||||
estRows: i.estimateRows,
|
|
||||||
actualExecutions: i.runtimeInfo.actualExecutions,
|
|
||||||
estCPUCost: i.estimateCpu,
|
|
||||||
estIOCost: i.estimateIo,
|
|
||||||
parallel: i.parallel,
|
|
||||||
actualRebinds: '',
|
|
||||||
estRebinds: i.estimateRebinds,
|
|
||||||
actualRewinds: '',
|
|
||||||
estRewinds: i.estimateRewinds,
|
|
||||||
partitioned: i.partitioned
|
|
||||||
};
|
|
||||||
});
|
|
||||||
if (!this._table) {
|
|
||||||
let columns = this._columns.map((column) => {
|
|
||||||
column.rerenderOnResize = true;
|
|
||||||
return column;
|
|
||||||
});
|
|
||||||
this._table = new Table(this._el.nativeElement, { dataProvider: data, columns });
|
|
||||||
this._disposables.push(attachTableStyler(this._table, this.themeService));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public layout(): void {
|
|
||||||
if (this._table) {
|
|
||||||
setTimeout(() => {
|
|
||||||
this._table.resizeCanvas();
|
|
||||||
this._table.autosizeColumns();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected subscribeWithDispose<T>(subject: Subject<T>, event: (value: any) => void): void {
|
|
||||||
let sub: Subscription = subject.subscribe(event);
|
|
||||||
this.toDispose.push(toDisposableSubscription(sub));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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 { DataService } from 'sql/parts/grid/services/dataService';
|
import { DataService } from 'sql/workbench/parts/grid/services/dataService';
|
||||||
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
|
||||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
import { ConnectionContextKey } from 'sql/workbench/parts/connection/common/connectionContextKey';
|
import { ConnectionContextKey } from 'sql/workbench/parts/connection/common/connectionContextKey';
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import * as LocalizedConstants from 'sql/parts/query/common/localizedConstants';
|
|||||||
import * as WorkbenchUtils from 'sql/workbench/common/sqlWorkbenchUtils';
|
import * as WorkbenchUtils from 'sql/workbench/common/sqlWorkbenchUtils';
|
||||||
import { SaveResultsRequestParams } from 'azdata';
|
import { SaveResultsRequestParams } from 'azdata';
|
||||||
import { IQueryManagementService } from 'sql/platform/query/common/queryManagement';
|
import { IQueryManagementService } from 'sql/platform/query/common/queryManagement';
|
||||||
import { ISaveRequest, SaveFormat } from 'sql/parts/grid/common/interfaces';
|
import { ISaveRequest, SaveFormat } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
|
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import QueryRunner from 'sql/platform/query/common/queryRunner';
|
import QueryRunner from 'sql/platform/query/common/queryRunner';
|
||||||
import { DataService } from 'sql/parts/grid/services/dataService';
|
import { DataService } from 'sql/workbench/parts/grid/services/dataService';
|
||||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { Event } from 'vs/base/common/event';
|
import { Event } from 'vs/base/common/event';
|
||||||
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import * as GridContentEvents from 'sql/parts/grid/common/gridContentEvents';
|
import * as GridContentEvents from 'sql/workbench/parts/grid/common/gridContentEvents';
|
||||||
import * as LocalizedConstants from 'sql/parts/query/common/localizedConstants';
|
import * as LocalizedConstants from 'sql/parts/query/common/localizedConstants';
|
||||||
import QueryRunner, { EventType as QREvents } from 'sql/platform/query/common/queryRunner';
|
import QueryRunner, { EventType as QREvents } from 'sql/platform/query/common/queryRunner';
|
||||||
import { DataService } from 'sql/parts/grid/services/dataService';
|
import { DataService } from 'sql/workbench/parts/grid/services/dataService';
|
||||||
import { IQueryModelService, IQueryPlanInfo, IQueryEvent } from 'sql/platform/query/common/queryModel';
|
import { IQueryModelService, IQueryEvent } from 'sql/platform/query/common/queryModel';
|
||||||
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
||||||
import { QueryStatusbarItem } from 'sql/parts/query/execution/queryStatus';
|
import { QueryStatusbarItem } from 'sql/parts/query/execution/queryStatus';
|
||||||
import { SqlFlavorStatusbarItem } from 'sql/parts/query/common/flavorStatus';
|
import { SqlFlavorStatusbarItem } from 'sql/parts/query/common/flavorStatus';
|
||||||
|
|||||||
@@ -3,15 +3,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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as azdata from 'azdata';
|
import * as azdata from 'azdata';
|
||||||
|
|
||||||
import * as Constants from 'sql/parts/query/common/constants';
|
import * as Constants from 'sql/parts/query/common/constants';
|
||||||
import * as WorkbenchUtils from 'sql/workbench/common/sqlWorkbenchUtils';
|
import * as WorkbenchUtils from 'sql/workbench/common/sqlWorkbenchUtils';
|
||||||
import { IQueryManagementService } from 'sql/platform/query/common/queryManagement';
|
import { IQueryManagementService } from 'sql/platform/query/common/queryManagement';
|
||||||
import * as Utils from 'sql/platform/connection/common/utils';
|
import * as Utils from 'sql/platform/connection/common/utils';
|
||||||
import { SaveFormat } from 'sql/parts/grid/common/interfaces';
|
import { SaveFormat } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
import { Deferred } from 'sql/base/common/promise';
|
import { Deferred } from 'sql/base/common/promise';
|
||||||
|
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
|
|||||||
21
src/sql/workbench/parts/grid/common/gridContentEvents.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
export const ResizeContents = 'ResizeContents';
|
||||||
|
export const RefreshContents = 'RefreshContents';
|
||||||
|
export const ToggleResultPane = 'ToggleResultPane';
|
||||||
|
export const ToggleMessagePane = 'ToggleMessagePane';
|
||||||
|
export const CopySelection = 'CopySelection';
|
||||||
|
export const CopyWithHeaders = 'CopyWithHeaders';
|
||||||
|
export const CopyMessagesSelection = 'CopyMessagesSelection';
|
||||||
|
export const SelectAll = 'SelectAll';
|
||||||
|
export const SelectAllMessages = 'SelectAllMessages';
|
||||||
|
export const SaveAsCsv = 'SaveAsCSV';
|
||||||
|
export const SaveAsJSON = 'SaveAsJSON';
|
||||||
|
export const SaveAsExcel = 'SaveAsExcel';
|
||||||
|
export const SaveAsXML = 'SaveAsXML';
|
||||||
|
export const ViewAsChart = 'ViewAsChart';
|
||||||
|
export const GoToNextQueryOutputTab = 'GoToNextQueryOutputTab';
|
||||||
|
export const GoToNextGrid = 'GoToNextGrid';
|
||||||
@@ -6,33 +6,6 @@
|
|||||||
|
|
||||||
import { ISlickColumn, VirtualizedCollection } from 'angular2-slickgrid';
|
import { ISlickColumn, VirtualizedCollection } from 'angular2-slickgrid';
|
||||||
|
|
||||||
export interface IGridIcon {
|
|
||||||
showCondition: () => boolean;
|
|
||||||
icon: () => string;
|
|
||||||
hoverText: () => string;
|
|
||||||
functionality: (batchId: number, resultId: number, index: number) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IMessageLink {
|
|
||||||
uri: string;
|
|
||||||
text: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IMessage {
|
|
||||||
batchId?: number;
|
|
||||||
time: string;
|
|
||||||
message: string;
|
|
||||||
isError: boolean;
|
|
||||||
link?: IMessageLink;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IGridIcon {
|
|
||||||
showCondition: () => boolean;
|
|
||||||
icon: () => string;
|
|
||||||
hoverText: () => string;
|
|
||||||
functionality: (batchId: number, resultId: number, index: number) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IGridDataSet {
|
export interface IGridDataSet {
|
||||||
dataRows: VirtualizedCollection<{}>;
|
dataRows: VirtualizedCollection<{}>;
|
||||||
columnDefinitions: ISlickColumn<any>[];
|
columnDefinitions: ISlickColumn<any>[];
|
||||||
@@ -63,4 +36,4 @@ export interface ISaveRequest {
|
|||||||
batchIndex: number;
|
batchIndex: number;
|
||||||
resultSetNumber: number;
|
resultSetNumber: number;
|
||||||
selection: Slick.Range[];
|
selection: Slick.Range[];
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 633 B After Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 633 B After Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 665 B |
|
Before Width: | Height: | Size: 653 B After Width: | Height: | Size: 653 B |
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 940 B |
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 940 B |
|
Before Width: | Height: | Size: 1022 B After Width: | Height: | Size: 1022 B |
|
Before Width: | Height: | Size: 1022 B After Width: | Height: | Size: 1022 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 877 B After Width: | Height: | Size: 877 B |
|
Before Width: | Height: | Size: 884 B After Width: | Height: | Size: 884 B |
|
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 127 B |
|
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 127 B |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -3,19 +3,16 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { Subject } from 'rxjs/Subject';
|
import { Subject } from 'rxjs/Subject';
|
||||||
import { Observer } from 'rxjs/Observer';
|
import { Observer } from 'rxjs/Observer';
|
||||||
|
|
||||||
import { ResultSetSubset, EditUpdateCellResult, EditSubsetResult, EditCreateRowResult } from 'azdata';
|
import { EditUpdateCellResult, EditSubsetResult, EditCreateRowResult } from 'azdata';
|
||||||
import { IQueryModelService } from 'sql/platform/query/common/queryModel';
|
import { IQueryModelService } from 'sql/platform/query/common/queryModel';
|
||||||
import { ResultSerializer } from 'sql/platform/node/resultSerializer';
|
import { ResultSerializer } from 'sql/platform/node/resultSerializer';
|
||||||
import { ISaveRequest } from 'sql/parts/grid/common/interfaces';
|
import { ISaveRequest } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
|
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DataService handles the interactions between QueryModel and app.component. Thus, it handles
|
* DataService handles the interactions between QueryModel and app.component. Thus, it handles
|
||||||
@@ -30,31 +27,13 @@ export class DataService {
|
|||||||
constructor(
|
constructor(
|
||||||
private _uri: string,
|
private _uri: string,
|
||||||
@IInstantiationService private _instantiationService: IInstantiationService,
|
@IInstantiationService private _instantiationService: IInstantiationService,
|
||||||
@IQueryModelService private _queryModel: IQueryModelService,
|
@IQueryModelService private _queryModel: IQueryModelService
|
||||||
@IQueryEditorService private _queryEditorService: IQueryEditorService
|
|
||||||
) {
|
) {
|
||||||
this.queryEventObserver = new Subject();
|
this.queryEventObserver = new Subject();
|
||||||
this.gridContentObserver = new Subject();
|
this.gridContentObserver = new Subject();
|
||||||
this.editQueue = Promise.resolve();
|
this.editQueue = Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a specified number of rows starting at a specified row for
|
|
||||||
* the current results set. Used for query results only.
|
|
||||||
* @param start The starting row or the requested rows
|
|
||||||
* @param numberOfRows The amount of rows to return
|
|
||||||
* @param batchId The batch id of the batch you are querying
|
|
||||||
* @param resultId The id of the result you want to get the rows for
|
|
||||||
*/
|
|
||||||
getQueryRows(rowStart: number, numberOfRows: number, batchId: number, resultId: number): Observable<ResultSetSubset> {
|
|
||||||
const self = this;
|
|
||||||
return Observable.create(function (observer: Observer<ResultSetSubset>) {
|
|
||||||
self._queryModel.getQueryRows(self._uri, rowStart, numberOfRows, batchId, resultId).then(results => {
|
|
||||||
observer.next(results);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a specified number of rows starting at a specified row. Should only
|
* Get a specified number of rows starting at a specified row. Should only
|
||||||
* be used for edit sessions.
|
* be used for edit sessions.
|
||||||
@@ -187,23 +166,6 @@ export class DataService {
|
|||||||
this._queryModel.copyResults(this._uri, selection, batchId, resultId, includeHeaders);
|
this._queryModel.copyResults(this._uri, selection, batchId, resultId, includeHeaders);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sends a request to set the selection in the QueryEditor.
|
|
||||||
*/
|
|
||||||
setEditorSelection(index: number) {
|
|
||||||
this._queryModel.setEditorSelection(this._uri, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
showWarning(message: string): void {
|
|
||||||
}
|
|
||||||
|
|
||||||
showError(message: string): void {
|
|
||||||
}
|
|
||||||
|
|
||||||
get config(): Promise<{ [key: string]: any }> {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
onAngularLoaded(): void {
|
onAngularLoaded(): void {
|
||||||
this._queryModel.onAngularLoaded(this._uri);
|
this._queryModel.onAngularLoaded(this._uri);
|
||||||
}
|
}
|
||||||
@@ -3,25 +3,20 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
import 'vs/css!sql/workbench/parts/grid/media/flexbox';
|
||||||
|
import 'vs/css!sql/workbench/parts/grid/media/styles';
|
||||||
import 'vs/css!sql/parts/grid/media/slickColorTheme';
|
|
||||||
import 'vs/css!sql/parts/grid/media/flexbox';
|
|
||||||
import 'vs/css!sql/parts/grid/media/styles';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slick.grid';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slickGrid';
|
|
||||||
import 'vs/css!./media/editData';
|
import 'vs/css!./media/editData';
|
||||||
|
|
||||||
import { ElementRef, ChangeDetectorRef, OnInit, OnDestroy, Component, Inject, forwardRef, EventEmitter } from '@angular/core';
|
import { ElementRef, ChangeDetectorRef, OnInit, OnDestroy, Component, Inject, forwardRef, EventEmitter } from '@angular/core';
|
||||||
import { VirtualizedCollection, OnRangeRenderCompletedEventArgs } from 'angular2-slickgrid';
|
import { VirtualizedCollection } from 'angular2-slickgrid';
|
||||||
|
|
||||||
import { IGridDataSet } from 'sql/parts/grid/common/interfaces';
|
import { IGridDataSet } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
import * as Services from 'sql/parts/grid/services/sharedServices';
|
import * as Services from 'sql/base/browser/ui/table/formatters';
|
||||||
import { IEditDataComponentParams } from 'sql/platform/bootstrap/node/bootstrapParams';
|
import { IEditDataComponentParams } from 'sql/platform/bootstrap/node/bootstrapParams';
|
||||||
import { GridParentComponent } from 'sql/parts/grid/views/gridParentComponent';
|
import { GridParentComponent } from 'sql/workbench/parts/grid/views/gridParentComponent';
|
||||||
import { EditDataGridActionProvider } from 'sql/parts/grid/views/editData/editDataGridActions';
|
import { EditDataGridActionProvider } from 'sql/workbench/parts/grid/views/editData/editDataGridActions';
|
||||||
import { error } from 'sql/base/common/log';
|
import { error } from 'sql/base/common/log';
|
||||||
import { clone, mixin } from 'sql/base/common/objects';
|
import { clone } from 'sql/base/common/objects';
|
||||||
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
||||||
import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService';
|
import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService';
|
||||||
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
|
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
|
||||||
@@ -45,9 +40,8 @@ export const EDITDATA_SELECTOR: string = 'editdata-component';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: EDITDATA_SELECTOR,
|
selector: EDITDATA_SELECTOR,
|
||||||
host: { '(window:keydown)': 'keyEvent($event)', '(window:gridnav)': 'keyEvent($event)' },
|
host: { '(window:keydown)': 'keyEvent($event)', '(window:gridnav)': 'keyEvent($event)' },
|
||||||
templateUrl: decodeURI(require.toUrl('sql/parts/grid/views/editData/editData.component.html'))
|
templateUrl: decodeURI(require.toUrl('sql/workbench/parts/grid/views/editData/editData.component.html'))
|
||||||
})
|
})
|
||||||
|
|
||||||
export class EditDataComponent extends GridParentComponent implements OnInit, OnDestroy {
|
export class EditDataComponent extends GridParentComponent implements OnInit, OnDestroy {
|
||||||
// The time(in milliseconds) we wait before refreshing the grid.
|
// The time(in milliseconds) we wait before refreshing the grid.
|
||||||
// We use clearTimeout and setTimeout pair to avoid unnecessary refreshes.
|
// We use clearTimeout and setTimeout pair to avoid unnecessary refreshes.
|
||||||
@@ -96,7 +90,7 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On
|
|||||||
@Inject(forwardRef(() => ChangeDetectorRef)) cd: ChangeDetectorRef,
|
@Inject(forwardRef(() => ChangeDetectorRef)) cd: ChangeDetectorRef,
|
||||||
@Inject(IBootstrapParams) params: IEditDataComponentParams,
|
@Inject(IBootstrapParams) params: IEditDataComponentParams,
|
||||||
@Inject(IInstantiationService) private instantiationService: IInstantiationService,
|
@Inject(IInstantiationService) private instantiationService: IInstantiationService,
|
||||||
@Inject(INotificationService) notificationService: INotificationService,
|
@Inject(INotificationService) private notificationService: INotificationService,
|
||||||
@Inject(IContextMenuService) contextMenuService: IContextMenuService,
|
@Inject(IContextMenuService) contextMenuService: IContextMenuService,
|
||||||
@Inject(IKeybindingService) keybindingService: IKeybindingService,
|
@Inject(IKeybindingService) keybindingService: IKeybindingService,
|
||||||
@Inject(IContextKeyService) contextKeyService: IContextKeyService,
|
@Inject(IContextKeyService) contextKeyService: IContextKeyService,
|
||||||
@@ -104,7 +98,7 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On
|
|||||||
@Inject(IClipboardService) clipboardService: IClipboardService,
|
@Inject(IClipboardService) clipboardService: IClipboardService,
|
||||||
@Inject(IQueryEditorService) queryEditorService: IQueryEditorService
|
@Inject(IQueryEditorService) queryEditorService: IQueryEditorService
|
||||||
) {
|
) {
|
||||||
super(el, cd, contextMenuService, keybindingService, contextKeyService, configurationService, clipboardService, queryEditorService, notificationService);
|
super(el, cd, contextMenuService, keybindingService, contextKeyService, configurationService, clipboardService, queryEditorService);
|
||||||
this._el.nativeElement.className = 'slickgridContainer';
|
this._el.nativeElement.className = 'slickgridContainer';
|
||||||
this.dataService = params.dataService;
|
this.dataService = params.dataService;
|
||||||
this.actionProvider = this.instantiationService.createInstance(EditDataGridActionProvider, this.dataService, this.onGridSelectAll(), this.onDeleteRow(), this.onRevertRow());
|
this.actionProvider = this.instantiationService.createInstance(EditDataGridActionProvider, this.dataService, this.onGridSelectAll(), this.onDeleteRow(), this.onRevertRow());
|
||||||
@@ -9,7 +9,7 @@ import { CommonModule } from '@angular/common';
|
|||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { SlickGrid } from 'angular2-slickgrid';
|
import { SlickGrid } from 'angular2-slickgrid';
|
||||||
|
|
||||||
import { EditDataComponent } from 'sql/parts/grid/views/editData/editData.component';
|
import { EditDataComponent } from 'sql/workbench/parts/grid/views/editData/editData.component';
|
||||||
import { IBootstrapParams, ISelector, providerIterator } from 'sql/platform/bootstrap/node/bootstrapService';
|
import { IBootstrapParams, ISelector, providerIterator } from 'sql/platform/bootstrap/node/bootstrapService';
|
||||||
|
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
@@ -3,14 +3,11 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
import { IGridInfo } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
|
import { DataService } from 'sql/workbench/parts/grid/services/dataService';
|
||||||
import { IGridInfo } from 'sql/parts/grid/common/interfaces';
|
import { GridActionProvider } from 'sql/workbench/parts/grid/views/gridActions';
|
||||||
import { DataService } from 'sql/parts/grid/services/dataService';
|
|
||||||
import { GridActionProvider } from 'sql/parts/grid/views/gridActions';
|
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
import { IAction, Action } from 'vs/base/common/actions';
|
import { IAction, Action } from 'vs/base/common/actions';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
|
||||||
|
|
||||||
export class EditDataGridActionProvider extends GridActionProvider {
|
export class EditDataGridActionProvider extends GridActionProvider {
|
||||||
|
|
||||||
@@ -18,10 +15,9 @@ export class EditDataGridActionProvider extends GridActionProvider {
|
|||||||
dataService: DataService,
|
dataService: DataService,
|
||||||
selectAllCallback: (index: number) => void,
|
selectAllCallback: (index: number) => void,
|
||||||
private _deleteRowCallback: (index: number) => void,
|
private _deleteRowCallback: (index: number) => void,
|
||||||
private _revertRowCallback: () => void,
|
private _revertRowCallback: () => void
|
||||||
@IInstantiationService instantiationService: IInstantiationService
|
|
||||||
) {
|
) {
|
||||||
super(dataService, selectAllCallback, instantiationService);
|
super(dataService, selectAllCallback);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Return actions given a click on an edit data grid
|
* Return actions given a click on an edit data grid
|
||||||
@@ -3,15 +3,11 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
import { IGridInfo, SaveFormat } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
|
import { DataService } from 'sql/workbench/parts/grid/services/dataService';
|
||||||
import { IGridInfo, SaveFormat } from 'sql/parts/grid/common/interfaces';
|
|
||||||
import { DataService } from 'sql/parts/grid/services/dataService';
|
|
||||||
|
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
import { IAction, Action } from 'vs/base/common/actions';
|
import { IAction, Action } from 'vs/base/common/actions';
|
||||||
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
|
||||||
|
|
||||||
export const GRID_SAVECSV_ID = 'grid.saveAsCsv';
|
export const GRID_SAVECSV_ID = 'grid.saveAsCsv';
|
||||||
export const GRID_SAVEJSON_ID = 'grid.saveAsJson';
|
export const GRID_SAVEJSON_ID = 'grid.saveAsJson';
|
||||||
@@ -32,8 +28,7 @@ export class GridActionProvider {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
protected _dataService: DataService,
|
protected _dataService: DataService,
|
||||||
protected _selectAllCallback: (index: number) => void,
|
protected _selectAllCallback: (index: number) => void
|
||||||
@IInstantiationService private _instantiationService: IInstantiationService
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -42,7 +37,7 @@ export class GridActionProvider {
|
|||||||
* Return actions given a click on a grid
|
* Return actions given a click on a grid
|
||||||
*/
|
*/
|
||||||
public getGridActions(): IAction[] {
|
public getGridActions(): IAction[] {
|
||||||
let actions: IAction[] = [];
|
const actions: IAction[] = [];
|
||||||
actions.push(new SaveResultAction(SaveResultAction.SAVECSV_ID, SaveResultAction.SAVECSV_LABEL, SaveFormat.CSV, this._dataService));
|
actions.push(new SaveResultAction(SaveResultAction.SAVECSV_ID, SaveResultAction.SAVECSV_LABEL, SaveFormat.CSV, this._dataService));
|
||||||
actions.push(new SaveResultAction(SaveResultAction.SAVEJSON_ID, SaveResultAction.SAVEJSON_LABEL, SaveFormat.JSON, this._dataService));
|
actions.push(new SaveResultAction(SaveResultAction.SAVEJSON_ID, SaveResultAction.SAVEJSON_LABEL, SaveFormat.JSON, this._dataService));
|
||||||
actions.push(new SaveResultAction(SaveResultAction.SAVEEXCEL_ID, SaveResultAction.SAVEEXCEL_LABEL, SaveFormat.EXCEL, this._dataService));
|
actions.push(new SaveResultAction(SaveResultAction.SAVEEXCEL_ID, SaveResultAction.SAVEEXCEL_LABEL, SaveFormat.EXCEL, this._dataService));
|
||||||
@@ -53,30 +48,20 @@ export class GridActionProvider {
|
|||||||
|
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return actions given a click on a messages pane
|
|
||||||
*/
|
|
||||||
public getMessagesActions(dataService: DataService, selectAllCallback: () => void): IAction[] {
|
|
||||||
let actions: IAction[] = [];
|
|
||||||
actions.push(this._instantiationService.createInstance(CopyMessagesAction, CopyMessagesAction.ID, CopyMessagesAction.LABEL));
|
|
||||||
actions.push(new SelectAllMessagesAction(SelectAllMessagesAction.ID, SelectAllMessagesAction.LABEL, selectAllCallback));
|
|
||||||
return actions;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SaveResultAction extends Action {
|
class SaveResultAction extends Action {
|
||||||
public static SAVECSV_ID = GRID_SAVECSV_ID;
|
public static SAVECSV_ID = GRID_SAVECSV_ID;
|
||||||
public static SAVECSV_LABEL = localize('saveAsCsv', 'Save As CSV');
|
public static SAVECSV_LABEL = localize('saveAsCsv', "Save As CSV");
|
||||||
|
|
||||||
public static SAVEJSON_ID = GRID_SAVEJSON_ID;
|
public static SAVEJSON_ID = GRID_SAVEJSON_ID;
|
||||||
public static SAVEJSON_LABEL = localize('saveAsJson', 'Save As JSON');
|
public static SAVEJSON_LABEL = localize('saveAsJson', "Save As JSON");
|
||||||
|
|
||||||
public static SAVEEXCEL_ID = GRID_SAVEEXCEL_ID;
|
public static SAVEEXCEL_ID = GRID_SAVEEXCEL_ID;
|
||||||
public static SAVEEXCEL_LABEL = localize('saveAsExcel', 'Save As Excel');
|
public static SAVEEXCEL_LABEL = localize('saveAsExcel', "Save As Excel");
|
||||||
|
|
||||||
public static SAVEXML_ID = GRID_SAVEXML_ID;
|
public static SAVEXML_ID = GRID_SAVEXML_ID;
|
||||||
public static SAVEXML_LABEL = localize('saveAsXml', 'Save As XML');
|
public static SAVEXML_LABEL = localize('saveAsXml', "Save As XML");
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
id: string,
|
id: string,
|
||||||
@@ -98,12 +83,12 @@ export class SaveResultAction extends Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CopyResultAction extends Action {
|
class CopyResultAction extends Action {
|
||||||
public static COPY_ID = GRID_COPY_ID;
|
public static COPY_ID = GRID_COPY_ID;
|
||||||
public static COPY_LABEL = localize('copySelection', 'Copy');
|
public static COPY_LABEL = localize('copySelection', "Copy");
|
||||||
|
|
||||||
public static COPYWITHHEADERS_ID = GRID_COPYWITHHEADERS_ID;
|
public static COPYWITHHEADERS_ID = GRID_COPYWITHHEADERS_ID;
|
||||||
public static COPYWITHHEADERS_LABEL = localize('copyWithHeaders', 'Copy With Headers');
|
public static COPYWITHHEADERS_LABEL = localize('copyWithHeaders', "Copy With Headers");
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
id: string,
|
id: string,
|
||||||
@@ -120,9 +105,9 @@ export class CopyResultAction extends Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SelectAllGridAction extends Action {
|
class SelectAllGridAction extends Action {
|
||||||
public static ID = GRID_SELECTALL_ID;
|
public static ID = GRID_SELECTALL_ID;
|
||||||
public static LABEL = localize('selectAll', 'Select All');
|
public static LABEL = localize('selectAll', "Select All");
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
id: string,
|
id: string,
|
||||||
@@ -137,39 +122,3 @@ export class SelectAllGridAction extends Action {
|
|||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SelectAllMessagesAction extends Action {
|
|
||||||
public static ID = MESSAGES_SELECTALL_ID;
|
|
||||||
public static LABEL = localize('selectAll', 'Select All');
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
id: string,
|
|
||||||
label: string,
|
|
||||||
private selectAllCallback: () => void
|
|
||||||
) {
|
|
||||||
super(id, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
public run(): Promise<boolean> {
|
|
||||||
this.selectAllCallback();
|
|
||||||
return Promise.resolve(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CopyMessagesAction extends Action {
|
|
||||||
public static ID = MESSAGES_COPY_ID;
|
|
||||||
public static LABEL = localize('copyMessages', 'Copy');
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
id: string,
|
|
||||||
label: string,
|
|
||||||
@IClipboardService private clipboardService: IClipboardService
|
|
||||||
) {
|
|
||||||
super(id, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
public run(selectedRange: Selection): Promise<boolean> {
|
|
||||||
this.clipboardService.writeText(selectedRange.toString());
|
|
||||||
return Promise.resolve(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,9 +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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
import * as GridContentEvents from 'sql/workbench/parts/grid/common/gridContentEvents';
|
||||||
|
|
||||||
import * as GridContentEvents from 'sql/parts/grid/common/gridContentEvents';
|
|
||||||
import { IQueryModelService } from 'sql/platform/query/common/queryModel';
|
import { IQueryModelService } from 'sql/platform/query/common/queryModel';
|
||||||
import { QueryEditor } from 'sql/parts/query/editor/queryEditor';
|
import { QueryEditor } from 'sql/parts/query/editor/queryEditor';
|
||||||
import { EditDataEditor } from 'sql/parts/editData/editor/editDataEditor';
|
import { EditDataEditor } from 'sql/parts/editData/editor/editDataEditor';
|
||||||
@@ -88,4 +86,3 @@ export const viewAsChart = (accessor: ServicesAccessor) => {
|
|||||||
export const goToNextGrid = (accessor: ServicesAccessor) => {
|
export const goToNextGrid = (accessor: ServicesAccessor) => {
|
||||||
runActionOnActiveResultsEditor(accessor, GridContentEvents.GoToNextGrid);
|
runActionOnActiveResultsEditor(accessor, GridContentEvents.GoToNextGrid);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -3,13 +3,8 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
import 'vs/css!sql/workbench/parts/grid/media/flexbox';
|
||||||
|
import 'vs/css!sql/workbench/parts/grid/media/styles';
|
||||||
import 'vs/css!sql/parts/grid/media/slickColorTheme';
|
|
||||||
import 'vs/css!sql/parts/grid/media/flexbox';
|
|
||||||
import 'vs/css!sql/parts/grid/media/styles';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slick.grid';
|
|
||||||
import 'vs/css!sql/parts/grid/media/slickGrid';
|
|
||||||
|
|
||||||
import { Subscription, Subject } from 'rxjs/Rx';
|
import { Subscription, Subject } from 'rxjs/Rx';
|
||||||
import { ElementRef, QueryList, ChangeDetectorRef, ViewChildren } from '@angular/core';
|
import { ElementRef, QueryList, ChangeDetectorRef, ViewChildren } from '@angular/core';
|
||||||
@@ -17,12 +12,12 @@ import { SlickGrid } from 'angular2-slickgrid';
|
|||||||
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
|
||||||
import * as Constants from 'sql/parts/query/common/constants';
|
import * as Constants from 'sql/parts/query/common/constants';
|
||||||
import * as LocalizedConstants from 'sql/parts/query/common/localizedConstants';
|
import * as LocalizedConstants from 'sql/parts/query/common/localizedConstants';
|
||||||
import { IGridInfo, IGridDataSet, SaveFormat } from 'sql/parts/grid/common/interfaces';
|
import { IGridInfo, IGridDataSet, SaveFormat } from 'sql/workbench/parts/grid/common/interfaces';
|
||||||
import * as Utils from 'sql/platform/connection/common/utils';
|
import * as Utils from 'sql/platform/connection/common/utils';
|
||||||
import { DataService } from 'sql/parts/grid/services/dataService';
|
import { DataService } from 'sql/workbench/parts/grid/services/dataService';
|
||||||
import * as actions from 'sql/parts/grid/views/gridActions';
|
import * as actions from 'sql/workbench/parts/grid/views/gridActions';
|
||||||
import * as Services from 'sql/parts/grid/services/sharedServices';
|
import * as Services from 'sql/base/browser/ui/table/formatters';
|
||||||
import * as GridContentEvents from 'sql/parts/grid/common/gridContentEvents';
|
import * as GridContentEvents from 'sql/workbench/parts/grid/common/gridContentEvents';
|
||||||
import { ResultsVisibleContext, ResultsGridFocussedContext, ResultsMessagesFocussedContext, QueryEditorVisibleContext } from 'sql/parts/query/common/queryContext';
|
import { ResultsVisibleContext, ResultsGridFocussedContext, ResultsMessagesFocussedContext, QueryEditorVisibleContext } from 'sql/parts/query/common/queryContext';
|
||||||
import { error } from 'sql/base/common/log';
|
import { error } from 'sql/base/common/log';
|
||||||
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/workbench/services/queryEditor/common/queryEditorService';
|
||||||
@@ -37,7 +32,6 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
|||||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||||
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
||||||
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
|
||||||
|
|
||||||
export abstract class GridParentComponent {
|
export abstract class GridParentComponent {
|
||||||
// CONSTANTS
|
// CONSTANTS
|
||||||
@@ -101,8 +95,7 @@ export abstract class GridParentComponent {
|
|||||||
protected contextKeyService: IContextKeyService,
|
protected contextKeyService: IContextKeyService,
|
||||||
protected configurationService: IConfigurationService,
|
protected configurationService: IConfigurationService,
|
||||||
protected clipboardService: IClipboardService,
|
protected clipboardService: IClipboardService,
|
||||||
protected queryEditorService: IQueryEditorService,
|
protected queryEditorService: IQueryEditorService
|
||||||
protected notificationService: INotificationService
|
|
||||||
) {
|
) {
|
||||||
this.toDispose = [];
|
this.toDispose = [];
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
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 { textFormatter } from 'sql/parts/grid/services/sharedServices';
|
import { textFormatter } from 'sql/base/browser/ui/table/formatters';
|
||||||
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
|
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
|
||||||
import { escape } from 'sql/base/common/strings';
|
import { escape } from 'sql/base/common/strings';
|
||||||
import { IDataResource } from 'sql/workbench/services/notebook/sql/sqlSessionManager';
|
import { IDataResource } from 'sql/workbench/services/notebook/sql/sqlSessionManager';
|
||||||
@@ -86,30 +86,30 @@ export function renderDataResource(
|
|||||||
|
|
||||||
// SlickGrid requires columns and data to be in a very specific format; this code was adapted from tableInsight.component.ts
|
// SlickGrid requires columns and data to be in a very specific format; this code was adapted from tableInsight.component.ts
|
||||||
function transformData(rows: any[], columns: Slick.Column<any>[]): { [key: string]: string }[] {
|
function transformData(rows: any[], columns: Slick.Column<any>[]): { [key: string]: string }[] {
|
||||||
return rows.map(row => {
|
return rows.map(row => {
|
||||||
let dataWithSchema = {};
|
let dataWithSchema = {};
|
||||||
Object.keys(row).forEach((val, index) => {
|
Object.keys(row).forEach((val, index) => {
|
||||||
let displayValue = String(Object.values(row)[index]);
|
let displayValue = String(Object.values(row)[index]);
|
||||||
// Since the columns[0] represents the row number, start at 1
|
// Since the columns[0] represents the row number, start at 1
|
||||||
dataWithSchema[columns[index + 1].field] = {
|
dataWithSchema[columns[index + 1].field] = {
|
||||||
displayValue: displayValue,
|
displayValue: displayValue,
|
||||||
ariaLabel: escape(displayValue),
|
ariaLabel: escape(displayValue),
|
||||||
isNull: false
|
isNull: false
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
return dataWithSchema;
|
return dataWithSchema;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function transformColumns(columns: string[]): Slick.Column<any>[] {
|
function transformColumns(columns: string[]): Slick.Column<any>[] {
|
||||||
return columns.map((col, index) => {
|
return columns.map((col, index) => {
|
||||||
return <Slick.Column<any>>{
|
return <Slick.Column<any>>{
|
||||||
name: col,
|
name: col,
|
||||||
id: col,
|
id: col,
|
||||||
field: index.toString(),
|
field: index.toString(),
|
||||||
formatter: textFormatter
|
formatter: textFormatter
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3,10 +3,8 @@
|
|||||||
* 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.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
import * as azdata from 'azdata';
|
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as SharedServices from 'sql/parts/grid/services/sharedServices';
|
import * as SharedServices from 'sql/base/browser/ui/table/formatters';
|
||||||
|
|
||||||
const testText = '<div>test text</div>';
|
const testText = '<div>test text</div>';
|
||||||
|
|
||||||
@@ -41,4 +39,4 @@ function verifyFormattedHtml(formattedHtml: string, expectedText: string): void
|
|||||||
// Verify that the span element's text, not its innerHTML, matches the expected text
|
// Verify that the span element's text, not its innerHTML, matches the expected text
|
||||||
assert.equal(spanElement.textContent, testText);
|
assert.equal(spanElement.textContent, testText);
|
||||||
assert.notEqual(spanElement.innerHTML, testText);
|
assert.notEqual(spanElement.innerHTML, testText);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
<body class="vs-dark" aria-label="">
|
<body class="vs-dark" aria-label="">
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<!-- // {{SQL CARBON EDIT}} -->
|
|
||||||
<script src="../../../../sql/parts/grid/load/loadJquery.js"></script>
|
|
||||||
<script src="../../../../../node_modules/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
|
|
||||||
<script src="../../../../../node_modules/slickgrid/lib/jquery-ui-1.9.2.js"></script>
|
|
||||||
<!-- Startup via workbench.js -->
|
<!-- Startup via workbench.js -->
|
||||||
<script src="workbench.js"></script>
|
<script src="workbench.js"></script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ process['lazyEnv'] = getLazyEnv();
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
|
|
||||||
// SQL global imports
|
// SQL global imports
|
||||||
|
const jQuery = require('jquery');
|
||||||
|
const $ = jQuery;
|
||||||
|
require('slickgrid/lib/jquery.event.drag-2.3.0');
|
||||||
|
require('slickgrid/lib/jquery-ui-1.9.2');
|
||||||
const _ = require('underscore')._;
|
const _ = require('underscore')._;
|
||||||
require('slickgrid/slick.core');
|
require('slickgrid/slick.core');
|
||||||
const Slick = window.Slick;
|
const Slick = window.Slick;
|
||||||
|
|||||||