UNPKG

free-jqgrid

Version:

grid as jQuery plugin - fork of jqGrid before licensing change

976 lines (974 loc) 126 kB
/** * Copyright (c) 2017, Oleg Kiriljuk, oleg.kiriljuk@ok-soft-gmbh.com * Dual licensed under the MIT and GPL licenses * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl-2.0.html */ /// <reference types="jquery" /> /// <reference types="jqueryui" /> declare namespace FreeJqGrid { interface HDivWithLoading extends HTMLDivElement { loading?: boolean; // the expando property will be set to true only during pending Ajax request to the server } interface GridInfo { bDiv: HTMLDivElement; beginReq(this: BodyTable): void; cDiv: HTMLDivElement; cols: HTMLCollection | HTMLTableDataCellElement[]; // td[] curGbox?: JQuery | null; dragEnd(this: GridInfo): void; dragMove(this: GridInfo, eventObject: JQueryEventObject): void; dragStart(this: GridInfo, iCol: number, eventObject: JQueryEventObject, y: number[], $th: JQuery): void; eDiv: HTMLDivElement; emptyRows(this: BodyTable, scroll?: boolean, clearLocalData?: boolean): void; endReq(this: BodyTable): void; fbDiv?: JQuery; fbRows?: HTMLCollection | HTMLTableRowElement[]; // tr[] fhDiv?: JQuery; footers?: HTMLCollection | HTMLTableDataCellElement[]; // td[] fsDiv?: JQuery; hDiv: HDivWithLoading; headers: { el: HTMLTableHeaderCellElement; width: number; }[]; newWidth?: number; populate(this: BodyTable, npage?: number): void; populateVisible(this: BodyTable): void; prevRowHeight?: number; resizeColumn(this: GridInfo, iCol: number, skipCallbacks: boolean, skipGridAdjustments): void; resizing?: false | { idx: number, startX: number, sOL: number, moved: boolean, delta: number }; scrollGrid(): void; sDiv?: HTMLDivElement; selectionPreserver(this: BodyTable): boolean; timer?: any; topDiv?: HTMLDivElement; ubDiv?: HTMLDivElement; uDiv?: HTMLDivElement; width: number; } interface BodyTable extends HTMLTableElement { p: JqGridOptions; grid: GridInfo; ftoolbar?: boolean; nav?: boolean; addItemDataToColumnIndex(item: Object, id: string): void; addJSONData(data: any[], rcnt?: number, more?: boolean, adjust?: number): void; addXmlData(data: any[], rcnt?: number, more?: boolean, adjust?: number): void; clearToolbar?(trigger: boolean): void; constructTr(id: string, hide: boolean, spaceSeparatedCssClasses: string, rd: any, cur: any, selected: boolean): string; fixScrollOffsetAndhBoxPadding(): void; formatCol(pos: number, rowInd: number, tv: string, rawObject: any, rowId: string, rdata?: any): string; formatter(rowId: string, cellval: any, colpos: number, rwdat: any, act?: "add" | "edit", rdata?: any): string; generateValueFromColumnIndex(cmName: string, separator?: string, delimiter?: string); modalAlert?(): void; rebuildRowIndexes(): void; refreshIndex(): void; removeItemDataFromColumnIndex(id): void; setHeadCheckBox(checked: boolean): void; sortData(index: string, idxcol: number, reload: boolean, sor: string, obj: HTMLTableHeaderCellElement, eventObject?: JQueryEventObject): void; toogleToolbar?(): void; triggerToolbar?(): void; updatepager(rn: boolean, dnd: boolean): void; } interface JQueryJqGrid extends JQuery { [index: number]: BodyTable; } interface QueryObject { ignoreCase(): QueryObject; useCase(): QueryObject; trim(): QueryObject; noTrim(): QueryObject; execute(): QueryObject; data(): QueryObject; select(f?: (v: any) => any): QueryObject; hasMatch(): QueryObject; andNot(f: string, v: any, x: any): QueryObject; orNot(f: string, v: any, x: any): QueryObject; not(f: string, v: any, x: any): QueryObject; and(f: string, v: any, x: any): QueryObject; or(f: string, v: any, x: any): QueryObject; orBegin(): QueryObject; orEnd(): QueryObject; isNot(f: string): QueryObject; is(f: string): QueryObject; equals(f: string, v: any, t: any): QueryObject; notEquals(f: string, v: any, t: any): QueryObject; isNull(f: string, v: any, t: any): QueryObject; greater(f: string, v: any, t: any): QueryObject; less(f: string, v: any, t: any): QueryObject; greaterOrEquals(f: string, v: any, t: any): QueryObject; lessOrEquals(f: string, v: any, t: any): QueryObject; startsWith(f: string, v: any): QueryObject; endsWith(f: string, v: any): QueryObject; contains(f: string, v: any): QueryObject; groupBy(by: string, dir: "a" | "asc" | "ascending" | "d" | "desc" | "descending", type: "text" | "int" | "integer" | "float" | "number" | "currency" | "numeric" | "date" | "datetime" | ((value: string) => string), datefmt: string): any[]; orderBy(by: string, dir: "a" | "asc" | "ascending" | "d" | "desc" | "descending", type: "text" | "int" | "integer" | "float" | "number" | "currency" | "numeric" | "date" | "datetime" | ((value: string) => string), datefmt: string, sfunc?: (a: any, b: any, direction: 1 | -1, aItem: any, bItem: any) => any): any[]; inSet(f: string, v: any, t: any): QueryObject; custom(ruleOp: string, field: string, data: any): QueryObject; } const enum InputNameType { ColName = 0, AdditionalProperty = 1, RowId = 2 } const enum ComponentName { GridBoxDiv = 0, // tagName: "div". class: "ui-jqgrid". Id: "gbox_" + gridId GridOverlayDiv = 1, // tagName: "div". class: "jqgrid-overlay". Id: "lui_" + gridId LoadingDiv = 2, // tagName: "div". class: "loading". Id: "load_" + gridId DialogAlertDiv = 3, // tagName: "div". class: "ui-jqdialog". Id: "alertmod_" + gridId DialogSearchDiv = 4, // tagName: "div". class: "ui-jqdialog". Id: "searchmodfbox_" + gridId DialogViewDiv = 5, // tagName: "div". class: "ui-jqdialog". Id: "viewmod" + gridId DialogEditDiv = 6, // tagName: "div". class: "ui-jqdialog". Id: "editmod" + gridId DialogDeleteDiv = 7, // tagName: "div". class: "ui-jqdialog". Id: "delmod" + gridId GridViewDiv = 8, // tagName: "div". class: "ui-jqgrid-view". Id: "gview_" + gridId TitleBarDiv = 9, // tagName: "div". class: "ui-jqgrid-titlebar" and either "ui-jqgrid-caption" or "ui-jqgrid-caption-rtl" UpperToolbarDiv = 10, // tagName: "div". class: "ui-userdata". Id: "tb_" + gridId TopPagerDiv = 11, // tagName: "div". class: "ui-jqgrid-toppager". Id: gridId + "_toppager" HeaderDiv = 12, // tagName: "div". class: "ui-jqgrid-hdiv" HeaderBoxDiv = 13, // tagName: "div". class: either "ui-jqgrid-hdiv" or "ui-jqgrid-hbox-rtl" HeaderTable = 14, // tagName: "table". class: "ui-jqgrid-htable" HeaderColsRow = 15, // tagName: "tr". class: "jqgfirstrow" or the row with column headers HeaderCols = 16, // tagName: "th". class: either "ui-first-th-rtl" or "ui-first-th-rtl" HeaderRows = 47, // tagName: "tr". class: "ui-jqgrid-labels" HeaderTh = 48, // tagName: "th". class: "ui-th-column" and either "ui-th-ltr" or "ui-th-rtl" HeaderSortableDiv = 49, // tagName: "div". class: "ui-jqgrid-labels" HeaderResizableSpan = 50, // tagName: "span". class: "ui-jqgrid-resize" and either "ui-jqgrid-resize-ltr" or "ui-jqgrid-resize-rtl" HeaderSelectAllRowsCheckbox = 45, // tagName: "input" (can be changed to "button" in the future). class: "cbox". Id: "cb_" + gridId SearchToolbar = 17, // tagName: "tr". class: "ui-search-toolbar". Its direct children are th having class "ui-th-column" and optionally "ui-th-rtl" BodyDiv = 18, // tagName: "div". class: "ui-jqgrid-bdiv" BodyScrollFullDiv = 19, // tagName: "div" - It can have height CSS property which simulate the total size of virtual data. BodyScrollTopDiv = 20, // tagName: "div" - It can have height CSS property which simulate virtual data before the current displayed in btable. BodyTable = 21, // tagName: "table". class: "ui-jqgrid-btable". Id: gridId Grid = 21, // tagName: "table". class: "ui-jqgrid-btable". Id: gridId BodyColsRow = 22, // tagName: "tr". class: "jqgfirstrow" BodyCols = 23, // tagName: "td" BodyDataRows = 24, // tagName: "tr". class: "jqgrow" and optionally "ui-row-rtl" FooterDiv = 25, // tagName: "div". class: "ui-jqgrid-sdiv" FooterBoxDiv = 26, // tagName: "div". class: either "ui-jqgrid-hdiv" or "ui-jqgrid-hbox-rtl". ??? is it really needed ??? FooterTable = 27, // tagName: "table". class: "ui-jqgrid-ftable" FooterRows = 28, // tagName: "tr". class: "footrow", optionally additionally "footrow-rtl" BottomToolbarDiv = 29, // tagName: "div". class: "ui-userdata". Id: "tb_" + gridId FrozenHeaderDiv = 30, // tagName: "div". class: "frozen-div" and "ui-jqgrid-hdiv" FrozenHeaderTable = 31, // tagName: "table". class: "ui-jqgrid-htable" FrozenHeaderColsRow = 32, // tagName: "tr". class: "jqgfirstrow" FrozenHeaderCols = 33, // tagName: "th". class: either "ui-first-th-rtl" or "ui-first-th-rtl" FrozenSearchToolbar = 34, // tagName: "tr". class: "ui-search-toolbar". Its direct children are th having class "ui-th-column" and optionally "ui-th-rtl" FrozenFooterDiv = 35, // tagName: "div". class: "frozen-div" and "ui-jqgrid-sdiv" FrozenFooterTable = 36, // tagName: "table". class: "ui-jqgrid-ftable" FrozenFooterDataRows = 37, // tagName: "tr". class: "footrow", optionally additionally "footrow-rtl" FrozenBobyDiv = 38, // tagName: "div". class: "frozen-div" and "ui-jqgrid-bdiv" FrozenBobyTable = 39, // tagName: "table". class: "ui-jqgrid-btable". Id: gridId + "_frozen" FrozenBobyColsRow = 40, // tagName: "tr". class: "jqgfirstrow" FrozenBobyCols = 41, // tagName: "td" FrozenBobyDataRows = 42, // tagName: "tr". class: "jqgrow" and optionally "ui-row-rtl" ColumnResizerDiv = 43, // tagName: "div". class: "ui-jqgrid-resize-mark". Id: "rs_m" + gridId BottomPagerDiv = 44, // tagName: "div". class: "ui-jqgrid-pager" SearchOperationMenuUl = 46 } // The ModalHash represent internal structure used by jqModal - Minimalist Modaling with jQuery (see jqmodal.js) interface ModalHash { w: JQuery; // The modal element, represent the outer div of the modal dialog o: JQuery; // The overlay element. It will be assigned on the first opening of the modal c: JqModalOptions; // The modal's options object. The options used durin creating the modal. One can use global $.jgrid.jqModal or gris specifif p.jqModal to specify defaults of the options. t: Element | string | JQuery; // The triggering element s: number; // numeric part of "id" used for modal dialog. The modal dialog have class "jqmID" + s. a: boolean; // It's false initially. It will be set to true during opening and will set to false on closing. } interface JqModalOptions { ajax?: string | false; // false ajaxText?: string; // "" closeClass?: string; // "jqmClose" closeoverlay?: boolean; // false modal?: boolean; // false onHide?: false | ((h: ModalHash) => void); onLoad?: false | ((h: ModalHash) => void); onShow?: false | ((h: ModalHash) => void); overlay?: number; // 50 overlayClass?: string; // "jqmOverlay" target?: string | JQuery | false; // false toTop?: boolean; // false trigger?: string; // ".jqModal" } interface CreateModalOptions { caption?: string; closeOnEscape?: boolean; drag?: boolean; gbox?: string; form?: string; jqModal?: boolean; height: number | "auto" | "100%" | string; left?: number; onClose?: (this: BodyTable, selector: string | Element | JQuery) => boolean; overlay?: number; recreateForm?: boolean; removemodal?: boolean; resize?: boolean; resizingRightBottomIcon: string; toTop?: boolean; top?: number; width: number | "auto" | "100%" | string; zIndex?: number; } interface ViewModalOptions extends JqmOptions { overlay?: number; // 30 modal?: boolean; // false, overlayClass?: string; // getGuiStyles.call(this, "overlay"), // "ui-widget-overlay" onShow?: (h: ModalHash) => void; // $.jgrid.showModal onHide?: (h: ModalHash) => void; // $.jgrid.closeModal gbox?: string; // "" jqm?: boolean; // true jqM?: boolean; // true } interface JqmOptions { hash?: ModalHash[]; open?: (s: number, trigger: Element | string | JQuery) => boolean | void; close?: (s: number, trigger: Element | string | JQuery) => boolean | void; params?: JqModalOptions; } interface DeleteFormLocaleOptions { bCancel?: string; bSubmit?: string; caption?: string; msg?: string; [propName: string]: any; } interface EditFormLocaleOptions { addCaption?: string; bCancel?: string; bClose?: string; bExit?: string; bNo?: string; bSubmit?: string; bYes?: string; editCaption?: string; msg: { customarray?: string, customfcheck?: string, date?: string, email?: string, integer?: string, maxValue?: string, minValue?: string, novalue?: string, number?: string, required?: string, url?: string, [propName: string]: any }; saveData?: string; [propName: string]: any; } interface NavLocaleOptions { addtext?: string; addtitle?: string; alertcap?: string; alerttext?: string; canceltext?: string; canceltitle?: string; deltext?: string; deltitle?: string; edittext?: string; edittitle?: string; refreshtext?: string; refreshtitle?: string; savetext?: string; savetitle?: string; searchtext?: string; searchtitle?: string; viewtext?: string; viewtitle?: string; [propName: string]: any; } interface SearchLocaleOptions { addGroupTitle?: string; addRuleTitle?: string; caption?: string; deleteGroupTitle?: string; deleteRuleTitle?: string; Find?: string; groupOps?: { op: string, text: string }[]; odata?: { oper: string, text: string }[]; operandTitle?: string; Reset?: string; resetTitle?: string | ((options: { options: FilterFoolbarOptions, cm: ColumnModel, cmName: string, iCol: number }) => string); [propName: string]: any; } interface ViewLocaleOptions { bClose?: string; caption?: string; [propName: string]: any; } interface JqGridLocaleOptions { emptyrecords?: string; loadtext?: string; pgfirst?: string; pglast?: string; pgnext?: string; pgprev?: string; pgrecs?: string; pgtext?: string; recordtext?: string; savetext?: string; showhide?: string; [propName: string]: any; } interface FormatterIntegerLocaleOptions { thousandsSeparator?: string; defaultValue?: string; } interface FormatterNumberLocaleOptions extends FormatterIntegerLocaleOptions { decimalSeparator?: string; decimalPlaces?: number; } interface FormatterCurrencyLocaleOptions extends FormatterNumberLocaleOptions { prefix?: string; suffix?: string; } interface FormatterDateLocaleOptions { dayNames?: string[]; monthNames?: string[]; AmPm?: string[]; S?: (j: number) => string; srcformat?: string; newformat?: string; masks?: { ShortDate?: string; LongDate?: string; FullDateTime?: string; MonthDay?: string; ShortTime?: string; LongTime?: string; YearMonth?: string; }; } interface FormattersLocaleOptions { integer?: FormatterIntegerLocaleOptions; number?: FormatterNumberLocaleOptions; currency?: FormatterCurrencyLocaleOptions; date?: FormatterDateLocaleOptions; [propName: string]: any; } interface JqGridStaticLocaleOptions { col?: { bCancel?: string; bSubmit?: string; caption?: string; [propName: string]: any; }; defaults?: JqGridLocaleOptions; del?: DeleteFormLocaleOptions; edit?: EditFormLocaleOptions; errors?: { errcap?: string; model?: string; norecords?: string; nourl?: string; [propName: string]: any; }; formatter?: FormattersLocaleOptions; isRTL?: boolean; nav?: NavLocaleOptions; search?: SearchLocaleOptions; view?: ViewLocaleOptions; [propName: string]: any; } interface EditableCellInfo { rowid: string; iCol: number; iRow: number; cmName: string; cm: ColumnModel; mode: "add" | "edit"; td: HTMLTableDataCellElement; tr: HTMLTableRowElement; trFrozen: HTMLTableRowElement; dataElement: Element; dataWidth: number; } interface IconsInfo { baseIconSet?: string; common?: string; // "ui-icon", pager?: { common?: string; ignoreParents?: boolean; first?: string; // "ui-icon-seek-first", prev?: string; // "ui-icon-seek-prev", next?: string; // "ui-icon-seek-next", last?: string; // "ui-icon-seek-end" }; sort?: { common?: string; ignoreParents?: boolean; asc?: string; // "ui-icon-triangle-1-n", desc?: string; // "ui-icon-triangle-1-s" }; gridMinimize?: { common?: string; ignoreParents?: boolean; visible?: string; // "ui-icon-circle-triangle-n", hidden?: string; // "ui-icon-circle-triangle-s" }; nav?: { common?: string; ignoreParents?: boolean; edit?: string; // "ui-icon-pencil", add?: string; // "ui-icon-plus", del?: string; // "ui-icon-trash", search?: string; // "ui-icon-search", refresh?: string; // "ui-icon-refresh", view?: string; // "ui-icon-document", save?: string; // "ui-icon-disk", cancel?: string; // "ui-icon-cancel", newbutton?: string; // "ui-icon-newwin" }; actions?: { common?: string; // string; ignoreParents?: boolean; edit?: string; // "ui-icon-pencil", del?: string; // "ui-icon-trash", save?: string; // "ui-icon-disk", cancel?: string; // "ui-icon-cancel" }; form?: { common?: string; ignoreParents?: boolean; close?: string; // "ui-icon-closethick", prev?: string; // "ui-icon-triangle-1-w", next?: string; // "ui-icon-triangle-1-e", save?: string; // "ui-icon-disk", undo?: string; // "ui-icon-close", del?: string; // "ui-icon-scissors", cancel?: string; // "ui-icon-cancel", resizableLtr?: string; // "ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" }; search?: { common?: string; ignoreParents?: boolean; search?: string; // "ui-icon-search", reset?: string; // "ui-icon-arrowreturnthick-1-w", query?: string; // "ui-icon-comment" }; subgrid?: { common?: string; ignoreParents?: boolean; plus?: string; // "ui-icon-plus", minus?: string; // "ui-icon-minus", openLtr?: string; // "ui-icon-carat-1-sw", openRtl?: string; // "ui-icon-carat-1-se" }; grouping?: { common?: string; // string; ignoreParents?: boolean; plus?: string; // "ui-icon-circlesmall-plus", minus?: string; // "ui-icon-circlesmall-minus" }; treeGrid?: { common?: string; ignoreParents?: boolean; minus?: string; // "ui-icon-triangle-1-s", leaf?: string; // "ui-icon-radio-off", plusLtr?: string; // "ui-icon-triangle-1-e", plusRtl?: string; // "ui-icon-triangle-1-w" }; checkbox ?: { ignoreParents?: boolean; checkedClasses?: string; // "fa-check-square-o", checked?: string; // "fa-check-square-o fa-lg", unchecked?: string; // "fa-square-o fa-lg" }; } interface GuiStyleInfo { baseGuiStyle?: string; gBox?: string; // "ui-jqgrid-jquery-ui ui-widget ui-widget-content ui-corner-all", // ui-widget-content??? for the children of gbox gView?: string; // "", overlay?: string; // "ui-widget-overlay", loading?: string; // "ui-state-default ui-state-active", hDiv?: string; // "ui-state-default ui-corner-top", hTable?: string; // "", colHeaders?: string; // "ui-state-default", states?: { select?: string; // "ui-state-highlight", disabled?: string; // "ui-state-disabled ui-jqgrid-disablePointerEvents", hover?: string; // "ui-state-hover", // can be table-hover on <table> only and style like .table-hover tbody tr:hover td error?: string; // "ui-state-error", active?: string; // "ui-state-active", textOfClickable?: string; // "ui-state-default" }; dialog?: { header?: string; // "ui-widget-header ui-dialog-titlebar ui-corner-all ui-helper-clearfix", window?: string; // "ui-jqgrid-jquery-ui ui-widget ui-widget-content ui-corner-all ui-front", document?: string; // "", subdocument?: string; // "", body?: string; // "", footer?: string; // "", content?: string; // "ui-widget-content", hr?: string; // "ui-widget-content", closeButton?: string; // "ui-corner-all", fmButton?: string; // "ui-state-default", dataField?: string; // "ui-widget-content ui-corner-all", viewCellLabel?: string; // "ui-widget-content", viewLabel?: string; // "", viewCellData?: string; // "ui-widget-content", viewData?: string; // "", leftCorner?: string; // "ui-corner-left", rightCorner?: string; // "ui-corner-right", defaultCorner?: string; // "ui-corner-all" }; filterToolbar?: { dataField?: string; // "ui-widget-content" }; subgrid?: { thSubgrid?: string; // "ui-state-default", // used only with subGridModel rowSubTable?: string; // "ui-widget-content", // used only with subGridModel additionally to ui-subtblcell row?: string; // "ui-widget-content", // class of the subgrid row, additional to ui-subgrid tdStart?: string; // "", // it can be with span over rownumber and multiselect columns tdWithIcon?: string; // "ui-widget-content", // class of cell with +- icon, additional to subgrid-cell buttonDiv?: string; // "", button?: string; // "", tdData?: string; // "ui-widget-content", // class of main td with span over the grid, additional subgrid-data legacyTable?: string; // "" }; grid?: string; // "", gridRow?: string; // "ui-widget-content", rowNum?: string; // "ui-state-default", gridFooter?: string; // "", rowFooter?: string; // "ui-widget-content", gridTitle?: string; // "ui-widget-header ui-corner-top", gridError?: string; // "ui-state-error", gridErrorText?: string; // "", titleButton?: string; // "ui-corner-all", toolbarUpper?: string; // "ui-state-default", toolbarBottom?: string; // "ui-state-default", actionsDiv?: string; // "ui-widget-content", actionsButton?: string; // "ui-corner-all", pager?: { pager?: string; // "ui-state-default", pagerButton?: string; // "ui-corner-all", pagerInput?: string; // "ui-widget-content", pagerSelect?: string; // "ui-widget-content" }; navButton?: string; // "ui-corner-all", searchDialog?: { operator?: string; // "ui-corner-all", label?: string; // "ui-corner-all", elem?: string; // "ui-corner-all", operationGroup?: string; // "", addRuleButton?: string; // "ui-corner-all", deleteRuleButton?: string; // "ui-corner-all", operationSelect?: string; // "ui-corner-all", addGroupButton?: string; // "ui-corner-all", deleteGroupButton?: string; // "ui-corner-all" }; searchToolbar?: { menu?: string; // "ui-menu-jqueryui", operButton?: string; // "ui-corner-all", clearButton?: string; // "ui-corner-all" }; top?: string; // "ui-corner-top", bottom?: string; // "ui-corner-bottom", resizer?: string; // "ui-widget-header" } interface JqGridStaticOptions extends JqGridOptions { fatalError?: (errorText: string) => void; // default is alert function } type BooleanFeedbackValues = false | "stop" | void; interface JqGridStatic extends JqGridStaticLocaleOptions { _multiselect?: boolean; actionsNav?: FormatterActionsOptions; ajaxOptions?: JQueryAjaxSettings; cell_width: boolean; cellattr?: { [key: string]: (this: BodyTable, rowId: string, cellValue: any, rowObject: any, cm: ColumnModel, rdata: any, formattedCellValue: string) => string; }; cmTemplate?: { [key: string]: ColumnModel; }; defaults: JqGridStaticOptions; del?: FormDeletingOptions; edit?: FormEditingOptions; filter?: JqFilterOptions; getXmlData(this: BodyTable, obj: any, dotSeparatedNamesOrFunc: string | ((obj: any) => any), returnObj?: boolean): string | undefined | JQuery; // JQuery returns only if returnObj is true guid: number; guiStyles: { jQueryUI: GuiStyleInfo; bootstrap: GuiStyleInfo; bootstrapPrimary: GuiStyleInfo; bootstrap4: GuiStyleInfo; [propName: string]: GuiStyleInfo; }; icons: { jQueryUI: IconsInfo; fontAwesome: IconsInfo; glyph: IconsInfo; [propName: string]: IconsInfo; }; inlineEdit?: InlineEditingOptions; inlineNavOptions?: InlineNavOptions; jqModal?: JqModalOptions; // { toTop: true } locales: { [key: string]: JqGridStaticLocaleOptions; }; msie: boolean; nav?: NavOptions; no_legacy_api?: boolean; productName: "free jqGrid"; rowattr?: ( (this: BodyTable, item: any, rowObject: any, rowid: string) => { [attributeName: string]: string } | null | undefined ); search?: SearchLocaleOptions; uidPref: string; version: string; // like "4.13.7" for example view?: FormViewingOptions; bindEv(element: Element | JQuery, options: EditOptions | SearchOptions): any; builderFmButon(this: BodyTable, id: string, text?: string, icon?: string, iconOnLeftOrRight?: "right" | "left" | undefined, conner?: "right" | "left" | undefined): any; builderSortIcons(this: BodyTable, iCol: number): string; cellWidth(): boolean; checkDate(format: string, date: string): boolean; checkTime(time: string): boolean; checkValues(this: BodyTable, value: any, iCol: number | string, customobject?: any, name?: string, options?: any): boolean; clearArray(array: any[]): void; closeModal(h: ModalHash): void; convertOnSaveLocally(this: BodyTable, nData: any, cm: any, oData: any, id: string, item: any, iCol: number): any; createEl(this: BodyTable, elementType: string, options: any, value: string, autoWidth?: boolean, ajaxso?: any): Element; createModal(this: BodyTable, aIDs: any, content: Element | JQuery, o: CreateModalOptions, insertSelector: string | Element | JQuery, posSelector: string | Element | JQuery, appendsel?: boolean | string | Element | JQuery, css?: any): void; //detectRowEditing(rowid: string): RowEditingInfo; detectRowEditing(this: BodyTable, rowid: string): { mode: "inlineEditing" | "cellEditing"; savedRow: any[]; editable: { [cmName: string]: boolean | "hidden" | "disabled" | "readonly" } }; enumEditableCells(this: BodyTable, tr: HTMLTableRowElement, mode: "add" | "edit", callback: (options: EditableCellInfo) => boolean): void; extend(this: JqGridStatic, methods: any): void; feedback(this: BodyTable | JQuery, p: any, eventPrefix: string, callbackSuffix: string, callbackName: string): boolean; fillSelectOptions(element, value: any, separator: string, delimiter: string, isMultiple: boolean, valuesToSelect?: string): boolean; fixMaxHeightOfDiv(height: number): number; fixScrollOffsetAndhBoxPadding(this: BodyTable): void; format(format: string, ...rest: any[]): string; from(source: any): QueryObject; fullBoolFeedback(this: BodyTable, callback: (...rest: any[]) => BooleanFeedbackValues, eventName: string, ...rest: any[]): boolean; getAccessor(obj: any, dotSeparatedNamesOrFunc: string | ((obj: any) => any)): any; getCell(this: BodyTable, tr: HTMLTableRowElement | JQuery, iCol: number): JQuery; getCellIndex(cell: Element | JQuery): number; getDataFieldOfCell(this: BodyTable, tr: HTMLTableRowElement | JQuery, iCol: number): JQuery; getEditedValue(this: BodyTable, $dataFiled: JQuery, cm: any, valueText: Object, editable: boolean | "hidden" | "readonly"): string; getGridComponent(componentName: ComponentName, $p: HTMLElement | JQuery): JQuery; getGridComponentId(this: BodyTable, componentName: ComponentName): string; getGridComponentIdSelector(this: BodyTable, componentName: ComponentName): string; getMethod(this: JqGridStatic, methodName: string): Function; getRelativeRect(this: BodyTable, element: Element | JQuery): JQueryCoordinates; getRes(basePath: Object, path: string): any; getXmlData(obj: Node, dotSeparatedNamesOrFunc: string | ((obj: any) => any), returnObj?: boolean): string; hasAllClasses(element: Element | JQuery, spaceSeparatedCssClasses: string): boolean; hasOneFromClasses(element: Element | JQuery, spaceSeparatedCssClasses: string): boolean; hideModal(selector: string | Element | JQuery, options: {jqm?: boolean, gb?: string, removemodal?: boolean}): void; htmlDecode(value: string): string; htmlEncode(value: string): string; info_dialog(this: BodyTable, caption: string, content: string, closeButtonText: string, modalOptions: any): void; isCellClassHidden(spaceSeparatedCssClasses: string): boolean; isEmpty(testString: string): boolean; isHTMLElement(element: Element): boolean; jqID(idName: string): string; mergeCssClasses(...spaceSeparatedCssClasses: string[]): boolean; msiever(): number; oldDecodePostedData(value: string): string; oldEncodePostedData(value: string): string; parseDataToHtml(this: BodyTable, len: number, ids: string[], items: any[], cellsToDisplay: any[], rcnt?: number, adjust?: number, readAllInputData?: boolean): string[]; parseDate(this: BodyTable, format: string, date: string | number | Date, newformat?: string, options?: any): string | Date; parseDateToNumber(this: BodyTable, format: string, date: string | number | Date): number; randId(prefix?: string): string; serializeFeedback(this: BodyTable | JQuery, callback: ((this: BodyTable | JQuery, postData: any) => any), eventName: string, postData: Object | string): any; showModal(h: ModalHash): void; stripHtml(htmlString: string): string; stripPref(prefix: string, id: string): string; template(format: string): string; viewModal(this: BodyTable, selector: string | Element | JQuery, options?: ViewModalOptions): void; [propName: string]: any; } interface JqGridFmatter { isEmpty: (o: any) => boolean; isNumber: (o: any) => boolean; isObject: (o: any) => boolean; isValue: (o: any) => boolean; NumberFormat: (nData: number, opts: { decimalSeparator: string, decimalPlaces: number, thousandsSeparator: string }) => string; } interface FormatterOptions { rowId: string; colModel: ColumnModel; gid: string; pos: number; rowData: any; } interface FormatterActionsCustomButton { action: string; position?: "first" | "last"; onClick: (options: {rowid: string, event: JQueryEventObject, action: string, options: FormatterActionsCustomButton }) => void; [propName: string]: any; // attribute for the editable element } interface FormatterActionButtonMask { display?: boolean; // whether to include the button in the actions div hidden?: boolean; // whether to add style="display:none;" to the button noHovering?: boolean; // whether to add/remove hovering classes on mouseover/mouseout events } interface FormatterActionsOptions { editbutton?: boolean; delbutton?: boolean; editformbutton?: boolean; commonIconClass?: string; // "ui-icon", editicon?: string; // "ui-icon-pencil", delicon?: string; // "ui-icon-trash", saveicon?: string; // "ui-icon-disk", cancelicon?: string; // "ui-icon-cancel", savetitle?: string; // edit.bSubmit || "", canceltitle?: string; // edit.bCancel || "" isDisplayButtons?: (this: BodyTable, options: FormatterOptions, rwd, act) => { [propName: string]: FormatterActionButtonMask }; custom?: FormatterActionsCustomButton[]; editOptions?: FormEditingOptions; delOptions?: FormDeletingOptions; keys?: boolean; onEdit?: (this: BodyTable, rowid: string, options: EditRowOptions) => void; onSuccess?: (this: BodyTable, jqXhr: JQueryXHR, rowid: string, options: FreeJqGrid.SaveRowOptions) => boolean | [boolean, any]; url?: string | ((this: BodyTable, rowid: string, editOrAdd: "add" | "edit", postData: any, options: SaveRowOptions) => string); extraparam?: Object; afterSave?: (this: BodyTable, rowid: string, jqXhr: JQueryXHR, postData: any, options: SaveRowOptions) => void; onError?: (this: BodyTable, rowid: string, jqXhr: JQueryXHR, textStatus: string, errorThrown: string) => void; afterRestore?: (this: BodyTable, rowid: string) => void; restoreAfterError?: boolean; mtype?: string | ((this: BodyTable, editOrAdd: "add" | "edit", options: SaveRowOptions, rowid: string, postData: any) => string); [propName: string]: any; // attribute for the editable element } interface JqGridFormatters { [propName: string]: any; } interface EditOptions { buildSelect?: (this: BodyTable, data: any, jqXhr: JQueryXHR, cm: ColumnModel, iCol: number) => string; dataEvents?: { type: string, data?: any, fn: (e) => void }[]; dataInit?: (this: BodyTable, element: Element, options: EditOptions) => void; dataUrl?: string | ((this: BodyTable, rowid: string, value: string, cmName: string, ajaxContext: { elem: Element, options: any, cm: ColumnModel, mode: "cell" | "addForm" | "editForm" | "add" | "edit", rowid: string, iCol: number, ovm: string[] }) => string); generateValue?: boolean; value?: string | { [propName: string]: string } | (() => string | { [propName: string]: string }); defaultValue?: string | (() => string) | boolean; // boolean for SearchOptions compatibility [propName: string]: any; // attribute for the editable element } interface SearchOptions extends EditOptions { attr?: Object; clearSearch?: boolean; defaultValue?: boolean; generateDatalist?: boolean; searchhidden?: boolean; sopt?: string[]; [propName: string]: any; } interface EditOrSearchRules { custom?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => any[]); custom_func?: (this: BodyTable, value: string, name: string, iCol: number) => any[]; date?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); edithidden?: boolean; email?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); integer?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); maxValue?: number; minValue?: number; number?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); required?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); time?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); url?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean); } interface ColumnModelWithoutLabel { align?: "left" | "center" | "right"; autoResizable?: boolean; // default value false autoResizing?: { minColWidth?: number, maxColWidth?: number, compact?: boolean }; cellattr?: "string" | ((this: BodyTable, rowId: string, cellValue: any, rowObject: any, cm: ColumnModel, rdata: any, formattedCellValue: string) => string); cellBuilder?: (this: BodyTable, cellValue: any, options: FormatterOptions, rowObject: any, action?: "edit" | "add") => string; classes?: string; // spaceSeparatedCssClasses convertOnSave?: (this: BodyTable, options: { newValue: any, cm: ColumnModel, oldValue: any, id: string, item: any, iCol: number }) => any; createColumnIndex?: boolean; datefmt?: string; editable?: boolean | "hidden" | "disabled" | "readonly" | ((options: { rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement, trFrozen?: HTMLTableRowElement, dataElement?: Element, dataWidth?: number }) => boolean | "hidden" | "disabled" | "readonly"); // default value false editoptions?: EditOptions; editrules?: EditOrSearchRules; edittype?: "text" | "textarea" | "checkbox" | "select" | "password" | "button" | "image" | "file" | "custom"; firstsortorder?: "asc" | "desc"; // default value "asc" fixed?: boolean; // default value false formatoptions?: any; // TODO: define formatoptions for different standard formatters formatter?: "integer" | "number" | "currency" | "date" | "select" | "actions" | "checkbox" | "checkboxFontAwesome4" | "showlink" | "email" | "link" | string | ((this: BodyTable, cellValue: any, options: FormatterOptions, rowObject: any, action?: "edit" | "add") => string); formoptions?: { elmprefix?: string; elmsuffix?: string; label?: string; rowabove?: boolean; // false rowcontent?: string; // "" rowpos?: number; colpos?: number; }; frozen?: boolean; // default value false jsonmap?: (this: BodyTable, item: any, options: { cmName: string, iItem: number }) => any; headerTitle?: string; hidden?: boolean; // default value false hidedlg?: boolean; index?: string; key?: boolean; labelAlign?: "left" | "center" | "right" | "likeData"; labelClasses?: string; lso?: "asc" | "desc" | "asc-desc" | "desc-asc" | "" | string; name: string; resizable?: boolean; rotated?: boolean; saveLocally?: (this: BodyTable, options: { newValue: any, newItem: Object, oldItem: Object, id: string, rowid: string, cm: ColumnModel, cmName: string, iCol: number }) => void; search?: boolean; searchoptions?: SearchOptions; searchrules?: EditOrSearchRules; sortable?: boolean; sortfunc?: (a: any, b: any, direction: 1 | -1, aItem: any, bItem: any) => any; sortIconName?: (this: BodyTable, options: { order: "asc" | "desc", iCol: number, cm: ColumnModel }) => string; // return CSS classes sorttype?: "integer" | "int" | "number" | "currency" | "float" | "numeric" | "boolean" | "date" | "datetime" | "text" | string | ((this: BodyTable, value: any, item: any) => any); summaryRound?: number; // exponent used in Math.pow during rounding of summary values during data grouping summaryRoundType?: "fixed" | "round"; // can be used during calculation of summary values during data grouping summaryType?: "sum" | "min" | "max" | "count" | "avg"; // can be used in data grouping summaryFormat?: (this: BodyTable, group: GroupInformation, cellData: string, cellValue: any, cm: ColumnModel, summary: GroupSummaryInformation) => string; stype?: "select" | "checkbox" | "custom" | "text"; // default value "text" template?: "actions" | "integer" | "integerStr" | "number" | "numberStr" | "booleanCheckbox" | "booleanCheckboxFa" | string | ColumnModel; title?: boolean; unformat?: (this: BodyTable, cellValue: string, options: { rowId: string, colModel: ColumnModel }, dataElement: Element) => string; viewable?: boolean; // default value true width?: number; // default value 150 widthOrg?: number; // used internally by jqGrid xmlmap?: (this: BodyTable, item: any, options: { cmName: string, iItem: number }) => any; [propName: string]: any; // allow to have any number of other properties } interface ColumnModel extends ColumnModelWithoutLabel { label?: string; } interface ReloadGridOptions { current?: boolean; fromServer?: boolean; page?: number; } type AddRowDataPosition = "first" | "last" | "before" | "after" | "afterSelected" | "beforeSelected"; type LoadType = "disable" | "enable" | "block"; type FormIcon = [boolean, "left"|"right", string]; type NavKeys = [boolean, number, number]; // [shouldBeUsed, upKeyCode, downKeyCode]: [false,38,40] interface FormEditingOptions extends EditFormLocaleOptions { _savedData?: { [propName: string]: any }; addedrow?: AddRowDataPosition; afterclickPgButtons?: (this: BodyTable, whichButton: "next" | "prev", $form: JQuery, rowid: string) => void; afterComplete?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, $form: JQuery, editOrAdd: "edit" | "add") => void; afterShowForm?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => void; afterSubmit?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, editOrAdd: "edit" | "add") => void; ajaxEditOptions?: JQueryAjaxSettings; beforeCheckValues?: (this: BodyTable, postdata: Object | string, $form: JQuery, editOrAdd: "edit" | "add") => Object | void; beforeInitData?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => BooleanFeedbackValues; beforeShowForm?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => void; beforeSubmit?: (this: BodyTable, postdata: Object | string, $form: JQuery, editOrAdd: "edit" | "add") => [true] | [true, any] | true | null | undefined | [false, string]; bottominfo?: string; checkOnSubmit?: boolean; checkOnUpdate?: boolean; clearAfterAdd?: boolean; closeAfterEdit?: boolean; closeicon?: [boolean, string, string]; // [true,"left","fa fa-undo"] closeOnEscape?: boolean; commonIconClass?: string; // "fa" dataheight?: number | "auto" | "100%" | string; // "auto" datawidth?: number | "auto" | "100%" | string; // "auto" drag?: boolean; editData?: any; errorTextFormat?: (this: BodyTable, jqXhr: JQueryXHR, editOrAdd: "edit" | "add") => void; jqModal?: boolean; height?: number | "auto" | "100%" | string; // "auto" left?: number; modal?: boolean; mtype?: string | ((this: BodyTable, rowid: string, editOrAdd: "edit" | "add", options: FormEditingOptions, postdata: Object | string) => string); navkeys?: NavKeys; // [false,38,40] nextIcon?: string; // "fa fa-caret-right" onclickPgButtons?: (this: BodyTable, whichButton: "next" | "prev", $form: JQuery, rowid: string) => void; onclickSubmit?: (this: BodyTable, options: FormEditingOptions, postdata: Object | string, editOrAdd: "edit" | "add") => Object | string; onClose?: (this: BodyTable, selector: string | Element | JQuery) => boolean; onInitializeForm?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => void; overlayClass?: string; // "ui-widget-overlay" prevIcon?: string; // "fa fa-caret-left" processing?: boolean; reloadAfterSubmit?: boolean; reloadGridOptions?: ReloadGridOptions; removemodal?: boolean; resize?: boolean; saveicon?: FormIcon; // [true,"left","fa fa-floppy-o"] savekey?: [boolean, number]; // [false,13] savetext?: string; // default from $.jgrid.locales[currentLocale].defaults.savetext or $.jgrid.defaults.savetext saveui?: LoadType; // "enable" serializeEditData?: (this: BodyTable, postdata: Object) => Object | string; skipPostTypes?: string[]; // ["image","file"] top?: number; topinfo?: string; useDataProxy?: boolean; url?: string | ((this: BodyTable, rowid: string, editOrAdd: "edit" | "add", postdata: Object | string, options: FormEditingOptions) => string); viewPagerButtons?: boolean; width?: number | "auto" | "100%" | string; // "auto" [propName: string]: any; // allow to have any number of other properties } interface FormDeletingOptions extends DeleteFormLocaleOptions { afterComplete?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, $form: JQuery, rowids: string[]) => void; afterShowForm?: (this: BodyTable, $form: JQuery) => void; afterSubmit?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, rowids: string[]) => void; ajaxDelOptions?: JQueryAjaxSettings; beforeInitData?: (this: BodyTable, $form: JQuery) => BooleanFeedbackValues; beforeShowForm?: (this: BodyTable, $form: JQuery) => void; beforeSubmit?: (this: BodyTable, postdata: Object | string, rowids: string[]) => [true] | [true, any] | undefined | [false, string]; cancelicon?: FormIcon; // [true,"left","fa fa-ban"] closeOnEscape?: boolean; commonIconClass?: string; // "fa" dataheight?: number | "auto" | "100%" | string; // "auto" datawidth?: number | "auto" | "100%" | string; // "auto" delData?: any; delicon?: FormIcon; // [true,"left","fa fa-trash-o"] deltext?: string; // default from $.jgrid.locales[currentLocale].defaults.deltext or $.jgrid.defaults.deltext or "Deleting..." delui?: LoadType; // "disable" drag?: boolean; errorTextFormat?: (this: BodyTable, jqXhr: JQueryXHR) => string; height?: number | "auto" | "100%" | string; // "auto" jqModal?: boolean; idSeparator?: string; // "," left?: number; modal?: boolean; mtype?: string; // "POST" onclickSubmit?: (this: BodyTable, options: FormDeletingOptions, postdata: Object | string, rowids: string[]) => Object | string; onClose?: (this: BodyTable, selector: string | Element | JQuery) => boolean; overlay?: number; processing?: boolean; // internal used reloadAfterSubmit?: boolean; reloadGridOptions?: ReloadGridOptions; removemodal?: boolean; resize?: boolean; serializeDelData?: (this: BodyTable, postdata: Object | string, rowids: string[]) => Object | string; top?: number; toTop?: boolean; url?: string | ((this: BodyTable, rowid: string, postdata: Object | string, options: FormDeletingOptions, rowids: string[]) => string); useDataProxy?: boolean; width?: number | "auto" | "100%" | string; // "auto" [propName: string]: any; // allow to have any number of other properties } interface FormViewingOptions extends ViewLocaleOptions, CreateModalOptions { beforeShowForm?: (this: BodyTable, $form: JQuery) => void; beforeInitData?: (this: BodyTable, $form: JQuery) => BooleanFeedbackValues; closeicon?: FormIcon; // [true, "left", getIcon("form.cancel")] commonIconClass?: string; // getIcon("form.common") dataheight?: number | "auto" | "100%" | string; // "auto" datawidth?: number | "auto" | "100%" | string; // "auto" labelswidth?: number | string; // "", 350, "30%" and so on prevIcon?: string; // getIcon("form.prev") nextIcon?: string; // getIcon("form.next") navkeys?: NavKeys; // [false, 38, 40] modal?: boolean; // false viewPagerButtons?: boolean; // true } interface SearchingDialogOptions extends SearchLocaleOptions, CreateModalOptions { afterChange?: (this: BodyTable, $filter: JQuery, options: SearchingDialogOptions, filterOptions: JqFilterOptions, searchFilterDiv: JqFilterDiv) => void; afterShowSearch?: (this: BodyTable, $filter: JQuery) => void; afterRedraw?: (this: BodyTable, options: JqFilterOptions, searchFilterDiv: JqFilterDiv) => void; beforeShowSearch?: (this: BodyTable, $filter: JQuery) => BooleanFeedbackValues; closeAfterSearch?: boolean; // default false closeAfterReset?: boolean; // default false columns?: ColumnModel[]; commonIconClass?: string; dataheight?: number | "auto" | "100%" | string; // "auto" errorcheck?: boolean; // default true, groupOps?: { op: string, text: string }[]; layer?: null | string; // can be id. be used in createModal as appendsel loadDefaults?: boolean; multipleSearch?: boolean; // default false multipleGroup?: boolean; // default false sField?: string; // default "searchField" sValue?: string; // default "searchString" sOper?: string; // default "searchOper" sFilter?: string; // default "filters" searchForAdditionalProperties?: boolean; searchOnEnter?: boolean; // default false showOnLoad: boolean; // default false showQuery?: boolean; // default false, sopt?: null; // used only if .searchoptions.sopt is undefined stringResult?: boolean; onInitializeSearch?: (this: BodyTable, $filter: JQuery) => void; onSearch?: (this: BodyTable, filters: Filter) => void; onReset?: (this: BodyTable) => BooleanFeedbackValues; operands?: { eq: string; // default "=" ne: string; // default "<>" lt: string; // default "<" le: string; // default "<=" gt: string; // default ">" ge: string; // default ">=" bw: string; // default "LIKE" bn: string; // default "NOT LIKE" "in": string; // default "IN" ni: string; // default "NOT IN" ew: string; // default