Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* global $, jsGrid, localInit */
- /* eslint-disable no-var */
- function isEmptyGridFilter(filter) {
- var isEmpty = true;
- $.each(filter, function () {
- $.each(this, function (prop, value) {
- if (value != "") {
- isEmpty = false;
- return false;
- }
- });
- });
- return isEmpty;
- }
- function applyGridFilter(filter, item) {
- if (!filter || !item)
- return false;
- for (var prop in filter) {
- if (typeof filter[prop] === "object") { //look for nested
- if (applyGridFilter(filter[prop], item[prop]))
- return true;
- continue;
- }
- var regexp = new RegExp(filter[prop], 'gi');
- if (filter[prop] && filter[prop].length > 0) {
- if (item[prop] && item[prop].match(regexp))
- return true;
- }
- }
- return false;
- }
- getStateFromStorage = () => JSON.parse(window.sessionStorage.getItem(window.location.hash.substring(1)));
- generateStateId = (gridInstance) => `pi=${gridInstance.pageIndex}ps=${gridInstance.pageSize}`;
- initializeFromState = (grid, pageState) => {grid.state = Object.assign({}, pageState, {'status': true})};
- function saveState(grid, stateId) {
- const pageState = {
- 'filter': grid.getFilter(),
- 'pageIndex': grid.pageIndex,
- 'pageSize': grid.pageSize,
- 'sortOrder': grid._sortOrder,
- 'sortField': {'name': (grid._sortField !== null ) ? grid._sortField.name : grid._sortField, 'title': (grid._sortField !== null ) ? grid._sortField.title : grid._sortField}
- };
- console.log('sortField test',pageState.sortField)
- window.sessionStorage.setItem(stateId, JSON.stringify(pageState));
- }
- function getExtendedFilter(grid) {
- if (grid.state && grid.state.status === true) {
- const filter = grid.state.filter;
- this.pageIndex = grid.state.pageIndex;
- this.pageSize = grid.state.pageSize;
- this._sortField = grid.state.sortField;
- this._sortOrder = grid.state.sortOrder;
- this.filtering = true;
- setFilter.call(this, filter);
- setSorting.call(this);
- delete grid.state;
- return filter;
- }
- }
- function setFilter(filter) {
- this.fields.forEach((field, index) => {
- if(field.filtering) {
- // console.log('test',$('.jsgrid-filter-row>.jsgrid-cell>input:not([class])').get(index).attr('value', 123123));
- document.querySelectorAll("tr.jsgrid-filter-row > .jsgrid-cell > input")[index].setAttribute('value', filter[field['name']])
- }
- });
- }
- function setSorting() {
- (document.querySelectorAll("tr.jsgrid-header-row>.jsgrid-header-cell.jsgrid-header-sortable")).forEach(item => {
- // console.log('item', document.querySelectorAll("tr.jsgrid-header-row>.jsgrid-header-cell.jsgrid-header-sortable"));
- if (item.innerHTML === this.state.sortField.title) {
- item.className += " jsgrid-header-sort jsgrid-header-sort-" + this.state.sortOrder;
- }
- })
- }
- $(document).ready(function () {
- var gridInstance;
- window.addEventListener('hashchange', function (event) {
- const pageState = getStateFromStorage();
- if (gridInstance.pageSize !== pageState.pageSize || gridInstance.pageIndex !== pageState.pageIndex) {
- gridInstance.openPage(pageState.pageIndex);
- }
- });
- jsGrid.Grid.prototype.onOptionChanged = function (args) {
- const stateId = generateStateId(gridInstance);
- saveState(gridInstance, stateId);
- location.hash = stateId;
- };
- jsGrid.Grid.prototype.onInit = function (args) {
- gridInstance = args.grid;
- const pageState = getStateFromStorage();
- if (pageState !== null) {
- initializeFromState(gridInstance, pageState);
- window.sessionStorage.removeItem(window.location.hash.substring(1));
- };
- };
- (function (loadData) {
- jsGrid.Grid.prototype.loadData = function (filter) {
- filter = (filter === undefined) ? getExtendedFilter.call(this, gridInstance) : filter;
- //Just for test
- loadData.call(this, filter);
- };
- }(jsGrid.Grid.prototype.loadData));
- jsGrid.loadStrategies.DirectLoadingStrategy.prototype.finishDelete = function (deletedItem, deletedItemIndex) {
- var grid = this._grid;
- grid.option("data").splice(deletedItemIndex, 1);
- grid.refresh();
- };
- jsGrid.Grid.prototype._sortData = function () { //compensate sorting bug for nested data
- var self = this,
- sortFactor = this._sortFactor(),
- sortField = this._sortField;
- if (sortField) {
- this.data.sort(function (item1, item2) {
- var value1 = self._getItemFieldValue(item1, sortField);
- var value2 = self._getItemFieldValue(item2, sortField);
- return sortFactor * sortField.sortingFunc(value1, value2);
- });
- }
- };
- if (window.localInit) {
- localInit();
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement