mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
fix object filtering regression (#10609)
* fix object filtering regression * add comments
This commit is contained in:
@@ -46,7 +46,7 @@ export class ExplorerTable extends Disposable {
|
|||||||
private _actionsColumn: ButtonColumn<Slick.SlickData>;
|
private _actionsColumn: ButtonColumn<Slick.SlickData>;
|
||||||
private _filterStr: string;
|
private _filterStr: string;
|
||||||
private _explorerView: ExplorerView;
|
private _explorerView: ExplorerView;
|
||||||
private _displayProperties: ObjectListViewProperty[];
|
private _propertiesToDisplay: ObjectListViewProperty[];
|
||||||
|
|
||||||
constructor(private parentElement: HTMLElement,
|
constructor(private parentElement: HTMLElement,
|
||||||
private readonly router: Router,
|
private readonly router: Router,
|
||||||
@@ -61,8 +61,8 @@ export class ExplorerTable extends Disposable {
|
|||||||
super();
|
super();
|
||||||
this._explorerView = new ExplorerView(this.context);
|
this._explorerView = new ExplorerView(this.context);
|
||||||
const connectionInfo = this.bootStrapService.connectionManagementService.connectionInfo;
|
const connectionInfo = this.bootStrapService.connectionManagementService.connectionInfo;
|
||||||
this._displayProperties = this._explorerView.getPropertyList(getFlavor(connectionInfo.serverInfo, this.logService, connectionInfo.providerId));
|
this._propertiesToDisplay = this._explorerView.getPropertyList(getFlavor(connectionInfo.serverInfo, this.logService, connectionInfo.providerId));
|
||||||
const explorerFilter = new ExplorerFilter(this.context, this._displayProperties.map(p => p.value));
|
const explorerFilter = new ExplorerFilter(this.context, this.propertiesToFilter);
|
||||||
this._view = new TableDataView<Slick.SlickData>(undefined, undefined, undefined, (data: Slick.SlickData[]): Slick.SlickData[] => {
|
this._view = new TableDataView<Slick.SlickData>(undefined, undefined, undefined, (data: Slick.SlickData[]): Slick.SlickData[] => {
|
||||||
return explorerFilter.filter(this._filterStr, data);
|
return explorerFilter.filter(this._filterStr, data);
|
||||||
});
|
});
|
||||||
@@ -180,13 +180,13 @@ export class ExplorerTable extends Disposable {
|
|||||||
private get columnDefinitions(): Slick.Column<Slick.SlickData>[] {
|
private get columnDefinitions(): Slick.Column<Slick.SlickData>[] {
|
||||||
const totalWidth = DOM.getContentWidth(this.parentElement);
|
const totalWidth = DOM.getContentWidth(this.parentElement);
|
||||||
let totalColumnWidthWeight: number = 0;
|
let totalColumnWidthWeight: number = 0;
|
||||||
this._displayProperties.forEach(p => {
|
this._propertiesToDisplay.forEach(p => {
|
||||||
if (p.widthWeight) {
|
if (p.widthWeight) {
|
||||||
totalColumnWidthWeight += p.widthWeight;
|
totalColumnWidthWeight += p.widthWeight;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const columns: Slick.Column<Slick.SlickData>[] = this._displayProperties.map(property => {
|
const columns: Slick.Column<Slick.SlickData>[] = this._propertiesToDisplay.map(property => {
|
||||||
const columnWidth = property.widthWeight ? totalWidth * (property.widthWeight / totalColumnWidthWeight) : undefined;
|
const columnWidth = property.widthWeight ? totalWidth * (property.widthWeight / totalColumnWidthWeight) : undefined;
|
||||||
if (property.value === NameProperty) {
|
if (property.value === NameProperty) {
|
||||||
const nameColumn = new TextWithIconColumn({
|
const nameColumn = new TextWithIconColumn({
|
||||||
@@ -209,5 +209,14 @@ export class ExplorerTable extends Disposable {
|
|||||||
columns.push(this._actionsColumn.definition);
|
columns.push(this._actionsColumn.definition);
|
||||||
return columns;
|
return columns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private get propertiesToFilter(): string[] {
|
||||||
|
const properties = this._propertiesToDisplay.map(p => p.value);
|
||||||
|
if (this.context === 'database') {
|
||||||
|
// for objects in databases, we also support filter by full name: schema.objectName even though the full name is not being displayed.
|
||||||
|
properties.push('fullName');
|
||||||
|
}
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ export class ObjectMetadataWrapper implements ObjectMetadata {
|
|||||||
public name: string;
|
public name: string;
|
||||||
public schema: string;
|
public schema: string;
|
||||||
|
|
||||||
|
public get fullName(): string {
|
||||||
|
return `${this.schema}.${this.name}`;
|
||||||
|
}
|
||||||
|
|
||||||
constructor(from?: ObjectMetadata) {
|
constructor(from?: ObjectMetadata) {
|
||||||
if (from) {
|
if (from) {
|
||||||
this.metadataType = from.metadataType;
|
this.metadataType = from.metadataType;
|
||||||
|
|||||||
Reference in New Issue
Block a user