mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Add more functionality to the grid (#7516)
This commit is contained in:
@@ -114,7 +114,7 @@ export class CellSelectionModel<T> implements Slick.SelectionModel<T, Array<Slic
|
|||||||
let columnIndex = this.grid.getColumnIndex(args.column.id!);
|
let columnIndex = this.grid.getColumnIndex(args.column.id!);
|
||||||
if (this.grid.canCellBeSelected(0, columnIndex)) {
|
if (this.grid.canCellBeSelected(0, columnIndex)) {
|
||||||
let ranges: Array<Slick.Range>;
|
let ranges: Array<Slick.Range>;
|
||||||
if (e.shiftKey) {
|
if (e.ctrlKey) {
|
||||||
ranges = this.getSelectedRanges();
|
ranges = this.getSelectedRanges();
|
||||||
ranges.push(new Slick.Range(0, columnIndex, this.grid.getDataLength() - 1, columnIndex));
|
ranges.push(new Slick.Range(0, columnIndex, this.grid.getDataLength() - 1, columnIndex));
|
||||||
} else {
|
} else {
|
||||||
@@ -230,9 +230,17 @@ export class CellSelectionModel<T> implements Slick.SelectionModel<T, Array<Slic
|
|||||||
let ranges: Array<Slick.Range>;
|
let ranges: Array<Slick.Range>;
|
||||||
|
|
||||||
ranges = this.getSelectedRanges();
|
ranges = this.getSelectedRanges();
|
||||||
ranges = this.insertIntoSelections(ranges, new Slick.Range(args.row, args.cell));
|
|
||||||
|
|
||||||
this.grid.setActiveCell(args.row, args.cell);
|
let selectedRange: Slick.Range;
|
||||||
|
if (args.cell === 0) {
|
||||||
|
selectedRange = new Slick.Range(args.row, 1, args.row, args.grid.getColumns().length - 1);
|
||||||
|
} else {
|
||||||
|
selectedRange = new Slick.Range(args.row, args.cell);
|
||||||
|
|
||||||
|
}
|
||||||
|
ranges = this.insertIntoSelections(ranges, selectedRange);
|
||||||
|
|
||||||
|
this.grid.setActiveCell(selectedRange.toRow, selectedRange.toCell);
|
||||||
this.setSelectedRanges(ranges);
|
this.setSelectedRanges(ranges);
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -43,15 +43,13 @@ export interface IGridDataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getResultsString(provider: IGridDataProvider, selection: Slick.Range[], includeHeaders?: boolean): Promise<string> {
|
export async function getResultsString(provider: IGridDataProvider, selection: Slick.Range[], includeHeaders?: boolean): Promise<string> {
|
||||||
let headers: Map<Number, string> = new Map();
|
let headers: Map<Number, string> = new Map(); // Maps a column index -> header
|
||||||
let rows: Map<Number, Map<Number, string>> = new Map();
|
let rows: Map<Number, Map<Number, string>> = new Map(); // Maps row index -> column index -> actual row value
|
||||||
let copyTable: string[][] = [];
|
|
||||||
const eol = provider.getEolString();
|
const eol = provider.getEolString();
|
||||||
|
|
||||||
// create a mapping of the ranges to get promises
|
// create a mapping of the ranges to get promises
|
||||||
let tasks = selection.map((range, i) => {
|
let tasks = selection.map((range, i) => {
|
||||||
return async () => {
|
return async () => {
|
||||||
let selectionsCopy = selection;
|
|
||||||
let startCol = range.fromCell;
|
let startCol = range.fromCell;
|
||||||
let startRow = range.fromRow;
|
let startRow = range.fromRow;
|
||||||
|
|
||||||
@@ -103,8 +101,9 @@ export async function getResultsString(provider: IGridDataProvider, selection: S
|
|||||||
copyString = [...headers.values()].join('\t').concat(eol);
|
copyString = [...headers.values()].join('\t').concat(eol);
|
||||||
}
|
}
|
||||||
|
|
||||||
const rowKeys = [...headers.keys()];
|
const rowKeys = [...headers.keys()].sort();
|
||||||
|
|
||||||
|
rows = new Map([...rows.entries()].sort());
|
||||||
for (let rowEntry of rows) {
|
for (let rowEntry of rows) {
|
||||||
let rowMap = rowEntry[1];
|
let rowMap = rowEntry[1];
|
||||||
for (let rowIdx of rowKeys) {
|
for (let rowIdx of rowKeys) {
|
||||||
@@ -115,9 +114,11 @@ export async function getResultsString(provider: IGridDataProvider, selection: S
|
|||||||
}
|
}
|
||||||
copyString = copyString.concat('\t');
|
copyString = copyString.concat('\t');
|
||||||
}
|
}
|
||||||
|
// Removes the tab seperator from the end of a row
|
||||||
|
copyString = copyString.slice(0, -1 * '\t'.length);
|
||||||
copyString = copyString.concat(eol);
|
copyString = copyString.concat(eol);
|
||||||
}
|
}
|
||||||
// Removes EoL from the end of the string
|
// Removes EoL from the end of the result
|
||||||
copyString = copyString.slice(0, -1 * eol.length);
|
copyString = copyString.slice(0, -1 * eol.length);
|
||||||
|
|
||||||
return copyString;
|
return copyString;
|
||||||
|
|||||||
Reference in New Issue
Block a user