ng2-json-editor
Version:
Angular2 component for editing large json documents
63 lines • 2.81 kB
JavaScript
/*
* This file is part of ng2-json-editor.
* Copyright (C) 2017 CERN.
*
* ng2-json-editor is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* ng2-json-editor 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. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ng2-json-editor; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* In applying this license, CERN does not
* waive the privileges and immunities granted to it by virtue of its status
* as an Intergovernmental Organization or submit itself to any jurisdiction.
*/
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs/ReplaySubject';
import { PathUtilService } from './path-util.service';
var ListPageChangerService = (function () {
function ListPageChangerService(pathUtilService) {
this.pathUtilService = pathUtilService;
this.pageChange$Map = {};
this.itemsPerPageMap = {};
}
/**
* Changes the page of the list so that requested item is visible on UI
* It doesn't do anything if given path's parent is not paginated list.
*
* @param itemPath path to a list item
*/
ListPageChangerService.prototype.changePage = function (fieldPath) {
var fieldPathArray = this.pathUtilService.toPathArray(fieldPath);
var listPathArray = this.pathUtilService.getNearestOrRootArrayParentInPath(fieldPathArray, true);
var listPath = this.pathUtilService.toPathString(listPathArray);
if (this.pageChange$Map[listPath]) {
var itemIndex = fieldPathArray[listPathArray.length];
var itemsPerPage = this.itemsPerPageMap[listPath];
var page = Math.floor((itemIndex / itemsPerPage) + 1);
this.pageChange$Map[listPath].next(page);
}
};
ListPageChangerService.prototype.registerPaginatedList = function (listPath, itemsPerPage) {
this.itemsPerPageMap[listPath] = itemsPerPage;
this.pageChange$Map[listPath] = new ReplaySubject(1);
return this.pageChange$Map[listPath];
};
return ListPageChangerService;
}());
export { ListPageChangerService };
ListPageChangerService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
ListPageChangerService.ctorParameters = function () { return [
{ type: PathUtilService, },
]; };
//# sourceMappingURL=list-page-changer.service.js.map