mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-24 01:25:37 -05:00
Add title property for data grid providers (#13155)
This commit is contained in:
5
src/sql/azdata.proposed.d.ts
vendored
5
src/sql/azdata.proposed.d.ts
vendored
@@ -257,6 +257,11 @@ declare module 'azdata' {
|
||||
* Gets the list of data grid columns for this provider
|
||||
*/
|
||||
getDataGridColumns(): Thenable<DataGridColumn[]>;
|
||||
|
||||
/**
|
||||
* The user visible string to use for the title of the grid
|
||||
*/
|
||||
title: string;
|
||||
}
|
||||
|
||||
export interface HyperlinkComponent {
|
||||
|
||||
@@ -29,6 +29,8 @@ import { assign } from 'vs/base/common/objects';
|
||||
import { serializableToMap } from 'sql/base/common/map';
|
||||
import { IAssessmentService } from 'sql/workbench/services/assessment/common/interfaces';
|
||||
import { IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
||||
import { IAdsTelemetryService } from 'sql/platform/telemetry/common/telemetry';
|
||||
import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
|
||||
|
||||
/**
|
||||
* Main thread class for handling data protocol management registration.
|
||||
@@ -57,7 +59,8 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData
|
||||
@ISerializationService private _serializationService: ISerializationService,
|
||||
@IFileBrowserService private _fileBrowserService: IFileBrowserService,
|
||||
@IAssessmentService private _assessmentService: IAssessmentService,
|
||||
@IDataGridProviderService private _dataGridProviderService: IDataGridProviderService
|
||||
@IDataGridProviderService private _dataGridProviderService: IDataGridProviderService,
|
||||
@IAdsTelemetryService private _telemetryService: IAdsTelemetryService
|
||||
) {
|
||||
super();
|
||||
if (extHostContext) {
|
||||
@@ -469,14 +472,23 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData
|
||||
return undefined;
|
||||
}
|
||||
|
||||
public $registerDataGridProvider(providerId: string, handle: number): void {
|
||||
public $registerDataGridProvider(providerId: string, title: string, handle: number): void {
|
||||
const self = this;
|
||||
this._dataGridProviderService.registerProvider(providerId, <azdata.DataGridProvider>{
|
||||
providerId: providerId,
|
||||
title: title,
|
||||
getDataGridItems(): Thenable<azdata.DataGridItem[]> {
|
||||
self._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridItems)
|
||||
.withAdditionalProperties({
|
||||
provider: providerId
|
||||
}).send();
|
||||
return self._proxy.$getDataGridItems(handle);
|
||||
},
|
||||
getDataGridColumns(): Thenable<azdata.DataGridColumn[]> {
|
||||
self._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridColumns)
|
||||
.withAdditionalProperties({
|
||||
provider: providerId
|
||||
}).send();
|
||||
return self._proxy.$getDataGridColumns(handle);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -174,7 +174,7 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
|
||||
}
|
||||
$registerDataGridProvider(provider: azdata.DataGridProvider): vscode.Disposable {
|
||||
let rt = this.registerProvider(provider, DataProviderType.DataGridProvider);
|
||||
this._proxy.$registerDataGridProvider(provider.providerId, provider.handle);
|
||||
this._proxy.$registerDataGridProvider(provider.providerId, provider.title, provider.handle);
|
||||
return rt;
|
||||
}
|
||||
$registerCapabilitiesServiceProvider(provider: azdata.CapabilitiesProvider): vscode.Disposable {
|
||||
|
||||
@@ -583,7 +583,7 @@ export interface MainThreadDataProtocolShape extends IDisposable {
|
||||
$registerAgentServicesProvider(providerId: string, handle: number): Promise<any>;
|
||||
$registerSerializationProvider(providerId: string, handle: number): Promise<any>;
|
||||
$registerSqlAssessmentServicesProvider(providerId: string, handle: number): Promise<any>;
|
||||
$registerDataGridProvider(providerId: string, handle: number): void;
|
||||
$registerDataGridProvider(providerId: string, title: string, handle: number): void;
|
||||
$unregisterProvider(handle: number): Promise<any>;
|
||||
$onConnectionComplete(handle: number, connectionInfoSummary: azdata.ConnectionInfoSummary): void;
|
||||
$onIntelliSenseCacheComplete(handle: number, connectionUri: string): void;
|
||||
|
||||
@@ -8,7 +8,7 @@ import * as nls from 'vs/nls';
|
||||
import { EditorInput } from 'vs/workbench/common/editor';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
||||
import { DataGridProvider, IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
||||
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||
import { ButtonColumn } from 'sql/base/browser/ui/table/plugins/buttonColumn.plugin';
|
||||
import { getDataGridFormatter } from 'sql/workbench/services/dataGridProvider/browser/dataGridProviderUtils';
|
||||
@@ -23,6 +23,8 @@ export interface ColumnDefinition extends Slick.Column<azdata.DataGridItem> {
|
||||
export class ResourceViewerInput extends EditorInput {
|
||||
|
||||
public static ID: string = 'workbench.editorInput.resourceViewerInput';
|
||||
|
||||
private _dataGridProvider: DataGridProvider;
|
||||
private _data: azdata.DataGridItem[] = [];
|
||||
private _columns: ColumnDefinition[] = [];
|
||||
private _loading: boolean = true;
|
||||
@@ -36,8 +38,9 @@ export class ResourceViewerInput extends EditorInput {
|
||||
public onDataChanged: Event<void> = this._onDataChanged.event;
|
||||
|
||||
constructor(private _providerId: string,
|
||||
@IDataGridProviderService private _dataGridProviderService: IDataGridProviderService) {
|
||||
@IDataGridProviderService dataGridProviderService: IDataGridProviderService) {
|
||||
super();
|
||||
this._dataGridProvider = dataGridProviderService.getDataGridProvider(this._providerId);
|
||||
this.actionsColumn = new ButtonColumn<azdata.DataGridItem>({
|
||||
id: 'actions',
|
||||
iconCssClass: 'toggle-more',
|
||||
@@ -52,7 +55,7 @@ export class ResourceViewerInput extends EditorInput {
|
||||
}
|
||||
|
||||
public getName(): string {
|
||||
return nls.localize('resourceViewerInput.resourceViewer', "Resource Viewer");
|
||||
return this._dataGridProvider.title || nls.localize('resourceViewerInput.resourceViewer', "Resource Viewer");
|
||||
}
|
||||
|
||||
public get data(): azdata.DataGridItem[] {
|
||||
@@ -95,8 +98,12 @@ export class ResourceViewerInput extends EditorInput {
|
||||
return this._loading;
|
||||
}
|
||||
|
||||
public get title(): string {
|
||||
return this._dataGridProvider.title;
|
||||
}
|
||||
|
||||
private async fetchColumns(): Promise<void> {
|
||||
const columns = await this._dataGridProviderService.getDataGridColumns(this._providerId);
|
||||
const columns = await this._dataGridProvider.getDataGridColumns();
|
||||
const columnDefinitions: ColumnDefinition[] = columns.map(col => {
|
||||
return {
|
||||
name: col.name,
|
||||
@@ -119,7 +126,7 @@ export class ResourceViewerInput extends EditorInput {
|
||||
}
|
||||
|
||||
private async fetchItems(): Promise<void> {
|
||||
const items = await this._dataGridProviderService.getDataGridItems(this._providerId);
|
||||
const items = await this._dataGridProvider.getDataGridItems();
|
||||
this._data = items;
|
||||
this._onDataChanged.fire();
|
||||
}
|
||||
|
||||
@@ -94,6 +94,8 @@ export class ResourceViewerEditor extends EditorPane {
|
||||
async setInput(input: ResourceViewerInput, options: EditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<void> {
|
||||
await super.setInput(input, options, context, token);
|
||||
|
||||
this._resourceViewerTable.title = input.title;
|
||||
|
||||
this._inputDisposables.clear();
|
||||
|
||||
input.plugins.forEach(plugin => {
|
||||
|
||||
@@ -52,6 +52,7 @@ export class ResourceViewerTable extends Disposable {
|
||||
dataItemColumnValueExtractor: dataGridColumnValueExtractor,
|
||||
forceFitColumns: true
|
||||
}));
|
||||
|
||||
this._resourceViewerTable.setSelectionModel(new RowSelectionModel());
|
||||
let filterPlugin = new HeaderFilter<azdata.DataGridItem>();
|
||||
this._register(attachButtonStyler(filterPlugin, this._themeService));
|
||||
@@ -100,6 +101,10 @@ export class ResourceViewerTable extends Disposable {
|
||||
this._loadingSpinnerPlugin.loading = isLoading;
|
||||
}
|
||||
|
||||
public set title(title: string) {
|
||||
this._resourceViewerTable.setTableTitle(title);
|
||||
}
|
||||
|
||||
public registerPlugin(plugin: Slick.Plugin<azdata.DataGridItem>): void {
|
||||
this._resourceViewerTable.registerPlugin(plugin);
|
||||
}
|
||||
|
||||
@@ -4,20 +4,14 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as azdata from 'azdata';
|
||||
import { IAdsTelemetryService } from 'sql/platform/telemetry/common/telemetry';
|
||||
import { IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
||||
import { DataGridProvider, IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
||||
import { invalidProvider } from 'sql/base/common/errors';
|
||||
import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
|
||||
|
||||
export class DataGridProviderService implements IDataGridProviderService {
|
||||
|
||||
public _serviceBrand: undefined;
|
||||
private _providers = new Map<string, azdata.DataGridProvider>();
|
||||
|
||||
constructor(
|
||||
@IAdsTelemetryService private _telemetryService: IAdsTelemetryService
|
||||
) { }
|
||||
|
||||
/**
|
||||
* Register a data grid provider
|
||||
*/
|
||||
@@ -32,26 +26,10 @@ export class DataGridProviderService implements IDataGridProviderService {
|
||||
this._providers.delete(providerId);
|
||||
}
|
||||
|
||||
public async getDataGridItems(providerId: string): Promise<azdata.DataGridItem[]> {
|
||||
public getDataGridProvider(providerId: string): DataGridProvider {
|
||||
const provider = this._providers.get(providerId);
|
||||
if (provider) {
|
||||
this._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridItems)
|
||||
.withAdditionalProperties({
|
||||
provider: providerId
|
||||
}).send();
|
||||
return provider.getDataGridItems();
|
||||
}
|
||||
throw invalidProvider(providerId);
|
||||
}
|
||||
|
||||
public async getDataGridColumns(providerId: string): Promise<azdata.DataGridColumn[]> {
|
||||
const provider = this._providers.get(providerId);
|
||||
if (provider) {
|
||||
this._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridColumns)
|
||||
.withAdditionalProperties({
|
||||
provider: providerId
|
||||
}).send();
|
||||
return provider.getDataGridColumns();
|
||||
return provider;
|
||||
}
|
||||
throw invalidProvider(providerId);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
|
||||
export const SERVICE_ID = 'dataGridProviderService';
|
||||
export const IDataGridProviderService = createDecorator<IDataGridProviderService>(SERVICE_ID);
|
||||
|
||||
export interface DataGridProvider extends azdata.DataGridProvider { }
|
||||
|
||||
export interface IDataGridProviderService {
|
||||
_serviceBrand: undefined;
|
||||
|
||||
@@ -23,12 +25,9 @@ export interface IDataGridProviderService {
|
||||
unregisterProvider(providerId: string): void;
|
||||
|
||||
/**
|
||||
* Gets a list of data grid items from the specified provider
|
||||
* Gets a registered data grid provider, throwing if none are registered with the specified ID
|
||||
* @param providerId The id of the registered provider
|
||||
*/
|
||||
getDataGridItems(providerId: string): Promise<azdata.DataGridItem[]>;
|
||||
getDataGridProvider(providerId: string): DataGridProvider;
|
||||
|
||||
/**
|
||||
* Gets a list of data grid columns from the specified provider
|
||||
*/
|
||||
getDataGridColumns(providerId: string): Promise<azdata.DataGridColumn[]>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user