mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-29 01:25:37 -05:00
handling array as a table data and headerFilter.plugin (#12926)
This commit is contained in:
@@ -94,6 +94,9 @@ export function slickGridDataItemColumnValueWithNoData(value: any, columnDef: an
|
||||
if (typeof displayValue === 'number') {
|
||||
displayValue = displayValue.toString();
|
||||
}
|
||||
if (displayValue instanceof Array) {
|
||||
displayValue = displayValue.toString();
|
||||
}
|
||||
return {
|
||||
text: displayValue,
|
||||
ariaLabel: displayValue ? escape(displayValue) : ((displayValue !== undefined) ? localize("tableCell.NoDataAvailable", "no data available") : displayValue)
|
||||
|
||||
@@ -15,9 +15,9 @@ export interface IExtendedColumn<T> extends Slick.Column<T> {
|
||||
}
|
||||
|
||||
export interface CommandEventArgs<T extends Slick.SlickData> {
|
||||
grid: Slick.Grid<T>,
|
||||
column: Slick.Column<T>,
|
||||
command: string
|
||||
grid: Slick.Grid<T>,
|
||||
column: Slick.Column<T>,
|
||||
command: string
|
||||
}
|
||||
|
||||
export class HeaderFilter<T extends Slick.SlickData> {
|
||||
@@ -337,55 +337,50 @@ export class HeaderFilter<T extends Slick.SlickData> {
|
||||
}
|
||||
|
||||
private getFilterValues(dataView: Slick.DataProvider<T>, column: Slick.Column<T>): Array<any> {
|
||||
const seen: Array<string> = [];
|
||||
for (let i = 0; i < dataView.getLength(); i++) {
|
||||
const value = dataView.getItem(i)[column.field!];
|
||||
const seen: Set<string> = new Set();
|
||||
dataView.getItems().forEach(items => {
|
||||
const value = items[column.field!];
|
||||
const valueArr = value instanceof Array ? value : [value];
|
||||
valueArr.forEach(v => seen.add(v));
|
||||
});
|
||||
|
||||
if (!seen.some(x => x === value)) {
|
||||
seen.push(value);
|
||||
}
|
||||
}
|
||||
return seen;
|
||||
return Array.from(seen);
|
||||
}
|
||||
|
||||
private getFilterValuesByInput($input: JQuery<HTMLElement>): Array<string> {
|
||||
const column = $input.data('column'),
|
||||
filter = $input.val() as string,
|
||||
dataView = this.grid.getData() as Slick.DataProvider<T>,
|
||||
seen: Array<any> = [];
|
||||
|
||||
for (let i = 0; i < dataView.getLength(); i++) {
|
||||
const value = dataView.getItem(i)[column.field];
|
||||
seen: Set<any> = new Set();
|
||||
|
||||
dataView.getItems().forEach(item => {
|
||||
const value = item[column.field];
|
||||
const valueArr = value instanceof Array ? value : [(!value ? '' : value)];
|
||||
if (filter.length > 0) {
|
||||
const itemValue = !value ? '' : value;
|
||||
const lowercaseFilter = filter.toString().toLowerCase();
|
||||
const lowercaseVal = itemValue.toString().toLowerCase();
|
||||
if (!seen.some(x => x === value) && lowercaseVal.indexOf(lowercaseFilter) > -1) {
|
||||
seen.push(value);
|
||||
}
|
||||
valueArr.map(v => v.toLowerCase()).forEach((lowerVal, index) => {
|
||||
if (lowerVal.indexOf(lowercaseFilter) > -1) {
|
||||
seen.add(valueArr[index]);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
valueArr.forEach(v => seen.add(v));
|
||||
}
|
||||
else {
|
||||
if (!seen.some(x => x === value)) {
|
||||
seen.push(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return seen.sort((v) => { return v; });
|
||||
return Array.from(seen).sort((v) => { return v; });
|
||||
}
|
||||
|
||||
private getAllFilterValues(data: Array<Slick.SlickData>, column: Slick.Column<T>) {
|
||||
const seen: Array<any> = [];
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
const value = data[i][column.field!];
|
||||
const seen: Set<any> = new Set();
|
||||
|
||||
if (!seen.some(x => x === value)) {
|
||||
seen.push(value);
|
||||
}
|
||||
}
|
||||
data.forEach(items => {
|
||||
const value = items[column.field!];
|
||||
const valueArr = value instanceof Array ? value : [value];
|
||||
valueArr.forEach(v => seen.add(v));
|
||||
});
|
||||
|
||||
return seen.sort((v) => { return v; });
|
||||
return Array.from(seen).sort((v) => { return v; });
|
||||
}
|
||||
|
||||
private handleMenuItemClick(e: JQuery.Event<HTMLElement, null>, command: string, columnDef: Slick.Column<T>) {
|
||||
|
||||
Reference in New Issue
Block a user