UNPKG

@nova-ui/dashboards

Version:

Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and

91 lines 5.18 kB
"use strict"; // © 2022 SolarWinds Worldwide, LLC. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. Object.defineProperty(exports, "__esModule", { value: true }); exports.TableDataSourceAdapter = void 0; const tslib_1 = require("tslib"); const core_1 = require("@angular/core"); // eslint-disable-next-line import/no-deprecated const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const bits_1 = require("@nova-ui/bits"); const data_source_adapter_1 = require("./data-source-adapter"); const pizzagna_service_1 = require("../../pizzagna/services/pizzagna.service"); const types_1 = require("../../services/types"); const types_2 = require("../../types"); let TableDataSourceAdapter = class TableDataSourceAdapter extends data_source_adapter_1.DataSourceAdapter { constructor(eventBus, dataSource, pizzagnaService, virtualViewport) { super(eventBus, dataSource, pizzagnaService); this.virtualViewport = virtualViewport; } setupRefreshListener() { // Note: We should wait until TableWidget is ready to be able to proceed with reset event // We can also listen after SCROLL_NEXT_PAGE instead of WIDGET_READY because right now // they are executed simultaneously but we don't know how things will change in the future const refresh$ = (0, rxjs_1.zip)(this.eventBus.getStream(types_1.WIDGET_READY), this.eventBus.getStream(types_1.REFRESH)).pipe( // Note: Using startWith() to re-trigger the REFRESH stream that was triggered at least on time before WIDGET_READY // eslint-disable-next-line import/no-deprecated (0, operators_1.switchMap)(() => // eslint-disable-next-line import/no-deprecated this.eventBus.getStream(types_1.REFRESH).pipe((0, operators_1.startWith)(undefined))), (0, operators_1.tap)(() => this.virtualViewport.reset({ emitFirstPage: false })), (0, operators_1.map)(() => { })); // eslint-disable-next-line import/no-deprecated (0, rxjs_1.merge)(refresh$, this.eventBus.getStream(types_1.SCROLL_NEXT_PAGE), this.eventBus.getStream(types_1.SET_NEXT_PAGE)) .pipe( // Note: While SCROLL_NEXT_PAGE is triggered on TableWidget initialization aka WIDGET_READY // we might encounter REFRESH and SCROLL_NEXT_PAGE triggered at the same time. // Setting a small debounceTime will help us manage simultaneous requests (0, operators_1.debounceTime)(10), (0, operators_1.tap)(() => this.handleRefresh()), (0, operators_1.takeUntil)(this.destroy$)) .subscribe(); } updateAdapterProperties(properties) { this.dataPath = properties.dataPath; this.dataFieldsPath = properties.dataFieldsPath; this.totalItemsPath = properties.totalItemsPath; } updateOutput(output) { const total = output?.paginator?.total; const items = output?.repeat?.itemsSource; const dataFields = output?.dataFields; this.pizzagnaService.setProperty({ pizzagnaKey: types_2.PizzagnaLayer.Data, componentId: this.componentId, propertyPath: [this.totalItemsPath], }, total); this.pizzagnaService.setProperty({ pizzagnaKey: types_2.PizzagnaLayer.Data, componentId: this.componentId, propertyPath: [this.dataPath], }, items); this.pizzagnaService.setProperty({ pizzagnaKey: types_2.PizzagnaLayer.Data, componentId: this.componentId, propertyPath: [this.dataFieldsPath], }, dataFields); } }; exports.TableDataSourceAdapter = TableDataSourceAdapter; exports.TableDataSourceAdapter = TableDataSourceAdapter = tslib_1.__decorate([ tslib_1.__param(0, (0, core_1.Inject)(types_2.PIZZAGNA_EVENT_BUS)), tslib_1.__param(1, (0, core_1.Inject)(types_2.DATA_SOURCE)), tslib_1.__param(3, (0, core_1.Optional)()), tslib_1.__metadata("design:paramtypes", [bits_1.EventBus, Object, pizzagna_service_1.PizzagnaService, bits_1.VirtualViewportManager]) ], TableDataSourceAdapter); //# sourceMappingURL=table-data-source-adapter.js.map