123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610 |
- {
- This file is part of the Pas2JS run time library.
- Copyright (C) 2019 Michael Van Canneyt
- BootStrapTable mappings for pas2js
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- unit libbootstraptable;
- {$mode objfpc}
- {$modeswitch externalclass}
- interface
- uses
- types, web, libjquery, js, libbootstrap;
- Type
- TTableStyle = Class external name 'Object' (TJSObject)
- css: TJSObject;
- classes: string;
- end;
- TRowStyleHandler = reference to function (row: TJSObject; index : NativeInt) : TTableStyle;
- TCellStyleHandler = reference to function (Value : JSValue; Row : TJSObject; index : Integer) : TTableStyle;
- TRowSortHandler = reference to function (Const sortName,sortOrder : string; row: TJSObject) : nativeint;
- TColSortHandler = reference to function (Const fieldA,FieldB : JSValue; RowA,RowB: TJSObject) : nativeint;
- TAjaxHandler = reference to function (aURL : String; aSettings : TJSObject) : tJQXHR;
- TQueryParamsFunction = reference to function (params : TJSObject) : JSValue;
- TResponseFunction = reference to function (res : JSValue) : JSValue;
- TSearchFunction = reference to function (data : TJSArray; aText : String) : TJSArray;
- TIgnoreClickHandler = reference to function (el : TJSHTMLELement) : Boolean;
- TDetailFormatHandler = reference to function (Index :Integer; Row : TJSObject; el : TJSHTMLElement) : String;
- TDetailFilterHandler = reference to function (Index :Integer; Row : TJSObject) : boolean;
- TColFormatterHandler = reference to function (value : JSValue; row : TJSObject; Index : Integer; Field : String) : String;
- TFooterFormatterHandler = reference to function (Rows : TJSValueDynArray) : String;
- TDetailFormatterHandler = reference to function (index : integer; row : TJSObject; el : TJSHTMLElement) : String;
- TBootstrapTableColumn = Class external name 'Object' (TJSObject)
- field : String;
- title : String;
- titleTooltip : string;
- class_ : string; external name 'class';
- width : Integer;
- widthUnit : String;
- rowspan : Integer;
- colspan : Integer;
- align : String;
- halign : String;
- falign : String;
- valign : string;
- cellStyle : TCellStyleHandler;
- radio : boolean;
- checkbox : boolean;
- checkboxEnabled : Boolean;
- clickToSelect : Boolean;
- showSelectTitle : Boolean;
- sortable : Boolean;
- sortName : String;
- order : string;
- sorter : TColSortHandler;
- visible : Boolean;
- switchable : Boolean;
- cardVisible : Boolean;
- searchable : Boolean;
- formatter : TColFormatterHandler ;
- footerFormatter : TFooterFormatterHandler;
- detailFormatter : TDetailFormatterHandler;
- searchFormatter : boolean;
- escape : boolean;
- events : TJSObject;
- end;
- TBootstrapTableColumnArray = array of TBootstrapTableColumn;
- TFooterStyleHandler = Reference to function(col : TBootstrapTableColumn) : TTableStyle;
- TBootstrapTableOptions = class external name 'Object' (TJSObject)
- ajax : TAjaxHandler;
- ajaxOptions : TJSObject;
- buttonsAlign : String;
- buttonsClass : String;
- buttonsPrefix : String;
- buttonsToolbar : JSValue;
- cache : Boolean;
- cardView : Boolean;
- checkboxHeader : Boolean;
- classes : string;
- clickToSelect : Boolean;
- columns : TBootstrapTableColumnArray;
- contentType : string;
- customSearch : TSearchFunction;
- customSort : TRowSortHandler;
- data : JSValue; // Object or aray
- dataField : string;
- dataType : string;
- detailFilter : TDetailFilterHandler;
- detailFormatter : TDetailFormatHandler;
- detailView : Boolean;
- detailViewByClick : Boolean;
- detailViewIcon : Boolean;
- escape : Boolean;
- filterOptions : Boolean;
- footerStyle : TFooterStyleHandler;
- height : Integer;
- html : TJSObject;
- icons : TJSObject;
- iconSize : String;
- iconsPrefix : String;
- idField : String;
- ignoreClickToSelectOn : TIgnoreClickHandler;
- locale : string;
- maintainMetaData : Boolean;
- method : string;
- minimumCountColumns : NativeInt;
- multipleSelectRow : Boolean;
- onlyInfoPagination : Boolean;
- pageList : TNativeIntDynArray;
- pageNumber : NativeInt;
- pageSize : NativeInt;
- pagination : boolean;
- paginationDetailHAlign : string;
- paginationHAlign : string;
- paginationLoop : Boolean;
- paginationNextText : String;
- paginationPagesBySide : NativeInt;
- paginationPreText : string;
- paginationSuccessivelySize : NativeInt;
- paginationUseIntermediate : Boolean;
- paginationVAlign : string;
- queryParams : TQueryParamsFunction;
- queryParamsType : String;
- rememberOrder : boolean;
- resizable : boolean;
- responseHandler : TResponseFunction;
- rowAttributes : TRowStyleHandler;
- rowStyle : TRowStyleHandler;
- search : boolean;
- searchAlign : String;
- searchOnEnterKey : Boolean;
- searchText : string;
- searchTimeOut : Boolean;
- selectItemName : String;
- showButtonIcon : Boolean;
- showButtonIcons : Boolean;
- showButtonText : Boolean;
- showColumns : Boolean;
- showColumnsToggleAll : Boolean;
- showExtendedPagination : boolean;
- showFooter : Boolean;
- showFullscreen : Boolean;
- showHeader : Boolean;
- showPaginationSwitch : Boolean;
- showRefresh : Boolean;
- showSearchButton : Boolean;
- showSearchClearButton : Boolean;
- showToggle : Boolean;
- sidePagination : String;
- silentSort : Boolean;
- singleSelect : Boolean;
- smartDisplay : Boolean;
- sortable : boolean;
- sortClass : String;
- sortName : string;
- sortOrder : String;
- sortStable : boolean;
- strictSearch : Boolean;
- theadClasses : string;
- toolbar : JSValue;
- toolbarAlign : String;
- totalField : String;
- totalNotFiltered : NativeInt;
- totalNotFilteredField : String;
- totalRows : NativeInt;
- trimOnSearch : Boolean;
- undefinedText : String;
- uniqueId : Boolean;
- url : string;
- virtualScroll : Boolean;
- virtualScrollItemHeight : Integer;
- visibleSearch : Boolean;
- end;
- { TJSBootstrapTable }
- TRefreshOptions = class external name 'Object' (TJSObject)
- silent : boolean;
- url : string;
- pageNumber : Integer;
- pageSize : integer;
- query : TJSObject;
- end;
- TJSBootstrapTable = class helper(TBootstrap) for TJQuery
- private
- Public
- Function BootstrapTable(command : string) : JSValue; varargs; overload; external name 'bootstrapTable';
- Function BootstrapTable(options : TBootstrapTableOptions) : TJQuery; overload; external name 'bootstrapTable';
- Function BootstrapTable(options : TJSObject) : TJQuery; overload; external name 'bootstrapTable';
- Function getOptionsUnTyped : TJSObject;
- Function getOptions : TBootstrapTableOptions;
- function refreshOptions (Options : TBootstrapTableOptions) : TJQuery;
- function getData (useCurrentPage : Boolean = False; includeHiddenRows : Boolean = False) : JSValue;
- Function destroy : TJQuery; overload;
- Function GetSelections : TJSArray;
- Procedure Load(data : JSValue);
- procedure Append(data: JSValue);
- procedure Prepend(data: JSValue);
- procedure RemoveAll;
- Procedure insertRow(Index : Integer; RowData : JSValue);
- procedure updateRow(Index: Integer; RowData: JSValue; Replace: Boolean=False);
- function GetRowByUniqueID(aID : NativeInt): TJSObject;
- Procedure UpdateByUniqueID(aID : NativeInt;RowData: JSValue; Replace: Boolean=False);
- Procedure RemoveByUniqueID(aID : NativeInt);
- Procedure UpdateCell(aIndex : NativeInt; aField,aValue : string; ReInit : Boolean = true);
- Procedure UpdateCellByUniqueID(aId : NativeInt; aField,aValue : string; ReInit : Boolean = true);
- Procedure ShowRow(aIndex : NativeInt);
- Procedure ShowRowByUniqueID(aId : NativeInt);
- Function GetHiddenRows(doShow : Boolean = False) : TJSArray;
- Procedure ShowColumn(aField : String);
- Procedure ShowColumn(aFields : TStringDynArray);
- Procedure HideColumn(aField : String);
- Procedure HideColumn(aFields : TStringDynArray);
- function GetHiddenColumns: TJSArray;
- function GetVisibleColumns: TJSArray;
- Procedure ShowAllColumns;
- Procedure HideAllColumns;
- Procedure mergeCells(aIndex : integer; aField : String; RowSpan : Integer; ColSpan : Integer);
- Procedure CheckAll;
- Procedure UnCheckAll;
- Procedure CheckInvert;
- Procedure Check(aIndex : Integer);
- Procedure UnCheck(aIndex : Integer);
- Procedure CheckBy(Field : String; Values : TStringDynArray);
- Procedure UnCheckBy(Field : String; Values : TStringDynArray);
- Procedure RefreshTable(options : TRefreshOptions);
- Procedure RefreshTable(options : TJSObject);
- Procedure ResetView(options : TBootstrapTableOptions);
- Procedure ResetWidth;
- Procedure ShowLoading;
- Procedure HideLoading;
- Procedure TogglePagination;
- Procedure ToggleFullScreen;
- Procedure ToggleView;
- Procedure ResetSearch;
- Procedure FilterBy(aFilter : TJSObject; aOptions : TJSObject);
- Procedure scrollToRow(aValue : Integer);
- Procedure scrollToPixel(aValue : Integer);
- Procedure scrollToBottom;
- Function GetScrollPosition : NativeInt;
- Procedure SelectPage(aIndex : Integer);
- Procedure PrevPage;
- Procedure NextPage;
- procedure ToggleDetailView(Index : Integer);
- procedure ExpandRow(Index: Integer);
- procedure CollapseRow(Index: Integer);
- procedure CollapseAllRows;
- procedure ExpandAllRows;
- procedure UpdateColumnTitle(const aField,aTitle : String);
- procedure UpdateFormatText(const aFormat,aValue : String);
- end;
- implementation
- { TJSBootstrapTable }
- function TJSBootstrapTable.getOptionsUnTyped: TJSObject;
- begin
- Result:=TJSObject(BootstrapTable('getOptions'))
- end;
- function TJSBootstrapTable.getOptions: TBootstrapTableOptions;
- begin
- Result:=TBootstrapTableOptions(getoptionsUnTyped);
- end;
- function TJSBootstrapTable.refreshOptions(Options: TBootstrapTableOptions): TJQuery;
- begin
- Result:=TJQuery(BootstrapTable('refreshOptions',Options));
- end;
- function TJSBootstrapTable.getData(useCurrentPage: Boolean; includeHiddenRows: Boolean): JSValue;
- begin
- Result:=BootstrapTable('getdata',JS.New([
- 'useCurrentPage',useCurrentPage,
- 'includeHiddenRows',includeHiddenRows
- ]));
- end;
- function TJSBootstrapTable.destroy: TJQuery;
- begin
- Result:=TJQuery(BootstrapTable('destroy'));
- end;
- function TJSBootstrapTable.GetSelections: TJSArray;
- begin
- Result:=TJSArray(BootstrapTable('getSelections'));
- end;
- procedure TJSBootstrapTable.Load(data: JSValue);
- begin
- BootstrapTable('load',data);
- end;
- procedure TJSBootstrapTable.Append(data: JSValue);
- begin
- BootstrapTable('append',data);
- end;
- procedure TJSBootstrapTable.Prepend(data: JSValue);
- begin
- BootstrapTable('prepend',data);
- end;
- procedure TJSBootstrapTable.RemoveAll;
- begin
- BootstrapTable('removeAll');
- end;
- procedure TJSBootstrapTable.insertRow(Index: Integer; RowData: JSValue);
- begin
- BootstrapTable('insertRow',JS.new([
- 'index',index,
- 'row', RowData
- ]));
- end;
- procedure TJSBootstrapTable.updateRow(Index: Integer; RowData: JSValue; Replace : Boolean = False);
- begin
- BootstrapTable('updateRow',JS.new([
- 'index',index,
- 'row', rowData,
- 'replace', replace
- ]));
- end;
- function TJSBootstrapTable.GetRowByUniqueID(aID: NativeInt): TJSObject;
- begin
- Result:=TJSObject(BootstrapTable('getRowByUniqueId',aID));
- end;
- procedure TJSBootstrapTable.UpdateByUniqueID(aID: NativeInt; RowData: JSValue; Replace: Boolean);
- begin
- BootstrapTable('updateByUniqueId',JS.new([
- 'id',aId,
- 'row', rowData,
- 'replace', replace
- ]));
- end;
- procedure TJSBootstrapTable.RemoveByUniqueID(aID: NativeInt);
- begin
- BootstrapTable('removeByUniqueId',aID);
- end;
- procedure TJSBootstrapTable.UpdateCell(aIndex: NativeInt; aField, aValue: string; ReInit : Boolean = true);
- begin
- BootstrapTable('updateCell',JS.new([
- 'index',aIndex,
- 'field', aField,
- 'value', aValue,
- 'reinit', ReInit
- ]));
- end;
- procedure TJSBootstrapTable.UpdateCellByUniqueID(aId: NativeInt; aField, aValue: string; ReInit: Boolean);
- begin
- BootstrapTable('updateCellByUniqueID',JS.new([
- 'id',aId,
- 'field', aField,
- 'value', aValue,
- 'reinit', ReInit
- ]));
- end;
- procedure TJSBootstrapTable.ShowRow(aIndex: NativeInt);
- begin
- BootstrapTable('showRow',JS.new(['id',aIndex]));
- end;
- procedure TJSBootstrapTable.ShowRowByUniqueID(aId: NativeInt);
- begin
- BootstrapTable('showRow',JS.new(['uniqueId',aId]));
- end;
- function TJSBootstrapTable.GetHiddenRows(doShow: Boolean): TJSArray;
- begin
- Result:=TJSArray(BootstrapTable('getHiddenRows',doShow));
- end;
- procedure TJSBootstrapTable.ShowColumn(aField: String);
- begin
- BootstrapTable('showColumn',aField);
- end;
- procedure TJSBootstrapTable.ShowColumn(aFields: TStringDynArray);
- begin
- BootstrapTable('showColumn',aFields);
- end;
- procedure TJSBootstrapTable.HideColumn(aField: String);
- begin
- BootstrapTable('hideColumn',aField);
- end;
- procedure TJSBootstrapTable.HideColumn(aFields: TStringDynArray);
- begin
- BootstrapTable('hideColumn',aFields);
- end;
- function TJSBootstrapTable.GetHiddenColumns: TJSArray;
- begin
- Result:=TJSArray(BootstrapTable('getHiddenColumns'));
- end;
- function TJSBootstrapTable.GetVisibleColumns: TJSArray;
- begin
- Result:=TJSArray(BootstrapTable('getVisibleColumns'));
- end;
- procedure TJSBootstrapTable.ShowAllColumns;
- begin
- BootstrapTable('showAllColumns');
- end;
- procedure TJSBootstrapTable.HideAllColumns;
- begin
- BootstrapTable('hideAllColumns');
- end;
- procedure TJSBootstrapTable.mergeCells(aIndex: integer; aField: String; RowSpan: Integer; ColSpan: Integer);
- begin
- BootstrapTable('mergeCells',JS.New([
- 'index',aIndex,
- 'field',aField,
- 'rowspan',rowspan,
- 'colspan',colspan
- ]));
- end;
- procedure TJSBootstrapTable.CheckAll;
- begin
- BootStrapTable('checkAll');
- end;
- procedure TJSBootstrapTable.UnCheckAll;
- begin
- BootStrapTable('uncheckAll');
- end;
- procedure TJSBootstrapTable.CheckInvert;
- begin
- BootStrapTable('checkInvert');
- end;
- procedure TJSBootstrapTable.Check(aIndex: Integer);
- begin
- BootStrapTable('check',aIndex);
- end;
- procedure TJSBootstrapTable.UnCheck(aIndex: Integer);
- begin
- BootStrapTable('uncheck',aIndex);
- end;
- procedure TJSBootstrapTable.CheckBy(Field: String; Values: TStringDynArray);
- begin
- BootStrapTable('checkBy',JS.New(['field',Field,'values',Values]));
- end;
- procedure TJSBootstrapTable.UnCheckBy(Field: String; Values: TStringDynArray);
- begin
- BootStrapTable('uncheckBy',JS.New(['field',Field,'values',Values]));
- end;
- procedure TJSBootstrapTable.RefreshTable(options: TRefreshOptions);
- begin
- BootStrapTable('refresh',options);
- end;
- procedure TJSBootstrapTable.RefreshTable(options: TJSObject);
- begin
- BootStrapTable('refresh',options);
- end;
- procedure TJSBootstrapTable.ResetView(options: TBootstrapTableOptions);
- begin
- BootStrapTable('resetView',options);
- end;
- procedure TJSBootstrapTable.ResetWidth;
- begin
- BootStrapTable('resetWidth');
- end;
- procedure TJSBootstrapTable.ShowLoading;
- begin
- BootStrapTable('showLoading');
- end;
- procedure TJSBootstrapTable.HideLoading;
- begin
- BootStrapTable('hideLoading');
- end;
- procedure TJSBootstrapTable.TogglePagination;
- begin
- BootStrapTable('togglePagination');
- end;
- procedure TJSBootstrapTable.ToggleFullScreen;
- begin
- BootStrapTable('toggleFullScreen');
- end;
- procedure TJSBootstrapTable.ToggleView;
- begin
- BootStrapTable('toggleView');
- end;
- procedure TJSBootstrapTable.ResetSearch;
- begin
- BootStrapTable('resetSearch');
- end;
- procedure TJSBootstrapTable.FilterBy(aFilter: TJSObject; aOptions: TJSObject);
- begin
- BootStrapTable('filterBy',JS.New(['filter',aFilter,'options',aOptions]));
- end;
- procedure TJSBootstrapTable.scrollToRow(aValue: Integer);
- begin
- BootStrapTable('scrollTo',JS.New(['unit','rows','value',aValue]));
- end;
- procedure TJSBootstrapTable.scrollToPixel(aValue: Integer);
- begin
- BootStrapTable('scrollTo',JS.New(['unit','px','value',aValue]));
- end;
- procedure TJSBootstrapTable.scrollToBottom;
- begin
- BootStrapTable('scrollTo','bottom');
- end;
- function TJSBootstrapTable.GetScrollPosition: NativeInt;
- begin
- Result:=NativeInt(BootStrapTable('getScrollPosition'));
- end;
- procedure TJSBootstrapTable.SelectPage(aIndex: Integer);
- begin
- BootStrapTable('selectPage',aIndex);
- end;
- procedure TJSBootstrapTable.PrevPage;
- begin
- BootStrapTable('prevPage');
- end;
- procedure TJSBootstrapTable.NextPage;
- begin
- BootStrapTable('nextPage');
- end;
- procedure TJSBootstrapTable.ToggleDetailView(Index: Integer);
- begin
- BootStrapTable('toggleDetailView',Index);
- end;
- procedure TJSBootstrapTable.ExpandRow(Index: Integer);
- begin
- BootStrapTable('expandRow',Index);
- end;
- procedure TJSBootstrapTable.CollapseRow(Index: Integer);
- begin
- BootStrapTable('collapseRow',Index);
- end;
- procedure TJSBootstrapTable.CollapseAllRows;
- begin
- BootStrapTable('collapseAllRows');
- end;
- procedure TJSBootstrapTable.ExpandAllRows;
- begin
- BootStrapTable('expandAllRows');
- end;
- procedure TJSBootstrapTable.UpdateColumnTitle(const aField, aTitle: String);
- begin
- BootStrapTable('updateColumnTitle',JS.New(['field',aField,'title',aTitle]));
- end;
- procedure TJSBootstrapTable.UpdateFormatText(const aFormat, aValue: String);
- begin
- BootStrapTable('updateFormatText',aFormat,aValue);
- end;
- end.
|