jsxgrid 2.3.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/fields/jsgrid.field.XDateTimeField.min.js +1 -1
- package/dist/fields/jsgrid.field.XRowSelectField.min.js +1 -1
- package/dist/fields/jsgrid.field.Xcheckbox.min.js +1 -1
- package/dist/fields/jsgrid.field.Xcontrol.min.js +1 -1
- package/dist/fields/jsgrid.field.XimgField.min.js +1 -1
- package/dist/fields/jsgrid.field.Xjsoneditor.min.js +1 -1
- package/dist/fields/jsgrid.field.Xnumber.min.js +1 -1
- package/dist/fields/jsgrid.field.Xselect.min.js +1 -1
- package/dist/fields/jsgrid.field.Xtext.min.js +1 -1
- package/dist/fields/jsgrid.field.Xtextarea.min.js +1 -1
- package/dist/fields/lib/jsGridSummaryPlugin.min.js +1 -1
- package/dist/fields/lib/jsgrid.popup.basic.min.js +1 -1
- package/dist/jsxgrid-fields.js +1 -1
- package/dist/jsxgrid-fields.min.js +1 -1
- package/dist/jsxgrid-theme.css +1 -1
- package/dist/jsxgrid-xfields.js +1 -1
- package/dist/jsxgrid-xfields.min.js +1 -1
- package/dist/jsxgrid.css +1 -1
- package/dist/jsxgrid.js +18 -14
- package/dist/jsxgrid.min.js +2 -2
- package/package.json +1 -1
- package/src/jsgrid.core.js +16 -12
package/README.md
CHANGED
|
@@ -373,6 +373,14 @@ An integer value specifying the amount of items on the page. Applied only when `
|
|
|
373
373
|
### pageButtonCount (default `15`)
|
|
374
374
|
An integer value specifying the maximum amount of page buttons to be displayed in the pager.
|
|
375
375
|
|
|
376
|
+
**jsxgrid extension, not in upstream jsGrid**: the visible window of page buttons is centered on
|
|
377
|
+
the current page (e.g. with `pageButtonCount: 5` on page 8, the pager shows `6 7 8 9 10`) and
|
|
378
|
+
re-centers on every page change, clamped to the actual page range at either end. Upstream jsGrid
|
|
379
|
+
only shifts the window once the current page falls outside it, so the last button in the window was
|
|
380
|
+
never clickable through to the next page without clicking the `...` nav link first - this fixes
|
|
381
|
+
that. The `...` nav links (`showPrevPages`/`showNextPages`) still work as before, jumping the
|
|
382
|
+
visible window by a full `pageButtonCount` without changing the current page.
|
|
383
|
+
|
|
376
384
|
### pagerFormat
|
|
377
385
|
A string specifying pager format.
|
|
378
386
|
The default value is `"Pages: {first} {prev} {pages} {next} {last} {pageIndex} of {pageCount}"`
|
package/dist/jsxgrid-fields.js
CHANGED
package/dist/jsxgrid-theme.css
CHANGED
package/dist/jsxgrid-xfields.js
CHANGED
package/dist/jsxgrid.css
CHANGED
package/dist/jsxgrid.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* jsxgrid v2.3.
|
|
2
|
+
* jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
|
|
3
3
|
* (c) 2026 Mikhail Kremza
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
@@ -597,7 +597,6 @@
|
|
|
597
597
|
},
|
|
598
598
|
|
|
599
599
|
_resetPager: function() {
|
|
600
|
-
this._firstDisplayingPage = 1;
|
|
601
600
|
this._setPage(1);
|
|
602
601
|
},
|
|
603
602
|
|
|
@@ -1065,24 +1064,29 @@
|
|
|
1065
1064
|
},
|
|
1066
1065
|
|
|
1067
1066
|
_setPage: function(pageIndex) {
|
|
1068
|
-
var firstDisplayingPage = this._firstDisplayingPage,
|
|
1069
|
-
pageButtonCount = this.pageButtonCount;
|
|
1070
|
-
|
|
1071
1067
|
this.pageIndex = pageIndex;
|
|
1072
|
-
|
|
1073
|
-
if(pageIndex < firstDisplayingPage) {
|
|
1074
|
-
this._firstDisplayingPage = pageIndex;
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
if(pageIndex > firstDisplayingPage + pageButtonCount - 1) {
|
|
1078
|
-
this._firstDisplayingPage = pageIndex - pageButtonCount + 1;
|
|
1079
|
-
}
|
|
1068
|
+
this._firstDisplayingPage = this._centeredFirstDisplayingPage(pageIndex);
|
|
1080
1069
|
|
|
1081
1070
|
this._callEventHandler(this.onPageChanged, {
|
|
1082
1071
|
pageIndex: pageIndex
|
|
1083
1072
|
});
|
|
1084
1073
|
},
|
|
1085
1074
|
|
|
1075
|
+
// Keeps the visible page-number window centered on pageIndex (e.g.
|
|
1076
|
+
// pageButtonCount=5 shows pageIndex-2 .. pageIndex+2), clamped to the
|
|
1077
|
+
// actual page range, instead of only shifting once pageIndex falls
|
|
1078
|
+
// outside the previous window - so the next/prev page is always just
|
|
1079
|
+
// one click away, without ever needing the "..." nav button first.
|
|
1080
|
+
_centeredFirstDisplayingPage: function(pageIndex) {
|
|
1081
|
+
var pageButtonCount = this.pageButtonCount,
|
|
1082
|
+
pageCount = this._pagesCount(),
|
|
1083
|
+
halfWindow = Math.floor((pageButtonCount - 1) / 2),
|
|
1084
|
+
first = pageIndex - halfWindow,
|
|
1085
|
+
lastPossibleFirst = Math.max(1, pageCount - pageButtonCount + 1);
|
|
1086
|
+
|
|
1087
|
+
return Math.min(Math.max(1, first), lastPossibleFirst);
|
|
1088
|
+
},
|
|
1089
|
+
|
|
1086
1090
|
_controllerCall: function(method, param, isCanceled, doneCallback) {
|
|
1087
1091
|
if(isCanceled)
|
|
1088
1092
|
return $.Deferred().reject().promise();
|
|
@@ -1704,7 +1708,7 @@
|
|
|
1704
1708
|
setDefaults: setDefaults,
|
|
1705
1709
|
locales: locales,
|
|
1706
1710
|
locale: locale,
|
|
1707
|
-
version: '2.3.
|
|
1711
|
+
version: '2.3.1'
|
|
1708
1712
|
};
|
|
1709
1713
|
|
|
1710
1714
|
}(window, jQuery));
|
package/dist/jsxgrid.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* jsxgrid v2.3.
|
|
2
|
+
* jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
|
|
3
3
|
* (c) 2026 Mikhail Kremza
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
6
|
-
((a,c,u)=>{function r(t,e){return c.isFunction(t)?t.apply(e,c.makeArray(arguments).slice(2)):t}var n,s="JSGrid",o="JSGridItem",i="JSGridEditRow",d=[],l=0,h="asc",t={loadData:c.noop,insertItem:c.noop,updateItem:c.noop,deleteItem:c.noop};function g(t,e){t=c(t);0==d.length?(this._id=l,l++):this._id=d.pop(),t.data(s,this),this._container=t,this.data=[],this.fields=[],this._editingRow=null,this._sortField=null,this._sortOrder=h,this._firstDisplayingPage=1,this._init(e),this.render()}g.prototype={width:"auto",height:"auto",updateOnResize:!0,locale:null,rowClass:c.noop,rowRenderer:null,rowClick:function(t){this.editing&&this.editItem(c(t.event.target).closest("tr"))},rowDoubleClick:c.noop,noDataContent:"Not found",noDataRowClass:"jsgrid-nodata-row",heading:!0,headerRowRenderer:null,headerRowClass:"jsgrid-header-row",headerCellClass:"jsgrid-header-cell",filtering:!1,filterRowRenderer:null,filterRowClass:"jsgrid-filter-row",inserting:!1,insertRowLocation:"bottom",insertRowRenderer:null,insertRowClass:"jsgrid-insert-row",editing:!1,editRowRenderer:null,editRowClass:"jsgrid-edit-row",confirmDeleting:!0,deleteConfirm:"Are you sure?",selecting:!0,selectedRowClass:"jsgrid-selected-row",oddRowClass:"jsgrid-row",evenRowClass:"jsgrid-alt-row",cellClass:"jsgrid-cell",sorting:!1,sortableClass:"jsgrid-header-sortable",sortAscClass:"jsgrid-header-sort jsgrid-header-sort-asc",sortDescClass:"jsgrid-header-sort jsgrid-header-sort-desc",paging:!1,pagerContainer:null,pageIndex:1,pageSize:20,pageButtonCount:15,pagerFormat:"Pages: {first} {prev} {pages} {next} {last} {pageIndex} of {pageCount}",pagePrevText:"Prev",pageNextText:"Next",pageFirstText:"First",pageLastText:"Last",pageNavigatorNextText:"...",pageNavigatorPrevText:"...",pagerContainerClass:"jsgrid-pager-container",pagerClass:"jsgrid-pager",pagerNavButtonClass:"jsgrid-pager-nav-button",pagerNavButtonInactiveClass:"jsgrid-pager-nav-inactive-button",pageClass:"jsgrid-pager-page",currentPageClass:"jsgrid-pager-current-page",customLoading:!1,pageLoading:!1,autoload:!1,controller:t,loadIndication:!0,loadIndicationDelay:500,loadMessage:"Please, wait...",loadShading:!0,invalidMessage:"Invalid data entered!",invalidNotify:function(t){t=c.map(t.errors,function(t){return t.message||null});a.alert([this.invalidMessage].concat(t).join("\n"))},onInit:c.noop,onRefreshing:c.noop,onRefreshed:c.noop,onPageChanged:c.noop,onItemDeleting:c.noop,onItemDeleted:c.noop,onItemInserting:c.noop,onItemInserted:c.noop,onItemEditing:c.noop,onItemEditCancelling:c.noop,onItemUpdating:c.noop,onItemUpdated:c.noop,onItemInvalid:c.noop,onDataLoading:c.noop,onDataLoaded:c.noop,onDataExporting:c.noop,onOptionChanging:c.noop,onOptionChanged:c.noop,onError:c.noop,invalidClass:"jsgrid-invalid",containerClass:"jsgrid",tableClass:"jsgrid-table",gridHeaderClass:"jsgrid-grid-header",gridBodyClass:"jsgrid-grid-body",_init:function(t){this._initInstanceLocale(t&&t.locale),c.extend(this,t),this._initLoadStrategy(),this._initController(),this._initFields(),this._attachWindowLoadResize(),this._attachWindowResizeCallback(),this._callEventHandler(this.onInit)},_initInstanceLocale:function(t){t&&(t=c.isPlainObject(t)?t:jsGrid.locales[t])&&(t.grid&&c.extend(this,t.grid),this._fieldsLocaleConfig=t.fields,this._validatorsLocaleConfig=t.validators)},loadStrategy:function(){return new(this.pageLoading?jsGrid.loadStrategies.PageLoadingStrategy:jsGrid.loadStrategies.DirectLoadingStrategy)(this)},_initLoadStrategy:function(){this._loadStrategy=r(this.loadStrategy,this)},_initController:function(){this._controller=c.extend({},t,r(this.controller,this))},renderTemplate:function(t,e,i){var n,a=[];for(n in i)a.push(i[n]);return a.unshift(t,e),(t=r.apply(null,a))===u||null===t?"":t},loadIndicator:function(t){return new jsGrid.LoadIndicator(t)},validation:function(t){return jsGrid.Validation&&new jsGrid.Validation(t)},_initFields:function(){var i=this,n=i._fieldsLocaleConfig;i.fields=c.map(i.fields,function(t){var e;return c.isPlainObject(t)&&(t.type&&!jsGrid.fields[t.type]&&a.console&&console.warn('[jsxgrid] unknown field type "'+t.type+'" - falling back to the base field (no filtering/inserting/editing UI). Check that its script is loaded, and after jsxgrid.js.'),t=new(t.type&&jsGrid.fields[t.type]||jsGrid.Field)(t=(e=n&&t.type&&n[t.type])?c.extend({},e,t):t)),t._grid=i,t})},_attachWindowLoadResize:function(){c(a).on("load.table-"+this._id,c.proxy(this._refreshSize,this))},_attachWindowResizeCallback:function(){this.updateOnResize&&c(a).on("resize.table-"+this._id,c.proxy(this._refreshSize,this))},_detachWindowLoadResize:function(){c(a).off("load.table-"+this._id)},_detachWindowResizeCallback:function(){c(a).off("resize.table-"+this._id)},option:function(t,e){if(1===arguments.length)return this[t];t={option:t,oldValue:this[t],newValue:e},this._callEventHandler(this.onOptionChanging,t),this._handleOptionChange(t.option,t.newValue),this._callEventHandler(this.onOptionChanged,{option:t.option,value:t.newValue})},fieldOption:function(t,e,i){if(t=this._normalizeField(t),2===arguments.length)return t[e];t[e]=i,this._renderGrid()},_handleOptionChange:function(t,e){switch(this[t]=e,t){case"width":case"height":this._refreshSize();break;case"rowClass":case"rowRenderer":case"rowClick":case"rowDoubleClick":case"noDataRowClass":case"noDataContent":case"selecting":case"selectedRowClass":case"oddRowClass":case"evenRowClass":this._refreshContent();break;case"pageButtonCount":case"pagerFormat":case"pagePrevText":case"pageNextText":case"pageFirstText":case"pageLastText":case"pageNavigatorNextText":case"pageNavigatorPrevText":case"pagerClass":case"pagerNavButtonClass":case"pageClass":case"currentPageClass":case"pagerRenderer":this._refreshPager();break;case"fields":this._initFields(),this.render();break;case"data":case"editing":case"heading":case"filtering":case"inserting":case"paging":this.refresh();break;case"loadStrategy":case"pageLoading":this._initLoadStrategy(),this.search();break;case"pageIndex":this.openPage(e);break;case"pageSize":this.refresh(),this.search();break;case"editRowRenderer":case"editRowClass":this.cancelEdit();break;case"updateOnResize":this._detachWindowResizeCallback(),this._attachWindowResizeCallback();break;case"invalidNotify":case"invalidMessage":break;default:this.render()}},destroy:function(){this._detachWindowResizeCallback(),this._detachWindowLoadResize(),d.push(this._id),this._clear(),this._container.removeData(s)},render:function(){return this._renderGrid(),this.autoload?this.loadData():c.Deferred().resolve().promise()},_renderGrid:function(){this._clear(),this._container.addClass(this.containerClass).css("position","relative").append(this._createHeader()).append(this._createBody()),this._pagerContainer=this._createPagerContainer(),this._loadIndicator=this._createLoadIndicator(),this._validation=this._createValidation(),this.refresh()},_createLoadIndicator:function(){return r(this.loadIndicator,this,{message:this.loadMessage,shading:this.loadShading,container:this._container})},_createValidation:function(){return r(this.validation,this,{validatorsLocale:this._validatorsLocaleConfig})},_clear:function(){this.cancelEdit(),clearTimeout(this._loadingTimer),this._pagerContainer&&this._pagerContainer.empty(),this._container.empty().css({position:"",width:"",height:""})},_createHeader:function(){var t=this._headerRow=this._createHeaderRow(),e=this._filterRow=this._createFilterRow(),i=this._insertRow=this._createInsertRow(),t=this._headerGrid=c("<table>").addClass(this.tableClass).append(t).append(e).append(i);return this._header=c("<div>").addClass(this.gridHeaderClass).addClass(this._scrollBarWidth()?"jsgrid-header-scrollbar":"").append(t)},_createBody:function(){var t=this._content=c("<tbody>"),t=this._bodyGrid=c("<table>").addClass(this.tableClass).append(t);return this._body=c("<div>").addClass(this.gridBodyClass).append(t).on("scroll",c.proxy(function(t){this._header.scrollLeft(t.target.scrollLeft)},this))},_createPagerContainer:function(){var t=this.pagerContainer||c("<div>").appendTo(this._container);return c(t).addClass(this.pagerContainerClass)},_eachField:function(i){var n=this;c.each(this.fields,function(t,e){e.visible&&i.call(n,e,t)})},_createHeaderRow:function(){var n;return c.isFunction(this.headerRowRenderer)?c(this.renderTemplate(this.headerRowRenderer,this)):(n=c("<tr>").addClass(this.headerRowClass),this._eachField(function(t,e){var i=this._prepareCell("<th>",t,"headercss",this.headerCellClass).append(this.renderTemplate(t.headerTemplate,t)).appendTo(n);this.sorting&&t.sorting&&i.addClass(this.sortableClass).on("click",c.proxy(function(){this.sort(e)},this))}),n)},_prepareCell:function(t,e,i,n){return c(t).css("width",e.width).addClass(n||this.cellClass).addClass(i&&e[i]||e.css).addClass(e.align?"jsgrid-align-"+e.align:"")},_createFilterRow:function(){var e;return c.isFunction(this.filterRowRenderer)?c(this.renderTemplate(this.filterRowRenderer,this)):(e=c("<tr>").addClass(this.filterRowClass),this._eachField(function(t){this._prepareCell("<td>",t,"filtercss").append(this.renderTemplate(t.filterTemplate,t)).appendTo(e)}),e)},_createInsertRow:function(){var e;return c.isFunction(this.insertRowRenderer)?c(this.renderTemplate(this.insertRowRenderer,this)):(e=c("<tr>").addClass(this.insertRowClass),this._eachField(function(t){this._prepareCell("<td>",t,"insertcss").append(this.renderTemplate(t.insertTemplate,t)).appendTo(e)}),e)},_callEventHandler:function(t,e){return t.call(this,c.extend(e,{grid:this})),e},reset:function(){return this._resetSorting(),this._resetPager(),this._loadStrategy.reset()},_resetPager:function(){this._firstDisplayingPage=1,this._setPage(1)},_resetSorting:function(){this._sortField=null,this._sortOrder=h,this._clearSortingCss()},refresh:function(){this._callEventHandler(this.onRefreshing),this.cancelEdit(),this._refreshHeading(),this._refreshFiltering(),this._refreshInserting(),this._refreshContent(),this._refreshPager(),this._refreshSize(),this._callEventHandler(this.onRefreshed)},_refreshHeading:function(){this._headerRow.toggle(this.heading)},_refreshFiltering:function(){this._filterRow.toggle(this.filtering)},_refreshInserting:function(){this._insertRow.toggle(this.inserting)},_refreshContent:function(){var t=this._content;if(t.empty(),!this.data.length)return t.append(this._createNoDataRow()),this;for(var e=this._loadStrategy.firstDisplayIndex(),i=this._loadStrategy.lastDisplayIndex(),n=e;n<i;n++){var a=this.data[n];t.append(this._createRow(a,n))}},_createNoDataRow:function(){var t=0;return this._eachField(function(){t++}),c("<tr>").addClass(this.noDataRowClass).append(c("<td>").addClass(this.cellClass).attr("colspan",t).append(this.renderTemplate(this.noDataContent,this)))},_createRow:function(e,i){var t;return c.isFunction(this.rowRenderer)?t=this.renderTemplate(this.rowRenderer,this,{item:e,itemIndex:i}):(t=c("<tr>"),this._renderCells(t,e)),t.addClass(this._getRowClasses(e,i)).data(o,e).on("click",c.proxy(function(t){this.rowClick({item:e,itemIndex:i,event:t})},this)).on("dblclick",c.proxy(function(t){this.rowDoubleClick({item:e,itemIndex:i,event:t})},this)),this.selecting&&this._attachRowHover(t),t},_getRowClasses:function(t,e){var i=[];return i.push((e+1)%2?this.oddRowClass:this.evenRowClass),i.push(r(this.rowClass,this,t,e)),i.join(" ")},_attachRowHover:function(t){var e=this.selectedRowClass;t.hover(function(){c(this).addClass(e)},function(){c(this).removeClass(e)})},_renderCells:function(e,i){return this._eachField(function(t){e.append(this._createCell(i,t))}),this},_createCell:function(t,e){var i=this._getItemFieldValue(t,e),t={value:i,item:t},i=c.isFunction(e.cellRenderer)?this.renderTemplate(e.cellRenderer,e,t):c("<td>").append(this.renderTemplate(e.itemTemplate||i,e,t));return this._prepareCell(i,e)},_getItemFieldValue:function(t,e){for(var i=e.name.split("."),n=t[i.shift()];n&&i.length;)n=n[i.shift()];return n},_setItemFieldValue:function(t,e,i){for(var n=e.name.split("."),a=t,r=n[0];a&&n.length;)a=(t=a)[r=n.shift()];if(!a)for(;n.length;)t=t[r]={},r=n.shift();t[r]=i},sort:function(t,e){return c.isPlainObject(t)&&(e=t.order,t=t.field),this._clearSortingCss(),this._setSortingParams(t,e),this._setSortingCss(),this._loadStrategy.sort()},_clearSortingCss:function(){this._headerRow.find("th").removeClass(this.sortAscClass).removeClass(this.sortDescClass)},_setSortingParams:function(t,e){t=this._normalizeField(t),e=e||(this._sortField===t?this._reversedSortOrder(this._sortOrder):h),this._sortField=t,this._sortOrder=e},_normalizeField:function(e){return c.isNumeric(e)?this.fields[e]:"string"==typeof e?c.grep(this.fields,function(t){return t.name===e})[0]:e},_reversedSortOrder:function(t){return t===h?"desc":h},_setSortingCss:function(){var t=this._visibleFieldIndex(this._sortField);this._headerRow.find("th").eq(t).addClass(this._sortOrder===h?this.sortAscClass:this.sortDescClass)},_visibleFieldIndex:function(t){return c.inArray(t,c.grep(this.fields,function(t){return t.visible}))},_sortData:function(){var i,n=this._sortFactor(),a=this._sortField;a&&(i=this).data.sort(function(t,e){t=i._getItemFieldValue(t,a),e=i._getItemFieldValue(e,a);return n*a.sortingFunc(t,e)})},_sortFactor:function(){return this._sortOrder===h?1:-1},_itemsCount:function(){return this._loadStrategy.itemsCount()},_pagesCount:function(){var t=this._itemsCount(),e=this.pageSize;return Math.floor(t/e)+(t%e?1:0)},_refreshPager:function(){var t=this._pagerContainer,e=(t.empty(),this.paging&&t.append(this._createPager()),this.paging&&1<this._pagesCount());t.toggle(e)},_createPager:function(){var t=c.isFunction(this.pagerRenderer)?c(this.pagerRenderer({pageIndex:this.pageIndex,pageCount:this._pagesCount()})):c("<div>").append(this._createPagerByFormat());return t.addClass(this.pagerClass),t},_createPagerByFormat:function(){var i=this.pageIndex,n=this._pagesCount(),a=this._itemsCount(),t=this.pagerFormat.split(" ");return c.map(t,c.proxy(function(t){var e=t;return"{pages}"===t?e=this._createPages():"{first}"===t?e=this._createPagerNavButton(this.pageFirstText,1,1<i):"{prev}"===t?e=this._createPagerNavButton(this.pagePrevText,i-1,1<i):"{next}"===t?e=this._createPagerNavButton(this.pageNextText,i+1,i<n):"{last}"===t?e=this._createPagerNavButton(this.pageLastText,n,i<n):"{pageIndex}"===t?e=i:"{pageCount}"===t?e=n:"{itemCount}"===t&&(e=a),c.isArray(e)?e.concat([" "]):[e," "]},this))},_createPages:function(){var t=this._pagesCount(),e=this.pageButtonCount,i=this._firstDisplayingPage,n=[];1<i&&n.push(this._createPagerPageNavButton(this.pageNavigatorPrevText,this.showPrevPages));for(var a=0,r=i;a<e&&r<=t;a++,r++)n.push(r===this.pageIndex?this._createPagerCurrentPage():this._createPagerPage(r));return i+e-1<t&&n.push(this._createPagerPageNavButton(this.pageNavigatorNextText,this.showNextPages)),n},_createPagerNavButton:function(t,e,i){return this._createPagerButton(t,this.pagerNavButtonClass+(i?"":" "+this.pagerNavButtonInactiveClass),i?function(){this.openPage(e)}:c.noop)},_createPagerPageNavButton:function(t,e){return this._createPagerButton(t,this.pagerNavButtonClass,e)},_createPagerPage:function(t){return this._createPagerButton(t,this.pageClass,function(){this.openPage(t)})},_createPagerButton:function(t,e,i){t=c("<a>").attr("href","javascript:void(0);").html(t).on("click",c.proxy(i,this));return c("<span>").addClass(e).append(t)},_createPagerCurrentPage:function(){return c("<span>").addClass(this.pageClass).addClass(this.currentPageClass).text(this.pageIndex)},_refreshSize:function(){this._refreshHeight(),this._refreshWidth()},_refreshWidth:function(){var t="auto"===this.width?this._getAutoWidth():this.width;this._container.width(t)},_getAutoWidth:function(){var t=this._headerGrid,e=this._header,i=(t.width("auto"),t.outerWidth()),e=e.outerWidth()-e.innerWidth();return t.width(""),i+e},_scrollBarWidth:function(){var t,e,i;return n===u&&((i=(t=c("<div></div>")).get(0)).style.width="50px",i.style.height="50px",i.style.position="absolute",i.style.top="-10000px",i.style.left="-10000px",(i=c("<div></div>")).get(0).style.height="100px",t.append(i).appendTo("body"),e=i.innerWidth(),t.get(0).style.overflowY="auto",i=i.innerWidth(),t.remove(),n=e-i),n},_refreshHeight:function(){var t,e=this._container,i=this._pagerContainer,n=this.height;e.height(n),"auto"!==n&&(n=e.height(),t=this._header.outerHeight(!0),i.parents(e).length&&(t+=i.outerHeight(!0)),this._body.outerHeight(n-t))},showPrevPages:function(){var t=this._firstDisplayingPage,e=this.pageButtonCount;this._firstDisplayingPage=e<t?t-e:1,this._refreshPager()},showNextPages:function(){var t=this._firstDisplayingPage,e=this.pageButtonCount,i=this._pagesCount();this._firstDisplayingPage=i<t+2*e?i-e+1:t+e,this._refreshPager()},openPage:function(t){t<1||t>this._pagesCount()||(this._setPage(t),this._loadStrategy.openPage(t))},_setPage:function(t){var e=this._firstDisplayingPage,i=this.pageButtonCount;(this.pageIndex=t)<e&&(this._firstDisplayingPage=t),e+i-1<t&&(this._firstDisplayingPage=t-i+1),this._callEventHandler(this.onPageChanged,{pageIndex:t})},_controllerCall:function(t,e,i,n){if(i)return c.Deferred().reject().promise();this._showLoading();var a,i=this._controller;if(i&&i[t])return i=i[t](e),a=c.Deferred(),i&&i.then?i.then(function(){a.resolve.apply(a,arguments)},function(){a.reject.apply(a,arguments)}):a.resolve(i),a.promise().done(c.proxy(n,this)).fail(c.proxy(this._errorHandler,this)).always(c.proxy(this._hideLoading,this));throw Error("controller has no method '"+t+"'")},_errorHandler:function(){this._callEventHandler(this.onError,{args:c.makeArray(arguments)})},_showLoading:function(){this.loadIndication&&(clearTimeout(this._loadingTimer),this._loadingTimer=setTimeout(c.proxy(function(){this._loadIndicator.show()},this),this.loadIndicationDelay))},_hideLoading:function(){this.loadIndication&&(clearTimeout(this._loadingTimer),this._loadIndicator.hide())},search:function(t){return this._resetSorting(),this._resetPager(),this.loadData(t)},loadData:function(t){t=t||(this.filtering?this.getFilter():{}),c.extend(t,this._loadStrategy.loadParams(),this._sortingParams());var e=this._callEventHandler(this.onDataLoading,{filter:t});return this._controllerCall("loadData",t,e.cancel,function(t){t&&(this._loadStrategy.finishLoad(t),this._callEventHandler(this.onDataLoaded,{data:t}))})},exportData:function(t){var t=t||{},e=t.type||"csv",i="";return this._callEventHandler(this.onDataExporting),i="csv"===e?this._dataToCsv(t):i},_dataToCsv:function(t){var e=!(t=t||{}).hasOwnProperty("includeHeaders")||t.includeHeaders,i=t.subset||"all",n=t.filter||u,a=[];if(e){for(var r=this.fields.length,s={},o=0;o<r;o++){var d=this.fields[o];"includeInDataExport"in d&&!0===d.includeInDataExport&&(s[o]=d.title||d.name)}e=this._itemToCsv(s,{},t);a.push(e)}for(var e=0,l=this.data.length,o=e="visible"===i?(l=this._firstDisplayingPage*this.pageSize)-this.pageSize:e;o<l;o++){var h=this.data[o],c=!0;(c=!n||n(h)?c:!1)&&(c=this._itemToCsv(h,this.fields,t),a.push(c))}return a.join("")},_itemToCsv:function(r,s,t){var e=(t=t||{}).delimiter||"|",o=!t.hasOwnProperty("encapsulate")||t.encapsulate,i=t.newline||"\r\n",d=t.transforms||{},s=s||{},l=this._getItemFieldValue,h=[];return Object.keys(r).forEach(function(t,e){var i="";if(0<s.length){var n,a=s[e];if("includeInDataExport"in a){if(!a.includeInDataExport)return;i="select"===a.type?(n=l(r,a),(c.grep(a.items,function(t,e){return t[a.valueField]===n})[0]||"")[a.textField]):l(r,a)}else i=l(r,a);d.hasOwnProperty(a.name)&&(i=d[a.name](i))}else i=r[t];h.push(i=o?'"'+i+'"':i)}),h.join(e)+i},getFilter:function(){var e={};return this._eachField(function(t){t.filtering&&this._setItemFieldValue(e,t,t.filterValue())}),e},_sortingParams:function(){return this.sorting&&this._sortField?{sortField:this._sortField.name,sortOrder:this._sortOrder}:{}},getSorting:function(){var t=this._sortingParams();return{field:t.sortField,order:t.sortOrder}},clearFilter:function(){var t=this._createFilterRow();return this._filterRow.replaceWith(t),this._filterRow=t,this.search()},insertItem:function(t){var e=t||this._getValidatedInsertItem();return e?(t=this._callEventHandler(this.onItemInserting,{item:e}),this._controllerCall("insertItem",e,t.cancel,function(t){this._loadStrategy.finishInsert(t=t||e,this.insertRowLocation),this._callEventHandler(this.onItemInserted,{item:t})})):c.Deferred().reject().promise()},_getValidatedInsertItem:function(){var t=this._getInsertItem();return this._validateItem(t,this._insertRow)?t:null},_getInsertItem:function(){var e={};return this._eachField(function(t){t.inserting&&this._setItemFieldValue(e,t,t.insertValue())}),e},_validateItem:function(i,n){var t,a=[],r={item:i,itemIndex:this._rowIndex(n),row:n};return this._eachField(function(e){var t;!e.validate||n===this._insertRow&&!e.inserting||n===this._getEditRow()&&!e.editing||(t=this._getItemFieldValue(i,e),t=this._validation.validate(c.extend({value:t,rules:e.validate},r)),this._setCellValidity(n.children().eq(this._visibleFieldIndex(e)),t),t.length&&a.push.apply(a,c.map(t,function(t){return{field:e,message:t}})))}),!a.length||(t=c.extend({errors:a},r),this._callEventHandler(this.onItemInvalid,t),this.invalidNotify(t),!1)},_setCellValidity:function(t,e){t.toggleClass(this.invalidClass,!!e.length).attr("title",e.join("\n"))},clearInsert:function(){var t=this._createInsertRow();this._insertRow.replaceWith(t),this._insertRow=t,this.refresh()},editItem:function(t){t=this.rowByItem(t);t.length&&this._editRow(t)},rowByItem:function(t){return t.jquery||t.nodeType?c(t):this._content.find("tr").filter(function(){return c.data(this,o)===t})},_editRow:function(t){var e;this.editing&&(e=t.data(o),this._callEventHandler(this.onItemEditing,{row:t,item:e,itemIndex:this._itemIndex(e)}).cancel||(this._editingRow&&this.cancelEdit(),e=this._createEditRow(e),(this._editingRow=t).hide(),e.insertBefore(t),t.data(i,e)))},_createEditRow:function(i){var n;return c.isFunction(this.editRowRenderer)?c(this.renderTemplate(this.editRowRenderer,this,{item:i,itemIndex:this._itemIndex(i)})):(n=c("<tr>").addClass(this.editRowClass),this._eachField(function(t){var e=this._getItemFieldValue(i,t);this._prepareCell("<td>",t,"editcss").append(this.renderTemplate(t.editTemplate||"",t,{value:e,item:i})).appendTo(n)}),n)},updateItem:function(t,e){1===arguments.length&&(e=t);t=t?this.rowByItem(t):this._editingRow;if(e=e||this._getValidatedEditedItem())return this._updateRow(t,e)},_getValidatedEditedItem:function(){var t=this._getEditedItem();return this._validateItem(t,this._getEditRow())?t:null},_updateRow:function(i,t){var n=i.data(o),a=this._itemIndex(n),r=c.extend(!0,{},n,t),t=this._callEventHandler(this.onItemUpdating,{row:i,item:r,itemIndex:a,previousItem:n});return this._controllerCall("updateItem",r,t.cancel,function(t){var e=c.extend(!0,{},n),t=(r=t||c.extend(!0,n,r),this._finishUpdate(i,r,a));this._callEventHandler(this.onItemUpdated,{row:t,item:r,itemIndex:a,previousItem:e})})},_rowIndex:function(t){return this._content.children().index(c(t))},_itemIndex:function(t){return c.inArray(t,this.data)},_finishUpdate:function(t,e,i){this.cancelEdit(),this.data[i]=e;e=this._createRow(e,i);return t.replaceWith(e),e},_getEditedItem:function(){var e={};return this._eachField(function(t){t.editing&&this._setItemFieldValue(e,t,t.editValue())}),e},cancelEdit:function(){var t,e,i;this._editingRow&&(e=(t=this._editingRow).data(o),i=this._itemIndex(e),this._callEventHandler(this.onItemEditCancelling,{row:t,item:e,itemIndex:i}),this._getEditRow().remove(),this._editingRow.show(),this._editingRow=null)},_getEditRow:function(){return this._editingRow&&this._editingRow.data(i)},deleteItem:function(t){t=this.rowByItem(t);if(t.length&&(!this.confirmDeleting||a.confirm(r(this.deleteConfirm,this,t.data(o)))))return this._deleteRow(t)},_deleteRow:function(t){var e=t.data(o),i=this._itemIndex(e),n=this._callEventHandler(this.onItemDeleting,{row:t,item:e,itemIndex:i});return this._controllerCall("deleteItem",e,n.cancel,function(){this._loadStrategy.finishDelete(e,i),this._callEventHandler(this.onItemDeleted,{row:t,item:e,itemIndex:i})})}},c.fn.jsGrid=function(n){var a=c.makeArray(arguments).slice(1),r=this;return this.each(function(){var t,e=c(this),i=e.data(s);if(i)if("string"==typeof n){if((t=i[n].apply(i,a))!==u&&t!==i)return r=t,!1}else i._detachWindowResizeCallback(),i._init(n),i.render();else new g(e,n)}),r};var p={},f={},_=function(i,t){i&&c.each(t,function(t,e){c.isPlainObject(e)?_(i[t]||i[t[0].toUpperCase()+t.slice(1)],e):i.hasOwnProperty(t)?i[t]=e:i.prototype&&(i.prototype[t]=e)})};a.jsGrid={Grid:g,fields:p,setDefaults:function(t){var e;c.isPlainObject(t)?e=g.prototype:(e=p[t].prototype,t=arguments[1]||{}),c.extend(e,t)},locales:f,locale:function(t){var e=c.isPlainObject(t)?t:f[t];if(!e)throw Error("unknown locale "+t);_(jsGrid,e)},version:"2.3.0"}})(window,jQuery),((t,e)=>{function i(t){this._init(t)}i.prototype={container:"body",message:"Loading...",shading:!0,zIndex:1e3,shaderClass:"jsgrid-load-shader",loadPanelClass:"jsgrid-load-panel",_init:function(t){e.extend(!0,this,t),this._initContainer(),this._initShader(),this._initLoadPanel()},_initContainer:function(){this._container=e(this.container)},_initShader:function(){this.shading&&(this._shader=e("<div>").addClass(this.shaderClass).hide().css({position:"absolute",top:0,right:0,bottom:0,left:0,zIndex:this.zIndex}).appendTo(this._container))},_initLoadPanel:function(){this._loadPanel=e("<div>").addClass(this.loadPanelClass).text(this.message).hide().css({position:"absolute",top:"50%",left:"50%",zIndex:this.zIndex}).appendTo(this._container)},show:function(){var t=this._loadPanel.show(),e=t.outerWidth(),i=t.outerHeight();t.css({marginTop:-i/2,marginLeft:-e/2}),this._shader.show()},hide:function(){this._loadPanel.hide(),this._shader.hide()}},t.LoadIndicator=i})(jsGrid,jQuery),((t,e)=>{function i(t){this._grid=t}function n(t){this._grid=t,this._itemsCount=0}i.prototype={firstDisplayIndex:function(){var t=this._grid;return t.option("paging")?(t.option("pageIndex")-1)*t.option("pageSize"):0},lastDisplayIndex:function(){var t=this._grid,e=t.option("data").length;return t.option("paging")?Math.min(t.option("pageIndex")*t.option("pageSize"),e):e},itemsCount:function(){return this._grid.option("data").length},openPage:function(t){this._grid.refresh()},loadParams:function(){return{}},sort:function(){return this._grid._sortData(),this._grid.refresh(),e.Deferred().resolve().promise()},reset:function(){return this._grid.refresh(),e.Deferred().resolve().promise()},finishLoad:function(t){this._grid.option("data",t)},finishInsert:function(t,e){var i=this._grid;"top"===e?i.option("data").unshift(t):i.option("data").push(t),i.refresh()},finishDelete:function(t,e){var i=this._grid;i.option("data").splice(e,1),i.reset()}},n.prototype={firstDisplayIndex:function(){return 0},lastDisplayIndex:function(){return this._grid.option("data").length},itemsCount:function(){return this._itemsCount},openPage:function(t){this._grid.loadData()},loadParams:function(){var t=this._grid;return{pageIndex:t.option("pageIndex"),pageSize:t.option("pageSize")}},reset:function(){return this._grid.loadData()},sort:function(){return this._grid.loadData()},finishLoad:function(t){this._itemsCount=t.itemsCount,this._grid.option("data",t.data)},finishInsert:function(t){this._grid.search()},finishDelete:function(t,e){this._grid.search()}},t.loadStrategies={DirectLoadingStrategy:i,PageLoadingStrategy:n}})(jsGrid,jQuery),(t=>{function i(t){return null!=t}t.sortStrategies={string:function(t,e){return i(t)||i(e)?i(t)?i(e)?(""+t).localeCompare(""+e):1:-1:0},stringNaturalSort:function(t,e){return i(t)||i(e)?i(t)?i(e)?(""+t).localeCompare(""+e,void 0,{numeric:!0,sensitivity:"base"}):1:-1:0},number:function(t,e){return t-e},date:function(t,e){return t-e},numberAsString:function(t,e){return parseFloat(t)-parseFloat(e)}}})(jsGrid,jQuery),((t,a)=>{function e(t){this._init(t)}e.prototype={_init:function(t){a.extend(!0,this,t)},validate:function(i){var n=[];return a.each(this._normalizeRules(i.rules),function(t,e){e.validator(i.value,i.item,e.param)||(e=a.isFunction(e.message)?e.message(i.value,i.item):e.message,n.push(e))}),n},_normalizeRules:function(t){return a.isArray(t)||(t=[t]),a.map(t,a.proxy(function(t){return this._normalizeRule(t)},this))},_normalizeRule:function(t){if(a.isFunction(t="string"==typeof t?{validator:t}:t)&&(t={validator:t}),a.isPlainObject(t))return t=a.extend({},t),a.isFunction(t.validator)?t:this._applyNamedValidator(t,t.validator);throw Error("wrong validation config specified")},_applyNamedValidator:function(t,e){delete t.validator;var i=n[e];if(!i)throw Error('unknown validator "'+e+'"');a.isFunction(i)&&(i={validator:i});e=this.validatorsLocale&&this.validatorsLocale[e];return a.extend({},i,e,t)}},t.Validation=e;var n={required:{message:"Field is required",validator:function(t){return null!=t&&""!==t}},rangeLength:{message:"Field value length is out of the defined range",validator:function(t,e,i){return t.length>=i[0]&&t.length<=i[1]}},minLength:{message:"Field value is too short",validator:function(t,e,i){return t.length>=i}},maxLength:{message:"Field value is too long",validator:function(t,e,i){return t.length<=i}},pattern:{message:"Field value is not matching the defined pattern",validator:function(t,e,i){return(i="string"==typeof i?new RegExp("^(?:"+i+")$"):i).test(t)}},range:{message:"Field value is out of the defined range",validator:function(t,e,i){return t>=i[0]&&t<=i[1]}},min:{message:"Field value is too small",validator:function(t,e,i){return i<=t}},max:{message:"Field value is too large",validator:function(t,e,i){return t<=i}}};t.validators=n})(jsGrid,jQuery),((e,i)=>{function t(t){i.extend(!0,this,t),this.sortingFunc=this._getSortingFunc()}t.prototype={name:"",title:null,css:"",align:"",width:100,visible:!0,filtering:!0,inserting:!0,editing:!0,sorting:!0,sorter:"string",includeInDataExport:!0,headerTemplate:function(){return null==this.title?this.name:this.title},itemTemplate:function(t,e){return t},filterTemplate:function(){return""},insertTemplate:function(){return""},editTemplate:function(t,e){return this._value=t,this.itemTemplate(t,e)},filterValue:function(){return""},insertValue:function(){return""},editValue:function(){return this._value},_getSortingFunc:function(){var t=this.sorter;if(i.isFunction(t))return t;if("string"==typeof t)return e.sortStrategies[t];throw Error('wrong sorter for the field "'+this.name+'"!')}},e.Field=t})(jsGrid,jQuery);
|
|
6
|
+
((a,c,u)=>{function r(t,e){return c.isFunction(t)?t.apply(e,c.makeArray(arguments).slice(2)):t}var n,s="JSGrid",o="JSGridItem",i="JSGridEditRow",d=[],l=0,h="asc",t={loadData:c.noop,insertItem:c.noop,updateItem:c.noop,deleteItem:c.noop};function g(t,e){t=c(t);0==d.length?(this._id=l,l++):this._id=d.pop(),t.data(s,this),this._container=t,this.data=[],this.fields=[],this._editingRow=null,this._sortField=null,this._sortOrder=h,this._firstDisplayingPage=1,this._init(e),this.render()}g.prototype={width:"auto",height:"auto",updateOnResize:!0,locale:null,rowClass:c.noop,rowRenderer:null,rowClick:function(t){this.editing&&this.editItem(c(t.event.target).closest("tr"))},rowDoubleClick:c.noop,noDataContent:"Not found",noDataRowClass:"jsgrid-nodata-row",heading:!0,headerRowRenderer:null,headerRowClass:"jsgrid-header-row",headerCellClass:"jsgrid-header-cell",filtering:!1,filterRowRenderer:null,filterRowClass:"jsgrid-filter-row",inserting:!1,insertRowLocation:"bottom",insertRowRenderer:null,insertRowClass:"jsgrid-insert-row",editing:!1,editRowRenderer:null,editRowClass:"jsgrid-edit-row",confirmDeleting:!0,deleteConfirm:"Are you sure?",selecting:!0,selectedRowClass:"jsgrid-selected-row",oddRowClass:"jsgrid-row",evenRowClass:"jsgrid-alt-row",cellClass:"jsgrid-cell",sorting:!1,sortableClass:"jsgrid-header-sortable",sortAscClass:"jsgrid-header-sort jsgrid-header-sort-asc",sortDescClass:"jsgrid-header-sort jsgrid-header-sort-desc",paging:!1,pagerContainer:null,pageIndex:1,pageSize:20,pageButtonCount:15,pagerFormat:"Pages: {first} {prev} {pages} {next} {last} {pageIndex} of {pageCount}",pagePrevText:"Prev",pageNextText:"Next",pageFirstText:"First",pageLastText:"Last",pageNavigatorNextText:"...",pageNavigatorPrevText:"...",pagerContainerClass:"jsgrid-pager-container",pagerClass:"jsgrid-pager",pagerNavButtonClass:"jsgrid-pager-nav-button",pagerNavButtonInactiveClass:"jsgrid-pager-nav-inactive-button",pageClass:"jsgrid-pager-page",currentPageClass:"jsgrid-pager-current-page",customLoading:!1,pageLoading:!1,autoload:!1,controller:t,loadIndication:!0,loadIndicationDelay:500,loadMessage:"Please, wait...",loadShading:!0,invalidMessage:"Invalid data entered!",invalidNotify:function(t){t=c.map(t.errors,function(t){return t.message||null});a.alert([this.invalidMessage].concat(t).join("\n"))},onInit:c.noop,onRefreshing:c.noop,onRefreshed:c.noop,onPageChanged:c.noop,onItemDeleting:c.noop,onItemDeleted:c.noop,onItemInserting:c.noop,onItemInserted:c.noop,onItemEditing:c.noop,onItemEditCancelling:c.noop,onItemUpdating:c.noop,onItemUpdated:c.noop,onItemInvalid:c.noop,onDataLoading:c.noop,onDataLoaded:c.noop,onDataExporting:c.noop,onOptionChanging:c.noop,onOptionChanged:c.noop,onError:c.noop,invalidClass:"jsgrid-invalid",containerClass:"jsgrid",tableClass:"jsgrid-table",gridHeaderClass:"jsgrid-grid-header",gridBodyClass:"jsgrid-grid-body",_init:function(t){this._initInstanceLocale(t&&t.locale),c.extend(this,t),this._initLoadStrategy(),this._initController(),this._initFields(),this._attachWindowLoadResize(),this._attachWindowResizeCallback(),this._callEventHandler(this.onInit)},_initInstanceLocale:function(t){t&&(t=c.isPlainObject(t)?t:jsGrid.locales[t])&&(t.grid&&c.extend(this,t.grid),this._fieldsLocaleConfig=t.fields,this._validatorsLocaleConfig=t.validators)},loadStrategy:function(){return new(this.pageLoading?jsGrid.loadStrategies.PageLoadingStrategy:jsGrid.loadStrategies.DirectLoadingStrategy)(this)},_initLoadStrategy:function(){this._loadStrategy=r(this.loadStrategy,this)},_initController:function(){this._controller=c.extend({},t,r(this.controller,this))},renderTemplate:function(t,e,i){var n,a=[];for(n in i)a.push(i[n]);return a.unshift(t,e),(t=r.apply(null,a))===u||null===t?"":t},loadIndicator:function(t){return new jsGrid.LoadIndicator(t)},validation:function(t){return jsGrid.Validation&&new jsGrid.Validation(t)},_initFields:function(){var i=this,n=i._fieldsLocaleConfig;i.fields=c.map(i.fields,function(t){var e;return c.isPlainObject(t)&&(t.type&&!jsGrid.fields[t.type]&&a.console&&console.warn('[jsxgrid] unknown field type "'+t.type+'" - falling back to the base field (no filtering/inserting/editing UI). Check that its script is loaded, and after jsxgrid.js.'),t=new(t.type&&jsGrid.fields[t.type]||jsGrid.Field)(t=(e=n&&t.type&&n[t.type])?c.extend({},e,t):t)),t._grid=i,t})},_attachWindowLoadResize:function(){c(a).on("load.table-"+this._id,c.proxy(this._refreshSize,this))},_attachWindowResizeCallback:function(){this.updateOnResize&&c(a).on("resize.table-"+this._id,c.proxy(this._refreshSize,this))},_detachWindowLoadResize:function(){c(a).off("load.table-"+this._id)},_detachWindowResizeCallback:function(){c(a).off("resize.table-"+this._id)},option:function(t,e){if(1===arguments.length)return this[t];t={option:t,oldValue:this[t],newValue:e},this._callEventHandler(this.onOptionChanging,t),this._handleOptionChange(t.option,t.newValue),this._callEventHandler(this.onOptionChanged,{option:t.option,value:t.newValue})},fieldOption:function(t,e,i){if(t=this._normalizeField(t),2===arguments.length)return t[e];t[e]=i,this._renderGrid()},_handleOptionChange:function(t,e){switch(this[t]=e,t){case"width":case"height":this._refreshSize();break;case"rowClass":case"rowRenderer":case"rowClick":case"rowDoubleClick":case"noDataRowClass":case"noDataContent":case"selecting":case"selectedRowClass":case"oddRowClass":case"evenRowClass":this._refreshContent();break;case"pageButtonCount":case"pagerFormat":case"pagePrevText":case"pageNextText":case"pageFirstText":case"pageLastText":case"pageNavigatorNextText":case"pageNavigatorPrevText":case"pagerClass":case"pagerNavButtonClass":case"pageClass":case"currentPageClass":case"pagerRenderer":this._refreshPager();break;case"fields":this._initFields(),this.render();break;case"data":case"editing":case"heading":case"filtering":case"inserting":case"paging":this.refresh();break;case"loadStrategy":case"pageLoading":this._initLoadStrategy(),this.search();break;case"pageIndex":this.openPage(e);break;case"pageSize":this.refresh(),this.search();break;case"editRowRenderer":case"editRowClass":this.cancelEdit();break;case"updateOnResize":this._detachWindowResizeCallback(),this._attachWindowResizeCallback();break;case"invalidNotify":case"invalidMessage":break;default:this.render()}},destroy:function(){this._detachWindowResizeCallback(),this._detachWindowLoadResize(),d.push(this._id),this._clear(),this._container.removeData(s)},render:function(){return this._renderGrid(),this.autoload?this.loadData():c.Deferred().resolve().promise()},_renderGrid:function(){this._clear(),this._container.addClass(this.containerClass).css("position","relative").append(this._createHeader()).append(this._createBody()),this._pagerContainer=this._createPagerContainer(),this._loadIndicator=this._createLoadIndicator(),this._validation=this._createValidation(),this.refresh()},_createLoadIndicator:function(){return r(this.loadIndicator,this,{message:this.loadMessage,shading:this.loadShading,container:this._container})},_createValidation:function(){return r(this.validation,this,{validatorsLocale:this._validatorsLocaleConfig})},_clear:function(){this.cancelEdit(),clearTimeout(this._loadingTimer),this._pagerContainer&&this._pagerContainer.empty(),this._container.empty().css({position:"",width:"",height:""})},_createHeader:function(){var t=this._headerRow=this._createHeaderRow(),e=this._filterRow=this._createFilterRow(),i=this._insertRow=this._createInsertRow(),t=this._headerGrid=c("<table>").addClass(this.tableClass).append(t).append(e).append(i);return this._header=c("<div>").addClass(this.gridHeaderClass).addClass(this._scrollBarWidth()?"jsgrid-header-scrollbar":"").append(t)},_createBody:function(){var t=this._content=c("<tbody>"),t=this._bodyGrid=c("<table>").addClass(this.tableClass).append(t);return this._body=c("<div>").addClass(this.gridBodyClass).append(t).on("scroll",c.proxy(function(t){this._header.scrollLeft(t.target.scrollLeft)},this))},_createPagerContainer:function(){var t=this.pagerContainer||c("<div>").appendTo(this._container);return c(t).addClass(this.pagerContainerClass)},_eachField:function(i){var n=this;c.each(this.fields,function(t,e){e.visible&&i.call(n,e,t)})},_createHeaderRow:function(){var n;return c.isFunction(this.headerRowRenderer)?c(this.renderTemplate(this.headerRowRenderer,this)):(n=c("<tr>").addClass(this.headerRowClass),this._eachField(function(t,e){var i=this._prepareCell("<th>",t,"headercss",this.headerCellClass).append(this.renderTemplate(t.headerTemplate,t)).appendTo(n);this.sorting&&t.sorting&&i.addClass(this.sortableClass).on("click",c.proxy(function(){this.sort(e)},this))}),n)},_prepareCell:function(t,e,i,n){return c(t).css("width",e.width).addClass(n||this.cellClass).addClass(i&&e[i]||e.css).addClass(e.align?"jsgrid-align-"+e.align:"")},_createFilterRow:function(){var e;return c.isFunction(this.filterRowRenderer)?c(this.renderTemplate(this.filterRowRenderer,this)):(e=c("<tr>").addClass(this.filterRowClass),this._eachField(function(t){this._prepareCell("<td>",t,"filtercss").append(this.renderTemplate(t.filterTemplate,t)).appendTo(e)}),e)},_createInsertRow:function(){var e;return c.isFunction(this.insertRowRenderer)?c(this.renderTemplate(this.insertRowRenderer,this)):(e=c("<tr>").addClass(this.insertRowClass),this._eachField(function(t){this._prepareCell("<td>",t,"insertcss").append(this.renderTemplate(t.insertTemplate,t)).appendTo(e)}),e)},_callEventHandler:function(t,e){return t.call(this,c.extend(e,{grid:this})),e},reset:function(){return this._resetSorting(),this._resetPager(),this._loadStrategy.reset()},_resetPager:function(){this._setPage(1)},_resetSorting:function(){this._sortField=null,this._sortOrder=h,this._clearSortingCss()},refresh:function(){this._callEventHandler(this.onRefreshing),this.cancelEdit(),this._refreshHeading(),this._refreshFiltering(),this._refreshInserting(),this._refreshContent(),this._refreshPager(),this._refreshSize(),this._callEventHandler(this.onRefreshed)},_refreshHeading:function(){this._headerRow.toggle(this.heading)},_refreshFiltering:function(){this._filterRow.toggle(this.filtering)},_refreshInserting:function(){this._insertRow.toggle(this.inserting)},_refreshContent:function(){var t=this._content;if(t.empty(),!this.data.length)return t.append(this._createNoDataRow()),this;for(var e=this._loadStrategy.firstDisplayIndex(),i=this._loadStrategy.lastDisplayIndex(),n=e;n<i;n++){var a=this.data[n];t.append(this._createRow(a,n))}},_createNoDataRow:function(){var t=0;return this._eachField(function(){t++}),c("<tr>").addClass(this.noDataRowClass).append(c("<td>").addClass(this.cellClass).attr("colspan",t).append(this.renderTemplate(this.noDataContent,this)))},_createRow:function(e,i){var t;return c.isFunction(this.rowRenderer)?t=this.renderTemplate(this.rowRenderer,this,{item:e,itemIndex:i}):(t=c("<tr>"),this._renderCells(t,e)),t.addClass(this._getRowClasses(e,i)).data(o,e).on("click",c.proxy(function(t){this.rowClick({item:e,itemIndex:i,event:t})},this)).on("dblclick",c.proxy(function(t){this.rowDoubleClick({item:e,itemIndex:i,event:t})},this)),this.selecting&&this._attachRowHover(t),t},_getRowClasses:function(t,e){var i=[];return i.push((e+1)%2?this.oddRowClass:this.evenRowClass),i.push(r(this.rowClass,this,t,e)),i.join(" ")},_attachRowHover:function(t){var e=this.selectedRowClass;t.hover(function(){c(this).addClass(e)},function(){c(this).removeClass(e)})},_renderCells:function(e,i){return this._eachField(function(t){e.append(this._createCell(i,t))}),this},_createCell:function(t,e){var i=this._getItemFieldValue(t,e),t={value:i,item:t},i=c.isFunction(e.cellRenderer)?this.renderTemplate(e.cellRenderer,e,t):c("<td>").append(this.renderTemplate(e.itemTemplate||i,e,t));return this._prepareCell(i,e)},_getItemFieldValue:function(t,e){for(var i=e.name.split("."),n=t[i.shift()];n&&i.length;)n=n[i.shift()];return n},_setItemFieldValue:function(t,e,i){for(var n=e.name.split("."),a=t,r=n[0];a&&n.length;)a=(t=a)[r=n.shift()];if(!a)for(;n.length;)t=t[r]={},r=n.shift();t[r]=i},sort:function(t,e){return c.isPlainObject(t)&&(e=t.order,t=t.field),this._clearSortingCss(),this._setSortingParams(t,e),this._setSortingCss(),this._loadStrategy.sort()},_clearSortingCss:function(){this._headerRow.find("th").removeClass(this.sortAscClass).removeClass(this.sortDescClass)},_setSortingParams:function(t,e){t=this._normalizeField(t),e=e||(this._sortField===t?this._reversedSortOrder(this._sortOrder):h),this._sortField=t,this._sortOrder=e},_normalizeField:function(e){return c.isNumeric(e)?this.fields[e]:"string"==typeof e?c.grep(this.fields,function(t){return t.name===e})[0]:e},_reversedSortOrder:function(t){return t===h?"desc":h},_setSortingCss:function(){var t=this._visibleFieldIndex(this._sortField);this._headerRow.find("th").eq(t).addClass(this._sortOrder===h?this.sortAscClass:this.sortDescClass)},_visibleFieldIndex:function(t){return c.inArray(t,c.grep(this.fields,function(t){return t.visible}))},_sortData:function(){var i,n=this._sortFactor(),a=this._sortField;a&&(i=this).data.sort(function(t,e){t=i._getItemFieldValue(t,a),e=i._getItemFieldValue(e,a);return n*a.sortingFunc(t,e)})},_sortFactor:function(){return this._sortOrder===h?1:-1},_itemsCount:function(){return this._loadStrategy.itemsCount()},_pagesCount:function(){var t=this._itemsCount(),e=this.pageSize;return Math.floor(t/e)+(t%e?1:0)},_refreshPager:function(){var t=this._pagerContainer,e=(t.empty(),this.paging&&t.append(this._createPager()),this.paging&&1<this._pagesCount());t.toggle(e)},_createPager:function(){var t=c.isFunction(this.pagerRenderer)?c(this.pagerRenderer({pageIndex:this.pageIndex,pageCount:this._pagesCount()})):c("<div>").append(this._createPagerByFormat());return t.addClass(this.pagerClass),t},_createPagerByFormat:function(){var i=this.pageIndex,n=this._pagesCount(),a=this._itemsCount(),t=this.pagerFormat.split(" ");return c.map(t,c.proxy(function(t){var e=t;return"{pages}"===t?e=this._createPages():"{first}"===t?e=this._createPagerNavButton(this.pageFirstText,1,1<i):"{prev}"===t?e=this._createPagerNavButton(this.pagePrevText,i-1,1<i):"{next}"===t?e=this._createPagerNavButton(this.pageNextText,i+1,i<n):"{last}"===t?e=this._createPagerNavButton(this.pageLastText,n,i<n):"{pageIndex}"===t?e=i:"{pageCount}"===t?e=n:"{itemCount}"===t&&(e=a),c.isArray(e)?e.concat([" "]):[e," "]},this))},_createPages:function(){var t=this._pagesCount(),e=this.pageButtonCount,i=this._firstDisplayingPage,n=[];1<i&&n.push(this._createPagerPageNavButton(this.pageNavigatorPrevText,this.showPrevPages));for(var a=0,r=i;a<e&&r<=t;a++,r++)n.push(r===this.pageIndex?this._createPagerCurrentPage():this._createPagerPage(r));return i+e-1<t&&n.push(this._createPagerPageNavButton(this.pageNavigatorNextText,this.showNextPages)),n},_createPagerNavButton:function(t,e,i){return this._createPagerButton(t,this.pagerNavButtonClass+(i?"":" "+this.pagerNavButtonInactiveClass),i?function(){this.openPage(e)}:c.noop)},_createPagerPageNavButton:function(t,e){return this._createPagerButton(t,this.pagerNavButtonClass,e)},_createPagerPage:function(t){return this._createPagerButton(t,this.pageClass,function(){this.openPage(t)})},_createPagerButton:function(t,e,i){t=c("<a>").attr("href","javascript:void(0);").html(t).on("click",c.proxy(i,this));return c("<span>").addClass(e).append(t)},_createPagerCurrentPage:function(){return c("<span>").addClass(this.pageClass).addClass(this.currentPageClass).text(this.pageIndex)},_refreshSize:function(){this._refreshHeight(),this._refreshWidth()},_refreshWidth:function(){var t="auto"===this.width?this._getAutoWidth():this.width;this._container.width(t)},_getAutoWidth:function(){var t=this._headerGrid,e=this._header,i=(t.width("auto"),t.outerWidth()),e=e.outerWidth()-e.innerWidth();return t.width(""),i+e},_scrollBarWidth:function(){var t,e,i;return n===u&&((i=(t=c("<div></div>")).get(0)).style.width="50px",i.style.height="50px",i.style.position="absolute",i.style.top="-10000px",i.style.left="-10000px",(i=c("<div></div>")).get(0).style.height="100px",t.append(i).appendTo("body"),e=i.innerWidth(),t.get(0).style.overflowY="auto",i=i.innerWidth(),t.remove(),n=e-i),n},_refreshHeight:function(){var t,e=this._container,i=this._pagerContainer,n=this.height;e.height(n),"auto"!==n&&(n=e.height(),t=this._header.outerHeight(!0),i.parents(e).length&&(t+=i.outerHeight(!0)),this._body.outerHeight(n-t))},showPrevPages:function(){var t=this._firstDisplayingPage,e=this.pageButtonCount;this._firstDisplayingPage=e<t?t-e:1,this._refreshPager()},showNextPages:function(){var t=this._firstDisplayingPage,e=this.pageButtonCount,i=this._pagesCount();this._firstDisplayingPage=i<t+2*e?i-e+1:t+e,this._refreshPager()},openPage:function(t){t<1||t>this._pagesCount()||(this._setPage(t),this._loadStrategy.openPage(t))},_setPage:function(t){this.pageIndex=t,this._firstDisplayingPage=this._centeredFirstDisplayingPage(t),this._callEventHandler(this.onPageChanged,{pageIndex:t})},_centeredFirstDisplayingPage:function(t){var e=this.pageButtonCount,i=this._pagesCount(),t=t-Math.floor((e-1)/2),i=Math.max(1,i-e+1);return Math.min(Math.max(1,t),i)},_controllerCall:function(t,e,i,n){if(i)return c.Deferred().reject().promise();this._showLoading();var a,i=this._controller;if(i&&i[t])return i=i[t](e),a=c.Deferred(),i&&i.then?i.then(function(){a.resolve.apply(a,arguments)},function(){a.reject.apply(a,arguments)}):a.resolve(i),a.promise().done(c.proxy(n,this)).fail(c.proxy(this._errorHandler,this)).always(c.proxy(this._hideLoading,this));throw Error("controller has no method '"+t+"'")},_errorHandler:function(){this._callEventHandler(this.onError,{args:c.makeArray(arguments)})},_showLoading:function(){this.loadIndication&&(clearTimeout(this._loadingTimer),this._loadingTimer=setTimeout(c.proxy(function(){this._loadIndicator.show()},this),this.loadIndicationDelay))},_hideLoading:function(){this.loadIndication&&(clearTimeout(this._loadingTimer),this._loadIndicator.hide())},search:function(t){return this._resetSorting(),this._resetPager(),this.loadData(t)},loadData:function(t){t=t||(this.filtering?this.getFilter():{}),c.extend(t,this._loadStrategy.loadParams(),this._sortingParams());var e=this._callEventHandler(this.onDataLoading,{filter:t});return this._controllerCall("loadData",t,e.cancel,function(t){t&&(this._loadStrategy.finishLoad(t),this._callEventHandler(this.onDataLoaded,{data:t}))})},exportData:function(t){var t=t||{},e=t.type||"csv",i="";return this._callEventHandler(this.onDataExporting),i="csv"===e?this._dataToCsv(t):i},_dataToCsv:function(t){var e=!(t=t||{}).hasOwnProperty("includeHeaders")||t.includeHeaders,i=t.subset||"all",n=t.filter||u,a=[];if(e){for(var r=this.fields.length,s={},o=0;o<r;o++){var d=this.fields[o];"includeInDataExport"in d&&!0===d.includeInDataExport&&(s[o]=d.title||d.name)}e=this._itemToCsv(s,{},t);a.push(e)}for(var e=0,l=this.data.length,o=e="visible"===i?(l=this._firstDisplayingPage*this.pageSize)-this.pageSize:e;o<l;o++){var h=this.data[o],c=!0;(c=!n||n(h)?c:!1)&&(c=this._itemToCsv(h,this.fields,t),a.push(c))}return a.join("")},_itemToCsv:function(r,s,t){var e=(t=t||{}).delimiter||"|",o=!t.hasOwnProperty("encapsulate")||t.encapsulate,i=t.newline||"\r\n",d=t.transforms||{},s=s||{},l=this._getItemFieldValue,h=[];return Object.keys(r).forEach(function(t,e){var i="";if(0<s.length){var n,a=s[e];if("includeInDataExport"in a){if(!a.includeInDataExport)return;i="select"===a.type?(n=l(r,a),(c.grep(a.items,function(t,e){return t[a.valueField]===n})[0]||"")[a.textField]):l(r,a)}else i=l(r,a);d.hasOwnProperty(a.name)&&(i=d[a.name](i))}else i=r[t];h.push(i=o?'"'+i+'"':i)}),h.join(e)+i},getFilter:function(){var e={};return this._eachField(function(t){t.filtering&&this._setItemFieldValue(e,t,t.filterValue())}),e},_sortingParams:function(){return this.sorting&&this._sortField?{sortField:this._sortField.name,sortOrder:this._sortOrder}:{}},getSorting:function(){var t=this._sortingParams();return{field:t.sortField,order:t.sortOrder}},clearFilter:function(){var t=this._createFilterRow();return this._filterRow.replaceWith(t),this._filterRow=t,this.search()},insertItem:function(t){var e=t||this._getValidatedInsertItem();return e?(t=this._callEventHandler(this.onItemInserting,{item:e}),this._controllerCall("insertItem",e,t.cancel,function(t){this._loadStrategy.finishInsert(t=t||e,this.insertRowLocation),this._callEventHandler(this.onItemInserted,{item:t})})):c.Deferred().reject().promise()},_getValidatedInsertItem:function(){var t=this._getInsertItem();return this._validateItem(t,this._insertRow)?t:null},_getInsertItem:function(){var e={};return this._eachField(function(t){t.inserting&&this._setItemFieldValue(e,t,t.insertValue())}),e},_validateItem:function(i,n){var t,a=[],r={item:i,itemIndex:this._rowIndex(n),row:n};return this._eachField(function(e){var t;!e.validate||n===this._insertRow&&!e.inserting||n===this._getEditRow()&&!e.editing||(t=this._getItemFieldValue(i,e),t=this._validation.validate(c.extend({value:t,rules:e.validate},r)),this._setCellValidity(n.children().eq(this._visibleFieldIndex(e)),t),t.length&&a.push.apply(a,c.map(t,function(t){return{field:e,message:t}})))}),!a.length||(t=c.extend({errors:a},r),this._callEventHandler(this.onItemInvalid,t),this.invalidNotify(t),!1)},_setCellValidity:function(t,e){t.toggleClass(this.invalidClass,!!e.length).attr("title",e.join("\n"))},clearInsert:function(){var t=this._createInsertRow();this._insertRow.replaceWith(t),this._insertRow=t,this.refresh()},editItem:function(t){t=this.rowByItem(t);t.length&&this._editRow(t)},rowByItem:function(t){return t.jquery||t.nodeType?c(t):this._content.find("tr").filter(function(){return c.data(this,o)===t})},_editRow:function(t){var e;this.editing&&(e=t.data(o),this._callEventHandler(this.onItemEditing,{row:t,item:e,itemIndex:this._itemIndex(e)}).cancel||(this._editingRow&&this.cancelEdit(),e=this._createEditRow(e),(this._editingRow=t).hide(),e.insertBefore(t),t.data(i,e)))},_createEditRow:function(i){var n;return c.isFunction(this.editRowRenderer)?c(this.renderTemplate(this.editRowRenderer,this,{item:i,itemIndex:this._itemIndex(i)})):(n=c("<tr>").addClass(this.editRowClass),this._eachField(function(t){var e=this._getItemFieldValue(i,t);this._prepareCell("<td>",t,"editcss").append(this.renderTemplate(t.editTemplate||"",t,{value:e,item:i})).appendTo(n)}),n)},updateItem:function(t,e){1===arguments.length&&(e=t);t=t?this.rowByItem(t):this._editingRow;if(e=e||this._getValidatedEditedItem())return this._updateRow(t,e)},_getValidatedEditedItem:function(){var t=this._getEditedItem();return this._validateItem(t,this._getEditRow())?t:null},_updateRow:function(i,t){var n=i.data(o),a=this._itemIndex(n),r=c.extend(!0,{},n,t),t=this._callEventHandler(this.onItemUpdating,{row:i,item:r,itemIndex:a,previousItem:n});return this._controllerCall("updateItem",r,t.cancel,function(t){var e=c.extend(!0,{},n),t=(r=t||c.extend(!0,n,r),this._finishUpdate(i,r,a));this._callEventHandler(this.onItemUpdated,{row:t,item:r,itemIndex:a,previousItem:e})})},_rowIndex:function(t){return this._content.children().index(c(t))},_itemIndex:function(t){return c.inArray(t,this.data)},_finishUpdate:function(t,e,i){this.cancelEdit(),this.data[i]=e;e=this._createRow(e,i);return t.replaceWith(e),e},_getEditedItem:function(){var e={};return this._eachField(function(t){t.editing&&this._setItemFieldValue(e,t,t.editValue())}),e},cancelEdit:function(){var t,e,i;this._editingRow&&(e=(t=this._editingRow).data(o),i=this._itemIndex(e),this._callEventHandler(this.onItemEditCancelling,{row:t,item:e,itemIndex:i}),this._getEditRow().remove(),this._editingRow.show(),this._editingRow=null)},_getEditRow:function(){return this._editingRow&&this._editingRow.data(i)},deleteItem:function(t){t=this.rowByItem(t);if(t.length&&(!this.confirmDeleting||a.confirm(r(this.deleteConfirm,this,t.data(o)))))return this._deleteRow(t)},_deleteRow:function(t){var e=t.data(o),i=this._itemIndex(e),n=this._callEventHandler(this.onItemDeleting,{row:t,item:e,itemIndex:i});return this._controllerCall("deleteItem",e,n.cancel,function(){this._loadStrategy.finishDelete(e,i),this._callEventHandler(this.onItemDeleted,{row:t,item:e,itemIndex:i})})}},c.fn.jsGrid=function(n){var a=c.makeArray(arguments).slice(1),r=this;return this.each(function(){var t,e=c(this),i=e.data(s);if(i)if("string"==typeof n){if((t=i[n].apply(i,a))!==u&&t!==i)return r=t,!1}else i._detachWindowResizeCallback(),i._init(n),i.render();else new g(e,n)}),r};var p={},f={},_=function(i,t){i&&c.each(t,function(t,e){c.isPlainObject(e)?_(i[t]||i[t[0].toUpperCase()+t.slice(1)],e):i.hasOwnProperty(t)?i[t]=e:i.prototype&&(i.prototype[t]=e)})};a.jsGrid={Grid:g,fields:p,setDefaults:function(t){var e;c.isPlainObject(t)?e=g.prototype:(e=p[t].prototype,t=arguments[1]||{}),c.extend(e,t)},locales:f,locale:function(t){var e=c.isPlainObject(t)?t:f[t];if(!e)throw Error("unknown locale "+t);_(jsGrid,e)},version:"2.3.1"}})(window,jQuery),((t,e)=>{function i(t){this._init(t)}i.prototype={container:"body",message:"Loading...",shading:!0,zIndex:1e3,shaderClass:"jsgrid-load-shader",loadPanelClass:"jsgrid-load-panel",_init:function(t){e.extend(!0,this,t),this._initContainer(),this._initShader(),this._initLoadPanel()},_initContainer:function(){this._container=e(this.container)},_initShader:function(){this.shading&&(this._shader=e("<div>").addClass(this.shaderClass).hide().css({position:"absolute",top:0,right:0,bottom:0,left:0,zIndex:this.zIndex}).appendTo(this._container))},_initLoadPanel:function(){this._loadPanel=e("<div>").addClass(this.loadPanelClass).text(this.message).hide().css({position:"absolute",top:"50%",left:"50%",zIndex:this.zIndex}).appendTo(this._container)},show:function(){var t=this._loadPanel.show(),e=t.outerWidth(),i=t.outerHeight();t.css({marginTop:-i/2,marginLeft:-e/2}),this._shader.show()},hide:function(){this._loadPanel.hide(),this._shader.hide()}},t.LoadIndicator=i})(jsGrid,jQuery),((t,e)=>{function i(t){this._grid=t}function n(t){this._grid=t,this._itemsCount=0}i.prototype={firstDisplayIndex:function(){var t=this._grid;return t.option("paging")?(t.option("pageIndex")-1)*t.option("pageSize"):0},lastDisplayIndex:function(){var t=this._grid,e=t.option("data").length;return t.option("paging")?Math.min(t.option("pageIndex")*t.option("pageSize"),e):e},itemsCount:function(){return this._grid.option("data").length},openPage:function(t){this._grid.refresh()},loadParams:function(){return{}},sort:function(){return this._grid._sortData(),this._grid.refresh(),e.Deferred().resolve().promise()},reset:function(){return this._grid.refresh(),e.Deferred().resolve().promise()},finishLoad:function(t){this._grid.option("data",t)},finishInsert:function(t,e){var i=this._grid;"top"===e?i.option("data").unshift(t):i.option("data").push(t),i.refresh()},finishDelete:function(t,e){var i=this._grid;i.option("data").splice(e,1),i.reset()}},n.prototype={firstDisplayIndex:function(){return 0},lastDisplayIndex:function(){return this._grid.option("data").length},itemsCount:function(){return this._itemsCount},openPage:function(t){this._grid.loadData()},loadParams:function(){var t=this._grid;return{pageIndex:t.option("pageIndex"),pageSize:t.option("pageSize")}},reset:function(){return this._grid.loadData()},sort:function(){return this._grid.loadData()},finishLoad:function(t){this._itemsCount=t.itemsCount,this._grid.option("data",t.data)},finishInsert:function(t){this._grid.search()},finishDelete:function(t,e){this._grid.search()}},t.loadStrategies={DirectLoadingStrategy:i,PageLoadingStrategy:n}})(jsGrid,jQuery),(t=>{function i(t){return null!=t}t.sortStrategies={string:function(t,e){return i(t)||i(e)?i(t)?i(e)?(""+t).localeCompare(""+e):1:-1:0},stringNaturalSort:function(t,e){return i(t)||i(e)?i(t)?i(e)?(""+t).localeCompare(""+e,void 0,{numeric:!0,sensitivity:"base"}):1:-1:0},number:function(t,e){return t-e},date:function(t,e){return t-e},numberAsString:function(t,e){return parseFloat(t)-parseFloat(e)}}})(jsGrid,jQuery),((t,a)=>{function e(t){this._init(t)}e.prototype={_init:function(t){a.extend(!0,this,t)},validate:function(i){var n=[];return a.each(this._normalizeRules(i.rules),function(t,e){e.validator(i.value,i.item,e.param)||(e=a.isFunction(e.message)?e.message(i.value,i.item):e.message,n.push(e))}),n},_normalizeRules:function(t){return a.isArray(t)||(t=[t]),a.map(t,a.proxy(function(t){return this._normalizeRule(t)},this))},_normalizeRule:function(t){if(a.isFunction(t="string"==typeof t?{validator:t}:t)&&(t={validator:t}),a.isPlainObject(t))return t=a.extend({},t),a.isFunction(t.validator)?t:this._applyNamedValidator(t,t.validator);throw Error("wrong validation config specified")},_applyNamedValidator:function(t,e){delete t.validator;var i=n[e];if(!i)throw Error('unknown validator "'+e+'"');a.isFunction(i)&&(i={validator:i});e=this.validatorsLocale&&this.validatorsLocale[e];return a.extend({},i,e,t)}},t.Validation=e;var n={required:{message:"Field is required",validator:function(t){return null!=t&&""!==t}},rangeLength:{message:"Field value length is out of the defined range",validator:function(t,e,i){return t.length>=i[0]&&t.length<=i[1]}},minLength:{message:"Field value is too short",validator:function(t,e,i){return t.length>=i}},maxLength:{message:"Field value is too long",validator:function(t,e,i){return t.length<=i}},pattern:{message:"Field value is not matching the defined pattern",validator:function(t,e,i){return(i="string"==typeof i?new RegExp("^(?:"+i+")$"):i).test(t)}},range:{message:"Field value is out of the defined range",validator:function(t,e,i){return t>=i[0]&&t<=i[1]}},min:{message:"Field value is too small",validator:function(t,e,i){return i<=t}},max:{message:"Field value is too large",validator:function(t,e,i){return t<=i}}};t.validators=n})(jsGrid,jQuery),((e,i)=>{function t(t){i.extend(!0,this,t),this.sortingFunc=this._getSortingFunc()}t.prototype={name:"",title:null,css:"",align:"",width:100,visible:!0,filtering:!0,inserting:!0,editing:!0,sorting:!0,sorter:"string",includeInDataExport:!0,headerTemplate:function(){return null==this.title?this.name:this.title},itemTemplate:function(t,e){return t},filterTemplate:function(){return""},insertTemplate:function(){return""},editTemplate:function(t,e){return this._value=t,this.itemTemplate(t,e)},filterValue:function(){return""},insertValue:function(){return""},editValue:function(){return this._value},_getSortingFunc:function(){var t=this.sorter;if(i.isFunction(t))return t;if("string"==typeof t)return e.sortStrategies[t];throw Error('wrong sorter for the field "'+this.name+'"!')}},e.Field=t})(jsGrid,jQuery);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jsxgrid",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.1",
|
|
4
4
|
"description": "Lightweight data grid jQuery plugin, with a built-in extra field set (avatars, JSON editor, select, collapsible textarea, datetime picker, row selection). A maintained fork of jsGrid.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"grid",
|
package/src/jsgrid.core.js
CHANGED
|
@@ -591,7 +591,6 @@
|
|
|
591
591
|
},
|
|
592
592
|
|
|
593
593
|
_resetPager: function() {
|
|
594
|
-
this._firstDisplayingPage = 1;
|
|
595
594
|
this._setPage(1);
|
|
596
595
|
},
|
|
597
596
|
|
|
@@ -1059,24 +1058,29 @@
|
|
|
1059
1058
|
},
|
|
1060
1059
|
|
|
1061
1060
|
_setPage: function(pageIndex) {
|
|
1062
|
-
var firstDisplayingPage = this._firstDisplayingPage,
|
|
1063
|
-
pageButtonCount = this.pageButtonCount;
|
|
1064
|
-
|
|
1065
1061
|
this.pageIndex = pageIndex;
|
|
1066
|
-
|
|
1067
|
-
if(pageIndex < firstDisplayingPage) {
|
|
1068
|
-
this._firstDisplayingPage = pageIndex;
|
|
1069
|
-
}
|
|
1070
|
-
|
|
1071
|
-
if(pageIndex > firstDisplayingPage + pageButtonCount - 1) {
|
|
1072
|
-
this._firstDisplayingPage = pageIndex - pageButtonCount + 1;
|
|
1073
|
-
}
|
|
1062
|
+
this._firstDisplayingPage = this._centeredFirstDisplayingPage(pageIndex);
|
|
1074
1063
|
|
|
1075
1064
|
this._callEventHandler(this.onPageChanged, {
|
|
1076
1065
|
pageIndex: pageIndex
|
|
1077
1066
|
});
|
|
1078
1067
|
},
|
|
1079
1068
|
|
|
1069
|
+
// Keeps the visible page-number window centered on pageIndex (e.g.
|
|
1070
|
+
// pageButtonCount=5 shows pageIndex-2 .. pageIndex+2), clamped to the
|
|
1071
|
+
// actual page range, instead of only shifting once pageIndex falls
|
|
1072
|
+
// outside the previous window - so the next/prev page is always just
|
|
1073
|
+
// one click away, without ever needing the "..." nav button first.
|
|
1074
|
+
_centeredFirstDisplayingPage: function(pageIndex) {
|
|
1075
|
+
var pageButtonCount = this.pageButtonCount,
|
|
1076
|
+
pageCount = this._pagesCount(),
|
|
1077
|
+
halfWindow = Math.floor((pageButtonCount - 1) / 2),
|
|
1078
|
+
first = pageIndex - halfWindow,
|
|
1079
|
+
lastPossibleFirst = Math.max(1, pageCount - pageButtonCount + 1);
|
|
1080
|
+
|
|
1081
|
+
return Math.min(Math.max(1, first), lastPossibleFirst);
|
|
1082
|
+
},
|
|
1083
|
+
|
|
1080
1084
|
_controllerCall: function(method, param, isCanceled, doneCallback) {
|
|
1081
1085
|
if(isCanceled)
|
|
1082
1086
|
return $.Deferred().reject().promise();
|