{"version":3,"file":"main.js","mappings":"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AChB1iB,KAAK,UAAU,SAAAoc,GAAK,OAAAoF,EAASK,EAAEzF,EAAEtL,MAAb,IACpB9Q,KAAK,QAAQ,SAAAoc,GAAK,OAAAA,EAAE6D,eAAiB,YAAc,MAAjC,IAClB+B,OAAO,aAAa7kB,MAAK,SAAAif,GAAK,OAAA7D,EAAGoK,OAAOpD,EAAVhH,CAAuB6D,EAAEtL,MAAzB,IAEnCiR,EAAEC,OAAO,QACJhiB,KAAK,IAAMkP,EAAQ,GACnBlP,KAAK,IAAMmhB,EAAOC,IAAM,GACxBphB,KAAK,cAAe,UACpBA,KAAK,YAAa,QAClB7C,KAAKmc,cAlTPL,EAAAnG,QAAU,CACb,SACA,YACA,eACA,YACA,mBACA,eACA,yBACA,iBA8SRmG,EAjWA,GAoWAlY,EAAQC,OAAO,gBAAgBC,UAAU,wBAAyB,CAC9DC,WAAY+X,EACZtX,SAAUC,EAAQ,OAClBmR,SAAU,CACN2E,aAAc,IACdkL,wBAAyB,qKCnYpBC,EAAAA,yBAA2B,CACpC,UACA,sBACA,oBACA,oBACA,uBACA,gBACA,cACA,yBACA,aACA,oBACA,0BACA,kBACA,OACA,iBACA,kBACA,SACA,sBACA,cACA,mBACA,kCACA,kCACA,gCACA,YACA,8BACA,WACA,aACA,4BACA,8BACA,gCAGSA,EAAAA,oCAAsC,CAC/C,OACA,sCACA,uBACA,sBACA,qBACA,YACA,mBACA,kBACA,gBACA,MACA,0BACA,qBACA,kBACA,4BACA,0BACA,iBACA,WACA,oCACA,qBACA,SACA,WACA,kBACA,gBACA,sBACA,sBACA,qBACA,eACA,YACA,kBACA,yBACA,4BACA,yBACA,cACA,sBACA,mBACA,0BACA,mBACA,qBACA,8BACA,yBACA,qBACA,kBACA,mBACA,eACA,oBACA,oBACA,oBACA,gBAGSA,EAAAA,OAAS,CAClB,YACA,oBACA,kBACA,qBACA,UACA,MACA,OACA,MACA,qBACA,YACA,kBACA,eACA,oBACA,kBACA,eACA,gBACA,kBACA,eACA,aACA,iBACA,YACA,eACA,eACA,yrBC5GJ,IAAA7P,EAAAC,EAAArR,EAAA,QAOAkhB,EAA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U,CACNo0D,eAAgB,IAChBlkB,gBAAiB,IACjB7rC,UAAW,IACXF,iBAAkB,IAClBC,aAAc,IACd61B,iBAAkB,IAClBgV,sBAAuB,IACvBjV,qBAAsB,IACtB2U,qBAAsB,IACtB0lB,YAAa,IACbC,aAAc,OAEnBnlE,UAAU,uBAAwB,CAAC,WAAM,MAAC,CACzCN,QAAS,WACT0lE,KAAM,SAACC,EAASC,EAAWC,EAAQC,GAC/B9D,EAAmB8D,CACvB,EAJwC,qGC5hB/B7kD,EAAAA,WAAa,CACtB,IACA,QACA,QACA,QACA,QACA,UACA,MACA,KACA,KACA,MACA,MACA,MACA,SACA,KACA,KACA,KACA,UACA,OACA,SACA,QACA,QACA,UACA,OACA,MACA,KACA,QACA,SACA,QACA,WACA,MACA,SACA,KACA,OACA,UACA,QACA,QACA,OACA,SACA,OACA,MACA,MACA,OACA,UACA,MACA,SACA,MACA,SACA,OACA,UACA,SACA,KACA,OACA,QACA,OACA,MACA,OACA,SACA,OACA,UACA,MACA,UACA,MACA,MACA,QACA,IACA,MACA,OACA,MACA,OACA,KACA,KACA,OACA,KACA,QACA,KACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,UACA,KACA,SACA,KACA,MACA,MACA,KACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,MACA,kBACA,MACA,OACA,MACA,OACA,SACA,MACA,QACA,SACA,QACA,SACA,YACA,KACA,OACA,OACA,OACA,OACA,SACA,MACA,QACA,SACA,OACA,aACA,OACA,QACA,UACA,QACA,OACA,SACA,UACA,UACA,UACA,OACA,QACA,UACA,KACA,MACA,QACA,QACA,KACA,OACA,MACA,SACA,KACA,OACA,QACA,QACA,QACA,OACA,UACA,OACA,SACA,OACA,SACA,QACA,UACA,QACA,QACA,MACA,QACA,OACA,MACA,QACA,OACA,QACA,QACA,WACA,MACA,QACA,SACA,SACA,SACA,OACA,QACA,WACA,+BChLJ9hB,QAAQC,OAAO,gBAAgBC,UAAU,2BAA4B,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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./calcbenchApp/footnote/documentTableAddOns.js","webpack:///./calcbenchApp/product/calcbenchSwagger.js","webpack:///./calcbenchApp/shared/appHeader/appFooter.js","webpack:///./calcbenchApp/shared/appHeader/footer.js","webpack:///./calcbenchApp/shared/directives/calcbenchTooltip.js","webpack:///./calcbenchApp/shared/directives/ngEnter.js","webpack:///./regexPolyfill.js","webpack:///./calcbenchApp/PRTools/PRMatchController.ts","webpack:///./calcbenchApp/PRTools/PRModelController.ts","webpack:///./calcbenchApp/analytics/AnalyticsPageController.ts","webpack:///./calcbenchApp/analytics/analyticsTableController.ts","webpack:///./calcbenchApp/analytics/metrics.ts","webpack:///./calcbenchApp/benchmark/MappedDataColumnDefs.ts","webpack:///./calcbenchApp/benchmark/MappedPoint.ts","webpack:///./calcbenchApp/benchmark/MetricSelectedHandlers.ts","webpack:///./calcbenchApp/benchmark/buildPeriodColumnKeys.ts","webpack:///./calcbenchApp/benchmark/formatMappedPoint.ts","webpack:///./calcbenchApp/benchmark/mappedData.ts","webpack:///./calcbenchApp/benchmark/mappedDataMenu.ts","webpack:///./calcbenchApp/benchmark/multiCompanyPage.ts","webpack:///./calcbenchApp/benchmark/periodComparer.ts","webpack:///./calcbenchApp/benchmark/standardizedPeriod.ts","webpack:///./calcbenchApp/benchmark/timePeriodComparator.ts","webpack:///./calcbenchApp/breakout/breakoutPage.ts","webpack:///./calcbenchApp/companyInDetail/PeriodTypeMap.ts","webpack:///./calcbenchApp/companyInDetail/PeriodTypeToTruncatedPeriod.ts","webpack:///./calcbenchApp/companyInDetail/UrlState.ts","webpack:///./calcbenchApp/companyInDetail/companiesInDetailController.ts","webpack:///./calcbenchApp/companyInDetail/companyInDetailTabs.ts","webpack:///./calcbenchApp/companyInDetail/exportFaceStatement.ts","webpack:///./calcbenchApp/companyInDetail/faceStatementMenu.ts","webpack:///./calcbenchApp/companyInDetail/revisionTable.ts","webpack:///./calcbenchApp/companyInDetail/statementController.ts","webpack:///./calcbenchApp/dashboard/dashboardComponent.ts","webpack:///./calcbenchApp/dashboard/documentTab.ts","webpack:///./calcbenchApp/dataQuery/dataQueryController.ts","webpack:///./calcbenchApp/dimensionalData/PurchasePriceAllocationStructure.ts","webpack:///./calcbenchApp/dimensionalData/dimensionalData.ts","webpack:///./calcbenchApp/dimensionalData/executiveCompensation.ts","webpack:///./calcbenchApp/dimensionalData/standardizedBusinessCombinations.ts","webpack:///./calcbenchApp/dimensionalData/tableStates/multiMetricAllHistory.ts","webpack:///./calcbenchApp/dimensionalData/tableStates/singleMetricAllHistory.ts","webpack:///./calcbenchApp/dimensionalData/tableStates/singlePeriodMultiMetric.ts","webpack:///./calcbenchApp/dimensionalData/tableStates/tableState.ts","webpack:///./calcbenchApp/filings/filingsPage.ts","webpack:///./calcbenchApp/filings/filingsTable.ts","webpack:///./calcbenchApp/footnote/DocumentGroup.ts","webpack:///./calcbenchApp/footnote/GroupedDocuments.ts","webpack:///./calcbenchApp/footnote/NonXBRLFactAside/nonXBRLFactPopup.ts","webpack:///./calcbenchApp/footnote/PageState.ts","webpack:///./calcbenchApp/footnote/diff/diff.ts","webpack:///./calcbenchApp/footnote/disclosureIFrame/IFrameMessageData.ts","webpack:///./calcbenchApp/footnote/disclosurePageController.ts","webpack:///./calcbenchApp/footnote/disclosureTraceTable.ts","webpack:///./calcbenchApp/footnote/displayedTextDocumentsFactory.ts","webpack:///./calcbenchApp/footnote/documentModal.ts","webpack:///./calcbenchApp/footnote/footnoteFactory.ts","webpack:///./calcbenchApp/footnote/footnoteList.ts","webpack:///./calcbenchApp/footnote/footnoteListController.ts","webpack:///./calcbenchApp/footnote/footnoteQueryChannel.ts","webpack:///./calcbenchApp/footnote/footnoteQueryParameters.ts","webpack:///./calcbenchApp/footnote/footnoteSubList.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/Diff.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/DocumentGridDocument.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/Footnote.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/FootnoteTypeFootnote.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/FullTextFootnote.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/HasSingleCompanySection.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/MissingDocument.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/NonXBRLTable.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/NormalizedBreakoutMetricTrace.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/NormalizedFaceMetricTrace.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/NormalizedFootnoteMetricTrace.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/NormalizedMetricTrace.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/SingleCompanyFootnote.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/SingleCompanyTagFootnote.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/Table.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/TagFootnote.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/XBRLNumericTagTrace.ts","webpack:///./calcbenchApp/footnote/footnoteTypes/highlighting.ts","webpack:///./calcbenchApp/footnote/gridView/documentGridView.ts","webpack:///./calcbenchApp/footnote/gridView/documentGridViewMenu.ts","webpack:///./calcbenchApp/footnote/gridView/tableState.ts","webpack:///./calcbenchApp/footnote/search/DropdownItem.ts","webpack:///./calcbenchApp/footnote/search/footnoteSearch.ts","webpack:///./calcbenchApp/footnote/stopwords.ts","webpack:///./calcbenchApp/footnote/tablesAndSchedules.ts","webpack:///./calcbenchApp/footnote/textDocumentDisplay.ts","webpack:///./calcbenchApp/footnote/textDocumentsDisplay.ts","webpack:///./calcbenchApp/product/blogComponent.ts","webpack:///./calcbenchApp/product/exampleSpreadsheetTemplates.ts","webpack:///./calcbenchApp/product/homePage/homePage.ts","webpack:///./calcbenchApp/product/ourDataTable/ourDataTable.ts","webpack:///./calcbenchApp/product/productPage.ts","webpack:///./calcbenchApp/product/productTiles.ts","webpack:///./calcbenchApp/product/recentFilings/recentFilings.ts","webpack:///./calcbenchApp/query/queryController.ts","webpack:///./calcbenchApp/rawData/Form13FRawDataQueryController.ts","webpack:///./calcbenchApp/rawData/Form345RawDataQueryController.ts","webpack:///./calcbenchApp/rawData/IQueryClause.ts","webpack:///./calcbenchApp/rawData/NonXBRLRawDataQueryController.ts","webpack:///./calcbenchApp/rawData/XBRLRawDataController.ts","webpack:///./calcbenchApp/rawData/companyNameColumn.ts","webpack:///./calcbenchApp/rawData/documentColumn.ts","webpack:///./calcbenchApp/rawData/rawDataController.ts","webpack:///./calcbenchApp/rawData/valueColumn.ts","webpack:///./calcbenchApp/shared/appHeader/appHeader.ts","webpack:///./calcbenchApp/shared/appHeader/productHeader.ts","webpack:///./calcbenchApp/shared/appSetup/appSetup.ts","webpack:///./calcbenchApp/shared/appSetup/applicationInsights.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/BlockTextTagCount.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/DisclosureContents.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/FilingType.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/IndustryClassifications.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/PressRelease.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/StandardizedMetricDefinitions.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/TextFootnote.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/TraceObject.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/calcbenchAPI.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/company.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/faceStatement/CompareType.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/faceStatement/FaceStatement.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/faceStatement/IFaceStatementColumn.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/faceStatement/IFaceStatementFact.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/faceStatement/IFaceStatementLineItem.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/faceStatement/SpecialFactType.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/filing.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/purchasePriceAllocation.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/userCreatedPeerGroup.ts","webpack:///./calcbenchApp/shared/calcbenchUser/Subscriptions.ts","webpack:///./calcbenchApp/shared/chart/timeSeries.ts","webpack:///./calcbenchApp/shared/directives/XBRLTagSearchDirective.ts","webpack:///./calcbenchApp/shared/directives/accessControl.ts","webpack:///./calcbenchApp/shared/directives/allInOneSearch.ts","webpack:///./calcbenchApp/shared/directives/blog/blog.ts","webpack:///./calcbenchApp/shared/directives/blog/blogPost.ts","webpack:///./calcbenchApp/shared/directives/calcbenchChat.ts","webpack:///./calcbenchApp/shared/directives/columnSort.ts","webpack:///./calcbenchApp/shared/directives/convertToNumber.ts","webpack:///./calcbenchApp/shared/directives/dynamicHeightTable.ts","webpack:///./calcbenchApp/shared/directives/factHover.ts","webpack:///./calcbenchApp/shared/directives/ng-iframe-resizer.ts","webpack:///./calcbenchApp/shared/disclosureList/disclosureList.ts","webpack:///./calcbenchApp/shared/excelExport/addInFormula.ts","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/NormalizedMetrics.ts","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/NormalizedPointMenuController.ts","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/exploreNormalizedPointsExcel.ts","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/normalizedMetricController.ts","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/standardizedMetricTypeAhead.ts","webpack:///./calcbenchApp/shared/filters/excelNumberFormat.ts","webpack:///./calcbenchApp/shared/filters/filters.ts","webpack:///./calcbenchApp/shared/logOn/logOn.ts","webpack:///./calcbenchApp/shared/pdfExport/pdfExport.ts","webpack:///./calcbenchApp/shared/peerGroup/PeerGroupInstanceBuilder.ts","webpack:///./calcbenchApp/shared/peerGroup/alerts.ts","webpack:///./calcbenchApp/shared/peerGroup/excel.ts","webpack:///./calcbenchApp/shared/peerGroup/indeces.ts","webpack:///./calcbenchApp/shared/peerGroup/peerGroup.ts","webpack:///./calcbenchApp/shared/peerGroup/peerGroupChannel.ts","webpack:///./calcbenchApp/shared/peerGroup/peerGroupController.ts","webpack:///./calcbenchApp/shared/peerGroup/peerGroupInstance.ts","webpack:///./calcbenchApp/shared/peerGroup/peerGroupPickerController.ts","webpack:///./calcbenchApp/shared/peerGroup/search/companySearchDirective.ts","webpack:///./calcbenchApp/shared/periods/PeriodChannel.ts","webpack:///./calcbenchApp/shared/periods/constants.ts","webpack:///./calcbenchApp/shared/periods/periodController.ts","webpack:///./calcbenchApp/shared/periods/periodMenuItems.ts","webpack:///./calcbenchApp/shared/periods/periodParams.ts","webpack:///./calcbenchApp/shared/periods/rangeOptions.ts","webpack:///./calcbenchApp/shared/standardizedMetricTable/standardizedMetricTable.ts","webpack:///./calcbenchApp/shared/uiGridGroupColumns/ui-grid-group-columns.ts","webpack:///./calcbenchApp/shared/utils/MessageBus.ts","webpack:///./calcbenchApp/shared/utils/lunrTypeahead.ts","webpack:///./calcbenchApp/shared/utils/serializeToURL.ts","webpack:///./calcbenchApp/shared/xbrlTagPopover/xbrlTagPopover.ts","webpack:///./calcbenchApp/trace/traceController.ts","webpack:///./calcbenchApp/trace/traceDirective.ts","webpack:///./calcbenchApp/whitelabel/FaceStatements.ts","webpack:///./main.ts","webpack:///./calcbenchApp/PRTools/prmatchdisplay.tpl.html","webpack:///./calcbenchApp/PRTools/prmodeldisplay.tpl.html","webpack:///./calcbenchApp/analytics/analyticsTable.tpl.html","webpack:///./calcbenchApp/analytics/chartModal.tpl.html","webpack:///./calcbenchApp/benchmark/cbGridHeaderCell.html","webpack:///./calcbenchApp/benchmark/cellTemplate.html","webpack:///./calcbenchApp/benchmark/companyNameCell.tpl.html","webpack:///./calcbenchApp/benchmark/mappedDataMenu.tpl.html","webpack:///./calcbenchApp/benchmark/mappedDataTable.tpl.html","webpack:///./calcbenchApp/benchmark/missingCompaniesTable.tpl.html","webpack:///./calcbenchApp/benchmark/rowPeriodCell.tpl.html","webpack:///./calcbenchApp/companyInDetail/companiesInDetailController.tpl.html","webpack:///./calcbenchApp/companyInDetail/companyInDetailTabs.tpl.html","webpack:///./calcbenchApp/companyInDetail/faceStatementMenu.tpl.html","webpack:///./calcbenchApp/companyInDetail/revisionTable.tpl.html","webpack:///./calcbenchApp/companyInDetail/statement.tpl.html","webpack:///./calcbenchApp/dashboard/companyInDetailPanel.tpl.html","webpack:///./calcbenchApp/dashboard/dashboardComponent.tpl.html","webpack:///./calcbenchApp/dashboard/documentTab.tpl.html","webpack:///./calcbenchApp/dimensionalData/dimensionalData.tpl.html","webpack:///./calcbenchApp/dimensionalData/table.tpl.html","webpack:///./calcbenchApp/dimensionalData/tableStates/cellTemplate.tpl.html","webpack:///./calcbenchApp/dimensionalData/tableStates/periodCellTemplate.tpl.html","webpack:///./calcbenchApp/filings/disclosureCell.tpl.html","webpack:///./calcbenchApp/filings/filingsPage.tpl.html","webpack:///./calcbenchApp/filings/filingsTable.tpl.html","webpack:///./calcbenchApp/footnote/NonXBRLFactAside/nonXBRLFactAside.tpl.html","webpack:///./calcbenchApp/footnote/diff/diff.tpl.html","webpack:///./calcbenchApp/footnote/disclosurePage.tpl.html","webpack:///./calcbenchApp/footnote/disclosureTraceTable.tpl.html","webpack:///./calcbenchApp/footnote/documentCell.tpl.html","webpack:///./calcbenchApp/footnote/documentColumnHeader.tpl.html","webpack:///./calcbenchApp/footnote/documentModal.tpl.html","webpack:///./calcbenchApp/footnote/footnoteList.tpl.html","webpack:///./calcbenchApp/footnote/footnoteSubList.tpl.html","webpack:///./calcbenchApp/footnote/gridView/diffColumnHeaderCell.tpl.html","webpack:///./calcbenchApp/footnote/gridView/disclosureSelectionModal.tpl.html","webpack:///./calcbenchApp/footnote/gridView/documentCell.tpl.html","webpack:///./calcbenchApp/footnote/gridView/documentGridView.tpl.html","webpack:///./calcbenchApp/footnote/gridView/gridViewHeaderCellTemplate.tpl.html","webpack:///./calcbenchApp/footnote/search/footnoteSearchMenu.tpl.html","webpack:///./calcbenchApp/footnote/tableAndScheduleInput.tpl.html","webpack:///./calcbenchApp/footnote/textDocumentsDisplay.tpl.html","webpack:///./calcbenchApp/product/ourDataTable/ourDataTable.tpl.html","webpack:///./calcbenchApp/product/postHeader.tpl.html","webpack:///./calcbenchApp/product/productTiles.tpl.html","webpack:///./calcbenchApp/product/recentFilings/recentFilings.tpl.html","webpack:///./calcbenchApp/rawData/rawDataMenu.tpl.html","webpack:///./calcbenchApp/shared/appHeader/appFooter.tpl.html","webpack:///./calcbenchApp/shared/appHeader/appHeader.tpl.html","webpack:///./calcbenchApp/shared/appHeader/footer.tpl.html","webpack:///./calcbenchApp/shared/appHeader/productHeader.tpl.html","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/normalizedMetric.tpl.html","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/normalizedPointMenu.tpl.html","webpack:///./calcbenchApp/shared/exploreNormalizedPoints/normalizedPointMenuButton.tpl.html","webpack:///./calcbenchApp/shared/logOn/logOnForm.tpl.html","webpack:///./calcbenchApp/shared/peerGroup/alertsMenuModal.tpl.html","webpack:///./calcbenchApp/shared/peerGroup/alertsMenuTable.tpl.html","webpack:///./calcbenchApp/shared/peerGroup/bulkTickerModalContent.tpl.html","webpack:///./calcbenchApp/shared/peerGroup/peerGroupMenu.tpl.html","webpack:///./calcbenchApp/shared/peerGroup/peerGroupPicker.tpl.html","webpack:///./calcbenchApp/shared/peerGroup/search/input.tpl.html","webpack:///./calcbenchApp/shared/periods/periodMenu.tpl.html","webpack:///./calcbenchApp/shared/uiGridGroupColumns/ui-grid-header-group-columns.html","webpack:///./calcbenchApp/shared/uiGridGroupColumns/ui-grid-row-group-columns.html","webpack:///./calcbenchApp/trace/traceAside.tpl.html","webpack:///./calcbenchApp/trace/traceController.tpl.html","webpack:///../node_modules/regenerate-unicode-properties/ sync ^\\.\\/.*\\.js$","webpack:///webpack/bootstrap","webpack:///webpack/runtime/amd define","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var selectedItems = new Array;\r\nvar firstArrowCell = null;\r\nvar lastArrowCell = null;\r\nvar $frameBody = null;\r\n\r\nexport function highlightCell($itm, event, frameCntnts, unHightlightPromise) {\r\n $frameBody = frameCntnts.find('body');\r\n var ctrl = event.ctrlKey;\r\n highlight_Cell($itm, ctrl);\r\n unHightlightPromise.then(() => unHighlightCell($itm, event, frameCntnts));\r\n}\r\n\r\nfunction unHighlightCell($itm, event, frameCntnts) {\r\n $itm.removeClass('selected-cell');\r\n $itm.css('background-color', $itm.data.originalBackGroundColor);\r\n}\r\n\r\n\r\nfunction highlight_Cell($itm, ctrl, arrowKey, goingBack, rowOffset, colOffset) {\r\n // return null;\r\n var newItem = null;\r\n if (!firstArrowCell && arrowKey && selectedItems.length > 1) return null; //like in Excel, don't mix hand clicking and arrowing\r\n\r\n var lastRow = 0;\r\n var lastCol = 0;\r\n\r\n if (lastArrowCell) {\r\n lastRow = lastArrowCell.row;\r\n lastCol = lastArrowCell.col;\r\n }\r\n\r\n if (rowOffset) lastRow = lastRow + rowOffset;\r\n if (colOffset) lastCol = lastCol + colOffset;\r\n\r\n\r\n var $td = $itm.closest('td');\r\n if (arrowKey && $td.length === 0) return null;\r\n if ($td.length === 0) $td = $itm;\r\n\r\n if ($td.length > 0) {\r\n\r\n //clear first\r\n var newArray = new Array;\r\n // var putAtEnd = null;\r\n var itmWasSelected = false;\r\n var keepEls = null;\r\n var newLastItem = null;\r\n selectedItems.forEach(function (elem, idx) {\r\n if (!ctrl | elem.cell.is($itm)) {\r\n if (elem.cell.is($itm)) itmWasSelected = true;\r\n if (arrowKey && goingBack) {\r\n var removeEls = selectedItems.filter(function (cellitm) {\r\n if (Math.abs(lastRow) < Math.abs(cellitm.row)) return true;\r\n if (Math.abs(lastCol) < Math.abs(cellitm.col)) return true;\r\n return false\r\n });\r\n keepEls = selectedItems.filter(function (cellitm) {\r\n if (Math.abs(lastRow) >= Math.abs(cellitm.row) && Math.abs(lastCol) >= Math.abs(cellitm.col)) return true;\r\n return false\r\n });\r\n newLastItem = elem;\r\n removeEls.forEach(function (remel) {\r\n remel.cell.removeClass('selected-cell');\r\n if (remel.bkcolor) remel.cell.css('background-color', remel.bkcolor);\r\n });\r\n\r\n } else {\r\n elem.cell.removeClass('selected-cell');\r\n if (elem.bkcolor) elem.cell.css('background-color', elem.bkcolor);\r\n }\r\n } else {\r\n // keep it in list\r\n newArray.push(elem);\r\n }\r\n });\r\n\r\n\r\n if (keepEls) {\r\n selectedItems = keepEls;\r\n } else {\r\n selectedItems = newArray;\r\n }\r\n if (newArray.length === 0) {\r\n firstArrowCell = null;\r\n lastArrowCell = null;\r\n lastRow = 0;\r\n lastCol = 0;\r\n }\r\n\r\n if (!itmWasSelected) {\r\n if (arrowKey && !firstArrowCell) {\r\n firstArrowCell = $td;\r\n }\r\n\r\n var bkcolor = $td.css('background-color');\r\n $td.addClass('selected-cell');\r\n if (bkcolor) {\r\n $td.css('background-color', 'yellow');\r\n $td.data.originalBackGroundColor = bkcolor;\r\n }\r\n var txt = $itm.text();\r\n txt = txt.replace(\",\", \"\");\r\n txt = txt.replace(\"(\", \"-\");\r\n txt = txt.replace(\"$\", \"\");\r\n txt = txt.replace(\"€\", \"\");\r\n txt = txt.replace(\"%\", \"\");\r\n txt = txt.replace(\")\", \"\");\r\n if (txt === '-' || txt === '—') txt = 0;\r\n var val = parseFloat(txt);\r\n newItem = { cell: $td, bkcolor: bkcolor, val: val, cbfact: $itm, row: lastRow, col: lastCol };\r\n\r\n\r\n selectedItems.push(newItem);\r\n\r\n\r\n } else if (goingBack) {\r\n newItem = newLastItem; //so we have a returnval\r\n }\r\n }\r\n dosum($itm);\r\n return newItem\r\n}\r\n\r\nvar $calculatorDiv = null;\r\nfunction dosum($itm) {\r\n var sum = 0;\r\n var fail = false\r\n selectedItems.forEach(function (elem) {\r\n if (!isNaN(elem.val)) { sum += elem.val; }\r\n else {\r\n fail = true\r\n }\r\n });\r\n if (fail) return null;\r\n\r\n if (selectedItems.length > 1) {\r\n var str = sum.toLocaleString();\r\n var parent = $itm.closest('table');\r\n if (parent.length === 0) parent = $itm.closest('p');\r\n if (parent.length === 0) parent = $itm.closest('div');\r\n\r\n\r\n if ($calculatorDiv) {\r\n $calculatorDiv.html(str);\r\n } else {\r\n $calculatorDiv = $('
' + str + '
');\r\n parent.after($calculatorDiv);\r\n }\r\n } else if ($calculatorDiv) {\r\n $calculatorDiv.remove();\r\n $calculatorDiv = null;\r\n }\r\n\r\n return sum;\r\n}\r\n\r\n\r\nexport function arrowKeyPress(e) {\r\n if (selectedItems.length === 0) return null;\r\n\r\n if (e.which !== 37 && e.which !== 38 && e.which !== 39 && e.which !== 40) return null;\r\n\r\n\r\n e.preventDefault();\r\n\r\n var item = lastArrowCell; // selectedItems[selectedItems.length - 1];\r\n if (!item) {\r\n item = selectedItems[0];\r\n }\r\n var shift = e.shiftKey;\r\n var ctrl = e.ctrlKey;\r\n\r\n if (ctrl) {\r\n shift = true;\r\n var go_on = item\r\n do {\r\n go_on = arrow_Key_Press(go_on, e.which, shift);\r\n if (go_on) lastArrowCell = go_on;\r\n }\r\n while (go_on);\r\n\r\n } else {\r\n var ret = arrow_Key_Press(item, e.which, shift);\r\n if (ret) lastArrowCell = ret;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\nfunction arrow_Key_Press(item, which, shift) {\r\n var returnval = null;\r\n var lastRow = 0;\r\n var lastCol = 0;\r\n\r\n if (lastArrowCell) {\r\n lastRow = lastArrowCell.row;\r\n lastCol = lastArrowCell.col;\r\n }\r\n switch (which) {\r\n case 37: // left\r\n case 39: // right\r\n var col = 1;\r\n var nextTDs;\r\n if (which === 37) {\r\n col = -1;\r\n nextTDs = item.cell.prevAll('td');\r\n } else {\r\n nextTDs = item.cell.nextAll('td');\r\n }\r\n\r\n var goingBack = false;\r\n if (col && Math.abs(lastCol + col) < Math.abs(lastCol)) goingBack = true;\r\n var expanding = false;\r\n if (!goingBack) {\r\n if (Math.abs(lastRow) > 0) expanding = true;\r\n }\r\n var expandToCell = null;\r\n nextTDs.each(function (idx, nxttd) {\r\n var cbfct = getCBfact(nxttd);\r\n if (!expandToCell && (cbfct && cbfct.length > 0)) {\r\n //ok\r\n\r\n expandToCell = cbfct;\r\n\r\n if (shift) {\r\n returnval = highlight_Cell(cbfct, true, true, goingBack, null, col);\r\n } else {\r\n returnval = highlight_Cell(cbfct, false);\r\n }\r\n\r\n if (expanding && !goingBack) {\r\n var expandItem = returnval;\r\n var rowi = 0;\r\n for (var exi = 0; exi < Math.abs(returnval.row); exi++) {\r\n var newwhich = 38; //up\r\n if (lastRow < 0) {\r\n newwhich = 40;\r\n rowi += 1;\r\n } else {\r\n rowi -= 1;\r\n }\r\n\r\n expandItem = arrow_Key_Press(expandItem, newwhich, true);\r\n //correct row/col\r\n expandItem.row = lastRow + rowi;\r\n expandItem.col = lastCol + col;\r\n }\r\n }\r\n\r\n\r\n\r\n }\r\n });\r\n\r\n break;\r\n\r\n case 38: // up\r\n case 40: // down\r\n var rwidx = rowindex(item.cell);\r\n var colspan = item.cell.attr('colspan');\r\n var rwidxend = rwidx;\r\n if (colspan) rwidxend = rwidx + parseInt(colspan) - 1;\r\n var nextTRs\r\n var row = 1;\r\n if (which === 38) {\r\n row = -1;\r\n nextTRs = item.cell.closest('tr').prevAll('tr')\r\n } else {\r\n nextTRs = item.cell.closest('tr').nextAll('tr')\r\n }\r\n\r\n\r\n var goingBack = false;\r\n if (Math.abs(lastRow + row) < Math.abs(lastRow)) goingBack = true;\r\n var expanding = false;\r\n if (!goingBack) {\r\n if (Math.abs(lastCol) > 0) expanding = true;\r\n }\r\n\r\n var expandToCell = null;\r\n nextTRs.each(function (idx, nxttr) {\r\n if (!expandToCell) {\r\n var TDs = $(nxttr).children('td');\r\n TDs.each(function (idx, nxttd) {\r\n\r\n var cbfct = getCBfact(nxttd);\r\n\r\n if (!expandToCell && (cbfct && cbfct.length > 0)) {\r\n\r\n var tdrwidx = rowindex($(nxttd));\r\n var tdcolspan = $(nxttd).attr('colspan');\r\n var tdrwidxend = tdrwidx;\r\n if (tdcolspan) tdrwidxend = tdrwidx + parseInt(tdcolspan) - 1;\r\n\r\n if ((tdrwidx >= rwidx && tdrwidx <= rwidxend) || (tdrwidxend >= rwidx && tdrwidxend <= rwidxend)) {\r\n //ok\r\n\r\n\r\n\r\n\r\n expandToCell = cbfct;\r\n if (shift) {\r\n returnval = highlight_Cell(cbfct, true, true, goingBack, row);\r\n } else {\r\n returnval = highlight_Cell(cbfct, false);\r\n }\r\n\r\n\r\n if (expanding && !goingBack) {\r\n var expandItem = returnval;\r\n var coli = 0;\r\n for (var exi = 0; exi < Math.abs(returnval.col); exi++) {\r\n var newwhich = 37;\r\n if (lastCol < 0) {\r\n newwhich = 39;\r\n coli += 1;\r\n } else {\r\n coli -= 1;\r\n }\r\n\r\n expandItem = arrow_Key_Press(expandItem, newwhich, true);\r\n //correct row/col\r\n expandItem.row = lastRow + row;\r\n expandItem.col = lastCol + coli;\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 break;\r\n\r\n\r\n\r\n\r\n default: //return; // exit this handler for other keys\r\n }\r\n\r\n return returnval;\r\n}\r\n\r\nfunction getCBfact(nxttd) {\r\n var cbfct = $(nxttd).find('.cbfactcell, .cbfactcellapprox');\r\n cbfct = cbfct.add($(nxttd).filter('.cbfactcell, .cbfactcellapprox'));\r\n if (cbfct.length === 0) {\r\n // also look for blank items ---- (txt === '-' || txt === '—')\r\n var txt = $(nxttd).text();\r\n if (txt === '-' || txt === '—') cbfct = $(nxttd);\r\n }\r\n return cbfct;\r\n}\r\n\r\nfunction rowindex(cell) {\r\n\r\n var prevtds = cell.prevAll('td');\r\n var rowidx = 1; //start at 1 for the current cell\r\n prevtds.each(function (idx, itm) {\r\n var colspan = $(this).attr('colspan');\r\n if (colspan) {\r\n rowidx += parseInt(colspan);\r\n } else {\r\n rowidx += 1;\r\n }\r\n });\r\n return rowidx;\r\n}","//import SwaggerUIBundle from \"swagger-ui\"; Couldn't figure out how to webpack swagger. akittredge August 2018\r\n//import StandalonePreset from 'swagger-ui/dist/swagger-ui-standalone-preset'\r\n\r\nwindow.angular.module('calcbenchApp').component('cbSwagger',\r\n {\r\n controller: APIPage,\r\n template: '
'\r\n }\r\n)\r\n\r\nfunction APIPage() {\r\n let vm = this; \r\n vm.$onInit = () => { \r\n window.ui = SwaggerUIBundle({\r\n url: '/swagger/docs/v1',\r\n dom_id: '#swagger-ui',\r\n plugins: [SwaggerUIStandalonePreset],\r\n layout: 'StandaloneLayout'\r\n });\r\n }\r\n}","angular.module('calcbenchApp').component('calcbenchAppFooter', {\r\n template: require('./appFooter.tpl.html'),\r\n controller: FooterController\r\n});\r\n\r\n\r\nfunction FooterController() {\r\n var vm = this;\r\n var today = new Date();\r\n vm.copywriteYear = today.getFullYear();\r\n}","angular.module('calcbenchApp').component('calcbenchFooter', {\r\n template: require('./footer.tpl.html'),\r\n controller: FooterController\r\n});\r\n\r\nfunction FooterController() {\r\n var vm = this;\r\n vm.copyrightYear = (new Date()).getFullYear();\r\n}","import 'qtip2';\r\nimport 'qtip2/dist/jquery.qtip.min.css';\r\n\r\nconst calcbenchApp = angular.module('calcbenchApp');\r\ncalcbenchApp.directive('cbToolTip', CBToolTip);\r\n\r\n\r\nfunction CBToolTip() {\r\n return {\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $($element).qtip({\r\n content: {\r\n text (event, api) {\r\n $.ajax({\r\n url: '/home/getkbaseitem',\r\n data: { rowkey: $attrs.cbToolTip },\r\n datatype: 'json'\r\n })\r\n .then((content) => {\r\n api.set(\"content.text\", content.answer);\r\n api.set(\"content.title\", content.question);\r\n });\r\n }\r\n }\r\n });\r\n }],\r\n restrict : 'A'\r\n }\r\n}\r\n","(function () {\r\n var calcbenchApp = angular.module('calcbenchApp');\r\n calcbenchApp.directive('ngEnter', function () {\r\n return function (scope, element, attrs) {\r\n element.on(\"keydown keypress\", function (event) {\r\n if (event.which === 13) {\r\n scope.$apply(function () {\r\n scope.$eval(attrs.ngEnter);\r\n });\r\n event.preventDefault();\r\n }\r\n });\r\n };\r\n });\r\n})();","// https://github.com/exceljs/exceljs/issues/1380\r\n// This is not Typescript because it freaks out Visual Studio, akittredge, April 2021\r\nconst rewritePattern = require('regexpu-core');\r\nconst { generateRegexpuOptions } = require('@babel/helper-create-regexp-features-plugin/lib/util');\r\n\r\nconst { RegExp } = global;\r\ntry {\r\n new RegExp('a', 'u');\r\n} catch (err) {\r\n global.RegExp = function (pattern, flags) {\r\n if (flags && flags.includes('u')) {\r\n return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({ flags, pattern })));\r\n }\r\n let result = new RegExp(pattern, flags)\r\n // faking the symbols, akittredge March 2021\r\n result[Symbol.search] = () => { return 0 };\r\n result[Symbol.match] = () => { return [] }\r\n return result;\r\n };\r\n global.RegExp.prototype = RegExp;\r\n}","import * as angular from \"angular\";\r\nimport { CalcbenchAPI } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport './style.scss'\r\nimport { addCalcbenchHeader, buildWorkbookWithSheet, saveWorkbookOrExcelInsert } from '../shared/excelExport/excelExport';\r\nimport { Worksheet } from 'exceljs';\r\nimport { PRMergePeriod, compareToPeriodTable, PRMatchData, PRMergeRow, PRMergeTable, PRSavedModel } from \"../shared/calcbenchAPI/PressRelease\";\r\nimport { classToPlain, Exclude, plainToClass, Type } from 'class-transformer';\r\nimport { Datum } from \"../../office-js-addin/src/functions/Datum\";\r\n\r\n\r\nclass PRMerge {\r\n \r\n \r\n // a merge object per period\r\n earlierperiodsecid: number;\r\n\r\n laterperiodsecid: number;\r\n\r\n futureperiodsecid: number;\r\n\r\n @Exclude()\r\n results: PRMatchData;\r\n\r\n @Type(() => PRMergeTable)\r\n tables: PRMergeTable[];\r\n \r\n\r\n maxNewPeriodFactsCount: number\r\n\r\n compareToPeriodMaxFactCounts: number[] = []\r\n \r\n showCompareToPeriods: boolean = false;\r\n\r\n showRoboTags: boolean = false;\r\n\r\n\r\n\r\n\r\n entityID: number\r\n\r\n PPSECURL: string\r\n\r\n newSECURL: string\r\n\r\n entityName: string\r\n\r\n @Type(() => Date)\r\n PPFilingDate: Date\r\n\r\n @Type(() => Date)\r\n newFilingDate: Date\r\n\r\n newPeriod: string\r\n\r\n newCumPeriod: string\r\n\r\n PPPeriod: string\r\n\r\n hasCumPeriod: boolean\r\n\r\n hasQPeriod: boolean\r\n\r\n usingModel: boolean\r\n\r\n canRetrieveModel: boolean\r\n\r\n\r\n\r\n\r\n\r\n reInitTables() {\r\n this.tables.forEach((tbl, index) => tbl.setPrevAndNext(index, this.tables, false))\r\n }\r\n\r\n init(): void {\r\n\r\n if (this.results) {\r\n\r\n this.tables = this.results.tables;\r\n\r\n this.entityID = this.results.entityID\r\n this.PPSECURL = this.results.PPSECURL\r\n this.newSECURL = this.results.newSECURL\r\n this.entityName = this.results.entityName\r\n this.PPFilingDate = this.results.PPFilingDate\r\n this.newFilingDate = this.results.newFilingDate\r\n this.newPeriod = this.results.newPeriod\r\n this.newCumPeriod = this.results.newCumPeriod\r\n this.PPPeriod = this.results.PPPeriod\r\n this.hasCumPeriod = this.results.hasCumPeriod\r\n this.hasQPeriod = this.results.hasQPeriod\r\n this.usingModel = this.results.usingModel\r\n this.canRetrieveModel = this.results.canRetrieveModel\r\n\r\n\r\n\r\n\r\n\r\n // this.finalResults = this.tables.reduce((acc, val) => acc.concat(val.rows), []); //flatten table groups to a single list\r\n // populate the prevPeriod in each row\r\n // this.finalResults.forEach(row => row.initRow())\r\n this.tables.forEach(tbl => tbl.initTable(this.results.PPSECURL, this.results.PPFilingDate))\r\n this.tables.forEach((tbl, index) => tbl.setPrevAndNext(index, this.tables, true))\r\n this.earlierperiodsecid = this.results.earlierperiodsecid;\r\n this.laterperiodsecid = this.results.laterperiodsecid;\r\n this.futureperiodsecid = this.results.futureperiodsecid;\r\n\r\n this.setmaxColIdxes();\r\n }\r\n }\r\n\r\n\r\n finalResults(): PRMergeRow[] {\r\n let rows: PRMergeRow[] = this.tables.reduce((acc, val) => acc.concat(val.rows), []);\r\n rows = rows.filter(r => r.in_model)\r\n rows = rows.filter(r => !r.removed)\r\n\r\n const cloneRows: PRMergeRow[] = [];\r\n rows.forEach(rw => cloneRows.push(rw.toExportRow()))\r\n\r\n\r\n return cloneRows;\r\n }\r\n\r\n recalculateColumnCount(): void {\r\n this.tables.forEach(tbl => tbl.computeColCount(this.showCompareToPeriods));\r\n this.setmaxColIdxes();\r\n }\r\n\r\n\r\n setmaxColIdxes(): void {\r\n\r\n // also set col idxes\r\n this.maxNewPeriodFactsCount = 1\r\n for (let i = 0; i < this.tables.length; i++) {\r\n var tbl = this.tables[i];\r\n\r\n if (this.showCompareToPeriods) {\r\n if (tbl.newFilingPeriods.length + tbl.newFilingCompareToPeriods.length > this.maxNewPeriodFactsCount) this.maxNewPeriodFactsCount = tbl.newFilingPeriods.length + tbl.newFilingCompareToPeriods.length;\r\n } else if (tbl.newFilingPeriods.length > this.maxNewPeriodFactsCount) this.maxNewPeriodFactsCount = tbl.newFilingPeriods.length;\r\n }\r\n \r\n for (let cpi = 0; cpi < this.tables[0].compareToPeriods.length; cpi++) {\r\n let totalPPfacts: number = 1\r\n for (let i = 0; i < this.tables.length; i++) {\r\n var tbl = this.tables[i];\r\n if (tbl.compareToPeriods[cpi].PPFilingHeaders.length > totalPPfacts) totalPPfacts = tbl.compareToPeriods[cpi].PPFilingHeaders.length;\r\n }\r\n this.compareToPeriodMaxFactCounts.push(totalPPfacts);\r\n }\r\n }\r\n\r\n \r\n\r\n mergeInFutureData(FutureResults: PRMatchData, periodsBack: number): void {\r\n \r\n\r\n // CHANGE SOME STUFF UP TOP!!? or leave it?\r\n const PPtables = this.tables\r\n const allPPRows = PPtables.reduce((acc, val) => acc.concat(val.rows), []);\r\n \r\n const tablesCopy = [];\r\n FutureResults.tables.forEach(tble => tablesCopy.push(tble))\r\n\r\n\r\n\r\n tablesCopy.forEach(tble => this.findMatchingPPRows(tble, 0, allPPRows, FutureResults.tables, this.results, periodsBack));\r\n\r\n \r\n \r\n this.tables = FutureResults.tables;\r\n this.setmaxColIdxes();\r\n }\r\n\r\n mergeInPPData(PPResults: PRMatchData, periodsBack: number): void {\r\n\r\n // var allRows = this.tables.reduce((acc, val) => acc.concat(val.rows), []);\r\n\r\n const PPtables = PPResults.tables\r\n // PPtables.forEach((tbl, index) => tbl.setPrevAndNext(index, PPtables))\r\n const allPPRows = PPtables.reduce((acc, val) => acc.concat(val.rows), []);\r\n\r\n const tablesCopy = [];\r\n this.tables.forEach(tble => tablesCopy.push(tble))\r\n\r\n\r\n tablesCopy.forEach(tble => this.findMatchingPPRows(tble, periodsBack, allPPRows, this.tables, PPResults, 1));\r\n\r\n\r\n // tables that are orphan NEW only....need to be front filled!!!!\r\n\r\n\r\n this.setmaxColIdxes();\r\n }\r\n\r\n findMatchingPPRows(table: PRMergeTable, periodsBack: number, allPPRows: PRMergeRow[], tablesList: PRMergeTable[], PPResults: PRMatchData, periodsForward: number): void {\r\n const tableRowsCopy = [];\r\n table.rows.forEach(row => tableRowsCopy.push(row))\r\n\r\n let firstPPMatch: PRMergeRow = null\r\n let lastPPMatch: PRMergeRow = null\r\n\r\n const rowsToBackFill: PRMergeRow[] = [];\r\n tableRowsCopy.forEach(rw => findMatchingPPRow(rw));\r\n\r\n\r\n function findMatchingPPRow(row: PRMergeRow): void {\r\n\r\n\r\n const earliestPeriodInRow = row.periods[row.periods.length - 1];\r\n\r\n const factIDs = [];\r\n earliestPeriodInRow.primaryFacts.filter(fct => fct !== null).forEach(fct => factIDs.push(fct.fact_id));\r\n\r\n const equivPPRow = allPPRows.find(rw => rw.rowHasFactIDs(factIDs));\r\n\r\n\r\n // var compareperiod;\r\n if (equivPPRow) {\r\n // matching row\r\n\r\n // carry this forward\r\n row.periods[row.periods.length - 1].orphan_new_only = equivPPRow.orphan_new_only();\r\n\r\n row.periods.push(equivPPRow.periods[1]);\r\n\r\n // var compareperiod = new compareToPeriodRow(equivPPRow.PPFilingFacts);\r\n // row.compareToPeriods.push(compareperiod);\r\n if (!firstPPMatch) firstPPMatch = equivPPRow;\r\n lastPPMatch = equivPPRow;\r\n\r\n // also check for orphan rows before and after\r\n let pprow = equivPPRow;\r\n while (pprow.prevRow && pprow.prevRow.orphan_old_only()) {\r\n var idx = table.rows.indexOf(row);\r\n pprow = pprow.prevRow;\r\n pprow.frontFillRow(row, periodsBack);\r\n table.rows.splice(idx, 0, pprow);\r\n }\r\n // and after\r\n pprow = equivPPRow;\r\n while (pprow.nextRow && pprow.nextRow.orphan_old_only()) {\r\n var idx = table.rows.indexOf(row);\r\n pprow = pprow.nextRow;\r\n pprow.frontFillRow(row, periodsBack);\r\n table.rows.splice(idx + 1, 0, pprow);\r\n }\r\n\r\n\r\n } else {\r\n \r\n\r\n // row is empty in later and earlier period\r\n // need to add a blank period\r\n // OR WE ARE MATCHING FORWARD AND THIS ROW IS AN ORPHAN NEW ONLY\r\n rowsToBackFill.push(row);\r\n\r\n\r\n \r\n }\r\n\r\n\r\n }\r\n\r\n if (firstPPMatch) {\r\n let pptable = firstPPMatch.parentTable;\r\n\r\n rowsToBackFill.forEach((rw) => rw.backFillRow(firstPPMatch, periodsForward))\r\n\r\n\r\n \r\n\r\n pptable.compareToPeriods.forEach(cp => table.compareToPeriods.push(cp))\r\n // var cp = new compareToPeriodTable(pptable, PPResults.PPSECURL, PPResults.PPFilingDate);\r\n // table.compareToPeriods.push(cp);\r\n table.computeColCount(this.showCompareToPeriods);\r\n\r\n // if table hidden....persist that to future period\r\n if (periodsBack === 0) {\r\n table.expanded = pptable.expanded;\r\n }\r\n\r\n\r\n // now add in any orpan tables?!?!!!\r\n while (pptable.prevTable && pptable.prevTable.orphan_old_only) {\r\n var idx = this.tables.indexOf(table);\r\n pptable = pptable.prevTable;\r\n pptable.frontFillTable(periodsBack);\r\n pptable.computeColCount(this.showCompareToPeriods)\r\n tablesList.splice(idx, 0, pptable);\r\n }\r\n // and after\r\n pptable = lastPPMatch.parentTable;\r\n while (pptable.nextTable && pptable.nextTable.orphan_old_only) {\r\n var idx = this.tables.indexOf(table);\r\n pptable = pptable.nextTable;\r\n pptable.frontFillTable(periodsBack);\r\n pptable.computeColCount(this.showCompareToPeriods)\r\n tablesList.splice(idx + 1, 0, pptable);\r\n }\r\n\r\n } else {\r\n // no table match found\r\n\r\n\r\n for (let pf = 1; pf <= periodsForward; pf++) {\r\n // ????BACK FILL table!!!\r\n // rows can stay empty\r\n const cp = new compareToPeriodTable(null, null, null);\r\n table.compareToPeriods.push(cp);\r\n // and the rows\r\n table.rows.forEach((row) => {\r\n const blankCP = new PRMergePeriod([], 0);\r\n row.periods.push(blankCP);\r\n });\r\n }\r\n table.computeColCount(this.showCompareToPeriods);\r\n }\r\n\r\n \r\n }\r\n\r\n \r\n}\r\n\r\n\r\n// prmatchcontroller\r\nclass PRGetNextPeriodController implements ng.IController {\r\n static $inject = ['calcbenchAPI', '$scope']\r\n\r\n usingModel: boolean; // from excel\r\n\r\n buildingModel: boolean; // started from the web\r\n\r\n points: Datum[]; // the points in the model being sent up\r\n\r\n merge: PRMerge; // the current period merge we are currently working with\r\n\r\n laterperiodsecid: number;\r\n\r\n include_cumulative: boolean;\r\n\r\n insert_left: boolean = true;\r\n\r\n export_left_to_right: boolean = false;\r\n\r\n savedModels: PRSavedModel[];\r\n\r\n\r\n // periods: PRMerge[] = new Array(); //the history of merge periods\r\n\r\n periodsBack: number = 0;\r\n\r\n constructor(private calcbenchAPI: CalcbenchAPI, private $scope: ng.IScope ) { // send back to Excel\r\n (window).NextPeriodData = () => {\r\n const mergeoptions = { insert_left: this.insert_left, include_cumulative: this.include_cumulative, period: this.merge.results.newPeriod, cumulative_period: this.merge.results.newCumPeriod }\r\n const mergeobject = { rows: this.merge.finalResults(), options: mergeoptions }\r\n\r\n return JSON.stringify(mergeobject);\r\n };\r\n }\r\n\r\n\r\n async $onInit() {\r\n this.merge = new PRMerge();\r\n if (this.points) {\r\n this.merge.results = (await this.calcbenchAPI.PRgetNextPeriod(this.points));\r\n } else if (this.laterperiodsecid && this.laterperiodsecid > 0 ) {\r\n this.merge.results = (await this.calcbenchAPI.PRgetPreviousPeriod(this.laterperiodsecid));\r\n }\r\n if (this.merge.results != null) {\r\n this.include_cumulative = this.merge.results.hasCumPeriod\r\n this.merge.init();\r\n this.usingModel = this.merge.results.usingModel; // coming from excel\r\n if (this.merge.results.usingModel) {\r\n this.buildingModel = true;\r\n this.merge.tables.forEach((tbl) => tbl.ExpandContract())\r\n }\r\n }\r\n // this.periods.push(this.merge)\r\n\r\n // get saved models\r\n const ms = await this.calcbenchAPI.PRListModels();\r\n const models = plainToClass(PRSavedModel, ms) as unknown as PRSavedModel[]\r\n\r\n this.savedModels = []\r\n for (let i = 0; i < models.length; i++) {\r\n const model = models[i];\r\n this.savedModels.push(model);\r\n }\r\n }\r\n\r\n \r\n dateformat(current_datetime: Date): string {\r\n if (!current_datetime) return null;\r\n return `${current_datetime.getMonth() + 1 }/${ current_datetime.getDate() }/${ current_datetime.getFullYear()}`;\r\n }\r\n\r\n // mergePreviousPeriodOLD() {\r\n // var newfutureperiod = this.merge.laterperiodsecid;\r\n // this.laterperiodsecid = this.merge.earlierperiodsecid\r\n // check if exists\r\n // var existingAlreadyMerge = this.periods.find(cc => cc.laterperiodsecid === this.laterperiodsecid);\r\n // if (existingAlreadyMerge) {\r\n // this.merge = existingAlreadyMerge;\r\n // return;\r\n // }\r\n // this.setUpNewPeriod()\r\n // this.merge.futureperiodsecid = newfutureperiod; //override this\r\n // this.periods.push(this.merge)\r\n // }\r\n async mergePreviousPeriod() {\r\n\r\n const PPresults = (await this.calcbenchAPI.PRgetPreviousPeriod(this.merge.earlierperiodsecid));\r\n\r\n if (PPresults) { \r\n this.periodsBack += 1;\r\n\r\n // do init stuff\r\n const newMerge = new PRMerge();\r\n newMerge.results = PPresults;\r\n newMerge.init();\r\n\r\n this.merge.mergeInPPData(PPresults, this.periodsBack)\r\n this.merge.earlierperiodsecid = PPresults.earlierperiodsecid;\r\n }\r\n }\r\n\r\n\r\n\r\n // mergeNextPeriodOLD() {\r\n // this.laterperiodsecid = this.merge.futureperiodsecid;\r\n // var existingAlreadyMerge = this.periods.find(cc => cc.laterperiodsecid === this.laterperiodsecid);\r\n // if (existingAlreadyMerge) {\r\n // this.merge = existingAlreadyMerge;\r\n // return;\r\n // }\r\n\r\n // this.setUpNewPeriod()\r\n // this.periods.unshift(this.merge)\r\n\r\n // }\r\n\r\n\r\n async mergeNextPeriod() {\r\n if (!this.merge.futureperiodsecid) return null;\r\n\r\n const FutureResults = (await this.calcbenchAPI.PRgetPreviousPeriod(this.merge.futureperiodsecid));\r\n\r\n if (FutureResults) {\r\n this.periodsBack += 1;\r\n\r\n // do init stuff\r\n const newMerge = new PRMerge();\r\n newMerge.results = FutureResults;\r\n newMerge.init();\r\n\r\n this.merge.mergeInFutureData(FutureResults, this.periodsBack)\r\n this.merge.futureperiodsecid = FutureResults.futureperiodsecid;\r\n }\r\n }\r\n\r\n\r\n\r\n async setUpNewPeriod() {\r\n this.merge = new PRMerge();\r\n this.merge.results = (await this.calcbenchAPI.PRgetPreviousPeriod(this.laterperiodsecid));\r\n this.merge.laterperiodsecid = this.laterperiodsecid;\r\n this.merge.init();\r\n }\r\n\r\n newValue(row: PRMergeRow): Datum {\r\n return row.periods[0].primaryFacts.find(fact => fact !== null)\r\n // return null;\r\n }\r\n\r\n PPValue(row: PRMergeRow): Datum {\r\n return row.periods[1].primaryFacts.find(fact => fact !== null)\r\n // return null;\r\n }\r\n\r\n show_new_html(table: PRMergeTable): void {\r\n table.hide_pp_html();\r\n if (table.showing_new_html) { table.showing_new_html = false } else {\r\n table.showing_new_html = true;\r\n }\r\n }\r\n\r\n show_pp_html(table: PRMergeTable, tablePeriod: compareToPeriodTable): void {\r\n table.showing_new_html = false;\r\n if (tablePeriod.showing_pp_html) { tablePeriod.showing_pp_html = false } else {\r\n tablePeriod.showing_pp_html = true;\r\n }\r\n }\r\n\r\n\r\n // titleFor(table_id: number): string[] {\r\n // if (!this.results) return null;\r\n // if (!this.results.tabletitles.hasOwnProperty(table_id)) return null;\r\n // var titlelines = this.results.tabletitles[table_id];\r\n // if (!titlelines) return null;\r\n // return titlelines;\r\n // }\r\n\r\n // periodFor(table_id: number): string {\r\n // if (!this.merge.results) return null;\r\n // if (!this.merge.results.oldPeriods.hasOwnProperty(table_id)) return null;\r\n // return this.merge.results.oldPeriods[table_id];\r\n // }\r\n\r\n // mergeUp(consecutiveRowGroup: any[], modelrow, prevrow) {\r\n\r\n\r\n // // create a new row!\r\n // // but save the old ones also ???\r\n\r\n\r\n // // or just allow row splits also ?!?!?!?!!!!!!\r\n\r\n // // shallow copy -> let clonedObject = Object.assign({}, obj);\r\n\r\n // modelrow.merged_row = prevrow;\r\n\r\n // // var idx = consecutiveRowGroup.indexOf(prevrow);\r\n // // consecutiveRowGroup.splice(idx, 1);\r\n // // don't remove, just HIDE!!!!!\r\n // prevrow.removed = true;\r\n\r\n // modelrow.orphan_old_only = false;\r\n // modelrow.qval = prevrow.qval;\r\n // modelrow.cumval = prevrow.cumval;\r\n // }\r\n\r\n // mergeDown(consecutiveRowGroup: any[], modelrow, nextrow) {\r\n\r\n // modelrow.merged_row = nextrow;\r\n // // var idx = consecutiveRowGroup.indexOf(nextrow);\r\n // // consecutiveRowGroup.splice(idx, 1);\r\n // // don't remove, just HIDE!!!!!\r\n // nextrow.removed = true;\r\n\r\n // modelrow.orphan_old_only = false;\r\n // modelrow.qval = nextrow.qval;\r\n // modelrow.cumval = nextrow.cumval;\r\n // }\r\n\r\n // unmerge(consecutiveRowGroup: any[], modelrow) {\r\n // modelrow.orphan_old_only = true;\r\n // modelrow.qval = null;\r\n // modelrow.cumval = null;\r\n // var insertrow = modelrow.merged_row;\r\n // // up or down????\r\n // insertrow.removed = false;\r\n // modelrow.merged_row = null;\r\n // }\r\n\r\n\r\n startBuildingModel() : void {\r\n this.buildingModel = true;\r\n // this.merge.tables.forEach(tbl => tbl.expanded = false);\r\n\r\n }\r\n\r\n includeTableInModel(pressReleaseTable: PRMergeTable): void {\r\n pressReleaseTable.rows.forEach(row => row.in_model = true)\r\n pressReleaseTable.table_in_model = true;\r\n pressReleaseTable.expanded = true;\r\n }\r\n\r\n excludeTableFromModel(pressReleaseTable: PRMergeTable): void {\r\n pressReleaseTable.rows.forEach(row => row.in_model = false)\r\n // pressReleaseTable.expanded = true;\r\n pressReleaseTable.table_in_model = false;\r\n }\r\n\r\n exportToExcel(withFormulas:boolean): void {\r\n const exportFileName = \"PR Export\"\r\n\r\n // locally -> eg from raw data controller. \r\n const [workbook, worksheet] = buildWorkbookWithSheet(exportFileName);\r\n\r\n if (this.export_left_to_right) { \r\n this.populateWorksheet(worksheet, this.merge.showCompareToPeriods, withFormulas)\r\n } else {\r\n this.populateWorksheetRtoL(worksheet, this.merge.showCompareToPeriods, withFormulas)\r\n }\r\n const EXCEL_TOP_ROW_OFFSET = 4;\r\n worksheet.spliceRows(1, 0, ...new Array(EXCEL_TOP_ROW_OFFSET))\r\n addCalcbenchHeader(worksheet, 'Raw XBRL Data')\r\n saveWorkbookOrExcelInsert(workbook, exportFileName)\r\n }\r\n\r\n\r\n populateWorksheet(worksheet: Worksheet, includeCompareTo: boolean, withFormulas: boolean) {\r\n let rowindex = 1;\r\n worksheet.getColumn(1).width = 70;\r\n\r\n let maxColsUsed: number = 0;\r\n for (let i = 0; i < this.merge.tables.length; i++) {\r\n var table = this.merge.tables[i];\r\n var oldRowIndex = rowindex;\r\n rowindex = table.NPtoExcel(worksheet, rowindex, 2, includeCompareTo, this.buildingModel, withFormulas);\r\n if (this.buildingModel) {\r\n if (rowindex > oldRowIndex) {\r\n // don't want to consider tables that are not used in the model!\r\n var colsUsed: number = table.newFilingHeaders.length;\r\n if (colsUsed > maxColsUsed) maxColsUsed = colsUsed;\r\n rowindex += 3;\r\n }\r\n } else {\r\n rowindex += 3;\r\n }\r\n }\r\n\r\n // now the PPs\r\n let startAtColIdx: number = 3 + this.merge.maxNewPeriodFactsCount;\r\n if (this.buildingModel) startAtColIdx = 3 + maxColsUsed;\r\n \r\n for (let cpi = 0; cpi < this.merge.tables[0].compareToPeriods.length; cpi++) {\r\n rowindex = 1;\r\n maxColsUsed = 0;\r\n for (let i = 0; i < this.merge.tables.length; i++) {\r\n var table = this.merge.tables[i];\r\n var oldRowIndex = rowindex;\r\n rowindex = table.PPtoExcel(worksheet, rowindex, cpi, startAtColIdx, this.buildingModel, withFormulas, true);\r\n if (this.buildingModel) {\r\n if (rowindex > oldRowIndex) {\r\n // don't want to consider tables that are not used in the model!\r\n var colsUsed: number = table.compareToPeriods[cpi].PPFilingHeaders.length;\r\n if (colsUsed > maxColsUsed) maxColsUsed = colsUsed;\r\n rowindex += 3;\r\n }\r\n } else {\r\n rowindex += 3;\r\n }\r\n }\r\n if (this.buildingModel) {\r\n startAtColIdx = startAtColIdx + 2 + maxColsUsed;\r\n } else {\r\n startAtColIdx = startAtColIdx + 2 + this.merge.compareToPeriodMaxFactCounts[cpi];\r\n }\r\n }\r\n\r\n \r\n }\r\n\r\n populateWorksheetRtoL(worksheet: Worksheet, includeCompareTo: boolean, withFormulas: boolean) {\r\n let rowindex = 1;\r\n worksheet.getColumn(1).width = 70;\r\n\r\n\r\n\r\n // first the PPs\r\n let startAtColIdx: number = 2;\r\n for (let cpi = this.merge.tables[0].compareToPeriods.length -1; cpi >= 0; cpi--) {\r\n rowindex = 1;\r\n let maxColsUsed: number = 0;\r\n for (let i = 0; i < this.merge.tables.length; i++) {\r\n var table = this.merge.tables[i];\r\n var oldRowIndex = rowindex;\r\n rowindex = table.PPtoExcel(worksheet, rowindex, cpi, startAtColIdx, this.buildingModel, withFormulas, false);\r\n if (this.buildingModel) {\r\n if (rowindex > oldRowIndex) {\r\n // don't want to consider tables that are not used in the model!\r\n const colsUsed: number = table.compareToPeriods[cpi].PPFilingHeaders.length;\r\n if (colsUsed > maxColsUsed) maxColsUsed = colsUsed;\r\n rowindex += 3;\r\n }\r\n } else {\r\n rowindex += 3;\r\n }\r\n }\r\n if (this.buildingModel) {\r\n startAtColIdx = startAtColIdx + 2 + maxColsUsed;\r\n } else {\r\n startAtColIdx = startAtColIdx + 2 + this.merge.compareToPeriodMaxFactCounts[cpi];\r\n }\r\n }\r\n rowindex = 1;\r\n for (let i = 0; i < this.merge.tables.length; i++) {\r\n var table = this.merge.tables[i];\r\n var oldRowIndex = rowindex;\r\n rowindex = table.NPtoExcel(worksheet, rowindex, startAtColIdx, includeCompareTo, this.buildingModel, withFormulas);\r\n if (this.buildingModel) {\r\n if (rowindex > oldRowIndex) {\r\n // don't want to consider tables that are not used in the model!\r\n rowindex += 3;\r\n }\r\n } else {\r\n rowindex += 3;\r\n }\r\n }\r\n\r\n \r\n\r\n\r\n }\r\n\r\n\r\n async savePRMerge() {\r\n // save environment for this company to a blob or something?\r\n // serialize and send up whole object?\r\n const exportmerge = classToPlain(this.merge);\r\n exportmerge.canRetrieveModel = true;\r\n const json = JSON.stringify(exportmerge);\r\n\r\n\r\n const result = await this.calcbenchAPI.PRSaveMerge(json, this.merge.entityID)\r\n if (result == null) return false\r\n\r\n const model = plainToClass(PRSavedModel, result)\r\n const index = this.savedModels.findIndex(element => element.entityID == model.entityID);\r\n\r\n\r\n if (index >= 0) {\r\n this.savedModels.splice(index, 1); \r\n } \r\n\r\n this.savedModels.push(model);\r\n \r\n\r\n return true;\r\n }\r\n\r\n async retrieveModel(model: PRSavedModel) {\r\n const jsonstring = await this.calcbenchAPI.PRRetrieveMerge(model.entityID) as string\r\n\r\n if (!jsonstring) {\r\n alert('fail');\r\n return\r\n }\r\n\r\n const plainobj = JSON.parse(jsonstring);\r\n\r\n const newmerge = plainToClass(PRMerge, plainobj)\r\n\r\n \r\n // reset row parent, prev, next AND table prev / next\r\n newmerge.reInitTables();\r\n\r\n newmerge.setmaxColIdxes();\r\n\r\n // set it \r\n this.merge = newmerge;\r\n }\r\n\r\n async deleteModel(model: PRSavedModel) {\r\n await this.calcbenchAPI.PRDeleteMerge(model.entityID) \r\n\r\n const index = this.savedModels.findIndex(element => element.entityID == model.entityID);\r\n\r\n\r\n if (index >= 0) {\r\n this.savedModels.splice(index, 1);\r\n }\r\n }\r\n\r\n\r\n allowDrop(ev) {\r\n\r\n const dropcell = ev.target.attributes['data-drag-data'].value\r\n const dragcell = ev.dataTransfer.types[0];\r\n\r\n const dropinfo = dropcell.split(\",\");\r\n const draginfo = dragcell.split(\",\");\r\n\r\n\r\n // return true to DISSALLOW!\r\n if (parseInt(dropinfo[0]) != parseInt(draginfo[0])) return true; // not same table, dissalow\r\n if (parseInt(dropinfo[1]) == parseInt(draginfo[1])) return true; // same row, dissalow\r\n if (parseInt(dropinfo[2]) == parseInt(draginfo[2]) + 1 || parseInt(dropinfo[2]) == parseInt(draginfo[2]) - 1) {\r\n ev.preventDefault(); return false;\r\n } // one period index before or after, OK\r\n\r\n\r\n // \r\n return true;\r\n\r\n }\r\n\r\n drag(ev) {\r\n ev.dataTransfer.setData(ev.target.attributes['data-drag-data'].value, 'dummy');\r\n }\r\n\r\n drop(ev) {\r\n ev.preventDefault();\r\n const dropcell = ev.target.attributes['data-drag-data'].value\r\n const dragcell = ev.dataTransfer.types[0];\r\n const dropinfo = dropcell.split(\",\");\r\n const draginfo = dragcell.split(\",\");\r\n const droptablei = dropinfo[0];\r\n const droprowi = dropinfo[1];\r\n const dropcoli = dropinfo[2];\r\n // var dragtablei = draginfo[0];\r\n const dragrowi = draginfo[1];\r\n const dragcoli = draginfo[2];\r\n\r\n const table = this.merge.tables.find(cc => cc.table_id == droptablei);\r\n\r\n\r\n let laterperiodi: number\r\n let earlierperiodi: number\r\n\r\n\r\n let laterperiodrow: PRMergeRow\r\n let earlierperiodrow: PRMergeRow\r\n\r\n if (dragcoli < dropcoli) {\r\n laterperiodrow = table.rows[dragrowi];\r\n earlierperiodrow = table.rows[droprowi];\r\n laterperiodi = dragcoli;\r\n earlierperiodi = dropcoli;\r\n } else {\r\n earlierperiodrow = table.rows[dragrowi];\r\n laterperiodrow = table.rows[droprowi];\r\n laterperiodi = dropcoli;\r\n earlierperiodi = dragcoli;\r\n }\r\n\r\n\r\n // var laterperiod = laterperiodrow.periods[laterperiodi];\r\n // var earlierperiod = earlierperiodrow.periods[earlierperiodi];\r\n\r\n let laterperiodorphan: boolean = true;\r\n let earlierperiodorphan: boolean = true;\r\n for (var i = 0; i <= laterperiodi; i++) {\r\n if (!laterperiodrow.periods[i].is_blank()) laterperiodorphan = false;\r\n }\r\n for (var i = earlierperiodi; i < earlierperiodrow.periods.length; i++) {\r\n if (!earlierperiodrow.periods[i].is_blank()) earlierperiodorphan = false;\r\n }\r\n\r\n\r\n // do we have to split first?\r\n if (laterperiodorphan && earlierperiodorphan) {\r\n // ok, we can just combine\r\n } else {\r\n // need to split one or both\r\n const splitrowL = table.unmatchRowAt(laterperiodrow, earlierperiodi)\r\n\r\n // (remember the newly created row gets the OLDER periods)\r\n const origearlierperiodrow = earlierperiodrow;\r\n const splitrowE = table.unmatchRowAt(earlierperiodrow, earlierperiodi)\r\n earlierperiodrow = splitrowE; // this is the now split up and ready to merge earlier period row\r\n\r\n\r\n\r\n // and remove any that are empty\r\n if (splitrowL.periods.find(cc => !cc.is_blank()) == null) {\r\n // remove - it's empty\r\n var ridx = table.rows.indexOf(splitrowL);\r\n table.rows.splice(ridx, 1)\r\n \r\n\r\n }\r\n if (origearlierperiodrow.periods.find(cc => !cc.is_blank()) == null) {\r\n // remove - it's empty\r\n var ridx = table.rows.indexOf(origearlierperiodrow);\r\n table.rows.splice(ridx, 1)\r\n }\r\n \r\n\r\n }\r\n // now combine\r\n const newrow = new PRMergeRow\r\n newrow.periods = [];\r\n for (var i = 0; i <= laterperiodi; i++) {\r\n newrow.periods.push(laterperiodrow.periods[i]);\r\n }\r\n for (var i = earlierperiodi; i < earlierperiodrow.periods.length; i++) {\r\n newrow.periods.push(earlierperiodrow.periods[i]);\r\n }\r\n\r\n\r\n // insert new at the spot of the drop row\r\n table.rows.splice(droprowi, 0, newrow)\r\n // remove old 2 rows\r\n var ridx = table.rows.indexOf(laterperiodrow);\r\n table.rows.splice(ridx, 1)\r\n ridx = table.rows.indexOf(earlierperiodrow);\r\n table.rows.splice(ridx, 1)\r\n\r\n \r\n // !!!set parent table, prev row and next row\r\n //! !!set parent table, prev row and next row\r\n table.setRowsPrevAndNextAndIndexes(newrow, earlierperiodrow);\r\n\r\n // need to manually fire change detection becasue we are in the browser drop event?\r\n // https://stackoverflow.com/questions/45499982/change-detection-not-registering-data-changes\r\n this.$scope.$digest();\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nangular.module('calcbenchApp').component('getNextPeriodDisplay', {\r\n controller: PRGetNextPeriodController,\r\n template: require('./prmatchdisplay.tpl.html'),\r\n bindings: {\r\n points: '=',\r\n laterperiodsecid: '='\r\n }\r\n});","import * as angular from \"angular\";\r\nimport { CalcbenchAPI } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport './style.scss'\r\nimport { classToPlain, Exclude, plainToClass, Type } from 'class-transformer';\r\nimport { calcbenchSheetSaveObject } from \"../shared/calcbenchAPI/PressRelease\";\r\nimport _, { Dictionary } from \"lodash\"\r\n\r\n\r\n\r\nclass PRModelController implements ng.IController {\r\n static $inject = ['calcbenchAPI', '$scope']\r\n\r\n usersSheets: calcbenchSheetSaveObject[];\r\n folderGroups: Dictionary;\r\n rowList: any[];\r\n \r\n\r\n constructor(private calcbenchAPI: CalcbenchAPI, private $scope: ng.IScope) {\r\n }\r\n\r\n async $onInit() {\r\n this.usersSheets = await this.calcbenchAPI.getCBSheetSavedWorkbooks();\r\n this.getRowList(true);\r\n }\r\n\r\n\r\n \r\n async $doCheck() {\r\n var els = angular.element(document.querySelectorAll('.sheet-list-row'));\r\n var vm = this;\r\n els.off(\"dragstart\");\r\n els.on(\"dragstart\", handleDragStart);\r\n els.off(\"dragenter\");\r\n els.on(\"dragenter\", handleDragEnter);\r\n els.off(\"dragover\");\r\n els.on(\"dragover\", handleDragOver);\r\n els.off(\"dragleave\");\r\n els.on(\"dragleave\", handleDragLeave);\r\n els.off(\"drop\");\r\n els.on(\"drop\", handleDrop);\r\n els.off(\"dragend\");\r\n els.on(\"dragend\", handleDragEnd);\r\n\r\n\r\n function handleDragStart(e: JQueryEventObject) {\r\n var el = e.target.closest('tr') as HTMLElement\r\n\r\n // e.dataTransfer.effectAllowed = 'move';\r\n (e.originalEvent as DragEvent).dataTransfer.setData('guid', el.dataset.guid);\r\n }\r\n\r\n function handleDragOver(e: JQueryEventObject) {\r\n var el = e.target.closest('tr') as HTMLElement\r\n if (!el.dataset.folder_name) {\r\n return true; // means you CANT drop \r\n }\r\n\r\n\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n\r\n // e.dataTransfer.dropEffect = 'move';\r\n\r\n return false;\r\n }\r\n\r\n function handleDragEnter(e: JQueryEventObject) {\r\n // e.classList.add('over');\r\n }\r\n\r\n function handleDragLeave(e: JQueryEventObject) {\r\n // e.classList.remove('over');\r\n }\r\n\r\n async function handleDrop(e: JQueryEventObject) {\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n e.preventDefault();\r\n\r\n var el = e.target.closest('tr') as HTMLElement\r\n if (el.dataset.folder_name) {\r\n\r\n var sheetGUID = (e.originalEvent as DragEvent).dataTransfer.getData('guid')\r\n\r\n var sheet = vm.usersSheets.find(CC => { return (CC.GUID == sheetGUID) })\r\n var folder = vm.rowList.find(CC => { return el.dataset.folder_name == CC.folderName});\r\n if (sheet) {\r\n var newname = el.dataset.folder_name;\r\n var OK = await vm.calcbenchAPI.CBsheetChangeFolder(sheetGUID, newname);\r\n if (OK) {\r\n\r\n sheet.folder = newname;\r\n sheet.folderOpen = folder.folderOpen;\r\n\r\n vm.reorder();\r\n vm.getRowList(false);\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function handleDragEnd(e: JQueryEventObject) {\r\n // e.style.opacity = '1';\r\n }\r\n\r\n }\r\n\r\n \r\n\r\n\r\n getRowList(setOpenClosed = false)\r\n {\r\n if (!this.usersSheets) return;\r\n this.folderGroups = _.groupBy(this.usersSheets, sheet => sheet.folder);\r\n this.rowList = new Array();\r\n var vm: PRModelController = this;\r\n\r\n _.forEach(this.folderGroups, function (folderGroup, key) {\r\n var folderName = key;\r\n var folderRow = { name: key, is_folder: true, folderGroup: folderGroup, folderOpen: false }\r\n if (key)\r\n {\r\n //add folder\r\n if (! setOpenClosed)\r\n {\r\n //read from existing\r\n folderRow.folderOpen = folderGroup[0].folderOpen;\r\n }\r\n \r\n vm.rowList.push(folderRow);\r\n }\r\n _.forEach(folderGroup, function (sheetRow, key) {\r\n if (setOpenClosed)\r\n {\r\n if (!folderName)\r\n {\r\n folderRow.folderOpen = true;\r\n sheetRow.folderOpen = true;\r\n }\r\n }\r\n vm.rowList.push(sheetRow);\r\n });\r\n });\r\n }\r\n\r\n openFolder(folder)\r\n {\r\n\r\n if (folder.folderOpen) {\r\n folder.folderOpen = false;\r\n }\r\n else {\r\n folder.folderOpen = true;\r\n }\r\n\r\n _.forEach(folder.folderGroup, function (sheet, key) {\r\n sheet.folderOpen = folder.folderOpen;\r\n });\r\n }\r\n deleteFile(file: calcbenchSheetSaveObject)\r\n {\r\n if (!confirm(\"Are you sure you want to delete sheet: \" + file.name.replace(\"'\", \"\") + \"? Cannot be undone.\")) return false;\r\n\r\n var savedOK = this.calcbenchAPI.deleteCBSheetWorkbook(file.GUID);\r\n\r\n if (savedOK) {\r\n alert('OK');\r\n const index = this.usersSheets.indexOf(file);\r\n if (index > -1) { // only splice array when item is found\r\n this.usersSheets.splice(index, 1); // 2nd parameter means remove one item only\r\n }\r\n } else\r\n {\r\n alert('Failed')\r\n }\r\n\r\n this.getRowList(false);\r\n\r\n\r\n }\r\n\r\n changeFolder(file: calcbenchSheetSaveObject, newFolder) {\r\n\r\n\r\n //check for OK characters!?\r\n\r\n\r\n\r\n var savedOK = this.calcbenchAPI.CBsheetChangeFolder(file.GUID, newFolder);\r\n\r\n if (savedOK) {\r\n file.folder = newFolder;\r\n } else {\r\n alert('Failed')\r\n }\r\n\r\n\r\n this.reorder();\r\n\r\n this.getRowList(false);\r\n\r\n\r\n }\r\n\r\n\r\n rename(file: calcbenchSheetSaveObject, newName) {\r\n\r\n\r\n //check for OK characters!?\r\n\r\n\r\n\r\n var savedOK = this.calcbenchAPI.CBsheetChangeName(file.GUID, newName);\r\n\r\n if (savedOK) {\r\n file.name = newName;\r\n } else {\r\n alert('Failed')\r\n }\r\n\r\n\r\n this.reorder();\r\n this.getRowList(false);\r\n\r\n\r\n }\r\n\r\n reorder()\r\n {\r\n this.usersSheets.sort((a, b) => {\r\n const nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n const nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n // names must be equal\r\n return 0;\r\n });\r\n\r\n\r\n this.usersSheets.sort((a, b) => {\r\n const nameA = a.folder.toUpperCase(); // ignore upper and lowercase\r\n const nameB = b.folder.toUpperCase(); // ignore upper and lowercase\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\nangular.module('calcbenchApp').component('prModelController', {\r\n controller: PRModelController,\r\n template: require('./prmodeldisplay.tpl.html'),\r\n bindings: {\r\n }\r\n});\r\n","import ng from \"angular\";\r\nimport angular from \"angular\";\r\nimport { CalcbenchAPI, CompanyMethods } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ICompany } from \"../shared/calcbenchAPI/company\";\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\n\r\nconst URLNameSpace = 'ap_'; // analytics page\r\nconst URLEntityKey = 'focusCompanyEntityID';\r\n\r\nclass CompanyAnalyticsPageController implements ng.IController {\r\n static $inject = ['$scope', '$location', 'PeerGroupChannel', 'PeriodParams', 'PeerGroup', 'PeriodChannel', 'calcbenchAPI'];\r\n\r\n public focusCompany: ICompany;\r\n\r\n constructor(\r\n private $scope: angular.IScope,\r\n private $location: angular.ILocationService,\r\n private peerGroupChannel: PeerGroupChannel,\r\n private periodParams: PeriodParams,\r\n private peerGroup: PeerGroupInstance,\r\n private periodChannel: PeriodChannel,\r\n private calcbenchAPI: CalcbenchAPI) { }\r\n\r\n async $onInit() {\r\n this.peerGroupChannel.onPeerGroupChange(this.peerGroup.writeToURL);\r\n this.periodChannel.onPeriodChange(this.$scope, this.periodParams.writeToURL);\r\n this.periodParams.readFromURL();\r\n const urlEntityID = this.$location.search()[URLNameSpace + URLEntityKey];\r\n if (urlEntityID) {\r\n const response = await this.calcbenchAPI.getCompanies(CompanyMethods.CalcbenchEntityIDs, [urlEntityID])\r\n this.focusCompanySelected(response[0])\r\n }\r\n }\r\n\r\n public focusCompanySelected = (company: ICompany) => {\r\n $('.entity-name').html(company.entity_name);\r\n this.$location.search(URLNameSpace + URLEntityKey, company.entity_id);\r\n\r\n this.focusCompany = null // Set it to null so the table gets reset\r\n setTimeout(() => {\r\n this.focusCompany = company\r\n })\r\n }\r\n\r\n public get showFocusCompanyBox() {\r\n return this.peerGroup.groupSelected\r\n }\r\n}\r\n\r\n\r\n\r\nangular.module('calcbenchApp')\r\n .controller('CompanyAnalyticsPageController', CompanyAnalyticsPageController)\r\n ","import * as angular from \"angular\";\r\nimport _, { Dictionary } from \"lodash\"\r\nimport { create, meanDependencies, medianDependencies } from 'mathjs'\r\nimport * as d3 from 'd3'\r\nimport ng from \"angular\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { CalcbenchAPI } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\n\r\nimport { IPeriodMetricEntityTraceable } from '../trace/traceDirective'\r\nimport { COLUMN_TYPES } from \"../benchmark/multiCompanyPage\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\"\r\nimport { exportSVG } from \"../shared/pdfExport/pdfExport\";\r\nimport { ICompany } from \"../shared/calcbenchAPI/company\";\r\nimport { RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { IPeriodAPIParams } from \"../shared/calcbenchAPI/IPeriodAPIParams\";\r\nimport { IMetricData } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\";\r\nimport { IStandardizedData } from \"../shared/calcbenchAPI/IStandardizedData\";\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\nimport { BALANCE_SHEET_AND_CASH_FLOW_METRICS, INCOME_STATEMENT_METRICS, RATIOS } from \"./metrics\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\n\r\nconst { mean, median } = create({ meanDependencies, medianDependencies }, {})\r\n\r\nrequire('./analytics.scss')\r\n\r\ntype ITraceableStandardizedMetric = IPeriodMetricEntityTraceable & IStandardizedData\r\n\r\nclass CompanyAnalyticsTableController implements ng.IController {\r\n public readonly sections = [\r\n {\r\n section: 'income',\r\n title: 'Income Statement',\r\n metrics: INCOME_STATEMENT_METRICS,\r\n rows: [],\r\n deflator: 'Revenue'\r\n },\r\n {\r\n section: 'balance_and_cash_flow',\r\n title: \"Balance Sheet & Cash Flow\",\r\n metrics: BALANCE_SHEET_AND_CASH_FLOW_METRICS,\r\n rows: [],\r\n deflator: 'Assets'\r\n },\r\n {\r\n section: 'ratios',\r\n title: 'Ratios',\r\n metrics: RATIOS,\r\n rows: [],\r\n deflator: null,\r\n showSubSections: true\r\n }\r\n ]\r\n\r\n public nonNormalizableMetrics = ['CommonStockDividendsPerShare', 'EPSBasic', 'EPSDiluted', 'IncomeTaxRatePCT'];\r\n\r\n public get nonAveragableMetrics() {\r\n return this.nonNormalizableMetrics\r\n }\r\n\r\n /**\r\n * set in the template by the parent controller\r\n * */\r\n public focusCompany: ICompany\r\n\r\n public queryInProgress: boolean\r\n\r\n public metricDefinitions: Dictionary\r\n\r\n peerGroupMetrics: {};\r\n\r\n static $inject = [\r\n '$scope',\r\n '$uibModal',\r\n 'PeriodParams',\r\n 'PeerGroup',\r\n 'PeerGroupChannel',\r\n 'calcbenchAPI',\r\n 'FormatTypeToFormatType',\r\n 'PeriodChannel']\r\n\r\n constructor(\r\n private $scope: angular.IScope,\r\n private $uibModal,\r\n private periodParams: PeriodParams,\r\n private peerGroup: PeerGroupInstance,\r\n private peerGroupChannel: PeerGroupChannel,\r\n private calcbenchAPI: CalcbenchAPI,\r\n private formatTypeToFormatType,\r\n private periodChannel: PeriodChannel) {\r\n ($scope)._ = _;\r\n periodParams.rangeOption = RangeOption.SINGLE_PERIOD\r\n }\r\n\r\n async $onInit() {\r\n this.peerGroup.wholeUniverse = false;\r\n await this.peerGroupChannel.doneWithInitialSetup\r\n if (this.focusCompany) {\r\n this.periodParams.year = this.focusCompany.most_recent_complete_calendar_year;\r\n this.callGetAnalytics();\r\n }\r\n const onParamsChange = () => {\r\n if (this.focusCompany) {\r\n this.callGetAnalytics();\r\n }\r\n }\r\n this.peerGroupChannel.onPeerGroupChange(onParamsChange)\r\n\r\n this.periodChannel.onPeriodChange(this.$scope, onParamsChange)\r\n\r\n\r\n const response = await this.calcbenchAPI.getAvailableMetrics()\r\n this.metricDefinitions = Object.values(response).flat().reduce((a, v) => ({ ...a, [v.metric]: v }), {})\r\n }\r\n\r\n\r\n private async callGetAnalytics() {\r\n this.queryInProgress = true\r\n const incomeSection = this.sections[0]; const balanceSection = this.sections[1]; const ratiosSection = this.sections[2]\r\n const faceMetrics = _.flatten([incomeSection.metrics, balanceSection.metrics])\r\n this.peerGroupMetrics = {}\r\n this.lastPeriodFocusCompanyValues = {}\r\n this.thisPeriodFocusCompanyValues = {}\r\n await this.getAnalyticsForMetrics(faceMetrics, [incomeSection, balanceSection])\r\n await this.getAnalyticsForMetrics(ratiosSection.metrics, [ratiosSection])\r\n this.queryInProgress = false\r\n }\r\n\r\n public thisPeriodFocusCompanyValues: Record\r\n\r\n public lastPeriodFocusCompanyValues: Record\r\n\r\n private async getAnalyticsForMetrics(metrics: string[], sections) {\r\n const thisPeriodDataResponse = (await this.calcbenchAPI.mappedData(\r\n { metrics },\r\n { calcbenchEntityIDs: [this.focusCompany.entity_id] },\r\n this.periodParams.getAPIParams()\r\n )).data\r\n\r\n const lastPeriodDataResponse = (await this.calcbenchAPI.mappedData(\r\n { metrics },\r\n { calcbenchEntityIDs: [this.focusCompany.entity_id] },\r\n this.periodParams.previousPeriod().getAPIParams()\r\n )).data\r\n\r\n const thisPeriodData: ITraceableStandardizedMetric[] = thisPeriodDataResponse.map(d => {\r\n const traceProperties = { period: d.calendar_period, year: d.calendar_year, dataSet: COLUMN_TYPES.mapped };\r\n const traceable = { ...d, ...traceProperties }\r\n return traceable\r\n })\r\n this.thisPeriodFocusCompanyValues = { ...this.thisPeriodFocusCompanyValues, ...thisPeriodData.reduce((a, v) => ({ ...a, [v.metric]: v }), {}) }\r\n this.lastPeriodFocusCompanyValues = { ...this.lastPeriodFocusCompanyValues, ...lastPeriodDataResponse.reduce((a, v) => ({ ...a, [v.metric]: v }), {}) }\r\n let allEntityIDs = this.peerGroup.entityIDs;\r\n if (!_.includes(allEntityIDs, this.focusCompany.entity_id)) {\r\n allEntityIDs = allEntityIDs.slice(0);\r\n allEntityIDs.push(this.focusCompany.entity_id);\r\n }\r\n\r\n const peerGroupResponse = await this.calcbenchAPI.mappedData({ metrics }, { calcbenchEntityIDs: allEntityIDs }, this.periodParams.getAPIParams())\r\n const peerGroupValues = _.groupBy(peerGroupResponse.data, d => d.metric)\r\n\r\n let peerRatios; let focusCompanyAverage; let values: number[];\r\n sections.forEach(section => {\r\n section.metrics.forEach(metric => {\r\n const peerGroupMetrics = {} as any;\r\n if (metric === section.deflator) {\r\n // Top rows of income and balanace sheet sections.\r\n values = peerGroupValues[metric].map(v => v.value)\r\n peerGroupMetrics.mean = mean(values);\r\n peerGroupMetrics.median = median(values);\r\n peerGroupMetrics.percentile = _.filter(values, peerValue => peerValue <= this.thisPeriodFocusCompanyValues[metric].value).length / values.length;\r\n } else if (section.deflator && peerGroupValues[metric] && this.thisPeriodFocusCompanyValues[metric]) {\r\n peerRatios = this.peerGroupRatios(peerGroupValues[metric], peerGroupValues[section.deflator]);\r\n peerGroupMetrics.mean = mean(peerRatios);\r\n peerGroupMetrics.median = median(peerRatios);\r\n peerGroupMetrics.percent = true;\r\n focusCompanyAverage = this.thisPeriodFocusCompanyValues[metric].value / this.thisPeriodFocusCompanyValues[section.deflator].value\r\n peerGroupMetrics.percentile = _.filter(peerRatios, peerValue => peerValue < focusCompanyAverage).length / peerRatios.length;\r\n } else if (peerGroupValues[metric]) {\r\n // Ratios\r\n values = peerGroupValues[metric].map(v => v.value)\r\n peerGroupMetrics.mean = mean(values);\r\n peerGroupMetrics.median = median(values);\r\n peerGroupMetrics.percentile = _.filter(values, (peerValue) => this.thisPeriodFocusCompanyValues[metric] && peerValue <= this.thisPeriodFocusCompanyValues[metric].value).length / values.length;\r\n }\r\n this.peerGroupMetrics[metric] = peerGroupMetrics;\r\n });\r\n })\r\n }\r\n\r\n private peerGroupRatios(numerators: IStandardizedData[], denominators: IStandardizedData[]) {\r\n const companyDenominators = _.indexBy(denominators, 'ticker');\r\n return _.filter(numerators, numeratorMetric => companyDenominators[numeratorMetric.ticker] && companyDenominators[numeratorMetric.ticker].value !== 0).map(numeratorMetric => numeratorMetric.value !== 0 ? numeratorMetric.value / companyDenominators[numeratorMetric.ticker].value : 0);\r\n }\r\n\r\n public excelExport() {\r\n const excelExportData = {};\r\n this.sections.forEach(section => {\r\n excelExportData[section.section] = _.chain(section.metrics).filter(metric => this.thisPeriodFocusCompanyValues[metric]).map((metric: string) => {\r\n const row: any = _.clone(this.thisPeriodFocusCompanyValues[metric]);\r\n\r\n\r\n row.deflatorName = section.deflator || \"\";\r\n row.formatType = this.formatTypeToFormatType[this.metricDefinitions[metric].format_type];\r\n const thisPeriodValue = _.get(this.thisPeriodFocusCompanyValues, [metric, 'value']) as number;\r\n const lastPeriodValue = _.get(this.lastPeriodFocusCompanyValues, [metric, 'value']) as number;\r\n if (thisPeriodValue && lastPeriodValue) {\r\n row.YoY_percent_change = (thisPeriodValue - lastPeriodValue) / lastPeriodValue;\r\n }\r\n if (section.deflator && metric !== section.deflator && this.nonNormalizableMetrics.indexOf(metric) === -1) {\r\n row.deflated_value = this.thisPeriodFocusCompanyValues[metric].value / this.thisPeriodFocusCompanyValues[section.deflator].value;\r\n row.deflatorName = section.deflator;\r\n }\r\n row.peerGroupAverage = this.peerGroupMetrics[metric].mean;\r\n row.peerGroupMedian = this.peerGroupMetrics[metric].median;\r\n row.peerGroupPercentile = this.peerGroupMetrics[metric].percentile * 100;\r\n return row;\r\n }).value();\r\n });\r\n\r\n $('#excel-export-data-input').val(JSON.stringify(excelExportData));\r\n const withFormulas = $(event.target).data(\"formulas\");\r\n $('#excel-export-data-formulas').val(withFormulas);\r\n $('#excel-export-analytics-title,#excel-export-analytics-sheet-name').val(`Calcbench Analytics for ${this.focusCompany.entity_name}`);\r\n $('#exportform').submit();\r\n }\r\n\r\n public percentile(value, peerGroupValues) {\r\n return _.filter(peerGroupValues, (peerValue) => peerValue < value).length / peerGroupValues.length;\r\n }\r\n\r\n public async chart(metric: string, $event, deflator, metricDefinition) {\r\n let allEntityIDs = this.peerGroup.entityIDs;\r\n if (!_.includes(allEntityIDs, this.focusCompany.entity_id)) {\r\n allEntityIDs = allEntityIDs.slice(0);\r\n allEntityIDs.push(this.focusCompany.entity_id);\r\n }\r\n const previousPeriodParams = this.periodParams.previousPeriod()\r\n const thisPeriodParams = this.periodParams.getAPIParams(); const lastPeriodParams = previousPeriodParams.getAPIParams();\r\n const currentAndPreviousPeriodParams: IPeriodAPIParams = {\r\n endYear: thisPeriodParams.year,\r\n endPeriod: thisPeriodParams.period,\r\n year: lastPeriodParams.year,\r\n period: lastPeriodParams.period\r\n }\r\n const getDeflatorValues = deflator && metric !== deflator;\r\n const metrics = [metric];\r\n if (getDeflatorValues) {\r\n metrics.push(deflator);\r\n }\r\n const response = await this.calcbenchAPI.mappedData({ metrics }, { calcbenchEntityIDs: allEntityIDs }, currentAndPreviousPeriodParams)\r\n const tickerToCompany = _.indexBy(this.peerGroup.companies, 'ticker');\r\n tickerToCompany[this.focusCompany.ticker] = this.focusCompany as any\r\n\r\n let thisPeriodDeflatorValues; let lastPeriodDeflatorValues;\r\n let yAxisFormat = \"$,.0f\";\r\n if (getDeflatorValues) {\r\n thisPeriodDeflatorValues = _.chain(response.data).filter({\r\n 'calendar_year': thisPeriodParams.year,\r\n 'calendar_period': thisPeriodParams.period,\r\n 'metric': deflator\r\n }).indexBy('ticker').value();\r\n lastPeriodDeflatorValues = _.chain(response.data).filter({\r\n 'calendar_year': lastPeriodParams.year,\r\n 'calendar_period': lastPeriodParams.period,\r\n 'metric': deflator\r\n }).indexBy('ticker').value();\r\n yAxisFormat = \".0%\";\r\n }\r\n\r\n if (metricDefinition.format_type === \"twoDecimalPointsNumber\") {\r\n yAxisFormat = \".0%\";\r\n }\r\n\r\n const foundValues = _.chain(response.data)\r\n .filter({ 'calendar_year': thisPeriodParams.year, 'calendar_period': thisPeriodParams.period, 'metric': metric })\r\n .filter(metric => getDeflatorValues ? _.get(thisPeriodDeflatorValues, [metric.ticker, 'value']) : true).value();\r\n const companiesPerGroup = foundValues.length / Math.min(this.peerGroup.companies.length, 30);\r\n const buildData = (year, period, deflatorValues) => _.chain(response.data)\r\n .filter({ 'calendar_year': year, 'calendar_period': period, 'metric': metric })\r\n .filter(metric => deflatorValues ? _.get(deflatorValues, [metric.ticker, 'value']) : true)\r\n .map(metric => {\r\n let { value } = metric;\r\n if (deflatorValues) {\r\n value /= deflatorValues[metric.ticker].value;\r\n }\r\n metric.value = value;\r\n return metric;\r\n }).sortBy('value')\r\n .chunk(companiesPerGroup)\r\n .map(chunk => _.find(chunk, { ticker: this.focusCompany.ticker }) || chunk[0])\r\n .map(metric => ({\r\n isFocusCompany: metric.ticker === this.focusCompany.ticker,\r\n companyIdentifier: tickerToCompany[metric.ticker]?.entity_name,\r\n value: metric.value\r\n })).value()\r\n const thisPeriodData = buildData(thisPeriodParams.year, thisPeriodParams.period, thisPeriodDeflatorValues)\r\n const lastPeriodData = buildData(lastPeriodParams.year, lastPeriodParams.period, lastPeriodDeflatorValues);\r\n\r\n const metricTitle = metric + (getDeflatorValues ? ` as % of ${deflator}` : '')\r\n const title = `${metricTitle} ${this.periodParams}`\r\n const lastPeriodTitle = `${metricTitle} ${previousPeriodParams}`\r\n this.buildModal().rendered.then(() => {\r\n this.buildChart(thisPeriodData, title, yAxisFormat, '#analyticsChartThisPeriod');\r\n this.buildChart(lastPeriodData, lastPeriodTitle, yAxisFormat, '#analyticsChartLastPeriod');\r\n });\r\n }\r\n\r\n public buildModal() {\r\n return this.$uibModal.open({\r\n template: require('./chartModal.tpl.html'),\r\n size: 'lg',\r\n controller() {\r\n this.saveImage = (id: string) => {\r\n const svg = document.getElementById(id) as unknown as SVGElement\r\n exportSVG(svg)\r\n };\r\n },\r\n controllerAs: '$ctrl',\r\n windowClass: 'analyticsChartModal'\r\n });\r\n }\r\n\r\n async buildChart(data: { value: number, companyIdentifier: string, isFocusCompany: boolean }[], title: string, yAxisFormat: string, element: string) {\r\n\r\n // https://bl.ocks.org/mbostock/3885304\r\n const initalWidth = 1500; const initialHeight = 700;\r\n const svg = d3.select(element);\r\n const margin = { top: 20, right: 20, bottom: 200, left: 95 };\r\n const width = initalWidth - margin.left - margin.right;\r\n const height = initialHeight - margin.top - margin.bottom;\r\n\r\n const x = d3.scaleBand().rangeRound([0, width]).padding(0.1);\r\n const y = d3.scaleLinear().rangeRound([height, 0]);\r\n\r\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`)\r\n\r\n x.domain(data.map(d => d.companyIdentifier))\r\n y.domain([0, d3.max(data, d => d.value)])\r\n\r\n g.append(\"g\")\r\n .attr(\"class\", \"axis axis--x\")\r\n .attr(\"transform\", `translate(0,${height})`)\r\n .call(d3.axisBottom(x))\r\n .selectAll('text')\r\n .attr('transform', 'rotate(90)')\r\n .attr('y', 0)\r\n .attr('x', 9)\r\n .style('text-anchor', 'start')\r\n .style('font-size', '22px');\r\n\r\n g.append(\"g\")\r\n .attr(\"class\", \"axis axis--y\")\r\n .call(d3.axisLeft(y).ticks(10, yAxisFormat))\r\n .append(\"text\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 6)\r\n .attr(\"dy\", \"0.71em\")\r\n .attr(\"text-anchor\", \"end\")\r\n .text(\"Company\");\r\n\r\n g.selectAll(\".bar\")\r\n .data(data)\r\n .enter().append(\"rect\")\r\n .attr(\"class\", \"bar\")\r\n .attr(\"x\", d => x(d.companyIdentifier))\r\n .attr(\"y\", d => y(d.value))\r\n .attr(\"width\", x.bandwidth())\r\n .attr(\"height\", d => height - y(d.value))\r\n .attr('fill', d => d.isFocusCompany ? 'goldenrod' : 'gray')\r\n .append('svg:title').text(d => d3.format(yAxisFormat)(d.value));\r\n\r\n g.append('text')\r\n .attr('x', (width / 2))\r\n .attr('y', (margin.top / 2))\r\n .attr('text-anchor', 'middle')\r\n .attr('font-size', '24px')\r\n .text(title);\r\n }\r\n\r\n public reportedMetric = (metric) => !_.isUndefined(_.get(this, `thisPeriodFocusCompanyValues.${metric}.value`))\r\n}\r\n\r\n\r\nangular.module('calcbenchApp').component('companyAnalyticsTable', {\r\n controller: CompanyAnalyticsTableController,\r\n template: require('./analyticsTable.tpl.html'),\r\n bindings: {\r\n focusCompany: '<',\r\n initialEntityIdentifier: '='\r\n }\r\n});","\r\nexport const INCOME_STATEMENT_METRICS = [\r\n 'Revenue',\r\n 'ExciseAndSalesTaxes',\r\n 'NetInterestIncome',\r\n 'NonInterestIncome',\r\n 'ProvisionForLoanLoss',\r\n 'CostOfRevenue',\r\n 'GrossProfit',\r\n 'ResearchAndDevelopment',\r\n 'SGAExpense',\r\n 'OperatingExpenses',\r\n 'OperatingExpenseExItems',\r\n 'OperatingIncome',\r\n 'EBIT',\r\n 'InterestIncome',\r\n 'InterestExpense',\r\n 'EBITDA',\r\n 'EarningsBeforeTaxes',\r\n 'IncomeTaxes',\r\n 'IncomeTaxRatePCT',\r\n 'NoncontrollingInterestNetIncome',\r\n 'NetIncomeDiscontinuedOperations',\r\n 'NetIncomeContinuingOperations',\r\n 'NetIncome',\r\n 'NetIncomeCommonStockholders',\r\n 'EPSBasic',\r\n 'EPSDiluted',\r\n 'AvgSharesOutstandingBasic',\r\n 'AvgDilutedSharesOutstanding',\r\n 'CommonStockDividendsPerShare'\r\n]\r\n\r\nexport const BALANCE_SHEET_AND_CASH_FLOW_METRICS = [\r\n 'Cash',\r\n 'RestrictedCashAndInvestmentsCurrent',\r\n 'ShortTermInvestments',\r\n 'LongTermInvestments',\r\n 'AccountsReceivable',\r\n 'Inventory',\r\n 'LoansHeldForSale',\r\n 'CurrentTaxAsset',\r\n 'CurrentAssets',\r\n 'PPE',\r\n 'AccumulatedDepreciation',\r\n 'AccruedIncomeTaxes',\r\n 'LoansReceivable',\r\n 'LoansReceivableCommercial',\r\n 'LoansReceivableConsumer',\r\n 'LoansAllowance',\r\n 'Goodwill',\r\n 'IntangibleAssetsExcludingGoodwill',\r\n 'NoncurrentTaxAsset',\r\n 'Assets',\r\n 'Deposits',\r\n 'AccountsPayable',\r\n 'ShortTermDebt',\r\n 'CurrentLongTermDebt',\r\n 'CurrentTaxliability',\r\n 'CurrentLiabilities',\r\n 'LongTermDebt',\r\n 'TotalDebt',\r\n 'DeferredRevenue',\r\n 'DeferredRevenueCurrent',\r\n 'DeferredRevenueNoncurrent',\r\n 'NoncurrentTaxLiability',\r\n 'Liabilities',\r\n 'PreferredStockValue',\r\n 'CommonStockValue',\r\n 'AdditionalPaidInCapital',\r\n 'RetainedEarnings',\r\n 'TreasuryStockValue',\r\n 'StockholdersEquityBeforeNCI',\r\n 'NoncontrollingInterest',\r\n 'StockholdersEquity',\r\n 'MezzanineValues',\r\n 'SharesAuthorized',\r\n 'SharesIssued',\r\n 'OperatingCashFlow',\r\n 'InvestingCashFlow',\r\n 'FinancingCashFlow',\r\n 'CashIncrease'\r\n]\r\n\r\nexport const RATIOS = [\r\n 'AssetTurn',\r\n 'GrossProfitMargin',\r\n 'NetProfitMargin',\r\n 'OpCashFlowPerShare',\r\n 'PERatio',\r\n 'ROA',\r\n 'ROIC',\r\n 'ROE',\r\n 'AcctReceivableTurn',\r\n 'CashRatio',\r\n 'CashToCashCycle',\r\n 'CurrentRatio',\r\n 'DaysInventoryHeld',\r\n 'DaysPayablesOut',\r\n 'DaysSalesOut',\r\n 'InventoryTurn',\r\n 'OpCashFlowRatio',\r\n 'PayablesTurn',\r\n 'QuickRatio',\r\n 'WorkingCapTurn',\r\n 'DebtRatio',\r\n 'DebtToEBITDA',\r\n 'DebtToEquity',\r\n 'TimesInterestEarned'\r\n]","import _ from \"lodash\";\r\nimport { IMetricData } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\";\r\nimport { IMetricColumn } from \"./IMetricColumn\";\r\n\r\n\r\n\r\n\r\nexport class MappedDataColumnDefs extends Array {\r\n constructor(...items: Array) {\r\n super(...items);\r\n (Object).setPrototypeOf(this, Object.create(MappedDataColumnDefs.prototype));\r\n }\r\n\r\n findColumn(metric, dataSet) {\r\n let dataColumns = this.dataColumns\r\n return _.find(dataColumns, function (columnDef) {\r\n return columnDef.metric && columnDef.metric.metric.toLowerCase() === metric.toLowerCase() && columnDef.pointType === dataSet;\r\n });\r\n }\r\n\r\n /**\r\n * Columns other than the entity column\r\n **/\r\n get dataColumns(): IMetricColumn[] {\r\n let metricColumns: IMetricColumn[] = [];\r\n for (let columnDef of this) {\r\n if ('metric' in columnDef) {\r\n metricColumns.push(columnDef);\r\n }\r\n }\r\n return metricColumns;\r\n }\r\n\r\n get metrics(): IMetricData[] {\r\n return _.unique(this.dataColumns.map(c => c.metric))\r\n }\r\n}","import { IStandardizedData } from \"../shared/calcbenchAPI/IStandardizedData\"\r\nimport { IMetricData } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\"\r\nimport { formatFact, IFormatable } from \"../shared/filters/formatFact\"\r\nimport { FormatType } from \"../shared/filters/formatType\"\r\nimport { PeriodParams } from \"../shared/periods/periodParams\"\r\nimport { IPeriodMetricEntityTraceable } from \"../trace/traceDirective\"\r\nimport { COLUMN_KEY_SEPARATOR } from \"./mappedData\"\r\nimport { COLUMN_TYPES } from \"./multiCompanyPage\"\r\n\r\nexport class MappedPoint implements IFormatable, IPeriodMetricEntityTraceable {\r\n calendar_year: number\r\n\r\n fiscal_year: number\r\n\r\n calendar_period: number\r\n\r\n fiscal_period: number\r\n\r\n format_type: FormatType\r\n\r\n ticker: string\r\n\r\n unit_of_measure: string\r\n\r\n /**\r\n * information about the metric for this point.\r\n */\r\n metaData: IMetricData\r\n\r\n /**\r\n * assets, revenue, etc.\r\n * */\r\n metric: string\r\n\r\n value: any\r\n\r\n is_preliminary_data: boolean\r\n\r\n get periodKey(): string {\r\n let year: number; let period: number;\r\n if (this.periodParams.useFiscalPeriod) {\r\n year = this.fiscal_year\r\n period = this.fiscal_period\r\n } else {\r\n year = this.calendar_year\r\n period = this.calendar_period\r\n }\r\n return `${year}-${period}`\r\n }\r\n\r\n get period(): number {\r\n if (this.periodParams.useFiscalPeriod) {\r\n return this.fiscal_period\r\n } \r\n return this.calendar_period\r\n \r\n }\r\n\r\n /**\r\n * calendar or fiscal year\r\n * */\r\n get year(): number {\r\n if (this.periodParams.useFiscalPeriod) {\r\n return this.fiscal_year\r\n } \r\n return this.calendar_year\r\n \r\n }\r\n\r\n get dataSet(): COLUMN_TYPES {\r\n return this.metaData.dataSet\r\n }\r\n\r\n constructor(private periodParams: PeriodParams) { }\r\n\r\n filter = (val) => {\r\n const fact = { format_type: this.metaData && this.metaData.format_type || this.format_type, unit_of_measure: this.unit_of_measure };\r\n return formatFact(val, fact);\r\n }\r\n\r\n getKey = (): string => {\r\n let year; let period;\r\n if (this.calendar_year === 0) { // Ticker, state, zip code etc, don't have period the columnKey should be the global period. akittredge, November 2016\r\n year = this.periodParams.year;\r\n period = this.periodParams.getPeriodNumber();\r\n } else if (!this.periodParams.useFiscalPeriod) {\r\n year = this.calendar_year;\r\n period = this.calendar_period;\r\n } else {\r\n year = this.fiscal_year;\r\n period = this.fiscal_period;\r\n }\r\n return [this.metaData.dataSet, this.metric, year, period].join(COLUMN_KEY_SEPARATOR);\r\n }\r\n\r\n static fromStandardizedData(point: IStandardizedData, periodParams: PeriodParams): MappedPoint {\r\n const p = new MappedPoint(periodParams);\r\n p.calendar_year = point.calendar_year;\r\n p.fiscal_year = point.fiscal_year;\r\n p.calendar_period = point.calendar_period;\r\n p.fiscal_period = point.fiscal_period;\r\n p.ticker = point.ticker;\r\n p.metric = point.metric;\r\n p.value = point.value;\r\n p.unit_of_measure = point.unit_of_measure;\r\n p.is_preliminary_data = point.preliminary;\r\n return p;\r\n }\r\n\r\n}","import angular from \"angular\";\r\nimport { IMetricData } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\";\r\nimport { MessageBus } from \"../shared/utils/MessageBus\";\r\n\r\nangular.module('calcbenchApp')\r\n .factory('MetricSelectedHandlers', ['$q', function ($q: ng.IQService): StandardizedMetricSelectedHandler {\r\n return new MessageBus < IMetricData[] > ();\r\n }])\r\n\r\n/**\r\n * Singleton for messages when user selects standardized metrics for the standardized table. Also used to set initial state.\r\n * */\r\nexport type StandardizedMetricSelectedHandler = MessageBus","import _ from \"lodash\";\r\nimport { PeriodType, PeriodTypeAnnual, PeriodTypeQuarterly, PeriodTypeTTM } from \"../shared/periods/constants\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { HasPeriod, periodComparer } from \"./periodComparer\";\r\n\r\nexport function buildPeriodColumnKeys(data: ({ periodKey: string } & HasPeriod)[],\r\n useFiscalPeriods: boolean,\r\n periodType: PeriodType,\r\n $location: ng.ILocationService): { key: string, periodParams: PeriodParams }[] {\r\n let uniquePeriods = _.unique(data, false, d => d.periodKey);\r\n uniquePeriods.sort(periodComparer(useFiscalPeriods)).reverse();\r\n return uniquePeriods.map(d => d.periodKey).map(periodKey => {\r\n var year = parseInt(periodKey.split('-')[0]);\r\n var period = parseInt(periodKey.split('-')[1]);\r\n let periodParams = new PeriodParams($location);\r\n periodParams.year = year;\r\n periodParams.period = period;\r\n periodParams.periodType = periodType === PeriodTypeTTM ? PeriodTypeTTM : (period === 0 ? PeriodTypeAnnual : PeriodTypeQuarterly);\r\n return {\r\n key: periodKey,\r\n periodParams: periodParams\r\n }\r\n })\r\n}","\r\nangular.module('calcbenchApp').filter('formatMappedPoint', formatMappedPoint)\r\n\r\nfunction formatMappedPoint() {\r\n return function (val, mappedPoint) {\r\n if (mappedPoint) {\r\n return mappedPoint.filter(val);\r\n }\r\n }\r\n}","import * as angular from \"angular\";\r\nimport _, { Dictionary } from \"lodash\"\r\nimport { IPromise } from \"angular\"\r\nimport { create, evaluateDependencies } from 'mathjs'\r\nimport { IGridRow } from \"ui-grid\"\r\nimport { CellFormulaValue, Row, CellValue, CellHyperlinkValue, Cell, Column } from \"exceljs\"\r\nimport { getExcelAddInProxy } from '../shared/excelAddinProxy/calcbenchExcelAddInProxy'\r\nimport { CalcbenchAPI, APIReponse, ICompanyAPIParams, CompanyMethods, isHTTPResponse } from '../shared/calcbenchAPI/calcbenchAPI'\r\nimport { mapAPICompanyToModelCompany } from \"../shared/peerGroup/peerGroupInstance\"\r\nimport { PeerGroupCompanies } from \"../shared/peerGroup/peerGroup\"\r\nimport { COLUMN_TYPES } from './multiCompanyPage'\r\n\r\nimport { traceURLForExcelFormula } from \"../trace/traceController\"\r\nimport { FootnoteQueryParams } from \"../footnote/footnoteQueryParameters\"\r\nimport { timeSeriesModal } from \"../shared/chart/timeSeries\"\r\nimport { FormatType } from \"../shared/filters/formatType\"\r\nimport { ICalcbenchUser } from \"../shared/calcbenchUser/CalcbenchUser\"\r\nimport { PeriodParams } from \"../shared/periods/periodParams\"\r\nimport { buildWorkbookWithSheet, addCalcbenchHeader, saveWorkbookOrExcelInsert, excelCoords } from \"../shared/excelExport/excelExport\"\r\nimport { excelNumberFormat } from \"../shared/filters/excelNumberFormat\"\r\n\r\nimport './mapped-data.scss'\r\nimport '../shared/styles/cb-ui-grid.scss'\r\nimport { ITraceParameters } from \"../trace/TraceURLParameters\";\r\nimport { ICompany } from \"../shared/calcbenchAPI/company\";\r\nimport { MessageBus } from \"../shared/utils/MessageBus\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\nimport { ALL_HISTORY, SINGLE_PERIOD } from \"../shared/periods/rangeOptions\";\r\nimport { PeriodTypeCombined, PeriodTypeTTM, PeriodType, } from \"../shared/periods/constants\";\r\nimport { StandardizedMetricSelectedHandler } from \"./MetricSelectedHandlers\";\r\nimport { IMappedDataController } from \"./IMappedDataController\";\r\nimport { IMetricColumn } from \"./IMetricColumn\";\r\nimport { MappedDataColumnDefs } from \"./MappedDataColumnDefs\";\r\nimport { TableRow } from \"./ITableRow\";\r\nimport { MappedPoint } from \"./MappedPoint\";\r\nimport { timePeriodComparator } from \"./timePeriodComparator\";\r\nimport { buildPeriodColumnKeys } from \"./buildPeriodColumnKeys\";\r\nimport { IPeriodAPIParams } from \"../shared/calcbenchAPI/IPeriodAPIParams\";\r\nimport { PermissionLevel } from \"../shared/calcbenchUser/PermissionLevel\";\r\nimport { IMetricData } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\";\r\nimport { IPeerGroupCompany } from \"../shared/peerGroup/IPeerGroupCompany\";\r\nimport { PeerGroupInstanceBuilderType } from \"../shared/peerGroup/PeerGroupInstanceBuilder\";\r\nimport { FootnoteType } from \"../footnote/footnoteTypes/FootnoteType\";\r\nimport { PeerGroupClassificationMethod } from \"../shared/peerGroup/PeerGroupClassificationMethod\";\r\nimport { IStandardizedData } from \"../shared/calcbenchAPI/IStandardizedData\";\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\n\r\nconst { evaluate } = create({ evaluateDependencies }, {})\r\nrequire('../trace/traceDirective')\r\nrequire('./MetricSelectedHandlers')\r\nrequire('./formatMappedPoint')\r\n\r\n\r\nangular.module('calcbenchApp').component('mappedData', {\r\n controller: MappedDataController,\r\n template: require('./mappedDataTable.tpl.html'),\r\n bindings: {\r\n // initialMetrics: '=',\r\n peerGroup: '=',\r\n fillParent: '=',\r\n metricsChanged: '='\r\n }\r\n}).factory('FormatTypeToFormatType', () =>\r\n// Reverse of Public Enum formatTypes from data.vb.\r\n({\r\n text: -1,\r\n currency: 0,\r\n percent: 1,\r\n twoDecimalPointsCurrency: 2,\r\n twoDecimalPointsNumber: 3,\r\n number: 4,\r\n date: 5,\r\n rawNumber: 6, // ' no commas, etc,\r\n boolean: 7,\r\n formula: 9,\r\n currency_cad: 10,\r\n currency_eur: 1809,\r\n currency_gbp: 809,\r\n currency_jpy: 411,\r\n currency_cny: 156,\r\n emptyCell: 99\r\n})\r\n)\r\n .component('tokenField', {\r\n controller: TokenField,\r\n template: \"{{$ctrl.column.colDef.formula.label}}\",\r\n bindings: {\r\n column: '=',\r\n columns: '='\r\n }\r\n }).factory('XBRLTagSelectedHandlers', ['$q', function ($q: ng.IQService) {\r\n return new MessageBus();\r\n }]).factory('SetMetricsHandlers', () => []).factory('COLUMN_TYPES', () => COLUMN_TYPES).factory('MappedDataColumnDefs', () => new MappedDataColumnDefs())\r\n\r\n\r\n\r\nexport const COLUMN_KEY_SEPARATOR = '_'; export const DEFAULT_COLUMN_MIN_WIDTH = 175;\r\nMappedDataController.$inject = ['$scope',\r\n '$q',\r\n '$uibModal',\r\n '$location',\r\n 'PeriodParams',\r\n 'calcbenchAPI',\r\n 'PeerGroupChannel',\r\n 'PeriodChannel',\r\n 'FormatTypeToFormatType',\r\n 'XBRLTagSelectedHandlers',\r\n 'MetricSelectedHandlers',\r\n 'SortNumericColumn',\r\n 'SortTextColumn',\r\n 'CalcbenchUser',\r\n 'FootnoteQueryParamsFactory',\r\n '$httpParamSerializer',\r\n '$window',\r\n 'PeerGroupInstanceBuilder'];\r\n\r\nfunction MappedDataController(\r\n $scope: ng.IScope,\r\n $q: ng.IQService,\r\n $uibModal: angular.ui.bootstrap.IModalService,\r\n $location: ng.ILocationService,\r\n periodParams: PeriodParams,\r\n calcbenchAPI: CalcbenchAPI,\r\n peerGroupChannel: PeerGroupChannel,\r\n periodChannel: PeriodChannel,\r\n formatTypeToFormatType,\r\n XBRLTagSelectedHandlers: MessageBus,\r\n /**\r\n * Queue for messages when user selects standardized metric, and set the initial metrics\r\n * */\r\n metricSelectedHandlers: StandardizedMetricSelectedHandler,\r\n sortNumericColumn,\r\n sortTextColumn,\r\n calcbenchUser: ICalcbenchUser,\r\n footnoteQueryParamsFactory: () => FootnoteQueryParams,\r\n $httpParamSerializer: angular.IHttpParamSerializer,\r\n $window: angular.IWindowService,\r\n PeerGroupInstanceBuilder: PeerGroupInstanceBuilderType) {\r\n\r\n const vm = this as IMappedDataController;\r\n vm.data = [];\r\n vm.exportTable = exportTable;\r\n vm.openAnalyticsPage = openAnalyticsPage;\r\n vm.restoreSinglePeriodView = restoreSinglePeriodView;\r\n vm.openSECFilingPage = openSECFilingPage;\r\n vm.disclosurePageLink = disclosurePageLink;\r\n vm.filingsPageLink = filingsPageLink;\r\n vm.removeRow = removeRow;\r\n vm.chartDataPoint = chartDataPoint;\r\n vm.companyHistory = companyHistory;\r\n vm.getPreviousPeriodForAllColumns = getPreviousPeriodForAllColumns;\r\n vm.$onInit = $onInit;\r\n vm.evalFormula = evalFormula;\r\n vm.checkInsertExcelFormula = checkInsertExcelFormula;\r\n vm.showMissingCompanies = showMissingCompanies;\r\n vm.restoreMultiCompanyView = restoreMultiCompanyView;\r\n\r\n const companyNameColumnDef = {\r\n name: 'ticker',\r\n displayName: 'Company',\r\n width: '350',\r\n cellTemplate: require('./companyNameCell.tpl.html'),\r\n pinnedLeft: true,\r\n cellClass: 'companyCell',\r\n pointType: COLUMN_TYPES.company,\r\n sortingAlgorithm(tickerA, tickerB, a, b, direction) {\r\n return sortTextColumn({ value: vm.tickerToCompany[tickerA].entity_name }, { value: vm.tickerToCompany[tickerB].entity_name }, null, null, direction);\r\n }\r\n } as IMetricColumn;\r\n\r\n\r\n async function $onInit() {\r\n const { peerGroup } = vm;\r\n\r\n const columnDefs = new MappedDataColumnDefs();\r\n columnDefs.push(companyNameColumnDef)\r\n vm.gridOptions = {\r\n data: vm.data,\r\n columnDefs,\r\n appScopeProvider: vm,\r\n onRegisterApi: gridApi => {\r\n vm.gridApi = gridApi;\r\n gridApi.core.on.columnVisibilityChanged($scope, column => {\r\n _.remove(vm.gridOptions.columnDefs, def => def.name === column.field);\r\n });\r\n }\r\n }\r\n\r\n metricSelectedHandlers.addListener(async (metrics: IMetricData[]) => {\r\n await handleMetricSelected(metrics);\r\n setShowAllHistory()\r\n })\r\n metricSelectedHandlers.pusherSetupDone()\r\n XBRLTagSelectedHandlers.addListener((tag: string) => handleXBRLTagSelected(tag).then(setShowAllHistory))\r\n XBRLTagSelectedHandlers.pusherSetupDone()\r\n peerGroupChannel.doneWithInitialSetup.then(() => {\r\n peerGroup.addChangeListener(async () => {\r\n await buildTickerToCompany()\r\n handlePeriodChange()\r\n });\r\n periodChannel.onPeriodChange($scope, handlePeriodChange)\r\n let doneGettingInitialData = $q.when()\r\n if (peerGroup.companies.length !== 0 || peerGroup.wholeUniverse) {\r\n doneGettingInitialData = doneGettingInitialData.then(buildTickerToCompany).then(handlePeerGroupChange);\r\n }\r\n doneGettingInitialData.then(async () => {\r\n // const metrics = await calcbenchAPI.getAvailableMetrics()\r\n // vm.metricDefinitions = _.chain(metrics).values().flatten().indexBy('metric').value();\r\n\r\n })\r\n })\r\n peerGroup.addChangeListener(setShowAllHistory)\r\n }\r\n\r\n function handlePeriodChange() {\r\n if (periodParams.rangeOption === ALL_HISTORY) {\r\n if (inSingleCompanuMultiMetricTimeSeriesMode()) {\r\n singleCompanuMultiMetricTimeSeries(vm.peerGroup.companies[0].ticker);\r\n } else {\r\n const timeSeriesMetric = vm.gridOptions.columnDefs.dataColumns[0].metric\r\n getTimeSeries(timeSeriesMetric)\r\n }\r\n } else if (vm.multiMetricColumns) {\r\n restoreSinglePeriodView()\r\n } else {\r\n const columnDefs = vm.gridOptions.columnDefs.dataColumns; let newColumnDef; let columnKey;\r\n vm.gridOptions.columnDefs.length = 1;\r\n columnDefs.forEach(oldColumnDef => {\r\n const offsetPeriod = periodParams.offset(oldColumnDef.periodOffset);\r\n columnKey = [oldColumnDef.pointType, oldColumnDef.metric.metric, offsetPeriod.year, offsetPeriod.getPeriodNumber()].join(COLUMN_KEY_SEPARATOR);\r\n newColumnDef = buildColumnDef(oldColumnDef.metric, oldColumnDef.pointType, offsetPeriod, columnKey, oldColumnDef.displayName, oldColumnDef.periodOffset);\r\n vm.gridOptions.columnDefs.push(newColumnDef);\r\n })\r\n getDataForColumns(setData, periodParams.getAPIParams(), vm.peerGroup.getAPIQueryParams());\r\n }\r\n }\r\n\r\n /**\r\n * Showing time series of multiple metrics vertically for one company\r\n * \r\n * */\r\n function inSingleCompanuMultiMetricTimeSeriesMode() {\r\n const oneCompanySelected = vm.peerGroup.companies.length === 1\r\n const multiMetricsSelected = vm.multiMetricColumns && vm.multiMetricColumns.length > 1\r\n const inAllHistoryMode = periodParams.rangeOption === ALL_HISTORY\r\n return oneCompanySelected && multiMetricsSelected && inAllHistoryMode\r\n }\r\n\r\n function handlePeerGroupChange(): IPromise {\r\n let doneGettingData: IPromise = $q.when();\r\n if (periodParams.rangeOption === ALL_HISTORY) {\r\n if (inSingleCompanuMultiMetricTimeSeriesMode()) {\r\n doneGettingData = singleCompanuMultiMetricTimeSeries(vm.peerGroup.companies[0].ticker);\r\n } else if (vm.gridOptions.columnDefs.dataColumns[0]) {\r\n doneGettingData = getTimeSeries(vm.gridOptions.columnDefs.dataColumns[0].metric);\r\n }\r\n } else {\r\n const periodAPIParams = periodParams.getAPIParams()\r\n const peerGroupAPIParams = vm.peerGroup.getAPIQueryParams()\r\n doneGettingData = getDataForColumns(setData, periodAPIParams, peerGroupAPIParams)\r\n }\r\n return doneGettingData\r\n }\r\n\r\n /**\r\n * Called when the user has selected a standardized metric\r\n * @param metrics\r\n */\r\n async function handleMetricSelected(metrics: IMetricData[]): Promise> {\r\n const allHistory = periodParams.rangeOption === ALL_HISTORY\r\n if (allHistory) {\r\n if (inSingleCompanuMultiMetricTimeSeriesMode()) {\r\n await handleMetricSingleCompanyAllHistory(metrics)\r\n } else {\r\n getTimeSeries(metrics[0])\r\n }\r\n } else {\r\n await handleMetricMultiCompanySinglePeriod(metrics)\r\n }\r\n vm.metricsChanged.push(vm.gridOptions.columnDefs.metrics)\r\n\r\n\r\n\r\n\r\n function handleMetricSingleCompanyAllHistory(metrics: IMetricData[]): IPromise {\r\n for (const metric of metrics) {\r\n const columnKey = [COLUMN_TYPES.mapped, metric.metric].join(COLUMN_KEY_SEPARATOR);\r\n const duplicate = _.findIndex(vm.gridOptions.columnDefs, def => def.name === columnKey) >= 0;\r\n if (duplicate) {\r\n continue\r\n }\r\n const columnDef = buildColumnDef(metric, COLUMN_TYPES.mapped, {} as PeriodParams, columnKey, metric.metric);\r\n delete columnDef.getColumnTotal;\r\n delete columnDef.getColumnAverage;\r\n vm.gridOptions.columnDefs.push(columnDef);\r\n }\r\n return calcbenchAPI.mappedData({ metrics: metrics.map(m => m.metric) }, { calcbenchEntityIDs: [vm.peerGroup.companies[0].entity_id] }, periodParams.getAPIParams())\r\n .then(response => {\r\n addColumnResults_allHistory(response.data, metrics);\r\n });\r\n }\r\n }\r\n\r\n async function handleMetricMultiCompanySinglePeriod(metrics: IMetricData[]) {\r\n for (const metric of metrics) {\r\n const columnKey = [COLUMN_TYPES.mapped, metric.metric, periodParams.year, periodParams.getPeriodNumber()].join(COLUMN_KEY_SEPARATOR);\r\n const duplicate = _.findIndex(vm.gridOptions.columnDefs, def => def.name === columnKey) >= 0;\r\n if (duplicate) {\r\n // eslint-disable-next-line no-continue\r\n continue\r\n }\r\n const columnDef = buildColumnDef(metric, COLUMN_TYPES.mapped, periodParams, columnKey, metric.metric)\r\n vm.gridOptions.columnDefs.push(columnDef);\r\n }\r\n\r\n let data: IStandardizedData[]\r\n try {\r\n data = (await calcbenchAPI.mappedData(\r\n { metrics: metrics.map(m => m.metric) },\r\n vm.peerGroup.getAPIQueryParams(),\r\n periodParams.getAPIParams())).data\r\n } catch (e) {\r\n if (isHTTPResponse(e)) {\r\n alert(e.data)\r\n }\r\n return\r\n }\r\n\r\n metrics.forEach((met) => {\r\n const metricData = data.filter((itm) => itm.metric.toLowerCase() === met.metric.toLowerCase());\r\n addColumnResults(metricData, met);\r\n });\r\n }\r\n\r\n function handleXBRLTagSelected(tag: string): ng.IPromise {\r\n let done = $q.when() as angular.IPromise;\r\n if (duplicateMetric(tag, COLUMN_TYPES.XBRLTag)) {\r\n return done;\r\n }\r\n if (periodParams.rangeOption === ALL_HISTORY) {\r\n const columnKey = [COLUMN_TYPES.XBRLTag, tag].join(COLUMN_KEY_SEPARATOR);\r\n const existingcolidx = _.findIndex(vm.gridOptions.columnDefs, def => def.name === columnKey);\r\n if (existingcolidx >= 0) return done;\r\n const metric = {\r\n metric: tag,\r\n dataSet: COLUMN_TYPES.XBRLTag,\r\n format_type: FormatType.Currency\r\n } as IMetricData\r\n done = calcbenchAPI.XBRLTagValues({ tags: [tag] }, { calcbenchEntityIDs: [vm.peerGroup.companies[0]?.entity_id], entireUniverse: vm.peerGroup.wholeUniverse }, periodParams.getAPIParams())\r\n .then(response => {\r\n addColumnResults_allHistory(response.data, [metric]);\r\n });\r\n const columnDef = buildColumnDef({\r\n metric: tag,\r\n dataSet: COLUMN_TYPES.XBRLTag,\r\n format_type: FormatType.Currency\r\n } as IMetricData, COLUMN_TYPES.XBRLTag, {} as PeriodParams, columnKey, tag);\r\n delete columnDef.getColumnTotal;\r\n delete columnDef.getColumnAverage;\r\n vm.gridOptions.columnDefs.push(columnDef);\r\n } else {\r\n done = calcbenchAPI.XBRLTagValues({ tags: [tag] }, vm.peerGroup.getAPIQueryParams(), periodParams.getAPIParams())\r\n .then(response => {\r\n const metric = {\r\n metric: tag,\r\n dataSet: COLUMN_TYPES.XBRLTag,\r\n format_type: response.data[0]?.format_type\r\n } as IMetricData\r\n addColumnResults(response.data, metric);\r\n const columnKey = [COLUMN_TYPES.XBRLTag, tag, periodParams.year, periodParams.getPeriodNumber()].join(COLUMN_KEY_SEPARATOR);\r\n const columnDef = buildColumnDef(metric, COLUMN_TYPES.XBRLTag, periodParams, columnKey, tag);\r\n vm.gridOptions.columnDefs.push(columnDef)\r\n vm.metricsChanged.push(vm.gridOptions.columnDefs.metrics)\r\n });\r\n }\r\n return done;\r\n }\r\n\r\n function buildTickerToCompany(): ng.IPromise {\r\n let doneBuildingMap = $q.when();\r\n if (vm.peerGroup.wholeUniverse) {\r\n doneBuildingMap = calcbenchAPI.getCompanies(CompanyMethods.Universe, true).then(response => {\r\n const tickerToCompany = _.indexBy(response.map(mapAPICompanyToModelCompany), c => c.ticker);\r\n vm.tickerToCompany = tickerToCompany;\r\n });\r\n } else {\r\n vm.tickerToCompany = _.indexBy(vm.peerGroup.companies, c => c.ticker);\r\n }\r\n return doneBuildingMap;\r\n }\r\n\r\n function singleCompanuMultiMetricTimeSeries(ticker: string): IPromise {\r\n vm.gridOptions.data.length = 0;\r\n const entityID = vm.tickerToCompany[ticker].entity_id;\r\n\r\n const existingColumnDefs = _.uniq(vm.gridOptions.columnDefs.dataColumns, def => [def.metric.metric, def.pointType].join(COLUMN_KEY_SEPARATOR));\r\n vm.gridOptions.columnDefs.length = 0;\r\n (vm.gridOptions.columnDefs).push({\r\n name: 'period',\r\n width: '350',\r\n cellTemplate: require('./rowPeriodCell.tpl.html'),\r\n pinnedLeft: true,\r\n displayName: 'Period',\r\n cellClass: 'companyCell',\r\n pointType: COLUMN_TYPES.company\r\n });\r\n\r\n existingColumnDefs.forEach(columnDef => {\r\n const columnKey = [columnDef.pointType, columnDef.metric.metric].join(COLUMN_KEY_SEPARATOR);\r\n const newColumnDef = buildColumnDef(columnDef.metric, columnDef.pointType, {} as PeriodParams, columnKey, columnDef.metric.metric);\r\n delete newColumnDef.getColumnTotal;\r\n delete newColumnDef.getColumnAverage;\r\n vm.gridOptions.columnDefs.push(newColumnDef);\r\n });\r\n\r\n return getDataForColumns((mappedPoints: MappedPoint[], dataSet) => {\r\n const periodGroups = _.groupBy(mappedPoints, point => {\r\n if (periodParams.useFiscalPeriod) {\r\n return `${point.fiscal_year}-${point.fiscal_period}`;\r\n }\r\n return `${point.calendar_year}-${point.calendar_period}`;\r\n\r\n })\r\n _.forOwn(periodGroups, (group, groupPeriodJoined) => {\r\n const groupYear = parseInt(groupPeriodJoined.split(\"-\")[0]);\r\n const groupPeriod = parseInt(groupPeriodJoined.split(\"-\")[1]);\r\n let periodRow = _.find(vm.gridOptions.data, (row) => row.period.year === groupYear && row.period.period === groupPeriod);\r\n if (!periodRow) {\r\n periodRow = {\r\n period: { year: groupYear, period: groupPeriod, ticker },\r\n ticker\r\n };\r\n vm.gridOptions.data.push(periodRow);\r\n }\r\n _.assign(periodRow, _.indexBy(group, (def) => [dataSet, def.metric].join(COLUMN_KEY_SEPARATOR)));\r\n });\r\n vm.gridOptions.data.sort(timePeriodComparator);\r\n vm.gridOptions.data.reverse();\r\n },\r\n {\r\n allHistory: true,\r\n useFiscalPeriod: periodParams.useFiscalPeriod,\r\n periodType: periodParams.periodType\r\n },\r\n {\r\n calcbenchEntityIDs: [entityID]\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * re-get the data for the existing columns\r\n * @param handlePoints\r\n * @param periodParams\r\n * @param peerGroupParams\r\n * @returns\r\n */\r\n function getDataForColumns(\r\n handlePoints: (points: MappedPoint[], columnType: COLUMN_TYPES) => void,\r\n periodParams: IPeriodAPIParams,\r\n peerGroupParams: ICompanyAPIParams) {\r\n vm.data.length = 0; // Get rid of the existing data;\r\n const points = _.mapValues(_.invert(COLUMN_TYPES), () => []) as Dictionary;\r\n const promises = new Array>();\r\n vm.gridOptions.columnDefs.dataColumns.forEach(columnDef => {\r\n points[columnDef.pointType].push(columnDef);\r\n });\r\n\r\n if (points[COLUMN_TYPES.mapped].length > 0) {\r\n const pointsGroupedByOffset = _.groupBy(points[COLUMN_TYPES.mapped], 'periodOffset');\r\n _.forOwn(pointsGroupedByOffset, (offsetGroup, offsetnum) => {\r\n const offsetPeriodParams = offset(periodParams, offsetnum);\r\n const metrics = _.unique(_.pluck(offsetGroup, 'metric.metric'))\r\n promises.push(calcbenchAPI.mappedData({ metrics }, peerGroupParams, offsetPeriodParams)\r\n .then(response => {\r\n const points = buildDataPoints(response.data, COLUMN_TYPES.mapped)\r\n handlePoints(points, COLUMN_TYPES.mapped);\r\n }, ({ data: error }) => {\r\n alert(error.Message || error)\r\n }));\r\n });\r\n }\r\n\r\n if (points[COLUMN_TYPES.XBRLTag].length > 0) {\r\n const pointsGroupedByOffset = _.groupBy(points[COLUMN_TYPES.XBRLTag], 'periodOffset');\r\n _.forOwn(pointsGroupedByOffset, (offsetGroup, offsetnum) => {\r\n const offsetPeriodParams = offset(periodParams, offsetnum);\r\n promises.push(calcbenchAPI.XBRLTagValues({ tags: _.pluck(offsetGroup, 'metric.metric') }, peerGroupParams, offsetPeriodParams)\r\n .then((response) => {\r\n handlePoints(buildDataPoints(response.data, COLUMN_TYPES.XBRLTag), COLUMN_TYPES.XBRLTag);\r\n }, ({ data: error }) => {\r\n alert(error.Message || error);\r\n }));\r\n });\r\n }\r\n return $q.all(promises);\r\n }\r\n\r\n function buildDataPoints(data: IStandardizedData[], dataSet: COLUMN_TYPES): MappedPoint[] {\r\n const mappedPoints = new Array();\r\n _.forOwn(_.groupBy(data, 'metric'), (points, metric) => {\r\n const columnMetric = vm.gridOptions.columnDefs.findColumn(metric, dataSet).metric;\r\n columnMetric.dataSet = dataSet;\r\n Array.prototype.push.apply(mappedPoints, buildMappedPoints(points, [columnMetric]));\r\n });\r\n return mappedPoints;\r\n }\r\n\r\n function offset(periodParams: IPeriodAPIParams, offsetval_positiveInteger): IPeriodAPIParams {\r\n let oldperiod = periodParams;\r\n for (let i = 0; i < offsetval_positiveInteger; i++) {\r\n oldperiod = previousPeriod(oldperiod);\r\n }\r\n return oldperiod;\r\n }\r\n\r\n function previousPeriod(oldperiod: IPeriodAPIParams): IPeriodAPIParams {\r\n const previousPeriodParams = _.clone(oldperiod);\r\n if (oldperiod.periodType === 'Annual') {\r\n previousPeriodParams.year -= 1;\r\n } else { // quarterly\r\n if (oldperiod.period === 1) {\r\n previousPeriodParams.year -= 1;\r\n previousPeriodParams.period = 4;\r\n } else {\r\n previousPeriodParams.period -= 1;\r\n }\r\n }\r\n return previousPeriodParams;\r\n }\r\n\r\n function setData(mappedPoints: MappedPoint[]) {\r\n const companyMetricValues: { [k: string]: TableRow } = {};\r\n\r\n const existingCompanyRows: { [ticker: string]: TableRow } = _.indexBy(vm.data, d => d.ticker);\r\n mappedPoints.forEach(mappedPoint => {\r\n let row: TableRow; const { ticker } = mappedPoint;\r\n if (existingCompanyRows[ticker]) { // Row for company is already in the table \r\n row = existingCompanyRows[ticker]\r\n } else if (companyMetricValues[ticker]) { // We've already seen this company in this data set\r\n row = companyMetricValues[ticker]\r\n } else { // First we have seen of the company\r\n // @ts-ignore\r\n row = { ticker }\r\n companyMetricValues[ticker] = row\r\n }\r\n\r\n row[mappedPoint.getKey()] = mappedPoint;\r\n });\r\n\r\n _.forOwn(companyMetricValues, points => {\r\n vm.data.push(points);\r\n });\r\n vm.data.sort(columnSortCompare);\r\n }\r\n\r\n function buildPeriodColumns(data: MappedPoint[], metric, pointType: COLUMN_TYPES) {\r\n buildPeriodColumnKeys(data, periodParams.useFiscalPeriod, periodParams.periodType, $location)\r\n .map(periodKey => {\r\n const columnDef = buildColumnDef(metric, pointType, periodKey.periodParams, periodKey.key, metric.metric);\r\n columnDef.width = 200;\r\n vm.gridOptions.columnDefs.push(columnDef);\r\n });\r\n }\r\n\r\n function checkInsertExcelFormula(COL_FIELD) {\r\n const excelAddInProxy = getExcelAddInProxy()\r\n if (excelAddInProxy) {\r\n if (COL_FIELD.metaData.dataSet === COLUMN_TYPES.XBRLTag) {\r\n excelAddInProxy.insertFormulaForFact(COL_FIELD.fact_id, false);\r\n } else if (COL_FIELD.metaData.dataSet === COLUMN_TYPES.mapped) {\r\n let year\r\n let period\r\n if (periodParams.useFiscalPeriod) {\r\n year = COL_FIELD.fiscal_year;\r\n period = COL_FIELD.fiscal_period;\r\n } else {\r\n year = COL_FIELD.calendar_year;\r\n period = COL_FIELD.calendar_period;\r\n }\r\n excelAddInProxy.insertStandardizedMetricFormula(COL_FIELD.metric, COL_FIELD.ticker, year, period, periodParams.useFiscalPeriod)\r\n }\r\n }\r\n }\r\n\r\n function setShowAllHistory(): void {\r\n const numberOfMetrics = _.unique(vm.gridOptions.columnDefs.dataColumns, columnDef => columnDef.metric).length;\r\n periodParams.showAllHistoryOption = vm.peerGroup.companies.length === 1 || numberOfMetrics < 2;\r\n }\r\n\r\n function addColumnResults_allHistory(data: IStandardizedData[], pointsMetaData: IMetricData[]) {\r\n const mappedPoints = buildMappedPoints(data, pointsMetaData)\r\n let mappedPoint: MappedPoint\r\n const companyPoints = _.indexBy(mappedPoints, (point) => {\r\n if (periodParams.useFiscalPeriod) {\r\n return [point.ticker, point.fiscal_year, point.fiscal_period].join(COLUMN_KEY_SEPARATOR);\r\n }\r\n return [point.ticker, point.calendar_year, point.calendar_period].join(COLUMN_KEY_SEPARATOR);\r\n\r\n }); // should be by ticker, year, and period?\r\n vm.data.forEach(companyData => {\r\n const rowkey = [companyData.ticker, (companyData.period)?.year, (companyData.period)?.period].join(COLUMN_KEY_SEPARATOR);\r\n if (rowkey in companyPoints) { // should be by ticker, year, and period? \r\n mappedPoint = companyPoints[rowkey]; // should be by ticker, year, and period?\r\n const key = [mappedPoint.metaData.dataSet, mappedPoint.metric].join(COLUMN_KEY_SEPARATOR); // should be just type - metric\r\n companyData[key] = mappedPoint;\r\n delete companyPoints[rowkey]; // should be by ticker, year, and period?\r\n }\r\n });\r\n }\r\n\r\n function addColumnResults(data: IStandardizedData[], metric: IMetricData): void {\r\n const mappedPoints = buildMappedPoints(data, [metric]);\r\n const companyPoints = _.indexBy(mappedPoints, p => p.ticker);\r\n vm.data.forEach((companyData) => {\r\n const ticker = (companyData).ticker as string;\r\n if (ticker in companyPoints) {\r\n const mappedPoint = companyPoints[ticker];\r\n const key = mappedPoint.getKey();\r\n companyData[key] = mappedPoint;\r\n delete companyPoints[ticker];\r\n }\r\n })\r\n _.forOwn(companyPoints, (mappedPoint, ticker) => {\r\n // These are companies that were not previously in the table\r\n // var newRow = new TableRow();\r\n const newRow = { ticker };\r\n newRow[mappedPoint.getKey()] = mappedPoint;\r\n (vm.data).push(newRow);\r\n });\r\n }\r\n\r\n function companyHistory(company: IPeerGroupCompany) {\r\n vm.previousCompanies = new PeerGroupCompanies(...vm.peerGroup.companies)\r\n vm.multiMetricColumns = vm.gridOptions.columnDefs.dataColumns\r\n vm.peerGroup.setPeerGroupToCompany(company).then(() => {\r\n periodParams.rangeOption = ALL_HISTORY\r\n periodParams.showAllHistoryOption = true\r\n periodParams.writeToURL()\r\n vm.peerGroup.writeToURL()\r\n vm.peerGroup.broadcastChange()\r\n })\r\n }\r\n\r\n function buildColumnDef(metric: IMetricData, pointType: COLUMN_TYPES, columnPeriodParameters: PeriodParams, columnKey: string, displayName, periodOffset: number = 0): IMetricColumn {\r\n const menuItems: uiGrid.IMenuItem[] = [];\r\n\r\n\r\n function addPreviousPeriod() {\r\n const columnIndex = vm.gridOptions.columnDefs.findIndex(c => c.name === columnKey)\r\n const previousPeriod = columnPeriodParameters.previousPeriod();\r\n if (pointType === COLUMN_TYPES.mapped) {\r\n calcbenchAPI.mappedData({ metrics: [metric.metric] }, vm.peerGroup.getAPIQueryParams(), previousPeriod.getAPIParams())\r\n .then(response => addColumnResults(response.data, metric));\r\n } else {\r\n calcbenchAPI.XBRLTagValues({ tags: [metric.metric] }, vm.peerGroup.getAPIQueryParams(), previousPeriod.getAPIParams())\r\n .then(response => addColumnResults(response.data, metric));\r\n }\r\n const previousPeriodColumnKey = [pointType, metric.metric, previousPeriod.year, previousPeriod.getPeriodNumber()].join(COLUMN_KEY_SEPARATOR);\r\n const previousPeriodColumnDef = buildColumnDef(metric, pointType, previousPeriod, previousPeriodColumnKey, metric.metric, periodOffset + 1);\r\n vm.gridOptions.columnDefs.splice(columnIndex + 1, 0, previousPeriodColumnDef);\r\n }\r\n menuItems.push({\r\n title: 'Trace Column',\r\n action: () => calcbenchUser.checkPermissions(PermissionLevel.Premium) && openFootnotePageForColumn(metric, columnPeriodParameters, pointType)\r\n })\r\n\r\n menuItems.push({\r\n title: 'Previous Period',\r\n action: () => calcbenchUser.checkPermissions(PermissionLevel.Premium) && addPreviousPeriod()\r\n })\r\n\r\n if (!metric.is_ratio) {\r\n // The code that draws this graph on the server does not handle ratios.\r\n menuItems.push({\r\n title: 'Chart Period Over Period',\r\n action: () => chartChange(columnKey, metric, pointType, 0)\r\n })\r\n }\r\n\r\n menuItems.push({\r\n title: 'Comparison Chart',\r\n action: () => comparisonChart(columnKey, metric, pointType, 0)\r\n })\r\n\r\n function getTimeSeries() {\r\n if (calcbenchUser.checkPermissions(PermissionLevel.Premium)) {\r\n periodParams.rangeOption = ALL_HISTORY\r\n setShowAllHistory()\r\n metric.doNotWriteToURL = false\r\n metricSelectedHandlers.push([metric]);\r\n }\r\n }\r\n\r\n const columnDef = {\r\n name: columnKey,\r\n cellTemplate: require('./cellTemplate.html'),\r\n displayName: displayName || columnKey,\r\n menuItems,\r\n pointType,\r\n period: columnPeriodParameters,\r\n metric,\r\n headerCellTemplate: require('./cbGridHeaderCell.html'),\r\n getColumnTotal: columnTotalCalculator,\r\n getColumnAverage(columnKey) {\r\n const colTotal = columnTotalCalculator(columnKey);\r\n const numberOfCompaniesReporting = _.reduce(_.map(vm.data, (companyLine) => companyLine[columnKey] && 1), _.add);\r\n return colTotal / numberOfCompaniesReporting;\r\n },\r\n enablePinning: false,\r\n minWidth: DEFAULT_COLUMN_MIN_WIDTH,\r\n addPreviousPeriod,\r\n periodOffset,\r\n sortingAlgorithm: metric.format_type === FormatType.Text ? sortTextColumn : sortNumericColumn,\r\n getTimeSeries: periodParams.rangeOption !== ALL_HISTORY ? getTimeSeries : null,\r\n cellClass: (grid, row, col, _rowRenderIndex, _colRenderIndex) => {\r\n const cellValue = grid.getCellValue(row, col) as MappedPoint\r\n return cellValue?.is_preliminary_data ? 'preliminary' : ''\r\n },\r\n } as IMetricColumn;\r\n\r\n return columnDef;\r\n }\r\n\r\n function columnTotalCalculator(columnKey) {\r\n return _.reduce(_.map(vm.data, (companyLine) => {\r\n const dataPoint = companyLine[columnKey];\r\n return (dataPoint && Number(dataPoint.value as string) || 0);\r\n }), _.add, 0)\r\n }\r\n\r\n function getTimeSeries(metric: IMetricData): APIReponse {\r\n if (!vm.multiMetricColumns) {\r\n vm.multiMetricColumns = vm.gridOptions.columnDefs.dataColumns;\r\n }\r\n periodParams.rangeOption = ALL_HISTORY;\r\n periodParams.showAllHistoryOption = true;\r\n\r\n periodParams.writeToURL();\r\n const allHistoryPeriodParams = periodParams.getAPIParams();\r\n let getData: APIReponse;\r\n allHistoryPeriodParams.periodType = periodParams.periodType === PeriodTypeTTM ? PeriodTypeTTM : PeriodTypeCombined;\r\n vm.gridOptions.columnDefs.length = 1; // First column is the company names, want to leave those.\r\n if (metric.dataSet === COLUMN_TYPES.mapped) {\r\n getData = calcbenchAPI.mappedData({ metrics: [metric.metric] }, vm.peerGroup.getAPIQueryParams(), allHistoryPeriodParams);\r\n } else {\r\n getData = calcbenchAPI.XBRLTagValues({ tags: [metric.metric] }, vm.peerGroup.getAPIQueryParams(), allHistoryPeriodParams); // This does not work on the server.\r\n }\r\n getData.then((response) => {\r\n vm.data.length = 0;\r\n const mappedPoints = buildMappedPoints(response.data, [metric])\r\n const companyValues = _.groupBy(mappedPoints, 'ticker');\r\n _.forOwn(companyValues, (points, ticker) => {\r\n const timeSeriesRow = _.indexBy(points, p => p.periodKey);\r\n (timeSeriesRow).ticker = ticker;\r\n vm.data.push(timeSeriesRow as TableRow);\r\n });\r\n vm.data.sort(columnSortCompare)\r\n buildPeriodColumns(mappedPoints, metric, metric.dataSet);\r\n });\r\n return getData\r\n }\r\n\r\n function openFootnotePageForColumn(metric: IMetricData, columnPeriodParameters: PeriodParams, pointType: COLUMN_TYPES) {\r\n const periodURLParams = columnPeriodParameters.urlParams()\r\n const peerGroupURLParams = vm.peerGroup.urlParams()\r\n const disclosureParams = footnoteQueryParamsFactory()\r\n const searchType = pointType === COLUMN_TYPES.XBRLTag ? FootnoteType.XBRLNumericTag : (metric.is_face ? FootnoteType.NormalizedFaceMetric : FootnoteType.NormalizedFootnoteMetric)\r\n disclosureParams.setStandardizedOrNumericXBLTag(metric.metric, searchType)\r\n const disclosurePageURLParams = disclosureParams.urlParams\r\n const allParams = { ...periodURLParams, ...peerGroupURLParams, ...disclosurePageURLParams }\r\n const url = `https://${$location.host()}:${$location.port()}/disclosures?${$httpParamSerializer(allParams)}`;\r\n $window.open(url, '_blank')\r\n }\r\n\r\n /**\r\n * Download an Excel sheet.\r\n * @param includeTraceLinks\r\n * @param includeFormulas\r\n */\r\n function exportTable(includeTraceLinks: boolean, includeFormulas: boolean) {\r\n const firstColumnKey = 'companyName'\r\n const secondColumnKey = 'ticker'\r\n const thirdColumnKey = 'CIK'\r\n const [workbook, worksheet] = buildWorkbookWithSheet(\"Standardized Data\")\r\n const companyColumns = [\r\n { key: firstColumnKey, header: 'Name', width: 35 },\r\n { key: secondColumnKey, header: 'Ticker' },\r\n { key: thirdColumnKey, header: 'CIK', width: 20, style: { numFmt: \"0000000000\" } }\r\n ] as Column[]\r\n\r\n const { dataColumns } = vm.gridOptions.columnDefs\r\n\r\n const dataWorkSheetColumns = dataColumns.map(columnDef => ({\r\n key: columnDef.name,\r\n header: columnDef.metric.metric,\r\n style: { numFmt: excelNumberFormat(columnDef.metric.format_type) },\r\n width: 30,\r\n pointType: columnDef.pointType\r\n }))\r\n const yearRowLabel = periodParams.useFiscalPeriod ? 'Fiscal Year' : 'Calendar Year'\r\n const periodRowLabel = periodParams.useFiscalPeriod ? 'Fiscal Period' : 'Calendar Period'\r\n worksheet.columns = [...companyColumns, ...dataWorkSheetColumns]\r\n const formatPeriodCell = (c: Cell) => { c.style = { numFmt: 'General' } }\r\n worksheet.addRow(Object.fromEntries([...dataColumns.map(c => [c.name, c.period.year]), [thirdColumnKey, yearRowLabel]])).eachCell(formatPeriodCell)\r\n\r\n worksheet.addRow(Object.fromEntries([...dataColumns.map(c => [c.name, c.period.ExcelPeriod]), [thirdColumnKey, periodRowLabel]])).eachCell(formatPeriodCell)\r\n\r\n\r\n\r\n const columnOffset = 4\r\n const rowOffset = 9\r\n const preliminaryCells: string[] = []\r\n vm.gridOptions.data.forEach((row: TableRow, rowIndex) => {\r\n const rowValues = {} as Row\r\n dataWorkSheetColumns.forEach((c, columnIndex) => {\r\n let value: CellValue\r\n const cellPoint = row[c.key] as MappedPoint\r\n const cellValue = cellPoint?.value\r\n if (!cellValue) {\r\n return\r\n }\r\n\r\n if (includeFormulas) {\r\n const metricAddress = excelCoords(6, columnIndex + columnOffset, true)\r\n const tickerReference = excelCoords(rowIndex + rowOffset, 2, false, true)\r\n const yearReference = excelCoords(7, columnIndex + columnOffset, true)\r\n const periodReference = excelCoords(8, columnIndex + columnOffset, true)\r\n let formulaName\r\n if (c.pointType === COLUMN_TYPES.XBRLTag) {\r\n formulaName = periodParams.useFiscalPeriod ? 'CalcbenchXBRLTagFiscalPeriod' : 'CalcbenchXBRLTag'\r\n } else {\r\n formulaName = periodParams.useFiscalPeriod ? 'CalcbenchDataFiscalPeriod' : 'CalcbenchData'\r\n }\r\n const formula = `=${formulaName}(${metricAddress}, ${tickerReference}, ${yearReference}, ${periodReference})`\r\n\r\n value = {\r\n formula,\r\n result: cellValue\r\n } as CellFormulaValue\r\n } else if (includeTraceLinks) {\r\n const traceData: ITraceParameters = {\r\n year: cellPoint.year,\r\n period: cellPoint.period,\r\n useFiscalPeriod: periodParams.useFiscalPeriod,\r\n cid: cellPoint.ticker\r\n }\r\n if (c.pointType === COLUMN_TYPES.XBRLTag) {\r\n traceData.XBRLTag = cellPoint.metric\r\n } else {\r\n traceData.metric = cellPoint.metric\r\n }\r\n const traceHyperlink = traceURLForExcelFormula(traceData)\r\n value = {\r\n text: cellValue,\r\n hyperlink: traceHyperlink\r\n } as CellHyperlinkValue\r\n } else {\r\n value = cellValue\r\n }\r\n if (cellPoint.is_preliminary_data) {\r\n preliminaryCells.push(excelCoords(rowIndex + rowOffset, columnIndex + columnOffset))\r\n }\r\n rowValues[c.key] = value\r\n })\r\n\r\n rowValues[secondColumnKey] = row.ticker\r\n const company = vm.tickerToCompany[row.ticker]\r\n rowValues[thirdColumnKey] = company?.CIK\r\n rowValues[firstColumnKey] = company?.entity_name\r\n worksheet.addRow(rowValues)\r\n })\r\n\r\n\r\n worksheet.spliceRows(1, 0, ...new Array(5))\r\n const metricRow = worksheet.findRow(6)\r\n metricRow.eachCell(c => { c.font = { bold: true } })\r\n const periodLabels = [worksheet.getCell('C7'), worksheet.getCell('C8')]\r\n periodLabels.forEach(c => c.style = { font: { bold: true } })\r\n preliminaryCells.forEach(address => {\r\n worksheet.getCell(address).style = {\r\n ...worksheet.getCell(address).style,\r\n ...{ font: { italic: true } }\r\n }\r\n })\r\n if (preliminaryCells.length > 0) {\r\n worksheet.getCell('A3').value = 'Preliminary - Points from unaudited 8-Ks and Press Releases'\r\n worksheet.getCell('A3').style = {\r\n font: { italic: true }\r\n }\r\n }\r\n addCalcbenchHeader(worksheet)\r\n saveWorkbookOrExcelInsert(workbook, \"CalcbenchStandardizedData.xlsx\")\r\n }\r\n\r\n function openAnalyticsPage(entityID) {\r\n const eidstr = vm.peerGroup.entityIDs.join(',');\r\n $('#analyticseid').val(entityID);\r\n $('#analyticsentityIDstr').val(eidstr);\r\n $('#analyticsperiod').val((window).period);\r\n $('#analyticscy').val(periodParams.year);\r\n $('#analyticscp').val(periodParams.period);\r\n $('#analyticsmethod').val((window).method);\r\n $('#analytics').submit();\r\n }\r\n\r\n function restoreMultiCompanyView() {\r\n vm.gridOptions.columnDefs.splice(0, 1, companyNameColumnDef)\r\n vm.peerGroup.setPeerGroupToPeerGroupCompanies(vm.previousCompanies)\r\n periodParams.rangeOption = SINGLE_PERIOD\r\n setShowAllHistory()\r\n vm.previousCompanies = null\r\n periodChannel.periodChanged()\r\n buildTickerToCompany()\r\n }\r\n\r\n function restoreSinglePeriodView() {\r\n periodParams.rangeOption = SINGLE_PERIOD\r\n setShowAllHistory()\r\n vm.gridOptions.columnDefs.splice(0, vm.gridOptions.columnDefs.length, companyNameColumnDef)\r\n vm.multiMetricColumns.forEach(column => {\r\n vm.gridOptions.columnDefs.push(column)\r\n })\r\n vm.multiMetricColumns = null\r\n vm.peerGroup.broadcastChange()\r\n }\r\n\r\n function buildMappedPoints(points: IStandardizedData[], pointsMetaData: IMetricData[] = [{}] as IMetricData[]): MappedPoint[] {\r\n return points.map((point): MappedPoint => {\r\n const mappedPoint = MappedPoint.fromStandardizedData(point, periodParams);\r\n mappedPoint.metaData = pointsMetaData.find(p => p.metric === point.metric);\r\n return mappedPoint;\r\n });\r\n }\r\n\r\n function duplicateMetric(metric, metricType) {\r\n return _.chain(vm.gridOptions.columnDefs).filter(_.matchesProperty('metric.dataSet', metricType)).pluck('metric.metric').contains(metric).value();\r\n }\r\n\r\n\r\n async function openSECFilingPage(row: IGridRow) {\r\n const response = await calcbenchAPI.mappedData({ metrics: ['sec_html_url'] }, { companyIdentifiers: [row.entity.ticker] }, periodParams.getAPIParams())\r\n const url = response.data[0]?.value\r\n if (url) {\r\n window.open(url, '_blank')\r\n }\r\n }\r\n\r\n function removeRow(ticker) {\r\n vm.peerGroup.companies.removeCompany(vm.tickerToCompany[ticker].entity_id);\r\n _.remove(vm.data, _.matchesProperty('ticker', ticker))\r\n }\r\n\r\n function chartDataPoint(point: MappedPoint) {\r\n const companiesParams = { calcbenchEntityIDs: [vm.tickerToCompany[point.ticker].entity_id] } as ICompanyAPIParams\r\n const periodType = PeriodTypeCombined\r\n const allHistoryPeriodParams = { allHistory: true, periodType } as IPeriodAPIParams\r\n calcbenchAPI.mappedData({ metrics: [point.metric] }, companiesParams, allHistoryPeriodParams).then(({ data }) => {\r\n const points = data.map(d => {\r\n const pointPeriodParams = new PeriodParams($location)\r\n pointPeriodParams.year = d.calendar_year\r\n pointPeriodParams.period = d.calendar_period\r\n return MappedPoint.fromStandardizedData(d, pointPeriodParams)\r\n })\r\n timeSeriesModal($uibModal, `${vm.tickerToCompany[point.ticker].entity_name} ${point.metaData.metric}`, points, periodType, point.metaData)\r\n })\r\n }\r\n\r\n function chartChange(columnKey, metric, columnType, startAfter) {\r\n const rows = vm.gridApi.core.getVisibleRows();\r\n\r\n const grids = rows.map((row) => row.entity[columnKey]).sort((a, b) => a.value - b.value).slice(startAfter, startAfter + 20).filter(function (element) {return element !== undefined;});\r\n const entityIDs = grids.map((grid) => vm.tickerToCompany[grid.ticker].entity_id);\r\n\r\n\r\n\r\n const chart_params = {\r\n entityIds: entityIDs,\r\n metric: metric.metric,\r\n periodType: (window).period,\r\n cp: periodParams.getPeriodNumber(),\r\n cy: periodParams.year,\r\n offset: 0,\r\n periodsBack: 1,\r\n dataType: columnType,\r\n formatType: 0\r\n }\r\n\r\n const href = `/benchmark/chartEntitiesMetricTimeSeries/?${$.param(chart_params, true)}`\r\n const modal = $uibModal.open({\r\n template: ``,\r\n size: 'lg',\r\n windowClass: 'chartModal',\r\n controller() {\r\n return {\r\n getNext20() {\r\n modal.close();\r\n chartChange(columnKey, metric, columnType, startAfter + 20);\r\n }\r\n };\r\n },\r\n controllerAs: '$ctrl'\r\n });\r\n }\r\n\r\n function comparisonChart(columnKey, metric, columnType, startAfter) {\r\n const sortedRows = _.pluck(vm.gridApi.core.getVisibleRows(), 'entity');\r\n const numberOfCompaniesToShow = 20;\r\n const nextColumn = vm.gridOptions.columnDefs.dataColumns[_.findIndex(vm.gridOptions.columnDefs.dataColumns, _.matchesProperty('name', columnKey)) + 1];\r\n if (!nextColumn) {\r\n return\r\n }\r\n const nextColumnKey = nextColumn.name;\r\n const thisColumnValues = _.pluck(sortedRows, `${columnKey}.value`);\r\n const nextColumnValues = _.pluck(sortedRows, `${nextColumnKey}.value`);\r\n const tickers = _.pluck(sortedRows, 'ticker');\r\n const entityIDs = tickers.map((ticker) => vm.tickerToCompany[ticker].entity_id);\r\n const chartParams = {\r\n entityIDs: entityIDs.slice(startAfter, startAfter + numberOfCompaniesToShow).join('_'),\r\n col1: thisColumnValues.slice(startAfter, startAfter + numberOfCompaniesToShow).join('_'),\r\n col2: nextColumnValues.slice(startAfter, startAfter + numberOfCompaniesToShow).join('_'),\r\n cp: periodParams.getPeriodNumber(),\r\n cy: periodParams.year,\r\n offset1: 0,\r\n offset2: 0,\r\n formatType1: 0,\r\n formatType2: 0,\r\n metric: metric.metric,\r\n metric2: nextColumn.metric.metric,\r\n periodType: periodParams.periodType === 'Annual' ? 0 : periodParams.period\r\n };\r\n const chartURL = `/benchmark/chartEntitiesMetricTwoColumn/?${$.param(chartParams)}`;\r\n const modal = $uibModal.open({\r\n template: `Get Next 20Export`,\r\n size: 'lg',\r\n windowClass: 'chartModal',\r\n controllerAs: '$ctrl',\r\n controller() {\r\n return {\r\n getNext20() {\r\n modal.close();\r\n comparisonChart(columnKey, metric, columnType, startAfter + 20);\r\n }\r\n };\r\n }\r\n });\r\n }\r\n\r\n function columnSortCompare(a, b) {\r\n let aEntityName; let bEntityName;\r\n try {\r\n aEntityName = vm.tickerToCompany[a.ticker].entity_name;\r\n bEntityName = vm.tickerToCompany[b.ticker].entity_name;\r\n } catch (e) {\r\n return 0;\r\n }\r\n return sortTextColumn({ value: aEntityName }, { value: bEntityName }, null, null, 'asc');\r\n }\r\n\r\n function getPreviousPeriodForAllColumns() {\r\n _.forEach(vm.gridOptions.columnDefs.dataColumns, (column, index, columns) => {\r\n const nextColumnIsDifferent = index === columns.length - 1 || column.metric !== columns[index + 1].metric;\r\n if (nextColumnIsDifferent) {\r\n column.addPreviousPeriod()\r\n }\r\n })\r\n }\r\n\r\n function evalFormula(formula, row) {\r\n if (formula) {\r\n const scope = {};\r\n _.forOwn(row.entity, (value, key) => {\r\n if (value.value) {\r\n scope[removeNumbersFromColumnKeys(key)] = value.value;\r\n }\r\n });\r\n try {\r\n return evaluate(formula, scope);\r\n } catch (e) {\r\n\r\n }\r\n }\r\n }\r\n\r\n function showMissingCompanies() {\r\n const entitiesWithData = _.mapKeys(vm.gridOptions.data, 'ticker');\r\n $uibModal.open({\r\n template: require('./missingCompaniesTable.tpl.html'),\r\n size: 'lg',\r\n windowClass: '',\r\n controllerAs: '$ctrl',\r\n controller() {\r\n this.missingCompanies = _.filter(vm.peerGroup.companies, (company: ICompany) => !(company.ticker in entitiesWithData));\r\n }\r\n });\r\n }\r\n\r\n function disclosurePageLink(company: IPeerGroupCompany) {\r\n const peerGroup = PeerGroupInstanceBuilder([company])\r\n peerGroup.classificationMethod = PeerGroupClassificationMethod.Tickers\r\n const urlParams = { ...periodParams.urlParams(), ...peerGroup.urlParams() };\r\n const url = `https://${$location.host()}:${$location.port()}/disclosures?${$httpParamSerializer(urlParams)}`;\r\n return url\r\n }\r\n\r\n function filingsPageLink(company: IPeerGroupCompany) {\r\n const peerGroup = PeerGroupInstanceBuilder([company])\r\n peerGroup.classificationMethod = PeerGroupClassificationMethod.Tickers\r\n const urlParams = { ...peerGroup.urlParams() };\r\n const url = `https://${$location.host()}:${$location.port()}/filings?${$httpParamSerializer(urlParams)}`;\r\n return url\r\n }\r\n\r\n\r\n vm.periodTypeLetter = () => {\r\n if (periodParams.periodType == PeriodType.Quarterly) return 'q';\r\n return 'y'\r\n }\r\n}\r\n\r\n\r\n\r\nTokenField.$inject = ['$scope', '$element', '$timeout'];\r\nfunction TokenField($scope, $element, $timeout) {\r\n // In the future this might be a cool autocomplete thing. For now it just does comparisons with the previous column. akittrede December 2016.\r\n // Tokenfield is from http://sliptree.github.io/bootstrap-tokenfield/\r\n const vm = this;\r\n vm.$onInit = $onInit;\r\n\r\n\r\n function $onInit() {\r\n vm.column.formula = vm.column.colDef.formula.value;\r\n }\r\n}\r\n\r\nfunction removeNumbersFromColumnKeys(key) {\r\n 'abcdefghijk'.split('').forEach((letter, number) => {\r\n key = key.split(number).join(letter);\r\n });\r\n return key;\r\n}\r\n\r\n\r\n","import * as angular from \"angular\";\r\nimport ng from \"angular\";\r\nimport { ICalcbenchUser } from \"../shared/calcbenchUser/CalcbenchUser\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { MessageBus } from \"../shared/utils/MessageBus\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { PeriodType } from \"../shared/periods/constants\";\r\nimport { StandardizedMetricSelectedHandler } from \"./MetricSelectedHandlers\";\r\nimport { IMetricData } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\";\r\n\r\nclass MappedDataMenuController implements ng.IController {\r\n static $inject = ['XBRLTagSelectedHandlers', 'MetricSelectedHandlers', 'CalcbenchUser', 'PeerGroup', 'PeriodParams'];\r\n\r\n constructor(private XBRLTagSelectedHandlers: MessageBus,\r\n private metricSelectedHandlers: StandardizedMetricSelectedHandler,\r\n private calcbenchUser: ICalcbenchUser,\r\n private peerGroup: PeerGroupInstance,\r\n private periodParameters: PeriodParams\r\n ) { }\r\n\r\n $onInit() {\r\n this.peerGroup.disableWholeUniverse = !this.calcbenchUser.isPremiumUserExcludingFreeTrials;\r\n }\r\n\r\n public XBRLTagSelected = (tag: string) => this.XBRLTagSelectedHandlers.push(tag)\r\n\r\n public handleNormalizedMetricSelected = (metric: IMetricData) => {\r\n this.metricSelectedHandlers.push([metric])\r\n }\r\n\r\n public get disableXBRLSearch() {\r\n return this.periodParameters.periodType === PeriodType.TTM\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('mappedDataMenu', {\r\n controller: MappedDataMenuController,\r\n template: require('./mappedDataMenu.tpl.html')\r\n})\r\n","import './mappedDataMenu'\r\nimport '../shared/exploreNormalizedPoints/standardizedMetricTypeAhead'\r\nimport * as angular from \"angular\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { FormatType } from \"../shared/filters/formatType\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\"\r\nimport { MessageBus } from '../shared/utils/MessageBus';\r\nimport { SINGLE_PERIOD } from '../shared/periods/rangeOptions';\r\nimport { StandardizedMetricSelectedHandler } from './MetricSelectedHandlers';\r\nimport { IMetricData } from '../shared/calcbenchAPI/StandardizedMetricDefinitions';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\n\r\nconst URLNameSpace = 'mc_'; // multi-company\r\nexport const StandardizedMetricsURLKey = `${URLNameSpace}metrics`\r\nangular.module('calcbenchApp').controller('MultiCompanyController', MultiCompanyController)\r\n .factory('InitialMultiCompanyMetrics', (): IMetricData[] => [\r\n { metric: 'Revenue', name: 'Revenue', dataSet: COLUMN_TYPES.mapped, format_type: FormatType.Currency, doNotWriteToURL: true, is_face: true },\r\n { metric: 'OperatingIncome', name: 'Operating Income', dataSet: COLUMN_TYPES.mapped, format_type: FormatType.Currency, doNotWriteToURL: true, is_face: true },\r\n { metric: 'OperatingCashFlow', name: 'Operating Cash Flow', dataSet: COLUMN_TYPES.mapped, format_type: FormatType.Currency, doNotWriteToURL: true, is_face: true },\r\n { metric: 'Assets', name: 'Assets', dataSet: COLUMN_TYPES.mapped, format_type: FormatType.Currency, doNotWriteToURL: true, is_face: true }\r\n ] as IMetricData[]);\r\n\r\ninterface IMultiCompanyController extends ng.IController {\r\n initialMetrics: IMetricData[]\r\n showMappedDataTable: boolean\r\n showMappedDataMenu: boolean\r\n peerGroup: PeerGroupInstance\r\n metricsChanged: MessageBus\r\n [key: string]: any;\r\n}\r\n\r\n/**\r\n * Public Enum datapointtypes in benchmarkController.vb\r\n * */\r\nexport enum COLUMN_TYPES {\r\n company = -2,\r\n mapped = 1,\r\n XBRLTag = 2,\r\n ratio = 3,\r\n entityInfo = 4,\r\n}\r\n\r\nMultiCompanyController.$inject = [\r\n '$scope', '$location', '$q', 'PeerGroupChannel', 'PeerGroup',\r\n 'PeriodParams', 'InitialMultiCompanyMetrics',\r\n 'PeriodChannel', 'MetricSelectedHandlers', 'XBRLTagSelectedHandlers'];\r\nfunction MultiCompanyController(\r\n $scope: ng.IScope,\r\n $location: ng.ILocationService,\r\n $q: ng.IQService,\r\n peerGroupChannel: PeerGroupChannel,\r\n peerGroup: PeerGroupInstance,\r\n periodParams: PeriodParams,\r\n initialMultiCompanyMetrics: IMetricData[],\r\n periodChannel,\r\n metricSelectedHandlers: StandardizedMetricSelectedHandler,\r\n XBRLTagSelectedHandlers: MessageBus) {\r\n const vm = this as IMultiCompanyController;\r\n vm.peerGroup = peerGroup;\r\n vm.$onInit = $onInit;\r\n vm.showMappedDataMenu as boolean;\r\n vm.showPeerGroupHelp as boolean;\r\n vm.showMultiCompanyMenuHelp as boolean;\r\n vm.showMappedDataTable as boolean;\r\n vm.showMappedDataMenu as boolean;\r\n periodParams.rangeOption = SINGLE_PERIOD;\r\n peerGroup.wholeUniverse = false;\r\n periodParams.readFromURL();\r\n function $onInit() {\r\n vm.showPeerGroupHelp = true;\r\n vm.initialMetrics = initialMultiCompanyMetrics;\r\n vm.metricsChanged = new MessageBus()\r\n const [URLstandardizedPoints, URLXBRLPoints] = readFromURL()\r\n peerGroupChannel.doneWithInitialSetup.then(() => {\r\n XBRLTagSelectedHandlers.doneWithInitialSetup.then(() => {\r\n if (URLXBRLPoints) {\r\n URLXBRLPoints.forEach(p => XBRLTagSelectedHandlers.push(p.metric))\r\n }\r\n })\r\n metricSelectedHandlers.doneWithInitialSetup.then(() => {\r\n if (URLstandardizedPoints.length > 0) {\r\n metricSelectedHandlers.push(URLstandardizedPoints)\r\n }\r\n\r\n if (URLstandardizedPoints.length === 0 && URLXBRLPoints.length === 0) {\r\n metricSelectedHandlers.push(initialMultiCompanyMetrics)\r\n }\r\n })\r\n vm.metricsChanged.addListener(writeMetricsToURL)\r\n updateUIFlags()\r\n })\r\n }\r\n\r\n peerGroupChannel.onPeerGroupChange(() => {\r\n vm.peerGroup.writeToURL();\r\n });\r\n\r\n peerGroupChannel.onPeerGroupChange(updateUIFlags)\r\n\r\n function updateUIFlags() {\r\n if (peerGroup.wholeUniverse || peerGroup.companies.length > 0) {\r\n vm.showPeerGroupHelp = false\r\n vm.showMappedDataMenu = true\r\n vm.showMappedDataTable = true\r\n }\r\n }\r\n periodChannel.onPeriodChange($scope, periodParams.writeToURL)\r\n function readFromURL() {\r\n const standardizedPoints = new Array();\r\n const xbrlPoints = new Array();\r\n const urlParams = $location.search();\r\n const queryValue = urlParams[StandardizedMetricsURLKey]\r\n const singleValue = typeof queryValue === 'string';\r\n const URLmetrics: string[] = singleValue ? [queryValue] : queryValue\r\n\r\n if (URLmetrics) {\r\n URLmetrics.forEach(serializedMetric => {\r\n const metric = angular.fromJson(serializedMetric) as IMetricData\r\n if (metric.dataSet === COLUMN_TYPES.mapped) {\r\n standardizedPoints.push(metric)\r\n } else if (metric.dataSet === COLUMN_TYPES.XBRLTag) {\r\n xbrlPoints.push(metric)\r\n }\r\n })\r\n } else {\r\n if (urlParams.ratio) {\r\n const metric = {\r\n metric: urlParams.ratio,\r\n dataSet: COLUMN_TYPES.mapped,\r\n format_type: FormatType.TwoDecimalPointsNumber,\r\n type: 'ratio'\r\n } as IMetricData\r\n standardizedPoints.push(metric)\r\n }\r\n\r\n if (urlParams.tag) {\r\n xbrlPoints.push({ metric: urlParams.tag, dataSet: COLUMN_TYPES.XBRLTag, format_type: FormatType.Currency } as IMetricData);\r\n }\r\n\r\n const standardPoint = urlParams.dpo || urlParams.fdpo;\r\n if (standardPoint) {\r\n const metric = {\r\n metric: standardPoint,\r\n dataSet: COLUMN_TYPES.mapped,\r\n format_type: FormatType.Currency,\r\n type: 'face'\r\n } as IMetricData\r\n standardizedPoints.push(metric)\r\n }\r\n }\r\n return [standardizedPoints, xbrlPoints]\r\n }\r\n\r\n function writeMetricsToURL(metrics: IMetricData[]) {\r\n $location.search(StandardizedMetricsURLKey, null)\r\n $location.search(StandardizedMetricsURLKey, metrics.filter(m => !m.doNotWriteToURL).map(\r\n // Only write the necessary properties to the URL\r\n m => ({ dataSet: m.dataSet, metric: m.metric, format_type: m.format_type } as IMetricData)\r\n ).map(m => angular.toJson(m)));\r\n }\r\n}\r\n\r\n\r\nexport function standardizedMetricURLQuery(metric: string, formatType: string = 'twoDecimalPointsCurrency') {\r\n const m = {\r\n metric,\r\n dataSet: COLUMN_TYPES.mapped,\r\n format_type: formatType\r\n };\r\n return `${StandardizedMetricsURLKey}=${encodeURIComponent(angular.toJson(m))}`;\r\n}","import angular from \"angular\";\r\nimport { standardizePeriod } from \"./standardizedPeriod\";\r\nimport { timePeriodComparator, YearAndPeriod } from \"./timePeriodComparator\";\r\n\r\nangular.module('calcbenchApp').factory('BuildPeriodComparer', function () {\r\n return periodComparer\r\n});\r\n\r\nexport function periodComparer(useFiscalPeriod: boolean) {\r\n // This is exported. akittredge February 2017\r\n return function (a: HasPeriod, b: HasPeriod) {\r\n var aPeriod: YearAndPeriod, bPeriod: YearAndPeriod;\r\n if (useFiscalPeriod) {\r\n let aFiscal = a, bFiscal = b;\r\n aPeriod = { year: aFiscal.fiscal_year, period: standardizePeriod(aFiscal.fiscal_period) };\r\n bPeriod = { year: bFiscal.fiscal_year, period: standardizePeriod(bFiscal.fiscal_period) };\r\n } else {\r\n let aCalendar = a, bCalendar = b;\r\n aPeriod = { year: aCalendar.calendar_year, period: standardizePeriod(aCalendar.calendar_period) };\r\n bPeriod = { year: bCalendar.calendar_year, period: standardizePeriod(bCalendar.calendar_period) };\r\n }\r\n return timePeriodComparator({ period: aPeriod }, { period: bPeriod });\r\n }\r\n}\r\n\r\nexport interface HasCalendarPeriod {\r\n calendar_year: number\r\n calendar_period: string | number\r\n}\r\n\r\ninterface HasFiscalPeriod {\r\n fiscal_year: number\r\n fiscal_period: string | number\r\n}\r\n\r\nexport type HasPeriod = HasCalendarPeriod | HasFiscalPeriod;","const PeriodMap = {\r\n 0: 0,\r\n 'y': 0,\r\n 1: 1,\r\n 'q1': 1,\r\n '1q': 1,\r\n 2: 2,\r\n 'q2': 2,\r\n '2q': 2,\r\n 3: 3,\r\n '3q': 3,\r\n 'q3': 3,\r\n 4: 4,\r\n '4q': 4,\r\n 'q4': 4\r\n};\r\n\r\nexport function standardizePeriod(period: string | number): number {\r\n return PeriodMap[String(period).toLowerCase()];\r\n}\r\n","\r\nexport interface YearAndPeriod {\r\n year: number\r\n period: number\r\n}\r\n\r\nexport function timePeriodComparator(a: { period: YearAndPeriod }, b: { period: YearAndPeriod }) {\r\n var aPeriod = a.period, bPeriod = b.period;\r\n if (aPeriod.year !== bPeriod.year) {\r\n return aPeriod.year - bPeriod.year;\r\n } else {\r\n if (aPeriod.period !== 0 && bPeriod.period !== 0) {\r\n return aPeriod.period - bPeriod.period;\r\n } else {\r\n return bPeriod.period - aPeriod.period;\r\n }\r\n }\r\n}","import { IScope } from \"angular\";\r\nimport * as angular from \"angular\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\nimport { RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\n\r\nrequire('./segmentPage.scss')\r\n\r\nclass BreakoutPageController implements ng.IController {\r\n static $inject = ['$scope', 'PeerGroupChannel', 'PeerGroup', 'PeriodChannel', 'PeriodParams',]\r\n\r\n constructor(\r\n private $scope: IScope,\r\n private peerGroupChannel: PeerGroupChannel,\r\n private peerGroup: PeerGroupInstance,\r\n private periodChannel: PeriodChannel,\r\n private periodParams: PeriodParams) { }\r\n\r\n $onInit() {\r\n this.periodParams.rangeOption = RangeOption.SINGLE_PERIOD\r\n this.periodParams.readFromURL()\r\n this.peerGroupChannel.onPeerGroupChange(this.peerGroup.writeToURL)\r\n this.periodChannel.onPeriodChange(this.$scope, this.periodParams.writeToURL)\r\n this.periodParams.showPeriodTypeOptions = true\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp')\r\n .controller('BreakoutPageController', BreakoutPageController);","import { PeriodType } from \"../shared/periods/constants\";\r\n\r\nexport const PeriodTypeMap = {\r\n 'Q': PeriodType.Quarterly,\r\n 'Y': PeriodType.Annual,\r\n 'C': PeriodType.Combined,\r\n 'U': PeriodType.Cumulative,\r\n 'FILING': PeriodType.Filing,\r\n};","import { PeriodType } from \"../shared/periods/constants\";\r\n\r\n\r\nexport const PeriodTypeToTruncatedPeriod = {\r\n [PeriodType.Annual]: 'y',\r\n [PeriodType.Quarterly]: 'q',\r\n [PeriodType.Combined]: 'c',\r\n [PeriodType.Cumulative]: 'u',\r\n};","import angular from 'angular';\r\nimport * as uirouter from '@uirouter/angularjs';\r\nimport { RouterStates } from \"./RouterStates\";\r\nimport { CompanyMethods } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\n\r\nangular.module('calcbenchApp').config(['$stateProvider', '$urlRouterProvider', '$urlMatcherFactoryProvider',\r\n function ($stateProvider: uirouter.StateProvider, $urlRouterProvider, $urlMatcherFactoryProvider: uirouter.UrlMatcherFactory) {\r\n $urlMatcherFactoryProvider.strictMode(false);\r\n $stateProvider.state('company', {\r\n url: '/detail/{ticker}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n }).state('companywithstatement', {\r\n url: '/detail/{ticker}/{statementType}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n }).state('companySearchParams', {\r\n url: '/detail?{ticker}&{eid}&{accessionID}&{statementType}&{activeTab}&{periodType}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n }).state(RouterStates.companywithstateandperiodtype, {\r\n url: '/detail/{ticker}/{statementType}/{periodType}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n })\r\n .state('tcompany', {\r\n url: '/t/{ticker}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n })\r\n .state('tcompanywithstatement', {\r\n url: '/t/{ticker}/{statementType}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n })\r\n .state('tcompanysearchparam', {\r\n url: '/t?{ticker}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n })\r\n .state('tcompanywithstateandperiodtype', {\r\n url: '/t/{ticker}/{statementType}/{periodType}',\r\n resolve: { 'addCompany': addCompanyToPeerGroup },\r\n component: 'companiesInDetail',\r\n });\r\n}]);\r\n\r\naddCompanyToPeerGroup.$inject = ['$stateParams', '$document', 'PeerGroup', 'PeerGroupChannel'];\r\nasync function addCompanyToPeerGroup($stateParams: uirouter.StateParams, $document: angular.IDocumentService, peerGroup: PeerGroupInstance, peerGroupChannel: PeerGroupChannel) {\r\n let identifier: string = null;\r\n await peerGroup.readFromURL();\r\n if (peerGroup.companies.length === 0) {\r\n if ($stateParams.ticker) {\r\n await peerGroup.addTickerListToPeerGroup($stateParams.ticker, true);\r\n identifier = $stateParams.ticker;\r\n } else if ($stateParams.eid) {\r\n await peerGroup.addTickerListToPeerGroup($stateParams.eid, true, CompanyMethods.CalcbenchEntityIDs);\r\n identifier = $stateParams.eid;\r\n }\r\n }\r\n peerGroupChannel.doneWithInitialSetupDefered.resolve();\r\n\r\n const company = peerGroup.companies[0];\r\n if (!company) {\r\n if (identifier !== null) {\r\n // Looked for a company but could not find one.\r\n alert(`No companies found for identifier ${identifier}`);\r\n }\r\n } else {\r\n $('#pageTitle').text(`${company.entity_name} (${company.ticker})`);\r\n $document[0].title = `${company.ticker} - ${company.entity_name}`;\r\n }\r\n}\r\n","import * as angular from \"angular\";\r\nimport * as uirouter from '@uirouter/angularjs'\r\nimport ng from \"angular\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { PeerGroupCompanies } from \"../shared/peerGroup/peerGroup\";\r\nimport { FactFormatOptions } from \"../shared/filters/formatFact\";\r\nimport { IPeerGroupCompany } from \"../shared/peerGroup/IPeerGroupCompany\";\r\n\r\nconst calcbenchApp = angular.module('calcbenchApp');\r\n\r\n/**\r\n * many years ago you could look at more than one company at a time, now we just make new tabs in the browser\r\n * */\r\nexport class CompaniesInDetailController implements ng.IController {\r\n static $inject = ['$state', '$q', '$window', '$httpParamSerializer', 'PeerGroup', 'PeerGroupChannel'];\r\n\r\n public factFormatOptions = new FactFormatOptions();\r\n\r\n public companies: PeerGroupCompanies\r\n\r\n constructor(private $state: uirouter.StateService,\r\n private $q: angular.IQService,\r\n private $window: angular.IWindowService,\r\n private $httpParamSerializer: angular.IHttpParamSerializer,\r\n private peerGroup: PeerGroupInstance) { }\r\n\r\n async $onInit() {\r\n this.companies = this.peerGroup.companies;\r\n }\r\n\r\n companySelected = (company: IPeerGroupCompany) => {\r\n if (this.companies?.length > 0) {\r\n const params = angular.copy(this.$state.params);\r\n delete params.accessionID\r\n params.ticker = company.ticker;\r\n this.$window.open(`/detail?${this.$httpParamSerializer(params)}`, '_blank');\r\n } else {\r\n this.$state.go('company', { 'ticker': company.ticker });\r\n }\r\n }\r\n}\r\n\r\ncalcbenchApp.component('companiesInDetail', {\r\n controller: CompaniesInDetailController,\r\n template: require('./companiesInDetailController.tpl.html')\r\n})","import * as angular from 'angular';\r\nimport * as uirouter from '@uirouter/angularjs';\r\n\r\nimport './cid.scss';\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance';\r\nimport { PeerGroupCompanies } from '../shared/peerGroup/peerGroup';\r\nimport {\r\n CalcbenchAPI, StatementSubType, isHTTPResponse, AbbreviatedStatementType,\r\n} from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { buildWorkbook, buildWorksheet, saveWorkbookOrExcelInsert } from '../shared/excelExport/excelExport';\r\nimport { addHeader, addStatementData } from './exportFaceStatement';\r\nimport { CompaniesInDetailController } from './companiesInDetailController';\r\nimport { PeriodParams } from '../shared/periods/periodParams';\r\nimport './statementController';\r\n\r\nimport './faceStatementMenu';\r\nimport { Filing } from '../shared/calcbenchAPI/filing';\r\nimport { FactFormatOptions } from '../shared/filters/formatFact';\r\nimport { PeriodChannel } from '../shared/periods/PeriodChannel';\r\nimport { RangeOption } from '../shared/periods/rangeOptions';\r\nimport { PeriodType } from '../shared/periods/constants';\r\nimport { RouterStates } from './RouterStates';\r\nimport { FaceStatement } from '../shared/calcbenchAPI/faceStatement/FaceStatement';\r\nimport { IXBRLStatement } from '../shared/calcbenchAPI/faceStatement/IXBRLStatement';\r\nimport { IStatementsMetaData } from '../shared/calcbenchAPI/faceStatement/StatementsMetaData';\r\nimport { StatementType } from '../shared/calcbenchAPI/faceStatement/StatementType';\r\nimport { IPeerGroupCompany } from '../shared/peerGroup/IPeerGroupCompany';\r\nimport { PeerGroupInstanceBuilderType } from '../shared/peerGroup/PeerGroupInstanceBuilder';\r\nimport { PeerGroupClassificationMethod } from '../shared/peerGroup/PeerGroupClassificationMethod';\r\nimport { PeriodTypeMap } from './PeriodTypeMap';\r\nimport { PeriodTypeToTruncatedPeriod } from './PeriodTypeToTruncatedPeriod';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\nconst calcbenchApp = angular.module('calcbenchApp');\r\n\r\nconst ExportableStatements = [StatementType.IncomeStatement, StatementType.BalanceSheet, StatementType.CashFlow, StatementType.StockholdersEquity, StatementType.StatementOfComprehensiveIncome];\r\n\r\n/**\r\n * renders the income/balance/cash flow tabs\r\n */\r\nexport class CompanyInDetailTabs implements angular.IController {\r\n static $inject = ['$stateParams', '$state', '$sce',\r\n '$httpParamSerializer', '$q',\r\n '$window',\r\n 'calcbenchAPI',\r\n '$location',\r\n '$rootScope',\r\n 'PeerGroupInstanceBuilder',\r\n 'PeriodParamsFactory',\r\n 'CurrencyCodes'];\r\n\r\n peerGroupChannel: PeerGroupChannel;\r\n\r\n peerGroup: PeerGroupInstance;\r\n\r\n periodParams: PeriodParams;\r\n\r\n periodChannel: PeriodChannel;\r\n\r\n company: IPeerGroupCompany;\r\n\r\n accessionID: number;\r\n\r\n periodType: PeriodType;\r\n\r\n currency: string;\r\n\r\n activeStatementIndex: number;\r\n\r\n companiesInDetailController: CompaniesInDetailController;\r\n\r\n public relatedCompaniesLinks: { href: string, entity_name: string, ticker: string }[];\r\n\r\n /**\r\n * Statement tabs to render\r\n */\r\n statements: IXBRLStatement[];\r\n\r\n filings: Filing[];\r\n\r\n currencyCodes: string[];\r\n\r\n doneGettingInitialStatement: angular.IPromise;\r\n\r\n orderReversed?: boolean;\r\n\r\n public pointInTime: boolean;\r\n\r\n public showAllFilings: boolean;\r\n\r\n factFormatOptions: FactFormatOptions;\r\n\r\n quickReportsHTML: string;\r\n\r\n SEClink: string;\r\n\r\n EarningsReleaseID: number;\r\n\r\n doneGettingInitialStatementDeferred: angular.IDeferred;\r\n\r\n activeTabIndex: number;\r\n\r\n constructor(\r\n private $stateParams: uirouter.StateParams,\r\n private $state: uirouter.StateService,\r\n private $sce: angular.ISCEService,\r\n private $httpParamSerializer: angular.IHttpParamSerializer,\r\n $q: angular.IQService,\r\n private $window: angular.IWindowService,\r\n private calcbenchAPI: CalcbenchAPI,\r\n private $location: angular.ILocationService,\r\n $rootScope: angular.IRootScopeService,\r\n private peerGroupInstanceBuilder: PeerGroupInstanceBuilderType,\r\n periodParamsFactory,\r\n currencyCodes,\r\n ) {\r\n this.doneGettingInitialStatementDeferred = $q.defer();\r\n this.peerGroup = new PeerGroupInstance(new PeerGroupCompanies(), $q, calcbenchAPI, $location);\r\n this.peerGroupChannel = new PeerGroupChannel($q);\r\n this.peerGroupChannel.doneWithInitialSetupDefered.resolve();\r\n this.periodParams = new periodParamsFactory();\r\n this.doneGettingInitialStatement = this.doneGettingInitialStatementDeferred.promise;\r\n this.periodParams.rangeOption = RangeOption.SINGLE_PERIOD;\r\n this.periodChannel = new PeriodChannel($rootScope);\r\n this.currency = 'Native';\r\n this.currencyCodes = ['Native'].concat(currencyCodes);\r\n }\r\n\r\n async $onInit() {\r\n const { company } = this;\r\n this.factFormatOptions = this.companiesInDetailController.factFormatOptions;\r\n if (company.most_recent_complete_fiscal_year) {\r\n this.periodParams.year = company.most_recent_complete_fiscal_year;\r\n this.periodParams.useFiscalPeriod = true;\r\n } else {\r\n this.periodParams.year = company.mostRecentFilingCalendarYear;\r\n this.periodParams.period = company.mostRecentFilingCalendarPeriod;\r\n this.periodParams.periodType = PeriodType.Quarterly;\r\n }\r\n\r\n if (this.$stateParams.accessionID) {\r\n this.periodType = PeriodType.Filing;\r\n this.accessionID = parseInt(this.$stateParams.accessionID);\r\n } else if (this.$stateParams.periodType) {\r\n this.periodType = PeriodTypeMap[this.$stateParams.periodType.toUpperCase()] || PeriodTypeMap.Y;\r\n } else {\r\n this.periodType = company.most_recent_complete_fiscal_period === PeriodType.Annual ? PeriodTypeMap.Y : PeriodTypeMap.Q;\r\n }\r\n\r\n if (this.$stateParams.activeTab) {\r\n this.activeTabIndex = {\r\n 'statements': 0,\r\n 'textfootnotes': 1,\r\n 'quickreports': 2,\r\n 'allfilings': 3,\r\n 'ownership': 4,\r\n 'revisions': 5,\r\n }[this.$stateParams.activeTab];\r\n }\r\n\r\n await this.initialize();\r\n }\r\n\r\n /**\r\n * Peer group for this company's SIC group\r\n */\r\n public get SICPeerGroupInstance() {\r\n const { company } = this;\r\n const sicPeerGroup = this.peerGroupInstanceBuilder([]);\r\n sicPeerGroup.classificationMethod = PeerGroupClassificationMethod.SICCodes;\r\n sicPeerGroup.sectorCode = company.SIC;\r\n sicPeerGroup.wholeUniverse = false;\r\n sicPeerGroup.title = `SIC Group ${company.SIC}`;\r\n return sicPeerGroup;\r\n }\r\n\r\n get SICMultiURL(): string {\r\n return `/multi?${this.$httpParamSerializer(this.SICPeerGroupInstance.urlParams())}`;\r\n }\r\n\r\n async userChangedCurrency() {\r\n await this.initialize();\r\n }\r\n\r\n async userChangedPeriodParams() {\r\n const statementType = this.statements.find((s) => s.active)?.abbreviatedStatementType || AbbreviatedStatementType.Income;\r\n if (this.periodType === PeriodType.Filing) {\r\n this.$state.go('companySearchParams', {\r\n ticker: this.company.ticker,\r\n accessionID: this.accessionID,\r\n statementType,\r\n });\r\n } else {\r\n this.$state.go(RouterStates.companywithstateandperiodtype, {\r\n ticker: this.company.ticker,\r\n statementType,\r\n periodType: PeriodTypeToTruncatedPeriod[this.periodType],\r\n });\r\n }\r\n await this.initialize();\r\n }\r\n\r\n async initialize() {\r\n this.peerGroup.setPeerGroupToCompany(this.company);\r\n let data: IStatementsMetaData;\r\n try {\r\n const response = await this.calcbenchAPI.companyInDetailParams(this.company.ticker, null, this.periodType);\r\n data = response.data;\r\n } catch (e) {\r\n if (isHTTPResponse(e) && e.status === 404 && this.periodType === PeriodType.Annual) {\r\n // try again for quarters.\r\n this.periodType = PeriodType.Quarterly;\r\n await this.initialize();\r\n } else if (this.periodType === PeriodType.Quarterly) {\r\n alert('No data found');\r\n }\r\n return;\r\n }\r\n this.buildStatements(data);\r\n this.doneGettingInitialStatementDeferred.resolve();\r\n }\r\n\r\n private buildStatements(params: IStatementsMetaData) {\r\n const statements = params.face_statements;\r\n this.EarningsReleaseID = params.EarningsReleaseID;\r\n statements.map((statement, index) => {\r\n statement.activate = () => {\r\n statements.map((statement) => statement.active = false);\r\n statement.controller.buildStatementTab();\r\n statement.active = true;\r\n this.$state.go(RouterStates.companywithstateandperiodtype, {\r\n ticker: this.company.ticker,\r\n statementType: statement.abbreviatedStatementType,\r\n periodType: PeriodTypeToTruncatedPeriod[this.periodType],\r\n });\r\n };\r\n\r\n statement.companyController = this;\r\n statement.index = index;\r\n });\r\n\r\n if (this.$stateParams.statementType !== 'revisions') {\r\n if (this.$stateParams.statementType) {\r\n this.$stateParams.statementType = this.$stateParams.statementType.toLowerCase();\r\n statements.some((statement) => {\r\n if (statement.abbreviatedStatementType === this.$stateParams.statementType) {\r\n statement.active = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n statements[0].active = true;\r\n }\r\n }\r\n\r\n this.statements = statements;\r\n this.relatedCompaniesLinks = params.relatedCompanies?.map((c) => (\r\n {\r\n entity_name: c.entity_name,\r\n ticker: c.ticker,\r\n href: window.location.href.toLowerCase().replace(this.company.ticker.toLowerCase(), c.ticker),\r\n }\r\n ));\r\n this.quickReportsHTML = this.$sce.trustAsHtml(params.quickReportsHTML);\r\n this.SEClink = params.SEClink;\r\n }\r\n\r\n async exportAllStatements() {\r\n const workbook = buildWorkbook();\r\n await Promise.all(this.statements.filter((s) => ExportableStatements.includes(s.statementType) && s.statementSubType !== StatementSubType.parenthetical)\r\n .map(async (XBRLStatement) => {\r\n let statement: FaceStatement;\r\n try {\r\n statement = await XBRLStatement.controller.showAllHistory(false);\r\n } catch (e) {\r\n return;\r\n }\r\n const worksheet = buildWorksheet(workbook, statementName()(statement.name));\r\n const nextRow = addHeader(statement, worksheet, this.$location.absUrl(), XBRLStatement.controller.factFormatOptions);\r\n addStatementData(statement, worksheet, nextRow, XBRLStatement.controller.factFormatOptions, null, this.pointInTime);\r\n }));\r\n saveWorkbookOrExcelInsert(workbook, `Calcbench ${this.company.ticker} Face Statements.xlsx`);\r\n }\r\n\r\n\r\n hasEarningsRelease() {\r\n if (this.EarningsReleaseID) return true;\r\n return false;\r\n }\r\n\r\n openEarningsSheet() {\r\n if (this.EarningsReleaseID) {\r\n this.$window.open(`http://sheet.calcbench.com/?sec_filing_id=${this.EarningsReleaseID}`, '_blank');\r\n }\r\n\r\n }\r\n\r\n\r\n openDisclosurePage() {\r\n const urlParams = this.peerGroup.urlParams();\r\n const disclosurePagePeriodParams = new PeriodParams(this.$location);\r\n disclosurePagePeriodParams.periodType = PeriodType.MostRecent;\r\n disclosurePagePeriodParams.rangeOption = null;\r\n const params = { ...urlParams, ...disclosurePagePeriodParams.urlParams() };\r\n this.$window.open(`/disclosures?${this.$httpParamSerializer(params)}`, '_blank');\r\n }\r\n\r\n openFilingPage() {\r\n const urlParams = this.peerGroup.urlParams();\r\n this.$window.open(`/filings?${this.$httpParamSerializer(urlParams)}`, '_blank');\r\n }\r\n}\r\n\r\ncalcbenchApp.component(\r\n 'companyInDetailTabs',\r\n {\r\n controller: CompanyInDetailTabs,\r\n template: require('./companyInDetailTabs.tpl.html'),\r\n bindings: {\r\n company: '=',\r\n companiesInDetailController: '=',\r\n },\r\n },\r\n);\r\n\r\n\r\ncalcbenchApp.filter('statementName', statementName);\r\nfunction statementName() {\r\n return function (input) {\r\n return input.replace(/consolidated/i, '')\r\n .replace(/statements?/i, '')\r\n .replace(/condensed/i, '')\r\n .replace(/of/i, '');\r\n };\r\n}\r\n\r\n// This list is replicated on the server in data.vb\r\ncalcbenchApp.constant('CurrencyCodes', ['USD', 'AUD', 'BRL', 'CAD', 'CHF', 'CNY', 'DKK', 'EUR', 'GBP', 'HKD', 'INR', 'JPY', 'KRW', 'LKR', 'MXN', 'MYR', 'NOK', 'NZD', 'SEK', 'SGD', 'THB', 'TWD', 'VEF', 'ZAR']);\r\n","import { Worksheet, Fill, CellFormulaValue } from 'exceljs'\r\nimport { CalcbenchGoldARGB } from '../shared/excelExport/excelExport'\r\nimport { excelNumberFormat } from '../shared/filters/excelNumberFormat';\r\nimport { FactFormatOptions } from '../shared/filters/formatFact';\r\nimport { FaceStatement } from '../shared/calcbenchAPI/faceStatement/FaceStatement';\r\nimport { FaceStatementFact } from '../shared/calcbenchAPI/faceStatement/IFaceStatementFact';\r\nimport { SpecialFactType } from '../shared/calcbenchAPI/faceStatement/SpecialFactType';\r\n\r\nconst RevisedFill: Fill = {\r\n pattern: 'solid',\r\n type: 'pattern',\r\n fgColor: { argb: CalcbenchGoldARGB }\r\n}\r\n\r\nexport type FormulaBuilder = (fact: FaceStatementFact, columnIndex: number, pitmode: boolean) => string;\r\n\r\nexport function addHeader(statement: FaceStatement, worksheet: Worksheet, url: string, factFormatOptions: FactFormatOptions, exportedFrom: string = 'Calcbench'): number {\r\n worksheet.getCell('A1').value = `Exported from ${exportedFrom}: ${new Date()}`;\r\n worksheet.getCell('A2').value = statement.entity_name\r\n worksheet.getCell('A3').value = statement.name\r\n const sourceCell = worksheet.getCell('A4')\r\n sourceCell.value = {\r\n text: 'Source',\r\n hyperlink: url\r\n }\r\n\r\n sourceCell.font = {\r\n color: { argb: CalcbenchGoldARGB },\r\n underline: true\r\n }\r\n\r\n worksheet.getCell('B5').fill = RevisedFill\r\n worksheet.getCell('B5').value = 'Revised'\r\n if (statement.line_items.find(l => l.facts?.find(f => f.special_fact_type === SpecialFactType.Preliminary))) {\r\n worksheet.getCell('B4').value = 'Preliminary - Data from 8-k/Press Release'\r\n worksheet.getCell('B4').style = { font: { italic: true } }\r\n }\r\n\r\n if (factFormatOptions.truncationDenominator !== 1) {\r\n worksheet.getCell('A5').value = `Numbers in ${factFormatOptions.truncationDenominator === 1000 ? 'thousands' : 'millions'}, except for share related data.`\r\n }\r\n worksheet.views = [{ state: 'frozen', xSplit: 1, ySplit: 7 }]\r\n return 6\r\n}\r\n\r\nexport function addStatementData(statement: FaceStatement,\r\n worksheet: Worksheet,\r\n row: number,\r\n factFormatOptions: FactFormatOptions,\r\n buildFormula?: FormulaBuilder,\r\n pitmode?: boolean,\r\n includeNonXBRLLines?: boolean) {\r\n worksheet.getRow(row).font = { bold: true }\r\n worksheet.getColumn(1).width = 50\r\n statement.columns.forEach((column, index) => {\r\n const columnIndex = index + 2\r\n worksheet.getCell(row, columnIndex).value = column.fiscal_period\r\n worksheet.getCell(row + 1, columnIndex).value = column.period_end\r\n worksheet.getColumn(columnIndex).width = 25\r\n })\r\n row++\r\n row++\r\n const exportLineItems = statement.line_items.filter(l => l.type !== 'calculation').filter(l => !includeNonXBRLLines ? !l.is_non_xbrl : true)\r\n exportLineItems.forEach((lineItem, rowIndex) => {\r\n let columnIndex = 1\r\n const nextLine = exportLineItems[rowIndex + 1]\r\n const underline = Boolean(nextLine && nextLine.is_subtotal)\r\n const labelCell = worksheet.getCell(row, columnIndex++)\r\n labelCell.value = `${\" \".repeat(lineItem.tree_depth)}${lineItem.label}`;\r\n\r\n labelCell.font = { underline }\r\n if (lineItem.facts) {\r\n lineItem.facts.forEach((fact, factIndex) => {\r\n const cell = worksheet.getCell(row, columnIndex++)\r\n const preliminary = fact.special_fact_type === SpecialFactType.Preliminary\r\n cell.font = { underline, italic: preliminary }\r\n let effectiveValue = fact.effective_value || (fact.special_fact_type === SpecialFactType.NonXBRL && fact.fact_value)\r\n if (effectiveValue) {\r\n if (fact.format_type.toString().startsWith('currency') && typeof effectiveValue === 'number') {\r\n effectiveValue /= factFormatOptions.truncationDenominator\r\n }\r\n if (fact.revised || fact.has_been_revised) {\r\n cell.fill = RevisedFill\r\n }\r\n if (buildFormula && (fact.local_name || (fact.special_fact_type === SpecialFactType.NonXBRL && typeof effectiveValue === 'number'))) {\r\n cell.value = {\r\n formula: buildFormula(fact, factIndex, pitmode),\r\n result: effectiveValue\r\n } as CellFormulaValue\r\n } else {\r\n cell.value = effectiveValue\r\n }\r\n\r\n cell.numFmt = excelNumberFormat(fact.format_type, fact.unit_of_measure)\r\n }\r\n })\r\n }\r\n row++\r\n })\r\n}","import { IController } from 'angular';\r\nimport * as angular from 'angular';\r\nimport { CalcbenchAPI } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { CompanyInDetailTabs } from './companyInDetailTabs';\r\nimport { Filing } from '../shared/calcbenchAPI/filing';\r\nimport { PeriodType } from '../shared/periods/constants';\r\n\r\n\r\n/**\r\n * Menu at the top of the CID page with Period Type, Choose Fiscal Period etc..\r\n */\r\nclass FaceStatementMenu implements IController {\r\n static $inject = ['$scope', 'calcbenchAPI'];\r\n\r\n public companyInDetailController: CompanyInDetailTabs;\r\n\r\n public filings: Filing[];\r\n\r\n public XBRLFilings: Filing[];\r\n\r\n constructor(private $scope: angular.IScope, private calcbenchAPI: CalcbenchAPI) { }\r\n\r\n $onInit() {\r\n ( this.$scope).companyInDetailController = this.companyInDetailController;\r\n this.companyInDetailController.doneGettingInitialStatement.then(() => {\r\n if (this.companyInDetailController.company) {\r\n this.getFilings();\r\n }\r\n });\r\n }\r\n\r\n private async getFilings() {\r\n const filings = (await this.calcbenchAPI.getFilings({ calcbenchEntityIDs: [this.companyInDetailController.company.entity_id] })).sort((a, b) => a.period_index - b.period_index);\r\n this.filings = filings;\r\n\r\n this.XBRLFilings = filings.filter((f) => f.is_xbrl);\r\n }\r\n\r\n setActiveFiling() {\r\n this.companyInDetailController.periodType = PeriodType.Filing;\r\n this.companyInDetailController.userChangedPeriodParams();\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('faceStatementMenu', {\r\n controller: FaceStatementMenu,\r\n bindings: {\r\n companyInDetailController: '=',\r\n },\r\n template: require('./faceStatementMenu.tpl.html'),\r\n\r\n});\r\n","import * as angular from 'angular';\r\nimport { IController } from 'angular';\r\nimport { CalcbenchAPI } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { ICompany } from '../shared/calcbenchAPI/company';\r\nimport { Revision } from '../shared/calcbenchAPI/Revision';\r\n\r\n/**\r\n * The revision tab on the company in detail controller page.\r\n */\r\nclass RevisionTableController implements IController {\r\n static $inject = ['calcbenchAPI'];\r\n\r\n // const vm = this;\r\n // vm.$onInit = $onInit;\r\n // vm.toggleExpansion = toggleExpansion;\r\n // Set in the template\r\n public company: ICompany;\r\n\r\n revisions: Revision[];\r\n\r\n constructor(private calcbenchAPI: CalcbenchAPI) { }\r\n\r\n async $onInit() {\r\n const response = await this.calcbenchAPI.companyRevisions(this.company.entity_id);\r\n this.revisions = response.data;\r\n }\r\n\r\n public async toggleExpansion(revision) {\r\n revision.showExpansion = !revision.showExpansion;\r\n if (!revision.expansion) {\r\n const response = await this.calcbenchAPI.revisionExpansion(\r\n this.company.entity_id,\r\n revision.accession_id,\r\n );\r\n revision.expansion = response.data;\r\n }\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('revisionTable', {\r\n controller: RevisionTableController,\r\n bindings: {\r\n company: '=',\r\n },\r\n template: require('./revisionTable.tpl.html'),\r\n});\r\n","import * as angular from \"angular\";\r\nimport { IModalService } from \"angular-ui-bootstrap\";\r\nimport { addHeader, addStatementData, FormulaBuilder } from './exportFaceStatement';\r\nimport './asReportedStatement.scss';\r\nimport { CalcbenchAPI } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\"\r\nimport { getExcelAddInProxy } from \"../shared/excelAddinProxy/calcbenchExcelAddInProxy\";\r\nimport { saveWorkbookOrExcelInsert, buildWorkbookWithSheet } from \"../shared/excelExport/excelExport\";\r\nimport { timeSeriesModal } from \"../shared/chart/timeSeries\";\r\nimport { FormatType } from \"../shared/filters/formatType\";\r\nimport { ICalcbenchUser } from \"../shared/calcbenchUser/CalcbenchUser\";\r\nimport 'jquery-ui/ui/widgets/autocomplete';\r\nimport { FactFormatOptions } from \"../shared/filters/formatFact\";\r\nimport { Period, PeriodType } from \"../shared/periods/constants\";\r\nimport { FaceStatement } from \"../shared/calcbenchAPI/faceStatement/FaceStatement\";\r\nimport { FaceStatementLineItem } from \"../shared/calcbenchAPI/faceStatement/IFaceStatementLineItem\";\r\nimport { FaceStatementFact } from \"../shared/calcbenchAPI/faceStatement/IFaceStatementFact\";\r\nimport { SpecialFactType } from \"../shared/calcbenchAPI/faceStatement/SpecialFactType\";\r\nimport { FaceStatementColumn } from \"../shared/calcbenchAPI/faceStatement/IFaceStatementColumn\";\r\nimport { CompareType } from \"../shared/calcbenchAPI/faceStatement/CompareType\";\r\nimport { IXBRLStatement } from \"../shared/calcbenchAPI/faceStatement/IXBRLStatement\";\r\nimport { StatementType } from \"../shared/calcbenchAPI/faceStatement/StatementType\";\r\nimport { IPeerGroupCompany } from \"../shared/peerGroup/IPeerGroupCompany\";\r\nimport { PeerGroupInstanceBuilderType } from \"../shared/peerGroup/PeerGroupInstanceBuilder\";\r\nimport { IFaceStatementMenuHandler } from \"./IFaceStatementMenuHandler\";\r\n\r\n\r\n/**\r\n * Renders individual face statement\r\n */\r\nexport class StatementController implements angular.IController {\r\n static $inject = ['$http', '$httpParamSerializer', '$sce', '$location', '$uibModal', 'calcbenchAPI', 'PeerGroupInstanceBuilder', 'numberFilter', 'CalcbenchUser']\r\n\r\n public statement: IXBRLStatement\r\n\r\n public statementData: FaceStatement\r\n\r\n /**\r\n * Passed as binding.\r\n */\r\n public cidController: IFaceStatementMenuHandler\r\n\r\n public company: IPeerGroupCompany\r\n\r\n public allHistory: boolean\r\n\r\n /**\r\n * Set on the template\r\n * */\r\n public includeNonXbrl: boolean\r\n\r\n public showRevised: boolean\r\n\r\n public showNonXBRLStuff: boolean\r\n\r\n public revisionHTML: string\r\n\r\n public orderReversed: boolean\r\n\r\n public showStatement: boolean\r\n\r\n public inExcel: boolean;\r\n\r\n public factFormatOptions: FactFormatOptions\r\n\r\n public showHasBeenRevised: boolean\r\n\r\n constructor(private $http: ng.IHttpService,\r\n private $httpParamSerializer: ng.IHttpParamSerializer,\r\n private $sce: ng.ISCEService,\r\n private $location: ng.ILocationService,\r\n private $uibModal: IModalService,\r\n private calcbenchAPI: CalcbenchAPI,\r\n private peerGroupInstanceBuilder: PeerGroupInstanceBuilderType,\r\n private numberFilter: ng.IFilterNumber,\r\n public calcbenchUser: ICalcbenchUser) { }\r\n\r\n async $onInit() {\r\n this.statement.controller = this;\r\n if (this.statement.active) {\r\n await this.buildStatementTab()\r\n }\r\n if (this.statementData) {\r\n this.showHasBeenRevised = this.statementData.showHasBeenRevised\r\n }\r\n }\r\n\r\n async buildStatementTab() {\r\n if (!this.statementData) {\r\n await this.getStatement()\r\n this.statement.companyController.activeStatementIndex = this.statement.index\r\n }\r\n }\r\n\r\n async getStatement(showAlertOnFailure = true) {\r\n const companyInDetailController = this.cidController;\r\n const accessionID = companyInDetailController.periodType === PeriodType.Filing && companyInDetailController.accessionID;\r\n\r\n try {\r\n this.statementData = await this.calcbenchAPI.getStatement(\r\n accessionID,\r\n this.company.ticker,\r\n companyInDetailController.periodType,\r\n this.allHistory,\r\n companyInDetailController.pointInTime,\r\n !companyInDetailController.orderReversed,\r\n this.statement.abbreviatedStatementType,\r\n companyInDetailController.currency === 'Native' ? null : companyInDetailController.currency,\r\n this.includeNonXbrl, this.statement.tableID)\r\n\r\n } catch (e) {\r\n if (showAlertOnFailure && e.status === 404) {\r\n alert(e.data)\r\n }\r\n throw e\r\n }\r\n return this.statementData\r\n }\r\n\r\n removeColumn(index) {\r\n this.statementData.columns[index].hidden = true;\r\n }\r\n\r\n showAllHistory(showAlertOnMissingStatement = true) {\r\n this.allHistory = true;\r\n return this.getStatement(showAlertOnMissingStatement);\r\n }\r\n\r\n\r\n public reverseOrder() {\r\n this.cidController.orderReversed = !this.cidController.orderReversed;\r\n this.calcbenchAPI.reverseStatement(this.statementData.unique_id)\r\n .then(response => {\r\n this.statementData = response.data;\r\n this.orderReversed = this.cidController.orderReversed;\r\n })\r\n }\r\n\r\n\r\n public toggleShowRevised() {\r\n this.showRevised = !this.showRevised;\r\n }\r\n\r\n public toggleShowNonXBRLStuff() {\r\n this.showNonXBRLStuff = !this.showNonXBRLStuff;\r\n }\r\n\r\n public toggleDimensions(lineItem: FaceStatementLineItem, rowIndex) {\r\n if (!lineItem.dimensionsExpanded) {\r\n if (!lineItem.gettingDimensionsData) {\r\n lineItem.gettingDimensionsData = true;\r\n this.calcbenchAPI.getDimensionLineItems(this.statementData.unique_id, lineItem.unique_id).then(response => {\r\n const lineItems = response.data?.line_items\r\n if (lineItems) {\r\n Array.prototype.splice.apply(this.statementData.line_items, [rowIndex + 1, 0].concat(lineItems));\r\n lineItem.dimensionsExpanded = true;\r\n lineItem.dimensionCount = lineItems.length;\r\n lineItem.gettingDimensionsData = false;\r\n } else {\r\n lineItem.has_dimensions = false;\r\n }\r\n }, (error) => {\r\n // Sometimes the we won't actually find details.\r\n alert(error.data);\r\n lineItem.has_dimensions = false;\r\n });\r\n }\r\n } else {\r\n this.statementData.line_items.splice(rowIndex + 1, lineItem.dimensionCount);\r\n lineItem.dimensionsExpanded = false;\r\n lineItem.dimensionButtonClicked = false;\r\n this.calcbenchAPI.closeDimensionLineItems(this.statementData.unique_id, lineItem.unique_id);\r\n }\r\n }\r\n\r\n public chartLineItem(lineItem: FaceStatementLineItem) {\r\n const chartPoints = lineItem.facts.map((f, columnIndex) => {\r\n const column = this.statementData.columns[columnIndex]\r\n return {\r\n calendar_period: column.fiscal_period_type,\r\n calendar_year: column.fiscal_period_year,\r\n value: f.effective_value\r\n }\r\n })\r\n timeSeriesModal(this.$uibModal,\r\n `${this.company.entity_name} (${this.company.ticker}) ${lineItem.label}`,\r\n chartPoints,\r\n this.cidController.periodType,\r\n {\r\n metric: lineItem.local_name,\r\n format_type: FormatType.Currency\r\n })\r\n }\r\n\r\n public getRevisions(fact: FaceStatementFact) {\r\n this.revisionHTML = null;\r\n this.$http({ url: \"/cid/revisionHistory/\", params: { fact_id: fact.fact_id }, method: 'GET' }).then((revisionHTML) => {\r\n this.revisionHTML = this.$sce.trustAsHtml(revisionHTML.data);\r\n })\r\n }\r\n\r\n\r\n\r\n /**\r\n * Used in the template\r\n * */\r\n public get companyPeerGroup() {\r\n const peerGroupInstance = this.peerGroupInstanceBuilder([]) as PeerGroupInstance;\r\n peerGroupInstance.setPeerGroupToCompanySynchronous(this.company)\r\n return peerGroupInstance\r\n }\r\n\r\n public getRevisionCount() {\r\n if (!this.statementData) {\r\n return 0;\r\n }\r\n let revisionCount = 0;\r\n this.statementData.line_items.map(lineItem => {\r\n if (lineItem.facts) {\r\n lineItem.facts.map(fact => {\r\n if (fact.revised || fact.has_been_revised) {\r\n revisionCount++;\r\n }\r\n });\r\n }\r\n });\r\n return revisionCount;\r\n }\r\n\r\n public addPreviousPeriod() {\r\n this.calcbenchAPI.getStatementWithAdditionalPeriod(this.statementData.unique_id, this.statementData.columns.length - 1, -1)\r\n .then(response => { this.statementData = response.data; },\r\n () => { alert(\"No more history\"); });\r\n }\r\n\r\n public computeChange(facts: FaceStatementFact[], index: number) {\r\n let change; let nextColumnOffset;\r\n this.statementData.columns.slice(index + 1).some((column, nextColumnIndex) => {\r\n if (!column.hidden) {\r\n nextColumnOffset = nextColumnIndex + 1;\r\n return true;\r\n }\r\n });\r\n const canComputeChange = (facts &&\r\n facts[index] &&\r\n facts[index + nextColumnOffset] &&\r\n facts[index].effective_value &&\r\n facts[index + nextColumnOffset].effective_value &&\r\n ((facts[index].effective_value > 0 === facts[index + nextColumnOffset].effective_value > 0) || (this.statementData.columns[index].compareType !== \"change\")));\r\n if (canComputeChange) {\r\n if (this.statementData.columns[index].compareType === \"change\") {\r\n if (this.orderReversed) {\r\n change = ((facts[index + nextColumnOffset].effective_value - facts[index].effective_value) / facts[index].effective_value) * 100;\r\n } else {\r\n change = ((facts[index].effective_value - facts[index + nextColumnOffset].effective_value) / facts[index + nextColumnOffset].effective_value) * 100;\r\n }\r\n if (change < 0) {\r\n return `(${this.numberFilter(change * -1, 2)}%)`;\r\n }\r\n return `${this.numberFilter(change, 2)}%`;\r\n\r\n } // Absolute numeric change\r\n if (this.orderReversed) {\r\n change = facts[index + nextColumnOffset].effective_value - facts[index].effective_value;\r\n } else {\r\n change = facts[index].effective_value - facts[index + nextColumnOffset].effective_value;\r\n }\r\n if (change < 0) {\r\n return `($${this.numberFilter(change * -1, 2)})`\r\n }\r\n return `$${this.numberFilter(change, 2)}`\r\n }\r\n }\r\n\r\n public checkInsertExcelFormula(fact: FaceStatementFact) {\r\n const excelAddInProxy = getExcelAddInProxy()\r\n if (excelAddInProxy) {\r\n if (fact.fact_id && fact.fact_id > 0) {\r\n if (!fact.special_fact_type) {\r\n excelAddInProxy.insertFormulaForFact(fact.fact_id, false);\r\n } else if (fact.special_fact_type && (fact.special_fact_type === SpecialFactType.NonXBRL || fact.special_fact_type === SpecialFactType.Preliminary)) {\r\n excelAddInProxy.insertFormulaForFact_nonxbrl(fact.fact_id, false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public displayStatement() {\r\n return this.showStatement && this.statement.active;\r\n }\r\n\r\n public factTitle(fact: FaceStatementFact) {\r\n if (this.inExcel) {\r\n return 'Click to insert formula for this point';\r\n } if (fact.has_been_revised && this.showHasBeenRevised) {\r\n return 'This fact has been subsequently revised';\r\n } if (fact.special_fact_type === SpecialFactType.Calculated) {\r\n return 'Point calculated from other facts';\r\n }\r\n }\r\n\r\n async exportStatement(buildFormula?: FormulaBuilder) {\r\n const [workbook, worksheet] = buildWorkbookWithSheet(this.statementData.name)\r\n const exportedFrom = this.calcbenchUser.userName === 'New Generation Whitelabel' ? 'New Generation Research' : 'Calcbench'\r\n const nextRow = addHeader(this.statementData, worksheet, this.$location.absUrl(), this.factFormatOptions, exportedFrom)\r\n addStatementData(this.statementData, worksheet, nextRow, this.factFormatOptions, buildFormula, this.cidController.pointInTime, this.showNonXBRLStuff)\r\n await saveWorkbookOrExcelInsert(workbook, `${this.company.ticker} ${this.statementData.name}.xlsx`)\r\n }\r\n\r\n public exportFormulas() {\r\n this.exportStatement(this.excelFormula.bind(this))\r\n }\r\n\r\n private excelFormula(fact: FaceStatementFact, columnIndex: number, pitmode: boolean) {\r\n if (fact.local_name) {\r\n return `=${fact.negated_label ? \"-\" : \"\"}${pitmode ? 'CalcbenchXBRLTagFiscalPeriodAsOriginallyReported' : 'CalcbenchXBRLTagFiscalPeriod'}(\"${fact.local_name}\", \"${this.company.ticker}\", ${this.statementData.columns[columnIndex].fiscal_period_year}, \"${this.statementData.columns[columnIndex].fiscal_period_period}\" ${fact.dimension_members ? `, \"${fact.dimension_members.join(',')}\"` : \"\"})`\r\n }\r\n // Non-XBRL\r\n return `=CalcbenchNonXBRLFactID(${fact.fact_id})`\r\n\r\n }\r\n\r\n public showCompareColumn(column: FaceStatementColumn) {\r\n if (this.statementData.hideCompareColumn) return false;\r\n\r\n const q1CashFlow = column.fiscal_period_type === Period.Q1 && this.statement.statementType === StatementType.CashFlow\r\n return !q1CashFlow && (column.compareType !== CompareType.None) && (column.is_guidance_column ? this.showNonXBRLStuff : true)\r\n }\r\n}\r\n\r\n/**\r\n * as-reported-statement component\r\n */\r\nangular.module('calcbenchApp').component('asReportedStatement',\r\n {\r\n template: require('./statement.tpl.html'),\r\n controller: StatementController,\r\n bindings: {\r\n cidController: '=',\r\n company: '=',\r\n statement: '=',\r\n premiumUser: '=',\r\n premiumUserExcludingFreeTrials: '=',\r\n statementData: '<',\r\n showStatement: '=',\r\n inExcel: '<',\r\n factFormatOptions: '=',\r\n includeNonXbrl: '='\r\n },\r\n controllerAs: 'statementController'\r\n }).controller('StatementController', StatementController);\r\n","import * as angular from 'angular';\r\nimport { CompanyInDetailTabs } from '../companyInDetail/companyInDetailTabs';\r\nimport { PeerGroupInstance, mapAPICompanyToModelCompany } from '../shared/peerGroup/peerGroupInstance';\r\nimport { CalcbenchAPI, CompanyMethods } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { FootnoteQueryChannel } from '../footnote/footnoteQueryChannel';\r\nimport { FootnoteQueryParams } from '../footnote/footnoteQueryParameters';\r\nimport { CompaniesInDetailController } from '../companyInDetail/companiesInDetailController';\r\nimport { PeriodParams } from '../shared/periods/periodParams';\r\nimport './documentTab';\r\nimport { FactFormatOptions } from '../shared/filters/formatFact';\r\nimport { PeriodChannel } from '../shared/periods/PeriodChannel';\r\nimport { RangeOption } from '../shared/periods/rangeOptions';\r\nimport { StandardizedMetricSelectedHandler } from '../benchmark/MetricSelectedHandlers';\r\nimport { MessageBus } from '../shared/utils/MessageBus';\r\nimport { IMetricData } from '../shared/calcbenchAPI/StandardizedMetricDefinitions';\r\nimport { IPeerGroupCompany } from '../shared/peerGroup/IPeerGroupCompany';\r\nimport { PeerGroupInstanceBuilderType } from '../shared/peerGroup/PeerGroupInstanceBuilder';\r\nimport { FootnoteType } from '../footnote/footnoteTypes/FootnoteType';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\nrequire('./dashboard.scss');\r\n\r\nclass DashboardController implements angular.IController {\r\n static $inject = ['$scope', '$rootScope', '$location', '$window', '$q', 'PeerGroup',\r\n 'InitialMultiCompanyMetrics', 'PeriodParams', 'PeerGroupInstanceBuilder', 'buildPeerGroupCompanies',\r\n 'calcbenchAPI', 'FootnoteQueryChannelFactory', 'FootnoteQueryParamsFactory',\r\n 'MetricSelectedHandlers'];\r\n\r\n documentPeerGroupChannel: PeerGroupChannel;\r\n\r\n documentPeriodParams: PeriodParams;\r\n\r\n documentPeriodChannel: PeriodChannel;\r\n\r\n multiCompanyPeerGroup: PeerGroupInstance;\r\n\r\n documentSearchParameters: FootnoteQueryParams;\r\n\r\n documentQueryChannel: FootnoteQueryChannel;\r\n\r\n company: IPeerGroupCompany;\r\n\r\n companiesInDetailController: CompaniesInDetailController;\r\n\r\n accessionID: number;\r\n\r\n showMultiCompany: true;\r\n\r\n /**\r\n * Indicates we can get filings and disclosures\r\n * */\r\n peerGroupReady: boolean = false;\r\n\r\n /**\r\n * The benchmark table needs a queue to push metricsChanged messages to, on this page we do not care when metrics change.\r\n * */\r\n public metricsChangedMock = new MessageBus();\r\n\r\n constructor(\r\n private $scope: ng.IScope,\r\n private $rootScope: ng.IRootScopeService,\r\n private $location: ng.ILocationService,\r\n private $window: ng.IWindowService,\r\n private $q: ng.IQService,\r\n private documentPeerGroup: PeerGroupInstance,\r\n private initialMultiCompanyMetrics: IMetricData[],\r\n private periodParams: PeriodParams,\r\n private peerGroupInstanceBuilder: PeerGroupInstanceBuilderType,\r\n private buildPeerGroupCompanies: () => IPeerGroupCompany[],\r\n private calcbenchAPI: CalcbenchAPI,\r\n private footnoteQueryChannelFactory: () => FootnoteQueryChannel,\r\n private footnoteQueryParamsFactory: () => FootnoteQueryParams,\r\n metricSelectedHandlers: StandardizedMetricSelectedHandler,\r\n ) {\r\n metricSelectedHandlers.doneWithInitialSetup.then(() => {\r\n metricSelectedHandlers.push(this.initialMultiCompanyMetrics);\r\n });\r\n }\r\n\r\n public async $onInit() {\r\n (this.$rootScope).psbodyClass = 'dashboardpsbodyClass';\r\n this.documentPeerGroupChannel = new PeerGroupChannel(this.$q);\r\n this.documentPeerGroupChannel.doneWithInitialSetupDefered.resolve();\r\n this.documentPeriodParams = this.periodParams;\r\n this.documentPeriodParams.rangeOption = RangeOption.SINGLE_PERIOD;\r\n this.documentPeriodChannel = new PeriodChannel(this.$rootScope);\r\n\r\n this.companiesInDetailController = {\r\n factFormatOptions: new FactFormatOptions(),\r\n } as CompaniesInDetailController;\r\n\r\n let initialCompany: IPeerGroupCompany;\r\n await this.documentPeerGroup.readFromURL();\r\n if (this.documentPeerGroup.isSingleCompany) {\r\n initialCompany = this.documentPeerGroup.companies[0];\r\n } else {\r\n const initialTicker = this.$location.path().split('/')[2];\r\n if (initialTicker) {\r\n const response = await this.calcbenchAPI.getCompanies(CompanyMethods.CompanyIdentifiers, [initialTicker]);\r\n if (!response[0]) {\r\n alert(`No company found for ticker ${initialTicker}`);\r\n } else {\r\n initialCompany = mapAPICompanyToModelCompany(response[0]);\r\n }\r\n }\r\n }\r\n\r\n if (initialCompany) {\r\n this.companySelected(initialCompany);\r\n }\r\n }\r\n\r\n public companySelected = async (company: IPeerGroupCompany) => {\r\n if (this.company) {\r\n // company already selected, open a new page.\r\n this.$window.open(`/dashboard/${company.ticker}`, '_blank');\r\n return;\r\n }\r\n this.company = (this.$scope).company = company;\r\n (this.$rootScope).pageTitle = document.title = `${company.entity_name} (${company.ticker})`;\r\n\r\n this.periodParams.rangeOption = RangeOption.SINGLE_PERIOD;\r\n\r\n if (this.$location.search().accessionID) {\r\n this.accessionID = this.$location.search().accessionID;\r\n }\r\n\r\n await this.setUpDisclosureTab(company);\r\n this.peerGroupReady = true;\r\n await this.setupMultiCompanyTab(company);\r\n };\r\n\r\n private async setupMultiCompanyTab(company: IPeerGroupCompany) {\r\n const multiCompanyCompanies = this.buildPeerGroupCompanies();\r\n const multiCompanyPeerGroup = this.peerGroupInstanceBuilder(multiCompanyCompanies);\r\n multiCompanyPeerGroup.clearPeerGroupCompanies();\r\n multiCompanyPeerGroup.wholeUniverse = false;\r\n await multiCompanyPeerGroup.setPeerGroupToCompanyPeers('SICCodes', company.ticker);\r\n this.multiCompanyPeerGroup = multiCompanyPeerGroup;\r\n this.showMultiCompany = true;\r\n }\r\n\r\n private async setUpDisclosureTab(company: IPeerGroupCompany) {\r\n this.documentPeerGroup.wholeUniverse = false;\r\n this.documentPeerGroup.clearPeerGroupCompanies();\r\n this.documentPeriodParams.year = company.most_recent_complete_calendar_year;\r\n this.documentSearchParameters = this.footnoteQueryParamsFactory();\r\n this.documentSearchParameters.searchingBy = FootnoteType.SingleCompany;\r\n this.documentQueryChannel = this.footnoteQueryChannelFactory();\r\n await this.documentPeerGroup.addTickerListToPeerGroup(company.ticker);\r\n }\r\n\r\n public get showCompanyInDetailPanel() {\r\n return this.company !== null;\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('dashboardComponent', {\r\n controller: DashboardController,\r\n template: require('./dashboardComponent.tpl.html'),\r\n}).controller('CompanyInDetailController', CompanyInDetailTabs)\r\n .component('companyInDetailPanel', {\r\n controller: CompanyInDetailTabs,\r\n template: require('./companyInDetailPanel.tpl.html'),\r\n bindings: {\r\n company: '=',\r\n companiesInDetailController: '=',\r\n },\r\n controllerAs: 'companyInDetailController',\r\n });\r\n","import * as angular from \"angular\";\r\nimport { DisclosurePageController } from \"../footnote/disclosurePageController\";\r\n\r\nangular.module('calcbenchApp').component('documentTab', {\r\n controller: DisclosurePageController,\r\n bindings: {\r\n peerGroup: '=',\r\n peerGroupChannel: '=',\r\n periodParams: '=',\r\n accession: '=',\r\n footnoteQueryChannel: '=',\r\n searchParameters: '='\r\n },\r\n template: require('./documentTab.tpl.html')\r\n});","import * as angular from \"angular\";\r\nimport downloadjs from \"downloadjs\";\r\nimport { StandardizedMetricSelectedHandler } from \"../benchmark/MetricSelectedHandlers\";\r\nimport { StandardizedMetricsURLKey } from \"../benchmark/multiCompanyPage\";\r\nimport { CalcbenchAPI } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { IMetricData, IMetricDefinitions, MetricSection } from \"../shared/calcbenchAPI/StandardizedMetricDefinitions\";\r\nimport { ICalcbenchUser } from \"../shared/calcbenchUser/CalcbenchUser\";\r\nimport { StandardizedMetricsTypeAheadIndex } from \"../shared/exploreNormalizedPoints/standardizedMetricTypeAhead\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { PeriodType } from \"../shared/periods/constants\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\nimport { AvailableDateRangeTypes } from \"../shared/periods/periodController\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport './dataQuery.scss';\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\n\r\nconst ALLOWED_POINT_IN_TIME_RANGE_OPTIONS = [RangeOption.DATE_RANGE, RangeOption.ALL_HISTORY]\r\nconst ALLOWED_NON_POINT_IN_TIME_RANGE_OPTIONS = [RangeOption.ALL_HISTORY, RangeOption.SINGLE_PERIOD, RangeOption.PERIOD_RANGE]\r\n\r\ntype FootnoteSection = { sectionName: MetricSection, metrics: IMetricData[] }\r\n/**\r\n * Metrics that are selected by default\r\n * */\r\nconst DefaultMetrics: Readonly = ['Ticker', 'CentralIndexKey', 'FiscalYearEndDate']\r\nconst FaceSectionTitles: Readonly<{}> = {\r\n 'docEntityInfo': 'Entity Information',\r\n 'IncomeStatement': 'Income Statement',\r\n 'BalanceSheet': 'Balance Sheet',\r\n 'CashFlow': 'Cash Flow'\r\n}\r\n\r\nconst URLNameSpace = 'dq_';\r\nconst RowOrColumnsURLKey = `${URLNameSpace}rowsOrColumns`\r\n\r\n/**\r\n * Controller for the bulk data page\r\n * */\r\nclass DataQueryController implements angular.IController {\r\n static $inject = ['$scope',\r\n '$location',\r\n 'PeerGroup',\r\n 'PeriodParams',\r\n 'AvailableDateRangeTypes',\r\n 'calcbenchAPI',\r\n 'PeriodChannel',\r\n 'PeerGroupChannel',\r\n 'MetricSelectedHandlers',\r\n 'CalcbenchUser']\r\n\r\n public metricDefinitions: IMetricDefinitions\r\n\r\n /**\r\n * Footnote section for which to show the individual metrics, because the user has clicked the + sign or because they contain a metric matched by the search\r\n * \r\n * The key is the \"section\" from the metric\r\n */\r\n private expandedFootnoteSections: Record\r\n\r\n public selectedMetrics: Record = {}\r\n\r\n private standardizedMetricTypeAheadIndex: StandardizedMetricsTypeAheadIndex\r\n\r\n /**\r\n * metrics that are matched by the metric search term, they should be shown.\r\n */\r\n private searchMatches: Record\r\n\r\n /**\r\n * User is searching for metrics\r\n */\r\n public metricSearchTerm: string\r\n\r\n /**\r\n * Metrics that match the term for which the user is searching.\r\n */\r\n private searchMatchMetrics: IMetricData[];\r\n\r\n\r\n /**\r\n * Set in the template, should the output be in period rows or columns\r\n * \r\n * true indicates period columns, false indicates period rows.\r\n */\r\n public rowsOrColumns: boolean\r\n\r\n\r\n constructor(\r\n private $scope: angular.IScope,\r\n private $location: angular.ILocationService,\r\n private peerGroup: PeerGroupInstance,\r\n private periodParams: PeriodParams,\r\n private availableDateRangeTypes: AvailableDateRangeTypes,\r\n private calcbenchAPI: CalcbenchAPI,\r\n private periodChannel: PeriodChannel,\r\n private peerGroupChannel: PeerGroupChannel,\r\n private metricSelectedHandlers: StandardizedMetricSelectedHandler,\r\n /**\r\n * used in the template\r\n */\r\n public calcbenchUser: ICalcbenchUser) { }\r\n\r\n async $onInit() {\r\n this.periodParams.showPeriodTypeOptions = true;\r\n this.periodParams.periodType = PeriodType.Combined;\r\n this.periodParams.readFromURL();\r\n this.setPeriodMenuComponentVisibility();\r\n this.periodChannel.onPeriodChange(this.$scope, this.periodParams.writeToURL);\r\n this.periodChannel.onPeriodChange(this.$scope, () => this.setPeriodMenuComponentVisibility())\r\n await this.peerGroup.readFromURL();\r\n this.peerGroupChannel.onPeerGroupChange(this.peerGroup.writeToURL);\r\n this.metricDefinitions = await this.calcbenchAPI.getAvailableMetrics(true)\r\n this.metricSelectedHandlers.addListener(this.metricSelected)\r\n const urlMetrics = (this.$location.search()[StandardizedMetricsURLKey]?.split(',') || []) as string[]\r\n\r\n this.rowsOrColumns = this.$location.search()[RowOrColumnsURLKey] === 'true'\r\n\r\n this.expandedFootnoteSections = urlMetrics\r\n .map(m => this.metricDefinitions.footnote.find(f => f.metric === m)?.section)\r\n .filter(section => section)\r\n .reduce((a, section) => (a[section] = true, a), {})\r\n\r\n DefaultMetrics.concat(urlMetrics).forEach(m => this.selectedMetrics[m] = true)\r\n this.standardizedMetricTypeAheadIndex = new StandardizedMetricsTypeAheadIndex(Object.values(this.metricDefinitions).flat())\r\n }\r\n\r\n private faceSectionsStructure: {}\r\n\r\n public get faceSections() {\r\n if (this.faceSectionsStructure) {\r\n return this.faceSectionsStructure\r\n }\r\n this.faceSectionsStructure = this.metricDefinitions?.face\r\n .filter(m => m.section)\r\n .reduce((a, m) => {\r\n const sectionName = FaceSectionTitles[m.section]\r\n if (sectionName in a) {\r\n a[sectionName].push(m)\r\n } else {\r\n a[sectionName] = [m]\r\n }\r\n return a\r\n }, {})\r\n }\r\n\r\n private footnoteSectionsStructure: FootnoteSection[]\r\n\r\n public get footnoteSections() {\r\n if (this.footnoteSectionsStructure || !this.metricDefinitions) {\r\n return this.footnoteSectionsStructure\r\n }\r\n\r\n type Accumulator = [MetricSection, FootnoteSection[], IMetricData[]]\r\n const [_, x, __] = this.metricDefinitions.footnote\r\n .filter(m => m.section)\r\n .reduce((a, metric, index, array): Accumulator => {\r\n const [previousSectionName, sections, currentSectionMetrics] = a;\r\n if (index === array.length - 1) {\r\n // Last one\r\n return [null, [...sections, { sectionName: previousSectionName, metrics: [...currentSectionMetrics, metric] }], []] as Accumulator\r\n } if (index === 0) {\r\n return [metric.section, [], [metric]]\r\n } if (metric.section === previousSectionName) {\r\n return [previousSectionName, sections, [...currentSectionMetrics, metric]] as Accumulator\r\n }\r\n // Start a new section\r\n return [metric.section, [...sections, { sectionName: previousSectionName, metrics: currentSectionMetrics }], [metric]] as Accumulator\r\n\r\n }, [null, [], []] as Accumulator);\r\n this.footnoteSectionsStructure = x\r\n }\r\n\r\n private ratioSectionsStructure: {}\r\n\r\n public get ratioSections() {\r\n if (this.ratioSectionsStructure) {\r\n return this.ratioSectionsStructure\r\n }\r\n this.ratioSectionsStructure = this.metricDefinitions?.ratio.filter(m => m.section).reduce((a, m) => {\r\n if (m.section in a) {\r\n a[m.section].push(m)\r\n } else {\r\n a[m.section] = [m]\r\n }\r\n return a\r\n }, {})\r\n }\r\n\r\n /**\r\n * The user wants to select all metrics in a column\r\n * @param metrics\r\n * @param selected\r\n */\r\n public selectAll(metrics: IMetricData[], selected: boolean) {\r\n metrics.forEach(m => this.selectedMetrics[m.metric] = selected)\r\n }\r\n\r\n\r\n private metricSelected = (metrics: IMetricData[]) => {\r\n this.selectedMetrics[metrics[0].metric] = true\r\n }\r\n\r\n private setPeriodMenuComponentVisibility() {\r\n this.periodParams.showPeriodTypeOptions = !this.periodParams.pointInTime\r\n const allowRangeOptions = this.periodParams.pointInTime ? ALLOWED_POINT_IN_TIME_RANGE_OPTIONS : ALLOWED_NON_POINT_IN_TIME_RANGE_OPTIONS;\r\n this.availableDateRangeTypes.length = 0\r\n this.availableDateRangeTypes.push(...allowRangeOptions);\r\n }\r\n\r\n private async pointInTime() {\r\n const peerGroupParams = this.peerGroup.getAPIQueryParams();\r\n if (this.filter) {\r\n const filteredEntityIDs = await this.calcbenchAPI.filterCompanies(this.filter, this.peerGroup.wholeUniverse ? null : this.peerGroup.entityIDs)\r\n peerGroupParams.calcbenchEntityIDs = filteredEntityIDs;\r\n }\r\n const metricsToGet = this.metrics.filter(m => !DefaultMetrics.includes(m));\r\n\r\n const data = await this.calcbenchAPI.mappedData(\r\n {\r\n metrics: metricsToGet,\r\n pointInTime: true,\r\n pointInTimeV2: true,\r\n includePreliminary: true,\r\n allMetrics: metricsToGet.length === 0\r\n },\r\n peerGroupParams,\r\n this.periodParams.getAPIParams(),\r\n \"text/csv\"\r\n )\r\n downloadjs((data.data), \"calcbench_data.csv\");\r\n }\r\n\r\n /**\r\n * Is this group of footnotes exanded or collapsed\r\n * @param footnoteSection\r\n * @returns\r\n */\r\n public expandSection(footnoteSection: FootnoteSection) {\r\n if (this.metricSearchTerm) {\r\n return this.sectionContainsSearchMatch(footnoteSection)\r\n }\r\n return this.expandedFootnoteSections[footnoteSection.sectionName]\r\n\r\n }\r\n\r\n /**\r\n * Should this footnote section(the header) be visible?\r\n * @param footnoteSection\r\n * @returns\r\n */\r\n public showSection(footnoteSection: FootnoteSection) {\r\n if (this.metricSearchTerm) {\r\n return this.sectionContainsSearchMatch(footnoteSection)\r\n }\r\n return true\r\n }\r\n\r\n /**\r\n * Does this sections contain a metric that matches the term the user is searching for?\r\n * @param footnoteSection\r\n * @returns\r\n */\r\n private sectionContainsSearchMatch(footnoteSection: FootnoteSection) {\r\n return this.searchMatchMetrics.map(m => m.section).includes(footnoteSection.sectionName)\r\n }\r\n\r\n public metricSearchChanged() {\r\n this.searchMatchMetrics = this.standardizedMetricTypeAheadIndex.getSuggestions(this.metricSearchTerm)\r\n this.searchMatches = this.searchMatchMetrics.reduce((x, m) => ({ ...x, [m.metric]: true }), {})\r\n }\r\n\r\n public toggleSection(footnoteSection: FootnoteSection) {\r\n this.expandedFootnoteSections[footnoteSection.sectionName] = !this.expandedFootnoteSections[footnoteSection.sectionName]\r\n }\r\n\r\n /**\r\n * which metrics are checked.\r\n * Includes the default metrics, ticker, CIK, fiscal_period\r\n * */\r\n private get metrics() {\r\n const metrics: string[] = []\r\n for (const metric in this.selectedMetrics) {\r\n if (this.selectedMetrics[metric]) {\r\n metrics.push(metric)\r\n }\r\n }\r\n return metrics\r\n }\r\n\r\n /**\r\n * which ratios are checked\r\n * */\r\n private get ratios() {\r\n const ratioMetrics = this.metricDefinitions.ratio.map(m => m.metric)\r\n return this.metrics.filter(m => ratioMetrics.includes(m))\r\n }\r\n\r\n /**\r\n * SQL query \r\n */\r\n private get filter() {\r\n return $('#filterBox').val() as string;\r\n }\r\n\r\n public showMetric(metric: IMetricData) {\r\n if (this.metricSearchTerm) {\r\n return this.searchMatches[metric.metric]\r\n }\r\n return true\r\n\r\n }\r\n\r\n private saveMetricsToURL() {\r\n this.$location.search(StandardizedMetricsURLKey, null)\r\n this.$location.search(StandardizedMetricsURLKey, this.metrics.filter(m => m && !DefaultMetrics.includes(m)).join(','))\r\n this.$location.search(RowOrColumnsURLKey, this.rowsOrColumns);\r\n }\r\n\r\n public export() {\r\n this.saveMetricsToURL()\r\n if (this.peerGroup.isEmpty) {\r\n alert(\"Need to Choose Companies or whole universe\")\r\n return\r\n }\r\n if (this.periodParams.pointInTime) {\r\n this.pointInTime()\r\n return\r\n }\r\n const metricscsv = this.metrics.join(',');\r\n let firstone = true;\r\n\r\n const exportembedtracelinks = $('#export_embed_links').is(':checked');\r\n\r\n if (this.filter.trim() !== \"\") {\r\n let filterOK = true;\r\n const URL = \"/query/testFilter\";\r\n\r\n $.ajax({\r\n url: URL,\r\n dataType: 'json',\r\n async: false,\r\n data: { filter: this.filter, period: (window).period },\r\n success(OK) {\r\n filterOK = OK;\r\n }\r\n });\r\n\r\n if (!filterOK) {\r\n alert(`FILTER ERROR: ${this.filter}`);\r\n return;\r\n }\r\n }\r\n\r\n const ratioscsv = this.ratios.join(',')\r\n\r\n\r\n let aggscsv = '';\r\n firstone = true;\r\n if (!$('#aggrRaw').is(':checked')) {\r\n $.each($('.aggre'), (index, value) => {\r\n if ($(value).is(':checked')) {\r\n if (!firstone) aggscsv += ',';\r\n aggscsv += $(value).attr('name');\r\n firstone = false;\r\n }\r\n });\r\n }\r\n const { periodParams } = this\r\n const quarterly = periodParams.periodType !== 'Annual'\r\n let calendarYear; let calendarPeriod; let startCalendarYear; let startCalendarPeriod;\r\n if (periodParams.rangeOption === 'Single Period') {\r\n calendarYear = periodParams.year;\r\n calendarPeriod = (quarterly && periodParams.period) || 0;\r\n } else if (periodParams.rangeOption === 'Period Range') {\r\n startCalendarYear = periodParams.year;\r\n startCalendarPeriod = (quarterly && periodParams.period) || 0;\r\n calendarYear = periodParams.endYear;\r\n calendarPeriod = (quarterly && periodParams.endPeriod) || 0;\r\n }\r\n\r\n const { peerGroup } = this;\r\n if (peerGroup.wholeUniverse && !(confirm(\"Whole Universe - Are You Sure?\"))) {\r\n return;\r\n }\r\n\r\n $('#exportembedtracelinks').val(exportembedtracelinks.toString());\r\n $('#exportincludepreliminary').val(periodParams.includePreliminary.toString());\r\n $('#exportmetrics').val(metricscsv);\r\n $('#exportratios').val(ratioscsv);\r\n $('#exportaggregates').val(aggscsv);\r\n $('#exportusealltickers').val(peerGroup.wholeUniverse.toString());\r\n $('#exportmethod').val(peerGroup.wholeUniverse ? null : \"entity_ids\");\r\n $('#exporttickers').val(peerGroup.companies.map(m => m.entity_id).join(','));\r\n $('#exportfilter').val(this.filter);\r\n $('#exportperiod').val(periodParams.legacyPeriodType);\r\n $('#exportcalendarperiod').val(calendarPeriod);\r\n $('#exportcalendaryear').val(calendarYear);\r\n $('#exportcalendarperiodstart').val(startCalendarPeriod);\r\n $('#exportcalendaryearstart').val(startCalendarYear);\r\n $('#exportsidebyside').val(this.rowsOrColumns.toString());\r\n\r\n $('#exportform').trigger('submit');\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp')\r\n .controller('DataQueryController', DataQueryController)\r\n","/**\r\n * The purchase price allocation data is balance sheet points\r\n * */\r\nexport const PPA_Structure = {\r\n Assets: {\r\n lineItems: [\r\n { metric: \"BusinessCombinationAssetsAcquiredCashAndEquivalents\", name: 'Cash and Cash Equivalents' },\r\n { metric: \"BusinessCombinationAssetsAcquiredReceivables\", name: 'Receivables' },\r\n { metric: \"BusinessCombinationAssetsAcquiredInventory\", name: 'Inventory' },\r\n { metric: \"BusinessCombinationAssetsDeferredTaxAssetsCurrent\", name: 'Deferred Tax Assets' },\r\n { metric: \"BusinessCombinationAssetsMarketableSecurities\", name: 'Marketable Securities' },\r\n { metric: \"BusinessCombinationAssetsPrepaidExpense\", name: 'Prepaid Expenses' },\r\n { metric: \"BusinessCombinationAssetsAcquiredPropertyPlantAndEquipment\", name: 'Property Plant and Equipment' },\r\n { metric: \"BusinessCombinationAssetsAquiredGoodwill\", name: 'Goodwill' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired\", name: \"Finite Lived Intangibles\" }, // Do not have Business Cominations becuase the tag is used in other parts of the XBRL\r\n { metric: \"IndefinitelivedIntangibleAssetsAcquired\", name: 'Indefinite Lived Intangibles' },\r\n { metric: \"BusinessCombinationAssetsDeferredTaxAssetsNoncurrent\", name: 'Non-Current Tax Assets' },\r\n { metric: \"BusinessCombinationAssetsFinancialAssets\", name: 'Financial Assets' },\r\n { metric: \"BusinessCombinationAssetsOtherAssets\", name: 'Other' },\r\n ],\r\n subTotal: { metric: \"BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets\", name: \"Total\" }\r\n },\r\n Liabilities: {\r\n lineItems: [\r\n { metric: \"BusinessCombinationLiabilitiesAssumedCurrentLiabilitiesAccountsPayable\", name: \"Accounts Payable\" },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedDeferredRevenue\", name: \"Deferred Revenue\" },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedCurrentDeferredRevenue\", name: \"Current Deferred Revenue\" },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedDeferredTaxLiabilitiesCurrent\", name: 'Current Tax' },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedCurrentLongTermDebt\", name: 'Current Long-Term Debt' },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedDeferredTaxLiabilitiesNoncurrent\", name: 'Non-Current Tax' },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedLongTermDebt\", name: 'Long Term Debt' },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedCapitalLeaseObligation\", name: 'Capital Lease Obligations' },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedContingentLiability\", name: 'Contingent Liabilities' },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedFinancialLiabilities\", name: 'Financial', },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedRestructuringLiabilities\", name: \"Restructuring\" },\r\n { metric: \"BusinessCombinationLiabilitiesAssumedOtherLiabilities\", name: 'Other' }\r\n ],\r\n subTotal: { metric: \"BusinessCombinationLiabilitiesAssumed\", name: 'Total' }\r\n },\r\n Totals: {\r\n lineItems: [\r\n { metric: \"BusinessCombinationAssetsAcquiredAndLiabilitiesAssumedNet\", name: \"Total of Assets And Liabilities\" }, // subtotal assets - liabilities\r\n { metric: \"BusinessCombinationAcquiredGoodwillAndLiabilitiesAssumedNet\", name: \"Assets + Liabilities + Goodwill\" }, // subtotal of above including goodwill\r\n { metric: \"BusinessCombinationNoncontrollingInterest\", name: 'Non-Controlling Interest' }, // unusual asset\r\n { metric: \"BusinessCombinationAcquiredGoodwillAndLiabilitiesAssumedLessNoncontrollingInterest\", name: 'Total - Non-Controlling Interest' }\r\n ],\r\n subTotal: undefined\r\n }\r\n}","import * as angular from 'angular';\r\nimport _, { Dictionary } from \"lodash\"\r\nimport { CellFormulaValue, Worksheet } from 'exceljs';\r\nimport { saveWorkbookOrExcelInsert, buildWorkbookWithSheet, addCalcbenchHeader } from '../shared/excelExport/excelExport';\r\nimport { PeerGroupInstance, mapAPICompanyToModelCompany } from '../shared/peerGroup/peerGroupInstance';\r\nimport { CalcbenchAPI, CompanyMethods } from '../shared/calcbenchAPI/calcbenchAPI';\r\n\r\nimport { FormatType } from '../shared/filters/formatType';\r\nimport { excelNumberFormat } from '../shared/filters/excelNumberFormat';\r\nimport { PEER_GROUP_CHANGED_PERIOD } from '../query/queryController';\r\nimport { PeriodParams } from '../shared/periods/periodParams';\r\nimport { PeriodChannel } from '../shared/periods/PeriodChannel';\r\nimport { IMetricData } from '../shared/calcbenchAPI/StandardizedMetricDefinitions';\r\nimport { IPeerGroupCompany } from '../shared/peerGroup/IPeerGroupCompany';\r\nimport { IDimensionalData } from '../shared/calcbenchAPI/IDimensionalData';\r\nimport { buildAddInFormula } from '../shared/excelExport/addInFormula';\r\nimport { CBfunctionType } from '../../office-js-addin/src/functions/CBFunctionType';\r\nimport { IDimensionalRow } from './IDimensionalRow';\r\nimport { IBreakoutMetric } from './IBreakoutMetric';\r\nimport { IBreakoutMenuItem } from './IBreakoutMenuItem';\r\nimport { StandardizedGeoSegmentTitle, TableState, TableStateName } from './tableStates/tableState';\r\nimport { SinglePeriodMultiMetric } from './tableStates/singlePeriodMultiMetric';\r\nimport { MultiMetricAllHistory } from './tableStates/multiMetricAllHistory';\r\nimport { SingleMetricAllHistory } from './tableStates/singleMetricAllHistory';\r\nimport { ALL_HISTORY } from '../shared/periods/rangeOptions';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\n\r\nrequire('./segments.scss')\r\n\r\n/**\r\n * Column in the dimensional data table\r\n */\r\nexport interface IDimensionalDataColumnDef extends uiGrid.IColumnDefOf {\r\n getTimeSeries?: () => void;\r\n metric?: IBreakoutMetric;\r\n period?: PeriodParams;\r\n}\r\n\r\n\r\ninterface IDimensionalDataGridOptions extends uiGrid.IGridOptions {\r\n columnDefs: IDimensionalDataColumnDef[]\r\n data: IDimensionalRow[]\r\n}\r\n\r\n/**\r\n * Default item the in the Select Data Set dropdown\r\n */\r\nconst defaultItem = { disabled: true, title: 'Select Data Set', standardizedPoints: [] } as IBreakoutMenuItem\r\n\r\nconst URL_NAMESPACE = 'dd';\r\nconst TABLE_STATE_URL_KEY = `${URL_NAMESPACE}_tableState`\r\n/**\r\n * Used to set the initial dataset\r\n */\r\nconst INITIAL_DATA_SET_URL_KEY = `${URL_NAMESPACE}_initialDataSetTitle`\r\n\r\n\r\n/**\r\n * Metrics to start with\r\n */\r\nexport const INITIAL_METRICS_URL_KEY = `${URL_NAMESPACE}_initialMetrics`\r\n\r\n\r\n/**\r\n * controller for the dimensional-data component\r\n * */\r\nexport class DimensionalDataController implements ng.IController {\r\n static $inject = [\r\n '$scope',\r\n '$location',\r\n 'PeerGroupChannel',\r\n 'PeriodChannel',\r\n 'PeerGroup',\r\n 'calcbenchAPI',\r\n 'PeriodParams',\r\n 'SortNumericColumn',\r\n 'ComponentVisibility',\r\n ]\r\n\r\n gridOptions: IDimensionalDataGridOptions\r\n\r\n entityIDToEntity: Dictionary\r\n\r\n /**\r\n * Setting this indicates that we are in time series mode\r\n * */\r\n timeSeriesMetric: IBreakoutMetric\r\n\r\n headerCellTemplate: string\r\n\r\n showTable: boolean;\r\n\r\n waitingForData: boolean;\r\n\r\n public selectedDataSet: IBreakoutMenuItem\r\n\r\n public asOriginallyReported: boolean = false\r\n\r\n multiMetricColumns: IDimensionalDataColumnDef[];\r\n\r\n /**\r\n * backing variable\r\n * */\r\n private _tableState: TableState\r\n\r\n /**\r\n * current state of the segment table\r\n * */\r\n public get tableState(): TableState {\r\n return this._tableState\r\n }\r\n\r\n public set tableState(state: TableState) {\r\n this._tableState = state\r\n this.URLTableState = state.stateName\r\n }\r\n\r\n public singleMetricAllHistoryState: SingleMetricAllHistory\r\n\r\n public multiMetricAllHistoryState: MultiMetricAllHistory\r\n\r\n public singePeriodMultiMetricState: SinglePeriodMultiMetric\r\n\r\n segmentColumn: string\r\n\r\n private gridApi: uiGrid.IGridApi\r\n\r\n\r\n static reasonableNumberOfCompaniesToGet = 300\r\n\r\n /**\r\n * items in the Select Data Set dropdown.\r\n * \r\n * Remember the first item is defaultItem\r\n */\r\n public dataSets: IBreakoutMenuItem[]\r\n\r\n /**\r\n * Set in the template\r\n * */\r\n excludedDataSets: string[]\r\n\r\n /**\r\n * set the table state name \r\n * */\r\n private set URLTableState(name: TableStateName) {\r\n this.$location.search(TABLE_STATE_URL_KEY, name)\r\n }\r\n\r\n /**\r\n * get the table state as serialized in the URL\r\n * */\r\n private get URLTableState() {\r\n return this.$location.search()[TABLE_STATE_URL_KEY] as TableStateName\r\n }\r\n\r\n constructor(private $scope: angular.IScope,\r\n public $location: angular.ILocationService,\r\n private peerGroupChannel: PeerGroupChannel,\r\n public periodChannel: PeriodChannel,\r\n private peerGroup: PeerGroupInstance,\r\n private calcbenchAPI: CalcbenchAPI,\r\n public periodParams: PeriodParams,\r\n public sortNumericColumn,\r\n private componentVisibility) {\r\n this.singleMetricAllHistoryState = new SingleMetricAllHistory(this, $location)\r\n this.singePeriodMultiMetricState = new SinglePeriodMultiMetric(this)\r\n this.multiMetricAllHistoryState = new MultiMetricAllHistory(this)\r\n }\r\n\r\n async $onInit() {\r\n this.gridOptions = {\r\n data: [],\r\n appScopeProvider: this,\r\n columnDefs: [],\r\n enableFiltering: true,\r\n onRegisterApi: gridApi => {\r\n this.gridApi = gridApi\r\n }\r\n };\r\n\r\n this.headerCellTemplate = require('../benchmark/cbGridHeaderCell.html');\r\n this.componentVisibility.periodMenu = true;\r\n this.periodParams.showAllHistoryOption = true\r\n await this.peerGroupChannel.doneWithInitialSetup\r\n this.peerGroupChannel.onPeerGroupChange(() => this.handlePeerGroupChange());\r\n this.periodChannel.onPeriodChange(this.$scope, () => this.periodParamsChanged(), PEER_GROUP_CHANGED_PERIOD);\r\n await this.getBreakouts()\r\n this.setInitialState()\r\n\r\n if (!this.selectedDataSet.disabled) {\r\n this.dataSetChanged()\r\n }\r\n\r\n if (this.peerGroup.companies.length > 0) {\r\n this.entityIDToEntity = _.indexBy(this.peerGroup.companies, d => d.entity_id)\r\n }\r\n }\r\n\r\n /**\r\n * Set the table state based on the URL.\r\n * @returns\r\n */\r\n private setInitialState(): void {\r\n const urlTableState = this.URLTableState\r\n switch (urlTableState) {\r\n case TableStateName.SingleMetricAllHistory: {\r\n this.tableState = this.singleMetricAllHistoryState\r\n this.periodParams.rangeOption = ALL_HISTORY\r\n break\r\n }\r\n case TableStateName.MultiMetricAllHistory:\r\n this.tableState = this.multiMetricAllHistoryState\r\n break\r\n case TableStateName.SinglePeriodMultiMetric:\r\n default:\r\n this.tableState = this.singePeriodMultiMetricState\r\n break\r\n }\r\n\r\n const initialMetrics: string[] = this.$location.search()[INITIAL_METRICS_URL_KEY] || []\r\n\r\n this.dataSets.forEach(d => {\r\n const dateSetPoints = d.standardizedPoints\r\n const initiallySelectedMetrics = dateSetPoints.filter(s => {\r\n if (initialMetrics.includes(s.metric)) {\r\n s.selected = true\r\n return true\r\n }\r\n return false\r\n })\r\n if (initiallySelectedMetrics.length === 0) {\r\n // Start with all metrics selected\r\n dateSetPoints.forEach(s => { s.selected = true })\r\n }\r\n })\r\n\r\n const initialDataSetTitle = this.$location.search()[INITIAL_DATA_SET_URL_KEY]\r\n this.selectedDataSet = this.dataSets.find(d => d.title === initialDataSetTitle) || defaultItem\r\n }\r\n\r\n /**\r\n * Build the data structure for the Select Data Set dropdown\r\n * */\r\n private async getBreakouts() {\r\n const availableMetrics = (await this.calcbenchAPI.getAvailableMetrics())\r\n const metricsDefinitions: Dictionary = Object.values(availableMetrics)\r\n .flat()\r\n .reduce((map, metric) => { map[metric.metric] = metric; return map }, {});\r\n\r\n metricsDefinitions.BusinessCombinationAcquisitionDate = { format_type: FormatType.Date } as IMetricData;\r\n const breakouts = (await this.calcbenchAPI.availableBreakouts()).data\r\n const menuDataSets = breakouts\r\n .filter(b => !this.excludedDataSets?.includes(b.title))\r\n .map(dataSet => {\r\n const standardizedPoints = dataSet.breakouts.map(point => {\r\n // If the breakout does not have a format type look a standardized point with the same name and use that format type, if that doesn't work assume currency. akittredge, August 2017.\r\n const metricDefinition = metricsDefinitions[point.standardizedPoint]\r\n const formatType = point.formatType || metricDefinition?.format_type || FormatType.Currency\r\n return {\r\n metric: point.databaseName,\r\n standardizedPoint: metricDefinition,\r\n formatType,\r\n name: metricDefinition?.name || point.name\r\n } as IBreakoutMetric\r\n })\r\n return {\r\n title: dataSet.title,\r\n standardizedPoints,\r\n dimension: dataSet.dimensionName,\r\n formatType: dataSet.format_type,\r\n dataSet: dataSet.dataSet\r\n } as IBreakoutMenuItem\r\n })\r\n\r\n this.dataSets = [defaultItem, ...menuDataSets]\r\n }\r\n\r\n\r\n private async handlePeerGroupChange() {\r\n if (this.peerGroup.wholeUniverse) {\r\n await this.calcbenchAPI.getCompanies(CompanyMethods.Universe, true).then(response => {\r\n this.entityIDToEntity = _.indexBy(response.map(d => mapAPICompanyToModelCompany(d)), d => d.entity_id)\r\n });\r\n } else {\r\n this.entityIDToEntity = _.indexBy(this.peerGroup.companies, d => d.entity_id)\r\n }\r\n if (!this.selectedDataSet.disabled) {\r\n await this.tableState.peerGroupChanged()\r\n }\r\n }\r\n\r\n private async periodParamsChanged() {\r\n await this.tableState.handlePeriodParamsChanged()\r\n }\r\n\r\n public async *getData(metrics: IBreakoutMetric[], periodParams: PeriodParams) {\r\n const pageQueryParams = {\r\n metrics: metrics.map(m => m.metric),\r\n dataSet: this.selectedDataSet.dataSet,\r\n dimensionName: this.selectedDataSet.dimension,\r\n AsOriginallyReported: this.asOriginallyReported\r\n };\r\n const apiPeriodParams = periodParams.getAPIParams();\r\n let entityIDs: number[];\r\n\r\n if (this.peerGroup.wholeUniverse) {\r\n if (!(confirm(\"Whole Universe - Are You Sure?\"))) return false;\r\n entityIDs = (await this.calcbenchAPI.getCompanies(CompanyMethods.Universe, true)).map(c => c.entity_id)\r\n } else {\r\n entityIDs = this.peerGroup.entityIDs\r\n }\r\n\r\n const entityIDChunks = _.chunk(entityIDs, DimensionalDataController.reasonableNumberOfCompaniesToGet)\r\n for (const entityIDChunk of entityIDChunks) {\r\n const dataPoints = (await this.calcbenchAPI.dimensionalData(pageQueryParams, { calcbenchEntityIDs: entityIDChunk }, apiPeriodParams)).data\r\n for (const d of dataPoints) {\r\n yield d\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Called from the template\r\n * @param traceLinks values in the sheet are trace URLs\r\n */\r\n exportTable(traceLinks: boolean = true, addInFormulas: boolean = false) {\r\n const [workbook, worksheet] = buildWorkbookWithSheet('DimensionalData');\r\n this.populateWorksheet(worksheet, traceLinks, addInFormulas);\r\n // Move the rows down so they do not collide with the header\r\n worksheet.spliceRows(1, 0, ...new Array(4))\r\n addCalcbenchHeader(worksheet, 'Dimensional Data')\r\n saveWorkbookOrExcelInsert(workbook, \"CalcbenchDimensionalData.xlsx\")\r\n }\r\n\r\n /**\r\n * Build Excel sheet for export.\r\n * @param worksheet\r\n * @param traceLinks\r\n * @param addInFormulas write formulas for the add-in\r\n */\r\n private populateWorksheet(worksheet: Worksheet, traceLinks: boolean, addInFormulas: boolean) {\r\n const { gridOptions } = this;\r\n const periodPrefix = this.periodParams.useFiscalPeriod ? 'Fiscal' : 'Calendar';\r\n const columns = [\r\n ...[\r\n {\r\n key: 'entity_name',\r\n header: 'Company',\r\n getValue: (row: IDimensionalRow) => row.entity?.entity_name\r\n },\r\n {\r\n key: 'ticker',\r\n header: 'Ticker',\r\n getValue: (row: IDimensionalRow) => row.entity?.ticker\r\n },\r\n {\r\n key: 'CIK',\r\n header: 'CIK (Central Index Key)',\r\n getValue: (row: IDimensionalRow) => row.entity?.CIK,\r\n style: { numFmt: excelNumberFormat(FormatType.Text) },\r\n width: 35\r\n },\r\n {\r\n key: this.selectedDataSet.dimension,\r\n header: this.selectedDataSet.dimension,\r\n getValue: (row: IDimensionalRow) => row.container,\r\n width: 50\r\n }\r\n ],\r\n ...(this.tableState.showStandardizedMemberColumn ? [\r\n {\r\n key: 'standardized_label',\r\n header: StandardizedGeoSegmentTitle,\r\n getValue: (row: IDimensionalRow) => row.standardized_label,\r\n width: 50\r\n }\r\n ] : []),\r\n ...[\r\n\r\n {\r\n key: 'year',\r\n header: `${periodPrefix} Year`,\r\n getValue: (row: IDimensionalRow) => row.period.year,\r\n width: 15\r\n },\r\n {\r\n key: 'period',\r\n header: `${periodPrefix} Period`,\r\n getValue: (row: IDimensionalRow) => row.period.period,\r\n width: 15\r\n },\r\n ...gridOptions.columnDefs.filter(c => c.metric).map(column => ({\r\n key: column.name,\r\n header: column.displayName,\r\n getValue: (row: IDimensionalRow) => {\r\n const columnValue: IDimensionalData = row[column.name]\r\n const value = columnValue?.value\r\n if (!columnValue) {\r\n return null\r\n } if (traceLinks) {\r\n return { formula: `HYPERLINK(\"${columnValue.trace_url}\", ${value})`, result: value } as CellFormulaValue\r\n } if (addInFormulas) {\r\n const usefiscalPeriod = this.periodParams.useFiscalPeriod;\r\n const traceFact = columnValue.trace_facts[0]\r\n const formula = buildAddInFormula(\r\n usefiscalPeriod ? CBfunctionType.XBRLTagFiscalPeriod : CBfunctionType.XBRLTag,\r\n columnValue.ticker,\r\n traceFact.local_name,\r\n usefiscalPeriod ? columnValue.fiscal_year : columnValue.calendar_year,\r\n usefiscalPeriod ? columnValue.fiscal_period : columnValue.calendar_period,\r\n traceFact.dimensions\r\n )\r\n return { formula, result: value } as CellFormulaValue\r\n }\r\n return value\r\n },\r\n style: { numFmt: excelNumberFormat(column.metric.formatType) },\r\n width: 35\r\n }))\r\n ]\r\n ]\r\n\r\n worksheet.columns = columns;\r\n const rows = this.gridApi.core.getVisibleRows().map((row) => {\r\n const rowValues = {};\r\n columns.forEach(c => {\r\n rowValues[c.key] = c.getValue(row.entity);\r\n })\r\n return rowValues\r\n });\r\n worksheet.addRows(rows)\r\n }\r\n\r\n public async dataSetChanged() {\r\n const { tableState } = this\r\n tableState.metrics = this.selectedDataSet.standardizedPoints.filter(s => s.selected)\r\n if (!this.entityIDToEntity) {\r\n await this.handlePeerGroupChange()\r\n } else {\r\n await tableState.dataSetChanged()\r\n }\r\n\r\n this.$location.search(INITIAL_DATA_SET_URL_KEY, this.selectedDataSet.title)\r\n }\r\n\r\n /**\r\n * Used to set the selected items in the dropdown\r\n * */\r\n private _selectedMetrics: IBreakoutMetric[] = []\r\n\r\n get selectedMetrics(): IBreakoutMetric[] {\r\n const selectedMetrics = this.selectedDataSet.standardizedPoints?.filter(s => s.selected) || []\r\n this._selectedMetrics.splice(0, this._selectedMetrics.length, ...selectedMetrics)\r\n return this._selectedMetrics\r\n }\r\n\r\n /**\r\n * Has to be an instance function because of how it is called.\r\n * \r\n * @param metric\r\n */\r\n public metricSelected = (metric: IBreakoutMetric) => {\r\n metric.selected = true\r\n this.tableState.handleMetricSelected(metric)\r\n this.selectedMetricsChanged()\r\n }\r\n\r\n public metricDeselected = (metric: IBreakoutMetric) => {\r\n metric.selected = false\r\n this.selectedMetricsChanged()\r\n }\r\n\r\n public metricDropdownClosed = async () => { // Has to be an instance function because of how it is called.\r\n await this.tableState.handleMetricsSelected(this.selectedDataSet.standardizedPoints.filter(s => s.selected))\r\n }\r\n\r\n public deselectAll = () => {\r\n this.selectedMetrics.forEach(m => { m.selected = false });\r\n this.selectedMetricsChanged()\r\n }\r\n\r\n public selectAll = () => {\r\n this.selectedDataSet.standardizedPoints.forEach(m => { m.selected = true });\r\n this.selectedMetricsChanged()\r\n }\r\n\r\n /**\r\n * Selected metrics changed\r\n */\r\n private selectedMetricsChanged() {\r\n this.$location.search(INITIAL_METRICS_URL_KEY, this.selectedMetrics.map(m => m.metric))\r\n }\r\n}\r\n\r\n\r\n\r\nangular.module('calcbenchApp').component(\"dimensionalData\", {\r\n controller: DimensionalDataController,\r\n template: require('./dimensionalData.tpl.html'),\r\n bindings: {\r\n excludedDataSets: '='\r\n }\r\n})\r\n\r\n/**\r\n * build the URL params for the breakout page\r\n * @param metric\r\n */\r\nexport function URLParams(metric: string) {\r\n return {\r\n [TABLE_STATE_URL_KEY]: SingleMetricAllHistory.name,\r\n [INITIAL_METRICS_URL_KEY]: metric\r\n }\r\n}","/**\r\n * https://www.calcbench.com/compensation/export\r\n * */\r\n\r\nimport * as angular from 'angular';\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance';\r\n\r\nclass ExecutiveCompensationController implements ng.IController {\r\n static $inject = ['PeerGroup']\r\n private firstReported: boolean\r\n constructor(private peerGroup: PeerGroupInstance) { }\r\n\r\n public ExecutiveCompExportURL() {\r\n var eidlist = this.peerGroup.entityIDs;\r\n var eids = eidlist.join(',');\r\n return '/query/execcompexport?eids=' + eids + '&firstreported=' + this.firstReported;\r\n }\r\n\r\n public DirectorCompExportURL() {\r\n var eidlist = this.peerGroup.entityIDs;\r\n var eids = eidlist.join(',');\r\n return '/query/directorcompexport?eids=' + eids + '&firstreported=' + this.firstReported;\r\n }\r\n\r\n public get showExportLinks() {\r\n return this.peerGroup.companies.length > 0\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').controller('executiveCompensationExport', ExecutiveCompensationController)","/**\r\n * https://www.calcbench.com/businesscombinations/export\r\n * \r\n * add this, https://plnkr.co/edit/iXjRZT?p=preview&preview\r\n * */\r\n\r\nimport * as angular from 'angular';\r\nimport uiGrid, { IColumnDef } from 'ui-grid';\r\nimport { CellFormulaValue, Column, Style } from 'exceljs';\r\nimport { CalcbenchAPI } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance';\r\nimport { nameof } from \"../shared/utils/nameof\";\r\nimport '../shared/styles/cb-ui-grid.scss'\r\nimport { addCalcbenchHeader, buildWorkbookWithSheet, saveWorkbookOrExcelInsert } from '../shared/excelExport/excelExport';\r\n\r\nimport { excelNumberFormat } from '../shared/filters/excelNumberFormat';\r\nimport { FormatType } from '../shared/filters/formatType';\r\nimport { IntangibleAssetsCategory, PurchasePriceAllocation } from '../shared/calcbenchAPI/purchasePriceAllocation';\r\nimport { sortNumericColumn } from '../shared/directives/columnSort';\r\nimport { ITraceParameters } from '../trace/TraceURLParameters';\r\nimport { traceURLForExcelFormula } from '../trace/traceController';\r\nimport { IGroupable } from '../shared/uiGridGroupColumns/ui-grid-group-columns';\r\nimport { PPA_Structure } from './PurchasePriceAllocationStructure';\r\nimport { companyNameColumn } from '../rawData/companyNameColumn';\r\nimport { IStandardizedData } from '../shared/calcbenchAPI/IStandardizedData';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\nrequire('../trace/traceDirective')\r\nrequire('../shared/uiGridGroupColumns/ui-grid-group-columns')\r\nrequire('./business-combinations.scss')\r\n\r\nclass StandardizedBusinessCombinationsPageController implements ng.IController {\r\n static $inject = ['PeerGroup']\r\n\r\n public restrictCols: boolean\r\n\r\n constructor(private peerGroup: PeerGroupInstance) { }\r\n\r\n async $onInit() {\r\n this.peerGroup.addChangeListener(this.peerGroup.writeToURL)\r\n }\r\n\r\n public get showExportLinks() {\r\n return this.peerGroup.companies.length > 0\r\n }\r\n}\r\n\r\nconst FINITE_LIVED_INTANGIBLE_ASSETS = [\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_Customer\", name: 'Customer' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_RandD\", name: 'Research and Development' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_IP\", name: 'Intellectual Property' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_Tech\", name: 'Technology' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_Contracts\", name: 'Contracts' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_Licenses\", name: 'Licenses' },\r\n { metric: \"FinitelivedIntangibleAssetsAcquired_Marketing\", name: \"Marketing\" }\r\n] as const\r\n\r\ntype ITableColumn = (IColumnDef & { isDate?: boolean, metricCategory?: string })\r\n\r\ninterface StandardizedBusinessCombinationTable extends uiGrid.IGridOptionsOf {\r\n data: PurchasePriceAllocation[]\r\n columnDefs: ITableColumn[]\r\n}\r\n\r\n\r\nconst PPA_COLUMN_WIDTH = 125;\r\nconst DATE_COLUMN_WIDTH = 140;\r\nconst purchasePriceAllocationTitle = 'Purchase Price Allocation'\r\nconst intangibleAssetTitle = 'Finite Lived Intangible Assets'\r\n/**\r\n * The property on the objects returned by the API that has the standardized PPA points in it\r\n * */\r\nconst StandardizedPPAPointsProperty = nameof('standardized_PPA_points')\r\nconst IntangibleCategoriesProperty = nameof('intangible_categories')\r\n\r\nclass StandardizedBusinessCombinationTableController implements ng.IController {\r\n static $inject = ['$q', 'calcbenchAPI', 'PeerGroupChannel']\r\n\r\n /**\r\n * Set in the template\r\n * */\r\n public peerGroup: PeerGroupInstance\r\n\r\n public gridOptions: StandardizedBusinessCombinationTable = {\r\n data: [],\r\n columnDefs: [\r\n companyNameColumn(),\r\n {\r\n name: nameof('target'),\r\n displayName: 'Subject Company Name',\r\n headerTooltip: 'The company being acquired',\r\n minWidth: 170,\r\n pinnedLeft: true\r\n },\r\n {\r\n name: nameof('acquisition_date'),\r\n displayName: 'Acquisition Date',\r\n minWidth: DATE_COLUMN_WIDTH,\r\n enableFiltering: false,\r\n cellFilter: 'formatDateObject:\"%Y-%m-%d\"',\r\n sortingAlgorithm: (a, b) => a - b,\r\n isDate: true\r\n },\r\n {\r\n name: nameof('date_reported'),\r\n displayName: 'Date Reported',\r\n minWidth: DATE_COLUMN_WIDTH,\r\n enableFiltering: false,\r\n cellFilter: 'formatDateObject:\"%Y-%m-%d\"',\r\n sortingAlgorithm: (a, b) => a - b,\r\n isDate: true\r\n },\r\n {\r\n name: nameof('date_originally_reported'),\r\n displayName: 'Date First Reported',\r\n minWidth: DATE_COLUMN_WIDTH,\r\n enableFiltering: false,\r\n cellFilter: 'formatDateObject:\"%Y-%m-%d\"',\r\n sortingAlgorithm: (a, b) => a - b,\r\n isDate: true\r\n },\r\n {\r\n name: nameof('purchase_price'),\r\n displayName: 'Purchase Price',\r\n minWidth: PPA_COLUMN_WIDTH,\r\n enableFiltering: false,\r\n cellTemplate: require(\"./tableStates/cellTemplate.tpl.html\"),\r\n sortingAlgorithm: sortNumericColumn()\r\n }, ...[\r\n ...Object.entries(PPA_Structure).map(([assetOrLiability, x]) => [\r\n ...x.lineItems.map(c => [assetOrLiability, c.metric, c.name, StandardizedPPAPointsProperty]),\r\n [assetOrLiability, x.subTotal?.metric, x.subTotal?.name, StandardizedPPAPointsProperty]\r\n ]).flat(),\r\n ...FINITE_LIVED_INTANGIBLE_ASSETS.map(m => [null, m.metric, m.name, IntangibleCategoriesProperty])\r\n ].map(([subCategory, category, displayName, propertyName]) => {\r\n const groupName = {\r\n [StandardizedPPAPointsProperty]: purchasePriceAllocationTitle,\r\n [IntangibleCategoriesProperty]: intangibleAssetTitle\r\n }[propertyName];\r\n return {\r\n name: category,\r\n field: `${propertyName}.${category}`,\r\n minWidth: PPA_COLUMN_WIDTH,\r\n enableFiltering: false,\r\n cellTemplate: require('./tableStates/cellTemplate.tpl.html'),\r\n metricCategory: propertyName,\r\n sortingAlgorithm: sortNumericColumn(),\r\n group: `${groupName} ${subCategory ? `- ${subCategory}` : ''}`,\r\n displayName\r\n } as ITableColumn & IGroupable\r\n })\r\n ],\r\n enableFiltering: true\r\n }\r\n\r\n private canceller: angular.IDeferred\r\n\r\n constructor(private $q: angular.IQService, private calcbenchAPI: CalcbenchAPI, private peerGroupChannel: PeerGroupChannel) { }\r\n\r\n async $onInit() {\r\n this.peerGroup.addChangeListener(() => this.getData())\r\n await this.peerGroupChannel.doneWithInitialSetup\r\n if (this.peerGroup.companies.length > 0) {\r\n this.getData()\r\n }\r\n }\r\n\r\n private async getData() {\r\n this.canceller?.resolve()\r\n this.canceller = this.$q.defer()\r\n this.gridOptions.data.length = 0\r\n for (const company of this.peerGroup.companies) {\r\n const data = await this.calcbenchAPI.standardizedBusinessCombinations({ calcbenchEntityIDs: [company.entity_id] }, this.canceller.promise)\r\n this.gridOptions.data.push(...data)\r\n }\r\n this.canceller = null\r\n }\r\n\r\n public get showTable() {\r\n return this.gridOptions.data.length > 0\r\n }\r\n\r\n public get showExcelExport() {\r\n return !this.canceller && this.showTable\r\n }\r\n\r\n public async excelExport() {\r\n const [workbook, worksheet] = buildWorkbookWithSheet('Purchase Price Allocation')\r\n const columns = this.gridOptions.columnDefs.map(c => {\r\n let style: Style = null\r\n if (!c.isDate) {\r\n style = { numFmt: excelNumberFormat(FormatType.Currency) } as Style\r\n }\r\n const columnWidth = (c.minWidth || c.width as number) / 5 // ratio between ui-grid column width and Excel widths\r\n return {\r\n header: c.displayName || c.name,\r\n key: c.name,\r\n style,\r\n width: columnWidth\r\n } as Column\r\n })\r\n columns.splice(1, 0, { header: 'Ticker', key: 'ticker' } as Column)\r\n worksheet.columns = columns\r\n\r\n const rows = this.gridOptions.data.map(d => {\r\n const row = this.gridOptions.columnDefs.reduce((columns, c: ITableColumn) => {\r\n let value: number | string | CellFormulaValue;\r\n let metric: IStandardizedData | IntangibleAssetsCategory;\r\n let traceFactIDs: number[]\r\n const columnName = c.name\r\n if (d.intangible_categories[columnName]) {\r\n metric = d.intangible_categories[columnName]\r\n traceFactIDs = metric.trace_facts.map(f => f.factIDs).flat()\r\n } else if (d.standardized_PPA_points[columnName]) {\r\n metric = d.standardized_PPA_points[columnName]\r\n traceFactIDs = metric.trace_facts.map(f => f.fact_id)\r\n } else if (columnName === nameof('purchase_price')) {\r\n metric = d.purchase_price\r\n traceFactIDs = metric.trace_facts.map(f => f.fact_id)\r\n } else {\r\n value = d[columnName]\r\n }\r\n\r\n if (metric) {\r\n const traceData: ITraceParameters = {\r\n factIDs: traceFactIDs\r\n }\r\n const factTraceURL = traceURLForExcelFormula(traceData)\r\n const metricValue = metric.value\r\n value = {\r\n formula: `HYPERLINK(\"${factTraceURL}\", ${metricValue})`,\r\n result: metricValue,\r\n date1904: false\r\n }\r\n }\r\n\r\n return { ...columns, [columnName]: value }\r\n }, {});\r\n\r\n (row).ticker = d.parent_company_ticker\r\n return row\r\n })\r\n worksheet.addRows(rows)\r\n const headerRow = 6\r\n worksheet.spliceRows(1, 0, ...new Array(headerRow - 1))\r\n addCalcbenchHeader(worksheet, 'Purchase Price Allocation')\r\n worksheet.views = [{\r\n state: 'frozen',\r\n xSplit: 3,\r\n ySplit: headerRow\r\n }]\r\n const categoryHeaderRow = headerRow - 1\r\n worksheet.mergeCells(`H${categoryHeaderRow}:AL${categoryHeaderRow}`)\r\n const PPAAllocationCategoryHeaderCell = worksheet.getCell(`K${categoryHeaderRow}`)\r\n PPAAllocationCategoryHeaderCell.value = purchasePriceAllocationTitle\r\n worksheet.mergeCells(`AM${categoryHeaderRow}:AS${categoryHeaderRow}`)\r\n const intangibleCategoryHeaderCell = worksheet.getCell(`AM${categoryHeaderRow}`)\r\n intangibleCategoryHeaderCell.value = intangibleAssetTitle\r\n worksheet.getRow(headerRow).font = { bold: true }\r\n worksheet.getRow(categoryHeaderRow).font = { bold: true }\r\n saveWorkbookOrExcelInsert(workbook, `Calcbench Purchase Price Allocation.xlsx`)\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp')\r\n .controller('StandardizedBusinessCombinationsPageController', StandardizedBusinessCombinationsPageController)\r\n .component('standardizedBusinessCombinationTable', {\r\n controller: StandardizedBusinessCombinationTableController,\r\n bindings: { peerGroup: '=' },\r\n template: require(\"./table.tpl.html\")\r\n })","import { IDimensionalData } from \"../../shared/calcbenchAPI/IDimensionalData\"\r\nimport { IPeerGroupCompany } from \"../../shared/peerGroup/IPeerGroupCompany\"\r\nimport { PeriodType } from \"../../shared/periods/constants\"\r\nimport { PeriodParams } from \"../../shared/periods/periodParams\"\r\nimport { RangeOption } from \"../../shared/periods/rangeOptions\"\r\nimport { IDimensionalDataColumnDef } from \"../dimensionalData\"\r\nimport { IBreakoutMetric } from \"../IBreakoutMetric\"\r\nimport { IDimensionalRow } from \"../IDimensionalRow\"\r\nimport { TableState, TableStateName } from \"./tableState\"\r\n\r\n\r\n/**\r\n * all history, many metrics\r\n * */\r\nexport class MultiMetricAllHistory extends TableState {\r\n public stateName = TableStateName.MultiMetricAllHistory\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n protected rowCacheKey(d: IDimensionalData): string {\r\n return `${d.calcbench_entity_id}${d.label}${d.calendar_period}-${d.calendar_year}`\r\n }\r\n\r\n get periodParams() {\r\n const periodParams = new PeriodParams(this.controller.$location)\r\n periodParams.periodType = PeriodType.Combined\r\n periodParams.rangeOption = RangeOption.ALL_HISTORY\r\n return periodParams\r\n }\r\n\r\n get metrics() {\r\n return this.controller.singePeriodMultiMetricState.metrics\r\n }\r\n\r\n set metrics(metrics: IBreakoutMetric[]) {\r\n this.controller.singePeriodMultiMetricState.metrics = metrics\r\n }\r\n\r\n\r\n protected periodParamsChangeSetTableState() {\r\n return this.controller.singePeriodMultiMetricState\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n protected columnName(mappedPoint: IDimensionalData): string {\r\n return mappedPoint.metric\r\n }\r\n\r\n\r\n protected buildDataColumn(metric: IBreakoutMetric, name: string, displayName: string, _periodParams: PeriodParams): IDimensionalDataColumnDef {\r\n return this.buildBasicColumn(name, displayName, metric)\r\n }\r\n\r\n protected buildRow(dimension: string, entity: IPeerGroupCompany, mappedPoint: IDimensionalData): IDimensionalRow {\r\n const row = super.buildRow(dimension, entity, mappedPoint)\r\n const period = this.pointPeriod(mappedPoint) as any\r\n period.value = `${mappedPoint.calendar_year}-${mappedPoint.calendar_period}`\r\n row.period = period\r\n return row\r\n }\r\n\r\n public buildInitialColumns() {\r\n const columns = super.buildInitialColumns()\r\n const periodColumn = this.buildBasicColumn('period', 'Calendar Period')\r\n periodColumn.cellTemplate = require('./periodCellTemplate.tpl.html')\r\n periodColumn.sortingAlgorithm = (a, b, rowA, rowB) => rowA.entity.period.sortOrder(rowB.entity.period)\r\n columns.push(periodColumn)\r\n return columns\r\n }\r\n}\r\n\r\n","\r\nimport { ILocationService } from \"angular\"\r\nimport { IDimensionalData } from \"../../shared/calcbenchAPI/IDimensionalData\"\r\nimport { PeriodType } from \"../../shared/periods/constants\"\r\nimport { PeriodParams } from \"../../shared/periods/periodParams\"\r\nimport { RangeOption } from \"../../shared/periods/rangeOptions\"\r\nimport { DimensionalDataController, IDimensionalDataColumnDef, INITIAL_METRICS_URL_KEY } from \"../dimensionalData\"\r\nimport { IBreakoutMetric } from \"../IBreakoutMetric\"\r\nimport { TableState, TableStateName } from \"./tableState\"\r\n\r\n/**\r\n * Columns with all of the history for one metric.\r\n * \r\n * you get to this state from the disclosureTraceTable\r\n * */\r\nexport class SingleMetricAllHistory extends TableState {\r\n public stateName = TableStateName.SingleMetricAllHistory\r\n\r\n constructor(protected controller: DimensionalDataController,\r\n private $location: ILocationService) {\r\n super(controller)\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n protected rowCacheKey(d: IDimensionalData): string {\r\n return `${d.calcbench_entity_id}${d.label}`\r\n }\r\n\r\n get periodParams() {\r\n const periodParams = new PeriodParams(this.controller.$location)\r\n periodParams.periodType = PeriodType.Combined\r\n periodParams.rangeOption = RangeOption.ALL_HISTORY\r\n return periodParams\r\n }\r\n\r\n protected periodParamsChangeSetTableState() {\r\n return this.controller.singePeriodMultiMetricState\r\n }\r\n\r\n protected buildDataColumn(metric: IBreakoutMetric, name: string, displayName: string, periodParams: PeriodParams): IDimensionalDataColumnDef {\r\n const columnDef = this.buildBasicColumn(name, displayName, metric, periodParams)\r\n return columnDef\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n protected columnName(mappedPoint: IDimensionalData): string {\r\n return `${mappedPoint.calendar_year}-${mappedPoint.calendar_period}`\r\n }\r\n\r\n\r\n async handleMetricsSelected(metrics: IBreakoutMetric[]) {\r\n this.metric = metrics[0]\r\n this.resetTable()\r\n await this.getData()\r\n }\r\n\r\n public metric: IBreakoutMetric;\r\n\r\n\r\n get metrics(): IBreakoutMetric[] {\r\n return [this.metric]\r\n }\r\n\r\n set metrics(metrics) {\r\n console.assert(metrics.length === 1, \"we are in single metric mode\")\r\n this.metric = metrics[0]\r\n }\r\n\r\n /**\r\n * This is called when the user clicks on the clock in the column header\r\n * @param metric\r\n */\r\n public async getDataForMetric(metric: IBreakoutMetric) {\r\n this.controller.periodParams.rangeOption = RangeOption.ALL_HISTORY\r\n this.unselectOtherMetrics(metric)\r\n this.metric = metric\r\n this.resetTable()\r\n this.$location.search(INITIAL_METRICS_URL_KEY, metric.metric)\r\n await this.getData()\r\n }\r\n\r\n private unselectOtherMetrics(m: IBreakoutMetric) {\r\n this.controller.selectedDataSet.standardizedPoints.forEach(p => { p.selected = p.metric === m.metric })\r\n }\r\n\r\n public handleMetricSelected(m: IBreakoutMetric) {\r\n this.unselectOtherMetrics(m)\r\n }\r\n\r\n public async getData() {\r\n await super.getData()\r\n const firstPeriodColumn = this.columnDefs.findIndex(c => c.period)\r\n this.columnDefs.splice(firstPeriodColumn, this.columnDefs.length - firstPeriodColumn, ...this.columnDefs.slice(firstPeriodColumn).sort((a, b) => -a.period.sortOrder(b.period)))\r\n }\r\n}\r\n","import { IDimensionalData } from \"../../shared/calcbenchAPI/IDimensionalData\"\r\nimport { FormatType } from \"../../shared/filters/formatType\"\r\nimport { RangeOption } from \"../../shared/periods/rangeOptions\"\r\nimport { IBreakoutMetric } from \"../IBreakoutMetric\"\r\nimport { TableState, TableStateName } from \"./tableState\"\r\n\r\n/**\r\n * One period, a bunch of metrics\r\n * */\r\nexport class SinglePeriodMultiMetric extends TableState {\r\n public stateName = TableStateName.SinglePeriodMultiMetric\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n protected rowCacheKey(d: IDimensionalData) {\r\n return `${d.calcbench_entity_id}${d.label}`\r\n }\r\n\r\n protected get periodParams() {\r\n return this.controller.periodParams\r\n }\r\n\r\n protected periodParamsChangeSetTableState() {\r\n const { controller } = this\r\n if (this.controller.periodParams.rangeOption === RangeOption.ALL_HISTORY) {\r\n return controller.multiMetricAllHistoryState\r\n }\r\n return this\r\n\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n protected columnName(mappedPoint: IDimensionalData): string {\r\n return mappedPoint.metric\r\n }\r\n\r\n public metrics: IBreakoutMetric[]\r\n\r\n buildDataColumn(metric: IBreakoutMetric, name: string, displayName: string) {\r\n const columnDef = this.buildBasicColumn(name, displayName, metric)\r\n columnDef.metric = metric\r\n\r\n columnDef.getTimeSeries = async () => {\r\n const { controller } = this\r\n const { singleMetricAllHistoryState } = controller\r\n controller.tableState = singleMetricAllHistoryState\r\n await singleMetricAllHistoryState.getDataForMetric(metric)\r\n }\r\n\r\n if (metric.formatType === FormatType.Date) {\r\n columnDef.width = 100;\r\n }\r\n return columnDef;\r\n }\r\n}","import { COLUMN_TYPES } from \"../../benchmark/multiCompanyPage\"\r\nimport { IDimensionalData } from \"../../shared/calcbenchAPI/IDimensionalData\"\r\nimport { IPeerGroupCompany } from \"../../shared/peerGroup/IPeerGroupCompany\"\r\nimport { PeriodType } from \"../../shared/periods/constants\"\r\nimport { PeriodParams } from \"../../shared/periods/periodParams\"\r\nimport { DimensionalDataController, IDimensionalDataColumnDef } from \"../dimensionalData\"\r\nimport { IBreakoutMetric } from \"../IBreakoutMetric\"\r\nimport { IDimensionalRow } from \"../IDimensionalRow\"\r\n\r\n\r\n/**\r\n * these are the same for every metric so they just take up space\r\n * */\r\nconst RedundantMetricPrefixes = ['Geographical Segment -', 'Operating Segment -'] as const\r\n\r\n\r\n\r\nexport const StandardizedGeoSegmentTitle = 'Standardized Geographic Segment'\r\n\r\n\r\nexport const enum TableStateName {\r\n SinglePeriodMultiMetric = 'SinglePeriodMultiMetric',\r\n SingleMetricAllHistory = 'SingleMetricAllHistory',\r\n MultiMetricAllHistory = 'MultiMetricAllHistory'\r\n}\r\n\r\n\r\n\r\n/**\r\n * base class for the states the segment tables can take\r\n * */\r\nexport abstract class TableState {\r\n /**\r\n * how the state is tracked in the URL\r\n */\r\n public abstract stateName: TableStateName\r\n\r\n constructor(protected controller: DimensionalDataController) { }\r\n\r\n public async dataSetChanged() {\r\n this.resetTable()\r\n await this.getData()\r\n }\r\n\r\n public async peerGroupChanged() {\r\n this.resetTable()\r\n await this.getData()\r\n }\r\n\r\n async handleMetricsSelected(metrics: IBreakoutMetric[]): Promise {\r\n const newMetrics = metrics.filter(m => !this.columnDefs.find(c => c.name === m.metric))\r\n this.metrics.splice(0, this.metrics.length, ...this.metrics.filter(metric => {\r\n const remove = !metrics.find(selectedMetric => selectedMetric === metric)\r\n if (remove) {\r\n const columnToDelete = this.columnDefs.findIndex(c => c.name === metric.metric)\r\n this.columnDefs.splice(columnToDelete, 1)\r\n }\r\n return !remove\r\n }))\r\n this.metrics.splice(this.metrics.length, 0, ...newMetrics)\r\n if (newMetrics.length > 0) {\r\n await this.getData(newMetrics)\r\n }\r\n }\r\n\r\n protected abstract periodParams: PeriodParams;\r\n\r\n public abstract metrics: IBreakoutMetric[]\r\n\r\n\r\n public async handlePeriodParamsChanged() {\r\n const newState = this.periodParamsChangeSetTableState()\r\n this.controller.tableState = newState\r\n newState.resetTable()\r\n await newState.getData()\r\n }\r\n\r\n /**\r\n * set the new state based on the existing state\r\n * */\r\n protected abstract periodParamsChangeSetTableState(): TableState\r\n\r\n /**\r\n * Get the identifier of the column that this point should go in\r\n * @param mappedPoint\r\n */\r\n protected abstract columnName(mappedPoint: IDimensionalData): string\r\n\r\n /**\r\n * \r\n * @param metric\r\n * @param name the string for lookup\r\n * @param displayName the name that will be displayed to the user\r\n * @param periodParams\r\n */\r\n protected abstract buildDataColumn(metric: IBreakoutMetric, name: string, displayName: string, periodParams: PeriodParams): IDimensionalDataColumnDef\r\n\r\n /**\r\n * get the row key for this piece of data\r\n * @param d\r\n */\r\n protected abstract rowCacheKey(d: IDimensionalData): string\r\n private rowCache: Record\r\n\r\n public async getData(newMetrics?: IBreakoutMetric[]) {\r\n const metrics = newMetrics || this.metrics\r\n const { controller } = this\r\n const rows = controller.gridOptions.data\r\n const { rowCache } = this\r\n for await (const dimensionalPoint of this.controller.getData(metrics, this.periodParams)) {\r\n const columnName = this.columnName(dimensionalPoint)\r\n const existingColumn = this.columnDefs.find(c => c.name === columnName)\r\n const metric = metrics.find(m => m.metric === dimensionalPoint.metric)\r\n if (!metric) {\r\n // Getting BusinessCombinationAssetsOtherAssets in the response on the business combintations portal, which we didn't ask for.\r\n continue\r\n }\r\n if (!existingColumn) {\r\n const periodParams = this.pointPeriod(dimensionalPoint)\r\n const newColumn = this.buildDataColumn(metric, columnName, metric.name, periodParams)\r\n this.columnDefs.push(newColumn)\r\n }\r\n const cacheKey = this.rowCacheKey(dimensionalPoint)\r\n let existingRow = rowCache[cacheKey]\r\n if (!existingRow) {\r\n const dimension = dimensionalPoint.label\r\n const entity = controller.entityIDToEntity[dimensionalPoint.calcbench_entity_id]\r\n existingRow = this.buildRow(dimension, entity, dimensionalPoint)\r\n existingRow[this.selectedDimension] = dimension\r\n existingRow.standardized_label = dimensionalPoint.standardized_label\r\n rows.push(existingRow)\r\n rowCache[cacheKey] = existingRow\r\n }\r\n (dimensionalPoint).format_type = metric.formatType\r\n existingRow[columnName] = dimensionalPoint\r\n }\r\n }\r\n\r\n protected buildRow(dimension: string, entity: IPeerGroupCompany, mappedPoint: IDimensionalData): IDimensionalRow {\r\n return {\r\n container: dimension,\r\n entity,\r\n period: this.pointPeriod(mappedPoint)\r\n } as IDimensionalRow\r\n }\r\n\r\n buildInitialColumns() {\r\n return [\r\n {\r\n name: 'entity',\r\n cellTemplate: '
{{COL_FIELD.entity_name}} ({{COL_FIELD.ticker}})
',\r\n width: 200,\r\n sortingAlgorithm(a, b) {\r\n return a.entity_name.localeCompare(b.entity_name);\r\n },\r\n pointType: COLUMN_TYPES.company,\r\n filter: {\r\n placeholder: 'Filter',\r\n condition: (searchTerm, cellValue: IPeerGroupCompany) => {\r\n const expression = new RegExp(searchTerm, 'i')\r\n return cellValue.ticker.match(expression) || cellValue.entity_name.match(expression)\r\n }\r\n },\r\n pinnedLeft: true\r\n },\r\n {\r\n name: this.selectedDimension,\r\n width: 250,\r\n sortingAlgorithm(a, b) {\r\n return a.localeCompare(b);\r\n },\r\n pinnedLeft: true,\r\n filter: {\r\n placeholder: 'Filter'\r\n }\r\n },\r\n {\r\n name: StandardizedGeoSegmentTitle,\r\n field: 'standardized_label',\r\n visible: this.showStandardizedMemberColumn,\r\n width: 250,\r\n pinnedLeft: true,\r\n },\r\n {\r\n name: 'is_subtotal',\r\n width: 100,\r\n pinnedLeft: true,\r\n enableFiltering: false,\r\n visible: false\r\n }\r\n ] as IDimensionalDataColumnDef[]\r\n }\r\n\r\n /**\r\n * Selected dataset\r\n */\r\n private get selectedDimension() {\r\n return this.selectedDataSet.dimension\r\n }\r\n\r\n private get selectedDataSet() {\r\n return this.controller.selectedDataSet\r\n }\r\n\r\n\r\n /**\r\n * display the standardized member column (only for geos now)\r\n */\r\n public get showStandardizedMemberColumn() {\r\n return this.selectedDataSet.dataSet === \"GeographicSegments\"\r\n }\r\n\r\n /**\r\n * \r\n * @param name the field from the rows\r\n * @param displayName the name that will appear in the column header\r\n * @param metric\r\n * @param periodParams\r\n */\r\n buildBasicColumn(name: string, displayName: string, metric?: IBreakoutMetric, periodParams?: PeriodParams) {\r\n displayName = displayName.replace(new RegExp(RedundantMetricPrefixes.join('|')), '')\r\n return {\r\n name,\r\n displayName,\r\n metric,\r\n cellTemplate: require('./cellTemplate.tpl.html'),\r\n sortingAlgorithm: this.controller.sortNumericColumn,\r\n minWidth: 150,\r\n maxWidth: 250,\r\n enableFiltering: true, // We need hide the filter with CSS but we need them to get the height right, https://github.com/angular-ui/ui-grid/issues/6979\r\n headerCellTemplate: this.controller.headerCellTemplate,\r\n pointType: COLUMN_TYPES.mapped,\r\n period: periodParams,\r\n headerCellClass: 'hideFilter'\r\n } as IDimensionalDataColumnDef\r\n }\r\n\r\n protected pointPeriod(point: IDimensionalData): PeriodParams {\r\n const periodParams = new PeriodParams(this.controller.$location)\r\n periodParams.year = point.calendar_year\r\n periodParams.period = point.calendar_period\r\n periodParams.periodType = point.calendar_period === 0 ? PeriodType.Annual : PeriodType.Quarterly\r\n return periodParams\r\n }\r\n\r\n\r\n /**\r\n * reset the UI-Grid gridOptions \r\n * */\r\n protected resetTable() {\r\n const { controller } = this\r\n controller.gridOptions.data.length = 0;\r\n this.columnDefs.length = 0;\r\n Array.prototype.push.apply(this.columnDefs, this.buildInitialColumns())\r\n controller.showTable = true\r\n this.rowCache = {}\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public handleMetricSelected(m: IBreakoutMetric) { }\r\n\r\n /**\r\n * columnDefs from the controller gridOptions.\r\n */\r\n get columnDefs() {\r\n return this.controller.gridOptions.columnDefs\r\n }\r\n}\r\n","import * as angular from \"angular\";\r\nimport { isEqual } from \"lodash\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { AvailableDateRangeTypes } from \"../shared/periods/periodController\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { FilingType, FilingTypeToTitle } from \"../shared/calcbenchAPI/FilingType\";\r\nimport { MessageBus } from \"../shared/utils/MessageBus\";\r\nimport { RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\n\r\n\r\nconst FilingPageURLNamespace = 'f_'\r\nconst FilingTypesURLKey = `${FilingPageURLNamespace}filingTypes`\r\n\r\nclass FilingsPageController implements ng.IController {\r\n static $inject = ['$location', '$scope', 'PeerGroup', 'PeerGroupChannel', 'PeriodChannel', 'PeriodParams', 'AvailableDateRangeTypes']\r\n\r\n /**\r\n * used to render the dropdown items\r\n * */\r\n public readonly filingTypes = Object.entries(FilingTypeToTitle).map(([filingtType, title]) => ({title, value: filingtType}))\r\n\r\n /**\r\n * items that are checked in the dropdown\r\n * */\r\n public selectedFilingTypes: Array<{ title: string, value: FilingType }>\r\n\r\n /**\r\n * pass messages to the filing table when filing types are selected\r\n * */\r\n public readonly filingTypesBus = new MessageBus();\r\n\r\n constructor(private $location: ng.ILocationService,\r\n private $scope: ng.IScope,\r\n private peerGroup: PeerGroupInstance,\r\n private peerGroupChannel: PeerGroupChannel,\r\n private periodChannel: PeriodChannel,\r\n private periodParams: PeriodParams,\r\n availableDateRangeTypes: AvailableDateRangeTypes) {\r\n availableDateRangeTypes.push(RangeOption.ALL_HISTORY, RangeOption.DATE_RANGE)\r\n }\r\n\r\n async $onInit() {\r\n this.peerGroupChannel.onPeerGroupChange(this.peerGroup.writeToURL);\r\n this.peerGroup.readFromURL();\r\n this.periodChannel.onPeriodChange(this.$scope, this.periodParams.writeToURL);\r\n this.periodParams.readFromURL();\r\n await this.peerGroupChannel.doneWithInitialSetup\r\n if (!this.peerGroup.groupSelected) {\r\n this.peerGroup.wholeUniverse = true\r\n }\r\n\r\n const filingTypesFromURL = ((this.$location.search()[FilingTypesURLKey] as FilingType[]) || [])\r\n this.selectedFilingTypes = filingTypesFromURL.map(f => ({ title: '', value: f }))\r\n if (this.peerGroup.wholeUniverse && this.selectedFilingTypes.length === 0) {\r\n // Cannot run wholeuniverse for all history\r\n this.periodParams.rangeOption = RangeOption.DATE_RANGE\r\n }\r\n this.previouslySelectedFilingTypes = filingTypesFromURL\r\n this.filingTypesBus.pusherSetupDone(filingTypesFromURL)\r\n this.filingTypesBus.addListener(filingTypes => this.$location.search(FilingTypesURLKey, filingTypes))\r\n }\r\n\r\n /**\r\n * the last types that user selected\r\n * */\r\n private previouslySelectedFilingTypes: FilingType[]\r\n\r\n /**\r\n * this has to be an instance method because it gets passed to the dropdown\r\n * */\r\n public filingTypesSelected = () => {\r\n const newFilingTypes = this.selectedFilingTypes.map(x => x.value)\r\n if (!isEqual(this.previouslySelectedFilingTypes, newFilingTypes)) { // only fire messages the user changed their selection\r\n this.filingTypesBus.push(newFilingTypes)\r\n this.previouslySelectedFilingTypes = newFilingTypes\r\n }\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('filingsPage', {\r\n controller: FilingsPageController,\r\n template: require('./filingsPage.tpl.html')\r\n})\r\n","import * as angular from \"angular\";\r\nimport { CellHyperlinkValue } from \"exceljs\";\r\nimport { IColumnDef } from \"ui-grid\";\r\nimport downloadjs from \"downloadjs\";\r\nimport { sortTextColumn } from '../shared/directives/columnSort';\r\nimport { buildWorkbookWithSheet, saveWorkbook, addCalcbenchHeader, MaxNumberHyperlinks } from '../shared/excelExport/excelExport';\r\nimport { CalcbenchAPI, IDisclosureAPIParams, ICompanyAPIParams, isHTTPResponse } from '../shared/calcbenchAPI/calcbenchAPI'\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance'\r\nimport { BuildFootnote } from \"../footnote/footnoteFactory\"\r\nimport { FootnoteQueryParams } from \"../footnote/footnoteQueryParameters\";\r\nimport { FootnoteList } from \"../footnote/footnoteList\";\r\nimport { ICalcbenchUser } from \"../shared/calcbenchUser/CalcbenchUser\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { PEER_GROUP_CHANGED_PERIOD } from \"../query/queryController\";\r\nimport { Filing } from \"../shared/calcbenchAPI/filing\";\r\nimport { TextFootnote } from \"../shared/calcbenchAPI/TextFootnote\";\r\nimport { FilingType } from \"../shared/calcbenchAPI/FilingType\";\r\nimport { MessageBus } from \"../shared/utils/MessageBus\";\r\nimport { ALL_HISTORY, DATE_RANGE, RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { PeriodChannel } from \"../shared/periods/PeriodChannel\";\r\nimport { PermissionLevel } from \"../shared/calcbenchUser/PermissionLevel\";\r\nimport { FootnoteType } from \"../footnote/footnoteTypes/FootnoteType\";\r\nimport { PeerGroupChannel } from \"../shared/peerGroup/peerGroupChannel\";\r\n\r\nconst calcbenchApp = angular.module('calcbenchApp');\r\n\r\n\r\ninterface IFilingTableRow extends Filing {\r\n company_label: string;\r\n}\r\n\r\nconst dateSort = (a: Date, b: Date) => (b?.valueOf() || 0) - (a?.valueOf() || 0);\r\n\r\nclass FilingsTable implements ng.IController {\r\n\r\n static $inject = ['$scope', '$q', 'calcbenchAPI', 'CalcbenchUser', 'FootnoteFactory'];\r\n\r\n private _gridOptions: uiGrid.IGridOptionsOf;\r\n\r\n /**\r\n * set in the template\r\n * */\r\n public peerGroupChannel: PeerGroupChannel\r\n\r\n /**\r\n * set in the template\r\n * */\r\n public showCompanyColumn: boolean\r\n\r\n /**\r\n * set in the template\r\n * */\r\n public peerGroup: PeerGroupInstance\r\n\r\n /**\r\n * set in the template\r\n * */\r\n public periodChannel: PeriodChannel\r\n\r\n /**\r\n * set in the template\r\n * */\r\n public periodParams: PeriodParams\r\n\r\n gridApi: uiGrid.IGridApi;\r\n\r\n get gridOptions() {\r\n return this._gridOptions;\r\n }\r\n\r\n get rows(): Filing[] {\r\n return (this.gridOptions.data);\r\n }\r\n\r\n /**\r\n * passed in the template, messages indicate user has selected filings to search for.\r\n * */\r\n public filingsSelectedBus: MessageBus\r\n\r\n private selectedFilingTypes: FilingType[]\r\n\r\n\r\n constructor(private $scope: ng.IScope, private $q: ng.IQService, private calcbenchAPI: CalcbenchAPI, private calcbenchUser: ICalcbenchUser, private buildFootnote: BuildFootnote) { }\r\n\r\n private userModifiedQuery = false\r\n\r\n async $onInit() {\r\n this._gridOptions = {\r\n columnDefs: [\r\n {\r\n name: 'company_label',\r\n minWidth: 100,\r\n displayName: 'Company',\r\n visible: Boolean(this.showCompanyColumn),\r\n filterCellFiltered: true,\r\n sortingAlgorithm: (_entityIDa, _entityIDb, a, b, direction) => sortTextColumn(a.entity.entity_name, b.entity.entity_name, null, null, direction),\r\n cellClass: 'companyCell',\r\n includeInExcel: false\r\n },\r\n {\r\n name: 'filing_date',\r\n displayName: 'Filing Date',\r\n cellFilter: 'formatDateObject:\"%Y-%m-%d\"',\r\n minWidth: 100,\r\n width: 100,\r\n sortingAlgorithm: dateSort\r\n },\r\n {\r\n name: 'filing_type_label',\r\n width: '200',\r\n filterCellFiltered: true,\r\n displayName: 'Filing Type',\r\n cellTemplate: `
\r\n {{COL_FIELD}}\r\n \r\n \r\n
`,\r\n headerTooltip: 'Standardized filing type as assigned by Calcbench'\r\n },\r\n {\r\n name: 'period_end_date',\r\n displayName: 'Period End',\r\n cellFilter: 'formatDateObject:\"%Y-%m-%d\"',\r\n width: 125,\r\n sortingAlgorithm: dateSort\r\n },\r\n {\r\n name: 'fiscal_year',\r\n displayName: 'Fiscal Year',\r\n width: 90\r\n },\r\n {\r\n name: 'fiscal_period_string',\r\n displayName: 'Fiscal Period',\r\n width: 90\r\n },\r\n {\r\n name: 'disclosures',\r\n cellTemplate: require('./disclosureCell.tpl.html'),\r\n visible: this.calcbenchUser.isPremiumUser,\r\n displayName: 'Disclosures',\r\n enableFiltering: false,\r\n width: 100\r\n },\r\n {\r\n name: 'sec_html_url',\r\n cellTemplate: `
\r\n sec.gov\r\n wire\r\n
`,\r\n displayName: 'SEC Link',\r\n enableFiltering: false,\r\n width: 100\r\n },\r\n {\r\n name: 'page_links',\r\n cellTemplate: `
\r\n Link 1 \r\n Link 2 \r\n Link 3 \r\n
`,\r\n displayName: 'Links',\r\n enableFiltering: false,\r\n width: 175,\r\n includeInExcel: false\r\n },\r\n {\r\n name: 'associated_filings',\r\n cellTemplate: `
\r\n Earnings\r\n | \r\n Proxy\r\n
`,\r\n displayName: 'Associated Filings',\r\n enableFiltering: false,\r\n width: 175,\r\n visible: this.calcbenchUser.isPremiumUser, // Not using this since we added the earnings releases to the list. akittredge June 2017\r\n includeInExcel: false\r\n },\r\n {\r\n name: 'associated_earnings_press_release_SEC_URL',\r\n cellTemplate: '',\r\n displayName: 'Earnings Press Release',\r\n enableFiltering: false,\r\n width: 175,\r\n visible: false // Not using this since we added the earnings releases to the list. akittredge June 2017\r\n },\r\n {\r\n name: 'associated_proxy_SEC_URL',\r\n cellTemplate: '',\r\n displayName: 'Proxy',\r\n enableFiltering: false,\r\n width: 100,\r\n visible: false // Not using this since we added the earnings releases to the list. akittredge June 2017\r\n },\r\n {\r\n name: 'calcbench_finished_load',\r\n displayName: 'Calcbench Published',\r\n cellFilter: 'formatDateObject:\"%Y-%m-%d %H:%M:%S\"',\r\n minWidth: 150,\r\n width: 150,\r\n sortingAlgorithm: dateSort\r\n },\r\n {\r\n name: 'has_standardized_data',\r\n displayName: 'Standardized Data',\r\n cellTemplate: `
\r\n \r\n \r\n
`\r\n }\r\n ] as IColumnDef[],\r\n enableFiltering: true,\r\n appScopeProvider: this,\r\n data: [],\r\n onRegisterApi: gridApi => {\r\n this.gridApi = gridApi\r\n }\r\n };\r\n await this.peerGroupChannel.doneWithInitialSetup\r\n await this.periodChannel\r\n this.peerGroupChannel.onPeerGroupChange(() => {\r\n if (!this.userModifiedQuery && this.peerGroup.isSingleCompany) {\r\n this.periodParams.rangeOption = RangeOption.ALL_HISTORY\r\n this.periodChannel.periodChanged()\r\n } else {\r\n this.getFilings()\r\n }\r\n this.userModifiedQuery = true\r\n })\r\n\r\n this.periodChannel.onPeriodChange(this.$scope, () => {\r\n this.userModifiedQuery = true\r\n this.getFilings()\r\n }, PEER_GROUP_CHANGED_PERIOD)\r\n\r\n this.selectedFilingTypes = await this.filingsSelectedBus?.doneWithInitialSetup\r\n\r\n if (this.peerGroup.groupSelected) {\r\n await this.getFilings()\r\n }\r\n\r\n this.filingsSelectedBus?.addListener(filingTypes => {\r\n this.selectedFilingTypes = filingTypes\r\n this.getFilings()\r\n })\r\n }\r\n\r\n public async downloadStandardizedData(filingID: number) {\r\n if (!this.calcbenchUser.checkPermissions(PermissionLevel.Premium, false)) {\r\n return;\r\n }\r\n const data = await this.calcbenchAPI.mappedData(\r\n {\r\n pointInTime: true,\r\n pointInTimeV2: true,\r\n includePreliminary: true,\r\n allMetrics: true\r\n },\r\n {},\r\n { filingID }\r\n ,\r\n \"text/csv\"\r\n )\r\n downloadjs((data.data), \"calcbench_data.csv\");\r\n }\r\n\r\n\r\n private queryCanceller: angular.IDeferred\r\n\r\n /**\r\n * Get the filings. Set gridOptions.data.\r\n * @returns\r\n * */\r\n private async getFilings() {\r\n this.rows.length = 0;\r\n if (this.peerGroup.wholeUniverse && this.periodParams.rangeOption === ALL_HISTORY && !(this.selectedFilingTypes?.length > 0)) {\r\n return alert(\"Select a peer group or a date range.\");\r\n } if (this.peerGroup.isEmpty && this.periodParams.rangeOption === DATE_RANGE) {\r\n return null\r\n }\r\n this.queryCanceller?.resolve()\r\n\r\n this.queryCanceller = this.$q.defer();\r\n let filings: Filing[]\r\n try {\r\n filings = await this.calcbenchAPI.getFilings(\r\n this.peerGroup.getAPIQueryParams(),\r\n true,\r\n true,\r\n this.periodParams.getAPIParams(),\r\n false,\r\n this.queryCanceller.promise,\r\n null,\r\n this.selectedFilingTypes)\r\n } catch (e) {\r\n if (isHTTPResponse(e) && e.xhrStatus !== 'abort') {\r\n alert(e.data)\r\n }\r\n this.gridOptions.data = []\r\n } finally {\r\n this.queryCanceller = null\r\n }\r\n if (filings) {\r\n this.gridOptions.data = filings.sort((a, b) => b.sortMilliseconds - a.sortMilliseconds);\r\n }\r\n }\r\n\r\n public displayFilingDocument(filing: Filing) {\r\n const documentData = {\r\n sec_filing_id: filing.calcbench_id,\r\n page_url: filing.sec_html_url,\r\n blob_id: filing.calcbench_id.toString(), // the blob_id logic is strange\r\n ticker: filing.ticker,\r\n entity_name: filing.entity_name\r\n } as TextFootnote\r\n const apiParams = {} as IDisclosureAPIParams\r\n const periodParams = {} as PeriodParams\r\n const peerGroupParams = {} as ICompanyAPIParams\r\n const footnoteQueryParams = {} as FootnoteQueryParams\r\n const document = this.buildFootnote(FootnoteType.SingleCompany, documentData, new FootnoteList(), apiParams, periodParams, peerGroupParams, footnoteQueryParams)\r\n document.displayInModal()\r\n }\r\n\r\n\r\n public exportExcel() {\r\n const [workbook, worksheet] = buildWorkbookWithSheet('Filings');\r\n addCalcbenchHeader(worksheet, 'Filings')\r\n const columns = [\r\n { key: 'filing_id', header: 'Filing ID' },\r\n { key: 'entity_name', header: 'Company' },\r\n { key: 'ticker', header: 'Ticker' },\r\n { key: 'CIK', header: 'CIK' }\r\n ].concat(this.gridOptions.columnDefs.filter(c => c.visible !== false).filter(c => (c as any).includeInExcel !== false)\r\n .map(column => ({\r\n key: column.name,\r\n header: `${column.displayName || column.name}`,\r\n })))\r\n worksheet.getRow(5).values = columns.map(c => c.header)\r\n worksheet.getRow(5).font = { bold: true }\r\n worksheet.columns = columns.map(c => ({ key: c.key }))\r\n const visibleRows = this.gridApi.core.getVisibleRows()\r\n let numberOfHyperLinksWritten = 0\r\n visibleRows.forEach(({ entity }: { entity: IFilingTableRow }) => {\r\n const excelRow = {\r\n ...entity,\r\n disclosures: null,\r\n fiscal_period_string: null,\r\n filing_type_label: entity.filing_type_label\r\n }\r\n excelRow.fiscal_period_string = entity.fiscal_period\r\n if (numberOfHyperLinksWritten < MaxNumberHyperlinks) {\r\n let disclosureLink: CellHyperlinkValue\r\n if (entity.is_xbrl) {\r\n disclosureLink = {\r\n text: 'Disclosure',\r\n hyperlink: `https://www.calcbench.com/footnote?accid=${entity.calcbench_id}` // .slice(0, MAX_EXCEL_URL_LENGTH)\r\n }\r\n } else if (entity.filing_type === FilingType.commentLetter) {\r\n disclosureLink = {\r\n text: 'Comment Letter Chain',\r\n hyperlink: `https://www.calcbench.com/footnote/${entity.ticker}?allhistory=true&dtype=310` // .slice(0, MAX_EXCEL_URL_LENGTH)\r\n }\r\n }\r\n excelRow.disclosures = disclosureLink\r\n numberOfHyperLinksWritten++;\r\n }\r\n worksheet.addRow(excelRow)\r\n })\r\n saveWorkbook(workbook, 'Calcbench Filings.xlsx')\r\n }\r\n}\r\n\r\n\r\n\r\ncalcbenchApp.component('filingsTable', {\r\n controller: FilingsTable,\r\n template: require('./filingsTable.tpl.html'),\r\n bindings: {\r\n includeNonXbrl: '=',\r\n fillParent: '=',\r\n peerGroup: '=',\r\n periodParams: '=',\r\n peerGroupChannel: '=',\r\n periodChannel: '=',\r\n showCompanyColumn: '=',\r\n filingsSelectedBus: '='\r\n }\r\n})","import { SingleCompanyFootnote } from \"./footnoteTypes/SingleCompanyFootnote\"\r\n\r\n\r\nexport class DocumentGroup {\r\n public containsSelectedFootnote: boolean\r\n\r\n constructor(public title: string,\r\n public documents: SingleCompanyFootnote[] = [],\r\n public isXBRL: boolean = false) {\r\n documents.forEach(d => d.singleCompanySection = this)\r\n }\r\n}\r\n","import _ from \"lodash\"\r\nimport { DocumentGroup } from \"./DocumentGroup\"\r\nimport { SingleCompanyFootnote } from \"./footnoteTypes/SingleCompanyFootnote\"\r\n\r\n\r\nexport class GroupedDocuments extends DocumentGroup {\r\n private groups\r\n\r\n constructor(public title: string,\r\n public documents: SingleCompanyFootnote[] = [],\r\n public isXBRL: boolean = false) {\r\n super(title, documents, isXBRL)\r\n this.groups = _.groupBy(this.documents, d => d.groupByKey)\r\n }\r\n\r\n public get subGroups() {\r\n return this.groups\r\n }\r\n}\r\n","import angular from \"angular\";\r\nimport { AngularAsideService, IAngularAside } from \"../disclosureTraceTable\";\r\n\r\nNonXBRLFactAside.$inject = ['$aside', '$http'];\r\n\r\n/**\r\n * Popup that appears when you hover over a Non-XBRL point in MD&A press release, etc.\r\n * @param $aside\r\n * @param $http\r\n * @returns\r\n */\r\nexport function NonXBRLFactAside($aside: AngularAsideService, $http: ng.IHttpService) {\r\n let nonXBRLAside: IAngularAside;\r\n return async (factID: number, inDisclosureViewer: boolean) => {\r\n nonXBRLAside?.close();\r\n const response = await $http({\r\n url: '/api/tagInfoNonXBRL',\r\n method: 'GET',\r\n params: { fact_id: factID },\r\n });\r\n nonXBRLAside = $aside.open({\r\n title: 'Non XBRL Fact Details',\r\n placement: 'bottom',\r\n controllerAs: '$ctrl',\r\n template: require('./nonXBRLFactAside.tpl.html'),\r\n controller() {\r\n const vm = this;\r\n vm.$onInit = $onInit;\r\n function $onInit() {\r\n vm.data = response.data;\r\n vm.data.excelFormula = `=CalcbenchNonXBRLFactID(${factID})`;\r\n }\r\n },\r\n windowTopClass: inDisclosureViewer ? 'clickThroughBackdrop' : '',\r\n backdrop: !inDisclosureViewer,\r\n });\r\n return nonXBRLAside;\r\n };\r\n}\r\n\r\n\r\nangular.module('calcbenchApp').factory('NonXBRLFactAside', NonXBRLFactAside)","import { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { footnotePageStateURLKey } from \"./disclosurePageController\";\r\n\r\n/**\r\n * base class for the disclosure list vs table states\r\n */\r\nexport abstract class DisclosurePageState {\r\n static _URLstate: string;\r\n\r\n abstract tabIndex: number;\r\n\r\n constructor(private $location: angular.ILocationService, protected periodParams: PeriodParams) {\r\n\r\n }\r\n\r\n get URLstate(): string {\r\n return (this.constructor)._URLstate;\r\n }\r\n\r\n writeToURL(): void {\r\n this.$location.search(footnotePageStateURLKey, this.URLstate);\r\n }\r\n\r\n abstract activate(): void\r\n}\r\n\r\n/**\r\n * Looking at the disclosure list\r\n */\r\nexport class ListState extends DisclosurePageState {\r\n activate(): void {\r\n this.periodParams.showAllHistoryOption = this.periodParams.rangeOption === RangeOption.ALL_HISTORY;\r\n }\r\n\r\n static _URLstate: string = 'list';\r\n\r\n tabIndex = 0;\r\n}\r\n\r\n/**\r\n * The table of disclosures.\r\n */\r\nexport class TableState extends DisclosurePageState {\r\n activate(): void {\r\n this.periodParams.showAllHistoryOption = true;\r\n }\r\n\r\n static _URLstate = 'table';\r\n\r\n tabIndex = 1;\r\n}","import angular, { ISCEService } from 'angular';\r\nimport { Diff } from '../footnoteTypes/Diff';\r\nimport './diff.scss'\r\n\r\n\r\nclass DiffDisplay implements ng.IController {\r\n static $inject = ['$sce']\r\n\r\n // Set in template\r\n public diff: Diff\r\n\r\n public content: string\r\n\r\n constructor(private $sce: ISCEService) { }\r\n\r\n async $onInit() {\r\n const content = await this.diff.getContents();\r\n this.content = this.$sce.trustAsHtml((content).blobs[0]);\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('diffDisplay',\r\n {\r\n template: require('./diff.tpl.html'),\r\n bindings: {\r\n 'diff': '='\r\n },\r\n controller: DiffDisplay\r\n }\r\n)\r\n\r\n","import { RemoteFunctions } from \"./RemoteFunctions\";\r\n\r\n/**\r\n * \r\n * Messages the iframe sends to the disclosure page controller\r\n */\r\nexport class IFrameMessageData {\r\n referenceFactId?: any;\r\n\r\n networkID?: number;\r\n\r\n accessionID?: number;\r\n\r\n URL?: string;\r\n\r\n factID?: number;\r\n\r\n tableHTML?: string;\r\n\r\n /**\r\n * put formulas for the add-in in the downloaded sheet.\r\n */\r\n exportFormulas?: boolean\r\n\r\n remoteFunctionName: RemoteFunctions\r\n}\r\n","/* eslint-disable no-empty-function */\r\nimport * as angular from 'angular';\r\nimport ng from 'angular';\r\nimport { CalcbenchAPI } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport { FootnoteQueryChannel } from './footnoteQueryChannel';\r\nimport { FootnoteList } from './footnoteList';\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance';\r\nimport { FootnoteQueryParams } from './footnoteQueryParameters';\r\nimport { DisplayedTextDocuments } from './displayedTextDocumentsFactory';\r\nimport { BuildFootnote, DocumentIdentifierScheme } from './footnoteFactory';\r\nimport './gridView/documentGridView';\r\nimport { PeriodParams } from '../shared/periods/periodParams';\r\nimport { ICalcbenchUser } from '../shared/calcbenchUser/CalcbenchUser';\r\nimport './disclosurePage.scss';\r\nimport './search/footnoteSearch';\r\nimport { ALL_HISTORY, SINGLE_PERIOD } from '../shared/periods/rangeOptions';\r\nimport { PeriodChannel } from '../shared/periods/PeriodChannel';\r\nimport { BlockTextTagCount } from '../shared/calcbenchAPI/BlockTextTagCount';\r\nimport { DisclosurePageState, ListState, TableState } from './PageState';\r\nimport { PeerGroupChannel } from '../shared/peerGroup/peerGroupChannel';\r\n\r\n\r\nexport const footnotePageStateURLKey = 'fp_state';\r\n\r\n/**\r\n * Controls the disclosure page, also used by the whitelabel disclosure page.\r\n * \r\n * \r\n * */\r\nexport class DisclosurePageController implements ng.IController {\r\n /**\r\n * list vs table state\r\n * \r\n * Are we in list or table view.\r\n */\r\n state: DisclosurePageState;\r\n\r\n /**\r\n * disclosure list state instance\r\n */\r\n private listState: ListState;\r\n\r\n /**\r\n * disclosure table state instance\r\n */\r\n private tableState: TableState;\r\n\r\n footnoteQueryChannel: FootnoteQueryChannel;\r\n\r\n /**\r\n * used in the template\r\n */\r\n public searchParameters: FootnoteQueryParams;\r\n\r\n /**\r\n * The disclosure(s) the user is viewing.\r\n */\r\n public displayedDocuments: DisplayedTextDocuments;\r\n\r\n accession: number;\r\n\r\n public gridViewVisible: boolean;\r\n\r\n private gotTextBlockCountsAlready: boolean;\r\n\r\n /**\r\n * Show the search menu.\r\n */\r\n public showSearchMenu: boolean;\r\n\r\n\r\n /**\r\n * A document in the list has been selected do not show the start text anymore\r\n */\r\n public aDocumentHasBeenSelected: boolean;\r\n\r\n private tagSearchAutoCompleteSuggestions: BlockTextTagCount[] = [];\r\n\r\n private policyTagSearchAutoCompleteSuggestions: BlockTextTagCount[] = [];\r\n\r\n /**\r\n * Set on the template. This is set when request a specific non-XBRL disclosure. Like a proxy\r\n *\r\n * I do not think this works anymore, akittredge September 2022\r\n * */\r\n public blobIdentifier: string;\r\n\r\n /**\r\n * Set on the template\r\n * */\r\n public numericFactIdentifier: string;\r\n\r\n public whiteLabelToken: string;\r\n\r\n static $inject = [\r\n '$scope',\r\n '$q',\r\n '$location',\r\n '$http',\r\n 'PeriodParams',\r\n 'PeriodChannel',\r\n 'DisplayedTextDocuments',\r\n 'PeerGroup',\r\n 'PeerGroupChannel',\r\n 'calcbenchAPI',\r\n 'FootnoteFactory',\r\n 'FootnoteQueryParamsFactory',\r\n 'FootnoteQueryChannelFactory',\r\n 'CalcbenchUser',\r\n ];\r\n\r\n /**\r\n * The list of disclosures on the left.\r\n * \r\n * Used in the template.\r\n */\r\n public footnoteListFootnotes: FootnoteList;\r\n\r\n /**\r\n * @param $scope\r\n * @param $q\r\n * @param $location\r\n * @param $http\r\n * @param queryChannel\r\n * @param periodParams\r\n * @param periodChannel\r\n * @param displayedTextDocuments\r\n * @param peerGroup\r\n * @param peerGroupChannel\r\n * @param calcbenchAPI\r\n * @param footnoteFactory\r\n * @param footnoteQueryParamsFactory\r\n * @param footnoteQueryChannelFactory\r\n * @param calcbenchUser\r\n */\r\n constructor(\r\n private $scope: ng.IScope,\r\n private $q: ng.IQService,\r\n private $location: ng.ILocationService,\r\n private $http: angular.IHttpService,\r\n public periodParams: PeriodParams,\r\n public periodChannel: PeriodChannel,\r\n private displayedTextDocuments: () => DisplayedTextDocuments,\r\n public peerGroup: PeerGroupInstance,\r\n public peerGroupChannel: PeerGroupChannel,\r\n private calcbenchAPI: CalcbenchAPI,\r\n private footnoteFactory: BuildFootnote,\r\n private footnoteQueryParamsFactory: () => FootnoteQueryParams,\r\n private footnoteQueryChannelFactory: () => FootnoteQueryChannel,\r\n private calcbenchUser: ICalcbenchUser,\r\n ) { }\r\n\r\n /**\r\n * The logic to initialize the disclosure page\r\n * */\r\n async $onInit() {\r\n\r\n if (this.whiteLabelToken) {\r\n (window as any).cbtoken = this.whiteLabelToken;\r\n }\r\n\r\n const { periodParams } = this;\r\n this.footnoteQueryChannel = this.footnoteQueryChannelFactory();\r\n this.searchParameters = this.footnoteQueryParamsFactory();\r\n\r\n this.displayedDocuments = this.displayedTextDocuments();\r\n this.footnoteListFootnotes = new FootnoteList(\r\n this.peerGroup,\r\n this.$q,\r\n this.searchParameters,\r\n periodParams,\r\n this.calcbenchAPI,\r\n this.footnoteQueryChannel,\r\n this.footnoteFactory,\r\n this.displayedDocuments,\r\n this.calcbenchUser,\r\n );\r\n\r\n periodParams.rangeOption = SINGLE_PERIOD;\r\n periodParams.showAllHistoryOption = false;\r\n periodParams.showDateRangeOption = true;\r\n periodParams.readFromURL();\r\n this.periodChannel.onPeriodChange(this.$scope, periodParams.writeToURL);\r\n const footnoteQueryParams = this.searchParameters;\r\n this.getStateFromURL();\r\n await this.setSearchState();\r\n this.footnoteQueryChannel.doneWithInitialSetupDefered.resolve(true);\r\n\r\n this.footnoteQueryChannel.onParamsChanged(() => footnoteQueryParams.writeToURL());\r\n this.footnoteQueryChannel.onDocumentSelected((f) => footnoteQueryParams.setDisclosureID(f));\r\n this.peerGroupChannel.onPeerGroupChange(this.peerGroup.writeToURL);\r\n this.footnoteQueryChannel.onParamsChanged(() => {\r\n periodParams.showAllHistoryOption = footnoteQueryParams.allHistoryAllowed();\r\n });\r\n this.periodChannel.onPeriodChange(this.$scope, () => {\r\n periodParams.showPeriodTypeOptions = periodParams.rangeOption === ALL_HISTORY;\r\n });\r\n this.peerGroupChannel.onPeerGroupChange(() => this.setSingleCompanyAccessions());\r\n this.footnoteQueryChannel.onDocumentSelected(() => {\r\n this.aDocumentHasBeenSelected = true;\r\n });\r\n\r\n await this.peerGroupChannel.doneWithInitialSetup;\r\n if (!this.peerGroup.groupSelected) {\r\n this.peerGroup.wholeUniverse = true;\r\n }\r\n\r\n this.peerGroupChannel.onPeerGroupChange(() => this.queryChangedResetStuff())\r\n this.periodChannel.onPeriodChange(this.$scope, () => this.queryChangedResetStuff())\r\n this.peerGroup.writeToURL();\r\n this.setSingleCompanyAccessions();\r\n\r\n this.footnoteQueryChannel.onParamsChanged((whatChanged) => {\r\n this.displayedDocuments.clear();\r\n this.footnoteListFootnotes.handleSearchChange(whatChanged);\r\n });\r\n this.showSearchMenu = true; // Don't show this from the get-go because it has code that needs to run after handlePeerGroupChange runs. akittredge, April 2017.\r\n this.$scope.$digest() // I think this is need because we are doing await in $ngOnit, added August 2024, akittredge\r\n }\r\n\r\n private queryChangedResetStuff() {\r\n // Reset stuff that was set on the server.\r\n this.searchParameters.accessionID = null;\r\n // this.searchParameters.BlobID = null;\r\n this.searchParameters.numericFactIdentifier = null;\r\n this.gridViewVisible = false; // Hide the gridView because it was run with an old query.\r\n this.displayedDocuments.clear();\r\n this.gotTextBlockCountsAlready = false;\r\n }\r\n\r\n /**\r\n * Setup the searchParameters from the URL and things passed in the template from .net\r\n * */\r\n private async setSearchState() {\r\n const footnoteQueryParams = this.searchParameters;\r\n footnoteQueryParams.readFromURL();\r\n /*\r\n * numericFactIdentifier is specified in Open In Disclosure Viewer on the trace pane\r\n */\r\n if (footnoteQueryParams.numericFactIdentifier) {\r\n const factQueryParams = (await this.calcbenchAPI.getNetworkIDForFactID(footnoteQueryParams.numericFactIdentifier)).data;\r\n footnoteQueryParams.FactID = factQueryParams.FactID;\r\n this.periodParams.accessionID = footnoteQueryParams.accessionID = factQueryParams.accessionID;\r\n footnoteQueryParams.NetworkID = factQueryParams.NetworkID;\r\n footnoteQueryParams.selectedDisclosure = `${DocumentIdentifierScheme.Network}-${factQueryParams.NetworkID}`;\r\n }\r\n\r\n if (this.blobIdentifier) {\r\n this.searchParameters.BlobID = this.blobIdentifier;\r\n if (parseInt(this.numericFactIdentifier)) {\r\n footnoteQueryParams.numericFactIdentifier = parseInt(this.numericFactIdentifier);\r\n footnoteQueryParams.selectedDisclosure = `${DocumentIdentifierScheme.Network}-${this.blobIdentifier}`;\r\n footnoteQueryParams.clearURLProperty('fact_id');\r\n } else if (parseInt(this.blobIdentifier)) {\r\n footnoteQueryParams.selectedDisclosure = `${DocumentIdentifierScheme.Blob}-${this.blobIdentifier}`;\r\n footnoteQueryParams.clearURLProperty('sec_filing_id');\r\n }\r\n } else if (this.accession) {\r\n footnoteQueryParams.accessionID = this.accession;\r\n footnoteQueryParams.clearURLProperty('accid');\r\n }\r\n }\r\n\r\n /**\r\n * Set list vs table state.\r\n * Called from the template\r\n * @param state\r\n */\r\n public tabSelected(state: string) {\r\n switch (state) {\r\n case this.listState.URLstate:\r\n this.state = this.listState;\r\n this.periodParams.showPeriodTypeOptions = false;\r\n break;\r\n case this.tableState.URLstate:\r\n this.state = this.tableState;\r\n break;\r\n }\r\n this.state.activate();\r\n this.state.writeToURL();\r\n }\r\n\r\n /**\r\n * Start with the list or the table visible\r\n * */\r\n private getStateFromURL(): void {\r\n this.listState = new ListState(this.$location, this.periodParams);\r\n this.tableState = new TableState(this.$location, this.periodParams);\r\n const URLstate = this.$location.search()[footnotePageStateURLKey] || this.listState.URLstate;\r\n this.tabSelected(URLstate);\r\n }\r\n\r\n public async getAutoCompleteSuggestions() {\r\n if (!this.gotTextBlockCountsAlready) {\r\n const response = await this.calcbenchAPI.blockTagCounts(\r\n {\r\n accessionID: this.searchParameters.accessionID,\r\n },\r\n this.peerGroup.getAPIQueryParams(),\r\n this.periodParams.getAPIParams(),\r\n );\r\n\r\n this.tagSearchAutoCompleteSuggestions = response;\r\n this.policyTagSearchAutoCompleteSuggestions = [];\r\n // now also fill policyTagSearchAutoCompleteSuggestions with items that end in Policy or PolicyTextBlock\r\n this.tagSearchAutoCompleteSuggestions.forEach((itm) => {\r\n const tag = itm.value.toLowerCase();\r\n if (tag.substr(tag.length - 6) === 'policy' || tag.substr(tag.length - 15) === 'policytextblock') {\r\n this.policyTagSearchAutoCompleteSuggestions.push(itm);\r\n }\r\n });\r\n this.policyTagSearchAutoCompleteSuggestions.sort((a, b) => {\r\n if (a.label < b.label) { return -1; }\r\n if (a.label > b.label) { return 1; }\r\n return 0;\r\n });\r\n this.gotTextBlockCountsAlready = true;\r\n }\r\n }\r\n\r\n public getTaggedBlockCounts = async () => {\r\n await this.getAutoCompleteSuggestions();\r\n return this.tagSearchAutoCompleteSuggestions;\r\n };\r\n\r\n public getPolicyBlockCounts = async () => {\r\n await this.getAutoCompleteSuggestions();\r\n return this.policyTagSearchAutoCompleteSuggestions;\r\n };\r\n\r\n private async setSingleCompanyAccessions() {\r\n if (this.peerGroup.companies.length === 1 && !this.peerGroup.wholeUniverse) {\r\n let filings = (await this.calcbenchAPI.getFilings(this.peerGroup.getAPIQueryParams(), true, true));\r\n filings = filings.filter((f) => f.fiscal_year && f.fiscal_period);\r\n filings = filings.sort((n2, n1) => n1.fiscal_period - n2.fiscal_period);\r\n filings = filings.sort((n2, n1) => n1.fiscal_year - n2.fiscal_year);\r\n const filings2 = [];\r\n if (filings?.length > 1) {\r\n let group = [];\r\n let lastkey = `${filings[0].fiscal_year}:${filings[0].fiscal_period}`;\r\n let groupHasXBRLfiling = false;\r\n for (let i = 1; i <= filings.length; i++) {\r\n // add to group\r\n group.push(filings[i - 1]);\r\n if (filings[i - 1].is_xbrl) groupHasXBRLfiling = true;\r\n\r\n let key = '';\r\n if (i < filings.length) {\r\n const fil = filings[i];\r\n key = `${fil.fiscal_year}:${fil.fiscal_period}`;\r\n }\r\n\r\n if (key !== lastkey) {\r\n // examine group\r\n if (groupHasXBRLfiling) {\r\n // remove nonxbrl filings\r\n group.forEach((element) => { if (element.is_xbrl) filings2.push(element); });\r\n } else if (group.length > 0) {\r\n // take first?\r\n filings2.push(group[0]);\r\n }\r\n\r\n groupHasXBRLfiling = false;\r\n group = [];\r\n lastkey = key;\r\n }\r\n }\r\n filings = filings2;\r\n }\r\n this.periodChannel.setAvailableAccessions(filings);\r\n\r\n this.periodParams.disableCalendarPeriod = true;\r\n this.periodParams.useFiscalPeriod = true;\r\n this.periodParams.showMostRecentPeriodOption = false; // 3-2020 no longer need for single co mode\r\n } else {\r\n this.periodChannel.setAvailableAccessions(null);\r\n this.periodParams.disableCalendarPeriod = false;\r\n this.periodParams.showMostRecentPeriodOption = false; // 3-2020 turning off in all cases - just isn't very useful\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\nangular.module('calcbenchApp')\r\n .component('disclosurePage', {\r\n controller: DisclosurePageController,\r\n bindings: {\r\n accession: '=',\r\n blobIdentifier: '=',\r\n numericFactIdentifier: '=',\r\n nonXbrlFactIdentifier: '=',\r\n disclosureType: '=',\r\n whiteLabelToken: '=',\r\n },\r\n template: require('./disclosurePage.tpl.html'),\r\n })\r\n\r\n\r\nexport type GetsPolicyBlockCounts = () => angular.IPromise\r\n","import './disclosureTraceTable.scss';\r\nimport * as angular from 'angular';\r\nimport * as _ from 'lodash';\r\nimport { getExcelAddInProxy } from '../shared/excelAddinProxy/calcbenchExcelAddInProxy';\r\nimport { URLParams } from '../dimensionalData/dimensionalData';\r\nimport { PeerGroupInstance } from '../shared/peerGroup/peerGroupInstance';\r\n\r\ninterface IMatch {\r\n qname_id_min: any;\r\n excelFormula: string;\r\n members: [];\r\n fiscal_period: any;\r\n fiscal_year: any;\r\n local_name: any;\r\n otherPageLinkCategories: any;\r\n}\r\n\r\ninterface ITagControllerArguments {\r\n textNetworkID: number;\r\n peerGroup: PeerGroupInstance;\r\n networkID: number;\r\n factID: number;\r\n accessionID: number;\r\n searchValue: string;\r\n ticker: string;\r\n entityID: number;\r\n}\r\n\r\nclass XBRLTagController implements angular.IController {\r\n static $inject = ['$scope', '$http', '$httpParamSerializer'];\r\n\r\n public get entityID() {\r\n return this.arguments.entityID;\r\n }\r\n\r\n public get ticker() {\r\n return this.arguments.ticker;\r\n }\r\n\r\n public get searchValue() {\r\n return this.arguments.searchValue;\r\n }\r\n\r\n public get accessionID() {\r\n return this.arguments.accessionID;\r\n }\r\n\r\n public get networkID() {\r\n return this.arguments.networkID;\r\n }\r\n\r\n public get factID() {\r\n return this.arguments.factID;\r\n }\r\n\r\n public get textNetworkID() {\r\n return this.arguments.textNetworkID;\r\n }\r\n\r\n public get peerGroup() {\r\n return this.arguments.peerGroup;\r\n }\r\n\r\n public doneLoading: boolean;\r\n\r\n public matches: IMatch[];\r\n\r\n public get arguments(): ITagControllerArguments {\r\n return ( this).resolve.variables;\r\n }\r\n\r\n constructor(private $scope: angular.IScope, private $http: angular.IHttpService, private $httpParamSerializer: ng.IHttpParamSerializer) { }\r\n\r\n async $onInit() {\r\n let url: string; let\r\n params: Object;\r\n if (this.searchValue) {\r\n url = '/query/getXBRLTagTableFuzzyValueSearch';\r\n params = {\r\n accid: this.accessionID, val: this.searchValue, networkid: this.networkID, eid: this.entityID,\r\n };\r\n } else {\r\n url = '/query/factTraceTable';\r\n params = { fact_id: this.factID, text_network_id: this.textNetworkID };\r\n }\r\n const matches = this.matches = (await this.$http({ url, method: 'GET', params })).data as IMatch[];\r\n this.doneLoading = true;\r\n matches.forEach((match) => {\r\n match.otherPageLinkCategories = [];\r\n [\r\n {\r\n category: 'face_points',\r\n title: 'Standardized Face Points',\r\n hrefTemplate: (dbfield) => `/multi?eid=${this.entityID}&dpo=${dbfield}`,\r\n },\r\n {\r\n category: 'footnote_points',\r\n title: 'Standardized Footnote Points',\r\n hrefTemplate: (dbfield) => `/multi?eid=${this.entityID}&dpo=${dbfield}`,\r\n },\r\n {\r\n category: 'breakout_points',\r\n title: 'Standardized Breakout Points',\r\n hrefTemplate: (dbfield) => {\r\n const urlParams = { ...URLParams(dbfield), ...this.peerGroup?.urlParams() };\r\n return `/breakout?${this.$httpParamSerializer(urlParams)}`;\r\n },\r\n },\r\n ].forEach((category) => {\r\n if (match[category.category]) {\r\n const otherPageLinks = [];\r\n match[category.category].forEach((point) => {\r\n point.href = category.hrefTemplate(point.dbfield);\r\n otherPageLinks.push(point);\r\n });\r\n match.otherPageLinkCategories.push({\r\n category: category.title,\r\n points: otherPageLinks,\r\n title: category.title,\r\n });\r\n }\r\n });\r\n match.excelFormula = `=CalcbenchXBRLTagFiscalPeriod(\"${match.local_name}\", \"${this.ticker}\", ${match.fiscal_year}, \"${match.fiscal_period}\" ${match.members.length > 0 ? `, \"${match.members.join(',')}\"` : ''})`;\r\n });\r\n }\r\n\r\n public tagHistory(match: IMatch) {\r\n this.$http.post('/query/taghistory', { eid: this.entityID, accid: this.accessionID, qnameid: match.qname_id_min }).then((result) => {\r\n $('#tagHistoryContainer').html(result.data.toString());\r\n $('.chartIpoint').unbind('click').click((event) => {\r\n const chartstr = $(event.target).attr('chart');\r\n const metric = $(event.target).attr('metric');\r\n const URL = `/query/chartpoint?chartstr=${encodeURIComponent(chartstr)}&metric=${encodeURIComponent(metric)}`;\r\n\r\n const $img = $('#chartImage');\r\n // set an event for the chart image load event...will be called after image loads\r\n $img.one('load', (event) => {\r\n const $cell = $(event.target);\r\n const off = $('#traceinfo').outerHeight() + 24;\r\n const $tble = $('#charttable');\r\n $tble.show();\r\n\r\n $tble.css({ left: '0px', bottom: `${off}px` });\r\n\r\n $('#cancelChartButton').unbind('click');\r\n $('#cancelChartButton').click((event) => {\r\n $('#charttable').hide();\r\n $cell.removeAttr('style');\r\n });\r\n });\r\n $img.attr('src', URL);\r\n return false;\r\n });\r\n });\r\n }\r\n\r\n public tagHistoryExcel(match) {\r\n const URL = `/query/taghistoryexcel/?eid=${this.entityID}&accid=${this.accessionID}&qnameid=${match.qname_id_min}`;\r\n window.open(URL, '_blank');\r\n }\r\n\r\n private addInProxy: ReturnType;\r\n\r\n public get calcbenchExcelAddInProxy() {\r\n if (this.addInProxy === undefined) {\r\n this.addInProxy = getExcelAddInProxy();\r\n }\r\n return this.addInProxy;\r\n }\r\n\r\n public hasDimensions() {\r\n return this.matches?.find((m) => m.members.length > 0);\r\n }\r\n\r\n /**\r\n * Need to do this because when multiple modals are open $scope.dismiss in the template does not work\r\n * */\r\n public closeModal() {\r\n (this.$scope.$parent as any).$dismiss();\r\n }\r\n}\r\n\r\nXBRLTagAside.$inject = ['$aside'];\r\n/**\r\n * The bottom slider with the details of the XBRL tag\r\n * @param $aside\r\n * @param $http\r\n */\r\nexport function XBRLTagAside($aside: AngularAsideService) {\r\n let openTable: IAngularAside;\r\n return (factID: number, entityID: number, accessionID: number, searchValue: string, networkID: number, ticker: string, peerGroup: PeerGroupInstance, textNetworkID?: number) => {\r\n openTable && openTable.close();\r\n const inDisclosureViewer = Boolean(getExcelAddInProxy());\r\n openTable = $aside.open({\r\n title: 'Trace Table',\r\n placement: 'bottom',\r\n component: 'xbrlTagController',\r\n windowTopClass: inDisclosureViewer ? 'clickThroughBackdrop' : '',\r\n backdrop: !inDisclosureViewer,\r\n resolve: {\r\n variables: () => {\r\n const args: ITagControllerArguments = {\r\n entityID,\r\n factID,\r\n accessionID,\r\n searchValue,\r\n networkID,\r\n ticker,\r\n peerGroup,\r\n textNetworkID,\r\n };\r\n return args;\r\n },\r\n },\r\n });\r\n return openTable;\r\n };\r\n}\r\n\r\nexport interface AngularAsideService {\r\n open(arg0: { title: string; placement: string; controllerAs?: string; template?: any; controller?: () => void; windowTopClass?: string; backdrop?: boolean; component?: string; resolve?: any }): IAngularAside;\r\n}\r\n\r\nexport interface IAngularAside {\r\n closed: Promise\r\n close: () => void;\r\n}\r\n\r\nangular.module('calcbenchApp').factory('XBRLTagAside', XBRLTagAside).component('xbrlTagController', {\r\n controller: XBRLTagController,\r\n bindings: {\r\n resolve: '<',\r\n },\r\n controllerAs: '$ctrl',\r\n template: require('./disclosureTraceTable.tpl.html'),\r\n});\r\n","import * as angular from 'angular';\r\nimport _ from 'lodash';\r\nimport { CalcbenchAPI } from '../shared/calcbenchAPI/calcbenchAPI';\r\nimport './diff/diff';\r\nimport { Diff } from './footnoteTypes/Diff';\r\nimport { Footnote } from './footnoteTypes/Footnote';\r\n\r\nangular.module('calcbenchApp').factory('DisplayedTextDocuments', DisplayedTextDocs);\r\n\r\ninterface TextDocumentColumnDef extends uiGrid.IColumnDef {\r\n document: Footnote\r\n}\r\n\r\ninterface IDocumentsGridOptions extends uiGrid.IGridOptions {\r\n columnDefs: TextDocumentColumnDef[]\r\n data: any[]\r\n}\r\n\r\n\r\n/**\r\n * The displayed disclosures. We display the disclosures in a uiGrid which is probably a bad idea.\r\n */\r\nexport class DisplayedTextDocuments extends Array {\r\n gridOptions: IDocumentsGridOptions;\r\n\r\n constructor(\r\n private $timeout: angular.ITimeoutService,\r\n private $q: angular.IQService,\r\n private calcbenchAPI: CalcbenchAPI,\r\n private $uibModal: angular.ui.bootstrap.IModalService,\r\n private $http: angular.IHttpService,\r\n items: Array = [],\r\n ) {\r\n super(...items);\r\n (Object).setPrototypeOf(this, Object.create(DisplayedTextDocuments.prototype));\r\n this.gridOptions = {\r\n data: [],\r\n columnDefs: [],\r\n };\r\n }\r\n\r\n setInitialDocument(doc: Footnote) {\r\n this.length = 0;\r\n this.push(doc);\r\n this.updateGridOptions();\r\n }\r\n\r\n setInitialDocuments(documents: Footnote[]) {\r\n this.length = 0;\r\n documents.map((d) => this.push(d));\r\n this.updateGridOptions();\r\n }\r\n\r\n updateGridOptions() {\r\n this.gridOptions.columnDefs.length = 0;\r\n this.gridOptions.data.length = 0;\r\n this.$timeout(() => { // Timeout so the grid realizes that we have changed the data.\r\n this.gridOptions.data[0] = {};\r\n this.forEach((doc) => {\r\n this.gridOptions.columnDefs.push({\r\n name: doc.getPeriodID(),\r\n cellTemplate: require('./documentCell.tpl.html'),\r\n width: '*',\r\n minWidth: 400,\r\n headerCellTemplate: require('./documentColumnHeader.tpl.html'),\r\n document: doc,\r\n });\r\n this.gridOptions.data[0][doc.getPeriodID()] = doc;\r\n });\r\n });\r\n }\r\n\r\n addPreviousPeriod(factID?: number) {\r\n return this[this.length - 1].getPreviousPeriodDocument(factID).then((doc) => this.addDocument(doc));\r\n }\r\n\r\n addDocument(doc: Footnote) {\r\n this.push(doc);\r\n this.updateGridOptions();\r\n }\r\n\r\n replaceDocument(newDoc: Footnote, origDocument: Footnote) {\r\n const idx = _.indexOf(this, origDocument);\r\n this[idx] = newDoc;\r\n this.updateGridOptions();\r\n }\r\n\r\n replaceDocuments(replacementDocuments) {\r\n Array.prototype.splice.apply(this, [0, replacementDocuments.length].concat(replacementDocuments));\r\n this.updateGridOptions();\r\n }\r\n\r\n clear() {\r\n this.length = 0;\r\n this.updateGridOptions();\r\n }\r\n\r\n diff() {\r\n const existingDocs = this.slice();\r\n this.length = 0;\r\n let lastDoc = existingDocs.shift();\r\n this.push(lastDoc);\r\n while (existingDocs.length > 0) {\r\n const nextDoc = existingDocs.shift();\r\n const diff = new Diff(lastDoc, nextDoc, null, this.$q, this.calcbenchAPI, this.$uibModal, this.$http);\r\n this.push(diff);\r\n this.push(nextDoc);\r\n lastDoc = nextDoc;\r\n }\r\n this.updateGridOptions();\r\n }\r\n}\r\n\r\nDisplayedTextDocs.$inject = ['$timeout', '$q', '$uibModal', '$http', 'calcbenchAPI'];\r\nfunction DisplayedTextDocs($timeout: angular.ITimeoutService, $q: angular.IQService, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService, calcbenchAPI: CalcbenchAPI) {\r\n return function () {\r\n return new DisplayedTextDocuments($timeout, $q, calcbenchAPI, $uibModal, $http);\r\n };\r\n}\r\n","import './diff/diff'\r\nimport angular from 'angular';\r\nimport { Footnote } from './footnoteTypes/Footnote';\r\n\r\n/**\r\n * document-modal component\r\n */\r\nclass DocumentModal implements ng.IController {\r\n public resolve: { document: Footnote }\r\n\r\n public get document() {\r\n return this.resolve.document\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp').component('documentModal', {\r\n template: require('./documentModal.tpl.html'),\r\n controller: DocumentModal,\r\n bindings: {\r\n resolve: '<'\r\n }\r\n})","import * as angular from \"angular\";\r\nimport { IModalService } from \"angular-ui-bootstrap\";\r\nimport { ITraceDisclosure } from '../trace/traceController'\r\nimport { CalcbenchAPI, ICompanyAPIParams, IDisclosureAPIParams } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { FootnoteQueryParams } from \"./footnoteQueryParameters\";\r\nimport { FootnoteList, ChangeFlag, } from \"./footnoteList\";\r\n\r\n\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport './documentModal';\r\nimport { TextFootnote } from \"../shared/calcbenchAPI/TextFootnote\";\r\nimport { RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { Footnote } from \"./footnoteTypes/Footnote\";\r\nimport { TagFootnote } from \"./footnoteTypes/TagFootnote\";\r\nimport { FootnoteTypeFootnote } from \"./footnoteTypes/FootnoteTypeFootnote\";\r\nimport { SingleCompanyFootnote } from \"./footnoteTypes/SingleCompanyFootnote\";\r\nimport { FullTextFootnote } from \"./footnoteTypes/FullTextFootnote\";\r\nimport { MissingDocument } from \"./footnoteTypes/MissingDocument\";\r\nimport { NonXBRLTable } from \"./footnoteTypes/NonXBRLTable\";\r\nimport { Table } from \"./footnoteTypes/Table\";\r\nimport { DocumentGridDocument } from \"./footnoteTypes/DocumentGridDocument\";\r\nimport { XBRLNumericTagTrace } from \"./footnoteTypes/XBRLNumericTagTrace\";\r\nimport { NormalizedBreakoutMetricTrace } from \"./footnoteTypes/NormalizedBreakoutMetricTrace\";\r\nimport { NormalizedFaceMetricTrace } from \"./footnoteTypes/NormalizedFaceMetricTrace\";\r\nimport { NormalizedFootnoteMetricTrace } from \"./footnoteTypes/NormalizedFootnoteMetricTrace\";\r\nimport { SingleCompanyTagFootnote } from \"./footnoteTypes/SingleCompanyTagFootnote\";\r\nimport { FootnoteType } from './footnoteTypes/FootnoteType';\r\n\r\nangular.module('calcbenchApp').service('FootnoteFactory', FootnoteFactory);\r\n\r\n\r\n\r\n/**\r\n * Used to uniquely identify documents\r\n * */\r\nexport enum DocumentIdentifierScheme {\r\n Network = 'NetworkID',\r\n Blob = 'BlobID',\r\n Fact = 'FactID',\r\n}\r\n\r\nexport enum DisplayAs {\r\n IFrame = 'DISPLAYASIFRAME',\r\n Diff = 'DISPLAYASDIFF',\r\n Table = 'DISPLAYASASREPORTEDSTATEMENT'\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport function buildFootnote(searchingBy: ChangeFlag,\r\n APIData: TextFootnote | ITraceDisclosure,\r\n otherFootnotes: FootnoteList,\r\n pageQueryParameters: IDisclosureAPIParams,\r\n periodParams: PeriodParams,\r\n peerGroupParams: ICompanyAPIParams,\r\n footnoteQueryParams: FootnoteQueryParams,\r\n $http: angular.IHttpService,\r\n $q: angular.IQService,\r\n $uibModal: IModalService,\r\n calcbenchAPI: CalcbenchAPI): Footnote {\r\n let footnote: Footnote\r\n const showPeriodAndYearInAnchorText = pageQueryParameters.allHistory || (periodParams?.rangeOption === RangeOption.DATE_RANGE)\r\n switch (searchingBy) {\r\n case TagFootnote.searchType: {\r\n footnote = new TagFootnote(APIData, otherFootnotes, showPeriodAndYearInAnchorText, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n footnote.localName = pageQueryParameters.footnoteTag;\r\n break\r\n } case FullTextFootnote.searchType: {\r\n footnote = new FullTextFootnote(APIData, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http, pageQueryParameters)\r\n break\r\n } case FootnoteTypeFootnote.searchType: {\r\n footnote = new FootnoteTypeFootnote(APIData, otherFootnotes, showPeriodAndYearInAnchorText, FootnoteType.FootnoteType, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case SingleCompanyFootnote.searchType: {\r\n // The single company repsonse now includes the accounting policies which we get by local_name. The single company request should happen in a different path. akittredge, September 2017.\r\n if (APIData.local_name) {\r\n footnote = new SingleCompanyTagFootnote(APIData, otherFootnotes, pageQueryParameters.allHistory, FootnoteType.SingleCompany, $q, calcbenchAPI, $uibModal, $http)\r\n } else if (APIData.isFaceStatement) {\r\n footnote = new Table(APIData, otherFootnotes, FootnoteType.SingleCompany, $q, calcbenchAPI, $uibModal, $http)\r\n } else {\r\n const numericalFactIdentifier = footnoteQueryParams.numericFactIdentifier || footnoteQueryParams.nonXBRLFactIdentifier || APIData.numerical_fact_id;\r\n footnote = new SingleCompanyFootnote(APIData, otherFootnotes, numericalFactIdentifier, FootnoteType.SingleCompany, $q, calcbenchAPI, $uibModal, $http, showPeriodAndYearInAnchorText)\r\n }\r\n break\r\n } case FootnoteType.NormalizedFootnoteMetric: {\r\n footnote = new NormalizedFootnoteMetricTrace(APIData as ITraceDisclosure, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case NormalizedFaceMetricTrace.searchType: {\r\n footnote = new NormalizedFaceMetricTrace(APIData as ITraceDisclosure, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case FootnoteType.NormalizedBreakoutMetric: {\r\n footnote = new NormalizedBreakoutMetricTrace(APIData as ITraceDisclosure, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case FootnoteType.XBRLNumericTag: {\r\n footnote = new XBRLNumericTagTrace(APIData as ITraceDisclosure, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case MissingDocument.searchType: {\r\n footnote = new MissingDocument(APIData, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http, peerGroupParams, periodParams)\r\n footnote.searchType = searchingBy;\r\n break\r\n } case DocumentGridDocument.searchType: {\r\n footnote = new DocumentGridDocument(APIData, otherFootnotes, pageQueryParameters.allHistory, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case FootnoteType.Trace: {\r\n footnote = new SingleCompanyFootnote(APIData, otherFootnotes, APIData.numerical_fact_id, searchingBy, $q, calcbenchAPI, $uibModal, $http, showPeriodAndYearInAnchorText)\r\n break\r\n } case Table.searchType: {\r\n footnote = new Table(APIData, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n } case NonXBRLTable.searchType: {\r\n footnote = new NonXBRLTable(APIData as ITraceDisclosure, otherFootnotes, searchingBy, $q, calcbenchAPI, $uibModal, $http)\r\n break\r\n }\r\n case DocumentIdentifierScheme.Blob:\r\n case DocumentIdentifierScheme.Network:\r\n case DocumentIdentifierScheme.Fact: {\r\n if (footnoteQueryParams.fullTextQuery) {\r\n footnote = new FullTextFootnote(APIData, otherFootnotes, FullTextFootnote.searchType, $q, calcbenchAPI, $uibModal, $http, pageQueryParameters)\r\n } else {\r\n footnote = new FootnoteTypeFootnote(APIData, otherFootnotes, showPeriodAndYearInAnchorText, FootnoteType.FootnoteType, $q, calcbenchAPI, $uibModal, $http)\r\n }\r\n break\r\n }\r\n }\r\n\r\n footnote.queryParams = pageQueryParameters;\r\n footnote.periodParams = periodParams;\r\n footnote.footnoteQueryParams = footnoteQueryParams;\r\n return footnote;\r\n}\r\n\r\nexport type BuildFootnote = (\r\n searchingBy: ChangeFlag,\r\n APIdata: TextFootnote,\r\n otherFootnotes: FootnoteList | [],\r\n pageQueryParams: IDisclosureAPIParams,\r\n periodParams?: PeriodParams,\r\n peerGroupParams?: ICompanyAPIParams,\r\n footnoteQueryParams?: FootnoteQueryParams) => Footnote;\r\n\r\nFootnoteFactory.$inject = ['$http', '$q', '$uibModal', 'calcbenchAPI'];\r\nfunction FootnoteFactory($http: angular.IHttpService, $q: angular.IQService, $uibModal: angular.ui.bootstrap.IModalService, calcbenchAPI: CalcbenchAPI): BuildFootnote {\r\n return (searchingBy: ChangeFlag,\r\n APIdata: TextFootnote,\r\n otherFootnotes: FootnoteList,\r\n pageQueryParams: IDisclosureAPIParams,\r\n periodParams: PeriodParams,\r\n peerGroupParams: ICompanyAPIParams,\r\n footnoteQueryParams: FootnoteQueryParams) => buildFootnote(searchingBy, APIdata, otherFootnotes, pageQueryParams, periodParams, peerGroupParams, footnoteQueryParams, $http, $q, $uibModal, calcbenchAPI)\r\n}\r\n","import * as angular from \"angular\";\r\nimport _ from \"lodash\"\r\nimport './footnoteList.scss';\r\nimport { FootnoteQueryParams } from \"./footnoteQueryParameters\";\r\nimport { BuildFootnote, DocumentIdentifierScheme, } from \"./footnoteFactory\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { CalcbenchAPI, FootnoteTypeTitle, IDisclosureAPIParams, IDisclosureResponse, isHTTPResponse } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { FootnoteQueryChannel } from \"./footnoteQueryChannel\";\r\nimport { getExcelAddInProxy } from \"../shared/excelAddinProxy/calcbenchExcelAddInProxy\";\r\nimport { DisplayedTextDocuments } from \"./displayedTextDocumentsFactory\";\r\nimport { PeriodParams } from \"../shared/periods/periodParams\";\r\nimport { ICalcbenchUser } from \"../shared/calcbenchUser/CalcbenchUser\";\r\nimport { TextFootnote } from \"../shared/calcbenchAPI/TextFootnote\";\r\nimport { ALL_HISTORY, RangeOption } from \"../shared/periods/rangeOptions\";\r\nimport { DocumentGroup } from \"./DocumentGroup\";\r\nimport { GroupedDocuments } from \"./GroupedDocuments\";\r\nimport { isInstanceOfHasSingleCompanySection } from \"./footnoteTypes/HasSingleCompanySection\";\r\nimport { Footnote } from \"./footnoteTypes/Footnote\";\r\nimport { FootnoteType } from \"./footnoteTypes/FootnoteType\";\r\nimport { SingleCompanyFootnote } from \"./footnoteTypes/SingleCompanyFootnote\";\r\n\r\n/**\r\n * This seems to be the largest number the full text search can handle.\r\n * */\r\nconst MAX_REQUEST_SIZE = 3200\r\n\r\nexport enum ChangeFlags {\r\n ClearFullTextQuery = 'clearFullTextQuery',\r\n ClearMetricSearchQuery = 'clearMetricSearchQuery',\r\n ClearTextBlockQuery = 'clearTextBlockQuery'\r\n}\r\n\r\nconst FinancialStatementsSectionTitle = 'Financial Statements'\r\nconst OtherTenKQSectionsTitle = 'Other 10-K/Q Sections'\r\nconst AccountingPoliciesSectionTitle = 'Accounting Policies'\r\nconst NotesTableSectionTitle = 'Notes Tables'\r\nconst RelatedDocumentsSectionTitle = 'Related Documents (Earnings, Proxys & Letters)'\r\nconst EightKsByItemTypeSectionTitle = '8-Ks By Item Type'\r\nconst NotesStatementsSectionTitle = \"Notes To Financial Statements\"\r\nconst MDASectionsTitle = \"Management Discussion and Analysis Sections\"\r\n\r\n/**\r\n * Indicates what we are searching by, kind of.\r\n * */\r\nexport type ChangeFlag = FootnoteType | ChangeFlags | DocumentIdentifierScheme\r\n\r\n/**\r\n * The list of documents on the left hand side of the screen.\r\n * */\r\nexport class FootnoteList extends Array {\r\n private searchingBy: ChangeFlag\r\n\r\n private requestSize: number;\r\n\r\n /**\r\n * Resolving this cancels the running search API query\r\n */\r\n private queryCanceler: angular.IDeferred\r\n\r\n /**\r\n * if true do not show the search button\r\n */\r\n public queryIsRunning = false\r\n\r\n private userStartedAnotherQuery: boolean\r\n\r\n private nextGroupStartEntityID: number\r\n\r\n private nextGroupStartOffset: number\r\n\r\n public foundAllMatches: boolean\r\n\r\n public showKey: boolean\r\n\r\n public groups: Record\r\n\r\n /**\r\n * Show the export boxes on each line\r\n * */\r\n public showExportBoxes: boolean\r\n\r\n public singleCompanySections: { [key: string]: DocumentGroup }\r\n\r\n\r\n /**\r\n * Footnote that was selected in the previous search.\r\n * */\r\n public lastFootnoteSelected: Footnote\r\n\r\n\r\n constructor(private peerGroup?: PeerGroupInstance,\r\n private $q?: angular.IQService,\r\n private footnoteQueryParams?: FootnoteQueryParams,\r\n private periodParams?: PeriodParams,\r\n private calcbenchAPI?: CalcbenchAPI,\r\n private footnoteQueryChannel?: FootnoteQueryChannel,\r\n private footnoteFactory?: BuildFootnote,\r\n public displayedDocuments?: DisplayedTextDocuments,\r\n private calcbenchUser?: ICalcbenchUser) {\r\n super();\r\n (Object).setPrototypeOf(this, Object.create(FootnoteList.prototype));\r\n if ($q) {\r\n this.queryCanceler = $q.defer()\r\n }\r\n if (footnoteQueryChannel) {\r\n footnoteQueryChannel.onDocumentSelected(document => {\r\n if (isInstanceOfHasSingleCompanySection(document)) {\r\n document.singleCompanySection.containsSelectedFootnote = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * the user has changed the search params, \r\n * @param whatChanged\r\n */\r\n public async handleSearchChange(whatChanged: ChangeFlag) {\r\n if (this.length > 0 && whatChanged === FootnoteType.FootnoteType && this.peerGroup.companies.length === 1 && this.periodParams.rangeOption !== ALL_HISTORY) {\r\n const disclosureToSelect = this.find(f => f.footnote_type === this.footnoteQueryParams.footnoteType)\r\n this.selectInitialDocument(disclosureToSelect)\r\n } else {\r\n await this.startSearch(whatChanged)\r\n }\r\n }\r\n\r\n /**\r\n * empty the list and get the first group of results.\r\n * @param whatChanged\r\n */\r\n private async startSearch(whatChanged: ChangeFlag) {\r\n this.requestSize = 100;\r\n if (this.queryIsRunning) {\r\n this.userStartedAnotherQuery = true;\r\n this.queryCanceler.resolve('Cancelled');\r\n this.queryCanceler = this.$q.defer();\r\n } else {\r\n this.userStartedAnotherQuery = false;\r\n }\r\n\r\n this.searchingBy = whatChanged\r\n this.clear();\r\n this.nextGroupStartEntityID = null;\r\n this.nextGroupStartOffset = null;\r\n this.foundAllMatches = false\r\n await this.getNextFootnoteGroup()\r\n if (this.length > 0) {\r\n const disclosureToSelect = this.findInitialDisclosure()\r\n this.selectInitialDocument(disclosureToSelect)\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Display the first disclosure\r\n * @param disclosureToSelect\r\n */\r\n private selectInitialDocument(disclosureToSelect: Footnote) {\r\n disclosureToSelect.select()\r\n this.displayedDocuments.setInitialDocument(disclosureToSelect)\r\n this.footnoteQueryChannel.documentSelected(disclosureToSelect)\r\n }\r\n\r\n\r\n /**\r\n * Which disclosure should we open first?\r\n * */\r\n private findInitialDisclosure(): Footnote {\r\n if (this.lastFootnoteSelected) {\r\n const matchFromPreviousQuery = this.lastFootnoteSelected.findSimilarFootnote(this)\r\n if (matchFromPreviousQuery) {\r\n return matchFromPreviousQuery\r\n }\r\n } else {\r\n const matchFromUrl = this.footnoteQueryParams.matchInitialFootnote(this)\r\n if (matchFromUrl) {\r\n return matchFromUrl\r\n }\r\n }\r\n return this.find(f => f.clickable)\r\n }\r\n\r\n public async getNextFootnoteGroup() {\r\n const allHistory = RangeOption.ALL_HISTORY === this.periodParams.rangeOption\r\n const pageQueryParams = this.footnoteQueryParams.getAPIParams(allHistory)\r\n pageQueryParams.limit = this.requestSize\r\n this.requestSize = Math.min(this.requestSize * 2, MAX_REQUEST_SIZE);\r\n pageQueryParams.startEntityID = this.nextGroupStartEntityID;\r\n pageQueryParams.startOffset = this.nextGroupStartOffset;\r\n const periodParams = this.periodParams.getAPIParams()\r\n this.queryIsRunning = true\r\n let data: IDisclosureResponse\r\n try {\r\n data = await this.calcbenchAPI.searchForFootnotes(pageQueryParams, this.peerGroup.getAPIQueryParams(), periodParams, this.queryCanceler)\r\n } catch (e) {\r\n if (isHTTPResponse(e) && e.xhrStatus !== 'abort') {\r\n alert(e.data.ExceptionMessage || e.data.Message);\r\n }\r\n return;\r\n }\r\n\r\n this.queryIsRunning = false\r\n if (!(data?.footnotes.length > 0)) {\r\n alert('No results');\r\n } else {\r\n const results = data.footnotes;\r\n this.push(...results.map(footnote => this.buildDisclosure(footnote, pageQueryParams)))\r\n if (this.searchingBy === FootnoteType.SingleCompany) {\r\n this.buildSingleCompanySections()\r\n setTimeout(() => this.singleCompanyMDASections(), 1000) // Doing this in a timeout so we do not block getting the initial document contents\r\n }\r\n this.foundAllMatches = !data.moreResults;\r\n this.nextGroupStartEntityID = data.nextGroupStartEntityID;\r\n this.nextGroupStartOffset = data.nextGroupStartOffset;\r\n }\r\n this.buildGroups()\r\n }\r\n\r\n private buildDisclosure(d: TextFootnote, pageQueryParams: IDisclosureAPIParams): Footnote {\r\n return this.footnoteFactory(this.searchingBy,\r\n d,\r\n this,\r\n pageQueryParams,\r\n this.periodParams,\r\n {},\r\n this.footnoteQueryParams)\r\n }\r\n\r\n private async singleCompanyMDASections() {\r\n const queryParams = this.footnoteQueryParams.singleCompanyAllMDASections()\r\n const data = await this.calcbenchAPI.searchForFootnotes(queryParams,\r\n this.peerGroup.getAPIQueryParams(),\r\n this.periodParams.getAPIParams(),\r\n this.queryCanceler\r\n )\r\n const sections = data?.footnotes.map(f => this.buildDisclosure(f, queryParams) as unknown as SingleCompanyFootnote)\r\n this.push(...sections)\r\n this.singleCompanySections[MDASectionsTitle] = new DocumentGroup('Sections of the MD&A as defined in the Financial Reporting Manual',\r\n sections)\r\n\r\n\r\n }\r\n\r\n private buildGroups() {\r\n this.groups = _.groupBy(this, f => f.groupByKey)\r\n }\r\n\r\n private buildSingleCompanySections() {\r\n const documents = this.map(d => d as unknown as SingleCompanyFootnote)\r\n this.singleCompanySections = {\r\n [FinancialStatementsSectionTitle]: new DocumentGroup('Face Financials',\r\n documents.filter(d => d.isFaceStatement),\r\n true\r\n ),\r\n [RelatedDocumentsSectionTitle]: new DocumentGroup('Filings related to the 10-K/Q that are filed with the SEC and collected and indexed by Calcbench',\r\n documents.filter(d => d.footnote_type_title === FootnoteTypeTitle.RelatedDocuments)\r\n ),\r\n [OtherTenKQSectionsTitle]: new DocumentGroup('Sections of the 10-K/Q that are not tagged with XBRL.',\r\n documents.filter(d => d.footnote_type_title === FootnoteTypeTitle.AdditionalSections)\r\n ),\r\n [NotesStatementsSectionTitle]: new GroupedDocuments('Notes',\r\n documents.filter(d => d.isXBRLNote),\r\n true\r\n ),\r\n [AccountingPoliciesSectionTitle]: new DocumentGroup('Accounting Policies. These are individually tagged in XBRL',\r\n documents.filter(d => d.footnote_type_title === FootnoteTypeTitle.PolicyTextBlock).sort((a, b) => a.title.localeCompare(b.title)),\r\n true\r\n ),\r\n [NotesTableSectionTitle]: new DocumentGroup('XBRL tagged tables from the footnotes',\r\n documents.filter(d => d.footnote_type_title === FootnoteTypeTitle.TextBlock).sort((a, b) => a.title.localeCompare(b.title)),\r\n true\r\n ),\r\n [EightKsByItemTypeSectionTitle]: new DocumentGroup(EightKsByItemTypeSectionTitle,\r\n documents.filter(d => d.footnote_type_title === FootnoteTypeTitle.EigthKsByItemType)\r\n ),\r\n }\r\n }\r\n\r\n\r\n public userRequestedMoreFootnotes = () => {\r\n this.getNextFootnoteGroup();\r\n }\r\n\r\n /**\r\n * What should happen the next time toggle all is clicked\r\n * */\r\n private allShouldSelected = true\r\n\r\n public toggleAllExport() {\r\n this.forEach(footnote => {\r\n footnote.includeInExport = this.allShouldSelected\r\n })\r\n if (!this.allShouldSelected) {\r\n this.find(f => f.selected).includeInExport = true\r\n }\r\n this.allShouldSelected = !this.allShouldSelected\r\n this.showExportBoxes = true\r\n }\r\n\r\n public exportable = () => this.searchingBy !== FootnoteType.NormalizedFaceMetric && this.length > 0 && !getExcelAddInProxy()\r\n\r\n\r\n public clear = () => {\r\n this.length = 0\r\n this.singleCompanySections = null\r\n this.groups = null\r\n }\r\n}\r\n\r\n","import * as angular from \"angular\";\r\nimport _ from \"lodash\"\r\nimport { Column } from \"exceljs\";\r\nimport download from \"downloadjs\";\r\nimport { buildWorkbookWithSheet, saveWorkbookOrExcelInsert, CalcbenchGoldARGB } from \"../shared/excelExport/excelExport\";\r\nimport { GetsPolicyBlockCounts } from \"./disclosurePageController\";\r\nimport { FootnoteList } from \"./footnoteList\";\r\nimport { FootnoteQueryParams } from \"./footnoteQueryParameters\";\r\nimport { DisplayedTextDocuments } from \"./displayedTextDocumentsFactory\";\r\nimport { FootnoteQueryChannel } from \"./footnoteQueryChannel\";\r\nimport { BlockTextTagCount } from \"../shared/calcbenchAPI/BlockTextTagCount\";\r\nimport { Footnote } from \"./footnoteTypes/Footnote\";\r\n\r\n/**\r\n * Controller for the list of disclosures on the left-hand side of the disclosure page.\r\n */\r\nclass FootnoteListController {\r\n static $inject = ['$http', '$location', '$httpParamSerializer']\r\n\r\n disclosureType: string;\r\n\r\n traceMetricDataType: any;\r\n\r\n numericFactIdentifier: any;\r\n\r\n policyList: BlockTextTagCount[];\r\n\r\n textSearchTerm: string;\r\n\r\n accession: string;\r\n\r\n nonXbrlFactIdentifier: any;\r\n\r\n blobIdentifier: any;\r\n\r\n traceMetric: string;\r\n\r\n footnoteQueryChannel: FootnoteQueryChannel\r\n\r\n displayedDocuments: DisplayedTextDocuments\r\n\r\n getPolicyBlockCounts: GetsPolicyBlockCounts\r\n\r\n /**\r\n * disclosures to render.\r\n */\r\n footnotes: FootnoteList\r\n\r\n footnoteQueryParams: FootnoteQueryParams\r\n\r\n constructor(private $http: angular.IHttpService, private $location: angular.ILocationService, private $httpParamSerializer: angular.IHttpParamSerializer) { }\r\n\r\n public async loadPolicyBlockCounts() {\r\n this.policyList = await this.getPolicyBlockCounts()\r\n }\r\n\r\n public async exportFootnotes(path: string, documentExtension: string, mimeType: string) {\r\n const footnotesToExport = this.footnotes.filter(disclosure => disclosure.includeInExport);\r\n const params = { disclosures: footnotesToExport.map(disclosure => disclosure.APIdata) };\r\n const httpParams = {\r\n method: 'POST',\r\n url: path,\r\n data: params,\r\n responseType: 'arraybuffer' // need to set this because pdf response is not text.\r\n }\r\n const response = await this.$http(httpParams)\r\n const entityNames = _.chain(footnotesToExport).pluck('entity_ticker').uniq().join('_').trunc().value();\r\n const documentTypes = _.chain(footnotesToExport).pluck('footnote_type_title').uniq().join('_').trunc(50).value();\r\n let downloadDocumentName = `${entityNames} ${documentTypes}`;\r\n downloadDocumentName = downloadDocumentName.replace(',', '');\r\n download((response.data), downloadDocumentName + documentExtension, mimeType);\r\n }\r\n\r\n userSelectedDocument = (document: Footnote) => {\r\n this.displayedDocuments.setInitialDocument(document);\r\n document.select();\r\n this.footnoteQueryChannel.documentSelected(document);\r\n }\r\n\r\n excelExport() {\r\n const [workbook, worksheet] = buildWorkbookWithSheet('Disclosures');\r\n worksheet.getCell('A1').value = `Exported from Calcbench: ${new Date()}`;\r\n worksheet.getCell('A2').value = {\r\n text: 'Source',\r\n hyperlink: this.$location.absUrl()\r\n };\r\n worksheet.getCell('A2').font = {\r\n color: { argb: CalcbenchGoldARGB },\r\n underline: true\r\n };\r\n\r\n const columns = [\r\n {\r\n key: 'entity_name',\r\n header: 'Entity Name',\r\n width: 50\r\n },\r\n {\r\n key: 'entity_ticker',\r\n header: 'Ticker'\r\n },\r\n {\r\n key: 'CIK',\r\n header: 'CIK'\r\n },\r\n {\r\n key: 'fiscal_year',\r\n header: 'Fiscal Year',\r\n width: 10\r\n },\r\n {\r\n key: 'fiscal_period',\r\n header: 'Fiscal Period',\r\n width: 13\r\n },\r\n {\r\n key: 'disclosure_type',\r\n header: 'Disclosure Type',\r\n width: 20\r\n },\r\n {\r\n key: 'disclosure_category',\r\n header: 'Disclosure Category',\r\n width: 20\r\n },\r\n {\r\n key: 'filing_date',\r\n header: 'Filing Date',\r\n width: 10\r\n },\r\n {\r\n key: 'date_reported',\r\n header: 'Date Reported (Date data was available from Calcbench)'\r\n },\r\n {\r\n key: 'filing_type',\r\n header: 'Filing Type',\r\n width: 14,\r\n style: { font: { color: { argb: CalcbenchGoldARGB } } }\r\n },\r\n {\r\n key: 'URL',\r\n header: 'Disclosure URL',\r\n width: 20,\r\n style: { font: { color: { argb: CalcbenchGoldARGB } } }\r\n },\r\n {\r\n key: 'addInFormula',\r\n header: 'Contents (Calcbench Excel Add-in Required)'\r\n }\r\n ] as Column[]\r\n\r\n worksheet.getRow(5).values = columns.map(c => c.header as string);\r\n worksheet.getRow(5).font = { bold: true };\r\n worksheet.columns = columns.map(c => ({ key: c.key, width: c.width, style: c.style }));\r\n this.footnotes.filter(d => d.includeInExport).forEach((disclosure, i) => {\r\n const rowValues = {\r\n entity_name: disclosure.entity_name,\r\n entity_ticker: disclosure.entity_ticker,\r\n fiscal_year: disclosure.fiscal_year,\r\n fiscal_period: disclosure.fiscal_period,\r\n disclosure_category: disclosure.footnote_type_title,\r\n filing_date: disclosure.filing_date,\r\n disclosure_type: disclosure.identifierForExcelAddIn,\r\n URL: null,\r\n filing_type: null,\r\n CIK: disclosure.CIK,\r\n date_reported: disclosure.DateReported,\r\n addInFormula: null\r\n }\r\n const url = disclosure.URL(this.$location, this.$httpParamSerializer);\r\n rowValues.URL = {\r\n text: url,\r\n hyperlink: url\r\n }\r\n rowValues.filing_type = {\r\n text: disclosure.document_type,\r\n hyperlink: disclosure.SEC_URL\r\n }\r\n\r\n const row = i + 6\r\n rowValues.addInFormula = {\r\n formula: `=CalcbenchDisclosureTextFiscalPeriod(F${row}, B${row}, D${row}, E${row})`\r\n }\r\n worksheet.addRow(rowValues);\r\n });\r\n saveWorkbookOrExcelInsert(workbook, 'CalcbenchDisclosures.xlsx');\r\n }\r\n\r\n public get showExportBoxes() {\r\n return this.footnotes.showExportBoxes\r\n }\r\n}\r\n\r\nangular.module('calcbenchApp')\r\n .directive('footnoteList', FootnoteListDirective)\r\n\r\nfunction FootnoteListDirective() {\r\n return {\r\n restrict: 'E',\r\n template: require('./footnoteList.tpl.html'),\r\n controller: FootnoteListController,\r\n controllerAs: \"footnoteListController\",\r\n replace: true,\r\n bindToController: {\r\n accession: '=',\r\n blobIdentifier: '@',// Can't have \"id\" in these, hence the \"identifier.\"\r\n numericFactIdentifier: '@',\r\n nonXbrlFactIdentifier: '@',\r\n disclosureType: '@',\r\n textSearchTerm: '@',\r\n peerGroup: '=',\r\n displayedDocuments: '=',\r\n footnotes: '=',\r\n footnoteQueryChannel: '=',\r\n footnoteQueryParams: '=',\r\n periodParams: '=',\r\n getPolicyBlockCounts: '=',\r\n lastFootnoteSelected: '='\r\n },\r\n scope: {}\r\n };\r\n}","import * as angular from \"angular\";\r\nimport { IDeferred, IPromise } from \"angular\";\r\nimport { ChangeFlag } from \"./footnoteList\";\r\nimport { Footnote } from \"./footnoteTypes/Footnote\";\r\n\r\nangular.module('calcbenchApp').service('FootnoteQueryChannelFactory', FootnoteQueryChannelFactory);\r\n\r\n\r\n/**\r\n * Handles messages from the disclosure search menu.\r\n */\r\nexport class FootnoteQueryChannel {\r\n handlers = new Array<(whatChanged: ChangeFlag) => void>()\r\n\r\n multiSelectClosedHandlers = new Array<() => void>()\r\n\r\n documentHandlers = new Array<(document: Footnote) => void>()\r\n\r\n public doneGettingDisclosureTypesDefered: IDeferred\r\n\r\n /** \r\n * Indicates we have gotten the disclosureTypes \r\n * */\r\n public doneGettingDisclosureTypes: IPromise\r\n\r\n /**\r\n * \r\n * Passing true indicates that the footnote search should run.\r\n * */\r\n public doneWithInitialSetupDefered: IDeferred\r\n\r\n public doneWithInitialSetup: IPromise\r\n\r\n constructor($q: ng.IQService) {\r\n this.doneGettingDisclosureTypesDefered = $q.defer()\r\n this.doneGettingDisclosureTypes = this.doneGettingDisclosureTypesDefered.promise\r\n this.doneWithInitialSetupDefered = $q.defer()\r\n this.doneWithInitialSetup = this.doneWithInitialSetupDefered.promise\r\n }\r\n\r\n /**\r\n * Called when the user changes one of the search parameters\r\n * @param whatChanged\r\n */\r\n paramsChanged(whatChanged: ChangeFlag) {\r\n this.handlers.forEach(f => f(whatChanged))\r\n }\r\n\r\n onParamsChanged(handler: (whatChanged: ChangeFlag) => void) {\r\n this.handlers.push(handler);\r\n }\r\n\r\n onMultiSelectClosed(handler: () => void) {\r\n this.multiSelectClosedHandlers.push(handler);\r\n }\r\n\r\n /**\r\n * A document has been selected, call the functions passed to onDocumentSelected\r\n * @param document\r\n */\r\n documentSelected(document: Footnote) {\r\n this.documentHandlers.forEach(handler => {\r\n handler(document);\r\n });\r\n }\r\n\r\n /**\r\n * Add a function to be called when a document is selected.\r\n * @param handler function to call when a document is selected.\r\n */\r\n onDocumentSelected(handler: (f: Footnote) => void) {\r\n this.documentHandlers.push(handler);\r\n }\r\n\r\n multiSelectClosed() {\r\n this.multiSelectClosedHandlers.forEach(f => f());\r\n }\r\n}\r\n\r\nFootnoteQueryChannelFactory.$inject = ['$q'];\r\nfunction FootnoteQueryChannelFactory($q: ng.IQService) {\r\n // This is a singleton. If we want to have more than one channel this is going to have to change. akittredge, August 2017.\r\n return function () {\r\n return new FootnoteQueryChannel($q)\r\n }\r\n}","import * as angular from \"angular\";\r\n\r\nimport { DocumentIdentifierScheme } from \"./footnoteFactory\";\r\nimport { IDisclosureAPIParams } from \"../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ChangeFlag, ChangeFlags } from \"./footnoteList\";\r\nimport { PeerGroupInstance } from \"../shared/peerGroup/peerGroupInstance\";\r\nimport { ArcRole } from \"./ArcRole\"\r\nimport { Footnote } from \"./footnoteTypes/Footnote\";\r\nimport { FootnoteType } from \"./footnoteTypes/FootnoteType\";\r\nimport { Int, notNullSerializabelValues, readPropertiesFromURL, SerializeToURL, writePropertiesToURL } from \"../shared/utils/serializeToURL\";\r\n\r\nangular.module('calcbenchApp').service('FootnoteQueryParamsFactory', FootnoteQueryParamsFactory);\r\n\r\nexport const URLnameSpace = 'doc_'\r\n\r\n\r\n/**\r\n * Sent to the API\r\n * Deeplinking logic for the disclosure page.\r\n * \r\n * To serialize to the URL add the @SerializeToURL decorator and set and set the properties initial value\r\n * */\r\nexport class FootnoteQueryParams {\r\n @SerializeToURL\r\n XBRLNumericTag: string = null\r\n\r\n @SerializeToURL\r\n BlobID: string = null\r\n\r\n /**\r\n * Used to restrict search by tagType when doing full text search\r\n * */\r\n @SerializeToURL\r\n lastFootnoteTag: string;\r\n\r\n /**\r\n * Set when \"Trace Column\" on the multi-company page.\r\n * */\r\n @SerializeToURL\r\n normalizedFaceMetric: string = null\r\n\r\n /**\r\n * Set when \"Trace Column\" on the multi-company page.\r\n * */\r\n @SerializeToURL\r\n normalizedFootnoteMetric: string = null\r\n\r\n @SerializeToURL\r\n nonXBRLFactIdentifier: number = null\r\n\r\n /**\r\n * Cooresponds to the arcroles Enum in FASBelement.vb. Greater than 200 indicates non-XBRL footnote\r\n *\r\n * */\r\n @Int\r\n @SerializeToURL\r\n footnoteType: ArcRole = null\r\n\r\n /**\r\n * Level 1, 2, or 3 XBRL text block qname\r\n * \r\n * */\r\n @SerializeToURL\r\n footnoteTag: string = null\r\n\r\n @SerializeToURL\r\n fullTextQuery: string = null\r\n\r\n @SerializeToURL\r\n searchingBy: ChangeFlag = null\r\n\r\n /**\r\n * string of the form 'b-123', which is a unique identifier for the disclosure\r\n * */\r\n @SerializeToURL\r\n selectedDisclosure: string = null\r\n\r\n @SerializeToURL\r\n accessionID: number = null\r\n\r\n\r\n /**\r\n * For non-XBRL filings, proxies for example. Open in single company-mode with this filing selected.\r\n * \r\n * FilingIDs are also blob IDs\r\n * */\r\n @SerializeToURL\r\n FilingID: number = null\r\n\r\n /**\r\n * Restrict full-text search to the specified disclosure type\r\n * */\r\n @SerializeToURL\r\n restrictToDisclosureType: boolean = false\r\n\r\n @SerializeToURL\r\n restrictToFilingType10KQ: boolean = false;\r\n\r\n @SerializeToURL\r\n restrictToFilingType8K: boolean = false;\r\n\r\n @SerializeToURL\r\n restrictToFilingTypeProxy: boolean = false;\r\n\r\n /**\r\n * I think this is only used by the full-text search\r\n * */\r\n @SerializeToURL\r\n allHistory: boolean = false;\r\n\r\n selectedDisclosureTypes: any[];\r\n\r\n /**\r\n * Fact Identifier that appears in a disclosure, if this is set we should open the containing disclosure\r\n * */\r\n @SerializeToURL\r\n numericFactIdentifier: number = null\r\n\r\n @SerializeToURL\r\n NetworkID: number = null\r\n\r\n private initialFootnoteType: ArcRole\r\n\r\n startOffset: number;\r\n\r\n limit: number;\r\n\r\n /**\r\n * Search for a tagged XBRL section\r\n * */\r\n @SerializeToURL\r\n FactID: number = null\r\n\r\n constructor(private $location?: angular.ILocationService) { }\r\n\r\n setFootnoteType(footnoteType: ArcRole): void {\r\n this.footnoteType = footnoteType;\r\n }\r\n\r\n searchParamSelected(): boolean {\r\n return Boolean(this.footnoteType || this.footnoteTag !== null || this.fullTextQuery !== null || this.searchingBy !== null || TRACE_TYPES.find(t => this[t]))\r\n }\r\n\r\n clearURLProperty(propertyName: string): void {\r\n this.$location.search(propertyName, null);\r\n }\r\n\r\n setDisclosureID(document: Footnote): void {\r\n if (document) {\r\n this.selectedDisclosure = document.getDisclosureID();\r\n }\r\n this.writeToURL();\r\n }\r\n\r\n textSearchCheckboxChanged(paramName: string): void {\r\n if (this[paramName]) {\r\n // set others to false\r\n if (paramName !== 'restrictToDisclosureType') this.restrictToDisclosureType = false;\r\n if (paramName !== 'restrictToFilingType10KQ') this.restrictToFilingType10KQ = false;\r\n if (paramName !== 'restrictToFilingType8K') this.restrictToFilingType8K = false;\r\n if (paramName !== 'restrictToFilingTypeProxy') this.restrictToFilingTypeProxy = false;\r\n }\r\n }\r\n\r\n public writeToURL(): void {\r\n writePropertiesToURL(this.$location, this, URLnameSpace)\r\n }\r\n\r\n\r\n public readFromURL(): void {\r\n readPropertiesFromURL(this.$location, this, URLnameSpace)\r\n if (this.nonXBRLFactIdentifier) {\r\n this.selectedDisclosure = `${DocumentIdentifierScheme.Blob}-${this.BlobID}`\r\n }\r\n\r\n this.initialFootnoteType = this.footnoteType\r\n }\r\n\r\n /**\r\n * Handles the URL/server side params. akittredge, October 2017\r\n * @param footnotes\r\n */\r\n matchInitialFootnote(footnotes: Footnote[]): Footnote {\r\n if (this.selectedDisclosure) {\r\n // fix for earnings 8ks that appear in more than one place\r\n const eightKdups = footnotes.filter(f => f.getDisclosureID() === this.selectedDisclosure).sort((n1,n2) => n1.filing_type - n2.filing_type);\r\n if (eightKdups.length > 1 && eightKdups[0].filing_type && eightKdups[0].filing_type >= 3 && eightKdups[0].filing_type <= 9) {\r\n return eightKdups[0];\r\n } \r\n return footnotes.find(f => f.getDisclosureID() === this.selectedDisclosure)\r\n \r\n } if (this.initialFootnoteType) {\r\n return footnotes.find(f => f.footnote_type === this.initialFootnoteType)\r\n } if (this.NetworkID) {\r\n return footnotes.find(f => f.network_id === this.NetworkID)\r\n } if (this.FilingID) {\r\n // FilingIDs are also blobIDs\r\n return footnotes.find(f => f.blob_id === this.FilingID.toString())\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * aka, should the All History option be shown in the period menu.\r\n *\r\n * */\r\n allHistoryAllowed(): boolean {\r\n return [FootnoteType.FootnoteType, FootnoteType.SingleCompany, FootnoteType.Tag].includes(this.searchingBy as FootnoteType)\r\n }\r\n\r\n /**\r\n * A standardized metric to look for the source documents of\r\n * */\r\n public setStandardizedOrNumericXBLTag(metric: string, searchingBy: FootnoteType.NormalizedFaceMetric | FootnoteType.NormalizedFootnoteMetric | FootnoteType.XBRLNumericTag) {\r\n switch (searchingBy) {\r\n case FootnoteType.NormalizedFaceMetric:\r\n this.normalizedFaceMetric = metric\r\n break\r\n case FootnoteType.NormalizedFootnoteMetric:\r\n this.normalizedFootnoteMetric = metric\r\n break\r\n case FootnoteType.XBRLNumericTag:\r\n this.XBRLNumericTag = metric\r\n break\r\n }\r\n this.searchingBy = searchingBy\r\n }\r\n\r\n /**\r\n * Get URL key/value pairs to re-create this state\r\n * */\r\n public get urlParams(): { [key: string]: any; } {\r\n return notNullSerializabelValues(this).reduce((obj, [key, value]) => {\r\n obj[`${URLnameSpace}${key}`] = value\r\n return obj\r\n }, {})\r\n }\r\n\r\n\r\n /**\r\n * URL to re-create this state \r\n * @param $httpParamSerializer\r\n * @param peerGroup\r\n */\r\n public url(peerGroup: PeerGroupInstance) {\r\n return `/disclosures?${new URLSearchParams({ ...this.urlParams, ...peerGroup.urlParams() })}`;\r\n }\r\n\r\n getAPIParams(allHistory: boolean): IDisclosureAPIParams {\r\n let { searchingBy } = this\r\n const pageQueryParams = {\r\n fullTextSearchAllTimePeriods: this.allHistory,\r\n accessionID: this.accessionID,\r\n blobID: this.BlobID,\r\n nonXBRLFactIdentifier: this.nonXBRLFactIdentifier,\r\n XBRLFactIdentifier: this.numericFactIdentifier,\r\n allHistory,\r\n ByDocumentID: Object.values(DocumentIdentifierScheme).includes(searchingBy as DocumentIdentifierScheme),\r\n NetworkID: this.NetworkID,\r\n FactID: this.FactID,\r\n XBRLNumericTag: this.XBRLNumericTag,\r\n FilingID: this.FilingID\r\n } as IDisclosureAPIParams;\r\n\r\n if (!allHistory && searchingBy === FootnoteType.SingleCompany) {\r\n pageQueryParams.allFootnotes = true;\r\n } else if (allHistory && searchingBy === FootnoteType.SingleCompany) {\r\n pageQueryParams.footnoteType = this.footnoteType\r\n searchingBy = FootnoteType.FootnoteType\r\n } else if (searchingBy === ChangeFlags.ClearFullTextQuery) {\r\n pageQueryParams.footnoteType = this.footnoteType\r\n searchingBy = FootnoteType.FootnoteType\r\n } else {\r\n pageQueryParams[searchingBy] = this[searchingBy]\r\n if (searchingBy === FootnoteType.FullText && this.restrictToDisclosureType) {\r\n pageQueryParams.footnoteType = this.footnoteType;\r\n\r\n if (this.lastFootnoteTag) pageQueryParams.footnoteTag = this.lastFootnoteTag;\r\n } else if (searchingBy === FootnoteType.FullText) {\r\n if (this.restrictToFilingType10KQ) pageQueryParams.footnoteType = ArcRole.QuarterlyOrAnualReport;\r\n if (this.restrictToFilingType8K) pageQueryParams.footnoteType = ArcRole.eightk_all_types;\r\n if (this.restrictToFilingTypeProxy) pageQueryParams.footnoteType = ArcRole.ProxyStatement;\r\n }\r\n }\r\n return pageQueryParams\r\n }\r\n\r\n public singleCompanyAllMDASections(): IDisclosureAPIParams {\r\n const params = this.getAPIParams(false)\r\n params.allFootnotes = false\r\n params.AllMDASections = true\r\n return params\r\n }\r\n}\r\n\r\nFootnoteQueryParamsFactory.$inject = ['$location'];\r\n\r\nconst TRACE_TYPES = [FootnoteType.NormalizedFaceMetric,\r\nFootnoteType.NormalizedFootnoteMetric,\r\nFootnoteType.NormalizedBreakoutMetric,\r\nFootnoteType.XBRLNumericTag]\r\nfunction FootnoteQueryParamsFactory($location: ng.ILocationService) {\r\n return function (): FootnoteQueryParams {\r\n return new FootnoteQueryParams($location)\r\n }\r\n}","\r\n/**\r\n * Single company disclosure section\r\n */\r\nclass FootnoteSubListController implements ng.IController {\r\n\r\n}\r\n\r\nangular.module('calcbenchApp').component('footnoteSubList', {\r\n template: require('./footnoteSubList.tpl.html'),\r\n controller : FootnoteSubListController,\r\n bindings: {\r\n documents: '=',\r\n userSelectedDocument: '=',\r\n showExportBoxes:'='\r\n }\r\n});\r\n","import _ from \"lodash\";\r\nimport { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { DisplayAs } from \"../footnoteFactory\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\n\r\n\r\nexport class Diff extends Footnote {\r\n displayAs = DisplayAs.Diff;\r\n\r\n static searchType = FootnoteType.Diff;\r\n\r\n constructor(private mostRecentDocument: Footnote, private previousDocument: Footnote, otherFootnotes: FootnoteList, $q: angular.IQService,\r\n calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super({} as TextFootnote, otherFootnotes, FootnoteType.Diff, $q, calcbenchAPI, $uibModal, $http);\r\n }\r\n\r\n\r\n async _getContents() {\r\n const mostRecentContents = await this.mostRecentDocument.getContents()\r\n const previousContents = await this.previousDocument.getContents()\r\n return this.$http.post('/api/textDiff', { html1: previousContents.blobs[0], html2: mostRecentContents.blobs[0] }).then(({ data }) => this.content = { blobs: [data as string] } as DisclosureContents);\r\n\r\n }\r\n\r\n getPeriodID() {\r\n return `${this.mostRecentDocument.getPeriodID()}vs${this.previousDocument.getPeriodID()}`;\r\n }\r\n\r\n\r\n getTitle() {\r\n const mostRecentEndDate = _.get(this, 'mostRecentDocument.contents.display_end_date');\r\n const previousEndDate = _.get(this, 'previousDocument.contents.display_end_date');\r\n return mostRecentEndDate && previousEndDate && (`Differences Between Document Filed ${mostRecentEndDate} And Document Filed ${previousEndDate}`);\r\n }\r\n\r\n browserDownloadTitle() {\r\n return `

${this.entity_name}

${this.footnote_type_title}

`;\r\n }\r\n\r\n async downloadAsPDFBrowser($event, diffDisplayQuery) {\r\n // This does not work perfectly but I have spent enough time on it. akittredge, June 2018.\r\n const $diffDisplay = $(diffDisplayQuery);\r\n $diffDisplay.prepend(`
${this.browserDownloadTitle()}
`); // The table does not get included in the PDF. I do not know why.\r\n const html2pdf = await require(/* webpackChunkName : \"html2pdf\" */'html2pdf.js')\r\n html2pdf($diffDisplay[0]);\r\n $diffDisplay.find('#pdfHeader').remove();\r\n };\r\n}\r\n","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { FootnoteTypeFootnote } from \"./FootnoteTypeFootnote\";\r\n\r\nexport class DocumentGridDocument extends FootnoteTypeFootnote {\r\n static searchType = FootnoteType.Grid;\r\n\r\n constructor(APIdata: TextFootnote, otherFootnotes: FootnoteList, allHistory: boolean,\r\n searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, allHistory, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n }\r\n\r\n async _getContents(cancellerPromise) {\r\n const responseData = await this.calcbenchAPI.disclosureByTypeAndAccessionID(\r\n this.footnote_type,\r\n this.accession_id,\r\n cancellerPromise\r\n )\r\n if (!responseData.disclosure_type || responseData.disclosure_type < 0) {\r\n responseData.disclosure_type = this.footnote_type;\r\n }\r\n return this.content = responseData\r\n\r\n }\r\n}","import angular from \"angular\";\r\nimport _, { Dictionary } from \"lodash\";\r\n\r\nimport { CalcbenchAPI, FootnoteTypeTitle, ICompanyAPIParams, IDisclosureAPIParams } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\nimport { FiscalPeriod } from \"../../shared/calcbenchAPI/FiscalPeriod\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { PeerGroupInstance } from \"../../shared/peerGroup/peerGroupInstance\";\r\nimport { PeriodType, XBRLPeriodToAPIPeriod } from \"../../shared/periods/constants\";\r\nimport { PeriodParams } from \"../../shared/periods/periodParams\";\r\nimport { RangeOption } from \"../../shared/periods/rangeOptions\";\r\nimport { BLOB_SEPARATOR } from \"../../trace/traceController\";\r\nimport { ArcRole } from \"../ArcRole\";\r\nimport { buildFootnote, DisplayAs, DocumentIdentifierScheme } from \"../footnoteFactory\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { FootnoteQueryParams, URLnameSpace } from \"../footnoteQueryParameters\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\n\r\nexport abstract class Footnote {\r\n otherFootnotes: FootnoteList;\r\n\r\n accession_id: number\r\n\r\n /**\r\n * Aka, ArcRole\r\n * */\r\n footnote_type: ArcRole;\r\n\r\n public get isNonXBRL() {\r\n return !this.isXBRLDocument;\r\n }\r\n\r\n public get isFaceStatement() {\r\n return this.footnote_type && this.footnote_type < 20\r\n }\r\n\r\n public get isMD_A_Section() {\r\n return this.footnote_type_title === FootnoteTypeTitle.ManagementDiscussionAndAnalysisSection\r\n }\r\n\r\n public get isEarningsPressReleaseFrom8K() {\r\n return this.footnote_type === ArcRole.EarningsPressReleaseFrom8K\r\n }\r\n\r\n /**\r\n * Date Calcbench published the filing\r\n * */\r\n public DateReported: Date\r\n\r\n\r\n isXBRLDocument: boolean;\r\n\r\n filing_type: number;\r\n\r\n /**\r\n * fact_id from the fact_text table\r\n * */\r\n fact_id: number;\r\n\r\n /**\r\n * network_id from the network table\r\n * */\r\n network_id: number;\r\n\r\n footnote_type_title: FootnoteTypeTitle\r\n\r\n SEC_URL: string;\r\n\r\n /**\r\n * Date the document was filed with the SEC\r\n * */\r\n filing_date: TextFootnote['filing_date'];\r\n\r\n fiscal_period: FiscalPeriod;\r\n\r\n fiscal_year: number;\r\n\r\n document_type: string;\r\n\r\n clickable: boolean;\r\n\r\n guide_link: null;\r\n\r\n entity_name: string;\r\n\r\n entity_id: number;\r\n\r\n entity_ticker: string;\r\n\r\n searchType: FootnoteType;\r\n\r\n localName: string;\r\n\r\n isDetail: boolean;\r\n\r\n content: DisclosureContents\r\n\r\n APIdata: TextFootnote;\r\n\r\n /**\r\n * Pass this to the API. For XBRL tagged notes this is the DisclosureCategory as defined by the FASB\r\n * */\r\n disclosure_type_name: string;\r\n\r\n includeInExport: boolean;\r\n\r\n /**\r\n * This is the footnote the user has selected\r\n * */\r\n selected: boolean;\r\n\r\n isTextDocument = true;\r\n\r\n displayAs = DisplayAs.IFrame\r\n\r\n exportableTables = true;\r\n\r\n showPreviousPeriod = true;\r\n\r\n periodParams: PeriodParams;\r\n\r\n groupByKey: string\r\n\r\n /**\r\n * text rendered in the list\r\n */\r\n get title() {\r\n return this._title || this.APIdata.description\r\n }\r\n\r\n set title(t: string) {\r\n this._title = t\r\n }\r\n\r\n public CIK: string\r\n\r\n private _title: string\r\n\r\n // This used to be the way to set the SEC_anchorText, override the SEC_anchorText accessor, akittredge June 2021\r\n protected _SEC_anchorText: string\r\n\r\n public get SEC_anchorText() {\r\n return this._SEC_anchorText\r\n }\r\n\r\n blob_id: string;\r\n\r\n footnoteQueryParams: FootnoteQueryParams\r\n\r\n active: boolean\r\n\r\n queryParams: IDisclosureAPIParams;\r\n\r\n all_periods: Array\r\n\r\n page_url?: string\r\n\r\n /**\r\n * Error recieved when attempting to get the contents.\r\n * */\r\n errorMessage: string;\r\n\r\n /**\r\n * This is used by the various templates that render the documents\r\n * */\r\n contents: DisclosureContents;\r\n\r\n constructor(data: TextFootnote,\r\n otherFootnotes: FootnoteList,\r\n searchType: FootnoteType,\r\n protected $q: angular.IQService,\r\n protected calcbenchAPI: CalcbenchAPI,\r\n protected $uibModal: angular.ui.bootstrap.IModalService,\r\n protected $http: angular.IHttpService) {\r\n this.isXBRLDocument = data.is_XBRL_document;\r\n this.otherFootnotes = otherFootnotes;\r\n this.accession_id = data.accession_id;\r\n this.footnote_type = data.footnote_type;\r\n this.filing_type = data.filing_type;\r\n this.fact_id = data.fact_id;\r\n this.network_id = data.network_id;\r\n this.footnote_type_title = data.footnote_type_title;\r\n this.SEC_URL = data.SEC_URL;\r\n this.filing_date = data.filing_date;\r\n this.fiscal_period = data.fiscal_period;\r\n this.fiscal_year = data.fiscal_year;\r\n this.document_type = data.document_type;\r\n this.clickable = true;\r\n this.guide_link = data.guide_link;\r\n this.entity_name = data.entity_name;\r\n this.entity_id = data.entity_id;\r\n this.entity_ticker = data.ticker;\r\n this.searchType = searchType;\r\n this.localName = data.local_name;\r\n this.isDetail = data.is_detail;\r\n this.content = data.content; // For tracing the content is included in the search results.\r\n this.APIdata = data; // Matches TextFootnote type on the server. \r\n this.disclosure_type_name = data.disclosure_type_name;\r\n this.CIK = data.CIK\r\n this.DateReported = data.date_reported\r\n }\r\n\r\n select() {\r\n this.otherFootnotes.map(f => f.selected = f.includeInExport = false)\r\n this.selected = this.includeInExport = true\r\n this.otherFootnotes.lastFootnoteSelected = this\r\n }\r\n\r\n async getContents(cancellerPromise?: angular.IPromise): Promise {\r\n return this.content ? this.content : this._getContents(cancellerPromise);\r\n }\r\n /**\r\n * Override this to specify how various disclosure types get their contents\r\n * @param cancellerPromise\r\n */\r\n abstract _getContents(cancellerPromise: angular.IPromise): Promise\r\n\r\n findSimilarFootnote(footnotes: FootnoteList) {\r\n return footnotes.find(f => f.entity_name === this.entity_name)\r\n }\r\n\r\n getContentsForExport(): string {\r\n const { content } = this;\r\n const blobDisplay = content.blobs.join(BLOB_SEPARATOR);\r\n let pretext = `${this.entity_name} ${this.document_type}:
${content.label ? `${content.label}
` : ''}`;\r\n if (content.display_end_date) pretext += `Period Ending: ${content.display_end_date} `;\r\n pretext += `(from ${this.document_type} reported on: ${content.display_filing_date})

`;\r\n return pretext + blobDisplay;\r\n }\r\n\r\n getPreviousPeriodDocument(factID?: number) {\r\n const peerGroup = { calcbenchEntityIDs: [this.entity_id] }\r\n let queryParams = {} as IDisclosureAPIParams\r\n let previousPeriodParams = {} as PeriodParams;\r\n let searchType = this.getPreviousPeriodSearchType()\r\n const previousPeriodQueryParams = this.getPreviousPeriodQueryParams();\r\n if (factID) {\r\n queryParams.historyFactID = factID\r\n searchType = FootnoteType.SingleCompany\r\n } else {\r\n previousPeriodParams = this.previousPeriodPeriodParams\r\n queryParams = previousPeriodQueryParams\r\n }\r\n return this.getOtherPeriodDocument(searchType, queryParams, peerGroup, previousPeriodParams);\r\n }\r\n\r\n private get previousPeriodPeriodParams() {\r\n if ([PeriodType.MostRecent, PeriodType.DateRange].includes(this.periodParams.periodType)) {\r\n const thisDocumentPeriodParams = this.periodParams.clone()\r\n thisDocumentPeriodParams.period = XBRLPeriodToAPIPeriod[this.fiscal_period]\r\n thisDocumentPeriodParams.year = this.fiscal_year\r\n thisDocumentPeriodParams.useFiscalPeriod = true;\r\n thisDocumentPeriodParams.periodType = this.fiscal_period === FiscalPeriod.Annual ? PeriodType.Annual : PeriodType.Quarterly\r\n thisDocumentPeriodParams.rangeOption = RangeOption.SINGLE_PERIOD\r\n return thisDocumentPeriodParams.previousPeriod()\r\n }\r\n return this.periodParams.previousPeriod();\r\n\r\n }\r\n\r\n protected async getOtherPeriodDocument(searchType: FootnoteType,\r\n queryParams: IDisclosureAPIParams,\r\n peerGroup: ICompanyAPIParams,\r\n previousPeriodParams: PeriodParams) {\r\n const fakeQueryCanceler = this.$q.defer(); // This should really be the queryCanceler from the FootnoteListController, but getting that would be a pain. akittredge, March 2017.\r\n const data = await this.calcbenchAPI.searchForFootnotes(queryParams, peerGroup, previousPeriodParams.getAPIParams(), fakeQueryCanceler);\r\n const matchingDocs = data.footnotes.map(document => buildFootnote(searchType, document, new FootnoteList(), queryParams, previousPeriodParams, peerGroup, this.footnoteQueryParams, this.$http, this.$q, this.$uibModal, this.calcbenchAPI));\r\n let foundDoc = this.findMatchingDocument(matchingDocs);\r\n\r\n if (!foundDoc) {\r\n foundDoc = buildFootnote(FootnoteType.MissingDocument, {} as TextFootnote, new FootnoteList(), queryParams, previousPeriodParams, peerGroup, this.footnoteQueryParams, this.$http, this.$q, this.$uibModal, this.calcbenchAPI);\r\n foundDoc.searchType = searchType; // So the search still works.\r\n }\r\n return foundDoc\r\n }\r\n\r\n getNextPeriodDocument() {\r\n return this.getOtherPeriodDocument(\r\n this.getPreviousPeriodSearchType(),\r\n this.getPreviousPeriodQueryParams(),\r\n { calcbenchEntityIDs: [this.entity_id] },\r\n this.periodParams.nextPeriod()\r\n );\r\n }\r\n\r\n /**\r\n * Params minus period specific properties\r\n * */\r\n getPreviousPeriodQueryParams(): IDisclosureAPIParams {\r\n const previousPeriodParams = _.clone(this.queryParams) as IDisclosureAPIParams;\r\n previousPeriodParams.XBRLFactIdentifier = null;\r\n previousPeriodParams.blobID = null;\r\n previousPeriodParams.accessionID = null\r\n return previousPeriodParams;\r\n }\r\n\r\n getPreviousPeriodSearchType() {\r\n return this.searchType\r\n }\r\n\r\n async getAllHistory() {\r\n const peerGroup = { calcbenchEntityIDs: [this.entity_id] };\r\n const periodParams = { allHistory: true };\r\n const fakeQueryCanceler = this.$q.defer();\r\n const doneGettingDocuments = this.$q.defer();\r\n const data = await this.calcbenchAPI.searchForFootnotes(this.getAllHistoryQueryParams(), peerGroup, periodParams, fakeQueryCanceler)\r\n const foundDocs = data && data.footnotes.map(document => buildFootnote(\r\n this.getPreviousPeriodSearchType(),\r\n document,\r\n new FootnoteList(),\r\n this.getPreviousPeriodQueryParams(),\r\n null,\r\n peerGroup,\r\n this.footnoteQueryParams,\r\n this.$http,\r\n this.$q,\r\n this.$uibModal,\r\n this.calcbenchAPI\r\n ));\r\n doneGettingDocuments.resolve(foundDocs)\r\n\r\n return doneGettingDocuments.promise\r\n }\r\n\r\n widenOut(apidata) {\r\n const peerGroup = { calcbenchEntityIDs: [this.entity_id] };\r\n const queryParams = {} as IDisclosureAPIParams;\r\n const previousPeriodParams = {} as PeriodParams;\r\n const that = this;\r\n const doneGettingPreviousFootnote = this.$q.defer();\r\n const previousFootnote = buildFootnote(FootnoteType.FootnoteType, apidata, new FootnoteList(), queryParams, previousPeriodParams, peerGroup, that.footnoteQueryParams, this.$http, this.$q, this.$uibModal, this.calcbenchAPI);\r\n doneGettingPreviousFootnote.resolve(previousFootnote);\r\n return doneGettingPreviousFootnote.promise;\r\n }\r\n\r\n getAllHistoryQueryParams(): IDisclosureAPIParams {\r\n return this.getPreviousPeriodQueryParams()\r\n }\r\n\r\n findMatchingDocument(documents: Footnote[]) {\r\n return documents[0];\r\n }\r\n\r\n\r\n get canExportNonXBRLData(): boolean {\r\n return [3, 4, 8, 9].includes(this.filing_type)\r\n\r\n }\r\n\r\n exportNonXBRLData() {\r\n // api/pressReleaseDataBYID\r\n // const exportForm = angular.element(\"#nonXBRLDataExportForm\");\r\n // exportForm.find(':input#exportsecfilingid').val(this.APIdata.sec_filing_id); // this.accession_id);\r\n // exportForm.trigger('submit');\r\n\r\n window.open(`http://sheet.calcbench.com?sec_filing_id=${ this.APIdata.sec_filing_id}`);\r\n\r\n }\r\n\r\n\r\n\r\n /**\r\n * Override this in subclasses for custom behavior.\r\n * @param documentHTML\r\n */\r\n preProcessHTML(documentHTML: JQLite) {\r\n void 0\r\n }\r\n\r\n getPeriodID() {\r\n return (this.network_id || this.blob_id || this.fact_id)?.toString();\r\n }\r\n\r\n displayInModal() {\r\n this.$uibModal.open({\r\n component: 'documentModal',\r\n resolve: {\r\n document: this\r\n },\r\n size: 'lg',\r\n windowClass: 'documentModal'\r\n });\r\n }\r\n\r\n /**\r\n * Unique identifier for this document. Has the form \"b-234\".\r\n * */\r\n getDisclosureID(): string {\r\n const [identifierScheme, identifier] = this.identifierAndType\r\n return `${identifierScheme}-${identifier}`\r\n }\r\n\r\n public URL($location: angular.ILocationService, $httpParamSerializer: angular.IHttpParamSerializer): string {\r\n return `https://${$location.host()}:${$location.port()}/disclosures?${$httpParamSerializer(this.URLParams())}`;\r\n }\r\n\r\n protected URLParams(): Dictionary {\r\n const URLparams = {};\r\n const [identifierScheme, disclosureIdentifier] = this.identifierAndType\r\n URLparams[`${URLnameSpace}searchingBy`] = identifierScheme\r\n URLparams[`${URLnameSpace}${identifierScheme}`] = disclosureIdentifier\r\n const peerGroup = PeerGroupInstance.fromTicker(this.entity_ticker)\r\n const peerGroupURLParams = peerGroup.urlParams()\r\n return { ...peerGroupURLParams, ...URLparams }\r\n }\r\n\r\n protected get identifierAndType(): [DocumentIdentifierScheme, string | number | ArcRole] {\r\n let disclosureIdentifier: string | number\r\n let identifierScheme: DocumentIdentifierScheme\r\n\r\n if (this.fact_id && this.fact_id > 0) {\r\n disclosureIdentifier = this.fact_id\r\n identifierScheme = DocumentIdentifierScheme.Fact\r\n } else if (this.network_id && this.network_id > 0) {\r\n disclosureIdentifier = this.network_id\r\n identifierScheme = DocumentIdentifierScheme.Network\r\n } else if (this.blob_id && this.blob_id !== '') {\r\n disclosureIdentifier = this.blob_id\r\n identifierScheme = DocumentIdentifierScheme.Blob\r\n }\r\n return [identifierScheme, disclosureIdentifier]\r\n }\r\n\r\n /**\r\n * The \"disclosure type\" argument for the excel argument of the form CalcbenchDisclosureTextFiscalPeriod('msft', identifierForExcelAddIn\r\n * */\r\n get identifierForExcelAddIn() {\r\n if ((this.footnote_type <= 200) && this.localName) {\r\n return this.localName\r\n }\r\n return this.disclosure_type_name || this.title\r\n\r\n }\r\n}\r\n\r\n","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { FootnoteList } from \"../footnoteList\"\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\n\r\n\r\nexport class FootnoteTypeFootnote extends Footnote {\r\n page_url: string;\r\n\r\n sec_filing_id: number;\r\n\r\n static searchType = FootnoteType.FootnoteType\r\n\r\n constructor(APIdata: TextFootnote,\r\n otherFootnotes: FootnoteList,\r\n showPeriodAndYearInAnchorText: boolean,\r\n searchType: FootnoteType,\r\n $q: angular.IQService,\r\n calcbenchAPI: CalcbenchAPI,\r\n $uibModal: angular.ui.bootstrap.IModalService,\r\n $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n this.groupByKey = null;\r\n if (this.sec_filing_id) this.groupByKey = `${APIdata.entity_name} ${APIdata.received_date}`;\r\n this.blob_id = APIdata.blob_id;\r\n this.page_url = APIdata.page_url;\r\n otherFootnotes.showKey = false;\r\n this._SEC_anchorText = this.document_type;\r\n if (showPeriodAndYearInAnchorText && this.fiscal_period) this._SEC_anchorText = `${this.document_type}: ${this.fiscal_period}-${this.fiscal_year}`;\r\n if (APIdata.footnote_type === 304) this.title += ' (prelim)';\r\n }\r\n\r\n async _getContents(cancellerPromise) {\r\n let contents: DisclosureContents\r\n if (this.sec_filing_id) {\r\n contents = await this.calcbenchAPI.disclosureContentsBySECLink(\r\n this.sec_filing_id,\r\n this.blob_id,\r\n cancellerPromise\r\n )\r\n } if (this.network_id) {\r\n const responseData = await this.calcbenchAPI.disclosureByNetworkID(this.network_id, cancellerPromise)\r\n if (!responseData.disclosure_type || responseData.disclosure_type < 0) {\r\n responseData.disclosure_type = this.footnote_type;\r\n }\r\n contents = responseData\r\n } if (this.fact_id) {\r\n contents = await this.calcbenchAPI.disclosureByFactID(this.fact_id, cancellerPromise)\r\n }\r\n this.content = contents\r\n return contents\r\n }\r\n}\r\n","import { Dictionary } from \"lodash\";\r\nimport { CalcbenchAPI, ICompanyAPIParams, IDisclosureAPIParams } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { PeriodParams } from \"../../shared/periods/periodParams\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { URLnameSpace } from \"../footnoteQueryParameters\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { highlightSearchTerms } from \"./highlighting\";\r\n\r\nexport class FullTextFootnote extends Footnote {\r\n /**\r\n * id from the secfilings table\r\n */\r\n sec_filing_id: number;\r\n\r\n title_SEC_anchorText: string;\r\n\r\n groupTitle: string;\r\n\r\n static searchType = FootnoteType.FullText;\r\n\r\n showPreviousPeriod = true;\r\n\r\n constructor(APIdata: TextFootnote,\r\n otherFootnotes: FootnoteList,\r\n searchType: FootnoteType,\r\n $q: angular.IQService,\r\n calcbenchAPI: CalcbenchAPI,\r\n $uibModal: angular.ui.bootstrap.IModalService,\r\n $http: angular.IHttpService,\r\n queryParams: IDisclosureAPIParams) {\r\n super(APIdata, otherFootnotes, FullTextFootnote.searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n this.groupByKey = this.sec_filing_id ? this.entity_name + this.sec_filing_id : this.entity_name + APIdata.accession_id + APIdata.description.split(' (detail)')[0]; // This might have to get more complicated.\r\n this.groupTitle = `${this.entity_name} (${this.entity_ticker})`;\r\n this.blob_id = APIdata.blob_id;\r\n this.page_url = APIdata.page_url;\r\n this.otherFootnotes.showKey = true;\r\n\r\n if (this.fiscal_year) {\r\n this.title_SEC_anchorText = `${this.document_type}: ${this.fiscal_period}-${this.fiscal_year}`;\r\n } else if (this.filing_date) {\r\n const fdate = new Date(this.filing_date);\r\n const day = fdate.getDate();\r\n const monthIndex = fdate.getMonth() + 1;\r\n const year = fdate.getFullYear();\r\n this.title_SEC_anchorText = `${this.document_type}: ${monthIndex}/${day}/${year}`;\r\n }\r\n }\r\n\r\n get fullTextQuery() {\r\n return this.footnoteQueryParams.fullTextQuery\r\n }\r\n\r\n async _getContents(cancellerPromise: angular.IPromise) {\r\n let contents: DisclosureContents\r\n if (this.sec_filing_id) {\r\n contents = await this.calcbenchAPI.disclosureContentsBySECLink(\r\n this.sec_filing_id, \r\n this.blob_id,\r\n cancellerPromise\r\n )\r\n } else {\r\n contents = await this.calcbenchAPI.disclosureByFactID(\r\n this.fact_id,\r\n cancellerPromise,\r\n 'fulltext'\r\n )\r\n }\r\n this.content = contents\r\n return contents\r\n }\r\n\r\n getPreviousPeriodQueryParams() {\r\n if (this.isDetail) {\r\n return { footnoteTag: this.localName } as IDisclosureAPIParams\r\n }\r\n return { footnoteType: this.footnote_type } as IDisclosureAPIParams\r\n\r\n }\r\n\r\n preProcessHTML($contents: JQuery) {\r\n highlightSearchTerms(this.fullTextQuery, $contents)\r\n }\r\n\r\n getPreviousPeriodSearchType() {\r\n return this.isDetail ? FootnoteType.Tag : FootnoteType.FootnoteType;\r\n }\r\n\r\n /**\r\n * Highlight the search term when we get docs for other periods\r\n * @param searchType\r\n * @param queryParams\r\n * @param peerGroup\r\n * @param previousPeriodParmas\r\n */\r\n async getOtherPeriodDocument(searchType: FootnoteType, queryParams: IDisclosureAPIParams, peerGroup: ICompanyAPIParams, previousPeriodParmas: PeriodParams) {\r\n const document = await super.getOtherPeriodDocument(searchType, queryParams, peerGroup, previousPeriodParmas)\r\n\r\n document.preProcessHTML = d => this.preProcessHTML(d)\r\n return document\r\n\r\n }\r\n\r\n /**\r\n * Highlight the search term\r\n * */\r\n getAllHistory() {\r\n return super.getAllHistory().then(footnotes => footnotes.map(f => {\r\n f.preProcessHTML = d => this.preProcessHTML(d)\r\n return f\r\n }))\r\n }\r\n\r\n protected URLParams(): Dictionary {\r\n const urlParams = super.URLParams();\r\n urlParams[`${URLnameSpace}${FootnoteType.FullText}`] = this.fullTextQuery\r\n return urlParams;\r\n }\r\n}","import { DocumentGroup } from \"../DocumentGroup\";\r\n\r\n\r\n/**\r\n * items that appear in single company mode should implement this\r\n * */\r\nexport interface HasSingleCompanySection {\r\n singleCompanySection: DocumentGroup\r\n}\r\n\r\n\r\nexport function isInstanceOfHasSingleCompanySection(footnote: any): footnote is HasSingleCompanySection {\r\n return 'singleCompanySection' in footnote\r\n}\r\n","import { CalcbenchAPI, ICompanyAPIParams } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { PeriodParams } from \"../../shared/periods/periodParams\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\n\r\n\r\nexport class MissingDocument extends Footnote {\r\n constructor(data: TextFootnote, otherFootnotes: FootnoteList, searchType: FootnoteType,\r\n $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService, private peerGroupParams: ICompanyAPIParams, periodParams: PeriodParams) {\r\n super({ entity_id: peerGroupParams.calcbenchEntityIDs[0] } as TextFootnote, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.periodParams = periodParams;\r\n }\r\n\r\n static searchType = FootnoteType.MissingDocument\r\n\r\n async _getContents() {\r\n return this.$q.reject('No document found');\r\n }\r\n\r\n getPeriodID() {\r\n return `${this.periodParams.year}${this.periodParams.period}`;\r\n }\r\n}\r\n","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { SingleCompanyFootnote } from \"./SingleCompanyFootnote\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\n\r\nexport class NonXBRLTable extends SingleCompanyFootnote {\r\n /*\r\n * This is setup for changing the periods in the trace window.\r\n * */\r\n constructor(APIdata: ITraceDisclosure, otherFootnotes: FootnoteList, searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService,\r\n $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, null, searchType, $q, calcbenchAPI, $uibModal, $http, false)\r\n }\r\n\r\n static searchType = FootnoteType.NonXBRLTable;\r\n\r\n findSimilarFootnote() {\r\n return this.otherFootnotes[0]; // We should only be getting one result.\r\n }\r\n}","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { NormalizedMetricTrace } from \"./NormalizedMetricTrace\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\n\r\nexport class NormalizedBreakoutMetricTrace extends NormalizedMetricTrace {\r\n page_url: any;\r\n\r\n constructor(APIdata: ITraceDisclosure,\r\n otherFootnotes: FootnoteList,\r\n searchType: FootnoteType,\r\n $q: angular.IQService,\r\n calcbenchAPI: CalcbenchAPI,\r\n $uibModal: angular.ui.bootstrap.IModalService,\r\n $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.numerical_fact_id = APIdata.numerical_fact_id;\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n }\r\n\r\n async _getContents(cancellerPromise) {\r\n let contents: DisclosureContents\r\n if (this.sec_filing_id) {\r\n contents = await this.calcbenchAPI.disclosureContentsBySECLink(\r\n this.sec_filing_id, \r\n this.blob_id,\r\n cancellerPromise\r\n )\r\n } else {\r\n contents = await this.calcbenchAPI.disclosureByFactID(\r\n this.fact_id,\r\n cancellerPromise,\r\n 'NormalizedBreakout'\r\n )\r\n }\r\n this.contents = contents\r\n return contents\r\n }\r\n}","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\nimport { FaceStatement } from \"../../shared/calcbenchAPI/faceStatement/FaceStatement\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { NormalizedMetricTrace } from \"./NormalizedMetricTrace\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { highlightXBRLFacts } from \"./highlighting\";\r\nimport { formatFact } from \"../../shared/filters/formatFact\";\r\nimport { XBRLFactIdAttribute } from \"../constants\";\r\n\r\n\r\n\r\nexport class NormalizedFaceMetricTrace extends NormalizedMetricTrace {\r\n statementType: any\r\n\r\n constructor(APIdata: ITraceDisclosure, otherFootnotes: FootnoteList, searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.statementType = APIdata.statementType;\r\n }\r\n\r\n get title(): string {\r\n return `${this.APIdata.description}: ${(this.APIdata).formatted_value}`;\r\n }\r\n\r\n async _getContents() {\r\n let response: ng.IHttpResponse\r\n if (this.fact_id) {\r\n response = await this.calcbenchAPI.statementFromFact(this.fact_id);\r\n } else {\r\n response = await this.calcbenchAPI.statementFromAccession(this.accession_id, this.statementType, this.periodParams.periodType);\r\n }\r\n if (!response.data.columns) {\r\n alert('Statement Not Available For The Selected Period');\r\n return false;\r\n }\r\n const content = {} as DisclosureContents\r\n content.label = response.data.name\r\n content.blobs = [NormalizedFaceMetricTrace.renderStatement(response.data)[0].outerHTML]\r\n this.entity_name = response.data.entity_name\r\n this.content = content\r\n return content\r\n }\r\n\r\n static renderStatement(statement: FaceStatement) {\r\n if (!statement) return null;\r\n if (!statement.columns) return null;\r\n $('#statement').removeAttr('style');\r\n const $html = $('
');\r\n const $th = $('');\r\n $html.append($th);\r\n\r\n $th.append(`${statement.entity_name}`)\r\n\r\n $.each(statement.columns, (idx, col) => {\r\n $th.append(`${col.fiscal_period}`);\r\n });\r\n\r\n\r\n const $th2 = $('');\r\n $html.append($th2);\r\n\r\n $.each(statement.columns, (idx, col) => {\r\n const ed = NormalizedFaceMetricTrace.dateFromISO(col.period_end);\r\n\r\n const day = ed.getDate()\r\n const month = ed.getMonth() + 1\r\n const year = ed.getFullYear()\r\n const title = `${month}-${day}-${year}`;\r\n $th2.append(`${title}`);\r\n });\r\n\r\n\r\n $.each(statement.line_items, (idx, line) => {\r\n const $tr = $('');\r\n $html.append($tr);\r\n const $labeltd = $(`${line.label}`);\r\n const indents = line.tree_depth - 1;\r\n\r\n if (indents > 0) $labeltd.css('padding-left', (indents * 10));\r\n\r\n $tr.append($labeltd);\r\n\r\n if (line.hasOwnProperty('facts')) {\r\n $.each(line.facts, (idx, fact) => {\r\n let focus = ''\r\n if (fact.hasOwnProperty('focus') && fact.focus) {\r\n focus = ' factfocus'\r\n };\r\n if (fact.hasOwnProperty('focus_negative') && fact.focus_negative) { focus = ' factfocus factfocusneg' };\r\n $tr.append(`${formatFact(fact.effective_value, { format_type: fact.format_type })}`);\r\n });\r\n } else { $labeltd.attr('colspan', '100').css('font-weight', 'bold'); }\r\n if (line.is_subtotal) $tr.addClass('rowtotal');\r\n });\r\n\r\n return ($html);\r\n }\r\n\r\n static dateFromISO(s) {\r\n if (!s) return '';\r\n\r\n let day; let tz;\r\n const rx = /^(\\d{4}\\-\\d\\d\\-\\d\\d([tT ][\\d:\\.]*)?)([zZ]|([+\\-])(\\d\\d):(\\d\\d))?$/;\r\n const p = rx.exec(s) || [];\r\n if (p[1]) {\r\n day = p[1].split(/\\D/);\r\n for (let i = 0, L = day.length; i < L; i++) {\r\n day[i] = parseInt(day[i], 10) || 0;\r\n };\r\n day[1] -= 1;\r\n day = new Date(Date.UTC.apply(Date, day));\r\n if (!day.getDate()) return NaN;\r\n if (p[5]) {\r\n tz = (parseInt(p[5], 10) * 60);\r\n if (p[6]) tz += parseInt(p[6], 10);\r\n if (p[4] === '+') tz *= -1;\r\n if (tz) day.setUTCMinutes(day.getUTCMinutes() + tz);\r\n }\r\n return day;\r\n }\r\n return NaN;\r\n\r\n }\r\n\r\n\r\n preProcessHTML($contents: JQLite) {\r\n highlightXBRLFacts($contents, [this.fact_id], this.negative_weight);\r\n }\r\n\r\n static searchType = FootnoteType.NormalizedFaceMetric;\r\n\r\n exportableTables = false;\r\n\r\n showPreviousPeriod = false;\r\n}\r\n","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { NormalizedMetricTrace } from \"./NormalizedMetricTrace\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { highlightNonXBRLFacts, highlightXBRLFacts } from \"./highlighting\";\r\n\r\nexport class NormalizedFootnoteMetricTrace extends NormalizedMetricTrace {\r\n page_url: any;\r\n\r\n is_detail: any;\r\n\r\n constructor(APIdata: ITraceDisclosure, otherFootnotes: FootnoteList, searchType: FootnoteType, $q: angular.IQService,\r\n calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n // NormalizedMetricTrace.call(this, APIdata, otherFootnotes, pageQueryParams);\r\n this.numerical_fact_id = APIdata.numerical_fact_id;\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n\r\n }\r\n\r\n async _getContents(cancellerPromise) {\r\n // var that = this;\r\n if (this.sec_filing_id) {\r\n return this.content = await this.calcbenchAPI.disclosureByFactID(this.fact_id, cancellerPromise)\r\n\r\n }\r\n\r\n const responseData = await this.calcbenchAPI.disclosureByFactID(\r\n this.fact_id,\r\n cancellerPromise,\r\n 'NormalizedFootnote'\r\n )\r\n responseData.is_detail = this.is_detail;\r\n if (this.is_detail) {\r\n responseData.network_id = this.network_id; // the 'widen out' network id\r\n }\r\n return this.content = responseData\r\n\r\n }\r\n\r\n preProcessHTML($contents) {\r\n if (this.sec_filing_id) {\r\n highlightNonXBRLFacts($contents, [this.numerical_fact_id], this.negative_weight);\r\n } else {\r\n highlightXBRLFacts($contents, [this.numerical_fact_id], this.negative_weight);\r\n }\r\n }\r\n\r\n get SEC_anchorText(): string {\r\n return this.queryParams.allHistory && `${this.fiscal_period}-${this.fiscal_year}`;\r\n }\r\n}\r\n","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\n\r\nexport abstract class NormalizedMetricTrace extends Footnote {\r\n sec_filing_id: number;\r\n\r\n negative_weight: boolean;\r\n\r\n numerical_fact_id: number;\r\n\r\n constructor(APIdata: ITraceDisclosure, otherFootnotes: FootnoteList, searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n this.groupByKey = this.entity_name;\r\n otherFootnotes.showKey = true;\r\n this.clickable = Boolean(this.fact_id | this.sec_filing_id);\r\n this.negative_weight = APIdata.negative_weight;\r\n }\r\n\r\n get title(): string {\r\n return `${this.queryParams.normalizedFootnoteMetric}: ${(this.APIdata).formatted_value}`;\r\n }\r\n}\r\n","import _ from \"lodash\";\r\nimport { CalcbenchAPI, FootnoteTypeTitle, IDisclosureAPIParams } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { DocumentGroup } from \"../DocumentGroup\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { HasSingleCompanySection } from './HasSingleCompanySection'\r\nimport { highlightXBRLFacts, highlightNonXBRLFacts } from \"./highlighting\"\r\n\r\nexport class SingleCompanyFootnote extends Footnote implements HasSingleCompanySection {\r\n sec_filing_id: number;\r\n\r\n page_url: string;\r\n\r\n numerical_fact_id: number;\r\n\r\n nonXBRLFiling: boolean;\r\n\r\n numerical_fact_ids?: number[];\r\n\r\n negated_fact_ids?: number[];\r\n\r\n singleCompanySection: DocumentGroup\r\n\r\n constructor(APIdata: TextFootnote | ITraceDisclosure,\r\n otherFootnotes: FootnoteList,\r\n numericalFactIdentifier: number,\r\n searchType: FootnoteType,\r\n $q: angular.IQService,\r\n calcbenchAPI: CalcbenchAPI,\r\n $uibModal: angular.ui.bootstrap.IModalService,\r\n $http: angular.IHttpService,\r\n showPeriodAndYearInAnchorText: boolean) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n\r\n otherFootnotes.showKey = true;\r\n this.groupByKey = this.footnote_type_title;\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n this.blob_id = APIdata.blob_id;\r\n this.page_url = APIdata.page_url;\r\n this.numerical_fact_id = numericalFactIdentifier;\r\n if ((APIdata).numerical_fact_ids) {\r\n this.numerical_fact_ids = (APIdata).numerical_fact_ids;\r\n }\r\n if ((APIdata).negated_fact_ids) {\r\n this.negated_fact_ids = (APIdata).negated_fact_ids;\r\n }\r\n\r\n if ((APIdata).nonXBRLFiling) {\r\n this.nonXBRLFiling = (APIdata).nonXBRLFiling;\r\n }\r\n // to exclude nonfinancial 8-Ks \r\n if (this.footnote_type && this.filing_date && this.footnote_type > 200 && this.footnote_type < 400) {\r\n const fdate = new Date(this.filing_date);\r\n const day = fdate.getDate();\r\n const monthIndex = fdate.getMonth() + 1;\r\n const year = fdate.getFullYear();\r\n this._SEC_anchorText = `${this.document_type}: ${monthIndex}/${day}/${year}`;\r\n } else if (showPeriodAndYearInAnchorText && this.fiscal_period && this.fiscal_year) {\r\n this._SEC_anchorText = `${this.document_type}: ${this.fiscal_period}-${this.fiscal_year}`;\r\n }\r\n }\r\n\r\n async _getContents(cancellerPromise: angular.IPromise) {\r\n let contents: DisclosureContents\r\n\r\n // first check if blob specified?!\r\n if (this.fact_id) {\r\n contents = await this.calcbenchAPI.disclosureByFactID(this.fact_id, cancellerPromise)\r\n } if (this.sec_filing_id) {\r\n contents = await this.calcbenchAPI.disclosureContentsBySECLink(\r\n this.sec_filing_id,\r\n this.blob_id,\r\n cancellerPromise\r\n )\r\n } else { \r\n contents = await this.calcbenchAPI.disclosureByNetworkID(this.network_id, cancellerPromise)\r\n if (!contents.disclosure_type || contents.disclosure_type < 0) {\r\n contents.disclosure_type = this.footnote_type;\r\n }\r\n \r\n }\r\n\r\n this.content = contents\r\n return contents\r\n }\r\n\r\n preProcessHTML(documentHTML: JQLite) {\r\n let factIDs = this.numerical_fact_id ? [this.numerical_fact_id] : (this.numerical_fact_ids ? this.numerical_fact_ids : [])\r\n const negatedFactIDs = (this.negated_fact_ids ? this.negated_fact_ids : [])\r\n if (negatedFactIDs.length > 0) {\r\n factIDs = factIDs.filter(x => !negatedFactIDs.includes(x));\r\n }\r\n\r\n\r\n if (factIDs.length > 0) {\r\n if (this.isXBRLDocument) {\r\n highlightXBRLFacts(documentHTML, factIDs)\r\n if (negatedFactIDs.length > 0) highlightXBRLFacts(documentHTML, negatedFactIDs, true)\r\n } else {\r\n highlightNonXBRLFacts(documentHTML, factIDs)\r\n if (negatedFactIDs.length > 0) highlightNonXBRLFacts(documentHTML, negatedFactIDs, true)\r\n }\r\n }\r\n }\r\n\r\n findSimilarFootnote(footnotes: FootnoteList) {\r\n return _.find(footnotes, footnote => footnote.footnote_type === this.footnote_type)\r\n }\r\n\r\n findMatchingDocument = SingleCompanyFootnote.prototype.findSimilarFootnote;\r\n\r\n static searchType = FootnoteType.SingleCompany\r\n\r\n select() {\r\n Footnote.prototype.select.call(this);\r\n this.footnoteQueryParams.setFootnoteType(this.footnote_type);\r\n }\r\n\r\n getAllHistoryQueryParams() {\r\n return { footnoteType: this.footnote_type } as IDisclosureAPIParams\r\n }\r\n\r\n /**\r\n * Should go in the Notes to the Financial Statements Section \r\n * */\r\n public get isXBRLNote() {\r\n return this.isXBRLDocument && !this.isFaceStatement && ![FootnoteTypeTitle.PolicyTextBlock, FootnoteTypeTitle.TextBlock, FootnoteTypeTitle.EigthKsByItemType].includes(this.footnote_type_title)\r\n }\r\n}\r\n\r\n","import _ from \"lodash\";\r\nimport { CalcbenchAPI, IDisclosureAPIParams } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { TagFootnote } from \"./TagFootnote\";\r\n\r\nexport class SingleCompanyTagFootnote extends TagFootnote {\r\n static searchType = FootnoteType.SingleCompany\r\n\r\n constructor(APIData: TextFootnote, otherFootnotes: FootnoteList,\r\n allHistory: boolean, searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIData, otherFootnotes, allHistory, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n }\r\n\r\n findSimilarFootnote(footnotes: FootnoteList) {\r\n return _.find(footnotes, footnote => footnote.localName === this.localName)\r\n }\r\n\r\n findMatchingDocument = this.findSimilarFootnote;\r\n\r\n getAllHistoryQueryParams() {\r\n return { allHistory: true, footnoteTag: this.localName } as IDisclosureAPIParams\r\n }\r\n}\r\n\r\n","import { IFaceStatementMenuHandler } from \"../../companyInDetail/IFaceStatementMenuHandler\";\r\nimport { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { PeriodType } from \"../../shared/periods/constants\";\r\nimport { DocumentGroup } from \"../DocumentGroup\";\r\nimport { DisplayAs } from \"../footnoteFactory\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { HasSingleCompanySection } from \"./HasSingleCompanySection\";\r\n\r\n/**\r\n * Renders face statement\r\n * \r\n * */\r\nexport class Table extends Footnote implements HasSingleCompanySection {\r\n public singleCompanySection: DocumentGroup;\r\n\r\n contents: any\r\n\r\n cidController: IFaceStatementMenuHandler;\r\n\r\n company: { ticker: string; entity_id: number; };\r\n\r\n abbreviatedStatementType: number;\r\n\r\n companyController: {};\r\n\r\n constructor(APIdata: TextFootnote, otherFootnotes: FootnoteList, searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.SEC_URL = APIdata.SEC_URL\r\n this.cidController = { accessionID: APIdata.accession_id, periodType: PeriodType.Filing };\r\n this.company = { ticker: APIdata.ticker, entity_id: APIdata.entity_id };\r\n this.abbreviatedStatementType = APIdata.footnote_type;\r\n this.companyController = {};\r\n }\r\n\r\n static searchType = FootnoteType.Table\r\n\r\n displayAs = DisplayAs.Table\r\n\r\n isTextDocument = false;\r\n\r\n select() {\r\n super.select()\r\n this.active = true;\r\n this.contents = {\r\n display_filing_date: this.filing_date,\r\n label: this.title,\r\n document_type: this.document_type,\r\n sec_html_url: this.SEC_URL\r\n }\r\n }\r\n\r\n getPeriodID() {\r\n return this.network_id.toString();\r\n }\r\n\r\n async _getContents(_cancellerPromise: any) {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}","import { plainToClass } from \"class-transformer\";\r\nimport { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { DisclosureContents } from \"../../shared/calcbenchAPI/DisclosureContents\";\r\nimport { TextFootnote } from \"../../shared/calcbenchAPI/TextFootnote\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\nimport { Footnote } from \"./Footnote\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\n\r\nexport class TagFootnote extends Footnote {\r\n static searchType = FootnoteType.Tag\r\n\r\n constructor(APIData: TextFootnote, otherFootnotes: FootnoteList, showPeriodAndYearInAnchorText: boolean, searchType: FootnoteType,\r\n $q: angular.IQService, calcbenchAPI: CalcbenchAPI, $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIData, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.groupByKey = null;\r\n this.otherFootnotes.showKey = false;\r\n this._SEC_anchorText = this.document_type ? this.document_type : \"\";\r\n if (showPeriodAndYearInAnchorText) {\r\n this._SEC_anchorText = `${this.document_type}: ${this.fiscal_period}-${this.fiscal_year}`;\r\n }\r\n }\r\n\r\n async _getContents(cancellerPromise: angular.IPromise) {\r\n const params = { block_tag_name: this.localName, accession_ids: this.accession_id }\r\n const response = await this.$http({ url: '/query/disclosuresByTag', method: 'GET', params, timeout: cancellerPromise })\r\n const contents = plainToClass(DisclosureContents, response.data[0]) as unknown as DisclosureContents\r\n return this.content = contents // response.data[0]\r\n };\r\n}\r\n","import { CalcbenchAPI } from \"../../shared/calcbenchAPI/calcbenchAPI\";\r\nimport { ITraceDisclosure } from \"../../trace/traceController\";\r\nimport { FootnoteType } from \"./FootnoteType\";\r\nimport { NormalizedFootnoteMetricTrace } from \"./NormalizedFootnoteMetricTrace\";\r\nimport { FootnoteList } from \"../footnoteList\";\r\n\r\nexport class XBRLNumericTagTrace extends NormalizedFootnoteMetricTrace {\r\n constructor(APIdata: ITraceDisclosure, otherFootnotes: FootnoteList, searchType: FootnoteType, $q: angular.IQService, calcbenchAPI: CalcbenchAPI,\r\n $uibModal: angular.ui.bootstrap.IModalService, $http: angular.IHttpService) {\r\n super(APIdata, otherFootnotes, searchType, $q, calcbenchAPI, $uibModal, $http)\r\n this.numerical_fact_id = APIdata.numerical_fact_id;\r\n this.sec_filing_id = APIdata.sec_filing_id;\r\n\r\n }\r\n\r\n get title() {\r\n return `${this.queryParams.XBRLNumericTag}: ${(this.APIdata).formatted_value}`;\r\n }\r\n}","import { NonXBRLFactIDAttribute, XBRLFactIdAttribute } from \"../constants\";\r\nimport { STOP_WORDS } from \"../stopwords\";\r\n\r\n\r\nexport const SearchTermMatchID = 'calcbenchSearchTermMatch'\r\n\r\nfunction highlightFacts(cls: string, $contents: JQLite, factIDs: number[], neg: boolean) {\r\n factIDs.forEach(factID => {\r\n const $cbfacts = $contents.find(`[data-${cls}=${factID}]`)\r\n $cbfacts.css('border', `2px solid ${neg ? 'red' : 'blue'}`)\r\n $cbfacts.attr('id', SearchTermMatchID); // So we scroll to the element.\r\n })\r\n}\r\n\r\n\r\nexport function highlightNonXBRLFacts($contents: JQLite, factIDs: number[], neg?: boolean) {\r\n highlightFacts(NonXBRLFactIDAttribute, $contents, factIDs, neg);\r\n}\r\n\r\nexport function highlightXBRLFacts($contents: JQLite, factIDs: number[], neg?: boolean) {\r\n highlightFacts(XBRLFactIdAttribute, $contents, factIDs, neg);\r\n}\r\n\r\n\r\n\r\nfunction addHighlightTag($contents: JQuery, searchTerm: string): void {\r\n /*\r\n const regex = RegExp(`(${searchTerm})`, \"ig\")\r\n $contents.find('*').contents().filter((_, n) => n.nodeType === Node.TEXT_NODE).html((_, e) => {\r\n return e?.replace(regex, `$1`)\r\n })\r\n */\r\n\r\n const highlightStartTag = ``;\r\n const highlightEndTag = \"\";\r\n\r\n\r\n // find all occurences of the search term in the given text,\r\n // and add some \"highlight\" tags to them (we're not using a\r\n // regular expression search, because we want to filter out\r\n // matches that occur within HTML tags and script blocks, so\r\n // we have to do a little extra validation)\r\n let newText = \"\";\r\n let i = -1;\r\n const lcSearchTerm = searchTerm.toLowerCase();\r\n let bodyText = $contents.html()\r\n let lcBodyText = bodyText.toLowerCase();\r\n\r\n while (bodyText.length > 0) {\r\n i = lcBodyText.indexOf(lcSearchTerm, i + 1);\r\n if (i < 0) {\r\n newText += bodyText;\r\n bodyText = \"\";\r\n } else if(bodyText.lastIndexOf(\">\", i) >= bodyText.lastIndexOf(\"<\", i)) {\r\n // skip anything inside an HTML tag\r\n // skip anything inside a