├── cop-stage-target-achievement-report ├── .env.sample ├── .eslintrc ├── .gitignore ├── .nvmrc ├── .prettierrc ├── README.md ├── config-overrides.js ├── config │ └── jest │ │ ├── babelTransform.js │ │ ├── cssTransform.js │ │ ├── fileTransform.js │ │ ├── globalSetup.js │ │ └── setupTests.js ├── manifest.json ├── package.json ├── src │ ├── App.css │ ├── App.tsx │ ├── AppSettings.tsx │ ├── __mocks__ │ │ ├── mockAppProps.ts │ │ ├── mockAppSettingsProps.ts │ │ └── mockStageData.ts │ ├── __tests__ │ │ └── TestsExample.test.tsx │ ├── api │ │ ├── constants.ts │ │ ├── scorecardSetting.ts │ │ └── stageData.ts │ ├── assets │ │ └── logo.svg │ ├── components │ │ ├── CalculationLoading.tsx │ │ ├── Legend.tsx │ │ ├── Metrics │ │ │ ├── Metrics.tsx │ │ │ ├── MetricsBox.tsx │ │ │ └── index.ts │ │ ├── Settings │ │ │ ├── Settings.tsx │ │ │ └── index.tsx │ │ ├── StatusBadge.tsx │ │ ├── TimeRangeEditor.tsx │ │ └── WellStagesList │ │ │ ├── StageNumbers.tsx │ │ │ ├── WellStages.tsx │ │ │ ├── WellStagesList.tsx │ │ │ └── index.ts │ ├── constants.ts │ ├── custom.d.ts │ ├── effects │ │ ├── useAppSettings.ts │ │ ├── useAppWells.ts │ │ ├── useDesignValues.ts │ │ ├── useRecalculateSubscription.ts │ │ ├── useRecalculateTask.ts │ │ ├── useTargetStages.ts │ │ └── useWellHistoricalData.ts │ ├── index.js │ └── types.ts ├── tsconfig.json └── yarn.lock ├── corva-dc-fe-shell-hypercare ├── .commitlintrc.json ├── .env.sample ├── .eslintrc ├── .github │ ├── pull_request_template.md │ └── workflows │ │ ├── code-checks.yml │ │ ├── develop.yml │ │ ├── feat-fix-delete.yml │ │ ├── feat-fix.yml │ │ ├── release-fix-X.X.X.yml │ │ └── validate-pr-title.yml ├── .gitignore ├── .nvmrc ├── .prettierrc ├── CHANGELOG.md ├── README.md ├── config-overrides.js ├── config │ └── jest │ │ ├── babelTransform.js │ │ ├── cssTransform.js │ │ ├── fileTransform.js │ │ ├── globalSetup.js │ │ └── setupTests.js ├── jsconfig.json ├── manifest.json ├── package.json ├── src │ ├── App.css │ ├── App.js │ ├── AppContext.js │ ├── AppSettings.js │ ├── __mocks__ │ │ ├── mockAppProps.js │ │ └── mockAppSettingsProps.js │ ├── __tests__ │ │ └── AppSettings.test.js │ ├── api │ │ ├── appInfo.js │ │ ├── phases.js │ │ ├── sensor.js │ │ ├── streams.js │ │ └── wits.js │ ├── assets │ │ ├── boxBottomLine.svg │ │ ├── boxTopLine.svg │ │ ├── csv.svg │ │ ├── logo.svg │ │ ├── txt.svg │ │ ├── unknown.svg │ │ ├── upload.svg │ │ ├── waiting.svg │ │ ├── warning.svg │ │ └── xml.svg │ ├── components │ │ ├── AppProvider │ │ │ └── index.js │ │ ├── Chart │ │ │ ├── CPointCreateDialog.js │ │ │ ├── CPointEditDialog.js │ │ │ ├── CPointEvent.js │ │ │ ├── Chart.css │ │ │ ├── Content.js │ │ │ ├── ControlLayer.js │ │ │ ├── Legend.js │ │ │ ├── PhaseManagerDialog.js │ │ │ ├── Tooltip.js │ │ │ ├── YAxisLabelCounter.js │ │ │ └── index.js │ │ ├── ChartSlider │ │ │ └── index.js │ │ ├── ColorPicker │ │ │ ├── ColorPicker.js │ │ │ ├── PaletteChromePicker │ │ │ │ ├── ColorSquare │ │ │ │ │ ├── ColorSquare.js │ │ │ │ │ └── index.js │ │ │ │ ├── Palette │ │ │ │ │ ├── Palette.css │ │ │ │ │ ├── Palette.js │ │ │ │ │ ├── PaletteConstants.js │ │ │ │ │ └── index.js │ │ │ │ ├── PaletteChromePicker.js │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── Comment │ │ │ ├── CursorPosition │ │ │ │ ├── CursorPositionContext.js │ │ │ │ ├── CursorPositionProvider.js │ │ │ │ └── index.js │ │ │ ├── FeedBar │ │ │ │ ├── FeedBar.js │ │ │ │ ├── assets │ │ │ │ │ ├── annotations-menu.svg │ │ │ │ │ └── feed-item-type-icons │ │ │ │ │ │ ├── alert.svg │ │ │ │ │ │ ├── bha.svg │ │ │ │ │ │ ├── daily-cost.svg │ │ │ │ │ │ ├── document.svg │ │ │ │ │ │ ├── driller-memo.svg │ │ │ │ │ │ ├── fluid-report.svg │ │ │ │ │ │ ├── lessons-learned.svg │ │ │ │ │ │ ├── npt.svg │ │ │ │ │ │ ├── operation-summary.svg │ │ │ │ │ │ ├── operational-note.svg │ │ │ │ │ │ ├── survey-station.svg │ │ │ │ │ │ └── well-plan.svg │ │ │ │ ├── components │ │ │ │ │ ├── AddFeedButton │ │ │ │ │ │ ├── AddFeedButton.css │ │ │ │ │ │ ├── AddFeedButton.js │ │ │ │ │ │ ├── AddFeedButtonContainer.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── FeedCreationProvider │ │ │ │ │ │ ├── FeedCreationProvider.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── FeedGroup │ │ │ │ │ │ ├── FeedGroup.css │ │ │ │ │ │ ├── FeedGroup.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── FeedItem │ │ │ │ │ │ ├── AppAnnotationHoc │ │ │ │ │ │ │ ├── AppAnnotationHoc.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── UserMention │ │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── feedItemTypes │ │ │ │ │ │ │ ├── AppAnnotationFeedItem │ │ │ │ │ │ │ ├── helpers.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── Attachment │ │ │ │ │ │ │ ├── Attachment.js │ │ │ │ │ │ │ ├── FileAttachment.js │ │ │ │ │ │ │ ├── FileTypeIcon.js │ │ │ │ │ │ │ ├── ImageAttachment.js │ │ │ │ │ │ │ ├── ImageViewer.js │ │ │ │ │ │ │ └── RecommendationBar.js │ │ │ │ │ ├── FeedsCreationHoverLine │ │ │ │ │ │ ├── FeedsCreationHoverLine.css │ │ │ │ │ │ ├── FeedsCreationHoverLine.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── FeedsDataSection │ │ │ │ │ │ ├── FeedsDataSection.js │ │ │ │ │ │ ├── FeedsDataSectionContainer.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── LazyListRenderer │ │ │ │ │ │ ├── LazyListRenderer.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NewFeedModal │ │ │ │ │ │ ├── NewFeedModal.js │ │ │ │ │ │ ├── NewFeedModalContainer.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── icons │ │ │ │ │ │ ├── add-comment-hover.svg │ │ │ │ │ │ ├── add-comment.svg │ │ │ │ │ │ └── left-mouse.svg │ │ │ │ ├── constants.js │ │ │ │ ├── effects │ │ │ │ │ ├── useFeedItems.js │ │ │ │ │ ├── useFeedSubscriptionHandler.js │ │ │ │ │ └── useSizer.js │ │ │ │ ├── index.js │ │ │ │ └── utils │ │ │ │ │ ├── comment.js │ │ │ │ │ ├── forceFileDownload.js │ │ │ │ │ └── getIconForFeedItemType.js │ │ │ ├── FeedContext.js │ │ │ └── index.js │ │ ├── CriticalTable │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── DetailDataLoader │ │ │ ├── DetailDataLoader.js │ │ │ └── index.js │ │ ├── DownholeSensorUploader │ │ │ ├── FileIcon.js │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── Filters │ │ │ └── index.js │ │ ├── Footer │ │ │ ├── LastDataUpdate.js │ │ │ └── StatusBadge.js │ │ ├── IconPark │ │ │ └── index.js │ │ ├── LiveBadge │ │ │ ├── LiveBadge.css │ │ │ ├── LiveBadge.js │ │ │ └── index.js │ │ ├── OffsetPicker │ │ │ └── index.js │ │ ├── RealTimeBox │ │ │ ├── SingleBox.js │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── Shared │ │ │ └── MultiDropdown.js │ │ └── Toolbar │ │ │ └── index.js │ ├── constants.js │ ├── effects │ │ ├── useAppSettings.js │ │ ├── useChartCritical.js │ │ ├── useChartPhases.js │ │ ├── useDownholeSensorData.js │ │ ├── useDownholeTask.js │ │ ├── useFetchedAllData.js │ │ ├── useFilteredData.js │ │ ├── useGradientManager.js │ │ ├── useGroupedChannels.js │ │ ├── usePhases.js │ │ ├── useSubscriptionData.js │ │ ├── useTimeRange.js │ │ └── useUploadingFile.js │ ├── index.js │ ├── streams.js │ └── utils │ │ ├── appId.js │ │ ├── chartUtils.js │ │ ├── dataUtils.js │ │ ├── datetime.js │ │ ├── getUnitTypeFromUnit.js │ │ ├── phases.js │ │ ├── realtimeBox.js │ │ └── requestToS3.js └── yarn.lock ├── corva-ui ├── .circleci │ ├── config.yml │ └── npm-gh-publish.sh ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .jscpd.json ├── .npmignore ├── .prettierrc ├── .versionrc.json ├── CHANGELOG.md ├── CODEOWNERS ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── babel.config.js ├── jest │ ├── setEnvVars.js │ ├── setupTests.js │ └── svgTransform.js ├── package.json ├── public │ ├── common.css │ ├── index.html │ └── modernizr-custom.js ├── rollup.config.js ├── scripts │ ├── build.sh │ └── generateCssThemesVariables.mjs ├── src │ ├── CLI │ │ └── hocs │ │ │ ├── constants.js │ │ │ └── utils.js │ ├── assets │ │ ├── alert.svg │ │ ├── annotation.svg │ │ ├── annotations-menu.svg │ │ ├── bha.svg │ │ ├── bit.svg │ │ ├── casing.svg │ │ ├── checkboard.svg │ │ ├── directional.svg │ │ ├── dollar.svg │ │ ├── drillout.svg │ │ ├── feed-item-type-icons │ │ │ ├── alert.svg │ │ │ ├── bha.svg │ │ │ ├── daily-cost.svg │ │ │ ├── document.svg │ │ │ ├── driller-memo.svg │ │ │ ├── fluid-report.svg │ │ │ ├── lessons-learned.svg │ │ │ ├── npt.svg │ │ │ ├── operation-summary.svg │ │ │ ├── operational-note.svg │ │ │ ├── survey-station.svg │ │ │ └── well-plan.svg │ │ ├── fluid.svg │ │ ├── formation.svg │ │ ├── hole_depth.svg │ │ ├── hole_section.svg │ │ ├── mud.svg │ │ ├── npt.svg │ │ ├── operation_summary.svg │ │ └── proppant.svg │ ├── clients │ │ ├── api │ │ │ ├── apiCore.js │ │ │ └── httpMessages.js │ │ ├── clientStorage │ │ │ ├── core.js │ │ │ └── index.js │ │ ├── constants.js │ │ ├── index.js │ │ ├── jsonApi │ │ │ ├── __tests__ │ │ │ │ └── postTaskAndWaitResult.test.ts │ │ │ ├── index.js │ │ │ ├── methods.js │ │ │ └── postTaskAndWaitResult.ts │ │ ├── subscriptions.js │ │ └── utils.js │ ├── components │ │ ├── AddComment │ │ │ ├── Popover.js │ │ │ ├── Popup.js │ │ │ ├── components │ │ │ │ └── Content.js │ │ │ └── index.js │ │ ├── AdvancedSlider │ │ │ ├── AdvancedSlider.js │ │ │ ├── AdvancedSlider.stories.js │ │ │ ├── Handle.js │ │ │ └── index.js │ │ ├── AnchorsList │ │ │ ├── AnchorsList.js │ │ │ ├── __tests__ │ │ │ │ └── AnchorsList.test.js │ │ │ └── index.js │ │ ├── Annotations │ │ │ ├── AnnotationsContext.js │ │ │ ├── components │ │ │ │ ├── AnnotationsList │ │ │ │ │ ├── components │ │ │ │ │ │ ├── AddAnnotationForm │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── Annotation │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── AnnotationComments │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ └── AnnotationInput │ │ │ │ │ │ │ ├── StyledSelect.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ └── LastAnnotation │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ ├── constants.js │ │ │ └── index.js │ │ ├── AppIcon │ │ │ ├── AppIcon.tsx │ │ │ ├── assets │ │ │ │ ├── CompletionAppIcon.png │ │ │ │ ├── CompletionAppIcon.tsx │ │ │ │ ├── CompletionAppIconBe.png │ │ │ │ ├── CompletionAppIconBe.tsx │ │ │ │ ├── DrillingAppIcon.png │ │ │ │ ├── DrillingAppIcon.tsx │ │ │ │ ├── DrillingAppIconBe.png │ │ │ │ ├── DrillingAppIconBe.tsx │ │ │ │ ├── NoSegmentAppIcon.png │ │ │ │ └── NoSegmentAppIcon.tsx │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.js │ │ ├── AppVersionsSelect │ │ │ ├── AppVersionsSelect.js │ │ │ ├── __tests__ │ │ │ │ ├── AppVersionsSelect.test.js │ │ │ │ └── usePackages.test.js │ │ │ ├── effects │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── AssetEditor │ │ │ ├── AssetEditorAutocomplete.js │ │ │ ├── AssetEditors.css │ │ │ ├── SingleAssetEditor.js │ │ │ ├── __tests__ │ │ │ │ └── SingleAssetEditor.test.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ ├── __tests__ │ │ │ │ │ ├── useAssetAutoCompleteSelectData.test.js │ │ │ │ │ └── useAssetSelectData.test.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ └── index.js │ │ ├── AssetEditorV2 │ │ │ ├── components │ │ │ │ ├── MultipleAssetsToggle.js │ │ │ │ ├── PrimaryAssetSelect.js │ │ │ │ ├── PrimaryAssetSelectV2.js │ │ │ │ ├── SecondaryAssetSelect.js │ │ │ │ ├── SelectItem.js │ │ │ │ ├── __tests__ │ │ │ │ │ ├── MultipleAssetsToggle.test.js │ │ │ │ │ └── SelectItem.test.js │ │ │ │ └── index.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ ├── index.js │ │ │ │ └── usePrimaryAssetSelectData.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ ├── __tests__ │ │ │ │ └── utils.test.js │ │ │ │ └── index.js │ │ ├── AssetNameLabel │ │ │ ├── AssetNameLabel.styles.css │ │ │ ├── AssetNameLabel.tsx │ │ │ ├── AssetStatusBadge.tsx │ │ │ ├── SecondaryAssetNameLabel.tsx │ │ │ └── SecondaryAssetNameLable.styles.css │ │ ├── Attachment │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── Autocomplete │ │ │ ├── Autocomplete.js │ │ │ └── index.js │ │ ├── Avatar │ │ │ ├── Avatar.stories.js │ │ │ └── index.tsx │ │ ├── BICOffsetPickerDialog │ │ │ ├── components │ │ │ │ ├── Map │ │ │ │ │ ├── Map.css │ │ │ │ │ ├── Map.js │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.js │ │ │ │ └── WellSection │ │ │ │ │ ├── AssetSearch.js │ │ │ │ │ ├── AutoCompleteAssetSearch │ │ │ │ │ ├── AssetResultSection.js │ │ │ │ │ ├── AssetTypesSection.js │ │ │ │ │ ├── AutoCompleteAssetSearch.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── effects │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── useAssetsData.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── utils │ │ │ │ │ │ └── apiCalls.js │ │ │ │ │ ├── NumberCircle.js │ │ │ │ │ ├── SectionItem.js │ │ │ │ │ ├── WellListItem.js │ │ │ │ │ └── index.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ └── apiCalls.js │ │ ├── Breadcrumbs │ │ │ ├── Breadcrumbs.stories.js │ │ │ ├── __tests__ │ │ │ │ └── Breadcrumbs.test.js │ │ │ └── index.js │ │ ├── Button │ │ │ ├── Button.stories.js │ │ │ └── index.tsx │ │ ├── Casing │ │ │ ├── CasingComponentIcon.js │ │ │ ├── CasingTable │ │ │ │ ├── CasingComponent.js │ │ │ │ └── index.js │ │ │ ├── CasingTableV2 │ │ │ │ ├── CasingTableV2.css │ │ │ │ ├── CasingTableV2.js │ │ │ │ ├── components │ │ │ │ │ ├── CasingJoints │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Component.js │ │ │ │ │ ├── DrillPipe │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── EditComponentDialog.js │ │ │ │ │ ├── Header.js │ │ │ │ │ ├── SortableComponent.js │ │ │ │ │ ├── SortableComponents.js │ │ │ │ │ └── constants.js │ │ │ │ └── index.js │ │ │ ├── CasingTile │ │ │ │ ├── CasingTile.js │ │ │ │ ├── index.js │ │ │ │ └── style.js │ │ │ ├── CasingTileIcon.js │ │ │ ├── assets │ │ │ │ ├── RegularCasing │ │ │ │ │ ├── acp.png │ │ │ │ │ ├── air_lock_sub.png │ │ │ │ │ ├── casing_joints.png │ │ │ │ │ ├── dp.png │ │ │ │ │ ├── dv_tool.png │ │ │ │ │ ├── float_collar.png │ │ │ │ │ ├── float_shoe.png │ │ │ │ │ ├── hwdp.png │ │ │ │ │ ├── liner_hanger.png │ │ │ │ │ ├── liner_top_packer.png │ │ │ │ │ ├── marker_joint.png │ │ │ │ │ ├── other.png │ │ │ │ │ ├── pbr.png │ │ │ │ │ ├── pup_joint.png │ │ │ │ │ ├── riser.png │ │ │ │ │ ├── toe_sleeve.png │ │ │ │ │ └── xo.png │ │ │ │ └── SmallCasing │ │ │ │ │ ├── air_lock_sub.svg │ │ │ │ │ ├── casing_joint.svg │ │ │ │ │ ├── dp.svg │ │ │ │ │ ├── dv_tool.svg │ │ │ │ │ ├── float_collar.svg │ │ │ │ │ ├── float_shoe.svg │ │ │ │ │ ├── hwdp.svg │ │ │ │ │ └── liner_top_packer.svg │ │ │ └── index.js │ │ ├── Chart │ │ │ ├── Chart.stories.js │ │ │ ├── ChartWrapperContext.js │ │ │ ├── components │ │ │ │ ├── AxisDropdown.js │ │ │ │ ├── AxisOverlay.js │ │ │ │ ├── ChartButton.js │ │ │ │ ├── ChartButtons.js │ │ │ │ ├── ChartSelect.js │ │ │ │ ├── ChartWrapper.js │ │ │ │ ├── __tests__ │ │ │ │ │ ├── AxisDropdown.test.js │ │ │ │ │ └── ChartButton.test.js │ │ │ │ ├── buttons │ │ │ │ │ ├── ChartTypeButton.js │ │ │ │ │ ├── DragToZoomButton.js │ │ │ │ │ ├── HideAxesButton.js │ │ │ │ │ ├── PanButton.js │ │ │ │ │ ├── ResetZoomButton.js │ │ │ │ │ ├── ZoomInButton.js │ │ │ │ │ ├── ZoomOutButton.js │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ ├── __tests__ │ │ │ │ │ ├── useHideAxes.test.js │ │ │ │ │ └── useKeyboardControl.test.js │ │ │ │ ├── index.js │ │ │ │ ├── useChartModifier.js │ │ │ │ ├── useChartTypeSwitch.js │ │ │ │ ├── useHideAxes.js │ │ │ │ ├── useKeyboardControl.js │ │ │ │ └── useZoom.js │ │ │ ├── formations.js │ │ │ ├── options.js │ │ │ ├── tooltip.js │ │ │ └── utils.js │ │ ├── ChartActionsList │ │ │ ├── ChartActionsList.css │ │ │ ├── ChartActionsList.js │ │ │ ├── icons │ │ │ │ ├── GoLive.js │ │ │ │ ├── LeftArrow.js │ │ │ │ ├── RightArrow.js │ │ │ │ ├── TimeRange.js │ │ │ │ ├── ZoomIn.js │ │ │ │ └── ZoomOut.js │ │ │ └── index.js │ │ ├── Checkbox │ │ │ └── index.js │ │ ├── Chip │ │ │ ├── Chip.stories.js │ │ │ └── index.tsx │ │ ├── CollapsableSidebar.js │ │ ├── CollapsibleContent.js │ │ ├── ColorPicker │ │ │ ├── ColorPicker.stories.js │ │ │ ├── ColorPicker.tsx │ │ │ ├── PaletteChromePicker │ │ │ │ ├── ColorSquare │ │ │ │ │ ├── ColorSquare.js │ │ │ │ │ └── index.js │ │ │ │ ├── Palette │ │ │ │ │ ├── Palette.css │ │ │ │ │ ├── Palette.js │ │ │ │ │ ├── PaletteConstants.js │ │ │ │ │ └── index.js │ │ │ │ ├── PaletteChromePicker.js │ │ │ │ └── index.js │ │ │ └── index.ts │ │ ├── ColorPickerPalette │ │ │ ├── ColorPickerPalette.stories.js │ │ │ ├── ColorPickerPalette.tsx │ │ │ └── index.js │ │ ├── Comment │ │ │ ├── CommentIcon │ │ │ │ ├── BadgeIcon.js │ │ │ │ ├── CommentIcon.stories.js │ │ │ │ └── index.tsx │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── CommentInput │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── CommentLoader.js │ │ ├── CommentWrapper.js │ │ ├── CommentsInfo │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── ConfirmationDialog.js │ │ ├── ContextMenuItem │ │ │ └── index.js │ │ ├── CopyToClipboard │ │ │ ├── CopyToClipboard.js │ │ │ ├── CopyToClipboard.stories.js │ │ │ └── index.js │ │ ├── Counter │ │ │ ├── Counter.stories.js │ │ │ └── index.tsx │ │ ├── CustomSelect │ │ │ └── index.js │ │ ├── DatePicker │ │ │ ├── DatePickerControl.stories.js │ │ │ └── index.tsx │ │ ├── DateTimePicker │ │ │ ├── DateTimePickerControl.stories.js │ │ │ └── index.tsx │ │ ├── DevCenter │ │ │ ├── AppContext.js │ │ │ ├── AppFilterPanelLayout │ │ │ │ ├── AppFilterPanelLayout.stories.js │ │ │ │ ├── AppFilterPanelLayout.tsx │ │ │ │ └── __tests__ │ │ │ │ │ └── AppFilterPanelLayout.test.js │ │ │ ├── AppHeader │ │ │ │ ├── AppHeader.css │ │ │ │ ├── AppHeader.js │ │ │ │ ├── AppHeaderStyles.js │ │ │ │ ├── PadIcon.tsx │ │ │ │ ├── PadMode.js │ │ │ │ ├── VersionBadge.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── AppHeader.test.js │ │ │ │ │ └── VersionBadge.test.js │ │ │ │ ├── index.js │ │ │ │ ├── stories │ │ │ │ │ ├── AppHeader.stories.js │ │ │ │ │ └── logo.png │ │ │ │ └── utils.js │ │ │ ├── AppSettingsPopover │ │ │ │ ├── AppSettingsPopover.stories.js │ │ │ │ ├── AppSettingsPopover.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ └── AppSettingsPopover.test.js │ │ │ │ └── index.ts │ │ │ ├── AppSideBar │ │ │ │ ├── AppSideBar.stories.js │ │ │ │ ├── AppSideBar.tsx │ │ │ │ └── __tests__ │ │ │ │ │ └── AppSidebar.test.js │ │ │ ├── AppsDataProvider │ │ │ │ ├── AppsDataProvider.js │ │ │ │ ├── effects │ │ │ │ │ ├── __tests__ │ │ │ │ │ │ ├── getDeprecatedAssetIds.test.js │ │ │ │ │ │ ├── mocks │ │ │ │ │ │ │ ├── assetDashboard │ │ │ │ │ │ │ │ └── wellAssetDashboard │ │ │ │ │ │ │ │ │ └── appWithDefaultSettings.js │ │ │ │ │ │ │ ├── generalDashboard │ │ │ │ │ │ │ │ ├── completion │ │ │ │ │ │ │ │ │ ├── appWithFracFleetId.js │ │ │ │ │ │ │ │ │ └── appWithPadId.js │ │ │ │ │ │ │ │ └── drilling │ │ │ │ │ │ │ │ │ ├── appWithActiveWellId.js │ │ │ │ │ │ │ │ │ └── appWithRigId.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── useAppsData.test.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── dataResolvers.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── useAppsData.js │ │ │ │ │ └── utils.js │ │ │ │ └── index.js │ │ │ ├── DevCenterAppContainer │ │ │ │ ├── DevCenterAppContainer.css │ │ │ │ ├── DevCenterAppContainer.js │ │ │ │ ├── __tests__ │ │ │ │ │ └── DevCenterAppContainer.test.js │ │ │ │ ├── components │ │ │ │ │ ├── AnnotationsButton │ │ │ │ │ │ ├── AnnotationsButton.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── AppActions │ │ │ │ │ │ ├── AppActions.css │ │ │ │ │ │ ├── AppActions.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── AppInfoMessage │ │ │ │ │ │ ├── AppInfoMessage.css │ │ │ │ │ │ ├── AppInfoMessage.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── AppSettingsDialog │ │ │ │ │ │ ├── AppDetails.js │ │ │ │ │ │ ├── AppSettingsDialog.js │ │ │ │ │ │ ├── AppSettingsDialog.module.css │ │ │ │ │ │ ├── RemoveAppButton.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── AppSettingsDialogV2 │ │ │ │ │ │ ├── AppSettingsDialog.js │ │ │ │ │ │ ├── RemoveAppButton.js │ │ │ │ │ │ ├── __tests__ │ │ │ │ │ │ │ ├── AppSettingsDialogV2.test.js │ │ │ │ │ │ │ └── RemoveAppButton.test.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── styles.js │ │ │ │ │ ├── DcFullscreenElemsCoordinatorProvider │ │ │ │ │ │ ├── DcFullscreenElemsCoordinatorProvider.tsx │ │ │ │ │ │ ├── IsInsideDcFullscreenElemProvider.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── DevCenterAppView │ │ │ │ │ │ ├── DevCenterAppView.tsx │ │ │ │ │ │ ├── __tests__ │ │ │ │ │ │ │ ├── DevCenterAppView.test.js │ │ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ │ │ └── DevCenterAppView.test.js.snap │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── ChooseAssetButton.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── FullscreenButton │ │ │ │ │ │ ├── FullscreenButton.css │ │ │ │ │ │ ├── FullscreenButton.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── IsInsideDcAppProvider │ │ │ │ │ │ ├── IsInsideDcAppProvider.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NonPriorityMenus │ │ │ │ │ │ ├── NonPriorityMenus.css │ │ │ │ │ │ ├── NonPriorityMenus.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── PriorityMenus │ │ │ │ │ │ ├── PriorityMenus.css │ │ │ │ │ │ ├── PriorityMenus.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── RestoreAppSizeButton │ │ │ │ │ │ ├── RestoreAppSizeButton.css │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── RollbarWrapper │ │ │ │ │ │ └── RollbarWrapper.tsx │ │ │ │ │ ├── __tests__ │ │ │ │ │ │ ├── AppSettingsDialog.test.js │ │ │ │ │ │ └── RollbarWrapper.test.tsx │ │ │ │ │ └── index.js │ │ │ │ ├── effects │ │ │ │ │ ├── __tests__ │ │ │ │ │ │ ├── useAnnotationsData.test.js │ │ │ │ │ │ └── useAppSettings.test.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── useAnnotationsData.js │ │ │ │ │ ├── useAnnotationsList.js │ │ │ │ │ ├── useAppMaximized.js │ │ │ │ │ └── useAppSettings.js │ │ │ │ ├── index.js │ │ │ │ └── utils.js │ │ │ ├── DevCenterRouterContext │ │ │ │ ├── DevCenterRouterContext.js │ │ │ │ ├── UniversalLink │ │ │ │ │ ├── UniversalLink.css │ │ │ │ │ ├── UniversalLink.js │ │ │ │ │ └── index.js │ │ │ │ ├── effects │ │ │ │ │ └── useDevCenterRouter.js │ │ │ │ ├── hocs │ │ │ │ │ └── withUniversalLocationHOC.js │ │ │ │ └── index.js │ │ │ ├── IsolatedDevCenterAppContainer │ │ │ │ ├── DevCenterAppZoidComponent.js │ │ │ │ ├── DevCenterIsolatedApp.js │ │ │ │ ├── DevCenterIsolatedApp.module.css │ │ │ │ ├── DevCenterIsolatedAppPage.js │ │ │ │ ├── constants.js │ │ │ │ ├── effects │ │ │ │ │ └── useXProps.js │ │ │ │ ├── index.js │ │ │ │ └── utils │ │ │ │ │ └── replaceUndefinedValuesWithNull.js │ │ │ ├── NavigationBar │ │ │ │ ├── NavigationBar.js │ │ │ │ └── index.js │ │ │ ├── SideBar │ │ │ │ ├── SideBar.js │ │ │ │ └── index.js │ │ │ ├── icons │ │ │ │ ├── CorvaLogoSmall.js │ │ │ │ └── DevCenterIcon.js │ │ │ └── index.js │ │ ├── DisabledSettingsMessage │ │ │ ├── DisabledSettingsMessage.js │ │ │ └── index.js │ │ ├── DocumentViewer │ │ │ ├── DocumentViewer.js │ │ │ └── styles.js │ │ ├── Drillstring │ │ │ ├── BHACasingEmptyView │ │ │ │ ├── BHACasingEmptyView.js │ │ │ │ ├── index.js │ │ │ │ └── styles.css │ │ │ ├── BHAComponentDetail │ │ │ │ ├── constants.js │ │ │ │ └── index.js │ │ │ ├── BHAComponentIcon.js │ │ │ ├── BHAComponentsTable │ │ │ │ ├── BHAComponentsTable.js │ │ │ │ ├── BhaComponentsTable.css │ │ │ │ ├── components │ │ │ │ │ ├── Agitator │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Bit │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Component.js │ │ │ │ │ ├── DrillCollar │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── DrillPipe │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── EditComponentDialog.js │ │ │ │ │ ├── Header.js │ │ │ │ │ ├── Jar │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Lwd │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ ├── Measurement.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Mwd │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NozzleSize │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Pdm │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── PressureLoss │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Rss │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── SortableComponent.js │ │ │ │ │ ├── SortableComponents.js │ │ │ │ │ ├── Stabilizer │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Sub │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Suggestions │ │ │ │ │ │ ├── AutoCompleteDialog.js │ │ │ │ │ │ ├── Suggestions.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Ur │ │ │ │ │ │ ├── Browser.js │ │ │ │ │ │ ├── Editor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── shared │ │ │ │ │ │ ├── CancelButton.js │ │ │ │ │ │ ├── ConfirmationPopup.js │ │ │ │ │ │ ├── ExpandCollapseButton.js │ │ │ │ │ │ ├── FormatedNumber.js │ │ │ │ │ │ ├── InputText.js │ │ │ │ │ │ ├── MoreButton.js │ │ │ │ │ │ ├── SaveButton.js │ │ │ │ │ │ ├── SelectField.js │ │ │ │ │ │ ├── SharedEditorElements.js │ │ │ │ │ │ ├── StaticField.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── sharedStyles.js │ │ │ │ │ └── utils │ │ │ │ │ │ └── calculation.js │ │ │ │ └── index.js │ │ │ ├── BHAList │ │ │ │ ├── BHAList.js │ │ │ │ ├── index.js │ │ │ │ └── styles.css │ │ │ ├── BHASchematic.js │ │ │ ├── BHATable │ │ │ │ ├── BHAComponent.js │ │ │ │ └── index.js │ │ │ ├── BHATile │ │ │ │ ├── BHATile.js │ │ │ │ ├── index.js │ │ │ │ └── styles.css │ │ │ ├── BHATileIcon.js │ │ │ ├── BhaIndicator │ │ │ │ ├── BhaIndicator.js │ │ │ │ ├── index.js │ │ │ │ └── styles.css │ │ │ ├── DrillstringDetail │ │ │ │ ├── DrillstringDetail.js │ │ │ │ ├── index.js │ │ │ │ └── styles.css │ │ │ ├── assets │ │ │ │ ├── regular-bha │ │ │ │ │ ├── agitator.png │ │ │ │ │ ├── ct.png │ │ │ │ │ ├── drill_collar.png │ │ │ │ │ ├── drill_collar_white.png │ │ │ │ │ ├── drill_pipe.png │ │ │ │ │ ├── heavy_weight_drill_pipe.png │ │ │ │ │ ├── hwdp.png │ │ │ │ │ ├── jar.png │ │ │ │ │ ├── lwd.png │ │ │ │ │ ├── motor.png │ │ │ │ │ ├── mwd.png │ │ │ │ │ ├── pdcbit.png │ │ │ │ │ ├── rollerconebit.png │ │ │ │ │ ├── rss.png │ │ │ │ │ ├── spiral_drill_collar.png │ │ │ │ │ ├── stabilizer.png │ │ │ │ │ ├── sub.png │ │ │ │ │ ├── sub_white.png │ │ │ │ │ ├── tail_pipe.png │ │ │ │ │ └── ur.png │ │ │ │ └── small-bha │ │ │ │ │ ├── bit.svg │ │ │ │ │ ├── non-mag.svg │ │ │ │ │ ├── pdm.svg │ │ │ │ │ ├── rss.svg │ │ │ │ │ └── stabilizer.svg │ │ │ └── index.js │ │ ├── EditableItem │ │ │ ├── EditableItem │ │ │ │ ├── EditableItem.stories.js │ │ │ │ └── index.tsx │ │ │ ├── EditableItemWithBadge │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── EmbeddedApp │ │ │ ├── DevCenterEmbeddedApp.js │ │ │ ├── EmbeddedApp.js │ │ │ ├── __tests__ │ │ │ │ └── EmbeddedApp.test.js │ │ │ ├── components │ │ │ │ └── AppInfo.js │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── EmojiIconButton.js │ │ ├── EmptyState │ │ │ ├── EmptyState.stories.js │ │ │ ├── EmptyState.tsx │ │ │ ├── constants.ts │ │ │ ├── images │ │ │ │ ├── AppLoadingError.svg │ │ │ │ ├── AssetHasNoData.svg │ │ │ │ ├── DataSuccessfullySaved.svg │ │ │ │ ├── FracFleetHasNoActivePad.svg │ │ │ │ ├── NoDataAvailable.svg │ │ │ │ ├── NoIssueFound.svg │ │ │ │ ├── NoNotifications.svg │ │ │ │ ├── NoSubscription.svg │ │ │ │ ├── NoWellsSelected.svg │ │ │ │ ├── PageNotFound.svg │ │ │ │ ├── RigHasNoActiveWell.svg │ │ │ │ ├── UnderConstruction.svg │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── styles.ts │ │ │ └── utils.ts │ │ ├── EmptyView │ │ │ ├── EmptyAppView │ │ │ │ ├── EmptyAppView.js │ │ │ │ ├── EmptyStateImg.png │ │ │ │ ├── components │ │ │ │ │ └── ErrorSubtitleWithIntercomLink.js │ │ │ │ ├── images │ │ │ │ │ ├── EmptyLarge.svg │ │ │ │ │ ├── ErrorLarge.svg │ │ │ │ │ ├── NoDataLarge.svg │ │ │ │ │ └── NoSubscriptionLarge.svg │ │ │ │ └── index.js │ │ │ ├── EmptyView.js │ │ │ ├── __tests__ │ │ │ │ ├── EmptyView.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── EmptyView.test.js.snap │ │ │ ├── arrow.svg │ │ │ ├── index.js │ │ │ └── no_data.png │ │ ├── ErrorBoundary │ │ │ ├── DevCenterAppErrorView │ │ │ │ ├── DevCenterAppErrorView.css │ │ │ │ ├── DevCenterAppErrorView.js │ │ │ │ ├── __tests__ │ │ │ │ │ ├── DevCenterAppErrorView.snapshot.test.js │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── DevCenterAppErrorView.snapshot.test.js.snap │ │ │ │ └── index.js │ │ │ ├── ErrorBoundary.js │ │ │ ├── __tests__ │ │ │ │ └── ErrorBoundary.test.js │ │ │ └── index.js │ │ ├── FailedFileUploading.js │ │ ├── FeedItem │ │ │ ├── FeedItem.css │ │ │ ├── FeedItem.js │ │ │ ├── FeedItemEditProvider │ │ │ │ ├── FeedItemEditModal.js │ │ │ │ ├── FeedItemEditProvider.js │ │ │ │ └── index.js │ │ │ ├── components │ │ │ │ ├── Actions.js │ │ │ │ ├── AvatarIcon.js │ │ │ │ ├── Content.js │ │ │ │ ├── CreatedAt.js │ │ │ │ ├── FeedComments.js │ │ │ │ ├── Icon.js │ │ │ │ ├── LessonsLearnedLeafIcon.js │ │ │ │ ├── Reactions.js │ │ │ │ ├── RigAndWell.js │ │ │ │ └── TypeAndAssetTitle.js │ │ │ ├── editModals │ │ │ │ ├── DvdCommentEdit │ │ │ │ │ ├── DvdCommentEdit.js │ │ │ │ │ └── index.js │ │ │ │ ├── HookloadCommentEdit │ │ │ │ │ ├── HookloadCommentEdit.js │ │ │ │ │ └── index.js │ │ │ │ ├── LessonsLearnedEdit │ │ │ │ │ ├── LessonsLearnedEdit.js │ │ │ │ │ └── index.js │ │ │ │ ├── NptLessonsCommentEdit │ │ │ │ │ ├── NptLessonsCommentEdit.js │ │ │ │ │ └── index.js │ │ │ │ └── PCCommentEdit │ │ │ │ │ ├── PCCommentEdit.js │ │ │ │ │ └── index.js │ │ │ ├── feedItemTypes │ │ │ │ ├── AlertFeedItem.js │ │ │ │ ├── AppAnnotationFeedItem │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── styles.css │ │ │ │ ├── BhaFeedItem │ │ │ │ │ ├── BhaFeedItem.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── BhaNumber.js │ │ │ │ │ │ ├── BhaSchematic.js │ │ │ │ │ │ ├── Info.js │ │ │ │ │ │ └── NoData.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── styles.css │ │ │ │ ├── CompletionDailyCostFeedItem.js │ │ │ │ ├── CompletionDocumentFeedItem.js │ │ │ │ ├── CompletionNptFeedItem.js │ │ │ │ ├── CompletionOperationSummaryFeedItem.js │ │ │ │ ├── CompletionOperationalNoteFeedItem.js │ │ │ │ ├── DepthCommentFeedItem.js │ │ │ │ ├── DocumentFeedItem.js │ │ │ │ ├── DrillerMemoFeedItem.js │ │ │ │ ├── DrillingDailyCostFeedItem.js │ │ │ │ ├── DrillingOperationSummaryFeedItem.js │ │ │ │ ├── DrillingOperationalNoteFeedItem.js │ │ │ │ ├── DvDCommentFeedItem.js │ │ │ │ ├── FluidReportFeedItem.js │ │ │ │ ├── GeosteeringFeedItem.js │ │ │ │ ├── HookloadCommentFeedItem.js │ │ │ │ ├── LessonsLearnedFeedItem │ │ │ │ │ ├── icons │ │ │ │ │ │ ├── Critical.js │ │ │ │ │ │ ├── Major.js │ │ │ │ │ │ └── Minor.js │ │ │ │ │ └── index.js │ │ │ │ ├── NptFeedItem.js │ │ │ │ ├── NptLessonsCommentFeedItem.js │ │ │ │ ├── PCCommentFeedItem.js │ │ │ │ ├── PostFeedItem.js │ │ │ │ ├── StageOverviewFeedItem │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── NoData.js │ │ │ │ │ │ ├── Predictions.js │ │ │ │ │ │ ├── PredictionsItem.js │ │ │ │ │ │ └── Stages │ │ │ │ │ │ │ ├── Stages.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ └── index.js │ │ │ │ ├── SurveyStationFeedItem │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── AccuracyPlan.js │ │ │ │ │ │ ├── ActualPointInfo.js │ │ │ │ │ │ └── Warning.js │ │ │ │ │ └── index.js │ │ │ │ ├── TracesMemoFeedItem.js │ │ │ │ └── WellPlanFeedItem │ │ │ │ │ ├── components │ │ │ │ │ ├── TargetChanges.js │ │ │ │ │ └── VerticalSectionAzimuth.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── styles.css │ │ │ └── index.js │ │ ├── FilePreview │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── FileTypeIcon.js │ │ ├── FileUploadIconButton.js │ │ ├── FilesLoader │ │ │ ├── FilesLoader.stories.js │ │ │ ├── FilesLoader.tsx │ │ │ ├── Icons │ │ │ │ ├── CSVFileIcon.js │ │ │ │ ├── DocFileIcon.js │ │ │ │ ├── EDMFileIcon.js │ │ │ │ ├── ExelFileIcon.js │ │ │ │ ├── FileIcon.js │ │ │ │ ├── IconCancel.js │ │ │ │ ├── IconLoader.svg │ │ │ │ ├── IconRefresh.js │ │ │ │ ├── IconSuccess.js │ │ │ │ ├── IconWarning.js │ │ │ │ ├── ImageFileIcon.js │ │ │ │ ├── PdfFileIcon.js │ │ │ │ ├── UnknownFileIcon.js │ │ │ │ └── UploadIcon.js │ │ │ ├── effects │ │ │ │ └── useUploadingFile.js │ │ │ ├── index.ts │ │ │ └── useStyles.js │ │ ├── FolderMenuItem │ │ │ ├── components │ │ │ │ ├── ClosedFolderIcon.js │ │ │ │ ├── FolderIcon.js │ │ │ │ ├── OpenFolderIcon.js │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── FolderMenuItemWithLinks │ │ │ └── index.js │ │ ├── Formula │ │ │ ├── CloseSuggestion.js │ │ │ ├── Formula.js │ │ │ ├── Formula.stories.js │ │ │ ├── FormulaTextEditor.js │ │ │ ├── RootXIcon.js │ │ │ ├── SuggestionsMenu.js │ │ │ ├── __tests__ │ │ │ │ ├── Formula.test.js │ │ │ │ └── utils.test.js │ │ │ ├── index.js │ │ │ ├── useFormulaFunction.js │ │ │ ├── useFormulaStyles.js │ │ │ └── utils.js │ │ ├── GoogleDocsViewer │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── GradientManager │ │ │ ├── GradientList.ts │ │ │ ├── GradientManager.stories.tsx │ │ │ ├── GradientManager.styles.js │ │ │ ├── GradientManager.tsx │ │ │ ├── GradientManagerProps.ts │ │ │ ├── GradientPreview │ │ │ │ └── GradientPreview.tsx │ │ │ ├── GradientSelect.styles.js │ │ │ ├── GradientSelect.tsx │ │ │ ├── __tests__ │ │ │ │ ├── GradientManager.test.tsx │ │ │ │ ├── pageHelpers.ts │ │ │ │ └── testData.ts │ │ │ ├── configuration │ │ │ │ └── constants.ts │ │ │ └── index.ts │ │ ├── GradientPicker │ │ │ ├── GradientPicker.stories.tsx │ │ │ ├── GradientPicker.styles.ts │ │ │ ├── GradientPicker.tsx │ │ │ ├── GradientPicker.utils.ts │ │ │ ├── GradientPickerProps.ts │ │ │ ├── __tests__ │ │ │ │ ├── GradientPicker.test.tsx │ │ │ │ ├── pageHelpers.ts │ │ │ │ └── testData.ts │ │ │ └── index.ts │ │ ├── HeaderLayout │ │ │ ├── HeaderLayout.css │ │ │ ├── HeaderLayout.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils.js │ │ ├── HelpCenter │ │ │ ├── HelpCenterIcon.js │ │ │ └── index.js │ │ ├── IconButton │ │ │ ├── IconButton.stories.js │ │ │ ├── __tests__ │ │ │ │ └── IconButton.test.js │ │ │ └── index.tsx │ │ ├── IconMenu │ │ │ ├── __tests__ │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── index.snapshot.test.js.snap │ │ │ │ └── index.snapshot.test.js │ │ │ └── index.js │ │ ├── Icons │ │ │ ├── AnnotationIcon.js │ │ │ ├── AttachIcon.js │ │ │ ├── DangerousIcon.js │ │ │ ├── EmojiIcon.js │ │ │ ├── GppGoodIcon.js │ │ │ ├── RecommendationIcon.js │ │ │ └── SendIcon.js │ │ ├── ImageViewer │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── InfiniteList │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── KeyboardDateTimePicker.js │ │ ├── LabelsCounter │ │ │ ├── LabelsCounter.js │ │ │ ├── __tests__ │ │ │ │ └── LabelsCounter.test.js │ │ │ └── index.js │ │ ├── LoadingIndicator │ │ │ ├── FullScreenLoadingIndicator.tsx │ │ │ ├── InlineLoadingIndicator.tsx │ │ │ ├── Loader.tsx │ │ │ ├── LoadingIndicator.css │ │ │ ├── LoadingIndicator.stories.js │ │ │ ├── LoadingIndicator.tsx │ │ │ ├── __tests__ │ │ │ │ ├── FullScreenLoadingIndicator.test.js │ │ │ │ ├── InlineLoadingIndicator.test.js │ │ │ │ ├── Loader.test.js │ │ │ │ └── LoadingIndicator.test.js │ │ │ ├── index.js │ │ │ └── types.ts │ │ ├── MenuItem │ │ │ └── index.js │ │ ├── MiddleTruncate │ │ │ ├── MiddleTruncate.js │ │ │ ├── index.js │ │ │ └── utils.js │ │ ├── Modal │ │ │ ├── CorvaModal.css │ │ │ ├── CorvaModal.tsx │ │ │ ├── DcCorvaModal.tsx │ │ │ ├── MobileSettingsModal.stories.js │ │ │ ├── Modal.stories.js │ │ │ ├── Modal.tsx │ │ │ ├── __tests__ │ │ │ │ ├── CorvaModal.snapshot.test.js │ │ │ │ ├── CorvaModal.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CorvaModal.snapshot.test.js.snap │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── Notifications │ │ │ ├── Notifications.tsx │ │ │ ├── NotificationsContainer.tsx │ │ │ ├── Toast.styles.ts │ │ │ ├── Toast.tsx │ │ │ ├── __tests__ │ │ │ │ ├── NotificationsContainer.test.js │ │ │ │ ├── Toast.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── Toast.test.js.snap │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── OffsetWellButton │ │ │ ├── OffsetWellButton.stories.js │ │ │ ├── OffsetWellButton.tsx │ │ │ ├── __tests__ │ │ │ │ └── OffsetWellButton.test.js │ │ │ └── index.ts │ │ ├── OffsetWellChips │ │ │ ├── Chip.tsx │ │ │ ├── ChipsContainer.stories.js │ │ │ ├── ChipsContainer.tsx │ │ │ ├── icons │ │ │ │ └── SubjectIcon.js │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── OffsetWellMap │ │ │ ├── CustomIcon │ │ │ │ ├── SubjectHighlightWellIcon.svg │ │ │ │ └── SubjectWellIcon.svg │ │ │ ├── OffsetWellMap.js │ │ │ ├── OffsetWellMap.module.css │ │ │ ├── WellTooltip.js │ │ │ ├── WellTooltip.module.css │ │ │ ├── effects │ │ │ │ ├── index.js │ │ │ │ └── usePreviousWells.js │ │ │ ├── index.js │ │ │ └── utils.js │ │ ├── OffsetWellPickerV2 │ │ │ ├── OffsetWellPickerDialog.js │ │ │ ├── components │ │ │ │ ├── Filter │ │ │ │ │ ├── ClearFiltersButton.js │ │ │ │ │ ├── MultiSelect.js │ │ │ │ │ ├── NonEngineeredWellsSwitch.js │ │ │ │ │ ├── RadiusInput.js │ │ │ │ │ ├── SidetrackSwitch.js │ │ │ │ │ ├── SingleSelect.js │ │ │ │ │ ├── SubjectWellSearch.js │ │ │ │ │ ├── ToggleFiltersButton.js │ │ │ │ │ ├── ToggleMapButton.js │ │ │ │ │ └── index.js │ │ │ │ ├── Map │ │ │ │ │ ├── Map.css │ │ │ │ │ ├── Map.js │ │ │ │ │ ├── index.css │ │ │ │ │ ├── index.js │ │ │ │ │ ├── popup.css │ │ │ │ │ └── popupGenerator.js │ │ │ │ └── Table │ │ │ │ │ ├── MetricsAddMenu.js │ │ │ │ │ ├── MetricsSelect.js │ │ │ │ │ ├── SubjectIndicator.css │ │ │ │ │ ├── SubjectIndicator.js │ │ │ │ │ ├── WellSearch.js │ │ │ │ │ └── index.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ ├── biDirectionalFiltering.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ └── apiCalls.js │ │ ├── OffsetWellPickerV3 │ │ │ ├── components │ │ │ │ ├── CustomSelectionView │ │ │ │ │ ├── components │ │ │ │ │ │ ├── Filter │ │ │ │ │ │ │ ├── ClearFiltersButton.js │ │ │ │ │ │ │ ├── MultiSelect.js │ │ │ │ │ │ │ ├── RadiusInput.js │ │ │ │ │ │ │ ├── SidetrackSwitch.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── Map │ │ │ │ │ │ │ ├── FormationsLegend.js │ │ │ │ │ │ │ ├── Map.css │ │ │ │ │ │ │ ├── Map.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── popupGenerator.js │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ │ └── Table │ │ │ │ │ │ │ ├── AssetSearch.js │ │ │ │ │ │ │ ├── AutoCompleteAssetSearch │ │ │ │ │ │ │ ├── AssetResultSection.js │ │ │ │ │ │ │ ├── AssetTypesSection.js │ │ │ │ │ │ │ ├── AutoCompleteAssetSearch.js │ │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ │ ├── effects │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── useAssetsData.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── MetricsAddMenu.js │ │ │ │ │ │ │ ├── MetricsSelect.js │ │ │ │ │ │ │ ├── SubjectIndicator.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── styles.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── effects │ │ │ │ │ │ ├── biDirectionalFiltering.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── OffsetWellSelectionView │ │ │ │ │ └── index.js │ │ │ │ ├── TabSelection │ │ │ │ │ ├── ToggleMapButton.js │ │ │ │ │ └── index.js │ │ │ │ ├── WellHubView │ │ │ │ │ └── index.js │ │ │ │ └── shared │ │ │ │ │ ├── OffsetWellTableHead.js │ │ │ │ │ └── OffsetWellTableRows.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ └── apiCalls.js │ │ ├── OffsetWellPickerV4 │ │ │ ├── OffsetWellPickerV4.js │ │ │ ├── OffsetWellPickerV4.module.css │ │ │ ├── components │ │ │ │ ├── AppHeader │ │ │ │ │ ├── AppHeader.js │ │ │ │ │ ├── AppHeader.module.css │ │ │ │ │ └── index.js │ │ │ │ ├── CustomInfoIcon │ │ │ │ │ ├── CustomInfoIcon.js │ │ │ │ │ ├── CustomInfoIcon.module.css │ │ │ │ │ └── index.js │ │ │ │ ├── Filter │ │ │ │ │ ├── Filter.js │ │ │ │ │ ├── Filter.module.css │ │ │ │ │ ├── MultiSelect.js │ │ │ │ │ ├── PeriodSelect.js │ │ │ │ │ ├── RadiusInput.js │ │ │ │ │ ├── SingleSelect.js │ │ │ │ │ ├── WellSection.js │ │ │ │ │ └── index.js │ │ │ │ ├── Map │ │ │ │ │ ├── WellsMap.js │ │ │ │ │ ├── WellsMap.module.css │ │ │ │ │ └── index.js │ │ │ │ ├── OffsetWellsTable │ │ │ │ │ ├── AdvancedSearch │ │ │ │ │ │ ├── AdvancedSearch.js │ │ │ │ │ │ ├── AdvancedSearch.module.css │ │ │ │ │ │ ├── AssetResultSection.js │ │ │ │ │ │ ├── AssetTypesSection.js │ │ │ │ │ │ ├── AutoCompleteAssetSearch.js │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── MetricsSelect.js │ │ │ │ │ ├── MetricsSettingMenu.js │ │ │ │ │ ├── OffsetWellsTable.js │ │ │ │ │ ├── OffsetWellsTable.module.css │ │ │ │ │ ├── OffsetWellsTableHead.js │ │ │ │ │ ├── OffsetWellsTableHead.module.css │ │ │ │ │ ├── OffsetWellsTableRow.js │ │ │ │ │ ├── OffsetWellsTableRow.module.css │ │ │ │ │ ├── SubjectWellMark.js │ │ │ │ │ ├── ViewWellSectionsName.js │ │ │ │ │ └── index.js │ │ │ │ └── Toolbar │ │ │ │ │ ├── Toolbar.js │ │ │ │ │ ├── Toolbar.module.css │ │ │ │ │ └── index.js │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ ├── index.js │ │ │ │ ├── useAdvancedWells.js │ │ │ │ ├── useAssetsData.js │ │ │ │ ├── useBicWells.js │ │ │ │ ├── useCompanyMetricKey.js │ │ │ │ ├── useFetchWells.js │ │ │ │ ├── useFilterOptions.js │ │ │ │ ├── useFilteredWells.js │ │ │ │ ├── useRadiusWells.js │ │ │ │ ├── useSortedWells.js │ │ │ │ └── useTableColumns.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ ├── apiCalls.js │ │ │ │ ├── index.js │ │ │ │ ├── timePeriod.js │ │ │ │ └── unitSystem.js │ │ ├── PadModeSelect │ │ │ ├── PadModeSelect.js │ │ │ ├── WellStreamActivityStatus.tsx │ │ │ ├── __tests__ │ │ │ │ └── PadModeSelect.test.js │ │ │ ├── effects │ │ │ │ ├── useWellStreamActivityTypeSubscription.ts │ │ │ │ └── useWellStreamsData.ts │ │ │ ├── index.js │ │ │ ├── types.ts │ │ │ ├── utils.js │ │ │ └── utils │ │ │ │ ├── initialDataFetcher.ts │ │ │ │ └── time.ts │ │ ├── PadOffsetsPicker │ │ │ ├── OffsetAssetChip.js │ │ │ ├── OffsetAssetsListExpander.js │ │ │ ├── PadOffsetsPicker.js │ │ │ ├── StagesSelector.js │ │ │ └── index.js │ │ ├── PadOffsetsPickerV2 │ │ │ ├── PadOffsetsPickerV2.js │ │ │ ├── index.js │ │ │ └── useDialogState.js │ │ ├── ParameterCharts │ │ │ ├── AddEditTrack.css │ │ │ ├── AddEditTrack.js │ │ │ ├── ChartsContext.js │ │ │ ├── DataContext.js │ │ │ ├── ParameterCharts.css │ │ │ ├── ParameterCharts.js │ │ │ ├── ParameterCharts.stories.js │ │ │ ├── Readme.md │ │ │ ├── SettingsContext.js │ │ │ ├── components │ │ │ │ ├── ChartContainer.css │ │ │ │ ├── ChartContainer.js │ │ │ │ ├── Charts │ │ │ │ │ ├── EmptyChart.css │ │ │ │ │ ├── EmptyChart.js │ │ │ │ │ ├── LineChart.css │ │ │ │ │ ├── LineChart.js │ │ │ │ │ └── options.js │ │ │ │ ├── DataLoadingIndicator.js │ │ │ │ ├── SingleChannelTrackSettings.js │ │ │ │ ├── Tooltip │ │ │ │ │ ├── CursorPositioner.css │ │ │ │ │ ├── CursorPositioner.js │ │ │ │ │ ├── Tooltip.css │ │ │ │ │ └── Tooltip.js │ │ │ │ ├── TraceHeader.css │ │ │ │ ├── TraceHeader.js │ │ │ │ ├── TraceSelect.js │ │ │ │ ├── TraceSettings.css │ │ │ │ ├── TraceSettings.js │ │ │ │ ├── Track.css │ │ │ │ ├── Track.js │ │ │ │ ├── TrackSettings.css │ │ │ │ └── TrackSettings.js │ │ │ ├── constants.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ └── dataParser.js │ │ ├── PinnableFilters │ │ │ ├── PinnableFilters.css │ │ │ ├── PinnableFilters.js │ │ │ ├── components │ │ │ │ ├── FiltersToggler.js │ │ │ │ ├── PinAppSwitch.js │ │ │ │ └── pin.svg │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils.js │ │ ├── Popover │ │ │ ├── Popover.js │ │ │ └── index.js │ │ ├── Popper │ │ │ ├── Popper.js │ │ │ └── index.js │ │ ├── PostInput │ │ │ ├── PostInput.css │ │ │ ├── PostInput.js │ │ │ └── index.js │ │ ├── PostPreviewDialog │ │ │ ├── index.js │ │ │ └── styles.css │ │ ├── PriceInput │ │ │ ├── FormattedNumber.js │ │ │ ├── PriceInput.js │ │ │ └── index.js │ │ ├── RangeSlider │ │ │ ├── Input.css │ │ │ ├── RangeSlider.css │ │ │ ├── RangeSlider.stories.js │ │ │ ├── RangeSlider.tsx │ │ │ ├── constants.js │ │ │ ├── index.js │ │ │ ├── inputs │ │ │ │ ├── FromInput.js │ │ │ │ └── ToInput.js │ │ │ ├── strategies │ │ │ │ ├── horizontal.js │ │ │ │ └── vertical.js │ │ │ └── utils.js │ │ ├── RealTimeValuesSidebar │ │ │ ├── RealTimeSidebar.tsx │ │ │ ├── RealTimeSidebarContext.ts │ │ │ ├── RealTimeSidebarStyles.ts │ │ │ ├── RealTimeValuesBox │ │ │ │ ├── RealTimeBox.tsx │ │ │ │ ├── RealTimeBoxEditDialog.tsx │ │ │ │ ├── RealTimeBoxList.tsx │ │ │ │ ├── RealTimeBoxStyles.ts │ │ │ │ └── index.ts │ │ │ ├── SidebarFooter.tsx │ │ │ ├── SidebarTitle.tsx │ │ │ ├── __tests__ │ │ │ │ ├── RealTimeBox.test.tsx │ │ │ │ ├── RealTimeBoxEditDialog.test.tsx │ │ │ │ ├── RealTimeSidebar.test.tsx │ │ │ │ └── RealTimeSidebarFooter.test.tsx │ │ │ ├── enums.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── ResizableTable │ │ │ ├── ResizableTable.stories.js │ │ │ ├── ResizableTable.tsx │ │ │ ├── ResizableTableCell.tsx │ │ │ ├── ResizableTableHeaderCell.tsx │ │ │ └── index.ts │ │ ├── Search │ │ │ ├── Search.stories.js │ │ │ ├── Search.tsx │ │ │ ├── __tests__ │ │ │ │ └── Search.test.js │ │ │ ├── components │ │ │ │ ├── Groups.js │ │ │ │ ├── InputAdornmentLeft.js │ │ │ │ ├── Listbox.js │ │ │ │ ├── Paper.js │ │ │ │ ├── RecentSearches.js │ │ │ │ └── index.js │ │ │ ├── context │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── styles.ts │ │ │ └── utils │ │ │ │ └── truncate.ts │ │ ├── SearchInput │ │ │ └── index.js │ │ ├── Select │ │ │ ├── SelectFilterBy.tsx │ │ │ ├── index.tsx │ │ │ ├── stories │ │ │ │ ├── Select.stories.js │ │ │ │ └── SelectFilterBy.stories.js │ │ │ └── types.ts │ │ ├── SettingEditors │ │ │ ├── ColorEditor │ │ │ │ ├── ColorEditor.stories.js │ │ │ │ ├── index.tsx │ │ │ │ └── style.css │ │ │ ├── DropdownEditor │ │ │ │ └── index.js │ │ │ ├── RadioEditor │ │ │ │ ├── RadioEditor.stories.js │ │ │ │ └── index.tsx │ │ │ └── index.js │ │ ├── SlateFormattedText │ │ │ ├── Constants.js │ │ │ ├── Elements │ │ │ │ ├── ImageElement │ │ │ │ │ ├── ImageElement.css │ │ │ │ │ └── ImageElement.js │ │ │ │ ├── VideoElement │ │ │ │ │ ├── VideoElement.js │ │ │ │ │ └── style.css │ │ │ │ └── index.js │ │ │ ├── RenderElements.js │ │ │ ├── SlateFormattedText.js │ │ │ ├── index.js │ │ │ ├── style.css │ │ │ └── utils.js │ │ ├── StageDesignVActual │ │ │ ├── ComparisonBar │ │ │ │ ├── ComparisonBar.js │ │ │ │ ├── index.js │ │ │ │ └── utils.js │ │ │ ├── ComparisonHeader.js │ │ │ ├── ComparisonRow.js │ │ │ ├── ComparisonTable.css │ │ │ ├── ElementsComparison │ │ │ │ ├── ElementsComparison.js │ │ │ │ ├── index.js │ │ │ │ └── utils.js │ │ │ └── index.js │ │ ├── StatusBadge │ │ │ ├── StatusBadge.stories.js │ │ │ ├── __tests__ │ │ │ │ ├── StatusBadge.test.js │ │ │ │ ├── useWellnessAlerts.test.js │ │ │ │ └── utils.test.js │ │ │ ├── api.ts │ │ │ ├── components │ │ │ │ ├── DQAccordionDetailsContent.tsx │ │ │ │ ├── DQAlertTooltip.tsx │ │ │ │ ├── DQAlertsTooltip.tsx │ │ │ │ ├── DQStatusIcon.tsx │ │ │ │ ├── DQUnvalidatedContent.tsx │ │ │ │ └── ReportIssueModal.tsx │ │ │ ├── constants.ts │ │ │ ├── index.tsx │ │ │ ├── styles.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── Stepper │ │ │ ├── Step.css │ │ │ ├── Step.tsx │ │ │ ├── Stepper.stories.js │ │ │ ├── Stepper.tsx │ │ │ ├── StepsWrapper.css │ │ │ ├── StepsWrapper.tsx │ │ │ ├── __tests__ │ │ │ │ ├── Step.test.js │ │ │ │ ├── Stepper.test.js │ │ │ │ └── StepsWrapper.test.js │ │ │ ├── constants.js │ │ │ └── index.js │ │ ├── StyledMenuItem │ │ │ └── index.js │ │ ├── SwitchControl │ │ │ ├── SwitchControl.stories.js │ │ │ ├── __tests__ │ │ │ │ └── SwitchControl.test.js │ │ │ ├── index.tsx │ │ │ ├── style.css │ │ │ └── types.ts │ │ ├── Table │ │ │ ├── Table.stories.js │ │ │ ├── TableCell │ │ │ │ └── TableCell.js │ │ │ ├── TableContainer │ │ │ │ └── TableContainer.js │ │ │ ├── TableSortLabel │ │ │ │ └── TableSortLabel.js │ │ │ ├── TableToolbar │ │ │ │ └── TableToolbar.js │ │ │ └── index.js │ │ ├── Tabs │ │ │ ├── Tab.js │ │ │ ├── Tabs.stories.js │ │ │ ├── Tabs.tsx │ │ │ └── index.js │ │ ├── Template │ │ │ ├── TemplatePopover │ │ │ │ ├── Styles.js │ │ │ │ └── index.js │ │ │ └── TemplateSharingDialog │ │ │ │ ├── ChipSelector.css │ │ │ │ ├── ChipSelector.js │ │ │ │ ├── UsersChipSelector.js │ │ │ │ └── index.js │ │ ├── TextField │ │ │ ├── effects │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── TextLink │ │ │ ├── TextLink.stories.js │ │ │ └── index.tsx │ │ ├── Toaster │ │ │ ├── ToastContainer.tsx │ │ │ ├── Toaster.tsx │ │ │ ├── __tests__ │ │ │ │ ├── ToastContainer.test.js │ │ │ │ ├── Toaster.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── Toaster.test.js.snap │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── Tooltip │ │ │ ├── MuiTooltipDcWrapper.tsx │ │ │ ├── ScrollableTooltip.tsx │ │ │ ├── Tooltip.tsx │ │ │ └── index.ts │ │ ├── TracesEditModal │ │ │ ├── TracesEditModal.css │ │ │ ├── TracesEditModal.js │ │ │ ├── TracesEditModalContainer.js │ │ │ └── index.js │ │ ├── TruncatedText │ │ │ ├── TruncatedText.stories.js │ │ │ └── index.js │ │ ├── Typography.js │ │ ├── UserCard │ │ │ ├── index.js │ │ │ └── style.css │ │ ├── UserCardPopover.js │ │ ├── UserMention │ │ │ ├── constants.js │ │ │ ├── index.js │ │ │ ├── style.css │ │ │ └── utils │ │ │ │ └── index.js │ │ ├── VirtualizedTable │ │ │ ├── CustomizeColumnsDialog.js │ │ │ ├── DraggableList.js │ │ │ ├── VirtualizedTable.stories.js │ │ │ ├── VirtualizedTable.tsx │ │ │ └── index.js │ │ ├── WellSummary │ │ │ ├── ActivitySummaryChart.js │ │ │ ├── FracWirelineTimeChart.js │ │ │ ├── WellSummaryItemLabel.js │ │ │ ├── WellSummaryItemTitle.js │ │ │ ├── WellSummaryItemValue.js │ │ │ ├── assets │ │ │ │ ├── circle_glow.svg │ │ │ │ ├── circle_gradient.svg │ │ │ │ ├── left_arrow.svg │ │ │ │ └── up_arrow.svg │ │ │ ├── effects │ │ │ │ ├── index.js │ │ │ │ └── useWellSummaryData.js │ │ │ ├── index.js │ │ │ └── utils.js │ │ ├── index.js │ │ └── shared │ │ │ ├── __tests__ │ │ │ ├── createTestHook.tsx │ │ │ └── useThrottledCallback.test.ts │ │ │ └── useThrottledCallback.ts │ ├── config │ │ ├── extendNative.js │ │ ├── highcharts │ │ │ ├── highcharts-contour.js │ │ │ ├── highcharts.js │ │ │ └── index.js │ │ ├── index.js │ │ ├── initGlobalDependencies.js │ │ ├── mapbox │ │ │ └── index.js │ │ └── theme │ │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── index.test.js.snap │ │ │ └── index.test.js │ │ │ ├── accordionOverrides.js │ │ │ ├── buttonOverrides.js │ │ │ ├── checkboxOverrides.js │ │ │ ├── chipOverrides.js │ │ │ ├── dateTimePickerThemeOverrides.js │ │ │ ├── fabOverrides.js │ │ │ ├── formControlLabelOverrides.js │ │ │ ├── formGroupOverrides.js │ │ │ ├── index.js │ │ │ ├── lightThemePalette.mjs │ │ │ ├── palette.mjs │ │ │ ├── radioOverrides.js │ │ │ ├── tableOverrides.js │ │ │ ├── textFieldOverrides.js │ │ │ ├── theme.d.ts │ │ │ ├── themeVariables.mjs │ │ │ ├── toggleButtonsGroupOverrides.js │ │ │ └── tooltipOverrides.js │ ├── constants │ │ ├── accuracy.js │ │ ├── alerts.js │ │ ├── appPackages.js │ │ ├── apps.js │ │ ├── assetTypes.js │ │ ├── assets.js │ │ ├── bha.js │ │ ├── casing.js │ │ ├── completion.js │ │ ├── componentsSettings.js │ │ ├── corvaCompanyId.js │ │ ├── dashboards.js │ │ ├── dateTimeFormat.js │ │ ├── devcenter.js │ │ ├── drillstring.js │ │ ├── featureFlags.js │ │ ├── feed.js │ │ ├── goals.js │ │ ├── incidents.js │ │ ├── index.js │ │ ├── localStorageKeys.js │ │ ├── login.js │ │ ├── main.js │ │ ├── mixpanel.js │ │ ├── notificationToasts.js │ │ ├── notifications.js │ │ ├── nptEvents.js │ │ ├── rigActivity.js │ │ ├── segment.js │ │ ├── sizes.js │ │ ├── streamSourceType.js │ │ ├── streams.js │ │ ├── subscriptions.js │ │ ├── theme.js │ │ ├── timezone.js │ │ ├── tooltips.js │ │ └── wellSummary.js │ ├── effects │ │ ├── __tests__ │ │ │ ├── useDevCenterApp.test.js │ │ │ ├── useEscPress.test.js │ │ │ ├── useMatchAppContainerSize.test.tsx │ │ │ └── useOutsideClick.test.js │ │ ├── index.js │ │ ├── useDelayedDcFullscreenElemOpen.tsx │ │ ├── useDevCenterApp.js │ │ ├── useEscPress.js │ │ ├── useMatchAppContainerSize.ts │ │ ├── useOutsideClick.js │ │ ├── useResizeObserver.js │ │ ├── useSharedDCStore.js │ │ ├── useSignedURL.js │ │ ├── useSubscriptions.js │ │ └── useWellnessAlerts.ts │ ├── exampleApp │ │ ├── ChartActionsListExample.js │ │ ├── ExampleApp.css │ │ ├── ExampleApp.js │ │ ├── ParameterChartExample.js │ │ ├── RangeSliderExample.js │ │ ├── data │ │ │ ├── changeData.js │ │ │ ├── parametersWitsAndDysfanction.json │ │ │ └── parametersWitsAndDysfanction2.json │ │ └── index.js │ ├── hocs │ │ ├── index.js │ │ └── withMUIProvidersHOC.js │ ├── index.js │ ├── permissions │ │ ├── PermissionsContext.js │ │ ├── ProvidePermissions.js │ │ ├── __tests__ │ │ │ ├── usePermissions.test.js │ │ │ ├── useProvidePermissions.test.js │ │ │ └── withPermissionsHOC.test.js │ │ ├── constants │ │ │ ├── abilities.js │ │ │ ├── appsPermissions.js │ │ │ ├── index.js │ │ │ └── settingsApps.js │ │ ├── index.js │ │ ├── usePermissions.js │ │ ├── useProvidePermissions.js │ │ ├── utils.js │ │ └── withPermissionsHOC.js │ ├── styles │ │ ├── counter │ │ │ ├── counter.module.scss │ │ │ └── index.js │ │ ├── customScrollbars.global.css │ │ ├── emojiMart.global.css │ │ ├── generatedThemesVariables.global.css │ │ ├── globalStyles.js │ │ ├── index.global.css │ │ ├── index.js │ │ ├── lightbox.global.css │ │ ├── mapbox.global.css │ │ ├── reactVirtualized.global.css │ │ └── typography │ │ │ ├── colors.module.scss │ │ │ ├── index.js │ │ │ └── typography.module.scss │ ├── types │ │ ├── globals │ │ │ ├── Number-augmentation.d.ts │ │ │ ├── sizeme.d.ts │ │ │ └── types.d.ts │ │ ├── index.ts │ │ └── shared │ │ │ ├── CustomGradient.ts │ │ │ ├── GradientFillStop.ts │ │ │ └── index.ts │ └── utils │ │ ├── DrillstringUtils.js │ │ ├── DrillstringUtils.md │ │ ├── FluidCheckUtils.js │ │ ├── HeatmapUtils.js │ │ ├── StageDesignVActualUtils.js │ │ ├── __tests__ │ │ ├── accuracy.test.js │ │ ├── alerts.test.js │ │ ├── chartSeries.test.js │ │ ├── completion.test.js │ │ ├── components.test.js │ │ ├── convert.test.js │ │ ├── convertKeys.test.js │ │ ├── dashboardReports.test.js │ │ ├── fixtures │ │ │ └── convert.fixture.js │ │ ├── goals.test.js │ │ └── mapbox.test.js │ │ ├── accuracy.js │ │ ├── alerts.js │ │ ├── apps.js │ │ ├── audio.js │ │ ├── bha.js │ │ ├── casing │ │ ├── conversion.js │ │ ├── index.js │ │ └── validation.js │ │ ├── chartSeries.js │ │ ├── completion.js │ │ ├── components.js │ │ ├── constants │ │ └── units.js │ │ ├── convert.js │ │ ├── convertKeys.js │ │ ├── csvExport.js │ │ ├── dashboardReports.js │ │ ├── delay.js │ │ ├── devcenter.js │ │ ├── devcenterToasts.js │ │ ├── drillstring │ │ ├── conversion.js │ │ ├── index.js │ │ ├── schematic.js │ │ └── validation.js │ │ ├── env.js │ │ ├── feed.js │ │ ├── fileExtension.js │ │ ├── formatting.js │ │ ├── ga.js │ │ ├── goals.js │ │ ├── index.js │ │ ├── jsonaDataFormatter.js │ │ ├── lasParser.js │ │ ├── localStorage.js │ │ ├── main.js │ │ ├── mapUnits.js │ │ ├── mapbox.js │ │ ├── metrics │ │ ├── index.js │ │ ├── metricsConfig.js │ │ └── utils.js │ │ ├── mobileDetect.js │ │ ├── nativeMessages.js │ │ ├── notificationToasts.js │ │ ├── notifications.js │ │ ├── permissions.js │ │ ├── reports.js │ │ ├── resolveWellHubSlug.js │ │ ├── sharedDCStore.js │ │ ├── themeVariables.js │ │ ├── time.js │ │ └── torqueAndHookloadUtils.js ├── storybook │ ├── assets │ │ └── star.png │ ├── corvaTheme.js │ ├── main.js │ ├── manager-head.html │ ├── manager.js │ ├── preview-body.html │ ├── preview-head.html │ ├── preview.js │ └── stories │ │ ├── Accordion.stories.js │ │ ├── AccuracyUtils │ │ ├── GetColorBySeverity.stories.mdx │ │ ├── GetSeverity.stories.mdx │ │ └── PurifyPlanName.stories.mdx │ │ ├── Badge.stories.js │ │ ├── ChartSeriesUtils │ │ └── SmoothenSerie.stories.mdx │ │ ├── Checkbox.stories.js │ │ ├── ContextMenu.stories.js │ │ ├── ConvertUtils │ │ ├── ConvertArray.stories.mdx │ │ ├── ConvertValue.stories.mdx │ │ ├── GetAllUnitTypes.stories.mdx │ │ ├── GetDefaultUnits.stories.mdx │ │ ├── GetUnitDisplay.stories.mdx │ │ ├── GetUnitPlural.stories.mdx │ │ ├── GetUnitSingular.stories.mdx │ │ ├── GetUnitsByType.stories.mdx │ │ ├── GetUnitsPreference.stories.mdx │ │ └── UpdateUserUnits.stories.mdx │ │ ├── DropdownEditorMultiple.stories.js │ │ ├── DropdownEditorSingle.stories.js │ │ ├── Effects │ │ └── useSharedDCStore.stories.mdx │ │ ├── Fab.stories.js │ │ ├── InputFieldsIcons.stories.js │ │ ├── InputFieldsText.stories.js │ │ ├── Main │ │ ├── Closest.stories.mdx │ │ ├── ConvertToPercent.stories.mdx │ │ ├── CopyToClipboard.stories.mdx │ │ ├── FormatValuePrecision.stories.mdx │ │ ├── GetAssetStatusColor.stories.mdx │ │ ├── GetAverageByColumnsForCSV.stories.mdx │ │ ├── GetColorFromString.stories.mdx │ │ ├── GetLinesFrequency.stories.mdx │ │ ├── GetOperationByType.stories.mdx │ │ ├── HashCode.stories.mdx │ │ ├── HexToRgbA.stories.mdx │ │ ├── IntToRGB.stories.mdx │ │ ├── MathMax.stories.mdx │ │ ├── MathMin.stories.mdx │ │ ├── ParseNumberFromString.stories.mdx │ │ └── TrancateString.stories.mdx │ │ ├── MaterialSelectFilled.stories.js │ │ ├── MaterialSelectOutlined.stories.js │ │ ├── MenuList.stories.js │ │ ├── Metrics │ │ ├── ConvertPercentageMetrics.stories.mdx │ │ ├── GetConvertedMetricValue.stories.mdx │ │ ├── GetMetricTypeUnitDisplay.stories.mdx │ │ └── GetMetricUnitDisplay.stories.mdx │ │ ├── MiniApp │ │ ├── MiniApp.css │ │ └── index.js │ │ ├── MultiSelectMenu.stories.js │ │ ├── MultiSelectMenuWithIcons.stories.js │ │ ├── Popover.stories.js │ │ ├── Radio.stories.js │ │ ├── SideBarMenu.stories.js │ │ ├── Styles │ │ └── Typography.stories.mdx │ │ ├── Toaster.stories.js │ │ ├── ToggleButton.stories.js │ │ ├── Tooltip.stories.js │ │ └── Utils │ │ └── sharedDCStore.stories.mdx ├── tsconfig.json └── yarn.lock ├── dc-fe-corva-insights ├── .commitlintrc.json ├── .env.sample ├── .eslintrc ├── .github │ ├── pull_request_template.md │ └── workflows │ │ ├── code-checks.yml │ │ ├── develop.yml │ │ ├── feat-fix-delete.yml │ │ ├── feat-fix.yml │ │ ├── release-fix-X.X.X.yml │ │ └── validate-pr-title.yml ├── .gitignore ├── .husky │ ├── commit-msg │ └── pre-commit ├── .nvmrc ├── .prettierrc ├── CHANGELOG.md ├── CODEOWNERS ├── README.md ├── config-overrides.js ├── config │ └── jest │ │ ├── babelTransform.js │ │ ├── cssTransform.js │ │ ├── fileTransform.js │ │ ├── globalSetup.js │ │ └── setupTests.js ├── manifest.json ├── package.json ├── src │ ├── App.module.css │ ├── App.tsx │ ├── AppSettings.tsx │ ├── api │ │ ├── authors │ │ │ ├── __tests__ │ │ │ │ └── index.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── insights │ │ │ ├── __tests__ │ │ │ │ └── index.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── params.ts │ │ └── records │ │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ ├── assets │ │ ├── activity.svg │ │ ├── csv.svg │ │ ├── doc.svg │ │ ├── empty_state.png │ │ ├── excel.svg │ │ ├── field_sample.svg │ │ ├── field_sample_vendor.svg │ │ ├── file.svg │ │ ├── filters.svg │ │ ├── key_milestones.svg │ │ ├── measurements.svg │ │ ├── observations.svg │ │ ├── pdf.svg │ │ ├── picture.svg │ │ ├── pptx.svg │ │ ├── range.svg │ │ ├── selected_day.svg │ │ ├── site_visit.svg │ │ ├── timeline.svg │ │ ├── today.svg │ │ └── txt.svg │ ├── base-tsconfig.json │ ├── components │ │ ├── Calendar │ │ │ ├── Header │ │ │ │ ├── MonthSelector │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── WeekDays │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Legend │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ └── useLegendItems.ts │ │ │ ├── List │ │ │ │ ├── Day │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── IconWithBadge │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── InsightTiles │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ └── useDaySize.ts │ │ │ ├── index.module.css │ │ │ ├── index.tsx │ │ │ └── useListMaxHeight.ts │ │ ├── Container │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── Header │ │ │ ├── AddInsight │ │ │ │ └── index.tsx │ │ │ ├── Filters │ │ │ │ ├── Content │ │ │ │ │ └── index.tsx │ │ │ │ ├── SmallScreen │ │ │ │ │ ├── Popover │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── InsightForm │ │ │ ├── AddInsight │ │ │ │ └── index.tsx │ │ │ ├── Comment │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── EditInsight │ │ │ │ └── index.tsx │ │ │ ├── FilesPreview │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Selectors │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── Main.module.css │ │ ├── Main.tsx │ │ └── SelectedInsightsPanel │ │ │ ├── AddInsightIcon │ │ │ └── index.tsx │ │ │ ├── Header │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── Main │ │ │ ├── Group │ │ │ │ ├── Item │ │ │ │ │ ├── index.module.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useSideEffects.ts │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Item │ │ │ │ ├── AppPreview │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── Comments │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── Documents │ │ │ │ │ ├── Viewer │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── InsightAvatar │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── SpecificType │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── List │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── TabBar │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── Title │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── VersionFullScreen │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── VersionModal │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ ├── constants.ts │ ├── contexts │ │ ├── calendar │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── filters │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── global │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── insight-form │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── selected-insights │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ └── useInsightsStore.ts │ ├── custom.d.ts │ ├── entities │ │ ├── asset │ │ │ └── index.ts │ │ ├── insight │ │ │ ├── __tests__ │ │ │ │ └── helpers.test.ts │ │ │ ├── app │ │ │ │ └── index.ts │ │ │ ├── author │ │ │ │ ├── __tests__ │ │ │ │ │ └── helpers.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ └── index.ts │ │ │ ├── comment │ │ │ │ └── index.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── record │ │ │ ├── __tests__ │ │ │ │ └── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ └── user │ │ │ └── index.ts │ ├── index.js │ ├── mocks │ │ ├── api │ │ │ ├── authors-api.ts │ │ │ ├── insights-api.ts │ │ │ └── records-api.ts │ │ ├── insight.ts │ │ ├── record.ts │ │ ├── stores │ │ │ ├── filters-store.ts │ │ │ ├── global-store.ts │ │ │ └── insights-store.ts │ │ └── user.ts │ ├── shared │ │ ├── components │ │ │ ├── AsyncPhoto │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── AttachFile │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Comment │ │ │ │ ├── Menu │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── CommentIcon │ │ │ │ ├── BadgeIcon │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── CommentInput │ │ │ │ ├── Actions │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ ├── styles.ts │ │ │ │ └── useHandlers.ts │ │ │ ├── ContextMenu │ │ │ │ └── index.tsx │ │ │ ├── CustomSelector │ │ │ │ ├── RenderedValue │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── styles.ts │ │ │ │ └── types.ts │ │ │ ├── DeleteDialog │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── EmojiSelector │ │ │ │ └── index.tsx │ │ │ ├── Feed │ │ │ │ ├── Actions │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreatedAt │ │ │ │ │ └── index.tsx │ │ │ │ ├── Videos │ │ │ │ │ ├── VideoItem │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── FileItem │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── FilePreview │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── FileViewer │ │ │ │ ├── DocViewer │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── Slider │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Gallery │ │ │ │ ├── Grid │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── ModeSelector │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── Viewer │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── useGallerySideEffects.ts │ │ │ ├── InsightType │ │ │ │ ├── Circle │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── Tile │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ └── types.ts │ │ │ ├── Linkify │ │ │ │ └── index.tsx │ │ │ ├── ListWithGradient │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── NavigationButton │ │ │ │ └── index.tsx │ │ │ ├── Tile │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ └── VideoItem │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ ├── hooks │ │ │ ├── useDelayLoading.ts │ │ │ ├── useDelayedLoading.ts │ │ │ ├── useDownloadFIle.ts │ │ │ └── useViewer.ts │ │ ├── services │ │ │ ├── __tests__ │ │ │ │ ├── insights-events-listener.test.ts │ │ │ │ └── native-events-channel.test.ts │ │ │ ├── event-listener.ts │ │ │ ├── insights-events-listener.ts │ │ │ └── native-events-channel.ts │ │ ├── styles.ts │ │ ├── types.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ │ └── index.ts │ └── stores │ │ ├── calendar │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ │ ├── filters │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ │ ├── global │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ │ ├── insight-form │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ │ ├── insights │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ │ ├── selected-insights │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ │ └── store.ts ├── tsconfig.json └── yarn.lock ├── dc-fe-damage-index ├── .env.sample ├── .eslintrc ├── .gitignore ├── .nvmrc ├── .prettierrc ├── README.md ├── config-overrides.js ├── config │ └── jest │ │ ├── babelTransform.js │ │ ├── cssTransform.js │ │ ├── fileTransform.js │ │ ├── globalSetup.js │ │ └── setupTests.js ├── manifest.json ├── package.json ├── src │ ├── App.module.css │ ├── App.tsx │ ├── AppSettings.tsx │ ├── __tests__ │ │ └── testsSetup.test.tsx │ ├── assets │ │ ├── dark-logo.svg │ │ ├── last-point-marker.svg │ │ └── logo.svg │ ├── base-tsconfig.json │ ├── components │ │ ├── AppHeader │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── Container │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── CurrentDI │ │ │ ├── Chart │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ └── options.ts │ │ │ ├── MetaInfo │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── DIChange │ │ │ ├── DIChangeValue │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── DIListGraph │ │ │ ├── AxisSelector │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Chart │ │ │ │ ├── index.tsx │ │ │ │ └── options.ts │ │ │ ├── FullScreenButton │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── Header │ │ │ ├── Filters │ │ │ │ ├── BHAsSelector │ │ │ │ │ └── index.tsx │ │ │ │ ├── CommonFilterSelector │ │ │ │ │ └── index.tsx │ │ │ │ ├── LoadWellsButton │ │ │ │ │ └── index.tsx │ │ │ │ ├── WellsSelector │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Scale │ │ │ │ ├── __tests__ │ │ │ │ │ └── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── Settings │ │ │ │ ├── FullScreenToggle │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── WellInfo │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ ├── Main.module.css │ │ ├── Main.tsx │ │ ├── OffsetPicker │ │ │ └── index.tsx │ │ └── RecommendedParameters │ │ │ ├── FitInChart │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── FitInValue │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── RecommendedValues │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── Table │ │ │ ├── Header │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Row │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ │ ├── ViewSelector │ │ │ ├── index.module.css │ │ │ └── index.tsx │ │ │ ├── index.module.css │ │ │ └── index.tsx │ ├── constants.ts │ ├── contexts │ │ ├── di-chart │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── di-list │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── filters │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ ├── global │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ │ └── optimization-parameters │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ └── use.ts │ ├── custom.d.ts │ ├── entities │ │ ├── asset │ │ │ ├── __tests__ │ │ │ │ └── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── bha │ │ │ ├── __tests__ │ │ │ │ └── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── damage-index │ │ │ ├── __tests__ │ │ │ │ └── helpers.test.ts │ │ │ ├── chart-line │ │ │ │ ├── __tests__ │ │ │ │ │ └── helpers.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ └── index.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── optimization-parameter │ │ │ ├── __tests__ │ │ │ │ └── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ └── well │ │ │ ├── __tests__ │ │ │ └── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ └── index.ts │ ├── index.js │ ├── mocks │ │ ├── bha.ts │ │ ├── di.ts │ │ ├── optimization-parameters.ts │ │ └── well.ts │ ├── react-app-env.d.ts │ ├── repositories │ │ ├── bhas │ │ │ ├── __tests__ │ │ │ │ └── parser.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── damage-indexes │ │ │ ├── __tests__ │ │ │ │ └── parser.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── optimization-parameters │ │ │ ├── __tests__ │ │ │ │ └── parser.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ └── wells │ │ │ ├── __tests__ │ │ │ └── parser.test.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ ├── services │ │ ├── __tests__ │ │ │ └── dataset-subscription.test.ts │ │ └── dataset-subscription.ts │ ├── shared │ │ ├── components │ │ │ └── MultipleSelector │ │ │ │ ├── RenderedValue │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── styles.ts │ │ │ │ └── types.ts │ │ ├── types.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ └── index.test.ts │ │ │ └── index.ts │ └── stores │ │ ├── di-chart │ │ ├── index.ts │ │ └── types.ts │ │ ├── di-list │ │ ├── index.ts │ │ └── types.ts │ │ ├── filters │ │ ├── index.ts │ │ └── types.ts │ │ ├── global │ │ ├── index.ts │ │ └── types.ts │ │ └── optimization-parameters │ │ ├── index.ts │ │ └── types.ts ├── tsconfig.json └── yarn.lock ├── dc-fe-treatment-plot ├── .commitlintrc.json ├── .env.sample ├── .eslintrc ├── .github │ ├── CODEOWNERS │ ├── pull_request_template.md │ └── workflows │ │ ├── code-checks.yml │ │ ├── develop.yml │ │ ├── feat-fix-delete.yml │ │ ├── feat-fix.yml │ │ ├── release-fix-X.X.X.yml │ │ └── validate-pr-title.yml ├── .gitignore ├── .husky │ ├── commit-msg │ └── pre-commit ├── .nvmrc ├── .prettierrc ├── CHANGELOG.md ├── README.md ├── babel.config.json ├── config-overrides.js ├── config │ └── jest │ │ ├── babelTransform.js │ │ ├── consoleCleanup.ts │ │ ├── cssTransform.js │ │ ├── fileTransform.js │ │ ├── globalSetup.js │ │ └── setupTests.js ├── manifest.json ├── package.json ├── src │ ├── App.js │ ├── AppSettings.js │ ├── __mocks__ │ │ ├── mockActivitiesData.js │ │ ├── mockAppData.js │ │ ├── mockAppProps.js │ │ ├── mockContextProps.js │ │ ├── mockCurrentUser.js │ │ ├── mockFilterBoxProps.js │ │ ├── mockPredictionsData.js │ │ ├── mockScaleSetting.js │ │ ├── mockSettingsProps.js │ │ ├── mockWells.js │ │ └── mockWitsData.js │ ├── __tests__ │ │ ├── AddFeedButton.test.js │ │ ├── AppHeader.test.js │ │ ├── ChartStageNames.test.tsx │ │ ├── FeedBar.test.js │ │ ├── FilterBoxContainer.test.js │ │ ├── FilterBoxEditDialog.test.js │ │ ├── Latency.test.js │ │ ├── Settings.test.js │ │ ├── hooks │ │ │ └── useThrottledValue.test.tsx │ │ └── testsSetup.test.js │ ├── api │ │ ├── fetchSlug.ts │ │ └── loadPreviewData.ts │ ├── assets │ │ ├── icon-info.svg │ │ └── logo.svg │ ├── components │ │ ├── AppHeader.tsx │ │ ├── CSVExportDialog │ │ │ ├── CSVExportDialog.js │ │ │ └── index.js │ │ ├── Chart │ │ │ ├── Chart.css │ │ │ ├── Chart.js │ │ │ ├── CounterTooltip.js │ │ │ ├── index.js │ │ │ └── tooltipOptions.js │ │ ├── ChartSlider │ │ │ ├── ChartSlider.tsx │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── useSliderChartOptions.ts │ │ ├── ChartStageNames │ │ │ ├── ChartStageNameItem.tsx │ │ │ ├── ChartStageNames.tsx │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── Content │ │ │ ├── Content.js │ │ │ └── index.js │ │ ├── CursorPosition │ │ │ ├── CursorPositionContext.js │ │ │ ├── CursorPositionProvider.js │ │ │ └── index.js │ │ ├── DetailDataLoader │ │ │ ├── DetailDataLoader.js │ │ │ └── index.js │ │ ├── FeedBar │ │ │ ├── FeedBar.js │ │ │ ├── assets │ │ │ │ ├── annotations-menu.svg │ │ │ │ └── feed-item-type-icons │ │ │ │ │ ├── alert.svg │ │ │ │ │ ├── bha.svg │ │ │ │ │ ├── daily-cost.svg │ │ │ │ │ ├── document.svg │ │ │ │ │ ├── driller-memo.svg │ │ │ │ │ ├── fluid-report.svg │ │ │ │ │ ├── lessons-learned.svg │ │ │ │ │ ├── npt.svg │ │ │ │ │ ├── operation-summary.svg │ │ │ │ │ ├── operational-note.svg │ │ │ │ │ ├── survey-station.svg │ │ │ │ │ └── well-plan.svg │ │ │ ├── components │ │ │ │ ├── AddFeedButton │ │ │ │ │ ├── AddFeedButton.css │ │ │ │ │ ├── AddFeedButton.js │ │ │ │ │ ├── AddFeedButtonContainer.js │ │ │ │ │ └── index.js │ │ │ │ ├── FeedCreationProvider │ │ │ │ │ ├── FeedCreationProvider.js │ │ │ │ │ └── index.js │ │ │ │ ├── FeedGroup │ │ │ │ │ ├── FeedGroup.css │ │ │ │ │ ├── FeedGroup.js │ │ │ │ │ └── index.js │ │ │ │ ├── FeedItem │ │ │ │ │ ├── AppAnnotationHoc │ │ │ │ │ │ ├── AppAnnotationHoc.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── UserMention │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── feedItemTypes │ │ │ │ │ │ ├── AppAnnotationFeedItem │ │ │ │ │ │ ├── helpers.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── style.css │ │ │ │ │ │ └── Attachment │ │ │ │ │ │ ├── Attachment.js │ │ │ │ │ │ ├── FileAttachment.js │ │ │ │ │ │ ├── FileTypeIcon.js │ │ │ │ │ │ ├── ImageAttachment.js │ │ │ │ │ │ ├── ImageViewer.js │ │ │ │ │ │ └── RecommendationBar.js │ │ │ │ ├── FeedsCreationHoverLine │ │ │ │ │ ├── FeedsCreationHoverLine.css │ │ │ │ │ ├── FeedsCreationHoverLine.js │ │ │ │ │ └── index.js │ │ │ │ ├── FeedsDataSection │ │ │ │ │ ├── FeedsDataSection.js │ │ │ │ │ ├── FeedsDataSectionContainer.js │ │ │ │ │ └── index.js │ │ │ │ ├── LazyListRenderer │ │ │ │ │ ├── LazyListRenderer.js │ │ │ │ │ └── index.js │ │ │ │ ├── NewFeedModal │ │ │ │ │ ├── NewFeedModal.js │ │ │ │ │ ├── NewFeedModalContainer.js │ │ │ │ │ └── index.js │ │ │ │ └── icons │ │ │ │ │ ├── add-comment-hover.svg │ │ │ │ │ ├── add-comment.svg │ │ │ │ │ └── left-mouse.svg │ │ │ ├── constants.js │ │ │ ├── effects │ │ │ │ ├── useFeedItems.js │ │ │ │ └── useFeedSubscriptionHandler.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ ├── comment.js │ │ │ │ ├── forceFileDownload.js │ │ │ │ └── getIconForFeedItemType.js │ │ ├── FilterBox │ │ │ ├── CategoryBox.js │ │ │ ├── CategoryChip │ │ │ │ ├── CategoryChip.js │ │ │ │ └── index.js │ │ │ ├── CategorySelect │ │ │ │ ├── CategorySelect.js │ │ │ │ └── index.js │ │ │ ├── CategorySelectPopover │ │ │ │ ├── CategorySelectPopover.js │ │ │ │ └── index.js │ │ │ ├── CustomTimePicker │ │ │ │ ├── CustomTimePicker.js │ │ │ │ └── index.js │ │ │ ├── DropdownRange.js │ │ │ ├── FilterBoxContainer.js │ │ │ ├── FilterBoxDeleteDialog.js │ │ │ ├── FilterBoxEditDialog.js │ │ │ ├── LastCustomTimeInput.js │ │ │ └── SingleDropdown.js │ │ ├── FilterSidebar │ │ │ ├── FilterSidebar.js │ │ │ └── index.js │ │ ├── LastDataUpdate │ │ │ ├── LastDataUpdate.js │ │ │ └── index.js │ │ ├── Legends │ │ │ ├── Legends.css │ │ │ ├── Legends.js │ │ │ └── index.js │ │ ├── LiveBadge │ │ │ ├── LiveBadge.js │ │ │ ├── LiveBadgeStyles.js │ │ │ └── index.js │ │ ├── PadOffsets │ │ │ ├── OffsetAssetChip.js │ │ │ ├── OffsetAssetsListExpander.js │ │ │ ├── PadOffsetsPicker.js │ │ │ ├── StagesSelector.js │ │ │ └── index.js │ │ ├── RealTimeSidebarContainer.tsx │ │ ├── Settings │ │ │ ├── Settings.js │ │ │ ├── SettingsPopover │ │ │ │ ├── SettingsPopover.js │ │ │ │ └── index.js │ │ │ ├── SideSetting │ │ │ │ ├── SideSetting.js │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── StatusBadge │ │ │ └── index.tsx │ │ └── StreamboxStatus │ │ │ ├── Latency.tsx │ │ │ ├── StreamboxStatus.tsx │ │ │ ├── StreamboxStatusItem.tsx │ │ │ ├── index.ts │ │ │ └── utils.ts │ ├── constants.js │ ├── context │ │ ├── AppContext.ts │ │ ├── FeedContext.js │ │ ├── filterBoxContext.js │ │ ├── filterBoxReducer.js │ │ ├── layoutContext.js │ │ ├── layoutReducer.js │ │ ├── realTimeBoxContext.js │ │ └── realTimetBoxReducer.js │ ├── effects │ │ ├── apiCalls.js │ │ ├── csvExport.js │ │ ├── useAbraData.js │ │ ├── useActivitySubscriptionData.js │ │ ├── useAppSettings.js │ │ ├── useAppWells.js │ │ ├── useChartOptions.js │ │ ├── useCurrentStage.ts │ │ ├── useFetchedAllData.js │ │ ├── useGoals.js │ │ ├── useIsAssetViewer.ts │ │ ├── useLazyAbra.js │ │ ├── useLiveTimer.js │ │ ├── useSubscriptionData.js │ │ ├── useThrottledValue.ts │ │ ├── useWellsStreamSubscription │ │ │ ├── index.ts │ │ │ ├── useActiveWells.ts │ │ │ ├── useWellStreamsData.ts │ │ │ └── utils.ts │ │ └── useWitsFilter.js │ ├── index.js │ ├── meta.js │ ├── types │ │ ├── Asset.ts │ │ ├── Data.ts │ │ ├── MuiTheme.ts │ │ ├── Settings.ts │ │ ├── Stream.ts │ │ └── User.ts │ └── utils │ │ ├── __tests__ │ │ ├── dataUtils.test.js │ │ └── dropdownRange.test.js │ │ ├── apiCalls.js │ │ ├── appId.ts │ │ ├── completionUtils.js │ │ ├── conversionUtils.js │ │ ├── dataUtils.js │ │ ├── dropdownRange.js │ │ ├── eChartUtils.js │ │ ├── filterMode.ts │ │ ├── initialDataFetcher.ts │ │ ├── isDataEmpty.ts │ │ ├── textWidth.ts │ │ ├── time.js │ │ ├── useSizer.js │ │ ├── witsWrappers.js │ │ └── zoomDataLoad.js ├── tsconfig.json └── yarn.lock └── exxon_bowtie_app ├── .commitlintrc.json ├── .eslintrc ├── .github ├── pull_request_template.md └── workflows │ ├── code-checks.yml │ ├── develop.yml │ ├── feat-fix-delete.yml │ ├── feat-fix.yml │ ├── release-fix-X.X.X.yml │ └── validate-pr-title.yml ├── .gitignore ├── .husky ├── commit-msg └── pre-commit ├── .nvmrc ├── .prettierrc ├── CODEOWNERS ├── README.md ├── config-overrides.js ├── config └── jest │ ├── babelTransform.js │ ├── cssTransform.js │ ├── fileTransform.js │ ├── globalSetup.js │ └── setupTests.js ├── manifest.json ├── package.json ├── src ├── App.css ├── App.tsx ├── AppSettings.tsx ├── __mocks__ │ ├── mockAppProps.ts │ └── mockAppSettingsProps.ts ├── __tests__ │ ├── components │ │ ├── Comment.spec.tsx │ │ ├── RigSelector.spec.tsx │ │ ├── TabGroup.spec.tsx │ │ ├── Tabs │ │ │ ├── Seafloor.spec.tsx │ │ │ ├── Stability.spec.tsx │ │ │ ├── Surface.spec.tsx │ │ │ └── index.spec.tsx │ │ └── common │ │ │ ├── ArrowIcon.spec.tsx │ │ │ ├── AsyncPhoto.spec.tsx │ │ │ ├── AttachFile.spec.tsx │ │ │ ├── Card.spec.tsx │ │ │ ├── CardGroup.spec.tsx │ │ │ ├── Chip.spec.tsx │ │ │ ├── Comment.spec.tsx │ │ │ ├── CommentPopover.spec.tsx │ │ │ ├── DeleteDialog.spec.tsx │ │ │ ├── EmojiSelector.spec.tsx │ │ │ ├── FileItem.spec.tsx │ │ │ ├── FilePreview.spec.tsx │ │ │ ├── FilesPreview.spec.tsx │ │ │ ├── Popover.spec.tsx │ │ │ ├── Selectors.spec.tsx │ │ │ └── icons │ │ │ ├── ArrowFourStability.spec.tsx │ │ │ ├── ArrowLeft.spec.tsx │ │ │ ├── ArrowLineLeft.spec.tsx │ │ │ ├── ArrowLineLeftSeafloor.spec.tsx │ │ │ ├── ArrowLineRight.spec.tsx │ │ │ ├── ArrowLineRightSeafloor.spec.tsx │ │ │ ├── ArrowLineRightStability.spec.tsx │ │ │ ├── ArrowRight.spec.tsx │ │ │ ├── CheckIcon.spec.tsx │ │ │ ├── CommentIcon.spec.tsx │ │ │ ├── DropdownIcon.spec.tsx │ │ │ ├── EditIcon.spec.tsx │ │ │ ├── One2Three.spec.tsx │ │ │ ├── One2ThreeSeafloor.spec.tsx │ │ │ └── RectIcon.spec.tsx │ ├── constants │ │ └── file.spec.tsx │ ├── entities │ │ ├── record │ │ │ └── helpers.spec.tsx │ │ └── upload │ │ │ └── helpers.spec.tsx │ └── layout │ │ ├── AppHeader.spec.tsx │ │ ├── Main.spec.tsx │ │ └── SubHeader.spec.tsx ├── assets │ ├── csv.svg │ ├── doc.svg │ ├── empty_state.png │ ├── excel.svg │ ├── file.svg │ ├── filters.svg │ ├── logo.svg │ ├── pdf.svg │ ├── picture.svg │ ├── pptx.svg │ ├── range.svg │ ├── selected_day.svg │ ├── timeline.svg │ ├── today.svg │ ├── txt.svg │ └── user.png ├── components │ ├── Comment │ │ ├── index.tsx │ │ └── styles.ts │ ├── RigSelector │ │ └── index.tsx │ ├── TabGroup │ │ ├── index.tsx │ │ └── styles.ts │ ├── Tabs │ │ ├── Seafloor │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── Stability │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── Surface │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ └── index.tsx │ └── common │ │ ├── ArrowIcon.tsx │ │ ├── AsyncPhoto │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── AttachFile │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── Card │ │ └── index.tsx │ │ ├── CardGroup │ │ ├── index.tsx │ │ └── styles.ts │ │ ├── Chip │ │ ├── index.tsx │ │ └── styles.ts │ │ ├── Comment │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── CommentPopover │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── DeleteDialog │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── EmojiSelector │ │ └── index.tsx │ │ ├── FileItem │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── FilePreview │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── FilesPreview │ │ ├── index.module.css │ │ └── index.tsx │ │ ├── Popover │ │ ├── index.tsx │ │ └── styles.ts │ │ ├── Selectors │ │ ├── index.module.css │ │ └── index.tsx │ │ └── icons │ │ ├── ArrowFourStability.tsx │ │ ├── ArrowLeft.tsx │ │ ├── ArrowLineLeft.tsx │ │ ├── ArrowLineLeftSeafloor.tsx │ │ ├── ArrowLineRight.tsx │ │ ├── ArrowLineRightSeafloor.tsx │ │ ├── ArrowLineRightStability.tsx │ │ ├── ArrowRight.tsx │ │ ├── CheckIcon.tsx │ │ ├── CommentIcon.tsx │ │ ├── DropdownIcon.tsx │ │ ├── EditIcon.tsx │ │ ├── One2Three.tsx │ │ ├── One2ThreeSeafloor.tsx │ │ ├── RectIcon.tsx │ │ └── SvgIcon.tsx ├── constants.ts ├── constants │ ├── color.const.ts │ ├── data.const.ts │ └── file.const.ts ├── custom.d.ts ├── entities │ ├── record │ │ ├── helpers.ts │ │ └── index.ts │ └── upload │ │ ├── helpers.ts │ │ └── index.ts ├── index.js ├── layout │ ├── AppHeader │ │ ├── index.tsx │ │ └── styles.ts │ ├── Main │ │ ├── index.tsx │ │ └── styles.ts │ └── SubHeader │ │ ├── index.tsx │ │ └── styles.ts └── types │ └── global.type.ts ├── tsconfig.json └── yarn.lock /cop-stage-target-achievement-report/.env.sample: -------------------------------------------------------------------------------- 1 | # One of: localhost | 127.0.0.1 | app.local.corva.ai 2 | # For app.local.corva.ai you need to add: 127.0.0.1 app.local.corva.ai to /etc/hosts 3 | HOST=localhost 4 | 5 | # Single sign-on works ONLY with PORTS 8080, 9000 or 80. 6 | PORT=8080 7 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/.nvmrc: -------------------------------------------------------------------------------- 1 | 16.19.0 2 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/.prettierrc: -------------------------------------------------------------------------------- 1 | "@corva/eslint-config-browser/prettier" 2 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/config-overrides.js: -------------------------------------------------------------------------------- 1 | const { getWebpackConfig } = require('@corva/dc-platform-shared/cjs'); 2 | const { merge } = require('webpack-merge'); 3 | 4 | module.exports = (env, argv) => { 5 | return merge( 6 | getWebpackConfig(env, argv), 7 | // NOTE: Custom webpack 4 plugins and module rules can be provided here 8 | {} 9 | ); 10 | }; 11 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | module.exports = babelJest.createTransformer({ 6 | presets: [ 7 | [ 8 | require.resolve('babel-preset-react-app'), 9 | { 10 | runtime: 'automatic', 11 | }, 12 | ], 13 | ], 14 | babelrc: false, 15 | configFile: false, 16 | }); 17 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return { 9 | code: 'module.exports = {};', 10 | }; 11 | }, 12 | getCacheKey() { 13 | // The output is always the same. 14 | return 'cssTransform'; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/config/jest/globalSetup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | // use UTC timezone to not break tests when you run them on 3 | // an environemnt with a different timezone 4 | process.env.TZ = 'UTC'; 5 | }; 6 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/src/AppSettings.tsx: -------------------------------------------------------------------------------- 1 | const AppSettings = (): JSX.Element => { 2 | return null; 3 | }; 4 | 5 | // Important: Do not change root component default export (AppSettings.js). Use it as container 6 | // for your App Settings. It's required to make build and zip scripts work as expected; 7 | export default AppSettings; 8 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/src/components/Metrics/index.ts: -------------------------------------------------------------------------------- 1 | import Metrics from './Metrics'; 2 | 3 | export default Metrics; 4 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/src/components/Settings/index.tsx: -------------------------------------------------------------------------------- 1 | import Settings from './Settings'; 2 | 3 | export default Settings; 4 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/src/components/WellStagesList/index.ts: -------------------------------------------------------------------------------- 1 | import WellStagesList from './WellStagesList'; 2 | 3 | export default WellStagesList; 4 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/src/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: string; 3 | export default content; 4 | } 5 | 6 | declare module '*.css' { 7 | const content: Record; 8 | export default content; 9 | } 10 | 11 | declare module '*.png' { 12 | const content: string; 13 | export default content; 14 | } 15 | 16 | declare module '@corva/ui/effects'; 17 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App'; 2 | import AppSettings from './AppSettings'; 3 | 4 | export default { 5 | component: App, 6 | settings: AppSettings, 7 | }; 8 | -------------------------------------------------------------------------------- /cop-stage-target-achievement-report/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/create-react-app/tsconfig.json", 3 | "compilerOptions": { 4 | "noEmit": false, 5 | "strict": false, 6 | "sourceMap": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@commitlint/config-conventional"], 3 | "rules": { 4 | "subject-case": [0] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/.env.sample: -------------------------------------------------------------------------------- 1 | # One of: localhost | 127.0.0.1 | app.local.corva.ai 2 | # For app.local.corva.ai you need to add: 127.0.0.1 app.local.corva.ai to /etc/hosts 3 | HOST=localhost 4 | 5 | # Single sign-on works ONLY with PORTS 8080, 9000 or 80. 6 | PORT=8080 7 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@corva/eslint-config-browser", 3 | "parserOptions": { 4 | "requireConfigFile": false, 5 | "babelOptions": { 6 | "presets": ["@babel/preset-react"], 7 | "plugins": ["@babel/plugin-proposal-class-properties"] 8 | } 9 | }, 10 | "rules": { 11 | "prettier/prettier": [ 12 | "error", 13 | { 14 | "endOfLine": "auto" 15 | } 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/.github/workflows/code-checks.yml: -------------------------------------------------------------------------------- 1 | name: Code Checks 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - develop 7 | 8 | jobs: 9 | Lint-and-Test: 10 | runs-on: ubuntu-latest 11 | steps: 12 | 13 | - name: 'Lint and test' 14 | uses: corva-ai/gh-actions/shared-dc-workflows/lint-and-test@develop 15 | with: 16 | npm-token: ${{ secrets.CORVA_NPM_TOKEN }} 17 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/.nvmrc: -------------------------------------------------------------------------------- 1 | 16.19.0 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/.prettierrc: -------------------------------------------------------------------------------- 1 | "@corva/eslint-config-browser/prettier" 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | module.exports = babelJest.createTransformer({ 6 | presets: [ 7 | [ 8 | require.resolve('babel-preset-react-app'), 9 | { 10 | runtime: 'automatic', 11 | }, 12 | ], 13 | ], 14 | babelrc: false, 15 | configFile: false, 16 | }); 17 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return { 9 | code: 'module.exports = {};', 10 | }; 11 | }, 12 | getCacheKey() { 13 | // The output is always the same. 14 | return 'cssTransform'; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/config/jest/globalSetup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | // use UTC timezone to not break tests when you run them on 3 | // an environemnt with a different timezone 4 | process.env.TZ = 'UTC'; 5 | }; 6 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "~/*": ["src/*"] 6 | } 7 | }, 8 | "exclude": ["node_modules", "dist"] 9 | } 10 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/AppContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const AppContext = createContext(); 4 | 5 | export default AppContext; 6 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/assets/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/ColorPicker/PaletteChromePicker/ColorSquare/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ColorSquare'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/ColorPicker/PaletteChromePicker/Palette/Palette.css: -------------------------------------------------------------------------------- 1 | .paletteContainer { 2 | display: grid; 3 | grid-template-columns: repeat(auto-fit, 16px); 4 | gap: 2px; 5 | width: 232px; 6 | } 7 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/ColorPicker/PaletteChromePicker/Palette/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Palette'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/ColorPicker/PaletteChromePicker/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PaletteChromePicker'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/ColorPicker/index.js: -------------------------------------------------------------------------------- 1 | export { default as ColorPicker } from './ColorPicker'; 2 | export { default as PaletteChromePicker } from './PaletteChromePicker'; 3 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/CursorPosition/CursorPositionContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const CursorPositionContext = createContext(null); 4 | export default CursorPositionContext; 5 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/CursorPosition/index.js: -------------------------------------------------------------------------------- 1 | export { default as CursorPositionContext } from './CursorPositionContext'; 2 | export { default as CursorPositionProvider } from './CursorPositionProvider'; 3 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/AddFeedButton/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AddFeedButtonContainer'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/FeedCreationProvider/index.js: -------------------------------------------------------------------------------- 1 | export { default, useFeedCreationProvider } from './FeedCreationProvider'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/FeedGroup/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedGroup'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/FeedItem/AppAnnotationHoc/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppAnnotationHoc'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/FeedItem/UserMention/constants.js: -------------------------------------------------------------------------------- 1 | export const USER_MARKUP = '@[user:__id__|__display__]'; 2 | 3 | export const PLACEHOLDERS = { 4 | id: '__id__', 5 | display: '__display__', 6 | }; 7 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/FeedsCreationHoverLine/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedsCreationHoverLine'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/FeedsDataSection/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedsDataSectionContainer'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/LazyListRenderer/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LazyListRenderer'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/components/NewFeedModal/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './NewFeedModalContainer'; 2 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/index.js: -------------------------------------------------------------------------------- 1 | import FeedBar from './FeedBar'; 2 | 3 | export default FeedBar; 4 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/utils/comment.js: -------------------------------------------------------------------------------- 1 | export function getFeedItemCreatedAtSec(feedItem) { 2 | return Math.round(new Date(feedItem.get('created_at')).getTime() / 1000); 3 | } 4 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedBar/utils/forceFileDownload.js: -------------------------------------------------------------------------------- 1 | export const forceFileDownload = async (fileName, attachmentUrl) => { 2 | const link = document.createElement('a'); 3 | link.href = attachmentUrl; 4 | document.body.appendChild(link); 5 | link.click(); 6 | document.body.removeChild(link); 7 | }; 8 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/Comment/FeedContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const FeedContext = createContext(); 4 | 5 | export default FeedContext; 6 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/DetailDataLoader/index.js: -------------------------------------------------------------------------------- 1 | import DetailDataLoader from './DetailDataLoader'; 2 | 3 | export default DetailDataLoader; 4 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/components/LiveBadge/index.js: -------------------------------------------------------------------------------- 1 | import LiveBadge from './LiveBadge'; 2 | 3 | export default LiveBadge; 4 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App'; 2 | import AppSettings from './AppSettings'; 3 | 4 | export default { 5 | component: App, 6 | settings: AppSettings, 7 | }; 8 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/utils/appId.js: -------------------------------------------------------------------------------- 1 | const QA_APP_ID = 26317; 2 | 3 | export default appId => (appId === 1 ? QA_APP_ID : appId); 4 | -------------------------------------------------------------------------------- /corva-dc-fe-shell-hypercare/src/utils/datetime.js: -------------------------------------------------------------------------------- 1 | export function getStatusTimestamp(str) { 2 | if (!str) return null; 3 | const regex = /(\d+)/; 4 | const match = str.match(regex); 5 | const result = match ? parseInt(match[0], 10) : null; 6 | return result; 7 | } 8 | -------------------------------------------------------------------------------- /corva-ui/.eslintignore: -------------------------------------------------------------------------------- 1 | src/config/highcharts/highcharts-contour.js 2 | src/utils/DrillstringUtils.js 3 | *.test.js 4 | -------------------------------------------------------------------------------- /corva-ui/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | .idea 4 | yarn-error.log 5 | dist/ 6 | coverage 7 | .eslintcache 8 | webpack.config.js 9 | storybook/dist/ 10 | duplication-report 11 | storybook-static 12 | .env 13 | -------------------------------------------------------------------------------- /corva-ui/.jscpd.json: -------------------------------------------------------------------------------- 1 | { 2 | "threshold": 6.59, 3 | "reporters": ["html", "console"], 4 | "format": ["javascript", "css", "scss"], 5 | "ignore": ["**.stories.js", "**.fixture.js"], 6 | "output": "duplication-report", 7 | "absolute": true, 8 | "gitignore": true, 9 | "minLines": 10, 10 | "minTokens": 100 11 | } 12 | -------------------------------------------------------------------------------- /corva-ui/.npmignore: -------------------------------------------------------------------------------- 1 | stats.html 2 | -------------------------------------------------------------------------------- /corva-ui/.prettierrc: -------------------------------------------------------------------------------- 1 | "@corva/eslint-config-browser/prettier" 2 | -------------------------------------------------------------------------------- /corva-ui/.versionrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "issueUrlFormat": "https://corvaqa.atlassian.net/browse/{{id}}", 3 | "scripts": { 4 | "postbump": "echo Version: v$npm_package_version", 5 | "posttag": "git push --follow-tags origin head" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /corva-ui/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners are the default owners for everything in 2 | # the repo. They're automatically added as reviwers 3 | # to each pull request 4 | * @corva-ai/front-end-dev-center @corva-ai/front-end-admins -------------------------------------------------------------------------------- /corva-ui/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | #### To run the ExampleApp locally (for testing components): 2 | 3 | `yarn start` 4 | 5 | #### To build the project run: 6 | 7 | `yarn build` 8 | 9 | #### To publish the project: 10 | 11 | - Make PR to develop 12 | - Get PR reviewed and merged 13 | - Pull develop branch and run `yarn release --release-as=major|minor|patch` 14 | -------------------------------------------------------------------------------- /corva-ui/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/LICENSE -------------------------------------------------------------------------------- /corva-ui/jest/setEnvVars.js: -------------------------------------------------------------------------------- 1 | process.env.REACT_APP_AUTH0_DOMAIN = 'test.domain.com'; 2 | process.env.REACT_APP_AUTH0_CLIENT_ID = 'clientID'; 3 | process.env.REACT_APP_AUTH0_REDIRECT_URI = 'redirect.test.url'; -------------------------------------------------------------------------------- /corva-ui/jest/setupTests.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import '@testing-library/jest-dom/extend-expect'; 3 | 4 | global.ResizeObserver = require('resize-observer-polyfill') 5 | -------------------------------------------------------------------------------- /corva-ui/jest/svgTransform.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | process() { 3 | return 'module.exports = {};'; 4 | }, 5 | getCacheKey() { 6 | return 'svgTransform'; 7 | }, 8 | }; -------------------------------------------------------------------------------- /corva-ui/src/CLI/hocs/constants.js: -------------------------------------------------------------------------------- 1 | // NOTE: those constants are imported in @corva/dc-platform-shared 2 | // TODO: fix imports in that package and remove those constants 3 | 4 | export const LOCAL_STORAGE_APP_THEME_KEY = 'APP_THEME'; 5 | export const LOCAL_STORAGE_PDF_REPORT_VIEW_KEY = 'PDF_REPORT_VIEW'; 6 | -------------------------------------------------------------------------------- /corva-ui/src/CLI/hocs/utils.js: -------------------------------------------------------------------------------- 1 | import { LOCAL_STORAGE_PDF_REPORT_VIEW_KEY } from './constants'; 2 | 3 | // NOTE: it is imported in @corva/dc-platform-shared 4 | // TODO: fix imports in that package and remove whole CLI dir 5 | 6 | export const isPDFReportView = JSON.parse( 7 | localStorage.getItem(LOCAL_STORAGE_PDF_REPORT_VIEW_KEY) || 'false' 8 | ); 9 | -------------------------------------------------------------------------------- /corva-ui/src/assets/checkboard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /corva-ui/src/assets/hole_depth.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /corva-ui/src/clients/constants.js: -------------------------------------------------------------------------------- 1 | import { baseUrl } from './api/apiCore'; 2 | 3 | export const CORVA_API_URLS = { 4 | API: baseUrl, 5 | DATA_API: baseUrl.replace('api', 'data'), 6 | }; -------------------------------------------------------------------------------- /corva-ui/src/components/AddComment/index.js: -------------------------------------------------------------------------------- 1 | import AddCommentPopover from './Popover'; 2 | import AddCommentPopup from './Popup'; 3 | 4 | export { AddCommentPopover, AddCommentPopup }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/AdvancedSlider/index.js: -------------------------------------------------------------------------------- 1 | export { default as AdvancedSlider } from './AdvancedSlider'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/AnchorsList/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AnchorsList'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Annotations/components/AnnotationsList/components/AnnotationComments/style.css: -------------------------------------------------------------------------------- 1 | .cAnnotationCommentsList { 2 | margin-top: 5px; 3 | } 4 | 5 | .cAnnotationCommentsListItems { 6 | margin-bottom: 5px; 7 | padding: 0 0 5px 19px; 8 | } 9 | 10 | .cAnnotationCommentsListInput { 11 | padding-bottom: 15px; 12 | } 13 | 14 | .cAnnotationCommentsListInput :global(.c-user-mention) { 15 | font-size: 14px; 16 | } 17 | -------------------------------------------------------------------------------- /corva-ui/src/components/Annotations/components/LastAnnotation/style.css: -------------------------------------------------------------------------------- 1 | .cTopAnnotationAdditional, 2 | .cTopAnnotationMain { 3 | align-items: center; 4 | display: flex; 5 | } 6 | 7 | .cTopAnnotationMain { 8 | overflow: hidden; 9 | } 10 | 11 | .cTopAnnotationAdditionalReactions { 12 | display: flex; 13 | align-items: center; 14 | } 15 | 16 | .cTopAnnotationAdditionalReactionsList { 17 | display: flex; 18 | align-items: center; 19 | margin-right: 16px; 20 | } 21 | -------------------------------------------------------------------------------- /corva-ui/src/components/Annotations/index.js: -------------------------------------------------------------------------------- 1 | import AnnotationsList from './components/AnnotationsList'; 2 | import LastAnnotation from './components/LastAnnotation'; 3 | import { 4 | AnnotationsProvider, 5 | useAnnotationsState, 6 | useAnnotationsDispatch, 7 | } from './AnnotationsContext'; 8 | 9 | export { 10 | AnnotationsList, 11 | LastAnnotation, 12 | AnnotationsProvider, 13 | useAnnotationsState, 14 | useAnnotationsDispatch, 15 | }; 16 | -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/assets/CompletionAppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/AppIcon/assets/CompletionAppIcon.png -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/assets/CompletionAppIconBe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/AppIcon/assets/CompletionAppIconBe.png -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/assets/DrillingAppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/AppIcon/assets/DrillingAppIcon.png -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/assets/DrillingAppIconBe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/AppIcon/assets/DrillingAppIconBe.png -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/assets/NoSegmentAppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/AppIcon/assets/NoSegmentAppIcon.png -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { AppIcon as default } from './AppIcon'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/AppIcon/types.ts: -------------------------------------------------------------------------------- 1 | export type IconProps = { 2 | width?: number; 3 | height?: number; 4 | className?: string; 5 | 'data-testid'?: string; 6 | }; 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/AppVersionsSelect/index.js: -------------------------------------------------------------------------------- 1 | export { default, AppVersionsSelectView } from './AppVersionsSelect'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/AssetEditor/AssetEditors.css: -------------------------------------------------------------------------------- 1 | .main { 2 | } 3 | 4 | .editor { 5 | display: flex; 6 | align-items: center; 7 | margin-top: 8px; 8 | } 9 | 10 | .editor button { 11 | margin-left: 24px; 12 | } 13 | 14 | .title { 15 | font-weight: 400; 16 | font-size: 20px; 17 | margin: 16px 0; 18 | } 19 | -------------------------------------------------------------------------------- /corva-ui/src/components/AssetEditor/constants.js: -------------------------------------------------------------------------------- 1 | export const PER_PAGE = 200; 2 | 3 | // The distance in pixels before the end of the items that will trigger a call to loadMore. 4 | export const SCROLL_THRESHOLD = 400; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/AssetEditor/utils/index.js: -------------------------------------------------------------------------------- 1 | export const mapAssetIdPath = assetType => { 2 | switch (assetType) { 3 | case 'rig': 4 | case 'well': 5 | return ['attributes', 'asset_id']; 6 | case 'frac_fleet': 7 | case 'pad': 8 | default: 9 | return ['id']; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /corva-ui/src/components/AssetEditorV2/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as PrimaryAssetSelect } from './PrimaryAssetSelect'; 2 | export { default as SecondaryAssetSelect } from './SecondaryAssetSelect'; 3 | export { default as SelectItem } from './SelectItem'; 4 | export { default as MultipleAssetsToggle } from './MultipleAssetsToggle'; 5 | export { default as PrimaryAssetSelectV2 } from './PrimaryAssetSelectV2'; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/AssetEditorV2/constants.js: -------------------------------------------------------------------------------- 1 | export const PER_PAGE = 200; 2 | 3 | // The distance in pixels before the end of the items that will trigger a call to loadMore. 4 | export const SCROLL_THRESHOLD = 400; 5 | 6 | export const ACTIVE_STATUS = 'active'; 7 | 8 | export const ACTIVE_ASSET_ID = 'activeAsset'; 9 | 10 | export const ACTIVE_ASSETS_ID = 'activeAssets'; 11 | -------------------------------------------------------------------------------- /corva-ui/src/components/AssetNameLabel/SecondaryAssetNameLable.styles.css: -------------------------------------------------------------------------------- 1 | .secondaryAsset { 2 | overflow: hidden; 3 | text-overflow: ellipsis; 4 | white-space: nowrap; 5 | } 6 | 7 | .secondaryAssetColor { 8 | color: white; 9 | background-color: #ca6bd2; 10 | stroke: white; 11 | } 12 | 13 | .secondaryAssetColor:hover { 14 | background-color: #d981e0; 15 | } 16 | -------------------------------------------------------------------------------- /corva-ui/src/components/Autocomplete/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Autocomplete'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/BICOffsetPickerDialog/components/Map/index.css: -------------------------------------------------------------------------------- 1 | .mapContainer { 2 | margin-top: 8px; 3 | width: 472px; 4 | } 5 | 6 | .mapContainerHidden { 7 | margin-top: 20px; 8 | display: none; 9 | } 10 | -------------------------------------------------------------------------------- /corva-ui/src/components/BICOffsetPickerDialog/components/WellSection/AutoCompleteAssetSearch/effects/index.js: -------------------------------------------------------------------------------- 1 | export { useAssetsData } from './useAssetsData'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/BICOffsetPickerDialog/components/WellSection/AutoCompleteAssetSearch/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AutoCompleteAssetSearch'; -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/CasingTableV2/components/CasingJoints/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/CasingTableV2/components/DrillPipe/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/CasingTableV2/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CasingTableV2'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/CasingTile/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CasingTile'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/acp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/acp.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/air_lock_sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/air_lock_sub.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/casing_joints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/casing_joints.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/dp.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/dv_tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/dv_tool.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/float_collar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/float_collar.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/float_shoe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/float_shoe.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/hwdp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/hwdp.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/liner_hanger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/liner_hanger.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/liner_top_packer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/liner_top_packer.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/marker_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/marker_joint.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/other.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/pbr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/pbr.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/pup_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/pup_joint.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/riser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/riser.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/toe_sleeve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/toe_sleeve.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/assets/RegularCasing/xo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Casing/assets/RegularCasing/xo.png -------------------------------------------------------------------------------- /corva-ui/src/components/Casing/index.js: -------------------------------------------------------------------------------- 1 | export { default as CasingTable } from './CasingTable'; 2 | export { default as CasingComponentIcon } from './CasingComponentIcon'; 3 | export { default as CasingTileIcon } from './CasingTileIcon'; 4 | export { default as CasingTableV2 } from './CasingTableV2'; 5 | export { default as CasingTile} from './CasingTile'; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/Chart/ChartWrapperContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const ChartWrapperContext = createContext(); 4 | 5 | export default ChartWrapperContext; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/Chart/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as ChartButton } from './ChartButton'; 2 | export { default as ChartButtons } from './ChartButtons'; 3 | export { default as ChartWrapper } from './ChartWrapper'; 4 | export { default as AxisDropdown } from './AxisDropdown'; 5 | export { default as ChartSelect } from './ChartSelect'; 6 | export * from './buttons'; 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/Chart/constants.js: -------------------------------------------------------------------------------- 1 | export const MAX_ZOOM = 10; 2 | 3 | export const ZOOM_TYPE = { 4 | zoomIn: 'zoom in', 5 | zoomOut: 'zoom out', 6 | }; 7 | 8 | export const HOT_KEYS = { 9 | arrowUp: 38, 10 | arrowDown: 40, 11 | }; 12 | export const MIN_CHART_HEIGHT = 182; 13 | 14 | export const X_AXIS_RIGHT_GAP = 46; 15 | -------------------------------------------------------------------------------- /corva-ui/src/components/Chart/effects/index.js: -------------------------------------------------------------------------------- 1 | export * from './useZoom'; 2 | export * from './useKeyboardControl'; 3 | export * from './useHideAxes'; 4 | export * from './useChartModifier'; 5 | export * from './useChartTypeSwitch'; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/ChartActionsList/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ChartActionsList'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ColorPicker/PaletteChromePicker/ColorSquare/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ColorSquare'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ColorPicker/PaletteChromePicker/Palette/Palette.css: -------------------------------------------------------------------------------- 1 | .paletteContainer { 2 | display: grid; 3 | grid-template-columns: repeat(auto-fit, 16px); 4 | gap: 2px; 5 | width: 232px; 6 | } 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/ColorPicker/PaletteChromePicker/Palette/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Palette'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ColorPicker/PaletteChromePicker/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PaletteChromePicker'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ColorPicker/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './ColorPicker'; -------------------------------------------------------------------------------- /corva-ui/src/components/ColorPickerPalette/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ColorPickerPalette'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Comment/styles.css: -------------------------------------------------------------------------------- 1 | .cComment { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .cCommentBody { 7 | position: relative; 8 | } 9 | 10 | .cCommentNative .cCommentMenu button, 11 | .cComment:hover .cCommentMenu button { 12 | visibility: visible; 13 | } 14 | 15 | .cCommentMenu { 16 | position: absolute; 17 | right: 8px; 18 | top: -28px; 19 | } 20 | -------------------------------------------------------------------------------- /corva-ui/src/components/CommentsInfo/styles.css: -------------------------------------------------------------------------------- 1 | .cCommentsInfoActiveUsersList { 2 | display: flex; 3 | align-items: center; 4 | flex-direction: row-reverse; 5 | } 6 | .cCommentsInfoActiveUsersList > div { 7 | margin-right: -7px; 8 | } 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/CopyToClipboard/index.js: -------------------------------------------------------------------------------- 1 | export { default as CopyToClipboard } from './CopyToClipboard'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const AppContext = createContext(); 4 | 5 | export default AppContext; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppHeader/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppHeader'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppHeader/stories/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/DevCenter/AppHeader/stories/logo.png -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppSettingsPopover/index.ts: -------------------------------------------------------------------------------- 1 | export { AppSettingsPopover as default } from './AppSettingsPopover'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppsDataProvider/effects/constants.js: -------------------------------------------------------------------------------- 1 | export const APPS_DATA_REQUESTS = { 2 | WELLS: 'WELLS', 3 | RIGS: 'RIGS', 4 | FRAC_FLEETS: 'FRAC_FLEETS', 5 | FRAC_FLEET_WELLS: 'FRAC_FLEET_WELLS', 6 | PAD_WELLS: 'PAD_WELLS', 7 | }; 8 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppsDataProvider/effects/index.js: -------------------------------------------------------------------------------- 1 | export { default as useAppsData } from './useAppsData'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/AppsDataProvider/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppsDataProvider'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AnnotationsButton/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AnnotationsButton'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppActions/AppActions.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import styles from './AppActions.css'; 3 | 4 | function AppActions({ children }) { 5 | return
{children}
; 6 | } 7 | 8 | export default AppActions; 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppActions/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppActions'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppInfoMessage/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppInfoMessage'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.module.css: -------------------------------------------------------------------------------- 1 | .viewAppButton { 2 | align-self: center; 3 | } 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppSettingsDialog'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/style.css: -------------------------------------------------------------------------------- 1 | .appSettingsDescription { 2 | padding: 10px 0; 3 | } 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialogV2/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppSettingsDialog'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/index.js: -------------------------------------------------------------------------------- 1 | export { 2 | DcFullscreenElemsCoordinatorProvider, 3 | useDcFullscreenElemsCoordinator, 4 | } from './DcFullscreenElemsCoordinatorProvider'; 5 | export { 6 | IsInsideDcFullscreenElemProvider, 7 | useIsInsideDcFullscreenElem, 8 | } from './IsInsideDcFullscreenElemProvider'; 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './DevCenterAppView'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/FullscreenButton/FullscreenButton.css: -------------------------------------------------------------------------------- 1 | .menuIcon { 2 | padding: 3px; 3 | background-color: transparent !important; 4 | } 5 | 6 | .menuIcon a { 7 | color: #fff; 8 | } 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/FullscreenButton/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FullscreenButton'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/IsInsideDcAppProvider/IsInsideDcAppProvider.js: -------------------------------------------------------------------------------- 1 | import { useContext , createContext } from 'react'; 2 | 3 | const IsInsideDcAppContext = createContext(false); 4 | 5 | export const IsInsideDcAppProvider = IsInsideDcAppContext.Provider; 6 | 7 | export function useIsInsideDcApp() { 8 | return useContext(IsInsideDcAppContext); 9 | } 10 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/IsInsideDcAppProvider/index.js: -------------------------------------------------------------------------------- 1 | export * from './IsInsideDcAppProvider'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.css: -------------------------------------------------------------------------------- 1 | .menuIcon { 2 | padding: 0px !important; 3 | margin-right: 4px !important; 4 | } 5 | 6 | .containerDropdownActionMaximize { 7 | outline: none; 8 | } 9 | 10 | .iconButton { 11 | padding: 6px !important; 12 | color: var(--palette-primary-text-6) !important; 13 | } 14 | 15 | .iconButton:hover { 16 | color: var(--palette-primary-text-1) !important; 17 | } 18 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './NonPriorityMenus'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/PriorityMenus/PriorityMenus.css: -------------------------------------------------------------------------------- 1 | .iconButton { 2 | padding: 10px; 3 | width: 44px; 4 | height: 44px; 5 | margin-right: 4px; 6 | } 7 | 8 | .icon { 9 | color: white; 10 | } 11 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/components/PriorityMenus/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PriorityMenus'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/effects/index.js: -------------------------------------------------------------------------------- 1 | export { default as useAppSettings } from './useAppSettings'; 2 | export { default as useAnnotationsList } from './useAnnotationsList'; 3 | export { default as useAnnotationsData } from './useAnnotationsData'; 4 | export { default as useAppMaximized } from './useAppMaximized'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsList.js: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | 3 | function useAnnotationsList() { 4 | const [isAnnotationsListOpened, setAnnotationsListOpened] = useState(false); 5 | const toggleAnnotationsList = () => setAnnotationsListOpened(!isAnnotationsListOpened); 6 | 7 | return { isAnnotationsListOpened, toggleAnnotationsList }; 8 | } 9 | 10 | export default useAnnotationsList; 11 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterAppContainer/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './DevCenterAppContainer'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterRouterContext/DevCenterRouterContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const DevCenterRouterContext = createContext(); 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.css: -------------------------------------------------------------------------------- 1 | .buttonLink { 2 | border: none; 3 | background: none; 4 | color: #039be5; 5 | font-size: 1rem; 6 | font-family: Roboto, sans-serif; 7 | cursor: pointer; 8 | } 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterRouterContext/UniversalLink/index.js: -------------------------------------------------------------------------------- 1 | export * from './UniversalLink'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterRouterContext/effects/useDevCenterRouter.js: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | import { DevCenterRouterContext } from '../DevCenterRouterContext'; 3 | 4 | export function useDevCenterRouter() { 5 | return useContext(DevCenterRouterContext); 6 | } 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/DevCenterRouterContext/index.js: -------------------------------------------------------------------------------- 1 | export * from './DevCenterRouterContext'; 2 | export * from './UniversalLink'; 3 | export * from './effects/useDevCenterRouter'; 4 | export * from './hocs/withUniversalLocationHOC'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/IsolatedDevCenterAppContainer/constants.js: -------------------------------------------------------------------------------- 1 | export const ISOLATED_PAGE_APP_CONTAINER_ID = 'isolated-page-app-container'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/IsolatedDevCenterAppContainer/effects/useXProps.js: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from 'react'; 2 | 3 | export function useXProps() { 4 | const [xprops, setXProps] = useState(window.xprops); 5 | 6 | useEffect(() => { 7 | window.xprops.onProps(props => { 8 | setXProps({ ...props }); 9 | }); 10 | }, []); 11 | 12 | return xprops; 13 | } 14 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/IsolatedDevCenterAppContainer/index.js: -------------------------------------------------------------------------------- 1 | export * from './DevCenterIsolatedAppPage'; 2 | export * from './DevCenterIsolatedApp'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/NavigationBar/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './NavigationBar'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DevCenter/SideBar/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SideBar.js'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/DisabledSettingsMessage/index.js: -------------------------------------------------------------------------------- 1 | export { default as DisabledSettingsMessage } from './DisabledSettingsMessage'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHACasingEmptyView/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BHACasingEmptyView'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Agitator/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Bit/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/DrillCollar/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/DrillPipe/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Jar/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Lwd/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Mwd/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Pdm/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Rss/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Stabilizer/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Sub/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Suggestions/index.js: -------------------------------------------------------------------------------- 1 | import Suggestions from './Suggestions'; 2 | 3 | export { Suggestions }; 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/components/Ur/index.js: -------------------------------------------------------------------------------- 1 | import Browser from './Browser'; 2 | import Editor from './Editor'; 3 | 4 | export { Browser, Editor }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAComponentsTable/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BHAComponentsTable'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHAList/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BHAList'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BHATile/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BHATile'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/BhaIndicator/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BhaIndicator'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/DrillstringDetail/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './DrillstringDetail'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/agitator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/agitator.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/ct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/ct.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/drill_collar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/drill_collar.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/drill_collar_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/drill_collar_white.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/drill_pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/drill_pipe.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/heavy_weight_drill_pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/heavy_weight_drill_pipe.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/hwdp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/hwdp.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/jar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/jar.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/lwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/lwd.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/motor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/motor.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/mwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/mwd.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/pdcbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/pdcbit.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/rollerconebit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/rollerconebit.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/rss.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/spiral_drill_collar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/spiral_drill_collar.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/stabilizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/stabilizer.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/sub.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/sub_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/sub_white.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/tail_pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/tail_pipe.png -------------------------------------------------------------------------------- /corva-ui/src/components/Drillstring/assets/regular-bha/ur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/Drillstring/assets/regular-bha/ur.png -------------------------------------------------------------------------------- /corva-ui/src/components/EditableItem/index.js: -------------------------------------------------------------------------------- 1 | export { default as EditableItem } from './EditableItem'; 2 | export { default as EditableItemWithBadge } from './EditableItemWithBadge'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/EmbeddedApp/index.js: -------------------------------------------------------------------------------- 1 | import DevCenterEmbeddedApp from './DevCenterEmbeddedApp'; 2 | import EmbeddedApp from './EmbeddedApp'; 3 | 4 | export { DevCenterEmbeddedApp, EmbeddedApp }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/EmptyState/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './EmptyState'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/EmptyState/utils.ts: -------------------------------------------------------------------------------- 1 | import { SIZES } from './constants'; 2 | 3 | export const getSize = contentHeight => { 4 | if (contentHeight >= 400) return SIZES.LARGE; 5 | if (contentHeight >= 300) return SIZES.MEDIUM; 6 | return SIZES.SMALL; 7 | }; 8 | -------------------------------------------------------------------------------- /corva-ui/src/components/EmptyView/EmptyAppView/EmptyStateImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/EmptyView/EmptyAppView/EmptyStateImg.png -------------------------------------------------------------------------------- /corva-ui/src/components/EmptyView/EmptyAppView/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './EmptyAppView'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/EmptyView/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './EmptyView'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/EmptyView/no_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/src/components/EmptyView/no_data.png -------------------------------------------------------------------------------- /corva-ui/src/components/ErrorBoundary/DevCenterAppErrorView/DevCenterAppErrorView.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | height: 100%; 5 | padding: 12px 12px 30px 12px; 6 | } 7 | 8 | .content { 9 | align-items: center; 10 | color: #9e9e9e; 11 | display: flex; 12 | flex-direction: column; 13 | height: 100%; 14 | justify-content: center; 15 | text-align: center; 16 | } -------------------------------------------------------------------------------- /corva-ui/src/components/ErrorBoundary/DevCenterAppErrorView/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './DevCenterAppErrorView'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ErrorBoundary/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ErrorBoundary'; 2 | export { default as DevCenterAppErrorView } from './DevCenterAppErrorView'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/FeedItemEditProvider/index.js: -------------------------------------------------------------------------------- 1 | export { FeedItemEditProvider, useFeedItemEditProvider } from './FeedItemEditProvider'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/editModals/DvdCommentEdit/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './DvdCommentEdit'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/editModals/HookloadCommentEdit/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './HookloadCommentEdit'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/editModals/LessonsLearnedEdit/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LessonsLearnedEdit'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/editModals/NptLessonsCommentEdit/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './NptLessonsCommentEdit'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/editModals/PCCommentEdit/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PCCommentEdit'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/feedItemTypes/AppAnnotationFeedItem/styles.css: -------------------------------------------------------------------------------- 1 | .appAnnotationFeedItem { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | 6 | .appAnnotationFeedItemApp { 7 | width: 628px; 8 | height: 480px; 9 | position: relative; 10 | margin-right: 15px; 11 | display: inline-block; 12 | } 13 | 14 | .appAnnotationFeedItemAttachment { 15 | padding-top: 10px; 16 | width: 300px; 17 | } -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/feedItemTypes/BhaFeedItem/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BhaFeedItem'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/feedItemTypes/BhaFeedItem/styles.css: -------------------------------------------------------------------------------- 1 | .bhaFeedItemInfoWrapper { 2 | display: flex; 3 | } -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/feedItemTypes/StageOverviewFeedItem/components/NoData.js: -------------------------------------------------------------------------------- 1 | import { string } from 'prop-types'; 2 | 3 | import Typography from '@material-ui/core/Typography'; 4 | 5 | const NoData = ({ subject }) => ( 6 | {`No data for ${subject}`} 7 | ); 8 | 9 | NoData.propTypes = { 10 | subject: string.isRequired, 11 | }; 12 | 13 | export default NoData; 14 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/feedItemTypes/StageOverviewFeedItem/components/Stages/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Stages'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/feedItemTypes/WellPlanFeedItem/styles.css: -------------------------------------------------------------------------------- 1 | .wellPlanFeedItemInfo { 2 | display: flex; 3 | margin-bottom: 20px; 4 | flex-wrap: wrap; 5 | } 6 | 7 | .wellPlanFeedItemApp { 8 | width: 400px; 9 | height: 400px; 10 | position: relative; 11 | margin-right: 15px; 12 | display: inline-block; 13 | } 14 | -------------------------------------------------------------------------------- /corva-ui/src/components/FeedItem/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedItem'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/FilesLoader/Icons/UploadIcon.js: -------------------------------------------------------------------------------- 1 | import { SvgIcon } from '@material-ui/core'; 2 | 3 | const UploadIcon = props => { 4 | return ( 5 | 6 | 11 | 12 | ); 13 | }; 14 | 15 | export default UploadIcon; 16 | -------------------------------------------------------------------------------- /corva-ui/src/components/FilesLoader/index.ts: -------------------------------------------------------------------------------- 1 | export { default as FilesLoader } from './FilesLoader'; 2 | export { default as FileIcon } from './Icons/FileIcon'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/FolderMenuItem/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as ClosedFolderIcon } from './ClosedFolderIcon'; 2 | export { default as FolderIcon } from './FolderIcon'; 3 | export { default as OpenFolderIcon } from './OpenFolderIcon'; 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/Formula/index.js: -------------------------------------------------------------------------------- 1 | export { default as Formula } from './Formula'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/GradientManager/GradientManager.styles.js: -------------------------------------------------------------------------------- 1 | import { makeStyles } from '@material-ui/core'; 2 | 3 | export const useStyles = makeStyles({ 4 | customGradientName: { 5 | minWidth: 175, 6 | marginBottom: 20, 7 | }, 8 | iconButton: { 9 | '&:hover': { 10 | background: 'transparent', 11 | }, 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /corva-ui/src/components/GradientManager/index.ts: -------------------------------------------------------------------------------- 1 | export * from './GradientManager'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/GradientPicker/__tests__/testData.ts: -------------------------------------------------------------------------------- 1 | export const gradients = { 2 | fire: { 3 | id: 'fire', 4 | name: 'Fire', 5 | gradientStops: [{ pos: 0, color: '#FFFF00' }, { pos: 50, color: '#FF8000' }, { pos: 100, color: '#FF0000' }], 6 | }, 7 | 8 | ice: { 9 | id: 'ice', 10 | name: 'Ice', 11 | gradientStops: [{ pos: 0, color: 'white' }, { pos: 100, color: 'cyan' }], 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /corva-ui/src/components/GradientPicker/index.ts: -------------------------------------------------------------------------------- 1 | export * from './GradientPicker'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/HeaderLayout/constants.js: -------------------------------------------------------------------------------- 1 | export const LARGE_SIZE_LAYOUT = 0; 2 | export const MEDIUM_SIZE_LAYOUT = 1; 3 | export const SMALL_SIZE_LAYOUT = 2; -------------------------------------------------------------------------------- /corva-ui/src/components/HeaderLayout/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './HeaderLayout'; -------------------------------------------------------------------------------- /corva-ui/src/components/HelpCenter/index.js: -------------------------------------------------------------------------------- 1 | export { HelpCenterIcon } from './HelpCenterIcon'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/LabelsCounter/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LabelsCounter'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/LoadingIndicator/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LoadingIndicator'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/MiddleTruncate/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './MiddleTruncate'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Modal/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Modal'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Notifications/index.ts: -------------------------------------------------------------------------------- 1 | export { Notifications } from './Notifications'; 2 | export { NotificationsContainer } from './NotificationsContainer'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellButton/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './OffsetWellButton'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellChips/index.ts: -------------------------------------------------------------------------------- 1 | import OffsetWellChip from './Chip'; 2 | import OffsetWellChipsContainer from './ChipsContainer'; 3 | 4 | export { OffsetWellChip, OffsetWellChipsContainer }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellMap/effects/index.js: -------------------------------------------------------------------------------- 1 | export * from './usePreviousWells'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellMap/effects/usePreviousWells.js: -------------------------------------------------------------------------------- 1 | import { useRef, useEffect } from 'react'; 2 | 3 | export function usePreviousWells(value) { 4 | const ref = useRef(); 5 | useEffect(() => { 6 | ref.current = value; 7 | }); 8 | return ref.current; 9 | } 10 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellMap/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './OffsetWellMap'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV2/components/Map/index.css: -------------------------------------------------------------------------------- 1 | .mapContainer { 2 | margin-top: 24px; 3 | } 4 | 5 | .mapContainerHidden { 6 | margin-top: 20px; 7 | display: none; 8 | } 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV2/components/Table/SubjectIndicator.css: -------------------------------------------------------------------------------- 1 | .subjectIndicator { 2 | background: #388e3c; 3 | border-radius: 10px; 4 | padding: 4px; 5 | font-size: 12px; 6 | margin-left: 4px; 7 | } 8 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV2/components/Table/SubjectIndicator.js: -------------------------------------------------------------------------------- 1 | import styles from './SubjectIndicator.css'; 2 | 3 | function SubjectIndicator() { 4 | return
Subject
; 5 | } 6 | 7 | export default SubjectIndicator; 8 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV2/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './OffsetWellPickerDialog'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV3/components/CustomSelectionView/components/Table/AutoCompleteAssetSearch/effects/index.js: -------------------------------------------------------------------------------- 1 | export { useAssetsData } from './useAssetsData'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV3/components/CustomSelectionView/components/Table/AutoCompleteAssetSearch/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AutoCompleteAssetSearch'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/AppHeader/index.js: -------------------------------------------------------------------------------- 1 | export * from './AppHeader'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/CustomInfoIcon/CustomInfoIcon.module.css: -------------------------------------------------------------------------------- 1 | .infoWrapper { 2 | margin-left: 8px; 3 | position: relative; 4 | display: flex; 5 | align-items: center; 6 | } 7 | 8 | .infoIcon { 9 | font-size: 20px !important; 10 | color: var(--palette-info-light); 11 | } 12 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/CustomInfoIcon/index.js: -------------------------------------------------------------------------------- 1 | export * from './CustomInfoIcon'; -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/Filter/index.js: -------------------------------------------------------------------------------- 1 | export { Filter } from './Filter'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/Map/WellsMap.module.css: -------------------------------------------------------------------------------- 1 | .mapContainerHidden { 2 | display: none; 3 | } 4 | 5 | .mapContainer { 6 | margin-bottom: 16px; 7 | position: sticky; 8 | left: 0; 9 | z-index: 2; 10 | } 11 | 12 | .mapContainerMobile { 13 | padding-right: 16px; 14 | } 15 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/Map/index.js: -------------------------------------------------------------------------------- 1 | export { WellsMap } from './WellsMap'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/OffsetWellsTable/AdvancedSearch/index.js: -------------------------------------------------------------------------------- 1 | export { AdvancedSearch } from './AdvancedSearch'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/OffsetWellsTable/index.js: -------------------------------------------------------------------------------- 1 | import OffsetWellsTable from './OffsetWellsTable'; 2 | 3 | export { OffsetWellsTable }; 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/components/Toolbar/index.js: -------------------------------------------------------------------------------- 1 | export * from './Toolbar'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/effects/index.js: -------------------------------------------------------------------------------- 1 | export * from './useFetchWells'; 2 | export * from './useAdvancedWells'; 3 | export * from './useBicWells'; 4 | export * from './useCompanyMetricKey'; 5 | export * from './useFilterOptions'; 6 | export * from './useFilteredWells'; 7 | export * from './useSortedWells'; 8 | export * from './useRadiusWells'; 9 | export * from './useAssetsData'; 10 | export * from './useTableColumns'; 11 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './OffsetWellPickerV4'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/OffsetWellPickerV4/utils/unitSystem.js: -------------------------------------------------------------------------------- 1 | import { getUnitPreference, getUnitDescription } from '~/utils'; 2 | 3 | export function getIsImperial() { 4 | const { system } = getUnitDescription(getUnitPreference('length')); 5 | return system === 'imperial'; 6 | } 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/PadModeSelect/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PadModeSelect'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/PadModeSelect/utils.js: -------------------------------------------------------------------------------- 1 | export const getWellStatusLabel = (isActiveFracAsset, isActiveWirelineAsset, isActivePumpdownAsset) => { 2 | if (isActiveFracAsset && isActiveWirelineAsset) return ' (Active Frac & WL)'; 3 | if (isActiveFracAsset) return ' (Active Frac)'; 4 | if (isActiveWirelineAsset) return ' (Active WL)'; 5 | if (isActivePumpdownAsset) return ' (Active Pumpdown)'; 6 | 7 | return ''; 8 | }; 9 | -------------------------------------------------------------------------------- /corva-ui/src/components/PadModeSelect/utils/time.ts: -------------------------------------------------------------------------------- 1 | export const getCurrentTimestamp = (): number => Math.round(new Date().getTime() / 1000); 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/PadOffsetsPicker/index.js: -------------------------------------------------------------------------------- 1 | export { default as PadOffsetsPicker } from './PadOffsetsPicker'; 2 | export { default as OffsetAssetChip } from './OffsetAssetChip'; 3 | export { default as OffsetAssetsListExpander } from './OffsetAssetsListExpander'; 4 | export { default as StagesSelector } from './StagesSelector'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/PadOffsetsPickerV2/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PadOffsetsPickerV2'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/AddEditTrack.css: -------------------------------------------------------------------------------- 1 | .c-pc-track-setting-actions { 2 | display: flex; 3 | justify-self: flex-end; 4 | width: 100%; 5 | } -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/ChartsContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export default createContext({ 4 | charts: new Map(), 5 | onChartChange: () => {} 6 | }); 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/DataContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export default createContext({ 4 | mapping: [], 5 | parsedData: [], 6 | indexes: { 7 | min: 0, 8 | max: 0, 9 | keys: {} 10 | } 11 | }); 12 | -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/ParameterCharts.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: row; 4 | flex: 1; 5 | margin-top: 25px; 6 | position: relative; 7 | } 8 | 9 | .container.horizontal { 10 | flex-direction: column; 11 | } -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/SettingsContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | import { SETTINGS_KEY } from './constants'; 3 | 4 | export default createContext({ 5 | horizontal: false, 6 | settingsKey: SETTINGS_KEY, 7 | settings: { 8 | [SETTINGS_KEY]: [] 9 | }, 10 | onSettingsChange: () => {} 11 | }); 12 | -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/components/ChartContainer.css: -------------------------------------------------------------------------------- 1 | .container { 2 | flex: 1; 3 | height: 100%; 4 | width: 100%; 5 | position: relative; 6 | display: flex; 7 | align-items: flex-end; 8 | } 9 | 10 | .horizontal { 11 | margin-right: 8px; 12 | } 13 | 14 | .first { 15 | height: 123px; 16 | } -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/components/Charts/EmptyChart.js: -------------------------------------------------------------------------------- 1 | import styles from './EmptyChart.css'; 2 | 3 | const EmptyChart = () => ( 4 |
5 |
6 |
7 |
8 |
9 |
10 | ) 11 | 12 | export default EmptyChart; -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/components/Charts/LineChart.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | height: 100%; 4 | position: absolute; 5 | } -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/components/Tooltip/CursorPositioner.css: -------------------------------------------------------------------------------- 1 | .container { 2 | position: absolute; 3 | z-index: 1; 4 | top: -16px; 5 | left: 0; 6 | } -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/constants.js: -------------------------------------------------------------------------------- 1 | export const SETTINGS_KEY = 'parameterChart'; 2 | 3 | 4 | export const DEFAULT_TRACK_SETTINGS = { 5 | name: 'New Track', 6 | traces: [], 7 | }; 8 | 9 | export const DEFAULT_TRACE_SETTINGS = { 10 | traceType: 'line', 11 | dashStyle: 'Solid', 12 | lineColor: '#ccc', 13 | lineWidth: 1, 14 | autoScale: true, 15 | } 16 | 17 | export const MAX_TRACE_COUNT = 10; 18 | -------------------------------------------------------------------------------- /corva-ui/src/components/ParameterCharts/index.js: -------------------------------------------------------------------------------- 1 | import ParameterCharts from './ParameterCharts'; 2 | import AddEditTrack from './AddEditTrack'; 3 | 4 | export { ParameterCharts, AddEditTrack }; -------------------------------------------------------------------------------- /corva-ui/src/components/PinnableFilters/constants.js: -------------------------------------------------------------------------------- 1 | export const LARGE_SIZE_LAYOUT = 0; 2 | export const MEDIUM_SIZE_LAYOUT = 1; 3 | export const SMALL_SIZE_LAYOUT = 2; -------------------------------------------------------------------------------- /corva-ui/src/components/PinnableFilters/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PinnableFilters'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Popover/index.js: -------------------------------------------------------------------------------- 1 | export { Popover } from './Popover'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Popper/index.js: -------------------------------------------------------------------------------- 1 | export { Popper } from './Popper'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/PostInput/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PostInput'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/PriceInput/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PriceInput'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/RangeSlider/constants.js: -------------------------------------------------------------------------------- 1 | export const RangeSliderControl = { 2 | FROM: 'from', 3 | TO: 'to', 4 | BAR: 'bar', 5 | RAIL: 'rail', 6 | FROM_INPUT: 'from-input', 7 | TO_INPUT: 'to-input', 8 | COMPACT_INPUTS: 'compact-inputs', 9 | }; 10 | 11 | export const RangeSliderOrientation = { 12 | HORIZONTAL: 'horizontal', 13 | VERTICAL: 'vertical', 14 | }; 15 | -------------------------------------------------------------------------------- /corva-ui/src/components/RangeSlider/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './RangeSlider'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/RealTimeValuesSidebar/RealTimeSidebarContext.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export default createContext(null); 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/RealTimeValuesSidebar/RealTimeValuesBox/index.ts: -------------------------------------------------------------------------------- 1 | export * from './RealTimeBoxList'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/RealTimeValuesSidebar/enums.ts: -------------------------------------------------------------------------------- 1 | export enum ORIENTATIONS { 2 | vertical = 'vertical', 3 | horizontal = 'horizontal', 4 | } 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/RealTimeValuesSidebar/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './RealTimeSidebar'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/ResizableTable/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ResizableTable } from './ResizableTable'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/Search/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as ListboxComponent } from './Listbox'; 2 | export { default as Paper } from './Paper'; 3 | export { default as RecentSearches } from './RecentSearches'; 4 | export { default as InputAdornmentLeft } from './InputAdornmentLeft'; 5 | export { default as Groups } from './Groups'; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/Search/context/index.js: -------------------------------------------------------------------------------- 1 | import { createContext, useContext } from 'react'; 2 | 3 | const PaperContext = createContext({}); 4 | 5 | const usePaperContext = () => { 6 | const context = useContext(PaperContext); 7 | 8 | if (!context) { 9 | console.warn('PaperContext cannot be used outside Provider'); 10 | } 11 | 12 | return context; 13 | }; 14 | 15 | export { PaperContext }; 16 | export default usePaperContext; 17 | -------------------------------------------------------------------------------- /corva-ui/src/components/Search/index.js: -------------------------------------------------------------------------------- 1 | export { default as Search } from './Search'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/SettingEditors/ColorEditor/style.css: -------------------------------------------------------------------------------- 1 | .colorEditor { 2 | position: relative; 3 | } 4 | 5 | .colorEditorPickerContainer { 6 | z-index: 100; 7 | position: absolute; 8 | top: 0; 9 | left: 0; 10 | } 11 | -------------------------------------------------------------------------------- /corva-ui/src/components/SettingEditors/index.js: -------------------------------------------------------------------------------- 1 | export { default as ColorEditor } from './ColorEditor'; 2 | export { default as StyledDropdownEditor } from './DropdownEditor'; 3 | export { default as RadioEditor } from './RadioEditor'; 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/SlateFormattedText/Constants.js: -------------------------------------------------------------------------------- 1 | export const TEXT_COLORS = { 2 | contrastText: 'contrastText', 3 | textPrimary: 'textPrimary', 4 | }; 5 | 6 | export const TEXT_FORMATS = { 7 | headerOne: 'headerOne', 8 | headerTwo: 'headerTwo', 9 | headerThree: 'headerThree', 10 | body: 'body', 11 | caption: 'caption', 12 | code: 'code', 13 | }; 14 | -------------------------------------------------------------------------------- /corva-ui/src/components/SlateFormattedText/Elements/VideoElement/style.css: -------------------------------------------------------------------------------- 1 | .videoContainer { 2 | padding: 16px 0 16px 0; 3 | position: relative; 4 | width: 100%; 5 | height: 0; 6 | padding-bottom: 56.25%; 7 | } 8 | 9 | .player { 10 | position: absolute; 11 | top: 0; 12 | left: 0; 13 | width: 100%; 14 | height: 100%; 15 | } 16 | -------------------------------------------------------------------------------- /corva-ui/src/components/SlateFormattedText/Elements/index.js: -------------------------------------------------------------------------------- 1 | export { default as ImageElement } from './ImageElement/ImageElement'; 2 | export { default as VideoElement } from './VideoElement/VideoElement'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/SlateFormattedText/index.js: -------------------------------------------------------------------------------- 1 | import SlateFormattedText from './SlateFormattedText'; 2 | import { Leaf, Element } from './RenderElements'; 3 | import { slateFormattingTextUtils } from './utils'; 4 | 5 | export { SlateFormattedText, Leaf, Element, slateFormattingTextUtils }; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/StageDesignVActual/ComparisonBar/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ComparisonBar'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/StageDesignVActual/ElementsComparison/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ElementsComparison'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/StageDesignVActual/index.js: -------------------------------------------------------------------------------- 1 | import ComparisonBar from './ComparisonBar'; 2 | import ElementsComparison from './ElementsComparison'; 3 | import ComparisonHeader from './ComparisonHeader'; 4 | import ComparisonRow from './ComparisonRow'; 5 | 6 | export { ComparisonBar, ElementsComparison, ComparisonHeader, ComparisonRow }; 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/Stepper/StepsWrapper.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: space-between; 4 | margin-bottom: 8px; 5 | } 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/Stepper/constants.js: -------------------------------------------------------------------------------- 1 | export const SIZES = { 2 | medium: 'medium', 3 | large: 'large', 4 | }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Stepper/index.js: -------------------------------------------------------------------------------- 1 | import Step from './Step'; 2 | import StepsWrapper from './StepsWrapper'; 3 | import Stepper from './Stepper'; 4 | 5 | export { Stepper, StepsWrapper, Step }; 6 | -------------------------------------------------------------------------------- /corva-ui/src/components/StyledMenuItem/index.js: -------------------------------------------------------------------------------- 1 | import { MenuItem, withStyles } from '@material-ui/core'; 2 | 3 | const MenuItemWithStyles = withStyles({ 4 | root: { 5 | '&.Mui-selected': { 6 | backgroundColor: '#414141', 7 | }, 8 | }, 9 | })(MenuItem); 10 | 11 | const StyledMenuItem = props => ( 12 | {props.children} 13 | ); 14 | 15 | export default StyledMenuItem; 16 | -------------------------------------------------------------------------------- /corva-ui/src/components/SwitchControl/style.css: -------------------------------------------------------------------------------- 1 | .switchControlTitle { 2 | font-size: 13px; 3 | color: rgba(255, 255, 255, 0.7); 4 | margin-bottom: 8px; 5 | } 6 | 7 | .switchControlWithLabels { 8 | display: flex; 9 | } 10 | -------------------------------------------------------------------------------- /corva-ui/src/components/Table/TableSortLabel/TableSortLabel.js: -------------------------------------------------------------------------------- 1 | import { Tooltip, TableSortLabel as TableSortLabelComponent } from '@material-ui/core'; 2 | 3 | const TableSortLabel = props => ( 4 | 5 | 6 | 7 | ); 8 | 9 | export default TableSortLabel; 10 | -------------------------------------------------------------------------------- /corva-ui/src/components/Table/index.js: -------------------------------------------------------------------------------- 1 | export { default as TableSortLabel } from './TableSortLabel/TableSortLabel'; 2 | export { default as TableToolbar } from './TableToolbar/TableToolbar'; 3 | export { TableContainer } from './TableContainer/TableContainer'; 4 | export { TableCell } from './TableCell/TableCell'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/components/Tabs/index.js: -------------------------------------------------------------------------------- 1 | export { default as Tabs } from './Tabs'; 2 | export { default as Tab } from './Tab'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/Toaster/index.ts: -------------------------------------------------------------------------------- 1 | export { Toaster } from './Toaster'; 2 | export { ToastContainer } from './ToastContainer'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/Toaster/types.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react'; 2 | 3 | export type ToasterType = { message: ReactNode; autoHideDuration: number }; 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/Tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export { Tooltip as default } from './Tooltip'; 2 | export { ScrollableTooltip } from './ScrollableTooltip'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/components/TracesEditModal/TracesEditModal.css: -------------------------------------------------------------------------------- 1 | .modal { 2 | max-width: 450px; 3 | width: 100vw; 4 | } 5 | 6 | .modalFieldLabel { 7 | color: #bdbdbd; 8 | margin-bottom: 4px; 9 | font-size: 0.75rem; 10 | } 11 | 12 | .modalPostInput { 13 | margin-top: 14px; 14 | margin-bottom: 24px; 15 | } 16 | 17 | .modalDateInput { 18 | max-width: 200px; 19 | } 20 | 21 | .modalDateInput :global(.MuiInput-root) { 22 | padding-bottom: 5px; 23 | } 24 | -------------------------------------------------------------------------------- /corva-ui/src/components/TracesEditModal/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TracesEditModalContainer'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/UserMention/constants.js: -------------------------------------------------------------------------------- 1 | export const USER_MARKUP = '@[user:__id__|__display__]'; 2 | 3 | export const PLACEHOLDERS = { 4 | id: '__id__', 5 | display: '__display__', 6 | }; 7 | -------------------------------------------------------------------------------- /corva-ui/src/components/WellSummary/assets/left_arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/WellSummary/assets/up_arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /corva-ui/src/components/WellSummary/effects/index.js: -------------------------------------------------------------------------------- 1 | export { useWellSummaryData } from './useWellSummaryData'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/components/WellSummary/index.js: -------------------------------------------------------------------------------- 1 | export { default as WellSummaryItemLabel } from './WellSummaryItemLabel'; 2 | export { default as WellSummaryItemTitle } from './WellSummaryItemTitle'; 3 | export { default as WellSummaryItemValue } from './WellSummaryItemValue'; 4 | export { default as ActivitySummaryChart } from './ActivitySummaryChart'; 5 | export { default as FracWirelineTimeChart } from './FracWirelineTimeChart'; 6 | export * from './effects'; 7 | -------------------------------------------------------------------------------- /corva-ui/src/config/highcharts/index.js: -------------------------------------------------------------------------------- 1 | export { initHighcharts } from './highcharts'; -------------------------------------------------------------------------------- /corva-ui/src/config/index.js: -------------------------------------------------------------------------------- 1 | import * as theme from './theme'; 2 | import { initHighcharts } from './highcharts'; 3 | import { MAP_BOX_ACCESS_TOKEN } from './mapbox'; 4 | 5 | export { theme, initHighcharts, MAP_BOX_ACCESS_TOKEN }; 6 | -------------------------------------------------------------------------------- /corva-ui/src/config/initGlobalDependencies.js: -------------------------------------------------------------------------------- 1 | import { initHighcharts } from '~/config/highcharts'; 2 | import { initializeSocketClient } from '~/clients/subscriptions'; 3 | import './extendNative.js'; 4 | 5 | initHighcharts(); 6 | initializeSocketClient(); 7 | -------------------------------------------------------------------------------- /corva-ui/src/config/mapbox/index.js: -------------------------------------------------------------------------------- 1 | import L from 'mapbox.js'; 2 | 3 | // NOTE: Access token from Jim Wang 4 | export const MAP_BOX_ACCESS_TOKEN = 'pk.eyJ1IjoiY29ydmEtYWkiLCJhIjoiY2tzeXg1Ym84Mm53NjJvbnZvZ3JxajVwayJ9.3B6ubssBj1UCqN5o25X6pw'; 5 | L.mapbox.accessToken = MAP_BOX_ACCESS_TOKEN; 6 | -------------------------------------------------------------------------------- /corva-ui/src/config/theme/formGroupOverrides.js: -------------------------------------------------------------------------------- 1 | export default { 2 | MuiFormGroup: { 3 | row: { '& .MuiFormControlLabel-root': { marginRight: 24 } }, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /corva-ui/src/constants/accuracy.js: -------------------------------------------------------------------------------- 1 | export const COLOR = { 2 | red: '#ff0000', 3 | green: '#00ff00', 4 | yellow: '#ffff00', 5 | orange: '#ffa500', 6 | white: '#fff', 7 | }; 8 | -------------------------------------------------------------------------------- /corva-ui/src/constants/appPackages.js: -------------------------------------------------------------------------------- 1 | export const PACKAGE_STATUSES = { 2 | PUBLISHED: 'published', 3 | DRAFT: 'draft', 4 | FAILURE: 'failure', 5 | }; 6 | -------------------------------------------------------------------------------- /corva-ui/src/constants/componentsSettings.js: -------------------------------------------------------------------------------- 1 | import { DEFAULT_GRADIENTS } from '../components/GradientManager/configuration/constants'; 2 | 3 | export const componentsSettings = { 4 | DEFAULT_GRADIENTS, 5 | } 6 | -------------------------------------------------------------------------------- /corva-ui/src/constants/corvaCompanyId.js: -------------------------------------------------------------------------------- 1 | import { isProdEnv, isBetaEnv } from '~/utils/env'; 2 | 3 | export const CORVA_COMPANY_ID = isProdEnv || isBetaEnv ? 3 : 1; 4 | -------------------------------------------------------------------------------- /corva-ui/src/constants/dateTimeFormat.js: -------------------------------------------------------------------------------- 1 | export const DATE_TIME_FORMAT = 'MM/DD/YY, hh:mm A'; 2 | export const DATE_FORMAT = 'MMM DD'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/constants/devcenter.js: -------------------------------------------------------------------------------- 1 | export const DEV_CENTER_CLI_APP_ID = -1; 2 | -------------------------------------------------------------------------------- /corva-ui/src/constants/featureFlags.js: -------------------------------------------------------------------------------- 1 | export const NAME = 'featureFlags'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/constants/incidents.js: -------------------------------------------------------------------------------- 1 | export const NAME = 'incidents'; 2 | 3 | export const UPDATE_INCIDENTS = 'UPDATE_INCIDENTS'; 4 | 5 | const pageID = 'hd7xgwkyb9j3'; 6 | export const baseRoute = `https://api.statuspage.io/v1/pages/${pageID}`; 7 | -------------------------------------------------------------------------------- /corva-ui/src/constants/localStorageKeys.js: -------------------------------------------------------------------------------- 1 | export const LOCAL_STORAGE_APP_THEME_KEY = 'APP_THEME'; 2 | export const LOCAL_STORAGE_PDF_REPORT_VIEW_KEY = 'PDF_REPORT_VIEW'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/constants/main.js: -------------------------------------------------------------------------------- 1 | export const NAME = 'main'; 2 | 3 | export const RESET_APP_STATE = 'RESET_APP_STATE'; 4 | export const MAKE_APP_READY = 'MAKE_APP_READY'; 5 | export const START_LOAD = 'START_LOAD'; 6 | export const FINISH_LOAD = 'FINISH_LOAD'; 7 | export const FINISH_RELOAD = 'FINISH_RELOAD'; 8 | export const SHOW_LOAD = 'SHOW_LOAD'; 9 | export const HIDE_LOAD = 'HIDE_LOAD'; 10 | -------------------------------------------------------------------------------- /corva-ui/src/constants/notificationToasts.js: -------------------------------------------------------------------------------- 1 | export const NAME = 'notificationToasts'; 2 | 3 | export const ADD_NOTIFICATION_TOAST = 'ADD_NOTIFICATION_TOAST'; 4 | export const REMOVE_NOTIFICATION_TOAST = 'REMOVE_NOTIFICATION_TOAST'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/constants/sizes.js: -------------------------------------------------------------------------------- 1 | export const Size = { 2 | SMALL: 'SMALL', 3 | MEDIUM: 'MEDIUM', 4 | LARGE: 'LARGE', 5 | XLARGE: 'XLARGE', 6 | }; 7 | -------------------------------------------------------------------------------- /corva-ui/src/constants/theme.js: -------------------------------------------------------------------------------- 1 | export const THEMES = { 2 | DARK: 'dark', 3 | LIGHT: 'light', 4 | }; 5 | -------------------------------------------------------------------------------- /corva-ui/src/constants/timezone.js: -------------------------------------------------------------------------------- 1 | export const AMERICA_CHICAGO_TIMEZONE_NAME = 'America/Chicago'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/constants/tooltips.js: -------------------------------------------------------------------------------- 1 | export const NAME = 'tooltip'; 2 | 3 | export const SHOW_TOOLTIP = 'SHOW_TOOLTIP'; 4 | export const HIDE_TOOLTIP = 'HIDE_TOOLTIP'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/effects/useResizeObserver.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | 3 | function useResizeObserver({ callback, containerRef }) { 4 | useEffect(() => { 5 | const resizeObserver = new ResizeObserver(callback); 6 | 7 | if (containerRef.current) { 8 | resizeObserver.observe(containerRef.current); 9 | } 10 | return () => { 11 | resizeObserver.disconnect(); 12 | }; 13 | }, []); 14 | } 15 | 16 | export default useResizeObserver; 17 | -------------------------------------------------------------------------------- /corva-ui/src/exampleApp/ExampleApp.css: -------------------------------------------------------------------------------- 1 | .exampleApp { 2 | padding: 20px; 3 | width: 100%; 4 | height: 100%; 5 | min-height: 400px; 6 | display: flex; 7 | flex-direction: column; 8 | } 9 | 10 | .loadingContainer { 11 | position: relative; 12 | } -------------------------------------------------------------------------------- /corva-ui/src/exampleApp/index.js: -------------------------------------------------------------------------------- 1 | import ReactDOM from 'react-dom'; 2 | import { initHighcharts } from '~/config'; 3 | import withMUIProvidersHOC from '~/hocs/withMUIProvidersHOC'; 4 | import ExampleApp from './ExampleApp'; 5 | 6 | initHighcharts(); 7 | const App = withMUIProvidersHOC(ExampleApp); 8 | 9 | ReactDOM.render(, document.getElementById('root')); 10 | -------------------------------------------------------------------------------- /corva-ui/src/hocs/index.js: -------------------------------------------------------------------------------- 1 | import withMUIProvidersHOC from './withMUIProvidersHOC'; 2 | 3 | export { withMUIProvidersHOC }; 4 | -------------------------------------------------------------------------------- /corva-ui/src/permissions/PermissionsContext.js: -------------------------------------------------------------------------------- 1 | import { createContext, useContext } from 'react'; 2 | 3 | export const PermissionsContext = createContext(); 4 | const usePermissionsContext = () => useContext(PermissionsContext); 5 | 6 | export default usePermissionsContext; 7 | -------------------------------------------------------------------------------- /corva-ui/src/permissions/constants/abilities.js: -------------------------------------------------------------------------------- 1 | export const ABILITIES = { 2 | view: 'view', 3 | edit: 'edit', 4 | read: 'read', 5 | update: 'update', 6 | create: 'create', 7 | destroy: 'destroy', 8 | impersonate: 'impersonate', 9 | access: 'access', 10 | copy_activities: 'copy_activities', 11 | copy_users: 'copy_users', 12 | share: 'share', 13 | }; 14 | -------------------------------------------------------------------------------- /corva-ui/src/permissions/utils.js: -------------------------------------------------------------------------------- 1 | export const stringifyPermission = ({ 2 | ability, 3 | resource_class: resourceClass, 4 | resource_id: resourceId = '', 5 | }) => `${ability}#${resourceClass}#${resourceId}`; 6 | 7 | export const parsePermission = permission => { 8 | // eslint-disable-next-line camelcase 9 | const [ability, resource_class, resource_id] = permission.split('#'); 10 | return { ability, resource_class, resource_id }; 11 | }; 12 | -------------------------------------------------------------------------------- /corva-ui/src/styles/counter/index.js: -------------------------------------------------------------------------------- 1 | import counter from './counter.module.scss'; 2 | 3 | export default counter; 4 | -------------------------------------------------------------------------------- /corva-ui/src/styles/emojiMart.global.css: -------------------------------------------------------------------------------- 1 | @import 'emoji-mart/css/emoji-mart.css'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/styles/index.js: -------------------------------------------------------------------------------- 1 | export { default as typography } from './typography'; 2 | export { default as counter } from './counter'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/styles/lightbox.global.css: -------------------------------------------------------------------------------- 1 | @import 'react-image-lightbox/style.css'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/styles/mapbox.global.css: -------------------------------------------------------------------------------- 1 | @import 'mapbox.js/dist/mapbox.css'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/styles/typography/colors.module.scss: -------------------------------------------------------------------------------- 1 | $text-colors: ( 2 | t1: var(--palette-primary-text-1), 3 | t6: var(--palette-primary-text-6), 4 | t7: var(--palette-primary-text-7), 5 | t8: var(--palette-primary-text-8), 6 | t9: var(--palette-primary-text-9), 7 | ); 8 | 9 | @each $color-name, $value in $text-colors { 10 | .#{$color-name} { 11 | color: $value; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /corva-ui/src/styles/typography/index.js: -------------------------------------------------------------------------------- 1 | import typography from './typography.module.scss'; 2 | import colors from './colors.module.scss'; 3 | 4 | export default { 5 | ...typography, 6 | colors, 7 | }; 8 | -------------------------------------------------------------------------------- /corva-ui/src/types/globals/Number-augmentation.d.ts: -------------------------------------------------------------------------------- 1 | declare global { 2 | /** 3 | * Number is extended in src/config/extendNative.js 4 | * This file merely tells TS about new methods 5 | */ 6 | interface Number { 7 | fixFloat: (precision: number) => number; 8 | formatNumeral: (fmt: string) => string; 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /corva-ui/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './shared'; 2 | -------------------------------------------------------------------------------- /corva-ui/src/types/shared/CustomGradient.ts: -------------------------------------------------------------------------------- 1 | import { GradientFillStop } from './GradientFillStop'; 2 | 3 | export type CustomGradient = { 4 | name: string; 5 | id: string; 6 | gradientStops: GradientFillStop[]; 7 | }; 8 | -------------------------------------------------------------------------------- /corva-ui/src/types/shared/GradientFillStop.ts: -------------------------------------------------------------------------------- 1 | export type GradientFillStop = { 2 | /** 3 | * Position in percents. Can be fractional. 4 | */ 5 | pos: number; 6 | /** 7 | * Color for the stop. Named colors should also work but please avoid them. 8 | */ 9 | color: string; 10 | }; 11 | -------------------------------------------------------------------------------- /corva-ui/src/types/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CustomGradient'; 2 | export * from './GradientFillStop'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/utils/audio.js: -------------------------------------------------------------------------------- 1 | // import notificationSoundURL from '~/assets/audio/notification.mp3'; 2 | 3 | // NOTE: Sounds will be added 4 | export function playNotificationSound(notificationSound = new Audio(null)) { 5 | notificationSound.play(); 6 | } 7 | -------------------------------------------------------------------------------- /corva-ui/src/utils/casing/index.js: -------------------------------------------------------------------------------- 1 | export * as conversion from './conversion'; 2 | export * as validation from './validation'; 3 | -------------------------------------------------------------------------------- /corva-ui/src/utils/delay.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns a promise that will be resolved after delay with an optional result 3 | * @param {number} delayMs 4 | * @param {any} [result] 5 | * @returns {Promise} 6 | */ 7 | export function delay(delayMs, result) { 8 | return new Promise(resolve => { 9 | setTimeout(() => { 10 | resolve(result); 11 | }, delayMs); 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /corva-ui/src/utils/env.js: -------------------------------------------------------------------------------- 1 | export const isDevOrQAEnv = 2 | process.env.REACT_APP_ENVIRONMENT === 'qa' || process.env.REACT_APP_ENVIRONMENT === 'development'; 3 | export const isBetaEnv = process.env.REACT_APP_ENVIRONMENT === 'beta'; 4 | export const isProdEnv = process.env.REACT_APP_ENVIRONMENT === 'production'; 5 | -------------------------------------------------------------------------------- /corva-ui/src/utils/ga.js: -------------------------------------------------------------------------------- 1 | import { isReportsPage } from '~/utils/reports'; 2 | 3 | export const isLoggingToGoogleAnalytics = 4 | (process.env.REACT_APP_ENVIRONMENT === 'production' || 5 | process.env.REACT_APP_ENVIRONMENT === 'beta') && 6 | !isReportsPage; 7 | -------------------------------------------------------------------------------- /corva-ui/src/utils/jsonaDataFormatter.js: -------------------------------------------------------------------------------- 1 | import Jsona, { SwitchCaseJsonMapper } from 'jsona'; 2 | 3 | export const jsonaDataFormatter = new Jsona({ 4 | jsonPropertiesMapper: new SwitchCaseJsonMapper({ switchChar: '_' }), 5 | }); 6 | -------------------------------------------------------------------------------- /corva-ui/src/utils/localStorage.js: -------------------------------------------------------------------------------- 1 | export function getLocalStorageItem(itemKey) { 2 | return JSON.parse(localStorage.getItem(itemKey)) || {}; 3 | } 4 | 5 | export function updateLocalStorageItem(itemKey, newData) { 6 | const localStorageItem = getLocalStorageItem(itemKey) || {}; 7 | localStorage.setItem(itemKey, JSON.stringify({ ...localStorageItem, ...newData })); 8 | } 9 | -------------------------------------------------------------------------------- /corva-ui/src/utils/themeVariables.js: -------------------------------------------------------------------------------- 1 | const DARK_THEME_ATTRIBUTE = 'data-corva-theme-dark'; 2 | const LIGHT_THEME_ATTRIBUTE = 'data-corva-theme-light'; 3 | 4 | export const setThemeVariables = isDarkTheme => { 5 | document.body.removeAttribute(isDarkTheme ? LIGHT_THEME_ATTRIBUTE : DARK_THEME_ATTRIBUTE); 6 | document.body.setAttribute(isDarkTheme ? DARK_THEME_ATTRIBUTE : LIGHT_THEME_ATTRIBUTE, ''); 7 | }; 8 | -------------------------------------------------------------------------------- /corva-ui/storybook/assets/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/corva-ui/storybook/assets/star.png -------------------------------------------------------------------------------- /corva-ui/storybook/preview-head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /corva-ui/storybook/stories/ConvertUtils/GetAllUnitTypes.stories.mdx: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Convert Utils 4 | 5 | Convert Utils is a tool for metric data convertioning. 6 | 7 | ## getAllUnitTypes 8 | 9 | Returns list of all unit types. 10 | 11 | ### Example 12 | 13 | ```javascript 14 | import { getAllUnitTypes } from '~/utils/convert'; 15 | getAllUnitTypes(); 16 | ``` 17 | -------------------------------------------------------------------------------- /corva-ui/storybook/stories/ConvertUtils/GetDefaultUnits.stories.mdx: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Convert Utils 4 | 5 | Convert Utils is a tool for metric data convertioning. 6 | 7 | ## getDefaultUnits 8 | 9 | Returns list of default units. 10 | 11 | ### Example 12 | 13 | ```javascript 14 | import { getDefaultUnits } from '~/utils/convert'; 15 | getDefaultUnits(); 16 | ``` 17 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@commitlint/config-conventional"], 3 | "rules": { 4 | "subject-case": [0] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.env.sample: -------------------------------------------------------------------------------- 1 | # One of: localhost | 127.0.0.1 | app.local.corva.ai 2 | # For app.local.corva.ai you need to add: 127.0.0.1 app.local.corva.ai to /etc/hosts 3 | HOST=localhost 4 | 5 | # Single sign-on works ONLY with PORTS 8080, 9000 or 80. 6 | PORT=8080 7 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.github/workflows/code-checks.yml: -------------------------------------------------------------------------------- 1 | name: Code Checks 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - develop 7 | 8 | jobs: 9 | Lint-and-Test: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: 'Lint and test' 13 | uses: corva-ai/gh-actions/shared-dc-workflows/lint-and-test@develop 14 | with: 15 | npm-token: ${{ secrets.CORVA_NPM_TOKEN }} 16 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | echo "Validating commit message..." 5 | ./node_modules/.bin/commitlint --edit $1 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | ./node_modules/.bin/lint-staged 5 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.nvmrc: -------------------------------------------------------------------------------- 1 | 16 2 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/.prettierrc: -------------------------------------------------------------------------------- 1 | "@corva/eslint-config-browser/prettier" 2 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners are the default owners for everything in 2 | # the repo. They're automatically added as reviewers 3 | # to each pull request 4 | 5 | * @corva-ai/front-end-dev-center-apps 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | module.exports = babelJest.createTransformer({ 6 | presets: [ 7 | [ 8 | require.resolve('babel-preset-react-app'), 9 | { 10 | runtime: 'automatic', 11 | }, 12 | ], 13 | ], 14 | babelrc: false, 15 | configFile: false, 16 | }); 17 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return { 9 | code: 'module.exports = {};', 10 | }; 11 | }, 12 | getCacheKey() { 13 | // The output is always the same. 14 | return 'cssTransform'; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/config/jest/globalSetup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | // use UTC timezone to not break tests when you run them on 3 | // an environemnt with a different timezone 4 | process.env.TZ = 'UTC'; 5 | }; 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/api/authors/parser.ts: -------------------------------------------------------------------------------- 1 | import { InsightAuthor } from '@/entities/insight/author'; 2 | 3 | export const parseAuthorFromJSON = (obj: any): InsightAuthor => { 4 | return { 5 | id: obj.data.id, 6 | firstName: obj.data.attributes.first_name, 7 | lastName: obj.data.attributes.last_name, 8 | profilePhoto: obj.data.attributes.profile_photo, 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/assets/empty_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/dc-fe-corva-insights/src/assets/empty_state.png -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/assets/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/assets/range.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/assets/selected_day.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/assets/today.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/base-tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/create-react-app/tsconfig.json", 3 | "compilerOptions": { 4 | "useDefineForClassFields": true, 5 | "noEmit": false, 6 | "noImplicitAny": false, 7 | "strictNullChecks": true, 8 | "target": "ES2020", 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Calendar/Header/WeekDays/index.tsx: -------------------------------------------------------------------------------- 1 | import styles from './index.module.css'; 2 | 3 | export const WeekDays = () => { 4 | const weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 5 | 6 | return ( 7 |
8 | {weekDays.map(day => ( 9 |
10 | {day} 11 |
12 | ))} 13 |
14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Calendar/Header/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | border-radius: 8px 8px 0 0; 4 | border: 1px solid var(--palette-background-b-7); 5 | } 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Calendar/Header/index.tsx: -------------------------------------------------------------------------------- 1 | import { MonthSelector } from '@/components/Calendar/Header/MonthSelector'; 2 | import { WeekDays } from '@/components/Calendar/Header/WeekDays'; 3 | 4 | import styles from './index.module.css'; 5 | 6 | export const CalendarHeader = () => { 7 | return ( 8 |
9 | 10 | 11 |
12 | ); 13 | }; 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Calendar/List/IconWithBadge/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | position: relative; 3 | } 4 | 5 | .badge { 6 | padding: 0; 7 | position: absolute; 8 | top: -2px; 9 | right: -2px; 10 | } 11 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Calendar/List/index.module.css: -------------------------------------------------------------------------------- 1 | .list { 2 | width: 100%; 3 | padding: 8px 0 16px 0; 4 | display: grid; 5 | grid-template-columns: repeat(7, 1fr); 6 | grid-auto-rows: min-content; 7 | max-height: 100%; 8 | overflow-y: auto; 9 | gap: 8px; 10 | } 11 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Calendar/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | height: calc(100% - 64px); 3 | width: 100%; 4 | } 5 | 6 | .container.isMobile { 7 | height: calc(100% - 52px); 8 | } 9 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Header/Filters/SmallScreen/Popover/index.module.css: -------------------------------------------------------------------------------- 1 | .header { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-between; 5 | margin-bottom: 16px; 6 | } 7 | 8 | .title { 9 | font-weight: 400; 10 | margin: 0; 11 | font-size: 20px; 12 | color: var(--palette-primary-text-1); 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Header/Filters/SmallScreen/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: center; 4 | gap: 8px; 5 | } 6 | 7 | .popover { 8 | width: 100%; 9 | display: flex; 10 | flex-direction: column; 11 | align-items: flex-start; 12 | gap: 16px; 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Header/Filters/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: grid; 3 | grid-template-columns: 150px 150px 150px min-content; 4 | align-items: flex-end; 5 | gap: 16px; 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/Header/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: grid; 3 | grid-template-columns: auto max-content; 4 | grid-template-rows: auto; 5 | } 6 | 7 | .right { 8 | display: flex; 9 | align-items: flex-end; 10 | gap: 16px; 11 | } 12 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/InsightForm/Comment/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | margin-top: 16px; 4 | } 5 | 6 | .actions { 7 | display: flex; 8 | align-items: center; 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/InsightForm/FilesPreview/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | min-height: 52px; 4 | display: flex; 5 | flex-direction: column; 6 | gap: 8px; 7 | margin-top: 8px; 8 | } 9 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/InsightForm/Selectors/index.module.css: -------------------------------------------------------------------------------- 1 | .selectors { 2 | display: grid; 3 | grid-template-columns: 1fr 1fr; 4 | grid-template-rows: auto auto; 5 | gap: 16px; 6 | } 7 | 8 | @media screen and (max-width: 599px) { 9 | .selectors { 10 | grid-template-columns: 1fr; 11 | grid-template-rows: auto auto auto; 12 | } 13 | } 14 | 15 | .selector { 16 | width: 100%; 17 | min-width: 170px; 18 | } 19 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/InsightForm/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: calc(100% - 32px); 3 | max-width: 550px; 4 | } 5 | 6 | .actions { 7 | width: 100%; 8 | display: flex; 9 | justify-content: flex-end; 10 | gap: 16px; 11 | } 12 | 13 | .form { 14 | display: flex; 15 | flex-direction: column; 16 | width: 100%; 17 | } 18 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Header/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | height: 100%; 3 | width: 100%; 4 | display: flex; 5 | justify-content: space-between; 6 | align-items: center; 7 | } 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Group/Item/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | gap: 8px; 6 | } 7 | 8 | .date { 9 | font-weight: 400; 10 | font-size: 12px; 11 | line-height: 16px; 12 | margin: 0 0 8px 0; 13 | color: var(--palette-primary-text-6); 14 | } 15 | 16 | .date.isSelected { 17 | color: var(--palette-primary-light); 18 | } 19 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Group/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 16px; 5 | } 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Item/AppPreview/index.module.css: -------------------------------------------------------------------------------- 1 | .embeddedAppContainer { 2 | width: 100%; 3 | height: 200px; 4 | margin-bottom: 1rem; 5 | } 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Item/Comments/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | margin-top: 4px; 4 | } 5 | 6 | .list { 7 | width: 100%; 8 | margin-top: 24px; 9 | display: flex; 10 | flex-direction: column; 11 | gap: 8px; 12 | } 13 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Item/Documents/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | display: flex; 4 | flex-wrap: wrap; 5 | gap: 8px; 6 | } 7 | 8 | .item { 9 | width: 100%; 10 | max-width: 289px; 11 | cursor: pointer; 12 | } 13 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Item/InsightAvatar/index.module.css: -------------------------------------------------------------------------------- 1 | .avatar { 2 | position: absolute; 3 | top: 10px; 4 | left: -16px; 5 | } 6 | 7 | .type { 8 | width: 18px; 9 | position: absolute; 10 | bottom: -8px; 11 | right: -5px; 12 | backdrop-filter: blur(1px); 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/Item/SpecificType/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: center; 4 | } 5 | 6 | .label { 7 | font-weight: 400; 8 | font-size: 14px; 9 | color: var(--palette-primary-text-6); 10 | margin-right: 2px; 11 | } 12 | 13 | .value { 14 | font-weight: 400; 15 | font-size: 14px; 16 | color: var(--palette-primary-text-1); 17 | } 18 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Main/index.module.css: -------------------------------------------------------------------------------- 1 | .list { 2 | width: 100%; 3 | max-height: 100%; 4 | overflow-y: auto; 5 | display: flex; 6 | flex-direction: column; 7 | gap: 8px; 8 | } 9 | 10 | .gradient { 11 | background: linear-gradient(to top, rgba(39, 39, 39, 0) 0%, #272727 100%); 12 | } 13 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/TabBar/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | width: 180px; 6 | gap: 8px; 7 | } 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/components/SelectedInsightsPanel/Title/index.module.css: -------------------------------------------------------------------------------- 1 | .title { 2 | font-weight: 500; 3 | font-size: 14px; 4 | color: var(--palette-primary-text-1); 5 | text-transform: capitalize; 6 | } 7 | 8 | .medium { 9 | font-size: 14px; 10 | } 11 | 12 | .large { 13 | font-size: 20px; 14 | } 15 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/calendar/index.ts: -------------------------------------------------------------------------------- 1 | export { CalendarProvider } from './context'; 2 | export { useCalendarStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/calendar/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { CalendarContext } from './context'; 4 | 5 | export const useCalendarStore = () => { 6 | return useContext(CalendarContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/filters/index.ts: -------------------------------------------------------------------------------- 1 | export { FiltersProvider } from './context'; 2 | export { useFiltersStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/filters/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { FiltersContext } from './context'; 4 | 5 | export const useFiltersStore = () => { 6 | return useContext(FiltersContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/global/index.ts: -------------------------------------------------------------------------------- 1 | export { GlobalProvider } from './context'; 2 | export { useGlobalStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/global/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { GlobalContext } from './context'; 4 | 5 | export const useGlobalStore = () => { 6 | return useContext(GlobalContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/insight-form/index.ts: -------------------------------------------------------------------------------- 1 | export { InsightFormProvider } from './context'; 2 | export { useInsightFormStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/insight-form/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { InsightFormContext } from './context'; 4 | 5 | export const useInsightFormStore = () => { 6 | return useContext(InsightFormContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/selected-insights/index.ts: -------------------------------------------------------------------------------- 1 | export { SelectedInsightsProvider } from './context'; 2 | export { useSelectedInsightsStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/contexts/selected-insights/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { SelectedInsightsContext } from './context'; 4 | 5 | export const useSelectedInsightsStore = () => { 6 | return useContext(SelectedInsightsContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: string; 3 | export default content; 4 | } 5 | 6 | declare module '*.css' { 7 | const content: Record; 8 | export default content; 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/asset/index.ts: -------------------------------------------------------------------------------- 1 | export type AssetId = number; 2 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/insight/app/index.ts: -------------------------------------------------------------------------------- 1 | export type AppType = { 2 | id: number; 3 | app: unknown; 4 | package: any; 5 | }; 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/insight/author/helpers.ts: -------------------------------------------------------------------------------- 1 | import { User } from '@/entities/user'; 2 | 3 | import { InsightAuthor } from './index'; 4 | 5 | export function getAuthorDataFromUser(user: User): InsightAuthor { 6 | const { id, profilePhoto, firstName, lastName } = user; 7 | return { id, profilePhoto, firstName, lastName }; 8 | } 9 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/insight/author/index.ts: -------------------------------------------------------------------------------- 1 | import { User } from '@/entities/user'; 2 | 3 | export * from './helpers'; 4 | 5 | export type InsightAuthor = Omit; 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/insight/comment/index.ts: -------------------------------------------------------------------------------- 1 | import { InsightAuthor } from '@/entities/insight/author'; 2 | 3 | export type InsightComment = { 4 | id: string; 5 | text: string; 6 | timestamp: number; 7 | author: InsightAuthor; 8 | }; 9 | export type CommentPayload = Omit; 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/record/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helpers'; 2 | 3 | export enum RECORD_TYPE { 4 | TEXT, 5 | PPT, 6 | CSV, 7 | IMAGE, 8 | PDF, 9 | XLSX, 10 | DOCS, 11 | VIDEO, 12 | } 13 | 14 | export type Record = { 15 | id: string; 16 | datetime: string; 17 | name: string; 18 | ref: string; 19 | link?: string; 20 | }; 21 | 22 | export type Image = Record; 23 | export type RecordPayload = Omit; 24 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/entities/user/index.ts: -------------------------------------------------------------------------------- 1 | export type User = { 2 | id: number; 3 | companyId: number; 4 | profilePhoto: string; 5 | firstName: string; 6 | lastName: string; 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App'; 2 | import AppSettings from './AppSettings'; 3 | 4 | export default { 5 | component: App, 6 | settings: AppSettings, 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/mocks/api/authors-api.ts: -------------------------------------------------------------------------------- 1 | import { AuthorsApi } from '@/api/authors'; 2 | import { mockedInsightAuthor } from '@/mocks/insight'; 3 | 4 | export const mockedAuthorsApi: Omit = { 5 | getAuthorById: jest.fn().mockImplementation(() => Promise.resolve(mockedInsightAuthor)), 6 | resetCache: jest.fn(), 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/mocks/user.ts: -------------------------------------------------------------------------------- 1 | import { User } from '../entities/user'; 2 | 3 | export const mockedUser: User = { 4 | id: 1, 5 | firstName: 'John', 6 | lastName: 'Doe', 7 | profilePhoto: 'https://picsum.photos/200', 8 | companyId: 1, 9 | }; 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/AsyncPhoto/index.module.css: -------------------------------------------------------------------------------- 1 | .photo { 2 | max-height: 132px; 3 | max-width: 100%; 4 | object-fit: contain; 5 | } 6 | 7 | .loading { 8 | width: 100%; 9 | height: 132px; 10 | display: flex; 11 | justify-content: center; 12 | align-items: center; 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/AttachFile/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | } 4 | 5 | .fileInput { 6 | display: none; 7 | } 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/CommentInput/Actions/index.module.css: -------------------------------------------------------------------------------- 1 | .actions { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | margin-top: 8px; 6 | } 7 | 8 | .sendAction { 9 | display: flex; 10 | align-items: center; 11 | gap: 8px; 12 | color: var(--palette-primary-text-8); 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/CommentInput/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | display: flex; 4 | gap: 16px; 5 | } 6 | 7 | .form { 8 | width: 100%; 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/DeleteDialog/index.module.css: -------------------------------------------------------------------------------- 1 | .actions { 2 | display: flex; 3 | align-items: center; 4 | justify-content: flex-end; 5 | gap: 16px; 6 | } 7 | 8 | .deleteText { 9 | color: var(--palette-primary-text-6); 10 | font-weight: 400; 11 | font-size: 16px; 12 | } 13 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Feed/Videos/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | display: flex; 4 | flex-wrap: wrap; 5 | gap: 8px; 6 | } 7 | 8 | .item { 9 | width: 100%; 10 | max-width: 289px; 11 | cursor: pointer; 12 | } 13 | 14 | .item:not(:last-child) { 15 | margin-bottom: 20px; 16 | } 17 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/FileViewer/DocViewer/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | .hidden { 7 | visibility: hidden; 8 | height: 0; 9 | } 10 | 11 | .failed { 12 | color: #000; 13 | font-weight: bold; 14 | } 15 | 16 | .loader { 17 | position: static; 18 | } 19 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/FileViewer/Slider/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | align-items: center; 6 | justify-content: space-between; 7 | padding: 0 12px; 8 | gap: 24px; 9 | } 10 | 11 | .content { 12 | width: 100%; 13 | height: 100%; 14 | } 15 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Gallery/Grid/index.module.css: -------------------------------------------------------------------------------- 1 | .fullscreen { 2 | pointer-events: all; 3 | position: absolute; 4 | bottom: 8px; 5 | right: 8px; 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Gallery/ModeSelector/index.module.css: -------------------------------------------------------------------------------- 1 | .actions { 2 | display: flex; 3 | align-items: center; 4 | gap: 8px; 5 | margin-right: 24px; 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Gallery/Viewer/index.module.css: -------------------------------------------------------------------------------- 1 | .imageContainer { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | .image { 10 | width: 100%; 11 | max-height: 100%; 12 | object-fit: contain; 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Gallery/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | min-height: 180px; 3 | } 4 | 5 | .loader { 6 | width: 100%; 7 | height: 180px; 8 | position: relative; 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Gallery/types.ts: -------------------------------------------------------------------------------- 1 | export type GalleryImageProps = { 2 | name: string; 3 | src: string; 4 | width: number; 5 | height: number; 6 | }; 7 | 8 | export type GalleryFile = { 9 | ref: string; 10 | name: string; 11 | }; 12 | 13 | export type GalleryMode = 'grid' | 'carousel'; 14 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/InsightType/Circle/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 8px; 3 | height: 8px; 4 | border-radius: 50%; 5 | } 6 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/InsightType/Tile/index.module.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | width: 62%; 3 | background-size: contain; 4 | background-repeat: no-repeat; 5 | background-position: center; 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/InsightType/types.ts: -------------------------------------------------------------------------------- 1 | import { InsightTile } from '@/entities/insight'; 2 | 3 | export type InsightTypeProps = { 4 | tile: InsightTile; 5 | testId?: string; 6 | className?: string; 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/components/Tile/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: center; 5 | align-items: center; 6 | width: 100%; 7 | aspect-ratio: 1 / 1; 8 | border-radius: 4px; 9 | background-color: rgb(128, 128, 128); 10 | } 11 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/hooks/useDownloadFIle.ts: -------------------------------------------------------------------------------- 1 | import { showErrorNotification } from '@corva/ui/utils'; 2 | 3 | export const useDownloadFile = (getLink: (ref: string) => Promise) => { 4 | return async (ref: string) => { 5 | try { 6 | const url = await getLink(ref); 7 | window.open(url, '_parent'); 8 | } catch (e) { 9 | showErrorNotification('Download request failed'); 10 | } 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/services/event-listener.ts: -------------------------------------------------------------------------------- 1 | export interface Subject { 2 | // eslint-disable-next-line no-use-before-define 3 | attach(observer: Observer): void; 4 | // eslint-disable-next-line no-use-before-define 5 | detach(observer: Observer): void; 6 | notify(...args): void; 7 | } 8 | 9 | export interface Observer { 10 | update(...args): void; 11 | } 12 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/shared/styles.ts: -------------------------------------------------------------------------------- 1 | import { Theme } from './types'; 2 | 3 | export const useCommonDatePickerStyles = (theme: Theme) => ({ 4 | paddingBottom: 0, 5 | '& .MuiSvgIcon-root': { 6 | fill: `${theme.palette.primary.text1} !important`, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/src/stores/store.ts: -------------------------------------------------------------------------------- 1 | export class StoreWithDependencies { 2 | protected readonly api: API; 3 | protected readonly stores: Stores; 4 | 5 | protected constructor(api: API, stores: Stores) { 6 | this.api = api; 7 | this.stores = stores; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-corva-insights/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./src/base-tsconfig.json", 3 | "compilerOptions": { 4 | "noEmit": true, 5 | "baseUrl": ".", 6 | "experimentalDecorators": true, 7 | "useDefineForClassFields": true 8 | }, 9 | "include": ["src"] 10 | } 11 | -------------------------------------------------------------------------------- /dc-fe-damage-index/.env.sample: -------------------------------------------------------------------------------- 1 | # One of: localhost | 127.0.0.1 | app.local.corva.ai 2 | # For app.local.corva.ai you need to add: 127.0.0.1 app.local.corva.ai to /etc/hosts 3 | HOST=localhost 4 | 5 | # Single sign-on works ONLY with PORTS 8080, 9000 or 80. 6 | PORT=8080 7 | -------------------------------------------------------------------------------- /dc-fe-damage-index/.nvmrc: -------------------------------------------------------------------------------- 1 | 16 2 | -------------------------------------------------------------------------------- /dc-fe-damage-index/.prettierrc: -------------------------------------------------------------------------------- 1 | "@corva/eslint-config-browser/prettier" 2 | -------------------------------------------------------------------------------- /dc-fe-damage-index/config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | module.exports = babelJest.createTransformer({ 6 | presets: [ 7 | [ 8 | require.resolve('babel-preset-react-app'), 9 | { 10 | runtime: 'automatic', 11 | }, 12 | ], 13 | ], 14 | babelrc: false, 15 | configFile: false, 16 | }); 17 | -------------------------------------------------------------------------------- /dc-fe-damage-index/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return { 9 | code: 'module.exports = {};', 10 | }; 11 | }, 12 | getCacheKey() { 13 | // The output is always the same. 14 | return 'cssTransform'; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /dc-fe-damage-index/config/jest/globalSetup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | // use UTC timezone to not break tests when you run them on 3 | // an environemnt with a different timezone 4 | process.env.TZ = 'UTC'; 5 | }; 6 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/App.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | height: 100%; 5 | padding: 12px 12px 120px 12px; 6 | } 7 | 8 | .content { 9 | height: 100%; 10 | } 11 | 12 | .content::-webkit-scrollbar { 13 | display: none; 14 | } 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/AppSettings.tsx: -------------------------------------------------------------------------------- 1 | const AppSettings = (): JSX.Element => { 2 | return
; 3 | }; 4 | AppSettings.defaultProps = { 5 | user: {}, 6 | company: {}, 7 | }; 8 | 9 | // Important: Do not change root component default export (AppSettings.js). Use it as container 10 | // for your App Settings. It's required to make build and zip scripts work as expected; 11 | export default AppSettings; 12 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/assets/last-point-marker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/base-tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/create-react-app/tsconfig.json", 3 | "compilerOptions": { 4 | "useDefineForClassFields": true, 5 | "noEmit": false, 6 | "noImplicitAny": false, 7 | "strictNullChecks": true, 8 | "target": "ES2020", 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Container/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | .emptyContainer { 7 | width: 100%; 8 | height: 100%; 9 | display: flex; 10 | align-items: center; 11 | justify-content: center; 12 | } 13 | 14 | .noDataText { 15 | font-weight: 400; 16 | font-size: 24px; 17 | line-height: 32px; 18 | color: var(--palette-primary-text-1); 19 | margin: 0; 20 | } 21 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/CurrentDI/Chart/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | display: flex; 4 | align-items: center; 5 | justify-content: center; 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/CurrentDI/index.module.css: -------------------------------------------------------------------------------- 1 | .title { 2 | font-weight: 400; 3 | font-size: 24px; 4 | line-height: 32px; 5 | color: var(--palette-primary-text-1); 6 | margin: 0; 7 | } 8 | 9 | .depthIcon { 10 | transform: rotate(0.25turn); 11 | } 12 | 13 | .depth { 14 | margin-left: -4px; 15 | margin-bottom: 12px; 16 | } 17 | 18 | .time { 19 | margin-bottom: 12px; 20 | } 21 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/DIChange/DIChangeValue/index.module.css: -------------------------------------------------------------------------------- 1 | .label { 2 | font-size: 12px; 3 | line-height: 16px; 4 | color: var(--palette-primary-text-7); 5 | margin: 0; 6 | } 7 | 8 | .value { 9 | font-weight: 500; 10 | font-size: 24px; 11 | line-height: 32px; 12 | color: var(--palette-primary-text-1); 13 | margin: 0; 14 | } 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/Filters/WellsSelector/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | display: grid; 4 | grid-template-columns: auto min-content; 5 | align-items: self-end; 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/Filters/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: grid; 3 | grid-template-columns: repeat(2, minmax(150px, 223px)); 4 | gap: 24px; 5 | } 6 | 7 | .isMobile { 8 | gap: 8px; 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/Scale/styles.ts: -------------------------------------------------------------------------------- 1 | import { makeStyles } from '@material-ui/core'; 2 | 3 | import { Theme } from '@/shared/types'; 4 | 5 | export const useStyles = makeStyles(theme => ({ 6 | label: { 7 | color: theme.palette.primary.text6, 8 | }, 9 | wrapper: { 10 | display: 'flex', 11 | justifyContent: 'space-between', 12 | gap: '16px', 13 | marginTop: '8px', 14 | } 15 | })); 16 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/Settings/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: flex-end; 4 | } 5 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/Settings/index.tsx: -------------------------------------------------------------------------------- 1 | import { FullScreenToggle } from './FullScreenToggle'; 2 | import styles from './index.module.css'; 3 | 4 | export const Settings = () => { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | }; 11 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/WellInfo/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | margin-left: 48px; 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: flex-end; 6 | } 7 | 8 | .rig { 9 | font-weight: 500; 10 | font-size: 18px; 11 | color: var(--palette-primary-text-1); 12 | margin: 0 0 4px 0; 13 | } 14 | 15 | .well { 16 | font-weight: 400; 17 | font-size: 14px; 18 | color: var(--palette-primary-text-1); 19 | margin: 0; 20 | } 21 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/Header/WellInfo/index.tsx: -------------------------------------------------------------------------------- 1 | import { useGlobalStore } from '@/contexts/global'; 2 | 3 | import styles from './index.module.css'; 4 | 5 | export const WellInfo = () => { 6 | const store = useGlobalStore(); 7 | 8 | return ( 9 |
10 |

{store.rigName}

11 |

{store.currentWell.name}

12 |
13 | ); 14 | }; 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/FitInValue/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: flex-end; 4 | } 5 | 6 | .value { 7 | font-weight: 400; 8 | font-size: 25px; 9 | line-height: 16px; 10 | color: var(--palette-success-main); 11 | margin: 0 4px 0 0; 12 | } 13 | 14 | .warnValue { 15 | color: var(--palette-warning-main); 16 | } 17 | 18 | .dangerValue { 19 | color: var(--palette-error-main); 20 | } 21 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/RecommendedValues/index.module.css: -------------------------------------------------------------------------------- 1 | .values { 2 | font-weight: 400; 3 | font-size: 16px; 4 | line-height: 18px; 5 | color: var(--palette-primary-text-1); 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/Table/Header/index.module.css: -------------------------------------------------------------------------------- 1 | .headerTitle { 2 | font-weight: 400; 3 | font-size: 12px; 4 | line-height: 16px; 5 | margin: 0; 6 | color: var(--palette-primary-text-7); 7 | } 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/Table/Row/index.module.css: -------------------------------------------------------------------------------- 1 | .title { 2 | font-weight: 400; 3 | font-size: 12px; 4 | line-height: 16px; 5 | margin: 0; 6 | color: var(--palette-primary-text-1); 7 | } 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/Table/Row/index.tsx: -------------------------------------------------------------------------------- 1 | import { FC, memo } from 'react'; 2 | 3 | import styles from './index.module.css'; 4 | 5 | type Props = { 6 | title: string; 7 | }; 8 | 9 | export const TableRow: FC = memo(({ title, children }) => { 10 | return ( 11 | <> 12 |

{title}

13 | {children} 14 | 15 | ); 16 | }); 17 | 18 | TableRow.displayName = 'TableRow'; 19 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/Table/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: grid; 3 | grid-template-columns: repeat(4, auto); 4 | grid-auto-rows: auto; 5 | column-gap: 16px; 6 | row-gap: 24px; 7 | align-items: center; 8 | } 9 | 10 | .placeholder { 11 | display: flex; 12 | align-items: flex-end; 13 | color: rgb(55, 236, 176); 14 | } 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/Table/types.ts: -------------------------------------------------------------------------------- 1 | import { FitInParameters } from '@/entities/optimization-parameter'; 2 | 3 | export type CellProps = { 4 | fitInParameters: FitInParameters; 5 | }; 6 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/ViewSelector/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | gap: 8px; 4 | } 5 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/components/RecommendedParameters/index.module.css: -------------------------------------------------------------------------------- 1 | .header { 2 | display: flex; 3 | flex-wrap: wrap; 4 | justify-content: space-between; 5 | align-items: center; 6 | margin-bottom: 24px; 7 | gap: 8px; 8 | } 9 | 10 | .title { 11 | font-weight: 400; 12 | font-size: 16px; 13 | line-height: 22px; 14 | color: var(--palette-primary-text-1); 15 | margin: 0; 16 | } 17 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/di-chart/index.ts: -------------------------------------------------------------------------------- 1 | export { DIChartProvider } from './context'; 2 | export { useDIChartStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/di-chart/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { DIChartContext } from './context'; 4 | 5 | export const useDIChartStore = () => { 6 | return useContext(DIChartContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/di-list/index.ts: -------------------------------------------------------------------------------- 1 | export { DIListProvider } from './context'; 2 | export { useDIListStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/di-list/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { DIListContext } from './context'; 4 | 5 | export const useDIListStore = () => { 6 | return useContext(DIListContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/filters/index.ts: -------------------------------------------------------------------------------- 1 | export { FiltersProvider } from './context'; 2 | export { useFiltersStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/filters/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { FiltersContext } from './context'; 4 | 5 | export const useFiltersStore = () => { 6 | return useContext(FiltersContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/global/index.ts: -------------------------------------------------------------------------------- 1 | export { GlobalProvider } from './context'; 2 | export { useGlobalStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/global/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { GlobalContext } from './context'; 4 | 5 | export const useGlobalStore = () => { 6 | return useContext(GlobalContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/optimization-parameters/index.ts: -------------------------------------------------------------------------------- 1 | export { OPProvider } from './context'; 2 | export { useOPStore } from './use'; 3 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/contexts/optimization-parameters/use.ts: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | 3 | import { OPContext } from './context'; 4 | 5 | export const useOPStore = () => { 6 | return useContext(OPContext); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: string; 3 | export default content; 4 | } 5 | 6 | declare module '*.css' { 7 | const content: Record; 8 | export default content; 9 | } 10 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/entities/asset/__tests__/helpers.test.ts: -------------------------------------------------------------------------------- 1 | import { removeCurrentAsset } from '../index'; 2 | 3 | describe('removeCurrentAsset function', () => { 4 | it('should remove current asset from list', () => { 5 | expect(removeCurrentAsset([1, 2, 3], 2)).toEqual([1, 3]); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/entities/asset/helpers.ts: -------------------------------------------------------------------------------- 1 | import { AssetId } from './index'; 2 | 3 | export const removeCurrentAsset = (assetIds: AssetId[], currentAssetId: number): AssetId[] => { 4 | return assetIds.filter(id => id !== currentAssetId); 5 | }; 6 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/entities/asset/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helpers'; 2 | 3 | export type AssetId = number; 4 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/entities/bha/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helpers'; 2 | 3 | export type BHA = { 4 | id: string; 5 | name: string; 6 | timestamp: number; 7 | }; 8 | 9 | export type BHAOption = { 10 | value: string; 11 | label: string; 12 | }; 13 | 14 | export type BHAsMap = Map; 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/entities/well/index.ts: -------------------------------------------------------------------------------- 1 | import { AssetId } from '@/entities/asset'; 2 | 3 | export * from './helpers'; 4 | 5 | export type Well = { 6 | assetId: AssetId; 7 | name: string; 8 | }; 9 | 10 | export type WellOption = { 11 | value: number; 12 | label: string; 13 | suffix?: string; 14 | }; 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App'; 2 | import AppSettings from './AppSettings'; 3 | 4 | export default { 5 | component: App, 6 | settings: AppSettings, 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/repositories/bhas/__tests__/parser.test.ts: -------------------------------------------------------------------------------- 1 | import { parseBHAsFromJson } from '../parser'; 2 | import { mockedBHAJson, mockedBHAs } from '../../../mocks/bha'; 3 | 4 | it('should parse BHAs from json', () => { 5 | expect(parseBHAsFromJson(mockedBHAJson)).toEqual(mockedBHAs); 6 | }); 7 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/repositories/bhas/parser.ts: -------------------------------------------------------------------------------- 1 | import { BHA } from '@/entities/bha'; 2 | 3 | const parseBHAFromJson = (obj: any): BHA => { 4 | return { 5 | id: obj._id, 6 | name: obj._id, 7 | timestamp: obj.timestamp, 8 | }; 9 | }; 10 | 11 | export const parseBHAsFromJson = (list: any[]): BHA[] => { 12 | return list.map(item => parseBHAFromJson(item)); 13 | }; 14 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/repositories/damage-indexes/__tests__/parser.test.ts: -------------------------------------------------------------------------------- 1 | import { parseDIListFromJSON } from '../parser'; 2 | import { mockedDiListJson, mockedDiList } from '../../../mocks/di'; 3 | 4 | it('should parse list if DIs from json', () => { 5 | expect(parseDIListFromJSON(mockedDiListJson)).toEqual(mockedDiList); 6 | }); 7 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/repositories/wells/parser.ts: -------------------------------------------------------------------------------- 1 | import { Well } from '@/entities/well'; 2 | import { AssetId } from '@/entities/asset'; 3 | 4 | export const parseWellFromJson = (obj: any): Well => { 5 | return { 6 | assetId: obj.asset_id, 7 | name: obj._id, 8 | }; 9 | }; 10 | 11 | export const parseAssetIdsFormJson = (json: any): AssetId[] => { 12 | return json.data.map(item => item.attributes.asset_id); 13 | }; 14 | -------------------------------------------------------------------------------- /dc-fe-damage-index/src/shared/components/MultipleSelector/types.ts: -------------------------------------------------------------------------------- 1 | export type Option = { 2 | value: Value; 3 | label: string; 4 | suffix?: string; 5 | }; 6 | 7 | export type DropdownFilterProps = { 8 | label: string; 9 | disabled?: boolean; 10 | filterKey: string; 11 | options: Option[]; 12 | value: Value[]; 13 | handleChange: (value: Value[]) => void; 14 | }; 15 | -------------------------------------------------------------------------------- /dc-fe-damage-index/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./src/base-tsconfig.json", 3 | "compilerOptions": { 4 | "noEmit": true, 5 | "baseUrl": "." 6 | }, 7 | "include": [ 8 | "src" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@commitlint/config-conventional"], 3 | "rules": { 4 | "subject-case": [0] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.env.sample: -------------------------------------------------------------------------------- 1 | CORVA_API_ENV=qa 2 | HOST=app.local.corva.ai 3 | PORT=8080 4 | AUTH_TOKEN=*** 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners are the default owners for everything in 2 | # the repo. They're automatically added as reviwers 3 | # to each pull request 4 | * @corva-ai/front-end-completions 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.github/workflows/code-checks.yml: -------------------------------------------------------------------------------- 1 | name: Code Checks 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - develop 7 | 8 | jobs: 9 | Lint-and-Test: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: 'Lint and test' 13 | uses: corva-ai/gh-actions/shared-dc-workflows/lint-and-test@develop 14 | with: 15 | npm-token: ${{ secrets.CORVA_NPM_TOKEN }} 16 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | echo "Validating commit message..." 5 | ./node_modules/.bin/commitlint --edit $1 6 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | ./node_modules/.bin/lint-staged 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.nvmrc: -------------------------------------------------------------------------------- 1 | 16.* 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "singleQuote": true, 4 | "trailingComma": "es5", 5 | "arrowParens": "avoid", 6 | "printWidth": 100 7 | } -------------------------------------------------------------------------------- /dc-fe-treatment-plot/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env"] 3 | } 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | module.exports = babelJest.createTransformer({ 6 | presets: [ 7 | [ 8 | require.resolve('babel-preset-react-app'), 9 | { 10 | runtime: 'automatic', 11 | }, 12 | ], 13 | ], 14 | babelrc: false, 15 | configFile: false, 16 | }); 17 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return { 9 | code: 'module.exports = {};', 10 | }; 11 | }, 12 | getCacheKey() { 13 | // The output is always the same. 14 | return 'cssTransform'; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/config/jest/globalSetup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | // use UTC timezone to not break tests when you run them on 3 | // an environemnt with a different timezone 4 | process.env.TZ = 'UTC'; 5 | }; 6 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/__mocks__/mockContextProps.js: -------------------------------------------------------------------------------- 1 | export const mockLayoutContextProps = { 2 | initialLayout: { 3 | isRealtimeSidebarOpen: true, 4 | isFilterSidebarOpen: true, 5 | isMobileSize: false, 6 | isTabletSize: false, 7 | rtSidebarHorizontalHeigh: 46, 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/assets/icon-info.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/CSVExportDialog/index.js: -------------------------------------------------------------------------------- 1 | import CSVExportDialog from './CSVExportDialog'; 2 | 3 | export default CSVExportDialog; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/Chart/index.js: -------------------------------------------------------------------------------- 1 | import Chart from './Chart'; 2 | 3 | export default Chart; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/ChartSlider/index.ts: -------------------------------------------------------------------------------- 1 | import ChartSlider from './ChartSlider'; 2 | 3 | export default ChartSlider; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/ChartSlider/types.ts: -------------------------------------------------------------------------------- 1 | export type TimeRange = { 2 | startValue: number; 3 | endValue: number; 4 | }; 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/ChartStageNames/index.ts: -------------------------------------------------------------------------------- 1 | import ChartStageNames from './ChartStageNames'; 2 | 3 | export default ChartStageNames; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/ChartStageNames/types.ts: -------------------------------------------------------------------------------- 1 | export type StageCaptionInfo = { 2 | firstTimestamp: number; 3 | lastTimestamp: number; 4 | stageNumber?: number; 5 | assetName: string; 6 | }; 7 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/Content/index.js: -------------------------------------------------------------------------------- 1 | import Content from './Content'; 2 | 3 | export default Content; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/CursorPosition/CursorPositionContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const CursorPositionContext = createContext(null); 4 | export default CursorPositionContext; 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/CursorPosition/index.js: -------------------------------------------------------------------------------- 1 | export { default as CursorPositionContext } from './CursorPositionContext'; 2 | export { default as CursorPositionProvider } from './CursorPositionProvider'; 3 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/DetailDataLoader/index.js: -------------------------------------------------------------------------------- 1 | import DetailDataLoader from './DetailDataLoader'; 2 | 3 | export default DetailDataLoader; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/AddFeedButton/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AddFeedButtonContainer'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedCreationProvider/index.js: -------------------------------------------------------------------------------- 1 | export { default, useFeedCreationProvider } from './FeedCreationProvider'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedGroup/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedGroup'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedItem/AppAnnotationHoc/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppAnnotationHoc'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedItem/UserMention/constants.js: -------------------------------------------------------------------------------- 1 | export const USER_MARKUP = '@[user:__id__|__display__]'; 2 | 3 | export const PLACEHOLDERS = { 4 | id: '__id__', 5 | display: '__display__', 6 | }; 7 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedItem/feedItemTypes/AppAnnotationFeedItem/style.css: -------------------------------------------------------------------------------- 1 | .appAnnotationFeedItem { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | 6 | .appAnnotationFeedItemApp { 7 | width: 600px; 8 | height: 500px; 9 | position: relative; 10 | margin-right: 15px; 11 | display: inline-block; 12 | } 13 | 14 | .appAnnotationFeedItemAttachment { 15 | padding-top: 10px; 16 | width: 200px; 17 | } -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedsCreationHoverLine/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedsCreationHoverLine'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/FeedsDataSection/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FeedsDataSectionContainer'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/LazyListRenderer/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LazyListRenderer'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/components/NewFeedModal/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './NewFeedModalContainer'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/index.js: -------------------------------------------------------------------------------- 1 | import FeedBar from './FeedBar'; 2 | 3 | export default FeedBar; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FeedBar/utils/forceFileDownload.js: -------------------------------------------------------------------------------- 1 | export const forceFileDownload = async (fileName, attachmentUrl) => { 2 | const link = document.createElement('a'); 3 | link.href = attachmentUrl; 4 | document.body.appendChild(link); 5 | link.click(); 6 | document.body.removeChild(link); 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FilterBox/CategoryChip/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CategoryChip'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FilterBox/CategorySelect/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CategorySelect'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FilterBox/CategorySelectPopover/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CategorySelectPopover'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FilterBox/CustomTimePicker/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CustomTimePicker'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/FilterSidebar/index.js: -------------------------------------------------------------------------------- 1 | import FilterSidebar from './FilterSidebar'; 2 | 3 | export default FilterSidebar; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/LastDataUpdate/index.js: -------------------------------------------------------------------------------- 1 | import LastDataUpdate from './LastDataUpdate'; 2 | 3 | export default LastDataUpdate; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/Legends/index.js: -------------------------------------------------------------------------------- 1 | import Legends from './Legends'; 2 | 3 | export default Legends; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/LiveBadge/index.js: -------------------------------------------------------------------------------- 1 | import LiveBadge from './LiveBadge'; 2 | 3 | export default LiveBadge; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/PadOffsets/index.js: -------------------------------------------------------------------------------- 1 | export { default as PadOffsetsPicker } from './PadOffsetsPicker'; 2 | export { default as OffsetAssetChip } from './OffsetAssetChip'; 3 | export { default as OffsetAssetsListExpander } from './OffsetAssetsListExpander'; 4 | export { default as StagesSelector } from './StagesSelector'; 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/Settings/SettingsPopover/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SettingsPopover'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/Settings/SideSetting/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SideSetting'; 2 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/Settings/index.js: -------------------------------------------------------------------------------- 1 | import Settings from './Settings'; 2 | 3 | export default Settings; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/components/StreamboxStatus/index.ts: -------------------------------------------------------------------------------- 1 | import StreamboxStatus from './StreamboxStatus'; 2 | 3 | export default StreamboxStatus; 4 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/context/FeedContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | const FeedContext = createContext(); 4 | 5 | export default FeedContext; 6 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/effects/useAppWells.js: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react'; 2 | import { isEmpty } from 'lodash'; 3 | 4 | export function useAppWells(well, wells) { 5 | const wellsData = useMemo(() => { 6 | if (well) { 7 | return [well]; 8 | } 9 | if (isEmpty(wells)) { 10 | return []; 11 | } 12 | return wells; 13 | }, [well, wells]); 14 | 15 | return wellsData; 16 | } 17 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App'; 2 | import AppSettings from './AppSettings'; 3 | 4 | export default { 5 | component: App, 6 | settings: AppSettings, 7 | }; 8 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/types/Data.ts: -------------------------------------------------------------------------------- 1 | export type WitsData = { 2 | wellhead_pressure: number; 3 | [key: string]: number; 4 | timestamp: number; 5 | }; 6 | 7 | export type GroupedWitsData = { 8 | asset_id: number; 9 | asset_name: string; 10 | stage_number: number; 11 | wits: WitsData[]; 12 | }; 13 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/types/User.ts: -------------------------------------------------------------------------------- 1 | export type User = { 2 | company_id: number; 3 | id: number; 4 | first_name: string; 5 | last_name: string; 6 | company: { 7 | name: string; 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/utils/appId.ts: -------------------------------------------------------------------------------- 1 | const QA_APP_ID = 23120; 2 | 3 | // for localhost appId is 1, so we need to mock QA appId value 4 | export default appId => (appId === 1 ? QA_APP_ID : appId); 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/utils/isDataEmpty.ts: -------------------------------------------------------------------------------- 1 | import { isEmpty } from 'lodash'; 2 | import { GroupedWitsData } from '@/types/Data'; 3 | 4 | export const isAppDataEmpty = (data: GroupedWitsData[], isAssetViewer: boolean): boolean => { 5 | return isEmpty(isAssetViewer ? data || data[0]?.wits : data); 6 | }; 7 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/src/utils/time.js: -------------------------------------------------------------------------------- 1 | const isValueInRange = ({ firstTimestamp, lastTimestamp }, unixValue) => 2 | unixValue >= firstTimestamp && unixValue <= lastTimestamp; 3 | 4 | export { isValueInRange }; 5 | -------------------------------------------------------------------------------- /dc-fe-treatment-plot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/create-react-app/tsconfig.json", 3 | "compilerOptions": { 4 | "jsx": "react-jsx", 5 | "noEmit": false, 6 | "strict": false, 7 | "sourceMap": true, 8 | "baseUrl": ".", 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exxon_bowtie_app/.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@commitlint/config-conventional"], 3 | "rules": { 4 | "subject-case": [0] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exxon_bowtie_app/.github/workflows/code-checks.yml: -------------------------------------------------------------------------------- 1 | name: Code Checks 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - develop 7 | 8 | jobs: 9 | Lint-and-Test: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: 'Lint and test' 13 | uses: corva-ai/gh-actions/shared-dc-workflows/lint-and-test@develop 14 | with: 15 | npm-token: ${{ secrets.CORVA_NPM_TOKEN }} 16 | -------------------------------------------------------------------------------- /exxon_bowtie_app/.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | echo "Validating commit message..." 5 | ./node_modules/.bin/commitlint --edit $1 6 | -------------------------------------------------------------------------------- /exxon_bowtie_app/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | ./node_modules/.bin/lint-staged 5 | -------------------------------------------------------------------------------- /exxon_bowtie_app/.nvmrc: -------------------------------------------------------------------------------- 1 | 18.13.0 2 | -------------------------------------------------------------------------------- /exxon_bowtie_app/.prettierrc: -------------------------------------------------------------------------------- 1 | "@corva/eslint-config-browser/prettier" 2 | -------------------------------------------------------------------------------- /exxon_bowtie_app/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners are the default owners for everything in 2 | # the repo. They're automatically added as reviewers 3 | # to each pull request 4 | 5 | * @corva-ai/front-end-dev-center-apps 6 | -------------------------------------------------------------------------------- /exxon_bowtie_app/config/jest/babelTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | const babelJest = require('babel-jest').default; 4 | 5 | module.exports = babelJest.createTransformer({ 6 | presets: [ 7 | [ 8 | require.resolve('babel-preset-react-app'), 9 | { 10 | runtime: 'automatic', 11 | }, 12 | ], 13 | ], 14 | babelrc: false, 15 | configFile: false, 16 | }); 17 | -------------------------------------------------------------------------------- /exxon_bowtie_app/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return { 9 | code: 'module.exports = {};', 10 | }; 11 | }, 12 | getCacheKey() { 13 | // The output is always the same. 14 | return 'cssTransform'; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /exxon_bowtie_app/config/jest/globalSetup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | // use UTC timezone to not break tests when you run them on 3 | // an environemnt with a different timezone 4 | process.env.TZ = 'UTC'; 5 | }; 6 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/__tests__/components/RigSelector.spec.tsx: -------------------------------------------------------------------------------- 1 | import { render } from '@testing-library/react'; 2 | 3 | import { RigSelector } from '@/components/RigSelector'; 4 | 5 | describe('RigSelector component', () => { 6 | test('renders RigSelector correctly', () => { 7 | const { getByText } = render(); 8 | expect(getByText('Rig')).toBeInTheDocument(); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/__tests__/layout/Main.spec.tsx: -------------------------------------------------------------------------------- 1 | import { render } from '@testing-library/react'; 2 | 3 | import { Main } from '@/layout/Main'; 4 | 5 | describe('Main component', () => { 6 | const mockTabsProps = { 7 | tabIndex: 0, 8 | currentUser: { company_id: 1 }, 9 | assetId: 0, 10 | }; 11 | 12 | it('renders without crashing', () => { 13 | render(
); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/assets/empty_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/exxon_bowtie_app/src/assets/empty_state.png -------------------------------------------------------------------------------- /exxon_bowtie_app/src/assets/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/assets/range.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/assets/selected_day.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/assets/today.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/assets/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/topdev0929/corva-react-typescript/ea83fb264ea667ef52cb058e8eeae7b9d49f164b/exxon_bowtie_app/src/assets/user.png -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/AsyncPhoto/index.module.css: -------------------------------------------------------------------------------- 1 | .photo { 2 | max-height: 132px; 3 | max-width: 100%; 4 | object-fit: contain; 5 | } 6 | 7 | .loading { 8 | width: 100%; 9 | height: 132px; 10 | display: flex; 11 | justify-content: center; 12 | align-items: center; 13 | } 14 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/AttachFile/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | } 4 | 5 | .fileInput { 6 | display: none; 7 | } 8 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/Chip/styles.ts: -------------------------------------------------------------------------------- 1 | export const styles = { 2 | icon: { 3 | width: '16px', 4 | height: '16px', 5 | }, 6 | iconLabel: { 7 | fontSize: '14px', 8 | lineHeight: '19.68px', 9 | display: 'flex', 10 | alignItems: 'center', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/Comment/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | margin-top: 16px; 4 | } 5 | 6 | .actions { 7 | display: flex; 8 | align-items: center; 9 | } 10 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/CommentPopover/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: calc(100% - 32px); 3 | max-width: 550px; 4 | } 5 | 6 | .actions { 7 | width: 100%; 8 | display: flex; 9 | justify-content: flex-end; 10 | gap: 16px; 11 | } 12 | 13 | .form { 14 | display: flex; 15 | flex-direction: column; 16 | width: 100%; 17 | } 18 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/DeleteDialog/index.module.css: -------------------------------------------------------------------------------- 1 | .actions { 2 | display: flex; 3 | align-items: center; 4 | justify-content: flex-end; 5 | gap: 16px; 6 | } 7 | 8 | .deleteText { 9 | color: var(--palette-primary-text-6); 10 | font-weight: 400; 11 | font-size: 16px; 12 | } 13 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/FilesPreview/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 100%; 3 | min-height: 52px; 4 | display: flex; 5 | flex-direction: column; 6 | gap: 8px; 7 | margin-top: 8px; 8 | } 9 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/components/common/Selectors/index.module.css: -------------------------------------------------------------------------------- 1 | .selectors { 2 | display: grid; 3 | grid-template-columns: 1fr 1fr; 4 | grid-template-rows: auto auto; 5 | gap: 16px; 6 | } 7 | 8 | @media screen and (max-width: 599px) { 9 | .selectors { 10 | grid-template-columns: 1fr; 11 | grid-template-rows: auto auto auto; 12 | } 13 | } 14 | 15 | .selector { 16 | width: 100%; 17 | min-width: 170px; 18 | } 19 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const DEFAULT_SETTINGS = { 2 | isExampleCheckboxChecked: false, 3 | }; 4 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: string; 3 | export default content; 4 | } 5 | 6 | declare module '*.png' { 7 | const content: string; 8 | export default content; 9 | } 10 | 11 | declare module '*.css' { 12 | const content: Record; 13 | export default content; 14 | } 15 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/entities/record/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helpers'; 2 | 3 | export enum RECORD_TYPE { 4 | TEXT, 5 | PPT, 6 | CSV, 7 | IMAGE, 8 | PDF, 9 | XLSX, 10 | DOCS, 11 | VIDEO, 12 | } 13 | 14 | export type Record = { 15 | id: string; 16 | datetime: string; 17 | name: string; 18 | ref: string; 19 | link?: string; 20 | }; 21 | 22 | export type Image = Record; 23 | export type RecordPayload = Omit; 24 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/entities/upload/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helpers'; 2 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App'; 2 | import AppSettings from './AppSettings'; 3 | 4 | export default { 5 | component: App, 6 | settings: AppSettings, 7 | }; 8 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/layout/Main/index.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | 3 | import { styles } from './styles'; 4 | 5 | import Tabs from '@/components/Tabs'; 6 | import { TTabs } from '@/types/global.type'; 7 | 8 | export const Main: FC = ({ tabIndex, assetId, currentUser }) => { 9 | return ( 10 |
11 | 12 |
13 | ); 14 | }; 15 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/layout/Main/styles.ts: -------------------------------------------------------------------------------- 1 | export const styles = { 2 | container: { 3 | margin: '16px 0', 4 | padding: '16px', 5 | border: '1px solid rgba(51, 51, 51, 1)', 6 | borderRadius: '8px', 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /exxon_bowtie_app/src/layout/SubHeader/styles.ts: -------------------------------------------------------------------------------- 1 | export const styles = { 2 | container: { 3 | display: 'flex', 4 | justifyContent: 'space-between', 5 | paddingTop: '8px', 6 | }, 7 | 8 | wrapper: { 9 | display: 'flex', 10 | justifyContent: 'space-between', 11 | alignItems: 'center', 12 | width: '100%', 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /exxon_bowtie_app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/create-react-app/tsconfig.json", 3 | "compilerOptions": { 4 | "noEmit": false, 5 | "strict": false, 6 | "sourceMap": true, 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | }, 11 | "exclude": ["node_modules", "config-overrides.js", "config/jest", "src/index.js"] 12 | } 13 | --------------------------------------------------------------------------------