query results filtering and sorting (#14833)

* query results filtering and sorting (#14589)

* enable filter

* attach button style

* add hybrid data provider

* make filter and sort work

* fix editor switch issue

* configuration

* fix sort and filter

* add more specific selector

* fix hidden items issue

* update text

* revert text change

* fix copy results issue

* put feature behind preview flag

* comments

* fix tslint error
This commit is contained in:
Alan Ren
2021-03-23 11:30:41 -07:00
committed by GitHub
parent 5c67f3dbed
commit 6c54059f89
22 changed files with 554 additions and 132 deletions

View File

@@ -3,8 +3,9 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IDisposableDataProvider } from 'sql/base/browser/ui/table/interfaces';
import { IDisposableDataProvider } from 'sql/base/common/dataProvider';
import { CancellationTokenSource } from 'vs/base/common/cancellation';
import { Emitter, Event } from 'vs/base/common/event';
export interface IObservableCollection<T> {
getLength(): number;
@@ -201,8 +202,38 @@ export class VirtualizedCollection<T extends Slick.SlickData> implements IObserv
export class AsyncDataProvider<T extends Slick.SlickData> implements IDisposableDataProvider<T> {
private _onFilterStateChange = new Emitter<void>();
get onFilterStateChange(): Event<void> { return this._onFilterStateChange.event; }
private _onSortComplete = new Emitter<Slick.OnSortEventArgs<T>>();
get onSortComplete(): Event<Slick.OnSortEventArgs<T>> { return this._onSortComplete.event; }
constructor(public dataRows: IObservableCollection<T>) { }
public get isDataInMemory(): boolean {
return false;
}
getRangeAsync(startIndex: number, length: number): Promise<T[]> {
throw new Error('Method not implemented.');
}
getFilteredColumnValues(column: Slick.Column<T>): Promise<string[]> {
throw new Error('Method not implemented.');
}
getColumnValues(column: Slick.Column<T>): Promise<string[]> {
throw new Error('Method not implemented.');
}
sort(options: Slick.OnSortEventArgs<T>): Promise<void> {
throw new Error('Method not implemented.');
}
filter(columns?: Slick.Column<T>[]): Promise<void> {
throw new Error('Method not implemented.');
}
public getLength(): number {
return this.dataRows.getLength();
}