add save/load filter feature to profiler (#6170)

* save/load profiler filter

* add role for custom buttons
This commit is contained in:
Alan Ren
2019-06-26 23:55:03 -07:00
committed by GitHub
parent c2cec5d93f
commit f39647f243
5 changed files with 106 additions and 38 deletions

View File

@@ -17,6 +17,7 @@ export type ProfilerSessionID = string;
export const PROFILER_VIEW_TEMPLATE_SETTINGS = 'profiler.viewTemplates';
export const PROFILER_SESSION_TEMPLATE_SETTINGS = 'profiler.sessionTemplates';
export const PROFILER_FILTER_SETTINGS = 'profiler.filters';
export const PROFILER_SETTINGS = 'profiler';
/**
@@ -130,11 +131,21 @@ export interface IProfilerService {
* @param input input object
*/
launchFilterSessionDialog(input: ProfilerInput): void;
/**
* Gets the filters
*/
getFilters(): Array<ProfilerFilter>;
/**
* Saves the filter
* @param filter filter object
*/
saveFilter(filter: ProfilerFilter): void;
}
export interface IProfilerSettings {
viewTemplates: Array<IProfilerViewTemplate>;
sessionTemplates: Array<IProfilerSessionTemplate>;
filters: Array<ProfilerFilter>;
}
export interface IColumnViewTemplate {
@@ -160,6 +171,7 @@ export interface IProfilerSessionTemplate {
}
export interface ProfilerFilter {
name?: string;
clauses: ProfilerFilterClause[];
}

View File

@@ -4,17 +4,14 @@
*--------------------------------------------------------------------------------------------*/
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType, RunQueryOnConnectionMode } from 'sql/platform/connection/common/connectionManagement';
import {
ProfilerSessionID, IProfilerSession, IProfilerService, IProfilerViewTemplate, IProfilerSessionTemplate,
PROFILER_SETTINGS, IProfilerSettings, EngineType
} from './interfaces';
import { ProfilerSessionID, IProfilerSession, IProfilerService, IProfilerViewTemplate, IProfilerSessionTemplate, PROFILER_SETTINGS, IProfilerSettings, EngineType, ProfilerFilter, PROFILER_FILTER_SETTINGS } from './interfaces';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { ProfilerInput } from 'sql/workbench/parts/profiler/browser/profilerInput';
import { ProfilerColumnEditorDialog } from 'sql/workbench/parts/profiler/browser/profilerColumnEditorDialog';
import * as azdata from 'azdata';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { ICommandService } from 'vs/platform/commands/common/commands';
@@ -242,4 +239,14 @@ export class ProfilerService implements IProfilerService {
let dialog = this._instantiationService.createInstance(ProfilerFilterDialog);
dialog.open(input);
}
public getFilters(): ProfilerFilter[] {
const config = <ProfilerFilter[]>this._configurationService.getValue(PROFILER_FILTER_SETTINGS);
return config;
}
public saveFilter(filter: ProfilerFilter): void {
const config = [filter];
this._configurationService.updateValue(PROFILER_FILTER_SETTINGS, config, ConfigurationTarget.USER);
}
}