mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Strict null check on full "base" code (#4973)
* removes more builder references * remove builder from profiler * formatting * fix profiler dailog * remove builder from oatuhdialog * remove the rest of builder references * formatting * add more strict null checks to base
This commit is contained in:
@@ -32,16 +32,16 @@ export class HeightMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public onInsertItems(iterator: INextIterator<IViewItem>, afterItemId: string | undefined = undefined): number | undefined {
|
public onInsertItems(iterator: INextIterator<IViewItem>, afterItemId: string | undefined = undefined): number | undefined {
|
||||||
let viewItem: IViewItem | undefined = undefined;
|
let viewItem: IViewItem | null = null;
|
||||||
let i: number, j: number;
|
let i: number, j: number;
|
||||||
let totalSize: number;
|
let totalSize: number;
|
||||||
let sizeDiff = 0;
|
let sizeDiff = 0;
|
||||||
|
|
||||||
if (afterItemId === undefined) {
|
if (afterItemId === null) {
|
||||||
i = 0;
|
i = 0;
|
||||||
totalSize = 0;
|
totalSize = 0;
|
||||||
} else {
|
} else {
|
||||||
i = this.indexes[afterItemId] + 1;
|
i = this.indexes[afterItemId!] + 1;
|
||||||
viewItem = this.heightMap[i - 1];
|
viewItem = this.heightMap[i - 1];
|
||||||
|
|
||||||
if (!viewItem) {
|
if (!viewItem) {
|
||||||
@@ -59,7 +59,7 @@ export class HeightMap {
|
|||||||
while (viewItem = iterator.next()) {
|
while (viewItem = iterator.next()) {
|
||||||
viewItem.top = totalSize + sizeDiff;
|
viewItem.top = totalSize + sizeDiff;
|
||||||
|
|
||||||
this.indexes[viewItem.view.id] = i++;
|
this.indexes[viewItem.view.id!] = i++;
|
||||||
itemsToInsert.push(viewItem);
|
itemsToInsert.push(viewItem);
|
||||||
sizeDiff += viewItem.height;
|
sizeDiff += viewItem.height;
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ export class HeightMap {
|
|||||||
for (j = i; j < this.heightMap.length; j++) {
|
for (j = i; j < this.heightMap.length; j++) {
|
||||||
viewItem = this.heightMap[j];
|
viewItem = this.heightMap[j];
|
||||||
viewItem.top += sizeDiff;
|
viewItem.top += sizeDiff;
|
||||||
this.indexes[viewItem.view.id] = j;
|
this.indexes[viewItem.view.id!] = j;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = itemsToInsert.length - 1; j >= 0; j--) {
|
for (j = itemsToInsert.length - 1; j >= 0; j--) {
|
||||||
@@ -89,7 +89,7 @@ export class HeightMap {
|
|||||||
|
|
||||||
// Contiguous items
|
// Contiguous items
|
||||||
public onRemoveItems(iterator: INextIterator<string>): void {
|
public onRemoveItems(iterator: INextIterator<string>): void {
|
||||||
let itemId: string | undefined = undefined;
|
let itemId: string | null = null;
|
||||||
let viewItem: IViewItem;
|
let viewItem: IViewItem;
|
||||||
let startIndex: number | undefined = undefined;
|
let startIndex: number | undefined = undefined;
|
||||||
let i = 0;
|
let i = 0;
|
||||||
@@ -122,7 +122,7 @@ export class HeightMap {
|
|||||||
for (i = startIndex; i < this.heightMap.length; i++) {
|
for (i = startIndex; i < this.heightMap.length; i++) {
|
||||||
viewItem = this.heightMap[i];
|
viewItem = this.heightMap[i];
|
||||||
viewItem.top += sizeDiff;
|
viewItem.top += sizeDiff;
|
||||||
this.indexes[viewItem.view.id] = i;
|
this.indexes[viewItem.view.id!] = i;
|
||||||
this.onRefreshItem(viewItem);
|
this.onRefreshItem(viewItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -156,14 +156,14 @@ export class HeightMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public itemAt(position: number): string {
|
public itemAt(position: number): string {
|
||||||
return this.heightMap[this.indexAt(position)].view.id;
|
return this.heightMap[this.indexAt(position)].view.id!;
|
||||||
}
|
}
|
||||||
|
|
||||||
public withItemsInRange(start: number, end: number, fn: (item: string) => void): void {
|
public withItemsInRange(start: number, end: number, fn: (item: string) => void): void {
|
||||||
start = this.indexAt(start);
|
start = this.indexAt(start);
|
||||||
end = this.indexAt(end);
|
end = this.indexAt(end);
|
||||||
for (let i = start; i <= end; i++) {
|
for (let i = start; i <= end; i++) {
|
||||||
fn(this.heightMap[i].view.id);
|
fn(this.heightMap[i].view.id!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,11 +202,11 @@ export class HeightMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public itemAfter(item: IViewItem): IViewItem | undefined {
|
public itemAfter(item: IViewItem): IViewItem | undefined {
|
||||||
return this.heightMap[this.indexes[item.view.id] + 1] || undefined;
|
return this.heightMap[this.indexes[item.view.id!] + 1] || undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose(): void {
|
public dispose(): void {
|
||||||
this.heightMap = undefined;
|
this.heightMap = [];
|
||||||
this.indexes = undefined;
|
this.indexes = {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -239,12 +239,12 @@ export class ScrollableSplitView extends HeightMap implements IDisposable {
|
|||||||
if (container.parentElement) {
|
if (container.parentElement) {
|
||||||
this.viewContainer.removeChild(container);
|
this.viewContainer.removeChild(container);
|
||||||
}
|
}
|
||||||
this.onRemoveItems(new ArrayIterator([item.view.id]));
|
this.onRemoveItems(new ArrayIterator([item.view.id!]));
|
||||||
});
|
});
|
||||||
const disposable = combinedDisposable([onChangeDisposable, containerDisposable]);
|
const disposable = combinedDisposable([onChangeDisposable, containerDisposable]);
|
||||||
|
|
||||||
const onAdd = view.onAdd ? () => view.onAdd() : () => { };
|
const onAdd = view.onAdd ? () => view.onAdd!() : () => { };
|
||||||
const onRemove = view.onRemove ? () => view.onRemove() : () => { };
|
const onRemove = view.onRemove ? () => view.onRemove!() : () => { };
|
||||||
|
|
||||||
const layoutContainer = this.orientation === Orientation.VERTICAL
|
const layoutContainer = this.orientation === Orientation.VERTICAL
|
||||||
? () => item.container.style.height = `${item.size}px`
|
? () => item.container.style.height = `${item.size}px`
|
||||||
@@ -342,12 +342,12 @@ export class ScrollableSplitView extends HeightMap implements IDisposable {
|
|||||||
if (container.parentElement) {
|
if (container.parentElement) {
|
||||||
this.viewContainer.removeChild(container);
|
this.viewContainer.removeChild(container);
|
||||||
}
|
}
|
||||||
this.onRemoveItems(new ArrayIterator([item.view.id]));
|
this.onRemoveItems(new ArrayIterator([item.view.id!]));
|
||||||
});
|
});
|
||||||
const disposable = combinedDisposable([onChangeDisposable, containerDisposable]);
|
const disposable = combinedDisposable([onChangeDisposable, containerDisposable]);
|
||||||
|
|
||||||
const onAdd = view.onAdd ? () => view.onAdd() : () => { };
|
const onAdd = view.onAdd ? () => view.onAdd!() : () => { };
|
||||||
const onRemove = view.onRemove ? () => view.onRemove() : () => { };
|
const onRemove = view.onRemove ? () => view.onRemove!() : () => { };
|
||||||
|
|
||||||
const layoutContainer = this.orientation === Orientation.VERTICAL
|
const layoutContainer = this.orientation === Orientation.VERTICAL
|
||||||
? () => item.container.style.height = `${item.size}px`
|
? () => item.container.style.height = `${item.size}px`
|
||||||
@@ -610,11 +610,11 @@ export class ScrollableSplitView extends HeightMap implements IDisposable {
|
|||||||
this.layoutViews();
|
this.layoutViews();
|
||||||
} else {
|
} else {
|
||||||
item.size = size;
|
item.size = size;
|
||||||
this.updateSize(item.view.id, size);
|
this.updateSize(item.view.id!, size);
|
||||||
let top = item.top + item.size;
|
let top = item.top + item.size;
|
||||||
for (let i = index + 1; i < this.viewItems.length; i++) {
|
for (let i = index + 1; i < this.viewItems.length; i++) {
|
||||||
let currentItem = this.viewItems[i];
|
let currentItem = this.viewItems[i];
|
||||||
this.updateTop(currentItem.view.id, top);
|
this.updateTop(currentItem.view.id!, top);
|
||||||
top += currentItem.size;
|
top += currentItem.size;
|
||||||
}
|
}
|
||||||
this.relayout(index);
|
this.relayout(index);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
|
|
||||||
this._$container = jQuery(this._grid.getContainerNode());
|
this._$container = jQuery(this._grid.getContainerNode());
|
||||||
this._$container.on('dblclick.autosize', '.slick-resizable-handle', e => this.handleDoubleClick(e));
|
this._$container.on('dblclick.autosize', '.slick-resizable-handle', e => this.handleDoubleClick(e));
|
||||||
this._context = document.createElement('canvas').getContext('2d');
|
this._context = document.createElement('canvas').getContext('2d')!;
|
||||||
}
|
}
|
||||||
|
|
||||||
public destroy() {
|
public destroy() {
|
||||||
@@ -78,7 +78,7 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
});
|
});
|
||||||
let change = false;
|
let change = false;
|
||||||
for (let i = 0; i <= headerColumns.children.length; i++) {
|
for (let i = 0; i <= headerColumns.children.length; i++) {
|
||||||
let headerEl = jQuery(headerColumns.children.item(i));
|
let headerEl = jQuery(headerColumns.children.item(i)!);
|
||||||
let columnDef = headerEl.data('column');
|
let columnDef = headerEl.data('column');
|
||||||
if (columnDef) {
|
if (columnDef) {
|
||||||
let headerWidth = this.getElementWidth(headerEl[0]);
|
let headerWidth = this.getElementWidth(headerEl[0]);
|
||||||
@@ -115,7 +115,7 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
|
|
||||||
private reSizeColumn(headerEl: JQuery, columnDef: Slick.Column<T>) {
|
private reSizeColumn(headerEl: JQuery, columnDef: Slick.Column<T>) {
|
||||||
let headerWidth = this.getElementWidth(headerEl[0]);
|
let headerWidth = this.getElementWidth(headerEl[0]);
|
||||||
let colIndex = this._grid.getColumnIndex(columnDef.id);
|
let colIndex = this._grid.getColumnIndex(columnDef.id!);
|
||||||
let origCols = this._grid.getColumns();
|
let origCols = this._grid.getColumns();
|
||||||
let allColumns = clone(origCols);
|
let allColumns = clone(origCols);
|
||||||
allColumns.forEach((col, index) => {
|
allColumns.forEach((col, index) => {
|
||||||
@@ -134,7 +134,7 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getMaxColumnTextWidth(columnDef, colIndex: number): number {
|
private getMaxColumnTextWidth(columnDef, colIndex: number): number {
|
||||||
let texts = [];
|
let texts: Array<string> = [];
|
||||||
let rowEl = this.createRow(columnDef);
|
let rowEl = this.createRow(columnDef);
|
||||||
let data = this._grid.getData();
|
let data = this._grid.getData();
|
||||||
let viewPort = this._grid.getViewport();
|
let viewPort = this._grid.getViewport();
|
||||||
@@ -146,7 +146,7 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
let template = this.getMaxTextTemplate(texts, columnDef, colIndex, data, rowEl);
|
let template = this.getMaxTextTemplate(texts, columnDef, colIndex, data, rowEl);
|
||||||
let width = this.getTemplateWidth(rowEl, template);
|
let width = this.getTemplateWidth(rowEl, template);
|
||||||
this.deleteRow(rowEl);
|
this.deleteRow(rowEl);
|
||||||
return width > this._options.maxWidth ? this._options.maxWidth : width;
|
return width > this._options.maxWidth! ? this._options.maxWidth! : width;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getTemplateWidth(rowEl: JQuery, template: JQuery | HTMLElement): number {
|
private getTemplateWidth(rowEl: JQuery, template: JQuery | HTMLElement): number {
|
||||||
@@ -172,7 +172,7 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
maxTemplate = template || text;
|
maxTemplate = template || text;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return maxTemplate;
|
return maxTemplate!;
|
||||||
}
|
}
|
||||||
|
|
||||||
private createRow(columnDef): JQuery {
|
private createRow(columnDef): JQuery {
|
||||||
@@ -194,9 +194,9 @@ export class AutoColumnSize<T> implements Slick.Plugin<T> {
|
|||||||
private getElementWidth(element: HTMLElement): number {
|
private getElementWidth(element: HTMLElement): number {
|
||||||
let width, clone = element.cloneNode(true) as HTMLElement;
|
let width, clone = element.cloneNode(true) as HTMLElement;
|
||||||
clone.style.cssText = 'position: absolute; visibility: hidden;right: auto;text-overflow: initial;white-space: nowrap;';
|
clone.style.cssText = 'position: absolute; visibility: hidden;right: auto;text-overflow: initial;white-space: nowrap;';
|
||||||
element.parentNode.insertBefore(clone, element);
|
element.parentNode!.insertBefore(clone, element);
|
||||||
width = clone.offsetWidth;
|
width = clone.offsetWidth;
|
||||||
clone.parentNode.removeChild(clone);
|
clone.parentNode!.removeChild(clone);
|
||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export class CellRangeSelector<T> implements ICellRangeSelector<T> {
|
|||||||
private handler = new Slick.EventHandler();
|
private handler = new Slick.EventHandler();
|
||||||
private decorator: ICellRangeDecorator;
|
private decorator: ICellRangeDecorator;
|
||||||
private canvas: HTMLCanvasElement;
|
private canvas: HTMLCanvasElement;
|
||||||
private currentlySelectedRange: { start: Slick.Cell, end: Slick.Cell };
|
private currentlySelectedRange: { start: Slick.Cell, end?: Slick.Cell };
|
||||||
|
|
||||||
public onBeforeCellRangeSelected = new Slick.Event<Slick.Cell>();
|
public onBeforeCellRangeSelected = new Slick.Event<Slick.Cell>();
|
||||||
public onCellRangeSelected = new Slick.Event<{ range: Slick.Range }>();
|
public onCellRangeSelected = new Slick.Event<{ range: Slick.Range }>();
|
||||||
@@ -87,7 +87,7 @@ export class CellRangeSelector<T> implements ICellRangeSelector<T> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.canvas.classList.add(this.options.dragClass);
|
this.canvas.classList.add(this.options.dragClass!);
|
||||||
|
|
||||||
this.grid.setActiveCell(cell.row, cell.cell);
|
this.grid.setActiveCell(cell.row, cell.cell);
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ export class CellRangeSelector<T> implements ICellRangeSelector<T> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.canvas.classList.remove(this.options.dragClass);
|
this.canvas.classList.remove(this.options.dragClass!);
|
||||||
this.dragging = false;
|
this.dragging = false;
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
this.decorator.hide();
|
this.decorator.hide();
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ export class CellSelectionModel<T> implements Slick.SelectionModel<T, Array<Slic
|
|||||||
|
|
||||||
private handleHeaderClick(e: MouseEvent, args: Slick.OnHeaderClickEventArgs<T>) {
|
private handleHeaderClick(e: MouseEvent, args: Slick.OnHeaderClickEventArgs<T>) {
|
||||||
if (!isUndefinedOrNull(args.column)) {
|
if (!isUndefinedOrNull(args.column)) {
|
||||||
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.shiftKey) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { ICheckboxStyles } from 'vs/base/browser/ui/checkbox/checkbox';
|
|||||||
import * as strings from 'vs/base/common/strings';
|
import * as strings from 'vs/base/common/strings';
|
||||||
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
import { KeyCode } from 'vs/base/common/keyCodes';
|
import { KeyCode } from 'vs/base/common/keyCodes';
|
||||||
|
import { range } from 'vs/base/common/arrays';
|
||||||
|
|
||||||
export interface ICheckboxSelectColumnOptions extends Slick.PluginOptions, ICheckboxStyles {
|
export interface ICheckboxSelectColumnOptions extends Slick.PluginOptions, ICheckboxStyles {
|
||||||
columnId?: string;
|
columnId?: string;
|
||||||
@@ -19,7 +20,7 @@ export interface ICheckboxSelectColumnOptions extends Slick.PluginOptions, IChec
|
|||||||
|
|
||||||
const defaultOptions: ICheckboxSelectColumnOptions = {
|
const defaultOptions: ICheckboxSelectColumnOptions = {
|
||||||
columnId: '_checkbox_selector',
|
columnId: '_checkbox_selector',
|
||||||
cssClass: null,
|
cssClass: undefined,
|
||||||
toolTip: nls.localize('selectDeselectAll', 'Select/Deselect All'),
|
toolTip: nls.localize('selectDeselectAll', 'Select/Deselect All'),
|
||||||
width: 30
|
width: 30
|
||||||
};
|
};
|
||||||
@@ -54,7 +55,7 @@ export class CheckboxSelectColumn<T> implements Slick.Plugin<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private handleSelectedRowsChanged(e: Event, args: Slick.OnSelectedRowsChangedEventArgs<T>): void {
|
private handleSelectedRowsChanged(e: Event, args: Slick.OnSelectedRowsChangedEventArgs<T>): void {
|
||||||
let selectedRows = this._grid.getSelectedRows();
|
const selectedRows = this._grid.getSelectedRows();
|
||||||
let lookup = {}, row, i;
|
let lookup = {}, row, i;
|
||||||
for (i = 0; i < selectedRows.length; i++) {
|
for (i = 0; i < selectedRows.length; i++) {
|
||||||
row = selectedRows[i];
|
row = selectedRows[i];
|
||||||
@@ -72,11 +73,11 @@ export class CheckboxSelectColumn<T> implements Slick.Plugin<T> {
|
|||||||
|
|
||||||
if (!this._options.title) {
|
if (!this._options.title) {
|
||||||
if (selectedRows.length && selectedRows.length === this._grid.getDataLength()) {
|
if (selectedRows.length && selectedRows.length === this._grid.getDataLength()) {
|
||||||
this._grid.updateColumnHeader(this._options.columnId,
|
this._grid.updateColumnHeader(this._options.columnId!,
|
||||||
strings.format(checkboxTemplate, 'checked'),
|
strings.format(checkboxTemplate, 'checked'),
|
||||||
this._options.toolTip);
|
this._options.toolTip);
|
||||||
} else {
|
} else {
|
||||||
this._grid.updateColumnHeader(this._options.columnId,
|
this._grid.updateColumnHeader(this._options.columnId!,
|
||||||
strings.format(checkboxTemplate, ''),
|
strings.format(checkboxTemplate, ''),
|
||||||
this._options.toolTip);
|
this._options.toolTip);
|
||||||
}
|
}
|
||||||
@@ -108,7 +109,7 @@ export class CheckboxSelectColumn<T> implements Slick.Plugin<T> {
|
|||||||
|
|
||||||
private handleClick(e: Event, args: Slick.OnClickEventArgs<T>): void {
|
private handleClick(e: Event, args: Slick.OnClickEventArgs<T>): void {
|
||||||
// clicking on a row select checkbox
|
// clicking on a row select checkbox
|
||||||
if (this._grid.getColumns()[args.cell].id === this._options.columnId && jQuery(e.target).is('input[type="checkbox"]')) {
|
if (this._grid.getColumns()[args.cell].id === this._options.columnId && jQuery(e.target!).is('input[type="checkbox"]')) {
|
||||||
// if editing, try to commit
|
// if editing, try to commit
|
||||||
if (this._grid.getEditorLock().isActive() && !this._grid.getEditorLock().commitCurrentEdit()) {
|
if (this._grid.getEditorLock().isActive() && !this._grid.getEditorLock().commitCurrentEdit()) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -131,7 +132,7 @@ export class CheckboxSelectColumn<T> implements Slick.Plugin<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private handleHeaderClick(e: Event, args: Slick.OnHeaderClickEventArgs<T>): void {
|
private handleHeaderClick(e: Event, args: Slick.OnHeaderClickEventArgs<T>): void {
|
||||||
if (!this._options.title && args.column.id === this._options.columnId && jQuery(e.target).is('input[type="checkbox"]')) {
|
if (!this._options.title && args.column.id === this._options.columnId && jQuery(e.target!).is('input[type="checkbox"]')) {
|
||||||
// if editing, try to commit
|
// if editing, try to commit
|
||||||
if (this._grid.getEditorLock().isActive() && !this._grid.getEditorLock().commitCurrentEdit()) {
|
if (this._grid.getEditorLock().isActive() && !this._grid.getEditorLock().commitCurrentEdit()) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -139,18 +140,15 @@ export class CheckboxSelectColumn<T> implements Slick.Plugin<T> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jQuery(e.target).is('input[checked]')) {
|
if (jQuery(e.target!).is('input[checked]')) {
|
||||||
let rows = [];
|
const rows = range(this._grid.getDataLength());
|
||||||
for (let i = 0; i < this._grid.getDataLength(); i++) {
|
|
||||||
rows.push(i);
|
|
||||||
}
|
|
||||||
this._grid.setSelectedRows(rows);
|
this._grid.setSelectedRows(rows);
|
||||||
this._grid.updateColumnHeader(this._options.columnId,
|
this._grid.updateColumnHeader(this._options.columnId!,
|
||||||
strings.format(checkboxTemplate, 'checked'),
|
strings.format(checkboxTemplate, 'checked'),
|
||||||
this._options.toolTip);
|
this._options.toolTip);
|
||||||
} else {
|
} else {
|
||||||
this._grid.setSelectedRows([]);
|
this._grid.setSelectedRows([]);
|
||||||
this._grid.updateColumnHeader(this._options.columnId,
|
this._grid.updateColumnHeader(this._options.columnId!,
|
||||||
strings.format(checkboxTemplate, ''), this._options.toolTip);
|
strings.format(checkboxTemplate, ''), this._options.toolTip);
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
@@ -173,11 +171,8 @@ export class CheckboxSelectColumn<T> implements Slick.Plugin<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private checkboxSelectionFormatter(row, cell, value, columnDef: Slick.Column<T>, dataContext): string {
|
private checkboxSelectionFormatter(row, cell, value, columnDef: Slick.Column<T>, dataContext): string {
|
||||||
if (dataContext) {
|
return this._selectedRowsLookup[row]
|
||||||
return this._selectedRowsLookup[row]
|
? strings.format(checkboxTemplate, 'checked')
|
||||||
? strings.format(checkboxTemplate, 'checked')
|
: strings.format(checkboxTemplate, '');
|
||||||
: strings.format(checkboxTemplate, '');
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export class HeaderFilter {
|
|||||||
public onFilterApplied = new Slick.Event();
|
public onFilterApplied = new Slick.Event();
|
||||||
public onCommand = new Slick.Event();
|
public onCommand = new Slick.Event();
|
||||||
|
|
||||||
private grid;
|
private grid: Slick.Grid<any>;
|
||||||
private handler = new Slick.EventHandler();
|
private handler = new Slick.EventHandler();
|
||||||
private defaults = {
|
private defaults = {
|
||||||
filterImage: 'src/sql/media/icons/filter.svg',
|
filterImage: 'src/sql/media/icons/filter.svg',
|
||||||
@@ -20,7 +20,7 @@ export class HeaderFilter {
|
|||||||
sortDescImage: 'sort-desc.gif'
|
sortDescImage: 'sort-desc.gif'
|
||||||
};
|
};
|
||||||
|
|
||||||
private $menu: JQuery<HTMLElement>;
|
private $menu?: JQuery<HTMLElement>;
|
||||||
private options: any;
|
private options: any;
|
||||||
private okButton: Button;
|
private okButton: Button;
|
||||||
private clearButton: Button;
|
private clearButton: Button;
|
||||||
@@ -70,16 +70,16 @@ export class HeaderFilter {
|
|||||||
private hideMenu() {
|
private hideMenu() {
|
||||||
if (this.$menu) {
|
if (this.$menu) {
|
||||||
this.$menu.remove();
|
this.$menu.remove();
|
||||||
this.$menu = null;
|
this.$menu = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleHeaderCellRendered(e, args) {
|
private handleHeaderCellRendered(e, args) {
|
||||||
let column = args.column;
|
const column = args.column;
|
||||||
if (column.id === '_detail_selector') {
|
if (column.id === '_detail_selector') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let $el = jQuery('<div></div>')
|
const $el = jQuery('<div></div>')
|
||||||
.addClass('slick-header-menubutton')
|
.addClass('slick-header-menubutton')
|
||||||
.data('column', column);
|
.data('column', column);
|
||||||
|
|
||||||
@@ -93,13 +93,13 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private addMenuItem(menu, columnDef, title, command, image) {
|
private addMenuItem(menu, columnDef, title, command, image) {
|
||||||
let $item = jQuery('<div class="slick-header-menuitem">')
|
const $item = jQuery('<div class="slick-header-menuitem">')
|
||||||
.data('command', command)
|
.data('command', command)
|
||||||
.data('column', columnDef)
|
.data('column', columnDef)
|
||||||
.bind('click', (e) => this.handleMenuItemClick(e, command, columnDef))
|
.bind('click', (e) => this.handleMenuItemClick(e, command, columnDef))
|
||||||
.appendTo(menu);
|
.appendTo(menu);
|
||||||
|
|
||||||
let $icon = jQuery('<div class="slick-header-menuicon">')
|
const $icon = jQuery('<div class="slick-header-menuicon">')
|
||||||
.appendTo($item);
|
.appendTo($item);
|
||||||
|
|
||||||
if (title === 'Sort Ascending') {
|
if (title === 'Sort Ascending') {
|
||||||
@@ -118,7 +118,7 @@ export class HeaderFilter {
|
|||||||
jQuery('<input class="input" placeholder="Search" style="margin-top: 5px; width: 206px">')
|
jQuery('<input class="input" placeholder="Search" style="margin-top: 5px; width: 206px">')
|
||||||
.data('column', columnDef)
|
.data('column', columnDef)
|
||||||
.bind('keyup', (e) => {
|
.bind('keyup', (e) => {
|
||||||
let filterVals = this.getFilterValuesByInput(jQuery(e.target));
|
const filterVals = this.getFilterValuesByInput(jQuery(e.target));
|
||||||
self.updateFilterInputs(menu, columnDef, filterVals);
|
self.updateFilterInputs(menu, columnDef, filterVals);
|
||||||
})
|
})
|
||||||
.appendTo(menu);
|
.appendTo(menu);
|
||||||
@@ -132,13 +132,13 @@ export class HeaderFilter {
|
|||||||
this.workingFilters = columnDef.filterValues.slice(0);
|
this.workingFilters = columnDef.filterValues.slice(0);
|
||||||
|
|
||||||
for (let i = 0; i < filterItems.length; i++) {
|
for (let i = 0; i < filterItems.length; i++) {
|
||||||
let filtered = _.contains(this.workingFilters, filterItems[i]);
|
const filtered = _.contains(this.workingFilters, filterItems[i]);
|
||||||
|
|
||||||
filterOptions += '<label><input type="checkbox" value="' + i + '"'
|
filterOptions += '<label><input type="checkbox" value="' + i + '"'
|
||||||
+ (filtered ? ' checked="checked"' : '')
|
+ (filtered ? ' checked="checked"' : '')
|
||||||
+ '/>' + filterItems[i] + '</label>';
|
+ '/>' + filterItems[i] + '</label>';
|
||||||
}
|
}
|
||||||
let $filter = menu.find('.filter');
|
const $filter = menu.find('.filter');
|
||||||
$filter.empty().append(jQuery(filterOptions));
|
$filter.empty().append(jQuery(filterOptions));
|
||||||
|
|
||||||
jQuery(':checkbox', $filter).bind('click', (e) => {
|
jQuery(':checkbox', $filter).bind('click', (e) => {
|
||||||
@@ -147,7 +147,7 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private showFilter(e) {
|
private showFilter(e) {
|
||||||
let $menuButton = jQuery(e.target);
|
const $menuButton = jQuery(e.target);
|
||||||
this.columnDef = $menuButton.data('column');
|
this.columnDef = $menuButton.data('column');
|
||||||
|
|
||||||
this.columnDef.filterValues = this.columnDef.filterValues || [];
|
this.columnDef.filterValues = this.columnDef.filterValues || [];
|
||||||
@@ -179,14 +179,14 @@ export class HeaderFilter {
|
|||||||
let filterOptions = '<label><input type="checkbox" value="-1" />(Select All)</label>';
|
let filterOptions = '<label><input type="checkbox" value="-1" />(Select All)</label>';
|
||||||
|
|
||||||
for (let i = 0; i < filterItems.length; i++) {
|
for (let i = 0; i < filterItems.length; i++) {
|
||||||
let filtered = _.contains(this.workingFilters, filterItems[i]);
|
const filtered = _.contains(this.workingFilters, filterItems[i]);
|
||||||
if (filterItems[i] && filterItems[i].indexOf('Error:') < 0) {
|
if (filterItems[i] && filterItems[i].indexOf('Error:') < 0) {
|
||||||
filterOptions += '<label><input type="checkbox" value="' + i + '"'
|
filterOptions += '<label><input type="checkbox" value="' + i + '"'
|
||||||
+ (filtered ? ' checked="checked"' : '')
|
+ (filtered ? ' checked="checked"' : '')
|
||||||
+ '/>' + escape(filterItems[i]) + '</label>';
|
+ '/>' + escape(filterItems[i]) + '</label>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let $filter = jQuery('<div class="filter">')
|
const $filter = jQuery('<div class="filter">')
|
||||||
.append(jQuery(filterOptions))
|
.append(jQuery(filterOptions))
|
||||||
.appendTo(this.$menu);
|
.appendTo(this.$menu);
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ export class HeaderFilter {
|
|||||||
this.okButton.label = 'OK';
|
this.okButton.label = 'OK';
|
||||||
this.okButton.title = 'OK';
|
this.okButton.title = 'OK';
|
||||||
this.okButton.element.id = 'filter-ok-button';
|
this.okButton.element.id = 'filter-ok-button';
|
||||||
let okElement = jQuery('#filter-ok-button');
|
const okElement = jQuery('#filter-ok-button');
|
||||||
okElement.bind('click', (ev) => {
|
okElement.bind('click', (ev) => {
|
||||||
this.columnDef.filterValues = this.workingFilters.splice(0);
|
this.columnDef.filterValues = this.workingFilters.splice(0);
|
||||||
this.setButtonImage($menuButton, this.columnDef.filterValues.length > 0);
|
this.setButtonImage($menuButton, this.columnDef.filterValues.length > 0);
|
||||||
@@ -205,7 +205,7 @@ export class HeaderFilter {
|
|||||||
this.clearButton.label = 'Clear';
|
this.clearButton.label = 'Clear';
|
||||||
this.clearButton.title = 'Clear';
|
this.clearButton.title = 'Clear';
|
||||||
this.clearButton.element.id = 'filter-clear-button';
|
this.clearButton.element.id = 'filter-clear-button';
|
||||||
let clearElement = jQuery('#filter-clear-button');
|
const clearElement = jQuery('#filter-clear-button');
|
||||||
clearElement.bind('click', (ev) => {
|
clearElement.bind('click', (ev) => {
|
||||||
this.columnDef.filterValues.length = 0;
|
this.columnDef.filterValues.length = 0;
|
||||||
this.setButtonImage($menuButton, false);
|
this.setButtonImage($menuButton, false);
|
||||||
@@ -216,7 +216,7 @@ export class HeaderFilter {
|
|||||||
this.cancelButton.label = 'Cancel';
|
this.cancelButton.label = 'Cancel';
|
||||||
this.cancelButton.title = 'Cancel';
|
this.cancelButton.title = 'Cancel';
|
||||||
this.cancelButton.element.id = 'filter-cancel-button';
|
this.cancelButton.element.id = 'filter-cancel-button';
|
||||||
let cancelElement = jQuery('#filter-cancel-button');
|
const cancelElement = jQuery('#filter-cancel-button');
|
||||||
cancelElement.bind('click', () => this.hideMenu());
|
cancelElement.bind('click', () => this.hideMenu());
|
||||||
attachButtonStyler(this.okButton, this._themeService);
|
attachButtonStyler(this.okButton, this._themeService);
|
||||||
attachButtonStyler(this.clearButton, this._themeService);
|
attachButtonStyler(this.clearButton, this._themeService);
|
||||||
@@ -226,8 +226,8 @@ export class HeaderFilter {
|
|||||||
this.workingFilters = this.changeWorkingFilter(filterItems, this.workingFilters, jQuery(e.target));
|
this.workingFilters = this.changeWorkingFilter(filterItems, this.workingFilters, jQuery(e.target));
|
||||||
});
|
});
|
||||||
|
|
||||||
let offset = jQuery(e.target).offset();
|
const offset = jQuery(e.target).offset();
|
||||||
let left = offset.left - this.$menu.width() + jQuery(e.target).width() - 8;
|
const left = offset.left - this.$menu.width() + jQuery(e.target).width() - 8;
|
||||||
|
|
||||||
let menutop = offset.top + jQuery(e.target).height();
|
let menutop = offset.top + jQuery(e.target).height();
|
||||||
|
|
||||||
@@ -243,8 +243,8 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private changeWorkingFilter(filterItems, workingFilters, $checkbox) {
|
private changeWorkingFilter(filterItems, workingFilters, $checkbox) {
|
||||||
let value = $checkbox.val();
|
const value = $checkbox.val();
|
||||||
let $filter = $checkbox.parent().parent();
|
const $filter = $checkbox.parent().parent();
|
||||||
|
|
||||||
if ($checkbox.val() < 0) {
|
if ($checkbox.val() < 0) {
|
||||||
// Select All
|
// Select All
|
||||||
@@ -256,11 +256,11 @@ export class HeaderFilter {
|
|||||||
workingFilters.length = 0;
|
workingFilters.length = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let index = _.indexOf(workingFilters, filterItems[value]);
|
const index = _.indexOf(workingFilters, filterItems[value]);
|
||||||
|
|
||||||
if ($checkbox.prop('checked') && index < 0) {
|
if ($checkbox.prop('checked') && index < 0) {
|
||||||
workingFilters.push(filterItems[value]);
|
workingFilters.push(filterItems[value]);
|
||||||
let nextRow = filterItems[(parseInt(value) + 1).toString()];
|
const nextRow = filterItems[(parseInt(value) + 1).toString()];
|
||||||
if (nextRow && nextRow.indexOf('Error:') >= 0) {
|
if (nextRow && nextRow.indexOf('Error:') >= 0) {
|
||||||
workingFilters.push(nextRow);
|
workingFilters.push(nextRow);
|
||||||
}
|
}
|
||||||
@@ -276,11 +276,11 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private setButtonImage($el, filtered) {
|
private setButtonImage($el, filtered) {
|
||||||
let element: HTMLElement = $el.get(0);
|
const element: HTMLElement = $el.get(0);
|
||||||
if (filtered) {
|
if (filtered) {
|
||||||
element.className += ' filtered';
|
element.className += ' filtered';
|
||||||
} else {
|
} else {
|
||||||
let classList = element.classList;
|
const classList = element.classList;
|
||||||
if (classList.contains('filtered')) {
|
if (classList.contains('filtered')) {
|
||||||
classList.remove('filtered');
|
classList.remove('filtered');
|
||||||
}
|
}
|
||||||
@@ -296,9 +296,9 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getFilterValues(dataView, column) {
|
private getFilterValues(dataView, column) {
|
||||||
let seen = [];
|
const seen: Array<any> = [];
|
||||||
for (let i = 0; i < dataView.getLength(); i++) {
|
for (let i = 0; i < dataView.getLength(); i++) {
|
||||||
let value = dataView.getItem(i)[column.field];
|
const value = dataView.getItem(i)[column.field];
|
||||||
|
|
||||||
if (!_.contains(seen, value)) {
|
if (!_.contains(seen, value)) {
|
||||||
seen.push(value);
|
seen.push(value);
|
||||||
@@ -308,18 +308,18 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getFilterValuesByInput($input) {
|
private getFilterValuesByInput($input) {
|
||||||
let column = $input.data('column'),
|
const column = $input.data('column'),
|
||||||
filter = $input.val(),
|
filter = $input.val(),
|
||||||
dataView = this.grid.getData(),
|
dataView = this.grid.getData(),
|
||||||
seen = [];
|
seen: Array<any> = [];
|
||||||
|
|
||||||
for (let i = 0; i < dataView.getLength(); i++) {
|
for (let i = 0; i < dataView.getLength(); i++) {
|
||||||
let value = dataView.getItem(i)[column.field];
|
const value = dataView.getItem(i)[column.field];
|
||||||
|
|
||||||
if (filter.length > 0) {
|
if (filter.length > 0) {
|
||||||
let itemValue = !value ? '' : value;
|
const itemValue = !value ? '' : value;
|
||||||
let lowercaseFilter = filter.toString().toLowerCase();
|
const lowercaseFilter = filter.toString().toLowerCase();
|
||||||
let lowercaseVal = itemValue.toString().toLowerCase();
|
const lowercaseVal = itemValue.toString().toLowerCase();
|
||||||
if (!_.contains(seen, value) && lowercaseVal.indexOf(lowercaseFilter) > -1) {
|
if (!_.contains(seen, value) && lowercaseVal.indexOf(lowercaseFilter) > -1) {
|
||||||
seen.push(value);
|
seen.push(value);
|
||||||
}
|
}
|
||||||
@@ -335,9 +335,9 @@ export class HeaderFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getAllFilterValues(data, column) {
|
private getAllFilterValues(data, column) {
|
||||||
let seen = [];
|
const seen: Array<any> = [];
|
||||||
for (let i = 0; i < data.length; i++) {
|
for (let i = 0; i < data.length; i++) {
|
||||||
let value = data[i][column.field];
|
const value = data[i][column.field];
|
||||||
|
|
||||||
if (!_.contains(seen, value)) {
|
if (!_.contains(seen, value)) {
|
||||||
seen.push(value);
|
seen.push(value);
|
||||||
|
|||||||
@@ -28,12 +28,13 @@ export class MouseWheelSupport implements Slick.Plugin<any> {
|
|||||||
private _disposables: IDisposable[] = [];
|
private _disposables: IDisposable[] = [];
|
||||||
|
|
||||||
constructor(options: IMouseWheelSupportOptions = {}) {
|
constructor(options: IMouseWheelSupportOptions = {}) {
|
||||||
this.options = mixin(options, defaultOptions, false);
|
this.options = defaultOptions;
|
||||||
|
mixin(this.options, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(grid: Slick.Grid<any>): void {
|
public init(grid: Slick.Grid<any>): void {
|
||||||
this.canvas = grid.getCanvasNode();
|
this.canvas = grid.getCanvasNode();
|
||||||
this.viewport = this.canvas.parentElement;
|
this.viewport = this.canvas.parentElement!;
|
||||||
let onMouseWheel = (browserEvent: IMouseWheelEvent) => {
|
let onMouseWheel = (browserEvent: IMouseWheelEvent) => {
|
||||||
let e = new StandardWheelEvent(browserEvent);
|
let e = new StandardWheelEvent(browserEvent);
|
||||||
this._onMouseWheel(e);
|
this._onMouseWheel(e);
|
||||||
@@ -44,8 +45,8 @@ export class MouseWheelSupport implements Slick.Plugin<any> {
|
|||||||
|
|
||||||
private _onMouseWheel(e: StandardWheelEvent) {
|
private _onMouseWheel(e: StandardWheelEvent) {
|
||||||
if (e.deltaY || e.deltaX) {
|
if (e.deltaY || e.deltaX) {
|
||||||
let deltaY = e.deltaY * this.options.scrollSpeed;
|
let deltaY = e.deltaY * this.options.scrollSpeed!;
|
||||||
let deltaX = e.deltaX * this.options.scrollSpeed;
|
let deltaX = e.deltaX * this.options.scrollSpeed!;
|
||||||
const scrollHeight = this.canvas.clientHeight;
|
const scrollHeight = this.canvas.clientHeight;
|
||||||
const scrollWidth = this.canvas.clientWidth;
|
const scrollWidth = this.canvas.clientWidth;
|
||||||
const height = this.viewport.clientHeight;
|
const height = this.viewport.clientHeight;
|
||||||
@@ -67,8 +68,8 @@ export class MouseWheelSupport implements Slick.Plugin<any> {
|
|||||||
} else {
|
} else {
|
||||||
this.viewport.scrollTop = this.viewport.scrollTop - deltaY;
|
this.viewport.scrollTop = this.viewport.scrollTop - deltaY;
|
||||||
this.viewport.dispatchEvent(new Event('scroll'));
|
this.viewport.dispatchEvent(new Event('scroll'));
|
||||||
event.stopPropagation();
|
e.stopPropagation();
|
||||||
event.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
// scroll up
|
// scroll up
|
||||||
} else {
|
} else {
|
||||||
@@ -78,8 +79,8 @@ export class MouseWheelSupport implements Slick.Plugin<any> {
|
|||||||
} else {
|
} else {
|
||||||
this.viewport.scrollTop = this.viewport.scrollTop - deltaY;
|
this.viewport.scrollTop = this.viewport.scrollTop - deltaY;
|
||||||
this.viewport.dispatchEvent(new Event('scroll'));
|
this.viewport.dispatchEvent(new Event('scroll'));
|
||||||
event.stopPropagation();
|
e.stopPropagation();
|
||||||
event.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,8 +92,8 @@ export class MouseWheelSupport implements Slick.Plugin<any> {
|
|||||||
} else {
|
} else {
|
||||||
this.viewport.scrollLeft = this.viewport.scrollLeft - deltaX;
|
this.viewport.scrollLeft = this.viewport.scrollLeft - deltaX;
|
||||||
this.viewport.dispatchEvent(new Event('scroll'));
|
this.viewport.dispatchEvent(new Event('scroll'));
|
||||||
event.stopPropagation();
|
e.stopPropagation();
|
||||||
event.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
// scroll left
|
// scroll left
|
||||||
} else {
|
} else {
|
||||||
@@ -102,8 +103,8 @@ export class MouseWheelSupport implements Slick.Plugin<any> {
|
|||||||
} else {
|
} else {
|
||||||
this.viewport.scrollLeft = this.viewport.scrollLeft - deltaX;
|
this.viewport.scrollLeft = this.viewport.scrollLeft - deltaX;
|
||||||
this.viewport.dispatchEvent(new Event('scroll'));
|
this.viewport.dispatchEvent(new Event('scroll'));
|
||||||
event.stopPropagation();
|
e.stopPropagation();
|
||||||
event.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,10 +49,10 @@ export class RowDetailView {
|
|||||||
|
|
||||||
public destroy() {
|
public destroy() {
|
||||||
this._handler.unsubscribeAll();
|
this._handler.unsubscribeAll();
|
||||||
this.onAsyncResponse.unsubscribe(undefined);
|
this.onAsyncResponse.unsubscribe();
|
||||||
this.onAsyncEndUpdate.unsubscribe(undefined);
|
this.onAsyncEndUpdate.unsubscribe();
|
||||||
this.onAfterRowDetailToggle.unsubscribe(undefined);
|
this.onAfterRowDetailToggle.unsubscribe();
|
||||||
this.onBeforeRowDetailToggle.unsubscribe(undefined);
|
this.onBeforeRowDetailToggle.unsubscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
public getOptions(options: any) {
|
public getOptions(options: any) {
|
||||||
@@ -73,7 +73,7 @@ export class RowDetailView {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let item = this._dataView.getItem(args.row);
|
const item = this._dataView.getItem(args.row);
|
||||||
|
|
||||||
// trigger an event before toggling
|
// trigger an event before toggling
|
||||||
this.onBeforeRowDetailToggle.notify({
|
this.onBeforeRowDetailToggle.notify({
|
||||||
@@ -102,21 +102,21 @@ export class RowDetailView {
|
|||||||
// If we scroll save detail views that go out of cache range
|
// If we scroll save detail views that go out of cache range
|
||||||
public handleScroll(e, args) {
|
public handleScroll(e, args) {
|
||||||
|
|
||||||
let range = this._grid.getRenderedRange();
|
const range = this._grid.getRenderedRange();
|
||||||
|
|
||||||
let start: number = (range.top > 0 ? range.top : 0);
|
const start: number = (range.top > 0 ? range.top : 0);
|
||||||
let end: number = (range.bottom > this._dataView.getLength() ? range.bottom : this._dataView.getLength());
|
const end: number = (range.bottom > this._dataView.getLength() ? range.bottom : this._dataView.getLength());
|
||||||
if (end <= 0) {
|
if (end <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the item at the top of the view
|
// Get the item at the top of the view
|
||||||
let topMostItem = this._dataView.getItemByIdx(start);
|
const topMostItem = this._dataView.getItemByIdx(start);
|
||||||
|
|
||||||
// Check it is a parent item
|
// Check it is a parent item
|
||||||
if (topMostItem._parent === undefined) {
|
if (topMostItem._parent === undefined) {
|
||||||
// This is a standard row as we have no parent.
|
// This is a standard row as we have no parent.
|
||||||
let nextItem = this._dataView.getItemByIdx(start + 1);
|
const nextItem = this._dataView.getItemByIdx(start + 1);
|
||||||
if (nextItem !== undefined && nextItem._parent !== undefined) {
|
if (nextItem !== undefined && nextItem._parent !== undefined) {
|
||||||
// This is likely the expanded Detail Row View
|
// This is likely the expanded Detail Row View
|
||||||
// Check for safety
|
// Check for safety
|
||||||
@@ -127,7 +127,7 @@ export class RowDetailView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Find the bottom most item that is likely to go off screen
|
// Find the bottom most item that is likely to go off screen
|
||||||
let bottomMostItem = this._dataView.getItemByIdx(end - 1);
|
const bottomMostItem = this._dataView.getItemByIdx(end - 1);
|
||||||
|
|
||||||
// If we are a detailView and we are about to go out of cache view
|
// If we are a detailView and we are about to go out of cache view
|
||||||
if (bottomMostItem._parent !== undefined) {
|
if (bottomMostItem._parent !== undefined) {
|
||||||
@@ -151,9 +151,9 @@ export class RowDetailView {
|
|||||||
|
|
||||||
// Saves the current state of the detail view
|
// Saves the current state of the detail view
|
||||||
public saveDetailView(item) {
|
public saveDetailView(item) {
|
||||||
let view = jQuery('#innerDetailView_' + item.id);
|
const view = jQuery('#innerDetailView_' + item.id);
|
||||||
if (view) {
|
if (view) {
|
||||||
let html = jQuery('#innerDetailView_' + item.id).html();
|
const html = jQuery('#innerDetailView_' + item.id).html();
|
||||||
if (html !== undefined) {
|
if (html !== undefined) {
|
||||||
item._detailContent = html;
|
item._detailContent = html;
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,6 @@ export class RowDetailView {
|
|||||||
|
|
||||||
args.itemDetail._detailViewLoaded = true;
|
args.itemDetail._detailViewLoaded = true;
|
||||||
|
|
||||||
let idxParent = this._dataView.getIdxById(args.itemDetail.id);
|
|
||||||
this._dataView.updateItem(args.itemDetail.id, args.itemDetail);
|
this._dataView.updateItem(args.itemDetail.id, args.itemDetail);
|
||||||
|
|
||||||
// trigger an event once the post template is finished loading
|
// trigger an event once the post template is finished loading
|
||||||
@@ -255,9 +254,9 @@ export class RowDetailView {
|
|||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
public getPaddingItem(parent, offset) {
|
public getPaddingItem(parent, offset) {
|
||||||
let item: any = {};
|
const item: any = {};
|
||||||
|
|
||||||
for (let prop in this._grid.getData()) {
|
for (const prop in this._grid.getData()) {
|
||||||
item[prop] = null;
|
item[prop] = null;
|
||||||
}
|
}
|
||||||
item.id = parent.id + '.' + offset;
|
item.id = parent.id + '.' + offset;
|
||||||
@@ -272,7 +271,7 @@ export class RowDetailView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public getErrorItem(parent, offset) {
|
public getErrorItem(parent, offset) {
|
||||||
let item: any = {};
|
const item: any = {};
|
||||||
item.id = parent.id + '.' + offset;
|
item.id = parent.id + '.' + offset;
|
||||||
item._collapsed = true;
|
item._collapsed = true;
|
||||||
item._isPadding = false;
|
item._isPadding = false;
|
||||||
@@ -288,15 +287,15 @@ export class RowDetailView {
|
|||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
public applyTemplateNewLineHeight(item, showError = false) {
|
public applyTemplateNewLineHeight(item, showError = false) {
|
||||||
// the height seems to be calculated by the template row count (how many line of items does the template have)
|
// the height seems to be calculated by the template row count (how many line of items does the template have)
|
||||||
let rowCount = this._options.panelRows;
|
const rowCount = this._options.panelRows;
|
||||||
|
|
||||||
//calculate padding requirements based on detail-content..
|
//calculate padding requirements based on detail-content..
|
||||||
//ie. worst-case: create an invisible dom node now &find it's height.
|
//ie. worst-case: create an invisible dom node now &find it's height.
|
||||||
let lineHeight = 13; //we know cuz we wrote the custom css innit ;)
|
const lineHeight = 13; //we know cuz we wrote the custom css innit ;)
|
||||||
item._sizePadding = Math.ceil(((rowCount * 2) * lineHeight) / this._grid.getOptions().rowHeight);
|
item._sizePadding = Math.ceil(((rowCount * 2) * lineHeight) / this._grid.getOptions().rowHeight);
|
||||||
item._height = (item._sizePadding * this._grid.getOptions().rowHeight);
|
item._height = (item._sizePadding * this._grid.getOptions().rowHeight);
|
||||||
|
|
||||||
let idxParent = this._dataView.getIdxById(item.id);
|
const idxParent = this._dataView.getIdxById(item.id);
|
||||||
for (let idx = 1; idx <= item._sizePadding; idx++) {
|
for (let idx = 1; idx <= item._sizePadding; idx++) {
|
||||||
if (showError) {
|
if (showError) {
|
||||||
this._dataView.insertItem(idxParent + idx, this.getErrorItem(item, 'error'));
|
this._dataView.insertItem(idxParent + idx, this.getErrorItem(item, 'error'));
|
||||||
@@ -336,9 +335,9 @@ export class RowDetailView {
|
|||||||
} else if (dataContext._collapsed) {
|
} else if (dataContext._collapsed) {
|
||||||
return '<div class=\'detailView-toggle expand\'></div>';
|
return '<div class=\'detailView-toggle expand\'></div>';
|
||||||
} else {
|
} else {
|
||||||
let html = [];
|
const html: Array<string> = [];
|
||||||
let rowHeight = this._grid.getOptions().rowHeight;
|
const rowHeight = this._grid.getOptions().rowHeight;
|
||||||
let bottomMargin = 5;
|
const bottomMargin = 5;
|
||||||
|
|
||||||
//V313HAX:
|
//V313HAX:
|
||||||
//putting in an extra closing div after the closing toggle div and ommiting a
|
//putting in an extra closing div after the closing toggle div and ommiting a
|
||||||
@@ -369,9 +368,9 @@ export class RowDetailView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Grad each of the dom items
|
// Grad each of the dom items
|
||||||
let mainContainer = document.getElementById('detailViewContainer_' + item.id);
|
const mainContainer = document.getElementById('detailViewContainer_' + item.id);
|
||||||
let cellItem = document.getElementById('cellDetailView_' + item.id);
|
const cellItem = document.getElementById('cellDetailView_' + item.id);
|
||||||
let inner = document.getElementById('innerDetailView_' + item.id);
|
const inner = document.getElementById('innerDetailView_' + item.id);
|
||||||
|
|
||||||
if (!mainContainer || !cellItem || !inner) {
|
if (!mainContainer || !cellItem || !inner) {
|
||||||
return;
|
return;
|
||||||
@@ -381,14 +380,14 @@ export class RowDetailView {
|
|||||||
this._dataView.deleteItem(item.id + '.' + idx);
|
this._dataView.deleteItem(item.id + '.' + idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
let rowHeight = this._grid.getOptions().rowHeight; // height of a row
|
const rowHeight = this._grid.getOptions().rowHeight; // height of a row
|
||||||
let lineHeight = 13; //we know cuz we wrote the custom css innit ;)
|
const lineHeight = 13; //we know cuz we wrote the custom css innit ;)
|
||||||
|
|
||||||
// Get the inner Item height as this will be the actual size
|
// Get the inner Item height as this will be the actual size
|
||||||
let itemHeight = inner.clientHeight;
|
const itemHeight = inner.clientHeight;
|
||||||
|
|
||||||
// Now work out how many rows
|
// Now work out how many rows
|
||||||
let rowCount = Math.ceil(itemHeight / rowHeight) + 1;
|
const rowCount = Math.ceil(itemHeight / rowHeight) + 1;
|
||||||
|
|
||||||
item._sizePadding = Math.ceil(((rowCount * 2) * lineHeight) / rowHeight);
|
item._sizePadding = Math.ceil(((rowCount * 2) * lineHeight) / rowHeight);
|
||||||
item._height = (item._sizePadding * rowHeight);
|
item._height = (item._sizePadding * rowHeight);
|
||||||
@@ -404,7 +403,7 @@ export class RowDetailView {
|
|||||||
cellItem.setAttribute('style', `height: ${item._height}px;top:${rowHeight}px`);
|
cellItem.setAttribute('style', `height: ${item._height}px;top:${rowHeight}px`);
|
||||||
}
|
}
|
||||||
|
|
||||||
let idxParent = this._dataView.getIdxById(item.id);
|
const idxParent = this._dataView.getIdxById(item.id);
|
||||||
for (let idx = 1; idx <= item._sizePadding; idx++) {
|
for (let idx = 1; idx <= item._sizePadding; idx++) {
|
||||||
this._dataView.insertItem(idxParent + idx, this.getPaddingItem(item, idx));
|
this._dataView.insertItem(idxParent + idx, this.getPaddingItem(item, idx));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ export interface IRowNumberColumnOptions {
|
|||||||
cssClass?: string;
|
cssClass?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const sizePerDigit = 15;
|
|
||||||
|
|
||||||
export class RowNumberColumn<T> implements Slick.Plugin<T> {
|
export class RowNumberColumn<T> implements Slick.Plugin<T> {
|
||||||
private handler = new Slick.EventHandler();
|
private handler = new Slick.EventHandler();
|
||||||
private grid: Slick.Grid<T>;
|
private grid: Slick.Grid<T>;
|
||||||
@@ -63,11 +61,7 @@ export class RowNumberColumn<T> implements Slick.Plugin<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private formatter(row, cell, value, columnDef: Slick.Column<T>, dataContext): string {
|
private formatter(row, cell, value, columnDef: Slick.Column<T>, dataContext): string {
|
||||||
if (dataContext) {
|
// row is zero-based, we need make it 1 based for display in the result grid
|
||||||
// row is zero-based, we need make it 1 based for display in the result grid
|
return `<span>${row + 1}</span>`;
|
||||||
//
|
|
||||||
return `<span>${row + 1}</span>`;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
private rangesToRows(ranges: Slick.Range[]): number[] {
|
private rangesToRows(ranges: Slick.Range[]): number[] {
|
||||||
let rows = [];
|
const rows: Array<number> = [];
|
||||||
for (let i = 0; i < ranges.length; i++) {
|
for (let i = 0; i < ranges.length; i++) {
|
||||||
for (let j = ranges[i].fromRow; j <= ranges[i].toRow; j++) {
|
for (let j = ranges[i].fromRow; j <= ranges[i].toRow; j++) {
|
||||||
rows.push(j);
|
rows.push(j);
|
||||||
@@ -41,8 +41,8 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
private rowsToRanges(rows: number[]): Slick.Range[] {
|
private rowsToRanges(rows: number[]): Slick.Range[] {
|
||||||
let ranges = [];
|
const ranges: Array<Slick.Range> = [];
|
||||||
let lastCell = this._grid.getColumns().length - 1;
|
const lastCell = this._grid.getColumns().length - 1;
|
||||||
for (let i = 0; i < rows.length; i++) {
|
for (let i = 0; i < rows.length; i++) {
|
||||||
ranges.push(new Slick.Range(rows[i], 0, rows[i], lastCell));
|
ranges.push(new Slick.Range(rows[i], 0, rows[i], lastCell));
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getRowsRange(from: number, to: number): number[] {
|
private getRowsRange(from: number, to: number): number[] {
|
||||||
let i, rows = [];
|
let i: number, rows: Array<number> = [];
|
||||||
for (i = from; i <= to; i++) {
|
for (i = from; i <= to; i++) {
|
||||||
rows.push(i);
|
rows.push(i);
|
||||||
}
|
}
|
||||||
@@ -86,7 +86,7 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
private handleKeyDown(e: KeyboardEvent): void {
|
private handleKeyDown(e: KeyboardEvent): void {
|
||||||
let activeRow = this._grid.getActiveCell();
|
const activeRow = this._grid.getActiveCell();
|
||||||
if (activeRow && e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey && (e.which === 38 || e.which === 40)) {
|
if (activeRow && e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey && (e.which === 38 || e.which === 40)) {
|
||||||
let selectedRows = this.getSelectedRows();
|
let selectedRows = this.getSelectedRows();
|
||||||
selectedRows.sort((x, y) => x - y);
|
selectedRows.sort((x, y) => x - y);
|
||||||
@@ -106,8 +106,8 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (active >= 0 && active < this._grid.getDataLength()) {
|
if (active >= 0 && active < this._grid.getDataLength()) {
|
||||||
this._grid.scrollRowIntoView(active, undefined);
|
this._grid.scrollRowIntoView(active);
|
||||||
let tempRanges = this.rowsToRanges(this.getRowsRange(top, bottom));
|
const tempRanges = this.rowsToRanges(this.getRowsRange(top, bottom));
|
||||||
this.setSelectedRanges(tempRanges);
|
this.setSelectedRanges(tempRanges);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
private handleClick(e: KeyboardEvent): boolean {
|
private handleClick(e: KeyboardEvent): boolean {
|
||||||
let cell = this._grid.getCellFromEvent(e);
|
const cell = this._grid.getCellFromEvent(e);
|
||||||
if (!cell || !this._grid.canCellBeActive(cell.row, cell.cell)) {
|
if (!cell || !this._grid.canCellBeActive(cell.row, cell.cell)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
}
|
}
|
||||||
|
|
||||||
let selection = this.rangesToRows(this._ranges);
|
let selection = this.rangesToRows(this._ranges);
|
||||||
let idx = jQuery.inArray(cell.row, selection);
|
const idx = jQuery.inArray(cell.row, selection);
|
||||||
|
|
||||||
if (idx === -1 && (e.ctrlKey || e.metaKey)) {
|
if (idx === -1 && (e.ctrlKey || e.metaKey)) {
|
||||||
selection.push(cell.row);
|
selection.push(cell.row);
|
||||||
@@ -137,20 +137,22 @@ export class RowSelectionModel<T extends Slick.SlickData> implements Slick.Selec
|
|||||||
selection = selection.filter(o => o !== cell.row);
|
selection = selection.filter(o => o !== cell.row);
|
||||||
this._grid.setActiveCell(cell.row, cell.cell);
|
this._grid.setActiveCell(cell.row, cell.cell);
|
||||||
} else if (selection.length && e.shiftKey) {
|
} else if (selection.length && e.shiftKey) {
|
||||||
let last = selection.pop();
|
const last = selection.pop();
|
||||||
let from = Math.min(cell.row, last);
|
if (last) {
|
||||||
let to = Math.max(cell.row, last);
|
const from = Math.min(cell.row, last);
|
||||||
selection = [];
|
const to = Math.max(cell.row, last);
|
||||||
for (let i = from; i <= to; i++) {
|
selection = [];
|
||||||
if (i !== last) {
|
for (let i = from; i <= to; i++) {
|
||||||
selection.push(i);
|
if (i !== last) {
|
||||||
|
selection.push(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
selection.push(last);
|
||||||
}
|
}
|
||||||
selection.push(last);
|
|
||||||
this._grid.setActiveCell(cell.row, cell.cell);
|
this._grid.setActiveCell(cell.row, cell.cell);
|
||||||
}
|
}
|
||||||
|
|
||||||
let tempRanges = this.rowsToRanges(selection);
|
const tempRanges = this.rowsToRanges(selection);
|
||||||
this.setSelectedRanges(tempRanges);
|
this.setSelectedRanges(tempRanges);
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
|
|||||||
@@ -11,21 +11,7 @@
|
|||||||
"./vs/vscode.proposed.d.ts",
|
"./vs/vscode.proposed.d.ts",
|
||||||
"./sql/azdata.d.ts",
|
"./sql/azdata.d.ts",
|
||||||
"./sql/azdata.proposed.d.ts",
|
"./sql/azdata.proposed.d.ts",
|
||||||
"./sql/base/browser/ui/breadcrumb/*.ts",
|
"./sql/base/**/*.ts",
|
||||||
"./sql/base/browser/ui/button/*.ts",
|
|
||||||
"./sql/base/browser/ui/checkbox/*.ts",
|
|
||||||
"./sql/base/browser/ui/dropdownList/*.ts",
|
|
||||||
"./sql/base/browser/ui/editableDropdown/*.ts",
|
|
||||||
"./sql/base/browser/ui/inputBox/*.ts",
|
|
||||||
"./sql/base/browser/ui/listBox/*.ts",
|
|
||||||
"./sql/base/browser/ui/panel/*.ts",
|
|
||||||
"./sql/base/browser/ui/radioButton/*.ts",
|
|
||||||
"./sql/base/browser/ui/scrollable/*.ts",
|
|
||||||
"./sql/base/browser/ui/selectBox/*.ts",
|
|
||||||
"./sql/base/browser/ui/table/*.ts",
|
|
||||||
"./sql/base/browser/ui/taskbar/*.ts",
|
|
||||||
"./sql/base/common/**/*.ts",
|
|
||||||
"./sql/base/node/**/*.ts",
|
|
||||||
"./sql/platform/angularEventing/**/*.ts",
|
"./sql/platform/angularEventing/**/*.ts",
|
||||||
"./sql/platform/clipboard/**/*.ts",
|
"./sql/platform/clipboard/**/*.ts",
|
||||||
"./sql/platform/credentials/**/*.ts",
|
"./sql/platform/credentials/**/*.ts",
|
||||||
|
|||||||
14
src/typings/globals/slickgrid/index.d.ts
vendored
14
src/typings/globals/slickgrid/index.d.ts
vendored
@@ -69,8 +69,8 @@ declare namespace Slick {
|
|||||||
* @method unsubscribe
|
* @method unsubscribe
|
||||||
* @param fn {Function} Event handler to be removed.
|
* @param fn {Function} Event handler to be removed.
|
||||||
*/
|
*/
|
||||||
public unsubscribe(fn: (e: EventData, data: T) => any): void;
|
public unsubscribe(fn?: (e: EventData, data: T) => any): void;
|
||||||
public unsubscribe(fn: (e: DOMEvent, data: T) => any): void;
|
public unsubscribe(fn?: (e: DOMEvent, data: T) => any): void;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Fires an event notifying all subscribers.
|
* Fires an event notifying all subscribers.
|
||||||
@@ -716,7 +716,7 @@ declare namespace Slick {
|
|||||||
* Metadata indexed by column index
|
* Metadata indexed by column index
|
||||||
*/
|
*/
|
||||||
[index: number]: ColumnMetadata<T>;
|
[index: number]: ColumnMetadata<T>;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ColumnMetadata<T extends SlickData> {
|
export interface ColumnMetadata<T extends SlickData> {
|
||||||
@@ -1231,10 +1231,10 @@ declare namespace Slick {
|
|||||||
public getRenderedRange(viewportTop?: number, viewportLeft?: number): Viewport;
|
public getRenderedRange(viewportTop?: number, viewportLeft?: number): Viewport;
|
||||||
public resizeCanvas(): void;
|
public resizeCanvas(): void;
|
||||||
public updateRowCount(): void;
|
public updateRowCount(): void;
|
||||||
public scrollRowIntoView(row: number, doPaging: boolean): void;
|
public scrollRowIntoView(row: number, doPaging?: boolean): void;
|
||||||
public scrollRowToTop(row: number): void;
|
public scrollRowToTop(row: number): void;
|
||||||
public scrollCellIntoView(row: number, cell: number, doPaging: boolean): void;
|
public scrollCellIntoView(row: number, cell: number, doPaging: boolean): void;
|
||||||
public scrollTo(y: number);
|
public scrollTo(y: number): void;
|
||||||
public getCanvasNode(): HTMLCanvasElement;
|
public getCanvasNode(): HTMLCanvasElement;
|
||||||
public focus(): void;
|
public focus(): void;
|
||||||
|
|
||||||
@@ -1278,7 +1278,7 @@ declare namespace Slick {
|
|||||||
// the documentation is not enlightening
|
// the documentation is not enlightening
|
||||||
startX: number;
|
startX: number;
|
||||||
startY: number;
|
startY: number;
|
||||||
range: { start: Slick.Cell, end: Slick.Cell };
|
range: { start: Slick.Cell, end?: Slick.Cell };
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OnDragInitEventArgs<T extends SlickData> extends GridEventArgs<T> {
|
export interface OnDragInitEventArgs<T extends SlickData> extends GridEventArgs<T> {
|
||||||
@@ -1448,7 +1448,7 @@ declare namespace Slick {
|
|||||||
export interface CellCssStylesHash {
|
export interface CellCssStylesHash {
|
||||||
[index: number]: {
|
[index: number]: {
|
||||||
[id: string]: string;
|
[id: string]: string;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Viewport {
|
export interface Viewport {
|
||||||
|
|||||||
6
src/typings/globals/underscore/index.d.ts
vendored
6
src/typings/globals/underscore/index.d.ts
vendored
@@ -1084,7 +1084,7 @@ interface UnderscoreStatic {
|
|||||||
* @param array The array to split
|
* @param array The array to split
|
||||||
* @param count The maximum size of the inner arrays.
|
* @param count The maximum size of the inner arrays.
|
||||||
*/
|
*/
|
||||||
chunk<T>(array: _.Collection<T>, count: number): (_.Collection<T>)[]
|
chunk<T>(array: _.Collection<T>, count: number): (_.Collection<T>)[];
|
||||||
|
|
||||||
/*************
|
/*************
|
||||||
* Functions *
|
* Functions *
|
||||||
@@ -4748,7 +4748,7 @@ interface Underscore<T> {
|
|||||||
* Wrapped type `object`.
|
* Wrapped type `object`.
|
||||||
* @see _.extend
|
* @see _.extend
|
||||||
**/
|
**/
|
||||||
findKey(predicate: _.ObjectIterator<any, boolean>, context? : any): any
|
findKey(predicate: _.ObjectIterator<any, boolean>, context? : any): any;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapped type `object`.
|
* Wrapped type `object`.
|
||||||
@@ -5708,7 +5708,7 @@ interface _Chain<T> {
|
|||||||
* Wrapped type `object`.
|
* Wrapped type `object`.
|
||||||
* @see _.extend
|
* @see _.extend
|
||||||
**/
|
**/
|
||||||
findKey(predicate: _.ObjectIterator<any, boolean>, context? : any): _Chain<T>
|
findKey(predicate: _.ObjectIterator<any, boolean>, context? : any): _Chain<T>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapped type `object`.
|
* Wrapped type `object`.
|
||||||
|
|||||||
Reference in New Issue
Block a user