{"version":3,"sources":["redux/types.ts","redux/reducers/filtersReducer.ts","redux/reducers/userReducer.ts","redux/reducers/cfgReducer.ts","redux/reducers/pinReducer.ts","common/utility/getImpersonationFromLS.ts","redux/reducers/impersonateReducers.ts","redux/reducers/modalReducer.ts","redux/reducers/cashFlowModalReducer.ts","redux/reducers/redirectingToDocuSignReducer.ts","redux/reducers/docuSignReducer.ts","redux/reducers/investorReducer.ts","redux/reducers/multipleDownloadReducer.ts","redux/reducers/boardsReducer.tsx","redux/store.ts","common/services/translations/initTranslations.ts","i18n.js","common/hooks/useTranslate.ts","core/ui/loaders/componentLoader/componentLoader.tsx","core/ui/loadingScreen/loadingScreen.tsx","common/services/identity/Identity.tsx","common/utility/cleaningSessionStorage.ts","common/services/identity/AwsCognitoIdentity.tsx","common/services/config/cognitoConfigStore.ts","common/services/identity/AzureIdentity.tsx","common/services/config/azureConfigStore.ts","common/services/identity/IdentityManagerFactory.tsx","common/services/config/baseUrlConfigStore.ts","common/utility/cfgGetter.ts","common/services/http/httpService.ts","common/services/http/agreementService.ts","common/services/http/userService.ts","common/hooks/useIdentityManager.ts","common/utility/getDateAndTime.ts","common/services/http/documentsService.ts","core/documents/components/documentsTable/DocumentSliceNode.ts","core/documents/components/documentsTable/DocumentSliceHierarchy.ts","context/filterContext/filterCtx.ts","context/docsContext/docsCtx.ts","core/ui/icon/icon.tsx","core/documents/components/cells/headerCell/headerCell.tsx","core/ui/table/cells/loadingCell/loadingCell.tsx","core/documents/components/cells/dateCell/dateCell.tsx","core/documents/components/cells/chipsCell/chipsCell.tsx","core/documents/components/cells/readCell/readCell.tsx","core/ui/loaders/pinLoader/pinLoader.tsx","core/ui/button/pin/pin.tsx","core/documents/components/cells/actionsCell/actionsCell.tsx","core/documents/components/cells/documentNameCell/documentNameCell.tsx","core/ui/filters/docNameFilter/docNameFilter.tsx","core/ui/filters/fundsFilter/fundsFilter.tsx","common/services/http/fundsService.ts","core/ui/filters/investorsFilter/investorsFilter.tsx","common/services/http/investorsService.ts","core/ui/infoTooltip/infoTooltip.tsx","core/ui/filters/classificationsFilter/classificationsFilter.tsx","core/ui/filters/readFilter/readFilter.tsx","core/ui/filters/dateFilter/dateFilter.tsx","core/ui/filters/periodsFilter/periodsFilter.tsx","core/documents/components/filters/documentFilters.tsx","core/ui/loaders/tableLoader/tableLoading.tsx","core/ui/table/cells/textCell/textCell.tsx","common/utility/capitalizeFirstLetter.ts","core/documents/components/cells/treelistCell/treeListCell.tsx","common/utility/getPeriodRange.ts","common/utility/removeFirstItemFromArray.ts","core/documents/components/cells/mobileNameCell/mobileNameCell.tsx","core/documents/components/documentsTable/documentsTable.tsx","common/utility/debounce.ts","common/hooks/useWidthToElement.ts","core/ui/filters/investorDropdownFilter/investorDropdownFilter.tsx","core/layout/header/header.tsx","core/layout/main/main.tsx","core/documents/pages/documents/documents.tsx","core/ui/card/card.tsx","core/homepage/components/docPinSection/cardsGrid/cardsGrid.tsx","core/homepage/components/docPinSection/docPinSection.tsx","core/homepage/components/activityFeed/cells/actionsCell/actionsCell.tsx","core/ui/filters/activityFeedPeriodFilter/activityFeedPeriodFilter.tsx","core/ui/filters/typePickerFilter/typePickerFilter.tsx","core/homepage/components/activityFeed/filters/activityTableFilters.tsx","core/homepage/components/activityFeed/cells/boardNameCell/boardNameCell.tsx","core/homepage/components/activityFeed/activityTable/activityTable.tsx","common/services/http/docuSignService.ts","core/homepage/components/docuSign/docuSign.tsx","models/AnalysisContentObjectModel.ts","models/AnalysisContentWidgetModel.ts","models/AnalysisContentModel.ts","common/services/http/homeService.ts","common/utility/arrayMove.ts","core/ui/loaders/outletLoader/outletLoader.tsx","core/dashboards/components/widget/chartWidget/generateAxiesChart.ts","core/dashboards/components/widget/chartWidget/generateCircleChart.ts","common/services/http/analysisContentService.ts","models/AnalysisContentWidgetDataModel.ts","core/dashboards/components/widget/chartWidget/useGetChartData.ts","common/hooks/useClickOutside.ts","core/dashboards/components/widget/widgetTitle/contextMenuWidget.tsx","core/dashboards/components/widget/widgetTitle/customisationRibbon.tsx","core/dashboards/components/widget/widgetTitle/widgetCommands.tsx","core/dashboards/components/widget/widgetTitle/notes.tsx","core/dashboards/components/widget/widgetTitle/widgetTitle.tsx","core/dashboards/components/widget/chartWidget/gridCell.tsx","common/services/config/brandingStore.ts","core/dashboards/components/widget/chartWidget/chartWidget.tsx","core/dashboards/components/widget/gridWidget/useGetGridData.ts","core/ui/button/switchButtons/switchButtons.tsx","core/dashboards/components/widget/cashflow/cells/cashflowCell/cashflowCell.tsx","core/dashboards/components/widget/gridWidget/cell/gridFooterCell/gridFooterCell.tsx","core/dashboards/components/widget/gridWidget/cell/staticPropertyCell/staticPropertyCell.tsx","core/dashboards/components/widget/gridWidget/gridWidget.tsx","core/dashboards/components/widget/summaryWidget/useGetSummaryData.ts","core/dashboards/components/widget/summaryWidget/summaryWidget.tsx","core/dashboards/components/widget/gridWidget/cell/gridHeaderCell/gridHeaderCell.tsx","core/dashboards/components/widget/treeListWidget/useGetTreelistData.tsx","core/dashboards/components/widget/treeListWidget/treeListWidget.tsx","core/dashboards/components/widget/mapWidget/useGetMapData.ts","core/dashboards/components/widget/mapWidget/mapWidget.tsx","core/homepage/components/widgetPinSection/widgetWrap/widgetWrap.tsx","core/dashboards/components/customisationGuide/customisationGuide.tsx","core/homepage/components/widgetPinSection/widgetPinSection.tsx","core/homepage/pages/home/home.tsx","core/ui/card/cardWrapper/cardWrapper.tsx","core/profile/components/contactDetails/locationsFilter/locationsFilters.tsx","core/profile/components/contactDetails/contactDetails.tsx","core/profile/components/userSettings/userSettings.tsx","common/utility/timeDelta.ts","core/profile/components/activityLog/cells/activityCell/activityCell.tsx","core/profile/components/activityLog/activityLog.tsx","core/profile/components/acceptedAgreements/cells/agreementNameCell/agreementNameCell.tsx","core/profile/components/acceptedAgreements/acceptedAgreements.tsx","core/profile/pages/profile/profile.tsx","core/ui/pdfViewer/pdfDocumentControls/pdfDocumentControls.tsx","core/ui/pdfViewer/pdfTitle/pdfTitle.tsx","core/ui/pdfViewer/pdfViewer.tsx","core/ui/pdfPage/pdfPage.tsx","core/agreements/components/cells/agreementCell/agreementCell.tsx","core/agreements/components/agreementsTable/agreementTable.tsx","core/ui/button/button.tsx","core/ui/logo/logo.tsx","core/agreements/pages/agreements/agreements.tsx","core/agreements/pages/agreementPdfPage/agreementPdfPage.tsx","core/login/pages/login/login.tsx","core/login/pages/notAuthorized/notAuthorized.tsx","core/ui/navigation/navigation.tsx","assets/images/logoSidebar.svg","core/layout/sidebar/sidebar.tsx","core/ui/userNavigation/navigationButton/navigationButton.tsx","core/ui/userNavigation/userNavigation.tsx","core/ui/userIcon/userIcon.tsx","common/services/config/emailStore.ts","core/ui/contactTooltip/contactTooltip.tsx","assets/images/logoNav.svg","core/ui/responsiveNavigation/responsiveNavigation.tsx","common/utility/setImpersonationToLS.ts","common/hooks/useForceUpdate.tsx","core/ui/docuSignDropdown/docuSignDropdown.tsx","core/layout/topbar/topbar.tsx","core/ui/modal/actionForbidden/actionForbidden.tsx","core/dashboards/components/widget/cashflow/cells/amountCell/amountCell.tsx","core/dashboards/components/widget/cashflow/cashFlowModal/cashFlowModal.tsx","core/ui/modal/docuSignLoadingModal/docuSignLoadingModal.tsx","core/ui/fade/fade.tsx","core/ui/modal/multipleDownload/multipleDownload.tsx","core/ui/modal/selectedDocsLimitModal/selectedDocsLimitModal.tsx","core/layout/basicScreeen/basicScreen.tsx","core/impersonate/pages/impersonate/impersonate.tsx","core/docuSign/pages/docuSignRedirect/docuSignRedirect.tsx","core/ui/noMatch/noMatch.tsx","core/dashboards/pages/boards/boardsContainer.tsx","core/dashboards/components/widget/widget.tsx","core/dashboards/components/dashboardObjectPicker/dashboardObjectPicker.tsx","core/dashboards/components/boardsDropdown/boardsDropdown.tsx","core/dashboards/components/board/board.tsx","core/errorPage/pages/errorPage/errorPage.tsx","core/dashboards/components/boardsTabs/boardsTabs.tsx","core/dashboards/pages/boards/investorBoardsContainer.tsx","core/agreements/pages/agreementDecline/agreementDecline.tsx","core/docuSign/pages/docuSignResponsive/docuSignResponsive.tsx","routes/routerConfig.tsx","context/filterContext/filterContext.tsx","context/docsContext/docsContext.tsx","routes/routes.tsx","common/services/config/initCfg.ts","common/utility/getBrowserLanguage.ts","common/utility/initLanguage.ts","core/ui/scrollToTop/ScrollToTop.tsx","App.js","reportWebVitals.js","index.js"],"names":["FILTERS","SET_INVESTORS","SET_NAME","ACCEPT_AGREEMENT","PIN_TRIGGER","SET_PINS","SET_IMPERSONATE_ID","SET_IMPERSONATE_NAME","IMPERSONATE_ON","IMPERSONATE_OFF","CAN_IMPERSONATE","SWITCH_MODAL","SWITCH_CASH_FLOW_MODAL","SWITCH_REDIRECTING_TO_DS_MODAL","SWITCH_MULTIPLE_DOWNLOAD_MODAL","REACHED_LIMIT_MODAL","CLOSE_REACHED_LIMIT_MODAL","CLOSE_MULTIPLE_DOWNLOAD_MODAL","SWITCH_DOCUSIGN_DROPDOWN","CLOSE_DOCUSIGN_DROPDOWN","SET_TOOLTIP","SET_INVESTOR","SET_ACTIVE_BOARD","initialState","filters","filtersReducer","state","action","type","searchInitialState","name","showAgreement","lpHideDocSlicerTooltip","userReducer","value","baseUrl","cfgReducer","pin","pins","pinReducer","map","x","assignId","getImpersonationFromLS","impersonate","sessionStorage","getItem","impersonateId","impersonateName","canImpersonate","Boolean","showModal","data","cashFlowModalReducer","payload","currentItem","showRedirectingModal","redirectingToDocuSignReducer","docuSignDropdown","docuSignReducer","investor","investors","investorReducer","modalInfo","reachedLimit","multipleDownloadReducer","activeBoard","boardsReducer","rootReducer","combineReducers","search","searchReducer","user","cfg","impersonateReducers","modal","modalReducer","cashFlowModal","redirectingModal","multipleDownload","board","store","createStore","composeWithDevTools","initTranslations","fetch","then","res","status","json","console","log","en","translation","i18n","use","initReactI18next","init","partialBundledLanguages","ns","resources","lng","interpolation","escapeValue","useTranslate","useTranslation","t","ComponentLoader","className","Orbit","size","speed","color","LoadingScreen","Identity","Promise","resolve","accessToken","idToken","refreshToken","this","displayName","includes","split","word","join","URL","document","location","searchParams","get","cleaningSessionStorage","clear","storage","baseKey","verifierKey","stateKey","accessTokenKey","idTokenKey","refreshTokenKey","AwsCognitoIdentity","_expireLimit","_refreshTimer","generateVerifier","generateState","code","getUrlParameter","acquireTokens","window","history","replaceState","title","catch","tokens","startTokenRefreshTimer","err","error","assign","signInUrl","signOutUrl","forgotPwdUrl","getForgotPwdUrl","access","tokenExpiresIn","refreshTokens","token","decoded","jwtDecode","username","getTokenUrl","method","headers","body","getClientId","verifier","getRedirectUri","response","setTokens","setItem","refresh_token","access_token","id_token","refresh","clearTimeout","timer","setTimeout","Date","exp","getTime","now","getBaseUrl","getScope","challenge","toBase64Url","CryptoJS","SHA256","lib","WordArray","random","hash","toString","enc","Base64","replace","CognitoConfigStore","config","tokenUrl","clientId","redirectUri","scope","BASE_URL","TOKEN_URL","CLIENT_ID","REDIRECT_URI","SCOPE","FORGOT_PWD_URL","storageKey","AzureIdentity","_focusedAccount","_msalApp","_init","handleRedirectPromise","azAuthnResult","account","setFocusedAccount","getAccount","acquireToken","length","loginRedirect","scopes","concat","getScopes","prompt","removeItem","logoutRedirect","authResult","acct","errorMessage","indexOf","getUseB2c","authority","getPolicies","AUTHORITIES","FORGOT_PASSWORD","JSON","parse","getAllAccounts","stringify","acquireTokenSilent","slice","forceRefresh","PublicClientApplication","auth","SIGN_IN","knownAuthorities","AUTHORITY_DOMAIN","cache","cacheLocation","storeAuthStateInCookie","postLogoutRedirectUri","AzureConfigStore","useB2c","policies","USE_B2C","SCOPES","POLICIES","IdentityManager","manager","useCognito","cognitoConfig","azureConfig","BaseURLConfigStore","cfgGetter","ConfigurationInstance","instance","getStore","controller","Axios","initiateInterceptor","getState","AbortController","endpoint","interceptors","request","req","a","url","IdentityManagerFactory","getManager","reject","post","signal","put","delete","unacceptedAgreements","httpService","getEndpointURL","verifyUser","getImpersonate","impersonatorName","r","saveUserSettings","slicerTooltip","getUserSettings","settings","getAcceptedAgreements","getTyped","useIdentityManager","timeAndDate","today","getFullYear","getMonth","getDate","toLocaleTimeString","downloadDoc","doc","documentId","responseType","contentType","blob","Blob","label","saveAs","registerDownload","filterDocuments","documentName","funds","classifications","read","fromDate","toDate","startResult","maxResults","sortField","sortDir","publishedChecked","effectiveChecked","asOfDate","period","includeCount","parsedQuery","queryString","id","objectId","readFlag","startDate","endDate","fromPublishDate","formatDate","publishDate","date","includeTotalCount","stringified","returnPdf","uint8","Uint8Array","setPin","removePin","DocumentSliceNode","parent","children","level","nodeId","_path","Array","child","findChild","push","find","item","nodes","ancestors","DocumentSliceHierarchy","structure","_data","_typeStructure","_typeFields","_nodes","Map","year","orderBy","sortChildren","typeStructure","lookup","fields","i","node","_descendentNodes","set","clickedNode","lastSlice","forEach","addChildren","_isDescendent","addChild","ancestor","defaultValues","docName","docNameActivity","fundsActivity","typePickerBoard","typePickerDocument","investorsActivity","classificationsActivity","publishChecked","toPublishDate","classificationToggle","fundsToggle","investorsToggle","periodToggle","slicerChoices","initialGroup","activityFeedFromDate","setToDate","e","setFromDate","setPublishChecked","setEffectiveChecked","setAsOfDate","setPeriod","setTypePickerBoard","setTypePickerDocument","setClassificationToggle","setFundsToggle","setInvestorsToggle","setPeriodToggle","setSlicerChoices","setInitialGroup","setActivityFeedFromDate","clearFilters","clearFiltersActivity","hasFilters","hasActivityFilters","FilterCtx","React","createContext","selectedItemsDocIds","selectedItemsIds","setSelectedItemsDocIds","setSelectedItemsIds","DocsCtx","Icon","onClick","disabled","style","undefined","HeaderCell","props","headerCellStyles","field","onDownloadClick","LoadingCell","shape","width","DateCell","rowType","dataItem","treelist","intl","useInternationalization","ChipsCell","chips","cv","useTooltip","ReadCell","useState","isRead","setIsRead","useEffect","PinLoader","Pin","isPinned","clickHandler","loading","useSelector","dispatch","useDispatch","pinClickHandler","ActionsCell","pinned","setPinned","docsCtx","useContext","displayDocNumber","docLabel","folderLabel","isDocNumberShown","isCheckedId","onUncheck","onCheck","DocumentNameCell","linkToOrigin","origin","docId","idField","Tooltip","anchorElement","icon","fileType","toLowerCase","to","fontWeight","updateIsReadFlag","DocNameFilter","table","filterCtx","handleInputChange","debounce","event","setDocName","target","setDocNameActivity","placeholder","onChange","defaultValue","FundsFilter","toggleOn","setValue","filterChoice","setFilterChoice","cashChoice","setCashChoice","checked","setChecked","impersonation","getFunds","setFunds","setFundsActivity","textField","dataItemKey","filterable","onFilterChange","filterBy","filter","Switch","onLabel","offLabel","tempArray","tempGroupsArray","InvestorsFilter","getInvestors","setInvestors","setInvestorsActivity","InfoTooltip","tooltipHidden","setTooltipHidden","settingHideTooltip","setting","ClassificationsFilter","getClassifications","getFeedClassifications","setClassifications","setClassificationsActivity","readStates","text","ReadFilter","setRead","DateFilter","dateType","minDate","handleDateChange","getDefaultValue","defaultPeriod","periodNumber","PeriodsFilter","periods","setPeriods","frequency","getPeriods","tempPeriods","defaultItem","DocumentFilters","moreFiltersShown","setMoreFiltersShown","doRerender","setDoRerender","uniqueKey","setUniqueKey","toggleFilters","Checkbox","TableLoading","tableElement","current","ReactDOM","createPortal","element","TextCell","grid","startsWith","capitalizeFirstLetter","charAt","toUpperCase","TreeListCell","expanded","format","ariaColumnIndex","getNestedValue","navigationAttributes","useTableKeyboardNavigation","dataAsString","prefix","onKeyDownHandler","useCallback","isDefaultPrevented","keyCode","Keys","enter","expandable","preventDefault","onExpandChange","icons","_x","defaultRendering","classNames","colSpan","role","onKeyDown","render","call","getPeriodRange","endMonth","startMonth","rangeObject","removeFirstItemFromArray","src","index","MobileNameCell","navigate","useNavigate","investorId","boardId","contentId","initialSort","dir","subItemsField","expandField","DocumentsTable","documents","setDocuments","setLoading","total","setTotal","skip","setSkip","sort","setSort","hierarchyData","setHierarchyData","setExpanded","sliceArray","setSliceArray","sliceSort","setSliceSort","isFetching","useRef","tableRef","docHierarchyRef","pageSize","isMultipleDownloadOn","limitReached","prevState","handleDownloadClick","idArray","currentMoment","getDateAndTime","saveMultipleDocuments","TextCellDC","TextCellTreelist","DateCellTreelist","columns","headerCell","cell","onMultipleDownloadClick","sortable","fetchDocuments","start","Math","max","results","generateDocuments","finally","totalCount","docs","fill","handlePageChange","page","Number","isNaN","fetchRequired","handleSortChange","numberOfIdSplits","sliceTypes","getSlices","generate","isSlicerOn","scrollable","allowUnsort","rowHeight","ref","onPageChange","onSortChange","minResizableWidth","TreeList","dataTree","mapTree","extendDataItem","processData","ancestorsNodes","periodData","range","formattedAncestors","parentsArray","getDocsForSlice","sortEvent","resizable","func","timeout","wait","args","context","apply","useWidthToElement","setWidth","offset","handleResize","offsetWidth","addEventListener","removeEventListener","InvestorDropdownFilter","onChangeCallback","useParams","wrapperRef","maxWidth","parseInt","Header","additionalTitle","onInvestorChange","investorDropdown","Main","setRender","Documents","subtitle","Card","fundName","objectName","CardsGrid","DocPinSection","setPins","getPins","setIsPinned","periodsStates","periodName","ActivityFeedPeriodFilter","TypePickerFilter","ActivityTableFilters","BoardNameCell","ActivityTable","screenSize","setScreenSize","collapsed","setCollapsed","TextCellAt","fetchActivityFeed","setDate","getUserActivityFeed","screen","getSignRequirements","DocuSign","signData","setSignData","showDocuSign","setShowDocuSign","goToDocuSign","key","isSigned","AnalysisContentObjectModel","analysisContentObject","nodeHierarchy","parentObjectPath","objectPath","nodesOfObject","definitionPath","_buildNodeHierarchy","isDescendent","parentNode","objectNode","findNode","exclude","fullName","childNodes","addNode","items","addNodeAndDescendents","childrenField","descendent","findNodeById","splice","remove","isEq","loadInto","isGroup","_loadChildNodesBypassGroups","categoryTypeId","categoryLevel","categoryNodes","parentId","cmd","AnalysisContentWidgetModel","analysisContentWidget","widgetTitle","columnSpan","rowSpan","setup","templateWidgetId","availablePagesByObject","sourceData","_objectNodeExcludeLookup","_objectNodeLookup","visible","contentObject","nodesExcludedForObject","_buildObjectNodeLookup","idLookup","loadNodesForObject","lookupSync","_this","setupJson","sliceGroup","nodesFor","groupNode","_addUpdateNode","ln","objectNodes","exlookup","fromTemplate","templateWidget","AnalysisContentModel","analysisContent","templateId","scenarios","widgets","objectDefinitions","scenarioIds","scenarioNodes","objects","timePeriods","contentNodes","measures","staticProperties","suppressLocalCurrency","userContent","loadWidgets","templateWidgets","addWidget","findWidget","w","widget","findObject","parentObject","findObjectByPath","_objectPath","path","loadWidgetNodes","loadWidgetNodesForObject","widgetObj","object","objectObj","pinWidget","arrayMove","arr","oldIndex","newIndex","tempArr","elm","OutletLoader","generateAxisChart","setCategories","setValueAxis","setSeries","widgetData","chartData","selectedPeriod","setGridData","forLocalCurrency","_categoryMap","gridDataLocal","_clearEmptySeries","series","_seriesBaseOptions","_hasStack","stacked","stack","stackGroup","options","axis","lookupRef","line","markers","labels","seriesLabels","background","position","callbackTemplate","formatNumber","amount","percentage","scale","legend","tooltip","point","category","opacity","border","_registerGridRecord","val","periodHash","gridVal","periodId","measureId","_generateValueAxes","valueAxes","axes","axisCrossingValue","caption","isPercent","rotation","singlePeriod","widgetInstance","categories","currency","_generateCategoriesSingle","seriesHash","sectionSeries","ser","amountsIn","chartSeries","measure","axs","viewCashflows","_loadAxisDataSingle","_generateSeriesSingle","_generateCategories","seriesA","_loadAxisData","generateSeries","generateCircleCharts","_updatePercentages","percentages","gridData","_generateCircleData","_buildValueQueryString","nodeGroups","includeDescendants","templateProperties","d","nodeGroupId","templatePropertyId","nodeValues","dashboardId","query","customise","tempWidgetsPayload","widgetId","nodeStaticValues","nodeCombinedValues","hasBoards","AnalysisContentWidgetDataModel","groups","generateCurrencies","currencies","scenario","scenarioId","curr","focusedObject","childNodesBypassGroups","nodesToCheck","excludedNodes","exnode","j","sliceGroupLevel","defineNodesForCategoryTypeLevel","defineNodesForGroup","sliceType","defineNodesForSliceType","_removeExcluded","group","nodesForType","nodesForCategoryTypeLevel","focusedPeriod","focusedCurrency","useGetChartData","notes","selectedObject","boardSelectedCurrency","investorObjectId","focusedNode","compareNode","cashflowDialog","setChartData","chartType","setChartType","valueAxis","setCurrencies","selectedCurrency","setSelectedCurrency","cashFlow","setCashFlow","drillDownData","setDrillDownData","popupVisible","setPopUpVisible","breadCrumbs","setBreadcrumbs","gridOptions","setGridOptions","chartNotes","setChartNotes","chartContentEnriched","setChartContentEnriched","tempChartNotesArray","chartsMeasures","measuresArray","tempMeasure","getChartMeasures","widgetDataRef","_getData","fetchNodeData","drillDownInfo","enableDrillDown","hasNonGroups","extractNotesForChartItems","currentColumns","copiedChartContent","tempItemNotes","el","hasNotes","handleSeriesClickEventAxes","info","_seriesData","valueId","valueInfo","_onExcelExport","_gridOptions","periodTitle","locked","nodeColumns","column","headerAttributes","attributes","_columnHasValues","_clearEmptyGridColumns","dataSource","excel","fileName","excelExport","row","defineNodes","tempNoteMeasureId","filterNotesForChart","arrayToFind","handleFindSelection","fetchData","isMounted","_initChart","seriesClick","handleSeriesClickEventCircle","drillDown","defineNodesForParent","showParentOnDrillDown","appendParent","drillToLevel","newBrCrumbsArr","gridCellClick","handleCurrencyChange","useClickOutside","clickOutside","buttonId","handleClickOutside","contains","ContextMenuWidget","show","popupClass","animate","setGridView","gridView","onSVGExportClick","onImageExportClick","onPDFExportClick","Popup","CustomisationRibbon","handleWidgetMove","changeNewIndex","changeOldIndex","handleWidgetChange","homePage","findIndex","WidgetCommands","setPopup","setPosition","expand","onCollapse","onExpand","popup","handleUnpin","handleUnpinFromBoardCallback","handlePinCallback","unpinId","handlePinWidget","handleUnpinWidget","pinContentId","unPinWidget","handleUnpinFromBoard","unPinWidgetFromBoard","PinIcon","pinnedArray","objectMatch","investorMatch","left","pageX","top","pageY","Notes","forwardRef","currencyName","currencySymbol","notesShown","toggleNotes","currencySelection","localCurr","note","symbol","WidgetTitle","customisation","setNotesShown","notesWrapperRef","menuWrapperRef","currencyShortName","GridCell","chartClick","BrandingStore","logo_size","series_colors","ChartWidget","isMobile","setIsMobile","mm","PAGE_RECT","Rect","chart","popupWrapperRef","exportRef","createCFCell","columnName","serClickTest","nativeEvent","y","ChartMemo","useMemo","Chart","onSeriesClick","seriesColors","height","majorGridLines","idx","content","innerWidth","GridMemo","ExcelExport","ExcelExportColumn","ExcelExportColumnGroup","nestedItem","chartVisual","exportVisual","exportImage","dataURI","exportPDF","landscape","exportSVG","exportColumns","save","cashFlowInfo","drillDownNode","useGetGridData","selectedGrid","setSelectedGrid","sectionsForGrid","setSectionsForGrid","gridContentEnriched","setGridContentEnriched","preparedData","setPreparedData","gridNotes","setGridNotes","measureHash","setMeasureHash","staticPropertyHash","setStaticPropertyHash","objectValueMap","setObjectValueMap","_measureHash","_propertyHash","_objectValueMap","tempGridNotesArray","extractNotesForGridItems","definitions","copiedGridContent","prepRowHistorical","valueField","objectValue","prepRow","parentNodeId","fieldNameFor","_createDataValueInfo","dataRow","exportGrid","measFetch","definition","measuresForFetch","properties","propertiesForFetch","filterNotesForGrid","gridSectionArray","extractGridSectionsFromSetup","totalColumns","nodeName","isTotal","totalColumn","generateColumnsForGridSection","templateProp","_createMeasureHash","fetchCombinedData","fetchedData","measureValues","staticValues","staticRow","property","prepareData","totalField","totalAmt","prepareDataHistorical","gridExport","selectGridSection","SwitchButtons","buttons","btnId","setBtnId","button","CashflowCell","cashflowDialogInfo","fieldName","idAndType","idAndTypeFromField","objectVal","GridFooterCell","sum","tempValue","toLocaleString","StaticPropertyCell","staticProperty","formatValue","dataType","GridWidget","createCFCellGrid","createFooterCellGrid","createStaticPropertyCell","createTextCellGrid","numberCell","textAlign","footerCell","useGetSummaryData","summaryContent","setSummaryContent","summaryContentEnriched","setSummaryContentEnriched","values","setValues","summaryNotes","setSummaryNotes","showNote","setLocalCurr","extractNotesForSummaryItems","copiedSummaryContent","_formatStaticPropertyValue","parseFloat","_findMeasure","_findProperty","def","staticPropertiesForFetch","tempSummaryNotes","filterNotesForSummary","setInvestorId","formatAmount","staticVal","rawValue","initializeItems","handleSummaryValueClick","clickOutsideHandler","SummaryWidget","$$hashKey","notesElement","getElementById","GridHeaderCell","notesXAxis","setNotesXAxis","notesYAxis","setNotesYAxis","columnId","marginRight","useGetTreelistData","treelistContentEnriched","setTreelistContentEnriched","formattedData","setFormattedData","treelistNotes","setTreelistNotes","totalWidth","setTotalWidth","tempTreelistNotesArray","generateColumnsForSection","filterNotesForTreelist","copiedTreeListContent","treeWidth","createCFCellTreeList","createTextCellTreeList","createHeaderCellTreeList","_flattenNodesForDataTree","treeListSectionsArray","extractTreeListSectionsFromSetup","treeNodes","tn","tempElement","formatPreparedData","formattedAmount","generateColumns","selectTreeListSection","TreeListWidget","exportItem","treeToFlat","exporter","hierarchy","tableProps","useGetMapData","lat","setLat","long","setLong","zoom","setZoom","selectData","setSelectData","measureLayersState","setMeasureLayerState","selectedMeasureState","setSelectedMeasureState","measureLayers","selectedMeasure","getLayer","assembleLayerData","layer","measureName","latitude","longitude","dropdownData","meas","defineLayers","selectedData","onSelectChange","tileSubdomains","tileUrl","subdomain","attribution","bubbleStyle","MapWidget","center","onZoomStart","originalEvent","wheelDelta","urlTemplate","subdomains","locationField","WidgetWrap","setExpand","WidgetComponent","summary","CustomisationGuide","resetCustomisation","handleCustomisation","handleReset","handleCancel","saveCustomisation","noReset","modalElement","WidgetPinSection","setWidgets","initialWidgets","setInitialWidgets","unpinTrigger","setUnpinTrigger","setCustomisation","setNewIndex","setOldIndex","widgetToMove","setWidgetToMove","handleSetCustomisation","newArray","getHomePage","homePageResult","widgetsToShow","boards","getHomePageBoards","homePageBoardsResult","widgetsLocal","widgetToShow","pageId","scenarioSectionId","updatePinnedWidgets","Home","CardWrapper","gridColumnEnd","gridRowEnd","LocationsFilters","addresses","address","ContactDetails","profile","loadingProfile","setAddresses","phones","phone","number","emails","email","address1","city","postalCode","country","getTooltipLabel","tooltipSettingHidden","UserSettings","slicerTooltipSetting","tooltipSettingValue","tooltipValue","setTooltipValue","timeDelta","days","months","seconds","round","daysString","monthsString","ActivityCell","ActivityLog","activity","selectedField","loadingActivity","AgreementNameCell","agreementId","AcceptedAgreements","Profile","setActivity","acceptedAgreements","setAcceptedAgreements","userSettings","setUserSettings","firstName","lastName","setProfile","setLoadingProfile","setLoadingActivity","loadingAgreements","setLoadingAgreements","getProfile","getActivity","PdfDocumentControls","onBackClick","collapseClick","expandClick","onDownload","onPrint","onZoomOut","onZoomIn","onPreviousPage","numPages","onNextPage","onPin","shouldPin","backgroundColor","PdfTitle","PdfViewer","file","controlsBcgColor","setNumPages","pdfDocument","setPdfDocument","focusedPage","setFocusedPage","pages","setPages","localStorage","innerHeight","setSize","containerRef","loadPages","pagesToLoad","zoomFactor","startY","endY","loaded","factor","view","trunc","pageIndex","handleScroll","container","scrollTop","focusPage","changeZoom","scrollToPage","scrollBehavior","scrollTo","behavior","resize","promises","getPage","all","resolved","pageNum","printJS","createObjectURL","onScroll","onLoadSuccess","pdfDoc","margin","pageNumber","pdfjs","GlobalWorkerOptions","workerSrc","version","PdfPage","setFile","setDocument","getDocAssigment","returnPath","AgreementCell","AgreementTable","agreements","Button","buttonStyle","handleClick","Logo","logoSource","alt","Agreements","setAgreements","identity","signOut","AgreementPdfPage","appId","appName","inactive","agreement","setAgreement","useLocation","getAgreement","accept","acceptAgreements","setShowAgreement","Login","signIn","hasForgotPassword","forgotPassword","NotAuthorized","Navigation","showBoards","setShowBoards","svgContainerClass","svgContainerActiveClass","stopPropagation","end","isActive","marginTop","Sidebar","LogoSidebar","NavigationButton","iconName","UserNavigation","setNav","UserIcon","userName","setUserName","nav","trim","EmailStore","default_email","ContactTooltip","setTooltip","copySuccess","setCopySuccess","copyToClipBoard","copyMe","navigator","clipboard","writeText","ResponsiveNavigation","LogoNav","setImpersonationToLS","useForceUpdate","reload","DocuSignDropdown","Topbar","contactToggle","setContactToggle","responsiveNav","setResponsiveNav","setImpersonate","responsiveNavId","docuSignDropdownId","helpToolTipId","impersonateRedux","docuSignDropdownRedux","LogoSize","clearAllFilters","ActionForbidden","close","modalRef","handleEscape","AmountCell","measureInfo","CashFlowModal","displayData","setDisplayData","setMeasureInfo","collapsedState","setCollapsedState","showCashFlowModal","closeDialog","cashflowQuery","getCashflowData","newDataState","groupBy","setGroupIds","processWithGroups","groupId","newCollapsedIds","newData","setExpandedState","collapsedIds","_exportGrid","groupable","amountTitle","DocuSignLoadingModal","currentRedirectingItem","source","CancelToken","cancelToken","recipientId","returnUrl","hostname","port","generateDocuSignURL","href","uri","isCancel","cancel","Fade","fadeIn","fadeOut","time","shouldRender","animationFadeIn","animation","animationFadeOut","animationFadeInOut","onAnimationEnd","MultipleDownloadModal","SelectedDocsLimitModal","BasicScreen","SelectCell","subjectId","Impersonate","impersonateList","setImpersonateList","setImpersonatorName","DocuSignRedirect","eventState","setEventState","useSearchParams","eventStatus","updateEnvelopeState","redirect","NoMatch","BoardsContainer","match","useMatch","investorLoading","setInvestorLoading","noInvestors","setNoInvestors","getActiveInvestors","dataArr","Widget","display","DashboardObjectPicker","onObjectChangeCallback","dataArray","handleObjectChange","getTextField","getDataItemKey","BoardsDropdown","onObjectChange","onPeriodChange","onCurrenciesChange","onCustomisationChange","filteredNotes","Board","setSelectedPeriod","setSelectedObject","initialWidgetsForCancel","setInitialWidgetsForCancel","reset","setReset","setObjects","setScenarios","setMeasures","setStaticProperties","setFilteredNotes","setNotes","setSuppressLocalCurrency","passedObject","filterNotesByObject","tempNotesArray","contentObjectId","pinnedWidgets","pinnedWidget","currenciesArray","fetchNotes","getAnalysisContent","lastPeriodIndex","widgetObject","widgetItem","objectsArray","periodsArray","scenariosArray","obj","setDropdownsData","widgetsReset","ErrorPage","BoardsTabs","InvestorBoardsContainer","setBoards","noBoards","setNoBoards","params","previouslySelectedBoard","getBoardsForInvestor","boardToRedirectTo","AgreementDecline","DocuSignResponsive","closeDocuSignInfo","paddingTop","marginBottom","routerConfig","setAuthorized","setAuthenticated","authorized","authenticated","setShowAgreemnt","FilterContext","Provider","DocsContext","Router","isAuthenticated","isAuthn","authz","useRoutes","initCfg","setBaseUrl","DEFAULT_EMAIL","branding","logoSize","SeriesColors","getBrowserLanguage","language","_fetchFormats","lang","axios","_loadFormats","formats","load","weekData","initLanguage","defaultLang","subTag","substring","message","enNumbers","enLocalCurrency","enCaGregorian","enDateFields","ScrollToTop","App","setLanguage","langLoading","setLangLoading","addResourceBundle","locale","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","setVh","vh","documentElement","setProperty","createRoot"],"mappings":"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","file":"static/js/main.45104889.chunk.js","sourcesContent":["export const DARK_MODE = 'DARK_MODE';\r\nexport const FILTERS = 'FILTERS';\r\n// Search Types\r\nexport const SET_CLASSIFICATIONS = 'SET_CLASSIFICATIONS';\r\nexport const SET_INVESTORS = 'SET_INVESTORS';\r\nexport const SET_TERM = 'SET_TERM';\r\nexport const SET_DATE = 'SET_DATE';\r\nexport const SET_NAME = 'SET_NAME';\r\n// User Types\r\nexport const ACCEPT_AGREEMENT = 'ACCEPT_AGREEMENT';\r\nexport const PIN_TRIGGER = 'SET_PIN_TRIGGER';\r\nexport const SET_PINS = 'SET_PINS';\r\n// Impersonate Types\r\nexport const SET_IMPERSONATE_ID = 'SET_IMPERSONATE_ID';\r\nexport const SET_IMPERSONATE_NAME = 'SET_IMPERSONATE_NAME';\r\nexport const IMPERSONATE_ON = 'IMPERSONATE_ON';\r\nexport const IMPERSONATE_OFF = 'IMPERSONATE_OFF';\r\nexport const CAN_IMPERSONATE = 'CAN_IMPERSONATE';\r\n// Modal Types\r\nexport const SWITCH_MODAL = 'SWITCH_MODAL';\r\nexport const SWITCH_CASH_FLOW_MODAL = 'SWITCH_CASH_FLOW_MODAL';\r\nexport const SWITCH_REDIRECTING_TO_DS_MODAL = 'SWITCH_REDIRECTING_TO_DS_MODAL';\r\nexport const SWITCH_MULTIPLE_DOWNLOAD_MODAL = 'SWITCH_MULTIPLE_DOWNLOAD_MODAL';\r\nexport const REACHED_LIMIT_MODAL = 'REACHED_LIMIT_MODAL';\r\nexport const CLOSE_REACHED_LIMIT_MODAL = 'CLOSE_REACHED_LIMIT_MODAL';\r\nexport const CLOSE_MULTIPLE_DOWNLOAD_MODAL = 'CLOSE_MULTIPLE_DOWNLOAD_MODAL';\r\n// DocuSign Types\r\nexport const SWITCH_DOCUSIGN_DROPDOWN = 'SWITCH_DOCUSIGN_DROPDOWN';\r\nexport const CLOSE_DOCUSIGN_DROPDOWN = 'CLOSE_DOCUSIGN_DROPDOWN';\r\n//Settings Types\r\nexport const SET_TOOLTIP = 'SET_TOOLTIP';\r\n// Investor types\r\nexport const SET_INVESTOR = 'SET_INVESTOR';\r\n// Investor types\r\nexport const SET_ACTIVE_BOARD = 'SET_ACTIVE_BOARD';\r\n","import { FILTERS } from '../types';\r\n\r\nconst initialState = {\r\n filters: false,\r\n};\r\n\r\nconst filtersReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FILTERS:\r\n let filters = !state.filters;\r\n return {\r\n ...state,\r\n filters: filters,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default filtersReducer;\r\n","import { SET_NAME, ACCEPT_AGREEMENT, SET_TOOLTIP } from '../types';\r\n\r\nexport const searchInitialState = {\r\n name: '',\r\n showAgreement: true,\r\n lpHideDocSlicerTooltip: 0,\r\n};\r\n\r\nconst userReducer = (state = searchInitialState, action) => {\r\n switch (action.type) {\r\n case SET_NAME:\r\n let name = action.name;\r\n return {\r\n ...state,\r\n name,\r\n };\r\n\r\n case ACCEPT_AGREEMENT:\r\n return {\r\n ...state,\r\n showAgreement: true,\r\n };\r\n\r\n case SET_TOOLTIP:\r\n return {\r\n ...state,\r\n lpHideDocSlicerTooltip: action.value,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default userReducer;\r\n","const initialState = {\r\n baseUrl: '',\r\n};\r\n\r\nconst cfgReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'BASE_URL':\r\n let baseUrl = action.baseUrl;\r\n return {\r\n ...state,\r\n baseUrl: baseUrl,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default cfgReducer;\r\n","import { PIN_TRIGGER, SET_PINS } from '../types';\r\n\r\nexport const searchInitialState = {\r\n pin: true,\r\n pins: [],\r\n};\r\n\r\nconst pinReducer = (state = searchInitialState, action) => {\r\n switch (action.type) {\r\n case PIN_TRIGGER:\r\n return {\r\n pin: !state.pin,\r\n };\r\n case SET_PINS:\r\n return {\r\n pins: action.value.map((x) => x.assignId),\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default pinReducer;\r\n","const getImpersonationFromLS = () => {\r\n return {\r\n impersonate: sessionStorage.getItem('impersonate'),\r\n impersonateId: sessionStorage.getItem('impersonateId'),\r\n impersonateName: sessionStorage.getItem('impersonateName'),\r\n };\r\n};\r\n\r\nexport default getImpersonationFromLS;\r\n","import { IMPERSONATE_ON, IMPERSONATE_OFF, SET_IMPERSONATE_ID, SET_IMPERSONATE_NAME, CAN_IMPERSONATE } from '../types';\r\nimport getImpersonationFromLS from '../../common/utility/getImpersonationFromLS';\r\n\r\nconst initialState = {\r\n canImpersonate: false,\r\n impersonate: Boolean(getImpersonationFromLS().impersonate),\r\n impersonateId: getImpersonationFromLS().impersonateId,\r\n impersonateName: getImpersonationFromLS().impersonateName,\r\n};\r\n\r\nconst filtersReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case IMPERSONATE_ON:\r\n return {\r\n ...state,\r\n impersonate: true,\r\n };\r\n case IMPERSONATE_OFF:\r\n return {\r\n ...state,\r\n impersonate: false,\r\n impersonateId: '',\r\n impersonateName: '',\r\n };\r\n\r\n case SET_IMPERSONATE_ID:\r\n return {\r\n ...state,\r\n impersonateId: action.value,\r\n };\r\n\r\n case SET_IMPERSONATE_NAME:\r\n return {\r\n ...state,\r\n impersonateName: action.value,\r\n };\r\n\r\n case CAN_IMPERSONATE:\r\n return {\r\n ...state,\r\n canImpersonate: action.value,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default filtersReducer;\r\n","import { SWITCH_MODAL } from '../types';\r\n\r\nconst initialState = {\r\n showModal: false,\r\n};\r\n\r\nconst filtersReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SWITCH_MODAL:\r\n return {\r\n showModal: !state.showModal,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default filtersReducer;\r\n","import { SWITCH_CASH_FLOW_MODAL } from '../types';\r\n\r\nconst initialState = {\r\n data: {},\r\n showModal: false,\r\n};\r\n\r\n// switch initial state as cashFlowModalState and export it export cashFlowModalState\r\n\r\nconst cashFlowModalReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SWITCH_CASH_FLOW_MODAL:\r\n return {\r\n data: action.payload,\r\n showModal: !state.showModal,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default cashFlowModalReducer;\r\n","import { SWITCH_REDIRECTING_TO_DS_MODAL} from '../types';\r\n\r\nconst initialState = {\r\n currentItem: {},\r\n showRedirectingModal: false,\r\n};\r\n\r\nconst redirectingToDocuSignReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SWITCH_REDIRECTING_TO_DS_MODAL:\r\n return {\r\n currentItem: action.payload,\r\n showRedirectingModal: !state.showRedirectingModal,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default redirectingToDocuSignReducer;","import { CLOSE_DOCUSIGN_DROPDOWN, SWITCH_DOCUSIGN_DROPDOWN } from '../types';\r\n\r\nconst initialState = {\r\n docuSignDropdown: false\r\n};\r\n\r\nconst docuSignReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SWITCH_DOCUSIGN_DROPDOWN:\r\n return {\r\n docuSignDropdown: !state.docuSignDropdown,\r\n };\r\n case CLOSE_DOCUSIGN_DROPDOWN:\r\n return {\r\n docuSignDropdown: false\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default docuSignReducer;\r\n","import { SET_INVESTOR, SET_INVESTORS } from '../types';\r\n\r\nconst initialState = {\r\n investor: {},\r\n investors: [],\r\n};\r\n\r\nconst investorReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SET_INVESTOR:\r\n return {\r\n investor: action.investor,\r\n };\r\n\r\n case SET_INVESTORS:\r\n return {\r\n investors: action.investors,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default investorReducer;","import {\r\n SWITCH_MULTIPLE_DOWNLOAD_MODAL,\r\n CLOSE_MULTIPLE_DOWNLOAD_MODAL,\r\n REACHED_LIMIT_MODAL,\r\n CLOSE_REACHED_LIMIT_MODAL,\r\n} from '../types';\r\n\r\nconst initialState = {\r\n showModal: false,\r\n modalInfo: null,\r\n reachedLimit: false,\r\n};\r\n\r\nconst multipleDownloadReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SWITCH_MULTIPLE_DOWNLOAD_MODAL:\r\n return {\r\n ...state,\r\n showModal: !state.showModal,\r\n modalInfo: action.payload,\r\n };\r\n\r\n case REACHED_LIMIT_MODAL:\r\n return {\r\n ...state,\r\n reachedLimit: !state.reachedLimit,\r\n };\r\n\r\n case CLOSE_REACHED_LIMIT_MODAL:\r\n return {\r\n ...state,\r\n reachedLimit: false,\r\n };\r\n\r\n case CLOSE_MULTIPLE_DOWNLOAD_MODAL:\r\n return {\r\n ...state,\r\n showModal: false,\r\n modalInfo: null,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default multipleDownloadReducer;","import { SET_ACTIVE_BOARD } from '../types';\r\n\r\nconst initialState = {\r\n activeBoard: null,\r\n};\r\n\r\nconst boardsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SET_ACTIVE_BOARD:\r\n return {\r\n activeBoard: action.activeBoard,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default boardsReducer;","import { createStore, combineReducers } from 'redux';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\n\r\nimport filtersReducer from './reducers/filtersReducer';\r\nimport searchReducer from './reducers/userReducer';\r\nimport userReducer from './reducers/userReducer';\r\nimport cfgReducer from './reducers/cfgReducer';\r\nimport pinReducer from './reducers/pinReducer';\r\nimport impersonateReducers from './reducers/impersonateReducers';\r\nimport modalReducer from './reducers/modalReducer';\r\nimport cashFlowModalReducer from './reducers/cashFlowModalReducer';\r\nimport redirectingToDocuSignReducer from './reducers/redirectingToDocuSignReducer';\r\nimport docuSignReducer from './reducers/docuSignReducer';\r\nimport investorReducer from './reducers/investorReducer';\r\nimport multipleDownloadReducer from './reducers/multipleDownloadReducer';\r\nimport boardsReducer from './reducers/boardsReducer';\r\n\r\nlet rootReducer = combineReducers({\r\n search: searchReducer,\r\n filters: filtersReducer,\r\n user: userReducer,\r\n cfg: cfgReducer,\r\n pin: pinReducer,\r\n impersonate: impersonateReducers,\r\n modal: modalReducer,\r\n cashFlowModal: cashFlowModalReducer,\r\n redirectingModal: redirectingToDocuSignReducer,\r\n docuSignDropdown: docuSignReducer,\r\n investor: investorReducer,\r\n multipleDownload: multipleDownloadReducer,\r\n board: boardsReducer,\r\n});\r\n\r\nexport type RootState = ReturnType;\r\n\r\nconst store = createStore(rootReducer, composeWithDevTools());\r\n\r\nexport default store;\r\n","const initTranslations = () => {\r\n return fetch('/translation.json').then((res) => {\r\n if (res.status !== 200) {\r\n console.log('Looks like there was a problem. Status Code: ' + res.status);\r\n return;\r\n }\r\n return res.json();\r\n });\r\n};\r\n\r\nexport default initTranslations;\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport initTranslations from './common/services/translations/initTranslations';\r\n\r\nlet resources = {};\r\n\r\ninitTranslations().then((res) => {\r\n resources = res.en.translation;\r\n});\r\n\r\ni18n.use(initReactI18next).init({\r\n partialBundledLanguages: true,\r\n ns: [],\r\n resources: {},\r\n lng: 'en',\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n});\r\n\r\nexport default i18n;\r\n","import { useTranslation } from 'react-i18next';\r\n\r\nconst useTranslate = () => {\r\n const { t, i18n } = useTranslation();\r\n return {\r\n t: t,\r\n i18n: i18n,\r\n };\r\n};\r\n\r\nexport default useTranslate;\r\n","import React from 'react';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { Orbit } from '@uiball/loaders';\r\nimport './componentLoader.scss';\r\n\r\nconst ComponentLoader: React.FC = () => {\r\n const { t } = useTranslate();\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ComponentLoader;\r\n","import React from 'react';\r\nimport ComponentLoader from '../loaders/componentLoader/componentLoader';\r\n\r\nimport './loadingScreen.scss';\r\n\r\nconst LoadingScreen: React.FC = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LoadingScreen;\r\n","export class Identity {\r\n constructor() {}\r\n\r\n signIn() {\r\n return Promise.resolve(null);\r\n }\r\n\r\n signOut() {\r\n return Promise.resolve(null);\r\n }\r\n\r\n forgotPassword() {\r\n return Promise.resolve(null);\r\n }\r\n\r\n hasForgotPassword() {\r\n return false;\r\n }\r\n\r\n isAuthenticated() {\r\n return Promise.resolve(false);\r\n }\r\n\r\n accessToken() {\r\n return Promise.resolve('');\r\n }\r\n\r\n idToken() {\r\n return Promise.resolve('');\r\n }\r\n\r\n tokens() {\r\n return Promise.resolve({\r\n accessToken: '',\r\n idToken: '',\r\n refreshToken: '',\r\n });\r\n }\r\n\r\n displayName() {\r\n return Promise.resolve('');\r\n }\r\n\r\n userInitials() {\r\n return this.displayName().then((name) => {\r\n if (!name) return '';\r\n\r\n if (name.includes(' ')) {\r\n return name\r\n .split(' ')\r\n .map((word) => {\r\n return word[0];\r\n })\r\n .join('');\r\n }\r\n return name[0];\r\n });\r\n }\r\n\r\n getUrlParameter(name: string) {\r\n // @ts-ignore\r\n return new URL(document.location).searchParams.get(name);\r\n }\r\n}\r\n","const cleaningSessionStorage = () => {\r\n sessionStorage.clear();\r\n};\r\nexport default cleaningSessionStorage;\r\n","import CryptoJS from 'crypto-js';\r\nimport { Identity } from './Identity';\r\nimport jwtDecode from 'jwt-decode';\r\nimport CognitoConfigStore from '../config/cognitoConfigStore';\r\nimport cleaningSessionStorage from '../../utility/cleaningSessionStorage';\r\n\r\nconst storage = sessionStorage;\r\nconst baseKey = 'atcog-ksgx1a';\r\nconst verifierKey = baseKey + '-verifier';\r\nconst stateKey = baseKey + '-pkcestate';\r\nconst accessTokenKey = baseKey + '-accesstoken';\r\nconst idTokenKey = baseKey + '-idtoken';\r\nconst refreshTokenKey = baseKey + '-refreshtoken';\r\n\r\nexport class AwsCognitoIdentity extends Identity {\r\n _expireLimit: any;\r\n _refreshTimer: any;\r\n cfg: CognitoConfigStore;\r\n\r\n constructor(cfg: CognitoConfigStore) {\r\n super();\r\n this._expireLimit = 180000;\r\n this._refreshTimer = null;\r\n this.generateVerifier();\r\n this.generateState();\r\n this.cfg = cfg;\r\n }\r\n\r\n isAuthenticated() {\r\n let code = this.getUrlParameter('code');\r\n if (code) {\r\n let state = this.getUrlParameter('state');\r\n if (state !== this.state()) {\r\n console.log('Invalid state');\r\n return Promise.resolve(false);\r\n } else {\r\n return this.acquireTokens(code)\r\n .then(() => {\r\n window.history.replaceState({}, document.title, '/');\r\n return true;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n }\r\n }\r\n\r\n return this.tokens()\r\n .then((tokens) => {\r\n if (tokens) {\r\n this.startTokenRefreshTimer(tokens.accessToken);\r\n return true;\r\n }\r\n return false;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return false;\r\n });\r\n }\r\n\r\n // @ts-ignore\r\n signIn() {\r\n return Promise.resolve(window.location.assign(this.signInUrl()));\r\n }\r\n\r\n // @ts-ignore\r\n signOut() {\r\n cleaningSessionStorage();\r\n return Promise.resolve(window.location.assign(this.signOutUrl()));\r\n }\r\n\r\n forgotPassword() {\r\n return Promise.resolve(window.location.assign(this.forgotPwdUrl()));\r\n }\r\n\r\n hasForgotPassword() {\r\n return !!this.cfg.getForgotPwdUrl();\r\n }\r\n\r\n tokens() {\r\n let access = storage.getItem(accessTokenKey);\r\n if (!access) return Promise.resolve(null);\r\n\r\n if (this.tokenExpiresIn(access) <= this._expireLimit) return this.refreshTokens();\r\n\r\n return Promise.resolve({\r\n accessToken: access,\r\n idToken: storage.getItem(idTokenKey),\r\n });\r\n }\r\n\r\n accessToken() {\r\n return Promise.resolve(storage.getItem(accessTokenKey));\r\n }\r\n\r\n idToken() {\r\n return Promise.resolve(storage.getItem(idTokenKey));\r\n }\r\n\r\n displayName() {\r\n return this.idToken().then((token) => {\r\n if (token) {\r\n let decoded: any = jwtDecode(token);\r\n return decoded.name || decoded.username || decoded['cognito:username'];\r\n }\r\n return '';\r\n });\r\n }\r\n\r\n acquireTokens(code: any) {\r\n return fetch(this.cfg.getTokenUrl(), {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\r\n body:\r\n 'grant_type=authorization_code&client_id=' +\r\n this.cfg.getClientId() +\r\n '&code_verifier=' +\r\n this.verifier() +\r\n '&redirect_uri=' +\r\n this.cfg.getRedirectUri() +\r\n '&code=' +\r\n code,\r\n })\r\n .then((response) => {\r\n return response.json().then((data) => {\r\n this.setTokens(data);\r\n storage.setItem(refreshTokenKey, data.refresh_token);\r\n return {\r\n accessToken: data.access_token,\r\n idToken: data.id_token,\r\n };\r\n });\r\n })\r\n .catch((err) => {\r\n console.error('error acquiring cognito tokens', err);\r\n });\r\n }\r\n\r\n refreshTokens() {\r\n let refresh = storage.getItem(refreshTokenKey);\r\n if (!refresh) return Promise.resolve(null);\r\n\r\n return fetch(this.cfg.getTokenUrl(), {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\r\n body: 'grant_type=refresh_token&client_id=' + this.cfg.getClientId() + '&refresh_token=' + refresh,\r\n })\r\n .then((response) => {\r\n return response.json().then((data) => {\r\n this.setTokens(data);\r\n console.log('tokens refreshed');\r\n return {\r\n accessToken: data.access_token,\r\n idToken: data.id_token,\r\n };\r\n });\r\n })\r\n .catch((err) => {\r\n console.error('error refreshing cognito tokens', err);\r\n });\r\n }\r\n\r\n setTokens(data: any) {\r\n storage.setItem(accessTokenKey, data.access_token);\r\n storage.setItem(idTokenKey, data.id_token);\r\n this.startTokenRefreshTimer(data.access_token);\r\n }\r\n\r\n startTokenRefreshTimer(token: string) {\r\n if (this._refreshTimer) clearTimeout(this._refreshTimer);\r\n\r\n let timer = this.tokenExpiresIn(token) - this._expireLimit;\r\n this._refreshTimer = setTimeout(() => {\r\n this.refreshTokens();\r\n }, timer);\r\n }\r\n\r\n tokenExpiresIn(token: string) {\r\n let decoded: any = jwtDecode(token);\r\n let exp = new Date(decoded.exp * 1000);\r\n return exp.getTime() - Date.now();\r\n }\r\n\r\n signInUrl() {\r\n return (\r\n this.cfg.getBaseUrl() +\r\n '/oauth2/authorize?scope=' +\r\n this.cfg.getScope() +\r\n '&response_type=code&client_id=' +\r\n this.cfg.getClientId() +\r\n '&code_challenge=' +\r\n this.challenge() +\r\n '&code_challenge_method=S256&redirect_uri=' +\r\n this.cfg.getRedirectUri() +\r\n '&state=' +\r\n this.state()\r\n );\r\n }\r\n\r\n signOutUrl() {\r\n return this.cfg.getBaseUrl() + '/logout?client_id=' + this.cfg.getClientId() + '&logout_uri=' + this.cfg.getRedirectUri();\r\n }\r\n\r\n forgotPwdUrl() {\r\n return `${this.cfg.getForgotPwdUrl()}?scope=${this.cfg.getScope()}&response_type=code&client_id=${this.cfg.getClientId()}` +\r\n `&code_challenge=${this.challenge()}&code_challenge_method=S256&redirect_uri=${this.cfg.getRedirectUri()}&state=${this.state()}`;\r\n }\r\n\r\n challenge() {\r\n // @ts-ignore\r\n return this.toBase64Url(CryptoJS.SHA256(this.verifier()));\r\n }\r\n\r\n verifier() {\r\n return storage.getItem(verifierKey);\r\n }\r\n\r\n state() {\r\n return storage.getItem(stateKey);\r\n }\r\n\r\n generateVerifier() {\r\n let verifier: string | null = storage.getItem(verifierKey);\r\n if (!verifier) {\r\n // @ts-ignore\r\n verifier = this.toBase64Url(CryptoJS.lib.WordArray.random(32));\r\n storage.setItem(verifierKey, verifier);\r\n }\r\n }\r\n\r\n generateState() {\r\n let state: string | null = storage.getItem(stateKey);\r\n if (!state) {\r\n // @ts-ignore\r\n state = this.toBase64Url(CryptoJS.lib.WordArray.random(28));\r\n storage.setItem(stateKey, state);\r\n }\r\n }\r\n\r\n toBase64Url(hash: string) {\r\n // @ts-ignore\r\n return hash.toString(CryptoJS.enc.Base64).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\r\n }\r\n}\r\n","export default class CognitoConfigStore {\r\n baseUrl: string;\r\n tokenUrl: string;\r\n clientId: string;\r\n redirectUri: string;\r\n scope: string;\r\n forgotPwdUrl: string;\r\n\r\n constructor(config: any) {\r\n this.baseUrl = config.BASE_URL;\r\n this.tokenUrl = config.TOKEN_URL;\r\n this.clientId = config.CLIENT_ID;\r\n this.redirectUri = config.REDIRECT_URI;\r\n this.scope = config.SCOPE;\r\n this.forgotPwdUrl = config.FORGOT_PWD_URL;\r\n }\r\n\r\n getBaseUrl() {\r\n return this.baseUrl;\r\n }\r\n\r\n getTokenUrl() {\r\n return this.tokenUrl;\r\n }\r\n\r\n getClientId() {\r\n return this.clientId;\r\n }\r\n\r\n getRedirectUri() {\r\n return this.redirectUri;\r\n }\r\n\r\n getScope() {\r\n return this.scope;\r\n }\r\n\r\n getForgotPwdUrl() {\r\n return this.forgotPwdUrl;\r\n }\r\n}\r\n","import { Identity } from './Identity';\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\nimport AzureConfigStore from '../config/azureConfigStore';\r\n\r\nconst storageKey = 'az-b7o4ks';\r\nconst storage = sessionStorage;\r\n\r\nexport class AzureIdentity extends Identity {\r\n _focusedAccount: null | any;\r\n _msalApp: any;\r\n cfg: AzureConfigStore;\r\n\r\n constructor(cfg: AzureConfigStore) {\r\n super();\r\n this._focusedAccount = null;\r\n this.cfg = cfg;\r\n this._init();\r\n }\r\n\r\n isAuthenticated() {\r\n return this.handleRedirectPromise().then((azAuthnResult: any) => {\r\n try {\r\n if (azAuthnResult && azAuthnResult.account) {\r\n this.setFocusedAccount(azAuthnResult.account);\r\n }\r\n } catch (error) {}\r\n\r\n let account = this.getAccount();\r\n if (account) {\r\n return this.acquireToken()\r\n .then(function (response: { accessToken: string | any[] }) {\r\n return response.accessToken && response.accessToken.length > 0;\r\n })\r\n .catch(function (response: any) {\r\n console.log('error acquiring token', response);\r\n return false;\r\n });\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n signIn() {\r\n return this._msalApp.loginRedirect({\r\n scopes: ['openid'].concat(this.cfg.getScopes()),\r\n prompt: 'select_account',\r\n });\r\n }\r\n\r\n signOut() {\r\n let account = this.getAccount();\r\n if (account) {\r\n this._focusedAccount = null;\r\n storage.removeItem(storageKey);\r\n return this._msalApp.logoutRedirect({ account: account });\r\n }\r\n }\r\n\r\n forgotPassword() {\r\n return Promise.resolve(null);\r\n }\r\n\r\n hasForgotPassword() {\r\n return false;\r\n }\r\n\r\n accessToken() {\r\n return this.acquireToken()\r\n .then((authResult: { accessToken: any }) => {\r\n return authResult.accessToken;\r\n })\r\n .catch((error: any) => {\r\n console.error('error getting access token', error);\r\n });\r\n }\r\n\r\n idToken() {\r\n return this.acquireToken()\r\n .then((authResult: { idToken: any }) => {\r\n return authResult.idToken;\r\n })\r\n .catch((error: any) => {\r\n console.error('error getting id token', error);\r\n });\r\n }\r\n\r\n tokens() {\r\n return this.acquireToken()\r\n .then((authResult: { accessToken: any; idToken: any }) => {\r\n if (authResult)\r\n return {\r\n accessToken: authResult.accessToken,\r\n idToken: authResult.idToken,\r\n };\r\n })\r\n .catch((error: any) => {\r\n console.error('error getting tokens', error);\r\n });\r\n }\r\n\r\n displayName() {\r\n let acct = this.getAccount();\r\n return Promise.resolve(acct ? acct.name : '');\r\n }\r\n\r\n handleRedirectPromise() {\r\n return this._msalApp\r\n .handleRedirectPromise()\r\n .then((response: any) => {\r\n return response;\r\n })\r\n .catch((error: { errorMessage: string | string[] }) => {\r\n console.log('ERROR: ', error);\r\n // Check for forgot password error\r\n // Learn more about AAD error codes at https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-aadsts-error-codes\r\n if (error.errorMessage && error.errorMessage.indexOf('AADB2C90118') > -1) {\r\n try {\r\n if (this.cfg.getUseB2c()) {\r\n return this._msalApp.loginRedirect({ authority: this.cfg.getPolicies().AUTHORITIES.FORGOT_PASSWORD });\r\n }\r\n } catch (err) {\r\n console.log('ERROR: ', err);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getAccount() {\r\n if (this._focusedAccount) return this._focusedAccount;\r\n\r\n let account = storage.getItem(storageKey);\r\n if (account) {\r\n this._focusedAccount = JSON.parse(account);\r\n return this._focusedAccount;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getAccounts() {\r\n return this._msalApp.getAllAccounts();\r\n }\r\n\r\n setFocusedAccount(account: any) {\r\n this._focusedAccount = account;\r\n storage.setItem(storageKey, JSON.stringify(account));\r\n }\r\n\r\n acquireToken() {\r\n let account = this.getAccount();\r\n if (!account) return Promise.resolve(null);\r\n\r\n return this._msalApp.acquireTokenSilent({\r\n account: account,\r\n scopes: this.cfg.getScopes().slice(),\r\n forceRefresh: false,\r\n });\r\n }\r\n\r\n _init() {\r\n if (this.cfg.getUseB2c()) {\r\n this._msalApp = new PublicClientApplication({\r\n auth: {\r\n clientId: this.cfg.getClientId(),\r\n authority: this.cfg.getPolicies().AUTHORITIES.SIGN_IN,\r\n knownAuthorities: [this.cfg.getPolicies().AUTHORITY_DOMAIN],\r\n redirectUri: this.cfg.getRedirectUri(),\r\n },\r\n cache: {\r\n cacheLocation: 'sessionStorage',\r\n storeAuthStateInCookie: false,\r\n },\r\n });\r\n } else {\r\n this._msalApp = new PublicClientApplication({\r\n auth: {\r\n clientId: this.cfg.getClientId(),\r\n authority: this.cfg.getPolicies().AUTHORITIES.SIGN_IN,\r\n redirectUri: this.cfg.getRedirectUri(),\r\n postLogoutRedirectUri: this.cfg.getRedirectUri(),\r\n },\r\n cache: {\r\n cacheLocation: 'sessionStorage',\r\n storeAuthStateInCookie: false,\r\n },\r\n });\r\n }\r\n }\r\n}\r\n","export default class AzureConfigStore {\r\n useB2c: boolean;\r\n clientId: string;\r\n redirectUri: string;\r\n scopes: string[];\r\n policies: any;\r\n forgotPwdUrl: string;\r\n\r\n constructor(config: any) {\r\n this.useB2c = config.USE_B2C;\r\n this.clientId = config.CLIENT_ID;\r\n this.redirectUri = config.REDIRECT_URI;\r\n this.scopes = config.SCOPES;\r\n this.policies = config.POLICIES;\r\n this.forgotPwdUrl = config.FORGOT_PWD_URL;\r\n }\r\n\r\n getUseB2c() {\r\n return this.useB2c;\r\n }\r\n\r\n getClientId() {\r\n return this.clientId;\r\n }\r\n\r\n getRedirectUri() {\r\n return this.redirectUri;\r\n }\r\n\r\n getScopes() {\r\n return this.scopes;\r\n }\r\n\r\n getPolicies() {\r\n return this.policies;\r\n }\r\n\r\n getForgotPwdUrl() {\r\n return this.forgotPwdUrl;\r\n }\r\n}\r\n","import { AwsCognitoIdentity } from './AwsCognitoIdentity';\r\nimport CognitoConfigStore from '../config/cognitoConfigStore';\r\nimport { AzureIdentity } from './AzureIdentity';\r\nimport AzureConfigStore from '../config/azureConfigStore';\r\n\r\nclass IdentityManagerFactory {\r\n manager: any;\r\n\r\n constructor() {}\r\n\r\n getManager() {\r\n return this.manager;\r\n }\r\n\r\n init(data: any) {\r\n this.manager = data.useCognito\r\n ? new AwsCognitoIdentity(new CognitoConfigStore(data.cognitoConfig))\r\n : new AzureIdentity(new AzureConfigStore(data.azureConfig));\r\n }\r\n}\r\n\r\nlet IdentityManager = new IdentityManagerFactory();\r\n\r\nexport default IdentityManager;\r\n","class BaseUrlConfigStore {\r\n baseUrl: string;\r\n constructor(baseUrl?) {\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n setBaseUrl(baseUrl) {\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n getBaseUrl() {\r\n return this.baseUrl;\r\n }\r\n}\r\n\r\nconst BaseURLConfigStore = new BaseUrlConfigStore();\r\n\r\nexport default BaseURLConfigStore;\r\n","import ConfigurationInstance from '../services/config/baseUrlConfigStore';\r\n\r\nconst cfgGetter = () => {\r\n return ConfigurationInstance.getBaseUrl();\r\n};\r\n\r\nexport default cfgGetter;\r\n","import Axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport IdentityManagerFactory from '../identity/IdentityManagerFactory';\r\nimport store from '../../../redux/store';\r\nimport cfgGetter from '../../utility/cfgGetter';\r\n\r\nclass httpService {\r\n instance: AxiosInstance;\r\n getStore: any;\r\n controller: AbortController;\r\n\r\n constructor() {\r\n this.instance = Axios;\r\n this.initiateInterceptor();\r\n this.getStore = store.getState;\r\n this.controller = new AbortController();\r\n }\r\n\r\n getEndpointURL(endpoint) {\r\n let baseUrl = cfgGetter();\r\n return baseUrl + endpoint;\r\n }\r\n\r\n initiateInterceptor() {\r\n this.instance.interceptors.request.use(\r\n async (req) => {\r\n try {\r\n if (this.getStore().impersonate.impersonate) {\r\n if (req.url.includes('?')) {\r\n req.url = req.url + `&impersonate=${this.getStore().impersonate.impersonateId}`;\r\n } else {\r\n req.url = req.url + `?impersonate=${this.getStore().impersonate.impersonateId}`;\r\n }\r\n }\r\n const token = await IdentityManagerFactory.getManager().accessToken();\r\n req.headers['Authorization'] = `Bearer ${token}`;\r\n return req;\r\n } catch (err) {\r\n console.error('interceptor err', err);\r\n return req;\r\n }\r\n },\r\n (err) => {\r\n return Promise.reject(err);\r\n }\r\n );\r\n }\r\n\r\n post(endpoint, body = null, config = {}) {\r\n return this.instance.post(endpoint, body, config);\r\n }\r\n\r\n get(endpoint, config = {}) {\r\n config['signal'] = this.controller.signal;\r\n\r\n return this.instance.get(endpoint, config);\r\n }\r\n\r\n put(endpoint, data = null, config = {}) {\r\n return this.instance.put(endpoint, data, config);\r\n }\r\n\r\n delete(endpoint, config = {}) {\r\n return this.instance.delete(endpoint, config);\r\n }\r\n\r\n getTyped(endpoint: string, config: AxiosRequestConfig = {}) {\r\n return this.instance\r\n .get(endpoint, { ...{ signal: this.controller.signal }, ...config })\r\n .then((response: AxiosResponse) => response.data);\r\n }\r\n}\r\n\r\nlet instance = new httpService();\r\n\r\nexport default instance;\r\n","import httpService from './httpService';\r\n\r\nexport const unacceptedAgreements = () => {\r\n let endpoint = httpService.getEndpointURL(`/Users/agreements/unaccepted`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const acceptAgreements = (agreementId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Users/agreements/${agreementId}/accept`);\r\n return httpService.post(endpoint);\r\n};\r\n\r\nexport const getAgreement = (id: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Agreements/${id}`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const downloadAgreements = (agreementId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/Download/${agreementId}`);\r\n return httpService.get(endpoint).then(function (response) {\r\n const data = response.data;\r\n return new Uint8Array(data);\r\n });\r\n};\r\n","import httpService from './httpService';\r\nimport cfgGetter from '../../utility/cfgGetter';\r\nimport queryString from 'query-string';\r\nimport { formatDate } from '@telerik/kendo-intl';\r\n\r\nexport const verifyUser = () => {\r\n let baseUrl = cfgGetter();\r\n let endpoint = httpService.getEndpointURL(`/Users/verify`);\r\n return httpService\r\n .get(endpoint)\r\n .then((response) => {\r\n if (response.status === 200) return response.data;\r\n return null;\r\n })\r\n .catch((err) => {\r\n console.log('error getting endpoint ', err);\r\n return null;\r\n });\r\n};\r\n\r\nexport const getProfile = () => {\r\n let endpoint = httpService.getEndpointURL(`/Users/profile`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const getActivity = () => {\r\n let endpoint = httpService.getEndpointURL(`/Users/activity`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const getImpersonate = (impersonatorName?) => {\r\n let endpoint;\r\n if (impersonatorName) {\r\n endpoint = httpService.getEndpointURL(`/Users/available/to/impersonate?name=${impersonatorName}`);\r\n } else {\r\n endpoint = httpService.getEndpointURL(`/Users/available/to/impersonate`);\r\n }\r\n return httpService.get(endpoint).then((r) => r.data);\r\n};\r\n\r\nexport const canImpersonate = () => {\r\n let endpoint;\r\n endpoint = httpService.getEndpointURL(`/Users/can/impersonate`);\r\n return httpService.get(endpoint).then((r) => r.status === 200);\r\n};\r\n\r\nexport const saveUserSettings = (slicerTooltip) => {\r\n let endpoint = httpService.getEndpointURL(`/Users/settings`);\r\n return httpService.put(endpoint, slicerTooltip);\r\n};\r\n\r\nexport const getUserSettings = () => {\r\n return verifyUser().then((res) => res.settings);\r\n};\r\n\r\nexport const getUserActivityFeed = (\r\n type,\r\n documentName,\r\n funds,\r\n investors,\r\n classifications,\r\n activityFeedFromDate,\r\n startResult,\r\n maxResults,\r\n sortField,\r\n sortDir,\r\n includeCount\r\n) => {\r\n let parsedQuery = queryString.parse(location.search);\r\n\r\n if(type){\r\n parsedQuery.type = type;\r\n }\r\n if (documentName) {\r\n parsedQuery.name = documentName;\r\n }\r\n if (funds && funds.length > 0) {\r\n parsedQuery.funds = funds.map((x) => x.id);\r\n }\r\n if (investors && investors.length > 0) {\r\n parsedQuery.investors = investors.map((x) => x.objectId);\r\n }\r\n if (classifications && classifications.length > 0) {\r\n parsedQuery.classifications = classifications.map((x) => x.id);\r\n }\r\n\r\n if (activityFeedFromDate) {\r\n const today = new Date();\r\n const startDate = activityFeedFromDate === 0 || activityFeedFromDate === null ? null : new Date(new Date().setDate(today.getDate() - activityFeedFromDate));\r\n parsedQuery.startDate = formatDate(startDate, 'yyyy-MM-dd');\r\n }\r\n if (startResult) {\r\n parsedQuery.startResult = startResult;\r\n }\r\n if (maxResults) {\r\n parsedQuery.maxResults = maxResults;\r\n }\r\n if (sortField) {\r\n parsedQuery.sortField = sortField;\r\n }\r\n if (sortDir) {\r\n parsedQuery.sortDir = sortDir;\r\n }\r\n\r\n parsedQuery.includeTotalCount = includeCount;\r\n\r\n const stringified = queryString.stringify(parsedQuery);\r\n\r\n let endpoint = httpService.getEndpointURL(`/Users/feed?${stringified}`);\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\ninterface IAcceptedAgreements {\r\n id: number;\r\n userId: number;\r\n name: string;\r\n userName: string;\r\n agreementName: string;\r\n agreementId: number;\r\n version: string;\r\n appName: string;\r\n appId: string;\r\n accepted: true;\r\n date: any;\r\n}\r\n\r\nexport const getAcceptedAgreements = () => {\r\n let endpoint = httpService.getEndpointURL(`/Users/agreements/accepted`);\r\n return httpService.getTyped(endpoint);\r\n};\r\n","import IdentityManager from '../services/identity/IdentityManagerFactory';\r\n\r\nexport const useIdentityManager = () => {\r\n return IdentityManager.getManager();\r\n};\r\n","const timeAndDate = (): string => {\r\n let today = new Date();\r\n let date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();\r\n let time = new Date().toLocaleTimeString();\r\n\r\n let formatted = date + '_' + time;\r\n return formatted;\r\n};\r\n\r\nexport default timeAndDate;\r\n","import httpService from './httpService';\r\nimport queryString from 'query-string';\r\nimport { saveAs } from '@progress/kendo-file-saver';\r\nimport { formatDate } from '@telerik/kendo-intl';\r\nimport getDateAndTime from '../../utility/getDateAndTime';\r\n\r\nexport interface IClassification {\r\n id: number;\r\n name: string;\r\n parentId: any;\r\n parentName: any;\r\n roles: any;\r\n usage: any;\r\n}\r\nexport const getClassifications = (): Promise => {\r\n let endpoint = httpService.getEndpointURL('/Documents/classifications');\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\nexport const getFeedClassifications = (): Promise => {\r\n let endpoint = httpService.getEndpointURL('/Classifications/documentsAndBoards');\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\nexport const getDoc = (id: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/${id}`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const getDocAssigment = (assignId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/assignments/${assignId}`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const downloadDoc = (doc) => {\r\n const config = {\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Credentials': '*',\r\n },\r\n responseType: 'arraybuffer',\r\n };\r\n\r\n let endpoint = httpService.getEndpointURL(`/Documents/download/${doc.documentId}`);\r\n\r\n return (\r\n httpService\r\n .get(endpoint, config)\r\n .then(function (response) {\r\n const data = response.data;\r\n const contentType = response.headers['content-type'];\r\n const blob = new Blob([data], { type: contentType });\r\n const name = doc.name ? doc.name : doc.label;\r\n saveAs(blob, name);\r\n })\r\n //@ts-ignore\r\n .then(registerDownload(doc))\r\n );\r\n};\r\n\r\nexport const registerDownload = (doc) => {\r\n const config = {\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Credentials': '*',\r\n },\r\n responseType: 'arraybuffer',\r\n };\r\n let endpoint = httpService.getEndpointURL(`/Documents/${doc.documentId}/register/download`);\r\n\r\n return httpService.post(endpoint, config);\r\n};\r\n\r\nexport const filterDocuments = (\r\n documentName,\r\n funds,\r\n investors,\r\n classifications,\r\n read,\r\n fromDate,\r\n toDate,\r\n startResult,\r\n maxResults,\r\n sortField,\r\n sortDir,\r\n publishedChecked,\r\n effectiveChecked,\r\n asOfDate,\r\n period,\r\n includeCount\r\n) => {\r\n let parsedQuery = queryString.parse(location.search);\r\n if (documentName) {\r\n parsedQuery.name = documentName;\r\n }\r\n if (funds && funds.length > 0) {\r\n parsedQuery.funds = funds.map((x) => x.id);\r\n }\r\n if (investors && investors.length > 0) {\r\n parsedQuery.investors = investors.map((x) => x.objectId);\r\n }\r\n if (classifications && classifications.length > 0) {\r\n parsedQuery.classifications = classifications.map((x) => x.id);\r\n }\r\n if (read) {\r\n parsedQuery.readFlag = read;\r\n }\r\n if (period && period.startDate && period.endDate) {\r\n const startDate = new Date(period.startDate);\r\n const endDate = new Date(period.endDate);\r\n parsedQuery.fromPublishDate = formatDate(startDate, 'yyyy-MM-dd');\r\n parsedQuery.publishDate = formatDate(endDate, 'yyyy-MM-dd');\r\n }\r\n if (fromDate && effectiveChecked) {\r\n parsedQuery.fromDate = formatDate(fromDate, 'yyyy-MM-dd');\r\n }\r\n if (toDate && effectiveChecked) {\r\n parsedQuery.date = formatDate(toDate, 'yyyy-MM-dd');\r\n }\r\n if (fromDate && publishedChecked) {\r\n parsedQuery.fromPublishDate = formatDate(fromDate, 'yyyy-MM-dd');\r\n }\r\n if (asOfDate) {\r\n parsedQuery.publishDate = formatDate(asOfDate, 'yyyy-MM-dd');\r\n }\r\n if (toDate && publishedChecked) {\r\n parsedQuery.publishDate = formatDate(toDate, 'yyyy-MM-dd');\r\n }\r\n if (startResult) {\r\n parsedQuery.startResult = startResult;\r\n }\r\n if (maxResults) {\r\n parsedQuery.maxResults = maxResults;\r\n }\r\n //@ts-ignore\r\n parsedQuery.includeTotalCount = includeCount;\r\n\r\n if (sortField) {\r\n parsedQuery.sortField = sortField;\r\n }\r\n if (sortDir) {\r\n parsedQuery.sortDir = sortDir;\r\n }\r\n\r\n const stringified = queryString.stringify(parsedQuery);\r\n\r\n let endpoint = httpService.getEndpointURL(`/Documents/search/files?${stringified}`);\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\n// PDF Calls\r\nexport async function returnPdf(endpoint) {\r\n const config = {\r\n headers: {\r\n 'Content-type': 'application/pdf',\r\n // Authorization: `Bearer ${token}`,\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Credentials': '*',\r\n },\r\n responseType: 'arraybuffer',\r\n };\r\n\r\n return httpService\r\n .get(httpService.getEndpointURL(endpoint), config)\r\n .then(function (response) {\r\n const data = response.data;\r\n const contentType = response.headers['content-type'];\r\n const uint8View = new Uint8Array(data);\r\n\r\n const blob = new Blob([data], { type: contentType });\r\n return { uint8: uint8View, blob: blob };\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n });\r\n}\r\n\r\nexport const getPins = () => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/assignments/pins`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const setPin = (assignId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/pin/assignment/${assignId}`);\r\n return httpService.put(endpoint);\r\n};\r\n\r\nexport const removePin = (assignId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/unpin/assignment/${assignId}`);\r\n return httpService.put(endpoint);\r\n};\r\n\r\nexport const getSlices = (sliceArray, documentName, funds, investors, classifications, read, fromDate, toDate, period, publishedChecked, effectiveChecked) => {\r\n let parsedQuery = queryString.parse(location.search);\r\n if (documentName) {\r\n parsedQuery.name = documentName;\r\n }\r\n if (funds && funds.length > 0) {\r\n parsedQuery.funds = funds.map((x) => x.id);\r\n }\r\n if (investors && investors.length > 0) {\r\n parsedQuery.investors = investors.map((x) => x.objectId);\r\n }\r\n if (classifications && classifications.length > 0) {\r\n parsedQuery.classifications = classifications.map((x) => x.id);\r\n }\r\n if (read) {\r\n parsedQuery.readFlag = read;\r\n }\r\n if (period && period.startDate && period.endDate) {\r\n const startDate = new Date(period.startDate);\r\n const endDate = new Date(period.endDate);\r\n parsedQuery.fromPublishDate = formatDate(startDate, 'yyyy-MM-dd');\r\n parsedQuery.publishDate = formatDate(endDate, 'yyyy-MM-dd');\r\n }\r\n if (fromDate && effectiveChecked) {\r\n parsedQuery.fromDate = formatDate(fromDate, 'yyyy-MM-dd');\r\n }\r\n if (toDate && effectiveChecked) {\r\n parsedQuery.date = formatDate(toDate, 'yyyy-MM-dd');\r\n }\r\n if (fromDate && publishedChecked) {\r\n parsedQuery.fromPublishDate = formatDate(fromDate, 'yyyy-MM-dd');\r\n }\r\n if (toDate && publishedChecked) {\r\n parsedQuery.publishDate = formatDate(toDate, 'yyyy-MM-dd');\r\n }\r\n if (sliceArray) {\r\n parsedQuery.sliceTypes = sliceArray;\r\n }\r\n\r\n const stringified = queryString.stringify(parsedQuery);\r\n\r\n let endpoint = httpService.getEndpointURL(`/Documents/slices?${stringified}`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const getDocsForSlice = (\r\n parentsArray,\r\n documentName,\r\n funds,\r\n investors,\r\n classifications,\r\n read,\r\n fromDate,\r\n toDate,\r\n startResult,\r\n maxResults,\r\n sortField,\r\n sortDir,\r\n publishedChecked,\r\n effectiveChecked,\r\n asOfDate,\r\n period,\r\n includeCount\r\n) => {\r\n let parsedQuery = queryString.parse(location.search);\r\n if (documentName) {\r\n parsedQuery.name = documentName;\r\n }\r\n if (funds && funds.length > 0) {\r\n parsedQuery.funds = funds.map((x) => x.id);\r\n }\r\n if (investors && investors.length > 0) {\r\n parsedQuery.investors = investors.map((x) => x.objectId);\r\n }\r\n if (classifications && classifications.length > 0) {\r\n parsedQuery.classifications = classifications.map((x) => x.id);\r\n }\r\n if (read) {\r\n parsedQuery.readFlag = read;\r\n }\r\n if (period && period.startDate && period.endDate) {\r\n const startDate = new Date(period.startDate);\r\n const endDate = new Date(period.endDate);\r\n parsedQuery.fromPublishDate = formatDate(startDate, 'yyyy-MM-dd');\r\n parsedQuery.publishDate = formatDate(endDate, 'yyyy-MM-dd');\r\n }\r\n if (fromDate && effectiveChecked) {\r\n parsedQuery.fromDate = formatDate(fromDate, 'yyyy-MM-dd');\r\n }\r\n if (toDate && effectiveChecked) {\r\n parsedQuery.date = formatDate(toDate, 'yyyy-MM-dd');\r\n }\r\n\r\n if (fromDate && publishedChecked) {\r\n parsedQuery.fromPublishDate = formatDate(fromDate, 'yyyy-MM-dd');\r\n }\r\n\r\n if (asOfDate) {\r\n parsedQuery.publishDate = formatDate(asOfDate, 'yyyy-MM-dd');\r\n }\r\n\r\n if (toDate && publishedChecked) {\r\n parsedQuery.publishDate = formatDate(toDate, 'yyyy-MM-dd');\r\n }\r\n\r\n if (startResult) {\r\n parsedQuery.startResult = startResult;\r\n }\r\n if (maxResults) {\r\n parsedQuery.maxResults = maxResults;\r\n }\r\n //@ts-ignore\r\n parsedQuery.includeTotalCount = includeCount;\r\n\r\n if (sortField) {\r\n parsedQuery.sortField = sortField;\r\n }\r\n if (sortDir) {\r\n parsedQuery.sortDir = sortDir;\r\n }\r\n\r\n const stringified = queryString.stringify(parsedQuery);\r\n\r\n let endpoint = httpService.getEndpointURL(`/Documents/search/files/slice?${stringified}`);\r\n return httpService.put(endpoint, parentsArray);\r\n};\r\n\r\nexport const getPeriods = (frequency) => {\r\n let parsedQuery = queryString.parse(location.search);\r\n\r\n if (frequency) {\r\n parsedQuery.frequency = frequency;\r\n }\r\n\r\n const stringified = queryString.stringify(parsedQuery);\r\n\r\n let endpoint = httpService.getEndpointURL(`/Documents/periods?${stringified}`);\r\n return httpService.get(endpoint);\r\n};\r\n\r\nexport const saveMultipleDocuments = (idArray) => {\r\n const config = {\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Credentials': '*',\r\n },\r\n responseType: 'arraybuffer',\r\n };\r\n let endpoint = httpService.getEndpointURL(`/Documents/download/batch`);\r\n return httpService.put(endpoint, idArray, config).then((response) => {\r\n const data = response.data;\r\n const contentType = response.headers['content-type'];\r\n const blob = new Blob([data], { type: contentType });\r\n const currentMoment = getDateAndTime();\r\n saveAs(blob, 'Documents_' + currentMoment);\r\n });\r\n};\r\n","export class DocumentSliceNode {\r\n id: string;\r\n name: string;\r\n parent: DocumentSliceNode;\r\n type: string;\r\n children: Array;\r\n level: number;\r\n nodeId: string;\r\n\r\n constructor(id: string, name: string, type: string, parent: DocumentSliceNode) {\r\n this.id = id;\r\n this.name = name;\r\n this.parent = parent;\r\n this.type = type;\r\n this.level = parent ? parent.level + 1 : 0;\r\n this.nodeId = this._path('');\r\n this.children = new Array();\r\n }\r\n\r\n addChild(id: string, name: string, type: string): DocumentSliceNode {\r\n let child = this.findChild(id, type);\r\n if (!child) {\r\n child = new DocumentSliceNode(id, name, type, this);\r\n this.children.push(child);\r\n }\r\n return child;\r\n }\r\n\r\n findChild(id: string, type: string): DocumentSliceNode {\r\n return this.children.find((item) => item.id === id && item.type === type);\r\n }\r\n\r\n ancestors(nodes?: Array): Array {\r\n nodes = nodes || new Array();\r\n if (this.parent !== null) {\r\n nodes.push(this.parent);\r\n this.parent.ancestors(nodes);\r\n }\r\n return nodes;\r\n }\r\n\r\n _path(value: string): string {\r\n if (this.parent) value = this.parent._path(value);\r\n return `${value}_${this.id}`;\r\n }\r\n}\r\n","import { DocumentSliceNode } from './DocumentSliceNode';\r\nimport {orderBy} from 'lodash';\r\n\r\nexport class DocumentSliceHierarchy {\r\n _data: Array;\r\n _typeStructure: Array;\r\n _typeFields: Map;\r\n _nodes: Array;\r\n\r\n constructor(data?: Array, structure?: Array, nodes?: Array) {\r\n this._data = data || [];\r\n this._typeStructure = structure || [];\r\n this._typeFields = new Map([\r\n ['fund', { id: 'fundId', name: 'fundName' }],\r\n ['investor', { id: 'investorId', name: 'investorName' }],\r\n ['classification', { id: 'classificationId', name: 'classificationName' }],\r\n ['period', { period: 'publishPeriod', year: 'publishYear' }],\r\n ]);\r\n this._nodes = nodes || [];\r\n }\r\n\r\n sortChildren(data){\r\n if (data && data.children && data.children.length < 1) return data;\r\n if (data && data.children && data.children.length > 0){\r\n data.children = orderBy(data.children, ['name'], ['asc']);\r\n data.children = data.children.map((child) => {\r\n return this.sortChildren(child);\r\n })\r\n }\r\n return data;\r\n }\r\n\r\n generate(data?: Array, typeStructure?: Array): Array {\r\n this._data = data || this._data;\r\n this._typeStructure = typeStructure || this._typeStructure;\r\n\r\n this._nodes = new Array();\r\n if (this._data.length === 0 || this._typeStructure.length === 0) return this._nodes;\r\n\r\n let lookup = new Map();\r\n let type = this._typeStructure[0];\r\n let fields = this._typeFields.get(type);\r\n\r\n for (let i = 0; i < this._data.length; i++) {\r\n let item = this._data[i];\r\n if (type === 'period') {\r\n if (!lookup.get(`${item[fields.period]}_${item[fields.year]}`)) {\r\n const node = new DocumentSliceNode(`${item[fields.period]}_${item[fields.year]}`, `${item[fields.year]} Q${item[fields.period]}`, type, null);\r\n this._descendentNodes(node);\r\n this._nodes.push(node);\r\n lookup.set(`${item[fields.period]}_${item[fields.year]}`, true);\r\n }\r\n } else {\r\n if (!lookup.get(item[fields.id])) {\r\n const node = new DocumentSliceNode(item[fields.id], item[fields.name], type, null);\r\n this._descendentNodes(node);\r\n this._nodes.push(node);\r\n lookup.set(item[fields.id], true);\r\n }\r\n }\r\n }\r\n return this._nodes.map((node) => {\r\n return this.sortChildren(node);\r\n });\r\n }\r\n\r\n addChildren(data: Array, typeStructure: Array, clickedNode: DocumentSliceNode, nodes?: Array) {\r\n const lastSlice = typeStructure[typeStructure.length - 1];\r\n nodes &&\r\n nodes.forEach((i) => {\r\n if (i.type === lastSlice && i.nodeId === clickedNode.nodeId) {\r\n i.children = [...data];\r\n } else {\r\n this.addChildren(data, typeStructure, clickedNode, i.children);\r\n }\r\n });\r\n }\r\n\r\n _descendentNodes(parent: DocumentSliceNode) {\r\n if (parent.level + 1 >= this._typeStructure.length) return;\r\n\r\n let ancestors = parent.ancestors();\r\n ancestors.push(parent);\r\n\r\n let type = this._typeStructure[parent.level + 1];\r\n let fields = this._typeFields.get(type);\r\n\r\n for (let i = 0; i < this._data.length; i++) {\r\n let item = this._data[i];\r\n if (this._isDescendent(item, ancestors)) {\r\n let child;\r\n if (type === 'period') {\r\n child = parent.addChild(`${item[fields.period]}_${item[fields.year]}`, `${item[fields.year]} Q${item[fields.period]}`, type);\r\n } else child = parent.addChild(item[fields.id], item[fields.name], type);\r\n this._descendentNodes(child);\r\n }\r\n }\r\n }\r\n\r\n _isDescendent(item, ancestors: Array): boolean {\r\n for (let i = 0; i < ancestors.length; i++) {\r\n let ancestor = ancestors[i];\r\n let fields = this._typeFields.get(ancestor.type);\r\n if (ancestor.type === 'period') {\r\n let periodId = item[fields.period] + '_' + item[fields.year];\r\n if (periodId !== ancestor.id) return false;\r\n } else if (item[fields.id] !== ancestor.id) return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nconst defaultValues = {\r\n docName: '',\r\n docNameActivity: '',\r\n funds: [],\r\n fundsActivity: [],\r\n investors: [],\r\n typePickerBoard: false,\r\n typePickerDocument: false,\r\n investorsActivity: [],\r\n classifications: [],\r\n classificationsActivity: [],\r\n read: '',\r\n publishChecked: false,\r\n effectiveChecked: false,\r\n fromPublishDate: '',\r\n toPublishDate: '',\r\n asOfDate: '',\r\n fromDate: '',\r\n toDate: '',\r\n period: '',\r\n classificationToggle: false,\r\n fundsToggle: false,\r\n investorsToggle: false,\r\n periodToggle: false,\r\n slicerChoices: [],\r\n initialGroup: [],\r\n activityFeedFromDate: 0,\r\n setToDate: (e) => {},\r\n setFromDate: (e) => {},\r\n setPublishChecked: (e) => {},\r\n setEffectiveChecked: (e) => {},\r\n setAsOfDate: (e) => {},\r\n setPeriod: (e) => {},\r\n setTypePickerBoard: (e) => {},\r\n setTypePickerDocument: (e) => {},\r\n setClassificationToggle: (e) => {},\r\n setFundsToggle: (e) => {},\r\n setInvestorsToggle: (e) => {},\r\n setPeriodToggle: (e) => {},\r\n setSlicerChoices: (e) => {},\r\n setInitialGroup: (e) => {},\r\n setActivityFeedFromDate: (e) => {},\r\n clearFilters: () => {},\r\n clearFiltersActivity: () => {},\r\n hasFilters: () => {\r\n return false;\r\n },\r\n hasActivityFilters: () => {\r\n return false;\r\n },\r\n};\r\n\r\nconst FilterCtx = React.createContext(defaultValues);\r\n\r\nexport default FilterCtx;\r\n","import React from 'react';\r\n\r\nconst defaultValues = {\r\n selectedItemsDocIds: [],\r\n selectedItemsIds: [],\r\n setSelectedItemsDocIds: (e) => {},\r\n setSelectedItemsIds: (e) => {},\r\n};\r\n\r\nconst DocsCtx = React.createContext(defaultValues);\r\n\r\nexport default DocsCtx;\r\n","import React from 'react';\r\n\r\nimport '../../../assets/fontAwesome/css/all.css';\r\nimport '../../../common/styles/globalClasses.scss';\r\nimport './icon.scss';\r\n\r\ninterface IICon {\r\n name?: string;\r\n color?: string;\r\n className?: string;\r\n style?: {};\r\n disabled?: boolean;\r\n onClick?: (e: any) => void;\r\n id?: string;\r\n}\r\n\r\nconst Icon: React.FC = ({ name, className, onClick, disabled, id, style }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default Icon;\r\n","import React from 'react';\r\n\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\n\r\nimport './headerCell.scss';\r\n\r\nconst HeaderCell = (props) => {\r\n let headerCellStyles;\r\n\r\n const { t } = useTranslate();\r\n\r\n if (props.multipleDownload) {\r\n headerCellStyles = 'k-link download-padding';\r\n } else if (props.field === 'fileType') {\r\n headerCellStyles = 'k-link align-center';\r\n } else {\r\n headerCellStyles = 'k-link';\r\n }\r\n\r\n return (\r\n
\r\n {props.multipleDownload && (\r\n
\r\n \r\n {t('DOCUMENTS_TABLE.COLUMN_DOWNLOAD')}\r\n
\r\n )}\r\n {!props.multipleDownload && {props.title}}\r\n {props.children}\r\n
\r\n );\r\n};\r\n\r\nexport default HeaderCell;\r\n","import { Skeleton } from '@progress/kendo-react-indicators';\r\n\r\nconst LoadingCell = () => {\r\n return (\r\n \r\n {' '}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoadingCell;\r\n","import React from 'react';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\nimport LoadingCell from '../../../../ui/table/cells/loadingCell/loadingCell';\r\n\r\nimport './dateCell.scss';\r\n\r\nconst DateCell = (props) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined && props.treelist) return ;\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n const intl = useInternationalization();\r\n\r\n return (\r\n \r\n
{intl.formatDate(new Date(props.dataItem[props.field]), 'd')}
\r\n \r\n );\r\n};\r\n\r\nexport default DateCell;\r\n","import React from 'react';\r\nimport LoadingCell from '../../../../ui/table/cells/loadingCell/loadingCell';\r\n\r\nimport './chipsCell.scss';\r\n\r\nconst ChipsCell = (props) => {\r\n if (props.rowType === 'groupHeader') {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined && props.treelist) return ;\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n let title = '';\r\n\r\n let chips = props.dataItem[props.field]\r\n ? props.dataItem[props.field].map((cv, i) => {\r\n if (i > 0)\r\n title += ', ';\r\n title += cv.name;\r\n\r\n return (\r\n
\r\n {cv.name}\r\n
\r\n );\r\n })\r\n : 'none';\r\n\r\n return (\r\n \r\n
\r\n {chips}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ChipsCell;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport LoadingCell from '../../../../ui/table/cells/loadingCell/loadingCell';\r\n\r\nimport './readCell.scss';\r\n\r\nconst ReadCell = (props) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined && props.treelist) return ;\r\n if (props.dataItem[props.field] === undefined) return ;\r\n const [isRead, setIsRead] = useState(props.dataItem.isRead);\r\n\r\n useEffect(() => {\r\n setIsRead(props.dataItem.isRead);\r\n }, [isRead]);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ReadCell;\r\n","import React from 'react';\r\nimport './pinLoader.scss';\r\n\r\nconst PinLoader = (props) => {\r\n return
;\r\n};\r\n\r\nexport default PinLoader;\r\n","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Icon from '../../icon/icon';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { SWITCH_MODAL } from '../../../../redux/types';\r\nimport PinLoader from '../../loaders/pinLoader/pinLoader';\r\n\r\nimport './pin.scss';\r\ninterface IPin {\r\n isPinned?: boolean;\r\n clickHandler?: () => void;\r\n modal?: boolean;\r\n className?: string;\r\n loading?: boolean;\r\n}\r\n\r\nconst Pin: React.FC = ({ isPinned, clickHandler, className, loading }) => {\r\n const impersonate = useSelector((state: RootState) => state.impersonate.impersonate);\r\n const dispatch = useDispatch();\r\n const pinClickHandler = impersonate ? () => dispatch({ type: SWITCH_MODAL }) : clickHandler;\r\n\r\n return (\r\n
\r\n {loading && }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Pin;\r\n","import React, { useContext, useState } from 'react';\r\nimport { setPin, removePin } from '../../../../../common/services/http/documentsService';\r\nimport { downloadDoc } from '../../../../../common/services/http/documentsService';\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport Pin from '../../../../ui/button/pin/pin';\r\nimport LoadingCell from '../../../../ui/table/cells/loadingCell/loadingCell';\r\nimport DocsCtx from '../../../../../context/docsContext/docsCtx';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\n\r\nimport './actionsCell.scss';\r\n\r\nconst ActionsCell = (props) => {\r\n const [pinned, setPinned] = useState(props.dataItem.isPinned);\r\n\r\n const docsCtx = useContext(DocsCtx);\r\n const { t } = useTranslate();\r\n\r\n let displayDocNumber = '';\r\n\r\n if (props.rowType === 'groupHeader') {\r\n return null;\r\n }\r\n\r\n if (props.dataItem['documentId'] === undefined && props.treelist) {\r\n let docLabel = '';\r\n let folderLabel = '';\r\n if (props.dataItem.children) {\r\n docLabel = props.dataItem.children.length > 1 ? t('DOCUMENTS_TABLE.LABEL_DOCUMENTS') : t('DOCUMENTS_TABLE.LABEL_DOCUMENT');\r\n folderLabel = props.dataItem.children.length > 1 ? t('DOCUMENTS_TABLE.LABEL_FOLDERS') : t('DOCUMENTS_TABLE.LABEL_FOLDER');\r\n }\r\n\r\n if (!props.isDocNumberShown) {\r\n displayDocNumber = 'treelist-header-cell noDisplay';\r\n } else {\r\n displayDocNumber = 'treelist-header-cell';\r\n }\r\n return (\r\n \r\n {props.dataItem.children && {`${props.dataItem.children.length} ${props.dataItem.children[0]['documentId'] ? docLabel : folderLabel}`}}\r\n \r\n );\r\n }\r\n\r\n if (props.dataItem['documentId'] === undefined) return ;\r\n\r\n const isCheckedDocId = docsCtx.selectedItemsDocIds && docsCtx.selectedItemsDocIds.indexOf(props.dataItem['documentId']);\r\n const isCheckedId = docsCtx.selectedItemsIds && docsCtx.selectedItemsIds.indexOf(props.dataItem['id']);\r\n\r\n const handleCheck = () => {\r\n if (isCheckedId !== -1) {\r\n props.onUncheck(props.dataItem.documentId, props.dataItem.id);\r\n } else if (isCheckedId === -1 && isCheckedDocId !== -1) {\r\n props.onCheck(props.dataItem.documentId, props.dataItem.id);\r\n } else {\r\n props.onCheck(props.dataItem.documentId, props.dataItem.id);\r\n }\r\n };\r\n\r\n const handlePinClick = () => {\r\n if (pinned === false) {\r\n setPin(+props.dataItem.id).then(() => {\r\n setPinned(true);\r\n });\r\n } else if (pinned === true) {\r\n removePin(+props.dataItem.id).then(() => {\r\n setPinned(false);\r\n });\r\n }\r\n };\r\n\r\n const handleDownload = () => {\r\n downloadDoc(props.dataItem);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ActionsCell;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { downloadDoc } from '../../../../../common/services/http/documentsService';\r\nimport LoadingCell from '../../../../ui/table/cells/loadingCell/loadingCell';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\n\r\nimport './documentNameCell.scss';\r\n\r\nconst DocumentNameCell = (props) => {\r\n if (props.rowType === 'groupHeader') {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n const [isRead, setIsRead] = useState(props.dataItem.isRead);\r\n\r\n useEffect(() => {\r\n setIsRead(props.dataItem.isRead);\r\n }, [isRead]);\r\n\r\n const updateIsReadFlag = (isRead) => {\r\n setIsRead(isRead);\r\n props.dataItem.isRead = isRead;\r\n };\r\n\r\n const linkToOrigin = props.origin === 'homePage' ? 'documents/pdf' : 'pdf';\r\n const docId = props.dataItem[props.idField || 'id'];\r\n\r\n return (\r\n \r\n \r\n
\r\n {props.icon}\r\n {props.dataItem.fileType.toLowerCase() === 'pdf' ? (\r\n \r\n {\r\n updateIsReadFlag(true);\r\n }}>\r\n {props.dataItem[props.field]}\r\n \r\n \r\n ) : (\r\n downloadDoc(props.dataItem)}>\r\n {props.dataItem[props.field]}\r\n \r\n )}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default DocumentNameCell;\r\n","import React, { useContext } from 'react';\r\nimport { debounce } from 'lodash';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport '../filters.scss';\r\nimport './docNameFilter.scss';\r\n\r\ninterface DocName {\r\n table?: string;\r\n className?: string;\r\n}\r\n\r\nconst DocNameFilter: React.FC = ({ table, className }) => {\r\n const filterCtx: any = useContext(FilterCtx);\r\n\r\n const { t } = useTranslate();\r\n\r\n const handleInputChange = debounce((event: any) => {\r\n if (table === 'documents') {\r\n filterCtx.setDocName(event.target.value);\r\n } else {\r\n filterCtx.setDocNameActivity(event.target.value);\r\n }\r\n }, 500);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DocNameFilter;\r\n","import React, { useEffect, useContext, useState } from 'react';\r\nimport { MultiSelect } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { getFunds, IFund } from '../../../../common/services/http/fundsService';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\n\r\nimport '../../multiselect/multiselect.scss';\r\nimport '../filters.scss';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\n\r\ninterface Fund {\r\n title?: string;\r\n table?: string;\r\n toggleOn?: boolean;\r\n}\r\n\r\nconst FundsFilter: React.FC = ({ table, toggleOn }) => {\r\n const { t } = useTranslate();\r\n const filterCtx: any = useContext(FilterCtx);\r\n const [value, setValue] = useState([]);\r\n const [filterChoice, setFilterChoice] = useState([]);\r\n const [cashChoice, setCashChoice] = useState([]);\r\n const [checked, setChecked] = useState(false);\r\n\r\n const impersonation = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setChecked(filterCtx.slicerChoices.indexOf('fundName') + 1 > 0);\r\n getFunds()\r\n .then((res: IFund[]) => {\r\n setFilterChoice(res);\r\n setCashChoice(res);\r\n })\r\n .catch((err) => console.log('Funds error: ', err));\r\n if (table === 'documents' && filterCtx.funds) {\r\n setValue(filterCtx.funds);\r\n } else {\r\n setValue(filterCtx.fundsActivity);\r\n }\r\n }, [impersonation]);\r\n\r\n useEffect(() => {\r\n if (table === 'documents') {\r\n filterCtx.setFunds(value);\r\n } else {\r\n filterCtx.setFundsActivity(value);\r\n }\r\n }, [value]);\r\n\r\n const handleFundsToggleChange = (e) => {\r\n setChecked(e.value);\r\n filterCtx.setFundsToggle(e.value);\r\n filterCtx.setFunds([]);\r\n setValue([]);\r\n let tempArray = filterCtx.slicerChoices;\r\n let tempGroupsArray = filterCtx.initialGroup;\r\n if (e.value) {\r\n filterCtx.setSlicerChoices([...filterCtx.slicerChoices, 'fundName']);\r\n filterCtx.setInitialGroup([...filterCtx.initialGroup, { field: 'fundName' }]);\r\n } else {\r\n tempArray = filterCtx.slicerChoices.filter((item) => item !== 'fundName');\r\n tempGroupsArray = filterCtx.initialGroup.filter((item) => item.field !== 'fundName');\r\n filterCtx.setSlicerChoices(tempArray);\r\n filterCtx.setInitialGroup(tempGroupsArray);\r\n }\r\n };\r\n\r\n const handleFundChange = (event): void => {\r\n setValue(event.target.value);\r\n };\r\n\r\n const handleFundsFilterChange = (event: any) => {\r\n setFilterChoice(filterBy(cashChoice.slice(), event.filter));\r\n };\r\n\r\n return (\r\n
\r\n \r\n {toggleOn && checked && filterCtx.slicerChoices.indexOf('fundName') + 1 > 0 && (\r\n
\r\n {filterCtx.slicerChoices.indexOf('fundName') + 1}\r\n
\r\n )}\r\n {toggleOn && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default FundsFilter;\r\n","import httpService from './httpService';\r\n\r\nexport interface IFund {\r\n address1: any;\r\n address2: any;\r\n city: any;\r\n discriminator: any;\r\n email: any;\r\n id: number;\r\n legalName: any;\r\n name: string;\r\n phoneNumber: any;\r\n postalAddress: any;\r\n postalCode: any;\r\n state: any;\r\n}\r\n\r\nexport const getFunds = (): Promise => {\r\n let endpoint = httpService.getEndpointURL('/Funds');\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n","import React, { useEffect, useContext, useState } from 'react';\r\nimport { MultiSelect } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { getInvestors, IInvestor } from '../../../../common/services/http/investorsService';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\n\r\nimport '../../multiselect/multiselect.scss';\r\nimport '../filters.scss';\r\n\r\ninterface Investor {\r\n title?: string;\r\n table?: string;\r\n toggleOn?: boolean;\r\n}\r\n\r\nconst InvestorsFilter: React.FC = ({ table, toggleOn }) => {\r\n const { t } = useTranslate();\r\n const filterCtx: any = useContext(FilterCtx);\r\n const [value, setValue] = useState([]);\r\n const [filterChoice, setFilterChoice] = useState([]);\r\n const [cashChoice, setCashChoice] = useState([]);\r\n const [checked, setChecked] = useState(false);\r\n const impersonation = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setChecked(filterCtx.slicerChoices.indexOf('objectName') + 1 > 0);\r\n getInvestors()\r\n .then((res: IInvestor[]) => {\r\n setFilterChoice(res);\r\n setCashChoice(res);\r\n })\r\n .catch((err) => console.log('Investors error: ', err));\r\n if (table === 'documents' && filterCtx.investors) {\r\n setValue(filterCtx.investors);\r\n } else {\r\n setValue(filterCtx.investorsActivity);\r\n }\r\n }, [impersonation]);\r\n\r\n useEffect(() => {\r\n if (table === 'documents') {\r\n filterCtx.setInvestors(value);\r\n } else {\r\n filterCtx.setInvestorsActivity(value);\r\n }\r\n }, [value]);\r\n\r\n const handleInvestorsToggleChange = (e): void => {\r\n setChecked(e.value);\r\n filterCtx.setInvestorsToggle(e.value);\r\n filterCtx.setInvestors([]);\r\n setValue([]);\r\n let tempArray = filterCtx.slicerChoices;\r\n let tempGroupsArray = filterCtx.initialGroup;\r\n if (e.value) {\r\n filterCtx.setSlicerChoices([...filterCtx.slicerChoices, 'objectName']);\r\n filterCtx.setInitialGroup([...filterCtx.initialGroup, { field: 'objectName' }]);\r\n } else {\r\n tempArray = filterCtx.slicerChoices.filter((item) => item !== 'objectName');\r\n tempGroupsArray = filterCtx.initialGroup.filter((item) => item.field !== 'objectName');\r\n filterCtx.setSlicerChoices(tempArray);\r\n filterCtx.setInitialGroup(tempGroupsArray);\r\n }\r\n };\r\n\r\n const handleInvestorChange = (e): void => {\r\n setValue(e.target.value);\r\n };\r\n\r\n const handleInvestorFilterChange = (event: any): void => {\r\n setFilterChoice(filterBy(cashChoice.slice(), event.filter));\r\n };\r\n\r\n return (\r\n
\r\n \r\n {toggleOn && checked && filterCtx.slicerChoices.indexOf('objectName') + 1 > 0 && (\r\n
\r\n {filterCtx.slicerChoices.indexOf('objectName') + 1}\r\n
\r\n )}\r\n {toggleOn && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default InvestorsFilter;\r\n","import httpService from './httpService';\r\n\r\nexport interface IInvestor {\r\n objectId: number;\r\n name: string;\r\n id: number;\r\n legalName: string;\r\n emailAddress: string;\r\n phoneNumber: string;\r\n postalAddress: string;\r\n streetAddress: string;\r\n city: string;\r\n state: string;\r\n postalCode: string;\r\n country: string;\r\n}\r\n\r\nexport const getInvestors = (): Promise => {\r\n let endpoint = httpService.getEndpointURL('/Investors');\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\nexport const getActiveInvestors = (): Promise => {\r\n let endpoint = httpService.getEndpointURL('/Investors?activeOnly=true');\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\nexport const getInvestor = (id: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Investors/${id}`);\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\nexport const getInvestorAssociations = (id: number) => {\r\n let endpoint = httpService.getEndpointURL(`/Investors/${id}/associations`);\r\n\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport Icon from '../icon/icon';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\nimport { getUserSettings, saveUserSettings } from '../../../common/services/http/userService';\r\n\r\nimport './infoTooltip.scss';\r\n\r\nconst InfoTooltip = () => {\r\n const { t } = useTranslate();\r\n const [tooltipHidden, setTooltipHidden] = useState(true);\r\n\r\n const closeInfoTooltip = (): void => {\r\n setTooltipHidden(true);\r\n sessionStorage.setItem('docuSlicerTooltipHidden', '1');\r\n };\r\n\r\n const doNotShowAgain = () => {\r\n setTooltipHidden(true);\r\n const slicerTooltipSetting = { name: 'docuSlicerTooltipHidden', value: '1' };\r\n saveUserSettings(slicerTooltipSetting);\r\n };\r\n\r\n useEffect(() => {\r\n const stored = sessionStorage.getItem('docuSlicerTooltipHidden');\r\n if (stored === null) {\r\n getUserSettings().then((settings) => {\r\n const settingHideTooltip = settings.find((setting) => {\r\n return setting.name === 'docuSlicerTooltipHidden';\r\n });\r\n if (settingHideTooltip === undefined) {\r\n setTooltipHidden(false);\r\n } else if (settingHideTooltip.value === '1') {\r\n setTooltipHidden(true);\r\n } else {\r\n setTooltipHidden(false);\r\n }\r\n });\r\n } else {\r\n setTooltipHidden(true);\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n {!tooltipHidden && (\r\n
\r\n
\r\n
\r\n

{t('FILTERS.TOOLTIP_TEXT')}

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default InfoTooltip;\r\n","import React, { useEffect, useContext, useState } from 'react';\r\nimport { MultiSelect } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { getClassifications, getFeedClassifications, IClassification } from '../../../../common/services/http/documentsService';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\nimport InfoTooltip from '../../infoTooltip/infoTooltip';\r\n\r\nimport '../../multiselect/multiselect.scss';\r\nimport '../filters.scss';\r\n\r\ninterface Classification {\r\n title?: string;\r\n table?: string;\r\n toggleOn?: boolean;\r\n}\r\n\r\nconst ClassificationsFilter: React.FC = ({ table, toggleOn }) => {\r\n const { t } = useTranslate();\r\n const filterCtx: any = useContext(FilterCtx);\r\n const [value, setValue] = useState([]);\r\n const [filterChoice, setFilterChoice] = useState([]);\r\n const [cashChoice, setCashChoice] = useState([]);\r\n const [checked, setChecked] = useState(false);\r\n const impersonation = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setChecked(filterCtx.slicerChoices.indexOf('classifications') + 1 > 0);\r\n if (table === 'documents') {\r\n getClassifications()\r\n .then((res: IClassification[]) => {\r\n setFilterChoice(res);\r\n setCashChoice(res);\r\n })\r\n .catch((err) => console.log('Classifications error: ', err));\r\n } else {\r\n getFeedClassifications()\r\n .then((res: IClassification[]) => {\r\n setFilterChoice(res);\r\n setCashChoice(res);\r\n })\r\n .catch((err) => console.log('Classifications error: ', err));\r\n }\r\n\r\n if (table === 'documents' && filterCtx.classifications) {\r\n setValue(filterCtx.classifications);\r\n } else {\r\n setValue(filterCtx.classificationsActivity);\r\n }\r\n }, [impersonation]);\r\n\r\n useEffect(() => {\r\n if (table === 'documents') {\r\n filterCtx.setClassifications(value);\r\n } else {\r\n filterCtx.setClassificationsActivity(value);\r\n }\r\n }, [value]);\r\n\r\n const handleClassificationToggleChange = (e): void => {\r\n setChecked(e.value);\r\n filterCtx.setClassificationToggle(e.value);\r\n filterCtx.setClassifications([]);\r\n setValue([]);\r\n let tempArray = filterCtx.slicerChoices;\r\n let tempGroupsArray = filterCtx.initialGroup;\r\n if (e.value) {\r\n filterCtx.setSlicerChoices([...filterCtx.slicerChoices, 'classifications']);\r\n filterCtx.setInitialGroup([...filterCtx.initialGroup, { field: 'classifications' }]);\r\n } else {\r\n tempArray = filterCtx.slicerChoices.filter((item) => item !== 'classifications');\r\n tempGroupsArray = filterCtx.initialGroup.filter((item) => item.field !== 'classifications');\r\n filterCtx.setSlicerChoices(tempArray);\r\n filterCtx.setInitialGroup(tempGroupsArray);\r\n }\r\n };\r\n\r\n const handleClassificationChange = (event): void => {\r\n setValue(event.target.value);\r\n };\r\n\r\n const handleClassificationFilterChange = (event: any): void => {\r\n setFilterChoice(filterBy(cashChoice.slice(), event.filter));\r\n };\r\n\r\n return (\r\n
\r\n {toggleOn && }\r\n \r\n {toggleOn && checked && filterCtx.slicerChoices.indexOf('classifications') + 1 > 0 && (\r\n
\r\n {filterCtx.slicerChoices.indexOf('classifications') + 1}\r\n
\r\n )}\r\n {toggleOn && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ClassificationsFilter;\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\n\r\nimport '../../dropdown/dropdown.scss';\r\nimport '../filters.scss';\r\n\r\nconst readStates = [\r\n { text: 'Read and Unread', value: 'all' },\r\n { text: 'Read', value: 'read' },\r\n { text: 'Unread', value: 'unread' },\r\n];\r\n\r\ninterface Read {\r\n readState?: string;\r\n}\r\n\r\nconst ReadFilter: React.FC = () => {\r\n const filterCtx: any = useContext(FilterCtx);\r\n const [value, setValue] = useState('all');\r\n\r\n useEffect(() => {\r\n if (filterCtx.read) {\r\n setValue(filterCtx.read);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n filterCtx.setRead(value);\r\n }, [value]);\r\n\r\n const handleReadChange = (event: DropDownListChangeEvent): void => {\r\n setValue(event.value && event.value.value);\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ReadFilter;\r\n","import React, { useContext } from 'react';\r\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\r\nimport { debounce } from 'lodash';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\n\r\nimport '../../datePicker/datePicker.scss';\r\nimport '../filters.scss';\r\nimport './dateFilter.scss';\r\n\r\ntype Props = {\r\n dateType?: string;\r\n disabled?: boolean;\r\n placeholder?: string;\r\n table?: string;\r\n};\r\n\r\nconst DateFilter: React.FC = ({ dateType, disabled, placeholder, table }) => {\r\n const filterCtx = useContext(FilterCtx);\r\n const minDate = new Date(1900, 0, 1);\r\n\r\n const handleDateChange = debounce((event: any) => {\r\n if (event.value < minDate) return;\r\n\r\n switch (dateType) {\r\n case 'FROM':\r\n filterCtx.setFromDate(event.value);\r\n return;\r\n case 'TO':\r\n filterCtx.setToDate(event.value);\r\n return;\r\n case 'AS_OF':\r\n filterCtx.setAsOfDate(event.value);\r\n return;\r\n }\r\n }, 500);\r\n\r\n const getDefaultValue = () => {\r\n switch (dateType) {\r\n case 'FROM':\r\n return new Date(filterCtx.fromDate);\r\n break;\r\n case 'TO':\r\n return new Date(filterCtx.toDate);\r\n break;\r\n case 'AS_OF':\r\n return new Date(filterCtx.asOfDate);\r\n break;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {dateType === 'FROM' ? (\r\n filterCtx.fromDate ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n {dateType === 'TO' ? (\r\n filterCtx.toDate ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n {dateType === 'AS_OF' ? (\r\n filterCtx.asOfDate ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default DateFilter;\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\nimport { getPeriods } from '../../../../common/services/http/documentsService';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\n\r\nimport '../../dropdown/dropdown.scss';\r\nimport '../filters.scss';\r\n\r\nconst defaultPeriod = {\r\n name: 'Period',\r\n endDate: null,\r\n periodNumber: null,\r\n startDate: null,\r\n year: null,\r\n};\r\n\r\ninterface Periods {\r\n periodsState?: string;\r\n toggleOn?: boolean;\r\n}\r\n\r\nconst PeriodsFilter: React.FC = ({ toggleOn }) => {\r\n const filterCtx: any = useContext(FilterCtx);\r\n const [value, setValue] = useState(null);\r\n const [checked, setChecked] = useState(false);\r\n const [periods, setPeriods] = useState([]);\r\n\r\n const impersonation = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setChecked(filterCtx.slicerChoices.indexOf('period') + 1 > 0);\r\n getPeriods(3).then((res) => {\r\n let tempPeriods = [];\r\n res.data.forEach((period) => {\r\n tempPeriods.push(period);\r\n });\r\n setPeriods(tempPeriods);\r\n });\r\n\r\n if (filterCtx.period) {\r\n setValue(filterCtx.period);\r\n }\r\n }, [impersonation]);\r\n\r\n useEffect(() => {\r\n filterCtx.setPeriod(value);\r\n }, [value]);\r\n\r\n const handlePeriodToggleChange = (e): void => {\r\n setChecked(e.value);\r\n filterCtx.setPeriodToggle(e.value);\r\n filterCtx.setPeriod('');\r\n setValue(null);\r\n let tempArray = filterCtx.slicerChoices;\r\n let tempGroupsArray = filterCtx.initialGroup;\r\n if (e.value) {\r\n filterCtx.setSlicerChoices([...filterCtx.slicerChoices, 'period']);\r\n filterCtx.setInitialGroup([...filterCtx.initialGroup, { field: 'period' }]);\r\n } else {\r\n tempArray = filterCtx.slicerChoices.filter((item) => item !== 'period');\r\n tempGroupsArray = filterCtx.initialGroup.filter((item) => item.field !== 'period');\r\n filterCtx.setSlicerChoices(tempArray);\r\n filterCtx.setInitialGroup(tempGroupsArray);\r\n }\r\n };\r\n\r\n const handlePeriodChange = (event: DropDownListChangeEvent): void => {\r\n setValue(event.value && event.value);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {toggleOn && checked && filterCtx.slicerChoices.indexOf('period') + 1 > 0 && (\r\n
\r\n {filterCtx.slicerChoices.indexOf('period') + 1}\r\n
\r\n )}\r\n {toggleOn && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default PeriodsFilter;\r\n","import React, { useContext, useState } from 'react';\r\nimport { Checkbox, CheckboxChangeEvent } from '@progress/kendo-react-inputs';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport DocNameFilter from '../../../ui/filters/docNameFilter/docNameFilter';\r\nimport FundsFilter from '../../../ui/filters/fundsFilter/fundsFilter';\r\nimport InvestorsFilter from '../../../ui/filters/investorsFilter/investorsFilter';\r\nimport ClassificationsFilter from '../../../ui/filters/classificationsFilter/classificationsFilter';\r\nimport ReadFilter from '../../../ui/filters/readFilter/readFilter';\r\nimport DateFilter from '../../../ui/filters/dateFilter/dateFilter';\r\nimport PeriodsFilter from '../../../ui/filters/periodsFilter/periodsFilter';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../documentsTable/documentsTable.scss';\r\nimport '../../../../common/styles/globalClasses.scss';\r\nimport '../../../ui/filters/filters.scss';\r\n\r\nconst DocumentFilters = ({className}) => {\r\n const filterCtx = useContext(FilterCtx);\r\n const [moreFiltersShown, setMoreFiltersShown] = useState(false);\r\n const [doRerender, setDoRerender] = useState(true);\r\n const [uniqueKey, setUniqueKey] = useState('');\r\n\r\n const { t } = useTranslate();\r\n\r\n const handlePublishDateCheckbox = (event: CheckboxChangeEvent) => {\r\n filterCtx.setPublishChecked(event.value);\r\n };\r\n\r\n const handleEffectiveDateCheckbox = (event: CheckboxChangeEvent) => {\r\n filterCtx.setEffectiveChecked(event.value);\r\n };\r\n\r\n const resetFilters = (): void => {\r\n filterCtx.clearFilters();\r\n setDoRerender(!doRerender);\r\n const date = new Date();\r\n setUniqueKey(date.toString());\r\n };\r\n\r\n const toggleFilters = (): void => {\r\n setMoreFiltersShown(!moreFiltersShown);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n {!moreFiltersShown && (\r\n \r\n )}\r\n {moreFiltersShown && (\r\n \r\n )}\r\n
\r\n {moreFiltersShown ? (\r\n
\r\n
\r\n {t('FILTERS.LABEL_DATES')}\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default DocumentFilters;\r\n","import ReactDOM from 'react-dom';\r\nimport ComponentLoader from '../componentLoader/componentLoader';\r\n\r\nconst TableLoading = ({ tableElement }) => {\r\n if (tableElement && tableElement.current) return ReactDOM.createPortal(, tableElement.current.element);\r\n return null;\r\n};\r\n\r\nexport default TableLoading;\r\n","import React from 'react';\r\nimport LoadingCell from '../loadingCell/loadingCell';\r\n\r\nimport './textCell.scss';\r\n\r\nconst TextCell = (props) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined && props.treelist) return ;\r\n if (props.dataItem[props.field] === undefined && props.grid) return ;\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n return (\r\n \r\n {props.field.startsWith('measure') ? (\r\n
{props.dataItem[props.field]}
\r\n ) : (\r\n
{props.dataItem[props.field]}
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TextCell;\r\n","const capitalizeFirstLetter = (text) => {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n};\r\n\r\nexport default capitalizeFirstLetter;","import React from 'react';\r\nimport { getNestedValue, TreeListCellProps } from '@progress/kendo-react-treelist';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\r\nimport { classNames, Keys } from '@progress/kendo-react-common';\r\nimport capitalizeFirstLetter from '../../../../../common/utility/capitalizeFirstLetter';\r\nimport DocumentNameCell from '../documentNameCell/documentNameCell';\r\n\r\nconst TreeListCell = (props: TreeListCellProps) => {\r\n //@ts-ignore\r\n const { level = [0], expanded, dataItem, format, id, ariaColumnIndex } = props;\r\n const data = getNestedValue('name', dataItem);\r\n const intl = useInternationalization();\r\n const navigationAttributes = useTableKeyboardNavigation(id);\r\n let dataAsString = '';\r\n const prefix = dataItem.type && {capitalizeFirstLetter(dataItem.type + ' ')};\r\n\r\n const onKeyDownHandler = React.useCallback(\r\n (event) => {\r\n if (event.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n if (event.keyCode === Keys.enter && props.expandable) {\r\n event.preventDefault();\r\n props.onExpandChange(event, dataItem, level);\r\n }\r\n },\r\n [props.expandable, dataItem, level]\r\n );\r\n\r\n if (data !== undefined && data !== null) {\r\n dataAsString = format ? intl.format(format, data) : data.toString();\r\n }\r\n\r\n const icons: Array = [];\r\n if (props.expandable) {\r\n icons.push(...level.slice(1).map((_x, i) => ));\r\n\r\n if (dataItem.documentId === undefined) {\r\n icons.push(\r\n props.onExpandChange(event, dataItem, level)}\r\n />\r\n );\r\n } else {\r\n icons.push();\r\n }\r\n }\r\n\r\n const defaultRendering = (\r\n \r\n {icons}\r\n {prefix}\r\n {dataAsString}\r\n \r\n );\r\n\r\n return dataItem.documentId !== undefined ? (\r\n \r\n ) : props.render ? (\r\n props.render.call(undefined, defaultRendering, props)\r\n ) : (\r\n defaultRendering\r\n );\r\n};\r\n\r\nTreeListCell.displayName = 'KendoReactTreeListCell';\r\n\r\nexport default TreeListCell;\r\n","const getPeriodRange = (year: number, periodNumber: number, frequency: number = 3): any => {\r\n let endMonth = periodNumber * frequency - 1;\r\n let startMonth = endMonth - frequency + 1;\r\n\r\n const rangeObject = {\r\n startDate: new Date(year, startMonth, 1),\r\n endDate: new Date(year, endMonth + 1, 0),\r\n };\r\n return rangeObject;\r\n};\r\n\r\nexport default getPeriodRange;\r\n","const removeFirstItemFromArray = (src, element) => {\r\n const index = src.indexOf(element);\r\n if (index === -1) return src;\r\n return [...src.slice(0, index), ...src.slice(index + 1)];\r\n};\r\n\r\nexport default removeFirstItemFromArray;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { downloadDoc } from '../../../../../common/services/http/documentsService';\r\nimport LoadingCell from '../../../../ui/table/cells/loadingCell/loadingCell';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\n\r\nimport './mobileNameCell.scss';\r\nimport Icon from '../../../../ui/icon/icon';\r\n\r\nconst MobileNameCell = (props) => {\r\n const [isRead, setIsRead] = useState(props.dataItem.isRead);\r\n let navigate = useNavigate();\r\n\r\n const intl = useInternationalization();\r\n const linkToOrigin = props.origin === 'homePage' ? 'documents/pdf' : 'pdf';\r\n const docId = props.dataItem[props.idField || 'id'];\r\n\r\n const navigateToBoard = (investorId: number, boardId: number): void => {\r\n navigate(`/boards/${investorId}/${boardId}`);\r\n };\r\n\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n const updateIsReadFlag = (isRead) => {\r\n setIsRead(isRead);\r\n props.dataItem.isRead = isRead;\r\n };\r\n\r\n useEffect(() => {\r\n setIsRead(props.dataItem.isRead);\r\n }, [isRead]);\r\n\r\n return props.dataItem.type === 'board' ? (\r\n \r\n
\r\n \r\n
\r\n navigateToBoard(props.dataItem.objectId, props.dataItem.contentId)}>{props.dataItem[props.field]}\r\n
{intl.formatDate(new Date(props.dataItem['publishDate']), 'd')}
\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n
\r\n \r\n {props.dataItem.fileType && props.dataItem.fileType.toLowerCase() === 'pdf' ? (\r\n \r\n {\r\n updateIsReadFlag(true);\r\n }}>\r\n {props.dataItem[props.field]}\r\n \r\n
{intl.formatDate(new Date(props.dataItem['publishDate']), 'd')}
\r\n \r\n ) : (\r\n
\r\n downloadDoc(props.dataItem)}>\r\n {props.dataItem[props.field]}\r\n \r\n
{intl.formatDate(new Date(props.dataItem['publishDate']), 'd')}
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default MobileNameCell;\r\n","import React, { useState, useEffect, useContext, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { filterDocuments, getDocsForSlice, getSlices, saveMultipleDocuments } from '../../../../common/services/http/documentsService';\r\nimport { DocumentSliceHierarchy } from './DocumentSliceHierarchy';\r\nimport { TreeList, mapTree, extendDataItem, TreeListColumnProps, TreeListSortChangeEvent } from '@progress/kendo-react-treelist';\r\nimport { DocumentSliceNode } from './DocumentSliceNode';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport DocsCtx from '../../../../context/docsContext/docsCtx';\r\nimport HeaderCell from '../cells/headerCell/headerCell';\r\nimport DateCell from '../cells/dateCell/dateCell';\r\nimport ChipsCell from '../cells/chipsCell/chipsCell';\r\nimport ReadCell from '../cells/readCell/readCell';\r\nimport ActionsCell from '../cells/actionsCell/actionsCell';\r\nimport DocumentNameCell from '../cells/documentNameCell/documentNameCell';\r\nimport DocumentFilters from '../filters/documentFilters';\r\nimport TableLoading from '../../../ui/loaders/tableLoader/tableLoading';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport TextCell from '../../../ui/table/cells/textCell/textCell';\r\nimport TreeListCell from '../cells/treelistCell/treeListCell';\r\nimport getPeriodRange from '../../../../common/utility/getPeriodRange';\r\nimport { orderBy, SortDescriptor } from '@progress/kendo-data-query';\r\nimport removeFirstItemFromArray from '../../../../common/utility/removeFirstItemFromArray';\r\nimport DocNameFilter from '../../../ui/filters/docNameFilter/docNameFilter';\r\nimport MobileNameCell from '../cells/mobileNameCell/mobileNameCell';\r\n\r\nimport { REACHED_LIMIT_MODAL, SWITCH_MULTIPLE_DOWNLOAD_MODAL } from '../../../../redux/types';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport './documentsTable.scss';\r\nimport '../../../../common/styles/globalClasses.scss';\r\n\r\ninterface ISort {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nconst initialSort: ISort[] = [{ field: 'publishDate', dir: 'desc' }];\r\n\r\nconst subItemsField: string = 'children';\r\nconst expandField: string = 'expanded';\r\n\r\nconst DocumentsTable = () => {\r\n const filterCtx = useContext(FilterCtx);\r\n const docsCtx = useContext(DocsCtx);\r\n\r\n const [documents, setDocuments] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [total, setTotal] = useState(0);\r\n const [skip, setSkip] = useState(0);\r\n const [sort, setSort] = useState(initialSort);\r\n const [hierarchyData, setHierarchyData] = useState([]);\r\n const [expanded, setExpanded] = useState([]);\r\n const [sliceArray, setSliceArray] = useState([]);\r\n\r\n const [sliceSort, setSliceSort] = useState([{ field: 'name', dir: 'asc' }]);\r\n\r\n const { t } = useTranslate();\r\n const dispatch = useDispatch();\r\n\r\n const isFetching = useRef(false);\r\n const tableRef = useRef(null);\r\n const docHierarchyRef = useRef(new DocumentSliceHierarchy());\r\n\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n\r\n const pageSize = 100;\r\n const take = pageSize * 3;\r\n const isMultipleDownloadOn = docsCtx.selectedItemsIds && docsCtx.selectedItemsIds.length > 1;\r\n const limitReached = docsCtx.selectedItemsDocIds && docsCtx.selectedItemsDocIds.length >= 20;\r\n\r\n const isDocNumberShown = expanded.length;\r\n\r\n const onUncheck = (docId, id) => {\r\n docsCtx.setSelectedItemsDocIds((prevState) => {\r\n return removeFirstItemFromArray(prevState, docId);\r\n });\r\n docsCtx.setSelectedItemsIds((prevState) => {\r\n return prevState.filter((item) => item !== id);\r\n });\r\n };\r\n\r\n const handleDownloadClick = () => {\r\n let idsArray = docsCtx.selectedItemsDocIds.map((docId) => {\r\n return { id: docId };\r\n });\r\n saveMultipleDocuments(idsArray)\r\n .then(() => {\r\n dispatch({\r\n type: SWITCH_MULTIPLE_DOWNLOAD_MODAL,\r\n payload: {\r\n text: t('DOCUMENTS_TABLE.MULTIPLE_DOWNLOAD_SUCCESSFUL'),\r\n error: false,\r\n },\r\n });\r\n docsCtx.setSelectedItemsDocIds([]);\r\n docsCtx.setSelectedItemsIds([]);\r\n })\r\n .catch(() => {\r\n dispatch({\r\n type: SWITCH_MULTIPLE_DOWNLOAD_MODAL,\r\n payload: {\r\n text: t('DOCUMENTS_TABLE.MULTIPLE_DOWNLOAD_ERROR'),\r\n error: true,\r\n },\r\n });\r\n });\r\n };\r\n\r\n const onCheck = (docId, id) => {\r\n if (limitReached) {\r\n dispatch({ type: REACHED_LIMIT_MODAL });\r\n } else {\r\n docsCtx.setSelectedItemsDocIds([...docsCtx.selectedItemsDocIds, docId]);\r\n docsCtx.setSelectedItemsIds([...docsCtx.selectedItemsIds, id]);\r\n }\r\n };\r\n\r\n const DocNameCell = (props) => ;\r\n const GridMobileNameCell = (props) => ;\r\n const ReadDocCell = (props) => ;\r\n const ActCell = (props) => (\r\n \r\n );\r\n const TextCellDC = (props) => ;\r\n\r\n const ReadDocCellTreelist = (props) => ;\r\n const ActCellTreelist = (props) => (\r\n \r\n );\r\n const TextCellTreelist = (props) => ;\r\n const DateCellTreelist = (props) => ;\r\n const ChipsCellTreelist = (props) => ;\r\n\r\n const columns: TreeListColumnProps[] = [\r\n {\r\n // @ts-ignore\r\n field: 'label',\r\n title: t('DOCUMENTS_TABLE.COLUMN_NAME'),\r\n expandable: true,\r\n headerCell: HeaderCell,\r\n cell: TreeListCell,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'publishDate',\r\n title: t('DOCUMENTS_TABLE.COLUMN_POSTED'),\r\n headerCell: HeaderCell,\r\n cell: DateCellTreelist,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'classifications',\r\n title: t('DOCUMENTS_TABLE.COLUMN_CLASSIFICATIONS'),\r\n className: 'tableCell',\r\n headerCell: HeaderCell,\r\n cell: ChipsCellTreelist,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'fundName',\r\n title: t('DOCUMENTS_TABLE.COLUMN_FUND'),\r\n className: 'tableCell',\r\n headerCell: HeaderCell,\r\n cell: TextCellTreelist,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'fundInvestorName', //'objectName',\r\n title: t('DOCUMENTS_TABLE.COLUMN_INVESTOR'),\r\n className: 'tableCell',\r\n headerCell: HeaderCell,\r\n cell: TextCellTreelist,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'date',\r\n title: t('DOCUMENTS_TABLE.COLUMN_EFFECTIVE_DATE'),\r\n className: 'tableCell',\r\n headerCell: HeaderCell,\r\n cell: DateCellTreelist,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'isRead',\r\n title: t('DOCUMENTS_TABLE.COLUMN_READ'),\r\n className: 'tableCell',\r\n headerCell: HeaderCell,\r\n cell: ReadDocCellTreelist,\r\n },\r\n {\r\n // @ts-ignore\r\n field: 'actions',\r\n title: t('DOCUMENTS_TABLE.COLUMN_ACTIONS'),\r\n headerCell: (props) => ,\r\n cell: ActCellTreelist,\r\n sortable: false,\r\n },\r\n ];\r\n\r\n const fetchDocuments = (startResult, includeCount, sortField?, sortDir?) => {\r\n if (isFetching.current) return Promise.resolve();\r\n\r\n isFetching.current = true;\r\n setLoading(true);\r\n\r\n const start = Math.max(startResult - pageSize, 0);\r\n\r\n return filterDocuments(\r\n filterCtx.docName,\r\n filterCtx.funds,\r\n filterCtx.investors,\r\n filterCtx.classifications,\r\n filterCtx.read,\r\n filterCtx.fromDate,\r\n filterCtx.toDate,\r\n start,\r\n take,\r\n sortField,\r\n sortDir,\r\n filterCtx.publishChecked,\r\n filterCtx.effectiveChecked,\r\n null,\r\n filterCtx.period,\r\n includeCount\r\n )\r\n .then((results) => {\r\n generateDocuments(results, start, includeCount);\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n })\r\n .finally(() => {\r\n isFetching.current = false;\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const generateDocuments = (results, startResult, includeCount): any[] => {\r\n let totalCount = includeCount ? results.totalCount : total;\r\n\r\n const docs = documents.length === totalCount ? [...documents] : new Array(totalCount).fill({});\r\n\r\n results.data.forEach((doc, i) => {\r\n docs[i + startResult] = doc;\r\n });\r\n\r\n if (includeCount) setTotal(results.totalCount);\r\n setDocuments(docs);\r\n return docs;\r\n };\r\n\r\n const fetchRequired = (startResult) => {\r\n for (let i = startResult; i < startResult + pageSize && i < documents.length; i++) {\r\n if (!documents[i].id) {\r\n fetchDocuments(startResult, false, sort[0].field, sort[0].dir);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n const handlePageChange = (event) => {\r\n let start = !event.page.skip || Number.isNaN(event.page.skip) ? 0 : event.page.skip;\r\n fetchRequired(start);\r\n setSkip(start);\r\n };\r\n\r\n const handleSortChange = (e) => {\r\n setSort(e.sort);\r\n documents.fill({});\r\n fetchDocuments(skip, false, e.sort[0].field, e.sort[0].dir);\r\n };\r\n\r\n const onExpandChange = (e): void => {\r\n const clickedNode: DocumentSliceNode = new DocumentSliceNode(e.dataItem.id, e.dataItem.name, e.dataItem.type, e.dataItem.parent);\r\n const ancestorsNodes: DocumentSliceNode[] = clickedNode.ancestors(clickedNode.children);\r\n\r\n if (sliceArray.length === 1 && sliceArray[0] === 'period') {\r\n let periodData = clickedNode.id.split('_');\r\n let periodNumber = periodData[0];\r\n let year = periodData[1];\r\n\r\n const range = getPeriodRange(+year, +periodNumber);\r\n\r\n filterDocuments(\r\n filterCtx.docName,\r\n filterCtx.funds,\r\n filterCtx.investors,\r\n filterCtx.classifications,\r\n filterCtx.read,\r\n filterCtx.fromDate,\r\n filterCtx.toDate,\r\n Math.max(0 - pageSize, 0),\r\n take,\r\n sort[0].field,\r\n sort[0].dir,\r\n filterCtx.publishChecked,\r\n filterCtx.effectiveChecked,\r\n null,\r\n range,\r\n true\r\n ).then((res) => {\r\n docHierarchyRef.current.addChildren(res.data, sliceArray, clickedNode, docHierarchyRef.current._nodes);\r\n setExpanded(e.value ? expanded.filter((id) => id !== e.dataItem.nodeId) : [...expanded, e.dataItem.nodeId]);\r\n });\r\n } else {\r\n let formattedAncestors = [\r\n {\r\n objectId: clickedNode.id,\r\n type: clickedNode.type,\r\n },\r\n ];\r\n\r\n ancestorsNodes.forEach((ancestor) => {\r\n formattedAncestors.push({ objectId: ancestor.id, type: ancestor.type });\r\n });\r\n\r\n formattedAncestors = formattedAncestors.filter((ancestor) => {\r\n return ancestor.type !== 'period';\r\n });\r\n let periodData = [];\r\n let range = {};\r\n if (clickedNode.type === 'period') {\r\n periodData = clickedNode.id.split('_');\r\n let periodNumber = periodData[0];\r\n let year = periodData[1];\r\n range = getPeriodRange(+year, +periodNumber);\r\n }\r\n\r\n getDocsForSlice(\r\n formattedAncestors,\r\n filterCtx.docName,\r\n filterCtx.funds,\r\n filterCtx.investors,\r\n filterCtx.classifications,\r\n filterCtx.read,\r\n filterCtx.fromDate,\r\n filterCtx.toDate,\r\n Math.max(0 - pageSize, 0),\r\n take,\r\n sort[0].field,\r\n sort[0].dir,\r\n filterCtx.publishChecked,\r\n filterCtx.effectiveChecked,\r\n null,\r\n clickedNode.type === 'period' ? range : filterCtx.period,\r\n true\r\n ).then((res) => {\r\n docHierarchyRef.current.addChildren(res.data.data, sliceArray, clickedNode, docHierarchyRef.current._nodes);\r\n setExpanded(e.value ? expanded.filter((id) => id !== e.dataItem.nodeId) : [...expanded, e.dataItem.nodeId]);\r\n });\r\n }\r\n };\r\n\r\n const addExpandField = (dataTree: any[]): any => {\r\n return mapTree(dataTree, subItemsField, (item) =>\r\n extendDataItem(item, subItemsField, {\r\n [expandField]: expanded.includes(item.nodeId),\r\n })\r\n );\r\n };\r\n\r\n const processData = (): any => {\r\n return hierarchyData ? addExpandField(hierarchyData) : [];\r\n };\r\n\r\n const numberOfIdSplits = (id: string) => {\r\n let fields = id.split('_');\r\n fields = fields.slice(1);\r\n return fields.length;\r\n };\r\n\r\n useEffect(() => {\r\n if (filterCtx.slicerChoices.length === 0) {\r\n fetchDocuments(0, true, sort[0].field, sort[0].dir);\r\n }\r\n\r\n setExpanded((prevState) => {\r\n return prevState.filter((id) => {\r\n return filterCtx.slicerChoices.includes('period') ? numberOfIdSplits(id) === sliceArray.length : numberOfIdSplits(id) !== sliceArray.length;\r\n });\r\n });\r\n }, [filterCtx, impersonate]);\r\n\r\n useEffect(() => {\r\n const sliceArray = filterCtx.slicerChoices.map((item) => {\r\n if (item === 'fundName') {\r\n return 'fund';\r\n } else if (item === 'objectName') {\r\n return 'investor';\r\n } else if (item === 'classifications') {\r\n return 'classification';\r\n } else if (item === 'period') {\r\n return 'period';\r\n } else return null;\r\n });\r\n\r\n setLoading(true);\r\n\r\n setSliceArray(sliceArray);\r\n\r\n if (filterCtx.slicerChoices.length > 0) {\r\n getSlices(\r\n sliceArray,\r\n filterCtx.docName,\r\n filterCtx.funds,\r\n filterCtx.investors,\r\n filterCtx.classifications,\r\n filterCtx.read,\r\n filterCtx.fromDate,\r\n filterCtx.toDate,\r\n filterCtx.period,\r\n filterCtx.publishChecked,\r\n filterCtx.effectiveChecked\r\n )\r\n .then((res) => {\r\n setHierarchyData(docHierarchyRef.current.generate(res.data, sliceArray));\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n }, [filterCtx.slicerChoices]);\r\n\r\n const isSlicerOn = filterCtx.initialGroup.length !== 0;\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {isSlicerOn ? (\r\n {\r\n setSliceSort(sortEvent.sort);\r\n }}\r\n ref={tableRef}\r\n />\r\n ) : (\r\n \r\n \r\n \r\n }\r\n sortable={false}\r\n minResizableWidth={180}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n cell={ActCell}\r\n width={130}\r\n sortable={false}\r\n />\r\n \r\n )}\r\n {loading && }\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default DocumentsTable;\r\n","const debounce = (func : Function, wait : number = 10) => {\r\n let timeout;\r\n\r\n return (...args : any[]) => {\r\n if (timeout)\r\n clearTimeout(timeout);\r\n const context = this;\r\n\r\n timeout = setTimeout(() => {\r\n func.apply(context, args)\r\n }, wait);\r\n };\r\n}\r\n\r\nexport default debounce;","import { RefObject, useEffect } from 'react';\r\nimport debounce from '../utility/debounce';\r\n\r\nconst useWidthToElement = (ref: RefObject, setWidth : (height: number) => void, offset: number = 0) => {\r\n useEffect(() => {\r\n const handleResize = debounce(() => {\r\n if (ref.current) {\r\n setWidth(0);\r\n setTimeout(() => {\r\n if (ref.current) {\r\n setWidth(ref.current.offsetWidth - offset);\r\n }\r\n }, 50);\r\n }\r\n }, 200);\r\n\r\n if (ref.current)\r\n setWidth(ref.current.offsetWidth - offset);\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => window.removeEventListener('resize', handleResize);\r\n\r\n }, [ref.current, setWidth, offset]);\r\n}\r\n\r\nexport default useWidthToElement;","import React, { useRef, useState } from 'react';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport '../../dropdown/dropdown.scss';\r\nimport '../filters.scss';\r\nimport './investorDropdownFilter.scss';\r\nimport useWidthToElement from '../../../../common/hooks/useWidthToElement';\r\n\r\ninterface IInvestorDropdown {\r\n onChangeCallback?: (event: DropDownListChangeEvent) => void;\r\n investors?: any;\r\n}\r\n\r\nconst InvestorDropdownFilter: React.FC = ({ onChangeCallback, investors }) => {\r\n const { investorId } = useParams();\r\n const [width, setWidth] = useState(0);\r\n const wrapperRef = useRef();\r\n\r\n useWidthToElement(wrapperRef, setWidth);\r\n\r\n const returnDefaultInvestor = () => {\r\n if (investorId) {\r\n return investors.filter((investor) => investor.id === parseInt(investorId))[0];\r\n }\r\n return investors[0];\r\n };\r\n\r\n return (\r\n
\r\n {investors &&\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default InvestorDropdownFilter;\r\n","import React from 'react';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\nimport InvestorDropdownFilter from '../../ui/filters/investorDropdownFilter/investorDropdownFilter';\r\nimport { DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\n\r\nimport './header.scss';\r\n\r\ninterface IHeader {\r\n title: string;\r\n additionalTitle?: string;\r\n onInvestorChange?: (event: DropDownListChangeEvent) => void;\r\n investorDropdown?: boolean;\r\n children?: any;\r\n investors?: any;\r\n}\r\n\r\nconst Header: React.FC = ({ title, additionalTitle, onInvestorChange, investorDropdown, children, investors }) => {\r\n const { t } = useTranslate();\r\n\r\n const handleChange = (event: DropDownListChangeEvent) => {\r\n if (onInvestorChange) {\r\n onInvestorChange(event);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {t(title)}\r\n {t(additionalTitle)}\r\n {investorDropdown && }\r\n
\r\n
{children}
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport Header from '../header/header';\r\nimport { RootState } from '../../../redux/store';\r\n\r\nimport './main.scss';\r\n\r\nconst Main = (props) => {\r\n const [render, setRender] = useState(null);\r\n const impersonation = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setRender(null);\r\n }, [impersonation]);\r\n return (\r\n
\r\n {props.title && (\r\n \r\n )}\r\n {props.children}\r\n
\r\n );\r\n};\r\n\r\nexport default Main;\r\n","import React from 'react';\r\nimport DocumentsTable from '../../components/documentsTable/documentsTable';\r\nimport Main from '../../../layout/main/main';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nconst Documents: React.FC = () => {\r\n const { t } = useTranslate();\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Documents;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\nimport { PIN_TRIGGER } from '../../../redux/types';\r\nimport { downloadDoc, removePin } from '../../../common/services/http/documentsService';\r\nimport Pin from '../button/pin/pin';\r\n\r\nimport './card.scss';\r\n\r\ninterface ICard {\r\n item?: any;\r\n}\r\n\r\nconst Card: React.FC = ({ item }) => {\r\n const dispatch = useDispatch();\r\n\r\n const intl = useInternationalization();\r\n\r\n const clickHandler = () => {\r\n removePin(item.assignId).then(() => {\r\n dispatch({ type: PIN_TRIGGER });\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {item.fileType.toLowerCase() === 'pdf' ? (\r\n \r\n

{item.label}

\r\n \r\n ) : (\r\n downloadDoc(item)}>\r\n

{item.label}

\r\n
\r\n )}\r\n
\r\n

{intl.formatDate(new Date(item.date), 'd')}

\r\n \r\n
\r\n
\r\n

{item.fundName}

\r\n

{item.objectName}

\r\n
\r\n );\r\n};\r\n\r\nexport default Card;\r\n","import React from 'react';\r\nimport Card from '../../../../ui/card/card';\r\nimport ComponentLoader from '../../../../ui/loaders/componentLoader/componentLoader';\r\n\r\nimport './cardsGrid.scss';\r\n\r\ninterface ICardSGrid {\r\n pins?: any;\r\n loading?: any;\r\n}\r\n\r\ninterface IItem {\r\n documentId?: string;\r\n assignId?: string;\r\n}\r\n\r\nconst CardsGrid: React.FC = ({ pins, loading }) => {\r\n return (\r\n
{loading ? : pins.map((item: IItem) => )}
\r\n );\r\n};\r\n\r\nexport default CardsGrid;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport CardsGrid from './cardsGrid/cardsGrid';\r\nimport { getPins } from '../../../../common/services/http/documentsService';\r\nimport { SET_PINS } from '../../../../redux/types';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { RootState } from '../../../../redux/store';\r\n\r\nimport './docPinSection.scss';\r\n\r\ninterface IDocPinSection {\r\n pinTrigger?: boolean;\r\n}\r\n\r\nconst DocPinSection: React.FC = () => {\r\n const [pins, setPins] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const dispatch = useDispatch();\r\n const pin = useSelector((state: RootState) => state.pin.pin);\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n const { t } = useTranslate();\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n getPins().then((r) => {\r\n setLoading(false);\r\n setPins(r.data);\r\n dispatch({ type: SET_PINS, value: r.data });\r\n });\r\n }, [pin, impersonate]);\r\n\r\n return (\r\n <>\r\n {pins.length > 0 ? (\r\n
\r\n

{t('HOME.PINS.SECTION_TITLE')}

\r\n \r\n
\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default DocPinSection;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { setPin, removePin, downloadDoc } from '../../../../../../common/services/http/documentsService';\r\nimport { RootState } from '../../../../../../redux/store';\r\nimport { PIN_TRIGGER } from '../../../../../../redux/types';\r\nimport Pin from '../../../../../ui/button/pin/pin';\r\nimport Icon from '../../../../../ui/icon/icon';\r\nimport LoadingCell from '../../../../../ui/table/cells/loadingCell/loadingCell';\r\n\r\nimport './actionsCell.scss';\r\n\r\nconst ActionsCell = (props) => {\r\n if (props.dataItem['documentId'] === undefined) return ;\r\n\r\n const [isPinned, setIsPinned] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const pins = useSelector((state: RootState) => state.pin.pins);\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setIsPinned(props.dataItem.isPinned);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (pins) {\r\n if (pins.includes(props.dataItem.assignId)) {\r\n setIsPinned(true);\r\n } else {\r\n setIsPinned(false);\r\n }\r\n }\r\n }, [pins, impersonate]);\r\n\r\n const handlePinClick = () => {\r\n if (loading) {\r\n return;\r\n }\r\n setLoading(true);\r\n if (isPinned === false) {\r\n setPin(+props.dataItem.assignId).then(() => {\r\n setIsPinned(true);\r\n dispatch({ type: PIN_TRIGGER });\r\n setLoading(false);\r\n });\r\n } else if (isPinned === true) {\r\n removePin(+props.dataItem.assignId).then(() => {\r\n setIsPinned(false);\r\n dispatch({ type: PIN_TRIGGER });\r\n setLoading(false);\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.dataItem.type === 'doc' && (\r\n
\r\n downloadDoc(props.dataItem)} />\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ActionsCell;\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\n\r\nimport '../../dropdown/dropdown.scss';\r\nimport '../filters.scss';\r\nimport './activityFeedPeriodFilter.scss';\r\n\r\nconst periodsStates = [\r\n { periodName: 'All', value: 0 },\r\n { periodName: 'Last 30 days', value: 30 },\r\n { periodName: 'Last 60 days', value: 60 },\r\n { periodName: 'Last 90 days', value: 90 },\r\n];\r\n\r\nconst ActivityFeedPeriodFilter: React.FC = () => {\r\n const filterCtx: any = useContext(FilterCtx);\r\n const [value, setValue] = useState(30);\r\n const [periods, setPeriods] = useState(periodsStates);\r\n\r\n const impersonation = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n setPeriods(periodsStates);\r\n setValue(filterCtx.activityFeedFromDate);\r\n }, [impersonation]);\r\n\r\n useEffect(() => {\r\n filterCtx.setActivityFeedFromDate(value);\r\n }, [value]);\r\n\r\n const handlePeriodChange = (event: DropDownListChangeEvent): void => {\r\n setValue(event.value && event.value.value);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
filterCtx.setActivityFeedFromDate(30)}>{periodsStates[1].periodName}
\r\n
filterCtx.setActivityFeedFromDate(60)}>{periodsStates[2].periodName}
\r\n
filterCtx.setActivityFeedFromDate(90)}>{periodsStates[3].periodName}
\r\n
filterCtx.setActivityFeedFromDate(0)}>{periodsStates[0].periodName}
\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ActivityFeedPeriodFilter;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\n\r\nimport Icon from '../../icon/icon';\r\n\r\nimport '../filters.scss';\r\n\r\ninterface ITypePickerFilter {\r\n className?: string;\r\n}\r\n\r\nconst TypePickerFilter: React.FC = ({ className }) => {\r\n const [typePickerBoard, setTypePickerBoard] = useState(false);\r\n const [typePickerDocument, setTypePickerDocument] = useState(false);\r\n const filterCtx: any = useContext(FilterCtx);\r\n\r\n useEffect(() => {\r\n setTypePickerBoard(filterCtx.typePickerBoard);\r\n if(filterCtx.typePickerBoard){\r\n setTypePickerDocument(false);\r\n }\r\n }, [filterCtx.typePickerBoard]);\r\n\r\n useEffect(() => {\r\n setTypePickerDocument(filterCtx.typePickerDocument);\r\n if (filterCtx.typePickerDocument) {\r\n setTypePickerBoard(false);\r\n }\r\n }, [filterCtx.typePickerDocument]);\r\n\r\n return (\r\n
\r\n {\r\n filterCtx.setTypePickerBoard(!filterCtx.typePickerBoard);\r\n filterCtx.setTypePickerDocument(false);\r\n }} />\r\n {\r\n filterCtx.setTypePickerDocument(!filterCtx.typePickerDocument);\r\n filterCtx.setTypePickerBoard(false);\r\n }} />\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default TypePickerFilter;","import React, { useContext, useState } from 'react';\r\nimport FilterCtx from '../../../../../context/filterContext/filterCtx';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\nimport DocNameFilter from '../../../../ui/filters/docNameFilter/docNameFilter';\r\nimport FundsFilter from '../../../../ui/filters/fundsFilter/fundsFilter';\r\nimport InvestorsFilter from '../../../../ui/filters/investorsFilter/investorsFilter';\r\nimport ClassificationsFilter from '../../../../ui/filters/classificationsFilter/classificationsFilter';\r\nimport ActivityFeedPeriodFilter from '../../../../ui/filters/activityFeedPeriodFilter/activityFeedPeriodFilter';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../../../../documents/components/documentsTable/documentsTable.scss';\r\nimport '../../../../../common/styles/globalClasses.scss';\r\nimport '../../../../ui/filters/filters.scss';\r\nimport './activityTableFilters.scss';\r\nimport TypePickerFilter from '../../../../ui/filters/typePickerFilter/typePickerFilter';\r\n\r\nconst ActivityTableFilters = () => {\r\n const filterCtx = useContext(FilterCtx);\r\n const [doRerender, setDoRerender] = useState(true);\r\n const [uniqueKey, setUniqueKey] = useState('');\r\n\r\n const { t } = useTranslate();\r\n\r\n const resetFilters = () => {\r\n const date = new Date();\r\n setUniqueKey(date.toString());\r\n filterCtx.clearFiltersActivity();\r\n setDoRerender(!doRerender);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ActivityTableFilters;\r\n","import React from 'react';\r\nimport LoadingCell from '../../../../../ui/table/cells/loadingCell/loadingCell';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nimport './boardNameCell.scss';\r\n\r\nconst BoardNameCell = (props) => {\r\n let navigate = useNavigate();\r\n if (props.rowType === 'groupHeader') {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n const navigateToBoard = (investorId: number, boardId: number): void => {\r\n navigate(`/boards/${investorId}/${boardId}`);\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n {props.icon}\r\n navigateToBoard(props.dataItem.objectId, props.dataItem.contentId)}>{props.dataItem[props.field]}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default BoardNameCell;\r\n","import React, { useState, useEffect, useContext, useRef } from 'react';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { RootState } from '../../../../../redux/store';\r\nimport { useSelector } from 'react-redux';\r\nimport FilterCtx from '../../../../../context/filterContext/filterCtx';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\nimport HeaderCell from '../../../../documents/components/cells/headerCell/headerCell';\r\nimport DateCell from '../../../../documents/components/cells/dateCell/dateCell';\r\nimport ChipsCell from '../../../../documents/components/cells/chipsCell/chipsCell';\r\nimport ActionsCell from '../cells/actionsCell/actionsCell';\r\nimport ActivityTableFilters from '../filters/activityTableFilters';\r\nimport TableLoading from '../../../../ui/loaders/tableLoader/tableLoading';\r\nimport TextCell from '../../../../ui/table/cells/textCell/textCell';\r\nimport DocumentNameCell from '../../../../documents/components/cells/documentNameCell/documentNameCell';\r\nimport { getUserActivityFeed } from '../../../../../common/services/http/userService';\r\nimport BoardNameCell from '../cells/boardNameCell/boardNameCell';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../../../../ui/table/table.scss';\r\nimport './acitivtyTable.scss';\r\nimport MobileNameCell from '../../../../documents/components/cells/mobileNameCell/mobileNameCell';\r\nimport Icon from '../../../../ui/icon/icon';\r\n\r\ninterface ISort {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nconst initialSort: ISort[] = [{ field: 'publishDate', dir: 'desc' }];\r\n\r\nconst ActivityTable = () => {\r\n const filterCtx = useContext(FilterCtx);\r\n\r\n const [documents, setDocuments] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [total, setTotal] = useState(0);\r\n const [skip, setSkip] = useState(0);\r\n const [sort, setSort] = useState(initialSort);\r\n const [screenSize, setScreenSize] = useState(0);\r\n const [collapsed, setCollapsed] = useState(false);\r\n\r\n const { t } = useTranslate();\r\n\r\n const isFetching = useRef(false);\r\n const tableRef = useRef(null);\r\n\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n\r\n const pageSize = 100;\r\n const take = pageSize * 3;\r\n\r\n const ItemNameCell = (props) =>\r\n props.dataItem.type === 'board' ?\r\n } /> :\r\n }\r\n origin='homePage' idField={'assignId'} />;\r\n const GridMobileNameCell = (props) => ;\r\n const TextCellAt = (props) => ;\r\n const ActCell = (props) => ;\r\n\r\n const fetchActivityFeed = (startResult, includeCount, sortField?, sortDir?) => {\r\n if (isFetching.current) return Promise.resolve();\r\n\r\n isFetching.current = true;\r\n setLoading(true);\r\n\r\n const start = Math.max(startResult - pageSize, 0);\r\n\r\n let type: string = null;\r\n\r\n if (!filterCtx.typePickerDocument && filterCtx.typePickerBoard) {\r\n type = 'board';\r\n } else if (!filterCtx.typePickerBoard && filterCtx.typePickerDocument) {\r\n type = 'doc';\r\n }\r\n\r\n return getUserActivityFeed(\r\n type,\r\n filterCtx.docNameActivity,\r\n filterCtx.fundsActivity,\r\n filterCtx.investorsActivity,\r\n filterCtx.classificationsActivity,\r\n filterCtx.activityFeedFromDate,\r\n start,\r\n take,\r\n sortField,\r\n sortDir,\r\n includeCount,\r\n )\r\n .then((results) => {\r\n generateDocuments(results, start, includeCount);\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n })\r\n .finally(() => {\r\n isFetching.current = false;\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const generateDocuments = (results, startResult, includeCount) => {\r\n let totalCount = includeCount ? results.totalCount : total;\r\n\r\n const docs = documents.length === totalCount ? [...documents] : new Array(totalCount).fill({});\r\n\r\n results.data.forEach((doc, i) => {\r\n docs[i + startResult] = doc;\r\n });\r\n\r\n if (includeCount) setTotal(results.totalCount);\r\n\r\n setDocuments(docs);\r\n };\r\n\r\n const fetchRequired = (startResult) => {\r\n for (let i = startResult; i < startResult + pageSize && i < documents.length; i++) {\r\n if (!documents[i].assignId && !documents[i].contentId) {\r\n fetchActivityFeed(startResult, false, sort[0].field, sort[0].dir);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n const handlePageChange = (event) => {\r\n let start = !event.page.skip || Number.isNaN(event.page.skip) ? 0 : event.page.skip;\r\n fetchRequired(start);\r\n setSkip(start);\r\n };\r\n\r\n const handleSortChange = (e) => {\r\n setSort(e.sort);\r\n documents.fill({});\r\n fetchActivityFeed(skip, false, e.sort[0].field, e.sort[0].dir);\r\n };\r\n\r\n useEffect(() => {\r\n setScreenSize(screen.width);\r\n fetchActivityFeed(0, true, sort[0].field, sort[0].dir);\r\n }, [filterCtx, impersonate]);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {t('ACTIVITY.SECTION_TITLE')}\r\n {\r\n setCollapsed(!collapsed);\r\n }} />\r\n
\r\n {
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n }\r\n sortable={false}\r\n minResizableWidth={180}\r\n />\r\n \r\n \r\n \r\n \r\n {loading && }\r\n
}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ActivityTable;\r\n","import httpService from './httpService';\r\n\r\nexport interface IDocuSignData {\r\n date: Date;\r\n envelopeId: string;\r\n isSigned: boolean;\r\n name: string;\r\n recipientId: number;\r\n role: string;\r\n signEnvelopeId: number;\r\n status: any;\r\n type: string;\r\n}\r\n\r\nexport interface IDocuSignUri {\r\n uri: string;\r\n}\r\n\r\nexport interface IDocuSignEnvelopeData {\r\n documents: IEnvelopeDocument[];\r\n recipient: IEnvelopeRecipient;\r\n}\r\n\r\nexport interface IEnvelopeDocument {\r\n id: number;\r\n documentId: number;\r\n objectId: number;\r\n name: string;\r\n objectType: string;\r\n documentName: string;\r\n documentLabel: string;\r\n}\r\nexport interface IEnvelopeRecipient {\r\n id: number;\r\n signEnvelopeId: number;\r\n commContactId: number;\r\n contactId: number;\r\n name: string;\r\n firstName: string;\r\n lastName: string;\r\n middleName: string;\r\n email: string;\r\n role: string;\r\n type: string;\r\n isSigned: boolean;\r\n status: string;\r\n}\r\n\r\nexport const getSignRequirements = () => {\r\n let endpoint = httpService.getEndpointURL(`/Documents/sign/requirements`);\r\n return httpService\r\n .get(endpoint)\r\n .then((res) => res.data)\r\n .catch((err) => {\r\n console.log('> getSignRequirements error ', err);\r\n });\r\n};\r\n\r\nexport const generateDocuSignURL = (recipientId: number, cancelToken) => {\r\n let returnURL = '';\r\n if (location.hostname === 'localhost') {\r\n returnURL = 'https://' + location.hostname + ':' + location.port + `/docusign/redirect/${recipientId}`;\r\n } else {\r\n returnURL = 'https://' + location.hostname + `/docusign/redirect/${recipientId}`;\r\n }\r\n let body = { returnUrl: returnURL };\r\n let endpoint = httpService.getEndpointURL(`/DocuSignEnvelopes/sign/${recipientId}/uri`);\r\n return httpService\r\n .post(endpoint, body, { cancelToken })\r\n .then((res) => res.data)\r\n .catch((err) => {\r\n console.log('> generateDocuSignURL error ', err);\r\n });\r\n};\r\n\r\nexport const updateEnvelopeState = (recipientId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/DocuSignEnvelopes/${recipientId}/state`);\r\n return httpService\r\n .post(endpoint)\r\n .then((res) => res.data)\r\n .catch((err) => {\r\n console.log('> updateEnvelopeState error ', err);\r\n });\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { getSignRequirements, IDocuSignData } from '../../../../common/services/http/docuSignService';\r\nimport Icon from '../../../ui/icon/icon';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { SWITCH_MODAL, SWITCH_REDIRECTING_TO_DS_MODAL } from '../../../../redux/types';\r\n\r\nimport './docuSign.scss';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst DocuSign: React.FC = () => {\r\n const [signData, setSignData] = useState([]);\r\n const [showDocuSign, setShowDocuSign] = useState(true);\r\n\r\n const { t } = useTranslate();\r\n const dispatch = useDispatch();\r\n const impersonate = useSelector((state: RootState) => state.impersonate.impersonate);\r\n const docuSignDropdown = useSelector((state: RootState) => state.docuSignDropdown.docuSignDropdown);\r\n\r\n useEffect(() => {\r\n getSignRequirements().then((res: IDocuSignData[]) => {\r\n setSignData(res);\r\n });\r\n }, [impersonate, docuSignDropdown]);\r\n\r\n const goToDocuSign = (item: IDocuSignData): void => {\r\n if (impersonate) {\r\n dispatch({ type: SWITCH_MODAL });\r\n } else {\r\n dispatch({ type: SWITCH_REDIRECTING_TO_DS_MODAL, payload: item });\r\n }\r\n };\r\n\r\n const closeDocuSignInfo = (): void => {\r\n setShowDocuSign(false);\r\n };\r\n\r\n return (\r\n <>\r\n {showDocuSign && signData && signData.length > 0 && (\r\n
\r\n
\r\n {t('HOME.DOCUSIGN_ACTION_REQUIRED')}\r\n
\r\n
\r\n {signData.map(\r\n (item, key) =>\r\n !item.isSigned && (\r\n
goToDocuSign(item)}>\r\n {item.name}\r\n
\r\n ),\r\n )}\r\n
\r\n
\r\n {signData.length > 0 && signData.length < 2 ?\r\n signData.map(\r\n (item, key) =>\r\n !item.isSigned && (\r\n
goToDocuSign(item)}>\r\n {item.name}\r\n
\r\n ),\r\n )\r\n :\r\n \r\n {t('HOME.DOCUSIGN_ACTION_REQUIRED')}\r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DocuSign;\r\n","export class AnalysisContentObjectModel {\r\n nodeHierarchy: any[];\r\n nodes: any[];\r\n parentObjectPath: null | any;\r\n objectPath: null | any;\r\n type: string;\r\n objectId: null | any;\r\n id: null | any;\r\n nodesOfObject: any[];\r\n name: string;\r\n definitionPath: any;\r\n\r\n constructor(analysisContentObject) {\r\n this.id = analysisContentObject.id;\r\n this.objectId = analysisContentObject.objectId;\r\n this.name = analysisContentObject.name;\r\n this.type = analysisContentObject.type;\r\n this.objectPath = analysisContentObject.objectPath;\r\n this.parentObjectPath = analysisContentObject.parentObjectPath;\r\n this.nodes = analysisContentObject.nodes;\r\n this.nodesOfObject = analysisContentObject.nodesOfObject;\r\n this.nodeHierarchy = analysisContentObject.nodeHierarchy || [];\r\n\r\n this._buildNodeHierarchy();\r\n }\r\n\r\n addNode(node, isDescendent, parentNode) {\r\n let objectNode = this.findNode(node);\r\n\r\n if (!objectNode) {\r\n objectNode = {\r\n id: node.id,\r\n exclude: false,\r\n isDescendent: isDescendent,\r\n objectId: node.objectId,\r\n name: node.name,\r\n fullName: node.fullName,\r\n childNodes: [],\r\n };\r\n\r\n this.nodes.push(objectNode);\r\n if (parentNode) parentNode.childNodes.push(objectNode);\r\n else this.nodeHierarchy.push(objectNode);\r\n }\r\n return objectNode;\r\n }\r\n\r\n addNodeAndDescendents(node, isDescendent, parentNode) {\r\n let objectNode = this.addNode(node, isDescendent || false, parentNode);\r\n for (let i = 0; i < node.items.length; i++) {\r\n this.addNodeAndDescendents(node.items[i], true, objectNode);\r\n }\r\n }\r\n\r\n findNodeById(nodes, id, field, childrenField): any {\r\n nodes.forEach((node) => {\r\n if (node[field] === id) return node;\r\n\r\n if (node[childrenField]) {\r\n let descendent = this.findNodeById(node[childrenField], id, field, childrenField);\r\n // @ts-ignore\r\n if (descendent) return descendent;\r\n }\r\n });\r\n }\r\n\r\n removeNonExistingNodes(nodeHierarchy) {\r\n this.nodes.forEach((node, i) => {\r\n // @ts-ignore\r\n !this.findNodeById(nodeHierarchy, node.id, 'id', 'items') && this.nodes.splice(i, 1);\r\n });\r\n }\r\n\r\n clearNodes() {\r\n this.nodes.splice(0);\r\n this.nodesOfObject.splice(0);\r\n this.nodeHierarchy.splice(0);\r\n }\r\n\r\n removeNode(nodeId) {\r\n let remove = -1;\r\n this.nodes.find(function (item, index) {\r\n let isEq = item.id === nodeId;\r\n if (isEq) remove = index;\r\n return isEq;\r\n });\r\n if (remove > -1) {\r\n this.nodes.splice(remove, 1);\r\n }\r\n }\r\n\r\n nodesFor(objectId) {\r\n let id = parseInt(objectId);\r\n if (!isNaN(id)) return this.nodes.filter((item) => item.objectId === id && !item.exclude);\r\n }\r\n\r\n childNodes(nodeId) {\r\n let node = this.findNode(nodeId);\r\n if (!node) return [];\r\n return node.childNodes.filter((item) => !item.exclude);\r\n }\r\n\r\n _loadChildNodesBypassGroups(loadInto, node) {\r\n node.childNodes.forEach((child) => {\r\n if (child.isGroup) {\r\n this._loadChildNodesBypassGroups(loadInto, child);\r\n } else {\r\n if (!child.exclude) loadInto.push(child);\r\n }\r\n });\r\n }\r\n\r\n childNodesBypassGroups(nodeId) {\r\n let node = this.findNode(nodeId);\r\n if (!node) return [];\r\n\r\n let childNodes = [];\r\n this._loadChildNodesBypassGroups(childNodes, node);\r\n return childNodes;\r\n }\r\n\r\n nodesForCategoryTypeLevel(categoryTypeId, categoryLevel) {\r\n let categoryNodes = [];\r\n this.nodes.forEach((node) => {\r\n !node.exclude && node.categoryTypeId === categoryTypeId && node.categoryLevel === categoryLevel && categoryNodes.push(node);\r\n });\r\n return categoryNodes;\r\n }\r\n\r\n nodesForType(type) {\r\n return this.nodes.filter(function (item) {\r\n return item.type === type && !item.exclude;\r\n });\r\n }\r\n\r\n findNode(nodeId) {\r\n let id = parseInt(nodeId);\r\n if (!isNaN(id)) return this.nodes.find((item) => item.id === id);\r\n }\r\n\r\n _buildNodeHierarchy() {\r\n for (let i = 0; i < this.nodes.length; i++) {\r\n let node = this.nodes[i];\r\n node.childNodes = node.childNodes || [];\r\n\r\n if (!node.parentId) {\r\n this.nodeHierarchy.push(node);\r\n continue;\r\n }\r\n\r\n let parent = this.nodes.find(function (item) {\r\n return item.id === node.parentId;\r\n });\r\n if (parent) {\r\n parent.childNodes = parent.childNodes || [];\r\n parent.childNodes.push(node);\r\n node.parentNode = parent;\r\n } else this.nodeHierarchy.push(node);\r\n }\r\n }\r\n\r\n toCommand() {\r\n let cmd = {\r\n id: this.id,\r\n objectId: this.objectId,\r\n objectPath: this.objectPath,\r\n parentObjectPath: this.parentObjectPath,\r\n definitionPath: this.definitionPath,\r\n nodes: [],\r\n };\r\n\r\n this.nodes.forEach((node) => {\r\n cmd.nodes.push({ id: node.id, isDescendent: node.isDescendent, exclude: node.exclude });\r\n });\r\n return cmd;\r\n }\r\n\r\n fromNode(node) {\r\n this.objectId = node.objectId;\r\n this.name = node.name;\r\n return this;\r\n }\r\n}\r\n\r\nexport default AnalysisContentObjectModel;\r\n","export class AnalysisContentWidgetModel {\r\n id: number;\r\n contentId: number;\r\n name: string;\r\n type: string;\r\n widgetTitle: string;\r\n columnSpan: number;\r\n rowSpan: number;\r\n setup: any;\r\n templateWidgetId: any;\r\n nodes: any[];\r\n pinned: any[];\r\n availablePagesByObject: any;\r\n sourceData: any[];\r\n _objectNodeExcludeLookup = null;\r\n _objectNodeLookup = null;\r\n visible: boolean = true;\r\n\r\n constructor(analysisContentWidget?) {\r\n this.id = analysisContentWidget.id;\r\n this.contentId = analysisContentWidget.contentId;\r\n this.name = analysisContentWidget.name;\r\n this.type = analysisContentWidget.type;\r\n this.widgetTitle = analysisContentWidget.widgetTitle;\r\n this.columnSpan = analysisContentWidget.columnSpan;\r\n this.rowSpan = analysisContentWidget.rowSpan;\r\n if (typeof analysisContentWidget.setup === 'string') {\r\n this.setup = JSON.parse(analysisContentWidget.setup);\r\n } else {\r\n this.setup = analysisContentWidget.setup;\r\n }\r\n this.templateWidgetId = analysisContentWidget.templateWidgetId;\r\n this.nodes = analysisContentWidget.nodes;\r\n this.pinned = analysisContentWidget.pinned;\r\n this.availablePagesByObject = analysisContentWidget.availablePagesByObject;\r\n this.sourceData = analysisContentWidget.sourceData;\r\n this.visible = analysisContentWidget.visible;\r\n }\r\n\r\n addNode = (contentObject, node, isGroup) => {\r\n let objectNode = this.findNode(node.nodeId, contentObject.objectPath);\r\n if (!objectNode) {\r\n objectNode = {\r\n objectPath: contentObject.objectPath,\r\n nodeId: node.id,\r\n name: node.name,\r\n fullName: node.fullName,\r\n isGroup: isGroup,\r\n exclude: false,\r\n };\r\n this.nodes.push(objectNode);\r\n }\r\n return objectNode;\r\n };\r\n\r\n findNode = (nodeId, objectPath) => {\r\n return this.nodes.find(function (item) {\r\n return item.nodeId === nodeId && item.objectPath === objectPath;\r\n });\r\n };\r\n\r\n nodesExcludedForObject = (objectPath) => {\r\n if (!this._objectNodeExcludeLookup) this._buildObjectNodeLookup();\r\n\r\n return this._objectNodeExcludeLookup[objectPath] || { nodes: [], idLookup: {} };\r\n };\r\n\r\n loadNodesForObject = (contentObject) => {\r\n let lookupSync = {};\r\n let lookup = this.nodes.filter(function (item) {\r\n return item.objectPath === contentObject.objectPath;\r\n });\r\n let _this = this;\r\n\r\n const setupJson = JSON.parse(this.setup);\r\n if (setupJson.sliceGroup) {\r\n let groupNodes = contentObject.nodesFor(parseInt(setupJson.sliceGroup));\r\n groupNodes.forEach(function (groupNode) {\r\n _this._addUpdateNode(contentObject, groupNode, true, lookup);\r\n lookupSync[groupNode.id] = true;\r\n });\r\n } else {\r\n let objNodes = contentObject.nodes.filter(function (item) {\r\n return !item.isDescendent && !item.exclude;\r\n });\r\n objNodes.forEach(function (node) {\r\n _this._addUpdateNode(contentObject, node, false, lookup);\r\n lookupSync[node.id] = true;\r\n });\r\n }\r\n\r\n for (let i = 0; i < lookup.length; i++) {\r\n let ln = lookup[i];\r\n if (!lookupSync[ln.nodeId]) this.nodes.splice(this.nodes.indexOf(ln), 1);\r\n }\r\n };\r\n\r\n _addUpdateNode = (contentObject, node, isGroup, lookup) => {\r\n let objectNode = lookup.find(function (item) {\r\n return item.nodeId === node.id;\r\n });\r\n if (!objectNode) {\r\n objectNode = {\r\n objectPath: contentObject.objectPath,\r\n nodeId: node.id,\r\n name: node.name,\r\n fullName: node.fullName,\r\n isGroup: isGroup,\r\n exclude: false,\r\n };\r\n this.nodes.push(objectNode);\r\n lookup.push(objectNode);\r\n } else {\r\n objectNode.name = node.name;\r\n objectNode.fullName = node.fullName;\r\n }\r\n return objectNode;\r\n };\r\n\r\n _buildObjectNodeLookup = () => {\r\n this._objectNodeLookup = {};\r\n this._objectNodeExcludeLookup = {};\r\n for (let i = 0; i < this.nodes.length; i++) {\r\n let node = this.nodes[i];\r\n let objectNodes = this._objectNodeLookup[node.objectPath];\r\n if (!objectNodes) {\r\n this._objectNodeLookup[node.objectPath] = [node];\r\n\r\n let lookup = { nodes: [], idLookup: {} };\r\n if (node.exclude) {\r\n lookup.nodes.push(node);\r\n lookup.idLookup[node.nodeId] = true;\r\n }\r\n this._objectNodeExcludeLookup[node.objectPath] = lookup;\r\n } else {\r\n objectNodes.push(node);\r\n if (node.exclude) {\r\n let exlookup = this._objectNodeExcludeLookup[node.objectPath];\r\n exlookup.nodes.push(node);\r\n exlookup.idLookup[node.nodeId] = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n fromTemplate = (templateWidget) => {\r\n this.templateWidgetId = templateWidget.id;\r\n this.name = templateWidget.name;\r\n this.type = templateWidget.type;\r\n this.rowSpan = templateWidget.rowSpan;\r\n this.columnSpan = templateWidget.columnSpan;\r\n this.setup = templateWidget.setup;\r\n return this;\r\n };\r\n}\r\n","import AnalysisContentObjectModel from './AnalysisContentObjectModel';\r\nimport { AnalysisContentWidgetModel } from './AnalysisContentWidgetModel';\r\n\r\nimport { ITimePeriod } from './types/ITimePeriod';\r\nimport { IMeasure } from './types/IMeasure';\r\nimport { IStaticProperty } from './types/IStaticProperty';\r\nimport { IBoardDataObject } from './types/IBoardDataObject';\r\n\r\nexport class AnalysisContentModel {\r\n id: number;\r\n templateId: any;\r\n type: string;\r\n name: string;\r\n scenarios: any[];\r\n widgets: AnalysisContentWidgetModel[];\r\n objectDefinitions: any[];\r\n scenarioIds: any[];\r\n scenarioNodes: any[];\r\n objects: AnalysisContentObjectModel[];\r\n timePeriods: ITimePeriod[];\r\n contentNodes: any;\r\n classifications: any[];\r\n measures: IMeasure[];\r\n staticProperties: IStaticProperty[];\r\n suppressLocalCurrency: boolean;\r\n userContent: any;\r\n\r\n constructor(analysisContent: IBoardDataObject) {\r\n this.id = analysisContent.id;\r\n this.templateId = analysisContent.templateId;\r\n this.type = analysisContent.type;\r\n this.name = analysisContent.name;\r\n this.scenarios = analysisContent.scenarios;\r\n\r\n this.widgets = [];\r\n analysisContent.widgets.map((widget) => {\r\n const widgetObj = new AnalysisContentWidgetModel(widget);\r\n this.widgets.push(widgetObj);\r\n });\r\n\r\n this.objects = [];\r\n analysisContent.objects.map((object) => {\r\n const objectObj = new AnalysisContentObjectModel(object);\r\n this.objects.push(objectObj);\r\n });\r\n\r\n this.objectDefinitions = analysisContent.objectDefinitions;\r\n this.scenarioIds = analysisContent.scenarioIds;\r\n this.scenarioNodes = analysisContent.scenarioNodes;\r\n this.timePeriods = analysisContent.timePeriods;\r\n this.contentNodes = analysisContent.contentNodes;\r\n this.classifications = analysisContent.classifications;\r\n this.measures = analysisContent.measures;\r\n this.staticProperties = analysisContent.staticProperties;\r\n this.suppressLocalCurrency = analysisContent.suppressLocalCurrency;\r\n this.userContent = analysisContent.userContent;\r\n }\r\n\r\n loadWidgets = (templateWidgets) => {\r\n for (let i = 0; i < templateWidgets.length; i++) {\r\n this.addWidget(templateWidgets[i]);\r\n }\r\n };\r\n\r\n addWidget = (templateWidget) => {\r\n if (!this.findWidget(templateWidget.id)) {\r\n const w = new AnalysisContentWidgetModel();\r\n this.widgets.push(w.fromTemplate(templateWidget));\r\n }\r\n };\r\n\r\n findWidget = (templateWidgetId) => {\r\n return this.widgets.find(function (widget) {\r\n return widget.templateWidgetId === templateWidgetId;\r\n });\r\n };\r\n\r\n findObject = (objectId, parentObject) => {\r\n return this.findObjectByPath(this._objectPath(objectId, parentObject));\r\n };\r\n\r\n findObjectByPath = (path) => {\r\n return this.objects.find(function (item) {\r\n return item.objectPath === path;\r\n });\r\n };\r\n\r\n _objectPath = (objectId, parentObject) => {\r\n return (parentObject ? parentObject.objectPath + '-' : '') + objectId.toString();\r\n };\r\n\r\n loadWidgetNodes = () => {\r\n for (let i = 0; i < this.objects.length; i++) this.loadWidgetNodesForObject(this.objects[i]);\r\n };\r\n\r\n loadWidgetNodesForObject = (contentObject) => {\r\n for (let i = 0; i < this.widgets.length; i++) {\r\n let widget = this.widgets[i];\r\n widget.loadNodesForObject(contentObject);\r\n }\r\n };\r\n}\r\n","import httpService from './httpService';\r\nimport { IPinWidgetData } from './types/IPinWidgetData';\r\nimport { IHomePage } from './types/IHomePage';\r\nimport { AnalysisContentModel } from '../../../models/AnalysisContentModel';\r\n\r\nexport const getHomePage = (): Promise => {\r\n let endpoint = httpService.getEndpointURL(`/Home`);\r\n return httpService.get(endpoint).then((res) => res.data);\r\n};\r\n\r\nexport const getHomePageBoards = (): Promise => {\r\n let endpoint = httpService.getEndpointURL('/Home/boardContent');\r\n return httpService.get(endpoint).then((res) => {\r\n let boards = [];\r\n res.data.forEach((board) => {\r\n boards.push(new AnalysisContentModel(board));\r\n })\r\n return boards;\r\n });\r\n};\r\n\r\nexport const pinWidget = (investorId: number, boardId: number, data: IPinWidgetData): Promise => {\r\n let endpoint = httpService.getEndpointURL(`/Home/pin/${investorId}/content/${boardId}`);\r\n return httpService\r\n .post(endpoint, data)\r\n .then((res) => res.data);\r\n};\r\n\r\nexport const updatePinnedWidgets = (widgets) => {\r\n const data = widgets.map((widget) => {\r\n return {\r\n id: widget.unpinId,\r\n pageId: 0,\r\n contentType: \"analysisContent\",\r\n widgetId: widget.widget.id,\r\n scenarioSectionId: 0,\r\n objectId: widget.selectedObject.objectId,\r\n objectPath: widget.selectedObject.objectPath,\r\n investorObjectId: widget.investorObjectId,\r\n setup: null,\r\n nodes: widget.widget.nodes\r\n }\r\n });\r\n let endpoint = httpService.getEndpointURL(`/Home/pinnedContent`);\r\n return httpService.put(endpoint, data);\r\n}\r\n\r\nexport const unPinWidget = (pinContentId: number): Promise => {\r\n let endpoint = httpService.getEndpointURL(`/Home/unpin/${pinContentId}`);\r\n return httpService\r\n .delete(endpoint)\r\n .then((res) => res.data);\r\n};\r\n\r\nexport const unPinWidgetFromBoard = (investorObjectId: number, widgetId: number, objectPath: string): Promise => {\r\n let endpoint = httpService.getEndpointURL(`/Home/unpin/${investorObjectId}/${widgetId}/${objectPath}`);\r\n return httpService\r\n .delete(endpoint)\r\n .then((res) => res.data);\r\n};"," const arrayMove = (arr?: any[], oldIndex?: number, newIndex?: any) => {\r\n let tempArr = [];\r\n if (newIndex >= arr.length) {\r\n let i = newIndex - arr.length + 1;\r\n while (i--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n\r\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\r\n\r\n arr.forEach((elm) => tempArr.push(elm));\r\n\r\n return tempArr;\r\n};\r\n\r\nexport default arrayMove;\r\n","import React from 'react';\r\nimport { Orbit } from '@uiball/loaders';\r\n\r\nimport './outletLoader.scss';\r\n\r\nconst OutletLoader: React.FC = () => {\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default OutletLoader;\r\n","import { formatNumber } from '@progress/kendo-intl';\r\n\r\nconst generateAxisChart = (setCategories, setValueAxis, setSeries, widgetData, setup, measures, chartData, selectedPeriod, periods, setGridData, forLocalCurrency) => {\r\n let _categoryMap = {};\r\n let periodIdField = 'id';\r\n let gridDataLocal = [];\r\n\r\n //SINGLE & MULTI PERIOD\r\n const _clearEmptySeries = (series) => {\r\n for (let i = series.length - 1; i > -1; i--) {\r\n if (series[i].data.length === 0) series.splice(i, 1);\r\n }\r\n };\r\n\r\n // SINGLE & MULTI PERIOD\r\n const hasMultipleValueAxes = () => {\r\n return setup.valueAxes.length > 1;\r\n };\r\n\r\n //SINGLE & MULTI PERIOD\r\n const _seriesBaseOptions = (series) => {\r\n let _hasStack = false;\r\n if (\r\n setup.series.find(function(item) {\r\n return item.stacked;\r\n })\r\n )\r\n _hasStack = true;\r\n\r\n let stack = _hasStack ? series.name : undefined;\r\n if (series.stacked) stack = series.stackGroup ? series.stackGroup : true;\r\n\r\n let options = {\r\n name: series.name,\r\n type: series.type || setup.type,\r\n axis: series.axis ? series.axis : undefined,\r\n stack: stack,\r\n data: [],\r\n lookupRef: {},\r\n field: 'data',\r\n line: {\r\n style: 'smooth',\r\n },\r\n markers: {},\r\n labels: {\r\n visible: setup.seriesLabels,\r\n background: 'transparent',\r\n position: 'outsideEnd',\r\n callbackTemplate: (e) => {\r\n return (\r\n e.dataItem && formatNumber(e.dataItem.amount, e.dataItem.lookupRef.percentage ? 'p' + e.dataItem.lookupRef.scale : 'n' + e.dataItem.lookupRef.scale)\r\n );\r\n },\r\n },\r\n legend: {\r\n visible: setup.legend !== 'none',\r\n position: setup.legend,\r\n },\r\n tooltip: {\r\n visible: true,\r\n callbackTemplate: (e) => {\r\n\r\n if (e.point) {\r\n return (\r\n e.point.category +\r\n ' ' +\r\n\r\n e.point.series.name +\r\n ': ' +\r\n formatNumber(\r\n e.point.value,\r\n e.point.dataItem.lookupRef.percentage ? 'p' + e.point.dataItem.lookupRef.scale : 'n' + e.point.dataItem.lookupRef.scale,\r\n )\r\n );\r\n }\r\n },\r\n },\r\n opacity: undefined,\r\n };\r\n\r\n if (options.type === 'marker') {\r\n options.type = 'line';\r\n options.opacity = 0;\r\n options.markers = {\r\n type: 'circle',\r\n size: 10,\r\n border: {\r\n width: 3,\r\n },\r\n };\r\n }\r\n\r\n return options;\r\n };\r\n\r\n //SINGLE & MULTI PERIOD\r\n const _registerGridRecord = (val, periodHash, amount) => {\r\n let gridVal = periodHash[val.periodId];\r\n\r\n if (!gridVal) {\r\n gridVal = { periodId: val.periodId, periodName: val.periodName, endDate: val.endDate };\r\n periodHash[val.periodId] = gridVal;\r\n gridDataLocal.push(gridVal);\r\n }\r\n gridVal['_' + val.nodeId + '_' + val.measureId] = amount;\r\n setGridData(gridDataLocal);\r\n };\r\n\r\n // SINGLE & MULTI PERIOD\r\n const _generateValueAxes = (valueAxes) => {\r\n let axes = [];\r\n for (let i = 0; i < valueAxes.length; i++) {\r\n let axis = valueAxes[i];\r\n\r\n axes.push({\r\n name: axis.id,\r\n axisCrossingValue: hasMultipleValueAxes() ? -100000000000000 : [0, -100000000000000],\r\n title: {\r\n text: axis.caption,\r\n },\r\n labels: {\r\n format: (axis.isPercent ? 'p' : 'n') + axis.scale,\r\n rotation: 'auto',\r\n },\r\n });\r\n }\r\n setValueAxis(axes);\r\n\r\n return axes;\r\n };\r\n\r\n //SINGLE PERIOD\r\n const _loadAxisDataSingle = (seriesHash) => {\r\n if (!chartData) return;\r\n\r\n let periodHash = {};\r\n\r\n for (let i = 0; i < chartData.length; i++) {\r\n let val = chartData[i];\r\n if (val.periodId !== selectedPeriod[periodIdField]) continue;\r\n let index = _categoryMap[val.nodeId];\r\n\r\n let series = seriesHash[val.measureId];\r\n if (series && index > -1) {\r\n let amount = val.amount / (series.sectionSeries.amountsIn || 1);\r\n series.chartSeries.data[index] = {\r\n value: amount,\r\n nodeId: val.nodeId,\r\n lookupRef: series.chartSeries.lookupRef,\r\n amount: amount,\r\n };\r\n _registerGridRecord(val, periodHash, amount);\r\n }\r\n }\r\n };\r\n\r\n //SINGLE PERIOD\r\n const _generateCategoriesSingle = (widgetInstance) => {\r\n _categoryMap = {};\r\n let categories = [];\r\n let objects = {};\r\n for (let i = 0; i < widgetInstance.nodes.length; i++) {\r\n let node = widgetInstance.nodes[i];\r\n let index = objects[node.objectId];\r\n if (index === undefined) {\r\n categories.push(node.name + (forLocalCurrency ? ' (' + node.currency + ')' : ''));\r\n _categoryMap[node.id] = i;\r\n objects[node.objectId] = i;\r\n } else {\r\n _categoryMap[node.id] = index;\r\n }\r\n }\r\n setCategories(categories);\r\n // categories need to be cleaned ???\r\n return categories;\r\n };\r\n\r\n //SINGLE PERIOD\r\n const _generateSeriesSingle = () => {\r\n let series = [];\r\n let seriesHash = {};\r\n\r\n let sectionSeries = setup.series[0];\r\n let measure = measures.find((item) => {\r\n return item.id.toString() === sectionSeries.measureId.toString();\r\n });\r\n if (measure) {\r\n let ser = _seriesBaseOptions(sectionSeries);\r\n ser.lookupRef = { measureId: sectionSeries.measureId, amountsIn: sectionSeries.amountsIn || 1 };\r\n\r\n seriesHash = {\r\n chartSeries: ser,\r\n sectionSeries: sectionSeries,\r\n };\r\n\r\n series.push(ser);\r\n }\r\n\r\n setup.series.forEach((sectionSeries) => {\r\n let measure = measures.find((item) => {\r\n return item.id.toString() === sectionSeries.measureId.toString();\r\n });\r\n\r\n if (measure) {\r\n let ser = _seriesBaseOptions(sectionSeries);\r\n let axs = setup.valueAxes.find((e) => e.id === sectionSeries.axis);\r\n ser.lookupRef = {\r\n //nodeId: node.id,\r\n measureId: sectionSeries.measureId,\r\n amountsIn: sectionSeries.amountsIn || 1,\r\n viewCashflows: sectionSeries.viewCashflows,\r\n scale: sectionSeries.scale,\r\n percentage: axs ? axs.isPercent : false,\r\n };\r\n\r\n seriesHash[measure.id] = {\r\n chartSeries: ser,\r\n sectionSeries: sectionSeries,\r\n };\r\n\r\n series.push(ser);\r\n }\r\n });\r\n\r\n _loadAxisDataSingle(seriesHash);\r\n\r\n _clearEmptySeries(series);\r\n\r\n setSeries(series);\r\n };\r\n\r\n //MULTI PERIOD\r\n const _generateCategories = () => {\r\n _categoryMap = {};\r\n let categories = [];\r\n\r\n for (let i = 0; i < periods.length; i++) {\r\n let period = periods[i];\r\n if (\r\n chartData.find((item) => {\r\n return item.periodId === period[periodIdField];\r\n })\r\n ) {\r\n _categoryMap[period[periodIdField]] = categories.length;\r\n categories.push(period.name);\r\n }\r\n }\r\n\r\n setCategories(categories);\r\n\r\n return categories;\r\n };\r\n\r\n //MULTI PERIOD\r\n const generateSeries = (widgetInstance) => {\r\n let seriesA = [];\r\n let seriesHash = {};\r\n let multipleMeasures = true;\r\n\r\n // nodes &&\r\n widgetInstance.nodes.forEach((node) => {\r\n for (let i = 0; i < setup.series.length; i++) {\r\n let sectionSeries = setup.series[i];\r\n\r\n let measure = measures.find((item) => {\r\n return item.id.toString() === sectionSeries.measureId.toString();\r\n });\r\n\r\n if (!measure) continue;\r\n\r\n let ser = _seriesBaseOptions(sectionSeries); // measure id + node identifier\r\n ser.name = node.name + (multipleMeasures ? ': ' + sectionSeries.name : '') + (forLocalCurrency ? ' (' + node.currency + ')' : '');\r\n let axs = setup.valueAxes.find((e) => e.id === sectionSeries.axis);\r\n ser.lookupRef = {\r\n nodeId: node.id,\r\n measureId: sectionSeries.measureId,\r\n amountsIn: sectionSeries.amountsIn || 1,\r\n viewCashflows: sectionSeries.viewCashflows,\r\n scale: sectionSeries.scale,\r\n percentage: axs ? axs.isPercent : false,\r\n };\r\n\r\n seriesHash[node.id + '_' + sectionSeries.measureId] = {\r\n chartSeries: ser,\r\n sectionSeries: sectionSeries,\r\n };\r\n\r\n seriesA.push(ser);\r\n }\r\n });\r\n\r\n //MULTI PERIOD\r\n const _loadAxisData = (seriesHash) => {\r\n if (!chartData) {\r\n return;\r\n }\r\n\r\n let periodHash = {};\r\n\r\n for (let i = 0; i < chartData.length; i++) {\r\n let val = chartData[i];\r\n\r\n let index = _categoryMap[val.periodId];\r\n\r\n let series = seriesHash[val.nodeId + '_' + val.measureId];\r\n\r\n if (series && index > -1) {\r\n let amount = val.amount / (series.sectionSeries.amountsIn || 1);\r\n\r\n series.chartSeries.data[index] = { amount: amount, lookupRef: series.chartSeries.lookupRef };\r\n _registerGridRecord(val, periodHash, amount);\r\n }\r\n }\r\n };\r\n\r\n _loadAxisData(seriesHash);\r\n\r\n _clearEmptySeries(seriesA);\r\n\r\n setSeries(seriesA);\r\n };\r\n\r\n if (setup.singlePeriod) {\r\n _generateCategoriesSingle(widgetData);\r\n _generateSeriesSingle();\r\n _generateValueAxes(setup.valueAxes);\r\n } else {\r\n _generateCategories();\r\n generateSeries(widgetData);\r\n _generateValueAxes(setup.valueAxes);\r\n }\r\n};\r\n\r\nexport default generateAxisChart;\r\n","import { formatNumber } from '@progress/kendo-intl';\r\n\r\nconst generateCircleCharts = (widgetInstance, chartData, selectedPeriod, setSeries, setup, setGridData) => {\r\n let periodIdField = 'id';\r\n\r\n const _registerGridRecord = (val, periodHash, amount, gridData) => {\r\n let gridVal = periodHash[val.periodId];\r\n if (!gridVal) {\r\n gridVal = { periodId: val.periodId, periodName: val.periodName, endDate: val.endDate };\r\n periodHash[val.periodId] = gridVal;\r\n gridData.push(gridVal);\r\n }\r\n gridVal['_' + val.nodeId + '_' + val.measureId] = amount;\r\n };\r\n\r\n const _updatePercentages = (chartData, total) => {\r\n for (let i = 0; i < chartData.length; i++) {\r\n let data = chartData[i];\r\n data.percentage = data.amount / total;\r\n if (setup.percentages) data.value = data.percentage;\r\n }\r\n };\r\n\r\n const _generateCircleData = (widgetInstance, chartData, selectedPeriod, setSeries, setup) => {\r\n let data = [];\r\n let gridData = [];\r\n\r\n if (!chartData) return chartData;\r\n\r\n let periodHash = {};\r\n\r\n let series = setup.series[0];\r\n\r\n let total = 0;\r\n\r\n for (let i = 0; i < chartData.length; i++) {\r\n let val = chartData[i];\r\n let node = widgetInstance.nodes.find(function (item) {\r\n return item.id === val.nodeId;\r\n });\r\n if (val.periodId === selectedPeriod[periodIdField] && val.measureId.toString() === series.measureId.toString() && node) {\r\n let amount = val.amount / (series.amountsIn || 1);\r\n data.push({\r\n category: node.name, // val.nodeId,\r\n value: amount,\r\n amount: amount,\r\n percentage: setup.percentages,\r\n lookupRef: { nodeId: node.id, measureId: val.measureId, scale: setup.series[0].scale },\r\n });\r\n\r\n total += amount;\r\n\r\n _registerGridRecord(val, periodHash, amount, gridData);\r\n }\r\n }\r\n\r\n _updatePercentages(chartData, total);\r\n\r\n setGridData(gridData);\r\n\r\n setSeries([\r\n {\r\n type: setup.type,\r\n data: data,\r\n labels: {\r\n visible: setup.seriesLabels,\r\n background: 'transparent',\r\n position: 'outsideEnd',\r\n callbackTemplate: (e) => {\r\n return (\r\n e.category +\r\n ': ' +\r\n formatNumber(\r\n e.dataItem.percentage ? e.percentage : e.value,\r\n e.dataItem.percentage ? `p${e.dataItem.lookupRef.scale}` : `n${e.dataItem.lookupRef.scale}`\r\n )\r\n );\r\n },\r\n },\r\n tooltip: {\r\n visible: !setup.seriesLabels,\r\n callbackTemplate: (e) => {\r\n if (e.point) {\r\n return (\r\n e.point.dataItem &&\r\n e.point.category + ': ' + formatNumber(e.point.value, e.point.dataItem.percentage ? `p` : `n${e.point.dataItem.lookupRef.scale}`)\r\n );\r\n }\r\n },\r\n },\r\n legend: {\r\n visible: setup.legend !== 'none',\r\n position: setup.legend,\r\n },\r\n },\r\n ]);\r\n };\r\n\r\n _generateCircleData(widgetInstance, chartData, selectedPeriod, setSeries, setup);\r\n};\r\nexport default generateCircleCharts;\r\n","import httpService from './httpService';\r\nimport queryString from 'query-string';\r\nimport { AxiosResponse } from 'axios';\r\n\r\nimport { IBoardDataObject } from '../../../models/types/IBoardDataObject';\r\nimport { AnalysisContentModel } from '../../../models/AnalysisContentModel';\r\nimport { AnalysisContentWidgetModel } from '../../../models/AnalysisContentWidgetModel';\r\n\r\nexport interface IWidgetData {\r\n amount: number;\r\n childNodes: any;\r\n dimensionId: number;\r\n endDate: string;\r\n id: number;\r\n isRoot: any;\r\n measureId: number;\r\n nodeId: number;\r\n objectId: number;\r\n parentNodeId: number;\r\n periodId: number;\r\n periodName: string;\r\n scenarioId: number;\r\n startDate: string;\r\n type: string;\r\n valueAssumptionId: number;\r\n variantId: number;\r\n}\r\n\r\nexport interface IWidgetStaticData {\r\n nodeId: number;\r\n objectId: number;\r\n templatePropertyId: number;\r\n dataType: string;\r\n value: string;\r\n rawValue: any;\r\n}\r\n\r\nexport interface IWidgetCombinedData {\r\n measureValues: Array;\r\n staticValues: Array;\r\n}\r\n\r\nexport interface INote {\r\n contentId: number;\r\n date: Date;\r\n id: number;\r\n inactive: boolean;\r\n measures: INoteMeasure[];\r\n name: any;\r\n note: string;\r\n objects: INoteObject[];\r\n periods: any;\r\n symbol: string;\r\n}\r\n\r\ninterface INoteObject {\r\n contentObjectId: number;\r\n id: number;\r\n name: string;\r\n noteId: number;\r\n parentContentObjectId: any;\r\n}\r\n\r\ninterface INoteMeasure {\r\n id: number;\r\n measureId: number;\r\n name: string;\r\n noteId: number;\r\n}\r\n\r\ninterface IHasBoards {\r\n hasBoards: boolean;\r\n}\r\n\r\nconst _buildValueQueryString = (nodes, nodeGroups, sliceTypes, measures, endDate, singlePeriod, includeDescendants, currency, templateProperties = null) => {\r\n let d = endDate.split('T');\r\n let parsedQuery = {\r\n measureId: [],\r\n nodeId: [],\r\n nodeGroupId: [],\r\n endDate,\r\n singlePeriod,\r\n includeDescendants,\r\n currency,\r\n templatePropertyId: [],\r\n };\r\n if (measures) parsedQuery.measureId = measures && measures.map((x) => x.id);\r\n if (nodeGroups) parsedQuery.nodeGroupId = nodeGroups && nodeGroups.map((x) => x.id);\r\n if (nodes) parsedQuery.nodeId = nodes && nodes.map((x) => x.id);\r\n parsedQuery.endDate = d[0];\r\n parsedQuery.singlePeriod = singlePeriod;\r\n parsedQuery.includeDescendants = includeDescendants;\r\n parsedQuery.currency = currency;\r\n if (templateProperties) parsedQuery.templatePropertyId = templateProperties.map((x) => x.templatePropertyId);\r\n return queryString.stringify(parsedQuery);\r\n};\r\n\r\nexport const getCashflowData = (dashboardId: number, nodeId, valueId, investorId, scenarioId?) => {\r\n let query = { nodeId: {}, valueId: {} };\r\n query.nodeId = nodeId;\r\n //query.scenarioId = scenarioId; //maybe to comment out\r\n query.valueId = valueId;\r\n let cashflowQuery = queryString.stringify(query);\r\n\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/${investorId}/${dashboardId}/values/cashflows?${cashflowQuery}`);\r\n return httpService\r\n .get(endpoint)\r\n .then((res: any) => {\r\n return res.data;\r\n })\r\n .catch((err) => console.log('Error on fetching CF data ', err));\r\n};\r\n\r\nexport const nodeValues = (dashboardId: number, nodes, nodeGroups, measures, endDate, singlePeriod, includeDescendants, currency, investorId): Promise => {\r\n let query = _buildValueQueryString(nodes, nodeGroups, null, measures, endDate, singlePeriod, includeDescendants, currency);\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/${investorId}/${dashboardId}/nodes/values?${query}`);\r\n\r\n return httpService\r\n .get(endpoint)\r\n .then((res: any) => {\r\n return res.data;\r\n })\r\n .catch((err) => console.log('Error on fetching data ', err));\r\n};\r\n\r\nexport const getAllBoards = () => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/`);\r\n return httpService\r\n .get(endpoint)\r\n .then((res) => {\r\n return res.data;\r\n })\r\n .then((data: IBoardDataObject[]) => {\r\n return data;\r\n });\r\n};\r\n\r\nexport const getBoardsForInvestor = (investorId) => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/${investorId}`);\r\n return httpService.get(endpoint).then((res: AxiosResponse) => res.data);\r\n // .then((data: IBoardsData[]) => {\r\n // return data;\r\n // });\r\n};\r\n\r\nexport const getAnalysisContent = (dashboardId: number, investorId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/${investorId}/${dashboardId}`);\r\n\r\n return httpService\r\n .get(endpoint)\r\n .then((res) => {\r\n return res.data;\r\n })\r\n .then((data: IBoardDataObject) => {\r\n return new AnalysisContentModel(data);\r\n });\r\n};\r\n\r\nexport const getAllDashboardNotes = (dashboardId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContentNotes/${dashboardId}`);\r\n return httpService\r\n .get(endpoint)\r\n .then((res: any) => {\r\n return res;\r\n })\r\n .catch((err) => console.log('Error on fetching dashboard notes ', err));\r\n};\r\n\r\nexport const getDashboardNote = (dashboardId: number, noteId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContentNotes/${dashboardId}/${noteId}`);\r\n return httpService\r\n .get(endpoint)\r\n .then((res: any) => {\r\n return res;\r\n })\r\n .catch((err) => console.log('Error on fetching dashboard note ', err));\r\n};\r\n\r\nexport const fetchNotes = (dashboardId: number, periodId: number) => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContentNotes/${dashboardId}/periods/${periodId}`);\r\n return httpService\r\n .get(endpoint)\r\n .then((res: any) => {\r\n return res.data;\r\n })\r\n .catch((err) => console.log('Error on fetching notes ', err));\r\n};\r\n\r\nexport const customise = (dashboardId: string, widgets: AnalysisContentWidgetModel[]) => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/${dashboardId}/customize`);\r\n let tempWidgetsPayload = [];\r\n widgets.forEach((widget) =>\r\n tempWidgetsPayload.push({\r\n widgetId: widget.id,\r\n visible: widget.visible,\r\n })\r\n );\r\n\r\n let data = { contentId: parseInt(dashboardId), widgets: tempWidgetsPayload };\r\n return httpService.put(endpoint, data).catch((err) => console.log('Error on putting widgets ', err));\r\n};\r\n\r\nexport const nodeStaticValues = (dashboardId: number, nodes, nodeGroups, templateProperties, investorId): Promise> => {\r\n let query = _buildValueQueryString(nodes, nodeGroups, null, null, null, null, null, templateProperties);\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/${investorId}/${dashboardId}/nodes/values/static?${query}`);\r\n return httpService.getTyped>(endpoint);\r\n};\r\n\r\nexport const nodeCombinedValues = (\r\n dashboardId: number,\r\n nodes,\r\n nodeGroups,\r\n measures,\r\n templateProperties,\r\n endDate,\r\n singlePeriod,\r\n includeDescendants,\r\n currency,\r\n investorId\r\n): Promise => {\r\n let query = _buildValueQueryString(nodes, nodeGroups, null, measures, endDate, singlePeriod, includeDescendants, currency, templateProperties);\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/investors/${investorId}/${dashboardId}/nodes/values/measuresAndStatic?${query}`);\r\n return httpService.getTyped(endpoint);\r\n};\r\n\r\nexport const hasBoards = () => {\r\n let endpoint = httpService.getEndpointURL(`/AnalysisContent/hasBoards`);\r\n return httpService.getTyped(endpoint);\r\n};\r\n","import { AnalysisContentWidgetModel } from './AnalysisContentWidgetModel';\r\nimport AnalysisContentObjectModel from './AnalysisContentObjectModel';\r\nimport {\r\n IWidgetCombinedData,\r\n IWidgetData,\r\n IWidgetStaticData,\r\n nodeCombinedValues,\r\n nodeStaticValues,\r\n nodeValues,\r\n} from '../common/services/http/analysisContentService';\r\n\r\nexport class AnalysisContentWidgetDataModel {\r\n widget: AnalysisContentWidgetModel;\r\n measures: number[];\r\n includeDescendants: boolean;\r\n nodes: any[];\r\n groups: any[];\r\n parentNode: any;\r\n investorId: number;\r\n staticProperties: any[];\r\n\r\n constructor(widget: any, measures: any, investorId: number, includeDescendants?: boolean, staticProperties?: any[]) {\r\n this.widget = widget;\r\n this.measures = measures;\r\n this.nodes = [];\r\n this.groups = [];\r\n this.includeDescendants = includeDescendants ? includeDescendants : false;\r\n this.investorId = investorId;\r\n this.staticProperties = staticProperties;\r\n }\r\n\r\n setInvestorId(investorId) {\r\n this.investorId = investorId;\r\n }\r\n\r\n defineNodesForParent(focusedObject, nodeId) {\r\n this.nodes.splice(0);\r\n this.groups.splice(0);\r\n this.parentNode = null;\r\n\r\n if (!focusedObject) return;\r\n this.parentNode = focusedObject.findNode(nodeId);\r\n if (this.parentNode) {\r\n this.nodes = focusedObject.childNodesBypassGroups(nodeId);\r\n }\r\n }\r\n\r\n _removeExcluded(focusedObject, nodesToCheck) {\r\n let excludedNodes = this.widget.nodesExcludedForObject(focusedObject.objectPath);\r\n\r\n for (let i = 0; i < excludedNodes.nodes.length; i++) {\r\n let exnode = excludedNodes.nodes[i];\r\n\r\n for (let j = 0; j < nodesToCheck.length; j++) {\r\n let nodes = nodesToCheck[j];\r\n let remove = -1;\r\n nodes.find(function(item, index) {\r\n let isEq = item.id === exnode.nodeId;\r\n if (isEq) remove = index;\r\n return isEq;\r\n });\r\n if (remove > -1) nodes.splice(remove, 1);\r\n }\r\n }\r\n }\r\n\r\n // Define Nodes for Parent\r\n defineNodes(focusedObject: AnalysisContentObjectModel): any {\r\n this.nodes.splice(0);\r\n this.groups.splice(0);\r\n\r\n if (this.widget.setup.sliceGroup) {\r\n if (this.widget.setup.sliceGroupLevel) {\r\n this.defineNodesForCategoryTypeLevel(focusedObject, this.widget.setup.sliceGroup, this.widget.setup.sliceGroupLevel);\r\n } else {\r\n this.defineNodesForGroup(focusedObject);\r\n }\r\n } else if (this.widget.setup.sliceType) {\r\n this.defineNodesForSliceType(focusedObject);\r\n } else {\r\n this.nodes = focusedObject.nodesOfObject.slice();\r\n this._removeExcluded(focusedObject, [this.nodes]);\r\n }\r\n }\r\n\r\n defineNodesForGroup(focusedObject: AnalysisContentObjectModel): any {\r\n this.groups = focusedObject.nodesFor(this.widget.setup.sliceGroup);\r\n this._removeExcluded(focusedObject, [this.groups]);\r\n\r\n for (let i = 0; i < this.groups.length; i++) {\r\n let group = this.groups[i];\r\n this.nodes.push.apply(this.nodes, focusedObject.childNodes(group.id));\r\n }\r\n return this.nodes;\r\n }\r\n\r\n defineNodesForSliceType(focusedObject) {\r\n this.groups.splice(0);\r\n this.nodes = focusedObject.nodesForType(this.widget.setup.sliceType);\r\n this._removeExcluded(focusedObject, [this.nodes]);\r\n }\r\n\r\n defineNodesForCategoryTypeLevel(focusedObject, categoryTypeId, categoryLevel) {\r\n this.nodes.splice(0);\r\n this.groups.splice(0);\r\n this.parentNode = null;\r\n\r\n this.nodes = focusedObject.nodesForCategoryTypeLevel(categoryTypeId, categoryLevel);\r\n\r\n let exclude = this.widget.nodesExcludedForObject(focusedObject.objectPath);\r\n\r\n for (let i = this.nodes.length - 1; i > -1; i--) {\r\n let parent = this.nodes[i];\r\n while (parent) {\r\n if (exclude.idLookup[parent.id]) {\r\n this.nodes.splice(i, 1);\r\n break;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n }\r\n }\r\n\r\n fetchData(focusedPeriod, focusedCurrency): Promise {\r\n if (this.widget.setup.sliceGroup) {\r\n return Promise.resolve(\r\n nodeValues(\r\n +this.widget.contentId,\r\n this.nodes,\r\n this.groups,\r\n this.measures,\r\n focusedPeriod.endDate,\r\n this.widget.setup.singlePeriod,\r\n this.includeDescendants,\r\n focusedCurrency,\r\n this.investorId,\r\n ),\r\n );\r\n }\r\n return Promise.resolve(\r\n nodeValues(\r\n +this.widget.contentId,\r\n this.nodes,\r\n null,\r\n this.measures,\r\n focusedPeriod.endDate,\r\n this.widget.setup.singlePeriod,\r\n this.includeDescendants,\r\n focusedCurrency,\r\n this.investorId,\r\n ),\r\n );\r\n }\r\n\r\n fetchNodeData(focusedPeriod, focusedCurrency): Promise {\r\n return Promise.resolve(\r\n nodeValues(\r\n +this.widget.contentId,\r\n this.nodes,\r\n null,\r\n this.measures,\r\n focusedPeriod.endDate,\r\n this.widget.setup.singlePeriod,\r\n this.includeDescendants,\r\n focusedCurrency,\r\n this.investorId,\r\n ),\r\n );\r\n }\r\n\r\n fetchStaticData(): Promise> {\r\n if (this.widget.setup.sliceGroup) return nodeStaticValues(this.widget.contentId, null, this.groups, this.staticProperties, this.investorId);\r\n\r\n return nodeStaticValues(this.widget.contentId, this.nodes, null, this.staticProperties, this.investorId);\r\n }\r\n\r\n generateCurrencies = (scenarios) => {\r\n let currencies = [];\r\n\r\n this.nodes.forEach((node) => {\r\n let scenario = scenarios.find((item) => {\r\n return item.id === node.scenarioId;\r\n });\r\n if (scenario) {\r\n scenario.currencies.forEach((currency) => {\r\n if (!currencies.find((item) => {\r\n return item.currency === currency.currency;\r\n })) {\r\n currencies.push(currency);\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (this.widget.setup.suppressLocalCurrency) {\r\n return currencies.filter((curr) => {\r\n return curr.currency !== '_';\r\n })\r\n }\r\n else{\r\n return currencies;\r\n }\r\n };\r\n\r\n fetchCombinedData(focusedPeriod, focusedCurrency): Promise {\r\n if (!focusedPeriod) return Promise.resolve(null);\r\n\r\n if (this.widget.setup.sliceGroup)\r\n return nodeCombinedValues(\r\n this.widget.contentId,\r\n null,\r\n this.groups,\r\n this.measures,\r\n this.staticProperties,\r\n focusedPeriod.endDate,\r\n this.widget.setup.singlePeriod,\r\n this.includeDescendants,\r\n focusedCurrency,\r\n this.investorId,\r\n );\r\n\r\n return nodeCombinedValues(\r\n this.widget.contentId,\r\n this.nodes,\r\n null,\r\n this.measures,\r\n this.staticProperties,\r\n focusedPeriod.endDate,\r\n this.widget.setup.singlePeriod,\r\n this.includeDescendants,\r\n focusedCurrency,\r\n this.investorId,\r\n );\r\n }\r\n}\r\n","import { useEffect, useState, useRef } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport generateAxisChart from './generateAxiesChart';\r\nimport generateCircleCharts from './generateCircleChart';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../../redux/store';\r\n\r\nimport { INote } from '../../../../../common/services/http/analysisContentService';\r\nimport { ICurrency } from '../../../types/ICurrency';\r\nimport { ICashFlowCircle } from '../../../types/ICashFlowCircle';\r\nimport { ICashFlowAxis } from '../../../types/ICashFlowAxis';\r\nimport { IDrillDownNode } from '../../../types/IDrillDownNode';\r\nimport { AnalysisContentWidgetDataModel } from '../../../../../models/AnalysisContentWidgetDataModel';\r\n\r\nconst useGetChartData = (setup, periods, measures, widget, notes, scenarios, selectedObject, selectedPeriod, boardSelectedCurrency, investorObjectId) => {\r\n const [gridData, setGridData] = useState([]);\r\n const [chartData, setChartData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [series, setSeries] = useState([]);\r\n const [chartType, setChartType] = useState('');\r\n const [categories, setCategories] = useState([]);\r\n const [valueAxis, setValueAxis] = useState([]);\r\n const [currencies, setCurrencies] = useState([]);\r\n const [selectedCurrency, setSelectedCurrency] = useState([]);\r\n const [cashFlow, setCashFlow] = useState(null);\r\n const [drillDownData, setDrillDownData] = useState(null);\r\n const [popupVisible, setPopUpVisible] = useState(false);\r\n const [breadCrumbs, setBreadcrumbs] = useState([{ id: 0, name: '', level: 0, node: null }]);\r\n const [gridOptions, setGridOptions] = useState([]);\r\n const [chartNotes, setChartNotes] = useState([]);\r\n const [chartContentEnriched, setChartContentEnriched] = useState([]);\r\n\r\n let tempChartNotesArray: INote[] = [];\r\n let periodIdField = 'id';\r\n let focusedNode;\r\n let compareNode;\r\n\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n\r\n const { investorId } = useParams();\r\n\r\n const getChartMeasures = (setup: any, measures: any[]) => {\r\n const measuresArray = [];\r\n\r\n setup.series.forEach((x) => {\r\n let tempMeasure = measures.find((element) => element.id === x.measureId);\r\n if (tempMeasure) measuresArray.push(tempMeasure);\r\n });\r\n\r\n return measuresArray;\r\n };\r\n\r\n let chartsMeasures = getChartMeasures(setup, measures);\r\n\r\n const widgetDataRef = useRef();\r\n\r\n const _getData = (widgetInstance) => {\r\n return boardSelectedCurrency && widgetInstance.fetchNodeData(selectedPeriod, boardSelectedCurrency.currency).then((data) => {\r\n return data;\r\n });\r\n };\r\n\r\n let cashflowDialog;\r\n\r\n const drillDownInfo = (nodeId) => {\r\n let drillDownInfo = [];\r\n\r\n if (widget.setup.enableDrillDown) {\r\n let node = selectedObject.findNode(nodeId);\r\n\r\n if (node.childNodes.length > 0) {\r\n let hasNonGroups = false;\r\n node.childNodes.forEach(function(child) {\r\n if (child.isGroup) drillDownInfo.push({ id: child.id, name: child.name });\r\n else hasNonGroups = true;\r\n });\r\n\r\n if (hasNonGroups) drillDownInfo.push({ id: nodeId, name: null });\r\n }\r\n }\r\n return drillDownInfo;\r\n };\r\n\r\n const handleSeriesClickEventCircle = (event, widgetInstance) => {\r\n if (!event.dataItem || !event.dataItem.lookupRef) return;\r\n\r\n let ref = event.dataItem.lookupRef;\r\n let period = selectedPeriod;\r\n let value = chartData.find(function(item) {\r\n return item.nodeId === parseInt(ref.nodeId) && item.measureId === parseInt(ref.measureId) && item.periodId === period[periodIdField];\r\n });\r\n\r\n let measure = measures.find(function(item) {\r\n return item.id === ref.measureId;\r\n });\r\n let node = widgetInstance.nodes.find(function(item) {\r\n return item.id === ref.nodeId;\r\n });\r\n\r\n if (value) {\r\n setDrillDownData(drillDownInfo(node.id));\r\n\r\n return {\r\n nodeId: node.id,\r\n scenarioId: node.scenarioId,\r\n valueId: value.id,\r\n value: event.dataItem.amount,\r\n percentage: event.dataItem.percentage,\r\n measureId: measure.id,\r\n viewCashflows: setup.series[0].viewCashflows,\r\n currency: node.currency,\r\n period: period,\r\n valueInfo: {\r\n name: node.name,\r\n measure: measure,\r\n amount: event.dataItem.amount,\r\n scale: setup.series[0].scale,\r\n },\r\n };\r\n }\r\n };\r\n\r\n const _seriesData = (event) => {\r\n let ref = event.series.data[0].lookupRef;\r\n\r\n if (!ref) return;\r\n\r\n let info = {\r\n nodeId: null,\r\n measureId: null,\r\n period: null,\r\n amount: null,\r\n value: null,\r\n };\r\n\r\n if (setup.singlePeriod) {\r\n info.nodeId = event.dataItem.nodeId;\r\n info.measureId = parseInt(ref.measureId);\r\n info.amount = event.dataItem.value * (ref.amountsIn || 1);\r\n (info.value = event.dataItem.value), (info.period = selectedPeriod);\r\n } else {\r\n info.nodeId = parseInt(ref.nodeId);\r\n info.measureId = parseInt(ref.measureId);\r\n info.amount = event.dataItem.amount * ref.amountsIn;\r\n\r\n (info.value = event.dataItem),\r\n (info.period = periods.find(function(item) {\r\n return item.name === event.category;\r\n }));\r\n }\r\n\r\n return info;\r\n };\r\n\r\n const filterNotesForChart = (notes: INote[]): void => {\r\n let currentColumns = setup.series;\r\n if (notes) {\r\n for (let i = 0; i < notes.length; i++) {\r\n for (let j = 0; j < notes[i].measures.length; j++) {\r\n let tempNoteMeasureId = notes[i].measures[j].measureId;\r\n currentColumns.map((el) => {\r\n if (el.measureId === tempNoteMeasureId && !tempChartNotesArray.includes(notes[i])) {\r\n tempChartNotesArray.push(notes[i]);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n setChartNotes(tempChartNotesArray);\r\n extractNotesForChartItems();\r\n };\r\n\r\n const extractNotesForChartItems = (): any => {\r\n let currentColumns = setup.series;\r\n let copiedChartContent = currentColumns.map((object) => ({ ...object }));\r\n for (let i = 0; i < currentColumns.length; i++) {\r\n let tempItemNotes: INote[] = [];\r\n for (let j = 0; j < notes.length; j++) {\r\n let tempNoteMeasures = notes[j].measures.map((el) => el.measureId);\r\n if (tempNoteMeasures.includes(currentColumns[i].measureId)) {\r\n tempItemNotes.push(notes[j]);\r\n copiedChartContent[i].hasNotes = true;\r\n copiedChartContent[i].notes = tempItemNotes;\r\n setChartContentEnriched(copiedChartContent);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleSeriesClickEventAxes = (event, widgetInstance) => {\r\n let ref = event.series.data[0].lookupRef;\r\n if (!ref) return;\r\n\r\n let info = _seriesData(event);\r\n\r\n if (info.nodeId && info.measureId && info.period) {\r\n let value = chartData.find(function(item) {\r\n return item.nodeId === info.nodeId && item.measureId === info.measureId && item.periodId === info.period[periodIdField];\r\n });\r\n let measure = measures.find(function(item) {\r\n return item.id === info.measureId;\r\n });\r\n let node = widgetInstance.nodes.find(function(item) {\r\n return item.id === info.nodeId;\r\n });\r\n\r\n if (value) {\r\n setDrillDownData(drillDownInfo(node.id));\r\n return {\r\n nodeId: node.id,\r\n scenarioId: node.scenarioId,\r\n valueId: value.id,\r\n value: info.value,\r\n measureId: info.measureId,\r\n viewCashflows: ref.viewCashflows,\r\n currency: node.currency,\r\n period: info.period,\r\n valueInfo: {\r\n name: node.name,\r\n measure: measure,\r\n amount: info.amount,\r\n scale: ref.scale,\r\n },\r\n };\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n const seriesClick = (event) => {\r\n switch (setup.type) {\r\n case 'line':\r\n case 'bar':\r\n case 'column':\r\n case 'area':\r\n setCashFlow(handleSeriesClickEventAxes(event, widgetDataRef.current));\r\n break;\r\n case 'pie':\r\n case 'donut':\r\n setCashFlow(handleSeriesClickEventCircle(event, widgetDataRef.current));\r\n break;\r\n }\r\n };\r\n\r\n const drillDown = (nodeId, widgetInstance) => {\r\n if (popupVisible) {\r\n setPopUpVisible(false);\r\n }\r\n let node = selectedObject.findNode(nodeId);\r\n\r\n if (node) {\r\n focusedNode = node;\r\n\r\n widgetInstance.defineNodesForParent(selectedObject, node.id);\r\n\r\n if (widget.setup.showParentOnDrillDown) compareNode = focusedNode.isGroup ? focusedNode.parentNode : focusedNode;\r\n\r\n if (compareNode) widgetInstance.nodes.push(compareNode);\r\n\r\n _getData(widgetInstance).then((res) => {\r\n let appendParent = false;\r\n if (node.parentNode && node.parentNode.parentNode) {\r\n appendParent = !breadCrumbs.find(function(item) {\r\n return item.id === node.parentNode.id;\r\n });\r\n }\r\n setBreadcrumbs([\r\n ...breadCrumbs,\r\n {\r\n id: node.id,\r\n name: (appendParent ? node.parentNode.name + ' / ' : '') + node.name,\r\n level: breadCrumbs.length,\r\n node: node,\r\n },\r\n ]);\r\n\r\n setChartData(res);\r\n });\r\n }\r\n };\r\n\r\n const drillToLevel = (node, widgetInstance) => {\r\n let level;\r\n\r\n if (node.level === 0) {\r\n focusedNode = null;\r\n compareNode = null;\r\n\r\n if (widget.setup.sliceGroup && level) widgetInstance.defineNodesForCategoryTypeLevel(selectedObject, widget.setup.sliceGroup, level);\r\n else widgetInstance.defineNodes(selectedObject);\r\n\r\n _getData(widgetInstance).then(function(res) {\r\n let newBrCrumbsArr = breadCrumbs;\r\n newBrCrumbsArr.splice(1);\r\n setBreadcrumbs(newBrCrumbsArr);\r\n setChartData(res);\r\n });\r\n return;\r\n }\r\n\r\n focusedNode = node.node;\r\n widgetInstance.defineNodesForParent(selectedObject, node.node.id, true);\r\n if (widget.setup.showParentOnDrillDown) compareNode = focusedNode.isGroup ? focusedNode.parentNode : focusedNode;\r\n if (compareNode) widgetInstance.nodes.push(compareNode);\r\n let newBrCrumbsArr = breadCrumbs;\r\n newBrCrumbsArr.splice(node.level + 1);\r\n setBreadcrumbs(newBrCrumbsArr);\r\n _getData(widgetInstance).then(function(res) {\r\n setChartData(res);\r\n });\r\n };\r\n\r\n const _onExcelExport = () => {\r\n console.log('excel export');\r\n };\r\n\r\n const _gridOptions = (periodTitle) => {\r\n // grid options\r\n\r\n let columns = [\r\n {\r\n field: 'periodName',\r\n title: periodTitle,\r\n width: 180,\r\n locked: true,\r\n sortable: true,\r\n },\r\n ];\r\n\r\n let series = widget.setup.series;\r\n let nodes = widgetDataRef.current.nodes;\r\n\r\n for (let i = 0; i < series.length; i++) {\r\n let ser = series[i];\r\n let measure = measures.find((item) => {\r\n return item.id.toString() === ser.measureId.toString();\r\n });\r\n if (!measure) continue;\r\n\r\n let nodeColumns: any[] = columns;\r\n\r\n if (series.length > 1) {\r\n let column: any = {\r\n title: ser.name,\r\n headerAttributes: {\r\n style: 'text-align: center',\r\n },\r\n columns: [],\r\n };\r\n columns.push(column);\r\n nodeColumns = column.columns;\r\n }\r\n\r\n if (nodes) {\r\n for (let j = 0; j < nodes.length; j++) {\r\n let node = nodes[j];\r\n let field = '_' + node.id + '_' + ser.measureId;\r\n\r\n nodeColumns.push({\r\n field: field,\r\n title: node.name,\r\n width: 200,\r\n headerAttributes: {\r\n style: 'text-align: right',\r\n },\r\n attributes: {\r\n style: 'text-align: right',\r\n },\r\n node: node,\r\n measure: measure,\r\n });\r\n }\r\n }\r\n }\r\n\r\n _clearEmptyGridColumns(columns);\r\n\r\n return {\r\n dataSource: {\r\n data: gridData,\r\n sort: { field: 'endDate', dir: 'asc' },\r\n },\r\n columns: columns,\r\n excel: {\r\n fileName: widget.name + '.xlsx',\r\n },\r\n excelExport: _onExcelExport,\r\n };\r\n };\r\n\r\n function _columnHasValues(column) {\r\n for (let j = 0; j < gridData.length; j++) {\r\n let row = gridData[j];\r\n if (row[column.field] !== undefined && row[column.field] !== null) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function _clearEmptyGridColumns(columns) {\r\n for (let i = columns.length - 1; i > 0; i--) {\r\n let column = columns[i];\r\n if (column.columns && column.columns.length > 0) {\r\n for (let j = column.columns.length - 1; j > -1; j--) {\r\n let subCol = column.columns[j];\r\n if (!_columnHasValues(subCol)) column.columns.splice(j, 1);\r\n }\r\n } else {\r\n if (!_columnHasValues(column)) columns.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n const gridCellClick = (dataItem, field, measureId, nodeId) => {\r\n let measure = measures.find(function(item) {\r\n return item.id.toString() === measureId.toString();\r\n });\r\n\r\n let node = widgetDataRef.current.nodes.find(function(item) {\r\n return item.id === nodeId;\r\n });\r\n\r\n let value = chartData.find(function(item) {\r\n return item.nodeId === nodeId && item.measureId === measureId && item.periodId === dataItem.periodId;\r\n });\r\n\r\n let period = widget.setup.singlePeriod\r\n ? selectedPeriod\r\n : periods.find(function(item) {\r\n return item.id === dataItem.periodId;\r\n });\r\n\r\n cashflowDialog = {\r\n nodeId: node.id,\r\n scenarioId: node.scenarioId,\r\n valueId: value.id,\r\n value: dataItem,\r\n measureId: measureId,\r\n viewCashflows: true,\r\n period: period,\r\n valueInfo: {\r\n name: node.name,\r\n measure: measure,\r\n amount: dataItem[field],\r\n },\r\n };\r\n\r\n setDrillDownData(drillDownInfo(node.id));\r\n setCashFlow(cashflowDialog);\r\n };\r\n\r\n const _initChart = (chartData) => {\r\n if (chartData) {\r\n switch (setup.type) {\r\n case 'line':\r\n case 'bar':\r\n case 'column':\r\n case 'area':\r\n //@ts-ignore\r\n generateAxisChart(setCategories, setValueAxis, setSeries, widgetDataRef.current, setup, measures, chartData, selectedPeriod, periods, setGridData, selectedCurrency.currency === '_');\r\n setChartType('axes');\r\n\r\n break;\r\n case 'pie':\r\n case 'donut':\r\n generateCircleCharts(widgetDataRef.current, chartData, selectedPeriod, setSeries, setup, setGridData);\r\n setChartType('circle');\r\n setLoading(false);\r\n break;\r\n default:\r\n console.log(`setup type unknown ${setup.type}`);\r\n }\r\n }\r\n };\r\n\r\n const handleCurrencyChange = (e) => {\r\n setSelectedCurrency(e.value);\r\n };\r\n\r\n const handleFindSelection = (currency, arrayToFind) => {\r\n if (arrayToFind.find((curr) => curr.currency === currency.currency)) {\r\n return currency;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const widgetData = new AnalysisContentWidgetDataModel(widget, chartsMeasures, investorId ? parseInt(investorId) : parseInt(investorObjectId), false, undefined);\r\n widgetData.defineNodes(selectedObject);\r\n widgetDataRef.current = widgetData;\r\n }, [investor]);\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n // @ts-ignore\r\n setGridOptions(_gridOptions('Time Period', widgetDataRef));\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [gridData]);\r\n\r\n useEffect(() => {\r\n if (notes) filterNotesForChart(notes);\r\n }, [notes]);\r\n\r\n useEffect(() => {\r\n //@ts-ignore\r\n if (widget.setup.type === 'donut' && boardSelectedCurrency && boardSelectedCurrency.currency === '_') {\r\n return;\r\n }\r\n if (boardSelectedCurrency) {\r\n let currency = handleFindSelection(boardSelectedCurrency, widgetDataRef.current.generateCurrencies(scenarios));\r\n if (currency) {\r\n setSelectedCurrency(currency);\r\n }\r\n }\r\n }, [boardSelectedCurrency]);\r\n\r\n useEffect(() => {\r\n //@ts-ignore\r\n if (selectedCurrency.currency) {\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setCurrencies(widgetDataRef.current.generateCurrencies(scenarios));\r\n //@ts-ignore\r\n widgetDataRef.current.fetchData(selectedPeriod, selectedCurrency.currency).then((data) => {\r\n setLoading(false);\r\n setChartData(data);\r\n });\r\n }\r\n }, [selectedObject, selectedPeriod, selectedCurrency]);\r\n\r\n // useEffect cleanup https://stackoverflow.com/questions/53949393/cant-perform-a-react-state-update-on-an-unmounted-component\r\n useEffect(() => {\r\n let isMounted = true;\r\n if (isMounted) {\r\n _initChart(chartData);\r\n }\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [chartData]);\r\n\r\n return {\r\n loading,\r\n chartData,\r\n series,\r\n categories,\r\n chartType,\r\n valueAxis,\r\n seriesClick,\r\n cashFlow,\r\n drillDownData,\r\n drillDown,\r\n popupVisible,\r\n setPopUpVisible,\r\n breadCrumbs,\r\n widgetData: widgetDataRef.current,\r\n gridData,\r\n gridOptions,\r\n chartNotes,\r\n chartContentEnriched,\r\n drillToLevel,\r\n gridCellClick,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n };\r\n};\r\n\r\nexport default useGetChartData;\r\n","import { useEffect } from 'react';\r\n\r\nconst useClickOutside = (ref, clickOutside, buttonId?) => {\r\n useEffect(() => {\r\n function handleClickOutside(event) {\r\n if (ref.current) {\r\n if (event.target.id === buttonId) {\r\n return;\r\n }\r\n if (ref.current.contains) {\r\n if (!ref.current.contains(event.target)) {\r\n clickOutside();\r\n }\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [ref]);\r\n};\r\n\r\nexport default useClickOutside;\r\n","import React from 'react';\r\nimport { Popup } from '@progress/kendo-react-popup';\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\nimport { IContextMenyWidget } from '../../../types/IContextMenuWidget';\r\nimport { pinWidget } from '../../../../../common/services/http/homeService';\r\nimport { parseInt } from 'lodash';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nconst ContextMenuWidget: React.FC = ({\r\n offset,\r\n show,\r\n popupClass,\r\n className,\r\n animate,\r\n setGridView,\r\n gridView,\r\n excelExport,\r\n onSVGExportClick,\r\n onImageExportClick,\r\n onPDFExportClick,\r\n widget,\r\n selectedObject,\r\n }) => {\r\n const { t } = useTranslate();\r\n\r\n let { boardId, investorId } = useParams();\r\n\r\n const handlePinWidget = () => {\r\n const data = {\r\n contentType: 'analysisContent',\r\n widgetId: widget.id,\r\n objectId: selectedObject.objectId,\r\n objectPath: selectedObject.objectPath,\r\n nodes: []\r\n }\r\n pinWidget(parseInt(investorId), parseInt(boardId), data).then(() => {});\r\n }\r\n\r\n return (\r\n \r\n {gridView ? (\r\n <>\r\n
\r\n {t('CONTEXT_MENU.EXPORT_XLSX')}\r\n \r\n
\r\n {setGridView ? (\r\n
setGridView(!gridView)}>\r\n {t('CONTEXT_MENU.TOGGLE_VIEW')} \r\n
\r\n ) : null}\r\n \r\n ) : (\r\n <>\r\n
\r\n {t('CONTEXT_MENU.EXPORT_IMAGE')} \r\n
\r\n
\r\n {t('CONTEXT_MENU.EXPORT_SVG')}\r\n \r\n
\r\n
\r\n {t('CONTEXT_MENU.EXPORT_PDF')} \r\n
\r\n {setGridView ? (\r\n
setGridView(!gridView)}>\r\n {t('CONTEXT_MENU.TOGGLE_VIEW')} \r\n
\r\n ) : null}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ContextMenuWidget;\r\n","import React from 'react';\r\n\r\nimport { ICustomisationRibbon } from '../../../types/ICustomisationRibbon';\r\n\r\nimport Icon from '../../../../ui/icon/icon';\r\n\r\nconst CustomisationRibbon: React.FC = ({\r\n id,\r\n handleWidgetMove,\r\n widgets,\r\n changeNewIndex,\r\n changeOldIndex,\r\n handleWidgetChange,\r\n homePage,\r\n }) => {\r\n\r\n return (\r\n
\r\n {\r\n handleWidgetMove(id);\r\n const index = widgets.findIndex((widget) => {\r\n if (widget.id) {\r\n return widget.id === id;\r\n } else {\r\n return widget.widget.id === id;\r\n }\r\n });\r\n if (index > 0) {\r\n changeOldIndex(index);\r\n changeNewIndex(index - 1);\r\n } else {\r\n changeOldIndex(null);\r\n changeNewIndex(null);\r\n }\r\n }}\r\n />\r\n {\r\n handleWidgetMove(id);\r\n const index = widgets.findIndex((widget) => {\r\n if (widget.id) {\r\n return widget.id === id;\r\n } else {\r\n return widget.widget.id === id;\r\n }\r\n });\r\n if (index < widgets.length - 1) {\r\n changeOldIndex(index);\r\n changeNewIndex(index + 1);\r\n } else {\r\n changeOldIndex(null);\r\n changeNewIndex(null);\r\n }\r\n }}\r\n />\r\n {!homePage && {\r\n if (homePage) {\r\n handleWidgetChange(\r\n widgets.filter((widget) => widget.widget.id !== id),\r\n );\r\n } else {\r\n handleWidgetChange(\r\n widgets.map((widget) => {\r\n if (widget.id === id) {\r\n return { ...widget, visible: false };\r\n } else {\r\n return { ...widget };\r\n }\r\n }),\r\n );\r\n }\r\n }}\r\n />}\r\n
\r\n );\r\n};\r\n\r\nexport default CustomisationRibbon;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { pinWidget, unPinWidget, unPinWidgetFromBoard } from '../../../../../common/services/http/homeService';\r\n\r\nimport { IWidgetCommands } from '../../../types/IWidgetCommands';\r\n\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport { parseInt } from 'lodash';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../../redux/store';\r\nimport { SWITCH_MODAL } from '../../../../../redux/types';\r\n\r\nconst WidgetCommands: React.FC = ({\r\n type,\r\n setPopup,\r\n setPosition,\r\n expand,\r\n onClick,\r\n onCollapse,\r\n onExpand,\r\n popup,\r\n widget,\r\n selectedObject,\r\n homePage,\r\n handleUnpin,\r\n handleUnpinFromBoardCallback,\r\n handlePinCallback,\r\n unpinId,\r\n }) => {\r\n const [pinned, setPinned] = useState(false);\r\n\r\n const impersonate = useSelector((state: RootState) => state.impersonate.impersonate);\r\n const dispatch = useDispatch();\r\n\r\n let { boardId, investorId } = useParams();\r\n\r\n const handlePinWidget = () => {\r\n const data = {\r\n contentType: 'analysisContent',\r\n widgetId: widget.id,\r\n objectId: selectedObject.objectId,\r\n objectPath: selectedObject.objectPath,\r\n nodes: [],\r\n };\r\n pinWidget(parseInt(investorId), parseInt(boardId), data).then(() => {\r\n handlePinCallback({\r\n investorObjectId: parseInt(investorId),\r\n objectPath: selectedObject.objectPath,\r\n widgetId: widget.id\r\n })\r\n });\r\n setPinned(true);\r\n };\r\n\r\n const handleUnpinWidget = () => {\r\n unPinWidget(unpinId).then(() => {\r\n handleUnpin();\r\n });\r\n setPinned(false);\r\n };\r\n\r\n const handleUnpinFromBoard = () => {\r\n unPinWidgetFromBoard(parseInt(investorId), widget.id, selectedObject.objectPath).then(() => {\r\n handleUnpinFromBoardCallback({\r\n investorObjectId: parseInt(investorId),\r\n objectPath: selectedObject.objectPath,\r\n widgetId: widget.id\r\n });\r\n });\r\n setPinned(false);\r\n };\r\n\r\n const PinIcon = () => {\r\n if (homePage) {\r\n return dispatch({ type: SWITCH_MODAL }) : handleUnpinWidget}\r\n name={'fas fa-thumbtack'}\r\n className={'pointer export-icon hidden-mobile pinned-icon'} />;\r\n } else if (!pinned) {\r\n return dispatch({ type: SWITCH_MODAL }) : handlePinWidget}\r\n name={'fa-regular fa-thumbtack'}\r\n className={'pointer export-icon hidden-mobile'} />;\r\n } else {\r\n return dispatch({ type: SWITCH_MODAL }) : handleUnpinFromBoard}\r\n name={'fas fa-thumbtack'}\r\n className={'pointer export-icon hidden-mobile pinned-icon'} />;\r\n }\r\n };\r\n\r\n const isPinned = (pinnedArray) => {\r\n let objectMatch = false;\r\n let investorMatch = false;\r\n if (pinnedArray && pinnedArray.length !== 0) {\r\n pinnedArray.forEach((item) => {\r\n if (item.objectPath === selectedObject.objectPath) {\r\n objectMatch = true;\r\n }\r\n if (item.investorObjectId === parseInt(investorId)) {\r\n investorMatch = true;\r\n }\r\n });\r\n }\r\n return investorMatch && objectMatch;\r\n };\r\n\r\n useEffect(() => {\r\n isPinned(widget.pinned) ? setPinned(true) : setPinned(false);\r\n }, [selectedObject]);\r\n\r\n return (\r\n
\r\n \r\n {type === 'chart' && (\r\n {\r\n setPopup(!popup);\r\n setPosition({ left: e.pageX - 117, top: e.pageY + 10 });\r\n }}\r\n name={'fa-solid fa-angle-down'}\r\n className={'expand-compress pointer hidden-mobile'}\r\n />\r\n )}\r\n {(type === 'grid' || type === 'treelist') &&\r\n <>\r\n \r\n \r\n }\r\n {expand ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default WidgetCommands;","import React, { forwardRef, useEffect } from 'react';\r\n\r\nimport { INotes } from '../../../types/INotes';\r\n\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst Notes = forwardRef(({\r\n notes,\r\n name,\r\n currencyName,\r\n currencySymbol,\r\n notesShown,\r\n toggleNotes,\r\n currencySelection,\r\n handleCurrencyChange,\r\n selectedCurrency,\r\n selectedObject,\r\n homePage,\r\n localCurr,\r\n widget,\r\n investorId,\r\n type,\r\n }, ref) => {\r\n return (\r\n
\r\n {homePage ? {name} :

{name}

}\r\n {!currencySelection ?

{currencySymbol}{currencyName}

:\r\n \r\n }\r\n {type === 'summary' &&\r\n //@ts-ignore\r\n selectedCurrency.currency === '_' &&\r\n

{localCurr}

\r\n }\r\n {notes && notes.length > 0 && (\r\n
\r\n \r\n {notesShown && (\r\n
\r\n {notes.map((note, key) => (\r\n

\r\n {note.symbol} {note.note}\r\n

\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n});\r\n\r\nexport default Notes;\r\n","import React, { useRef, useState } from 'react';\r\nimport useClickOutside from '../../../../../common/hooks/useClickOutside';\r\n\r\nimport { IWidgetTitle } from '../../../types/IWidgetTitle';\r\nimport { Offset } from '@progress/kendo-react-popup';\r\n\r\nimport ContextMenuWidget from './contextMenuWidget';\r\nimport CustomisationRibbon from './customisationRibbon';\r\nimport WidgetCommands from './widgetCommands';\r\nimport Notes from './notes';\r\n\r\nimport './widgetTitle.scss';\r\n\r\nconst WidgetTitle: React.FC = ({\r\n name,\r\n type,\r\n currencySelection,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n onClick,\r\n expand,\r\n onCollapse,\r\n onExpand,\r\n notes,\r\n setGridView,\r\n gridView,\r\n localCurr,\r\n onImageExportClick,\r\n onPDFExportClick,\r\n onSVGExportClick,\r\n excelExport,\r\n id,\r\n customisation,\r\n widgets,\r\n handleWidgetChange,\r\n handleWidgetMove,\r\n changeOldIndex,\r\n changeNewIndex,\r\n widget,\r\n selectedObject,\r\n homePage,\r\n investorId,\r\n handleUnpin,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n unpinId,\r\n }) => {\r\n const [notesShown, setNotesShown] = useState(false);\r\n const [popup, setPopup] = useState(false);\r\n const [position, setPosition] = useState({ left: 0, top: 0 });\r\n\r\n const notesWrapperRef = useRef(null);\r\n const menuWrapperRef = useRef(null);\r\n\r\n const toggleNotes = () => {\r\n setNotesShown(!notesShown);\r\n };\r\n\r\n const clickOutsideHandlerNotes = () => {\r\n setNotesShown(false);\r\n };\r\n\r\n const clickOutsideHandlerMenu = () => {\r\n setPopup(false);\r\n };\r\n\r\n useClickOutside(notesWrapperRef, clickOutsideHandlerNotes, 'notes-widget-icon');\r\n useClickOutside(menuWrapperRef, clickOutsideHandlerMenu, 'series-click-button');\r\n\r\n return (\r\n <>\r\n
\r\n \r\n\r\n {customisation ? : null}\r\n\r\n \r\n
\r\n {type === 'chart' && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default WidgetTitle;\r\n","import React from 'react';\r\n\r\nconst GridCell = ({ dataItem, node, chartClick, measure, field }) => {\r\n return (\r\n \r\n {field && (\r\n
chartClick(e, dataItem, node, measure, field)}>\r\n {dataItem[field]}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GridCell;\r\n","const BrandingStore = {\r\n logo_size: 45,\r\n series_colors: [],\r\n};\r\n\r\nexport default BrandingStore;\r\n","import * as React from 'react';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\nimport { useState, useMemo, useRef, useEffect } from 'react';\r\nimport { formatNumber } from '@progress/kendo-intl';\r\nimport { exportImage } from '@progress/kendo-drawing';\r\nimport { saveAs } from '@progress/kendo-file-saver';\r\nimport { exportPDF } from '@progress/kendo-drawing';\r\nimport { exportSVG } from '@progress/kendo-drawing';\r\nimport { orderBy, SortDescriptor } from '@progress/kendo-data-query';\r\nimport 'hammerjs';\r\nimport { useDispatch } from 'react-redux';\r\nimport useGetChartData from './useGetChartData';\r\nimport useClickOutside from '../../../../../common/hooks/useClickOutside';\r\nimport { SWITCH_CASH_FLOW_MODAL } from '../../../../../redux/types';\r\n\r\nimport { IWidget } from '../../../types/IWidget';\r\n\r\nimport {\r\n Chart,\r\n ChartSeries,\r\n ChartSeriesItem,\r\n ChartCategoryAxis,\r\n ChartCategoryAxisItem,\r\n ChartLegend,\r\n ChartValueAxis,\r\n ChartValueAxisItem,\r\n ChartSeriesItemTooltip,\r\n ChartTooltip,\r\n ChartSeriesLabels,\r\n exportVisual,\r\n} from '@progress/kendo-react-charts';\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid';\r\nimport { ExcelExport, ExcelExportColumn, ExcelExportColumnGroup } from '@progress/kendo-react-excel-export';\r\nimport { Offset, Popup } from '@progress/kendo-react-popup';\r\nimport WidgetTitle from '../widgetTitle/widgetTitle';\r\nimport GridCell from './gridCell';\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport OutletLoader from '../../../../ui/loaders/outletLoader/outletLoader';\r\n\r\nimport BrandingStore from '../../../../../common/services/config/brandingStore';\r\n\r\nimport './charts.scss';\r\nimport { Rect } from '@progress/kendo-drawing/geometry';\r\n\r\nconst initialSort: Array = [{ field: 'periodName', dir: 'asc' }];\r\n\r\nconst ChartWidget: React.FC = ({\r\n setup,\r\n widget,\r\n measures,\r\n scenarios,\r\n periods,\r\n onCollapse,\r\n onExpand,\r\n expand,\r\n notes,\r\n boardId,\r\n id,\r\n handleWidgetChange,\r\n widgets,\r\n changeOldIndex,\r\n handleWidgetMove,\r\n changeNewIndex,\r\n customisation,\r\n selectedObject,\r\n boardSelectedCurrency,\r\n selectedPeriod,\r\n investorObjectId,\r\n homePage,\r\n handleUnpin,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n unpinId,\r\n }) => {\r\n const [position, setPosition] = useState({ left: 0, top: 0 });\r\n const [gridView, setGridView] = useState(false);\r\n const [sort, setSort] = useState(initialSort);\r\n const [isMobile, setIsMobile] = useState(false);\r\n\r\n const mm = (val) => val * 2.8347;\r\n const PAGE_RECT = new Rect([0, 0], [mm(297), mm(210)]);\r\n\r\n const dispatch = useDispatch();\r\n const { t } = useTranslate();\r\n\r\n const chart = useRef(null);\r\n const popupWrapperRef = useRef(null);\r\n const exportRef = useRef(null);\r\n const grid = useRef(null);\r\n\r\n const {\r\n loading,\r\n chartData,\r\n series,\r\n categories,\r\n valueAxis,\r\n seriesClick,\r\n cashFlow,\r\n drillDownData,\r\n drillDown,\r\n popupVisible,\r\n setPopUpVisible,\r\n breadCrumbs,\r\n widgetData,\r\n gridData,\r\n gridOptions,\r\n chartNotes,\r\n drillToLevel,\r\n gridCellClick,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n } = useGetChartData(setup, periods, measures, widget, notes, scenarios, selectedObject, selectedPeriod, boardSelectedCurrency, investorObjectId);\r\n\r\n const onImageExportClick = () => {\r\n const chartVisual = exportVisual(chart.current);\r\n\r\n if (chartVisual) {\r\n exportImage(chartVisual).then((dataURI) => saveAs(dataURI, widget.name + '.png'));\r\n }\r\n };\r\n\r\n const onPDFExportClick = () => {\r\n const chartVisual = exportVisual(chart.current, {\r\n width: PAGE_RECT.size.width,\r\n });\r\n\r\n if (chartVisual) {\r\n exportPDF(chartVisual, {\r\n landscape: true,\r\n }).then((dataURI) => saveAs(dataURI, widget.name + '.pdf'));\r\n }\r\n };\r\n\r\n const onSVGExportClick = () => {\r\n const chartVisual = exportVisual(chart.current);\r\n\r\n if (chartVisual) {\r\n exportSVG(chartVisual).then((dataURI) => saveAs(dataURI, widget.name + '.svg'));\r\n }\r\n };\r\n\r\n const excelExport = () => {\r\n if (exportRef.current !== null) {\r\n let exportColumns = [];\r\n grid.current.columns.forEach((column) => {\r\n if (column.children && column.children.length > 0) {\r\n column.children.forEach((child) => {\r\n exportColumns.push({\r\n field: child.field,\r\n title: `${child.title} ${column.title}`,\r\n });\r\n });\r\n } else {\r\n exportColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n });\r\n }\r\n });\r\n exportRef.current.save(orderBy(gridData, sort), exportColumns);\r\n }\r\n };\r\n\r\n const createCFCell = (columnName, node, measure, dataItem, field) => {\r\n if (field !== undefined) {\r\n return (props) => ;\r\n }\r\n };\r\n\r\n const clickOutsideHandler = () => {\r\n setPopUpVisible(false);\r\n };\r\n\r\n const serClickTest = (e) => {\r\n setPosition({ left: e.nativeEvent.x.location, top: e.nativeEvent.y.location });\r\n seriesClick(e);\r\n setPopUpVisible(true);\r\n };\r\n\r\n const chartClick = (e, dataItem, node, measure, field) => {\r\n setPosition({ left: e.pageX, top: e.pageY });\r\n gridCellClick(dataItem, field, measure.id, node.id);\r\n setPopUpVisible(true);\r\n };\r\n\r\n useClickOutside(popupWrapperRef, clickOutsideHandler, 'series-click-button');\r\n\r\n const ChartMemo = useMemo(\r\n () => (\r\n <>\r\n {!loading && (\r\n \r\n {series[0] && series[0].tooltip.visible && }\r\n {series[0] && }\r\n\r\n {categories && (\r\n \r\n {valueAxis.length === 1 &&\r\n }\r\n\r\n \r\n \r\n )}\r\n \r\n {valueAxis.map((item, idx) => (\r\n 1 ? -100000000000 : [0, -100000000000000]}\r\n labels={item.labels}\r\n title={item.title}\r\n />\r\n ))}\r\n \r\n\r\n \r\n {series.map((item, idx) => {\r\n return item.stack ? (\r\n \r\n \r\n {item.labels.visible ? (\r\n \r\n ) : null}\r\n \r\n ) : (\r\n \r\n \r\n {item.labels.visible ? (\r\n \r\n ) : null}\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n ),\r\n [series, chartData, loading, expand],\r\n );\r\n\r\n useEffect(() => {\r\n let isMobile = window.innerWidth;\r\n if (isMobile < 960) {\r\n setIsMobile(true);\r\n }\r\n }, []);\r\n\r\n const handleSortChange = (e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n };\r\n\r\n // @ts-ignore\r\n const GridMemo = useMemo(\r\n () => (\r\n
\r\n {!loading && (\r\n \r\n {\r\n // @ts-ignore\r\n gridOptions.columns && gridOptions.columns.map((item, key) => {\r\n if (item.field === 'periodName')\r\n return ;\r\n if (item.columns) {\r\n return \r\n {\r\n item.columns.map((child) => )\r\n }\r\n ;\r\n }\r\n return ;\r\n })\r\n }\r\n\r\n \r\n {\r\n // @ts-ignore\r\n gridOptions.columns &&\r\n // @ts-ignore\r\n gridOptions.columns.map((item, idx) => {\r\n return item.field === 'periodName' ? (\r\n \r\n ) : item.columns ? (\r\n \r\n {\r\n // @ts-ignore\r\n item.columns &&\r\n item.columns.map((nestedItem, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n ) : (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n )}\r\n
\r\n ),\r\n [series, chartData, loading, gridData, gridOptions],\r\n );\r\n\r\n return (\r\n <>\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n
\r\n {breadCrumbs.length > 1 &&\r\n breadCrumbs.map((x) => (\r\n \r\n ))}\r\n
\r\n
1 ? 'breadcrumbs-on' : ''}`}>{!gridView ? ChartMemo : GridMemo}
\r\n
\r\n \r\n
setPopUpVisible(false)}>\r\n \r\n
\r\n\r\n {cashFlow && (\r\n <>\r\n
{cashFlow.valueInfo.name}
\r\n
{cashFlow.period.name}
\r\n
\r\n {cashFlow.valueInfo.measure.name}:{' '}\r\n {formatNumber(\r\n cashFlow.value.amount ? cashFlow.value.amount : cashFlow.valueInfo.amount,\r\n cashFlow.valueInfo.measure.isPercent ? `p${cashFlow.valueInfo.scale}` : `n${cashFlow.valueInfo.scale}`,\r\n )}\r\n
\r\n\r\n
\r\n {cashFlow.viewCashflows && (\r\n \r\n dispatch({\r\n type: SWITCH_CASH_FLOW_MODAL,\r\n payload: {\r\n dataItem: {\r\n name: cashFlow.valueInfo.name,\r\n currency: cashFlow.currency,\r\n },\r\n cashFlowInfo: cashFlow,\r\n investorObjectId: investorObjectId,\r\n columnName: cashFlow.valueInfo.measure.name,\r\n value: formatNumber(\r\n cashFlow.value.amount ? cashFlow.value.amount : cashFlow.valueInfo.amount,\r\n cashFlow.valueInfo.measure.isPercent ? `p${cashFlow.valueInfo.scale}` : `n${cashFlow.valueInfo.scale}`,\r\n ),\r\n boardId: boardId,\r\n selectedCurrency: selectedCurrency,\r\n },\r\n })\r\n }>\r\n View cash flows\r\n \r\n
\r\n )}\r\n {drillDownData &&\r\n drillDownData.map((drillDownNode, idx) => (\r\n
drillDown(drillDownNode.id, widgetData)} key={idx}>\r\n {drillDownNode.name || t('CHART_WIDGET.DRILL_DOWN')}\r\n \r\n
\r\n ))}\r\n \r\n )}\r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ChartWidget;\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../../redux/store';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport { IGridPreparedData } from '../../../types/IGridPreparedData';\r\nimport { ISetup } from '../../../types/ISetup';\r\nimport { IGridDefinition } from '../../../types/IGridDefinition';\r\nimport { ICurrency } from '../../../types/ICurrency';\r\nimport { IWidget } from '../../../../../common/services/http/types/IWidget';\r\nimport { AnalysisContentWidgetModel } from '../../../../../models/AnalysisContentWidgetModel';\r\nimport { IMeasure } from '../../../types/IMeasure';\r\nimport { INote, IWidgetCombinedData } from '../../../../../common/services/http/analysisContentService';\r\nimport { IStaticProperty } from '../../../../../models/types/IStaticProperty';\r\nimport { AnalysisContentWidgetDataModel } from '../../../../../models/AnalysisContentWidgetDataModel';\r\n\r\nconst useGetGridData = (setup: ISetup, widget: AnalysisContentWidgetModel | IWidget, measures: IMeasure[], notes: INote[], staticProperties: IStaticProperty[], scenarios, selectedObject, selectedPeriod, boardSelectedCurrency, investorObjectId) => {\r\n const [selectedGrid, setSelectedGrid] = useState(0);\r\n const [sectionsForGrid, setSectionsForGrid] = useState([]);\r\n const [gridContentEnriched, setGridContentEnriched] = useState([]);\r\n const [selectedCurrency, setSelectedCurrency] = useState([]);\r\n const [preparedData, setPreparedData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [gridNotes, setGridNotes] = useState([]);\r\n const [currencies, setCurrencies] = useState([]);\r\n const [measureHash, setMeasureHash] = useState({});\r\n const [staticPropertyHash, setStaticPropertyHash] = useState({});\r\n const [objectValueMap, setObjectValueMap] = useState({});\r\n const intl = useInternationalization();\r\n const widgetDataRef = useRef(null);\r\n\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n const { investorId } = useParams();\r\n\r\n const _measureHash = {};\r\n const _propertyHash = {};\r\n\r\n let _objectValueMap = {};\r\n let tempGridNotesArray: INote[] = [];\r\n\r\n const extractGridSectionsFromSetup = (): void => {\r\n let gridSectionArray: string[] = [];\r\n setup.definitions.forEach((definition: IGridDefinition) => {\r\n gridSectionArray.push(definition.name);\r\n });\r\n setSectionsForGrid(gridSectionArray);\r\n };\r\n\r\n const generateColumnsForGridSection = (): void => {\r\n if (setup.singlePeriod) {\r\n setGridContentEnriched(setup.definitions[selectedGrid].columns);\r\n }\r\n else {\r\n let columns = [];\r\n let totalColumns = [];\r\n\r\n widgetDataRef.current.nodes.forEach((node) => {\r\n setup.definitions[selectedGrid].columns.forEach((column) => {\r\n let measure = measures.find((item) => item.id === column.measureId);\r\n if (measure) {\r\n columns.push({ ...column, nodeId: node.id, nodeName: node.name, format: measure.isPercent ? 'p' : 'n' });\r\n\r\n if (column.total && !totalColumns.find((item) => item.measureId === column.measureId))\r\n totalColumns.push({ ...column, isTotal: true, format: measure.isPercent ? 'p' : 'n' });\r\n }\r\n });\r\n });\r\n\r\n totalColumns.forEach((totalColumn) => {\r\n columns.push(totalColumn);\r\n });\r\n setGridContentEnriched(columns);\r\n }\r\n };\r\n\r\n const filterNotesForGrid = (notes: INote[]): void => {\r\n let currentColumns = setup.definitions[selectedGrid].columns;\r\n if (notes) {\r\n for (let i = 0; i < notes.length; i++) {\r\n for (let j = 0; j < notes[i].measures.length; j++) {\r\n let tempNoteMeasureId = notes[i].measures[j].measureId;\r\n currentColumns.map((el) => {\r\n if (el.measureId === tempNoteMeasureId && !tempGridNotesArray.includes(notes[i])) {\r\n tempGridNotesArray.push(notes[i]);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n setGridNotes(tempGridNotesArray);\r\n if (notes && setup.singlePeriod)\r\n extractNotesForGridItems();\r\n };\r\n\r\n const extractNotesForGridItems = (): any => {\r\n let currentColumns = setup.definitions[selectedGrid].columns;\r\n let copiedGridContent = currentColumns.map((object) => ({ ...object }));\r\n for (let i = 0; i < currentColumns.length; i++) {\r\n let tempItemNotes: INote[] = [];\r\n for (let j = 0; j < notes.length; j++) {\r\n let tempNoteMeasures = notes[j].measures.map((el) => el.measureId);\r\n if (tempNoteMeasures.includes(currentColumns[i].measureId)) {\r\n tempItemNotes.push(notes[j]);\r\n copiedGridContent[i].hasNotes = true;\r\n copiedGridContent[i].notes = tempItemNotes;\r\n setGridContentEnriched(copiedGridContent);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const _createMeasureHash = (): void => {\r\n if (measures) {\r\n for (let i = 0; i < measures.length; i++) {\r\n let measure = measures[i];\r\n _measureHash[measure.id] = measure;\r\n }\r\n }\r\n if (staticProperties) {\r\n staticProperties.forEach((templateProp) => {\r\n _propertyHash[templateProp.id] = templateProp;\r\n });\r\n }\r\n setMeasureHash(_measureHash);\r\n setStaticPropertyHash(_propertyHash);\r\n };\r\n\r\n const prepareData = (fetchedData: IWidgetCombinedData, nodes: any): IGridPreparedData[] => {\r\n let preparedData: IGridPreparedData[] = [];\r\n _objectValueMap = {};\r\n\r\n fetchedData.measureValues.forEach((row) => {\r\n let measure = _measureHash[row.measureId];\r\n if (measure) {\r\n let node = nodes.find(function(item) {\r\n return item.id === row.nodeId;\r\n });\r\n if (node) {\r\n let field = fieldNameFor('measure', measure.id);\r\n let objectValue = prepRow(preparedData, node, row, field, 'amount');\r\n if (objectValue) {\r\n objectValue.row[field] = objectValue.row[field] === null ? 'N/A' : intl.toString(objectValue.row[field], (measure.isPercent ? 'p' : 'n') + measure.scale);\r\n _createDataValueInfo(objectValue, row, node, measure);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (fetchedData.staticValues) {\r\n fetchedData.staticValues.forEach(function(staticRow) {\r\n let property = _propertyHash[staticRow.templatePropertyId];\r\n if (property) {\r\n let node = nodes.find(function(item) {\r\n return item.id === staticRow.nodeId;\r\n });\r\n if (node) {\r\n let field = fieldNameFor('property', property.id);\r\n prepRow(preparedData, node, staticRow, field, 'rawValue');\r\n }\r\n }\r\n });\r\n }\r\n setObjectValueMap(_objectValueMap);\r\n return preparedData;\r\n };\r\n\r\n const prepareDataHistorical = (fetchedData: IWidgetCombinedData, nodes: any) : IGridPreparedData[] => {\r\n let preparedData : IGridPreparedData[] = [];\r\n _objectValueMap = {};\r\n\r\n fetchedData.measureValues.forEach(function (row) {\r\n let measure = _measureHash[row.measureId];\r\n if (measure) {\r\n let node = nodes.find(function (item) { return item.id === row.nodeId; });\r\n if (node) {\r\n let field = fieldNameFor('measure', measure.id, node.id);\r\n let objectValue = prepRowHistorical(preparedData, row, field, 'amount');\r\n\r\n if (objectValue) {\r\n let amount = objectValue.row[field];\r\n objectValue.row[field] = amount === null ? 'N/A' : intl.toString(amount, (measure.isPercent ? 'p' : 'n') + measure.scale);\r\n let key = measure.id + '_' + node.id;\r\n objectValue.map[key] = {\r\n nodeId: node.id,\r\n scenarioId: node.scenarioId,\r\n valueId: row.id,\r\n periodId: row.periodId\r\n };\r\n\r\n let totalField = fieldNameFor('measure', measure.id);\r\n let totalAmt = objectValue.row[totalField];\r\n objectValue.row[totalField] = (totalAmt || 0) + (amount || 0);\r\n }\r\n }\r\n }\r\n });\r\n\r\n setObjectValueMap(_objectValueMap);\r\n return preparedData;\r\n };\r\n\r\n const prepRowHistorical = (preparedData, row, field, valueField) => {\r\n let objectValue = _objectValueMap[row['periodId']];\r\n if (objectValue) {\r\n objectValue.row[field] = row[valueField];\r\n } else {\r\n objectValue = {\r\n row: { objectId: row.periodId, name: row.periodName, startDate: row.startDate, endDate: row.endDate },\r\n map: {}\r\n };\r\n objectValue.row[field] = row[valueField];\r\n\r\n _objectValueMap[row['periodId']] = objectValue;\r\n preparedData.push(objectValue.row);\r\n }\r\n return objectValue;\r\n };\r\n\r\n const prepRow = (preparedData, node, row, field, valueField) => {\r\n let objectValue = _objectValueMap[row['objectId']];\r\n if (objectValue) {\r\n objectValue.row[field] = row[valueField];\r\n } else {\r\n objectValue = {\r\n row: {\r\n objectId: row.objectId,\r\n name: node.name,\r\n nodeId: row.nodeId,\r\n parentNodeId: row.parentNodeId,\r\n currency: node.currency,\r\n },\r\n map: {},\r\n };\r\n objectValue.row[field] = row[valueField];\r\n\r\n _objectValueMap[row['objectId']] = objectValue;\r\n preparedData.push(objectValue.row);\r\n }\r\n return objectValue;\r\n };\r\n\r\n const fieldNameFor = (type: string, id: number, nodeId?: number): string => {\r\n return type + '_' + id + (nodeId ? '_' + nodeId : '');\r\n };\r\n\r\n const _createDataValueInfo = (objectValue: any, dataRow: any, node: any, measure: IMeasure): void => {\r\n objectValue.map[measure.id] = {\r\n nodeId: node.id,\r\n scenarioId: node.scenarioId,\r\n valueId: dataRow.id,\r\n };\r\n };\r\n\r\n const exportGrid = useRef(null);\r\n\r\n const gridExport = (): void => {\r\n if (exportGrid.current !== null) {\r\n exportGrid.current.save();\r\n }\r\n };\r\n\r\n const selectGridSection = (id: number): void => {\r\n setSelectedGrid(id);\r\n };\r\n\r\n const measuresForFetch = () => {\r\n let measFetch = [];\r\n let hash = {};\r\n widget.setup.definitions.forEach(function(definition) {\r\n for (let i = 0; i < definition.columns.length; i++) {\r\n let measureId = definition.columns[i].measureId;\r\n if (!measureId || hash[measureId]) continue;\r\n measFetch.push({ measureId: measureId });\r\n hash[measureId] = true;\r\n }\r\n });\r\n return measFetch;\r\n };\r\n\r\n const propertiesForFetch = () => {\r\n let properties = [];\r\n let hash = {};\r\n setup.definitions.forEach(function(definition) {\r\n for (let i = 0; i < definition.columns.length; i++) {\r\n let templatePropertyId = definition.columns[i].templatePropertyId;\r\n if (!templatePropertyId || hash[templatePropertyId]) continue;\r\n properties.push({ templatePropertyId: templatePropertyId });\r\n hash[templatePropertyId] = true;\r\n }\r\n });\r\n return properties;\r\n };\r\n\r\n const handleCurrencyChange = (e) => {\r\n setSelectedCurrency(e.value);\r\n };\r\n\r\n const handleFindSelection = (currency, arrayToFind) => {\r\n if (arrayToFind.find((curr) => curr.currency === currency.currency)) {\r\n return currency;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n widgetDataRef.current = new AnalysisContentWidgetDataModel(widget, measuresForFetch(), investorId ? parseInt(investorId) : parseInt(investorObjectId), false, propertiesForFetch());\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n }, [investor]);\r\n\r\n useEffect(() => {\r\n filterNotesForGrid(notes);\r\n }, [notes]);\r\n\r\n useEffect(() => {\r\n if (boardSelectedCurrency) {\r\n let currency = handleFindSelection(boardSelectedCurrency, widgetDataRef.current.generateCurrencies(scenarios));\r\n if (currency) {\r\n setSelectedCurrency(currency);\r\n }\r\n }\r\n }, [boardSelectedCurrency]);\r\n\r\n useEffect(() => {\r\n //@ts-ignore\r\n if (selectedCurrency.currency) {\r\n extractGridSectionsFromSetup();\r\n generateColumnsForGridSection();\r\n _createMeasureHash();\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setCurrencies(widgetDataRef.current.generateCurrencies(scenarios));\r\n //@ts-ignore\r\n widgetDataRef.current.fetchCombinedData(selectedPeriod, selectedCurrency.currency).then((res: IWidgetCombinedData) => {\r\n setPreparedData(setup.singlePeriod ?\r\n prepareData(res, widgetDataRef.current.nodes) :\r\n prepareDataHistorical(res, widgetDataRef.current.nodes));\r\n\r\n setLoading(false);\r\n });\r\n }\r\n }, [selectedObject, selectedGrid, selectedPeriod, selectedCurrency]);\r\n\r\n return {\r\n sectionsForGrid,\r\n gridContentEnriched,\r\n preparedData,\r\n loading,\r\n gridNotes,\r\n measureHash,\r\n staticPropertyHash,\r\n objectValueMap,\r\n gridExport,\r\n exportGrid,\r\n selectGridSection,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n };\r\n};\r\n\r\nexport default useGetGridData;\r\n","import React, { useState } from 'react';\r\n\r\nimport './switchButtons.scss';\r\n\r\ninterface ISwitchButtons {\r\n buttons: string[];\r\n onClick: (id: number) => void;\r\n}\r\n\r\nconst SwitchButtons:React.FC = ({buttons, onClick}) => {\r\n const [btnId, setBtnId] = useState(0);\r\n return (\r\n buttons.length > 1 &&
\r\n {buttons.map((button, id) => {\r\n return
{\r\n setBtnId(id);\r\n onClick(id);\r\n }} className={`switch-btn ${id === btnId && 'active' }`}>{button}
\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default SwitchButtons;","import React from 'react';\r\nimport { SWITCH_CASH_FLOW_MODAL } from '../../../../../../../redux/types';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport './cashflowCell.scss';\r\n\r\nconst CashflowCell = (props) => {\r\n const dispatch = useDispatch();\r\n\r\n const openCashFlowDialog = () => {\r\n let cashFlowInfo = cashflowDialogInfo(props.dataItem, props.field);\r\n dispatch({\r\n type: SWITCH_CASH_FLOW_MODAL,\r\n payload: {\r\n dataItem: props.dataItem,\r\n cashFlowInfo: cashFlowInfo,\r\n investorObjectId: props.investorObjectId,\r\n columnName: props.columnName,\r\n value: props.dataItem[props.field],\r\n boardId: props.boardId,\r\n selectedCurrency: props.selectedCurrency\r\n },\r\n });\r\n };\r\n\r\n const cashflowDialogInfo = (row: any, fieldName: string): any => {\r\n let idAndType = idAndTypeFromField(fieldName);\r\n if (!idAndType) return;\r\n\r\n let measure = props.hash[idAndType.id];\r\n if (!measure) return;\r\n\r\n let objectVal = props.objectValueMap[row[props.treelist ? 'nodeId' : 'objectId']];\r\n\r\n let key = props.singlePeriod ? measure.id.toString() : `${measure.id}_${idAndType.nodeId}`;\r\n\r\n return {\r\n nodeId: objectVal.map[key].nodeId,\r\n scenarioId: objectVal.map[key].scenarioId,\r\n valueId: objectVal.map[key].valueId,\r\n valueInfo: {\r\n name: row.name,\r\n measure: measure,\r\n amount: row[fieldName] || 0,\r\n },\r\n };\r\n };\r\n\r\n const idAndTypeFromField = (fieldName: string): any => {\r\n let split = fieldName.split('_');\r\n if (split.length < 2)\r\n return null;\r\n return { id: parseInt(split[1]), type: split[0], nodeId: split.length === 3 ? split[2] : null };\r\n };\r\n\r\n return (\r\n \r\n
\r\n {props.dataItem[props.field]}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CashflowCell;\r\n","import React from 'react';\r\n\r\nimport './gridFooterCell.scss';\r\n\r\nconst GridFooterCell = (props) => {\r\n let sum = 0;\r\n props.gridData.map((row) => {\r\n let tempValue = row[props.field] ? row[props.field].replace(/,/g, '') : 0;\r\n sum += 1 * tempValue;\r\n });\r\n\r\n return (\r\n \r\n {props.includeTotalCount ? (\r\n
\r\n {sum.toLocaleString()}\r\n
\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default GridFooterCell;\r\n","import React from 'react';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\n\r\nconst StaticPropertyCell = ({ staticProperty, dataItem, field }) => {\r\n const intl = useInternationalization();\r\n\r\n let formatValue = dataItem[field];\r\n let className = '';\r\n\r\n if (formatValue && staticProperty.dataType === 'date') {\r\n formatValue = intl.toString(new Date(formatValue), 'd');\r\n className = 'alignment-right';\r\n }\r\n\r\n if (formatValue && (staticProperty.dataType === 'number' || staticProperty.dataType === 'percent')) {\r\n let format = staticProperty.dataType === 'percent' ? 'p' : 'n';\r\n formatValue = intl.toString(formatValue, `${format}${staticProperty.scale}`);\r\n className = 'alignment-right';\r\n }\r\n\r\n return (\r\n \r\n
{formatValue}
\r\n \r\n );\r\n}\r\n\r\nexport default StaticPropertyCell;","import React, { useEffect, useRef, useState } from 'react';\r\nimport { orderBy, SortDescriptor } from '@progress/kendo-data-query';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\nimport useGetGridData from './useGetGridData';\r\n\r\nimport { IWidget } from '../../../types/IWidget';\r\n\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport SwitchButtons from '../../../../ui/button/switchButtons/switchButtons';\r\nimport WidgetTitle from '../widgetTitle/widgetTitle';\r\nimport CashflowCell from '../cashflow/cells/cashflowCell/cashflowCell';\r\nimport TableLoading from '../../../../ui/loaders/tableLoader/tableLoading';\r\nimport GridFooterCell from './cell/gridFooterCell/gridFooterCell';\r\nimport TextCell from '../../../../ui/table/cells/textCell/textCell';\r\nimport StaticPropertyCell from './cell/staticPropertyCell/staticPropertyCell';\r\nimport OutletLoader from '../../../../ui/loaders/outletLoader/outletLoader';\r\n\r\nimport './gridWidget.scss';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\n\r\nconst GridWidget: React.FC = ({\r\n setup,\r\n widget,\r\n measures,\r\n onExpand,\r\n onCollapse,\r\n expand,\r\n notes,\r\n scenarios,\r\n boardId,\r\n id,\r\n staticProperties,\r\n handleWidgetMove,\r\n handleWidgetChange,\r\n changeNewIndex,\r\n widgets,\r\n changeOldIndex,\r\n customisation,\r\n selectedPeriod,\r\n selectedObject,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n homePage,\r\n handleUnpin,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n unpinId,\r\n }) => {\r\n const [sort, setSort] = useState([{ field: 'name', dir: 'asc' }]);\r\n const [isMobile, setIsMobile] = useState(false);\r\n\r\n const { t } = useTranslate();\r\n const tableRef = useRef(null);\r\n const intl = useInternationalization();\r\n\r\n const {\r\n sectionsForGrid,\r\n gridContentEnriched,\r\n preparedData,\r\n loading,\r\n gridNotes,\r\n measureHash,\r\n staticPropertyHash,\r\n objectValueMap,\r\n gridExport,\r\n exportGrid,\r\n selectGridSection,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n } = useGetGridData(setup, widget, measures, notes, staticProperties, scenarios, selectedObject, selectedPeriod, boardSelectedCurrency, investorObjectId);\r\n\r\n const createCFCellGrid = (columnName) => {\r\n return (props) => ;\r\n };\r\n\r\n const createFooterCellGrid = (gridData, name, totalCount) => {\r\n if (totalCount)\r\n return (props) => ;\r\n };\r\n\r\n const createStaticPropertyCell = (column) => {\r\n return (props) => ;\r\n };\r\n\r\n const createTextCellGrid = () => {\r\n return (props) => ;\r\n };\r\n\r\n const checkIfLocalIsSelected = (currency) => {\r\n return currency.currency === '_';\r\n };\r\n\r\n const numberCell = (column) => {\r\n return (props) => (\r\n \r\n {intl.toString(props.dataItem[props.field], `${column.format}${column.scale}`)}\r\n \r\n )\r\n };\r\n\r\n useEffect(() => {\r\n let isMobile = window.innerWidth;\r\n if (isMobile < 960) {\r\n setIsMobile(true);\r\n }\r\n }, []);\r\n\r\n return loading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n\r\n
\r\n \r\n
\r\n {!setup.singlePeriod &&\r\n \r\n {\r\n setSort(sortEvent.sort);\r\n }}>\r\n \r\n {gridContentEnriched.map((column, key) => {\r\n if (column.isTotal)\r\n return (\r\n \r\n \r\n \r\n )\r\n return (\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n }\r\n {setup.singlePeriod &&\r\n \r\n {\r\n setSort(sortEvent.sort);\r\n }}>\r\n \r\n {checkIfLocalIsSelected(selectedCurrency) &&\r\n }\r\n {gridContentEnriched.map((column, key) => {\r\n if (column.type === 'property') {\r\n return (\r\n \r\n );\r\n }\r\n return column.viewCashflows ? (\r\n \r\n ) : (\r\n \r\n );\r\n })}\r\n \r\n\r\n }\r\n
\r\n {loading && }\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default GridWidget;\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { RootState } from '../../../../../redux/store';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\nimport { SWITCH_CASH_FLOW_MODAL } from '../../../../../redux/types';\r\n\r\nimport { INote, IWidgetCombinedData } from '../../../../../common/services/http/analysisContentService';\r\nimport { ISetup } from '../../../types/ISetup';\r\nimport { ISummaryDefinition } from '../../../types/ISummaryDefinition';\r\nimport { SummaryValueItem } from '../../../types/ISummaryValueItem';\r\nimport { ICurrency } from '../../../types/ICurrency';\r\nimport { IWidget } from '../../../../../common/services/http/types/IWidget';\r\nimport { AnalysisContentWidgetModel } from '../../../../../models/AnalysisContentWidgetModel';\r\nimport { IMeasure } from '../../../types/IMeasure';\r\nimport { IStaticProperty } from '../../../../../models/types/IStaticProperty';\r\nimport { AnalysisContentWidgetDataModel } from '../../../../../models/AnalysisContentWidgetDataModel';\r\n\r\nconst useGetSummaryData = (\r\n setup: ISetup,\r\n widget: AnalysisContentWidgetModel | IWidget,\r\n measures: IMeasure[],\r\n notes: INote[],\r\n boardId,\r\n staticProperties: IStaticProperty[],\r\n scenarios,\r\n selectedObject,\r\n selectedPeriod,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n) => {\r\n const [summaryContent, setSummaryContent] = useState([]);\r\n const [summaryContentEnriched, setSummaryContentEnriched] = useState([]);\r\n const [values, setValues] = useState(null);\r\n const [selectedCurrency, setSelectedCurrency] = useState([]);\r\n const [summaryNotes, setSummaryNotes] = useState([]);\r\n const [notesShown, setNotesShown] = useState({ showNote: '' });\r\n const [currencies, setCurrencies] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [localCurr, setLocalCurr] = useState('');\r\n\r\n const widgetDataRef = useRef(null);\r\n const intl = useInternationalization();\r\n const dispatch = useDispatch();\r\n\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n const { investorId } = useParams();\r\n\r\n const filterNotesForSummary = (notes: INote[]): void => {\r\n let tempSummaryNotes = [];\r\n if (notes) {\r\n for (let i = 0; i < notes.length; i++) {\r\n for (let j = 0; j < notes[i].measures.length; j++) {\r\n let tempNoteMeasureId = notes[i].measures[j].measureId;\r\n summaryContent.map((el) => {\r\n if (el.measureId === tempNoteMeasureId && !tempSummaryNotes.includes(notes[i])) {\r\n tempSummaryNotes.push(notes[i]);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n setSummaryNotes(tempSummaryNotes);\r\n if (notes) extractNotesForSummaryItems();\r\n };\r\n\r\n const extractNotesForSummaryItems = (): void => {\r\n let copiedSummaryContent = summaryContent.map((object) => ({ ...object }));\r\n for (let i = 0; i < summaryContent.length; i++) {\r\n let tempItemNotes = [];\r\n for (let j = 0; j < notes.length; j++) {\r\n let tempNoteMeasures = notes[j].measures.map((el) => el.measureId);\r\n if (tempNoteMeasures.includes(summaryContent[i].measureId)) {\r\n tempItemNotes.push(notes[j]);\r\n copiedSummaryContent[i].hasNotes = true;\r\n copiedSummaryContent[i].notes = tempItemNotes;\r\n setSummaryContentEnriched(copiedSummaryContent);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const initializeItems = (data: IWidgetCombinedData): SummaryValueItem[] => {\r\n const values: SummaryValueItem[] = [];\r\n\r\n for (let i = 0; i < setup.definition.length; i++) {\r\n let def = setup.definition[i];\r\n if (def.measureId) {\r\n let measureId = def.measureId;\r\n let measure = _findMeasure(measureId);\r\n let val = data.measureValues.find((item) => item.measureId === measureId);\r\n let amount = val ? val.amount / def.amountsIn : 0;\r\n values.push({\r\n name: def.name,\r\n scale: def.scale,\r\n isPercent: measure && measure.isPercent,\r\n amount: amount,\r\n formatAmount: measure && intl.toString(amount, (measure.isPercent ? 'p' : 'n') + def.scale),\r\n measureId: measureId,\r\n measure: measure,\r\n templatePropertyId: null,\r\n viewCashflows: def.viewCashflows,\r\n valueId: val ? val.id : 0,\r\n scenarioId: val ? val.scenarioId : 0,\r\n nodeId: val ? val.nodeId : 0,\r\n });\r\n }\r\n if (def.templatePropertyId) {\r\n let staticProperty = _findProperty(def.templatePropertyId);\r\n let staticVal = data.staticValues.find(function(item) {\r\n return item.templatePropertyId === def.templatePropertyId;\r\n });\r\n values.push({\r\n name: def.name,\r\n scale: def.scale,\r\n isPercent: staticProperty && staticProperty.dataType === 'percent',\r\n amount: staticVal && staticVal && staticVal.rawValue,\r\n formatAmount: staticProperty && staticVal ? _formatStaticPropertyValue(staticProperty, staticVal.rawValue) : '',\r\n measureId: null,\r\n measure: null,\r\n templatePropertyId: def.templatePropertyId,\r\n viewCashflows: false,\r\n valueId: 0,\r\n scenarioId: 0,\r\n nodeId: staticVal ? staticVal.nodeId : 0,\r\n });\r\n }\r\n }\r\n\r\n return values;\r\n };\r\n\r\n const _formatStaticPropertyValue = (staticProperty: IStaticProperty, value: string): string => {\r\n if (!value) return '';\r\n\r\n if (staticProperty.dataType === 'number') return intl.toString(Number.parseFloat(value), `n${staticProperty.scale}`);\r\n\r\n if (staticProperty.dataType === 'date') return intl.toString(new Date(value), 'd');\r\n\r\n if (staticProperty.dataType === 'percent') return intl.toString(Number.parseFloat(value), `p${staticProperty.scale}`);\r\n\r\n return value;\r\n };\r\n\r\n const _findMeasure = (measureId: number): IMeasure => {\r\n if (measures) {\r\n return measures.find((item) => item.id === measureId);\r\n }\r\n };\r\n\r\n const _findProperty = (templatePropertyId: number) => {\r\n return staticProperties && staticProperties.find(function(item) {\r\n return item.id === templatePropertyId;\r\n });\r\n };\r\n\r\n const cashflowDialogInfo = (value: SummaryValueItem): any => {\r\n return {\r\n nodeId: value.nodeId,\r\n scenarioId: value.scenarioId,\r\n valueId: value.valueId,\r\n };\r\n };\r\n\r\n const handleSummaryValueClick = (value: SummaryValueItem): void => {\r\n let cashFlowInfo = cashflowDialogInfo(value);\r\n dispatch({\r\n type: SWITCH_CASH_FLOW_MODAL,\r\n payload: {\r\n dataItem: { ...value, currency: localCurr },\r\n cashFlowInfo: cashFlowInfo,\r\n investorObjectId: investorObjectId,\r\n value: value.formatAmount,\r\n boardId: boardId,\r\n selectedCurrency: selectedCurrency,\r\n },\r\n });\r\n };\r\n\r\n const toggleNotes = (id: string): void => {\r\n setNotesShown({ showNote: id });\r\n };\r\n\r\n const clickOutsideHandler = (): void => {\r\n setNotesShown({ showNote: '' });\r\n };\r\n\r\n const measuresForFetch = () => {\r\n let measuresForFetch = [];\r\n setup.definition.forEach(function(def) {\r\n if (\r\n def.measureId &&\r\n !measuresForFetch.find(function(item) {\r\n return item.measureId === def.measureId;\r\n })\r\n )\r\n measuresForFetch.push({ measureId: def.measureId });\r\n });\r\n return measuresForFetch;\r\n };\r\n\r\n const staticPropertiesForFetch = () => {\r\n let propertiesForFetch = [];\r\n setup.definition.forEach(function(def) {\r\n if (\r\n def.templatePropertyId &&\r\n !propertiesForFetch.find(function(item) {\r\n return item.templatePropertyId === def.templatePropertyId;\r\n })\r\n )\r\n propertiesForFetch.push({ templatePropertyId: def.templatePropertyId });\r\n });\r\n return propertiesForFetch;\r\n };\r\n\r\n const handleCurrencyChange = (e) => {\r\n setSelectedCurrency(e.value);\r\n };\r\n\r\n const handleFindSelection = (currency, arrayToFind) => {\r\n if (arrayToFind.find((curr) => curr.currency === currency.currency)) {\r\n return currency;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n widgetDataRef.current = new AnalysisContentWidgetDataModel(widget, measuresForFetch(), investorId ? parseInt(investorId) : parseInt(investorObjectId), false, staticPropertiesForFetch());\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setLocalCurr(widgetDataRef.current.nodes[0].currency);\r\n }, [investor]);\r\n\r\n useEffect(() => {\r\n filterNotesForSummary(notes);\r\n }, [notes]);\r\n\r\n useEffect(() => {\r\n if (boardSelectedCurrency) {\r\n let currency = handleFindSelection(boardSelectedCurrency, widgetDataRef.current.generateCurrencies(scenarios));\r\n if (currency) {\r\n setSelectedCurrency(currency);\r\n }\r\n }\r\n }, [boardSelectedCurrency]);\r\n\r\n useEffect(() => {\r\n //@ts-ignore\r\n if (selectedCurrency.currency) {\r\n setSummaryContent(setup.definition);\r\n setSummaryContentEnriched(setup.definition);\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setCurrencies(widgetDataRef.current.generateCurrencies(scenarios));\r\n if (investorId) {\r\n widgetDataRef.current.setInvestorId(investorId);\r\n } else {\r\n widgetDataRef.current.setInvestorId(investorObjectId);\r\n }\r\n //@ts-ignore\r\n widgetDataRef.current.fetchCombinedData(selectedPeriod, selectedCurrency.currency).then((res: IWidgetCombinedData) => {\r\n const val = initializeItems(res);\r\n setValues(val);\r\n setLoading(false);\r\n });\r\n }\r\n }, [selectedObject, selectedPeriod,selectedCurrency]);\r\n\r\n return {\r\n summaryContentEnriched,\r\n values,\r\n loading,\r\n summaryNotes,\r\n notesShown,\r\n handleSummaryValueClick,\r\n toggleNotes,\r\n clickOutsideHandler,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n localCurr,\r\n };\r\n};\r\n\r\nexport default useGetSummaryData;\r\n","import React, { useRef } from 'react';\r\nimport useClickOutside from '../../../../../common/hooks/useClickOutside';\r\nimport useGetSummaryData from './useGetSummaryData';\r\n\r\nimport { IWidget } from '../../../types/IWidget';\r\n\r\nimport WidgetTitle from '../widgetTitle/widgetTitle';\r\nimport Icon from '../../../../ui/icon/icon';\r\nimport OutletLoader from '../../../../ui/loaders/outletLoader/outletLoader';\r\n\r\nimport './summaryWidget.scss';\r\n\r\nconst SummaryWidget: React.FC = ({\r\n setup,\r\n widget,\r\n measures,\r\n scenarios,\r\n onExpand,\r\n onCollapse,\r\n expand,\r\n notes,\r\n boardId,\r\n id,\r\n staticProperties,\r\n handleWidgetChange,\r\n handleWidgetMove,\r\n widgets,\r\n changeNewIndex,\r\n changeOldIndex,\r\n customisation,\r\n selectedObject,\r\n selectedPeriod,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n homePage,\r\n handleUnpin,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n unpinId,\r\n }) => {\r\n const {\r\n summaryContentEnriched,\r\n values,\r\n loading,\r\n summaryNotes,\r\n notesShown,\r\n handleSummaryValueClick,\r\n toggleNotes,\r\n clickOutsideHandler,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n localCurr,\r\n } = useGetSummaryData(\r\n setup,\r\n widget,\r\n measures,\r\n notes,\r\n boardId,\r\n staticProperties,\r\n scenarios,\r\n selectedObject,\r\n selectedPeriod,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n );\r\n\r\n const wrapperRef = useRef(null);\r\n useClickOutside(wrapperRef, clickOutsideHandler);\r\n\r\n return (\r\n loading ? :\r\n <>\r\n \r\n
\r\n
\r\n {summaryContentEnriched.map((item, key) => (\r\n
\r\n
\r\n {item.name}\r\n {item.hasNotes && (\r\n
\r\n toggleNotes(item.$$hashKey)}\r\n id={item.$$hashKey}\r\n />\r\n {notesShown.showNote === item.$$hashKey && (\r\n
\r\n {item.notes &&\r\n item.notes.map((note, key) => (\r\n

\r\n {note.symbol} {note.note}\r\n

\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n {values[key] && (values[key].viewCashflows ? (\r\n
handleSummaryValueClick(values[key])}>\r\n {values[key].formatAmount}\r\n
\r\n ) : (\r\n {values[key].formatAmount}\r\n ))}\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default SummaryWidget;\r\n","import React, { useRef, useState } from 'react';\r\nimport useClickOutside from '../../../../../../../common/hooks/useClickOutside';\r\nimport { createPortal } from 'react-dom';\r\n\r\nimport Icon from '../../../../../../ui/icon/icon';\r\n\r\nimport './gridHeaderCell.scss';\r\n\r\nconst notesElement = document.getElementById('notes-root');\r\n\r\nconst GridHeaderCell = ({ title, item }) => {\r\n const [notesShown, setNotesShown] = useState({ showNote: '' });\r\n const [notesXAxis, setNotesXAxis] = useState(0);\r\n const [notesYAxis, setNotesYAxis] = useState(0);\r\n\r\n const toggleNotes = (e, id): void => {\r\n setNotesXAxis(e.pageX);\r\n setNotesYAxis(e.pageY);\r\n setNotesShown({ showNote: id });\r\n };\r\n\r\n const clickOutsideHandler = (): void => {\r\n setNotesShown({ showNote: '' });\r\n };\r\n\r\n const wrapperRef = useRef(null);\r\n useClickOutside(wrapperRef, clickOutsideHandler, `grid-header-${item.columnId}`);\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n {item.hasNotes && (\r\n
\r\n {\r\n toggleNotes(e, item.columnId);\r\n }}\r\n id={`grid-header-${item.columnId}`}\r\n />\r\n {notesShown.showNote === item.columnId && createPortal(\r\n
\r\n {item.notes &&\r\n item.notes.map((note, key) => (\r\n

\r\n {note.symbol} {note.note}\r\n

\r\n ))}\r\n
, notesElement\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default GridHeaderCell;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../../redux/store';\r\nimport { useParams } from 'react-router-dom';\r\nimport { extendDataItem, mapTree } from '@progress/kendo-react-treelist';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\n\r\nimport { INote, IWidgetData } from '../../../../../common/services/http/analysisContentService';\r\nimport { ISetup } from '../../../types/ISetup';\r\nimport { ITreelistDefinition } from '../../../types/ITreelistDefinition';\r\nimport { ITreelistColumn } from '../../../types/ITreelistColumn';\r\nimport { ITreelistPreparedData } from '../../../types/ITreelistPreparedData';\r\n\r\nimport CashflowCell from '../cashflow/cells/cashflowCell/cashflowCell';\r\nimport TextCell from '../../../../ui/table/cells/textCell/textCell';\r\nimport GridHeaderCell from '../gridWidget/cell/gridHeaderCell/gridHeaderCell';\r\n\r\nimport { ICurrency } from '../../../types/ICurrency';\r\nimport { IWidget } from '../../../../../common/services/http/types/IWidget';\r\nimport { AnalysisContentWidgetModel } from '../../../../../models/AnalysisContentWidgetModel';\r\nimport { IMeasure } from '../../../types/IMeasure';\r\nimport { AnalysisContentWidgetDataModel } from '../../../../../models/AnalysisContentWidgetDataModel';\r\n\r\nconst subItemsField: string = 'childNodes';\r\nconst expandField: string = 'expanded';\r\n\r\nconst useGetTreelistData = (setup: ISetup, widget: AnalysisContentWidgetModel | IWidget, measures: IMeasure[], notes: INote[], boardId, scenarios, selectedObject, selectedPeriod, boardSelectedCurrency, investorObjectId) => {\r\n const [expanded, setExpanded] = useState([]);\r\n const [selectedGrid, setSelectedGrid] = useState(0);\r\n const [sectionsForGrid, setSectionsForGrid] = useState([]);\r\n const [selectedCurrency, setSelectedCurrency] = useState([]);\r\n const [treelistContentEnriched, setTreelistContentEnriched] = useState([]);\r\n const [formattedData, setFormattedData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [currencies, setCurrencies] = useState([]);\r\n const [treelistNotes, setTreelistNotes] = useState([]);\r\n const [totalWidth, setTotalWidth] = useState('');\r\n\r\n const { t } = useTranslate();\r\n const intl = useInternationalization();\r\n const widgetDataRef = useRef(null);\r\n\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n const { investorId } = useParams();\r\n\r\n const _measureHash = {};\r\n let _objectValueMap = {};\r\n let tempTreelistNotesArray: INote[] = [];\r\n\r\n const extractTreeListSectionsFromSetup = (): void => {\r\n let treeListSectionsArray: string[] = [];\r\n setup.definitions.map((definition: ITreelistDefinition) => {\r\n treeListSectionsArray.push(definition.name);\r\n });\r\n setSectionsForGrid(treeListSectionsArray);\r\n };\r\n\r\n const generateColumns = (measures: IMeasure[]): void => {\r\n _createMeasureHash(measures);\r\n generateColumnsForSection(_measureHash);\r\n };\r\n\r\n const _createMeasureHash = (measures: IMeasure[]): void => {\r\n if (measures) {\r\n for (let i = 0; i < measures.length; i++) {\r\n let measure = measures[i];\r\n _measureHash[measure.id] = measure;\r\n }\r\n }\r\n };\r\n\r\n const generateColumnsForSection = (measureHash: any): void => {\r\n if (notes) filterNotesForTreelist(notes);\r\n let copiedTreeListContent = setup.definitions[selectedGrid].columns.map((object) => ({ ...object }));\r\n\r\n let columns: any = [\r\n {\r\n field: 'name',\r\n title: t('WIDGET.GRID_TITLE'),\r\n expandable: true,\r\n width: '300px',\r\n locked: window.innerWidth > 960,\r\n },\r\n ];\r\n\r\n //@ts-ignore\r\n selectedCurrency && selectedCurrency.currency === '_' && columns.push({\r\n field: 'currency',\r\n title: t('WIDGET.GRID_CURRENCY'),\r\n width: '100px',\r\n });\r\n\r\n let treeWidth = 300;\r\n\r\n copiedTreeListContent.forEach((column) => {\r\n columns.push({\r\n field: `measure_${column.measureId}`,\r\n title: column.name,\r\n width: '225px',\r\n cell: column.viewCashflows ? createCFCellTreeList(column.name, measureHash) : createTextCellTreeList(),\r\n headerCell: createHeaderCellTreeList(column),\r\n notes: column.notes ? column.notes : null,\r\n hasNotes: !!column.hasNotes,\r\n });\r\n treeWidth += 225;\r\n });\r\n\r\n setTreelistContentEnriched(columns);\r\n setTotalWidth(`${treeWidth}px`);\r\n };\r\n\r\n const createCFCellTreeList = (columnName: string, hash: any) => {\r\n return (props) => ;\r\n };\r\n\r\n const createTextCellTreeList = () => {\r\n return (props) => ;\r\n };\r\n\r\n const createHeaderCellTreeList = (column: ITreelistColumn) => {\r\n return (props) => ;\r\n };\r\n\r\n const filterNotesForTreelist = (notes: INote[]) => {\r\n if (notes) {\r\n for (let i = 0; i < notes.length; i++) {\r\n for (let j = 0; j < notes[i].measures.length; j++) {\r\n let tempNoteMeasureId = notes[i].measures[j].measureId;\r\n setup.definitions[selectedGrid].columns.map((el) => {\r\n if (el.measureId === tempNoteMeasureId && !tempTreelistNotesArray.includes(notes[i])) {\r\n tempTreelistNotesArray.push(notes[i]);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n setTreelistNotes(tempTreelistNotesArray);\r\n };\r\n\r\n const prepareData = (data: IWidgetData[], nodes): ITreelistPreparedData[] => {\r\n let preparedData: ITreelistPreparedData[] = [];\r\n _objectValueMap = {};\r\n\r\n for (let j = 0; j < nodes.length; j++) {\r\n _flattenNodesForDataTree(nodes[j], preparedData);\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n let row = data[i];\r\n let measure = _measureHash[row.measureId];\r\n if (measure) {\r\n let field = fieldNameFor('measure', measure.id);\r\n let objectValue = _objectValueMap[row['nodeId']];\r\n if (objectValue) {\r\n let tempMeasure = measures.find((item) => item.id === measure.id);\r\n let isPercent = tempMeasure.isPercent;\r\n let scale = tempMeasure.scale;\r\n let formattedAmount = intl.toString(row.amount, (isPercent ? 'p' : 'n') + scale);\r\n objectValue.row[field] = row.amount !== null ? formattedAmount : 'N/A';\r\n _createDataValueInfo(objectValue, row, objectValue.node, measure);\r\n }\r\n }\r\n }\r\n\r\n return preparedData;\r\n };\r\n\r\n const _flattenNodesForDataTree = (node, data, parentNode?): void => {\r\n let objectValue = {\r\n row: {\r\n objectId: node.objectId,\r\n name: node.name,\r\n nodeId: node.id,\r\n parentNodeId: parentNode ? parentNode.id : null,\r\n currency: node.currency,\r\n },\r\n map: {},\r\n node: node,\r\n };\r\n _objectValueMap[node.id] = objectValue;\r\n data.push(objectValue.row);\r\n\r\n for (let i = 0; i < node.childNodes.length; i++) _flattenNodesForDataTree(node.childNodes[i], data, node);\r\n };\r\n\r\n const _createDataValueInfo = (objectValue: any, dataRow: any, node: any, measure: IMeasure): void => {\r\n objectValue.map[measure.id] = {\r\n nodeId: node.id,\r\n scenarioId: node.scenarioId,\r\n valueId: dataRow.id,\r\n };\r\n };\r\n\r\n const fieldNameFor = (type: string, id: number): string => {\r\n return type + '_' + id;\r\n };\r\n\r\n const formatPreparedData = (preparedData: any[]): ITreelistPreparedData[] => {\r\n let hierarchyData: ITreelistPreparedData[] = [];\r\n for (let i = 0; i < preparedData.length; i++) {\r\n let tempElement = preparedData[i];\r\n let tempArray = [];\r\n for (let j = 0; j < preparedData.length; j++) {\r\n if (preparedData[j].parentNodeId === tempElement.nodeId) {\r\n tempArray.push(preparedData[j]);\r\n }\r\n }\r\n tempElement.childNodes = tempArray;\r\n if (tempElement.parentNodeId === null) {\r\n hierarchyData.push(tempElement);\r\n }\r\n }\r\n return hierarchyData;\r\n };\r\n\r\n const onExpandChange = (e): void => {\r\n setExpanded(e.value ? expanded.filter((id) => id !== e.dataItem.nodeId) : [...expanded, e.dataItem.nodeId]);\r\n };\r\n\r\n const addExpandField = (dataTree: any[]): any => {\r\n return mapTree(dataTree, subItemsField, (item) =>\r\n extendDataItem(item, subItemsField, {\r\n [expandField]: expanded.includes(item.nodeId),\r\n }),\r\n );\r\n };\r\n\r\n const processData = (): any => {\r\n return addExpandField(formattedData);\r\n };\r\n\r\n const selectTreeListSection = (id: number): void => {\r\n setSelectedGrid(id);\r\n };\r\n\r\n const handleCurrencyChange = (e) => {\r\n setSelectedCurrency(e.value);\r\n };\r\n\r\n const handleFindSelection = (currency, arrayToFind) => {\r\n if (arrayToFind.find((curr) => curr.currency === currency.currency)) {\r\n return currency;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n widgetDataRef.current = new AnalysisContentWidgetDataModel(widget, measures, investorId ? parseInt(investorId) : parseInt(investorObjectId), true, undefined);\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n }, [investor]);\r\n\r\n useEffect(() => {\r\n if (boardSelectedCurrency) {\r\n let currency = handleFindSelection(boardSelectedCurrency, widgetDataRef.current.generateCurrencies(scenarios));\r\n if (currency) {\r\n setSelectedCurrency(currency);\r\n }\r\n }\r\n }, [boardSelectedCurrency]);\r\n\r\n useEffect(() => {\r\n //@ts-ignore\r\n if (selectedCurrency.currency) {\r\n extractTreeListSectionsFromSetup();\r\n setTreelistContentEnriched(setup.definitions[selectedGrid].columns);\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setCurrencies(widgetDataRef.current.generateCurrencies(scenarios));\r\n //@ts-ignore\r\n widgetDataRef.current.fetchData(selectedPeriod, selectedCurrency.currency).then((res: IWidgetData[]) => {\r\n let treeNodes = [];\r\n widgetDataRef.current.nodes.forEach((node) => {\r\n let tn = selectedObject.findNode(node.id);\r\n if (tn) treeNodes.push(tn);\r\n });\r\n widgetDataRef.current.groups.forEach((node) => {\r\n let tn = selectedObject.findNode(node.id);\r\n if (tn) treeNodes.concat(tn.childNodes);\r\n });\r\n\r\n let preparedData: ITreelistPreparedData[] = prepareData(res, treeNodes);\r\n let formattedData: ITreelistPreparedData[] = formatPreparedData(preparedData);\r\n setFormattedData(formattedData);\r\n setLoading(false);\r\n });\r\n\r\n generateColumns(measures);\r\n }\r\n }, [selectedObject, selectedPeriod, selectedCurrency, selectedGrid]);\r\n\r\n useEffect(() => {\r\n if (notes) filterNotesForTreelist(notes);\r\n }, [notes]);\r\n\r\n return {\r\n sectionsForGrid,\r\n treelistContentEnriched,\r\n onExpandChange,\r\n loading,\r\n treelistNotes,\r\n selectTreeListSection,\r\n processData,\r\n totalWidth,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n };\r\n};\r\n\r\nexport default useGetTreelistData;\r\n","import React, { useRef, useState } from 'react';\r\nimport { orderBy, SortDescriptor } from '@progress/kendo-data-query';\r\nimport useGetTreelistData from './useGetTreelistData';\r\n\r\nimport { IWidget } from '../../../types/IWidget';\r\n\r\nimport { TreeList, TreeListSortChangeEvent, treeToFlat } from '@progress/kendo-react-treelist';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport SwitchButtons from '../../../../ui/button/switchButtons/switchButtons';\r\nimport WidgetTitle from '../widgetTitle/widgetTitle';\r\nimport TableLoading from '../../../../ui/loaders/tableLoader/tableLoading';\r\nimport OutletLoader from '../../../../ui/loaders/outletLoader/outletLoader';\r\n\r\nimport './treeListWidget.scss';\r\n\r\nconst subItemsField = 'childNodes';\r\nconst expandField = 'expanded';\r\n\r\nconst TreeListWidget: React.FC = ({\r\n setup,\r\n widget,\r\n measures,\r\n scenarios,\r\n onExpand,\r\n onCollapse,\r\n expand,\r\n notes,\r\n boardId,\r\n id,\r\n handleWidgetChange,\r\n widgets,\r\n changeOldIndex,\r\n handleWidgetMove,\r\n changeNewIndex,\r\n customisation,\r\n selectedPeriod,\r\n selectedObject,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n homePage,\r\n handleUnpin,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n unpinId,\r\n }) => {\r\n const [sort, setSort] = useState([{ field: 'name', dir: 'asc' }]);\r\n\r\n const tableRef = useRef(null);\r\n\r\n const {\r\n sectionsForGrid,\r\n treelistContentEnriched,\r\n onExpandChange,\r\n loading,\r\n treelistNotes,\r\n selectTreeListSection,\r\n processData,\r\n totalWidth,\r\n currencies,\r\n selectedCurrency,\r\n handleCurrencyChange,\r\n } = useGetTreelistData(\r\n setup,\r\n widget,\r\n measures,\r\n notes,\r\n boardId,\r\n scenarios,\r\n selectedObject,\r\n selectedPeriod,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n );\r\n\r\n let exportItem;\r\n\r\n const exportToExcel = (): void => {\r\n exportItem.save(treeToFlat(processData(), expandField, subItemsField), treelistContentEnriched);\r\n };\r\n\r\n return loading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n
\r\n \r\n
\r\n (exportItem = exporter)} hierarchy={true}>\r\n {\r\n setSort(sortEvent.sort);\r\n }}\r\n columns={treelistContentEnriched}\r\n />\r\n {loading && }\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default TreeListWidget;\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../../redux/store';\r\n\r\nimport { INote, IWidgetData } from '../../../../../common/services/http/analysisContentService';\r\nimport { IScenario } from '../../../types/IScenario';\r\nimport { ISetup } from '../../../types/ISetup';\r\nimport { ICurrency } from '../../../types/ICurrency';\r\nimport { IWidget } from '../../../../../common/services/http/types/IWidget';\r\nimport { AnalysisContentWidgetModel } from '../../../../../models/AnalysisContentWidgetModel';\r\nimport { IMeasure } from '../../../types/IMeasure';\r\nimport { IStaticProperty } from '../../../../../models/types/IStaticProperty';\r\nimport { AnalysisContentWidgetDataModel } from '../../../../../models/AnalysisContentWidgetDataModel';\r\n\r\nconst useGetMapData = (\r\n setup: ISetup,\r\n widget: AnalysisContentWidgetModel | IWidget,\r\n measures: IMeasure[],\r\n notes: INote[],\r\n boardId: number,\r\n staticProperties: IStaticProperty[],\r\n scenarios: IScenario[],\r\n selectedObject: any,\r\n selectedPeriod: any,\r\n boardSelectedCurrency: any,\r\n investorObjectId: any,\r\n) => {\r\n const [lat, setLat] = useState(35);\r\n const [long, setLong] = useState(-10);\r\n const [zoom, setZoom] = useState(3);\r\n const [values, setValues] = useState(null);\r\n const [currencies, setCurrencies] = useState([]);\r\n const [selectedCurrency, setSelectedCurrency] = useState([]);\r\n const [selectData, setSelectData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [measureLayersState, setMeasureLayerState] = useState([]);\r\n const [selectedMeasureState, setSelectedMeasureState] = useState(null);\r\n\r\n const widgetDataRef = useRef(null);\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n const { investorId } = useParams();\r\n\r\n let measureLayers = [];\r\n let selectedMeasure = null;\r\n\r\n const tileSubdomains = ['a', 'b', 'c'];\r\n const tileUrl = (e) =>\r\n `https://${e.subdomain}.tile.openstreetmap.org/${e.zoom}/${e.x}/${e.y}.png`;\r\n const attribution =\r\n '© OpenStreetMap contributors';\r\n\r\n const bubbleStyle = {\r\n fill: {\r\n color: '#00f',\r\n opacity: 0.4,\r\n },\r\n };\r\n\r\n const staticPropertiesForFetch = () => {\r\n let propertiesForFetch = [];\r\n setup.definition && setup.definition.forEach((def) => {\r\n if (\r\n def.templatePropertyId &&\r\n !propertiesForFetch.find((item) => {\r\n return item.templatePropertyId === def.templatePropertyId;\r\n })\r\n )\r\n propertiesForFetch.push({ templatePropertyId: def.templatePropertyId });\r\n });\r\n return propertiesForFetch;\r\n };\r\n\r\n const defineLayers = () => {\r\n let dropdownData = [];\r\n widget.setup.measures.forEach((measure) => {\r\n let meas = measures.find((item) => {\r\n return item.id === measure.measureId;\r\n });\r\n if (meas) {\r\n measureLayers.push({\r\n measureId: measure.measureId,\r\n name: meas.name,\r\n amountsIn: measure.amountsIn,\r\n scale: measure.scale,\r\n viewCashflows: measure.viewCashflows,\r\n data: [],\r\n });\r\n\r\n dropdownData.push({ measureId: measure.measureId, name: meas.name });\r\n }\r\n });\r\n setSelectData(dropdownData);\r\n\r\n if (dropdownData.length > 0)\r\n selectedMeasure = dropdownData[0];\r\n };\r\n\r\n const onSelectChange = (e) => {\r\n setSelectedMeasureState(e.value);\r\n let layer = measureLayersState.find((item) => {\r\n return item.measureId === e.value.measureId;\r\n });\r\n setValues(layer.data);\r\n };\r\n\r\n const handleCurrencyChange = (e) => {\r\n setSelectedCurrency(e.value);\r\n };\r\n\r\n const clearLayerData = () => {\r\n measureLayers.forEach((layer) => {\r\n layer.data.splice(0);\r\n });\r\n };\r\n\r\n const getLayer = (measureId) => {\r\n return measureLayers.find((item) => {\r\n return item.measureId === measureId;\r\n });\r\n };\r\n\r\n const assembleLayerData = (data) => {\r\n clearLayerData();\r\n\r\n let nodes = selectedObject.nodes;\r\n\r\n data.forEach((value) => {\r\n let layer = getLayer(value.measureId);\r\n if (layer) {\r\n let node = nodes.find((item) => {\r\n return item.id === value.nodeId;\r\n });\r\n if (node)\r\n layer.data.push({\r\n name: node.name,\r\n measureName: layer.name,\r\n scale: layer.scale,\r\n location: [node.latitude, node.longitude],\r\n value: value.amount / layer.amountsIn,\r\n viewCashflows: layer.viewCashflows,\r\n nodeId: value.nodeId,\r\n valueId: value.id,\r\n scenarioId: value.scenarioId,\r\n measureId: value.measureId,\r\n });\r\n }\r\n });\r\n };\r\n\r\n const handleFindSelection = (currency, arrayToFind) => {\r\n if (arrayToFind.find((curr) => curr.currency === currency.currency)) {\r\n return currency;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n widgetDataRef.current = new AnalysisContentWidgetDataModel(widget, measures, investorId ? parseInt(investorId) : parseInt(investorObjectId), false, staticPropertiesForFetch());\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setLat(parseFloat(widget.setup.latitude));\r\n setLong(parseFloat(widget.setup.longitude));\r\n setZoom(parseInt(widget.setup.zoom));\r\n }, [investor]);\r\n\r\n useEffect(() => {\r\n if (boardSelectedCurrency) {\r\n let currency = handleFindSelection(boardSelectedCurrency, widgetDataRef.current.generateCurrencies(scenarios));\r\n if (currency) {\r\n setSelectedCurrency(currency);\r\n }\r\n }\r\n }, [boardSelectedCurrency]);\r\n\r\n useEffect(() => {\r\n //@ts-ignore\r\n if (selectedCurrency.currency) {\r\n widgetDataRef.current.defineNodes(selectedObject);\r\n setCurrencies(widgetDataRef.current.generateCurrencies(scenarios));\r\n\r\n if (investorId) {\r\n widgetDataRef.current.setInvestorId(investorId);\r\n } else {\r\n widgetDataRef.current.setInvestorId(investorObjectId);\r\n }\r\n\r\n defineLayers();\r\n //@ts-ignore\r\n widgetDataRef.current.fetchNodeData(selectedPeriod, selectedCurrency.currency).then((res: IWidgetData[]) => {\r\n assembleLayerData(res);\r\n\r\n setMeasureLayerState(measureLayers);\r\n\r\n let selectedData = [];\r\n if (selectedMeasureState) {\r\n let layer = getLayer(selectedMeasureState.measureId);\r\n if (layer)\r\n selectedData = layer.data;\r\n } else if (selectedMeasure) {\r\n let layer = getLayer(selectedMeasure.measureId);\r\n if (layer)\r\n selectedData = layer.data;\r\n }\r\n\r\n setValues(selectedData);\r\n setLoading(false);\r\n });\r\n }\r\n }, [selectedObject, selectedPeriod, selectedCurrency]);\r\n\r\n return {\r\n lat,\r\n long,\r\n zoom,\r\n loading,\r\n currencies,\r\n handleCurrencyChange,\r\n selectedCurrency,\r\n values,\r\n selectData,\r\n onSelectChange,\r\n tileSubdomains,\r\n tileUrl,\r\n attribution,\r\n bubbleStyle,\r\n };\r\n};\r\n\r\nexport default useGetMapData;\r\n","import React from 'react';\r\nimport useGetMapData from './useGetMapData';\r\nimport useTranslate from '../../../../../common/hooks/useTranslate';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\n\r\nimport { IWidget } from '../../../types/IWidget';\r\n\r\nimport { Map, MapBubbleLayer, MapBubbleLayerTooltip, MapLayers, MapTileLayer } from '@progress/kendo-react-map';\r\nimport WidgetTitle from '../widgetTitle/widgetTitle';\r\nimport OutletLoader from '../../../../ui/loaders/outletLoader/outletLoader';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\n\r\nimport './mapWidget.scss';\r\n\r\nconst MapWidget: React.FC = ({\r\n setup,\r\n widget,\r\n measures,\r\n scenarios,\r\n onExpand,\r\n onCollapse,\r\n expand,\r\n notes,\r\n boardId,\r\n id,\r\n staticProperties,\r\n widgets,\r\n handleWidgetChange,\r\n changeOldIndex,\r\n handleWidgetMove,\r\n changeNewIndex,\r\n customisation,\r\n selectedPeriod,\r\n selectedObject,\r\n boardSelectedCurrency,\r\n investorObjectId,\r\n homePage,\r\n handleUnpin,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n unpinId,\r\n }) => {\r\n const {\r\n lat,\r\n long,\r\n zoom,\r\n loading,\r\n currencies,\r\n handleCurrencyChange,\r\n selectedCurrency,\r\n values,\r\n tileUrl,\r\n attribution,\r\n selectData,\r\n onSelectChange,\r\n tileSubdomains,\r\n bubbleStyle,\r\n } = useGetMapData(setup, widget, measures, notes, boardId, staticProperties, scenarios, selectedObject, selectedPeriod, boardSelectedCurrency, investorObjectId);\r\n\r\n const { t } = useTranslate();\r\n const intl = useInternationalization();\r\n const center = [lat, long];\r\n\r\n const renderBubbleTooltip = (props) => (\r\n
\r\n {props.dataItem.name}
\r\n {props.dataItem.measureName}: {intl.toString(props.dataItem.value, `n${props.dataItem.scale}`)}\r\n
\r\n );\r\n\r\n const preventFromZoom = (e) => {\r\n if (e.originalEvent && e.originalEvent.type && e.originalEvent.wheelDelta) {\r\n e.preventDefault();\r\n }\r\n };\r\n\r\n return (\r\n loading ? :\r\n <>\r\n \r\n
\r\n {t('WIDGET.VIEW_BY')}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default MapWidget;\r\n","import React, { useState } from 'react';\r\n\r\nimport { IWidgetWrap } from '../../../types/IWidgetWrap';\r\nimport ChartWidget from '../../../../dashboards/components/widget/chartWidget/chartWidget';\r\nimport GridWidget from '../../../../dashboards/components/widget/gridWidget/gridWidget';\r\nimport SummaryWidget from '../../../../dashboards/components/widget/summaryWidget/summaryWidget';\r\nimport TreeListWidget from '../../../../dashboards/components/widget/treeListWidget/treeListWidget';\r\nimport MapWidget from '../../../../dashboards/components/widget/mapWidget/mapWidget';\r\n\r\nimport '../widgetPinSection.scss';\r\n\r\nconst WidgetWrap: React.FC = ({id, widget, widgets, handleUnpin, customisation, handleWidgetMove, handleWidgetChange, changeNewIndex, changeOldIndex}) => {\r\n const [expand, setExpand] = useState(false);\r\n\r\n const onExpand = (): void => {\r\n setExpand(true);\r\n };\r\n\r\n const onCollapse = (): void => {\r\n setExpand(false);\r\n };\r\n\r\n const components = {\r\n chart: ChartWidget,\r\n grid: GridWidget,\r\n summary: SummaryWidget,\r\n treelist: TreeListWidget,\r\n map: MapWidget,\r\n };\r\n\r\n const WidgetComponent = components[widget.type];\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default WidgetWrap;","import React from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useParams } from 'react-router-dom';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport { ICustomisationGuide } from '../../types/ICustomisationGuide';\r\n\r\nimport Icon from '../../../ui/icon/icon';\r\n\r\nimport './customisationGuide.scss';\r\n\r\nconst CustomisationGuide: React.FC = ({\r\n customisation,\r\n resetCustomisation,\r\n handleCustomisation,\r\n handleReset,\r\n handleCancel,\r\n saveCustomisation,\r\n noReset,\r\n }) => {\r\n const { t } = useTranslate();\r\n const modalElement = document.getElementById('modal-root');\r\n const { boardId } = useParams();\r\n\r\n const handleOnReset = () => {\r\n resetCustomisation(boardId);\r\n handleReset(true);\r\n handleCustomisation(false);\r\n };\r\n\r\n const handleOnSave = () => {\r\n if (!noReset) {\r\n saveCustomisation(boardId);\r\n handleReset(false);\r\n } else {\r\n saveCustomisation();\r\n }\r\n handleCustomisation(false);\r\n };\r\n\r\n const handleOnCancel = () => {\r\n handleCancel && handleCancel();\r\n handleCustomisation(false);\r\n };\r\n\r\n return createPortal(\r\n customisation ? (\r\n
\r\n
\r\n

{!noReset ? t('WIDGET_EDIT_LAYOUT.TITLE') : t('WIDGET_EDIT_LAYOUT.TITLE_FOR_HOME_PAGE')}

\r\n

\r\n {t('WIDGET_EDIT_LAYOUT.TEXT1')}\r\n \r\n \r\n {!noReset ? t('WIDGET_EDIT_LAYOUT.TEXT2') : t('WIDGET_EDIT_LAYOUT.TEXT2_FOR_HOME_PAGE')}\r\n {!noReset && }\r\n {!noReset ? t('WIDGET_EDIT_LAYOUT.TEXT3') : t('WIDGET_EDIT_LAYOUT.TEXT3_FOR_HOME_PAGE')}\r\n

\r\n
\r\n {!noReset && }\r\n \r\n \r\n
\r\n
\r\n
\r\n ) : null,\r\n modalElement,\r\n );\r\n};\r\n\r\nexport default CustomisationGuide;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { getHomePage, getHomePageBoards, updatePinnedWidgets } from '../../../../common/services/http/homeService';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport arrayMove from '../../../../common/utility/arrayMove';\r\n\r\nimport { IWidget } from '../../../dashboards/types/IWidget';\r\n\r\nimport OutletLoader from '../../../ui/loaders/outletLoader/outletLoader';\r\nimport WidgetWrap from './widgetWrap/widgetWrap';\r\nimport CustomisationGuide from '../../../dashboards/components/customisationGuide/customisationGuide';\r\nimport Icon from '../../../ui/icon/icon';\r\n\r\nimport '../../../dashboards/pages/boards/board.scss';\r\nimport './widgetPinSection.scss';\r\n\r\nconst WidgetPinSection: React.FC = () => {\r\n const [widgets, setWidgets] = useState([]);\r\n const [initialWidgets, setInitialWidgets] = useState([]);\r\n const [unpinTrigger, setUnpinTrigger] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [customisation, setCustomisation] = useState(false);\r\n const [newIndex, setNewIndex] = useState(null);\r\n const [oldIndex, setOldIndex] = useState(null);\r\n const [widgetToMove, setWidgetToMove] = useState(null);\r\n\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n\r\n const { t } = useTranslate();\r\n\r\n const handleUnpin = () => {\r\n setUnpinTrigger(!unpinTrigger);\r\n };\r\n\r\n const saveCustomisation = () => {\r\n updatePinnedWidgets(widgets).then(() => {\r\n });\r\n };\r\n\r\n const handleSetCustomisation = (e) => {\r\n if (e === true) {\r\n setInitialWidgets([...widgets]);\r\n }\r\n setCustomisation(e);\r\n };\r\n\r\n const handleCancel = () => {\r\n setWidgets([...initialWidgets]);\r\n };\r\n\r\n const handleWidgetMove = (e) => {\r\n setWidgetToMove(e);\r\n };\r\n\r\n const handleWidgetChange = (e) => {\r\n setWidgets(e);\r\n };\r\n\r\n const changeNewIndex = (e) => {\r\n setNewIndex(e);\r\n };\r\n\r\n const changeOldIndex = (e) => {\r\n setOldIndex(e);\r\n };\r\n\r\n useEffect(() => {\r\n let newArray = arrayMove(widgets, oldIndex, newIndex);\r\n setWidgets(newArray);\r\n }, [oldIndex, newIndex, widgetToMove]);\r\n\r\n useEffect(() => {\r\n getHomePage().then((homePageResult) => {\r\n setLoading(true);\r\n return homePageResult;\r\n }).then((homePageResult) => {\r\n const widgetsToShow = homePageResult.content;\r\n getHomePageBoards().then((homePageBoardsResult) => {\r\n let widgetsLocal: IWidget[] = [];\r\n widgetsToShow.forEach((widgetToShow) => {\r\n const widgetId = widgetToShow.widgetId;\r\n const id = widgetToShow.id;\r\n const contentId = widgetToShow.contentId;\r\n const widgetTitle = widgetToShow.title;\r\n const investorObjectId = widgetToShow.investorObjectId;\r\n\r\n const board = homePageBoardsResult.find((item) => {\r\n return item.id === contentId;\r\n });\r\n\r\n if (board && board.timePeriods.length > 0) {\r\n const object = board.objects.find((item) => {\r\n return item.objectPath === widgetToShow.objectPath;\r\n });\r\n\r\n const widget = board.widgets.find((item) => {\r\n return item.id === widgetId;\r\n });\r\n\r\n const data: IWidget = {\r\n scenarios: board.scenarios,\r\n widget: { ...widget, name: widgetTitle },\r\n setup: widget.setup,\r\n measures: board.measures,\r\n periods: board.timePeriods,\r\n notes: null,\r\n boardId: board.id,\r\n staticProperties: null,\r\n customisation: null,\r\n type: widget.type,\r\n widgets: board.widgets,\r\n handleWidgetChange: null,\r\n handleWidgetMove: null,\r\n changeNewIndex: null,\r\n changeOldIndex: null,\r\n boardSelectedCurrency: board.scenarios[0].currencies[0],\r\n selectedObject: object,\r\n selectedPeriod: board.timePeriods[board.timePeriods.length - 1],\r\n investorObjectId: investorObjectId,\r\n homePage: true,\r\n unpinId: id,\r\n };\r\n widgetsLocal.push(data);\r\n }\r\n });\r\n setWidgets(widgetsLocal);\r\n setLoading(false);\r\n });\r\n });\r\n }, [unpinTrigger]);\r\n\r\n return (\r\n widgets && widgets.length > 0 &&\r\n
\r\n

{t('HOME.ANALYSIS_PIN_TITLE')}

\r\n {!impersonate.impersonate && handleSetCustomisation(true)} />\r\n }\r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n {widgets && widgets.map((widget) => {\r\n return widget && (\r\n \r\n );\r\n })}\r\n
\r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default WidgetPinSection;\r\n","import React from 'react';\r\n\r\nimport Main from '../../../layout/main/main';\r\nimport DocPinsSection from '../../components/docPinSection/docPinSection';\r\nimport ActivityTable from '../../components/activityFeed/activityTable/activityTable';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport DocuSign from '../../components/docuSign/docuSign';\r\nimport WidgetPinSection from '../../components/widgetPinSection/widgetPinSection';\r\n\r\nconst Home: React.FC = () => {\r\n const { t } = useTranslate();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React from 'react';\r\n\r\nimport './cardWrapper.scss';\r\n\r\ninterface ICardWrapper {\r\n width?: any;\r\n children?: any;\r\n className?: any;\r\n gridColumnEnd?: any;\r\n gridRowEnd?: any;\r\n}\r\n\r\nconst CardWrapper: React.FC = ({ children, width, className, gridColumnEnd, gridRowEnd }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default CardWrapper;\r\n","import React from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { IAddresses } from '../../../pages/profile/profile';\r\n\r\nimport './locationsFilters.scss';\r\n\r\ninterface ILocationsFilter {\r\n addresses: IAddresses[] | undefined;\r\n onChange: (event: any) => void;\r\n address?: any;\r\n}\r\n\r\nconst LocationsFilters: React.FC = ({ addresses, onChange, address }) => {\r\n return
\r\n \r\n
;\r\n};\r\n\r\nexport default LocationsFilters;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { IProfile } from '../../pages/profile/profile';\r\nimport CardWrapper from '../../../ui/card/cardWrapper/cardWrapper';\r\nimport Icon from '../../../ui/icon/icon';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport ComponentLoader from '../../../ui/loaders/componentLoader/componentLoader';\r\nimport LocationsFilters from './locationsFilter/locationsFilters';\r\n\r\nimport './contactDetails.scss';\r\n\r\ninterface IContactCard {\r\n profile?: IProfile;\r\n loadingProfile?: boolean;\r\n}\r\n\r\nconst ContactDetails: React.FC = ({ profile, loadingProfile }) => {\r\n const { t } = useTranslate();\r\n const [address, setAddresses] = useState(profile?.addresses[0]);\r\n\r\n useEffect(() => {\r\n setAddresses(profile?.addresses[0]);\r\n }, [profile]);\r\n\r\n const onChange = (event: any) => {\r\n setAddresses(event.target.value);\r\n };\r\n\r\n return (\r\n \r\n
\r\n {t('CONTACTS.CARD_TITLE')}\r\n
\r\n {loadingProfile ? (\r\n \r\n ) : (\r\n
\r\n
\r\n {profile &&\r\n profile.phones.map((phone) => {\r\n return (\r\n
\r\n \r\n {t(phone.label)}\r\n {phone.number}\r\n
\r\n );\r\n })}\r\n {profile &&\r\n profile.emails.map((email) => {\r\n return (\r\n
\r\n \r\n {t(email.label)}\r\n {email.address}\r\n
\r\n );\r\n })}\r\n
\r\n {profile && profile.addresses && (\r\n
\r\n {profile.addresses.length <= 1 ? {t('CONTACTS.BUSSINES')} :\r\n }\r\n
\r\n {t('CONTACTS.STREET')}\r\n {address && address.address1}\r\n
\r\n
\r\n {t('CONTACTS.CITY')}\r\n {address && address.city}\r\n
\r\n
\r\n {t('CONTACTS.STATE')}\r\n {address && address.state}\r\n
\r\n
\r\n {t('CONTACTS.ZIP')}\r\n {address && address.postalCode}\r\n
\r\n
\r\n {t('CONTACTS.COUNTRY')}\r\n {address && address.country}\r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ContactDetails;\r\n","import React, { useEffect, useState } from 'react';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport CardWrapper from '../../../ui/card/cardWrapper/cardWrapper';\r\nimport { saveUserSettings } from '../../../../common/services/http/userService';\r\n\r\nimport './userSettings.scss';\r\n\r\ninterface ISettingsCard {\r\n settings?: ISetting[];\r\n}\r\n\r\ninterface ISetting {\r\n name: string;\r\n value: any;\r\n}\r\n\r\nconst getTooltipLabel = (tooltipSettingHidden: string): string => {\r\n return tooltipSettingHidden === '1' ? 'Hidden' : 'Shown';\r\n};\r\n\r\nconst UserSettings: React.FC = ({ settings }) => {\r\n const { t } = useTranslate();\r\n\r\n const slicerTooltipSetting = settings.find((setting) => {\r\n return setting.name === 'docuSlicerTooltipHidden';\r\n });\r\n const tooltipSettingValue = slicerTooltipSetting && slicerTooltipSetting.value;\r\n\r\n const [tooltipValue, setTooltipValue] = useState(getTooltipLabel(tooltipSettingValue));\r\n\r\n const resetTooltipSettings = () => {\r\n const slicerTooltipSetting = { name: 'docuSlicerTooltipHidden', value: '0' };\r\n saveUserSettings(slicerTooltipSetting);\r\n setTooltipValue('Shown');\r\n };\r\n\r\n useEffect(() => {\r\n setTooltipValue(getTooltipLabel(tooltipSettingValue));\r\n }, [settings]);\r\n\r\n return (\r\n \r\n
\r\n {t('PROFILE.SETTINGS_TITLE')}\r\n
\r\n {settings && (\r\n
\r\n
{t('PROFILE.TOOLTIP_SETTING')}
\r\n
{tooltipValue}
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default UserSettings;\r\n","const timeDelta = (date) => {\r\n let startDate = date;\r\n let endDate = new Date();\r\n let seconds = (endDate.getTime() - startDate.getTime()) / 1000;\r\n\r\n let days;\r\n if (seconds > 86400) {\r\n days = Math.round(seconds / 86400);\r\n }\r\n\r\n let months;\r\n if (days > 30) {\r\n months = Math.round(days / 30);\r\n days = Math.round(days % 30);\r\n }\r\n\r\n let daysString = days > 0 ? (days > 1 ? `${days} days` : `${days} day`) : '';\r\n let monthsString = months ? (months > 1 ? ` ${months} months` : ` ${months} month`) : '';\r\n\r\n if (daysString || monthsString) {\r\n return daysString + monthsString;\r\n } else {\r\n return 'today';\r\n }\r\n};\r\n\r\nexport default timeDelta;\r\n","import React from 'react';\r\nimport timeDelta from '../../../../../../common/utility/timeDelta';\r\n\r\nconst ActivityCell = (props: { dataItem: { [x: string]: string | number | Date }; field: string | number }) => {\r\n return (\r\n \r\n
{timeDelta(new Date(props.dataItem[props.field]))}
\r\n \r\n );\r\n};\r\n\r\nexport default ActivityCell;\r\n","import React, { useRef, useState } from 'react';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport DateCell from '../../../documents/components/cells/dateCell/dateCell';\r\nimport ActivityCell from './cells/activityCell/activityCell';\r\nimport HeaderCell from '../../../documents/components/cells/headerCell/headerCell';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport TableLoading from '../../../ui/loaders/tableLoader/tableLoading';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../../../ui/table/table.scss';\r\nimport './activityLog.scss';\r\n\r\nconst ActivityLog = (props) => {\r\n const [sort, setSort] = useState([{ field: 'date', dir: 'desc' }]);\r\n const { t } = useTranslate();\r\n const tableRef = useRef(null);\r\n return (\r\n
\r\n
\r\n {t('ACTIVITY.LOG_CARD_TITLE')}\r\n
\r\n {\r\n //@ts-ignore\r\n setSort(e.sort);\r\n }}\r\n ref={tableRef}\r\n selectedField=\"selected\">\r\n \r\n \r\n \r\n \r\n {props.loadingActivity && }\r\n
\r\n );\r\n};\r\n\r\nexport default ActivityLog;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport LoadingCell from '../../../../../ui/table/cells/loadingCell/loadingCell';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\n\r\nimport './agreementNameCell.scss';\r\n\r\nconst AgreementNameCell = (props) => {\r\n if (props.rowType === 'groupHeader') {\r\n return null;\r\n }\r\n\r\n if (props.dataItem[props.field] === undefined) return ;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n {props.dataItem[props.field]}\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default AgreementNameCell;\r\n","import React, { useRef, useState } from 'react';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport DateCell from '../../../documents/components/cells/dateCell/dateCell';\r\n\r\nimport HeaderCell from '../../../documents/components/cells/headerCell/headerCell';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport TableLoading from '../../../ui/loaders/tableLoader/tableLoading';\r\nimport AgreementNameCell from './cells/agreementNameCell/agreementNameCell';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../../../ui/table/table.scss';\r\nimport '../activityLog/activityLog.scss';\r\nimport './acceptedAgreements.scss';\r\n\r\nconst AcceptedAgreements = (props) => {\r\n const [sort, setSort] = useState([{ field: 'date', dir: 'desc' }]);\r\n const { t } = useTranslate();\r\n const tableRef = useRef(null);\r\n\r\n return (\r\n
\r\n
\r\n {t('AGREEMENT.CARD_TITLE')}\r\n
\r\n\r\n {\r\n //@ts-ignore\r\n setSort(e.sort);\r\n }}\r\n ref={tableRef}\r\n selectedField=\"selected\">\r\n \r\n \r\n \r\n {props.loadingActivity && }\r\n
\r\n );\r\n};\r\n\r\nexport default AcceptedAgreements;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { getProfile, getActivity, getUserSettings, getAcceptedAgreements } from '../../../../common/services/http/userService';\r\nimport Main from '../../../layout/main/main';\r\n\r\nimport ContactDetails from '../../components/contactDetails/contactDetails';\r\n\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport UserSettings from '../../components/userSettings/userSettings';\r\nimport ActivityLog from '../../components/activityLog/activityLog';\r\n\r\nimport './profile.scss';\r\nimport AcceptedAgreements from '../../components/acceptedAgreements/acceptedAgreements';\r\n\r\nexport interface IEmail {\r\n id: number;\r\n entityId: number;\r\n address: string;\r\n label: string;\r\n isPrimary: boolean;\r\n}\r\n\r\nexport interface IPhones {\r\n id: number;\r\n entityId: number;\r\n address: string;\r\n label: string;\r\n isPrimary: boolean;\r\n number: string;\r\n}\r\n\r\nexport interface IAddresses {\r\n address1?: string;\r\n address2?: string;\r\n city?: string;\r\n country?: string;\r\n countryCode?: string;\r\n entityId?: string;\r\n id?: string;\r\n label?: string;\r\n postalCode?: string;\r\n state?: string;\r\n}\r\n\r\nexport interface IProfile {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n fullName?: string;\r\n emails: IEmail[];\r\n phones: IPhones[];\r\n addresses: IAddresses[];\r\n}\r\n\r\nconst Profile: React.FC = () => {\r\n const { t } = useTranslate();\r\n const [activity, setActivity] = useState([]);\r\n const [acceptedAgreements, setAcceptedAgreements] = useState([])\r\n const [userSettings, setUserSettings] = useState([]);\r\n const [profile, setProfile] = useState({\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n emails: [],\r\n phones: [],\r\n addresses: [],\r\n });\r\n const [loadingProfile, setLoadingProfile] = useState(true);\r\n const [loadingActivity, setLoadingActivity] = useState(true);\r\n const [loadingAgreements, setLoadingAgreements] = useState(true);\r\n const [screenSize, setScreenSize] = useState(0);\r\n\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n getAcceptedAgreements;\r\n\r\n useEffect(() => {\r\n setScreenSize(screen.width);\r\n getProfile().then((r) => {\r\n setProfile(r.data[0]);\r\n setLoadingProfile(false);\r\n });\r\n getActivity().then((r) => {\r\n setActivity(r.data);\r\n setLoadingActivity(false);\r\n });\r\n getUserSettings().then((res) => {\r\n setUserSettings(res);\r\n });\r\n\r\n getAcceptedAgreements().then((res) => {\r\n setAcceptedAgreements(res)\r\n setLoadingAgreements(false)\r\n });\r\n }, [impersonate]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Profile;\r\n","import React from 'react';\r\nimport Pin from '../../button/pin/pin';\r\nimport Icon from '../../icon/icon';\r\n\r\nimport './pdfDocumentControls.scss';\r\n\r\ninterface PdfDocumentControlsInterface {\r\n onBackClick?: any;\r\n expandClick?: () => void;\r\n collapseClick?: () => void;\r\n expand: boolean;\r\n onDownload?: any;\r\n onPrint?: any;\r\n onZoomOut?: any;\r\n zoom?: any;\r\n onZoomIn?: any;\r\n onPreviousPage?: any;\r\n page?: any;\r\n numPages?: any;\r\n onNextPage?: any;\r\n onPin?: () => void;\r\n pinned?: boolean;\r\n shouldPin?: boolean;\r\n backgroundColor?: string;\r\n}\r\n\r\nconst PdfDocumentControls: React.FC = ({\r\n expand,\r\n onBackClick,\r\n collapseClick,\r\n expandClick,\r\n onDownload,\r\n onPrint,\r\n onZoomOut,\r\n zoom,\r\n onZoomIn,\r\n onPreviousPage,\r\n page,\r\n numPages,\r\n onNextPage,\r\n onPin,\r\n pinned,\r\n shouldPin,\r\n backgroundColor,\r\n}) => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n
{Math.round(zoom * 100)} %
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {page} / {numPages}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {shouldPin ? : null}\r\n \r\n
\r\n\r\n
\r\n {expand ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : (\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PdfDocumentControls;\r\n","import React from 'react';\r\n\r\nimport './pdfTitle.scss';\r\n\r\ninterface PdfTitleInterface {\r\n title?: string;\r\n}\r\n\r\nconst PdfTitle: React.FC = ({ title }) => {\r\n return (\r\n
\r\n {title}\r\n
\r\n );\r\n};\r\n\r\nexport default PdfTitle;\r\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\r\nimport { useNavigate } from 'react-router';\r\nimport { debounce } from 'lodash';\r\nimport printJS from 'print-js';\r\nimport { useSelector } from 'react-redux';\r\nimport { Document, Page } from 'react-pdf';\r\nimport { saveAs } from '@progress/kendo-file-saver';\r\nimport PdfDocumentControls from './pdfDocumentControls/pdfDocumentControls';\r\nimport PdfTitle from './pdfTitle/pdfTitle';\r\nimport { setPin, removePin, registerDownload } from '../../../common/services/http/documentsService';\r\nimport { RootState } from '../../../redux/store';\r\nimport ComponentLoader from '../loaders/componentLoader/componentLoader';\r\n\r\nimport './pdfViewer.scss';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\n\r\ninterface IBasePdfViewer {\r\n id?: string;\r\n loading?: boolean;\r\n file?: any;\r\n returnPath?: string;\r\n document?: {\r\n label?: string;\r\n id?: number;\r\n };\r\n title?: boolean;\r\n shouldPin?: boolean;\r\n controlsBcgColor?: string;\r\n className?: string;\r\n}\r\n\r\nconst getZoomFromLS = () => {\r\n return window.localStorage.getItem('zoom') ? parseFloat(window.localStorage.getItem('zoom')) : 1;\r\n};\r\n\r\nconst PdfViewer: React.FC = ({\r\n title,\r\n file,\r\n document,\r\n shouldPin,\r\n loading,\r\n controlsBcgColor,\r\n className,\r\n }) => {\r\n const [numPages, setNumPages] = useState(null);\r\n const [pdfDocument, setPdfDocument] = useState(null);\r\n const [focusedPage, setFocusedPage] = useState(1);\r\n const [screenSize, setScreenSize] = useState(0);\r\n const [pages, setPages] = useState([]);\r\n const [zoom, setZoom] = useState(getZoomFromLS());\r\n const [pinned, setPinned] = useState(false);\r\n const [expand, setExpand] = useState(false);\r\n const navigate = useNavigate();\r\n const impersonate = useSelector((state: RootState) => state.impersonate.impersonate);\r\n const { t } = useTranslate();\r\n\r\n const [size, setSize] = useState({\r\n x: window.innerWidth,\r\n y: window.innerHeight,\r\n });\r\n\r\n const data = useMemo(() => {\r\n if (file) {\r\n return { data: file.uint8 };\r\n } else {\r\n return null;\r\n }\r\n }, [file]);\r\n\r\n const containerRef = useRef(null);\r\n\r\n const margin = 40;\r\n\r\n function documentLoaded(pdfDoc: any) {\r\n setNumPages(pdfDoc.numPages);\r\n setPdfDocument(pdfDoc);\r\n }\r\n\r\n function loadPages(pagesToLoad: any, zoomFactor: any) {\r\n let startY = 0;\r\n let endY = 0;\r\n\r\n let loaded = pagesToLoad.map((page: any, index: any) => {\r\n let width = size.x * 0.8 * zoomFactor;\r\n let factor = width / page.view[2];\r\n let height = Math.trunc(page.view[3] * factor);\r\n\r\n startY = endY;\r\n endY += height + margin;\r\n\r\n return {\r\n pageIndex: index,\r\n page: page,\r\n show: index >= focusedPage - 2 && index <= focusedPage,\r\n width: width,\r\n height: height,\r\n startY: startY,\r\n endY: endY++,\r\n };\r\n });\r\n setPages(loaded);\r\n return loaded;\r\n }\r\n\r\n function focusPage(pageIndex: any) {\r\n setFocusedPage(pageIndex + 1);\r\n setPages(\r\n pages.map((page, index) => {\r\n page.show = index >= pageIndex - 1 && index <= pageIndex + 1;\r\n return page;\r\n }),\r\n );\r\n }\r\n\r\n const handleScroll = debounce((event) => {\r\n let container = event.target;\r\n let pageIndex = -1;\r\n\r\n pages.find((page, index) => {\r\n if (page.startY <= container.scrollTop && page.endY >= container.scrollTop) {\r\n pageIndex = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n if (pageIndex > -1) {\r\n focusPage(pageIndex);\r\n }\r\n }, 50);\r\n\r\n function onScroll(event: any) {\r\n handleScroll(event);\r\n }\r\n\r\n function zoomIn() {\r\n changeZoom(zoom + 0.2);\r\n }\r\n\r\n function zoomOut() {\r\n changeZoom(zoom - 0.2);\r\n }\r\n\r\n function changeZoom(zoomFactor: any) {\r\n if (zoomFactor <= 0.1) return;\r\n setZoom(zoomFactor);\r\n window.localStorage.setItem('zoom', zoomFactor);\r\n let pagesLoaded = loadPages(\r\n pages.map((page) => page.page),\r\n zoomFactor,\r\n );\r\n scrollToPage(pagesLoaded[focusedPage - 1], 'auto');\r\n }\r\n\r\n function nextPage() {\r\n let pageNum = focusedPage + 1;\r\n if (pageNum > numPages) return;\r\n setFocusedPage(pageNum);\r\n // @ts-ignore\r\n scrollToPage(pages[pageNum - 1]);\r\n }\r\n\r\n function previousPage() {\r\n let pageNum = focusedPage - 1;\r\n if (pageNum < 1) return;\r\n setFocusedPage(pageNum);\r\n // @ts-ignore\r\n scrollToPage(pages[pageNum - 1]);\r\n }\r\n\r\n function scrollToPage(page: any, scrollBehavior: any) {\r\n containerRef.current.scrollTo({ top: page.startY, behavior: scrollBehavior || 'smooth' });\r\n }\r\n\r\n function handlePrint() {\r\n printJS(URL.createObjectURL(file.blob));\r\n }\r\n\r\n function handleDownload() {\r\n // @ts-ignore\r\n saveAs(file.blob, document ? document.name : 'agreements');\r\n\r\n if (document) {\r\n registerDownload(document);\r\n }\r\n }\r\n\r\n const clickBackHandler = () => {\r\n navigate(-1);\r\n };\r\n\r\n const pinHandler = () => {\r\n if (!impersonate) {\r\n if (document) {\r\n if (pinned === false) {\r\n setPin(document.id).then(() => {\r\n setPinned(true);\r\n });\r\n } else if (pinned === true) {\r\n removePin(document.id).then(() => {\r\n setPinned(false);\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n const updateSize = () => {\r\n setSize({\r\n x: window.innerWidth,\r\n y: window.innerHeight,\r\n });\r\n };\r\n\r\n const resize = debounce(updateSize, 100);\r\n\r\n const onExpand = () => {\r\n setExpand(true);\r\n };\r\n const onCollapse = () => {\r\n setExpand(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (!pdfDocument) return;\r\n\r\n let promises = [];\r\n for (let i = 0; i < numPages; i++) {\r\n promises.push(pdfDocument.getPage(i + 1));\r\n }\r\n\r\n Promise.all(promises).then((resolved) => {\r\n loadPages(resolved, zoom);\r\n });\r\n }, [pdfDocument]);\r\n\r\n useEffect(() => {\r\n pages.length > 0 && changeZoom(zoom);\r\n }, [size]);\r\n\r\n useEffect(() => {\r\n setScreenSize(screen.width);\r\n window.addEventListener('resize', resize);\r\n return () => {\r\n window.removeEventListener('resize', resize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (shouldPin) {\r\n // @ts-ignore\r\n setPinned(document.isPinned);\r\n }\r\n }, [document]);\r\n\r\n return (\r\n
\r\n {title && }\r\n \r\n {data.data ? (\r\n
\r\n {loading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n {pages.map((page, index) => {\r\n return (\r\n
\r\n {page.show && }\r\n
\r\n );\r\n })}\r\n
\r\n )}\r\n
\r\n ) : (\r\n
\r\n

{t('PDF_VIEWER.NO_DOCUMENT')}

\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default PdfViewer;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { pdfjs } from 'react-pdf';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { returnPdf, getDocAssigment } from '../../../common/services/http/documentsService';\r\nimport Main from '../../layout/main/main';\r\nimport PdfViewer from '../pdfViewer/pdfViewer';\r\nimport ComponentLoader from '../loaders/componentLoader/componentLoader';\r\nimport { RootState } from '../../../redux/store';\r\n\r\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n\r\ninterface IId {\r\n id: number;\r\n}\r\n\r\ninterface IFile {\r\n uint8: string;\r\n blob: string;\r\n}\r\n\r\ninterface IDocument {\r\n label?: string;\r\n}\r\n\r\nconst PdfPage: React.FC = () => {\r\n const [file, setFile] = useState({ uint8: '', blob: '' });\r\n const [loading, setLoading] = useState(true);\r\n const [document, setDocument] = useState({ label: '' });\r\n\r\n // @ts-ignore\r\n let { assignId } = useParams();\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n\r\n useEffect(() => {\r\n getDocAssigment(assignId)\r\n .then((res) => {\r\n returnPdf(`/Documents/Download/${res.data.documentId}`)\r\n .then((e: any) => {\r\n setFile(e);\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n setLoading(false);\r\n });\r\n setDocument(res.data);\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n setLoading(false);\r\n });\r\n }, [impersonate]);\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default PdfPage;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport './agreementCell.scss';\r\n\r\nconst AgreementCell = (props) => {\r\n return (\r\n \r\n \r\n

{props.dataItem.name}

\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AgreementCell;\r\n","import React from 'react';\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\n\r\nimport HeaderCell from '../../../documents/components/cells/headerCell/headerCell';\r\nimport AgreementCell from '../cells/agreementCell/agreementCell';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport '@progress/kendo-theme-default/dist/all.css';\r\nimport '../../../ui/table/table.scss';\r\nimport './agreementsTable.scss';\r\n\r\nconst AgreementTable = ({ agreements }) => {\r\n const { t } = useTranslate();\r\n\r\n return (\r\n
\r\n \r\n {t('AGREEMENTS.NO_DOCUMENTS')}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AgreementTable;\r\n","import React from 'react';\r\n\r\nimport './button.scss';\r\n\r\nconst Button = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React from 'react';\r\n\r\ninterface Props {\r\n logoSource: string;\r\n height?: string;\r\n}\r\n\r\nconst Logo: React.FC = ({ logoSource, height = 60 }) => {\r\n return (\r\n \"Logo\"\r\n );\r\n};\r\n\r\nexport default Logo;\r\n","import React, { useEffect, useState } from 'react';\r\nimport AgreementTable from '../../components/agreementsTable/agreementTable';\r\nimport Button from '../../../ui/button/button';\r\nimport { unacceptedAgreements } from '../../../../common/services/http/agreementService';\r\nimport { useIdentityManager } from '../../../../common/hooks/useIdentityManager';\r\n// @ts-ignore\r\nimport logoImg from '../../assets/logo/sanne-logo-black.png';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\n// @ts-ignore\r\nimport LogoSize from '../../../../common/services/config/brandingStore';\r\nimport Logo from '../../../ui/logo/logo';\r\n\r\nimport './agreements.scss';\r\n\r\nconst Agreements: React.FC = (props) => {\r\n const [agreements, setAgreements] = useState([]);\r\n const identity = useIdentityManager();\r\n const { t } = useTranslate();\r\n\r\n useEffect(() => {\r\n unacceptedAgreements()\r\n .then((r) => {\r\n setAgreements(r.data);\r\n })\r\n .catch((err) => console.log('ERROR: ', err));\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {t('AGREEMENTS.NAME')}\r\n
\r\n
\r\n {t('AGREEMENTS.INFO')}\r\n
\r\n \r\n
\r\n {t('AGREEMENTS.APPROVE')}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Agreements;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useParams, useNavigate, useLocation } from 'react-router-dom';\r\nimport { pdfjs } from 'react-pdf';\r\n\r\nimport { returnPdf } from '../../../../common/services/http/documentsService';\r\nimport { acceptAgreements, getAgreement } from '../../../../common/services/http/agreementService';\r\nimport PdfViewer from '../../../ui/pdfViewer/pdfViewer';\r\nimport ComponentLoader from '../../../ui/loaders/componentLoader/componentLoader';\r\n\r\nimport Logo from '../../../ui/logo/logo';\r\nimport LogoSize from '../../../../common/services/config/brandingStore';\r\nimport Button from '../../../ui/button/button';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport './agreementPdfPage.scss';\r\n\r\n// TODO: prebaciti workera u lokalni fajl\r\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n\r\ninterface IId {\r\n id: string;\r\n}\r\n\r\ninterface IFile {\r\n uint8: string;\r\n blob: string;\r\n}\r\n\r\ninterface IAgreement {\r\n id: number;\r\n name: string;\r\n appId: string;\r\n appName: string;\r\n version: string;\r\n date: string;\r\n documentName: string;\r\n inactive: true;\r\n content: string;\r\n contentType: string;\r\n}\r\n\r\ninterface IAgreementPdfPage {\r\n setShowAgreement?: (value: boolean) => void;\r\n}\r\n\r\nconst AgreementPdfPage: React.FC = (props) => {\r\n const { t } = useTranslate();\r\n const [file, setFile] = useState({ uint8: '', blob: '' });\r\n const [loading, setLoading] = useState(true);\r\n const [agreement, setAgreement] = useState({\r\n id: 0,\r\n name: '',\r\n appId: '',\r\n appName: '',\r\n version: '',\r\n date: '',\r\n documentName: '',\r\n inactive: true,\r\n content: '',\r\n contentType: '',\r\n });\r\n\r\n const location = useLocation();\r\n const dataItem = location.state;\r\n\r\n // @ts-ignore\r\n let { assignId } = useParams();\r\n let navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n getAgreement(assignId)\r\n .then((r) => {\r\n setAgreement(r.data);\r\n returnPdf(`/Users/agreements/${assignId}/download`)\r\n .then((e: any) => {\r\n setFile(e);\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n setLoading(false);\r\n });\r\n })\r\n .catch((err) => {\r\n console.log('ERROR: ', err);\r\n });\r\n }, [assignId]);\r\n\r\n const accept = () => {\r\n acceptAgreements(assignId).then(() => {\r\n if (props.setShowAgreement !== undefined) {\r\n props.setShowAgreement(false);\r\n navigate('/');\r\n }\r\n });\r\n };\r\n\r\n const reject = () => {\r\n navigate('/agreements/declined');\r\n };\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{agreement.name}

\r\n {!dataItem && (\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n )}\r\n \r\n
\r\n\r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default AgreementPdfPage;\r\n","import React from 'react';\r\nimport Button from '../../../ui/button/button';\r\nimport { useIdentityManager } from '../../../../common/hooks/useIdentityManager';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport './login.scss';\r\n\r\nconst Login = () => {\r\n const identity = useIdentityManager();\r\n const { t } = useTranslate();\r\n\r\n return (\r\n
\r\n Logo\r\n {t('LOGIN.WELCOME')}\r\n \r\n\r\n {identity.hasForgotPassword() &&\r\n
identity.forgotPassword()}>{t('LOGIN.FORGOT_PASSWORD')}
}\r\n\r\n © {t('LOGIN.COPYRIGHT')}\r\n
\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React from 'react';\r\nimport Button from '../../../ui/button/button';\r\nimport { useIdentityManager } from '../../../../common/hooks/useIdentityManager';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport './notAuthorized.scss';\r\n\r\nconst NotAuthorized = () => {\r\n const identity = useIdentityManager();\r\n const { t } = useTranslate();\r\n\r\n return (\r\n
\r\n Logo\r\n {t('LOGIN.NOT_AUTHORIZED')}\r\n \r\n © {t('LOGIN.COPYRIGHT')}\r\n
\r\n )\r\n ;\r\n};\r\n\r\nexport default NotAuthorized;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport Icon from '../icon/icon';\r\nimport { hasBoards } from '../../../common/services/http/analysisContentService';\r\n\r\nimport './navigation.scss';\r\n\r\nconst Navigation: React.FC = () => {\r\n const [showBoards, setShowBoards] = useState(true);\r\n const svgContainerClass: string = `svg-container`;\r\n const svgContainerActiveClass: string = `svg-container-active`;\r\n const noPropagation = (e: any) => e.stopPropagation();\r\n\r\n useEffect(() => {\r\n hasBoards().then((r) => {\r\n setShowBoards(r.hasBoards);\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n (isActive ? svgContainerActiveClass : svgContainerClass)}>\r\n {({ isActive }) => (isActive ? :\r\n )}\r\n \r\n {showBoards && (\r\n (isActive ? svgContainerActiveClass : svgContainerClass)}>\r\n {({ isActive }) => (isActive ? :\r\n )}\r\n \r\n )}\r\n\r\n (isActive ? svgContainerActiveClass : svgContainerClass)}>\r\n {({ isActive }) =>\r\n isActive ? :\r\n \r\n }\r\n \r\n\r\n {/* (isActive ? svgContainerActiveClass : svgContainerClass)}>*/}\r\n {/* {({ isActive }) => (isActive ? : )}*/}\r\n {/**/}\r\n
\r\n );\r\n};\r\n\r\nexport default Navigation;\r\n","export default __webpack_public_path__ + \"static/media/logoSidebar.0edf7ae1.svg\";","import React from 'react';\r\nimport Navigation from '../../ui/navigation/navigation';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\n\r\n// @ts-ignore\r\nimport LogoSidebar from '../../../assets/images/logoSidebar.svg';\r\n\r\nimport './sidebar.scss';\r\n\r\nconst Sidebar = () => {\r\n const { t } = useTranslate();\r\n\r\n return (\r\n
\r\n {t('LP')}\r\n \r\n
\r\n CapInteract\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Sidebar;\r\n","import React from 'react';\r\nimport Icon from '../../icon/icon';\r\n\r\nconst NavigationButton = (props) => {\r\n return (\r\n
\r\n
{props.label}
\r\n {props.iconName && }\r\n
\r\n );\r\n};\r\n\r\nexport default NavigationButton;\r\n","import React, { useRef } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useIdentityManager } from '../../../common/hooks/useIdentityManager';\r\nimport NavigationButton from './navigationButton/navigationButton';\r\nimport useClickOutside from '../../../common/hooks/useClickOutside';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\n\r\nimport './userNavigation.scss';\r\n\r\ninterface INavigation {\r\n setNav: (state: boolean) => void;\r\n id: string;\r\n}\r\n\r\nconst UserNavigation: React.FC = ({ setNav, id }) => {\r\n const identity = useIdentityManager();\r\n const wrapperRef = useRef(null);\r\n const { t } = useTranslate();\r\n\r\n const clickOutsideHandler = () => {\r\n setNav(false);\r\n };\r\n useClickOutside(wrapperRef, clickOutsideHandler, id);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default UserNavigation;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../redux/store';\r\nimport UserNavigation from '../userNavigation/userNavigation';\r\n\r\nimport './userIcon.scss';\r\n\r\ninterface UserIconIntf {\r\n img?: any;\r\n id: string;\r\n}\r\n\r\nconst UserIcon: React.FC = ({ id }) => {\r\n const [userName, setUserName] = useState('');\r\n const [nav, setNav] = useState(false);\r\n\r\n const getInitials = (name: string) => {\r\n if (name.includes(' ')) {\r\n return name\r\n .split(' ')\r\n .map((word) => {\r\n if (!word[0].startsWith('(')) {\r\n return word[0];\r\n }\r\n })\r\n .join('');\r\n }\r\n return name[0];\r\n };\r\n\r\n const user: string | null | undefined = useSelector((state: RootState) => state.user.name);\r\n\r\n useEffect(() => {\r\n user && setUserName(getInitials(user.trim()));\r\n }, [user]);\r\n\r\n const clickHandler = (e: any) => {\r\n e.stopPropagation();\r\n setNav(!nav);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {nav && }\r\n
\r\n );\r\n};\r\n\r\nexport default UserIcon;\r\n","const EmailStore = {\r\n default_email: 'support@sanne.com',\r\n};\r\n\r\nexport default EmailStore;","import React, { useRef, useState } from 'react';\r\n\r\nimport useClickOutside from '../../../common/hooks/useClickOutside';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\n// @ts-ignore\r\nimport EmailStore from '../../../common/services/config/emailStore';\r\n\r\nimport './contactTooltip.scss';\r\n\r\ninterface IContactTooltip {\r\n setTooltip: (state: boolean) => void;\r\n id?: string;\r\n}\r\n\r\nconst ContactTooltip: React.FC = ({ setTooltip, id }) => {\r\n const [copySuccess, setCopySuccess] = useState('');\r\n const wrapperRef = useRef(null);\r\n const { t } = useTranslate();\r\n\r\n const clickOutsideHandler = () => {\r\n setTooltip(false);\r\n };\r\n\r\n const copyToClipBoard = async (copyMe: string) => {\r\n try {\r\n await navigator.clipboard.writeText(copyMe);\r\n setCopySuccess(t('CONTACT_TOOLTIP.SUCCESS_TEXT'));\r\n } catch (err) {\r\n setCopySuccess(t('CONTACT_TOOLTIP.FAIL_TEXT'));\r\n }\r\n };\r\n\r\n useClickOutside(wrapperRef, clickOutsideHandler, id);\r\n\r\n return (\r\n
\r\n

{t('CONTACT_TOOLTIP.TEXT1')}

\r\n

\r\n {t('CONTACT_TOOLTIP.TEXT2')} {EmailStore.default_email}\r\n

\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ContactTooltip;\r\n","export default __webpack_public_path__ + \"static/media/logoNav.d08f853c.svg\";","import React, { useEffect, useRef, useState } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { useIdentityManager } from '../../../common/hooks/useIdentityManager';\r\nimport useClickOutside from '../../../common/hooks/useClickOutside';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\nimport { hasBoards } from '../../../common/services/http/analysisContentService';\r\n// @ts-ignore\r\nimport LogoNav from '../../../assets/images/logoNav.svg';\r\n\r\nimport './responsiveNavigation.scss';\r\n\r\ninterface INavigation {\r\n setNav: (state: boolean) => void;\r\n id?: string;\r\n}\r\n\r\nconst ResponsiveNavigation: React.FC = ({ setNav, id }) => {\r\n const [showBoards, setShowBoards] = useState(true);\r\n const identity = useIdentityManager();\r\n const wrapperRef = useRef(null);\r\n const { t } = useTranslate();\r\n\r\n const clickOutsideHandler = () => {\r\n setNav(false);\r\n };\r\n\r\n useClickOutside(wrapperRef, clickOutsideHandler, id);\r\n\r\n useEffect(() => {\r\n hasBoards().then((r) => {\r\n setShowBoards(r.hasBoards);\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n (isActive ? `active-link` : ``)} onClick={() => setNav(false)}>\r\n \r\n \r\n {showBoards && (\r\n (isActive ? `active-link` : ``)}\r\n onClick={() => setNav(false)}>\r\n \r\n \r\n )}\r\n (isActive ? `active-link` : ``)}\r\n onClick={() => setNav(false)}>\r\n \r\n \r\n (isActive ? `active-link` : ``)}\r\n onClick={() => setNav(false)}>\r\n \r\n \r\n (isActive ? `active-link` : ``)}\r\n onClick={() => setNav(false)}>\r\n \r\n \r\n\r\n \r\n {\"CapInteract\r\n
\r\n );\r\n};\r\n\r\nexport default ResponsiveNavigation;\r\n","const setImpersonationToLS = (impersonate, impersonateId, impersonateName) => {\r\n sessionStorage.setItem('impersonate', impersonate);\r\n sessionStorage.setItem('impersonateId', impersonateId);\r\n sessionStorage.setItem('impersonateName', impersonateName);\r\n};\r\n\r\nexport default setImpersonationToLS;\r\n","const useForceUpdate = () => {\r\n return window.location.reload();\r\n};\r\n\r\nexport default useForceUpdate;\r\n","import React, { useRef } from 'react';\r\nimport useClickOutside from '../../../common/hooks/useClickOutside';\r\nimport { IDocuSignData } from '../../../common/services/http/docuSignService';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RootState } from '../../../redux/store';\r\nimport { CLOSE_DOCUSIGN_DROPDOWN, SWITCH_MODAL, SWITCH_REDIRECTING_TO_DS_MODAL } from '../../../redux/types';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\n\r\nimport './docuSignDropdown.scss';\r\n\r\ninterface INavigation {\r\n id: string;\r\n signData: any;\r\n}\r\n\r\nconst DocuSignDropdown: React.FC = ({ id, signData }) => {\r\n const wrapperRef = useRef(null);\r\n const dispatch = useDispatch();\r\n const impersonate = useSelector((state: RootState) => state.impersonate.impersonate);\r\n\r\n const { t } = useTranslate();\r\n\r\n const goToDocuSign = (item: IDocuSignData): void => {\r\n if (impersonate) {\r\n dispatch({ type: SWITCH_MODAL });\r\n } else {\r\n dispatch({ type: SWITCH_REDIRECTING_TO_DS_MODAL, payload: item });\r\n }\r\n };\r\n\r\n const clickOutsideHandler = (): void => {\r\n dispatch({ type: CLOSE_DOCUSIGN_DROPDOWN });\r\n };\r\n\r\n useClickOutside(wrapperRef, clickOutsideHandler, id);\r\n\r\n return (\r\n <>\r\n {signData.length > 0 && (\r\n
\r\n {signData.map((item, key) => (\r\n
\r\n {item.name}\r\n goToDocuSign(item)}>\r\n {item.type !== 'signer' ? t('DOCUSIGN.VIEW_BUTTON') : item.isSigned === true ? t('DOCUSIGN.SIGNED_BUTTON') : t('DOCUSIGN.SIGN_BUTTON')}\r\n \r\n
\r\n ))}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DocuSignDropdown;\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { IMPERSONATE_OFF, SWITCH_DOCUSIGN_DROPDOWN } from '../../../redux/types';\r\nimport { RootState } from '../../../redux/store';\r\nimport Logo from '../../ui/logo/logo';\r\nimport UserIcon from '../../ui/userIcon/userIcon';\r\nimport ContactTooltip from '../../ui/contactTooltip/contactTooltip';\r\nimport ResponsiveNavigation from '../../ui/responsiveNavigation/responsiveNavigation';\r\nimport Icon from '../../ui/icon/icon';\r\nimport setImpersonationToLS from '../../../common/utility/setImpersonationToLS';\r\nimport LogoSize from '../../../common/services/config/brandingStore';\r\nimport useForceUpdate from '../../../common/hooks/useForceUpdate';\r\nimport './topbar.scss';\r\nimport FilterCtx from '../../../context/filterContext/filterCtx';\r\nimport DocuSignDropdown from '../../ui/docuSignDropdown/docuSignDropdown';\r\nimport { getSignRequirements } from '../../../common/services/http/docuSignService';\r\n\r\ninterface IImpersonate {\r\n canImpersonate: boolean;\r\n impersonate: boolean;\r\n impersonateId: string;\r\n impersonateName: string;\r\n}\r\n\r\nconst Topbar = () => {\r\n const [contactToggle, setContactToggle] = useState(false);\r\n const [signData, setSignData] = useState([]);\r\n const [responsiveNav, setResponsiveNav] = useState(false);\r\n const [impersonate, setImpersonate] = useState({\r\n canImpersonate: false,\r\n impersonate: false,\r\n impersonateId: '',\r\n impersonateName: '',\r\n });\r\n const dispatch = useDispatch();\r\n\r\n const handleContactToggle = () => {\r\n setContactToggle(!contactToggle);\r\n };\r\n\r\n const responsiveNavId = 'ResponsiveNavId';\r\n const docuSignDropdownId = 'DocuSignDropdownId';\r\n const helpToolTipId = 'HelpToolTipId';\r\n const userIconId = 'userIconId';\r\n\r\n const filterCtx: any = useContext(FilterCtx);\r\n\r\n const impersonateClickHandler = () => {\r\n dispatch({ type: IMPERSONATE_OFF });\r\n setImpersonationToLS('', '', '');\r\n filterCtx.clearAllFilters();\r\n useForceUpdate();\r\n };\r\n\r\n const impersonateRedux = useSelector((state: RootState) => state.impersonate);\r\n const docuSignDropdownRedux = useSelector((state: RootState) => state.docuSignDropdown.docuSignDropdown);\r\n\r\n useEffect(() => {\r\n // @ts-ignore\r\n setImpersonate(impersonateRedux);\r\n getSignRequirements().then((res) => {\r\n setSignData(res);\r\n });\r\n }, [impersonateRedux]);\r\n\r\n const getSignData = () => {\r\n getSignRequirements()\r\n .then((res) => {\r\n setSignData(res);\r\n })\r\n .then(() => {\r\n dispatch({ type: SWITCH_DOCUSIGN_DROPDOWN });\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n {signData && signData.length > 0 && (\r\n
\r\n
\r\n \r\n
\r\n {docuSignDropdownRedux && }\r\n
\r\n )}\r\n {impersonate.canImpersonate && (\r\n \r\n \r\n {impersonate && impersonate.impersonate && `${impersonate.impersonateName}`}\r\n \r\n )}\r\n {impersonate && impersonate.impersonate && impersonate.canImpersonate && (\r\n \r\n )}\r\n setResponsiveNav(!responsiveNav)} />\r\n {responsiveNav && }\r\n
\r\n \r\n {contactToggle && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Topbar;\r\n","import React, { useEffect, useCallback, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { SWITCH_MODAL } from '../../../../redux/types';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useClickOutside from '../../../../common/hooks/useClickOutside';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport Icon from '../../icon/icon';\r\n\r\nimport './actionForbidden.scss';\r\n\r\nconst modalElement = document.getElementById('modal-root');\r\n\r\nexport const ActionForbidden = () => {\r\n const showModal = useSelector((state: RootState) => state.modal.showModal);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslate();\r\n\r\n const close = () => {\r\n dispatch({ type: SWITCH_MODAL });\r\n };\r\n\r\n const modalRef = useRef(null);\r\n\r\n const handleEscape = useCallback(\r\n (event) => {\r\n if (event.keyCode === 27) close();\r\n },\r\n [close]\r\n );\r\n\r\n useEffect(() => {\r\n if (showModal) document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [handleEscape, showModal]);\r\n\r\n useClickOutside(modalRef, close);\r\n\r\n return createPortal(\r\n showModal ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n

{t('ACTION_FORBIDDEN.TEXT1')}

\r\n

{t('ACTION_FORBIDDEN.TEXT2')}

\r\n
\r\n
\r\n ) : null,\r\n modalElement\r\n );\r\n};\r\n\r\nexport default ActionForbidden;\r\n","import React from 'react';\r\nimport { useInternationalization } from '@progress/kendo-react-intl';\r\n\r\nconst AmountCell = ({ measureInfo, dataItem, field, rowType }) => {\r\n const intl = useInternationalization();\r\n\r\n if (rowType === 'groupHeader') {\r\n return null;\r\n }\r\n\r\n //let formattedAmount = intl.toString(dataItem[field] * dataItem.operatorApplied, 'n2');\r\n let formattedAmount = intl.toString(dataItem[field], 'n2');\r\n\r\n return (\r\n \r\n
{measureInfo ? formattedAmount : dataItem[field]}
\r\n \r\n );\r\n};\r\n\r\nexport default AmountCell;\r\n","import React, { useEffect, useCallback, useRef, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { SWITCH_CASH_FLOW_MODAL } from '../../../../../../redux/types';\r\nimport { RootState } from '../../../../../../redux/store';\r\nimport { groupBy } from '@progress/kendo-data-query';\r\nimport { setExpandedState, setGroupIds } from '@progress/kendo-react-data-tools';\r\nimport useClickOutside from '../../../../../../common/hooks/useClickOutside';\r\nimport { getCashflowData } from '../../../../../../common/services/http/analysisContentService';\r\nimport useTranslate from '../../../../../../common/hooks/useTranslate';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport AmountCell from '../cells/amountCell/amountCell';\r\nimport Icon from '../../../../../ui/icon/icon';\r\nimport DateCell from '../../../../../documents/components/cells/dateCell/dateCell';\r\nimport ComponentLoader from '../../../../../ui/loaders/componentLoader/componentLoader';\r\nimport TextCell from '../../../../../ui/table/cells/textCell/textCell';\r\n\r\nimport './cashFlowModal.scss';\r\n\r\nconst modalElement = document.getElementById('modal-root');\r\n\r\nconst initialGroup = [\r\n {\r\n field: 'objectName',\r\n },\r\n];\r\n\r\nconst processWithGroups = (data, group) => {\r\n const newDataState = groupBy(data, group);\r\n setGroupIds({\r\n data: newDataState,\r\n group: group,\r\n });\r\n return newDataState;\r\n};\r\n\r\nexport const CashFlowModal = () => {\r\n const [displayData, setDisplayData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [measureInfo, setMeasureInfo] = useState({});\r\n const [collapsedState, setCollapsedState] = React.useState([]);\r\n\r\n const { t } = useTranslate();\r\n\r\n const { investorId } = useParams();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const modalRef = useRef(null);\r\n\r\n const showCashFlowModal = useSelector((state: RootState) => state.cashFlowModal.showModal);\r\n const data = useSelector((state: RootState) => state.cashFlowModal.data);\r\n\r\n const closeDialog = () => {\r\n dispatch({ type: SWITCH_CASH_FLOW_MODAL });\r\n };\r\n\r\n const handleEscape = useCallback(\r\n (event) => {\r\n if (event.keyCode === 27) closeDialog();\r\n },\r\n [closeDialog],\r\n );\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n if (data && data.cashFlowInfo) {\r\n getCashflowData(data.boardId, data.cashFlowInfo.nodeId, data.cashFlowInfo.valueId, investorId ? investorId : data.investorObjectId)\r\n .then((res) => {\r\n setDisplayData(processWithGroups(res.data, initialGroup));\r\n if (data.cashFlowInfo.valueInfo) {\r\n setMeasureInfo(data.cashFlowInfo.valueInfo.measure);\r\n }\r\n setLoading(false);\r\n })\r\n .catch((e) => console.log('cashflow error', e));\r\n }\r\n if (showCashFlowModal) document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n setLoading(true);\r\n setDisplayData([]);\r\n setMeasureInfo({});\r\n setCollapsedState([]);\r\n };\r\n }, [data, showCashFlowModal]);\r\n\r\n useClickOutside(modalRef, closeDialog);\r\n\r\n const onExpandChange = React.useCallback(\r\n (event) => {\r\n const item = event.dataItem;\r\n if (item.groupId) {\r\n const newCollapsedIds = !event.value ? [...collapsedState, item.groupId] : collapsedState.filter((groupId) => groupId !== item.groupId);\r\n setCollapsedState(newCollapsedIds);\r\n }\r\n },\r\n [collapsedState],\r\n );\r\n\r\n const newData = setExpandedState({\r\n data: displayData,\r\n collapsedIds: collapsedState,\r\n });\r\n\r\n const FormattedAmountCell = (props) => {\r\n return ;\r\n };\r\n\r\n // Export to Excel\r\n const _exportGrid = React.useRef(null);\r\n\r\n const gridExport = (): void => {\r\n if (_exportGrid.current !== null) {\r\n _exportGrid.current.save();\r\n }\r\n };\r\n\r\n const amountTitle = () => {\r\n let currency = data.selectedCurrency && (data.selectedCurrency.currency === '_' ? data.dataItem.currency : `${data.selectedCurrency.currencySymbol}${data.selectedCurrency.currencyShortName}`);\r\n return t('BOARDS.GRID_FIELD.AMOUNT') + ' ' + currency;\r\n }\r\n\r\n return createPortal(\r\n showCashFlowModal ? (\r\n
\r\n
\r\n
\r\n
\r\n {data.dataItem && data.dataItem.name && {data.dataItem.name}}\r\n {data.columnName && {data.columnName}:}\r\n {data.value && {data.value}}\r\n {data.selectedCurrency && {data.selectedCurrency.currencySymbol}{data.selectedCurrency.currencyShortName}\r\n }\r\n {data.selectedCurrency && data.selectedCurrency.currency === '_' && {data.dataItem.currency}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {!loading ? (\r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n ) : null,\r\n modalElement,\r\n );\r\n};\r\n\r\nexport default CashFlowModal;\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { SWITCH_REDIRECTING_TO_DS_MODAL } from '../../../../redux/types';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport Icon from '../../icon/icon';\r\nimport { Orbit } from '@uiball/loaders';\r\nimport { generateDocuSignURL, IDocuSignUri } from '../../../../common/services/http/docuSignService';\r\nimport Axios from 'axios';\r\n\r\nimport './docuSignLoadingModal.scss';\r\n\r\nconst modalElement = document.getElementById('modal-root');\r\n\r\nexport const DocuSignLoadingModal = () => {\r\n const showRedirectingModal = useSelector((state: RootState) => state.redirectingModal.showRedirectingModal);\r\n const currentRedirectingItem = useSelector((state: RootState) => state.redirectingModal.currentItem);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslate();\r\n\r\n const modalRef = useRef(null);\r\n\r\n const source = Axios.CancelToken.source();\r\n const cancelToken = source.token;\r\n\r\n const close = () => {\r\n dispatch({ type: SWITCH_REDIRECTING_TO_DS_MODAL });\r\n source.cancel();\r\n };\r\n\r\n useEffect(() => {\r\n if (showRedirectingModal) {\r\n generateDocuSignURL(+currentRedirectingItem.recipientId, cancelToken)\r\n .then((res: IDocuSignUri) => {\r\n location.href = res.uri;\r\n })\r\n .catch((err) => {\r\n if (Axios.isCancel(err)) {\r\n console.log('Post request cancelled');\r\n }\r\n });\r\n }\r\n }, [showRedirectingModal]);\r\n\r\n return createPortal(\r\n showRedirectingModal ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{t('DOCUSIGN.REDIRECTING_TO_DOCUSIGN')}

\r\n \r\n
\r\n
\r\n
\r\n ) : null,\r\n modalElement\r\n );\r\n};\r\n\r\nexport default DocuSignLoadingModal;\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport './fade.scss';\r\n\r\nconst Fade = ({ show, children, fadeIn = null, fadeOut = null, time = .5 }) => {\r\n const [shouldRender, setRender] = useState(show);\r\n\r\n useEffect(() => {\r\n if (show) setRender(true);\r\n }, [show]);\r\n\r\n const onAnimationEnd = () => {\r\n if (!show) setRender(false);\r\n };\r\n\r\n const animationFadeIn = {\r\n animation: `${show ? \"fadeIn\" : \"\"} ${time}s`\r\n }\r\n\r\n const animationFadeOut = {\r\n animation: `${show ? \"\" : \"fadeOut\"} ${time}s`\r\n }\r\n\r\n const animationFadeInOut = {\r\n animation: `${show ? \"fadeIn\" : \"fadeOut\"} ${time}s`\r\n }\r\n\r\n return (\r\n shouldRender && (\r\n \r\n {children}\r\n \r\n )\r\n );\r\n};\r\n\r\nexport default Fade;","import React, { useCallback, useEffect, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { CLOSE_MULTIPLE_DOWNLOAD_MODAL } from '../../../../redux/types';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useClickOutside from '../../../../common/hooks/useClickOutside';\r\nimport Icon from '../../icon/icon';\r\nimport Fade from '../../fade/fade';\r\n\r\nimport './multipleDownload.scss';\r\n\r\nconst modalElement = document.getElementById('modal-root');\r\n\r\nexport const MultipleDownloadModal = () => {\r\n const showModal = useSelector((state: RootState) => state.multipleDownload.showModal);\r\n const modalInfo = useSelector((state: RootState) => state.multipleDownload.modalInfo);\r\n const dispatch = useDispatch();\r\n\r\n const close = () => {\r\n dispatch({ type: CLOSE_MULTIPLE_DOWNLOAD_MODAL });\r\n };\r\n\r\n const modalRef = useRef(null);\r\n\r\n const handleEscape = useCallback(\r\n (event) => {\r\n if (event.keyCode === 27) close();\r\n },\r\n [close],\r\n );\r\n\r\n useEffect(() => {\r\n if (showModal) {\r\n setTimeout(() => {\r\n dispatch({ type: CLOSE_MULTIPLE_DOWNLOAD_MODAL });\r\n }, 3000)\r\n }\r\n if (showModal) document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [handleEscape, showModal]);\r\n\r\n useClickOutside(modalRef, close);\r\n\r\n return createPortal(\r\n (\r\n \r\n
\r\n \r\n
\r\n {modalInfo && {modalInfo.text}}\r\n
\r\n
\r\n
\r\n ),\r\n modalElement,\r\n );\r\n};\r\n\r\nexport default MultipleDownloadModal;\r\n","import React, { useCallback, useEffect, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { CLOSE_REACHED_LIMIT_MODAL } from '../../../../redux/types';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useClickOutside from '../../../../common/hooks/useClickOutside';\r\nimport Icon from '../../icon/icon';\r\nimport Fade from '../../fade/fade';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport '../multipleDownload/multipleDownload.scss';\r\n\r\nconst modalElement = document.getElementById('modal-root');\r\n\r\nexport const SelectedDocsLimitModal = () => {\r\n const reachedLimit = useSelector((state: RootState) => state.multipleDownload.reachedLimit);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const close = () => {\r\n dispatch({ type: CLOSE_REACHED_LIMIT_MODAL });\r\n };\r\n\r\n const modalRef = useRef(null);\r\n\r\n const handleEscape = useCallback(\r\n (event) => {\r\n if (event.keyCode === 27) close();\r\n },\r\n [close]\r\n );\r\n\r\n useEffect(() => {\r\n if (reachedLimit) {\r\n setTimeout(() => {\r\n dispatch({ type: CLOSE_REACHED_LIMIT_MODAL });\r\n }, 5000);\r\n }\r\n if (reachedLimit) document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [handleEscape, reachedLimit]);\r\n\r\n useClickOutside(modalRef, close);\r\n\r\n return createPortal(\r\n \r\n
\r\n \r\n
\r\n {t('DOCUMENTS_TABLE.REACHED_LIMIT_PRIMARY')}\r\n
\r\n {t('DOCUMENTS_TABLE.REACHED_LIMIT_SECONDARY')}\r\n
\r\n
\r\n
,\r\n modalElement\r\n );\r\n};\r\n\r\nexport default SelectedDocsLimitModal;\r\n","import React from 'react';\r\nimport { Outlet } from 'react-router-dom';\r\nimport Sidebar from '../sidebar/sidebar';\r\nimport Topbar from '../topbar/topbar';\r\nimport { ActionForbidden } from '../../ui/modal/actionForbidden/actionForbidden';\r\nimport CashFlowModal from '../../dashboards/components/widget/cashflow/cashFlowModal/cashFlowModal';\r\nimport DocuSignLoadingModal from '../../ui/modal/docuSignLoadingModal/docuSignLoadingModal';\r\nimport MultipleDownloadModal from '../../ui/modal/multipleDownload/multipleDownload';\r\nimport SelectedDocsLimitModal from '../../ui/modal/selectedDocsLimitModal/selectedDocsLimitModal';\r\n\r\nimport './basicScreen.scss';\r\n\r\nconst BasicScreen: React.FC = () => {\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default BasicScreen;\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { debounce } from 'lodash';\r\n\r\nimport { getImpersonate } from '../../../../common/services/http/userService';\r\nimport { RootState } from '../../../../redux/store';\r\nimport { IMPERSONATE_ON, SET_IMPERSONATE_ID, SET_IMPERSONATE_NAME } from '../../../../redux/types';\r\nimport Main from '../../../layout/main/main';\r\nimport Icon from '../../../ui/icon/icon';\r\nimport setImpersonationToLS from '../../../../common/utility/setImpersonationToLS';\r\n\r\nimport './impersonate.scss';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport FilterCtx from '../../../../context/filterContext/filterCtx';\r\nimport OutletLoader from '../../../ui/loaders/outletLoader/outletLoader';\r\nimport useForceUpdate from '../../../../common/hooks/useForceUpdate';\r\n\r\nconst SelectCell = (props: any) => {\r\n const [checked, setChecked] = useState(false);\r\n\r\n const dispatch = useDispatch();\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n const filterCtx: any = useContext(FilterCtx);\r\n\r\n const clickOnHandler = () => {\r\n dispatch({ type: IMPERSONATE_ON });\r\n dispatch({ type: SET_IMPERSONATE_ID, value: props.dataItem.subjectId });\r\n dispatch({ type: SET_IMPERSONATE_NAME, value: props.dataItem.name });\r\n setImpersonationToLS(true, props.dataItem.subjectId, props.dataItem.name);\r\n setChecked(true);\r\n filterCtx.clearAllFilters();\r\n useForceUpdate();\r\n };\r\n\r\n const clickOffHandler = () => {\r\n setChecked(false);\r\n };\r\n\r\n useEffect(() => {\r\n impersonate.impersonateId === props.dataItem.subjectId ? setChecked(true) : setChecked(false);\r\n }, [impersonate]);\r\n\r\n return (\r\n \r\n {checked ? : }\r\n \r\n );\r\n};\r\n\r\nconst Impersonate: React.FC = () => {\r\n const { t } = useTranslate();\r\n const [impersonateList, setImpersonateList] = useState([]);\r\n const [impersonatorName, setImpersonatorName] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n impersonatorName ? getImpersonate(impersonatorName).then((r) => setImpersonateList(r.data)) : getImpersonate().then((r) => setImpersonateList(r.data));\r\n setLoading(false);\r\n }, [impersonatorName]);\r\n\r\n const handleInputChange = debounce((e) => {\r\n setImpersonatorName(e.target.value);\r\n }, 200);\r\n // @ts-ignore\r\n return (\r\n
\r\n
\r\n \r\n
\r\n\r\n {loading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Impersonate;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useParams, useSearchParams } from 'react-router-dom';\r\nimport { IDocuSignEnvelopeData, updateEnvelopeState } from '../../../../common/services/http/docuSignService';\r\nimport Logo from '../../../ui/logo/logo';\r\nimport { useIdentityManager } from '../../../../common/hooks/useIdentityManager';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport Icon from '../../../ui/icon/icon';\r\nimport { Orbit } from '@uiball/loaders';\r\n\r\nimport './docuSignRedirect.scss';\r\n\r\nconst DocuSignRedirect = () => {\r\n const [eventState, setEventState] = useState('cancel');\r\n let { recipientId } = useParams();\r\n const [paramsState] = useSearchParams();\r\n const eventStatus = paramsState.get('event');\r\n const identity = useIdentityManager();\r\n const { t } = useTranslate();\r\n\r\n const user: string | null | undefined = useSelector((state: RootState) => state.user.name);\r\n\r\n useEffect(() => {\r\n if (eventStatus === 'decline' || eventStatus === 'signing_complete') {\r\n setEventState('loading');\r\n updateEnvelopeState(+recipientId)\r\n .then((res: IDocuSignEnvelopeData) => {\r\n setEventState(eventStatus);\r\n })\r\n .catch(() => {\r\n setEventState('error');\r\n });\r\n } else if (eventStatus === 'cancel' || eventStatus === 'viewing_complete') {\r\n setEventState(eventStatus);\r\n } else {\r\n setEventState('error');\r\n }\r\n }, []);\r\n\r\n let url = location.hostname === 'localhost' ? location.hostname + ':' + location.port : location.hostname;\r\n let redirect = 'https://' + url;\r\n\r\n return (\r\n
\r\n
\r\n {eventState === 'error' && }\r\n \r\n
\r\n\r\n
\r\n {eventState !== 'error' &&
{t('DOCUSIGN.REDIRECT_INFO')}
}\r\n
\r\n {eventState === 'error' && {t('DOCUSIGN.ERROR_STATUS')}}\r\n {eventState === 'cancel'\r\n ? t('DOCUSIGN.CANCEL_TEXT')\r\n : eventState === 'loading'\r\n ? t('DOCUSIGN.UPDATING_TEXT')\r\n : eventState === 'viewing_complete'\r\n ? t('DOCUSIGN.VIEW_COMPLETE_TEXT')\r\n : eventState === 'error'\r\n ? t('DOCUSIGN.ERROR_TEXT')\r\n : t('DOCUSIGN.SUCCESS_TEXT')}\r\n \r\n {eventState === 'cancel'\r\n ? t('DOCUSIGN.CANCEL_STATUS')\r\n : eventState === 'loading'\r\n ? t('DOCUSIGN.PENDING_STATUS')\r\n : eventState === 'viewing_complete'\r\n ? t('DOCUSIGN.VIEW_COMPLETE_STATUS')\r\n : eventState === 'decline'\r\n ? t('DOCUSIGN.DECLINED_STATUS')\r\n : eventState === 'error'\r\n ? ''\r\n : t('DOCUSIGN.SUCCESS_STATUS')}\r\n \r\n {eventState === 'error' &&
{t('DOCUSIGN.ERROR_MESSAGE')}
}\r\n\r\n {eventState === 'loading' && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n \r\n {t('DOCUSIGN.SIGNED_PERSON')} {user}\r\n \r\n
\r\n {eventState !== 'loading' && (\r\n <>\r\n \r\n {t('DOCUSIGN.BACK_BUTTON')}\r\n \r\n
identity.signOut()}>\r\n {t('DOCUSIGN.LOGOUT')}\r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default DocuSignRedirect;\r\n","import React from 'react';\r\nimport useTranslate from '../../../common/hooks/useTranslate';\r\nimport Icon from '../icon/icon';\r\nimport Logo from '../logo/logo';\r\nimport { useIdentityManager } from '../../../common/hooks/useIdentityManager';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../redux/store';\r\n\r\nimport './noMatch.scss';\r\n\r\nconst NoMatch: React.FC = () => {\r\n const { t } = useTranslate();\r\n const identity = useIdentityManager();\r\n const user: string | null | undefined = useSelector((state: RootState) => state.user.name);\r\n\r\n let url = location.hostname === 'localhost' ? location.hostname + ':' + location.port : location.hostname;\r\n let redirect = 'https://' + url;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n {t('NO_MATCH.TEXT1')}\r\n {t('NO_MATCH.TEXT2')}\r\n
\r\n
\r\n

{t('NO_MATCH.INFO_TEXT1')}

\r\n

{t('NO_MATCH.INFO_TEXT2')}

\r\n \r\n {t('NO_MATCH.INFO_TEXT_MAIL')}\r\n \r\n
\r\n
\r\n \r\n {t('NO_MATCH.SIGNED_PERSON')} {user}\r\n \r\n
\r\n\r\n
\r\n \r\n {t('NO_MATCH.BACK_BUTTON')}\r\n \r\n
identity.signOut()}>\r\n {t('NO_MATCH.LOGOUT')}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default NoMatch;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Outlet, useMatch, Navigate, useNavigate } from 'react-router-dom';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { useDispatch } from 'react-redux';\r\nimport { getActiveInvestors, IInvestor } from '../../../../common/services/http/investorsService';\r\nimport { SET_INVESTOR } from '../../../../redux/types';\r\n\r\nimport Main from '../../../layout/main/main';\r\nimport ComponentLoader from '../../../ui/loaders/componentLoader/componentLoader';\r\n\r\nimport './board.scss';\r\nimport OutletLoader from '../../../ui/loaders/outletLoader/outletLoader';\r\n\r\nconst BoardsContainer: React.FC = () => {\r\n const { t } = useTranslate();\r\n let match = useMatch('/boards');\r\n\r\n const [investorLoading, setInvestorLoading] = useState(true);\r\n const [investors, setInvestors] = useState([]);\r\n const [noInvestors, setNoInvestors] = useState(false);\r\n\r\n const dispatch = useDispatch();\r\n let navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n getActiveInvestors()\r\n .then((res: IInvestor[]) => {\r\n let dataArr = [];\r\n if (res.length === 0) {\r\n setNoInvestors(true);\r\n } else {\r\n res.forEach((item) => {\r\n dataArr.push({ name: item.name, id: item.objectId });\r\n });\r\n if (isMounted) {\r\n setInvestors(orderBy(dataArr, [{ field: 'name', dir: 'asc' }]));\r\n setInvestorLoading(false);\r\n dispatch({ type: SET_INVESTOR, investor: dataArr[0] });\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n setInvestorLoading(false);\r\n console.log('Investors error: ', err);\r\n });\r\n\r\n return () => {\r\n isMounted = false;\r\n setInvestors([]);\r\n setInvestorLoading(true);\r\n setNoInvestors(false);\r\n };\r\n }, []);\r\n\r\n const onChange = (e) => {\r\n dispatch({ type: SET_INVESTOR, investor: e.value });\r\n navigate(`/boards/${e.value.id}`, { replace: true });\r\n };\r\n\r\n return (\r\n
\r\n {noInvestors ? (\r\n
\r\n

{t('BOARDS.NO_BOARDS')}

\r\n
\r\n ) : (\r\n <>{match && !investorLoading ? : }\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default BoardsContainer;\r\n","import React, { useState } from 'react';\r\n\r\nimport { IWidget } from '../../types/IWidget';\r\n\r\nimport ChartWidget from './chartWidget/chartWidget';\r\nimport GridWidget from './gridWidget/gridWidget';\r\nimport SummaryWidget from './summaryWidget/summaryWidget';\r\nimport TreeListWidget from './treeListWidget/treeListWidget';\r\nimport MapWidget from './mapWidget/mapWidget';\r\n\r\nimport './widget.scss';\r\n\r\nconst Widget: React.FC = ({\r\n widget,\r\n measures,\r\n periods,\r\n notes,\r\n boardId,\r\n id,\r\n staticProperties,\r\n scenarios,\r\n customisation,\r\n widgets,\r\n handleWidgetMove,\r\n handleWidgetChange,\r\n changeNewIndex,\r\n changeOldIndex,\r\n boardSelectedCurrency,\r\n handlePinWidget,\r\n handleUnpinWidget,\r\n selectedPeriod,\r\n selectedObject,\r\n }) => {\r\n const [expand, setExpand] = useState(false);\r\n\r\n const onExpand = (): void => {\r\n setExpand(true);\r\n };\r\n\r\n const onCollapse = (): void => {\r\n setExpand(false);\r\n };\r\n\r\n const components = {\r\n chart: ChartWidget,\r\n grid: GridWidget,\r\n summary: SummaryWidget,\r\n treelist: TreeListWidget,\r\n map: MapWidget,\r\n };\r\n\r\n const WidgetComponent = components[widget.type];\r\n\r\n if (!widget.visible) {\r\n return null;\r\n }\r\n return (\r\n \r\n {WidgetComponent && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Widget;\r\n","import React from 'react';\r\n\r\nimport { IObjectDropdown } from '../../types/IObjectDropdown';\r\n\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\n\r\nimport './dashboardObjectPicker.scss';\r\n\r\n\r\nconst DashboardObjectPicker: React.FC = ({\r\n onObjectChangeCallback,\r\n dataArray,\r\n type,\r\n className,\r\n selectedCurrency,\r\n selectedObject,\r\n }) => {\r\n\r\n const handleObjectChange = (event: DropDownListChangeEvent) => {\r\n onObjectChangeCallback(event);\r\n };\r\n\r\n const getDefaultValue = () => {\r\n return type === 'periods' ? dataArray[dataArray.length - 1] : (type === 'objects' && selectedObject) ? dataArray.find((item) => {\r\n return item.objectPath === selectedObject.objectPath;\r\n }) : dataArray[0];\r\n };\r\n\r\n const getTextField = () => {\r\n return type === 'currencies' ? 'currencyShortName' : 'name';\r\n };\r\n\r\n const getDataItemKey = () => {\r\n return type === 'currencies' ? 'currency' : 'id';\r\n };\r\n\r\n return (\r\n
\r\n {type === 'currencies' ?\r\n \r\n : }\r\n
\r\n );\r\n};\r\n\r\nexport default DashboardObjectPicker;\r\n","import React, { useRef, useState } from 'react';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useClickOutside from '../../../../common/hooks/useClickOutside';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { IBoardsDropdown } from '../../types/IBoardsDropdown';\r\n\r\nimport Icon from '../../../ui/icon/icon';\r\nimport DashboardObjectPicker from '../dashboardObjectPicker/dashboardObjectPicker';\r\n\r\nimport './boardsDropdown.scss';\r\n\r\nconst BoardsDropdown: React.FC = ({\r\n loading,\r\n objects,\r\n periods,\r\n currencies,\r\n onObjectChange,\r\n onPeriodChange,\r\n onCurrenciesChange,\r\n onCustomisationChange,\r\n filteredNotes,\r\n selectedCurrency,\r\n selectedObject,\r\n }) => {\r\n const [notesShown, setNotesShown] = useState(false);\r\n\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n const impersonate = useSelector((state: RootState) => state.impersonate);\r\n const wrapperRef = useRef(null);\r\n\r\n const clickOutsideHandler = () => {\r\n setNotesShown(false);\r\n };\r\n\r\n useClickOutside(wrapperRef, clickOutsideHandler, 'notes-icon');\r\n\r\n const toggleNotes = (): void => {\r\n setNotesShown(!notesShown);\r\n };\r\n\r\n const hideObject = () => {\r\n if (investor.id) {\r\n if (objects.length === 1) {\r\n return parseInt(objects[0].objectPath) !== investor.id;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {!loading && (\r\n <>\r\n {objects && hideObject() && (\r\n \r\n )}\r\n {currencies &&\r\n }\r\n {periods &&\r\n }\r\n {filteredNotes.length > 0 && (\r\n
\r\n \r\n {notesShown && (\r\n
\r\n {filteredNotes.map((note, key) => (\r\n

\r\n {note.symbol} {note.note}\r\n

\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n {!impersonate.impersonate && (\r\n
\r\n onCustomisationChange(true)} />\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default BoardsDropdown;","import React, { useEffect, useState } from 'react';\r\nimport { useLocation, useParams } from 'react-router-dom';\r\nimport { DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { useSelector } from 'react-redux';\r\nimport arrayMove from '../../../../common/utility/arrayMove';\r\nimport { RootState } from '../../../../redux/store';\r\nimport {\r\n customise,\r\n fetchNotes,\r\n getAnalysisContent,\r\n INote,\r\n} from '../../../../common/services/http/analysisContentService';\r\nimport { parseInt } from 'lodash';\r\n\r\nimport Widget from '../widget/widget';\r\nimport CustomisationGuide from '../customisationGuide/customisationGuide';\r\nimport BoardsDropdown from '../boardsDropdown/boardsDropdown';\r\nimport OutletLoader from '../../../ui/loaders/outletLoader/outletLoader';\r\n\r\nimport '../../pages/boards/board.scss';\r\nimport { AnalysisContentWidgetModel } from '../../../../models/AnalysisContentWidgetModel';\r\nimport { AnalysisContentModel } from '../../../../models/AnalysisContentModel';\r\nimport AnalysisContentObjectModel from '../../../../models/AnalysisContentObjectModel';\r\nimport { ITimePeriod } from '../../../../models/types/ITimePeriod';\r\n\r\nconst Board: React.FC = () => {\r\n const [selectedPeriod, setSelectedPeriod] = useState(null);\r\n const [selectedObject, setSelectedObject] = useState(null);\r\n const [selectedCurrency, setSelectedCurrency] = useState(null);\r\n const [widgets, setWidgets] = useState([]);\r\n const [initialWidgets, setInitialWidgets] = useState([]);\r\n const [initialWidgetsForCancel, setInitialWidgetsForCancel] = useState([]);\r\n const [newIndex, setNewIndex] = useState(null);\r\n const [oldIndex, setOldIndex] = useState(null);\r\n const [widgetToMove, setWidgetToMove] = useState(null);\r\n const [reset, setReset] = useState(false);\r\n const [customisation, setCustomisation] = useState(false);\r\n const [objects, setObjects] = useState([]);\r\n const [periods, setPeriods] = useState([]);\r\n const [scenarios, setScenarios] = useState([]);\r\n const [currencies, setCurrencies] = useState([]);\r\n const [measures, setMeasures] = useState([]);\r\n const [staticProperties, setStaticProperties] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [filteredNotes, setFilteredNotes] = useState([]);\r\n const [notes, setNotes] = useState([]);\r\n const [suppressLocalCurrency, setSuppressLocalCurrency] = useState(false);\r\n\r\n const investor = useSelector((state: RootState) => state.investor.investor);\r\n let { boardId, investorId } = useParams();\r\n const location = useLocation();\r\n const passedObject = location.state && location.state['data'];\r\n\r\n const setDropdownsData = (res: AnalysisContentModel): void => {\r\n const objectsArray = [];\r\n const periodsArray = [];\r\n const scenariosArray = [];\r\n\r\n res.objects.map((obj: AnalysisContentObjectModel) => {\r\n objectsArray.push(obj);\r\n });\r\n setObjects(objectsArray);\r\n\r\n res.timePeriods.map((obj: ITimePeriod) => {\r\n periodsArray.push(obj);\r\n });\r\n setPeriods(periodsArray);\r\n\r\n res.scenarios.map((obj) => {\r\n scenariosArray.push(obj);\r\n });\r\n setScenarios(scenariosArray);\r\n };\r\n\r\n const filterNotesByObject = (data: INote[], object: AnalysisContentObjectModel): void => {\r\n let tempNotesArray = [];\r\n data.map((note) => {\r\n for (let i = 0; i < note.objects.length; i++) {\r\n if (note.objects[i].contentObjectId === object.id) {\r\n tempNotesArray.push(note);\r\n }\r\n }\r\n });\r\n setFilteredNotes(tempNotesArray);\r\n };\r\n\r\n const onPeriodChange = (event: DropDownListChangeEvent): void => {\r\n if (event.value) {\r\n setSelectedPeriod(event.value);\r\n }\r\n };\r\n\r\n const onObjectChange = (event: DropDownListChangeEvent): void => {\r\n if (event.value) {\r\n setSelectedObject(event.value);\r\n }\r\n };\r\n\r\n const onResetChange = (e) => {\r\n setReset(e);\r\n };\r\n\r\n const onCustomisationChange = (e) => {\r\n if (e === true) {\r\n setInitialWidgetsForCancel([...widgets]);\r\n }\r\n setCustomisation(e);\r\n };\r\n\r\n const saveCustomisation = (boardId) => {\r\n customise(boardId, widgets).then(() => {\r\n });\r\n };\r\n\r\n const resetCustomisation = (boardId) => {\r\n const widgetsReset = initialWidgets.map((widget) => {\r\n return { ...widget, visible: true };\r\n });\r\n customise(boardId, widgetsReset).then(() => {\r\n });\r\n };\r\n\r\n const handleWidgetMove = (e) => {\r\n setWidgetToMove(e);\r\n };\r\n\r\n const handleCancel = () => {\r\n setWidgets([...initialWidgetsForCancel]);\r\n };\r\n\r\n const handleWidgetChange = (e) => {\r\n setWidgets(e);\r\n };\r\n\r\n const changeNewIndex = (e) => {\r\n setNewIndex(e);\r\n };\r\n\r\n const changeOldIndex = (e) => {\r\n setOldIndex(e);\r\n };\r\n\r\n const onCurrenciesChange = (event: DropDownListChangeEvent): void => {\r\n if (event.value) {\r\n setSelectedCurrency(event.value);\r\n }\r\n };\r\n\r\n const handlePinWidget = (e) => {\r\n let pinnedWidgets = widgets.map((widget) => {\r\n return {...widget, pinned: [...widget.pinned, e]}\r\n });\r\n setWidgets(pinnedWidgets);\r\n }\r\n\r\n const handleUnpinWidget = (e) => {\r\n let pinnedWidgets = widgets.map((widget) => {\r\n let pinnedArray = widget.pinned.filter((pinnedWidget) => !(pinnedWidget.investorObjectId === e.investorObjectId && pinnedWidget.objectPath === e.objectPath));\r\n return {...widget, pinned: pinnedArray}\r\n });\r\n setWidgets(pinnedWidgets);\r\n }\r\n\r\n const generateCurrencies = (object, scenarios, suppressLocalCurrency) => {\r\n let currenciesArray = [];\r\n if (object) {\r\n object.nodesOfObject.forEach((node) => {\r\n let scenario = scenarios.find((scenario) => {\r\n return scenario.id === node.scenarioId;\r\n });\r\n if (scenario) {\r\n scenario.currencies.forEach((currency) => {\r\n if (!currenciesArray.find((curr) => {\r\n return curr.currency === currency.currency;\r\n }))\r\n currenciesArray.push(currency);\r\n });\r\n }\r\n });\r\n }\r\n if (suppressLocalCurrency) {\r\n return currenciesArray.filter((curr) => {\r\n return curr.currency !== '_';\r\n });\r\n } else {\r\n return currenciesArray;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (selectedPeriod && boardId) {\r\n fetchNotes(parseInt(boardId), selectedPeriod.id).then((res) => {\r\n setNotes(res);\r\n filterNotesByObject(res, selectedObject);\r\n });\r\n }\r\n }, [selectedPeriod]);\r\n\r\n useEffect(() => {\r\n let newArray = arrayMove(widgets, oldIndex, newIndex);\r\n setWidgets(newArray);\r\n }, [oldIndex, newIndex, widgetToMove]);\r\n\r\n useEffect(() => {\r\n filterNotesByObject(notes, selectedObject);\r\n const currenciesArray = generateCurrencies(selectedObject, scenarios, suppressLocalCurrency);\r\n setCurrencies(currenciesArray);\r\n setSelectedCurrency(currenciesArray[0]);\r\n }, [selectedObject]);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n investorId &&\r\n getAnalysisContent(parseInt(boardId), parseInt(investorId))\r\n .then((res: AnalysisContentModel) => {\r\n if (passedObject) {\r\n const object = res.objects.find((item) => {\r\n return item.objectPath === passedObject;\r\n });\r\n if (object) {\r\n setSelectedObject(object);\r\n } else {\r\n setSelectedObject(res.objects[0]);\r\n }\r\n } else {\r\n setSelectedObject(res.objects[0]);\r\n }\r\n setSuppressLocalCurrency(res.suppressLocalCurrency);\r\n const currenciesArray = generateCurrencies(res.objects[0], res.scenarios, res.suppressLocalCurrency);\r\n setSelectedCurrency(currenciesArray[0]);\r\n let lastPeriodIndex = res.timePeriods.length - 1;\r\n setSelectedPeriod(res.timePeriods[lastPeriodIndex]);\r\n\r\n setInitialWidgets(res.widgets);\r\n\r\n const widgetData = res.userContent\r\n ? res.userContent.widgets.map((widget) => {\r\n let widgetObject = {};\r\n res.widgets.map((widgetItem) => {\r\n if (widgetItem.id === widget.widgetId) {\r\n widgetObject = { ...widgetItem, visible: widget.visible };\r\n }\r\n });\r\n return widgetObject;\r\n })\r\n : res.widgets.map((widget) => {\r\n return { ...widget, visible: true };\r\n });\r\n\r\n setWidgets(widgetData);\r\n setMeasures(res.measures);\r\n setStaticProperties(res.staticProperties);\r\n setDropdownsData(res);\r\n setLoading(false);\r\n })\r\n .catch((e) => console.log('broke analysis content fetch', e, ' on investor id ', investor.id));\r\n }, [boardId, investorId, reset]);\r\n\r\n return (\r\n <>\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n\r\n
\r\n {widgets &&\r\n widgets.map(\r\n (widget) =>\r\n widget && (\r\n \r\n ),\r\n )}\r\n
\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n;\r\n\r\nexport default Board;\r\n","import React from 'react';\r\n\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport Icon from '../../../ui/icon/icon';\r\nimport Logo from '../../../ui/logo/logo';\r\nimport { useIdentityManager } from '../../../../common/hooks/useIdentityManager';\r\nimport { useSelector } from 'react-redux';\r\nimport { RootState } from '../../../../redux/store';\r\n\r\nimport './errorPage.scss';\r\n\r\nconst ErrorPage: React.FC = () => {\r\n const { t } = useTranslate();\r\n const identity = useIdentityManager();\r\n const user: string | null | undefined = useSelector((state: RootState) => state.user.name);\r\n\r\n let url = location.hostname === 'localhost' ? location.hostname + ':' + location.port : location.hostname;\r\n let redirect = 'https://' + url;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n {t('ERROR.TEXT1')}\r\n {t('ERROR.TEXT2')}\r\n
\r\n
\r\n

{t('ERROR.INFO_TEXT1')}

\r\n

{t('ERROR.INFO_TEXT2')}

\r\n \r\n {t('ERROR.INFO_TEXT_MAIL')}\r\n \r\n
\r\n
\r\n \r\n {t('ERROR.SIGNED_PERSON')} {user}\r\n \r\n
\r\n\r\n
\r\n \r\n {t('ERROR.BACK_BUTTON')}\r\n \r\n
identity.signOut()}>\r\n {t('ERROR.LOGOUT')}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ErrorPage;\r\n","import React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { useDispatch } from 'react-redux';\r\nimport { SET_ACTIVE_BOARD } from '../../../../redux/types';\r\n\r\nimport './boardsTabs.scss';\r\n\r\nconst BoardsTabs = ({ boards }) => {\r\n const dispatch = useDispatch();\r\n return (\r\n
\r\n
\r\n {boards.map((x) => (\r\n (isActive ? 'boardBtn boardBtnActive' : 'boardBtn')} key={x.id}\r\n to={`./${x.id}`}>\r\n dispatch({ type: SET_ACTIVE_BOARD, activeBoard: x.id })}>{x.name}\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default BoardsTabs;","import React, { useEffect, useState } from 'react';\r\nimport { Outlet, useParams, useNavigate } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { getBoardsForInvestor } from '../../../../common/services/http/analysisContentService';\r\nimport { RootState } from '../../../../redux/store';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\n\r\nimport BoardsTabs from '../../components/boardsTabs/boardsTabs';\r\nimport { IBoardDataObject } from '../../../../models/types/IBoardDataObject';\r\n\r\nconst InvestorBoardsContainer = () => {\r\n const [loading, setLoading] = useState(true);\r\n const [boards, setBoards] = useState([]);\r\n const [noBoards, setNoBoards] = useState(false);\r\n const params = useParams();\r\n const navigate = useNavigate();\r\n const { t } = useTranslate();\r\n\r\n const previouslySelectedBoard = useSelector((state: RootState) => state.board.activeBoard);\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n setNoBoards(false);\r\n if (params.investorId) {\r\n getBoardsForInvestor(params.investorId)\r\n .then((boards) => {\r\n if (isMounted) {\r\n setBoards(boards);\r\n if (boards.length === 0) setNoBoards(true);\r\n setLoading(false);\r\n if (!params.boardId && boards.length > 0) {\r\n let boardToRedirectTo = boards.find((board) => board.id === previouslySelectedBoard);\r\n if (!boardToRedirectTo) boardToRedirectTo = boards[0];\r\n navigate(`/boards/${params.investorId}/${boardToRedirectTo.id}`, { replace: true });\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n console.log('error getting boards');\r\n setLoading(false);\r\n });\r\n }\r\n\r\n return () => {\r\n isMounted = false;\r\n setBoards([]);\r\n setLoading(true);\r\n };\r\n }, [params.investorId]);\r\n\r\n if (loading) return
Loading..
;\r\n if (noBoards) {\r\n return (\r\n
\r\n

{t('BOARDS.NO_BOARDS')}

\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\nexport default InvestorBoardsContainer;\r\n","import React from 'react';\r\nimport Button from '../../../ui/button/button';\r\n\r\nimport { useIdentityManager } from '../../../../common/hooks/useIdentityManager';\r\n// @ts-ignore\r\nimport logoImg from '../../assets/logo/sanne-logo-black.png';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { useNavigate } from 'react-router-dom';\r\n// @ts-ignore\r\nimport LogoSize from '../../../../common/services/config/brandingStore';\r\nimport EmailStore from '../../../../common/services/config/emailStore';\r\nimport Logo from '../../../ui/logo/logo';\r\n\r\nimport './agreementDecline.scss';\r\n\r\nconst AgreementDecline: React.FC = (props) => {\r\n const identity = useIdentityManager();\r\n const { t } = useTranslate();\r\n const navigate = useNavigate();\r\n\r\n const close = () => {\r\n navigate('/agreements');\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {t('AGREEMENTS_DECLINED.TITLE')}\r\n
\r\n
\r\n {t('AGREEMENTS_DECLINED.INFO_1')}\r\n
\r\n \r\n {EmailStore.default_email}\r\n \r\n
\r\n
\r\n {t('AGREEMENTS_DECLINED.INFO_2')}\r\n identity.signOut()}>\r\n {' '}\r\n {t('AGREEMENTS_DECLINED.LOGIN')}\r\n \r\n
\r\n
\r\n {t('AGREEMENTS.APPROVE')}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AgreementDecline;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Main from '../../../layout/main/main';\r\nimport useTranslate from '../../../../common/hooks/useTranslate';\r\nimport { useDispatch } from 'react-redux';\r\nimport { getSignRequirements, IDocuSignData } from '../../../../common/services/http/docuSignService';\r\nimport { SWITCH_REDIRECTING_TO_DS_MODAL } from '../../../../redux/types';\r\nimport Icon from '../../../ui/icon/icon';\r\n\r\nimport '../../../homepage/components/docuSign/docuSign.scss';\r\n\r\nconst DocuSignResponsive: React.FC = () => {\r\n const [signData, setSignData] = useState([]);\r\n const [showDocuSign, setShowDocuSign] = useState(true);\r\n const { t } = useTranslate();\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n getSignRequirements().then((res: IDocuSignData[]) => {\r\n setSignData(res);\r\n });\r\n }, []);\r\n\r\n const goToDocuSign = (item: IDocuSignData): void => {\r\n dispatch({ type: SWITCH_REDIRECTING_TO_DS_MODAL, payload: item });\r\n };\r\n\r\n const closeDocuSignInfo = (): void => {\r\n setShowDocuSign(false);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {showDocuSign && signData &&\r\n signData.map((item, key) => {\r\n return (\r\n
\r\n
\r\n {t('HOME.DOCUSIGN_ACTION_REQUIRED')}\r\n
\r\n
\r\n {!item.isSigned && (\r\n
goToDocuSign(item)}>\r\n {item.name}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n })\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DocuSignResponsive;","import { Navigate } from 'react-router-dom';\r\nimport Documents from '../core/documents/pages/documents/documents';\r\nimport Home from '../core/homepage/pages/home/home';\r\nimport Profile from '../core/profile/pages/profile/profile';\r\nimport PdfPage from '../core/ui/pdfPage/pdfPage';\r\nimport Agreements from '../core/agreements/pages/agreements/agreements';\r\nimport AgreementPdfPage from '../core/agreements/pages/agreementPdfPage/agreementPdfPage';\r\nimport Login from '../core/login/pages/login/login';\r\nimport NotAuthorized from '../core/login/pages/notAuthorized/notAuthorized';\r\nimport BasicScreen from '../core/layout/basicScreeen/basicScreen';\r\nimport Investors from '../core/investors/pages/investors/investors';\r\nimport Impersonate from '../core/impersonate/pages/impersonate/impersonate';\r\nimport DocuSignRedirect from '../core/docuSign/pages/docuSignRedirect/docuSignRedirect';\r\nimport NoMatch from '../core/ui/noMatch/noMatch';\r\nimport BoardsContainer from '../core/dashboards/pages/boards/boardsContainer';\r\nimport Board from '../core/dashboards/components/board/board';\r\nimport ErrorPage from '../core/errorPage/pages/errorPage/errorPage';\r\n\r\nimport InvestorBoardsContainer from '../core/dashboards/pages/boards/investorBoardsContainer';\r\nimport AgreementDecline from '../core/agreements/pages/agreementDecline/agreementDecline';\r\nimport DocuSignResponsive from '../core/docuSign/pages/docuSignResponsive/docuSignResponsive';\r\n\r\nconst routerConfig = (setAuthorized?: any, setAuthenticated?: any, setShowAgreement?: any, authorized?: any, authenticated?: any, showAgreement?: any) => [\r\n {\r\n path: '/',\r\n element: authenticated ? showAgreement ? : authorized ? : : ,\r\n children: [\r\n { index: true, element: },\r\n {\r\n path: '/documents',\r\n element: ,\r\n },\r\n {\r\n path: '/profile',\r\n element: ,\r\n },\r\n {\r\n path: 'documents/pdf/:assignId',\r\n element: ,\r\n },\r\n {\r\n path: '/impersonate',\r\n element: ,\r\n },\r\n {\r\n path: '/error',\r\n element: ,\r\n },\r\n // {\r\n // path: '/investors',\r\n // element: ,\r\n // },\r\n {\r\n path: '/boards',\r\n element: ,\r\n children: [\r\n {\r\n path: '/boards/:investorId',\r\n element: ,\r\n children: [\r\n {\r\n path: '/boards/:investorId/:boardId',\r\n element: ,\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n path: '/docusign/sign',\r\n element: \r\n },\r\n {\r\n path: '/docusign/redirect/:recipientId',\r\n element: authenticated ? (\r\n showAgreement ? (\r\n \r\n ) : authorized ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n ),\r\n },\r\n {\r\n path: '*',\r\n element: ,\r\n },\r\n ],\r\n },\r\n {\r\n path: '/agreements',\r\n element: authenticated ? : ,\r\n },\r\n {\r\n path: '/agreements/:assignId',\r\n element: authenticated ? : ,\r\n },\r\n {\r\n path: '/agreements/declined',\r\n element: authenticated ? : ,\r\n },\r\n\r\n {\r\n path: '/notAuthorized',\r\n element: ,\r\n },\r\n];\r\n\r\nexport default routerConfig;\r\n","import React, { useState } from 'react';\r\nimport FilterCtx from './filterCtx';\r\nimport { IFund } from '../../common/services/http/fundsService';\r\nimport { IClassification } from '../../common/services/http/documentsService';\r\nimport { IInvestor } from '../../common/services/http/investorsService';\r\n\r\nconst FilterContext = (props) => {\r\n const [docName, setDocName] = useState('');\r\n const [typePickerBoard, setTypePickerBoard] = useState(false);\r\n const [typePickerDocument, setTypePickerDocument] = useState(false);\r\n const [docNameActivity, setDocNameActivity] = useState('');\r\n const [publishChecked, setPublishChecked] = useState(false);\r\n const [effectiveChecked, setEffectiveChecked] = useState(false);\r\n const [asOfDate, setAsOfDate] = useState('');\r\n const [period, setPeriod] = useState('');\r\n const [classifications, setClassifications] = useState([]);\r\n const [classificationsActivity, setClassificationsActivity] = useState([]);\r\n const [investors, setInvestors] = useState([]);\r\n const [investorsActivity, setInvestorsActivity] = useState([]);\r\n const [funds, setFunds] = useState([]);\r\n const [fundsActivity, setFundsActivity] = useState([]);\r\n const [read, setRead] = useState('');\r\n const [fromDate, setFromDate] = useState('');\r\n const [toDate, setToDate] = useState('');\r\n const [activityFeedFromDate, setActivityFeedFromDate] = useState(30);\r\n\r\n const [classificationToggle, setClassificationToggle] = useState(false);\r\n const [fundsToggle, setFundsToggle] = useState(false);\r\n const [investorsToggle, setInvestorsToggle] = useState(false);\r\n const [periodToggle, setPeriodToggle] = useState(false);\r\n const [slicerChoices, setSlicerChoices] = useState([]);\r\n\r\n const [initialGroup, setInitialGroup] = useState([]);\r\n\r\n const clearFilters = () => {\r\n setDocName('');\r\n setPublishChecked(false);\r\n setEffectiveChecked(false);\r\n setClassifications([]);\r\n setInvestors([]);\r\n setFunds([]);\r\n setRead('');\r\n setFromDate('');\r\n setToDate('');\r\n setPeriod('');\r\n setClassificationToggle(false);\r\n setInvestorsToggle(false);\r\n setFundsToggle(false);\r\n setPeriodToggle(false);\r\n setSlicerChoices([]);\r\n setInitialGroup([]);\r\n };\r\n const clearAllFilters = () => {\r\n clearFiltersActivity();\r\n clearFilters();\r\n };\r\n\r\n const clearFiltersActivity = () => {\r\n setDocNameActivity('');\r\n setTypePickerBoard(false);\r\n setTypePickerDocument(false);\r\n setClassificationsActivity([]);\r\n setInvestorsActivity([]);\r\n setFundsActivity([]);\r\n setActivityFeedFromDate(30);\r\n };\r\n\r\n const hasFilters = () => {\r\n return !!(\r\n docName !== '' ||\r\n funds.length !== 0 ||\r\n investors.length !== 0 ||\r\n classifications.length !== 0 ||\r\n fromDate ||\r\n toDate ||\r\n period ||\r\n read === 'read' ||\r\n read === 'unread' ||\r\n classificationToggle ||\r\n investorsToggle ||\r\n fundsToggle ||\r\n periodToggle\r\n );\r\n };\r\n\r\n const hasActivityFilters = () => {\r\n return !!(\r\n docNameActivity !== '' ||\r\n typePickerBoard ||\r\n typePickerDocument ||\r\n fundsActivity.length !== 0 ||\r\n investorsActivity.length !== 0 ||\r\n classificationsActivity.length !== 0 ||\r\n activityFeedFromDate !== 30\r\n );\r\n };\r\n\r\n // @ts-ignore\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default FilterContext;\r\n","import React, { useState } from 'react';\r\nimport DocsCtx from './docsCtx';\r\n\r\nconst DocsContext = (props) => {\r\n const [selectedItemsDocIds, setSelectedItemsDocIds] = useState([]);\r\n const [selectedItemsIds, setSelectedItemsIds] = useState([]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default DocsContext;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useRoutes } from 'react-router-dom';\r\nimport { useDispatch } from 'react-redux';\r\nimport Loader from '../core/ui/loadingScreen/loadingScreen';\r\nimport { unacceptedAgreements } from '../common/services/http/agreementService';\r\nimport { canImpersonate, getUserSettings, verifyUser } from '../common/services/http/userService';\r\nimport { useIdentityManager } from '../common/hooks/useIdentityManager';\r\nimport { CAN_IMPERSONATE, SET_NAME, SET_TOOLTIP } from '../redux/types';\r\nimport routerConfig from './routerConfig';\r\n\r\nimport './routes.scss';\r\n\r\nimport FilterContext from '../context/filterContext/filterContext';\r\nimport DocsContext from '../context/docsContext/docsContext';\r\n\r\nconst Router = () => {\r\n const dispatch = useDispatch();\r\n const [loading, setLoading] = useState(true);\r\n const [authorized, setAuthorized] = useState(true);\r\n const [authenticated, setAuthenticated] = useState(false);\r\n const [showAgreement, setShowAgreement] = useState(false);\r\n const [agreement, setAgreement] = useState(null);\r\n const identity = useIdentityManager();\r\n\r\n useEffect(() => {\r\n identity\r\n .isAuthenticated()\r\n .then((isAuthn: boolean | ((prevState: boolean) => boolean)) => {\r\n setAuthenticated(isAuthn);\r\n if (isAuthn) {\r\n return verifyUser().then((user) => {\r\n let authz = user !== null;\r\n setAuthorized(authz);\r\n if (authz) {\r\n dispatch({ type: SET_NAME, name: user.name });\r\n return unacceptedAgreements().then((r) => {\r\n if (r.data.length >= 1) {\r\n setAgreement(r.data);\r\n setShowAgreement(true);\r\n }\r\n canImpersonate()\r\n .then((r) => {\r\n dispatch({ type: CAN_IMPERSONATE, value: r });\r\n })\r\n .catch((e) => null);\r\n setLoading(false);\r\n });\r\n } else {\r\n setLoading(false);\r\n return Promise.resolve();\r\n }\r\n });\r\n } else {\r\n setLoading(false);\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch((err: any) => {\r\n setLoading(false);\r\n console.error('error loading', err);\r\n });\r\n }, []);\r\n\r\n let element = useRoutes(routerConfig(setAuthorized, setAuthenticated, setShowAgreement, authorized, authenticated, showAgreement));\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {element}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Router;\r\n","import BaseURLConfigStore from './baseUrlConfigStore';\r\nimport IdentityManager from '../identity/IdentityManagerFactory';\r\nimport EmailStore from './emailStore';\r\nimport BrandingStore from './brandingStore';\r\n\r\nconst initCfg = () => {\r\n return fetch('/config.json').then((res) => {\r\n if (res.status !== 200) {\r\n console.log('Looks like there was a problem. Status Code: ' + res.status);\r\n return;\r\n }\r\n return res.json().then((data) => {\r\n BaseURLConfigStore.setBaseUrl(data.BASE_URL);\r\n EmailStore.default_email = data.DEFAULT_EMAIL;\r\n IdentityManager.init(data.authz);\r\n BrandingStore.logo_size = data.branding.logoSize;\r\n BrandingStore.series_colors = data.branding.SeriesColors;\r\n });\r\n });\r\n};\r\n\r\nexport default initCfg;\r\n","const getBrowserLanguage = () => {\r\n return navigator.language;\r\n};\r\n\r\nexport default getBrowserLanguage;\r\n","import getBrowserLanguage from './getBrowserLanguage';\r\nimport { load } from '@progress/kendo-react-intl';\r\nimport axios from 'axios';\r\n\r\nimport weekData from 'cldr-core/supplemental/weekData.json';\r\nimport enNumbers from 'cldr-numbers-full/main/en/numbers.json';\r\nimport enLocalCurrency from 'cldr-numbers-full/main/en/currencies.json';\r\nimport enCaGregorian from 'cldr-dates-full/main/en/ca-gregorian.json';\r\nimport enDateFields from 'cldr-dates-full/main/en/dateFields.json';\r\n\r\nconst _fetchFormats = (lang: string) => {\r\n return Promise.all([\r\n axios(`/cldr-numbers-full/main/${lang}/numbers.json`),\r\n axios(`/cldr-numbers-full/main/${lang}/currencies.json`),\r\n axios(`/cldr-dates-full/main/${lang}/ca-gregorian.json`),\r\n axios(`/cldr-dates-full/main/${lang}/dateFields.json`),\r\n ]);\r\n};\r\n\r\nconst _loadFormats = (formats, lang) => {\r\n formats.forEach((item) => load(item.data));\r\n load(weekData);\r\n return lang;\r\n};\r\n\r\nconst initLanguage = () => {\r\n const defaultLang: string = 'en-US';\r\n const lang: string = getBrowserLanguage() || defaultLang;\r\n const subTag: string = lang.substring(0, 2);\r\n\r\n return _fetchFormats(lang)\r\n .then((data) => {\r\n _loadFormats(data, lang);\r\n return lang;\r\n })\r\n .catch((err) => {\r\n console.log(lang, 'Error loading locale settings', err.message);\r\n return _fetchFormats(subTag)\r\n .then((data) => {\r\n _loadFormats(data, subTag);\r\n return subTag;\r\n })\r\n .catch((err) => {\r\n console.log(subTag, 'Error loading locale settings', err);\r\n load(enNumbers, enLocalCurrency, enCaGregorian, enDateFields, weekData);\r\n return defaultLang;\r\n });\r\n });\r\n};\r\n\r\nexport default initLanguage;\r\n","import { useEffect } from 'react';\r\nimport { useLocation } from 'react-router';\r\n\r\nconst ScrollToTop = (props) => {\r\n const location = useLocation();\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [location]);\r\n\r\n return <>{props.children};\r\n};\r\n\r\nexport default ScrollToTop;","import React, { useEffect, useState } from 'react';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\nimport Routes from './routes/routes';\r\nimport initCfg from './common/services/config/initCfg';\r\nimport LoadingScreen from './core/ui/loadingScreen/loadingScreen';\r\nimport { IntlProvider } from '@progress/kendo-react-intl';\r\nimport initLanguage from './common/utility/initLanguage';\r\nimport initTranslations from './common/services/translations/initTranslations';\r\nimport i18n from 'i18next';\r\n\r\nimport './App.css';\r\nimport ScrollToTop from './core/ui/scrollToTop/ScrollToTop';\r\n\r\nconst App = () => {\r\n const [loading, setLoading] = useState(true);\r\n const [language, setLanguage] = useState('en-GB');\r\n const [langLoading, setLangLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n initCfg()\r\n .then(() => {\r\n initTranslations().then((res) => {\r\n let resources = res.en.translation;\r\n i18n.addResourceBundle('en', 'translation', resources);\r\n setLangLoading(false);\r\n });\r\n initLanguage()\r\n .then((res) => {\r\n setLanguage(res);\r\n setLoading(false);\r\n })\r\n .catch((err) => console.log('Error: ', err));\r\n })\r\n .catch((err) => {\r\n console.error('Error loading config', err);\r\n });\r\n }, []);\r\n\r\n return (\r\n <>\r\n {loading || langLoading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport store from './redux/store';\r\n\r\nimport './i18n';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nimport './index.css';\r\n\r\nconst setVh = () => {\r\n let vh = window.innerHeight * 0.01;\r\n document.documentElement.style.setProperty('--vh', `${vh}px`);\r\n};\r\n\r\nwindow.addEventListener('load', setVh);\r\nwindow.addEventListener('resize', setVh);\r\n\r\nconst container = document.getElementById('root');\r\nconst root = createRoot(container);\r\nroot.render(\r\n \r\n \r\n \r\n);\r\n\r\n\r\nreportWebVitals();\r\n"],"sourceRoot":""}