mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-23 17:23:02 -05:00
Readd Top Operations (#3628)
* workin on top operations * added top operations, changed default sorter to handle number string better
This commit is contained in:
@@ -8,6 +8,7 @@ import { Observer } from 'rxjs/Observer';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import * as types from 'vs/base/common/types';
|
||||
import { compare as stringCompare } from 'vs/base/common/strings';
|
||||
|
||||
import { IDisposableDataProvider } from 'sql/base/browser/ui/table/interfaces';
|
||||
|
||||
@@ -19,7 +20,23 @@ export interface IFindPosition {
|
||||
function defaultSort<T>(args: Slick.OnSortEventArgs<T>, data: Array<T>): Array<T> {
|
||||
let field = args.sortCol.field;
|
||||
let sign = args.sortAsc ? 1 : -1;
|
||||
return data.sort((a, b) => (a[field] === b[field] ? 0 : (a[field] > b[field] ? 1 : -1)) * sign);
|
||||
let comparer: (a, b) => number;
|
||||
if (types.isString(data[0][field])) {
|
||||
if (Number(data[0][field]) !== NaN) {
|
||||
comparer = (a: number, b: number) => {
|
||||
let anum = Number(a[field]);
|
||||
let bnum = Number(b[field]);
|
||||
return anum === bnum ? 0 : anum > bnum ? 1 : -1;
|
||||
};
|
||||
} else {
|
||||
comparer = stringCompare;
|
||||
}
|
||||
} else {
|
||||
comparer = (a: number, b: number) => {
|
||||
return a[field] === b[field] ? 0 : (a[field] > b[field] ? 1 : -1);
|
||||
};
|
||||
}
|
||||
return data.sort((a, b) => comparer(a, b) * sign);
|
||||
}
|
||||
|
||||
export class TableDataView<T extends Slick.SlickData> implements IDisposableDataProvider<T> {
|
||||
|
||||
Reference in New Issue
Block a user