mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Add title property for data grid providers (#13155)
This commit is contained in:
@@ -28,6 +28,8 @@ export class AzureDataGridProvider implements azdata.DataGridProvider {
|
|||||||
constructor(private _appContext: AppContext) { }
|
constructor(private _appContext: AppContext) { }
|
||||||
|
|
||||||
public providerId = constants.dataGridProviderId;
|
public providerId = constants.dataGridProviderId;
|
||||||
|
public title = loc.azureResourcesGridTitle;
|
||||||
|
|
||||||
public async getDataGridItems() {
|
public async getDataGridItems() {
|
||||||
const accounts = await azdata.accounts.getAllAccounts();
|
const accounts = await azdata.accounts.getAllAccounts();
|
||||||
const items: any[] = [];
|
const items: any[] = [];
|
||||||
|
|||||||
@@ -73,3 +73,4 @@ export const sqlServerArc = localize('azurecore.sqlServerArc', "SQL Server - Azu
|
|||||||
export const azureArcPostgresServer = localize('azurecore.azureArcPostgres', "Azure Arc enabled PostgreSQL Hyperscale");
|
export const azureArcPostgresServer = localize('azurecore.azureArcPostgres', "Azure Arc enabled PostgreSQL Hyperscale");
|
||||||
|
|
||||||
export const unableToOpenAzureLink = localize('azure.unableToOpenAzureLink', "Unable to open link, missing required values");
|
export const unableToOpenAzureLink = localize('azure.unableToOpenAzureLink', "Unable to open link, missing required values");
|
||||||
|
export const azureResourcesGridTitle = localize('azure.azureResourcesGridTitle', "Azure Resources");
|
||||||
|
|||||||
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
|
* Gets the list of data grid columns for this provider
|
||||||
*/
|
*/
|
||||||
getDataGridColumns(): Thenable<DataGridColumn[]>;
|
getDataGridColumns(): Thenable<DataGridColumn[]>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The user visible string to use for the title of the grid
|
||||||
|
*/
|
||||||
|
title: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface HyperlinkComponent {
|
export interface HyperlinkComponent {
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ import { assign } from 'vs/base/common/objects';
|
|||||||
import { serializableToMap } from 'sql/base/common/map';
|
import { serializableToMap } from 'sql/base/common/map';
|
||||||
import { IAssessmentService } from 'sql/workbench/services/assessment/common/interfaces';
|
import { IAssessmentService } from 'sql/workbench/services/assessment/common/interfaces';
|
||||||
import { IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
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.
|
* Main thread class for handling data protocol management registration.
|
||||||
@@ -57,7 +59,8 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData
|
|||||||
@ISerializationService private _serializationService: ISerializationService,
|
@ISerializationService private _serializationService: ISerializationService,
|
||||||
@IFileBrowserService private _fileBrowserService: IFileBrowserService,
|
@IFileBrowserService private _fileBrowserService: IFileBrowserService,
|
||||||
@IAssessmentService private _assessmentService: IAssessmentService,
|
@IAssessmentService private _assessmentService: IAssessmentService,
|
||||||
@IDataGridProviderService private _dataGridProviderService: IDataGridProviderService
|
@IDataGridProviderService private _dataGridProviderService: IDataGridProviderService,
|
||||||
|
@IAdsTelemetryService private _telemetryService: IAdsTelemetryService
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
if (extHostContext) {
|
if (extHostContext) {
|
||||||
@@ -469,14 +472,23 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
public $registerDataGridProvider(providerId: string, handle: number): void {
|
public $registerDataGridProvider(providerId: string, title: string, handle: number): void {
|
||||||
const self = this;
|
const self = this;
|
||||||
this._dataGridProviderService.registerProvider(providerId, <azdata.DataGridProvider>{
|
this._dataGridProviderService.registerProvider(providerId, <azdata.DataGridProvider>{
|
||||||
providerId: providerId,
|
providerId: providerId,
|
||||||
|
title: title,
|
||||||
getDataGridItems(): Thenable<azdata.DataGridItem[]> {
|
getDataGridItems(): Thenable<azdata.DataGridItem[]> {
|
||||||
|
self._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridItems)
|
||||||
|
.withAdditionalProperties({
|
||||||
|
provider: providerId
|
||||||
|
}).send();
|
||||||
return self._proxy.$getDataGridItems(handle);
|
return self._proxy.$getDataGridItems(handle);
|
||||||
},
|
},
|
||||||
getDataGridColumns(): Thenable<azdata.DataGridColumn[]> {
|
getDataGridColumns(): Thenable<azdata.DataGridColumn[]> {
|
||||||
|
self._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridColumns)
|
||||||
|
.withAdditionalProperties({
|
||||||
|
provider: providerId
|
||||||
|
}).send();
|
||||||
return self._proxy.$getDataGridColumns(handle);
|
return self._proxy.$getDataGridColumns(handle);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
|
|||||||
}
|
}
|
||||||
$registerDataGridProvider(provider: azdata.DataGridProvider): vscode.Disposable {
|
$registerDataGridProvider(provider: azdata.DataGridProvider): vscode.Disposable {
|
||||||
let rt = this.registerProvider(provider, DataProviderType.DataGridProvider);
|
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;
|
return rt;
|
||||||
}
|
}
|
||||||
$registerCapabilitiesServiceProvider(provider: azdata.CapabilitiesProvider): vscode.Disposable {
|
$registerCapabilitiesServiceProvider(provider: azdata.CapabilitiesProvider): vscode.Disposable {
|
||||||
|
|||||||
@@ -583,7 +583,7 @@ export interface MainThreadDataProtocolShape extends IDisposable {
|
|||||||
$registerAgentServicesProvider(providerId: string, handle: number): Promise<any>;
|
$registerAgentServicesProvider(providerId: string, handle: number): Promise<any>;
|
||||||
$registerSerializationProvider(providerId: string, handle: number): Promise<any>;
|
$registerSerializationProvider(providerId: string, handle: number): Promise<any>;
|
||||||
$registerSqlAssessmentServicesProvider(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>;
|
$unregisterProvider(handle: number): Promise<any>;
|
||||||
$onConnectionComplete(handle: number, connectionInfoSummary: azdata.ConnectionInfoSummary): void;
|
$onConnectionComplete(handle: number, connectionInfoSummary: azdata.ConnectionInfoSummary): void;
|
||||||
$onIntelliSenseCacheComplete(handle: number, connectionUri: string): 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 { EditorInput } from 'vs/workbench/common/editor';
|
||||||
import { Event, Emitter } from 'vs/base/common/event';
|
import { Event, Emitter } from 'vs/base/common/event';
|
||||||
import { URI } from 'vs/base/common/uri';
|
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 { onUnexpectedError } from 'vs/base/common/errors';
|
||||||
import { ButtonColumn } from 'sql/base/browser/ui/table/plugins/buttonColumn.plugin';
|
import { ButtonColumn } from 'sql/base/browser/ui/table/plugins/buttonColumn.plugin';
|
||||||
import { getDataGridFormatter } from 'sql/workbench/services/dataGridProvider/browser/dataGridProviderUtils';
|
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 {
|
export class ResourceViewerInput extends EditorInput {
|
||||||
|
|
||||||
public static ID: string = 'workbench.editorInput.resourceViewerInput';
|
public static ID: string = 'workbench.editorInput.resourceViewerInput';
|
||||||
|
|
||||||
|
private _dataGridProvider: DataGridProvider;
|
||||||
private _data: azdata.DataGridItem[] = [];
|
private _data: azdata.DataGridItem[] = [];
|
||||||
private _columns: ColumnDefinition[] = [];
|
private _columns: ColumnDefinition[] = [];
|
||||||
private _loading: boolean = true;
|
private _loading: boolean = true;
|
||||||
@@ -36,8 +38,9 @@ export class ResourceViewerInput extends EditorInput {
|
|||||||
public onDataChanged: Event<void> = this._onDataChanged.event;
|
public onDataChanged: Event<void> = this._onDataChanged.event;
|
||||||
|
|
||||||
constructor(private _providerId: string,
|
constructor(private _providerId: string,
|
||||||
@IDataGridProviderService private _dataGridProviderService: IDataGridProviderService) {
|
@IDataGridProviderService dataGridProviderService: IDataGridProviderService) {
|
||||||
super();
|
super();
|
||||||
|
this._dataGridProvider = dataGridProviderService.getDataGridProvider(this._providerId);
|
||||||
this.actionsColumn = new ButtonColumn<azdata.DataGridItem>({
|
this.actionsColumn = new ButtonColumn<azdata.DataGridItem>({
|
||||||
id: 'actions',
|
id: 'actions',
|
||||||
iconCssClass: 'toggle-more',
|
iconCssClass: 'toggle-more',
|
||||||
@@ -52,7 +55,7 @@ export class ResourceViewerInput extends EditorInput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public getName(): string {
|
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[] {
|
public get data(): azdata.DataGridItem[] {
|
||||||
@@ -95,8 +98,12 @@ export class ResourceViewerInput extends EditorInput {
|
|||||||
return this._loading;
|
return this._loading;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get title(): string {
|
||||||
|
return this._dataGridProvider.title;
|
||||||
|
}
|
||||||
|
|
||||||
private async fetchColumns(): Promise<void> {
|
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 => {
|
const columnDefinitions: ColumnDefinition[] = columns.map(col => {
|
||||||
return {
|
return {
|
||||||
name: col.name,
|
name: col.name,
|
||||||
@@ -119,7 +126,7 @@ export class ResourceViewerInput extends EditorInput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async fetchItems(): Promise<void> {
|
private async fetchItems(): Promise<void> {
|
||||||
const items = await this._dataGridProviderService.getDataGridItems(this._providerId);
|
const items = await this._dataGridProvider.getDataGridItems();
|
||||||
this._data = items;
|
this._data = items;
|
||||||
this._onDataChanged.fire();
|
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> {
|
async setInput(input: ResourceViewerInput, options: EditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<void> {
|
||||||
await super.setInput(input, options, context, token);
|
await super.setInput(input, options, context, token);
|
||||||
|
|
||||||
|
this._resourceViewerTable.title = input.title;
|
||||||
|
|
||||||
this._inputDisposables.clear();
|
this._inputDisposables.clear();
|
||||||
|
|
||||||
input.plugins.forEach(plugin => {
|
input.plugins.forEach(plugin => {
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ export class ResourceViewerTable extends Disposable {
|
|||||||
dataItemColumnValueExtractor: dataGridColumnValueExtractor,
|
dataItemColumnValueExtractor: dataGridColumnValueExtractor,
|
||||||
forceFitColumns: true
|
forceFitColumns: true
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._resourceViewerTable.setSelectionModel(new RowSelectionModel());
|
this._resourceViewerTable.setSelectionModel(new RowSelectionModel());
|
||||||
let filterPlugin = new HeaderFilter<azdata.DataGridItem>();
|
let filterPlugin = new HeaderFilter<azdata.DataGridItem>();
|
||||||
this._register(attachButtonStyler(filterPlugin, this._themeService));
|
this._register(attachButtonStyler(filterPlugin, this._themeService));
|
||||||
@@ -100,6 +101,10 @@ export class ResourceViewerTable extends Disposable {
|
|||||||
this._loadingSpinnerPlugin.loading = isLoading;
|
this._loadingSpinnerPlugin.loading = isLoading;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public set title(title: string) {
|
||||||
|
this._resourceViewerTable.setTableTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
public registerPlugin(plugin: Slick.Plugin<azdata.DataGridItem>): void {
|
public registerPlugin(plugin: Slick.Plugin<azdata.DataGridItem>): void {
|
||||||
this._resourceViewerTable.registerPlugin(plugin);
|
this._resourceViewerTable.registerPlugin(plugin);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,20 +4,14 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import * as azdata from 'azdata';
|
import * as azdata from 'azdata';
|
||||||
import { IAdsTelemetryService } from 'sql/platform/telemetry/common/telemetry';
|
import { DataGridProvider, IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
||||||
import { IDataGridProviderService } from 'sql/workbench/services/dataGridProvider/common/dataGridProviderService';
|
|
||||||
import { invalidProvider } from 'sql/base/common/errors';
|
import { invalidProvider } from 'sql/base/common/errors';
|
||||||
import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
|
|
||||||
|
|
||||||
export class DataGridProviderService implements IDataGridProviderService {
|
export class DataGridProviderService implements IDataGridProviderService {
|
||||||
|
|
||||||
public _serviceBrand: undefined;
|
public _serviceBrand: undefined;
|
||||||
private _providers = new Map<string, azdata.DataGridProvider>();
|
private _providers = new Map<string, azdata.DataGridProvider>();
|
||||||
|
|
||||||
constructor(
|
|
||||||
@IAdsTelemetryService private _telemetryService: IAdsTelemetryService
|
|
||||||
) { }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a data grid provider
|
* Register a data grid provider
|
||||||
*/
|
*/
|
||||||
@@ -32,26 +26,10 @@ export class DataGridProviderService implements IDataGridProviderService {
|
|||||||
this._providers.delete(providerId);
|
this._providers.delete(providerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getDataGridItems(providerId: string): Promise<azdata.DataGridItem[]> {
|
public getDataGridProvider(providerId: string): DataGridProvider {
|
||||||
const provider = this._providers.get(providerId);
|
const provider = this._providers.get(providerId);
|
||||||
if (provider) {
|
if (provider) {
|
||||||
this._telemetryService.createActionEvent(TelemetryKeys.TelemetryView.Shell, TelemetryKeys.GetDataGridItems)
|
return provider;
|
||||||
.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();
|
|
||||||
}
|
}
|
||||||
throw invalidProvider(providerId);
|
throw invalidProvider(providerId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
|
|||||||
export const SERVICE_ID = 'dataGridProviderService';
|
export const SERVICE_ID = 'dataGridProviderService';
|
||||||
export const IDataGridProviderService = createDecorator<IDataGridProviderService>(SERVICE_ID);
|
export const IDataGridProviderService = createDecorator<IDataGridProviderService>(SERVICE_ID);
|
||||||
|
|
||||||
|
export interface DataGridProvider extends azdata.DataGridProvider { }
|
||||||
|
|
||||||
export interface IDataGridProviderService {
|
export interface IDataGridProviderService {
|
||||||
_serviceBrand: undefined;
|
_serviceBrand: undefined;
|
||||||
|
|
||||||
@@ -23,12 +25,9 @@ export interface IDataGridProviderService {
|
|||||||
unregisterProvider(providerId: string): void;
|
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