UNPKG

@nodata/render

Version:

Allows to dynamically render nodata components

1 lines 10.3 kB
"use strict";var __extends=this&&this.__extends||function(){var e=function(r,t){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])})(r,t)};return function(r,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=r}e(r,t),r.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var r,t=1,o=arguments.length;t<o;t++)for(var n in r=arguments[t])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e}).apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var n=Object.getOwnPropertyDescriptor(r,t);n&&!("get"in n?!r.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,n)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(r,e,t);return __setModuleDefault(r,e),r},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DashboardRenderer=void 0;var rxjs_1=require("rxjs"),operators_1=require("rxjs/operators"),slideshow_1=require("@nodata/slideshow"),error_1=require("@nodata/error"),NodataActions=__importStar(require("@nodata/action")),action_1=require("@nodata/action"),datablock_renderer_builder_1=require("./datablock-renderer-builder"),preset_filter_1=__importDefault(require("./preset-filter")),DashboardRenderer=function(e){function r(r){var t=e.call(this)||this;return t.datablockRenderers={},t.datablockRenderersByCode={},t.presetFilterRenderers={},t.executionContext=null,t.datablockRendererBuilder=new datablock_renderer_builder_1.DatablockRendererBuilder,t.animationEnabled=!0,t.executionContext=r,t.executionContext||(t.executionContext=new action_1.DatablockExecutionContext),t}return __extends(r,e),r.prototype.getRenderDatablock=function(e,r){var t=this,o=this.datablockRenderers[r].renderer;return o?(0,rxjs_1.of)(o.updateDatablockRenderer(e,r)):this.datablockRendererBuilder.createDatablockRenderer(e,r,this.executionContext.with({})).pipe((0,operators_1.map)((function(e){var o=e[0],n=e[1];return t.datablockRenderers[r].renderer=o,n})))},r.prototype.on=function(r){var t=this;return e.prototype.on.call(this,r).registerResourceRenderer("datablock",{render:function(e,r){if("number"==typeof r)return t.datablockRenderers[r]||(t.datablockRenderers[r]={renderer:null,subject:new rxjs_1.ReplaySubject(1),subscription:null}),new Promise((function(o,n){requestAnimationFrame((function(){t.datablockRenderers[r].subscription=t.getRenderDatablock(e,r).pipe((0,operators_1.switchMap)((function(e){return e})),(0,operators_1.tap)((function(){t.animationEnabled||t.disableAnimations()}))).subscribe(o,(function(e){t.datablockRenderers[r].renderer&&t.datablockRenderers[r].renderer.showErrorState(),(0,error_1.dispatchError)((0,error_1.createError)("NDR-DSHB-002","Unable to fetch datablock from dashboard renderer.",e)),n("Unable to fetch datablock from dashboard renderer.")}),(function(){return o(null)}))}))})).then((function(){var e=t.datablockRenderers[r].renderer;t.datablockRenderers[r].subject.next(e),t.datablockRendererSelectorByCode(e.datablockViewCode),t.datablockRenderersByCode[e.datablockViewCode].next(e)})).catch((function(e){var o=t.datablockRenderers[r];throw o&&o.subject.next(o.renderer),e}))},destroy:function(e,r){var o=t.datablockRenderers[r];if(o){if(o.renderer){e.className="",o.renderer.clearExecutionContextCache(),o.renderer.destroy();var n=t.datablockRenderersByCode[o.renderer.datablockViewCode];n&&n.complete()}o.subject.complete();var a=o.subscription;a&&a.unsubscribe(),delete t.datablockRenderers[r]}}}).registerResourceRenderer("filter",{render:function(e,r){if("number"==typeof r)return t.presetFilterRenderers[r]||(t.presetFilterRenderers[r]=new preset_filter_1.default(t.executionContext.with({}))),new Promise((function(o,n){requestAnimationFrame((function(){t.presetFilterRenderers[r].enableAllSelectable(),t.presetFilterRenderers[r].enableWidgetEmpty(),t.presetFilterRenderers[r].on(e).initializeExecutionContext(r).pipe((0,operators_1.mergeMap)((function(){return t.presetFilterRenderers[r].fetch(r)}))).subscribe((function(){return o()}),(function(o){t.presetFilterRenderers[r].showErrorState(e),(0,error_1.dispatchError)((0,error_1.createError)("NDR-DSHB-003","Unable to fetch presetfilter from dashboard renderer.",o)),n()}),(function(){return o()}))}))}))},destroy:function(e,r){e.className="",t.presetFilterRenderers[r]&&(t.presetFilterRenderers[r].destroy(),delete t.presetFilterRenderers[r])}}).render(),this},r.prototype.fetch=function(e){return NodataActions.retrieveDashboard(e).pipe(this.updateDashboard(),(0,operators_1.catchError)((function(e){return(0,error_1.rethrowError)(e,"NDR-DSHB-001","Unable to fetch dashboard.")})))},r.prototype.fetchByCode=function(e){return NodataActions.retrieveDashboardByCode(e).pipe(this.updateDashboard(),(0,operators_1.catchError)((function(e){return(0,error_1.rethrowError)(e,"NDR-DSHB-004","Unable to fetch dashboard by code.")})))},r.prototype.updateDashboard=function(){var e=this;return function(r){return r.pipe((0,operators_1.tap)((function(r){return e.updateSlideshowConfig(r.plan)})),(0,operators_1.tap)((function(r){return e.updateCurrentPagePath([0])})),(0,operators_1.tap)((function(r){return e.dashboardId=r.id})),(0,operators_1.map)((function(){})))}},r.prototype.datablockRendererSelector=function(e){return this.datablockRenderers[e]||(this.datablockRenderers[e]={renderer:null,subject:new rxjs_1.ReplaySubject(1),subscription:null}),this.datablockRenderers[e].subject},r.prototype.datablockRendererSelectorByCode=function(e){return this.datablockRenderersByCode[e]||(this.datablockRenderersByCode[e]=new rxjs_1.ReplaySubject(1)),this.datablockRenderersByCode[e]},r.prototype.datablockRendererPluginSelector=function(e){return this.datablockRendererSelector(e).pipe((0,operators_1.map)((function(e){return e.getRenderingPlugin()})))},r.prototype.presetFilterRendererSelector=function(e){return this.presetFilterRenderers[e]||null},r.prototype.getDatablockRendererBuilder=function(){return this.datablockRendererBuilder},r.prototype.disableAnimations=function(){var e=this;return this.animationEnabled=!1,Object.keys(this.datablockRenderers).forEach((function(r){return e.datablockRenderers[r].renderer.disableAnimations()})),this},r.prototype.destroy=function(){var r=this;return Object.keys(this.datablockRenderers).forEach((function(e){var t=r.datablockRenderers[e];t.renderer&&t.renderer.destroy(),t.subscription&&t.subscription.unsubscribe(),t.subject.complete()})),Object.keys(this.presetFilterRenderers).forEach((function(e){r.presetFilterRenderers[e].destroy()})),e.prototype.destroy.call(this),this},r.prototype.print=function(e,r){return NodataActions.printDashboard(e,this.dashboardId,r).pipe((0,operators_1.catchError)((function(e){return(0,error_1.rethrowError)(e,"NDR-DSHB-101","Unable to print dashboard.")})))},r.prototype.printCurrentPage=function(e,r){var t=this.currentPagePathSelector();return NodataActions.printDashboard(e,this.dashboardId,__assign(__assign({},r),{pages:[t]})).pipe((0,operators_1.catchError)((function(e){return(0,error_1.rethrowError)(e,"NDR-DSHB-101","Unable to print dashboard.")})))},r.prototype.initializeExecutionContext=function(e){var r=this;return(0,rxjs_1.zip)(NodataActions.retrieveDashboard(e),NodataActions.retrievePresetFilters()).pipe((0,operators_1.mergeMap)((function(e){return NodataActions.retrieveDashboardPresetFiltersByDashboardCode(e[0].code).pipe((0,operators_1.tap)((function(t){t.forEach((function(t){var o=e[1].find((function(e){return e.id===t.idPresetFilter}));r.executionContext.updateMappingEntry(o.code,o.defaultValue),r.executionContext.contextPresetFilters[o.code]=t.filteredField}))})),(0,operators_1.map)((function(){})))})),(0,operators_1.catchError)((function(e){return(0,error_1.rethrowError)(e,"NDR-DSHB-201","Unable to initialize Datablock Execution Context")})))},r.prototype.updateDecContextPresetFilterEntry=function(e,r,t){this.datablockRenderers[e]?(this.datablockRenderers[e].renderer.updateDecContextPresetFilterEntry(r,t),this.restartDatablockRendererSubscription(e)):console.warn("Unable to retrieve Datablock renderer of Datablockview ".concat(e))},r.prototype.deleteDecContextPresetFilterEntry=function(e,r){this.datablockRenderers[e]?(this.datablockRenderers[e].renderer.deleteDecContextPresetFilterEntry(r),this.restartDatablockRendererSubscription(e)):console.warn("Unable to retrieve Datablock renderer of Datablockview ".concat(e))},r.prototype.restartAllDatablocksRendererSubscription=function(){var e=this;Object.keys(this.datablockRenderers).forEach((function(r){e.restartDatablockRendererSubscription(Number(r))}))},r.prototype.restartDatablockRendererSubscription=function(e){var r=this;this.datablockRenderers[e].subscription.unsubscribe(),this.datablockRenderers[e].subscription=this.datablockRenderers[e].renderer.fetch(e).subscribe((function(){r.datablockRenderers[e].renderer.hideErrorState(),r.datablockRenderers[e].renderer.getRenderingPlugin().render()}),(function(t){r.datablockRenderers[e].renderer.showErrorState(),(0,error_1.dispatchError)((0,error_1.createError)("NDR-DSHB-002","Unable to fetch datablock from dashboard renderer.",t))}))},r.prototype.updatePresetFilterRendererDatablocks=function(e){this.presetFilterRenderers[e]&&this.presetFilterRenderers[e].fetch(e).subscribe(null,(function(e){return(0,error_1.dispatchError)((0,error_1.createError)("NDR-DSHB-003","Unable to fetch presetfilter from dashboard renderer.",e))}))},r}(slideshow_1.Slideshow);exports.DashboardRenderer=DashboardRenderer,exports.default=DashboardRenderer;