import { get } from 'lodash'; import { BI } from './bi.constants'; import { StoreState } from '../../../common/store/store.types'; import { createSelector } from 'reselect'; import { selectPools } from '../../pools/store/pool.selectors'; import { ReportFilter } from 'app/shared/types/biReport.types'; import { FinanceReport } from './bi.types'; import { selectActivePoolId } from 'app/modules/earnings/store/earnings.selectors'; const biStateSlice = (state: StoreState) => state.bi; export const selectBiReports = (state: StoreState) => biStateSlice(state).reports; export const selectEmbeddedBiReportData = createSelector( [ selectBiReports, selectActivePoolId, selectPools ], (reports, poolId, pools) => { const { finance } = reports; const currentPoolName = get(pools.find((pool) => pool.id === poolId), 'name', null); const financeReportPool = get(BI.CUSTOM_POOLS, currentPoolName, currentPoolName); let filters: ReportFilter[] = []; if (financeReportPool) { filters.push({ $schema: 'http://powerbi.com/product/schema#basic', displaySettings: { isHiddenInViewMode: false }, filterType: 1, operator: 'In', target: { column: 'Profit Center Name', table: 'Profit Center', }, values: financeReportPool ? [ financeReportPool ] : [], }); } const reportId = finance ? (finance as FinanceReport).id : null; const reportUrl = finance ? (finance as FinanceReport).embedUrl : null; const token = finance ? (finance as FinanceReport).token : null; return { reportId, reportUrl, token, filters, }; } );