{"version":3,"sources":["utils/ip_details.js","utils/event_handling.js","monitor/components/noModelComponent.js","components/image.js","components/videoContent.js","consume/components/alertForm.js","configure/mlmodel/addModel.js","utils/attribute_name_utils.js","assets/img/pricing-icon_professional.svg","metrics/components/DataQualityMetricsForm.js","metrics/components/ModelQualityMetricsForm.js","configure/components/testConnection.js","consume/components/EmailForm.js","consume/components/WebhookForm.js","consume/components/DatabricksForm.js","consume/components/awsLambdaForm.js","consume/components/gcpCloudFunctions.js","consume/components/AirflowForm.js","consume/components/AWSSagemakerForm.js","consume/components/KubeflowForm.js","consume/components/slackForm.js","consume/components/PagerdutyForm.js","components/customDefaultMetrics.js","consume/components/msTeamsForm.js","components/DeleteWarningModal.js","components/charts/singleArrowChart.js","configure/components/integration_forms/Azure/adl.js","configure/components/integration_forms/Azure/azure.js","configure/components/integration_forms/Azure/AzuredatabricksTable.js","configure/components/integration_forms/AWS/s3.js","configure/components/integration_forms/AWS/AWS_redshift.js","configure/components/integration_forms/GCS/big_query.js","configure/components/integration_forms/Snowflake/snowflake_integration_form.js","configure/components/integration_forms/postgres/postgres.js","configure/components/integration_forms/MYSQL/mysql_form.js","configure/components/integration_forms/Azure/azure_synapse_ds.js","configure/components/integration_forms/Azure/azureSQL.js","configure/components/integration_forms/PowerBi/PowerBi.js","configure/components/integration_forms/GCS/gcp_sql.js","configure/components/integration_forms/GCS/gcs.js","configure/components/integration.js","monitor/components/statsForModelABCompareView.js","monitor/components/statsAttributeName.js","monitor/components/monitorStatsComponent.js","utils/constant.js","components/loadAction.js","components/basicPortlet.js","redux/actionTypes.js","utils/common_utils.js","assets/img/logo_qualdo.svg","assets/img/opps_img_human.svg","assets/img/oops_img_globe.svg","assets/img/icon_google.svg","assets/img/icons/icon_data-engineers.svg","assets/img/icons/icon_data-stewards.svg","assets/img/icons/icon_data-scientists.svg","assets/img/icons/icon_data-devops.svg","assets/img/logo_qualdo-light.svg","assets/img/icons/icon_data-quality.svg","assets/img/icons/icon_url-link.svg","assets/img/icons/icon_notification.svg","assets/img/icons/icon_add-data.svg","assets/img/brand-logo_azure-blob-storage.png","assets/img/icons/icon_pipeline-tigger.svg","assets/img/icons/icon_success.svg","assets/img/incremental.svg","assets/img/line-time-series-default.png","assets/img/icons/icon_data-alert.svg","assets/img/icons/icon_thankyou-email.svg","assets/img/icon-graph.png","assets/img/d3-area-chart_info.png","assets/img/d3-area-chart_success.png","assets/img/d3-area-chart_warning.png","assets/img/d3-area-chart_danger.png","assets/img/d3-area-chart_purple.png","assets/img/d3-area-chart_gray.png","assets/img/d3-area-chart_orange.png","assets/img/d3-area-chart_brown.png","assets/img/icons/icon_internet-broken.svg","assets/img/secure_data.svg","assets/img/credit-card_visa.svg","assets/img/credit-card_master.svg","assets/img/credit-card_amex.svg","assets/img/credit-card_discover.svg","assets/img/credit-card_jcb.svg","assets/img/credit-card_paypal.svg","components/editComponents.js","components/viewContent.js","components/EditActions.js","components/teamEditAction.js","components/tableEdit.js","components/buttonActions.js","components/tableButtons.js","components/imageComponent.js","components/bootstrapTable.js","assets/img/pricing-icon_free.svg","assets/img/pricing-icon_starter.svg","assets/img/plan-icon_starter.svg","assets/img/illustration_payment-success.svg","assets/img/loader.gif","assets/img/spinner.gif","assets/img/illustration_upgrade-rocket.svg","assets/img/illustration_exceed-model-limit.svg","assets/img/icon_monitor.svg","assets/img/icon_configure.svg","assets/img/user_profile.png","assets/img/icons/icon_empty-data.svg","assets/img/icons/icon_unique-data.svg","assets/img/icons/icon_duplicate-data.svg","assets/img/icons/icon_error-data.svg","assets/img/icon_arrow-down_red.svg","assets/img/icon_arrow-up_green.svg","assets/img/icons/icon_arrow-right.svg","assets/img/icons/icon_check-green.svg","assets/img/icons/icon_model-cubes.svg","assets/img/icons/icon_filter.svg","assets/img/icons/icon_cross-light.svg","assets/img/icons/icon_search-placeholder.svg","assets/img/icons/icon_info-circle.svg","assets/img/icons/icon_layer-partition.svg","assets/img/icons/icon_attribute.svg","assets/img/icons/icon_datasource.svg","assets/img/icons/icon_dataset.svg","assets/img/icons/icon_environment.svg","assets/img/icons/icon_exclamation-gray.svg","monitor/components/noErrorPreview.js","assets/img/icons/icon_pbi-configure.svg","assets/img/icons/icon_pbi-configure-success.svg","assets/img/icons/icon_powerbi-dark.svg","assets/img/managed_service_logos/logo_qualdo-drx.svg","assets/img/managed_service_logos/logo_qualdo-drx-light.svg","assets/img/managed_service_logos/logo_qualdo-mqx.svg","assets/img/managed_service_logos/logo_qualdo-mqx-light.svg","assets/img/managed_service_logos/logo_qualdo-bix.svg","assets/img/managed_service_logos/logo_qualdo-bix-light.svg","assets/img/icons/gcp_brandmark.svg","mixpanel.js","assets/img/icons/aws_brandmark.svg","assets/img/icons/azure_brandmark.svg","assets/img/icons/icon_timer-blue.svg","assets/img/icons/icon_clipboard-check.svg","assets/img/icons/icon_exclamation-octagon.svg","assets/img/icons/icon_bullseye.svg","assets/img/icons/icon_stopwatch.svg","monitor/components/monitorNoResult.js","charts/browser_utils.js","charts/index.js","components/chartBody.js","redux/reducers/dataModule.js","redux/reducers/monitorModule.js","redux/reducers/index.js","redux/store.js","components/mediaKind.js","utils/User_handling.js","monitor/components/chartFilterHeader.js","components/banner.js","components/copyrights.js","login/login_initial_steps.js","login/components/login.js","components/error_500.js","login/index.js","signup/components/banner.js","signup/components/signup.js","signup/components/team.js","signup/components/google.js","signup/components/email.js","signup/index.js","components/warningMessageHeader.js","components/help.js","components/offlineComponent.js","components/navigationHeader.js","components/breadCrumb.js","home/index.js","reset_password/components/reset_password.js","reset_password/index.js","set_password/components/set_password.js","set_password/index.js","set_password/components/initiateSetPassword.js","configure/components/urlWidget.js","configure/mlmodel/environment.js","configure/dataSources/dsEnvironment.js","configure/dataSources/addDataSources.js","components/datasetButton.js","components/datasetErrorComponent.js","components/refreshesTable.js","configure/mlmodel/configureABTest.js","components/tableCellButton.js","configure/mlmodel/modelABEditActions.js","configure/mlmodel/modelABEdit.js","utils/dataFetch.js","utils/monitorDataFetch.js","configure/index.js","components/defaultMetrics.js","components/card.js","components/cardGroup.js","components/consistencyMetrics.js","metrics/dqMetrics.js","metrics/mlMetrics.js","metrics/index.js","components/customTreeSelect.js","monitor/components/filter_common_utils.js","monitor/components/customTreeFilter.js","utils/monitorEventHandling.js","monitor/dqErrorFullScreen.js","monitor/components/followComponent.js","monitor/components/thumbnailChartList.js","monitor/components/customSelect.js","components/tableCellComponents/attributeNameComp.js","monitor/dqListView.js","components/enableConsistency.js","components/monitorPortlet.js","monitor/components/chartGrid.js","monitor/components/dq_err_grid.js","monitor/dqError.js","monitor/dqGridView.js","monitor/monitorDQTabs.js","monitor/components/customSelectNestedCheckbox.js","monitor/dqpListView.js","monitor/components/advanced_filter_model.js","monitor/components/monitorChartGroup.js","monitor/components/modelPerformanceGrid.js","monitor/modelPerformance.js","monitor/components/customListInCell.js","monitor/MPListViewFullScreen.js","monitor/mpListView.js","monitor/components/adv_filter_mp_compare_view.js","monitor/components/mpCVHorizontalSections.js","monitor/components/mpCompareViewChartGroup.js","monitor/MPCompareViewFullScreen.js","components/tableCellComponents/abModelName.js","components/tableCellComponents/borderedSummary.js","monitor/components/modelABSummaryList.js","monitor/components/modelABThumbnailChartList.js","monitor/modelErrListFullScreen.js","monitor/mpCompareView.js","monitor/monitorMPTabs.js","monitor/components/grid.js","monitor/mlError.js","monitor/components/monitorButton.js","monitor/modelErrorListView.js","monitor/monitorERTabs.js","monitor/dqpErrorFullScreen.js","monitor/components/dqp_grid.js","monitor/dqPerformance.js","monitor/dqpGridView.js","monitor/monitorDQPTabs.js","monitor/index.js","consume/Notification.js","consume/PipelineTrigger.js","consume/components/modelAlertTab.js","consume/components/dqAlertTab.js","consume/Alert.js","consume/index.js","components/simpleBasicPortlet.js","setup/index.js","settings/components/account.js","components/planComponents/upgradeComponent.js","settings/components/planHeaderInfo.js","settings/components/planChangeRequest.js","components/paymentComponents/planChangeNotAllowed.js","settings/components/plan_and_usage.js","notifications/components/viewNotification.js","notifications/components/notificationLoader.js","notifications/index.js","settings/components/TagsInput.js","settings/components/preferences.js","settings/components/teamMate.js","settings/components/security.js","settings/components/addCardComponent.js","settings/components/paymentCardsList.js","settings/components/editCardComponent.js","settings/components/billing.js","settings/components/changePassword.js","settings/index.js","discover/discoverConstants.js","discover/relationshipChartView.js","discover/relationshipListView.js","components/cardHelpContent.js","discover/metricsCards.js","discover/summary.js","discover/discoverResults.js","discover/discoverForm.js","discover/index.js","components/quick_start.js","components/video_help.js","components/privacyPolicy.js","components/freeTrialAgreement.js","components/cookiePolicy.js","components/progressStatus.js","profile/components/noDataComponent.js","profile/data/dq_render_utils.js","profile/data/profileCardData.js","utils/dataProfileEventHandling.js","components/customTreeSelectDataset.js","components/customTreeSelectAttribute.js","profile/data/treeFilter.js","profile/data/relationship.js","profile/data/completeness.js","profile/components/customSelect.js","profile/components/filterOptions.js","profile/data/uniqueness.js","profile/data/timeliness.js","profile/data/accuracy.js","profile/data/conformity.js","components/emptyResponse.js","profile/data/attribute.js","profile/data/standardisation.js","profile/data/index.js","profile/components/mlFilterOptions.js","profile/components/filter.js","profile/ml/ml_model.js","utils/modelFetch.js","profile/ml/index.js","components/planComponents/qualdoPlanComponent.js","components/paymentComponents/payment_success.js","components/paymentComponents/planDowngradeModal.js","components/choose_plan.js","components/paymentComponents/orderRow.js","components/paymentComponents/orderDetails.js","components/paymentComponents/subscribedPlan.js","components/paymentComponents/billingCycle.js","components/paymentComponents/paymentSectionHeader.js","components/paymentComponents/paymentDetails.js","utils/billingAddressConstant.js","components/paymentComponents/billingAddress.js","components/paymentComponents/planChangeNotNeeded.js","components/paymentComponents/paymentOptions.js","components/payment.js","settings/components/banner.js","settings/components/userDisabledMessage.js","components/unsubscribe.js","pbi/pbihandling.js","pbi/quick_start.js","pbi/pbisetup.js","pbi/pbimapping.js","pbi/pbireport.js","pbi/pbierrors.js","msi_login/index.js","login/google_login_loader.js","serviceWorker.js","login/components/forgotPassword.js","index.js","redux/actions.js"],"names":["APP_BASE_URL","window","location","hostname","iam_ip","iam_google_signup","ui_service_ip","console_ip","powerbi_service_ip","process","REACT_APP_POWERBI_BASE_URL","validateForm","RegExp","errors","valid","Object","values","forEach","val","length","call_post_api","ip","end_point","data","token","localStorage","getItem","user_id","team_id","undefined","item","JSON","parse","now","Date","getTime","expiry","checkExpiryPowerBI","removeLocalStorageKeys","value","post_api_call_cnt","protocol","getProtocol","reqEndPoint","getCompleteEndpoint","fetch","method","body","stringify","headers","then","response","json","responseData","post_api_call_complete_cnt","catch","error","console","storeCachedData","key","sessionStorage","setItem","getCachedData","maxAge","cachedData","cachedDetails","cachedObj","storageTime","currentTime","diffInMinutes","cachedIntegrationData","integrations","tenant_id","reducedIntegrations","map","x","integrationKey","call_get_api","setState","errorOccurred","code","datasets","element","integrationId","cacheDatasets","cacheEnvironmentData","environments","tenantId","integrationID","datasetKey","reducedDatasets","cacheMlModels","mlModels","mlModelKey","getCachedModels","modelObj","getCachedDatasets","datasetObj","getCachedIntegrations","integrationObj","getCachedEnvironments","environmentObj","call_update_api","call_delete_api","call_file_post_api","form_data","axios","post","PROTOCOL","get_api_call_cnt","get_api_call_complete_cnt","session","removeItem","postRecentSearch","searchText","res","updateFollowAttributeStatus","follow_attributes","postUIlogs","info","postError","toString","construct_integration_data","integration_details","default_error_storage","integrationDetailErrStorage","trim","integration_name","getTrimmedData","env_id","integration_type","data_store_type","integration_config","auth_config","createdTime","String","isFirstIntegration","POWER_BI_CONNECTOR","countErrors","count","getErrorMsg","errorText","statusCode","dataRunStatuses","includes","getDatasourceDiscovery","datasetProcessing","lastDiscoveryTime","status_text","NO_DATA_SET_FOUND_TEXT","inCompleteFilteredValues","filter","run_status_code","DEFAULT_METRICS_RUN_FAILURE","skipMcfFFilteredValues","MCF_SKIPPED","inProgressFilteredValues","RUN_PROGRESS_STATES","completedFilteredValues","RUN_SUCCESS","getModelProcessStatus","modelCreatedTime","modelCreatedAt","last_profiled_time","model_updates_table","inputData","final_op","i","row","d","getLastDiscovery","push","lastProcessingTimeList","max_run_end_time","date","maxDate","getProgressPercentage","this","props","integration_id","progressStatus","datasource_updates_table","datasource_updates","refreshInfoFinal","refreshInfo","total","prepare_model_ab_data_for_a_config","ab_config","model_info_map","model_1","model_data_1","model_2","model_data_2","model_3","model_data_3","IS_NONE_CHECK","ab_data","model_data","row_data","ml_model_id","abAuthor","abCreatedTime","model_ab_id","names","modelVersions","datasourceNames","envNames","has3Models","viewData","get_model_ab_row_data","prepare_model_ab_table_data","MODEL_AB_TABLE_HEADERS","customMetricsProcessUpdates","customMetricsInfo","normalizeChildDatasetName","status_value","integration_table_data_setup","input_data","mlTableDataSetup","finalOp","pipeline_table","pipeline_data","alert_table","alert_data","consume_group_table","consume_data","DQM_metric_setup","type","get_table_data","mas","masData","metrics","metricsDefinition","metricName","jobId","isTemplate","formula","get_data","card_data","cardName","construct_card_data","DQM_widget_setup","a","metric_type","promises","Promise","resolve","result","fill_table","metrics_details","table_data","getProfileMLData","teamId","firstIntegration","selectedSource","startDate","moment","subtract","format","endDate","utc","endOf","reqData","chartData","setRelationship","callProfileAPI","requestData","context","pageLoad","showToast","getProfileData","startOf","getLastDQProfilingTime","results","lastProfilingTime","isSuccessMessage","setModelPerformanceData","mlModel","title","chartInputData","chartDataCombinations","firstmlModelId","lastMonitorTime","perfResEndPoint","performanceResults","setSelectedModelData","setMonitorChartsForMlModel","models","firstModel","mlModelId","setAvailableModelsAndChartData","setPerformanceChartsForMlModel","setMonitorChartDataForIntegrations","allIntegrations","res_1","setChartData","setAvailableDataSets","getModelDatasets","model","modelDetails","model_details","model_data_id","raw_data","raw_data_id","test_data","test_data_id","features","model_info_details","jsonObject","uniqueSet","Set","Array","from","getPaymentDetailsTableData","cardData","allPaymentDetails","card","cardDetail","details","requiredCardData","cardholder_name","is_default","payment_detail_id","card_type","expiration_month","expiration_year","last_4","getBillingAddressDetails","addressDetails","reqAddressDetails","billingAddress","billing_address_id","getBillingHistoryTableData","billingData","billingTableRows","billingTableData","index","billing","rowData","billingDetail","order_id","plan_title","created_time","currency_symbol","amount","addOnDetail","next_payment_date","getApi","api_name","attributes","state","data_set","consume_group","notificationResponse","pipelineResponse","notificationOptions","pipeline_trigger","pipelineOptions","alerts","alertsDataDq","alertsDataMl","notification_title","pipeline_title","setMlMonitor","bind","mlRes","setMlModelPerformance","setMonitor","cachedIntegrations","firstCachedIntegrationId","fetchProfileData","fetchLastProfilingTime","setIntegrationDetails","fetchProfileMLData","ml_integrations","req_datasets","filter_data","chart_input_data","metrics_association","dqMetrics","mlMetrics","consistencyEndPoint","isConsistencyEnabled","is_consistency_enabled","enabledMetrics","endPoint","dqmData","dqm","mlmData","mlm","page","dqm_card_data","mlm_card_data","all_metric_details","dqmDataValue","dqmDataElement","j","curr_mas_id","mlDataValue","option_arr","environment","min_integrations","fetched_ab_data","model_ab_data","currModelABList","integrationsMap","integration","model_updates","int_arr","integration_option","updateStatus","accPlanDetails","plan_details","mlLimitExceed","ml_usage_exceeded","maxModel","max_ml_model_limit","planName","plan_name","dataLimitExceed","usage_exceeded","curr_sleep_time","sleepComponentLoad","sleepInterval","prevSleepInterval","sleepIntervalClass","sleep_time_val","currSession","sleepIntervalData","ml_model","mlDetails","mlData","change_request_exists","modelOptions","metrics_list","dataSetId","dataModule","selectedDataSetId","attributeID","selectedAttributeID","attributeName","selectedAttributeName","apiStatusCode","setApiResponse","paymentDetails","payment_details","billingHistory","billing_history","billing_address","auto_debit_status","allDetails","billingHistoryTableData","availableCards","autoDebit","disableAutoDebitToggle","billinginitalloader","cardGroupLoading","plans","qualdo_plans","setQualdoPlans","getPaymentDetailsEndPoint","planData","srcIsChoosePlan","planType","VALID_QUALDO_PLANS","qualdoPlanCycle","getQualdoPlanCycle","planChanged","isPlanChanged","showErrorMessage","QualdoPlanVersions","FREE","showDowngradePopup","available_cards","changePaymentPageDetails","customMetricEndPoint","customMetricDqmData","customMetricMlmData","datasetRefInfo","fetchLastRefreshOfDatasets","dataSrcInfo","storeDiscoverPageDataForDataSrc","getBrainTreeAuthToken","BRAIN_TREE_AUTH_TOKEN","setTimeFilter","Id","modelTitle","chartTitle","showMoreEndPoint","appliedFilters","distance","setSelectedFilterChartData","setDistanceFilter","event","compareMlCharts","setCompareChart","compareDqCharts","dataSet","formSubmit","preventDefault","name","target","getUTCFullYear","getUTCMonth","slice","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","metricData","FormData","metricsUpdated","get","selectedCheck","exMetricDetails","metrics_definition","mas_type","measures","metricId","closeModal","message","sourceDataset","targetDataSetId","requiresTarget","requiresTargetSelection","metricsId","metrics_id","isMetricsEdit","src_page","editProcess","responseHandler","job_id","emailFormData","emailConfigureData","getAll","create_data_to_post","is_pipeline_edit","pipeline_success_process","pipeline_error_process","pipeline_resp_handler","requires_pipeline_update","pipeline_trigger_id","ex_details","submitUsersPayment","paymentData","setPaymentStatus","showModal","disableSubmitBtn","failure_message","decrypt_data","decryptForLocalUsage","LOCAL_STORE_KEY","encrypt_data","encryptForLocalUsage","accountFeatures","handleClick","logout_data","powerbiip","postMixpanel","handleFileSubmit","formValid","errorCount","file","uploadClick","disableButton","integration_data","append","show","hideSubmitButton","successList","dangerList","classTitle","Number","handleDelete","deleteClose","disableDelete","deleteIp","preFetchType","view_details","metrics_data","consume_group_id","model_id","UpdateReduxStore","toLowerCase","handleDeleteForModelABConfig","deleteButtonDisabled","handleABDeleteInParent","prefetch","mlModelMapping","monitorModule","keys","setMLModel","addMLModelMapping","updateMetricStatus","toastMessage","handleFollowStatus","currentStatus","updateFollowStatus","newStatus","setTimeout","handleMetricFollow","ex_metric_details","activeStatus","active","showTemplatePopup","status_code","is_template","configuredCount","showConfigureConsistency","setShow","alertFormSubmit","alert_form_data","expressions","validData","gate_type","quality_gate","enableButton","expression","at","alert_conditional_op","alert_threshold_val","alert_metrics_options","alert_join_options","errorMsg","k","e","trigger","selectedOptions","consumeGroup","pipeline","triggerType","alertIdData","split","mechanismOptions","optionList","optionListType","compute_type","alertComputeType","attribute_name","tab","alertPeriod","dataSource","alertType","exDetails","alert_name","data_set_id","alert_type","alert_period","alert_id","handleSubmit","userDetails","adminEmail","msg","email","admin_email","setEmailPage","password","browserHistory","forgot_data","isRedirectToThankYou","tokenStatus","google_data","phone","company","qualdoPlan","closeTestConnection","test_integration_details","test_integration_data","submit_button","status_message","testConnection","disableFinishSetup","setEnvData","is_first_datasource","existingIntegrations","setup_update_data","setPage","set_env_data","env_name","env_data","form","reset","showButton","modelForm","formErrors","prediction","featurePrediction","featureResponse","isEmpty","checkErrorsInAddMLForm","trainingData","label","servingData","featuresServing","featureTraining","accuracy","modelDeployment","rawData","algoType","checkedR","ratchetingAccuracy","ratchetingPrecision","ratchetingRecall","ratchetingScore","thresholdSilhouette","checkedT","thresholdAccuracy","thresholdRMSE","thresholdPrecision","thresholdRecall","thresholdScore","mlInput","modelName","modelType","mlType","srcPage","mlModelDetails","exMLData","featureEx","mlModelData","baselineDataset","base_line_data_set","targetDataset","target_data_set","constructTestMlModelConnection","testMlModelData","notificationConfigureData","formConsumeData","isConsumeEdit","consumeSuccessProcess","consumeErrorProcess","consumeResponseHandler","requiresConsumeUpdate","exConsumeDetails","consume_item","constructMetricData","isMetricEdit","successProcess","errorProcess","requires_metric_definition_update","metric_id","joinExistingTeamSignUp","username","user_signup_type","first_name","last_name","phone_number","setTeamPage","attributeProfileFilterSubmit","attributeId","attData","updateUserNotification","notificationId","selectedNotification","update_notification_data","user_notification_id","markNotificationAsRead","getEndPointWithPreviousDateInfo","all_user_notifications","unread_notifications","MAX_NOTIFICATIONS_PER_PAGE","prevResult","fetchNotificationForPageNumber","prevDataQuery","setNotificationsToRedux","totalPages","notificationReduxStore","prevData","currPage","user_notification","unread_user_notification","fetchAllUserNotifications","teamID","resetData","allNotificationCount","all_notification_count","assign","Math","ceil","getNotifications","hideRequestNotification","removeNotificationFromList","handleDeleteTeamMate","state_details","handleClose","org_id","postDatabricks","databricksName","params","url","databrickData","handleCancel","validateDatabricksUrl","dataBricks","optionArr","jobs","id","configuration","databricksMatch","job","options","check","postAWSLambda","awsLambdaName","awsLambdaFunctionName","awsAccessId","awsSecretKeyAccess","awsRegion","payload","lambdaData","validateAWSCredentials","awslambda","awsLambda","lambdaMatch","lambda","postWebhookData","webhookName","header","parameter","dataFormat","methods","webhookData","postCloudFunctionData","cloudFunctionName","postEmailData","emailData","groupName","notificationType","schedule","scheduleValue","isChecked","validateSlackToken","channels","postSlackData","consumeName","channelName","description","slackPostData","postMetricsData","author","prevAuthor","formDatasource","integrationData","is_config_details","error_storage","bucket","sub_path","filetype","storage_name","secret_key","database","schema","ware_house","user","table_name","adl_client_id","host","http_path","catalog","host_url","database_name","schema_name","user_name","workspace","test_conn","getQualdoIps","ip_address","postDatasource","setSubmitButton","setData","postModelData","responseDatasetName","responseDataset","trainingDatasetName","trainingDataset","modelAuthored","mlStack","testData","modelData","customAlgoType","customMlType","customMlStack","ratchetingSilhouette","predictionColumn","responseColumn","version","recommendationKValue","predictionGroupBY","predictionItemCol","responseGroupBY","responseItemCol","columnType","predictionData","featuresTraining","custom_deployment","selectedMLType","group_by","item_col","postDefaultMetrics","metricsThreshold","windowCount","checkValue","masType","temp_gates","driftThreshold","requires_target","updateEnableButton","submitPrimaryCardRequest","paymentID","last4","lastFourDigits","cardType","brand","successMsg","showAlertSection","updatePrimaryStatusOfCards","deleteCardDetails","cardDetails","cardID","last4Digits","removeCardDetailFromList","updatePaymentCard","updateCardDetailToList","disableCardButton","postPaymentNonce","cardDataToPost","detail","addNewCardDetailToList","document","getElementById","removeAttribute","postCustomMetrics","scheduleInterval","datasetName","selectedDataSetOption","metric_name","requires_metrics_update","postConsistencyMetrics","ConsistencyDataSet","ConsistencyTargetDataSet","targetDataSetOption","ConsistencyMetrics","consistencyTypes","ConsistencyDataSetId","ConsistencyTargetDataSetId","ConsistencyMetricsList","metric","has_all","all_metrics","consistencyMetricOptions","consistency_data","updateAutoDebitStatus","getIntegrationDetail","formType","ex_edit_integration_details","submitPlanChangeRequest","closeDowngradePopup","deletePlanChangeRequest","change_request_id","postModelABConfiguration","showToastFunction","isEdit","closeModalFunction","handleModelABAddition","validateAirflowUrl","airflow","dags","dag_id","airflowMatch","dag","postAirflow","airflowName","dagId","airflowData","validateAWSSagemakerCredentials","awsSagemaker","sagemakerMatch","postAWSSagemaker","awsSagemakerName","endpointName","sagemakerData","getAttributeData","profileData","size","digits_size","toFixed","distributionData","convertDataForDiscoverCharts","outlier","businessRule","dataType","nativeType","isFetched","metricsChartData","getDiscoverPageDataset","sectionName","reqInpData","convertedData","validateKubeflowUrl","kubeflow","pipelines","pipeline_id","kubeflowMatch","postKubeflow","kubeflowName","pipelineId","experiment","kubeflowData","postPagerdutyData","pagerdutyPostData","postmicrosoftTeamsData","microsoftTeamsPostData","NoModelComponent","go_to_configure_page","setUpBotton","redirectPage","navigatePage","noIntegration","buttonName","noContentSubtext","customButtonName","className","bodyClassName","content","src","isInProgress","onClick","icon","faBezierCurve","React","Component","Image","images","oopsHuman","oopsGlobe","logoLight","logo","logoDrxLight","logoDrx","logoMqxLight","logoMqx","logoBixLight","logoBix","googleLogo","dataEngLogo","dataStewLogo","dataSciLogo","dataDevLogo","dataQualityLogo","urlLink","notificationLogo","addLogo","blob","pipelineTrigger","success","incremental","timeSeries","alert","linegraph","areachartinfo","areachartsuccess","icon_downRed","icon_upGreen","plan_navigation_arrow","icon_green_check","areachartwarning","areachartdanger","areachartPurple","areachartGray","areachartOrange","areachartBrown","brokenInternet","icon_privacyPolicy","creditCard_visa","creditCard_master","creditCard_amex","creditCard_discover","creditCard_jcb","creditCard_paypal","pricingIcon_professional","pricingIcon_free","pricingIcon_starter","upgradePlan","exceedModelLimit","plan_starter","plan_professional","illustration_paymentSuccess","loader","spinner","icon_monitor","icon_configure","userProfile","icon_emptyData","icon_uniqueData","icon_duplicateData","icon_errorData","icon_filter","icon_model_cubes","icon_cross_light","icon_discover","icon_attribute","icon_datasource","icon_dataset","icon_environment","icon_exclamation_gray","gcp_brandMark","aws_brandMark","azure_brandMark","icon_qd_pbi_configure","icon_pbi_configure_success","icon_powerbi_dark","icon_timer_blue","icon_info_circle","icon_layer_partition","icon_clipboard_check","icon_exclamation_octagon","icon_bullseye","icon_stopwatch","width","height","style","styles","alt","VideoContent","getVideo","getVideoUrl","video_url","CONFIGURE_DATA_SOURCE_URL","PROFILE_MODEL_URL","PROFILE_DATA_URL","MONITOR_MODEL_URL","MONITOR_MODEL_PERFORMANCE_URL","MONITOR_DATA_URL","onHide","dialogClassName","Header","closeButton","Title","faQuestionCircle","Body","faSearch","placeholder","renderContent","expressionData","Expressions","idx","selectedMetricName","filterOption","query","onChange","dropDownChange","classNamePrefix","class","metrics_options","alert_threshold_options","Control","min","abs","removeExpression","AlertForm","addExpression","tempExpression","prevState","splice","selectedOption","handleChange","handleConvert","handleStateChange","radioHandler","status","alertPeriodHandler","alertMechanismValue","pipelineName","pipelineTriggerType","pipelineTriggerId","getAllOptions","associateOptions","datasetOptions","attribute","alert_mechanism","exConsume","exPipeline","triggers","INSTANT_NOTIFICATION","DAY_SCHEDULE","alertTypeWithkey","EMPTY_ALERT","alertPeriodWithKey","EMPTY_PERIOD","associatedWithKey","EMPTY_ASSOCIATED","alertDatasetWithKey","EMPTY_DATASET_WITH_KEY","alertAttributeWithKey","EMPTY_ATTRIBUTE_WITH_KEY","alertModelWithKey","EMPTY_MODEL_WITH_KEY","alertDataSourceWithKey","EMPTY_DATASOURCE_WITH_KEY","alertMechanismWithKey","EMPTY_ALERT_MECHANISM_WITH_KEY","fillDetails","exAlert","gates","dataSourceId","modelId","editExpression","getDatasets","alert_computation_type","data_set_match","selectedDataset","dataset","selectedAttribute","attribute_match","getAttributes","selectedComputeType","match_computation","getComputationTypes","consumeIds","consume_group_name","pipelineIds","pipeline_trigger_name","consumeType","consume_group_type","pipelineType","pipeline_trigger_type","alertMechanism","UPDATED_ALERT","UPDATED_PERIOD","UPDATED_ASSOCIATED","alertScheduleWithkey","UPDATED_ALERT_SCHEDULE","UPDATED_DATASET_WITH_KEY","UPDATED_ATTRIBUTE_WITH_KEY","UPDATED_ALERT_MECHANISM_WITH_KEY","UPDATED_MODEL_WITH_KEY","UPDATED_DATASOURCE_WITH_KEY","editExpressions","bool_condition","finalDict","notificationArr","pipelineArr","req_dataset_name","data_source_id","attribute_id","metaData","attributeNameFromMappedValue","data_source","envDSMapping","environmentDataSourceMapping","entries","dataSetAttributeMapping","parseMetaMapping","req_attribute_name","normalizeAttributeName","cm_arr","conformityList","attributeDict","attributeType","alertLevel","cm_data","metadataDetails","metadataMapping","metadata_mapping","cm_details","consistency_metrics_details","data_set_type","temp_data","l","CONFORMITY_METRICS_CUSTOM_ALERTS","metric_data","allowed_metric","DQ_ALERT_ALLOWED_METRICS","MODEL_ALERT_ALLOWED_METRICS","defaultChecked","HOUR_SCHEDULE","htmlFor","canShowAddCondition","currentExp","getMetrics","newMetricsList","triggerOptions","data_set_options","attribute_options","alertComputationTypes","sort","b","datasourceOptions","integrationOption","has_attribute","alertSchema","yup","required","test","userValidation","initial_values","validationSchema","onSubmit","initialValues","setFieldValue","touched","handleBlur","isSubmitting","isValid","noValidate","Group","controlId","Label","onBlur","isInvalid","Feedback","RECURRING_NOTIFICATION","EnableRecurringTimeInterval","defaultValue","component","faPlusSquare","isMulti","disabled","faCheck","connect","storeMetadataDetails","renderK_ValueTooltip","bsPrefix","Content","K_VALUE_TOOLTIP","Features","clickedValue","removeOption","faTimesCircle","number","AddModel","optionalTraining","optionalServing","optionalAccuracy","addFeature","tempData","handleCheckClick1","handleCheckClick2","populateServingIntoPrediction","prediction_dataset_autopopulate","servingIntoPrediction","handleModelDeployment","resetForm","cancelButton","hideUseServingAsPredictionCheckbox","hidePredictionDataBox","optionsMLStack","SUPPORTED_ML_STACK_OPTIONS","optionsMlType","SUPPORTED_ML_TYPE_OPTIONS","optionsAlgoType","SUPPORTED_ML_ALGO_TYPES","optionsColumnType","SUPPORTED_ML_COLUMN_TYPES","exValues","MODEL_PERFORMANCE_THRESHOLDS","RECALL","PRECISION","F1_SCORE","RMSE","SILHOUETTE","predictionDelimiter","DELIMITER_OPTIONS","customPredictionDelimiter","responseDelimiter","customResponseDelimiter","RECOMMENDATION_MODEL_DEFAULTS","K_VALUE","stateDatasets","exFeature","exAccuracy","exPrediction","exResponse","target_column_serving","target_column_training","target_column_names","exPredictionModelInfoDetails","exPredictionModelInfoItemCol","exResponseModelInfoDetails","exRepItemCol","ml_algo_type","servingInPrediction","serving_into_prediction","pred_res_column_type","colMatch","algoMatch","rmse_threshold","accuracy_threshold","recommendation_k_value","accuracy_ratcheting","precision_threshold","precision_ratcheting","recall_threshold","recall_ratcheting","score_threshold","score_ratcheting","silhouette_threshold","silhouette_ratcheting","reqModelDeployment","model_deployment","reqMLStack","ml_stack","mlStackMatch","model_name","reqMLType","ml_model_type","mlMatch","reqIntegrationOption","base_line_data_set_id","targetData","isPrediction","delimiterSelectName","customDelimiterName","defaultValueForDelimiter","labelPrefix","currentSelected","canShowCustom","item_name","edit_1","edit_2","add_1","add_2","placement","overlay","isRequired","modelSchema","shape","when","is","nullable","isNaN","getAlgoTypes","ACCURACY","useServingAsPrediction","handleReset","isOptionDisabled","option","checked","getThresholdSections","maxWidth","s","getTrainingField","optional","faPlusCircle","getKValueField","isDisabled","getDetailsforRM","getResponseField","getResColumnField","QUALDO_ATTRIBUTE_SEPARATOR","STRUCT_SEPARATOR","QUALDO_CHILD_DATASET_SEPARATOR","FQ_TOOLTIP_PLACEHOLDER","replaceAll","dataset_name","METADATA_MAP_VALUE_SEPARATOR","METADATA_MAP_KEY_SEPARATOR","mappedValue","splitValues","datasetNameFromMappedValue","attributeIDFromMappedValue","mappedKey","datasetIDFromMappedValue","isChildDataset","module","exports","DataQualityMetricsForm","attribute_name_1","attribute_name_2","QuerySelection","metricAssociations","aggregation_2","mas_id","selected_datasource","selected_dataset","aggregation_1","operation","drift_threshold","metrics_threshold","metric_condition","fill_details","selectedQuery","formula_type","getAssociations","queryData","sqlQuery","match","ex_attributes","component_1","components","aggregation","att_name_1","reqAttributeName_1","operator","component_2","att_name_2","reqAttributeName_2","driftThresholdValue","metricsThresholdCondition","metricsThresholdValue","mas_data","reqAttributeName","normAttributeName","current_drift_threshold","ex_drift_threshold","current_metrics_threshold","ex_metrics_threshold","parseFloat","current_timestamp","formulaData","dimensionValue","customQueryId","getId","sqlQueryId","aggregationKey1","aggregationKey2","operationKey","conditionKey","agg_options","operations","condition_options","metricSchema","schemaObj","associateKey","datasourceSelectionKey","datasetSelectionKey","validate","validateSQLQueryMetric","dimension","margin","as","ows","SQL_QUERY_DUMMY_PLACE_HOLDER","SQL_QUERY_NOTE_1","SQL_QUERY_NOTE_2","getSQLQueryErrorComponents","ModelQualityMetricsForm","selected_model","modelSelectionKey","TestConnection","children","stages","testConnection_data","faCheckCircle","faHourglassStart","role","renderTestSteps","faExclamationTriangle","faInfoCircle","EmailForm","scheduleChange","toggleChange","notificationKey","EMPTY_NOTIFICATION_KEY","exEmailData","configDetails","config_details","email_id","notification_type","isDefaultErrorEnabled","is_default_error_enabled","curr_config_details","ex_config_details","isEmailErrorChecked","WEEK_SCHEDULE","MONTH_SCHEDULE","emailSchema","emails","_emails","validateEmail","isEmail","getLabel","removeEmail","data-tag","data-tag-item","data-tag-handle","enableRecurringTimeInterval","WebhookForm","webhook","exWebhook","exConfigurationDetails","data_format","http_method","webhook_data","ex_web_hook_details","ex_configuration_details","curr_configuration_details","webhookSchema","ref","DatabricksForm","ChangeAccessTokenIcon","accessTokenIcon","faEye","accessTokenType","exDatabricksDetails","databricksData","exConfiguration","currentConfiguration","iconName","faEyeSlash","databrickSchema","databricksValidate","faLock","autoComplete","autocomplete","AWSLambdaForm","ChangeSecretKeyIcon","SecretKeyIcon","SecretKeyType","exAwsLambdaDetails","awslambdaFunctionName","aws_access_key_id","aws_secret_access_key","aws_region_name","exLambdaDetails","awsLambdaSubmitSchema","awsLambdaValidate","GCPCloudFunctionForm","cloudFunction","cloudFunctionSchema","AirflowForm","changePasswordIcon","passwordIcon","passwordType","exAirflowDetails","airflowDetails","airflowSchema","airflowValidate","AWSSagemakerForm","exAwsSagemakerDetails","exSagemakerDetails","awsSagemakerSubmitSchema","awsSagemkerValidate","KubeflowForm","exKubeflowDetails","pipeline_name","kubeflowSchema","kubeflowValidate","SlackForm","slackData","exConsumeItem","channel_name","setConsumeData","slackValidationSchema","slackSchema","rows","PagerdutyForm","pagerdutyData","pagerdutyValidationSchema","CustomDefaultMetrics","scheduleOptions","customMetrics","dataSetOptions","selectedTarget","target_data_set_id","matchedTargets","matchedSource","metricsData","schedule_interval","showTarget","metricsSchema","sourceKey","targetSelectKey","disableSourceDatasetSelection","Footer","data-dismiss","MSTeamsForm","microsoftTeamData","microsoftTeamValidationSchema","DeleteWarningModal","componentName","modalTitle","deleteMsgTitle","deleteMsgContent","delete_show","centered","faTrashAlt","handleDeleteFunction","SingleArrowChart","upCount","getRowCountContributionFromData","imageName","DRIFT_PATTERN_TYPES","THRESHOLD_ALERT","IMAGE_NAMES","ICON_DOWN_RED","ICON_UP_GREEN","GENERIC_CONSTANTS","NA","faChartArea","AdlForm","postAzureData","ChangesecretKeyIcon","formType_option","fileType","selectOptionKey","refreshType","versionFormat","versionOccurence","secretKeyIcon","secretKeyType","ex_integration_details","bucket_name","refresh_type","versionType","version_type","version_format","version_occurence","versionFormatRegex","defaultErrorStorage","FILE_TYPE_FORMATS","adl_tenant_id","VERSION_FORMATS","azureData","default_message","TEST_CONNECTION_MESSAGES","subPath","azureSchema","matches","getSchema","file_option","refresh_option","version_option","occurence_options","edit_integration","validateOnBlur","Form","InputGroup","showCancel","AzureForm","blob_secret","SpecificDataset","tablelist","elem","table","join","datasetToBeProcessed","editAction","removeSpecificDataset","arrowContent","data-index","data-key","changeDatasetText","Text","Check","custom","handleExactMatch","handleStartIndex","inline","handleStartIndexRadio","Partitions","filterdatasetlist","partitiondatasetlist","removePartition","changePartitionText","changePartitionSelect","changePartitionBy","currentTarget","parseInt","DatabricksTableForm","partition","specificDatasets","postAzureDeltaTable","ChangePasswordIcon","handleDatasetChange","addPartition","addSpecificDataset","default_partition_by","dataset_processed_edit","selectedPartitionRemoved","table_names","loop","selectobj","elems","querySelectorAll","call","el","classList","remove","partitions","getAttribute","partitionList","checkpartitionvalidation","focus","partitiondata","exIntegrationConfig","tablelistparition","incrementaldataset","click","paritioneditcheck","add","edit_partition_list","partioncheck","azureDeltaTable","azureDeltaTableSchema","FILE_TYPE_OPTIONS","Alert","variant","href","S3Form","postS3Data","ChangeAccessKeyIcon","accessKeyIcon","accessKeyType","accessKey","access_key","secretAccessKey","secret_access_key","s3Data","s3Schema","Redshift","PostRedshiftData","redshiftData","redshiftSchema","BigQueryForm","postBigQueryData","handleFileChange","json_file_name","authConfig","json_file","bigQueryData","fileReader","FileReader","readAsText","files","onload","bigQuerySchema","accept","Append","SnowflakeIntegration","postSnowflakeData","snowflakeUrl","snowflakeData","snowflakeSchema","PostgresForm","postPostgresData","postgresData","postgresSchema","MySqlForm","postMySqlData","mySqlData","mySqlSchema","AzureSynapseDSForm","exIntegrationDetails","synapse_table_name","synapse_sql_host","exAuthConfig","synapse_password","synapse_user","AzureSQL","postAzureSqlData","edit_specifieddataset_list","azureSqlData","azureSqlSchema","PowerBi","postPowerBiData","powerbiData","powerBiSchema","GcpSQL","postGcpSqlData","gcpSqlData","gcpSqlSchema","GcsForm","postGcsData","gcsData","gcsSchema","groupStyles","display","alignItems","justifyContent","groupBadgeStyles","backgroundColor","borderRadius","color","fontSize","fontWeight","lineHeight","minWidth","padding","textAlign","formatGroupLabel","Integration","setForm","helpContentKey","setIntegrationData","changeHelpContent","renderForm","supportedDatasourceOptions","getSupportedDatasourceOptions","data_source_options","FillFormDetails","AZURE_SYNAPSE_DS_CONNECTOR","helpContent","get_document_link","rel","QUALDO_DOCUMENTATION","start","$","addheight","data_source_option","renderHelpContent","renderTest","editLoad","getEditIntegrationContent","getAddIntegrationContent","ModelABSingleStat","propsData","reqLabel","reqText","INDEX_IN_AB","index_in_ab","classNameVal","ModelABCVStats","associatedModels","StatsAttributeName","renderAttributeName","reqClassName","requiredAttributeName","propsColor","NO_ERROR_COLOR_CLASS_MAP","shortenedData","getShortTitleForAttribute","requiredName","fqTooltipContent","faTag","MonitorStatsComponent","showPercentageSymbol","DEFAULT_METRICS_MAP","dq","ml","showDate","recency","renderMetricNameLine","renderMetricNameLineErr","renderDatasetLevelContent","renderAttributeLevelContent","renderComponent","renderComponentWithAddonButton","renderNonPercentageMetricNameLine","renderNonPercentMetricNameLineErr","containerLabel","containerName","metricLabel","getFullNameOfMetric","errorPercentage","lastErrorPercentage","errorDivClass","parentDivClass","driftLabel","metric_name_lower_case","split_metric_name_lc","split_metric_name","tooltipInfo","METRICS_INFO","getAliasNameForMetric","metric_name_lc","faExclamationCircle","getSplitMetrics","faCube","faPercentage","round","faCalendarDay","faStopwatch","dataSetName","isABCompareView","isCombinedChart","canShowErrorVal","isModelPerformance","getToolTip","faDatabase","faLayerGroup","getAliasNameForMetricAttributeLevel","referenceDataSetName","referenceDataSetLabel","chart_data","canShowError","source","MODEL_AB_COMPARE_SRC","footerRef","getErrorTypeForStatsComponent","faServer","isAttribute","CHART_TITLE_SEPARATOR","CHART_TITLE_METRIC_SEPARATOR","LIST_VIEW_OPTIONS","BUTTON_WAIT_TIME","ENVIRONMENT","DATA_SOURCE","DATA_SET","ATTRIBUTE","PRIVACY_POLICY_LINK","COOKIE_POLICY_LINK","TERMS_CONDITIONS_LINK","NO_DATA_SET_FOUND_TOOLTIP","NO_DATASET_NO_DATA_PROFILE","NO_DATASET_NO_ERROR","DATA_PROFILING_FAILED","ROW_WARN_CLASS","ROW_ERROR_CLASS","DQ_MONITOR_SECTIONS","COMPLETENESS","UNIQUENESS","TIMELINESS","CONFORMITY","CONSISTENCY","DRIFT","ALERT_NAME_DESC","metricType","DEFAULT","COMBINED","UPDATED_NOTIFICATION_KEY","EMPTY_ALERT_SCHEDULE","EMPTY_DATA_SOURCE_WITH_KEY","IN_PROGRESS_STATUSES","inProgress1","inProgress2","modelPerformance","CONFUSION_MATRIX","MAE","MSE","R2","ROC_CURVE","SENSITIVITY","SPECIFICITY","CPU_USAGE","MEMORY_USAGE","MODEL_LATENCY","OVERHEAD_LATENCY","MEAN_SHAP_VALUE","HOMOGENEITY_COMPLETENESS_V_MEASURE_SCORE","SILHOUETTE_SCORE","chartTypes","HORIZONTAL_BAR_CHART","GROUPED_HORIZONTAL_BAR_CHART","HORIZONTAL_COMPARE_CHART","MULTILINE_FEATURE_CHART","GROUPED_VERTICAL_BAR_CHART","SEE_FULL_VIEW_ICONS","showMoreVariants","UNIQUENESS_METRIC_CARD_ONE","UNIQUENESS_METRIC_CARD_TWO","UNIQUENESS_METRIC_CARD_THREE","cardTitlesMap","RECENCY_INTERNAL_ID","ROW_COUNT_INTERNAL_ID","metricMapping","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","25","26","27","METRIC_SCALE","RELATIONSHIP_METRIC","RELATIONSHIP_METRIC_ORDER","RELATIONSHIP_STATIC_CARD","STATIC_CARDS","THUMBNAIL_COLORS","ML_METRIC","24","23","ML_METRIC_2","ML_METRIC_ORDER","ML_METRIC_COLOR","DUPLICATE_METRIC","UNIQUENESS_METRIC","FILL_RATE_RANGE_ONE","FILL_RATE_RANGE_TWO","FILL_RATE_RANGE_THREE","ROW_COUNT_METRIC_CARD","OUTLIERS_METRIC_CARD","WITH_OUTLIERS_METRIC_CARD","WITHOUT_OUTLIERS_METRIC_CARD","COMPLETENESS_CARDS","COMPLETENESS_METRIC_COLOR","RECENCY_METRIC_CARD_ONE","RECENCY_METRIC_CARD_TWO","RECENCY_METRIC_CARD_THREE","RECENCY_METRIC_CARD_FOUR","TIMELINESS_CARDS","TIMELINESS_METRIC_COLOR","ACCURACY_METRIC","NON_EDITABLE_METRIC","ACCURACY_METRIC_COLOR","CONFORMITY_METRIC","METRIC_CARD_COLORS","0","CONFORMITY_METRIC_COLOR","RELATIONSHIP_METRIC_COLOR","CONSISTENCY_METRIC","CONSISTENCY_METRIC_COLOR","CLASS_COLORS","compare_a_line_1","MULTI_LINE_COLORS","K_RESULTS","COEFFICIENT_VALUES","OTHER_ACCURACY_METRIC","MODEL_ACCURACY","MODEL_EVALUATION","MODEL_MONITORING","FEATURE_IMPORTANCE","MODEL_EXPLAINABILITY","MODEL_RUNTIME_PROFILE","ML_MODEL_WITH_MODEL_EVALUATION_METRICS","MODEL_PERFORMANCE_GROUPS","MODEL_PERFORMANCE_RESULT_GROUP_MAP","ATTRIBUTE_LEVEL_MODEL_ERROR_DESCRIPTIONS","DATA_SET_LEVEL_MODEL_ERROR_DESCRIPTIONS","SECTION_TYPE_MAPPING","MODEL_DRIFT","SERVING_DATA_DRIFT","FEATURE_DRIFT_TEMPORAL","FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT","FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT","FEATURE_DRIFT_ALIAS_GREEN_TEXT","FEATURE_DRIFT_ALIAS_RED_TEXT","FEATURE_DRIFT_ALIASES","FEATURE_DRIFT","ML_BOX_PLOT_LIST","getMetaInformationAboutChart","isDataSet","MODEL_PERFORMANCE_DEFAULT_CHART_MAPPING","DEFAULT_ML_METRICS","CUSTOM_ML_METRIC","DATASET_LEVEL_ALLOWED_ML_METRICS","ATTRIBUTE_LEVEL_ALLOWED_ML_METRICS","REQUIRES_FILTER","ML_FEATURE_KEYS","MODEL_PERFORMANCE_COMBINATION_CHART","DEFAULT_ML_METRIC_PRIORITY","DEFAULT_METRIC_PRIORITY","MANDATE_RESET_PASSWORD","DEFAULT_ERROR_PRIORITY","MODEL_PERFORMANCE_PREVIEW_PAGE","MODEL_MONITOR_PREVIEW_PAGE","MIN_MAX_SCALE","DATA_CONSISTENCY","PAYMENT_CARD_TYPES","QualdoPlanCycle","MONTHLY","YEARLY","TRIAL_14_DAYS","DateParts","YEAR","MONTH","DAY","QualdoEditionMapping","QualdoEditions","DQ_EDITION","ML_EDITION","ENTERPRISE_EDITION","STARTER","PROFESSIONAL","DQ_CHART_POINTS","MIXPANEL_KEY","IS_SAAS_EDITION","IS_NONE_SAAS_EDITION","IS_AZURE_DRX","REACT_APP_MARKET_EDITION","GTM_INTEGRATION_TOKEN","GTM_ID","GTM_PREVIEW","GTM_EVENTS","NON_NUMERIC_COLUMNS","DATA_TYPE_MAPPING","DATA_DRIFT","DATA_TYPE_CONSISTENCY","ML_DATA_CONSISTENCY","ML_ACCURACY_DRIFT","REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART","ML_REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART","CONTRIBUTION_KEY","REFERENCE_TYPE_COLUMN_NAME","CONSISTENCY_CONTRIBUTION_HEADERS","CONSISTENCY_CONTRIBUTION_HEADERS_ML","MODEL_PERFORMANCE_AS_MODEL_ERRORS","DATA_TYPE_CONSISTENCY_HEADERS","PAID_PLANS","QUALDO_WEBSITE_URL","PAYMENT_FIELD_ID_MAP","cvv","expirationDate","PAYMENT_COMPONENT_STYLES","NO_DRIFT","NOT_COMPUTED","ERRORS_DETECTED","SUDDEN","INCREMENTAL","GRADUAL","RECURRING","BLIP","NOISE","DECREMENTAL","NON_ERROR_DRIFT_PATTERNS","METRIC_ALIAS_NAMES","QUALDO_PAYMENT_STATUS","TRIAL_EXPIRED","PAYMENT_COMPLETED","PAYMENT_PENDING","PENDING_PAYMENTS","BUTTON_NAMES","PAY_NOW","CHOOSE_PLAN","INCREASE_LIMIT","EXCLUDED_COMPONENTS","PLAN_PAGE_WARNINGS","DATA_LIMIT_EXCEED","TITLE","DESCRIPTION","PLAN_ICON_MAPS","PLAN_CARD_CLASS_MAPS","NO_ERROR_CHART_COLORS","LIGHT_COLOR_MAP","ACCOUNT_FREE_URLS","DEFAULT_CURRENCY_SYMBOL","BOX_PLOT_METRICS","MEMORY_UNITS","SINGLE_ARROW_CHART_TYPE","MONITOR_DQ_LIST_VIEW_HEADERS","MONITOR_DQP_LIST_VIEW_HEADERS","MONITOR_MODEL_ERROR_LIST_VIEW_HEADERS","MONITOR_MODEL_PERF_LIST_VIEW_HEADERS","MONITOR_PERF_LIST_VIEW","GREEN_VARS","VIOLET_VARS","ORANGE_VARS","RED_VARS","LIMIT_ABOUT_TO_REACH","env","videoUrl","edition","urlDrx","urlMqx","CONFIGURE_MODEL_URL","PIPELINE_CHANNEL_URL","NOTIFICATION_URL","DATA_QUALITY_URL","DISPLAY_DATE_FORMAT","MAX_DATA_POINTS_FOR_LIST_VIEW","MAX_POINTS_THUMBNAIL","DISABLE_CHECKBOXES_IN_CARDS","DOUBLE_COLON","MAX_UNREAD_PER_PAGE","NOT_SORTABLE","QUALITY_PERF_CHART_VIEW","REQUIRES_EXCLAMATION_TRIANGLE_ICON","CONFORMITY_METRIC_KEYS","TABLE_VIEW_CLASS","TABLE_EDIT_CLASS","TABLE_DELETE_CLASS","TABLE_COMP_MODELS_CLASS","AB_MODELS_TABLE_TITLE","AB_COMPARE_VIEW_TABLE_HEADERS","SUFFIXED_DATE","AB_THUMBNAIL_LIMIT","AB_ADVANCE_FILTER_METRIC_NAMES","DOCUMENT_LINK_MAPPING","MONITOR_DATA_KEYS","ALERT_TYPE","ABOVE_ALERT_SUPPORTED_TABLES","IAM_SECRET_KEY","ROW_COUNT_NAME","DATA_SOURCE_OPTIONS","CYCLE","CLOUD","GCLOUD","AWS_CLOUD","LOGIN_SOURCE","NORMAL_LOGIN_SRC","GOOGLE_LOGIN_SRC","MSI_LOGIN_SRC","SRC_ATTRIBUTE_COLUMN","DEST_ATTRIBUTE_COLUMN","MODEL_TYPES","BINARY_CLASSIFICATION","MULTI_CLASS_CLASSIFICATION","CLUSTERING_MODEL_WO_RESPONSE","CLUSTERING_MODEL_WITH_RESPONSE","REGRESSION","RECOMMENDATION","MAX_SLEEP_TIME","MAX_SLEEP_ERROR","NEG_SLEEP_ERROR","WINDOW_METRICS","METRIC_SCALE_MAPPING","TAB_KEY_MAPPING","CONSISTENCY_MAPPING","CONSISTENCY_KEY","RELATIONSHIP_METRIC_KEYS","SKIP_SUGGESTION_RENDER","Load","renderTooltip","BasicPortlet","hideModal","changeSource","changeModel","renderTitle","handleTimeFilter","obj","handleLoad","picker","selectedValue","selectedDataSrc","setStartDate","setEndDate","changeTime","titleToolTip","titleTooltip","titlePrefix","toolTipHandle","shortTitle","ranges","srcOption","disableTimeFilter","startDateText","endDateText","defaultDataSrc","mas_name","data-toggle","evt","faCog","showFilter","showModelFilter","showtimeFilter","faCalendar","containerClass","onApply","showHelpSection","data-target","ADD_METADATA","ADD_RELATIONSHIP","ADD_ML_RELATIONSHIP","ADD_INFO","SET_DATA_SOURCE","SET_ML_DATA_SOURCE","SET_CHIP_DATA","SET_ML_CHIP_DATA","ADD_PROCESSING_STATUS","SET_START_DATE","SET_END_DATE","SET_FILTERED_DATA","SET_ML_MODEL","SET_TIME_FILTER","ADD_DATA_SOURCE","ADD_DISCOVERY_STATUS","ADD_LAST_PROFILING_TIME","ADD_ENVIRONMENT","SET_ENVIRONMENT","ADD_ENVIRONMENT_DATA_SOURCE_MAPPING","ADD_DATA_SOURCE_DATA_SET_MAPPING","ADD_DATA_SET_ATTRIBUTE_MAPPING","SET_TENANT_ID","SET_INITIAL_VALUES","SET_DATA_SET","SET_ATTRIBUTE","ADD_MONITOR_PREVIEW","ADD_DQ_MONITOR_PREVIEW","ADD_PERFORMANCE_PREVIEW","SET_MONITOR_INITIAL_VALUES","ADD_COMPLETENESS_INFO","ADD_COMPLETENESS_ATTRIBUTE_INFO","ADD_TIMELINESS_INFO","ADD_TIMELINESS_ATTRIBUTE_INFO","ADD_ACCURACY_INFO","ADD_ACCURACY_ATTRIBUTE_INFO","ADD_DRIFT_INFO","ADD_DRIFT_ATTRIBUTE_INFO","ADD_CONFORMITY_INFO","ADD_CONFORMITY_ATTRIBUTE_INFO","ADD_CONSISTENCY_INFO","ADD_CONSISTENCY_ATTRIBUTE_INFO","ADD_ML_MODEL_MAPPING","ADD_ML_MODEL_ATTRIBUTE_INFO","ADD_ML_MODEL_INFO","ADD_ML_MODEL_PERFORMANCE","ADD_ML_MODEL_DETAILS","ADD_MONITOR_DQ_LIST_VIEW","ADD_METRICS","USER_NOTIFICATIONS","MARK_NOTIFICATION_AS_READ","REMOVE_NOTIFICATION_FROM_LIST","ADD_DATASET_VERSIONS","ADD_UNIQUENESS_INFO","ADD_UNIQUENESS_ATTRIBUTE_INFO","ADD_RECENCY_DETAILS","SET_MODEL_AB_LIST","ADD_RECENCY_PREVIEW","ADD_RECENT_HISTORY","ADD_DATA_SIZE","ADD_FOLLOW_ATTRIBUTES","PREFETCH_MONITOR_STATE","STORE_IP_DATA","ADD_METADATA_DETAILS","NO_INTEGRATION","FORM_DATASET_INFO","FORM_LISTVIEW_TABLE_DATA","ADD_DATASET_LAST_REFRESH","ADD_DATASOURCE_DISCOVER_PAGE","cachedLocalData","roundOffResult","inputVal","decimalPoints","toastObj","chartFilterTable","time","contribution","contributionCount","showDataTypeDifferences","recent_time","contribute_data","timeValue","targetDS","target_data_set_name","matchColumn","match_column","data_type","referenceDataType","reference_data_type","updateChartDataErrorType","r","driftLevels","every","v","charHeadText","driftPatterns","drifts","getModelPerformanceCharts","timeList","valueList","drift_patterns","errorList","dataLength","multipleComponents","componentsLength","x_value","datum","payload_created_time","_payload","feature_imp_val","current_drift_pattern","drift_pattern","thresholdErrorData","y_val_i","pointsData","getModelMultipleLineData","drift","line1","line2","line3","getModelPerformanceChartType","chartName","chartType","getGroupedData","fullScreenData","selectedMLModel","ignoreModelIDFilter","emptyGroupedData","_","cloneDeep","selectedMLModelId","groupedData","mappedData","reqGroup","_key","performanceMetricName","group","reorderModelPerformanceResults","accuracyResults","k_results","chart","cc_charts","other_charts","concat","recommendation_charts","otherModelMetrics","getGroupedDataListView","selectedMetrics","filter_name","fill_empty_with_zero","expected_labels","actual_labels","final","empty_rows_index","indexOf","new_row","fill","get_aggregated_confusion_matrix","label_values_final","agg_matrix","label_count","setModelPerformanceTimeFilter","all_details","filteredList","timeObj","parsedDate","isSameOrAfter","isSameOrBefore","labels","setFinalValue","sortedList","aggregated_res","setModelPerformanceConfusionTimeFilterChartData","setModelPerformanceTimeFilterPreviewPage","selectedDate","getDatasetLevelShapValues","allAttributes","datasetLevelChart","dsResult","latestData","dataset_id","reduce","acc","getFeatureImportanceChartData","performanceName","addTrainingServingData","serving_data","training_data","combinedChart","data_set_name_2","serving_dataset_name","serving_data_points","training_data_points","latest_data_point_1","pop","latest_data_point_2","d1","d2","getPerformanceChartData","modelMapping","ignoreCombinedCharts","mappedDatasetInfo","fullModelInfo","chartValues","tempResult","datasetMapping","combinedChartOfAllModels","modelRes","reqCombinedCharts","getNormalizedName","perfResults","latestConfusionMatrixRes","label_values","confusionMatrix","confusionChartData","xAxis","lineData","modelMonitorChartData","grouped","datasetLevelCharts","attribute_details","attributeLevelCharts","metaKey","dataset_grouped","create","total_shap_value","combined_chart","lineCharts","model_res","lineChart","serving_data_set_id","training_data_set_id","modelFullDetails","modelDatasetsDetails","ServingBase","total_value","found","find","combinedName","y","y1","added","allModelIds","currentModelId","needSorting","charts","sortBasedOnMetrics","getCustomMetrics","dataSetData","customMlOptions","CustomMetrics","setShowMoreDataOnGroupingLevel","isDataSetLevel","metadataMap","canIncludeFunction","modelPerformanceCharts","gridData","modelGroup","allowedMetrics","descriptionInfo","level","modelValue","metricValue","processedKeys","attributeKeys","is_udf_ml_metrics","metric_threshold_error_status","uniqueKey","metricGroup","desc","headerTitle","metaDataAfterSplit","toolTiptopHeader","metaDataSplit","_attribute_name","getAliasChartName","boxPlotData","statistics","quantile","chartTypeData","getChartTypeForMonitorCharts","hasError","chartPatternType","contributions","referenceDataset","normalizeChartData","drift_len","time_len","recentValue","filterChartDataForTime","allowedMetric","groupData","sortBasedOnErrors","canIncludeMetric","reqModelDetail","featureMap","mlFeaturekey","featureInfo","modelInfoDetails","attributeSplits","columnKey","targetColumns","requiredColumns","column","convertModelDetails","modelDetail","feature_map","feat","getModelErrorsOfPerformanceCharts","allCharts","errorCharts","errorChart","capitalize","driftType","recentError","setGridData","modelPerfErrors","errorChartInfo","hasChartData","hasDrift","mlModelIds","chartDataList","fullData","matchedKeys","metadataSplit","attributeKeySplit","isAttributeLevel","chartKeyText","clonedChartData","mlModelID","errorData","processedIDs","currentModelPerfErrorCharts","currentPerfErrors","currModelData","underPerformingModels","errorChartValues","topErrorContainer","under_performing_model_ids","chartFromSecondTopError","chartFromFirstTopError","chartFromThirdTopError","applyDefaultTimeFilter","grid","timeFilteredData","copiedData","boxPlotDataAvailable","updatedTime","yAxis","max","getPreviewPerformanceChartData","groupedCharts","allChartKeys","isClassification","priorityScore","drift1","colorIndex","addColor","getModelErrTableData","modelPerformanceData","finalData","modelDataSourceDetails","mapModelToDataSource","propsDataModuleInfo","modelPrefetchInfo","mlModelAttributeInfo","filteredData","attributeOptions","filteredModel","modelList","datasourceName","filteredDataFinal","performance_error","thumbnailCharts","allThumbnailChartSections","_cData","colorInfo","cardBackground","textColor","reqChartData","labelValue","replace","convertDecimalDigits","colorArray","sectionData","getThumbnailChartsModelErr","dqErrorInfo","modelInfo","monitorDQListView","issued_attributes","modelDatasets","updatedDatasets","issuedAttributes","attributeLevelData","attribute_level_data","datasetLevelData","dataset_level_data","dataId","latestError","latestRefreshedTime","diff","getDqErrorDetails","summaryData","errModelSummaryData","formModelErrorDataForListView","attributeDetails","metaDataLength","attributeInfo","servingDrift","servingDriftData","attributesOptions","metaDataValue","idsSplit","latest_refresh","getServingFeatureDriftAttributes","getModelPerfListViewTableData","completeDataOrg","propsDataModule","currListViewTableData","completeData","modelAuthor","lastProfilingTimeModel","matchData","modelSummaryData","inProgress","modified_time","thumbnailChartData","groupedDataForModel","grpData","currChartType","hasSecondLine","y1Value","yValue","getThumbnailChartsForModelPerfLV","lastId","updated","dataSets","formMetricsCardData","metricsCardData","driftElement","formMLMetricsCardData","hasJob","getConsistencyCardDetails","dataConsistency","getDefaultMetricsTableData","masName","getMetricsTableData","getMetricTypeFromDefinition","metricDefinition","isTemplateMetric","getViewDetailsForMetrics","viewDetails","definition","checks","formulaDetail","getFormulaContent","getChartTitleBasedOnData","includeDatasetName","selectedModel","dataSourceState","requiresSeparator","separator","data_set_name","formChartTitleForModelPerformanceChart","selectedMlModel","extractMetricNameFromChartName","nameSplit","fqMetricName","dataSetAttributeSplit","lastElement","replaceNullValues","driftValues","getMonitorTimeStampMessage","startTime","endTime","considerEndTimeAlone","maxDataPoints","dq_chart_points","times","filteredTimes","filteredValues","filteredDriftPattern","filterErrorRows","DqValues","filteredVersionName","filteredMetricThresholdStatus","filteredAvgRowCount","filteredDeviationPercentage","filteredAllStringColumnStatus","filteredMetricThresholdError","boxPlotDataCopy","statisticsData","UpdatedStatisticsData","filteredQuantile","xTime","getDateObject","cDateIsBeforeEndDate","canIncludeVal","error_rows","metricThresholdErrors","metric_threshold_error_diff_value","metricThresholdStatuses","avgRowCount","avg_row_count","deviationPercentage","deviation_percentage","isAllStringColumn","is_all_string_column","version_names","version_name","error_row","metricThresholdError","metricThresholdStatus","isAllStringColumn_","avgRow","deviationPercentages","getConfusionMatrixModelPerformanceTimeFilter","getHorizontalChartModelPerformanceTimeFilter","chartDetails","timeData","filteredTimeList","filteredChartpointList","t","applyTimeFilterOnGroupedChart","getHorizontalGroupChartModelPerformanceTimeFilter","newChartPoints","res1","data_points_1","res2","data_points_2","getChartFilterData","currentData","isPatternNotNeeded","dataPoints","latest_drift_index","getMLModelOptionsForGivenMapping","driftData","updatedDrift","updatedTimeSeries","requiresNormalization","requires_normalization","normalizationValue","normalization_value","normal_updatedDrift","currentValue","normalizationValueElement","normResult","getChartType","chartCount","isChartTypeFixed","convertChartTypeToError","a_metricName","b_metricName","aPriorityValue","bPriorityValue","a_errorName","b_errorName","a_PriorityValue","b_PriorityValue","sortModelErrorsBasedOnMetrics","aLevel","bLevel","aPriorityData","bPriorityData","getPercentage","value1","value2","decimals","number1","number2","getCurrentUTCDateTime","currentUTCMoment","parsedYear","year","parsedMonth","month","parsedDay","parsedUTCHours","hours","parsedUTCMinutes","minutes","parsedUTCSeconds","seconds","trimTimeLabel","timeLabel","formatFutureTime","days","timeDifference","suffix","parseDateAsUTC","createdTimeString","parsedMoment","addTime","inputDate","quantity","part","getFullYear","getMonth","day","getDate","isError","logoutPageRedirect","sessionToken","Reset_Password","store","dispatch","setInitialValues","setMonitorInitialValues","convertBytesToGB","values_in_bytes","pow","formatBytes","c","floor","log","memoryValue","threshold_error_len","metricThresholdErrorStatuses","prev","currentDriftPattern","actualChartName","aliasChartName","updatedMetricName","errorType","updatedErrorType","convertToCamelCase","input","charAt","toUpperCase","ipAddress","selectedPlanCycle","removeQualdoPlanCycle","getCurrentPlanDetailOfUser","details_json","planDetails","selectedPlan","selectedCycle","currentUserPlan","currentPlanCycle","plan_cycle","isUserOnFreeTrial","currentPlanName","getRedirectionLinkToExpiredPlan","getRedirectionLinkToChangePassword","setBasicPlanInLocalStorage","isUserOnBasicPlan","isDataLimitExceeded","filterBoxPlotData","driftPattern","timeNew","quantileNew","driftPatternNew","q1","q1_min","getCurrencySymbol","currentPlan","currency","canDisableShowMore","hasValidNumberOfDatasets","integrationMap","selectedDataSource","currentDatasourceInfo","discoveryStatus","discovery_status","integrationStatusText","parentId","selectedEnvironmentOption","selectedDataSourceOption","metaMapping","_stringVal","stringArray","getDatsetIdForSelectedDatasource","datasetId","dataSourceDataSetMapping","datasetIds","getAttributeNameIdForSelectedDatasource","environmentId","attributeIds","metaDataKey","errorRowList","rowCount","document_link","encryptData","authDetails","sections","section","doc_link","filterInfoData_mlModel","infoData","updatedInfoData","filteredValue","filtered","startsWith","getTimeFilteredData_mlModel","allMetricInfo","metricInfo","startIndex","endIndex","filterTimeData_mlModel_profile","tempStartDate","formCardData_mlModel","changedDataSource","timeFilterApplied","cardInfo","commonId","attributeMetricList","apply","tempInfo","modelToDataSource","extractDatasetInfoForMonitorListView","metaDataMapping","idDatasetDetail","datasetLists","attributeList","combinedIDKeys","combinedNamesStr","idArr","combinedNames","dataSourceName","getDataSetList","Attributes","DataSetList","uniqueList","keyList","data_src_id","replaceMetricNameByBracket","commonName","convertDataForListView","filterError","filteredAttributes","updatedData","charKeyUnformatted","setDQShowMoreDataOnGroupingLevel","profileKeys","chartInfo","idSplit","consistencyMet","setProfilingData","setDQShowMoreData","propsDataSetData","propsAttributeData","attributeData","DefaultDatasetGroups","CustomDatasetGroups","DefaultAttributeGroups","CustomAttributeGroups","defaultDatasetGroupChartData","customDatasetGroupChartData","defaultAttributeChartData","customAttributeChartData","getAllDQShowMoreCharts","propsMonitorModule","completenessAttributeInfo","timelinessAttributeInfo","accuracyAttributeInfo","conformityAttributeInfo","consistencyAttributeInfo","driftAttributeInfo","uniquenessAttributeInfo","completenessDataSetInfo","timelinessDataSetInfo","accuracyDataSetInfo","conformityDataSetInfo","consistencyDataSetInfo","driftDataSetInfo","uniquenessDataSetInfo","dqRenderGroup","modalData","DefaultDatasetData","DefaultDataSet","DefaultAttributeData","DefaultAttribute","CustomDatasetData","CustomDataSet","CustomAttributeData","CustomAttribute","initialCount","fKey","isAdvancedFilterApplied","showAttributes","dqRenderModalChart","chartLevel","noErrorCount","is_same_col","noErrorDatasetCount","is_same_data_col","datasetList","filteredDataset","lastDiv","selectedDatasets","selectedAttributes","not_computed","arr","showErrorsOnly","aggregateOptions","compareDatasetOptions","compareType","compareAttributeOptions","idValue","reject","showAggregateError","canShowAggregateOptions","is_error","unshift","customGridKey","customKey","propsStartDate","startDateInside","propsEndDate","endDateInside","timeVals","isBootStrapColumn","showHeatMap","showSettingsMenu","scale","colorCode","lineColorCode","showContribution","selectedIntegration","compareDataSrc","considerEndTime","chartTimeFilter","hideDistanceFilter","getDefaultDateRangeOptions","setShowMoreData","decryptMsg","CryptoJS","DES","decrypt","enc","Utf8","mode","ECB","pad","Pkcs7","incomingJSON","AES","encrypt","incomingString","decryptedRes","getFeatureAccess","featureAccess","fa","featureAccessData","filterOptions","currOption","subOptions","currSrc","_separator","selectMetricType","inputSQLTxt","validStatus","inputSQLQuery","Parser","err","isValidSQLQuery","multiLines","customDateFormat","date_str","toGMTString","capitalizeFirstLetter","string","getTrimmedNotificationMessage","notificationData","substring","dqpRenderGroup","dqpRenderModalChart","dqpGrid","getThumbnailChartsDqpErr","idInput","headerName","timelinessData","newData","uniqid","random","getMonitorTabDQPListViewTableData","dqListData","followedAttributes","dqData","timelinessDataValues","followAttributes","totalLength","set","previousTime","filteredTimelinessData","filteredTimeliness","follow_attributes_details","follow_status","thumbnailChartsAttributes","getDatasetsWithDuplicateRows","DatasetsWithDuplicates","some","getConvertedSize","bytes","dm","sizes","urlRegex","userNameRegex","userInput","getNoOfDuplicateRows","noOfDuplicatesRows","getAttributesWithDuplicateRows","attributesWithDuplicates","formModelVersionMap","modelVersionMap","modelsDropDown","modelsDataMap","modelTypeMap","currModel","currModelId","ddItem","mtOptions","checkUniqueModelABCombination","modelAVersion","modelBVersion","modelCVersion","existingVersions","currCombinationList","matching_first_2_found","isThirdMatch","getABCompareViewModelSummary","modelErrMap","createdTimeStr","modifiedTimeStr","lastComputedTime","last_computed_time","cDateObj","mDateObj","getSuffixedDate","modifiedTime","lastComputedTimeFormatted","lct","abKeyValueSummary","modelHasError","lastProcessedTime","getABChartData","combinedData","currModelCharts","requiredMetricName","fullChartInfoForCurrMetric","currChartData","data_source_name","getChartsWithMinTime","timeArr","minTime","requiredChartIndices","currVal","currMoment","minMoment","isAfter","isBefore","mergeTimelines","abChartDataCombined","clonedAbChartDataCombined","prevLine1","prevLine2","prevLine3","time1","time2","time3","combined_time","updatedLine1","updatedLine2","updatedLine3","line_1_fake","line_2_fake","line_3_fake","currIndexTimes","shift","point","avgPoint","is_fake_line1","is_fake_line2","is_fake_line3","getModelABCombineChartsInMonitor","currModelAB_id","model_ids","mappedChartData","thumbnailData","detailedChartData","thumbnailDataSections","recentTimeValueInChart","idKeyStr","modelAccuracySection","detailedSections","modelMonitoringSection","model_id_1","model_id_2","model_id_3","chartData_1","chartData_2","chartData_3","metricNames","uniqueMetricNames","currentMetric","sectionType","combinedChart1","combinedChart2","combinedChart3","reqKey","clonedCombinedChart","getMonitorCompareViewTableData","modelABData","modelInfoMap","showMoreData","errMap","fullShowMoreData","dataSetLevelMLCharts","attributeLevelMLCharts","currModelID","getModelErrorStatusForModelAB","tableRows","abDetailedChartData","currAB","currentRow","modelNameData","model_1_data","model_1_summary","model_2_data","model_2_summary","model_3_data","model_3_summary","abChartData","thumbnailChartsData","date_obj","dayValue","lastDigit","getModelNameMappedCharts","modelABCombinationChart","currChart","getTotalShowMoreDataPointsCount","filterBasedOnModelAB_ID","mpCompareViewTableData","selectedModelABID","currentTableData","currRow","getModelOptionsAssociatedWithAB","currABData","mlModelOptions","filterBasedOnMetricNames","requiredMetrics","requiredFullScreenData","currData","performTimeFilterForModelABCombinedCharts","line_1_values","line_1_status","line_2_values","line_2_status","line_3_values","line_3_status","filtered_line_1","filtered_line_1_status","filtered_line_2","filtered_line_2_status","filtered_line_3","filtered_line_3_status","clonedData","getAllMetricRecencyInfo","otherMetrics","recencyMetrics","recencyKeys","otherKeys","intKey","recencyIntegData","otherIntegData","recencyIntegDataKeys","recencyMetricDataKey","recencyMetricKey","recencyKey","recencyValueKey","formatNumber","formattedNumber","Intl","NumberFormat","notation","maximumFractionDigits","enablePowerBiTab","checkSessionForRedirection","fullAttributeName","arrSplit","miniText","getChartTooltipHeaderNestedRecord","tooltipTopHeader","shortenedName","attributeTooltip","getVersionNameFromData","checkNewRowCnt","get_edit_component","component_name","env_value","editComponent","metrics_name","datasetInfo","additional_details","alert_item","ex_consume_web_hook","ViewContent","getPartitionTable","SpecifiedDatasetTable","notificationChannel","removeClass","innerHTML","startWith","hadPartition","addClass","notifications","paginationSize","renderOption","EditActions","setConnection","renderActionButton","onClickFunction","classNameValue","buttonIconName","toolTipContent","showButtonText","divItems","FormattedKeys","getFormattedKeys","endsWith","ConnectionShow","isModel","viewTooltip","tooltipContent","editTooltip","viewShow","handleShow","setAddDS","faEdit","deleteShow","faTrash","followComponent","followStatus","changeTab","faBolt","hideModelAlertsTab","faCoins","modelABState","modelABShow","faSpellCheck","Modal","view","viewClose","Row","connection_show","updateTable","connectionClose","canShowDelWarning","closeDeleteWarning","delete_component","showModelABPopup","modelABClose","modelVersionState","modelVersionClose","TeamEditAction","disableUser","handleRoleChange","getRoles","roles","groups","department","organisation","ugmDetails","ModelTitle","buttonStatus","DisableEditDelete","handleEditTeamMate","IntegrationEdit","useState","setDelete_show","setView","setConnection_show","integrationDetails","TeamEdit","MLModelEdit","setDeleteWarning","setModelAB","setModelVersion","getExistingABData","availableModels","modelVersionShow","modelHasModelABConfiguration","AlertEdit","edit_title","MetricsEdit","isActiveMetric","metricStatus","setMetricStatus","useEffect","unique_key","ConsumeEdit","delete_case","pipelineButtons","ButtonActions","disableApprove","approveShow","rejectShow","faTimes","approveUser","approveClose","handleRequest","rejectUser","rejectClose","TeamTableButtons","setApproveUser","setRejectUser","ImageComponent","QualdoDataTable","onPageChange","handleSearchOperation","handleDeleteOperation","handleSeeMore","hideSizePerPage","tableData","isDelete","selectedGroup","isSeeMore","isSeeMoreId","prevProps","animate","scrollTop","prevClassFlag","each","hasClass","before","ml_model_data","metricsDataDefault","consume","consume_pipeline","billingDetails","showTooltip","nextDate","pbierrordashboard","actions","pbistatus","for","data-mappingid","pbimapping","setupMapping","faSitemap","faPencilAlt","headerKeys","headerValue","datasetData","isDatasetRowFound","rowItems","follow_attribute_details","updatedAttributeStatus","items","pageLimit","pageList","text","sizePerPageList","sizePerPage","pageStartIndex","prePage","nextPage","firstPage","lastPage","paginationPosition","pageLimitCustom","pageOptions","actionType","cell","rowIndex","customGetActionComponent","getActionComponent","getButtonComponent","pdfdownload","Actions","cursor","pireportdatasetfullscreen","faWindowRestore","pireportfullscreen","pageredirection","to","faExternalLinkAlt","curobj","toggleClass","parent","hasData","lengthLimit","getDefaultPaginationOptions","getCustomPaginationOptions","pages","p","renderRow","onSizePerPageChange","currSizePerPage","handlePageChange","changeGroup","showpartitions","changePartitions","n","align","rowClasses","customRowHighlighter","connection_status","addClassFailure","classFuncForCols","getCustomClassForColumns","colIndex","is_table_not_sortable","not_sortable","columns","convertData","order","dataField","rowA","rowB","tableIDFormatter","afterSearch","newResult","BindedCustomSearchBar","clearSearch","onClear","navigateFirstPage","onSearch","pagination","paginationFactory","paginationProps","paginationTableProps","keyField","search","toolkitprops","classNameForTable","searchProps","bootstrap4","bordered","responsive","baseProps","wrapperClasses","classes","tableHeaderClass","tableBodyClass","faArrowAltCircleRight","footer","faTable","NoErrorInPreview","event_name","mixpanel","track","postMixPanelIdentifyData","identify","postMixpanelPeopleData","people","init","debug","NoErrorComponent","timeStr","navigator","userAgent","CHART_TYPES","loadChart","promise","defaultExport","default","chartMap","d3","d3Module","tip","d3Tip","ChartBody","toggleHelpSection","hideTextLegendArea","showTextLegendArea","showTextLegendAreaContent","handleChartZoomChange","newchartzoom","chartZoom","renderVis","hidePartitions","selector","visPromise","colorType","expand","customHeight","compareChart","isNonTimeSeries","datasetVersion","chartzoom","checkedAttributes","checkedPartition","relationshipCheckFilter","showSliderPopover","allowRelationsFilter","resetZoom","chartHelpText","chartHelpTextHide","relationshipApplyFilter","zoomIn","zoomOut","relationshipCheck","loadAsyncVis","chart_data_v1","visType","visPromiseLookup","warn","zoomvalue","zoom","scaleExtent","on","g","select","trans","currentEvent","transform","panX","maxX","tx","panY","maxY","ty","graphzoomlevel","transition","duration","attr","scaleTo","showChartFilter","showParititionFilter","attributeLevelChart","allowPartition","viewBox","xmlns","fillRule","clipRule","showAttributeFilter","allowAttributes","showZoom","clip-path","step","vertical","classValue","initialState","relationship","dataset_relationship","selectedMlDataSource","selectedEnvironment","chipData","mlChipData","processingStatus","mlRelationship","modelABDataLoaded","userNotificationData","loaded","unreadNotifications","allNotifications","completeLoadInitiated","recencyDetails","recentHistory","dataSize","preFetchMetaData","prefetchDatasetDetails","prefetchRecencyDetails","prefetchRecentHistory","prefetchDataSize","prefetchModelABData","preFetchUserNotifications","preFetchMetadataDetails","ipData","noIntegrationStatus","discoverPageDataSource","datasetLastProcessInfoOver","datasetLastProcessInfo","dqPreview","mlPreview","performancePreview","driftAttributeInfoCount","mlModelDataSetInfo","mlModelDataSetInfo2","mlModelErrorFetch","mlModelErrorAttributeFetch","mlModelPerformanceInfo","modelPerformanceFetchCompleted","recencyPreview","preFetchMonitorPreview","preFetchMonitorModelInfo","preFetchModelDetails","preFetchMetrics","preFetchFollowAttributes","preFetchMonitorListViewData","fetchInfo","listViewTableData","combineReducers","action","attribute_data","dataset_data","isArray","mlDataSource","mapping","userNotificationResult","isReset","notificationInState","newUnreadNotifications","newAllNotifications","userNotificationID","notificationID","currUnreadNotifications","notification_id","currAllNotifications","reqNotification","updated_state","modelABList","stateModelInfoMap","lastRefreshOfDatasets","requiredRes","incomingData","discoverPageData","currIntData","currSource","currPageData","page_data","chartContent","chart_content","newMlData","previousMlData","prev_ml_keys","current_key","payloadPerformancePreview","fetchState","previousAttributeData","payloadCompletenessAttribute","newAttributeData","prev_completeness_attr_keys","previousData","payloadCompletenessDatasetInfo","prev_completeness_keys","previousTimeAttributeData","payloadTimelinessAttribute","newTimeAttributeData","prev_timeliness_attr_keys","previousTimeData","payloadTimelinessDataSetInfo","newTimeData","prev_timeliness_keys","previousAccuracyAttributeData","payloadAccuracyAttribute","newAttributeAccuracyData","prev_accuracy_attr_keys","previous_key","previousAccuracyData","payloadAccuracyDataset","newAccuracyData","prev_accuracy_keys","previousDriftAttributeCount","newAttributeDriftData","previousDriftData","payloadDriftDataset","newDriftData","processedKeysDriftDataset","newPayloadKey","previousConformityAttributeData","payloadConformityAttributeInfo","newConformityAttributeData","prev_conformity_attr_keys","previousConformityData","payloadConformityDataSetInfo","newConformityData","prev_conformity_keys","previousConsistencyAttributeData","payloadConsistencyAttributeInfo","newConsistencyAttributeData","prev_consistency_attr_keys","previousConsistencyData","payloadConsistencyDataSetInfo","newConsistencyData","prev_consistency_keys","incomingNewData","previousMLAttributeData","newMLAttributeData","modelKey","previousModelData","modelLevelData","updatedModelData","metricKey","incomingMetricData","incomingNewDataDS","previousMLData","newMLDatasetData","previousPerformanceResults","payloadMlModelPerformanceInfo","newPerformanceResult","payloadMLModelDetails","newModelDetails","previousDQListView","currentDQListView","newDQListView","isRecency","currValue","_currKey","listKey","previousListData","currentListData","previousUniquenessAttributeData","payloadUniquenessAttributeInfo","newUniquenessAttributeData","prev_uniqueness_attr_keys","previousUniquenessData","payUniquenessDataSetInfo","newUniquenessData","prev_uniqueness_keys","persistConfig","storage","localforage","persistedReducer","persistReducer","rootReducer","createStore","Mediakind","vContainerRef","useRef","player","playerConfig","ui","playback","muted","autoplay","preferredTech","streaming","sourceConfig","hls","drm","clearkey","LA_URL","load","MKPlayerSDK","unload","current","play","call_Update_api","call_iam_get_api","role_id","role_name","findQuantileForProgress","currentUsage","maxAllowedUsage","progressPercentage","usedPercentage","request_status","increaseDataLimit","requiresDataLimitUpgrade","showInformationBanner","maxDataLimit","new_data_limit","closeWarningMessage","edition_details","next_billing_date","change_request","resultData","requestTable","teamUserdata","teamMateTable","teamMateData","invitationData","firstDatum","invitationTable","inviteData","user_details","org_name","phoneNo","user_profile_image","dataUsage","dataLimit","mydate","setDate","cycle_end_date","cycle_end_data","dataUsageDetails","dataUsageSize","progressbar","mlModelCount","cycleEnd","cycleEndDate","paymentStatus","planInformation","planNameKey","metaDetails","addDataCost","additional_data_cost","addModelCost","additional_model_cost","currencySymbol","planInfo","planBenefits","cost","price","monthlyLimit","maxMlModelLimit","comments","usageExceeded","warning_message","validPaymentStatus","messages","subscriptionInfo","checkAndUpdateTopButton","emailsubscription","emailsubscriptioninitalloader","storeIpData","whitelisted_ip","old_whitelisted_ip","client_id","client_secret","cloud","updated_status","disableSave","disableCancel","editButton","updateloader","close_tag","preferences_data","eData","uid","eid","emailsubscriptionid","preferences_data_email","sessionemail","handleIAMSubmit","daily_digest","weekly_digest","monitor_report_weekly","monitor_report","pager_duty_report_weekly","pager_duty_report","nagios_report_weekly","nagios_report","reply_to_post_you_follow","reply_post_notify","mention_email_notification_from_event_stream","mention_email_notify","notification_from_monitor_alerts","monitor_alert_notify","reply_to_your_comments","reply_comments_notify","passwordData","passwordDataValue","profile_data","sendInvite","descriptionErrorMsg","updateWhitelistedIp","old_whiteleted_ip","invalid","chartNameMapping","chartSvg","stroke","strokeLinecap","strokeDasharray","strokeLinejoin","end","chartToggle","forwardRef","panelchartid","svgIcon","distanceToggle","data-name","settingsToggle","AggregateTogle","metricsTogle","ChartFilterHeader","handleEvent","setCompare","getChartDataFromResult","setChartFilter","setShowSaveImage","saveChartScreenShot","settingFilter","setModelPerformanceTimeFilterChartData","showCompare","closeCompare","setAttrCompare","setAggregate","setMlCompare","setMlAttributeCompare","expandChart","headerRef","createRef","usePropsTitle","customChartKey","settings","multipleLines","boxplot_data","compareDataSet","backdrop","compareModelOptions","compareMLAttributeOptions","chartID","showSaveImage","loadValue","height1","height2","saveImage","mapModel","currentID","customTimeFilterFunction","errorNotAvailable","isModelPerf","downloadFileName","ChartId","divId","domtoimage","toJpeg","bgcolor","dataUrl","link","createElement","download","ExChartName","filters","exData","dq_chart_points1","compareList","compareMlDataset","compareMlAttributes","stateKey","eventData","compareLabel","Data","compareChartType","stateData","chartHasValidPoints","chartId","xValue","toolTipTitle","errorRowHighlighter","referenceColumnHeader","notShow","showViewAllButton","chartDataPoints","y2Value","CompareSrc","Item","eventKey","onSelect","showCompareInHeader","qd-cw-modal-open","currentHeaderRef","currentFooterRef","offsetHeight","expandChartId","renderChart","ele","viewboxsize","setAttribute","metricsOptions","attributeProfileOptions","widgetName","widgetClass","isCompareChart","isBoxplot","isMultiBar","isMultiLine","attributeMonitorPage","variant_list_view","ErrorPercentage","LastErrorPercentage","MetricName","canShowMetrics","Drift","expandIconClass","pageHeight","documentElement","page_height","chart_body_class_name","doNotShowChartDropdowns","hideChartOptions","renderCompareOptions","faDownload","hidden","hideTopMenuOptions","Toggle","Menu","fillAggregateDropDown","showMetricError","getCompareHTML","points","Banner","CopyRights","classDetails","showCopyRight","CopyRightsFooter","perform_login_initial_setup","setPasswordLink","feature_access","encryptedFA","connector_added","rememberMe","perform_remember_me_checks","passwordToken","mandateToResetPassword","One","$email","redirectionLink","router","setUpComplete","isPlanExpired","isInBufferPeriod","setTenantId","isPbiEnabled","dataLimitExceeded","redirectUrl","Login","rememailId","rempassword","remcheckbox","azLoaderClass","hideAlert","msiLogin","login","getForgotPasswordContent","REACT_APP_CUSTOM_NODE_ENV_LOGIN","req_details","loginSchema","DEPLOYED_ENVIRONMENT","REACT_APP_CUSTOM_NODE_ENV","LOGIN_ENVIRONMENT","LOGIN_CLOUD","REACT_APP_CLOUD","isFirstTimeLogin","aria-label","faEnvelope","autoFocus","font-size","font-family","font-weight","fontFamily","onlyActiveOnIndex","setDataSource","setMlDataSource","addRelationship","addMetaData","addDataSource","addInfo","addLastProfilingTime","addDiscoveryStatus","addProcessingStatus","addEnvironment","addEnvironmentDataSourceMapping","addDataSourceDataSetMapping","addDataSetAttributeMapping","setDataSet","addMonitorPreview","addPerformancePreview","addCompletenessDataSetInfo","addCompletenessAttributeInfo","addTimelinessDataSetInfo","addTimelinessAttributeInfo","addConformityDataSetInfo","addConformityAttributeInfo","addAccuracyDataSetInfo","addAccuracyAttributeInfo","addDriftDataSetInfo","addDriftAttributeInfo","addConsistencyDataSetInfo","addConsistencyAttributeInfo","addMLDataSetInfo","addMLAttributeInfo","addMLModel","addModelPerformance","addModelDetails","addMonitorDQListViewData","addMetrics","addDatasetVersions","addUniquenessDataSetInfo","addUniquenessAttributeInfo","addRecencyDetails","addRecencyPreview","addRecentHistory","addDataSize","prefetchMonitorState","ErrorHandler","goToLogin","Home","setPasswordPage","setLoginPage","isLoginPage","route","SignupForm","setEmail","qualdoEdition","distinct_id","$first_name","$last_name","redirect_to_login","pathname","confirmPassword","confirmPasswordIcon","confirmPasswordType","changeConfirmPasswordIcon","oneOf","phoneUtil","PhoneNumberUtil","getInstance","isValidNumber","invalidRequest","showInvalidRequestModal","goToQualdoWebsite","faArrowRight","isJoinTeamButton","faUser","faBuilding","faPhoneAlt","data-testid","TeamSignup","adminSchema","faArrowLeft","faUserFriends","GoogleSignup","googleSignUp","prefilled_user_name","prefilled_email","faFlag","readonly","EmailNotification","isPasswordThankYou","signupType","isNormalSignup","pageTypes","Signup","setSignupPage","setGooglePage","pageType","responseText","renderPage","WarningMessageHeader","quick_start","hidebar","closeWarning","setting","theme","launcherText","widgetTitle","launcher","chatLabel","contactForm","fields","prefill","HelpZendesk","zendeskKey","OfflineComponent","userToggle","helpToggle","faQuestion","customLink","bellToggle","unReadMsg","faBell","activeItems","NavigationHeader","onKeyDownHandler","keyCode","handleHelp","check_access_billing","showWarning","selectedView","notificationLoaded","zendeskShow","warningMessage","prefetch_load","getNotificationHeaderData","internetstatus","reload","shrinkIt","scroll","zE","activate","hideOnClose","faHdd","faDollarSign","requests","Dropdown","faUserPlus","getNotificationSendTimeInMinutes","faUserMinus","getErrorIcon","permissions","permissionsList","Link","activeClassName","faChartPie","faShoppingBag","faHistory","notificationAlertClassName","notificationCircleCount","unreadCount","hideProfileModelTab","enableDiscoveryTab","Navbar","Brand","aria-controls","Collapse","Nav","NavDropdown","onKeyDown","renderNotifications","alignRight","faHeadset","faRocket","faBook","onItemClick","faUserCog","faSignOutAlt","polling","interval","pageRefresh","userNotificationDataFromProps","currStateUnreads","propsUnreadsCount","unreadCountMisMatch","SimpleHeader","canShowQuickStart","aria-expanded","faIconMapping","faHourglassHalf","faUserCircle","faHandshake","faSearchengin","faTachometerAlt","BreadCrumb","sidenav","showSidenav","separatorData","DefaultHome","ResetForm","resetPassword","reset_password","auth_token","resetSchema","reset_password_token","setPassword","successMessage","setSchema","gotoLogin","setPasswordForm","InitiateSetPassword","emailSent","URLWidget","MLModelEnvironment","downloadSampleData","URL","createObjectURL","goToChoosePlan","goToPlanPage","setConfirm","acceptCondition","show_add_model_modal","showFileUpload","checkEnv","enableModelVersionCreation","setFile","showButtonAction","clickAction","updateEnvironmentList","topOfElement","querySelector","offsetTop","top","behavior","containerchooseenv","ReactDOM","findDOMNode","refs","scrollTo","envSchema","noOptionsMessage","faCloudUploadAlt","onDrop","getRootProps","getInputProps","DSEnvironment","setDataLimit","show_add_datasource_modal","AddDataSources","DatasetButton","handleMore","handleRefreshModalClose","handleDataset","getStatus","showMore","showDataset","runEndTime","successCount","failedCount","progressInfoTotal","progressInfo","successRefresh","failedRefresh","runEndTimeValue","dataProcessingInfo","lastRunTime","datasetlist","partitionlist","currentDatasetName","success_refresh_count","failed_refresh_count","Button","partitioninfo","Table","ProgressBar","DatasetError","handleErrorModal","handleErrorModalClose","itemVal","getErrorText","defaultErrorMessage","childData","current_processing_info","RefreshesTable","getErrorComponent","return_item_values","return_items","renderCustomPageRow","convertCustomMetricData","AddModelButton","showWithTooltip","onClickFunc","addButtonClassName","ConfigureABTest","modelA_version","modelB_version","modelC_version","ab_data_to_post","isAB_Edit","existingConfig","tableRowProps","updateVersionOptions","remove3rdSection","availableModelAVersions","selectedModelA","selectedModelAVersion","incomingProps","currentModelDetail","availableModelBVersions","availableModelCVersions","selectedModelB","selectedModelBVersion","selectedModelC","selectedModelCVersion","selectedModelDetailID","modelA_ID","modelAType","modelBOptions","modelCOptions","show3rdSection","availableModelOptions","prevModelAType","modelA","modelB","modelC","setFieldValueFunc","currVersions","existingABData","current_A_Version","bVersion","cVersion","current_B_Version","aVersion","aModel","modelCVal","current_C_Version","bModel","cModel","getModelABConfigurationSchema","getInitialValuesForFormik","canShowABModal","scrollable","closeCurrentModal","data-repeater-list","data-repeater-item","update3rdSectionStatus","TableCellButton","toolTipContentVal","ModelABEditActions","go_to_monitor_page","modelAbId","matchingData","edit","modelABTableProps","showEdit","faCheckDouble","enableDeleteWarning","deleteWarningStatus","closeEdit","ModelABEdit","setEdit","handleModelABDelete","preFetchRelationshipData","tenantData","profileRequestData","profileResult","latest_processing_status","getLastProfilingTime","totalPage","pageResult","retries","meta_data","formEnvData","metadata","envData","dataSourceInfo","dataSetInfo","idList","envId","tenantID","profile_res","addModelABDataToList","searchResults","search_results","data_size","metadata_details","preFetchMonitorInfo","apiReqData","monitorModuleProps","prefetchRecencyInfo","persistInfoData","integrationIds","integration_ids","last_processed_time","showLoader","metricList","monitorPreview","mlDatasetInfo","mlAttributeInfo","filterPreviewData","filterData","list_view_data","reData","recencyResult","recencyProfileResult","monitor_list_view","curr_result","curr_list_view_data","recencyData","monitor_others","recencyPreviewData","preview_res","Configure","navKey","pre_load","formDataOnce","setAddModel","closeToast","handleTab","showModelABConfigureSection","renderRefreshTable","sleepIntervalChanged","cancelSleepInterval","submitSleepInterval","renderScanIntervalComponents","renderScanIntervalContent","toastStatus","current_tab","isAddModel","isModelVersion","isAddDS","model_ab_updated","datasourceErrorRefreshesId","modelRefreshesId","intervalId","isSleepIntervalErrMsg","currInterval","isSleepIntervalMaxErr","prevValue","hasModelABConfiguration","currentAB","modelAbData","updatedABList","prevList","currRowData","abRowData","setModelABDataToList","prevABData","newList","getData","sectionNavigation","initial_prefetch","preFetch","setUserNotificationToState","addUserNotificationToState","hideConfPageModelTab","newEnvironmentData","existingEnvironmentDetail","bulk","reloadData","toastMsg","toastClass","toastIcon","toastLink","toastHeading","toastBulk","tableProps","modelDataStrings","cellValue","mlDropDown","getModelABTableComponent","getModelABTableIDFormatter","anchor","addEventListener","Toast","onClose","delay","autohide","Tab","Container","defaultActiveKey","Pane","renderTableds","renderTableml","renderModelABTable","DefaultMetricsEdit","handleEditButton","initial","window_count","existingChecks","checkName","matched","currentMetricName","getMetricValue","renderExample","Card","handleCloseCustom","handleFollow","handleCardFollow","tabValue","showFollowModal","additionalDetails","background","chartLine","showFollow","hide_edit","getEditComponent","getFollowButtonComponent","CardGroup","colors","rowNo","consistencyCount","metrics_key","metric_value","Boolean","renderCard","getMetricOptions","consistencyMetricsList","selected_metric_id","selected_metric_name","selectedType","o","consistencyMetric","DQMetrics","handleCloseConfigure","activeTabKey","consistencyConfigure","seemore_table_data","seemore_table_header","dataConsistencyMetrics","tableData_default","integrationOption_seemoretable","showToast_seemoretable","dqmData_seemoretable","datasetInfo_seemoretable","tableData_default_seemoretable","consistencyCardDetails","allDataAvailable","emptyTable","isData","getConsistencyMetricList","hide_choose_plan_button","show_custom_metrics","show_custom_metrics_modal","tableData_custom","faCubes","renderTable","renderCustomProcess","ModelMetrics","defaultMetricCardData","Metrics","activateKey","hideModelMetricsTab","mountOnEnter","CustomTreeSelect","currentNode","selectedNodes","cur_data","toggleAll","findIndex","handleSelectedAttributes","renderDataset","selected_id","selected_id_index","parent_data_set_id","temp","childindex","checkedAll","CheckedList","handleAttributesSelection","onAction","node","seletedDatasource","is_child_dataset","onNodeToggle","handleExpand","onFocus","loadFilterDataset","pmname","parms","filterDatasetId","filterMetricsId","filterAttributeId","filterUncheckedDatasetId","filterdDatsource","fiteredDatseset","fitlerdDate","fitlerdAttr","datasetid","off","parents","eq","cur_id","keyup","checkall","selectplaceholdercnt","_data","prependIcon","data-type","fullscreenviewselect","texts","noMatches","MULTI_CLASSIFICATION_EVALUATION","BINARY_CLASSIFICATION_EVALUATION","MULTI_CLASSIFICATION_ACCURACY","BINARY_CLASSIFICATION_ACCURACY","CLUSTERING_WITHOUT_RESPONSE_DATA","CLUSTERING_WITH_RESPONSE_DATA","getOptions","isMPCompareView","accuracyMetrics","evaluationMetrics","modelRuntime","modelMonitoringData","labelName","startCase","issueMetrics","c_metrics","met","modelExplainability","typeMappings","Option","selectProps","isSelected","changeDataSourceAdvanced","dataSourceOption","datasourceId","originalAttributeOptions","selectedDatasource","selectedDataSet","handleChangeDataset","groupedlist","mapValues","groupBy","changeAttribute","showDropDown","completeTableData","detailedCharts","toDate","noDataAvailable","thumbnailVal","updatedThumbnailCharts","getFilteredData","previousTimeArr","refresh_time","parentDatasets","dataFilteredValues","handleCheckClick","handleTime","getMetricsOption","pmallflag","allchecked","metricsOption","metricsList","getPlaceholder","defaultText","selected","customSelectDatasource","CustomTreeFilter","handleDatasourceoptions","handleDatasetsoptions","handleSelectDate","handleClearAll","loadFilter","handleExpandAttributes","handleSelectedMetrics","filterDataInitial","dateDisplay","renderDatasetDD","seletedDatasourceId","seletedDatasourceLabel","seletedDatasourceName","filteredDatas","fullscreenview","metricsSelectedOptions","clearAllFilterData","pmData","filterIntegrationData","finalList","mappedAttributes","parentAttribute","selectedList","splitLable","loopData","childAttributes","parentName","parentAttributeList","AllChecked","selectedListchild","childAttributeList","customlabel","chosenLabel","applyDateFilter","datasourceID","loadparams","loadDataSourceRender","pm","applyDataset","clearAllFilter","datasourcechange","handleFocus","showDatasets","loadFilterDatasetFullScreen","loadFilterFullsceen","showMetrics","showAttributesCheckbox","showerrors","changeShowErrors","showErrorsOnlyCheckbox","viewOptions","showErrorCheckbox","showParitionCheckbox","getMetaDatas","api2","childDatasets","existingList","noDataFound","selectedDataSourceID","formDatasetOption","child","childDatasetMap","partitionsLength","formDatasetsList","formAttributeOption","formAttributesDict","integrationMapping","initialData","getMonitorInfo","selectedDataSourceName","getRecencyInfo","formMonitorChartData","getMonitorListViewData","defaultDataSourceOption","keyData","defaultDatasourceInside","DqErrorFullScreen","setFullScreen","renderGroup","updateFullScreenData","fullscreenapplyDataset","fetchDataSource","applyFilter","getFetchMonitorListViewData","tempFullScreenData","fullScreen","showFullScreen","intial_datasource_id","intial_datasource_name","intial_dataset_Id","intial_attribute_Id","datasource","applied_dataset","applied_attribute","applied_metrics","applied_start_date","applied_end_date","applied_dataset_level","isDatasetLevel","tempFullScreenDataAttribute","fullScreenAttributeData","intial_datasource","intial_datset","intial_attribute","displayNumber","chart_data_value","chartDataValue","renderModalChart","defaultDatasetInside","datsetid","innerloop","defaultAttributeInside","datasetKeys","renderAttributeCharts","rowValue","timeValStr","selectedDataSourceobj","allData","newDataAttribute","metricundfisedcheck","filteredMetrics","startdate","enddate","filteredAttributeData","filteredAttribute","filteredMetricsAttributes","pmStartDate","pmEndDate","pmDateDisplay","dataset_level","selectedMetricsCount","fullScreenClassVal","closeFullScreen","aria-hidden","FollowComponent","followClassName","isHovered","onMouseEnter","handleHoverEntry","onMouseLeave","handleHoverExit","handleFollowButton","faPlus","ThumbnailChartList","startData","getHorizontalSection","renderSingleThumbnailChart","classDataForUp","classDataForDown","classDataForNoChange","valLength","isPositive","latestValue","secondLatestValue","isValueDecreases","isValueIncreases","classForNumber","singleChartData","chart_level","firstNumClass","firstNumber","secondNumberStrongClass","secondNumber","secondNumberClass","nSingleChartData","chartVals","Y2_Values","firstNumberStrongClass","classData","getClassInfoForChartStatistics","classForStrongElement","showSecondNumber","isErrorChart","sectionKey","noModelConfigured","_d","allHorizontalSections","listData","CustomSelect","allowSelectAll","allOption","defaultProps","AttributeNameComp","tooltipPlacement","DqListViewContent","getDQListTableComponents","changeDataSource","changeDataset","closeFullScreenMode","handleDQListViewTimeFilter","getCustomClassForActions","toggleFilter","isInFullScreenMode","lastProfilingTimeData","isFilterMode","filteredRows","filterMode","default_filter_data","datasourcename","start_date","end_date","localadditionalInfoFromParam","latestdate","minDate","str","lastProfiledDate","fullScreenClassKey","finalFilteredData","restrictchilddataset","setCustomFilterValues","considerEndAlone","_singleThumbnailData","actChartData","valArr","versionNames","newValues","newDrift","newVersion","filteredArr","filteredLength","attributId","updatedFollowAttri","addFollowAttributes","dqSchema","noDataFoundMessage","lastProfilingTimeDict","lastProfiledTime","isClearable","closeMenuOnSelect","hideSelectedOptions","controlShouldRenderValue","enableReinitialize","setValues","setErrors","EnableConsistency","go_to_metrics_page","MonitorPortlet","defaultModel","showHelpIcon","helpIconTitle","ChartGrid","hideChartHeaderLabel","chartKey","defaultKey","data-placement","DqErrorGrid","dqRenderAllCharts","updateCharts","gridTitle","showOnlyErrorData","getAggregateOptions","getAttributeOptions","getDataSrcOptions","srcOptionList","datasetsOptions","datasetindex","loopattr","defaultmetrics","_modalData","isFilterChanged","disableShowMore","dataSetChart","aggList","profileDataList","renderGridItem","DqError","updateGridData","closeLastProfiledTime","setDqPreview","dq_metrics","filterStartDateStr","startDateObj","filterEndDateStr","endDateObj","allDQShowMore","updateTimelinessShowMoreData","allShowMoreData","filterTimelinessData","recencyDict","previewData","hideLastProfiledTime","completeness","uniqueness","timeliness","conformity","consistency","completenessDataSetList","uniquenessDataSetList","timelinessDataSetList","accuracyDataSetList","conformityDataSetList","consistencyDataSetList","driftDataSetList","completenessShowMore","uniquenessShowMore","timelinessShowMore","accuracyShowMore","conformityShowMore","consistencyShowMore","driftShowMore","visibility","fetchDataSourceData","cPMonitorModule","pPMonitorModule","isDataChanged","selectedDataSourceId","timelinessShowMoreData","newTimelinessDatasetList","allDQShowMoreData","Recency","dataFromProps","attributeKeysSplit","metadataSplitArr","keysSplitLength","isMetricsSectionFiltered","dateFromStr","exStartDate","keyNameMapping","CompleteData","prefetchCompleted","errorsNotYetComputed","hasValid","dataSources","addMonitorDQPreview","DqGridViewContent","fetchMonitorInfo","render","MonitorDQTabs","faChartLine","faList","firstDatasetUp","CustomSelectNestedCheckbox","groupedOptions","propsSelected","groupedKeys","propsKey","selectedFiltered","originalFiltered","optionFiltered","filtered1","original","isAllUnSelected","selected_Group","AdvancedFilterModel","changeMetric","changeAttributes","handleCheckClickErrors","attributesModel","metricOptions","underPerformModelIDs","customMetricsOptions","propsSelectedMlModel","propsAttributeOptions","changeModelInFullScreen","MonitorChartGroup","isTimeSeries","considerEndDate","dateObj","sub_header","ModelPerformanceGrid","setMlModel","initialSelectedMlModel","completeFullscreenData","currentModelID","currentModel","full_screen_data","updatedKey","dataLoaded","initialSelection","ModelEvaluationMetrics","hasEvaluationMetrics","formGroupedChart","propsChanged","gotUpdatedData","groupedData1","ModelPerformance","handleModelFilter","groupedChartData","completeGridData","newGridData","closeAction","selectedMLID","updatedGroup","allGroups","selectedModelId","modelProcessStatus","convertedTime","integration_profiled_time","modelCreatedDateObj","lpt","noModelConfiguredStatus","dataUpdated","CustomListInCell","getProfileListComponents","highlight","utcOffset","MPListViewFullScreen","lastProfilingTimeModelInside","MpListView","getMPListTableComponents","changeModelMPListViewTable","tableDataListView","modelFilteredData","selectedModelID","selectedModelInFullScreen","tableUpdated","filterApplied","selectedModels","selectedDateMoment","modelErrorSummary","errorSummaryData","modelFilteredRows","detailedChart","modelCreatedDate","filterModelErrorSummaryData","chartDate","currSelectedData","currentSelectedDateAsTxt","singleDatePicker","ABCompareViewAdvFilterModel","handleAndOrFilterSelection","useAndFilter","MpCVHorizontalSections","horizontalChartData","combinedKey","divPart","lineColors","isDoubleLineChart","areaColor","lineColor","chartA","chart1","chartB","chart2","chartC","chart3","getSingleChart","getCombinedChart","MpCompareViewChartGroup","MPCompareViewFullScreen","ABModelName","firstComponent","nameComponents","secondComponent","thirdComponent","BorderedSummary","keyValueData","titleClass","borderedTitle","getKeyValuePairs","showErrorButton","showModelErrorFS","ModelABSummaryList","summaries","ModelABThumbnailChartList","currSectionCharts","ModelErrListFullScreen","renderGroupItems","getFilteredChartData","advancedModels","completeModalData","attributeLevelGroupedData","datasetLevelGroupedData","groupId","isMLModel","isUnderPerformingGrid","chartHasNoError","modelID","attributeGrouping","datasetGrouping","keyPrefix","MpCompareView","getMPCmpViewTableComponents","modelABCompareViewCustomRowClass","changeModelMPCompareViewTable","showModelErrorPopupInFullscreen","closeModelErrFullScreenMode","compareViewDetailedChartData","mpCompareViewDetailedChartData","availableModelABData","addOnInfoFromParam","selectedModelAB_ID","modelErrFullScreenClassKey","isModelErrFullscreenMode","selectedModelIDFromSummary","modelErrShowMoreData","modelIDsForFullScreen","lastProcessedTimeOfSelectedModel","selectedModelABData","selectedMetric","currMetricName","mappedMetricName","selectedModelIDs","selectedModelCount","modelAB_Id","associatedModelIDs","canInclude","matchCount","currMatch","currKey","currSection","recentTimeInChart","selectedStartDate","selectedEndDate","thumbnailChartColumn","indexStart","currStartDate","currEndDate","currentStartDateAsTxt","currentEndDateAsTxt","dataChanged","filteredMlModelOptions","MonitorMPTabs","innerTab","additionalInfoFromParam","Grid","preSelectedModelID","selectedMLModelID","restoreTitle","selectedMLModelIDs","ModelError","setMlPreview","modelErrorDataCount","modelErrorAttributeCount","filteredGridData","innerData","valuesAvailable","lastProfiledTimeElement","MonitorButton","prevRefreshDate","latestRefreshDate","firstRefreshDate","finalComponent","cellValueElement","columnName","getFinalComponent","textContent","ShowAttributeModal","ShowDatasetModal","ModelErrorListView","getModelErrListTableComponents","closeAttributeModal","changeModelErrListViewTable","closeDatasetModal","fullScreenClassKeyAttr","fullScreenClassKeyDataset","showAttributeFull","showDatasetFull","lastProfiled","performanceError","finalElement","refreshedDatasets","notRefreshedDatasets","fullErrorInfo","selectedFeatureDriftsAttributes","newAttributes","existedAttributes","selectedDriftPattern","modelSummary","filterModelAttributesData","filterDqIssues","renderModalChartDq","renderDqGroup","renderAttributeGroup","MonitorERTabs","DqpErrorFullScreen","DqpListViewContent","onTreeChange","currentAttributeId","prevSelections","assignObjectPaths","stack","path","updateFollowAttributes","inital_filter_data","inital_dataset","inital_attibute","selectedDatasetlist","pos","offset","wX","scrollLeft","wY","wH","wW","oH","outerHeight","oW","outerWidth","loadid","left","filterType","data-id","data-value","DqpGrid","dqpRenderAllCharts","selectedDataSets","resetfullscreen","datsetidvalue","DqPerformance","driftOnly","fullscreenselect","emptyfilter","chartList","defaultDatasetCharts","defaultAttributeCharts","customDatasetCharts","customAttributeCharts","randomvalue","DqpGridViewContent","MonitorDQPTabs","renderChild","dq_chartview_metrics","Monitor","childTab","additionalInfo","hideMonitorModelTab","hideContent","reduxPerformanceResult","resultList","datasetLevelInfo","attributeLevelInfo","completeFullscreenDataModelPerf","tableDataModelPerfListView","mpCompareViewData","currDataCount","modelPerformanceDataModelErr","showMoreDataCount","pmdata","addModelPerformanceResults","dateDetails","date_details","filterStartDate","filterEndDate","dataFrom","dataTo","addMLDataSet","addMLAttribute","model_map","isDataset","activeKey","unmountOnExit","modelPerfTableUpdated","additionalInfoFromParamdp","dqChartViewmetrics","prevFullModelInfo","prevPropsDataModuleInfo","currPropsDataModule","finalObj","fullScreenDataChanged","modelABDataProps","modelABDataState","currFullModelInfo","modulePropsChanged","Notification","handleRadioButton","handleButton","renderNotificationForm","isClicked","PipelineTrigger","renderPipelineTriggerForm","pipeData","ModelAlertTab","DqAlertTab","Consume","SimpleBasicPortlet","Setup","diasableAddEnvBtn","Account","handleImage","reader","readAsDataURL","onloadend","firstNameClass","lastNameClass","companyNameClass","lastNameResult","firstNameResult","data-original-title","UpgradeComponent","confirmText","PlanHeaderInfo","buttonLabel","buttonAction","PlanChangeRequest","change_on","showCancelPlanChangeRequest","PlanChangeNotAllowed","callbackFunc","hideErrorMsg","error_message","PlanAndUsage","setFormState","showDataLimitExceedModal","hideDataLimitExceedModal","increaseDataLimitPlan","closeCancelPlanChangeRequest","cancelPlanChangeRequest","hideModelInfo","usageProgress","mlModelProgress","progressUsage","progressMlModel","planEndDate","parsedEndDate","setHours","setMinutes","setSeconds","setMilliseconds","parsedPlanEndDate","redirectToPaymentPage","resetDateFormatted","formattedPlanResetDate","showAdditionalData","showAdditionalMlmodel","additionalData","additionalMlmodel","additionalDataCost","additionalMlmodelCost","usage_reset_date_label","existData","existModel","replaceStr","cancelText","faPaperPlane","faLevelUpAlt","getResetTimer","aria-valuenow","aria-valuemin","aria-valuemax","viewNotification","getNotificationFullView","subpath","goToPlan","gotoTeamRequests","selectedViewAdditionalInfo","fullNotificationData","notificationCreatedTime","datasource_name","associated_models","is_dataset_error","additional_info","attributeLevel","transaction_id","error_type","customSubject","subject","title_1","return_value","is_user_defined","attribute_level_info","elements","attrIndex","current_value","actual_fill_rate","selectedNotificationType","updateRequestNotification","attribute_size","selectedViewAlertName","configuredQualityGate","alertNameToBeShown","is_ud_alert","configuredMetricName","confThresholdToBeShown","expected_fill_rate","computedMetricResValue","computedDriftResValue","actual_metric_value","configuredCondition","condition","eventTimeToShow","event_time","currRowCount","curr_row_count","prevRowCount","prev_row_count","currIncrement","incremental_row_count","prevIncrement","prev_incremental_row_count","getNotificationHeaderComponent","getNotificationSubheaderComponent","getAttributeNotification","redirectPlanPage","added_items","increased_column","deleted_items","decreased_column","changed_items","datatype_change","alert_limit_reached_notification_content","max_alert_limit","attribute_type","identified_time","current_data_type","prev_data_type","alert_limit_reached","error_msg","column_name","starting_index","date_column","refreshed_time","error_columns","getModelDatasetsNotRefreshed","section_1_items","NotificationLoader","CustomToggle","Notifications","handleSidenav","handleSidenavClose","setNotficationState","setNotificationState","selectedNotificationId","getSelectedNotificationId","invites","currentNotifications","notificationFilter","readNotificationClassName","ListGroup","renderNotificationContent","notificationStatus","current_notifications","hideModelNotificationTab","setNotificationFilter","faRedoAlt","TagsInput","tags","setTags","addTags","setStateValue","selectedTags","hideTextField","tag","closeTag","indexToRemove","onKeyUp","Preferences","toggleEmailGroup","checkedlist","email_user_status","UpdateData","clientIdIcon","clientSecretIcon","handleEdit","handleupdate","handleApprove","chechkall","btnchkalltext","clientidNameClass","clientsecretNameClass","clientIdsIcon","clientIdType","clientSecretsIcon","clientSecretType","placeHolder","renderKey","invalidIp","user_message","modelHeader1","modelContent1","modelHeader2","modelContent2","setInterval","checkallarr","emailsubscriptiondata","toastheading","allStatus","uniqueValues","new_ip","old_ip","o1","o2","approved","faChalkboardTeacher","Spinner","animation","faUserLock","selectAll","grp_id","email_group_id","email_group_name","TeamMate","handleDescription","emailId","qualdo_txt","faUsersCog","faMailBulk","Security","faUserShield","braintree","require","AddCardComponent","clientDidCreate","hostedFieldsDidCreate","submitHandler","showPaymentPage","cardTypeProcessor","getCardTypeImage","tokenizeFunction","handleCustomerName","cardComponentsValidator","getComponentClass","makeCurrentAsDefaultPayment","hostedFields","isBraintreeError","customerNameClass","customerName","creditCardErrorMsg","make_default","validation","is_valid","is_invalid","expiration_date","card_number","reqClass","componentInfo","braintreeAuthorizationToken","authorizationToken","client","authorization","cards","field","emittedBy","currentFiledId","container","isValidPrev","isPotentiallyValid","submitBtn","nonce","formIsInvalid","retrievedState","getState","mappedID","currentCompValidation","tokenize","Col","xs","sm","hideAddCardSection","PaymentCardsList","showEditCardsSection","makePrimaryCard","showEditSection","makeCardAsPrimary","isPrimary","faCreditCard","expires","showAddCardSection","EditCardComponent","handleExpiryDate","setExpiryDateStatus","submitEditDetails","validateExpiryValues","removeCardDetails","expiryDate","exCardDetails","customer_name","expiryMonth","expiryYear","customerNameStatus","expirationDateStatus","splits","monthPart","yearPart","monthIndex","yearIndex","currentYearStr","currentDate","difference","expiryRes","editData","showRemoveCard","Billing","updateAlertSection","getEmptyCardSection","setAutoDebit","showAddCard","isEditMode","showAlert","alertText","alertStatus","alertClass","renderCards","bt_token","companyName","addressLine1","addressLine2","city","zipCode","reqAddressID","pdfinfo","Receipt","aordercreated","anext_payment_date","country","matchedBillingAddress","company_name","address_line_1","address_line_2","zip_code","documentDefinition","htmlToPdfmake","billing_cycle","tableAutoSize","pdfMake","vfs","pdfFonts","createPdf","open","newAutoDebitStatus","currentCardIsDefault","currentCardDetail","cardDetailID","updatedAvailableCards","expiry_month","expiry_year","cardId","faReceipt","md","isopen","dismissible","ChangePassword","changePassword","changeOldPasswordIcon","oldPasswordType","oldPasswordIcon","currentPassword","newPassword","changePasswordSchema","verifyPassword","faKey","faHandPointRight","EDITION_LOGO","REACT_APP_CUSTOM_EDITION_LOGO","Settings","reRenderNavComponent","routeSelection","sideBarSelected","CycleEndData","selectedKey","editionDetails","loadingCompleted","planTitle","navSelect","renderNavContent","ENV_NAME","DATASOURCE","DATASET","RelationshipChartView","showMetricValues","ATTRIBUTE_NAME_COLUMNS","RelationshipListView","formTableData","renderDiscoverTableComponents","percentage","relationData","individualData","originalName","sourceAttribute","score","confidence_score","imports","tableList","destinationMeta","destinationDataset","destinationAttribute","CardHelpContent","renderAttributeCard","renderModelContent","MetricsCards","getCardData","filterInfoData","filterTimeData","allMetricRecencyInfo","subMetricId","computedMetricValue","lg","faCloud","faFolderOpen","empty","unique","duplicate","suffixText","renderTooltipSummary","Summary","datasourceCount","datasetCount","attributeCount","lastRefresh","datasetRow","duplicateRows","sizeData","reqAttributeType","avg","std","envNodeMap","Map","dSrcNodeMap","dSetMap","attributeNodeMap","renderAttributeTitleToolTip","allNodeMap","funCallFlag","activeItem","param","clearInterval","upButtonClick","downButtonClick","onkeydown","DiscoverResults","filterSearch","lowerCasedFilter","isTreeSearch","subString","autoCompleteData","nestedData","originalData","searchTextFound","changeData","breadCrumbEvent","handleTreeViewButton","processDatasourceChart","closeIcon","getEnvTableData","applyTimeFilterToChart","renderBreadCrumbAttributeContent","envTableData","disableDown","disableUp","isRedirect","isSearchHappened","isChartChanged","driftOnMetricsChart","selectedData","currentIndex","highlightedType","highlightedId","showTreeView","envName","driftOnMetricsKey","currentMetricOnChart","selectedMasChart","inputArr","shortNameData","reqAttrText","aria-current","datasetRes","datasourceData","datasetRefreshInfo","isTimeFilter","findAverage","reqName","prefix","chart_data_keys","keys_","duplicateInfo","duplicateRowsList","datasetRowsList","currMasName","recencyInfo","recencyList","latestRecency","fqDatasetName","selectedMetricOptions","reqMetricResult","constructor","duplicateFiltered","recencyFiltered","currChildNodes","chartDataValues","reqSplitArr","chartDatasetName","chartAttributeName","filteredItem","position","childNodes","data1","getFiltered","clientHeight","faProjectDiagram","searchCount","changeNavigation","autoHeightMin","autoHeightMax","thumbMinSize","universal","isOpen","isShow","minHeight","isNoResult","faAsterisk","faFileAlt","getDefaultSelectedMetrics","Node","toggle","isChanged","highlightedClass","listClassName","getIcon","renderNodeObject","getHighlightedText","currNode","ulClassName","getUlClassName","childrenLength","uniqueId","DiscoverForm","changeEnvironment","environmentOptions","preSelectedDatasource","preSelectedEnv","preSelectedDataset","preSelectedAttribute","envCount","filterResultData","selectedEnv","totalenvironment","totaldataset","totaldatasource","totalattibute","changeCount","hide","html","closeAdvancedFilter","data-select2-id","totalSearchList","formatMultiSection","searchStr","inputValue","recentSearch","envObj","datasourceObj","attributeObj","recentSearchObj","suggestions","shouldRenderSuggestions","reason","renderSuggestionsContainer","containerProps","faExclamation","recentFlag","environmentFlag","datasourceFlag","datasetFlag","attributeFlag","environmentFlaglen","datasourceFlaglen","datasetFlaglen","attributeFlaglen","paddingRight","scrollIntoView","renderSectionTitle","getSuggestionValue","suggestion","getSectionSuggestions","openflag","btnfilter","closest","css","Discover","newValue","onSuggestionsFetchRequested","handleSelected","onSuggestionsClearRequested","renderSuggestion","handleAdvancedFilter","history","createBrowserHistory","transaction","isFilterOpen","suggestionText","connectionIcon","faClock","data-link","textDecoration","faCodeBranch","envOption","datasourceOption","datasetOption","attributeOption","prevEnvId","prevDatasourceId","prevDatasetId","recentSearchData","keySplit","valueSplit","inputProps","multiSection","alwaysRenderSuggestions","onSuggestionSelected","highlightFirstSuggestion","QuickStart","quick_start_message","setup_alert_message","skip_setup","showMessage","redirectLink","showLogo","topMessage","aria-orientation","renderVideoContent","VideoHelp","PrivacyPolicy","FreeTrialAgreement","CookiePolicy","ProgressStatus","renderTableComponents","renderskloader","ProfileCardData","skloader","fill-rule","clip-rule","OverlayTrigger","Popover","showIcon","newCardData","maxLastProfilingTime","preSeletedDataset","preSeletedAttribute","mappedDatasources","mappedDatasets","dataSourceOptions","dataSetsOptions","processTiming","preSelectedEnvironment","preSelectedDataSource","preSelectedDatasets","attr_datasource_value","attr_datasource_id","attr_dataset_value","attr_dataset_id","attr_attribute_value","attr_attribute_id","sortedDatasetsOptions","attr_filter_datset_option","attr_filter_attr_option","getAggregatedTotalData","totalDatas","datasetLevel","getAttrAggregatedTotalData","getAggregatedData","attrLevelDetails","datasetLevelDetails","attr_level","dKey","dValue","aKey","aValue","formProfileData","profile_details","allDatasets","aggDatas","allDatas","filterDatas","relationShipTableRows","totalRows","outlierCount","NonOutlierCount","recencyOne","recencyTwo","recencyThree","recencyFour","datasetWithDuplicates","duplicateAttributeCount","overAllDatas","recencyIndex","rangeOneIndex","rangeTwoIndex","rangeThreeIndex","totalRangeIndex","totalRecencyIndex","dataValues","sufix","row_count","has_duplicates","duplicate_rows","new_value","relationShipData","getDatasForTab","dataFilter","relationShipchartData","chartDatas","chart_details","chartErrors","profileTabPrefetch","getLastProcessing","pmtype","integrationid","profiletimeresult","data_set_ids","CustomTreeSelectDataset","expanddata","CustomTreeSelectAttribute","TreeFilter","handleDateFiltered","handleFilteredData","Relationship","formCardData","setDefaultValuesInFilter","resetFilter","setFilteredValues","setChipData","removeChipData","setDataSetAndAttribute","getTimeFilteredData","initial_load","hideComponent","showRelationalData","allowRelationData","dateFilter","getSelectedTime","tempEndDate","prefillEnvironment","prefillDataSource","chipDataAttribute","checkdataSetAttributeMapping","formResetFlag","isMainFilterApplied","tempMetricValueList","default_data","restrictchilddata","hasOwnProperty","setAttributeTab","initialFilteredValues","initialFilteredDatasets","initialFilteredAttributes","datasetLevelError","attributeLevelError","error_metrics","parentDatasetIds","childDatasetIds","parentAttributeIds","childAttributeIds","Completeness","newDardData","allValues","filterValue","environmentOption","dmSelectedDataSource","isCalculationInProgress","latestProcessingStatus","checkProgress","hasValidDatasets","setLoader","FilterOptions","setDataSourceOption","dataSetOption","setDataSetOption","setAttributeOption","setSelectedEnvironmentOption","setSelectedDataSourceOption","setSelectedDataSetOption","preSelectedAttributes","selectedAttributeOption","setSelectedAttributeOption","selectedAllAttributeOption","setSelectedAllAttributeOption","isFilterSubmitted","setFilterSubmitted","isformResetFlag","setFormResetFlag","con","handleFilterClose","closeFilterModal","useImperativeHandle","setDefaultValuesFromParent","allattributes","preSelectedDatasetsList","filterTitle","datasetsList","Uniqueness","getTimeFilteredCardValues","attributesList","dataSetsList","dataset_prefix","dataSetValueMap","dataSetDuplicateValueMap","duplicate_list","_percentage_data_list","_percentage_val","duplicate_count","outInfo","outInfo_3","outInfo_2","Timeliness","lastProfilingTimeElement","Accuracy","nonOutInfo","Conformity","currSelectedDataSource","EmptyAPIResponse","getAttributeResponse","customSelectDataset","customSelectAttribute","Attribute","handleApplyDatasource","handleApplyDataset","handleApplyAttribute","seletedDatasetID","seletedAttribute","asterPlotChart","dataDistribution","tableCount","noDataComponent","isFilterApplied","sourceId","sourceName","reqMappedValues","stringDriftOnMetricsFilter","attributeDataType","asterPlotChartData","versionName","latest_drift","_chartName","emptyContentMessage","indexes","has_string","removeStringValuesFromChart","convertDecimal","currAttributeName","currDatasetName","renderFilter","latest_quantile","chooseLoadingComponent","Standardisation","tableInfo","reqSplitArrVals","reqDatasetName","normalizedAttributeName","tempMetricValue","tableHeaders","DataProfile","setAttributeLoader","showSpinner","showAttributeSpinner","mappedDatasetInfos","data_mappedDatasetInfo","MlFilterOptions","mlModelOption","setMlModelOption","preSelectedMlModel","selectedMlModelOption","setSelectedMlModelOption","attributeMappedVal","chartDataV1","dataSrc","dataSrcName","Filter","renderFilterChips","addChipsToFilter","removeFilterElements","tooltipHolder","shortName","chipClass","keySuffix","keyVal","chipInfo","showFilterModal","MlModel","changeFilterValues","prefillMlModel","filterValuesUpdated","filterVal","dataSrcMlIds","filterResult","reqMappedVal","mlDatasetDetails","isAfterDataSetUp","initialChipData","mlModelName","MLProfile","QualdoPlanComponent","subscribeToFreePlan","free","starter","professional","userName","paymentDue","freePlan","starterPlan","professionalPlan","hidePlanCount","starterClass","professionalClass","planClass","paidPlan","basicPlanUser","freePlanTitle","horizontal","freeClass","ml_models_size","navigateToPaymentPage","PaymentSuccess","PlanDowngradeModal","goToPreviousScreen","goToNextScreen","changeActiveClass","submitData","setMlModels","has_done_1","has_done_2","has_done_3","ml_models_to_be_saved","fromEntries","save_models","current_plan_id","requested_plan_id","allowed_models","has_done_var","previous_tab","next_tab","class_name","current_plan_details","requested_plan","no_of_models","button_name","model_not_selected","current_plan_icon","requested_plan_icon","customMetricAlert","current_plan_end_date","renderModels","ChoosePlan","handlePlanTabChange","downgradePopupData","paymentSuccess","ready","freeTrialUser","plan","OrderRow","labelContent","valueContent","OrderDetails","addOnCostForData","addOnCostForModel","planSubscriptionAmount","totalAmount","remainingAmountFromCurrentPlan","orderSummaryTitle","orderID","planCostValue","planCost","selectedBillingCycle","loading","billingCycle","nextBilling","SubscribedPlan","BillingCycle","cycle","savedPercentage","absoluteAmount","paymentPageLoading","autoDebitSelection","setAutoDebitStatus","PaymentSectionHeader","sectionIndex","sectionTitle","PaymentDetails","getPaymentCardsAsRadioButtons","selectedPayment","toggleNewCardSection","ZIP_DATA","COUNTRY","BillingAddress","optionscountry","getAddressRadioButtons","billingAddresses","address","selectedAddress","addressSelectionHandler","faAddressCard","canShowAddBillingAddress","addressSchema","createError","divRef","saveNewAddress","makeDefaultBillingAddress","hideAddBillingSection","showAddBillingSection","PlanChangeNotNeeded","closePopUp","PaymentOptions","Payment","cardDetailsRef","billingDetailsRef","billingCycleHandler","cardValidator","paymentSelectionHandler","hasValidCardParts","setPaymentPageDetails","createPaymentDataForUser","showAddBillingDetailsSection","hideAddBillingDetailsSection","addressUpdateHandler","getSelectedPlan","currentPlanDetail","showNotAllowedPopup","addNewCard","reRenderBillingCycle","unitCostForData","unitCostForModel","nextBillingDate","cycleCost","addOnCycles","enableSubmitButton","previousExpiryDate","newBillingAddress","braintreeLoading","cardHolderName","planCycleDetail","currentDetail","newState","newCard","paymentDetailElement","newAddress","scrollToCardDetails","validateAddress","scrollToBillingDetails","storedDetails","paymentPageDetail","currPlanDetails","hasNoCardDetails","billing_addresses","unit_cost_for_data","addon_data_usage_cost","unit_cost_for_model","addon_model_cost","cycle_cost","add_on_cycles","remaining_amount_from_current_plan","hasNoBillingAddress","fieldName","currentFieldId","isValidPreviously","cardHolderDetail","currentKey","monthlyPrice","nextBillingDateStateVal","dateArray","toDateString","benefits","bscustomprefix","showUserStatus","Unsubscribe","qs","querylen","emailsavemessage","saveData","pbi_mapping_dataset_table","pbi_error_dashboard_table","pbi_error_dataset_table","CallAPI","powerbi_error_dashboard_data","user_qualdo_auth_token","login_track_data","qualdo_response","drx_dataset","envcheck","envoptions","newArray","envselectobj","mapping_env_options","pbiuserselectedlist","saveSetupData","powerbi_error_dashboard_get_data","powerbidataset_data_table_data","mapping_dataset","powerbiactionid","powerbiactionflag","powerbistausupdatetoast","powerbierrordashboardsetupdata","adashboardissue","error_report","powerbi_dashboard_id","alreadyselecteditems","getpowerbiconnectorsdataerr","newArrayall","datasources","powerbi_error_dashboard_data2","powerbidashboard_data_table_data","powerbidashboard_data","powerbi_error_dataser_data","powerbidataset_data","getpowerbiconnectorsdata","setupdata","selectedIntegrtion","workspace_name","inputDatapowerbidashboard","powerbidashboardata","objectdashboard","objectdreport","setuppagecheckall","dashboard","newobjDashboard","embed_url","report","checkedstatus","newobj","powerbidashboard","powerbireport","powerbi_get_dataser_data","editenv","editdatasource","editdataset","datsetlevelmapping","datasource_id","datasetoptions","coloptions","attributelevelmapping","mappingobj","qualdo_column_name","powerbi_column_name","err_env","selected_cols","err_datset","err_datasource","authfailmodal","selected_env","mapping_datasource_options","mapping_dataset_options","model_fotter_button_step","editdatsetlevelmappingid","editdatasetid","controls","PowerBISetup","handleCheckChieldElement","fruite","deselectall","confireCheck","configureconfirmchecked","step1","step2","step3","step0","step0back","prepareReport","showAllDashboard","gotoconfiguration","checkalreadyselecteditems","connectorsadd","connectorsremovecancel","connectorsremove","setqualdourlLink","showmoreflag","alldashboard","fourdashboard","selecteddashboard","connectionnext","deletesetup","conntorremove","getpowerbidashboard","firstfourdashboard","firstfourcounter","selectedstatus","moredashboardcnt","selected_dashboard_list","pbiselectedobj","flag","addflag","removeAttr","datasources_others","faLongArrowAltRight","environment_name","data-integrationid","data-integration_name","data-workspace_name","borderless","AttributeReport","formatInput","isToggleOn","save_mapping_data","openModal","handleclose","selectDatasource","selectEnv","selectDataset","saveMapping","mappingNext","envflag","powerbi_columns","qualdo_columns","selecteddatasetid","errorflag","selected_arribute","selected_arributeobj","dataset_level_mapping_obj","file_type","file_path","container_name","dataset_level_mapping","attribute_level_mapping","col_details","col_name","which","cols","handleNavSelect","faFont","faLink","col","readOnly","data-bs-toggle","data-bs-placement","PBIDashbordViewFullScreen","prowerbireporturl","powerbititle","powerbi","embedConfiguration","prowerbireportid","embedUrl","accessToken","embed","closepireportfullscreen","Report","pbi_selected_name","tabledata","gotosetup","span","MSILogin","getUrl","GoogleLoginLoader","getLoginData","ForgotPassword","forgotPassword","forgotPasswordSchema","persistor","persistStore","PrivateRoute","rest","URLSearchParams","replaceState","msi_login","google_login","req_key","decryptMsgData","resetPwdToken","DataSetupStatus","isAuth","routing","onBeforeLift","windowPathName","logged_in_status","isPlanDetailAvailable","account_features","dataLimitReached","exact","resetPasswordForm","propsParams","parentTab","PBISetup","PBIErrors","PBIMapping","tagManagerArgs","gtmId","auth","events","preview","TagManager","initialize","serviceWorker","registration","unregister"],"mappings":"iHAAA,4MAkBO,IAAMA,EAAeC,OAAOC,SAASC,SAC/BC,EAASJ,EAAa,OACtBK,EAAoBL,EAAa,OACjCM,EAAgBN,EAAa,kBAC7BO,EAAaP,EAAa,WAG1BQ,EAAqBC,yoBAAYC,2BAA2B,mB,kwFCG5DC,GAFkBC,OAAO,0HAEV,SAACC,GACzB,IAAIC,GAAQ,EAIZ,OAHAC,OAAOC,OAAOH,GAAQI,SAClB,SAACC,GAAD,OAASA,EAAIC,OAAS,IAAML,GAAQ,MAEjCA,IAKJ,SAASM,EAAcC,EAAIC,EAAUC,GAAmD,IAA7CC,EAA4C,uDAAtCC,aAAaC,QAAQ,gBACrEC,EAAUF,aAAaC,QAAQ,WAC/BE,EAAUH,aAAaC,QAAQ,WACnC,GAAc,KAAVF,GAA0B,OAAVA,QAA4BK,IAAVL,EAAqB,CACvD,IAAMM,EAAOC,KAAKC,MAAMR,GAClBS,EAAM,IAAIC,KACZD,EAAIE,UAAYL,EAAKM,SACK,IAAvBC,gBACCC,eACArC,OAAOC,SAAW,KAG1BsB,EAAQM,EAAKS,MAEjBC,IACA,IAAIC,EAAWC,aAAYrB,GACrBsB,EAAcC,YAAoBH,EAAUpB,EAAIC,GACtD,OAAOuB,MAAMF,EAAa,CAClBG,OAAQ,OACRC,KAAMhB,KAAKiB,UAAUzB,GACrB0B,QAAQ,CAAE,eAAgB,mBAAoB,WAAW,iBAAkB,UAAYzB,EAAO,OAAUG,EAAS,OAAUC,KAC5HsB,MAAK,SAACC,GAAD,OAAcA,EAASC,UAAQF,MAAK,SAACG,GAEvC,OADFC,IACSD,KACVE,OAAO,SAACC,GACPF,IACAG,QAAQD,MAAMlC,EAAW,eAuBrC,SAASoC,EAAgBnC,EAAMoC,GAC3BpC,EAAI,aAAmBW,KAAKD,MAC5B2B,eAAeC,QAAQF,EAAK5B,KAAKiB,UAAUzB,IAG/C,SAASuC,EAAcH,GAAmB,IAAdI,EAAa,uDAAJ,GAG7BC,EAAa,KACbC,EAAgBL,eAAelC,QAAQiC,GAC3C,QAAsB9B,IAAlBoC,GAAiD,OAAlBA,EAC/B,OAAOD,EAGX,IAAIE,EAAYnC,KAAKC,MAAMiC,GACvBE,EAAcD,EAAS,aACvBE,GAAc,IAAIlC,MAAOC,UACzBkC,GAAiBD,EAAcD,GAAf,IACpB,OAAIE,EAAgBN,EACTC,EAGJE,EAGX,SAASI,EAAsBC,EAAcC,GAAY,IAAD,OACpD,QAAqB3C,IAAjB0C,GAA+C,OAAjBA,EAAlC,CAIA,IAAIE,EAAsBF,EAAaG,KAAI,SAAAC,GAAC,MAAK,CAC7C,eAAkBA,EAAC,eACnB,iBAAoBA,EAAC,iBACrB,OAAUA,EAAC,WAETC,EAAc,uBAAmBJ,GAIvCd,EAH4B,CACxB,aAAgBe,GAEiBG,GAErC,IAAIrD,EAAO,CAAC,UAAaiD,EAAU,SAAW,GAC9CK,EAAavE,IAAc,YAAYiB,GAAM2B,MAAM,SAACC,GAChD,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAMC,EAAW9B,EAAQ,SACzBsB,EAAoBxD,SAAQ,SAAAiE,GACxB,IAAIC,EAAkBD,EAAO,eAE7BE,EAD4BH,EAASE,GACAX,EAAWW,WAQhE,SAASE,EAAqBC,EAAcC,GAKxC7B,EAHwB,CACpB,aAAgB4B,GAFA,uBAAmBC,IAO3C,SAASH,EAAcH,EAAUM,EAAUC,GACvC,IAAMC,EAAU,mBAAeF,EAAf,YAA2BC,GAC3C,QAAiB3D,IAAboD,GAAuC,OAAbA,EAA9B,CAKA,IAAIS,EAAkB,GAClBT,EAAS9D,OAAS,IAClBuE,EAAkBT,EAASP,KAAI,SAAAC,GAAC,MAAK,CACjC,YAAeA,EAAC,YAChB,cAAiBA,EAAC,mBAO1BjB,EAHoB,CAChB,SAAYgC,GAEaD,IAGjC,SAASE,EAAcC,EAAUL,GAC7B,IAAMM,EAAU,mBAAeN,QACd1D,IAAb+D,GAAuC,OAAbA,GAW9BlC,EAHe,CACX,SALkBkC,EAASlB,KAAI,SAAAC,GAAC,MAAK,CACrC,YAAeA,EAAC,YAChB,WAAcA,EAAC,gBAKKkB,GAG5B,SAASC,EAAgBP,GACrB,IACIQ,EAAWjC,EADC,mBAAeyB,IAE/B,OAAiB,OAAbQ,EACOA,EAEJA,EAAQ,SAGnB,SAASC,EAAkBT,EAAUC,GACjC,IACIS,EAAanC,EADD,mBAAeyB,EAAf,YAA2BC,IAE3C,OAAmB,OAAfS,EACOA,EAGJA,EAAU,SAGrB,SAASC,EAAsBX,GAC3B,IACIY,EAAiBrC,EADD,uBAAmByB,IAEvC,OAAuB,OAAnBY,EACOA,EAGJA,EAAc,aAIzB,SAASC,EAAsBb,GAC3B,IACIc,EAAiBvC,EADD,uBAAmByB,IAEvC,OAAuB,OAAnBc,EACOA,EAGJA,EAAc,aAGzB,SAASC,EAAgBjF,EAAIC,EAAUC,GAAmD,IAA7CC,EAA4C,uDAAtCC,aAAaC,QAAQ,gBAChEC,EAAUF,aAAaC,QAAQ,WAC/BE,EAAUH,aAAaC,QAAQ,WACnC,GAAc,KAAVF,GAA0B,OAAVA,QAA4BK,IAAVL,EAAqB,CACvD,IAAMM,EAAOC,KAAKC,MAAMR,GAClBS,EAAM,IAAIC,KACZD,EAAIE,UAAYL,EAAKM,SACK,IAAvBC,gBACCC,eACArC,OAAOC,SAAW,KAG1BsB,EAAQM,EAAKS,MAEjB,IAAIE,EAAWC,aAAYrB,GACrBsB,EAAcC,YAAoBH,EAAUpB,EAAIC,GACtD,OAAOuB,MAAMF,EAAa,CAClBG,OAAQ,MACRC,KAAMhB,KAAKiB,UAAUzB,GACrB0B,QAAQ,CAAE,eAAgB,mBAAoB,WAAW,iBAAkB,UAAYzB,EACvF,OAAUG,EAAS,OAAUC,KAC9BsB,MAAK,SAACC,GAAD,OAAcA,EAASC,UAAQF,MAAK,SAACG,GACvC,OAAOA,KACVE,OAAO,SAAAC,GAAK,OAAIC,QAAQD,MAAMlC,EAAW,eAGpD,SAASiF,EAAgBlF,EAAIC,GAAgE,IAAtDC,EAAqD,uDAAhD,GAAIC,EAA4C,uDAAtCC,aAAaC,QAAQ,gBACnEC,EAAUF,aAAaC,QAAQ,WAC/BE,EAAUH,aAAaC,QAAQ,WACnC,GAAc,KAAVF,GAA0B,OAAVA,QAA4BK,IAAVL,EAAqB,CACvD,IAAMM,EAAOC,KAAKC,MAAMR,GAClBS,EAAM,IAAIC,KACZD,EAAIE,UAAYL,EAAKM,SACK,IAAvBC,gBACCC,eACArC,OAAOC,SAAW,KAI1BsB,EAAQM,EAAKS,MAEjB,IAAIE,EAAWC,aAAYrB,GACrBsB,EAAcC,YAAoBH,EAAUpB,EAAIC,GACtD,OAAOuB,MAAMF,EAAa,CAClBG,OAAQ,SACRG,QAAQ,CAAE,KAAOlB,KAAKiB,UAAUzB,GAAM,eAAgB,mBAAoB,WAAW,iBAAkB,UAAYC,EAAO,OAAUG,EAAS,OAAUC,KACxJsB,MAAK,SAACC,GAAD,OAAcA,EAASC,UAAQF,MAAK,SAACG,GACvC,OAAOA,KACVE,OAAO,SAAAC,GAAK,OAAIC,QAAQD,MAAMlC,EAAW,eAGpD,SAASkF,EAAmBnF,EAAIC,EAAWmF,GAAsB,IAAXjF,EAAU,uDAAJ,GACpDG,EAAUF,aAAaC,QAAQ,WAC/BE,EAAUH,aAAaC,QAAQ,WAClC,GAAc,KAAVF,GAA0B,OAAVA,EAAgB,CACjC,IAAMM,EAAOC,KAAKC,MAAMR,GAClBS,EAAM,IAAIC,KACZD,EAAIE,UAAYL,EAAKM,SACK,IAAvBC,gBACCC,eACArC,OAAOC,SAAW,KAG1BsB,EAAQM,EAAKS,MAEhB,OAAOmE,IACCC,KACGC,KAAS,KAAKvF,EAAG,IAAIC,EACrBmF,EACA,CAAExD,QACE,CACI,eAAgB,sBAChB,UAAYzB,EACZ,OAAUG,EACV,OAAUC,KAIrBsB,MAAK,SAAAC,GACF,OAAOA,EAAQ,QAElBI,OAAM,SAAAC,GACHC,QAAQD,MAAM,aAIvB,IAAIqD,EAAmB,EACnBC,EAA4B,EAE5BtE,EAAoB,EACpBc,EAA6B,EAGjC,SAASuB,EAAaxD,EAAIC,EAAWC,GAAkD,uDAAtCE,aAAaC,QAAQ,gBAAkB,IACvFqF,EAAUtF,aAAaC,QAAQ,gBAC/BC,EAAUF,aAAaC,QAAQ,WAC/BE,EAAUH,aAAaC,QAAQ,WACnC,GAAgB,KAAZqF,GAA8B,OAAZA,QAAgClF,IAAZkF,EAAuB,CAC7D,IAAMjF,EAAOC,KAAKC,MAAM+E,GAClB9E,EAAM,IAAIC,KACZD,EAAIE,UAAYL,EAAKM,SACK,IAAvBC,gBACCZ,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAG1B6G,EAAUjF,EAAKS,MAEnBsE,IACA,IAAIpE,EAAWC,aAAYrB,GACrBsB,EAAcC,YAAoBH,EAAUpB,EAAIC,GACtD,OAAOuB,MAAMF,EAAa,CACtBG,OAAQ,MACRG,QAAS,CAAC,KAAQlB,KAAKiB,UAAUzB,GAAM,eAAgB,mBAAoB,WAAY,iBAAkB,UAAawF,EAAS,OAAUpF,EAAS,OAAUC,KAC7JsB,MAAK,SAACC,GAAD,OAAcA,EAASC,UAAQF,MAAK,SAACG,GAEzC,OADAyD,IACOzD,KACRE,OAAM,SAACC,GACNsD,IACArD,QAAQD,MAAMb,EAAaZ,KAAKiB,UAAUQ,OAyB3C,SAASyD,EAAiBC,GAAa,IAAD,OAClCH,EAAUtF,aAAaC,QAAQ,gBAE/BH,EAAO,CAAC,cAAiB2F,EAAY,UADzBzF,aAAaC,QAAQ,YAErCN,EAAcd,IAAe,oBAAqBiB,EAAMwF,GAAS7D,MAAK,SAACiE,QAEvDtF,IAARsF,GACC,EAAKrC,SAAS,CAACC,eAAe,OAMvC,SAASqC,EAA4B7F,GAAO,IAAD,OAC1CwF,EAAUtF,aAAaC,QAAQ,gBAC7BE,EAAUH,aAAaC,QAAQ,WACrCH,EAAI,UAAgBK,EAEpB0E,EAAgBhG,IADA,2BAC0BiB,EAAMwF,GAAS7D,MACrD,SAACC,GACG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAAEC,eAAe,SAE9B,GAAqB,MAAlB5B,EAAS6B,KAAa,CAC1B,EAAKF,SAAS,CAAEC,eAAe,IAE/BF,EAAavE,IADE,oBACuBiB,GAAM2B,MACxC,SAACC,QACwBtB,IAAlBsB,EAAS6B,MACR,EAAKF,SAAS,CAACuC,kBAAkBlE,EAASkE,2BAU/D,SAASC,EAAW9D,EAAO+D,GAC3B,IAAIR,EAAUtF,aAAaC,QAAQ,gBAC/B8F,EAAY,CAAC,QAAW,CAAC,QAAWhE,EAAMiE,WAAY,KAAQF,IAClEnG,EAAcd,IAAe,WAAYkH,EAAWT,GAAS7D,MAAK,SAACiE,OAsC1E,SAASO,EAA2BC,GAChC,IAAIC,GAAwB,EACxBC,EAA8BF,EAAmB,cAOrD,GANoC,KAAhCE,QAAsEhG,IAAhCgG,EACtCD,GAAwB,GAExBC,EAA8BA,EAA4BC,OAC1DH,EAAmB,cAAoBE,GAEK,eAA5CF,EAAmB,iBAwBnB,MAvBuB,CACnBI,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAChCuG,OAAQN,EAAmB,OAC3BO,iBAAkBP,EAAmB,iBACrCQ,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,aAAgBJ,aAAeL,EAAmB,cAClD,OAAUK,aAAeL,EAAmB,aAC5C,SAAYK,aAAeL,EAAmB,UAC9C,cAAiBE,EACjB,sBAAyBD,EACzB,cAAiB,MACjB,iBAAoB,IACpB,SAAYD,EAAmB,SAC/B,QAAWA,EAAmB,QAC9B,aAAgBA,EAAmB,aACnC,eAAkBA,EAAmB,eACrC,aAAgBA,EAAmB,aACnC,kBAAqBA,EAAmB,mBAE5CU,YAAa,CAAC,WAAcV,EAAmB,cAIlD,GAAgD,oBAA5CA,EAAmB,iBA4BxB,MA3BuB,CACnBI,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,kBAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,OAAUJ,aAAeL,EAAmB,aAC5C,SAAYK,aAAeL,EAAmB,UAC9C,cAAiBE,EACjB,sBAAyBD,EACzB,cAAiB,MACjB,iBAAoB,IACpB,SAAYD,EAAmB,SAC/B,QAAWA,EAAmB,QAC9B,aAAgBA,EAAmB,aACnC,eAAkBA,EAAmB,eACrC,aAAgBA,EAAmB,aACnC,kBAAqBA,EAAmB,mBAE5CU,YAAa,CACT,UAAaV,EAAmB,cAChC,cAAiBA,EAAmB,cACpC,WAAcA,EAAmB,aAKxC,GAAgD,qBAA5CA,EAAmB,iBAA6C,CACrE,IAAIW,EAAcX,EAAmB,aA6BrC,YA5BoB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,mBAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,cAAiBJ,aAAeL,EAAmB,eACnD,OAAUK,aAAeL,EAAmB,QAC5C,mBAAsBK,aAAeL,EAAmB,oBACxD,iBAAoBK,aAAeL,EAAmB,kBACtD,aAAgBW,EAChB,cAAiBT,EACjB,sBAAyBD,EACzB,WAAaD,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAE9CU,YAAa,CACT,aAAgBV,EAAmB,aACnC,iBAAoBA,EAAmB,mBAK9C,GAA+C,OAA5CA,EAAmB,iBA0BvB,MAzBuB,CACnBI,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkBP,EAAmB,iBACrCQ,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,aAAgBJ,aAAeL,EAAmB,cAClD,OAAUK,aAAeL,EAAmB,aAC5C,SAAYK,aAAeL,EAAmB,UAC9C,cAAiBE,EACjB,sBAAyBD,EACzB,cAAiB,MACjB,iBAAoB,IACpB,SAAYD,EAAmB,SAC/B,QAAWA,EAAmB,QAC9B,aAAgBA,EAAmB,aACnC,eAAkBA,EAAmB,eACrC,aAAgBA,EAAmB,aACnC,kBAAqBA,EAAmB,mBAE5CU,YAAa,CAAC,kBAAqBV,EAAmB,kBACvC,WAAcA,EAAmB,aAIlD,GAAgD,aAA5CA,EAAmB,iBAAqC,CAC9D,IAAIW,EAAcX,EAAmB,aA8BjC,YA7BgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDa,mBAAoBb,EAAmB,mBACvCnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,WAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,SAAYJ,aAAeL,EAAmB,UAC9C,cAAiBK,aAAeL,EAAmB,eACnD,cAAiBE,EACjB,sBAAyBD,EACzB,YAAeI,aAAeL,EAAmB,aACjD,WAAcK,aAAeL,EAAmB,YAChD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAE9CU,YAAa,CACT,UAAaV,EAAmB,UAChC,SAAYA,EAAmB,WAKtC,GAAgD,eAA5CA,EAAmB,iBAAuC,CAC/D,IAAIW,EAAcX,EAAmB,aAiCjC,YAhCgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAGK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,aAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,IAAOJ,aAAeL,EAAmB,KACzC,SAAYK,aAAeL,EAAmB,UAC9C,cAAiBE,EACjB,sBAAyBD,EACzB,OAAUI,aAAeL,EAAmB,QAC5C,WAAcK,aAAeL,EAAmB,YAChD,WAAcK,aAAeL,EAAmB,YAChD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAG9CU,YAAa,CACT,UAAaV,EAAmB,UAChC,KAAQA,EAAmB,KAC3B,SAAYA,EAAmB,WAIhC,GAAgD,cAA5CA,EAAmB,iBAAsC,CAChE,IAAIW,EAAcX,EAAmB,aA2BzC,YA1BwB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAGK,CACvBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,YAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,cAAiBP,EACjB,sBAAyBD,EACzB,OAAUI,aAAeL,EAAmB,QAC5C,WAAcK,aAAeL,EAAmB,YAChD,eAAkBK,aAAeL,EAAmB,WACpD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAG9CU,YAAaV,EAAmB,MAGjC,GAAgD,eAA5CA,EAAmB,iBAAuC,CACjE,IAAIW,EAAcX,EAAmB,aA6BjC,YA5BgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,aAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,SAAYJ,aAAeL,EAAmB,UAC9C,cAAiBK,aAAeL,EAAmB,eACnD,cAAiBE,EACjB,sBAAyBD,EACzB,YAAeI,aAAeL,EAAmB,aACjD,WAAcK,aAAeL,EAAmB,YAChD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAE9CU,YAAa,CACT,UAAaV,EAAmB,UAChC,SAAYA,EAAmB,WAIlC,GAAgD,UAA5CA,EAAmB,iBAAkC,CAC9D,IAAIW,EAAcX,EAAmB,aA6BjC,YA5BgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAGK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,QAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,KAAQJ,aAAeL,EAAmB,MAC1C,SAAYK,aAAeL,EAAmB,UAC9C,cAAiBE,EACjB,sBAAyBD,EACzB,WAAcI,aAAeL,EAAmB,YAChD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAE9CU,YAAa,CACT,KAAQV,EAAmB,KAC3B,SAAYA,EAAmB,WAIlC,GAAgD,cAA5CA,EAAmB,iBAAsC,CAClE,IAAIW,EAAcX,EAAmB,aA8BjC,YA7BgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,YAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,KAAQJ,aAAeL,EAAmB,MAC1C,SAAYK,aAAeL,EAAmB,UAC9C,OAAUK,aAAeL,EAAmB,QAC5C,cAAiBE,EACjB,sBAAyBD,EACzB,WAAcI,aAAeL,EAAmB,YAChD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAG9CU,YAAa,CACT,KAAQV,EAAmB,KAC3B,SAAYA,EAAmB,WAIlC,GAAgD,YAA5CA,EAAmB,iBAAoC,CAChE,IAAIW,EAAcX,EAAmB,aA+BjC,YA9BgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,UAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,KAAQJ,aAAeL,EAAmB,MAC1C,SAAYK,aAAeL,EAAmB,UAC9C,OAAUK,aAAeL,EAAmB,QAC5C,cAAiBE,EACjB,sBAAyBD,EACzB,WAAcI,aAAeL,EAAmB,YAChD,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAI9CU,YAAa,CACT,KAAQV,EAAmB,KAC3B,SAAYA,EAAmB,WAIlC,GAAgD,QAA5CA,EAAmB,iBA6B5B,MA5BuB,CACnBI,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAEhCuG,OAAQN,EAAmB,OAC3BO,iBAAkBP,EAAmB,iBACrCQ,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,OAAUJ,aAAeL,EAAmB,aAC5C,SAAYK,aAAeL,EAAmB,UAC9C,cAAiBE,EACjB,sBAAyBD,EACzB,cAAiB,MACjB,iBAAoB,IACpB,SAAYD,EAAmB,SAC/B,QAAWA,EAAmB,QAC9B,aAAgBA,EAAmB,aACnC,eAAkBA,EAAmB,eACrC,aAAgBA,EAAmB,aACnC,kBAAqBA,EAAmB,kBACxC,eAAkBK,aAAeL,EAAmB,WACpD,WAAaA,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAG9CU,YAAaV,EAAmB,MAGlC,GAAIA,EAAmB,mBAAyBc,KAAoB,CACtE,IAAIH,EAAcX,EAAmB,aAyBjC,YAxBgB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDa,mBAAoBb,EAAmB,mBACvCnD,UAAW/C,aAAaC,QAAQ,WAChCuG,OAAQN,EAAmB,OAC3BO,iBAAkBO,KAClBN,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,cAAiBP,EACjB,sBAAyBD,EACzB,UAAaI,aAAeL,EAAmB,WAC/C,SAAYK,aAAeL,EAAmB,UAC9C,WAAcK,aAAeL,EAAmB,YAChD,aAAgBW,GAEpBD,YAAa,CACT,UAAaV,EAAmB,UAChC,SAAYA,EAAmB,WAKtC,GAAgD,2BAA5CA,EAAmB,iBAAmD,CAC3E,IAAIW,EAAcX,EAAmB,aA+BrC,YA9BoB9F,IAAhByG,GAA6C,OAAhBA,GACS,IAAtCC,OAAOD,GAAaR,OAAO3G,SAC3BmH,OAAczG,GAEK,CACnBkG,iBAAkBC,aAAeL,EAAmB,kBACpDnD,UAAW/C,aAAaC,QAAQ,WAChCuG,OAAQN,EAAmB,OAC3BO,iBAAkB,yBAClBC,gBAAiBR,EAAmB,gBACpCS,mBAAoB,CAChB,KAAQJ,aAAeL,EAAmB,MAC1C,UAAaK,aAAeL,EAAmB,WAC/C,QAAWK,aAAeL,EAAmB,SAC7C,MAASK,aAAeL,EAAmB,OAC3C,OAAUK,aAAeL,EAAmB,QAC5C,cAAiBE,EACjB,sBAAyBD,EACzB,WAAcI,aAAeL,EAAmB,YAChD,SAAYA,EAAmB,SAC/B,aAAgBW,EAChB,WAAaX,EAAmB,WAChC,YAAcA,EAAmB,YACjC,qBAAuBA,EAAmB,sBAE9CU,YAAa,CACT,WAAcV,EAAmB,cAkC1C,IAAMe,EAAc,SAAC7H,GACxB,IAAI8H,EAAQ,EAIZ,OAHA5H,OAAOC,OAAOH,GAAQI,SAClB,SAACC,GAAD,OAASA,EAAIC,OAAS,IAAMwH,GAAc,MAEvCA,GA8GJ,SAASC,EAAYC,EAAWC,GAEnC,OAAIA,IAAeC,KAAe,QAAcD,IAAeC,KAAe,QAEnE,IAERF,EAAUG,SAAS,uCACb,oDACAH,EAAUG,SAAS,6CAElBH,EAAUG,SAAS,0BADnB,6EAGAH,EAAUG,SAAS,+CACpB,4IACCH,EAAUG,SAAS,gBAClBH,EACDA,EAAUG,SAAS,sCAClB,2DACDH,EAAUG,SAAS,yDAClB,wDACAH,EAAUG,SAAS,6BACnB,6EACAH,EAAUG,SAAS,+CACnB,4EACAH,EAAUG,SAAS,kCACnB,wEACAH,EAAUG,SAAS,gDACnB,kEAIF,6EAKb,SAASC,EAAuBC,EAAmBC,GAA2C,IAAxBC,EAAuB,4DAAXvH,EAK9E,QAJ0BA,IAAtBqH,IACAA,EAAoB,SAGJrH,IAAhBuH,GAA6BA,IAAgBC,KAG7C,MAAO,CAAC,YAAaF,EAAmB,eAAgB,KAG5D,IAAIG,EAA2BJ,EAAkBK,QAAO,SAAA5E,GAAC,OAAKA,EAAE6E,kBAAoBC,QACpF,GAAIH,EAAyBnI,OAAS,EAClC,MAAO,CAAC,aAAcgI,EAAmB,cAAe,IAG5D,IAAIO,EAAyBR,EAAkBK,QAAO,SAAA5E,GAAC,OAAKA,EAAE6E,kBAAoBG,QAClF,GAAID,EAAuBvI,OAAS,EAChC,MAAO,CAAC,aAAcgI,EAAmB,cAAe,IAG5D,IAAIS,EAA2BV,EAAkBK,QAAO,SAAA5E,GAAC,OAAKkF,KAAoBb,SAASrE,EAAE6E,oBAC7F,GAAII,EAAyBzI,OAAS,EAClC,MAAO,CAAC,cAAegI,EAAmB,eAAgB,IAG9D,IAAIW,EAA0BZ,EAAkBK,QAAO,SAAA5E,GAAC,OAAKA,EAAE6E,kBAAoBO,QACnF,OAAID,EAAwB3I,OAAS,EAC1B,CAAC,YAAagI,EAAmB,eAAgB,KAErD,CAAC,kBAAmBA,EAAmB,eAAgB,GAIlE,SAASa,EAAsBd,EAAmBC,EAAmBc,GAQjE,QAP0BpI,IAAtBqH,IACAA,EAAoB,IAGOA,EAAkBK,QAAO,SAAA5E,GAAC,OACxBA,EAAE6E,kBAAoBC,QAE1BtI,OAAS,EAClC,MAAO,CAAC,aAAcgI,EAAmB,cAAe,IAExD,IAAIS,EAA2BV,EAAkBK,QAAO,SAAA5E,GAAC,OAAKkF,KAAoBb,SAASrE,EAAE6E,oBACzFU,EAAiB,IAAIhI,KAAK+H,GAAkB9H,UAC5CgI,EAAqB,IAAIjI,KAAKiH,GAAmBhH,UACrD,OAAIyH,EAAyBzI,OAAS,GAAK+I,EAAiBC,EACjD,CAAC,cAAehB,EAAmB,eAAgB,IAE5BD,EAAkBK,QAAO,SAAA5E,GAAC,OAAKA,EAAE6E,kBAAoBO,QACvD5I,OAAS,EAC1B,CAAC,YAAagI,EAAmB,eAAgB,KAErD,CAAC,kBAAmBA,EAAmB,eAAgB,GAO1E,SAASiB,EAAoBC,GAGzB,IAFA,IACIC,EAAS,GACLC,EAAE,EAAGA,EAAIF,EAAUlJ,OAAQoJ,IAAK,CACpC,IAAIC,EAAI,GACJC,EAAIJ,EAAUE,GACd5B,EAAS8B,EAAC,cACVtB,EAAoBuB,EAAiBD,EAAC,yBAC1CD,EAAIG,KAAK,CAAC,MAASF,EAAC,WAAgB,KAAQ,OAC5CD,EAAIG,KAAK,CAAC,MAAShC,EAAO,KAAQ,YAClC6B,EAAIG,KAAK,CAAC,MAASX,EAAsBS,EAAC,wBAA4BtB,EAAmBsB,EAAC,cAAmB,KAAQ,qBACrHD,EAAIG,KAAK,CAAC,MAASF,EAAG,KAAQ,aAC9BD,EAAIG,KAAK,CAAC,MAASF,EAAG,KAAQ,WAC9BH,EAASK,KAAKH,GAGlB,MADgB,CAAC,QAdL,CAAC,QAAS,UAAW,iBAAkB,WAAY,UAc1B,KAAQF,GAIjD,SAASI,EAAiBE,GACvB,IAAIC,EAAmB,GAmBvB,YAlB+BhJ,IAA3B+I,IACAA,EAAyB,IAG1BA,EAAuBzJ,OAAS,IACjC0J,EAAmBD,EAAuB,GAAvB,aACnBA,EAAuBlG,KAAI,SAAU8F,GAC1B,IAAIM,EAAO,IAAI5I,KAAKsI,EAAG,cACnBO,EAAU,IAAI7I,KAAK2I,GAKvB,OAJ4B,OAAxBL,EAAG,cAA6BM,EAAOC,IACvCF,EAAmBL,EAAG,cAGnB,MAKbK,EAKH,SAASG,IAAyB,IAAD,OAEhCzJ,EAAO,CAAC,UADGE,aAAaC,QAAQ,WACJ,eAAkBuJ,KAAKC,MAAMC,gBAE7DtG,EAAavE,IADE,wBACsBiB,GAAM2B,MAAK,SAACC,QAC5BtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACV,OAAb5B,GAAuC,MAAlBA,EAAS6B,MACtC,EAAKF,SAAS,CAACsG,eAAgBjI,EAAQ,yBAUlD,SAASkI,EAAyBC,GAC7B,IACGhB,EAAS,GACTiB,EAAiB,QACM1J,IAAvByJ,IACAA,EAAqB,IAGzB,IAAI,IAAIf,EAAE,EAAGA,EAAIe,EAAmBnK,OAAQoJ,IAAK,CAC7C,IAAIC,EAAI,GACJgB,EAAY,GACZf,EAAIa,EAAmBf,GACvBkB,EAAQhB,EAAC,wBAA4BtJ,OACrCiI,EAAcqB,EAAC,YACftB,EAAoBuB,EAAiBD,EAAC,eAC1CD,EAAIG,KAAK,CAAC,MAASF,EAAC,gBAAqB,KAAQ,OACjDD,EAAIG,KAAK,CAAC,MAASc,EAAO,KAAQ,YAClCjB,EAAIG,KAAK,CAAC,MAAS1B,EAAuBwB,EAAC,wBAA4BtB,EAAmBC,GAAc,KAAQ,qBAChHoB,EAAIG,KAAK,CAAC,MAASF,EAAG,KAAQ,aAC9BD,EAAIG,KAAK,CAAC,MAASF,EAAG,KAAQ,WAC9Be,EAAYb,KAAK,CAAC,eAAiBF,EAAC,eAAoB,gBAAkBtB,IAC1EmB,EAASK,KAAKH,GACde,EAAiBZ,KAAKa,GAI1B,MADgB,CAAC,QAxBJ,CAAC,kBAAmB,UAAW,iBAAkB,WAAY,UAwBrC,KAAQlB,EAAS,gBAAkBiB,GAkDrE,SAASG,EAAmCC,EAAWC,GAC1D,IAAIC,EAAUF,EAAS,QACnBG,EAAeF,EAAerD,OAAOsD,IAErCE,EAAUJ,EAAS,QACnBK,EAAeJ,EAAerD,OAAOwD,IAErCE,EAAUN,EAAS,QACnBO,EAAe,KAMnB,OALKC,KAAcnD,SAASiD,KACxBC,EAAeN,EAAerD,OAAO0D,KAvD7C,SAA+BG,EAASC,EAAYL,EAAcE,GAC9D,IAAII,EAAW,GAEf,GAAIH,KAAcnD,SAASqD,IAAeF,KAAcnD,SAASgD,GAC7D,OAAO,KAGX,IAAMO,EAAcF,EAAU,YACxBG,EAAWJ,EAAO,WAClBK,EAAgBL,EAAO,aACvBM,EAAcN,EAAO,YAErBO,EAAQ,CAACN,EAAU,WAAgBL,EAAY,YAC/CY,EAAgB,CAACP,EAAU,QAAaL,EAAY,SACpDa,EAAkB,CAACR,EAAU,iBAAsBL,EAAY,kBAC/Dc,EAAW,CAACT,EAAU,SAAcL,EAAY,UAElDe,GAAa,EACZZ,KAAcnD,SAASkD,KACxBa,GAAa,EACbJ,EAAMhC,KAAKuB,EAAY,YACvBU,EAAcjC,KAAKuB,EAAY,SAC/BW,EAAgBlC,KAAKuB,EAAY,kBACjCY,EAASnC,KAAKuB,EAAY,WAG9BI,EAAS3B,KAAKgC,GACdL,EAAS3B,KAAKiC,GACdN,EAAS3B,KAAKkC,GACdP,EAAS3B,KAAKmC,GACdR,EAAS3B,KAAK,CAAC,MAAS6B,EAAU,WAAcO,IAChDT,EAAS3B,KAAK,CAAC,MAAS8B,EAAe,WAAcM,IAErD,IAAIC,EAAW,CACX,WAAcD,EACd,YAAeL,EAAa,MAAS,IACrC,YAAeH,GAKnB,OAFAD,EAAS3B,KAAKqC,GAEPV,EAiBWW,CAAsBtB,EAAWG,EAAcE,EAAcE,GAKnF,SAASgB,EAA4Bd,EAASR,GAC1C,QAAgB/J,IAAZuK,GAAqC,OAAZA,QAAuCvK,IAAnB+J,EAC7C,MAAO,CAAC,QAAWuB,KAAwB,KAAQ,GAAI,cAAgB,GAK3E,IAFA,IAAI7C,EAAW,GAENC,EAAI,EAAGA,EAAI6B,EAAQjL,OAAQoJ,IAAK,CACrC,IACMpD,EAAMuE,EADIU,EAAQ7B,GACkCqB,GACtDO,KAAcnD,SAAS7B,IAI3BmD,EAASK,KAAKxD,GAIlB,MADiB,CAAC,QAAWgG,KAAwB,KAAQ7C,EAAU,cAAgB,GAI3F,SAAS8C,GAA4BC,GACjC,IAEI/C,EAAS,QACazI,IAAtBwL,IACAA,EAAoB,IAGxB,IAAI,IAAI9C,EAAE,EAAGA,EAAI8C,EAAkBlM,OAAQoJ,IAAK,CAC5C,IAAIC,EAAI,GACJC,EAAI4C,EAAkB9C,GAC1BC,EAAIG,KAAK,CAAC,MAASF,EAAC,YAAiB,KAAQ,WAC7CD,EAAIG,KAAK,CAAC,MAASF,EAAC,SAAc,KAAQ,YAC1CD,EAAIG,KAAK,CAAC,MAAS2C,YAA0B7C,EAAC,eAAoB,KAAQ,YAC1ED,EAAIG,KAAK,CAAC,MAASF,EAAC,gBAAqB,KAAQ,eACjD,IAAI8C,EAAe,GAEfA,EADqB,IAArB9C,EAAC,YACc,CAAC,YAAaA,EAAC,cAAmB,eAAgB,MACpC,IAAtBA,EAAC,YACI,CAAC,aAAcA,EAAC,cAAmB,cAAe,IAClC,IAArBA,EAAC,YACO,CAAC,UAAWA,EAAC,cAAmB,cAAe,GAG/C,CAAC,aAAcA,EAAC,cAAmB,eAAgB,IAEtED,EAAIG,KAAK,CAAC,MAAS4C,EAAc,KAAQ,WACzC/C,EAAIG,KAAK,CAAC,MAAS,CAACF,EAAC,cAAmBA,EAAC,cAAmB,KAAQ,YACpED,EAAIG,KAAK,CAAC,MAASF,EAAG,KAAQ,WAC9BH,EAASK,KAAKH,GAIlB,MADgB,CAAC,QA/BL,CAAC,cAAe,sBAAuB,eAAgB,kBAAmB,iBACtF,iBAAkB,UA8BmB,KAAQF,GAsBjD,SAASkD,GAA6BC,GAGlC,IAFA,IACInD,EAAS,GACLC,EAAE,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACrC,IAAIC,EAAI,GACJC,EAAGgD,EAAWlD,GAClBC,EAAIG,KAAK,CAAC,MAASF,EAAC,SAAc,KAAQ,OAC1CD,EAAIG,KAAK,CAAC,MAASF,EAAC,iBAAsB,KAAQ,OAClDD,EAAIG,KAAK,CAAC,MAASF,EAAC,iBAAsB,KAAQ,OAClDD,EAAIG,KAAK,CAAC,MAASF,EAAC,iBAAsB,KAAQ,OAClDD,EAAIG,KAAK,CAAC,MAASF,EAAC,aAAkB,KAAQ,OAC9CD,EAAIG,KAAK,CAAC,MAAS,GAAI,KAAQ,YAAa,iBAAmBF,IAC/DH,EAASK,KAAKH,GAGlB,MADgB,CAAC,QAbL,CAAC,cAAe,aAAc,kBAAmB,yBAA0B,eAAgB,WAalE,KAAQF,GAIjD,SAASoD,GAAiBD,GAGtB,IAFA,IACIE,EAAU,GACLpD,EAAI,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACxC,IAAIC,EAAM,GACNC,EAAIgD,EAAWlD,GACnBC,EAAIG,KAAK,CAAE,MAASF,EAAC,WAAgB,KAAQ,OAC7CD,EAAIG,KAAK,CAAE,MAASF,EAAC,iBAAsB,KAAQ,OACnDD,EAAIG,KAAK,CAAE,MAASF,EAAC,SAAc,KAAQ,OAC3CD,EAAIG,KAAK,CAAE,MAASF,EAAC,OAAY,KAAQ,OACzCD,EAAIG,KAAK,CAAE,MAASF,EAAC,aAAkB,KAAQ,OAC/CD,EAAIG,KAAK,CAAE,MAASF,EAAC,cAAmB,KAAQ,OAChDD,EAAIG,KAAK,CAAE,MAASF,EAAC,QAAa,KAAQ,OAC1CD,EAAIG,KAAK,CAAE,cAAiBF,EAAG,KAAQ,cACvCkD,EAAQhD,KAAKH,GAGjB,MADgB,CAAE,QAfJ,CAAC,QAAS,aAAc,cAAe,aAAc,eAAgB,UAAW,gBAAiB,WAezE,KAAQmD,GAIlD,SAASC,GAAeH,GAGpB,IAFD,IACKnD,EAAS,GACLC,EAAE,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACrC,IAAIC,EAAI,GACFqD,EAAgBJ,EAAWlD,GAC7BE,EAAGoD,EAAa,cACpBrD,EAAIG,KAAK,CAAC,MAASkD,EAAa,sBAA2B,KAAQ,OACnErD,EAAIG,KAAK,CAAC,MAASkD,EAAa,sBAA2B,KAAQ,OACnErD,EAAIG,KAAK,CAAC,MAASF,EAAC,IAAS,KAAQ,OACrCD,EAAIG,KAAK,CAAE,MAASlJ,aAAaC,QAAQ,aAAc,KAAQ,OAC/D8I,EAAIG,KAAK,CAAE,MAASkD,EAAa,aAAkB,KAAQ,OAC3DrD,EAAIG,KAAK,CAAC,QAAWkD,EAAe,KAAQ,cAC5CvD,EAASK,KAAKH,GAGlB,MADgB,CAAC,QAdN,CAAC,wBAAyB,wBAAwB,MAAO,aAAc,eAAgB,WAc7D,KAAQF,GAGjD,SAASwD,GAAYL,GAIjB,IAHA,IACInD,EAAS,GAELC,EAAE,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACrC,IAAIC,EAAI,GACFuD,EAAaN,EAAWlD,GAC9BC,EAAIG,KAAK,CAAC,MAASoD,EAAU,WAAgB,KAAQ,OACrDvD,EAAIG,KAAK,CAAC,MAASoD,EAAU,WAAgB,KAAQ,OACrDvD,EAAIG,KAAK,CAAE,MAASlJ,aAAaC,QAAQ,aAAc,KAAQ,OAC/D8I,EAAIG,KAAK,CAAE,MAASoD,EAAU,aAAkB,KAAQ,OACxDvD,EAAIG,KAAK,CAAC,MAASoD,EAAY,KAAQ,cACvCzD,EAASK,KAAKH,GAElB,MAAO,CAAC,QAbI,CAAC,aAAa,aAAc,aAAc,eAAgB,WAa1C,KAAQF,GAIxC,SAAS0D,GAAoBP,GAIzB,IAHA,IACInD,EAAS,GAELC,EAAE,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACrC,IAAIC,EAAI,GACFyD,EAAeR,EAAWlD,GAChCC,EAAIG,KAAK,CAAC,MAASsD,EAAY,mBAAwB,KAAQ,OAC/DzD,EAAIG,KAAK,CAAC,MAASsD,EAAY,mBAAwB,KAAQ,OAC/DzD,EAAIG,KAAK,CAAE,MAASlJ,aAAaC,QAAQ,aAAc,KAAQ,OAC/D8I,EAAIG,KAAK,CAAE,MAASsD,EAAY,aAAkB,KAAQ,OAC1DzD,EAAIG,KAAK,CAAC,QAAWsD,EAAc,KAAQ,cAC3C3D,EAASK,KAAKH,GAGlB,MAAO,CAAC,QAdI,CAAC,oBAAqB,oBAAqB,aAAc,eAAgB,WAczD,KAAQF,GAGxC,SAAS4D,GAAiBC,EAAMV,GAG5B,IAFA,IACInD,EAAS,GACLC,EAAE,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACrC,IAAIC,EAAI,GACJC,EAAGgD,EAAWlD,GAClBC,EAAIG,KAAK,CAAC,MAASF,EAAC,YAAiB,KAAQ,OAC7CD,EAAIG,KAAK,CAAC,MAASF,EAAC,YAAiB,KAAQ,OAC7CD,EAAIG,KAAK,CAAC,MAASF,EAAC,aAAkB,KAAQ,OAC9CD,EAAIG,KAAK,CAAC,MAAS5I,KAAKiB,UAAUyH,EAAC,oBAAyB,KAAQ,OACpED,EAAIG,KAAK,CAAC,MAAS,UAAW,KAAQ,OACtCH,EAAIG,KAAK,CAAC,MAAS,GAAI,KAAQ,cAC/BL,EAASK,KAAKH,GAIlB,MAFgB,CAAC,QAbL,CAAC,cAAe,cAAe,eAAgB,oBAAqB,aAAc,WAchF,KAAQF,GAoB1B,SAAS8D,GAAeC,EAAKzM,GAAU,IAAD,OAE9B0M,EAAU,CAAC,OAASD,EAAG,OAAY,UAAYzM,GACnD,OAAOiD,EAAavE,IAFH,6BAE2BgO,GAASpL,MAAM,SAACC,GACxD,QAAiBtB,IAAbsB,EACY,EAAK2B,SAAS,CAACC,eAAe,QACvC,IAAsB,MAAlB5B,EAAS6B,KAAc,CAG9B,IAFA,IAAIuJ,EAAUpL,EAAQ,QAClBwK,EAAQ,GACHpD,EAAE,EAAGA,EAAGgE,EAAQpN,OAAQoJ,IAAK,CAClC,IAAIE,EAAI8D,EAAQhE,GACViE,EAAoB/D,EAAC,mBACrBgE,EAAahE,EAAC,YACdiE,EAAQjE,EAAC,OACTkE,OAAwB9M,IAAV6M,GAAiC,OAAVA,EAC3C,GAAyB,QAArBjE,EAAC,aAA6BkE,EAAY,CAC1C,IAAInE,EAAM,GACNoE,EAAUJ,EAAiB,QACR,kBAAZI,IACPA,EAAUA,EAAO,MAGrBpE,EAAIG,KAAK,CAAC,MAAS8D,EAAY,KAAQ,OACvCjE,EAAIG,KAAK,CAAC,MAAS0D,EAAG,SAAc,KAAQ,OAC5C7D,EAAIG,KAAK,CAAC,MAASlJ,aAAaC,QAAQ,aAAc,KAAQ,OAC9D8I,EAAIG,KAAK,CAAC,MAASF,EAAC,aAAkB,KAAQ,OAC9CD,EAAIG,KAAK,CAAC,MAAS6D,EAAiB,QAAa,KAAQ,OACzDhE,EAAIG,KAAK,CAAC,MAASiE,EAAS,KAAQ,OACpCpE,EAAIG,KAAK,CAAC,MAAS,GAAI,KAAQ,YAAa,aAAgBF,IAC5DkD,EAAQhD,KAAKH,IAKrB,MADW,CAAC,WAAamD,EAAS,QAAUY,GAG7C,EAAKzJ,SAAS,CAACC,eAAe,QAMzC,SAAS8J,GAASR,EAAKzM,GAAU,IAAD,OAExB0M,EAAU,CAAC,OAASD,EAAG,OAAY,UAAYzM,GACnD,OAAOiD,EAAavE,IAFH,6BAE2BgO,GAASpL,MAAM,SAACC,GACxD,QAAiBtB,IAAbsB,EACY,EAAK2B,SAAS,CAACC,eAAe,QACvC,IAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI8J,EAjEhB,SAA6BrB,GAEzB,IADA,IAAInD,EAAW,GACNC,EAAI,EAAGA,EAAIkD,EAAWtM,OAAQoJ,IAAK,CACxC,IAAIE,EAAIgD,EAAWlD,GACnB,GAAyB,iBAArBE,EAAC,YAAoC,CACrC,IAAMsE,EAAWtE,EAAC,YAClBH,EAASK,KAAK,CACV,YAAeoE,EACf,YAAetE,EAAC,YAChB,WAAcA,EAAC,cAI3B,OAAOH,EAoDiB0E,CAAoB7L,EAASoL,SAM7C,MALU,CACN,SAAYF,EAAG,SACf,OAAUA,EAAG,OACb,YAAeS,GAInB,QAAajN,IAAT,EACA,OAEJ,EAAKiD,SAAS,CAACC,eAAe,Q,SAK3BkK,G,qFAAf,WAAgCd,EAAMV,EAAY7L,GAAlD,uBAAAsN,EAAA,sDACQC,EAAc,KAEdA,EADS,OAAThB,EACc,MAEA,MAEZiB,EAAW,GACT7E,EAAE,EARd,YAQiBA,EAAIkD,EAAWtM,QARhC,qBASYsJ,EAAGgD,EAAWlD,IACZ,WAAiB4E,EAV/B,iCAWgCE,QAAQC,QAAQT,GAASpE,EAAG7I,IAX5D,OAWiB2N,EAXjB,OAYaH,EAASzE,KAAK4E,GAZ3B,QAQwChF,IARxC,gDAeW6E,GAfX,6C,+BAkBeI,G,mFAAf,WAA0B/B,EAAY7L,GAAtC,2BAAAsN,EAAA,sDACQjM,EAAU,CAAC,cAAe,sBAAuB,aAAa,eAAgB,UAAW,aAAa,kBAAmB,WACzHqH,EAAW,GACXmF,EAAkB,GACdlF,EAAE,EAJd,YAIiBA,EAAIkD,EAAWtM,QAJhC,wBAKYsJ,EAAGgD,EAAWlD,GAL1B,SAM2B8E,QAAQC,QAAQlB,GAAe3D,EAAG7I,IAN7D,OAMY2N,EANZ,OAOQE,EAAgBhF,EAAC,QAAc8E,EAAM,QACrCjF,EAAQ,sBAAOA,GAAP,YAAoBiF,EAAM,aAR1C,QAIwChF,IAJxC,8BAUQmF,EAAa,CAAC,QAAWzM,EACf,KAAQqH,EACR,eAAiBmF,GAZnC,kBAaWC,GAbX,6C,sBAwCA,SAASC,GAAiBpL,EAAcqL,EAAQ7I,GAAS,IAAD,OACpD,GAA2B,IAAxBxC,EAAapD,OAAhB,CAIA,IAAI0O,EAAmBtL,EAAa,GAChCY,EAAgB0K,EAAgB,eAEhCC,EAAiB,CAAC,MADID,EAAgB,iBACU,MAAS1K,GACzD4K,EAAYC,MAASC,SAAS,GAAI,QAAQC,OAAO,uBAAuBzI,WACxE0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,WACzEwD,KAAKnG,SAAS,CAACiL,UAAWA,EAAWI,QAAQA,IAC7C,IAAIG,EAAU,CACV,YAAe,CAACnL,GAChB,UAAayK,EACb,mBAAqBG,EACrB,iBAAoBI,GAGxB/O,EAAcd,IADG,qBACsBgQ,EAASvJ,GAAS7D,MAAK,SAACiE,GAC3D,QAAYtF,IAARsF,EACA,EAAKrC,SAAS,CAACC,eAAe,SAC3B,GAAiB,MAAboC,EAAInC,KAAc,CACzB,IAAMuL,EAAY,CAAC,QAAWpJ,EAAG,SACjC,EAAKqJ,gBAAgBrJ,EAAG,cAAmBA,EAAG,WAAgBoJ,EAAWT,EAAgB3I,EAAG,OAAYA,EAAG,gBAKvH,SAASsJ,GAAeC,EAAa3J,EAAS+I,EAAgBa,EAASC,GAEnExP,EAAcd,IADG,wBACsBoQ,EAAa3J,GAAS7D,MAAK,SAACiE,GAC/D,QAAYtF,IAARsF,EACAwJ,EAAQ7L,SAAS,CAACC,eAAe,SAC9B,GAAiB,MAAboC,EAAInC,KAAc,CACzB,IAAMuL,EAAY,CAAC,QAAWpJ,EAAG,SACjCwJ,EAAQH,gBAAgBrJ,EAAG,cAAmBA,EAAG,WAAgBoJ,EAAWT,EAAgB3I,EAAG,SAAcA,EAAG,WAC/F,cAAbyJ,GACAD,EAAQE,UAAU,gBAAgB,4BAA4B,SAE/C,MAAb1J,EAAInC,KACV2L,EAAQE,UAAU,eAAe,uBAAuB,IACrC,MAAb1J,EAAInC,MACVvD,aAAauF,WAAW,mBAkDpC,SAAS8J,GAAevM,EAAcqL,EAAQ7I,GAC1C,GAA4B,IAAxBxC,EAAapD,OAAjB,CAIA,IAAI0O,EAAmBtL,EAAa,GAChCY,EAAgB0K,EAAgB,eAEhCC,EAAiB,CAAC,MADID,EAAgB,iBACU,MAAS1K,GACzD4K,EAAYC,MAASC,SAAS,GAAI,QAAQc,QAAQ,OAAOb,OAAO,uBAAuBzI,WACvF0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,WACzEwD,KAAKnG,SAAS,CAACiL,UAAWA,EAAWI,QAAQA,IAO7CM,GANc,CACV,aAAgB,CAACtL,GACjB,UAAayK,EACb,mBAAqBG,EACrB,iBAAoBI,GAEApJ,EAAS+I,EAAgB7E,KAAM,cAG3D,SAAS+F,GAAuB7L,GAAe,IAAD,OAEtC5D,EAAO,CAAC,eAAiB4D,GAC7BN,EAAavE,IAFE,qCAEsBiB,GAAM2B,MAAK,SAACC,GAC7C,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,EACrC,EAAK2D,SAAS,CAACoM,kBAAmBD,EAAQ,GAAR,oBAAmCE,kBAAkB,IAEvF,EAAKrM,SAAS,CAACqM,kBAAkB,SAIrC,EAAKrM,SAAS,CAACC,eAAe,OAuEnC,SAASqM,GAAwBC,EAAS1N,EAAK2N,EAAOvB,EAAWI,GAAU,IAAD,OACvEP,EAASnO,aAAaC,QAAQ,WAChCqF,EAAUtF,aAAaC,QAAQ,gBAE/B6P,EAAiB,CACjB,aAAgB,CAACF,EAAO,OACxB,iBAAoBG,MAapBC,EAAiBJ,EAAO,MAC5BxM,EAAavE,IAAe,kDAAoDmR,GAAgBvO,MAAK,SAACC,GAClG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,GACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,4BAIpC,EAAKnM,SAAS,CAACC,eAAe,OAItC,IAAM4M,EAAe,8CAA0C/B,GAC/DxO,EAAcd,IAAeqR,EAAiBJ,EAAgBxK,GAAS7D,MAAK,SAACiE,GACzE,QAAYtF,IAARsF,EACA,EAAKrC,SAAS,CAACC,eAAe,QAE7B,CACD,IAAI6M,EAAqBzK,EAAG,QAC5B,EAAK0K,qBAAqBD,EAAoBjO,EAAK2N,EAAOD,EACtDtB,EAAWI,OAO3B,SAAS2B,GAA2BC,EAAQnC,EAAQ7I,GAAU,IAAD,OACxDgJ,EAAYC,MAASC,SAAS,GAAI,QAAQc,QAAQ,OAAOb,OAAO,uBAAuBzI,WACvF0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,WACzE,GAAIsK,EAAO5Q,OAAS,EAAG,CAChB,IAAI6Q,EAAaD,EAAO,GACpBE,EAAYD,EAAU,YACtBT,EAAiB,CACjB,UAAa3B,EACb,MAAS,MACT,YAAeqC,EACf,WAAc,KACd,YAAe,QACf,mBAAsBlC,EACtB,iBAAoBI,GAExB/O,EAAcd,IAAe,iBAAkBiR,EAAgBxK,GAAS7D,MAAK,SAACiE,QAC9DtF,IAARsF,EACA,EAAKrC,SAAS,CAACC,eAAe,IAE9B,EAAKmN,+BAA+BH,EAAQ5K,EAAK,CAAC,MAAS6K,EAAU,WAAgB,MAASC,GAAYlC,EAAWI,OAMrI,SAASgC,GAA+BJ,EAAQnC,EAAQ7I,GAAU,IAAD,OACzDgJ,EAAYC,MAASC,SAAS,GAAI,QAAQc,QAAQ,OAAOb,OAAO,uBAAuBzI,WACvF0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,WACzE,GAAIsK,EAAO5Q,OAAS,EAAG,CACnB,IAAI6Q,EAAaD,EAAO,GACpBE,EAAYD,EAAU,YACtBT,EAAiB,CACjB,aAAgB,CAACU,GACjB,iBAAoBT,MAElBG,EAAe,8CAA0C/B,GAC/DxO,EAAcd,IAAeqR,EAAiBJ,EAAgBxK,GAAS7D,MAAK,SAACiE,GACzE,QAAYtF,IAARsF,EACA,EAAKrC,SAAS,CAACC,eAAe,QAE7B,CACD,IAAI6M,EAAqBzK,EAAG,QAC5B,EAAK+K,+BAA+BH,EAAQH,EACxC,CACI,MAASI,EAAU,WACnB,MAASC,GAEblC,EACAI,QAMpB,SAASiC,GAAmCC,EAAiBzC,EAAQ7I,GAAU,IAAD,OACrEgJ,EAAYC,MAASC,SAAS,GAAI,QAAQc,QAAQ,OAAOb,OAAO,uBAAuBzI,WACvF0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,WAE1E,GAAI4K,EAAgBlR,OAAS,EAAG,CAC5B,IAAI0O,EAAmBwC,EAAgB,GACnClN,EAAgB0K,EAAgB,eAChC0B,EAAiB,CACjB,UAAa3B,EACb,OAAU,KACV,gBAAmB,CAACzK,GACpB,aAAgB,KAChB,OAAU,KACV,WAAc,KACd,MAAS,MACT,mBAAsB4K,EACtB,iBAAoBI,EACpB,eAAkB,CAAChL,IAGvB/D,EAAcd,IAAe,iBAAkBiR,EAAgBxK,GAAS7D,MAAK,SAACoP,QAC5DzQ,IAAVyQ,EACA,EAAKxN,SAAS,CAACC,eAAe,IAE9B,EAAKwN,aAAaD,EAAOD,EAAiB,CAAC,MAASxC,EAAgB,iBAAqB,MAAS1K,GAAgB4K,EAAWI,MAKrI,IAAIlL,EAAWe,EAAkB4J,EAAQzK,GACzC,GAAiB,OAAbF,EAEA,YADAgG,KAAKuH,qBAAqBvN,EAAU,KAAM,GAAI,CAAC,MAAS4K,EAAgB,iBAAqB,MAAS1K,IAI1GN,EAAavE,IAAe,YAAciR,EAAgBxK,GAAS7D,MAAK,SAACiE,GACrE,QAAYtF,IAARsF,EACA,EAAKrC,SAAS,CAACC,eAAe,QAC3B,CACH,IAAME,EAAWkC,EAAG,SACpB,EAAKqL,qBAAqBvN,EAAU,KAAM,GAAI,CAAC,MAAS4K,EAAgB,iBAAqB,MAAS1K,IACtGC,EAAcH,EAAU2K,EAAQzK,QAMhD,SAASsN,GAAiBC,GACjB,IAAIC,EAAeD,EAAME,cACrB3N,EAAW,QACmBpD,IAA/B8Q,EAAaE,oBAA2DhR,IAA5B8Q,EAAatG,YAC1DpH,EAAS0F,KAAK,CAAC,MAAQgI,EAAatG,WAAY,MAAQsG,EAAaE,qBAE1ChR,IAA1B8Q,EAAaG,eAAuDjR,IAA7B8Q,EAAaI,aACrD9N,EAAS0F,KAAK,CAAC,MAAQgI,EAAaG,SAAU,MAAQH,EAAaI,mBAEvClR,IAA3B8Q,EAAaK,gBAAyDnR,IAA9B8Q,EAAaM,cACtDhO,EAAS0F,KAAK,CAAC,MAAQgI,EAAaK,UAAW,MAAQL,EAAaM,eAEtE,IAAIC,EAAWR,EAAMQ,SACrB,GAAGA,EAAS/R,OAAS,EAAG,CACrB,IAAIgS,EAAqBD,EAAS,GAAT,mBACzBjO,EAAS0F,KAAK,CAAC,MAASuI,EAAS,GAAT,mBAAmC,MAASC,EAAkB,sBAA2B,KAAQ,OACzHlO,EAAS0F,KAAK,CAAC,MAASuI,EAAS,GAAT,gBAAgC,MAASC,EAAkB,gBAAqB,KAAQD,EAAS,GAAT,OAChHC,EAAqBD,EAAS,GAAT,mBACrBjO,EAAS0F,KAAK,CAAC,MAASuI,EAAS,GAAT,gBAAgC,MAASC,EAAkB,gBAAqB,KAAQD,EAAS,GAAT,OAChHC,EAAqBD,EAAS,GAAT,mBACrBjO,EAAS0F,KAAK,CAAC,MAASuI,EAAS,GAAT,gBAAgC,MAASC,EAAkB,gBAAqB,KAAQD,EAAS,GAAT,OAC1E,KAAnCA,EAAS,GAAT,kBACAC,EAAqBD,EAAS,GAAT,mBACrBjO,EAAS0F,KAAK,CAAC,MAASuI,EAAS,GAAT,gBAAgC,MAASC,EAAkB,gBAAqB,KAAQD,EAAS,GAAT,QAGtH,IAAIE,EAAanO,EAASP,IAAI3C,KAAKiB,WAC/BqQ,EAAY,IAAIC,IAAIF,GAGxB,OAFAnO,EAAWsO,MAAMC,KAAKH,GAAW3O,IAAI3C,KAAKC,OAkB5C,SAASyR,GAA2BC,GACvC,IAAIC,EAAoB,GACxB,QAAiB9R,IAAb6R,GAAuC,OAAbA,EAC1B,OAAOC,EAHsC,2BAMjD,YAAiBD,EAAjB,+CAA2B,CAAC,IAAnBE,EAAkB,QACnBC,EAAaD,EAAKE,QAClBC,EAAmB,CACnB,aAAgBF,EAAWG,gBAC3B,UAAiC,IAApBJ,EAAKK,WAClB,GAAML,EAAKM,kBACX,MAASL,EAAWM,UACpB,QAAU,GAAV,OAAc5L,OAAOsL,EAAWO,kBAAhC,YAAqDP,EAAWQ,gBAAkB,KAClF,eAAkBR,EAAWS,QAEjCX,EAAkBhJ,KAAKoJ,IAhBsB,kFAmBjD,OAAOJ,EAGJ,SAASY,GAAyBC,GACrC,IAAIC,EAAoB,GACxB,QAAuB5S,IAAnB2S,GAAmD,OAAnBA,EAChC,OAAOC,EAH0C,2BAKrD,YAAiBD,EAAjB,+CAAiC,CAAC,IAAzBjT,EAAwB,QACzBmT,EAAiBnT,EAAKuS,QAC1BW,EAAkBlT,EAAKoT,oBAAsBD,GAPI,kFAUrD,OAAOD,EAGJ,SAASG,GAA2BC,GACvC,IAEIC,EAAmB,GAEnBC,EAAmB,CACnB,QALU,CAAC,WAAY,OAAQ,eAC/B,cAAe,SAAU,SAAU,WAKnC,KAAQD,GAGZ,QAAoBjT,IAAhBgT,GAA6C,OAAhBA,EAC7B,OAAOE,EAEX,IAAIC,EAAQ,EAbwC,uBAcpD,YAAoBH,EAApB,+CAAiC,CAAC,IAAzBI,EAAwB,QACzBC,EAAU,GACVC,EAAgBF,EAAQnB,QAC5BoB,EAAQvK,KAAK,CAAC,MAASsK,EAAQG,SAAU,KAAQ,OACjDF,EAAQvK,KAAK,CAAC,MAAQ,UAAR,OAAmBwK,EAAcE,YAAc,KAAQ,OAErEH,EAAQvK,KAAK,CAAC,MAAQ,GAAR,OAAYsK,EAAQK,cAAgB,KAAQ,OAC1DJ,EAAQvK,KAAK,CAAC,MAAQ,QAAR,OAAiBwK,EAAcb,QAAU,KAAQ,OAC/DY,EAAQvK,KAAK,CAAC,MAAQ,GAAR,OAAYsK,EAAQM,iBAApB,OAAsCN,EAAQO,QAAU,KAAQ,OAG9E,IAAIC,EAAc,CACd,SAAW,GAAX,OAAeR,EAAQS,mBACvB,YAAyB,IAAVV,GAGnBS,EAAW,mBAAyBR,EAAQN,mBAC5CO,EAAQvK,KAAK,CAAC,MAAS,GAAI,eAAkB8K,EAAa,KAAQ,qBAClEP,EAAQvK,KAAK,CAAC,MAASsK,EAAU,KAAQ,OACzCH,EAAiBnK,KAAKuK,GACtBF,GAAgB,GAlCgC,kFAqCpD,OAAOD,EAIJ,SAASY,GAAOC,GAAuB,IAAD,OACnChU,GADmC,wDAC1BH,aAAaC,QAAQ,YAChCqF,EAAUtF,aAAaC,QAAQ,gBAC/BH,EAAO,CAAC,UAAaK,GACzB,OAAOgU,GACH,IAAK,UACF/Q,EAAavE,IAAe,YAAYiB,GAAM2B,MAAM,SAACC,QAC/BtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MAChB,EAAKF,SAAS,CAACG,SAAS9B,EAAQ,WAChC0B,EAAavE,IAAgB,aAAciB,GAAM2B,MAAK,SAACoP,QACpCzQ,IAAVyQ,EACD,EAAKxN,SAAS,CAACC,eAAe,IAE9B,EAAKD,SAAS,CAAC+Q,WAAYvD,EAAK,gBAGhB,MAAlBnP,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,WACJF,EAAavE,IAAe,YAAYiB,GAAM2B,MAAM,SAACC,GAC9C,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI8O,EAAO,eAAO,EAAKgC,MAAMhC,SAC7BA,EAAQiC,SAAW5S,EAAQ,SAC3B0B,EAAavE,IAAgB,aAAaiB,GAAM2B,MAAK,SAACoP,QACnCzQ,IAAVyQ,EACD,EAAKxN,SAAS,CAACC,eAAe,KAE9B+O,EAAQ+B,WAAavD,EAAK,UAC1B,EAAKxN,SAAS,CAACgP,qBAGC,MAAlB3Q,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MAEJ,IAAK,gBACDF,EAAavE,IAAe,YAAYiB,GAAM2B,MAAM,SAACC,GACjD,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI8O,EAAO,eAAO,EAAKgC,MAAMhC,SAC7BA,EAAQiC,SAAW5S,EAAQ,SAC3B0B,EAAavE,IAAgB,gBAAiBiB,GAAM2B,MAAK,SAACoP,GACtD,QAAazQ,IAAVyQ,EAGC,OAFA,EAAKxN,SAAS,CAACC,eAAe,SAC9B,EAAKD,SAAS,CAACgP,YAGnBA,EAAQkC,cAAgB1D,EAAK,cAC7B,EAAKxN,SAAS,CAACgP,oBAEK,MAAlB3Q,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAEnB,EAAK4E,SAAS,CAACC,eAAe,OAGrC,MACJ,IAAK,UACD,IAAIkR,EAAuB,GACvBC,EAAmB,GACvBrR,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,QACpCtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,IACT,MAAlB5B,EAAS6B,MACfiR,EAAuB9S,EAAS6S,cAChC,EAAKlR,SAAS,CAACqR,oBAAoBF,KACZ,MAAlB9S,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtCF,EAAavE,IAAe,mBAAoBiB,GAAM2B,MAAK,SAACC,QACvCtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,IACT,MAAlB5B,EAAS6B,MAChBkR,EAAmB/S,EAASiT,iBAC5B,EAAKtR,SAAS,CAACuR,gBAAgBH,KACP,MAAlB/S,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAEnB,EAAK4E,SAAS,CAACC,eAAe,OAIrC,MACJ,IAAK,yBACDxD,EAAI,SAAe,KACnBsD,EAAavE,IAAe,QAASiB,GAAM2B,MAAK,SAACC,GAC7C,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC/B,IAAImC,EAAM2G,GAAY3K,EAASmT,QAC/B,EAAKxR,SAAS,CAACyR,aAAapP,SAE3B,EAAKrC,SAAS,CAACC,eAAe,OAGtCxD,EAAI,SAAc,KAClBsD,EAAavE,IAAe,QAASiB,GAAM2B,MAAK,SAACC,GAC7C,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC/B,IAAImC,EAAM2G,GAAY3K,EAASmT,QAC/B,EAAKxR,SAAS,CAAC0R,aAAarP,SAE3B,EAAKrC,SAAS,CAACC,eAAe,OAGtC,MAEJ,IAAK,gBACDF,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAImC,EAAI6G,GAAoB7K,EAAS6S,eACrC,EAAKlR,SAAS,CAACvD,KAAK4F,IACpB,EAAKrC,SAAS,CAAC2R,mBAAmB,iCACV,MAAlBtT,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MAEJ,IAAK,mBACDF,EAAavE,IAAe,mBAAoBiB,GAAM2B,MAAK,SAACC,GACxD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAImC,EAAIyG,GAAezK,EAASiT,kBAChC,EAAKtR,SAAS,CAAC+I,cAAc1G,IAC7B,EAAKrC,SAAS,CAAC4R,eAAe,qCACN,MAAlBvT,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,oBACD,IAAI4R,EAAe7E,GAA2B8E,KAAK3L,MAC/CrF,EAAWE,EAAgBlE,GAC/B,GAAiB,OAAbgE,EAAmB,CACnB+Q,EAAa/Q,EAAUhE,EAASmF,GAChC,IAAI0K,EAAiB7L,EAAS,GAAT,YAiBrB,YAhBAf,EAAavE,IAAe,kDAAoDmR,GAAgBvO,MAAK,SAACC,GAClG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,EACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,qBAAoCE,kBAAkB,IAEtF,EAAKrM,SAAS,CAACqM,kBAAkB,SAIrC,EAAKrM,SAAS,CAACC,eAAe,OAMtCF,EAAavE,IAAe,kBAAmBiB,EAAMwF,GAAS7D,MAAK,SAAC2T,GAChE,QAAchV,IAAVgV,EACA,EAAK/R,SAAS,CAACC,eAAe,SAC3B,GAAkB,MAAf8R,EAAM7R,KAAc,CAC1B,IAAMY,EAAWiR,EAAK,SAClBpF,EAAiB7L,EAAS,GAAT,YACrBf,EAAavE,IAAe,kDAAoDmR,GAAgBvO,MAAK,SAACC,GAClG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,EACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,qBAAoCE,kBAAkB,IAEtF,EAAKrM,SAAS,CAACqM,kBAAkB,SAIrC,EAAKrM,SAAS,CAACC,eAAe,OAGtC4R,EAAa/Q,EAAUhE,EAASmF,GAChCpB,EAAcC,EAAUhE,OAIpC,MACJ,IAAK,mBAED,IAAIkV,EAAwB3E,GAA+ByE,KAAK3L,MAC5DrF,EAAWE,EAAgBlE,GAC/B,GAAiB,OAAbgE,EAAmB,CACnBkR,EAAsBlR,EAAUhE,EAASmF,GACzC,IAAI0K,EAAiB7L,EAAS,GAAT,YAiBrB,YAhBAf,EAAavE,IAAe,kDAAoDmR,GAAgBvO,MAAK,SAACC,GAClG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,EACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,qBAAoCE,kBAAkB,IAEtF,EAAKrM,SAAS,CAACqM,kBAAmB,SAKtC,EAAKrM,SAAS,CAACC,eAAe,OAKtCF,EAAavE,IAAc,kBAAkBiB,EAAMwF,GAAS7D,MAAK,SAAC2T,GAC9D,QAAchV,IAAVgV,EACA,EAAK/R,SAAS,CAACC,eAAe,SAC3B,GAAkB,MAAf8R,EAAM7R,KAAc,CAC1B,IAAMY,EAAWiR,EAAK,SAClBpF,EAAiB7L,EAAS,GAAT,YACrBf,EAAavE,IAAe,kDAAoDmR,GAAgBvO,MAAK,SAACC,GAClG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,EACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,qBAAoCE,kBAAkB,IAEtF,EAAKrM,SAAS,CAACqM,kBAAkB,SAIrC,EAAKrM,SAAS,CAACC,eAAe,OAGtC+R,EAAsBlR,EAAUhE,EAASmF,GACzCpB,EAAcC,EAAUhE,OAMpC,MACJ,IAAK,iBACD,IAAImV,EAAa3E,GAAmCwE,KAAK3L,MACrD+L,EAAqB9Q,EAAsBtE,GAC/C,GAA2B,OAAvBoV,GAA+BA,EAAmB7V,OAAS,EAAG,CAC9D,IAAI8V,EAA2BD,EAAmB,GAAnB,eAmB/B,OAlBAzV,EAAI,eAAqB0V,EACzBpS,EAAavE,IAAe,qCAAqCiB,GAAM2B,MAAK,SAACC,GACzE,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,EACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,oBAAkCE,kBAAkB,IAEpF,EAAKrM,SAAS,CAACqM,kBAAkB,SAKrC,EAAKrM,SAAS,CAACC,eAAe,YAGtCgS,EAAWC,EAAoBpV,EAASmF,GAG5CxF,EAAO,CAACiD,UAAW5C,GACnBiD,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAMT,EAAepB,EAAQ,aAC7B,GAAmB,OAAhBoB,GAAwBA,EAAapD,OAAS,EAAE,CAEhD,IAAIgE,EAAgBZ,EAAa,GAAb,eACpBhD,EAAI,eAAqB4D,EACxBN,EAAavE,IAAe,qCAAsCiB,GAAM2B,MAAK,SAACC,GAC1E,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAiB,OAAb5B,GAAuC,MAAlBA,EAAS6B,KAAc,CACnD,IAAIiM,EAAU9N,EAAQ,QACN,OAAZ8N,GAAoBA,EAAQ9P,OAAS,GACrC,EAAK2D,SAAS,CAAC4M,gBAAiBT,EAAQ,GAAR,2BAIpC,EAAKnM,SAAS,CAACC,eAAe,OAM1CgS,EAAWxS,EAAc3C,EAASmF,GAClCzC,EAAsBC,EAAc3C,QAEb,MAAlBuB,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,2BACD,IAAImS,EAAmBpG,GAAe8F,KAAK3L,MACvCkM,EAAyBnG,GAAuB4F,KAAK3L,MACrD1G,EAAe2B,EAAsBtE,GACzC,GAAqB,OAAjB2C,GAAyBA,EAAapD,OAAS,EAAG,CAClD8J,KAAKmM,sBAAsB7S,GAC3B2S,EAAiB3S,EAAc3C,EAASmF,GACxC,IAAIkQ,EAA2B1S,EAAa,GAAb,eAC/B4S,EAAuBF,GACvB,MAEJ1V,EAAO,CAACiD,UAAW5C,GACnBiD,EAAavE,IAAe,gBAAgBiB,GAAM2B,MAAK,SAACC,GACpD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIT,EAAepB,EAAQ,aAC3B+T,EAAiB3S,EAAc3C,EAASmF,GACxC,EAAKqQ,sBAAsB7S,GAC3B,IAAI0S,EAA2B1S,EAAa,GAAb,eAC/B4S,EAAuBF,GACnB1S,EAAapD,OAAS,GACtBmD,EAAsBC,EAAc3C,OAIhD,MACJ,IAAK,oBACF,IAAIyV,EAAqB1H,GAAiBiH,KAAK3L,MAC1CqM,EAAkBpR,EAAsBtE,GAC5C,GAAwB,OAApB0V,GAA4BA,EAAgBnW,OAAS,EAAG,CACxDkW,EAAmBC,EAAiB1V,EAASmF,GAC7C,MAEJxF,EAAO,CAACiD,UAAW5C,GACnBiD,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIsS,EAAkBnU,EAAQ,aAC1BmU,EAAgBnW,OAAS,IACzBmD,EAAsBgT,EAAiB1V,GACvCyV,EAAmBC,EAAiB1V,EAASmF,QAIzD,MACJ,IAAK,uBACD,IAAIwQ,EAAetM,KAAK6K,MAAM0B,YAAX,QACnB,GAAqB,OAAjBD,QAA0C1V,IAAjB0V,GAAsD,IAAxBA,EAAapW,OACpE,OAGJ,IAAIsW,EAAkB,CAAE,UAAa7V,EACjC,OAAU,KACV,gBAAmB,KACnB,aAAgB,CAAC2V,EAAa,IAC9B,OAAU,KACV,WAAc,MAElBnW,EAAcd,IAAe,iBAAkBmX,EAAkB1Q,GAAS7D,MAAK,SAACoP,GAC5E,EAAKC,aAAaD,MAEtB,MACJ,IAAK,aACDzN,EAAavE,IAAe,sBAAsB4C,MAAK,SAACC,QACnCtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MAChBiK,GAAiB,KAAM9L,EAASuU,oBAAqB9V,GAASsB,MAAK,SAACiE,GAChE,IAAI2M,EAAO,eAAO,EAAKgC,MAAMhC,SAC7BA,EAAQ6D,UAAUxQ,EAClB,EAAKrC,SAAS,CAACgP,eAEnB7E,GAAiB,KAAM9L,EAASuU,oBAAqB9V,GAASsB,MAAK,SAACiE,GAChE,IAAI2M,EAAO,eAAO,EAAKgC,MAAMhC,SAC7BA,EAAQ8D,UAAUzQ,EAClB,EAAKrC,SAAS,CAACgP,gBAEK,MAAlB3Q,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,mBACD,IAAI8S,EAAsB,oBAC1BhT,EAAavE,IAAeuX,EAAoBtW,GAAM2B,MAAK,SAACC,GACxD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,QAC3B,CACH,IAAI+S,EAAuB3U,EAAS4U,uBACpC,EAAKjT,SAAS,CAACgT,qBAAqBA,IACd,MAAlB3U,EAAS6B,MACT,EAAKF,SAAS,CAACkT,eAAe7U,EAAQ,sBAKlD,MAEJ,IAAK,qBACD,IAAM8U,EAAW,cACjBpT,EAAavE,IAAe2X,EAAU1W,GAAM2B,MAAK,SAACC,GAC9C,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIzD,EAAO4B,EAAS5B,KACpB,QAAaM,IAATN,GAA+B,OAATA,EACtB,OAGJ,IAAI2W,EAAU3W,EAAK4W,IACfC,EAAU7W,EAAK8W,IACnB,EAAKvT,SAAS,CACVoT,QAASA,EACTE,QAASA,QAOrB,MAEJ,IAAK,qBACDvT,EAAavE,IAAe,sBAAsB4C,MAAK,SAACC,QACnCtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,KAChBiK,GAAiB,EAAK6G,MAAMhC,QAAQwE,KAAMnV,EAASuU,oBAC/C9V,GAASsB,MAAK,SAACiE,GACZA,EAAIhG,OAAS,IACmB,OAA5B,EAAK2U,MAAMhC,QAAQwE,KAErB,EAAKxT,SAAS,CAACyT,cAAcpR,IACQ,OAA5B,EAAK2O,MAAMhC,QAAQwE,MAE3B,EAAKxT,SAAS,CAAC0T,cAAcrR,IAE/BqI,GAAWrI,EAAKvF,GAASsB,MAAK,SAACoP,GAC3B,IAAIwB,EAAO,eAAO,EAAKgC,MAAMhC,SAI7B,GAHAA,EAAQvS,KAAK,EAAKuU,MAAMhC,QAAQwE,MAAQhG,EACxCwB,EAAQhF,UAAY3H,EACpB,EAAKrC,SAAS,CAACgP,YACiB,OAA5B,EAAKgC,MAAMhC,QAAQwE,KAAe,CAGlC,IAFA,IAAIJ,EAAU,EAAKpC,MAAMyC,cACnBE,EAAqBnG,EAAK,eACvB/H,EAAI,EAAGA,EAAI2N,EAAQ/W,OAAQoJ,IAAK,CACrC,IAAImO,EAAeR,EAAQ3N,GAC3B,QAAqB1I,IAAjB6W,GAA+C,OAAjBA,EAIlC,IADA,IAAMC,EAAiBD,EAAY,YAC1BE,EAAI,EAAGA,EAAID,EAAexX,OAAQyX,IAAK,CAC5C,IAAMC,EAAcH,EAAY,OAChCC,EAAeC,GAAf,WAAkCH,EAAmBI,GAAaD,IAG1E,EAAK9T,SAAS,CAACyT,cAAeL,SAE7B,GAAgC,OAA5B,EAAKpC,MAAMhC,QAAQwE,KAAe,CAEvC,IADA,IAAIF,EAAU,EAAKtC,MAAM0C,cAChBjO,EAAI,EAAGA,EAAI6N,EAAQjX,OAAQoJ,IAAK,CACrC,IAAIuO,EAAcV,EAAQ7N,GAC1B,QAAoB1I,IAAhBiX,GAA6C,OAAhBA,EAGjC,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAW,YAAgB3X,OAAQyX,IACnDE,EAAW,YAAgBF,GAA3B,WAA8CtG,EAAK,eAAmBwG,EAAW,QAAYF,GAIrG,EAAK9T,SAAS,CAAC0T,cAAeJ,YAKtB,MAAlBjV,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAEnB,EAAK4E,SAAS,CAACC,eAAe,OAGrC,MACJ,IAAK,eACD,IAAIO,EAAec,EAAsBxE,GACzC,GAAqB,OAAjB0D,GAAyBA,EAAanE,OAAS,EAAG,CAClD,IAAI4X,EAAazT,EAAaZ,KAAI,SAAU8F,GACxC,MAAO,CAAC,MAASA,EAAG,SAAc,MAASA,EAAG,WAElDS,KAAKnG,SAAS,CAACkU,YAAaD,IAC5B,MAGJlU,EAAavE,IAAe,gBAAgBiB,GAAM2B,MAAK,SAACC,GACpD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI+T,EAAa,GACbzT,EAAenC,EAAQ,aACvBmC,EAAanE,OAAS,IACtBkE,EAAqBC,EAAc1D,GACnCmX,EAAazT,EAAaZ,KAAI,SAAU8F,GACpC,MAAO,CAAC,MAASA,EAAG,SAAc,MAASA,EAAG,YAGtD,EAAK1F,SAAS,CAACkU,YAAaD,SAEL,MAAlB5V,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,kCACD,IAAIkU,EAAmB/S,EAAsBtE,GAC7C,GAAyB,OAArBqX,GAA6BA,EAAiB9X,OAAS,EAAG,CAC1D8J,KAAKnG,SAAS,CAAC6C,oBAAqBsR,IACpC,MAEJ1X,EAAO,CAACiD,UAAW5C,GACnBiD,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIT,EAAepB,EAAQ,aAC3B,EAAK2B,SAAS,CAAC6C,oBAAqBsR,IACpC3U,EAAsBC,EAAc3C,QAEb,MAAlBuB,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,qBACDF,EAAavE,IAAe,sBAAuBiB,GAAM2B,MAAK,SAACC,GAC3D,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAImC,EAEJA,EAAMkE,EADoBlI,EAAQ,OAElC,EAAK2B,SAAS,CACVwG,mBAAoBnE,SAGD,MAAlBhE,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,cACDF,EAAavE,IAAe,iBAAiB4C,MAAK,SAACC,GAC/C,QAAiBtB,IAAbsB,EAKJ,GAAsB,MAAlBA,EAAS6B,KAWS,MAAlB7B,EAAS6B,MACTvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,QAflC,CACI,IAAImU,EAAkB/V,EAAQ,cAE1BgE,EAAM+F,EAA4BgM,EADjB/V,EAAQ,gBAE7B,EAAK2B,SAAS,CACVqU,cAAehS,EACfiS,gBAAiBF,SAVrB,EAAKpU,SAAS,CAACC,eAAe,OAsBtC,MAEJ,IAAK,uBAED,QAAgBlD,IAAZD,GAAqC,OAAZA,EAAkB,CAC3C,IAAIL,EAAO,CAACiD,UAAW5C,GACvBiD,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIT,EAAepB,EAAQ,aACvBkW,EAAkB,GAFQ,uBAG9B,YAAwB9U,EAAxB,+CAAsC,CAAC,IAA9B+U,EAA6B,QAClCD,EAAgBC,EAAW,gBAAsBA,GAJvB,kFAO9B,EAAKxU,SAAS,CACVuU,gBAAiBA,SAGE,MAAlBlW,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,OAI1C,MAEJ,IAAK,gBACDF,EAAavE,IAAe,uBAAwBiB,GAAM2B,MAAK,SAACC,GAC5D,QAAiBtB,IAAbsB,EAAJ,CAKA,GAAsB,MAAlBA,EAAS6B,KAGT,OAFAvD,aAAauF,WAAW,qBACxB/G,OAAOC,SAAW,KAItB,GAAsB,MAAlBiD,EAAS6B,KAAc,CACvB,IAAImC,EAAM,GACV,GAAIhE,EAAQ,8BAAkChC,OAAS,EAEnDgG,EAAMiD,EADcjH,EAAQ,+BAGhC,EAAK2B,SAAS,CACVyU,cAAepS,SAKnB,EAAKrC,SAAS,CAAEC,eAAe,SAtB/B,EAAKD,SAAS,CAAEC,eAAe,OAyBvC,MACJ,IAAK,gBACJF,EAAavE,IAAe,YAAYiB,GAAM2B,MAAM,SAACC,GAC9C,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI8O,EAAO,eAAO,EAAKgC,MAAMhC,SAC7BA,EAAQiC,SAAW5S,EAAQ,SAC3B,EAAK2B,SAAS,CAACgP,QAASA,SACA,MAAlB3Q,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,OAGtC,MACJ,IAAK,eACD,QAAgBlD,IAAZD,GAAqC,OAAZA,EAAkB,CAC3C,IAAIL,EAAO,CAACiD,UAAW5C,GACvBiD,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAImC,EACAqS,EACAjV,EAAepB,EAAQ,aAC3BgE,EAAMqG,GAA6BjJ,GACnCiV,EAAUjV,EAAaG,KAAI,SAAU8F,GAC7B,MAAO,CAAC,MAASA,EAAG,iBAAsB,MAASA,EAAG,mBAE9D,EAAK1F,SAAS,CACV6C,oBAAqBpD,EACrBhD,KAAM4F,EACNsS,mBAAoBD,EACpBE,cAAa,SAGM,MAAlBvW,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,OAI1C,MACJ,IAAK,0BACelD,IAAZD,GAAqC,OAAZA,IACzBL,EAAO,CAACiD,UAAW5C,GACnBiD,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIwU,EAEJA,EADmBrW,EAAQ,aACJuB,KAAI,SAAU8F,GAC7B,MAAO,CAAC,MAASA,EAAG,iBAAsB,MAASA,EAAG,mBAE9D,EAAK1F,SAAS,CACV2U,mBAAoBD,SAGD,MAAlBrW,EAAS6B,MACdvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAGlB,EAAK4E,SAAS,CAACC,eAAe,QAI1C,MACJ,IAAK,iBACDF,EAAavE,IAAe,mBAAoBiB,GAAM2B,MAAK,SAACoP,GACpD,QAAczQ,IAAVyQ,GAAsC,MAAfA,EAAMtN,KAAc,CAC3C,IAAM2U,EAAiBrH,EAAMsH,aAC7B,EAAK9U,SAAS,CACV+U,cAAeF,EAAeG,kBAC9BC,SAAUJ,EAAeK,mBACzBC,SAAUN,EAAeO,UACzBC,gBAAiBR,EAAeS,sBAGpC,EAAKtV,SAAS,CAAC+U,cAAe,KAAME,SAAU,UAG1D,MAEA,IAAK,sBACDlV,EAAavE,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GACrD,QAAiBtB,IAAbsB,EAAuB,CACvB,IAAIkX,EAAkBlX,EAAQ,gBACNtB,IAApBwY,GAAqD,OAApBA,IACjCA,EAAkB,GAEA,MAAlBlX,EAAS6B,MACT,EAAKF,SAAS,CACVwV,oBAAoB,EACpBC,cAAeF,EACfG,kBAAmBH,QAKnC,MAEJ,IAAK,qBACGpP,KAAKnG,SAAS,CAAC2V,mBAAoB,WACnC,IAAMC,EAAgBzP,KAAK6K,MAAMyE,cAC7BI,EAAclZ,aAAaC,QAAQ,gBACnCkZ,EAAoB,CAAC,eAAkBF,GAC3CpU,EAAgBhG,IAAe,gBAAiBsa,EAAmBD,GAAazX,MAC5E,SAACC,GACG,EAAK2B,SAAS,CAACwV,oBAAoB,SACnBzY,IAAbsB,GAA4C,MAAlBA,EAAS6B,MAClC,EAAKF,SAAS,CACV0V,kBAAmBE,EACnBD,mBAAoB,WAExB,EAAK5J,UAAU,gBAAiB,qCAAsC,MAEtE,EAAK/L,SAAS,CAAC2V,mBAAoB,KACnC,EAAK5J,UAAU,eAAgB,iCAAkC,QAI7E,MAEZ,IAAK,oBACD,IAAMxG,EAAY,CAAC,UAAazI,GAChC0E,EAAgBhG,IAAe,cAAe+J,EAAWtD,GAAS7D,MAAK,SAACC,QACnDtB,IAAbsB,GACA,EAAK2B,SAAS,CAACC,eAAe,IAC9BtB,QAAQD,MAAM,mCACW,MAAlBL,EAAS6B,KAChB,EAAKF,SAAS,CAACqV,iBAAiB,IAEhC1W,QAAQD,MAAM,kCAGtB,MAEJ,IAAK,WACDqB,EAAavE,IAAe,aAAciB,GAAM2B,MAC5C,SAACC,GACG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAImC,EAAMuG,GAAiBvK,EAAS0X,UACpC,EAAK/V,SAAS,CAAEgW,UAAW3X,EAAS0X,SAAUE,OAAQ5T,EACtC6T,sBAAuB7X,EAAS6X,6BACvB,MAAlB7X,EAAS6B,OAChBvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,QAG9B,MACJ,IAAK,SACD2E,EAAavE,IAAe,aAAciB,GAAO2B,MAC7C,SAACC,GACG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IACIiW,EADU9X,EAAQ,SACKuB,KAAI,SAAU8F,GACjC,IAAIvF,EAAWwN,GAAiBjI,GAChC,MAAO,CAAC,MAASA,EAAG,WAAgB,MAASA,EAAG,YAAiB,SAAYvF,MAErF,EAAKH,SAAS,CACV6N,aAAcxP,EACd8X,aAAcA,SAGO,MAAlB9X,EAAS6B,OAChBvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,QAG9B,MACJ,IAAK,UACD2E,EAAavE,IAAe,uBAAuBiB,GAAM2B,MAAM,SAACC,GAC3D,QAAiBtB,IAAbsB,EACG,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAqB,MAAlB5B,EAAS6B,KAAc,CAC7B,IAAImC,EAAI+G,GAAiB,EAAK4H,MAAMhC,QAAQwE,KAAMnV,EAAS+X,cACvDpH,EAAO,eAAO,EAAKgC,MAAMhC,SAC7BA,EAAQvS,KAAO4F,EACf,EAAKrC,SAAS,CAACgP,iBACS,MAAlB3Q,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAEjB,EAAK4E,SAAS,CAACC,eAAe,OAGvC,MACJ,IAAK,gBACD,IAAIoW,GAAsC,IAA1BlQ,KAAK6K,MAAMqF,UAAmBlQ,KAAKC,MAAMkQ,WAAWC,kBAAoBpQ,KAAK6K,MAAMqF,UACnG,QAAiBtZ,IAAdsZ,IAA0C,IAAfA,EAE1B,OAGJ5Z,EAAI,YAAkB4Z,EAEtB,IAAIG,EAAyC,KAA3BrQ,KAAK6K,MAAMwF,YAAqBrQ,KAAKC,MAAMkQ,WAAWG,oBAAsBtQ,KAAK6K,MAAMwF,YACrGE,EAA6C,KAA7BvQ,KAAK6K,MAAM0F,cAAuBvQ,KAAKC,MAAMkQ,WAAWK,sBAAwBxQ,KAAK6K,MAAM0F,cAC/G,QAAmB3Z,IAAhByZ,GAA6C,KAAhBA,EAE5B/Z,EAAI,aAAmB+Z,MACrB,SAAqBzZ,IAAlB2Z,GAAiD,KAAlBA,EAIpC,OAFAja,EAAI,eAAqBia,EAK7B3W,EAAavE,IAAe,yBAAyBiB,GAAM2B,MAAK,SAACC,GAC7D,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI0W,EAAgBvY,EAAS6B,KAC7B,EAAK2W,eAAexY,EAAUuY,GAAe,QAE7C,EAAK5W,SAAS,CAACC,eAAe,OAItC,MACJ,IAAK,wCACDF,EAAavE,IAAe,mBAAmBiB,GAAM2B,MACjD,SAACC,GACG,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIzD,EAAO4B,EAAS5B,KAChBqa,EAAiBra,EAAKsa,gBACtBC,EAAiBva,EAAKwa,gBACtBnC,EAAerY,EAAKqY,aACpBlF,EAAiBnT,EAAKya,qBACLna,IAAjB+X,IACAA,EAAe,IAGnB,IAAIqC,EAAuD,IAAnCrC,EAAaqC,kBAEjCC,EAAa,EAAKzI,2BAA2BmI,GACjDlH,EAAiB,EAAKH,yBAAyBG,GAC/C,IAAIyH,EAA0B,EAAKvH,2BAA2BkH,GAC9D,EAAKhX,SAAS,CACVsX,eAAgBF,EAChBJ,eAAgBK,EAChBE,UAAWJ,EACXK,wBAAwB,EACxBC,qBAAoB,EACpBP,gBAAkBtH,SAKtB,EAAK5P,SAAS,CAACC,eAAe,IAGlC,EAAKD,SAAS,CAAC0X,kBAAkB,OAEzC,MACJ,IAAK,mBACD3X,EAAavE,IAAe,eAAeiB,GAAM2B,MAAM,SAACC,GAChD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC5B,GAAqB,MAAlB5B,EAAS6B,KAAc,CAChC,IAAIyX,EAAQtZ,EAASuZ,aACrB,EAAKC,eAAeF,QACI,MAAlBtZ,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAEd,EAAK4E,SAAS,CAACC,eAAe,OAI1C,MACJ,IAAK,2BACD,IAAI6X,GAA4B,wBAC5BC,GAAW,CAAC,UAAYjb,GACxBkb,GAAkB7R,KAAK6K,MAAMgH,gBAC7BC,GAAWtb,aAAaC,QAAQ,cAEpC,IAAwB,IAApBob,SACajb,IAAbkb,IACAC,KAAmBhU,SAAS+T,IAAW,CACvC,IAAIE,GAAkBhS,KAAKiS,qBACvBC,GAAcC,aAAcL,GAAUE,IAC1C,IAAIE,GAQA,YADAlS,KAAKoS,iBAAiB,0BAA2BJ,GAAiB,SAN9DF,KAAaO,KAAmBC,OAChCN,GAAkB,WAEtBJ,GAAQ,UAAgBE,GACxBF,GAAQ,WAAiBI,GAOjCpY,EAAavE,IAAesc,GAA0BC,IAAU3Z,MAC5D,SAACC,GACD,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIzD,EAAO4B,EAAS5B,KACpB,QAA8BM,IAA1BN,EAAI,eAA6D,OAA1BA,EAAI,cAC3C,EAAK8b,iBAAiB9b,EAAI,oBACvB,QAA4BM,IAAzBN,EAAI,eAA2D,IAAzBA,EAAI,aAEhD,EAAKic,mBAAmBjc,OAEvB,CACD,IAAIkc,EAAkB,EAAKhK,2BAA2BlS,EAAKkc,iBAC3Dlc,EAAI,gBAAsBkc,EAC1Blc,EAAI,sBAA2B,EAC/B,EAAKmc,yBAAyBnc,SAGlC,EAAKuD,SAAS,CAACC,eAAe,OAG1C,MACA,IAAK,0BACD,IAAM4Y,GAAuB,8BAC7B9Y,EAAavE,IAAeqd,GAAsBpc,GAAO2B,MAAK,SAACC,GAC3D,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIzD,EAAO4B,EAAS5B,KACpB,QAAaM,IAATN,GAA+B,OAATA,EACtB,OAGJ,IAAI2W,EAAU3W,EAAK4W,IACfC,EAAU7W,EAAK8W,IACnB,EAAKvT,SAAS,CACV8Y,oBAAqBxQ,GAA4B8K,GACjD2F,oBAAqBzQ,GAA4BgL,SAI7D,MAEJ,IAAK,0BACDvT,EAAavE,IAAe,+BAA+BiB,GAAM2B,MAAM,SAACC,GAChE,QAAiBtB,IAAbsB,EAAJ,CAKA,GAAqB,MAAlBA,EAAS6B,KAGR,OAFAvD,aAAauF,WAAW,qBACxB/G,OAAOC,SAAW,KAItB,GAAqB,MAAlBiD,EAAS6B,UAAZ,CACI,IAAI8Y,EAAiB3a,EAAS8N,QAC9B,EAAK/F,MAAM6S,2BAA2BD,SAZtC,EAAKhZ,SAAS,CAACC,eAAe,OAiB1C,MACJ,IAAK,2BACD3D,EAAcd,IAAe,WAAWiB,GAAM2B,MAAM,SAACC,GACjD,QAAiBtB,IAAbsB,EAAJ,CAKA,GAAqB,MAAlBA,EAAS6B,KAGR,OAFAvD,aAAauF,WAAW,qBACxB/G,OAAOC,SAAW,KAItB,GAAqB,MAAlBiD,EAAS6B,UAAZ,CACI,IAAIgZ,EAAc7a,EAAS5B,KAC3B,EAAK2J,MAAM+S,gCAAgCD,SAZ3C,EAAKlZ,SAAS,CAACC,eAAe,QAsB3C,SAASmZ,KACZ,OAAOC,IAiBJ,SAASC,GAAcC,EAAI1a,EAAK2a,EAAYC,EAAYxO,EAAWI,GAAU,IAI5EqO,EAEAjN,EAN2E,OACzE3B,EAASnO,aAAaC,QAAQ,WAChCqF,EAAUtF,aAAaC,QAAQ,gBAC/B+c,EAAiB,CAAC,UAAa1O,EAAW,QAAWI,GAErDuO,EAAW,KAEa,OAAxBzT,KAAK6K,MAAM4I,WACXA,EAAWzT,KAAK6K,MAAM4I,UAGd,uBAAR/a,GACA4N,EAAiB,CACb,aAAgB,CAAC8M,GACjB,iBAAoB7M,MAExBgN,EAAgB,8CAA0C5O,KAG1D2B,EAAiB,CACb,UAAa3B,EACb,aAAgB,CAACyO,GACjB,SAAYK,EACZ,MAAQ,MACR,YAAe,QACf,mBAAsB3O,EACtB,iBAAoBI,GAGZ,YAARxM,IACA4N,EAAiB,CACb,UAAa3B,EACb,MAAS,MACT,YAAeyO,EACf,WAAc,KACd,YAAe,QACf,mBAAsBtO,EACtB,iBAAoBI,IAI5BqO,EAAmB,kBAGvBpd,EAAcd,IAAeke,EAAkBjN,EAC3CxK,GAAS7D,MAAK,SAACiE,GACf,EAAKwX,2BAA2BxX,EAAKxD,EAAK2a,EAAYC,EAAYF,EAAII,MAuEvE,SAASG,GAAkBC,EAAOR,EAAI1a,EAAK2a,EAAYC,IAiJvD,SAASO,GAAgBzN,EAAQY,EAAWtO,EAAK2a,EAAYC,GAAY,IAAD,OACvExO,EAAY,KACZI,EAAU,KACRP,EAASnO,aAAaC,QAAQ,WAChCqF,EAAUtF,aAAaC,QAAQ,gBACN,OAAzBuJ,KAAK6K,MAAM/F,WAA6C,OAAvB9E,KAAK6K,MAAM3F,SAC5CJ,EAAY9E,KAAK6K,MAAM/F,UACvBI,EAAUlF,KAAK6K,MAAM3F,UAErBJ,EAAYC,MAASC,SAAS,GAAI,QAAQc,QAAQ,OAAOb,OAAO,uBAAuBzI,WACvF0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,YAGzE,IAAIgX,EAAiB,CAAC,eAAkBpN,GAEpCE,EAAiB,CAAG,UAAa3B,EAEb,YAAeyB,EAAO,MACtB,WAAc,KACd,YAAe,QACf,mBAAqBtB,EACrB,iBAAoBI,GAE5C/O,EAAcd,IAAe,iBAAkBiR,EAAgBxK,GAAS7D,MAAK,SAACiE,QAC9DtF,IAARsF,EACC,EAAKrC,SAAS,CAACC,eAAe,IAE/B,EAAKga,gBAAgB5X,EAAKxD,EAAK2a,EAAYC,EAAYtM,EAAWwM,MAKvE,SAASO,GAAgBC,EAAS9D,EAAWxX,EAAK2a,EAAYC,GAAY,IAAD,OACxExO,EAAY,KACZI,EAAU,KACRP,EAASnO,aAAaC,QAAQ,WAChCqF,EAAUtF,aAAaC,QAAQ,gBACN,OAAzBuJ,KAAK6K,MAAM/F,WAA6C,OAAvB9E,KAAK6K,MAAM3F,SAC5CJ,EAAY9E,KAAK6K,MAAM/F,UACvBI,EAAUlF,KAAK6K,MAAM3F,UAErBJ,EAAYC,MAASC,SAAS,GAAI,QAAQc,QAAQ,OAAOb,OAAO,uBAAuBzI,WACvF0I,EAAWH,MAASI,MAAMC,MAAM,OAAOH,OAAO,uBAAuBzI,YAGzE,IAAIgX,EAAiB,CAAC,eAAkBQ,GAEpC1N,EAAiB,CAAC,UAAa3B,EACX,aAAgB,CAACqP,EAAO,OACxB,YAAe,QAEf,mBAAqBlP,EACrB,iBAAoBI,GAE5C/O,EAAcd,IAAe,iBAAkBiR,EAAgBxK,GAAS7D,MAAK,SAACiE,QAC9DtF,IAARsF,EACC,EAAKrC,SAAS,CAACC,eAAe,IAE/B,EAAKga,gBAAgB5X,EAAKxD,EAAK2a,EAAYC,EAAYpD,EAAWsD,MAOvE,SAASS,GAAWL,EAAO3T,GAAQ,IAAD,OACrC2T,EAAMM,iBAD+B,IAG7BC,EAASP,EAAMQ,OAAfD,KACJrY,EAAUtF,aAAaC,QAAQ,gBACnC,OAAO0d,GACH,IAAK,iBACE,IAAItU,EAAO,IAAI5I,KACXkC,EAAe0G,EAAKwU,iBAAmB,KAAO,KAAOxU,EAAKyU,cAAc,IAAIC,OAAO,GAAK,KAAO,IAAM1U,EAAK2U,cAAcD,OAAO,GAAK,KAClH,IAAM1U,EAAK4U,eAAeF,OAAO,GAAK,KAAO,IAAM1U,EAAK6U,iBAAiBH,OAAO,GAAK,KAAO,IAAM1U,EAAK8U,iBAAiBJ,OAAO,GAC/IK,EAAa,IAAIC,SAASjB,EAAMQ,QAChCU,EAAiB,CACjB,YAAeF,EAAWG,IAAI,cAC9B,mBAAsB,CACf,KAAQH,EAAWG,IAAI,cACvB,QAAW,IACV,UAAa,UACb,eAAiB,EACjB,gBAAmB,GACnB,OAAU,CAAC,CAAC,KAAQ/U,KAAK6K,MAAMmK,cAAc1d,MAAO,MAASsd,EAAWG,IAAI,gBAC5E,QAAW,GACX,UAAa5b,EACb,QAAW6G,KAAKC,MAAMgV,gBAAgBC,mBAAmBvR,QACzD,SAAY3D,KAAKC,MAAMgV,gBAAgBC,mBAAmBC,SAC1D,SAAYnV,KAAKC,MAAMgV,gBAAgBC,mBAAmBE,WAGzEze,EAAUH,aAAaC,QAAQ,WAC/Bqe,EAAc,UAAgBne,EAC9Bme,EAAc,WAAiB9U,KAAKC,MAAMoV,SAE1Cha,EAAgBhG,IADA,uBAC0Byf,EAAgBhZ,GAAS7D,MAC7D,SAACC,QACoBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MACjB,EAAKkG,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,gBAAiB,+BAAgC,MAErE,EAAK3F,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,QAIrE,MACN,IAAK,uBACD,IAAIrF,EAAYlQ,KAAK6K,MAAM2K,cACvBC,EAAkBzV,KAAK6K,MAAM4K,gBAC7BC,EAAiB1V,KAAK2V,0BAE1B,GAAkB,OAAdzF,GAAuBwF,GAAsC,OAApBD,EAA2B,CAIpE,OAFAzV,KAAKC,MAAMqV,kBACXtV,KAAKC,MAAM2F,UAAU,eAFT,4CAE8B,IAI9C,GAAItI,OAAO4S,KAAe5S,OAAOmY,GAAkB,CAI/C,OAFAzV,KAAKC,MAAMqV,kBACXtV,KAAKC,MAAM2F,UAAU,eAFT,mDAE8B,IAI9C,IAAMqP,EAAkBjV,KAAKC,MAAMgV,gBAC7BW,EAAYX,EAAgBY,WAC9BlR,EAASnO,aAAaC,QAAQ,WAE9BH,EAAO,CACP,WAAcsf,EACd,YAAe1F,EACf,mBAAsBuF,EACtB,UAAa9Q,GAGXmR,EAAwC,iBAAxB9V,KAAKC,MAAM8V,SAC7BC,EAAcF,EAAgB,UAAY,UAE1CG,EAAkB,SAAC/d,GACnB,QAAiBtB,IAAbsB,EACA,EAAK+H,MAAM2F,UAAU,eAAgB,4BAA6B,SAEjE,GAAsB,MAAlB1N,EAAS6B,KAAc,CAC5B,IAAMwb,EAAO,iBAAaK,EAAb,eAA6BI,EAA7B,wBAAwD9F,EAAxD,iBACb,EAAKjQ,MAAM2F,UAAU,gBAAiB2P,EAAS,SAG/C,EAAKtV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,KAI/DvV,KAAKC,MAAMqV,aAEPQ,GACAxf,EAAI,OAAa2e,EAAgBiB,OACjC7a,EAAgBhG,IAHO,iBAG4BiB,EAAMwF,GAAS7D,KAC9Dge,IAIJ9f,EAAcd,IARS,iBAQ0BiB,EAAMwF,GAAS7D,KAC5Dge,GAIR,MACJ,IAAK,kBACD,IAAME,EAAgB,IAAItB,SAASjB,EAAMQ,QACnCgC,EAAqB,CACvB,UAAa5f,aAAaC,QAAQ,WAAY,mBAAsB0f,EAAcpB,IAAI,sBACtF,SAAYoB,EAAcpB,IAAI,WAC9B,mBAAsB,QAAS,eAC/B,CACI,SAAYoB,EAAcpB,IAAI,SAC9B,aAAgBoB,EAAcpB,IAAI,gBAClC,gBAAmBoB,EAAcpB,IAAI,mBACrC,UAAaoB,EAAcE,OAAO,aAClC,UAAaF,EAAcpB,IAAI,aAC/B,KAAQoB,EAAcpB,IAAI,WAC1B,UAAaoB,EAAcpB,IAAI,eAGvC5e,EAAcd,IAAe,gBAAiB+gB,EAAoBta,GAAS7D,MACvE,SAACC,QACoBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,KAChB,EAAKkG,MAAM2F,UAAU,gBAAiB,kCAAmC,IAEzE,EAAK3F,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,OAInE,MACJ,IAAK,mBACD,IAAM3S,EAAgB5C,KAAKsW,oBAAoB1C,GACzC2C,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MACZwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOhD,EAAa,sBADpB,YACiD4T,EADjD,iBAEI,KAEJ,EAAKvW,MAAM2F,UAAU,eAArB,oBACiB6Q,EADjB,YAC2C7T,EAAa,uBACpD,KAIZ,GAAI2T,EAAkB,CAClB,IAAKvW,KAAK2W,yBAAyB/T,GAG/B,OAFA5C,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKf,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDhU,EAAa,oBAA0BgU,EACvCvb,EAAgBhG,IAFC,mBAGbuN,EAAe9G,GAAS7D,KAAKye,QAGjCvgB,EAAcd,IAAe,mBACzBuN,EAAe9G,GAAS7D,KAAKye,IAS1C,SAASI,GAAmBC,EAAaC,GAAmB,IAAD,OACxDrS,EAASnO,aAAaC,QAAQ,WAC9BqF,EAAUtF,aAAaC,QAAQ,gBACjCH,EAAO,CAAC,UAAcqO,GAE1BoS,EAAW,UAAgBpS,EAC3BxO,EAAcd,IAFC,wBAEwB0hB,EAAajb,GAAS7D,MAAK,SAACC,GAC/D,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,EAC1Bmd,WAAU,EACVC,kBAAkB,EAClBC,gBAAkB,sDACnB,GAAsB,MAAlBjf,EAAS6B,KAAc,CAG9B,IAAIqd,EAAeC,YAAqB7gB,aAAaC,QAAQ6gB,OAC7DF,EAAY,eAAoB,EAChC,IAAIG,EAAeC,YAAqBJ,GACxC5gB,aAAaoC,QAAQ0e,KAAiBC,GACtC3d,EAAavE,IAAe,mBAAmBiB,GAAM2B,MAAK,SAACoP,GACnD,GAAmB,MAAfA,EAAMtN,KAAc,CACpB,IAAM0d,EAAkBpQ,EAAK,aAC7B7Q,aAAaoC,QAAQ,eAAgB9B,KAAKiB,UAAU0f,QAGhE,EAAK5d,SAAS,CAACC,eAAe,IAC9Bkd,GAAiB,QAEjB,EAAKnd,SAAS,CACVod,WAAU,EACVC,kBAAkB,EAClBC,gBAAkBjf,EAASqd,aAOpC,SAASmC,GAAY9D,GAAO,IAAD,OAC1B9X,EAAUtF,aAAaC,QAAQ,gBAEnC,OADSmd,EAAMQ,OAAOD,MAElB,IAAK,SACD,IAEMwD,EAAc,CAACphB,MAAMuF,EAASnF,QAFtBH,aAAaC,QAAQ,WAEmBC,QADxCF,aAAaC,QAAQ,YAEnCN,EAAchB,IAAQ,SAAUwiB,GAAa1f,MAAK,SAACC,GAC/C,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAChB,IAA0B,IAAvB3C,cACCC,eACArC,OAAOC,SAAW,QAChB,CACF,IAAI2iB,EAAYpiB,yoBAAYC,2BACxB+B,EAAWC,aAAYmgB,GAC3B5iB,OAAOC,SAAWuC,EAAS,KAAKogB,MAI5CC,YAAa,oBAYlB,SAASC,GAAiBlE,GAChC,IAAD,OACIA,EAAMM,iBACN,IAAIte,EAASoK,KAAK6K,MAAMjV,OAChBue,EAASP,EAAMQ,OAAfD,KACe,qBAAZve,GAAqC,MAAVA,IAClCoK,KAAKnG,SAAS,CAACke,UAAWriB,EAAasK,KAAK6K,MAAMjV,UAClDoK,KAAKnG,SAAS,CAACme,WAAYva,EAAYuC,KAAK6K,MAAMjV,WAEtD,IAAIkG,EAAUtF,aAAaC,QAAQ,gBACnC,OAAO0d,GACN,IAAK,qBACE,GAA8B,IAA3BnU,KAAK6K,MAAMoN,KAAK/hB,OAEf8J,KAAKnG,SAAS,CAACqe,aAAY,QAC1B,CACPlY,KAAKnG,SAAS,CAACqe,aAAY,IAC3BlY,KAAKmY,gBACL,IAAMC,EAAmB,IAAIvD,SAC5BuD,EAAiBC,OAAO,eAAgBrY,KAAK6K,MAAMoN,KAAK,IACvD1c,EAAmBlG,IAAe,oBAAqB+iB,EAAiBtc,GAAS7D,MAAK,SAACC,GACnF,GAAqB,MAAlBA,EAAS6B,KAAc,CACzB,EAAKF,SAAS,CAACye,MAAM,EAAMC,kBAAkB,EAAMN,KAAM,KAGzD,IAFA,IAAIO,EAAc,GACdC,EAAa,GACTnZ,EAAE,EAAEA,EAAEpH,EAASA,SAAShC,OAAOoJ,IACC,MAAjCpH,EAASA,SAASoH,GAAlB,KACAkZ,EAAY9Y,KAAKxH,EAASA,SAASoH,GAAlB,MAEjBmZ,EAAW/Y,KAAKxH,EAASA,SAASoH,GAAlB,MAGvB,IAAIoZ,EAAa,gBAEdA,EADuB,IAAvBF,EAAYtiB,OACC,eACe,IAAtBuiB,EAAWviB,OACJ,gBAED,gBAEf,EAAK+J,MAAM2F,UAAU8S,EAAWxgB,EAASA,SAAS,GAAG,aAGrD,EAAK2B,SAAS,CAACye,MAAM,EAAMC,kBAAkB,EAAMN,KAAM,KACzD,EAAKhY,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,OAI1D,MAEF,IAAK,kBACC,GAA8B,IAA3BvV,KAAK6K,MAAMoN,KAAK/hB,OACf8J,KAAKnG,SAAS,CAACqe,aAAY,QACxB,CACHlY,KAAKnG,SAAS,CAACqe,aAAY,IAC3BlY,KAAKmY,gBACL,IAAMC,EAAmB,IAAIvD,SAE7BuD,EAAiBC,OAAO,WAAYrY,KAAK6K,MAAMoN,KAAK,IACpDG,EAAiBC,OAAO,YAAaM,OAAO3Y,KAAKC,MAAM6O,WACvDvT,EAAmBlG,IAHH,iBAG6B+iB,EAAkBtc,GAAS7D,MAAK,SAACC,GAC1E,GAAsB,MAAlBA,EAAS6B,KAAc,CACvB,EAAKF,SAAS,CAACye,MAAM,EAAMC,kBAAkB,EAAMN,KAAM,KAGzD,IAFA,IAAIO,EAAc,GACdC,EAAa,GACTnZ,EAAE,EAAEA,EAAEpH,EAASA,SAAShC,OAAOoJ,IACE,MAAjCpH,EAASA,SAASoH,GAAlB,KACAkZ,EAAY9Y,KAAKxH,EAASA,SAASoH,GAAlB,MAEjBmZ,EAAW/Y,KAAKxH,EAASA,SAASoH,GAAlB,MAGxB,IAAIoZ,EAAa,gBAEbA,EADsB,IAAvBF,EAAYtiB,OACE,eACc,IAAtBuiB,EAAWviB,OACH,gBAED,gBAEhB,EAAK+J,MAAM2F,UAAU8S,EAAWxgB,EAASA,SAAS,GAAG,aAErD,EAAK2B,SAAS,CAACye,MAAM,EAAMC,kBAAkB,EAAMN,KAAM,KACzD,EAAKhY,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,SAU1E,SAASqD,GAAa3Y,EAAOkU,EAAM0E,GAAc,IAAD,OACnD7Y,KAAKnG,SAAS,CAACif,eAAe,IAC9B,IAAIhd,EAAUtF,aAAaC,QAAQ,gBAC/BsiB,EAAW,KACX/L,EAAW,KACX1W,EAAO,GACPoP,EAAU,GACR/O,EAAUH,aAAaC,QAAQ,WACjCuiB,EAAe,KACfnQ,EAAU,KACd,OAAQsL,GACJ,IAAK,qBAEDnH,EAAW,gBACX1W,EAAO,CAAC4J,eAFCD,EAAMgZ,aAAN,eAEmB1f,UAAU5C,GACtCoiB,EAAW1jB,IACXqQ,EAAU,aACV,MACJ,IAAK,gBAGDsH,EAAW,uBACX1W,EAAM,CAACiD,UAAW5C,EAASkf,WAHR5V,EAAM4I,QAAQqQ,aACNrD,YAG3BkD,EAAW1jB,IACXqQ,EAAU,SACV,MACJ,IAAK,iBAEDsH,EAAW,gBACX1W,EAAO,CAAC,iBAFiB2J,EAAMgZ,aAAaE,iBAEC,UAAYxiB,GACzDoiB,EAAW1jB,IACXqQ,EAAU,eACV,MACJ,IAAK,kBAEDsH,EAAW,mBACX1W,EAAM,CAAC,oBAFqB2J,EAAMgZ,aAAarC,qBAG/CmC,EAAW1jB,IACXqQ,EAAU,mBACV,MACJ,IAAK,kBACD,IAAIsB,EAAY/G,EAAMgZ,aAAN,YAChBjM,EAAW,aACX1W,EAAM,CAAC8iB,SAASpS,GAChB+R,EAAW1jB,IACXqQ,EAAU,QACVsT,EAAc,QACdnQ,EAAU,CAAC,YAAe7B,EAAW,YAAe,UACpD,MACJ,IAAK,eAEDgG,EAAW,QACX1W,EAAO,CAAC,SAFM2J,EAAMgZ,aAAN,SAEc,UAAYtiB,GACxCoiB,EAAW1jB,IACXqQ,EAAU,SAMD,OAAbqT,GAAkC,OAAb/L,GAIzB1R,EAAgByd,EAAU/L,EAAU1W,EAAMwF,GAAS7D,MAAK,SAACC,GACrD2gB,IACA,EAAKhf,SAAS,CAACif,eAAe,IACR,MAAlB5gB,EAAS6B,MACTkG,EAAM2Y,eACN3Y,EAAM2F,UAAU,gBAAhB,UAAoCF,EAApC,yBAAoE,IAC9C,OAAjBsT,GAEFK,GAAiBL,EAAc/Y,EAAO4I,IAIzC5I,EAAM2F,UAAU,eAAhB,2BAAoDF,EAAQ4T,eAAiB,OAKlF,SAASC,GAA6BtZ,GAAQ,IAAD,OAChDD,KAAKnG,SAAS,CAAC2f,sBAAsB,IACrC,IAAI1d,EAAUtF,aAAaC,QAAQ,gBAC/BsiB,EAAW1jB,IACXoM,EAAcxB,EAAMgZ,aAAN,YAGdvT,EAAU,yBAEdpK,EAAgByd,EAHD,WAGoB,CAAC,YAAetX,GAAc3F,GAAS7D,MAAK,SAACC,GAE5E,GADA,EAAK2B,SAAS,CAAC2f,sBAAsB,IACf,MAAlBthB,EAAS6B,KAAc,CACvB,IAAM0H,EAAcvJ,EAAQ,YAC5B+H,EAAMwZ,uBAAuBhY,GAC7BxB,EAAM2F,UAAU,gBAAhB,UAAoCF,EAApC,yBACI,GAAI,IAAI,QAEZzF,EAAM2F,UAAU,eAAhB,2BAAoDF,EAAQ4T,eACxD,GAAI,IAAI,MAKxB,SAASD,GAAiBL,EAAcU,EAAU7Q,GAC9C,GAAqB,UAAjBmQ,EAA0B,CAC1B,IAAIW,EAAkBD,EAASE,cAAcD,eACd,QAA3B9Q,EAAO,aAEP8Q,EAAe9Q,EAAO,aAAmBA,EAAO,cACL,IAAvC/S,OAAO+jB,KAAKF,GAAgBzjB,QAC5BwjB,EAASI,WAAWjR,EAAO,cAEE,WAA3BA,EAAO,cACVA,EAAO,eAAmB8Q,UAClBA,EAAe9Q,EAAO,aAEU,IAAvC/S,OAAO+jB,KAAKF,GAAgBzjB,OAC5BwjB,EAASI,YAAY,GAErBJ,EAASI,WAAWhkB,OAAO+jB,KAAKF,GAAgB,KAGxDD,EAASK,kBAAkBJ,IAK5B,SAASK,GAAmB1jB,EAAMsP,GACrC,IAAIqU,EAAe,kCACfzW,EAAalN,EAAI,aACE,IAAnBA,EAAI,OACJ2jB,EAAY,UAAMzW,EAAN,0BACa,IAAnBlN,EAAI,SACV2jB,EAAY,UAAMzW,EAAN,2BAEhBrN,EAAcd,IAAe,iBAAkBiB,GAAM2B,MAAK,SAACC,QACtCtB,IAAbsB,EACA0N,EAAU,eAAD,oCAAsD,IAExC,MAAlB1N,EAAS6B,KACd6L,EAAU,gBAAiBqU,EAAc,IAGzCrU,EAAU,eAAD,UAAoB1N,EAASqd,SAAW,OAKtD,SAAS2E,GAAmBja,EAAOkU,EAAMgG,EAAeC,GAC3D,IAAMC,GAAaF,EACnBC,EAAmBC,GAEnB,IAAM1V,EAASnO,aAAaC,QAAQ,WAEpC,OAAQ0d,GACJ,IAAK,gBACD,IAAI7d,EAAO2J,EAAM4I,QAAQqQ,aACzB5iB,EAAI,UAAgBqO,EACpBrO,EAAI,OAAa+jB,EACjBL,GAAmB1jB,EAAM2J,EAAM2F,WAC/B0U,YAAW,WAAQra,EAAM2Y,iBAAmB,MAOjD,SAAS2B,GAAmB3G,GAC/B,IAAM4G,EAAoBxa,KAAKC,MAAMua,kBACrC,QAA0B5jB,IAAtB4jB,GAAyD,OAAtBA,EAAvC,CAIA,IAmBKH,EAnBDI,EAAeza,KAAK6K,MAAM6P,OAC1BC,GAAoB,EACxB,QAAsC/jB,IAAjCoJ,KAAKC,MAAMua,kBAAiC,CAC7CC,EAA4D,IAA7Cza,KAAKC,MAAMua,kBAAkBI,YAE5C,IAAMrX,EAAoBvD,KAAKC,MAAMua,kBAAkBtF,mBACjDzR,EAAQzD,KAAKC,MAAMua,kBAAkBtE,OAC3CyE,GAAuD,IAAlCpX,EAAkBsX,kBAAoCjkB,IAAV6M,EAGrE,IAAyB,IAAtBkX,IAA6D,IAA/B3a,KAAKC,MAAM6a,iBAA4D,IAA/B9a,KAAKC,MAAM6a,gBAK1D,OAAtB9a,KAAK6K,MAAM6P,aAAoD9jB,IAAjCoJ,KAAKC,MAAMua,oBACrCC,EAA4D,IAA7Cza,KAAKC,MAAMua,kBAAkBI,aAKhDP,EADsB,OAAtBra,KAAK6K,MAAM6P,SAAoC,IAAjBD,IAEA,OAAtBza,KAAK6K,MAAM6P,SAAoC,IAAjBD,KAGxBza,KAAK6K,MAAM6P,OAG5B1a,KAAKnG,SAAS,CAAC6gB,OAAQL,IAGxBG,EAAiB,UAAgBhkB,aAAaC,QAAQ,WACtD+jB,EAAiB,OAAaH,EAC9BL,GAAmBQ,EAAmBxa,KAAKC,MAAM2F,gBAtB7C5F,KAAKC,MAAM8a,yBAAyBP,EAAiB,cAyBtD,SAASQ,GAAQtiB,EAAKpB,GACzB0I,KAAKnG,SAAL,eAAgBnB,EAAMpB,IAGnB,SAAS2jB,GAAgBrH,GAAQ,IAAD,OAC/B9X,EAAUtF,aAAaC,QAAQ,gBACnCuJ,KAAKmY,gBACL,IAAM+C,EAAkBtH,EACpBuH,EAAcnb,KAAK6K,MAAMsQ,YACzBC,GAAY,EACZC,EAAY,eACZC,EAAe,GACnB,GAA2B,IAAvBH,EAAYjlB,OAIZ,OAHAklB,GAAY,EACZpb,KAAKub,oBACLvb,KAAKC,MAAM2F,UAAU,eAAgB,uBAAuB,IAK5D,IAAI4V,EAAaxb,KAAK6K,MAAMsQ,YAAYM,IAAI,GAC5C,QAAkB7kB,IAAf4kB,IAA8B,CAACA,EAAWE,qBAAqBF,EAAWG,oBAAoBH,EAAWI,uBAAuB7d,SAAS,KACxGiC,KAAK6K,MAAMsQ,YAAYjlB,OAAS,GAAK,CAACslB,EAAWK,oBAAoB9d,SAAS,KAK9G,OAFAiC,KAAKnG,SAAS,CAACiiB,UAAS,SACxB9b,KAAKub,eAIb,IAAK,IAAIQ,EAAI,EAAGA,EAAIZ,EAAYjlB,OAAQ6lB,IAAK,CACzC,IAAIC,EAAIb,EAAYY,GAChBT,EAAaplB,OAAS,GAA0C,KAArC8lB,EAAC,mBAAD,OAC3BV,EAAa5b,KAAKsc,EAAC,mBAAD,YAEsBplB,IAAxColB,EAAC,sBAAD,OAA6F,OAAxCA,EAAC,sBAAD,YAIPplB,IAAvColB,EAAC,qBAAD,OAA2F,OAAvCA,EAAC,qBAAD,YAIdplB,IAAtColB,EAAC,oBAAD,OAAyF,OAAtCA,EAAC,oBAAD,OAP1DZ,GAAY,EACZpb,KAAKub,eACLvb,KAAKC,MAAM2F,UAAU,eAAgB,6BAA6B,MAUlEwV,GAAY,EACgC,YAAxCY,EAAC,sBAAD,QACAX,EAAY,wBAEhBC,EAAa5b,KAAK,CAACsc,EAAC,sBAAD,MACnBA,EAAC,qBAAD,MACAA,EAAC,oBAAD,SAGR,IAAkB,IAAdZ,EAAoB,CAIpB,IAHA,IAAIa,EAAUjc,KAAK6K,MAAMqR,gBACrBC,EAAe,GACfC,EAAW,GACN9c,EAAI,EAAGA,EAAI2c,EAAQ/lB,OAAQoJ,IAAK,CACrC,IAAI+c,EAAcJ,EAAQ3c,GAAR,KAClB,GAAmB,UAAhB+c,GAA2C,UAAhBA,GAA2C,cAAhBA,GAA+C,mBAAhBA,EAAkC,CACtH,IAEIC,EAFcL,EAAQ3c,GAAR,MACQid,MAAM,KACN,GAC1BJ,EAAazc,KAAK4c,QAEjB,GAAmB,YAAhBD,GAA6C,eAAhBA,GAAgD,YAAhBA,GACrD,cAAhBA,GAA+C,WAAhBA,GAA4C,kBAAhBA,GAAmD,aAAhBA,EAA4B,CACtH,IAEIC,EAFcL,EAAQ3c,GAAR,MACQid,MAAM,KACN,GAC1BH,EAAS1c,KAAK4c,IAGtB,IAAIjR,EAASrL,KAAK6K,MAAMQ,OACxB,GAAuB,IAAnB4Q,EAAQ/lB,aAA4CU,IAA5ByU,EAAOmR,iBAE/B,IADA,IAAIC,EAAapR,EAAOmR,iBACfld,EAAI,EAAGA,EAAImd,EAAWvmB,OAAQoJ,IAAK,CACxC,IAAIod,EAAiBD,EAAWnd,GAAX,KACrB,GAAsB,UAAnBod,GAAiD,UAAnBA,GAAiD,cAAnBA,GAAqD,mBAAnBA,EAAqC,CAClI,IAEIJ,EAFcG,EAAWnd,GAAX,MACQid,MAAM,KACN,GAC1BJ,EAAazc,KAAK4c,QACf,GAAsB,YAAnBI,GAAmD,eAAnBA,GAAsD,YAAnBA,GAC1D,cAAnBA,GAAqD,WAAnBA,GAAkD,kBAAnBA,GAAyD,aAAnBA,EAA+B,CAClI,IAEIJ,EAFcG,EAAWnd,GAAX,MACQid,MAAM,KACN,GAC1BH,EAAS1c,KAAK4c,IAI1B,IAAIK,EAAe,KACiB,OAAhC3c,KAAK6K,MAAM+R,mBACXD,EAAe3c,KAAK6K,MAAM+R,iBAAX,OAGnB,IAAIC,EAAiB,KACqB,KAAtC3B,EAAe,iBACf2B,EAAiB3B,EAAe,gBAIpC,IACI,IACMpY,EAAa,CACf,UAFYtM,aAAaC,QAAQ,WAGjC,SAAYuJ,KAAKC,MAAM6c,IACvB,WAAc5B,EAAe,WAC7B,YAAeA,EAAe,YAC9B,eAAkB,QAClB,aAAgBlb,KAAK6K,MAAMkS,YAC3B,mBAAsB,CAClB,uBAA0BJ,EAC1B,eAAkBE,EAClB,MAASvB,EACT,MAAStb,KAAK6K,MAAMpD,MACpB,YAAezH,KAAK6K,MAAMmS,YAE9B,WAAehd,KAAK6K,MAAMoS,UAC1B,iBAAmBd,EACnB,oBAAsBC,EACtB,MAAQpc,KAAKC,MAAM6c,IACnB,YAAezB,GAGQ,eAAxBrb,KAAKC,MAAM8V,UACVjT,EAAU,SAAe9C,KAAKC,MAAMid,UAAUC,WAC9Cra,EAAU,gBAAsB9C,KAAKC,MAAMid,UAAUE,YACrDta,EAAU,eAAqB9C,KAAKC,MAAMid,UAAUG,WACpDva,EAAU,iBAAuB9C,KAAKC,MAAMid,UAAUI,aACtDxa,EAAU,SAAe9C,KAAKC,MAAMid,UAAUK,SAC9CliB,EAAgBhG,IAAe,QAASyN,EAAYhH,GAAS7D,MAAK,SAACC,GAC9C,MAAlBA,EAAS6B,MACR,EAAKkG,MAAM2F,UAAU,gBAAgB,8BAA8B,IACnE,EAAK3F,MAAMqV,eAEX,EAAKrV,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,IACrD,EAAKtV,MAAMqV,kBAIfnf,EAAcd,IAAe,QAASyN,GAAY7K,MAAK,SAACC,GAClC,MAAlBA,EAAS6B,MACT,EAAKkG,MAAM2F,UAAU,gBAAiB,2BAA4B,IAClE,EAAK3F,MAAMyX,gBAEX,EAAKzX,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,IACvD,EAAKtV,MAAMyX,kBAMrB,SACE1X,KAAKC,MAAM2F,UAAU,eAAgB,wBAAyB,KAGtEiS,YAAa,kBAAmB,IAG7B,SAAS2F,GAAa5J,GAAO,IAAD,OAC/BA,EAAMM,iBACN,IAAIte,EAASoK,KAAK6K,MAAMjV,OAChBue,EAASP,EAAMQ,OAAfD,KAEe,qBAAZve,GAAqC,MAAVA,IAClCoK,KAAKnG,SAAS,CAACke,UAAWriB,EAAasK,KAAK6K,MAAMjV,UAClDoK,KAAKnG,SAAS,CAACme,WAAYva,EAAYuC,KAAK6K,MAAMjV,WAGtD,IAAIkG,EAAUtF,aAAaC,QAAQ,gBACnC,OAAO0d,GACH,IAAK,gBACD,GAAKnU,KAAKC,MAAMwd,YAAX,QAAoCzd,KAAK6K,MAAM6S,WAChD9nB,EAAO+nB,IAAM,wBACb3d,KAAKnG,SAAS,CAACjE,OAAQA,QACpB,CACH,IAAM6P,EAAc,CAAEmY,MAAO5d,KAAKC,MAAMwd,YAAX,MAAiCI,YAAa7d,KAAK6K,MAAM6S,WACtEhnB,QAASsJ,KAAKC,MAAMwd,YAAX,QAAmC9mB,QAASqJ,KAAKC,MAAMwd,YAAX,SACrEtnB,EAAchB,IAAQ,iBAAkBsQ,GAAaxN,MAAK,SAACC,QACrCtB,IAAbsB,EACD,EAAK+H,MAAM6d,aAAa,mCACC,MAAlB5lB,EAAS6B,KAChB,EAAKkG,MAAM6d,aAAa5lB,EAASqd,UAEjC3f,EAAO+nB,IAAMzlB,EAASqd,QACtB,EAAK1b,SAAS,CAACjE,OAAOA,QAIlC,MACJ,IAAK,QACD,IAAMU,EAAO,CAACsnB,MAAO5d,KAAK6K,MAAM+S,MAAOG,SAAU/d,KAAK6K,MAAMkT,UAC5D5nB,EAAchB,IAAQ,QAASmB,GAAM2B,MAAK,SAACC,GACvC,QAAetB,IAAZsB,EACCtC,EAAOmoB,SAAW,kBAClB,EAAKlkB,SAAS,CAACjE,OAAOA,SACpB,GAAqB,MAAlBsC,EAAS6B,KAAc,CAC5B,IAAM/C,EAAM,IAAIC,KACVJ,EAAO,CACDS,MAAOY,EAAQ,SAAR,WACPf,OAAQH,EAAIE,UAAY,KAEpCojB,YAAW,kBAAM0D,IAAete,KAAK,OAAM,KAC3ClJ,aAAaoC,QAAQ,eAAgB9B,KAAKiB,UAAUlB,IACpDL,aAAaoC,QAAQ,UAAWV,EAAQ,SAAR,SAChC1B,aAAaoC,QAAQ,YAAYV,EAAQ,SAAR,WACjC1B,aAAaoC,QAAQ,UAAUV,EAAQ,SAAR,SAC/B1B,aAAaoC,QAAQ,UAAUV,EAAQ,SAAR,OACc,cAAzCA,EAAQ,SAAR,aACAlD,OAAOC,SAAW,aAElBD,OAAOC,SAAW,cAGtBW,EAAOmoB,SAAW7lB,EAASqd,QAC3B,EAAK1b,SAAS,CAACjE,OAAOA,OAG9B,MACJ,IAAK,kBACD,IAAMqoB,EAAa,CAACL,MAAO5d,KAAK6K,MAAM+S,OACtCznB,EAAchB,IAAQ,kBAAmB8oB,GAAahmB,MAAK,SAACC,GACxDtC,EAAOgoB,MAAQ1lB,EAASqd,QACxB,EAAK1b,SAAS,CAACjE,OAAOA,EAAQsoB,sBAAsB,OAGxD,MACJ,IAAK,iBACD,IAAI3nB,EAAQC,aAAaC,QAAQ,iBAC3BsnB,EAAW,CAACA,SAAS/d,KAAK6K,MAAMkT,UACtC5nB,EAAchB,IAAQ,uBAAuBoB,EAAOwnB,GAAU9lB,MAAK,SAACC,GAChE1B,aAAauF,WAAW,iBACF,MAAlB7D,EAAS6B,KACT/E,OAAOC,SAAW,KAElBW,EAAOuoB,YAAcjmB,EAASqd,QAC9B,EAAK1b,SAAS,CAACjE,OAAOA,QAG9B,MACJ,IAAK,yBACD,IAAMwoB,EAAc,CAACR,MAAO5d,KAAK6K,MAAM+S,MAAOS,MAAOre,KAAK6K,MAAMwT,MAAOC,QAASte,KAAK6K,MAAMyT,SACrFC,EAAa/nB,aAAaC,QAAQ,cAClCub,EAAkBxb,aAAaC,QAAQ,wBAC1BG,IAAf2nB,GAA2C,OAAfA,IAC5BH,EAAW,KAAWG,QAGF3nB,IAApBob,GAAqD,OAApBA,IACjCoM,EAAW,MAAYpM,GAG3B7b,EAAchB,IAAQ,qBAAsBipB,GAAanmB,MAAK,SAACC,GAC3D,GAAqB,MAAlBA,EAAS6B,KAAc,CACtB,IAAM/C,EAAM,IAAIC,KACVJ,EAAO,CACDS,MAAOY,EAAQ,SAAR,WACPf,OAAQH,EAAIE,UAAY,KAGpCojB,YAAW,kBAAM0D,IAAete,KAAK,OAAM,KAC3ClJ,aAAaoC,QAAQ,eAAgB9B,KAAKiB,UAAUlB,IACpDL,aAAaoC,QAAQ,UAAWV,EAAQ,SAAR,SAChC1B,aAAaoC,QAAQ,YAAaV,EAAQ,SAAR,WAClC1B,aAAaoC,QAAQ,UAAWV,EAAQ,SAAR,SAChC1B,aAAaoC,QAAQ,SAAUV,EAAQ,SAAR,QAC/B1B,aAAaoC,QAAQ,mBAAoBV,EAAQ,SAAR,kBACzC1B,aAAaoC,QAAQ,cAAeV,EAAQ,SAAR,aACpClD,OAAOC,SAAW,cAElBW,EAAOuoB,YAAcjmB,EAASqd,QAC9B,EAAK1b,SAAS,CAACjE,OAAOA,OAG9B,MACJ,IAAK,mBACD,MACJ,IAAK,mBAEDoK,KAAKwe,sBACL,IAAIC,EAA0Bze,KAAK6K,MAAMuN,iBACzCqG,EAAwB,OAAaze,KAAKC,MAAMjD,OAChD,IAAI0hB,EAAwBjiB,EAA2BgiB,GACvDtoB,EAAcd,IAAe,mBAAoBqpB,EAAuB5iB,GAAS7D,MAAK,SAACC,GACtD,MAAzBA,EAAS0iB,aACT,EAAK/gB,SAAS,CAAC8kB,eAAc,IAC7B,EAAK1e,MAAM2F,UAAU,gBAAgB1N,EAAS0mB,eAAe,QAE7D,EAAK/kB,SAAS,CAAC8kB,eAAc,IAC7B,EAAK1e,MAAM2F,UAAU,eAAe1N,EAAS0mB,eAAe,OAEhE,EAAK/kB,SAAS,CAACglB,eAAe3mB,OAElC,MACJ,IAAK,mBACD8H,KAAKnG,SAAS,CAACilB,oBAAoB,IACnC,IAAIpiB,EAAsBsD,KAAK6K,MAAMuN,iBACrC1b,EAAmB,OAAasD,KAAKC,MAAMjD,OAC3C,IAAIob,EAAmB3b,EAA2BC,GAClD0b,EAAgB,eAAqB1b,EAAmB,eAC7B,qBAAxBsD,KAAKC,MAAM8V,SAEV1a,EAAgBhG,IAAe,gBAAiB+iB,EAAkBtc,GAAS7D,MAAK,SAACC,GACxD,MAAlBA,EAAS6B,MAER,EAAKkG,MAAM8e,WAAW,MACtB,EAAK9e,MAAM2F,UAAU,gBAAgB,kCAAkC,IACvE,EAAK3F,MAAMqV,eAEX,EAAKrV,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,IACrD,EAAK1b,SAAS,CAACilB,oBAAoB,QAM/C3oB,EAAcd,IAAe,eAAgB+iB,EAAkBtc,GAAS7D,MAAK,SAACC,GAC1E,GAAqB,MAAlBA,EAAS6B,KAAc,CACtB,IAAIilB,GAAsB,EAU1B,QARwCpoB,IAApC,EAAKqJ,MAAMgf,sBACyB,OAApC,EAAKhf,MAAMgf,sBACgC,IAA3C,EAAKhf,MAAMgf,qBAAqB/oB,SAChC8oB,GAAsB,GAE1B,EAAK/e,MAAM8e,WAAW,WAGMnoB,IAAxB,EAAKqJ,MAAM8V,UAAiD,UAAvB,EAAK9V,MAAM8V,UAAwBiJ,EAAuB,CAC/F,IAAIE,EAAoB,CACpB,QAAW1oB,aAAaC,QAAQ,WAChC,SAAYD,aAAaC,QAAQ,YAGrCN,EAAchB,IAAQ,sBAAsB+pB,GAAmBjnB,MAAK,SAACC,GAC5C,MAAlBA,EAAS6B,MACXvD,aAAaoC,QAAQ,mBAAmB,GACxC,EAAKqH,MAAMkf,SAAQ,GACnB,EAAKlf,MAAMue,sBACX,EAAKve,MAAM2F,UAAU,gBAAgB,gCAAgC,KAErE,EAAK3F,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,YAIvD,EAAKtV,MAAMue,sBACX,EAAKve,MAAMkf,SAAQ,GACnB,EAAKlf,MAAM2F,UAAU,gBAAgB,gCAAgC,SAG5E,EAAK3F,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,IACrD,EAAK1b,SAAS,CAACilB,oBAAoB,OAI3CjH,YAAa,sBAAuB,IACpC,MACJ,IAAK,wBACD,IACMuH,EAAe,CAACC,SADN,IAAIxK,SAASjB,EAAMQ,QACKW,IAAI,eAAgBxb,UAAW/C,aAAaC,QAAQ,YAC5FN,EAAcd,IAAe,cAAe+pB,EAActjB,GAAS7D,MAAK,SAACC,GAChD,MAAlBA,EAAS6B,MACRvD,aAAaoC,QAAQ,SAAUV,EAAQ,SAAR,QAC/B1B,aAAaC,QAAQ,UACrB,EAAKmP,UAAU,gBAAgB,iCAAiC,KACxC,MAAlB1N,EAAS6B,MACfvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAEnB,EAAK2Q,UAAU,eAAe1N,EAASqd,QAAQ,OAGtD,MACJ,IAAK,kBACD,IACM+J,EAAW,CAACD,SADI,IAAIxK,SAASjB,EAAMQ,QACCW,IAAI,eAAgBxb,UAAW/C,aAAaC,QAAQ,YAC9FN,EAAcd,IAAe,cAAeiqB,EAAUxjB,GAAS7D,MAAK,SAACC,GACjE,GAAqB,MAAlBA,EAAS6B,KAAc,CACrB,EAAKwlB,KAAKC,QACV,EAAKvf,MAAM2F,UAAU,gBAAgB,iCAAiC,IACtE,IAAIrM,EAAY/C,aAAaC,QAAQ,WACjCiC,EAAG,uBAAmBa,GAC1BZ,eAAeoD,WAAWrD,GAC1B,EAAKmB,SAAS,CAAC4lB,YAAW,SAE3B,EAAKxf,MAAM2F,UAAU,eAAe1N,EAASqd,QAAQ,OAG7D,MACJ,IAAK,eAED,IAAImK,EAAY1f,KAAK6K,MACjB8U,EAmnBT,SAAgCC,EAAW1nB,GAC9C,IAAItC,EAAS,GAE4B,IAAtCE,OAAO+jB,KAAK+F,EAAW,IAAI1pB,SAC1BN,EAAOiqB,kBAAoB,iCAGQ,IAApC/pB,OAAO+jB,KAAK3hB,EAAS,IAAIhC,SACxBN,EAAOkqB,gBAAkB,+BAE7B,GAAGC,kBAAQnqB,GACP,MAAO,CAACkqB,gBAAgB,KAAKD,kBAAkB,MAEnD,OAAOjqB,EAhoBkBoqB,CAAuBN,GACxC,GAAIC,EACA3f,KAAKnG,SAAS,CAACjE,OAAQ+pB,QACpB,CACP,IAAI1X,EAAW,CAAC,CAAC,mBAAqByX,EAAU1lB,SAASimB,aAAaC,MACjD,gBAAkBR,EAAU1lB,SAASmmB,YAAYD,MACjD,KAAO,UAAU,mBAAqB,CAAC,oBAAsBR,EAAUU,gBACjD,oBAAsBV,EAAUW,gBAChC,sBAAwBX,EAAU1lB,SAASimB,aAAa3oB,MACxD,gBAAkBooB,EAAU1lB,SAASmmB,YAAY7oB,QAG5E,CAAC,gBAAkB,GAAG,mBAAqB,IACtC,KAAO,WAAW,mBAAqB,CACnB,oBAAsBooB,EAAUY,SAChC,gBAAkB,KAE3C,CAAC,gBAAkBZ,EAAU1lB,SAAS4lB,WAAWM,MAAM,mBAAqB,IACvE,KAAO,aAAa,mBAAqB,CAAC,oBAAsBR,EAAUE,WAChC,gBAAkBF,EAAU1lB,SAAS4lB,WAAWtoB,QAE/F,CAAC,gBAAkBooB,EAAU1lB,SAAS9B,SAASgoB,MAAM,mBAAqB,IACpE,KAAO,WAAW,mBAAqB,CAAC,oBAAsBR,EAAUxnB,SAChC,gBAAkBwnB,EAAU1lB,SAAS9B,SAASZ,SAExE,OAAhCooB,EAAU1lB,SAASsmB,WACnBrY,EAAS,GAAK,CAAC,gBAAkByX,EAAU1lB,SAASsmB,SAASJ,MAAM,mBAAqB,IACvE,KAAO,WAAW,mBAAqB,CACnB,oBAAsBR,EAAUY,SAChC,gBAAkBZ,EAAU1lB,SAASsmB,SAAShpB,SAIvF,IAAIoQ,EAAe,CACK,kBAAoBgY,EAAUa,iBAEnB,OAA/Bb,EAAU1lB,SAASwmB,UACnB9Y,EAAY,SAAcgY,EAAU1lB,SAASwmB,QAAQN,MACrDxY,EAAY,YAAgBgY,EAAU1lB,SAASwmB,QAAQlpB,OAEhC,OAAvBooB,EAAUe,WACV/Y,EAAY,aAAiBgY,EAAUe,SAASnpB,QAExB,IAAxB0I,KAAK6K,MAAM6V,WACZhZ,EAAY,oBAA0BgY,EAAUppB,KAAKqqB,mBACrDjZ,EAAY,qBAA2BgY,EAAUppB,KAAKsqB,oBACtDlZ,EAAY,kBAAwBgY,EAAUppB,KAAKuqB,iBACnDnZ,EAAY,iBAAuBgY,EAAUppB,KAAKwqB,gBAClDpZ,EAAY,sBAA4BgY,EAAUppB,KAAKyqB,sBAG9B,IAAxB/gB,KAAK6K,MAAMmW,WACZtZ,EAAY,mBAAyBgY,EAAUppB,KAAK2qB,kBACpDvZ,EAAY,eAAqBgY,EAAUppB,KAAK4qB,cAChDxZ,EAAY,oBAA0BgY,EAAUppB,KAAK6qB,mBACrDzZ,EAAY,iBAAuBgY,EAAUppB,KAAK8qB,gBAClD1Z,EAAY,gBAAsBgY,EAAUppB,KAAK+qB,eACjD3Z,EAAY,qBAA2BgY,EAAUppB,KAAKyqB,qBAGzD,IAAIO,EAAU,CACN,UAAa9qB,aAAaC,QAAQ,WAClC,WAAcipB,EAAU6B,UACxB,OAAU/qB,aAAaC,QAAQ,aAC/B,QAAW,QACX,SAAYipB,EAAU8B,UAAUlqB,MAChC,eAAkBooB,EAAUxlB,cAC5B,OAAU1D,aAAaC,QAAQ,UAC/B,cAAiBipB,EAAU+B,OAAOnqB,MAClC,SAAY2Q,EACZ,cAAgBP,GAIxB,GAA2B,kBAAvB1H,KAAKC,MAAMyhB,QAA6B,CAGxC,IAFA,IAAIC,EAAiB3hB,KAAKC,MAAM2hB,SAC5BC,EAAYF,EAAc,SACrB5F,EAAI,EAAGA,EAAI8F,EAAU3rB,OAAQ6lB,IAClCuF,EAAQrZ,SAAS8T,GAAjB,WAAkC8F,EAAU9F,GAAV,WAEtCuF,EAAO,SAAeK,EAAc,YACpCtmB,EAAgBhG,IAAe,aAAcisB,EAASxlB,GAAS7D,MAAK,SAACC,GAC3C,MAAlBA,EAAS6B,MACT,EAAKkG,MAAM2F,UAAU,gBAAiB,gCAAiC,IACvE,EAAK3F,MAAMqV,eAEX,EAAKrV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,IACvD,EAAKtV,MAAMqV,sBAKnBnf,EAAcd,IAAe,YAAaisB,EAASxlB,GAAS7D,MACxD,SAACC,GACyB,MAAlBA,EAAS6B,MACT,EAAKkG,MAAMkf,UACX,EAAKlf,MAAM2F,UAAU,gBAAiB,8BAA+B,MAGrE,EAAK3F,MAAMkf,UACX,EAAKlf,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,QAKvE,MAEJ,IAAK,gBAEDvV,KAAKwe,sBACL,IAAImD,EAAiB3hB,KAAK6K,MACtBiX,EA9lHhB,SAAwCpC,GAGpC,IAFA,IAAI1lB,EAAW,GACXiO,EAAWyX,EAAUzX,SAChB8T,EAAI,EAAGA,EAAI9T,EAAS/R,OAAQ6lB,IAAK,CACtC,IAAIgG,EAAkB9Z,EAAS8T,GAAGiG,mBAC9BC,EAAgBha,EAAS8T,GAAGmG,gBAChCloB,EAAS0F,KAAKqiB,GACd/nB,EAAS0F,KAAKuiB,GAElB,OAAOjoB,EAqlHmBmoB,CAA+BR,GAC7CS,EAAkB,CAAE,eAAkBT,EAAeznB,cAAe,UAAa4nB,GACrF3rB,EAAcd,IAAe,2BAA4B+sB,EAAiBtmB,GAAS7D,MAAK,SAACC,GACxD,MAAzBA,EAAS0iB,aACT,EAAK/gB,SAAS,CAAE8kB,eAAe,IAC/B,EAAK9kB,SAAS,CAAEglB,eAAgB3mB,IAChC,EAAK+H,MAAM2F,UAAU,gBAAiB1N,EAAS0mB,eAAgB,QAE/D,EAAK/kB,SAAS,CAAE8kB,eAAe,IAC/B,EAAK1e,MAAM2F,UAAU,eAAgB1N,EAAS0mB,eAAgB,UAItE,MAEJ,IAAK,yBACD,IAAMyD,EAA4BriB,KAAKsiB,gBAAgB1O,GACjD2O,EAAwC,iBAAxBviB,KAAKC,MAAM8V,SAC7ByM,EAAwBD,EAAe,UAAW,QAClDE,EAAsBF,EAAe,SAAU,MAC/CG,EAAyB,SAACxqB,GACL,MAAlBA,EAAS6B,MACJwoB,GACA,EAAKtiB,MAAMqV,aAGf,EAAKrV,MAAM2F,UAAU,gBAArB,uBACoB4c,EADpB,iBAEI,KAEJ,EAAKviB,MAAM2F,UAAU,eAArB,oBACiB6c,EADjB,iBAEI,KAGZ,GAAIF,EAAc,CACd,IAAKviB,KAAK2iB,sBAAsBN,GAG5B,OAFAriB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAIf,IACI6D,EADoBnZ,KAAKC,MAAM2iB,iBAAiBC,aACb1J,iBAIvCkJ,EAAyB,iBAAuBlJ,EAChD9d,EAAgBhG,IAFY,gBAGxBgtB,EAA2BvmB,GAAS7D,KAAKyqB,QAE7CvsB,EAAcd,IAAe,gBACzBgtB,EAA2BvmB,GAAS7D,KAAKyqB,GAGjD,MAIJ,IAAK,cACD,IAAM9N,EAAa5U,KAAK8iB,oBAAoBlP,GACtCmP,EAAuC,iBAAxB/iB,KAAKC,MAAM8V,SAE5BiN,EAAiBD,EAAc,UAAW,QAC1CE,EAAeF,EAAc,SAAU,MAErC9M,EAAkB,SAAC/d,GACC,MAAlBA,EAAS6B,MACT,EAAKkG,MAAM2F,UAAU,gBAArB,kBAAiDod,EAAjD,iBACI,IAEAD,GAEA,EAAK9iB,MAAMqV,cAIQ,MAAlBpd,EAAS6B,KACd,EAAKkG,MAAM2F,UAAU,eAArB,oBAAkDqd,EAAlD,YAA0E,IAEnD,MAAlB/qB,EAAS6B,KACdvD,aAAauF,WAAW,iBAGxBnG,EAAOmoB,SAAW7lB,EAASqd,QAC3B,EAAK1b,SAAS,CAACjE,OAAQA,MAI/B,GAAImtB,EAAc,CAEd,IAAuB,IADF/iB,KAAKkjB,kCAAkCtO,GAIxD,OAFA5U,KAAKC,MAAM2F,UAAU,aAArB,kBAAsD,SACtD5F,KAAKC,MAAMqV,aAIf,IAAML,EAAkBjV,KAAKC,MAAMua,kBAEJ,OAA3BvF,EAAgBiB,SAChBtB,EAAWsB,OAASjB,EAAgBiB,QAGxC,IAAIiN,EAAYlO,EAAgBY,WAC5Btc,EAAYqb,EAAWrb,UAE3Bqb,EAAU,UAAgBrb,EAC1Bqb,EAAU,WAAiBuO,EAC3B9nB,EAAgBhG,IAHA,uBAG0Buf,GAAY3c,KAAKge,QAG3D9f,EAAcd,IAAe,uBAAwBuf,GAAY3c,KAAKge,IA2K/E,SAASmN,GAAuBxP,GAAO,IAAD,OAC1C5T,KAAKmY,gBADqC,IAErCmG,EAA6C1K,EAA7C0K,QAASV,EAAoChK,EAApCgK,MAAOyF,EAA6BzP,EAA7ByP,SAAUtF,EAAmBnK,EAAnBmK,SAAUM,EAASzK,EAATyK,MACzC,GAAgB,KAAZC,GAA4B,KAAVV,GAA6B,KAAbyF,GAAgC,KAAbtF,EACvD/d,KAAKnG,SAAS,CAAC0e,kBAAkB,QAC5B,CACH,IAAMjiB,EAAO,CAACgtB,iBAAkB,YAAahF,QAASA,EAASV,MAAOA,EACrD2F,WAAYF,EAAUG,UAAWH,EAAUA,SAAUA,EACpDtF,SAAUA,EAAU0F,aAAcpF,GAChD7mB,EAAWC,aAAYtC,KAC3ByC,MAAMJ,EAAS,KAAKrC,IAAO,UAAW,CAC7B0C,OAAQ,OACRC,KAAMhB,KAAKiB,UAAUzB,GACrB0B,QAAQ,CAAE,eAAgB,mBAAoB,WAAW,oBAC1DC,MACC,SAAAiE,GAAG,OAAIA,EAAI/D,UACbG,OACE,SAAAC,GAAK,OAAIC,QAAQD,MAAM,wBACzBN,MACI,SAACC,GACsB,MAAlBA,EAAS6B,MAEgB,MAAlB7B,EAAS6B,MAAqC,0BAArB7B,EAASqd,QADxC,EAAKtV,MAAMyjB,YAAYxrB,GAIvB,EAAK2B,SAAS,CAACtB,MAAOL,EAASqd,QAASgD,kBAAkB,QAO3E,SAASoL,GAA6BzT,EAAU0T,GACtD,IAAD,OACM,QAAiBhtB,IAAdsZ,QAA2CtZ,IAAhBgtB,GAA0C,KAAb1T,GAAmC,KAAhB0T,EAAoB,CAC9F,IACIC,EAAS,CAAC,UADDrtB,aAAaC,QAAQ,WACA,aAAemtB,EAAa,YAAc1T,GAC1EtW,EAAavE,IAAe,yBAAyBwuB,GAAS5rB,MAAK,SAACC,GACxE,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC/B,IAAI0W,EAAgBvY,EAAS6B,KAC7B,EAAK2W,eAAexY,EAAUuY,GAAe,QAE5C,EAAK5W,SAAS,CAACC,eAAe,QAMnC,SAASgqB,GAAuBC,EAAgBC,GAAuB,IAAD,OACrEloB,EAAUtF,aAAaC,QAAQ,gBAC/BwtB,EAA2B,CAAC,aAAe,EAAM,UAAaztB,aAAaC,QAAQ,WAAWytB,qBAAqBH,GACvH1oB,EAAgBhG,IAAe,oBAC3B4uB,EAA0BnoB,GAAS7D,MAAK,SAACC,QACxBtB,IAAbsB,GAAuC,OAAbA,EAKR,MAAlBA,EAAS6B,MAETiqB,EAAoB,aAAkB,EAGtC,EAAK/jB,MAAMkkB,uBAAuBJ,IAET,MAAlB7rB,EAAS6B,MAChBvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,IAf9B,EAAKD,SAAS,CAACC,eAAe,OAsBnC,SAASsqB,GAAgCC,EAAwBC,GACpE,IAAI5sB,EAAa,CAAC,UAAalB,aAAaC,QAAQ,WAAY,MAAQ8tB,MAExE,GAAIrjB,KAAcnD,SAASsmB,IAA2BnjB,KAAcnD,SAASumB,GACzE,OAAO5sB,EAGX,GAAsC,IAAlC2sB,EAAuBnuB,QAAgD,IAAhCouB,EAAqBpuB,OAC5D,OAAOwB,EAGX,GAAI2sB,EAAuBnuB,OAAS,EAAG,CACnC,IAAMsuB,EAAaH,EAAuBA,EAAuBnuB,OAAS,GAC1EwB,EAAW,cAAoB8sB,EAAWna,aAG9C,GAAoC,IAAhCia,EAAqBpuB,OACrBwB,EAAW,qBAAyB,SACjC,CACH,IAAM8sB,EAAaF,EAAqBA,EAAqBpuB,OAAS,GACtEwB,EAAW,qBAAyB8sB,EAAWna,aAGnD,OAAO3S,EAGX,SAAS+sB,GAA+BzX,EAAU0X,EAAerX,EAAMsX,GAA0B,IAAD,OAC5F,OAAO/qB,EAAavE,IAAe2X,EAAS0X,GAAezsB,MAAK,SAACC,GAC7D,YAAiBtB,IAAbsB,GAAuC,OAAbA,GAAuC,MAAlBA,EAAS6B,MACxD,EAAKF,SAAS,CAACC,eAAe,IACvB,OAIX5B,EAASmV,KAAOA,EAChBsX,EAAwBzsB,GAEjBA,M,8CAKf,WAAgC8U,EAAU0X,EAAeE,EAAYC,GAArE,2BAAA5gB,EAAA,sDACQvM,EAAcsV,EACd8X,EAAWJ,EAENK,EAAW,EAJxB,YAI2BA,GAAYH,GAJvC,iCAK2BxgB,QAAQC,QAAQogB,GAA+B/sB,EAAaotB,EAAUC,EAAUF,IAL3G,eAMuBjuB,KADX0N,EALZ,SAM+C,OAAXA,EANpC,sDAWc+f,EAAyB/f,EAAO0gB,kBAChCV,EAAuBhgB,EAAO2gB,yBAChCP,EAAgBN,GAAgCC,EAAwBC,GAClC,IAAtCxuB,OAAO+jB,KAAK6K,GAAexuB,OAdvC,qDAkBQwB,EAAc,oBACdotB,EAAWJ,EAnBnB,QAImDK,IAJnD,iDAsBW,GAtBX,6C,sBA0BO,SAASG,GAA0BP,GAA0B,IAAD,OACzDQ,EAAS3uB,aAAaC,QAAQ,WACpC,IAAIyK,KAAcnD,SAASonB,GAA3B,CAIA,IAAI7uB,EAAM,CAACiD,UAAW4rB,EAAOznB,MAAM6mB,MAEnC3qB,EAAavE,IADE,oBACsBiB,GAAM2B,MAAK,SAACC,GAC7C,QAAiBtB,IAAbsB,GAAuC,OAAbA,EAK9B,GAAsB,MAAlBA,EAAS6B,KAAc,CACvB7B,EAASktB,WAAY,EACrBltB,EAASmV,KAAO,EAGhBsX,EAAwBzsB,GAExB,IAAMmsB,EAAyBnsB,EAAS8sB,kBAClCV,EAAuBpsB,EAAS+sB,yBAEhCI,EAAuBntB,EAASotB,uBAElCZ,EAAgBN,GAAgCC,EAAwBC,GAC5E,GAA0C,IAAtCxuB,OAAO+jB,KAAK6K,GAAexuB,OAC3B,OAEJwuB,EAAgB5uB,OAAOyvB,OAAO,GAAIjvB,EAAMouB,GAIxC,IAAIE,EAAaY,KAAKC,KAAKJ,EAAuBd,MAC/Cc,EAAuB,MACtBT,EAAaY,KAAKC,KAAK,IAAOlB,O,kDAGlCmB,CAhCO,oBAgCoBhB,EAAeE,EAAYD,GAAyB1sB,MAAM,SAAAiE,GAC7EA,GAGA1D,QAAQD,MAAM,8CAIG,MAAlBL,EAAS6B,MAChBvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,SAzC9B,EAAKD,SAAS,CAACC,eAAe,QAgDnC,SAAS6rB,GAAwB5B,GAAiB,IAAD,OAChDjoB,EAAUtF,aAAaC,QAAQ,gBAC/BwtB,EAA2B,CAC3B,aAAe,EAAM,aAAe,EACpC,UAAaztB,aAAaC,QAAQ,WAClC,qBAAuBstB,GAI3B1oB,EAAgBhG,IADC,yBACwB4uB,EAA0BnoB,GAAS7D,MAAK,SAACC,QAC7DtB,IAAbsB,GAAuC,OAAbA,EAMR,MAAlBA,EAAS6B,KAGT,EAAKkG,MAAM2lB,2BAA2B7B,GACb,MAAlB7rB,EAAS6B,MAChBvD,aAAauF,WAAW,gBACxB/G,OAAOC,SAAW,KAElB,EAAK4E,SAAS,CAACC,eAAe,IAZ9B,EAAKD,SAAS,CAACC,eAAe,OAkCnC,SAAS+rB,GAAqBpI,EAAYqI,EAAeC,GAAa,IAAD,OACxEA,IACA,IAAIC,EAASxvB,aAAaC,QAAQ,UAC9B2I,EAAW,CAAC,iBAAoBqe,EAAW,QAC/B,OAAUuI,EAAQ,QAAWxvB,aAAaC,QAAQ,WAClE2I,oBAAmC,WACnC/D,EAAgBlG,IAAQ,YAAaiK,GAAWnH,MAAK,SAACC,QACzBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,KAChB,EAAKkG,MAAM2F,UAAU,gBAAgB,6BAA6B,IAElE,EAAK3F,MAAM2F,UAAU,eAAe,+BAA+B,OA6ChF,SAASqgB,GAAgBrS,GAAQ,IAAD,OAC/B5T,KAAKmY,gBAD0B,IAE1B+N,EAAmDtS,EAAnDsS,eAAgBziB,EAAmCmQ,EAAnCnQ,MAAO0iB,EAA4BvS,EAA5BuS,OAAQ5vB,EAAoBqd,EAApBrd,MAAO6vB,EAAaxS,EAAbwS,IAAKljB,EAAQ0Q,EAAR1Q,KAC5CpH,EAAUtF,aAAaC,QAAQ,gBAC/B4vB,EAAgB,CAChB,UAAa7vB,aAAaC,QAAQ,WAClC,sBAAyByvB,EACzB,sBAAyB,aACzB,cACI,CACI,IAAOE,EACP,MAAS7vB,EACT,OAASoiB,OAAOlV,GAChB,OAAU0iB,EACV,KAAQjjB,IAKdqT,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACD,EAAK+H,MAAM2F,UAAU,eAArB,oBACsB6Q,EADtB,YACgD4P,EAAa,uBACpD,IACiB,MAAlBnuB,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOygB,EAAa,sBADpB,YACiD7P,EADjD,iBAEI,KAEH,EAAKvW,MAAM2F,UAAU,eAArB,oBACgB6Q,EADhB,YAC0C4P,EAAa,uBACpD,IAER9P,GACD,EAAKtW,MAAMqmB,gBAIlB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyB0P,GAG/B,OAFArmB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDyP,EAAa,oBAA0BzP,EACvCvb,EAAgBhG,IAFC,mBAGPgxB,EAAevqB,GAAS7D,KAAKye,QAG/BvgB,EAAcd,IAAe,mBACzBgxB,EAAevqB,GAAS7D,KAAKye,GAI1C,SAAS6P,GAAsB3S,GAAQ,IAAD,OACjC5T,KAAKmY,gBAD4B,IAE1BiO,EAAaxS,EAAbwS,IAAI7vB,EAASqd,EAATrd,MACPiwB,EAAaxmB,KAAK6K,MAAM2b,WAC5BA,EAAWJ,IAAMA,EACjBI,EAAWjwB,MAAQA,EACnByJ,KAAKnG,SAAS,CAAC2sB,WAAWA,IAC1B,IAAIlwB,EAAO,CAAC,IAAO8vB,EAAI,MAAS7vB,GAChCJ,EAAcd,IAAe,kBAAmBiB,GAAM2B,MAAK,SAACC,GACpD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC3B,IAAI0sB,EAAY,GAOhB,GALIvuB,EAASwuB,OADG,KAEXD,EAAYvuB,EAAQ,KAASuB,KAAI,SAAU8F,GAC3B,MAAO,CAAC,MAASA,EAAG,SAAc,MAASA,EAAG,OAAY,KAAQA,EAAG,oBAG5D3I,IAA1B,EAAKqJ,MAAM4W,WAA0B,CACpC,IAAI8P,EAAK,EAAK1mB,MAAM4W,WAAW+P,cAAc1Q,OACzC2Q,EAAkBJ,EAAUnoB,QAAO,SAAA5E,GAAC,OAAIA,EAAEpC,QAAUqhB,OAAOgO,MACvDE,EAAgB3wB,OAAS,GACpB,EAAK2D,SAAS,CAACitB,IAAID,IAGrC,EAAKhtB,SAAS,CAACktB,QAAQN,IACvB,EAAK5sB,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SAE1C,EAAK1e,SAAS,CAACktB,QAAS,KACxB,EAAKltB,SAAS,CAACmtB,OAAM,EAAMzO,kBAAiB,IAC5C,EAAKtY,MAAM2F,UAAU,eAAe,6BAA6B,OAMlF,SAASqhB,GAAerT,GAAQ,IAAD,OAClC5T,KAAKmY,gBAD6B,IAE7B+O,EAA6FtT,EAA7FsT,cAAeC,EAA8EvT,EAA9EuT,sBAAuBC,EAAuDxT,EAAvDwT,YAAaC,EAA0CzT,EAA1CyT,mBAAoBC,EAAsB1T,EAAtB0T,UAAWC,EAAW3T,EAAX2T,QACnFzrB,EAAUtF,aAAaC,QAAQ,gBAC/B+wB,EAAa,CACb,UAAahxB,aAAaC,QAAQ,WAClC,sBAAyBywB,EACzB,sBAAyB,SACzB,cACI,CACI,kBAAqBE,EACrB,sBAAyBC,EACzB,gBAAmBC,EACnB,IAAOH,EACP,QAAWI,IAIjBhR,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACD,EAAK2B,SAAS,CAACC,eAAe,IACJ,MAAlB5B,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACO4hB,EAAU,sBADjB,YAC8ChR,EAD9C,iBAEI,KAEH,EAAKvW,MAAM2F,UAAU,eAArB,oBACgB6Q,EADhB,YAC0C+Q,EAAU,uBACjD,IAERjR,GACD,EAAKtW,MAAMqmB,gBAIlB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyB6Q,GAG/B,OAFAxnB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElD4Q,EAAU,oBAA0B5Q,EACpCvb,EAAgBhG,IAFC,mBAGPmyB,EAAY1rB,GAAS7D,KAAKye,QAG5BvgB,EAAcd,IAAe,mBACzBmyB,EAAY1rB,GAAS7D,KAAKye,GAMvC,SAAS+Q,GAAuB7T,GAAQ,IAAD,OAClC5T,KAAKmY,gBAD6B,IAE3BiP,EAA6CxT,EAA7CwT,YAAYC,EAAiCzT,EAAjCyT,mBAAoBC,EAAa1T,EAAb0T,UACnCI,EAAY1nB,KAAK6K,MAAM8c,UAC3BD,EAAUN,YAAcA,EACxBM,EAAUL,mBAAqBA,EAC/BrnB,KAAKnG,SAAS,CAAC6tB,UAAUA,IACzB,IAAIpxB,EAAO,CAAC,kBAAqB8wB,EAAY,sBAAyBC,EAAoB,gBAAmBC,GAC7GnxB,EAAcd,IAAe,uBAAwBiB,GAAM2B,MAAK,SAACC,GACzD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC3B,IAAI0sB,EAAY,GAQhB,GANIvuB,EAASwuB,OADG,KAEXD,EAAYvuB,EAAQ,UAAcuB,KAAI,SAAU8F,GAChC,MAAO,CAAC,MAASA,EAAG,cAAmB,MAASA,EAAG,kBAGxE,EAAK1F,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SACb3hB,IAA1B,EAAKqJ,MAAM4W,WAA0B,CACpC,IAAIuP,EAAM,EAAKnmB,MAAM4W,WAAW+P,cAAcR,IAC1CwB,EAAcnB,EAAUnoB,QAAO,SAAA5E,GAAC,OAAIA,EAAEpC,QAAU8uB,KAC5CwB,EAAY1xB,OAAS,GAChB,EAAK2D,SAAS,CAACguB,OAAOD,IAGxC,EAAK/tB,SAAS,CAACktB,QAAQN,IACvB,EAAK5sB,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SAE1C,EAAK1e,SAAS,CAACktB,QAAS,KACxB,EAAKltB,SAAS,CAACmtB,OAAM,EAAMzO,kBAAiB,IAC5C,EAAKtY,MAAM2F,UAAU,aAAa,iCAAiC,OAMxF,SAASkiB,GAAgBlU,GAAQ,IAAD,OAC/B5T,KAAKmY,gBAD0B,IAE1B4P,EAAuDnU,EAAvDmU,YAAY3B,EAA2CxS,EAA3CwS,IAAI4B,EAAuCpU,EAAvCoU,OAAOC,EAAgCrU,EAAhCqU,UAAUC,EAAsBtU,EAAtBsU,WAAWC,EAAWvU,EAAXuU,QAC7CrsB,EAAUtF,aAAaC,QAAQ,gBAC/B2xB,EAAc,CACd,UAAa5xB,aAAaC,QAAQ,WAClC,sBAAyBsxB,EACzB,sBAAyB,UACzB,cACI,CACI,OAAUC,EACV,QAAWC,EACX,IAAO7B,EACP,YAAe+B,EACf,YAAeD,IAGrB3R,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACD,EAAK2B,SAAS,CAACC,eAAe,IACJ,MAAlB5B,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOwiB,EAAW,sBADlB,YAC+C5R,EAD/C,iBAEI,KAEH,EAAKvW,MAAM2F,UAAU,eAArB,oBACgB6Q,EADhB,YAC0C2R,EAAW,uBAClD,IAER7R,GACD,EAAKtW,MAAMqmB,gBAIlB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyByR,GAG/B,OAFApoB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDwR,EAAW,oBAA0BxR,EACrCvb,EAAgBhG,IAFC,mBAGP+yB,EAAatsB,GAAS7D,KAAKye,QAG7BvgB,EAAcd,IAAe,mBACzB+yB,EAAatsB,GAAS7D,KAAKye,GAMxC,SAAS2R,GAAsBzU,GAAQ,IAAD,OACzC5T,KAAKmY,gBADoC,IAEpCmQ,EAA6D1U,EAA7D0U,kBAAkBlC,EAA2CxS,EAA3CwS,IAAI4B,EAAuCpU,EAAvCoU,OAAOC,EAAgCrU,EAAhCqU,UAAUC,EAAsBtU,EAAtBsU,WAAWC,EAAWvU,EAAXuU,QACnDrsB,EAAUtF,aAAaC,QAAQ,gBAC/B2xB,EAAc,CACd,UAAa5xB,aAAaC,QAAQ,WAClC,sBAAyB6xB,EACzB,sBAAyB,gBACzB,cACI,CACI,OAAUN,EACV,QAAWC,EACX,IAAO7B,EACP,YAAe+B,EACf,YAAeD,IAIrB3R,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOwiB,EAAW,sBADlB,YAC+C5R,EAD/C,iBAEI,KAEA,EAAKvW,MAAM2F,UAAU,eAArB,oBACa6Q,EADb,YACuC2R,EAAW,uBAClD,IAER7R,GACA,EAAKtW,MAAMqmB,gBAInB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyByR,GAG/B,OAFApoB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDwR,EAAW,oBAA0BxR,EACrCvb,EAAgBhG,IAFC,mBAGL+yB,EAAatsB,GAAS7D,KAAKye,QAG/BvgB,EAAcd,IAAe,mBACzB+yB,EAAatsB,GAAS7D,KAAKye,GAMpC,SAAS6R,GAAc3U,GAAQ,IAAD,OACjC,GAAyC,IAAtC5T,KAAK6K,MAAM2d,UAAU5K,MAAM1nB,OAE1B8J,KAAKnG,SAAS,CAACiiB,SAAS,+BAEtB,CAAC,IACI2M,EAA8B7U,EAA9B6U,UAAUC,EAAoB9U,EAApB8U,iBACbC,EAAW3oB,KAAK6K,MAAM2d,UAAUG,SACpC3oB,KAAKmY,gBACL,IAAIyQ,EAAqC,cAArBF,EAAmCC,EAAY,QAC/DH,EAAY,CAChB,UAAahyB,aAAaC,QAAQ,WAClC,mBAAsBgyB,EACtB,mBAAsB,QACtB,eAAkB,CACd,SAAYzoB,KAAK6K,MAAM2d,UAAU5K,MACjC,kBAAsB8K,EACtB,SAAaE,EACb,yBAA6B5oB,KAAK6K,MAAMge,YAIxC/sB,EAAUtF,aAAaC,QAAQ,gBAC7B8rB,EAAwC,iBAAxBviB,KAAKC,MAAM8V,SAC7ByM,EAAwBD,EAAe,UAAW,QAClDE,EAAsBF,EAAe,SAAU,MAC/CG,EAAyB,SAACxqB,GACD,MAAlBA,EAAS6B,MACRwoB,GACA,EAAKtiB,MAAMqV,aAGf,EAAKrV,MAAM2F,UAAU,gBAArB,uBACoB4c,EADpB,iBAEI,KAEJ,EAAKviB,MAAM2F,UAAU,eAArB,oBACiB6c,EADjB,iBAEI,IAEJF,GACA,EAAKtiB,MAAMqmB,gBAGnB,GAAI/D,EAAc,CACV,IAAKviB,KAAK2iB,sBAAsB6F,GAGhC,OAFAxoB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKX,IACI6D,EADoBnZ,KAAKC,MAAM2iB,iBAAiBC,aACb1J,iBAGvCqP,EAAS,iBAAuBrP,EAChC9d,EAAgBhG,IAFY,gBAG5BmzB,EAAW1sB,GAAS7D,KAAKyqB,QAE7BvsB,EAAcd,IAAe,gBACzBmzB,EAAW1sB,GAAS7D,KAAKyqB,IAOlC,SAASoG,GAAmBlV,GAAQ,IAAD,OACnC5T,KAAKmY,gBAD8B,IAG/B7hB,EAAO,CAAC,MADIsd,EAATrd,OAEPJ,EAAcd,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,QAC5BtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MACb,EAAKF,SAAS,CAACkvB,SAAS7wB,EAAS6wB,WACjC,EAAKlvB,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,MAE1C,EAAK1e,SAAS,CAACkvB,SAAS,KACxB,EAAKlvB,SAAS,CAACmtB,OAAM,EAAMzO,kBAAiB,IAC5C,EAAKtY,MAAM2F,UAAU,aAAa,8BAA8B,QAQrF,SAASojB,GAAcpV,GAAQ,IAAD,OACjC5T,KAAKmY,gBAD4B,IAE1B5hB,EAA6Cqd,EAA7Crd,MAAM0yB,EAAuCrV,EAAvCqV,YAAYC,EAA2BtV,EAA3BsV,YAAYC,EAAevV,EAAfuV,YACjCC,EAAgB,CAAC,UAAa5yB,aAAaC,QAAQ,WAC/C,mBAAsBwyB,EACtB,mBAAsB,QACtB,eAAkB,CACd,MAAS1yB,EACT,aAAgB2yB,EAChB,YAAcC,IAGtBrtB,EAAUtF,aAAaC,QAAQ,gBAC7B8rB,EAAwC,iBAAxBviB,KAAKC,MAAM8V,SAC7ByM,EAAwBD,EAAe,UAAW,QAClDE,EAAsBF,EAAe,SAAU,MAC/CG,EAAyB,SAACxqB,GACG,MAAlBA,EAAS6B,MACJwoB,GACA,EAAKtiB,MAAMqV,aAGf,EAAKrV,MAAM2F,UAAU,gBAArB,uBACoB4c,EADpB,iBAEI,KAEJ,EAAKviB,MAAM2F,UAAU,eAArB,oBACiB6c,EADjB,iBAEI,IAGJF,GACA,EAAKtiB,MAAMqmB,gBAI3B,GAAI/D,EAAc,CACd,IAAKviB,KAAK2iB,sBAAsByG,GAGpB,OAFAppB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAIvB,IACI6D,EADoBnZ,KAAKC,MAAM2iB,iBAAiBC,aACb1J,iBAIvCiQ,EAAa,iBAAuBjQ,EACpC9d,EAAgBhG,IAFY,gBAGhB+zB,EAAettB,GAAS7D,KAAKyqB,QAEpCvsB,EAAcd,IAAe,gBACtB+zB,EAAettB,GAAS7D,KAAKyqB,GAQ1C,SAAS2G,GAAgBzV,GAAQ,IAAD,OACnC5T,KAAKmY,gBACL,IAAMvD,EAAa5U,KAAK8iB,oBAAoBlP,GACtCmP,EAAuC,iBAAxB/iB,KAAKC,MAAM8V,SAC5BiN,EAAiBD,EAAe,UAAY,QAG1C9M,EAAkB,SAAC/d,GACC,MAAlBA,EAAS6B,MACT,EAAKkG,MAAM2F,UAAU,gBAArB,kBAAiDod,EAAjD,iBACI,IAEAD,GAEA,EAAK9iB,MAAMqV,cAGU,MAAlBpd,EAAS6B,KAChB,EAAKkG,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,IAC9B,MAAlBrd,EAAS6B,MAChBvD,aAAauF,WAAW,gBAEvBgnB,GACD,EAAK9iB,MAAMyX,eAGnB,IAAqB,IAAjBqL,EAAuB,CACvB,IAAMuG,EAAShsB,OAAO9G,aAAaC,QAAQ,cAC3Cme,EAAU,mBAAV,OAA6C0U,EAGjD,GAAIvG,EAAc,CAEd,IAAuB,IADF/iB,KAAKkjB,kCAAkCtO,GAIxD,OAFA5U,KAAKC,MAAM2F,UAAU,aAArB,kBAAsD,SACtD5F,KAAKC,MAAMqV,aAIf,IAAML,EAAkBjV,KAAKC,MAAMua,kBAEJ,OAA3BvF,EAAgBiB,SAChBtB,EAAWsB,OAASjB,EAAgBiB,QAExC,IAAIiN,EAAYlO,EAAgBY,WAC5B0T,EAAatU,EAAgBC,mBAAmBoU,OAChD/vB,EAAYqb,EAAWrb,UAE3Bqb,EAAU,mBAAV,OAA6C2U,EAC7C3U,EAAU,UAAgBrb,EAC1Bqb,EAAU,WAAiBuO,EAC3B9nB,EAAgBhG,IAJA,uBAI0Buf,GAAY3c,KAAKge,QAE3D9f,EAAcd,IAAe,uBAAwBuf,GAAY3c,KAAKge,GAE1E4B,YAAa,yBAA0B,IAIpC,SAAS2R,GAAeC,GAAkB,IAAD,OACvC/K,EAAwB,GAC5B,QAA0C9nB,IAAtC6yB,EAAgBC,mBAAyE,OAAtCD,EAAgBC,oBACjC,IAAtCD,EAAgBC,kBACbhL,EAAqB,UAAgBloB,aAAaC,QAAQ,WAC1DioB,EAAqB,mBAAwB,MACzC,CACJ,IAAIpoB,EAAO,GACV,OAAOmzB,EAAgBxsB,kBACpB,IAAK,aACC3G,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBACxB,gBAAkB,aAClB,cAAiB2sB,EAAgBtsB,mBAAmBwsB,cACpD,YAAeF,EAAgBtsB,mBAAmBysB,OAClD,SAAYH,EAAgBtsB,mBAAmB0sB,SAC/C,SAAYJ,EAAgBtsB,mBAAmB2sB,SAC/C,aAAgBL,EAAgBtsB,mBAAmB4sB,aACnD,YAAeN,EAAgBrsB,YAAY4sB,WAC3C,iBAAoB,cAEvC,MACN,IAAK,aACA1zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmB,aACnB,IAAO2sB,EAAgBtsB,mBAAmBipB,IAC1C,SAAYqD,EAAgBtsB,mBAAmB8sB,SAC/C,cAAiBR,EAAgBtsB,mBAAmBwsB,cACpD,OAAUF,EAAgBtsB,mBAAmB+sB,OAC7C,WAAcT,EAAgBtsB,mBAAmBgtB,WACjD,KAAQV,EAAgBrsB,YAAYgtB,KACpC,SAAYX,EAAgBrsB,YAAY2gB,SACxC,WAAc0L,EAAgBtsB,mBAAmBktB,YAEjE,MACL,IAAK,kBACD/zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBACtB,gBAAkB,aAClB,cAAiB2sB,EAAgBtsB,mBAAmBwsB,cACpD,YAAeF,EAAgBtsB,mBAAmBysB,OAClD,SAAYH,EAAgBtsB,mBAAmB0sB,SAC/C,SAAYJ,EAAgBtsB,mBAAmB2sB,SAC/C,cAAiBL,EAAgBrsB,YAAY7D,UAC7C,cAAiBkwB,EAAgBrsB,YAAYktB,cAC7C,WAAcb,EAAgBrsB,YAAY4sB,WAC1C,iBAAoB,mBAEzC,MACA,IAAK,yBACD1zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBACtB,gBAAkB,WAClB,cAAiB2sB,EAAgBtsB,mBAAmBwsB,cACpD,KAAQF,EAAgBtsB,mBAAmBotB,KAC3C,WAAcd,EAAgBrsB,YAAY4sB,WAC1C,UAAaP,EAAgBtsB,mBAAmBqtB,UAChD,QAAWf,EAAgBtsB,mBAAmBstB,QAC9C,OAAUhB,EAAgBrsB,YAAY8sB,OACtC,MAAST,EAAgBrsB,YAAYitB,WACrC,SAAYZ,EAAgBtsB,mBAAmB2sB,SAC/C,iBAAoB,0BAEzC,MACR,IAAK,aACAxzB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmB,aACnB,SAAY2sB,EAAgBtsB,mBAAmButB,SAC/C,cAAiBjB,EAAgBtsB,mBAAmBwtB,cACpD,cAAiBlB,EAAgBtsB,mBAAmBwsB,cACpD,YAAeF,EAAgBtsB,mBAAmBytB,YAClD,UAAanB,EAAgBrsB,YAAYytB,UACzC,SAAYpB,EAAgBrsB,YAAY2gB,SACxC,WAAc0L,EAAgBtsB,mBAAmBktB,YAEjE,MACL,IAAK,WACA/zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmB,WACnB,SAAY2sB,EAAgBtsB,mBAAmButB,SAC/C,cAAiBjB,EAAgBtsB,mBAAmBwtB,cACpD,cAAiBlB,EAAgBtsB,mBAAmBwsB,cACpD,YAAeF,EAAgBtsB,mBAAmBytB,YAClD,UAAanB,EAAgBrsB,YAAYytB,UACzC,SAAYpB,EAAgBrsB,YAAY2gB,SACxC,WAAc0L,EAAgBtsB,mBAAmBktB,YAEjE,MACL,IAAK,QACA/zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmB,QACnB,KAAQ2sB,EAAgBtsB,mBAAmBotB,KAC3C,SAAYd,EAAgBtsB,mBAAmB8sB,SAC/C,cAAiBR,EAAgBtsB,mBAAmBwsB,cACpD,KAAQF,EAAgBrsB,YAAYgtB,KACpC,SAAYX,EAAgBrsB,YAAY2gB,SACxC,WAAc0L,EAAgBtsB,mBAAmBktB,YAEjE,MACL,IAAK,YACA/zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmB,YACnB,KAAQ2sB,EAAgBtsB,mBAAmBotB,KAC3C,SAAYd,EAAgBtsB,mBAAmB8sB,SAC/C,OAAUR,EAAgBtsB,mBAAmB+sB,OAC7C,cAAiBT,EAAgBtsB,mBAAmBwsB,cACpD,KAAQF,EAAgBrsB,YAAYgtB,KACpC,SAAYX,EAAgBrsB,YAAY2gB,SACxC,WAAc0L,EAAgBtsB,mBAAmBktB,YAEjE,MACL,IAAK,UACA/zB,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmB,UACnB,KAAQ2sB,EAAgBtsB,mBAAmBotB,KAC3C,SAAYd,EAAgBtsB,mBAAmB8sB,SAC/C,OAAUR,EAAgBtsB,mBAAmB+sB,OAC7C,cAAiBT,EAAgBtsB,mBAAmBwsB,cACpD,KAAQF,EAAgBrsB,YAAYgtB,KACpC,SAAYX,EAAgBrsB,YAAY2gB,SACxC,WAAc0L,EAAgBtsB,mBAAmBktB,YAEjE,MACL,KAAK7sB,KACAlH,EAAO,CAAC,iBAAmBmzB,EAAgB3sB,iBAC3B,gBAAkB,WAClB,iBAAmBU,KACnB,cAAiBisB,EAAgBtsB,mBAAmBwsB,cACpD,UAAaF,EAAgBtsB,mBAAmB2tB,UAChD,SAAYrB,EAAgBtsB,mBAAmB8sB,SAC/C,WAAcR,EAAgBtsB,mBAAmBktB,WACjD,UAAaZ,EAAgBrsB,YAAYytB,UACzC,SAAYpB,EAAgBrsB,YAAY2gB,UAMhEW,EAAwBjiB,EAA2BnG,GAEvD,IAAIwF,EAAUtF,aAAaC,QAAQ,gBACnCioB,EAAqB,OAAa+K,EAAe,OACjD/K,EAAqB,eAAqB+K,EAAe,eACzD/K,EAAqB,kBAAuB,EAC5CvoB,EAAcd,IAAe,mBAAoBqpB,EAAuB5iB,GAAS7D,MAAK,SAACC,GAC5E,EAAK2B,SAAS,CAACkxB,UAAU7yB,OAIlC,SAAS8yB,KAAgB,IAAD,OAC3BpxB,EAAavE,IAAe,2BAA2B4C,MAAK,SAACC,GACrD,QAAsBtB,IAAlBsB,EAAS6B,MAAwC,MAAlB7B,EAAS6B,KAAc,CACtD,IAAIkxB,EAAa/yB,EAAQ,WACzB,EAAK2B,SAAS,CAACoxB,WAAYA,QAKpC,SAASC,GAAezB,GAAkB,IAAD,OAEhC3tB,EAAUtF,aAAaC,QAAQ,gBACnC,GAAyC,KAArCgzB,EAAe,oBAAiE7yB,IAArC6yB,EAAe,cAC1D,GAA2C,eAAvCA,EAAe,iBAAwCA,EAAe,gBAAsBA,EAAe,SAC3GzpB,KAAKC,MAAM2F,UAAU,eAAgB,oDACrC5F,KAAKnG,SAAS,CAAC0e,kBAAiB,SAC7B,GAA2C,aAAvCkR,EAAe,iBAAsCA,EAAe,gBAAsBA,EAAe,WAChHzpB,KAAKC,MAAM2F,UAAU,eAAgB,kEAClC,CACH,IAAI8Y,EAAwBjiB,EAA2BgtB,GACvD/K,EAAqB,eAAqB+K,EAAe,eACzDtzB,EAAcd,IAAe,mBAAoBqpB,EAAuB5iB,GAAS7D,MAAK,SAACC,GACtD,MAAzBA,EAAS0iB,aACT,EAAK3a,MAAMkrB,iBAAgB,GAC3B,EAAKlrB,MAAM2F,UAAU,gBAAgB1N,EAAS0mB,eAAe,MAC7D,EAAK/kB,SAAS,CAAC0e,kBAAiB,MAEhC,EAAKtY,MAAMkrB,iBAAgB,GAC3B,EAAKlrB,MAAM2F,UAAU,eAAe1N,EAAS0mB,eAAe,MAC5D,EAAK/kB,SAAS,CAAC0e,kBAAiB,KAEpC,EAAKtY,MAAMmrB,QAAQ3B,EAAgBvxB,UAGxC,CAEH,IAAIwmB,EAAwBjiB,EAA2BgtB,GACvD/K,EAAqB,eAAqB+K,EAAe,eACzDtzB,EAAcd,IAAe,mBAAoBqpB,EAAuB5iB,GAAS7D,MAAK,SAACC,GACtD,MAAzBA,EAAS0iB,aACT,EAAK3a,MAAMkrB,iBAAgB,GAK3B,EAAKtxB,SAAS,CAAC0e,kBAAiB,MAEhC,EAAKtY,MAAMkrB,iBAAgB,GAE3B,EAAKtxB,SAAS,CAAC0e,kBAAiB,KAEpC,EAAKtY,MAAMmrB,QAAQ3B,EAAgBvxB,MAG3C2f,YAAa,yBAA0B,IAG5C,SAASwT,GAAczX,GAAQ,IAAD,OAC7B8L,EAAY1f,KAAK6K,MACjBygB,EAAsB,GACtBC,EAAkB,GAClBC,EAAsB,GACtBC,EAAkB,GAClB3vB,EAAUtF,aAAaC,QAAQ,gBAE/B8qB,EAQA3N,EARA2N,UAAUmK,EAQV9X,EARU8X,cAAeC,EAQzB/X,EARyB+X,QAASlK,EAQlC7N,EARkC6N,OAAQvnB,EAQ1C0Z,EAR0C1Z,cAAe0xB,EAQzDhY,EARyDgY,SAAUC,EAQnEjY,EARmEiY,UACnEC,EAOAlY,EAPAkY,eAAgBC,EAOhBnY,EAPgBmY,aAAcC,EAO9BpY,EAP8BoY,cAC9BvL,EAMA7M,EANA6M,SAAUW,EAMVxN,EANUwN,gBAAiBD,EAM3BvN,EAN2BuN,mBAAoBE,EAM/CzN,EAN+CyN,eAC/CJ,EAKArN,EALAqN,kBAAmBF,EAKnBnN,EALmBmN,oBAAqBF,EAKxCjN,EALwCiN,iBAAkBD,EAK1DhN,EAL0DgN,oBAC1DE,EAIAlN,EAJAkN,gBAAiBH,EAIjB/M,EAJiB+M,mBAAoBsL,EAIrCrY,EAJqCqY,qBAAsB3L,EAI3D1M,EAJ2D0M,SAAUE,EAIrE5M,EAJqE4M,QAASZ,EAI9EhM,EAJ8EgM,WAAYsB,EAI1FtN,EAJ0FsN,cAC1FhpB,EAGA0b,EAHA1b,SAAU+nB,EAGVrM,EAHUqM,aAAcE,EAGxBvM,EAHwBuM,YAAa+L,EAGrCtY,EAHqCsY,iBAAkBC,EAGvDvY,EAHuDuY,eAAgBC,EAGvExY,EAHuEwY,QACvEC,EAEAzY,EAFAyY,qBAAuBC,EAEvB1Y,EAFuB0Y,kBAAmBC,EAE1C3Y,EAF0C2Y,kBAAmBC,EAE7D5Y,EAF6D4Y,gBAC7DC,EACA7Y,EADA6Y,gBAAgBC,EAChB9Y,EADgB8Y,WAGpB1sB,KAAKmY,gBAE+B,OAAhCuH,EAAU1lB,SAAS9B,eAA2DtB,IAAtC8oB,EAAU1lB,SAAS9B,SAASgoB,OACpEoL,EAAsB5L,EAAU1lB,SAAS9B,SAASgoB,MAClDqL,EAAkBrzB,IAGlBozB,EAAsB,KACtBC,EAAkB,MAGkB,OAApC7L,EAAU1lB,SAASimB,mBAA+DrpB,IAAtC8oB,EAAU1lB,SAAS9B,SAASgoB,OACxEsL,EAAsB9L,EAAU1lB,SAASimB,aAAaC,MACtDuL,EAAkBxL,IAGlBuL,EAAsB,KACtBC,EAAkB,MAGtB,IAAMkB,EAAiB,CACnB,gBAAmBjN,EAAU1lB,SAAS4lB,WAAWM,MAAO,mBAAsB,IAC9E,KAAQ,aAAc,mBAAsB,CACxC,oBAAuB,CAAC,CAAC,YAAegM,IACxC,gBAAmBtM,IAIrBxnB,EAAe,CACb,gBAAmBkzB,EAAqB,mBAAsB,IAC9D,KAAQ,WAAY,mBAAsB,CACtC,oBAAuB,CAAC,CAAC,UAAaa,IACtC,gBAAmBZ,IAK3BtjB,EAAW,CAAC,CACZ,mBAAsBujB,EACtB,gBAAmB9L,EAAU1lB,SAASmmB,YAAYD,MAClD,KAAQ,UAAW,mBAAsB,CACrC,sBAAyBR,EAAUU,gBACnC,uBAA0BV,EAAUkN,iBACpC,sBAAyBnB,EACzB,gBAAmBtL,IAGvB,CACI,gBAAmB,GAAI,mBAAsB,IAC7C,KAAQ,WAAY,mBAAsB,CACtC,oBAAuBT,EAAUY,SACjC,gBAAmB,KAG3BqM,EACAv0B,GAEa,KAAbkoB,IACArY,EAAS,GAAK,CACV,gBAAmByX,EAAU1lB,SAASsmB,SAASJ,MAAO,mBAAsB,IAC5E,KAAQ,WAAY,mBAAsB,CACtC,oBAAuBR,EAAUY,SACjC,gBAAmBA,KAK/B,IAAI5Y,EAAe,CACf,iBAAoD,WAA/B1H,KAAK6K,MAAM0V,gBAA+BvgB,KAAK6K,MAAMgiB,kBAAoB7sB,KAAK6K,MAAM0V,gBACzG,aAA6B,WAAbE,EAAwBqL,EAAiBrL,GAE7C,KAAZD,IACA9Y,EAAY,SAAegY,EAAU1lB,SAASwmB,QAAQN,MACtDxY,EAAY,YAAkB8Y,GAGhB,OAAfkM,IACChlB,EAAY,qBAA2BglB,GAG1B,KAAbd,IACAlkB,EAAY,UAAgBgY,EAAU1lB,SAAS4xB,SAAS1L,MACxDxY,EAAY,aAAmBkkB,GAGjB,KAAdC,IACAnkB,EAAY,WAAiBgY,EAAU1lB,SAAS6xB,UAAU3L,MAC1DxY,EAAY,cAAoBmkB,IAGR,IAAxB7rB,KAAK6K,MAAM6V,WACXhZ,EAAY,oBAA0BiZ,EACtCjZ,EAAY,qBAA2BkZ,EACvClZ,EAAY,kBAAwBmZ,EACpCnZ,EAAY,iBAAuBoZ,EACnCpZ,EAAY,sBAA4BukB,IAEhB,IAAxBjsB,KAAK6K,MAAMmW,WAIXtZ,EAAY,mBAAyBuZ,EACrCvZ,EAAY,oBAA0ByZ,EACtCzZ,EAAY,iBAAuB0Z,EACnC1Z,EAAY,gBAAsB2Z,EAClC3Z,EAAY,eAAqBwZ,EACjCxZ,EAAY,qBAA2BqZ,GAK3C,IAAM+L,EAA4B,WAAXrL,EAAsBsK,EAAetK,EAErC,mBAAnBqL,IACDplB,EAAY,uBAAuD,KAAzB2kB,EAA8B,KAAMA,EACjD,KAAzBA,GAAwD,OAAzBA,IAC/BM,EAAc,mBAAuBI,SAAkC,KAAtBT,EAA2B,KAAOA,EACnFK,EAAc,mBAAuBK,SAAkC,KAAtBT,EAA2B,KAAOA,EACnFn0B,EAAY,mBAAuB20B,SAAgC,KAApBP,EAAyB,KAAOA,EAC/Ep0B,EAAY,mBAAuB40B,SAAgC,KAApBP,EAAyB,KAAOA,IAItF,IAAInL,GAAU,CACV,UAAa9qB,aAAaC,QAAQ,WAClC,WAAc8qB,EACd,OAAUmK,EACV,QAAWU,EACX,SAAwB,WAAZT,EAAuBK,EAAgBL,EACnD,eAAkBzxB,EAClB,OAAU1D,aAAaC,QAAQ,UAC/B,cAAiBq2B,EACjB,SAAY7kB,EACZ,cAAiBP,EACjB,SAAYlR,aAAaC,QAAQ,aACjC,MAASD,aAAaC,QAAQ,YAIlC,GAA2B,kBAAvBuJ,KAAKC,MAAMyhB,QAA6B,CAGxC,IAFA,IAAIC,GAAiB3hB,KAAKC,MAAM2hB,SAC5BC,GAAYF,GAAc,SACrB5F,GAAI,EAAGA,GAAI8F,GAAU3rB,OAAQ6lB,KAClCuF,GAAQrZ,SAAS8T,IAAjB,WAAoC8F,GAAU9F,IAAV,WAExCuF,GAAO,SAAeK,GAAc,YACpCtmB,EAAgBhG,IAAe,aAAcisB,GAASxlB,GAAS7D,MAAK,SAACC,GAC3C,MAAlBA,EAAS6B,MACT,EAAKkG,MAAM2F,UAAU,gBAAiB,gCAAiC,IACvE,EAAK3F,MAAMqV,eAEX,EAAKrV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,IACvD,EAAKtV,MAAMqV,sBAInBnf,EAAcd,IAAe,YAAaisB,GAASxlB,GAAS7D,MACxD,SAACC,GACG,GAAsB,MAAlBA,EAAS6B,MAGT,GAFA,EAAKkG,MAAMkf,UACX,EAAKlf,MAAM2F,UAAU,gBAAiB,2BAA4B,SACxChP,IAAtBsB,EAASA,SAAuB,CAChC,IAEI2Q,EAAU,CAAC,YAFG3Q,EAASA,SAAT,YAEwB,YAAc,MAAO,cAD1CA,EAASA,SAAT,eAErBmhB,GAAiB,QAAS,EAAKpZ,MAAMyZ,SAAU7Q,SAGnD,EAAK5I,MAAMkf,UACX,EAAKlf,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,OAIvEsC,YAAa,uBAAwB,IAGlC,SAASoV,GAAmBrZ,GAAQ,IAAD,OAChCsZ,EAA8CtZ,EAA9CsZ,iBAAkBC,EAA4BvZ,EAA5BuZ,YAAaC,EAAexZ,EAAfwZ,WACrCptB,KAAKmY,gBACL,IAAIkV,EAAUrtB,KAAKC,MAAMgV,gBAAgBC,mBAAmBC,SACtDmY,EAAa,GACnB,GAAgB,QAAZD,GAAiC,QAAZA,EAAkB,CACvC,IAAIvxB,EAAUtF,aAAaC,QAAQ,gBAC/BoJ,EAAO,IAAI5I,KACXkC,EAAe0G,EAAKwU,iBAAmB,KAAO,KAAOxU,EAAKyU,cAAc,IAAIC,OAAO,GAAK,KAAO,IAAM1U,EAAK2U,cAAcD,OAAO,GAAK,KAC/G,IAAM1U,EAAK4U,eAAeF,OAAO,GAAK,KAAO,IAAM1U,EAAK6U,iBAAiBH,OAAO,GAAK,KAAO,IAAM1U,EAAK8U,iBAAiBJ,OAAO,GAE3H,cAA1BvU,KAAKC,MAAMuD,WACd8pB,EAAW5tB,KAAK,CAACM,KAAKC,MAAMuD,WAAY,IAAK0pB,IAG7CI,EAAW5tB,KAAK,CAACM,KAAKC,MAAMuD,WAAY,IAAK0pB,IAE7C,IAAMpY,EAAiB,CACf,YAAe9U,KAAKC,MAAMuD,WAC1B,mBAAsB,CACd,KAAQxD,KAAKC,MAAMuD,WACnB,QAAW,IACX,UAAa,UACb,eAAiB,EACjB,gBAAmBxD,KAAK6K,MAAM0iB,eAC9B,kBAAqBL,EACrB,aAAgBC,EAChB,MAASG,EACT,OAAwC,OAA7BttB,KAAK6K,MAAMmK,cAAyB,CAAC,CAAC,KAAQhV,KAAK6K,MAAMmK,cAAc1d,MAAO,MAAS81B,IAAa,GAC/G,QAAW,GACX,UAAaj0B,EACb,QAAW6G,KAAKC,MAAMgV,gBAAgBC,mBAAmBvR,QACzD,SAAY3D,KAAKC,MAAMgV,gBAAgBC,mBAAmBC,SAC1D,SAAYnV,KAAKC,MAAMgV,gBAAgBC,mBAAmBE,UAElE,OAAUpV,KAAK6K,MAAM4P,aACrB,YAAeza,KAAKC,MAAMgV,gBAAgB/Q,aAG9C,gBAAiBlE,KAAKC,MAAMgV,gBAAgBC,qBAC5CJ,EAAc,mBAAd,YAAuD9U,KAAKC,MAAMgV,gBAAgBC,mBAAmB2F,YACrG/F,EAAc,mBAAd,gBAA0D9U,KAAKC,MAAMgV,gBAAgBC,mBAAmBsY,iBAE5G,IAAM72B,EAAUH,aAAaC,QAAQ,WAErCqe,EAAc,UAAgBne,EAC9Bme,EAAc,WAAiB9U,KAAKC,MAAMoV,SAC1Cha,EAAgBhG,IAHA,uBAG0Byf,EAAgBhZ,GAAS7D,MAC3D,SAACC,QACoBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,MACpB,EAAKkG,MAAMwtB,mBAAmB,EAAK5iB,MAAM4P,cACzC,EAAKxa,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,gBAAiB,+BAAgC,MAElE,EAAK3F,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,SASxE,SAASmY,GAAyB9kB,GAAa,IAAD,OAC7C+kB,EAAY/kB,EAAW+d,GACvBiH,EAAQhlB,EAAWilB,eACnBC,EAAWllB,EAAWmlB,MACtBjyB,EAAUtF,aAAaC,QAAQ,gBAC/B0uB,EAAS3uB,aAAaC,QAAQ,WAC9BH,EAAO,CAAC,WAAaq3B,EAAU,UAAYxI,GAG/CvrB,EAAavE,IAFG,2BAEuBiB,EAAMwF,GAAS7D,MAClD,SAACC,GACG,QAAiBtB,IAAbsB,EAKJ,GAAsB,MAAlBA,EAAS6B,KAAc,CACvB,IAAIi0B,EAAU,UAAMF,EAAN,0BAAgCF,EAAhC,iCACd,EAAKK,iBAAiB,WAAYD,GAAY,EAAO,WACrD,EAAKE,2BAA2BP,OAC7B,CAEH,EAAKM,iBAAiB,SADR,qCAC2B,EAAO,eAVhD,EAAKA,iBAAiB,SAAU,6CAA6C,EAAO,aAc7F,SAASE,GAAkBC,GAAc,IAAD,OACvCtyB,EAAUtF,aAAaC,QAAQ,gBAC/B0uB,EAAS3uB,aAAaC,QAAQ,WAC9B43B,EAASD,EAAYzH,GACrBoH,EAAQK,EAAYL,MACpBO,EAAcF,EAAYP,eAE1Bv3B,EAAO,CAAC,UAAY6uB,EAAO,eAAiBkJ,GAChD/yB,EAAgBjG,IAFA,mBAE0BiB,EAAMwF,GAAS7D,MACrD,SAACC,GACG,QAAiBtB,IAAbsB,EAKJ,GAAsB,MAAlBA,EAAS6B,KAAc,CACvB,IAAIi0B,EAAU,UAAMD,EAAN,mBAAsBO,EAAtB,oCACd,EAAKruB,MAAMguB,iBAAiB,WAAYD,GAAY,EAAO,WAC3D,EAAK/tB,MAAMsuB,yBAAyBF,OACjC,CACH,IAAI9Y,EAAUrd,EAASqd,QAEvBlZ,EAAW,GAAD,OADS,oCACT,aAAqBkZ,IAC/B,EAAKtV,MAAMguB,iBAAiB,SAFT,qCAEiC,EAAM,eAZ1D,EAAKhuB,MAAMguB,iBAAiB,SAAU,qCAAqC,EAAM,aAkB1F,SAASO,GAAkBJ,GAAc,IAAD,OACvCtyB,EAAUtF,aAAaC,QAAQ,gBAC/B0uB,EAAS3uB,aAAaC,QAAQ,WAE9Bs3B,EAAQK,EAAYL,MACpBO,EAAcF,EAAYP,eAC9BO,EAAW,UAAgBjJ,EAC3B9pB,EAAgBhG,IAJA,mBAI0B+4B,EAAatyB,GAAS7D,MAC5D,SAACC,GAEO,QAAiBtB,IAAbsB,EAAJ,CAKJ,GAAsB,MAAlBA,EAAS6B,KAAc,CACvB,IAAIi0B,EAAU,UAAMD,EAAN,mBAAsBO,EAAtB,oCACd,EAAKruB,MAAMguB,iBAAiB,WAAYD,GAAY,EAAO,WAC3D,EAAK/tB,MAAMwuB,uBAAuBL,OAC/B,CAEH,EAAKnuB,MAAMguB,iBAAiB,SADd,oCACiC,EAAM,UAEzD,EAAKp0B,SAAS,CAAC60B,mBAAmB,SAZ9B,EAAKzuB,MAAMguB,iBAAiB,SAAU,qCAAqC,EAAM,aAgB1F,SAASU,GAAiBC,GAAiB,IAAD,OACzC9yB,EAAUtF,aAAaC,QAAQ,gBAC/B0uB,EAAS3uB,aAAaC,QAAQ,WAElCm4B,EAAc,UAAgBzJ,EAC9BhvB,EAAcd,IAFE,mBAEwBu5B,EAAgB9yB,GAAS7D,MAC7D,SAACC,GACG,QAAiBtB,IAAbsB,EAKJ,GAAsB,MAAlBA,EAAS6B,KAAc,CACvB,IAAI80B,EAAS32B,EAAS22B,OACtBA,EAAM,GAAS32B,EAAS+Q,kBACxB,IAAI6kB,EAAWe,EAAO3lB,UAClB0kB,EAAQiB,EAAOxlB,OACf2kB,EAAU,UAAMF,EAAN,mBAAyBF,EAAzB,kCACdiB,EAAM,UAAgBD,EAAc,aACpC,EAAK3uB,MAAMguB,iBAAiB,WAAYD,GAAY,EAAO,WAC3D,EAAK/tB,MAAM6uB,uBAAuBD,OAC/B,CAEaE,SAASC,eAAe,gBAC9BC,gBAAgB,YAC1B,EAAKhvB,MAAMguB,iBAAiB,SAHd,wEAGiC,EAAM,eAjBrD,EAAKhuB,MAAMguB,iBAAiB,SAAU,gCAAgC,EAAK,aAsBpF,SAASiB,GAAmBtb,GAAQ,IAAD,OAC9B5T,KAAKmY,gBADyB,IAEvB1C,EAAkD7B,EAAlD6B,gBAAgBD,EAAkC5B,EAAlC4B,cAAc2Z,EAAoBvb,EAApBub,iBACjCC,EAAcpvB,KAAK6K,MAAMwkB,sBAAsBnP,MAC/CpkB,EAAUtF,aAAaC,QAAQ,gBAEnC,GAAI6G,OAAOkY,KAAmBlY,OAAOmY,GAAkB,CAInD,OAFAzV,KAAKC,MAAMqV,kBACXtV,KAAKC,MAAM2F,UAAU,eAFT,mDAE8B,IAI9C,IAAMqP,EAAkBjV,KAAKC,MAAMgV,gBAC7BW,EAAYX,EAAgBY,WAC5BrS,EAAayR,EAAgBqa,YAG/Bh5B,EAAO,CACP,WAAcsf,EACd,YAAeJ,EACf,mBAAsBC,EACtB,UANSjf,aAAaC,QAAQ,WAO9B,kBAAqB04B,GAEnBrZ,EAAwC,iBAAxB9V,KAAKC,MAAM8V,SAC7BC,EAAcF,EAAgB,UAAY,UAE1CG,EAAkB,SAAC/d,GACnB,QAAiBtB,IAAbsB,EACA,EAAK+H,MAAM2F,UAAU,eAAgB,4BAA6B,SAEjE,GAAsB,MAAlB1N,EAAS6B,KAAc,CAC5B,IAAMwb,EAAO,iBAAa/R,EAAb,eAA8BwS,EAA9B,wBAAyDoZ,EAAzD,iBACb,EAAKnvB,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,gBAAiB2P,EAAS,SAG/C,EAAKtV,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,KAI/D,GAAIO,EAAe,CACf,IAAK9V,KAAKuvB,wBAAwBj5B,GAG9B,OAFA0J,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAGfhf,EAAI,OAAa2e,EAAgBiB,OACjC7a,EAAgBhG,IARO,iBAQ4BiB,EAAMwF,GAAS7D,KAC9Dge,QAIJ9f,EAAcd,IAbS,iBAa0BiB,EAAMwF,GAAS7D,KAC5Dge,GAOb,SAASuZ,GAAwB5b,GAAQ,IAAD,OACvC5T,KAAKmY,gBACL,IAAIsX,EAAqBzvB,KAAK6K,MAAMwkB,sBAChCK,EAA0B1vB,KAAK6K,MAAM8kB,oBACrCC,EAAqB5vB,KAAK6K,MAAMglB,iBACpC,GAA2B,OAAvBJ,GAA4D,OAA7BC,EAAmC,CAIlE,OAFA1vB,KAAKC,MAAMqV,kBACXtV,KAAKC,MAAM2F,UAAU,eAFT,4CAE8B,IAI9C,IAAIkqB,EAAuBL,EAAkB,MAEzCM,EAA6BL,EAAwB,MACzD,GAAIpyB,OAAOwyB,KAA0BxyB,OAAOyyB,GAA6B,CAIrE,OAFA/vB,KAAKC,MAAMqV,kBACXtV,KAAKC,MAAM2F,UAAU,eAFT,mDAE8B,IAG9C,IAAIoqB,EAAyBJ,EAAmBn2B,KAAI,SAAUw2B,GAAU,OAAOA,EAAM,SACjFhgB,EAAe,GACfigB,GAAU,EACd,GAAIF,EAAuB95B,OAAS,EAAG,CACnC,IAAIi6B,EAAcnwB,KAAK6K,MAAMulB,yBACzBJ,EAAuBjyB,SAAS,SAC/BmyB,GAAU,EAEVF,GADAA,EAAyBG,EAAY7xB,QAAO,SAAA5E,GAAC,MAAmB,QAAfA,EAAC,UACFD,KAAI,SAAUw2B,GAAU,OAAOA,EAAM,UAE1FD,EAAuBv2B,KAAI,SAAUktB,GAChC,IAAI0J,EAAmB,CACpB,WAAc1J,EACd,YAAemJ,EACf,mBAAsBC,EACtB,UAAav5B,aAAaC,QAAQ,YAGtC,OADAwZ,EAAavQ,KAAK2wB,GACX,KAIf,IAAI/5B,EAAO,CAAC,UAAaE,aAAaC,QAAQ,WAAY,aAAgBwZ,GAEtEgK,EAAe,wBACH,IAAZiW,GAAoBjgB,EAAa/Z,OAAS,EAC1C+jB,EAAY,oDACmB,IAAxBhK,EAAa/Z,SACpB+jB,EAAY,UAAM2V,EAAmB,GAAnB,MAAN,0BAGhB,IAgBI9zB,EAAUtF,aAAaC,QAAQ,gBACnCN,EAAcd,IAFa,sBAEsBiB,EAAMwF,GAAS7D,MAjB1C,SAACC,GAEnB,QAAiBtB,IAAbsB,EACA,EAAK+H,MAAM2F,UAAU,eAAgB,4BAA6B,SAEjE,GAAsB,MAAlB1N,EAAS6B,KAAc,CAC5B,IAAMwb,EAAU0E,EAChB,EAAKha,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,gBAAiB2P,EAAS,SAG/C,EAAKtV,MAAMqV,aACX,EAAKrV,MAAM2F,UAAU,eAAgB1N,EAASqd,QAAS,OAWhE,SAAS+a,GAAsBtf,GAAoB,IAAD,OACjDlV,EAAUtF,aAAaC,QAAQ,gBAC/BkO,EAASnO,aAAaC,QAAQ,WAE9B8F,EAAY,CAAC,WAAcyU,EAAkB,UAAYrM,GAE7DtJ,EAAgBhG,IADU,oBACwBkH,EAAWT,GAAS7D,MAAK,SAACiE,GAGxE,QAAYtF,IAARsF,EAMJ,OAAiB,MAAbA,EAAInC,MACJ,EAAKF,SAAS,CAACuX,UAAWJ,SAC1B,EAAK/Q,MAAM2F,UAAU,gBAAiB,uBAAwB,UAKlE,EAAK3F,MAAM2F,UAAU,eAAgB,6CAA8C,IAZ/E,EAAK3F,MAAM2F,UAAU,eAAgB,yBAA0B,OAiBpE,SAAS2qB,GAAqBrwB,EAAgBswB,GAAW,IAAD,OAC3D,QAAuB55B,IAAnBsJ,GAAmD,OAAnBA,EAAyB,CACzD,IACI5J,EAAO,CAAC4J,eAAeA,EAAgB3G,UAD9B/C,aAAaC,QAAQ,YAElCmD,EAAavE,IAAe,eAAgBiB,GAAM2B,MAAK,SAACC,GACpD,QAAiBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,SAC3B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAI2C,EAAsBxE,EAAQ,YAClC,EAAK2B,SAAS,CAAC42B,4BAA6B/zB,SAG5C,EAAK7C,SAAS,CAACC,eAAe,QAOvC,SAAS42B,GAAwBp6B,EAAMsP,GAAY,IAAD,OAC/CjB,EAASnO,aAAaC,QAAQ,WAC9BqF,EAAUtF,aAAaC,QAAQ,gBAEjCuW,EAAQ,0CAAsCrI,GAElDxO,EAAcd,IAAe2X,EAAU1W,EAAMwF,GAAS7D,MAAK,SAACC,QACvCtB,IAAbsB,EACA0N,EAAU,eAAgB,+CAAgD,IACjD,MAAlB1N,EAAS6B,MAChB,EAAKkG,MAAM0wB,sBAEP/qB,EAAU,gBAAiB1N,EAASqd,QAAS,UAKjD,EAAKtV,MAAM0wB,sBAEP/qB,EAAU,eAAgB1N,EAASqd,QAAS,YAUrD,SAASqb,GAAwBC,GAAmB,IAAD,OAElDv6B,EAAO,CAAC,UAAaE,aAAaC,QAAQ,WAAW,kBAAoBo6B,GAC7Ev1B,EAAgBjG,IAFA,uBAE0BiB,GAAM2B,MAAK,SAACC,QACzBtB,IAAbsB,EACA,EAAK2B,SAAS,CAACC,eAAe,IACL,MAAlB5B,EAAS6B,KAChB,EAAKkG,MAAM2F,UAAU,gBAAgB,4CAA4C,QAEjF,EAAK3F,MAAM2F,UAAU,eAAe,uCAAuC,OAMxF,SAASkrB,GAAyBx6B,EAAMy6B,GAAkC,IAAD,OAAdC,EAAc,wDAC5EhxB,KAAKmY,gBACL,IAAIrc,EAAUtF,aAAaC,QAAQ,gBAE/Bu6B,EACC31B,EAAgBhG,IAAe,gBAAiBiB,EAAMwF,GAAS7D,MAChE,SAACC,GAIG,GAHA,EAAK2B,SAAS,CAAC0e,kBAAkB,IACjC,EAAKtY,MAAMgxB,0BAEMr6B,IAAbsB,EAMJ,GAAsB,MAAlBA,EAAS6B,KAAb,CAOAg3B,EAAkB,gBAAiB,gCAC/B,GAAI,IAAI,GACZ,IAAI7iB,EAAgBhW,EAASgW,cACzBvN,EAAiBzI,EAASyI,eAG9B,EAAKV,MAAMixB,sBAAsBhjB,EAAevN,EAAgBqwB,QAX5DD,EAAkB,eAAgB74B,EAASqd,QAAS,GAAI,IAAI,QAN5Dwb,EAAkB,eAAgB,4BAA6B,GAAI,IAAI,MAsBnF56B,EAAcd,IAAe,gBAAiBiB,EAAMwF,GAAS7D,MACzD,SAACC,GAIG,GAHA,EAAK2B,SAAS,CAAC0e,kBAAkB,IACjC,EAAKtY,MAAMgxB,0BAEMr6B,IAAbsB,EAMJ,GAAsB,MAAlBA,EAAS6B,KAAb,CAOAg3B,EAAkB,gBAAiB,mCAC/B,GAAI,IAAI,GACZ,IAAI7iB,EAAgBhW,EAASgW,cACzBvN,EAAiBzI,EAASyI,eAG9B,EAAKV,MAAMixB,sBAAsBhjB,EAAevN,EAAgBqwB,QAX5DD,EAAkB,eAAgB74B,EAASqd,QAAS,GAAI,IAAI,QAN5Dwb,EAAkB,eAAgB,+BAAgC,GAAI,IAAI,MAsBnF,SAASI,GAAmBvd,GAAQ,IAAD,OAC9B5T,KAAKmY,gBADyB,IAEvBiO,EAA2BxS,EAA3BwS,IAAK/C,EAAsBzP,EAAtByP,SAAUtF,EAAYnK,EAAZmK,SAClBqT,EAAUpxB,KAAK6K,MAAMumB,QACzBA,EAAQhL,IAAMA,EACdgL,EAAQ/N,SAAWA,EACnB+N,EAAQrT,SAAWA,EACnB/d,KAAKnG,SAAS,CAACu3B,QAAQA,IACvB,IAAI96B,EAAO,CAAC,IAAO8vB,EAAK,SAAY/C,EAAU,SAAYtF,GAC1D5nB,EAAcd,IAAe,eAAgBiB,GAAM2B,MAAK,SAACC,GACjD,QAAiBtB,IAAbsB,EACA,EAAK+H,MAAM2F,UAAU,eAAe,sCAAsC,SACvE,GAAsB,MAAlB1N,EAAS6B,KAAc,CAC3B,IAAI0sB,EAAY,GAOhB,GALIvuB,EAASm5B,OADG,KAEX5K,EAAYvuB,EAAQ,KAASuB,KAAI,SAAU8F,GAC3B,MAAO,CAAC,MAASA,EAAG,OAAY,MAASA,EAAG,iBAGnC3I,IAA1B,EAAKqJ,MAAM4W,WAA0B,CACpC,IAAI8P,EAAK,EAAK1mB,MAAM4W,WAAW+P,cAAc0K,OACzCC,EAAe9K,EAAUnoB,QAAO,SAAA5E,GAAC,OAAIA,EAAEpC,QAAUqhB,OAAOgO,MACpD4K,EAAar7B,OAAS,GACjB,EAAK2D,SAAS,CAAC23B,IAAID,IAGrC,EAAK13B,SAAS,CAACktB,QAAQN,IACvB,EAAK5sB,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SAE1C,EAAK1e,SAAS,CAACktB,QAAS,KACxB,EAAKltB,SAAS,CAACmtB,OAAM,EAAMzO,kBAAiB,IAC5C,EAAKtY,MAAM2F,UAAU,eAAe,0BAA0B,OAOlF,SAAS6rB,GAAa7d,GAAQ,IAAD,OAC7B5T,KAAKmY,gBADwB,IAExBuZ,EAAwD9d,EAAxD8d,YAAaC,EAA2C/d,EAA3C+d,MAAOpK,EAAoC3T,EAApC2T,QAASnB,EAA2BxS,EAA3BwS,IAAK/C,EAAsBzP,EAAtByP,SAAUtF,EAAYnK,EAAZmK,SAC7CjiB,EAAUtF,aAAaC,QAAQ,gBAC/Bm7B,EAAc,CACd,UAAap7B,aAAaC,QAAQ,WAClC,sBAAyBi7B,EACzB,sBAAyB,UACzB,cACI,CACI,IAAOtL,EACP,OAASuL,EACT,QAAWpK,EACX,SAAYlE,EACZ,SAAYtF,IAKlBxH,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACD,EAAK2B,SAAS,CAACC,eAAe,IACJ,MAAlB5B,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOgsB,EAAW,sBADlB,YAC+Cpb,EAD/C,iBAEI,KAEH,EAAKvW,MAAM2F,UAAU,eAArB,oBACgB6Q,EADhB,YAC0Cmb,EAAW,uBAClD,IAERrb,GACD,EAAKtW,MAAMqmB,gBAIlB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyBib,GAG/B,OAFA5xB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDgb,EAAW,oBAA0Bhb,EACrCvb,EAAgBhG,IAFC,mBAGPu8B,EAAa91B,GAAS7D,KAAKye,QAG7BvgB,EAAcd,IAAe,mBACzBu8B,EAAa91B,GAAS7D,KAAKye,GAKxC,SAASmb,GAAgCje,GAAQ,IAAD,OAC3C5T,KAAKmY,gBADsC,IAEpCiP,EAA6CxT,EAA7CwT,YAAYC,EAAiCzT,EAAjCyT,mBAAoBC,EAAa1T,EAAb0T,UACnCwK,EAAe9xB,KAAK6K,MAAMinB,aAC9BA,EAAa1K,YAAcA,EAC3B0K,EAAazK,mBAAqBA,EAClCrnB,KAAKnG,SAAS,CAACi4B,aAAaA,IAC5B,IAAIx7B,EAAO,CAAC,kBAAqB8wB,EAAY,sBAAyBC,EACtE,gBAAmBC,GACnBnxB,EAAcd,IAAe,gBAAiBiB,GAAM2B,MAAK,SAACC,GAClD,QAAiBtB,IAAbsB,EACA,EAAK+H,MAAM2F,UAAU,eAAe,wCAAwC,SACzE,GAAsB,MAAlB1N,EAAS6B,KAAc,CAC3B,IAAI0sB,EAAY,GAQhB,GANIvuB,EAASwuB,OADG,KAEXD,EAAYvuB,EAAQ,WAAeuB,KAAI,SAAU8F,GACjC,MAAO,CAAC,MAASA,EAAG,cAAmB,MAASA,EAAG,mBAGxE,EAAK1F,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SACb3hB,IAA1B,EAAKqJ,MAAM4W,WAA0B,CACpC,IAAIuP,EAAM,EAAKnmB,MAAM4W,WAAW+P,cAAcR,IAC1C2L,EAAiBtL,EAAUnoB,QAAO,SAAA5E,GAAC,OAAIA,EAAEpC,QAAU8uB,KAC/C2L,EAAe77B,OAAS,GACnB,EAAK2D,SAAS,CAACitB,IAAIiL,IAGrC,EAAKl4B,SAAS,CAACktB,QAAQN,IACvB,EAAK5sB,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SAE1C,EAAK1e,SAAS,CAACktB,QAAS,KACxB,EAAKltB,SAAS,CAACmtB,OAAM,EAAMzO,kBAAiB,IAC5C,EAAKtY,MAAM2F,UAAU,aAAa,iCAAiC,OAMxF,SAASosB,GAAkBpe,GAAQ,IAAD,OACjC5T,KAAKmY,gBAD4B,IAE5B8Z,EAAuFre,EAAvFqe,iBAAkB7K,EAAqExT,EAArEwT,YAAaC,EAAwDzT,EAAxDyT,mBAAoBC,EAAoC1T,EAApC0T,UAAW4K,EAAyBte,EAAzBse,aAAc3K,EAAW3T,EAAX2T,QAC7EzrB,EAAUtF,aAAaC,QAAQ,gBAC/B07B,EAAgB,CAChB,UAAa37B,aAAaC,QAAQ,WAClC,sBAAyBw7B,EACzB,sBAAyB,YACzB,cACI,CACI,kBAAqB7K,EACrB,sBAAyBC,EACzB,gBAAmBC,EACnB,IAAO4K,EACP,QAAW3K,IAIjBhR,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACD,EAAK2B,SAAS,CAACC,eAAe,IACJ,MAAlB5B,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOusB,EAAa,sBADpB,YACiD3b,EADjD,iBAEI,KAEH,EAAKvW,MAAM2F,UAAU,eAArB,oBACgB6Q,EADhB,YAC0C0b,EAAa,uBACpD,IAER5b,GACD,EAAKtW,MAAMqmB,gBAIlB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyBwb,GAG/B,OAFAnyB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDub,EAAa,oBAA0Bvb,EACvCvb,EAAgBhG,IAFC,mBAGP88B,EAAer2B,GAAS7D,KAAKye,QAG/BvgB,EAAcd,IAAe,mBACzB88B,EAAer2B,GAAS7D,KAAKye,GAK1C,SAAS0b,GAAiBliB,EAAW0T,GAAc,IAAD,OAC9CjtB,EAAUH,aAAaC,QAAQ,WACnC,QAAiBG,IAAdsZ,QAA2CtZ,IAAhBgtB,IAA4C,IAAf1T,IAAqC,IAAjB0T,EAAoB,CAClG,IAAIC,EAAS,CAAC,UAAYltB,EAAS,aAAeitB,EAAa,YAAc1T,GACtEtW,EAAavE,IAAe,yBAA0BwuB,GAAS5rB,MAAK,SAACC,GACpE,QAAiBtB,IAAbsB,EACI,EAAK2B,SAAS,CAACC,eAAe,SAC/B,GAAsB,MAAlB5B,EAAS6B,KAAc,CAC9B,IAAIs4B,EAA4C,OAA7Bn6B,EAAQ,mBAA0DtB,IAA7BsB,EAAQ,cAAkCA,EAAQ,aAAiBhC,OAAS,EAAIgC,EAAQ,aAAiB,GAAI,KACjKo6B,EAAOp6B,EAAQ,UACNtB,IAAT07B,IACAA,EAAO,GAEX,IAAIC,EAAcD,EAAK91B,WAAWtG,OAE9Bo8B,EADAC,GAAe,GACPD,EAAO,KAAME,QAAQ,GAAK,OAE1BF,EAAO,KAASE,QAAQ,GAAK,MAEzC,IAAIC,EAAsD,OAAlCv6B,EAAQ,wBAAoEtB,IAAlCsB,EAAQ,mBAAuCA,EAAQ,kBAAsBhC,OAAS,EAAIgC,EAAQ,kBAAuB,KACnK,OAArBu6B,IACAA,EAAgB,eAAqBv6B,EAAQ,eAC7Cu6B,EAAgB,YAAkBv6B,EAAQ,eAE7C,EAAKw6B,6BAA6Bx6B,EAAQ,QAAY,GAAIA,EAAQ,eAClE,EAAK2B,SAAS,CACVw4B,YAAaA,EACbM,QAASz6B,EAAQ,QACjB06B,aAAc16B,EAAQ,cACtB26B,SAAU36B,EAAQ,UAClB46B,WAAY56B,EAAQ,YACpBo6B,KAAMA,EAAM50B,MAAOxF,EAAQ,MAC3Bu6B,iBAAkBA,EAClBM,WAAW,EACXC,iBAAkB96B,EAAQ,QAAY,UAG1C,EAAK2B,SAAS,CAACC,eAAe,QAO3C,SAASm5B,GAAuB/iB,EAAWkf,EAAa8D,GAAc,IAAD,OACpEv8B,EAAUH,aAAaC,QAAQ,WAEnC,QAAkBG,IAAdsZ,GAAyC,OAAdA,EAA/B,CAIA,IAAIijB,EAAa,CAAE,UAAax8B,EAAS,YAAeuZ,GAExDtW,EAAavE,IAAe,aAAc89B,GAAYl7B,MAAK,SAACC,GACxD,QAAiBtB,IAAbsB,EAKJ,GAAsB,MAAlBA,EAAS6B,KAAb,CAQA,IAFA,IAAIzD,EAAO4B,EAAQ,KACfk7B,EAAgB,GACX9zB,EAAI,EAAGA,EAAIhJ,EAAKJ,OAAQoJ,IAC7B8zB,EAAc1zB,KAAKpJ,EAAKgJ,GAAL,YAGvB,EAAKozB,6BAA6BU,EAAehE,EAAa8D,GAC9D,EAAKr5B,SAAS,CACVk5B,WAAW,EACXC,iBAAkB18B,SAdlB,EAAKuD,SAAS,CAAEC,eAAe,SAL/B,EAAKD,SAAS,CAAEC,eAAe,QAyBpC,SAASu5B,GAAoBzf,GAAQ,IAAD,OAC/B5T,KAAKmY,gBAD0B,IAExBiO,EAAyBxS,EAAzBwS,IAAI/C,EAAqBzP,EAArByP,SAAStF,EAAYnK,EAAZmK,SAChBuV,EAAWtzB,KAAK6K,MAAMyoB,SAC1BA,EAASlN,IAAMA,EACfkN,EAASjQ,SAAWA,EACpBiQ,EAASvV,SAAWA,EACpB/d,KAAKnG,SAAS,CAACy5B,SAASA,IACxB,IAAIh9B,EAAO,CAAC,IAAO8vB,EAAI,SAAY/C,EAAU,SAAWtF,GACxD5nB,EAAcd,IAAe,qBAAsBiB,GAAM2B,MAAK,SAACC,GACvD,QAAiBtB,IAAbsB,EACA,EAAK+H,MAAM2F,UAAU,eAAe,uCAAuC,SACxE,GAAsB,MAAlB1N,EAAS6B,KAAc,CAC3B,IAAI0sB,EAAY,GAOhB,GALIvuB,EAASq7B,YADG,KAEX9M,EAAYvuB,EAAQ,UAAcuB,KAAI,SAAU8F,GAChC,MAAO,CAAC,MAASA,EAAG,cAAmB,MAASA,EAAG,sBAG1C3I,IAA1B,EAAKqJ,MAAM4W,WAA0B,CACpC,IAAI8P,EAAK,EAAK1mB,MAAM4W,WAAW+P,cAAc4M,YACzCC,EAAgBhN,EAAUnoB,QAAO,SAAA5E,GAAC,OAAIA,EAAEpC,QAAUqhB,OAAOgO,MACrD8M,EAAcv9B,OAAS,GAClB,EAAK2D,SAAS,CAACuiB,SAASqX,IAG1C,EAAK55B,SAAS,CAACktB,QAAQN,IACvB,EAAK5sB,SAAS,CAACmtB,OAAM,EAAKzO,kBAAiB,SAE1C,EAAK1e,SAAS,CAACktB,QAAS,KACxB,EAAKltB,SAAS,CAACmtB,OAAM,EAAMzO,kBAAiB,IAC5C,EAAKtY,MAAM2F,UAAU,eAAe,mCAAmC,OAM5F,SAAS8tB,GAAc9f,GAAQ,IAAD,OAC7B5T,KAAKmY,gBADwB,IAExBwb,EAA0E/f,EAA1E+f,aAAcC,EAA4DhgB,EAA5DggB,WAAYrM,EAAgD3T,EAAhD2T,QAASlE,EAAuCzP,EAAvCyP,SAAUtF,EAA6BnK,EAA7BmK,SAAUqI,EAAmBxS,EAAnBwS,IAAKyN,EAAcjgB,EAAdigB,WAC7D/3B,EAAUtF,aAAaC,QAAQ,gBAC/Bq9B,EAAe,CACf,UAAat9B,aAAaC,QAAQ,WAClC,sBAAyBk9B,EACzB,sBAAyB,WACzB,cACI,CACI,IAAOvN,EACP,SAAY/C,EACZ,SAAYtF,EACZ,YAAc6V,EACd,QAAWrM,EACX,WAAcsM,IAKpBtd,EAA2C,kBAAxBvW,KAAKC,MAAM8V,SAChCS,EAA2BD,EAAmB,UAAY,QAC1DE,EAAyBF,EAAmB,SAAW,MAEvDG,EAAwB,SAACxe,QACRtB,IAAbsB,EACD,EAAK+H,MAAM2F,UAAU,eAArB,oBACsB6Q,EADtB,YACgDqd,EAAY,uBACnD,IACiB,MAAlB57B,EAAS6B,MACRwc,GACA,EAAKtW,MAAMqV,aAEf,EAAKrV,MAAM2F,UAAU,gBAArB,UACOkuB,EAAY,sBADnB,YACgDtd,EADhD,iBAEI,KAEH,EAAKvW,MAAM2F,UAAU,eAArB,oBACgB6Q,EADhB,YAC0Cqd,EAAY,uBACnD,IAERvd,GACD,EAAKtW,MAAMqmB,gBAIlB,GAAI/P,EAAkB,CACd,IAAKvW,KAAK2W,yBAAyBmd,GAG/B,OAFA9zB,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAKvB,IAAMsB,EAAsB5W,KAAKC,MAAM4W,WAAWD,oBAElDkd,EAAY,oBAA0Bld,EACtCvb,EAAgBhG,IAFC,mBAGPy+B,EAAch4B,GAAS7D,KAAKye,QAG9BvgB,EAAcd,IAAe,mBACzBy+B,EAAch4B,GAAS7D,KAAKye,GAKzC,SAASqd,GAAkBngB,GAAQ,IAAD,OACrC5T,KAAKmY,gBADgC,IAE9B5hB,EAAqBqd,EAArBrd,MAAM0yB,EAAerV,EAAfqV,YACT+K,EAAoB,CAAC,UAAax9B,aAAaC,QAAQ,WACnD,mBAAsBwyB,EACtB,mBAAsB,YACtB,eAAkB,CACd,MAAS1yB,IAGjBuF,EAAUtF,aAAaC,QAAQ,gBAC7B8rB,EAAwC,iBAAxBviB,KAAKC,MAAM8V,SAC7ByM,EAAwBD,EAAe,UAAW,QAClDE,EAAsBF,EAAe,SAAU,MAC/CG,EAAyB,SAACxqB,GACG,MAAlBA,EAAS6B,MACJwoB,GACA,EAAKtiB,MAAMqV,aAGf,EAAKrV,MAAM2F,UAAU,gBAArB,uBACoB4c,EADpB,iBAEI,KAEJ,EAAKviB,MAAM2F,UAAU,eAArB,oBACiB6c,EADjB,iBAEI,IAGJF,GACA,EAAKtiB,MAAMqmB,gBAI3B,GAAI/D,EAAc,CACd,IAAKviB,KAAK2iB,sBAAsBqR,GAGpB,OAFAh0B,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAIvB,IACI6D,EADoBnZ,KAAKC,MAAM2iB,iBAAiBC,aACb1J,iBAIvC6a,EAAiB,iBAAuB7a,EACxC9d,EAAgBhG,IAFY,gBAGhB2+B,EAAmBl4B,GAAS7D,KAAKyqB,QAExCvsB,EAAcd,IAAe,gBACtB2+B,EAAmBl4B,GAAS7D,KAAKyqB,GAM9C,SAASuR,GAAuBrgB,GAAQ,IAAD,OAC1C5T,KAAKmY,gBADqC,IAEnCiO,EAAmBxS,EAAnBwS,IAAI6C,EAAerV,EAAfqV,YACPiL,EAAyB,CAAC,UAAa19B,aAAaC,QAAQ,WACxD,mBAAsBwyB,EACtB,mBAAsB,iBACtB,eAAkB,CACd,IAAO7C,IAGftqB,EAAUtF,aAAaC,QAAQ,gBAC7B8rB,EAAwC,iBAAxBviB,KAAKC,MAAM8V,SAC7ByM,EAAwBD,EAAe,UAAW,QAClDE,EAAsBF,EAAe,SAAU,MAC/CG,EAAyB,SAACxqB,GACG,MAAlBA,EAAS6B,MACJwoB,GACA,EAAKtiB,MAAMqV,aAGf,EAAKrV,MAAM2F,UAAU,gBAArB,uBACoB4c,EADpB,iBAEI,KAEJ,EAAKviB,MAAM2F,UAAU,eAArB,oBACiB6c,EADjB,iBAEI,IAGJF,GACA,EAAKtiB,MAAMqmB,gBAI3B,GAAI/D,EAAc,CACd,IAAKviB,KAAK2iB,sBAAsBuR,GAGpB,OAFAl0B,KAAKC,MAAM2F,UAAU,aAAc,kBAAmB,SACtD5F,KAAKC,MAAMqV,aAIvB,IACI6D,EADoBnZ,KAAKC,MAAM2iB,iBAAiBC,aACb1J,iBAGvC+a,EAAsB,iBAAuB/a,EAC7C9d,EAAgBhG,IAFY,gBAGhB6+B,EAAwBp4B,GAAS7D,KAAKyqB,QAE7CvsB,EAAcd,IAAe,gBACtB6+B,EAAwBp4B,GAAS7D,KAAKyqB,K,kJCz5NpDyR,E,YACF,WAAYl0B,GAAQ,IAAD,8BACf,4CAAMA,KACDm0B,qBAAuB,EAAKA,qBAAqBzoB,KAA1B,gBAE5B,EAAKd,MAAQ,CAACwpB,aAAa,GAJZ,E,oFAQf,IAAIC,EAAe,cACY19B,IAA5BoJ,KAAKC,MAAMs0B,eACVD,EAAet0B,KAAKC,MAAMs0B,cAE9BvW,IAAete,KAAK40B,K,0CAIgB,OAA7Bt0B,KAAKC,MAAMu0B,gBAAuD,IAA7Bx0B,KAAKC,MAAMu0B,eAC3Cx0B,KAAKnG,SAAS,CAACw6B,aAAY,M,+BAKvC,IAAII,EAAa,cACbC,EAAmB,4BAQvB,YAPoC99B,IAAhCoJ,KAAKC,MAAM00B,mBACXF,EAAaz0B,KAAKC,MAAM00B,uBAGQ/9B,IAAhCoJ,KAAKC,MAAMy0B,mBACXA,EAAmB10B,KAAKC,MAAMy0B,kBAG9B,oCAIA10B,KAAK6K,MAAMwpB,YACP,kBAAC,IAAD,CACIO,UAAU,YAAYC,cAAc,OACpCC,QACA,yBAAKF,UAAU,wCACX,yBAAKA,UAAU,OACX,uBAAGA,UAAU,uBACT,kBAAC,IAAD,CAAOG,IAAI,yBAGcn+B,IAA5BoJ,KAAKC,MAAM+0B,eAA0D,IAA5Bh1B,KAAKC,MAAM+0B,aACrD,wBAAIJ,UAAU,QAAQ50B,KAAKC,MAAMsV,SAElC,oCACK,2BACKmf,GAEL,yBAAKE,UAAU,iCACX,4BAAQ1xB,KAAK,SACL+xB,QAASj1B,KAAKo0B,qBACdQ,UAAU,wBACd,2BACI,kBAAC,IAAD,CAAiBM,KAAMC,OAJ/B,KAKWV,UAUb,IAArBz0B,KAAKC,MAAMwH,MACR,kBAAC,IAAD,CACQmtB,UAAU,YAAYC,cAAc,OACpCC,QACA,yBAAKF,UAAU,wCACX,yBAAKA,UAAU,OACX,uBAAGA,UAAU,uBACT,kBAAC,IAAD,CAAOG,IAAI,oBAE/B,2BAAIL,GACJ,yBAAKE,UAAU,iCACX,4BAAQ1xB,KAAK,SACL+xB,QAASj1B,KAAKo0B,qBACdQ,UAAU,wBACd,2BACI,kBAAC,IAAD,CAAiBM,KAAMC,OAJ/B,KAKWV,QAQd,kBAAC,IAAD,W,GA9FcW,IAAMC,WAsGtBlB,O,mxDCPTmB,G,YACF,aAAe,IAAD,8BACV,+CACKC,OAAS,CACV,UAAaC,IACb,UAAaC,IACb,UAAaC,IACb,KAAQC,IACR,aAAeC,KACf,QAAUC,KACV,aAAeC,KACf,QAAUC,KACV,aAAeC,KACf,QAAUC,KACV,WAAcC,IACd,YAAeC,IACf,aAAgBC,IAChB,YAAeC,IACf,YAAeC,IACf,YAAeC,IACf,QAAWC,IACX,aAAgBC,IAChB,QAAWC,IACX,KAAQC,IACR,mBAAmBC,IACnB,QAAUC,IACV,YAAeC,IACf,WAAcC,IACd,MAAQC,IACR,MAAQpZ,IACR,UAAaqZ,IACb,cAAiBC,IACjB,iBAAoBC,KACpB,cAAiBC,KACjB,cAAiBC,KACjB,sBAAyBC,KACzB,iBAAoBC,KACpB,iBAAoBC,KACpB,gBAAmBC,KACnB,gBAAmBC,KACnB,cAAiBC,KACjB,gBAAmBC,KACnB,eAAkBC,KAClB,eAAkBC,KAClB,mBAAsBC,KACtB,gBAAkBC,KAClB,kBAAoBC,KACpB,gBAAkBC,KAClB,oBAAsBC,KACtB,eAAiBC,KACjB,kBAAoBC,KACpB,yBAA2BC,KAC3B,iBAAmBC,KACnB,oBAAsBC,KACtB,gBAAmBC,KACnB,iBAAoBC,KACpB,aAAgBC,KAChB,kBAAqBC,KACrB,4BAA+BC,KAC/B,OAAUC,KACV,QAAWC,KACX,aAAgBC,KAChB,eAAkBC,KAClB,YAAeC,KACf,eAAkBC,KAClB,gBAAmBC,KACnB,mBAAsBC,KACtB,eAAkBC,KAClB,YAAeC,KACf,iBAAoBC,KACpB,iBAAoBC,KACpB,cAAiBC,KACjB,eAAiBC,KACjB,gBAAkBC,KAClB,aAAeC,KACf,iBAAmBC,KACnB,sBAAyBC,KACzB,cAAiBC,KACjB,cAAgBC,KAChB,gBAAkBC,KAClB,sBAAyBC,KACzB,2BAA6BC,KAC7B,kBAAoBC,KACpB,gBAAkBC,KAClB,iBAAmBC,KACnB,qBAAuBC,KACvB,qBAAuBC,KACvB,yBAA2BC,KAC3B,cAAgBC,KAChB,eAAiBC,MAxFX,E,sEA6FV,OACI,yBACIC,MAAO76B,KAAKC,MAAM46B,MAClBC,OAAQ96B,KAAKC,MAAM66B,OACnBlG,UAAW50B,KAAKC,MAAM20B,UACtBG,IAAK/0B,KAAKu1B,OAAOv1B,KAAKC,MAAM80B,KAC5BgG,MAAO/6B,KAAKC,MAAM+6B,OAAQC,IAAI,S,GApG1B7F,IAAMC,WA0GXC,Q,yIC1MT4F,E,YAEJ,WAAYj7B,GAAQ,IAAD,8BACb,4CAAMA,KACDk7B,SAAW,EAAKA,SAASxvB,KAAd,gBAChB,EAAKyvB,YAAc,EAAKA,YAAYzvB,KAAjB,gBACnB,EAAKd,MAAQ,GAJA,E,2EAQLsJ,GACV,QAA4Bvd,IAAzBoJ,KAAKC,MAAMshB,UACZ,OAAOvhB,KAAKC,MAAMshB,WACd,IAAK,eACC,OAAQ,oCAAE,wBAAIqT,UAAU,aAAa50B,KAAKC,MAAMshB,WACtC,4UACA,wBAAIqT,UAAU,aAAd,kCACA,sOACA,wBAAIA,UAAU,aAAd,2CACA,8NACA,wBAAIA,UAAU,aAAd,+EACA,mLACA,wBAAIA,UAAU,aAAd,4CACA,0JACA,wBAAIA,UAAU,aAAd,mEACA,+OACA,wBAAIA,UAAU,aAAd,kCACA,wQACA,wBAAIA,UAAU,aAAd,+BACA,+HAEhB,IAAK,8BACC,OAAQ,oCAAE,wBAAIA,UAAU,aAAa50B,KAAKC,MAAMshB,WACtC,8GACA,wBAAIqT,UAAU,aAAd,kBACA,kUACA,wBAAIA,UAAU,aAAd,oBACA,mPACA,wBAAIA,UAAU,aAAd,oBACA,yIAEhB,QACM,MAAO,GAGnB,OAAOzgB,GACJ,IAAK,8BACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAazgB,GACzB,oOACA,wBAAIygB,UAAU,aAAd,SACA,mLACA,sHACA,sJACA,wBAAIA,UAAU,aAAd,iBACA,uLACA,8IACA,gKACA,+HACA,yFACA,kHACA,wBAAIA,UAAU,aAAd,QACA,sGACA,0JAGjB,IAAK,0BACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GAC3B,4FACA,wBAAIygB,UAAU,aAAd,SACA,sGACA,sHACA,sJACC,wBAAIA,UAAU,aAAd,iBACA,iMACA,2MACA,oIACA,oHACA,oJACA,yFACA,kHACA,wBAAIA,UAAU,aAAd,QACA,wGACA,0JAGhB,IAAK,4BACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GAC3B,8MACA,wBAAIygB,UAAU,aAAd,SACA,4HACA,sHACA,sJACA,wBAAIA,UAAU,aAAd,iBACA,8JACA,6NACA,8HACA,6HACA,uJACA,yFACA,kHACA,wBAAIA,UAAU,aAAd,QACA,kHACA,uJAGf,IAAK,4BACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GAC3B,qMACA,wBAAIygB,UAAU,aAAd,SACA,qGACA,sHACA,sJACA,wBAAIA,UAAU,aAAd,iBACA,yGACA,4IACA,qJACA,6MACA,yFACA,kHACA,wBAAIA,UAAU,aAAd,QACA,qGACA,0JAGf,IAAK,6CACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GAC3B,gNACA,wBAAIygB,UAAU,aAAd,SACA,0IACA,sHACA,sJACA,wBAAIA,UAAU,aAAd,iBACC,gNACA,qJACA,6OACA,2JACA,gIACA,yFACA,2HACA,wBAAIA,UAAU,aAAd,QACA,2JACA,0JAGhB,IAAK,6BACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GACzB,iPACA,wBAAIygB,UAAU,aAAd,SACA,6HACA,sHACA,sJACA,wBAAIA,UAAU,aAAd,iBACA,sKACA,qJACA,uKACA,wFACA,wJACA,yFACA,kHACA,wBAAIA,UAAU,aAAd,QACA,sHACA,0JAGjB,IAAK,iBACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GACzB,4LACA,wBAAIygB,UAAU,aAAd,SACA,0IACA,sHACA,wBAAIA,UAAU,aAAd,iBACA,gJACH,6HACA,6JACA,wFACA,+HACG,wBAAIA,UAAU,aAAd,QACA,2HACA,0JAGjB,IAAK,oBACC,OAAO,oCAAE,wBAAIA,UAAU,aAAazgB,GACzB,8GACA,sKAGjB,IAAK,gDACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAazgB,GACzB,uOACA,uSACA,iJACA,2GACA,yJAGjB,IAAK,8CACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAazgB,GACzB,wMACA,uRACA,iJACA,2GACA,yJAGjB,IAAK,4CACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAazgB,GACzB,+FACA,0SACA,iJACA,2GACA,yJAGjB,IAAK,+CACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAazgB,GACzB,oPACA,uTACA,iJACA,2GACA,yJAGjB,IAAK,8CACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAazgB,GACzB,kNACA,gGACA,qTACA,iJACA,2GACA,yJAGjB,IAAK,yCACA,OAAQ,oCAAE,wBAAIygB,UAAU,aAAazgB,GAC7B,sLACA,+RACA,2HACA,iJACA,4GAIb,IAAK,8CACF,OAAO,oCACK,wBAAIygB,UAAU,aAAazgB,GAC3B,kHACA,sHACA,iIACA,yIACA,sJAIf,IAAK,4BACC,OAAO,oCAAE,wBAAIygB,UAAU,aAAd,4BACE,mHACA,wBAAIA,UAAU,aAAd,SACA,0HACA,sHACA,sJACA,wBAAIA,UAAU,aAAd,iBACA,qLACA,+IACA,6KACA,iIACA,yFACA,kHACA,wBAAIA,UAAU,aAAd,QACA,sGACA,0JAGjB,IAAK,mBACC,O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OAC5EohB,EAA0B,CAAC,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,IAAK,MAAQ,GAAG,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,MAAQ,KAAM,MAAQ,IAAI,CAAC,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","file":"static/js/main.6cf64806.chunk.js","sourcesContent":["// App base url will be fetched from browser of ui\n\n// Patch Base URL\n//export const APP_BASE_URL = \"patch.qualdo.ai\"\n\n// Dev Base URL\n// export const APP_BASE_URL = \"dev-qualdo.eastus.cloudapp.azure.com\"\n\n\n// Instance Base URL\n// export const APP_BASE_URL = \"qdq-7b4d6f90933c.aws-qualdo.ai\"\n\n//export const APP_BASE_URL = \"qdq-db9f653aa9d4.aws-qualdo.ai\"\n\n\n// Staging Base URL\n// export const APP_BASE_URL = \"stg-qualdo.eastus.cloudapp.azure.com\"\n\nexport const APP_BASE_URL = window.location.hostname\nexport const iam_ip = APP_BASE_URL+\"/iam\"\nexport const iam_google_signup = APP_BASE_URL+\"/iam\"\nexport const ui_service_ip = APP_BASE_URL+\"/ui-api-service\"\nexport const console_ip = APP_BASE_URL+\"/console\"\n\n// Powerbi base url will be fetched from env variable.\nexport const powerbi_service_ip = process.env.REACT_APP_POWERBI_BASE_URL+\"/ui-api-service\"\n\n\n\n","import $ from \"jquery\";\nimport axios from 'axios';\nimport {browserHistory} from 'react-router';\nimport {iam_ip, ui_service_ip} from \"./ip_details\";\nimport moment from 'moment';\nimport {\n BRAIN_TREE_AUTH_TOKEN,\n chartDataCombinations,\n PROTOCOL, VALID_QUALDO_PLANS,\n QualdoPlanVersions, NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE, MAX_NOTIFICATIONS_PER_PAGE,\n IS_NONE_CHECK, MODEL_AB_TABLE_HEADERS,\n RUN_PROGRESS_STATES, RUN_SUCCESS, POWER_BI_CONNECTOR, LOCAL_STORE_KEY,\n MCF_SKIPPED,\n dataRunStatuses\n} from \"./constant\";\nimport {isEmpty} from \"lodash\";\nimport {\n getCompleteEndpoint, getProtocol, getTrimmedData,\n isPlanChanged, removeLocalStorageKeys, checkExpiryPowerBI, decryptForLocalUsage, encryptForLocalUsage\n} from \"./common_utils\";\nimport {postMixpanel} from '../mixpanel';\n// import {addFollowAttributes} from \"../redux/actions\";\nimport { normalizeChildDatasetName } from \"./attribute_name_utils\";\n\n//eslint-disable-next-line\nexport const validEmailRegex = RegExp(/^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i);\n\nexport const validateForm = (errors) => {\n let valid = true;\n Object.values(errors).forEach(\n (val) => val.length > 0 && (valid = false)\n );\n return valid;\n}\n\n\n\nexport function call_post_api(ip, end_point,data, token=localStorage.getItem(\"sessionToken\")) {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null && token !== undefined) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n }\n token = item.value;\n }\n post_api_call_cnt++;\n let protocol = getProtocol(ip);\n const reqEndPoint = getCompleteEndpoint(protocol, ip, end_point);\n return fetch(reqEndPoint, {\n method: 'POST',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':token, \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n post_api_call_complete_cnt++;\n return responseData;\n }).catch( (error) =>{\n post_api_call_complete_cnt++;\n console.error(end_point, \"- failed\")\n } \n);\n}\n/*export function call_post_api_test(ip, end_point,data, token=\"\") {\n if (token !== \"\" && token !== null) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n localStorage.removeItem('sessionToken');\n window.location = '/';\n }\n token = item.value;\n }\n return fetch(\"http:\"+'//'+ip+'/'+end_point, {\n method: 'POST',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':token }\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}*/\n\nfunction storeCachedData(data, key) {\n data[\"storage_time\"] = Date.now();\n sessionStorage.setItem(key, JSON.stringify(data));\n}\n\nfunction getCachedData(key, maxAge = 20) {\n // Max age of the cached data is given in minutes\n\n let cachedData = null;\n let cachedDetails = sessionStorage.getItem(key);\n if (cachedDetails === undefined || cachedDetails === null) {\n return cachedData;\n }\n\n let cachedObj = JSON.parse(cachedDetails);\n let storageTime = cachedObj[\"storage_time\"];\n let currentTime = new Date().getTime();\n let diffInMinutes = (currentTime - storageTime) / (1000 * 60);\n if (diffInMinutes > maxAge) {\n return cachedData;\n }\n\n return cachedObj;\n}\n\nfunction cachedIntegrationData(integrations, tenant_id) {\n if (integrations === undefined || integrations === null) {\n return;\n }\n\n let reducedIntegrations = integrations.map(x => ({\n \"integration_id\": x[\"integration_id\"],\n \"integration_name\": x[\"integration_name\"],\n \"env_id\": x[\"env_id\"]\n }));\n const integrationKey = `integrations_${tenant_id}`;\n const integrationsToCache = {\n \"integrations\": reducedIntegrations\n };\n storeCachedData(integrationsToCache, integrationKey);\n\n let data = {\"tenant_id\": tenant_id,\"grouped\": true}\n call_get_api(ui_service_ip,\"/datasets\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n const datasets = response[\"datasets\"];\n reducedIntegrations.forEach(element => {\n let integrationId = element[\"integration_id\"];\n let correspondingDatasets = datasets[integrationId];\n cacheDatasets(correspondingDatasets, tenant_id, integrationId);\n });\n }\n });\n\n\n}\n\nfunction cacheEnvironmentData(environments, tenantId) {\n const environmentKey = `environments_${tenantId}`;\n const environmentData = {\n \"environments\": environments\n };\n storeCachedData(environmentData, environmentKey)\n}\n\nfunction cacheDatasets(datasets, tenantId, integrationID) {\n const datasetKey = `datasets_${tenantId}_${integrationID}`;\n if (datasets === undefined || datasets === null){\n return;\n }\n\n\n let reducedDatasets = [];\n if (datasets.length > 0) {\n reducedDatasets = datasets.map(x => ({\n \"data_set_id\": x[\"data_set_id\"],\n \"data_set_name\": x[\"data_set_name\"]\n }));\n }\n\n const datasetInfo = {\n \"datasets\": reducedDatasets\n };\n storeCachedData(datasetInfo, datasetKey)\n}\n\nfunction cacheMlModels(mlModels, tenantId) {\n const mlModelKey = `mlModels_${tenantId}`;\n if (mlModels === undefined || mlModels === null){\n return;\n }\n\n let reducedMlModels = mlModels.map(x => ({\n \"ml_model_id\": x[\"ml_model_id\"],\n \"model_name\": x[\"model_name\"]\n }));\n const mlInfo = {\n \"mlModels\": reducedMlModels\n };\n storeCachedData(mlInfo, mlModelKey)\n}\n\nfunction getCachedModels(tenantId) {\n const mlModelKey = `mlModels_${tenantId}`;\n let modelObj = getCachedData(mlModelKey);\n if (modelObj === null) {\n return modelObj\n }\n return modelObj[\"mlModels\"];\n}\n\nfunction getCachedDatasets(tenantId, integrationID) {\n const datasetKey = `datasets_${tenantId}_${integrationID}`;\n let datasetObj = getCachedData(datasetKey);\n if (datasetObj === null) {\n return datasetObj\n }\n\n return datasetObj[\"datasets\"];\n}\n\nfunction getCachedIntegrations(tenantId) {\n const integrationKey = `integrations_${tenantId}`;\n let integrationObj = getCachedData(integrationKey);\n if (integrationObj === null) {\n return integrationObj\n }\n\n return integrationObj[\"integrations\"];\n}\n\n\nfunction getCachedEnvironments(tenantId) {\n const environmentKey = `environments_${tenantId}`;\n let environmentObj = getCachedData(environmentKey);\n if (environmentObj === null) {\n return environmentObj\n }\n\n return environmentObj[\"environments\"];\n}\n\nfunction call_update_api(ip, end_point,data, token=localStorage.getItem(\"sessionToken\")) {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null && token !== undefined) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n const reqEndPoint = getCompleteEndpoint(protocol, ip, end_point);\n return fetch(reqEndPoint, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':token,\n \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}\n\nfunction call_delete_api(ip, end_point,data={}, token=localStorage.getItem(\"sessionToken\")) {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null && token !== undefined) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n \n }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n const reqEndPoint = getCompleteEndpoint(protocol, ip, end_point);\n return fetch(reqEndPoint, {\n method: 'DELETE',\n headers:{ 'data':JSON.stringify(data),'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':token, \"userId\": user_id, \"teamId\": team_id }\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}\n\nfunction call_file_post_api(ip, end_point, form_data, token=\"\") {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n }\n token = item.value;\n }\n return axios\n .post(\n PROTOCOL+'//'+ip+'/'+end_point,\n form_data,\n { headers:\n {\n 'content-type': 'multipart/form-data',\n 'authToken':token,\n \"userId\": user_id,\n \"teamId\": team_id\n }\n }\n )\n .then(response => {\n return response[\"data\"];\n })\n .catch(error => {\n console.error('Failed');\n });\n}\n\nexport let get_api_call_cnt = 0;\nexport let get_api_call_complete_cnt = 0;\n\nexport let post_api_call_cnt = 0;\nexport let post_api_call_complete_cnt = 0;\n\n\nexport function call_get_api(ip, end_point, data, token=localStorage.getItem(\"sessionToken\")) {\n let session = localStorage.getItem('sessionToken');\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (session !== \"\" && session !== null && session !== undefined) {\n const item = JSON.parse(session);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n }\n session = item.value;\n }\n get_api_call_cnt++;\n let protocol = getProtocol(ip);\n const reqEndPoint = getCompleteEndpoint(protocol, ip, end_point);\n return fetch(reqEndPoint, {\n method: 'GET',\n headers: {\"data\": JSON.stringify(data),'Content-Type': 'application/json', 'api-type': 'qualdo_db_auth', 'authToken': session, \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n get_api_call_complete_cnt++;\n return responseData;\n }).catch((error) => {\n get_api_call_complete_cnt++;\n console.error(reqEndPoint, JSON.stringify(error));\n });\n}\n\n/*export function call_get_api_test(ip, end_point, data, token = \"\") {\n let session = localStorage.getItem('sessionToken');\n if (session !== \"\" && session !== null) {\n const item = JSON.parse(session);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n session = item.value;\n }\n\n return fetch(\"http:\"+'//' + ip + '/' + end_point, {\n method: 'GET',\n headers: {'Content-Type': 'application/json', 'api-type': 'qualdo_db_auth', 'authToken': session}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch((error) => {\n console.error(JSON.stringify(error));\n });\n}*/\nexport function postRecentSearch(searchText) {\n let session = localStorage.getItem(\"sessionToken\");\n let tenant_id = localStorage.getItem('team_id')\n let data = {\"searched_text\": searchText, \"tenant_id\": tenant_id}\n call_post_api(ui_service_ip, \"/discover_history\", data, session).then((res) => {\n\n if (res === undefined) {\n this.setState({errorOccurred: true});\n }\n });\n\n}\n\nexport function updateFollowAttributeStatus(data) {\n let session = localStorage.getItem(\"sessionToken\");\n const team_id = localStorage.getItem('team_id');\n data[\"tenant_id\"] = team_id;\n let end_point = \"update_follow_attributes\";\n call_update_api(ui_service_ip, end_point, data, session).then(\n (response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n }\n else if(response.code === 200){\n this.setState({ errorOccurred: false });\n let endPoint = \"follow_attributes\";\n call_get_api(ui_service_ip, endPoint, data).then(\n (response) =>{\n if(response.code !== undefined){\n this.setState({follow_attributes:response.follow_attributes})\n // addFollowAttributes(response.follow_attributes);\n }\n }\n )\n }\n }\n );\n}\n\nexport function postUIlogs(error, info) {\n let session = localStorage.getItem(\"sessionToken\");\n let postError = {\"ui_logs\": {\"message\": error.toString(), \"info\": info} }\n call_post_api(ui_service_ip, \"/ui_logs\", postError, session).then((res) => {\n });\n\n}\n\nexport function getDatabricksJobs() {\n let data = {\"url\":this.state.url,\"token\":this.state.token};\n if (data[\"url\"] !== '' && data[\"token\"] !== '') {\n call_post_api(ui_service_ip, \"databricks/jobs\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let optionArr = [];\n let emptyList = []\n if (response.jobs !== emptyList) {\n optionArr = response[\"jobs\"].map(function (row) {\n return {\"label\": row[\"job_name\"], \"value\": row[\"job_id\"], \"type\": row[\"task_type\"]};\n });\n }\n if (this.props.ex_details !== undefined) {\n let id = this.props.ex_details.configuration.job_id\n let databricksMatch = optionArr.filter(x => x.value === Number(id));\n if (databricksMatch.length > 0) {\n this.setState({job:databricksMatch});\n }\n }\n this.setState({options:optionArr});\n this.setState({check:true});\n } else {\n this.setState({options: []});\n this.setState({check:false});\n this.props.showToast(\"alert-info\",\"Enter the Valid Databricks\",\"\");\n }\n });\n }\n}\n\n\nfunction construct_integration_data(integration_details) {\n let default_error_storage = false;\n let integrationDetailErrStorage = integration_details[\"error_storage\"];\n if (integrationDetailErrStorage === '' || integrationDetailErrStorage === undefined) {\n default_error_storage = true;\n } else {\n integrationDetailErrStorage = integrationDetailErrStorage.trim();\n integration_details[\"error_storage\"] = integrationDetailErrStorage;\n }\n if (integration_details[\"integration_type\"] === \"azure_blob\") {\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n env_id: integration_details['env_id'],\n integration_type: integration_details[\"integration_type\"],\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"storage_name\": getTrimmedData(integration_details[\"storage_name\"]),\n \"bucket\": getTrimmedData(integration_details[\"bucket_name\"]),\n \"sub_path\": getTrimmedData(integration_details[\"sub_path\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"row_delimiter\": \"\\\\n\",\n \"column_delimiter\": \",\",\n \"filetype\": integration_details['filetype'],\n \"headers\": integration_details[\"headers\"],\n \"refresh_type\": integration_details[\"refresh_type\"],\n \"version_format\": integration_details[\"version_format\"],\n \"version_type\": integration_details[\"version_type\"],\n \"version_occurence\": integration_details[\"version_occurence\"]\n },\n auth_config: {\"secret_key\": integration_details[\"blob_secret\"]}\n }\n return integration_data;\n }\n else if (integration_details[\"integration_type\"] === \"azure_data_lake\") {\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"azure_data_lake\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"bucket\": getTrimmedData(integration_details[\"bucket_name\"]),\n \"sub_path\": getTrimmedData(integration_details[\"sub_path\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"row_delimiter\": \"\\\\n\",\n \"column_delimiter\": \",\",\n \"filetype\": integration_details['filetype'],\n \"headers\": integration_details[\"headers\"],\n \"refresh_type\": integration_details[\"refresh_type\"],\n \"version_format\": integration_details[\"version_format\"],\n \"version_type\": integration_details[\"version_type\"],\n \"version_occurence\": integration_details[\"version_occurence\"]\n },\n auth_config: {\n \"tenant_id\": integration_details[\"adl_tenant_id\"],\n \"adl_client_id\": integration_details[\"adl_client_id\"],\n \"secret_key\": integration_details['secret_key']\n }\n }\n return integration_data;\n }\n else if (integration_details[\"integration_type\"] === \"azure_synapse_ds\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"azure_synapse_ds\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"database_name\": getTrimmedData(integration_details[\"database_name\"]),\n \"schema\": getTrimmedData(integration_details[\"schema\"]),\n \"synapse_table_name\": getTrimmedData(integration_details[\"synapse_table_name\"]),\n \"synapse_sql_host\": getTrimmedData(integration_details[\"synapse_sql_host\"]),\n \"created_time\": createdTime,\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n },\n auth_config: {\n \"synapse_user\": integration_details['synapse_user'],\n \"synapse_password\": integration_details['synapse_password'],\n }\n }\n return integration_data;\n }\n else if(integration_details[\"integration_type\"] === \"s3\"){\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: integration_details[\"integration_type\"],\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"storage_name\": getTrimmedData(integration_details[\"storage_name\"]),\n \"bucket\": getTrimmedData(integration_details[\"bucket_name\"]),\n \"sub_path\": getTrimmedData(integration_details[\"sub_path\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"row_delimiter\": \"\\\\n\",\n \"column_delimiter\": \",\",\n \"filetype\": integration_details['filetype'],\n \"headers\": integration_details[\"headers\"],\n \"refresh_type\": integration_details[\"refresh_type\"],\n \"version_format\": integration_details[\"version_format\"],\n \"version_type\": integration_details[\"version_type\"],\n \"version_occurence\": integration_details[\"version_occurence\"]\n },\n auth_config: {\"secret_access_key\": integration_details[\"secret_access_key\"],\n \"access_key\": integration_details[\"access_key\"]}\n }\n return integration_data;\n }\n else if (integration_details[\"integration_type\"] === \"redshift\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n isFirstIntegration: integration_details[\"isFirstIntegration\"],\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"redshift\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"host_url\": getTrimmedData(integration_details[\"host_url\"]),\n \"database_name\": getTrimmedData(integration_details[\"database_name\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"schema_name\": getTrimmedData(integration_details[\"schema_name\"]),\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n },\n auth_config: {\n \"user_name\": integration_details[\"user_name\"],\n \"password\": integration_details['password'],\n }\n }\n return integration_data;\n }\n else if (integration_details[\"integration_type\"] === \"snow_flake\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"snow_flake\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"url\": getTrimmedData(integration_details[\"url\"]),\n \"database\": getTrimmedData(integration_details[\"database\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"schema\": getTrimmedData(integration_details[\"schema\"]),\n \"ware_house\": getTrimmedData(integration_details[\"ware_house\"]),\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n\n },\n auth_config: {\n \"tenant_id\": integration_details[\"tenant_id\"],\n \"user\": integration_details[\"user\"],\n \"password\": integration_details['password']\n }\n }\n return integration_data;\n } else if (integration_details[\"integration_type\"] === \"big_query\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"big_query\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"schema\": getTrimmedData(integration_details[\"schema\"]),\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"json_file_name\": getTrimmedData(integration_details[\"json_file\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n\n },\n auth_config: integration_details[\"json\"]\n }\n return integration_data;\n } else if (integration_details[\"integration_type\"] === \"postgresql\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"postgresql\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"host_url\": getTrimmedData(integration_details[\"host_url\"]),\n \"database_name\": getTrimmedData(integration_details[\"database_name\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"schema_name\": getTrimmedData(integration_details[\"schema_name\"]),\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n },\n auth_config: {\n \"user_name\": integration_details[\"user_name\"],\n \"password\": integration_details['password']\n }\n }\n return integration_data;\n }else if (integration_details[\"integration_type\"] === \"mysql\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"mysql\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"host\": getTrimmedData(integration_details[\"host\"]),\n \"database\": getTrimmedData(integration_details[\"database\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n },\n auth_config: {\n \"user\": integration_details[\"user\"],\n \"password\": integration_details['password']\n }\n }\n return integration_data;\n }else if (integration_details[\"integration_type\"] === \"azure_sql\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"azure_sql\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"host\": getTrimmedData(integration_details[\"host\"]),\n \"database\": getTrimmedData(integration_details[\"database\"]),\n \"schema\": getTrimmedData(integration_details[\"schema\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n },\n\n auth_config: {\n \"user\": integration_details[\"user\"],\n \"password\": integration_details['password']\n }\n }\n return integration_data;\n }else if (integration_details[\"integration_type\"] === \"gcp_sql\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: \"gcp_sql\",\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"host\": getTrimmedData(integration_details[\"host\"]),\n \"database\": getTrimmedData(integration_details[\"database\"]),\n \"schema\": getTrimmedData(integration_details[\"schema\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n\n },\n\n auth_config: {\n \"user\": integration_details[\"user\"],\n \"password\": integration_details['password']\n }\n }\n return integration_data;\n }else if (integration_details[\"integration_type\"] === \"gcs\") {\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n // env_id: localStorage.getItem(\"env_id\"),\n env_id: integration_details['env_id'],\n integration_type: integration_details[\"integration_type\"],\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"bucket\": getTrimmedData(integration_details[\"bucket_name\"]),\n \"sub_path\": getTrimmedData(integration_details[\"sub_path\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"row_delimiter\": \"\\\\n\",\n \"column_delimiter\": \",\",\n \"filetype\": integration_details['filetype'],\n \"headers\": integration_details[\"headers\"],\n \"refresh_type\": integration_details[\"refresh_type\"],\n \"version_format\": integration_details[\"version_format\"],\n \"version_type\": integration_details[\"version_type\"],\n \"version_occurence\": integration_details[\"version_occurence\"],\n \"json_file_name\": getTrimmedData(integration_details[\"json_file\"]),\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n\n },\n auth_config: integration_details[\"json\"]\n }\n return integration_data;\n }else if (integration_details[\"integration_type\"] === POWER_BI_CONNECTOR) {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n isFirstIntegration: integration_details[\"isFirstIntegration\"],\n tenant_id: localStorage.getItem('team_id'),\n env_id: integration_details['env_id'],\n integration_type: POWER_BI_CONNECTOR,\n data_store_type: integration_details[\"data_store_type\"],\n integration_config: {\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"workspace\": getTrimmedData(integration_details[\"workspace\"]),\n \"database\": getTrimmedData(integration_details[\"database\"]),\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"created_time\": createdTime,\n },\n auth_config: {\n \"user_name\": integration_details[\"user_name\"],\n \"password\": integration_details['password'],\n }\n }\n return integration_data;\n }\n else if (integration_details[\"integration_type\"] === \"azure_databricks_table\") {\n let createdTime = integration_details[\"created_time\"];\n if (createdTime === undefined || createdTime === null ||\n String(createdTime).trim().length === 0) {\n createdTime = undefined;\n }\n let integration_data = {\n integration_name: getTrimmedData(integration_details[\"integration_name\"]),\n tenant_id: localStorage.getItem('team_id'),\n env_id: integration_details['env_id'],\n integration_type: \"azure_databricks_table\",\n data_store_type: integration_details[\"data_store_type\"], \n integration_config: {\n \"host\": getTrimmedData(integration_details[\"host\"]),\n \"http_path\": getTrimmedData(integration_details[\"http_path\"]),\n \"catalog\": getTrimmedData(integration_details[\"catalog\"]),\n \"table\": getTrimmedData(integration_details[\"table\"]),\n \"schema\": getTrimmedData(integration_details[\"schema\"]),\n \"error_storage\": integrationDetailErrStorage,\n \"default_error_storage\": default_error_storage,\n \"table_name\": getTrimmedData(integration_details[\"table_name\"]),\n \"filetype\": integration_details['filetype'],\n \"created_time\": createdTime,\n \"partitions\":integration_details[\"partitions\"],\n \"table_names\":integration_details[\"table_names\"],\n \"datasetToBeProcessed\":integration_details[\"datasetToBeProcessed\"]\n },\n auth_config: {\n \"secret_key\": integration_details['secret_key']\n }\n }\n\n return integration_data;\n } \n\n\n}\n\nfunction constructTestMlModelConnection(modelForm) {\n let datasets = [];\n let features = modelForm.features;\n for (let k = 0; k < features.length; k++) {\n let baselineDataset = features[k].base_line_data_set;\n let targetDataset = features[k].target_data_set;\n datasets.push(baselineDataset);\n datasets.push(targetDataset);\n }\n return datasets;\n\n}\n\n\nfunction mobile_validate(mobile_number) {\n const reg = /^[0]?[789]\\d{9}$/;\n if (reg.test(mobile_number) === false) {\n return false;\n } else {\n return true\n }\n}\n\n\nexport const countErrors = (errors) => {\n let count = 0;\n Object.values(errors).forEach(\n (val) => val.length > 0 && (count = count+1)\n );\n return count;\n}\n\nexport function formFieldChange(event) {\n event.preventDefault();\n const { value } = event.target;\n let error_msg = validEmailRegex.test(value) ? '' : 'Email is not valid!';\n let errors = this.state.errors\n errors.email_error = error_msg\n this.setErrorData(errors)\n}\n\n\nexport function handleBlur(event) {\n event.preventDefault();\n const { name, value } = event.target;\n let errors = this.state.errors;\n switch (name) {\n case 'email':\n if (value.length > 0)\n errors.email = validEmailRegex.test(value) ? '' : 'Email is not valid!';\n break;\n case 'username':\n errors.username = value.length < 6 && value.length > 0 ? 'Username should not be less than 6 characters' : '';\n break;\n case 'company':\n errors.company = value.length < 1 ? 'Company name should not be empty' : '';\n break;\n case 'password':\n errors.password = value.length < 8 && value.length > 0 ? 'Password should not be less than 8 characters' : '';\n break;\n case 'confirmPassword':\n if (this.state.password.localeCompare(value) && value.length > 7) {\n errors.confirmPassword = 'Does not matched with the password';\n } else {\n errors.confirmPassword = '';\n }\n break;\n case \"adminEmail\":\n if (value.length > 0)\n errors.adminEmail = validEmailRegex.test(value) ? '' : 'Email is not valid!';\n break;\n case 'phone':\n errors.phone = mobile_validate(value) ? '' : 'Please Enter valid phone number' ;\n break;\n default:\n break;\n }\n this.setState({errors, [name]: value});\n}\n\nexport function handleChange(event) {\n event.preventDefault();\n const { name, value } = event.target;\n let errors = this.state.errors;\n switch (name) {\n case 'email':\n if (validEmailRegex.test(value))\n errors.email = ''\n break;\n case 'username':\n if (value.length > 5)\n errors.username =''\n break;\n case 'company':\n if (value.length > 2)\n errors.company =''\n break;\n case 'password':\n if (value.length > 7)\n errors.password =''\n break;\n case 'confirmPassword':\n if (this.state.password.localeCompare(value) && value.length > 7) {\n errors.confirmPassword = 'Does not matched with the password';\n } else {\n errors.confirmPassword = '';\n }\n break;\n case 'phone':\n if (value.length === 10)\n errors.phone =''\n break;\n default:\n break;\n }\n this.setState({\n integration_data: {\n [name]: value\n }\n })\n this.setState({errors, [name]: value});\n}\n\nexport function handleIntegrationChange(event) {\n event.preventDefault();\n const { name, value } = event.target;\n let integration_data = this.state.integration_data;\n integration_data[name] = value;\n this.props.setIntegrationData(integration_data)\n}\n\nexport function handleMetricChange(event) {\n event.preventDefault();\n const { name, value } = event.target;\n let metric_data = this.state.metric_data;\n metric_data[name] = value;\n this.setMetricData(metric_data)\n}\n\nexport function getErrorMsg(errorText, statusCode) {\n\n if (statusCode !== dataRunStatuses[\"failed\"] && statusCode !== dataRunStatuses[\"skipMcf\"]) \n {\n return \"-\"\n }\n if(errorText.includes(\"Error in reading the source dataset\") ) {\n return \"Error in connecting to the configured data source\"\n }else if(errorText.includes(\"'NoneType' object has no attribute 'get'\")){\n return \"Unexpected error occurred in our backend. Kindly report it using Help Desk\"\n } else if(errorText.includes(\"float division by zero\")){\n return \"Unexpected error occurred in our backend. Kindly report it using Help Desk\"\n } else if(errorText.includes(\"An error occurred while calling o283.count.\")) {\n return \"Error while processing the configured dataset.Could be due to unexpected/invalid values in the dataset or incorrect format of the dataset\"\n } else if(errorText.includes(\"size exceeds\")){\n return errorText;\n } else if(errorText.includes(\"New data not found for current run\")) {\n return \"There is no changes between previous and current dataset\"\n } else if(errorText.includes(\"No data to compute. Total number of updated rows is 0\")) {\n return \"No data to compute. Total number of updated rows is 0\"\n } else if (errorText.includes(\"could not convert string \")) {\n return \"Processing error occurred in our backend. Kindly report it using Help Desk\"\n } else if (errorText.includes(\"Cluster Not Started. run_status_code is 401\")) {\n return \"Insufficient Resource Quota or API to start the cluster is not available.\"\n } else if (errorText.includes(\"Incorrect Starting Index found\")) {\n return \"Starting Index value not found/Incorrect Datatype for Starting Index.\"\n } else if (errorText.includes(\"Computation Failed due to cluster terminated\")){\n return \"Unexpected error encountered. Kindly report it using Help Desk.\"\n }\n\n else {\n return \"Unexpected error occurred in our backend. Kindly report it using Help Desk\"\n }\n\n}\n\nfunction getDatasourceDiscovery(datasetProcessing, lastDiscoveryTime, status_text=undefined) {\n if (datasetProcessing === undefined) {\n datasetProcessing = [];\n }\n\n if (status_text !== undefined && status_text === NO_DATA_SET_FOUND_TEXT) {\n // Fix for issue - 1333\n // No datasets present in the configured data source. So we will show process as completed\n return [\"Completed\", lastDiscoveryTime, \"text-success\", 100];\n }\n\n let inCompleteFilteredValues = datasetProcessing.filter(x => (x.run_status_code === DEFAULT_METRICS_RUN_FAILURE))\n if (inCompleteFilteredValues.length > 0) {\n return [\"Incomplete\", lastDiscoveryTime, \"text-danger\", 70]\n } \n\n let skipMcfFFilteredValues = datasetProcessing.filter(x => (x.run_status_code === MCF_SKIPPED))\n if (skipMcfFFilteredValues.length > 0) {\n return [\"Incomplete\", lastDiscoveryTime, \"text-danger\", 70];\n }\n\n let inProgressFilteredValues = datasetProcessing.filter(x => (RUN_PROGRESS_STATES.includes(x.run_status_code)))\n if (inProgressFilteredValues.length > 0) {\n return [\"In Progress\", lastDiscoveryTime, \"text-warning\", 30];\n } \n\n let completedFilteredValues = datasetProcessing.filter(x => (x.run_status_code === RUN_SUCCESS))\n if (completedFilteredValues.length > 0) {\n return [\"Completed\", lastDiscoveryTime, \"text-success\", 100];\n }\n return [\"Not Yet Started\", lastDiscoveryTime, \"text-warning\", 0];\n}\n\n\nfunction getModelProcessStatus(datasetProcessing, lastDiscoveryTime, modelCreatedTime) {\n if (datasetProcessing === undefined) {\n datasetProcessing = [];\n }\n\n let inCompleteFilteredValues = datasetProcessing.filter(x =>\n (x.run_status_code === DEFAULT_METRICS_RUN_FAILURE));\n\n if (inCompleteFilteredValues.length > 0) {\n return [\"Incomplete\", lastDiscoveryTime, \"text-danger\", 70]\n } else {\n let inProgressFilteredValues = datasetProcessing.filter(x => (RUN_PROGRESS_STATES.includes(x.run_status_code)))\n let modelCreatedAt = new Date(modelCreatedTime).getTime();\n let last_profiled_time = new Date(lastDiscoveryTime).getTime();\n if (inProgressFilteredValues.length > 0 || modelCreatedAt > last_profiled_time) {\n return [\"In Progress\", lastDiscoveryTime, \"text-warning\", 30];\n } else {\n let completedFilteredValues = datasetProcessing.filter(x => (x.run_status_code === RUN_SUCCESS))\n if (completedFilteredValues.length > 0) {\n return [\"Completed\", lastDiscoveryTime, \"text-success\", 100];\n }\n return [\"Not Yet Started\", lastDiscoveryTime, \"text-warning\", 0];\n }\n\n }\n}\n\n\nfunction model_updates_table(inputData) {\n let headers=[\"Model\", \"Summary\", \"Profile Status\", \"Datasets\", \"Errors\"];\n let final_op=[];\n for(let i=0; i < inputData.length; i++) {\n let row=[];\n let d = inputData[i];\n let count = d[\"dataset_count\"];\n let lastDiscoveryTime = getLastDiscovery(d[\"dataset_processing_info\"])\n row.push({\"value\": d[\"model_name\"], \"type\": \"td\"});\n row.push({\"value\": count, \"type\": \"summary\"});\n row.push({\"value\": getModelProcessStatus(d[\"dataset_processing_info\"],lastDiscoveryTime, d[\"created_time\"]), \"type\": \"datasetDiscovery\"});\n row.push({\"value\": d, \"type\": \"datasets\"});\n row.push({\"value\": d, \"type\": \"errors\"});\n final_op.push(row);\n }\n let table_data ={\"headers\": headers, \"data\": final_op};\n return table_data;\n}\n\nfunction getLastDiscovery(lastProcessingTimeList) {\n let max_run_end_time = '';\n if (lastProcessingTimeList === undefined){\n lastProcessingTimeList = [];\n }\n\n if(lastProcessingTimeList.length > 0) {\n max_run_end_time = lastProcessingTimeList[0][\"run_end_time\"]\n lastProcessingTimeList.map(function (row) {\n var date = new Date(row[\"run_end_time\"]);\n var maxDate = new Date(max_run_end_time);\n if (row[\"run_end_time\"] !== null && date > maxDate ) {\n max_run_end_time = row[\"run_end_time\"]\n\n }\n return 1;\n\n });\n\n }\n return max_run_end_time\n\n}\n\n\nexport function getProgressPercentage() {\n const teamId = localStorage.getItem('team_id');\n let data = {\"tenant_id\":teamId, \"integration_id\": this.props.integration_id}\n let endPoint = \"dataset_progress_info\";\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n this.setState({progressStatus: response[\"progress_percentage\"]});\n\n }\n });\n\n}\n\n\n\n\nfunction datasource_updates_table(datasource_updates) {\n let headers=[\"Datasource Name\", \"Summary\", \"Profile Status\", \"Datasets\", \"Errors\"];\n let final_op=[];\n let refreshInfoFinal=[];\n if (datasource_updates === undefined){\n datasource_updates = [];\n }\n\n for(let i=0; i < datasource_updates.length; i++) {\n let row=[];\n let refreshInfo=[];\n let d = datasource_updates[i];\n let total = d[\"dataset_processing_info\"].length;\n let status_text = d[\"status_text\"];\n let lastDiscoveryTime = getLastDiscovery(d[\"last_run_time\"])\n row.push({\"value\": d['datasource_name'], \"type\": \"td\"});\n row.push({\"value\": total, \"type\": \"summary\"});\n row.push({\"value\": getDatasourceDiscovery(d[\"dataset_processing_info\"],lastDiscoveryTime, status_text), \"type\": \"datasetDiscovery\"});\n row.push({\"value\": d, \"type\": \"datasets\"});\n row.push({\"value\": d, \"type\": \"errors\"});\n refreshInfo.push({\"integration_id\":d['integration_id'], 'lastRefreshTime':lastDiscoveryTime})\n final_op.push(row);\n refreshInfoFinal.push(refreshInfo)\n }\n\n let table_data ={\"headers\": headers, \"data\": final_op,\"lastRefreshTime\":refreshInfoFinal};\n return table_data;\n}\n\n\nfunction get_model_ab_row_data(ab_data, model_data, model_data_2, model_data_3) {\n let row_data = [];\n\n if (IS_NONE_CHECK.includes(model_data) || IS_NONE_CHECK.includes(model_data_2)) {\n return null;\n }\n\n const ml_model_id = model_data[\"ml_model_id\"];\n const abAuthor = ab_data[\"created_by\"];\n const abCreatedTime = ab_data[\"created_time\"];\n const model_ab_id = ab_data[\"model_ab_id\"];\n\n const names = [model_data[\"model_name\"], model_data_2[\"model_name\"]];\n const modelVersions = [model_data[\"version\"], model_data_2[\"version\"]];\n const datasourceNames = [model_data[\"integration_name\"], model_data_2[\"integration_name\"]];\n const envNames = [model_data[\"env_name\"], model_data_2[\"env_name\"]];\n\n let has3Models = false;\n if (!IS_NONE_CHECK.includes(model_data_3)) {\n has3Models = true;\n names.push(model_data_3[\"model_name\"]);\n modelVersions.push(model_data_3[\"version\"]);\n datasourceNames.push(model_data_3[\"integration_name\"]);\n envNames.push(model_data_3[\"env_name\"]);\n }\n\n row_data.push(names);\n row_data.push(modelVersions);\n row_data.push(datasourceNames);\n row_data.push(envNames);\n row_data.push({\"value\": abAuthor, \"has3Models\": has3Models});\n row_data.push({\"value\": abCreatedTime, \"has3Models\": has3Models});\n\n let viewData = {\n \"has3Models\": has3Models,\n 'model_ab_id': model_ab_id, 'order': \"A\",\n \"ml_model_id\": ml_model_id\n };\n\n row_data.push(viewData);\n\n return row_data;\n}\n\n\nexport function prepare_model_ab_data_for_a_config(ab_config, model_info_map) {\n let model_1 = ab_config[\"model_1\"];\n let model_data_1 = model_info_map[String(model_1)];\n\n let model_2 = ab_config[\"model_2\"];\n let model_data_2 = model_info_map[String(model_2)];\n\n let model_3 = ab_config[\"model_3\"];\n let model_data_3 = null;\n if (!IS_NONE_CHECK.includes(model_3)) {\n model_data_3 = model_info_map[String(model_3)];\n }\n\n const abRowData = get_model_ab_row_data(ab_config, model_data_1, model_data_2, model_data_3);\n return abRowData;\n}\n\n\nfunction prepare_model_ab_table_data(ab_data, model_info_map) {\n if (ab_data === undefined || ab_data === null || model_info_map === undefined) {\n return {\"headers\": MODEL_AB_TABLE_HEADERS, \"data\": [], \"not_sortable\": true}\n }\n\n let final_op = [];\n\n for (let i = 0; i < ab_data.length; i++) {\n let ab_config = ab_data[i];\n const res = prepare_model_ab_data_for_a_config(ab_config, model_info_map);\n if (IS_NONE_CHECK.includes(res)) {\n continue;\n }\n\n final_op.push(res);\n }\n\n let table_data = {\"headers\": MODEL_AB_TABLE_HEADERS, \"data\": final_op, \"not_sortable\": true};\n return table_data;\n}\n\nfunction customMetricsProcessUpdates(customMetricsInfo) {\n let headers=[\"Metric Name\", \"Metric Associations\", \"Dataset Name\", \"Datasource Name\", \"Profile Status\",\n \"Refresh Status\", \"Errors\"];\n let final_op=[];\n if (customMetricsInfo === undefined){\n customMetricsInfo = [];\n }\n\n for(let i=0; i < customMetricsInfo.length; i++) {\n let row=[];\n let d = customMetricsInfo[i];\n row.push({\"value\": d['metric_name'], \"type\": \"metric\"});\n row.push({\"value\": d['mas_name'], \"type\": \"masName\"});\n row.push({\"value\": normalizeChildDatasetName(d['data_set_name']), \"type\": \"dataset\"});\n row.push({\"value\": d['datasource_name'], \"type\": \"datasource\"});\n let status_value = [];\n if (d['status_code'] === 1) {\n status_value = [\"Completed\", d['modified_time'], \"text-success\", 100]\n } else if (d['status_code'] === -1) {\n \tstatus_value = [\"Inprogress\", d['modified_time'], \"text-danger\", 70]\n } else if (d['status_code'] === 2){\n status_value = [\"Inqueue\", d['modified_time'], \"text-danger\", 0]\n }\n else {\n status_value = [\"Incomplete\", d['modified_time'], \"text-success\", 70]\n }\n row.push({\"value\": status_value, \"type\": \"status\"});\n row.push({\"value\": [d['success_count'], d['failed_count']], \"type\": \"refresh\"});\n row.push({\"value\": d, \"type\": \"errors\"});\n final_op.push(row);\n }\n\n let table_data ={\"headers\": headers, \"data\": final_op};\n return table_data;\n}\n\nexport function getStatus(statusCode) {\n if (statusCode === 200 || statusCode === 201){\n this.setState({textColor:\"text-warning\"})\n return \"In Progress\"\n }else if(statusCode === DEFAULT_METRICS_RUN_FAILURE){\n this.setState({textColor:\"text-danger\"})\n return \"Failed\"\n }else if(statusCode === 0) {\n this.setState({textColor:\"text-warning\"})\n return \"In Queue\"\n }else if(statusCode === 1) {\n return \"Completed\"\n }else{\n this.setState({textColor:\"text-danger\"})\n return \"Failed\"\n }\n}\n\nfunction integration_table_data_setup(input_data) {\n let headers=[\"Environment\", \"Datasource\", \"Datasource Type\", \"Schema Learning Status\", \"Created Date\", \"Actions\"];\n let final_op=[];\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n let d= input_data[i];\n row.push({\"value\": d[\"env_name\"], \"type\": \"td\"});\n row.push({\"value\": d['integration_name'], \"type\": \"td\"});\n row.push({\"value\": d['integration_type'], \"type\": \"td\"});\n row.push({\"value\": d['discovery_status'], \"type\": \"td\"});\n row.push({\"value\": d['created_time'], \"type\": \"td\"});\n row.push({\"value\": \"\", \"type\": \"component\", \"integration_data\":d});\n final_op.push(row);\n }\n let table_data ={\"headers\": headers, \"data\": final_op};\n return table_data;\n}\n\nfunction mlTableDataSetup(input_data) {\n let headers = [\"Model\", \"Datasource\", \"Environment\", \"Created By\", \"Created Time\", \"ML type\", \"Model Version\", \"Actions\"];\n let finalOp = [];\n for (let i = 0; i < input_data.length; i++) {\n let row = [];\n let d = input_data[i];\n row.push({ \"value\": d[\"model_name\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"integration_name\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"env_name\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"author\"], \"type\": \"td\" });\n row.push({ \"value\": d['created_time'], \"type\": \"td\" });\n row.push({ \"value\": d['ml_model_type'], \"type\": \"td\" });\n row.push({ \"value\": d['version'], \"type\": \"td\" });\n row.push({ \"ml_model_data\": d, \"type\": \"component\" });\n finalOp.push(row);\n }\n let tableData = { \"headers\": headers, \"data\": finalOp };\n return tableData;\n}\n\nfunction pipeline_table(input_data){\n let headers=[\"Pipeline Channel Name\", \"Pipeline Channel Type\",\"URL\", \"Created by\", \"Created Date\", \"Actions\"];\n let final_op=[];\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n const pipeline_data = input_data[i];\n let d= pipeline_data[\"configuration\"]\n row.push({\"value\": pipeline_data[\"pipeline_trigger_name\"], \"type\": \"td\"})\n row.push({\"value\": pipeline_data[\"pipeline_trigger_type\"], \"type\": \"td\"})\n row.push({\"value\": d[\"url\"], \"type\": \"td\"})\n row.push({ \"value\": localStorage.getItem('user_name'), \"type\": \"td\" });\n row.push({ \"value\": pipeline_data['created_time'], \"type\": \"td\" });\n row.push({\"consume\": pipeline_data, \"type\": \"component\"})\n final_op.push(row)\n }\n let table_data ={\"headers\": headers, \"data\": final_op}\n return table_data;\n}\nfunction alert_table(input_data) {\n let headers=[\"Alert Name\",\"Alert Type\", \"Created by\", \"Created Date\", \"Actions\"];\n let final_op=[];\n\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n const alert_data = input_data[i];\n row.push({\"value\": alert_data[\"alert_name\"], \"type\": \"td\"})\n row.push({\"value\": alert_data[\"alert_type\"], \"type\": \"td\"})\n row.push({ \"value\": localStorage.getItem('user_name'), \"type\": \"td\" });\n row.push({ \"value\": alert_data['created_time'], \"type\": \"td\" });\n row.push({\"alert\": alert_data, \"type\": \"component\"})\n final_op.push(row)\n }\n return {\"headers\": headers, \"data\": final_op};\n\n}\n\nfunction consume_group_table(input_data) {\n let headers=[\"Notification Name\", \"Notification Type\", \"Created by\", \"Created Date\", \"Actions\"];\n let final_op=[];\n\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n const consume_data = input_data[i];\n row.push({\"value\": consume_data[\"consume_group_name\"], \"type\": \"td\"})\n row.push({\"value\": consume_data[\"consume_group_type\"], \"type\": \"td\"})\n row.push({ \"value\": localStorage.getItem('user_name'), \"type\": \"td\" });\n row.push({ \"value\": consume_data['created_time'], \"type\": \"td\" });\n row.push({\"consume\": consume_data, \"type\": \"component\"})\n final_op.push(row)\n }\n\n return {\"headers\": headers, \"data\": final_op};\n}\n\nfunction DQM_metric_setup(type, input_data) {\n let headers=[\"Metric Name\", \"Metric Type\", \"Created Date\", \"Metric Definition\", \"Visibility\", \"Actions\"]\n let final_op=[]\n for(let i=0; i < input_data.length; i++) {\n let row=[]\n let d= input_data[i]\n row.push({\"value\": d['metric_name'], \"type\": \"td\"})\n row.push({\"value\": d['metric_type'], \"type\": \"td\"})\n row.push({\"value\": d['created_time'], \"type\": \"td\"})\n row.push({\"value\": JSON.stringify(d['metrics_definition']), \"type\": \"td\"})\n row.push({\"value\": \"My team\", \"type\": \"td\"})\n row.push({\"value\": \"\", \"type\": \"component\"})\n final_op.push(row)\n }\n let table_data ={\"headers\": headers,\n \"data\": final_op}\n return table_data;\n}\n\nfunction construct_card_data(input_data) {\n let final_op = [];\n for (let i = 0; i < input_data.length; i++) {\n let d = input_data[i]\n if (d['metric_type'] !== \"quality_gate\") {\n const cardName = d['metric_name'];\n final_op.push({\n \"metric_name\": cardName,\n \"metric_type\": d['metric_type'],\n \"metrics_id\": d[\"metrics_id\"]\n })\n }\n }\n return final_op;\n}\n\nfunction get_table_data(mas, team_id) {\n const endPoint = \"metricsassociation/metrics\";\n let masData = {\"mas_id\":mas[\"mas_id\"], \"tenant_id\":team_id};\n return call_get_api(ui_service_ip, endPoint,masData).then( (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let metrics = response['metrics'];\n let finalOp=[];\n for (let i=0; i< metrics.length; i++) {\n let d = metrics[i];\n const metricsDefinition = d['metrics_definition'];\n const metricName = d['metric_name'];\n const jobId = d['job_id'];\n const isTemplate = (jobId !== undefined && jobId !== null);\n if (d['metric_type'] === \"UDF\" || isTemplate) {\n let row = [];\n let formula = metricsDefinition['formula'];\n if (typeof formula === \"object\") {\n formula = formula[\"type\"];\n }\n\n row.push({\"value\": metricName, \"type\": \"td\"})\n row.push({\"value\": mas[\"mas_name\"], \"type\": \"td\"})\n row.push({\"value\": localStorage.getItem('user_name'), \"type\": \"td\"});\n row.push({\"value\": d[\"created_time\"], \"type\": \"td\"})\n row.push({\"value\": metricsDefinition['version'], \"type\": \"td\"})\n row.push({\"value\": formula, \"type\": \"td\"})\n row.push({\"value\": \"\", \"type\": \"component\", \"metrics_data\": d})\n finalOp.push(row)\n }\n }\n\n let data = {\"table_data\":finalOp, \"metrics\":metrics}\n return data\n } else {\n this.setState({errorOccurred: true});\n }\n });\n}\n\n\nfunction get_data(mas, team_id) {\n const endPoint = \"metricsassociation/metrics\";\n let masData = {\"mas_id\":mas[\"mas_id\"], \"tenant_id\":team_id};\n return call_get_api(ui_service_ip, endPoint,masData).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let card_data = construct_card_data(response.metrics);\n let obj = {\n \"mas_name\": mas[\"mas_name\"],\n \"mas_id\": mas[\"mas_id\"],\n \"metric_data\": card_data\n };\n return obj\n } else {\n if (this === undefined) {\n return;\n }\n this.setState({errorOccurred: true});\n }\n });\n}\n\nasync function DQM_widget_setup(type, input_data, team_id) {\n let metric_type = null;\n if (type === \"dq\") {\n metric_type = \"dqm\";\n } else {\n metric_type = \"mlm\"\n }\n const promises = [];\n for(let i=0; i < input_data.length; i++) {\n let d= input_data[i];\n if ( d['mas_type'] === metric_type) {\n let result = await Promise.resolve(get_data(d, team_id));\n promises.push(result);\n }\n }\n return promises;\n}\n\nasync function fill_table(input_data, team_id) {\n let headers = [\"Metric Name\", \"Metric Associations\", \"Created By\",\"Created Date\", \"Version\", \"Dimenstion\",\"Type of Formula\", \"Actions\"];\n let final_op = [];\n let metrics_details = {};\n for(let i=0; i < input_data.length; i++) {\n let d= input_data[i];\n let result = await Promise.resolve(get_table_data(d, team_id));\n metrics_details[d[\"mas_id\"]] = result[\"metrics\"];\n final_op = [...final_op, ...result[\"table_data\"]];\n }\n let table_data = {\"headers\": headers,\n \"data\": final_op,\n \"metric_details\":metrics_details}\n return table_data;\n}\n\n\nexport function getProfileMLChart(integrationId, teamId){\n let session = localStorage.getItem(\"sessionToken\");\n let startDate = moment().subtract(60, 'days').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n //this.setState({startDate: startDate, endDate:endDate});\n let reqData = {\n \"data_source\": [integrationId],\n \"tenant_id\": teamId,\n \"payload_start_time\":startDate,\n \"payload_end_time\": endDate\n };\n const endPoint = \"ml/relationship/all\";\n call_post_api(ui_service_ip, endPoint, reqData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else if (res.code === 200) {\n //const chartData = {\"metrics\": res[\"metrics\"]};\n //this.setRelationship(res[\"relationships\"], res[\"attributes\"], chartData, selectedSource, res['models'], res[\"meta_data\"]);\n }\n });\n}\n\n\nfunction getProfileMLData(integrations, teamId, session){\n if(integrations.length === 0){\n return;\n }\n\n let firstIntegration = integrations[0];\n let integrationId = firstIntegration['integration_id'];\n let selectedDataSrcName = firstIntegration[\"integration_name\"];\n let selectedSource = {\"label\": selectedDataSrcName, \"value\": integrationId};\n let startDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n this.setState({startDate: startDate, endDate:endDate});\n let reqData = {\n \"data_source\": [integrationId],\n \"tenant_id\": teamId,\n \"payload_start_time\":startDate,\n \"payload_end_time\": endDate\n };\n const endPoint = \"profile/ml/charts/\"\n call_post_api(ui_service_ip, endPoint, reqData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else if (res.code === 200) {\n const chartData = {\"metrics\": res[\"metrics\"]}\n this.setRelationship(res[\"relationships\"], res[\"attributes\"], chartData, selectedSource, res['models'], res[\"meta_data\"]);\n }\n });\n}\n\nfunction callProfileAPI(requestData, session, selectedSource, context, pageLoad) {\n const endPoint = \"profile/charts/latest\";\n call_post_api(ui_service_ip, endPoint, requestData, session).then((res) => {\n if (res === undefined) {\n context.setState({errorOccurred: true});\n } else if (res.code === 200) {\n const chartData = {\"metrics\": res[\"metrics\"]};\n context.setRelationship(res[\"relationships\"], res[\"attributes\"], chartData, selectedSource, res['datasets'], res[\"meta_data\"]);\n if (pageLoad !== \"firstLoad\") {\n context.showToast(\"alert-success\",\"Filter added successfully\",'');\n }\n } else if(res.code === 401) {\n context.showToast(\"alert-danger\",\"could not add Filter\",'');\n } else if(res.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n }\n });\n}\n\nexport function profileFilterSubmit(data, startDate, endDate, selectedSource) {\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n if (startDate !=null && endDate !=null) {\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n } else {\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n }\n data[\"integrations\"] = data[\"data_source\"];\n data[\"tenant_id\"] = teamId;\n let fetchLastProfilingTime = getLastDQProfilingTime.bind(this);\n fetchLastProfilingTime(data[\"data_source\"][0]);\n callProfileAPI(data, session, selectedSource, this, \"filterLoad\");\n}\n\nexport function profileDropdownFilterSubmit(data, startDate, endDate, selectedDataSrcName) {\n let session = localStorage.getItem(\"sessionToken\");\n let fetchLastProfilingTime = getLastDQProfilingTime.bind(this);\n if (startDate !== null && endDate !== null) {\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n } else {\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n }\n\n let integrationId = data[\"data_source\"][0];\n fetchLastProfilingTime(integrationId);\n let selectedSource = {\"label\": selectedDataSrcName, \"value\": integrationId};\n const teamId = localStorage.getItem('team_id');\n let reqData = {\n \"integrations\": [integrationId],\n \"tenant_id\": teamId,\n \"payload_start_time\":startDate,\n \"payload_end_time\": endDate\n };\n callProfileAPI(reqData, session, selectedSource, this, \"filterLoad\");\n}\n\nfunction getProfileData(integrations, teamId, session){\n if (integrations.length === 0) {\n return;\n }\n\n let firstIntegration = integrations[0];\n let integrationId = firstIntegration['integration_id'];\n let selectedDataSrcName = firstIntegration[\"integration_name\"];\n let selectedSource = {\"label\": selectedDataSrcName, \"value\": integrationId};\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n this.setState({startDate: startDate, endDate:endDate});\n let reqData = {\n \"integrations\": [integrationId],\n \"tenant_id\": teamId,\n \"payload_start_time\":startDate,\n \"payload_end_time\": endDate\n };\n callProfileAPI(reqData, session, selectedSource, this, \"firstLoad\");\n}\n\nfunction getLastDQProfilingTime(integrationId){\n let endPoint = \"metrics_store_payload_created_time\";\n let data = {\"integration_id\":integrationId}\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastProfilingTime: results[0][\"last_processed_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n}\n\nfunction getLastMLProfilingTime(mlMOdelId){\n let endPoint = \"metrics_store_payload_created_time?ml_model_id=\" + mlMOdelId;\n call_get_api(ui_service_ip, endPoint).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n}\n\nexport function setMlModel(mlModel, key, title, startDate, endDate) {\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n let chartInputData = {\n \"tenant_id\": teamId,\n \"level\": \"all\",\n \"ml_model_id\": mlModel[\"value\"],\n \"metrics_id\": null,\n \"result_type\": \"chart\"\n }\n\n if (startDate !=null && endDate !=null) {\n chartInputData[\"payload_start_time\"] = startDate;\n chartInputData[\"payload_end_time\"] = endDate;\n } else {\n startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n chartInputData[\"payload_start_time\"] = startDate;\n chartInputData[\"payload_end_time\"] = endDate;\n }\n\n let firstmlModelId = mlModel[\"value\"];\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time?ml_model_id=\" + firstmlModelId).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n\n call_post_api(ui_service_ip, \"monitor/charts\", chartInputData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setSelectedModelData(res, key, title, mlModel, startDate, endDate);\n }\n });\n}\n\nexport function setModelPerformanceData(mlModel, key, title, startDate, endDate) {\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n\n let chartInputData = {\n \"ml_model_ids\": [mlModel[\"value\"]],\n \"cross_chart_data\": chartDataCombinations\n }\n\n // if (startDate !=null && endDate !=null) {\n // chartInputData[\"payload_start_time\"] = startDate;\n // chartInputData[\"payload_end_time\"] = endDate;\n // } else {\n // startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n // endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n // chartInputData[\"payload_start_time\"] = startDate;\n // chartInputData[\"payload_end_time\"] = endDate;\n // }\n\n let firstmlModelId = mlModel[\"value\"];\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time?ml_model_id=\" + firstmlModelId).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"]});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n\n const perfResEndPoint = `model_performance/results?tenant_id=${teamId}`;\n call_post_api(ui_service_ip, perfResEndPoint, chartInputData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n }\n else {\n let performanceResults = res[\"results\"];\n this.setSelectedModelData(performanceResults, key, title, mlModel,\n startDate, endDate);\n }\n });\n}\n\n\n\nfunction setMonitorChartsForMlModel(models, teamId, session) {\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n if (models.length > 0) {\n let firstModel = models[0];\n let mlModelId = firstModel['ml_model_id']\n let chartInputData = {\n \"tenant_id\": teamId,\n \"level\": \"all\",\n \"ml_model_id\": mlModelId,\n \"metrics_id\": null,\n \"result_type\": \"chart\",\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate\n }\n call_post_api(ui_service_ip, \"monitor/charts\", chartInputData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setAvailableModelsAndChartData(models, res, {\"label\": firstModel[\"model_name\"], \"value\": mlModelId}, startDate, endDate);\n }\n });\n }\n}\n\nfunction setPerformanceChartsForMlModel(models, teamId, session) {\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n if (models.length > 0) {\n let firstModel = models[0];\n let mlModelId = firstModel['ml_model_id']\n let chartInputData = {\n \"ml_model_ids\": [mlModelId],\n \"cross_chart_data\": chartDataCombinations\n }\n const perfResEndPoint = `model_performance/results?tenant_id=${teamId}`;\n call_post_api(ui_service_ip, perfResEndPoint, chartInputData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n }\n else {\n let performanceResults = res[\"results\"];\n this.setAvailableModelsAndChartData(models, performanceResults,\n {\n \"label\": firstModel[\"model_name\"],\n \"value\": mlModelId\n },\n startDate,\n endDate);\n }\n });\n }\n}\n\nfunction setMonitorChartDataForIntegrations(allIntegrations, teamId, session) {\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n\n if (allIntegrations.length > 0) {\n let firstIntegration = allIntegrations[0];\n let integrationId = firstIntegration['integration_id']\n let chartInputData = {\n \"tenant_id\": teamId,\n \"env_id\": null,\n \"integration_ids\": [integrationId],\n \"data_set_ids\": null,\n \"mas_id\": null,\n \"metrics_id\": null,\n \"level\": \"all\",\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate,\n \"integration_id\": [integrationId]\n }\n\n call_post_api(ui_service_ip, \"monitor/charts\", chartInputData, session).then((res_1) => {\n if (res_1 === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setChartData(res_1, allIntegrations, {\"label\": firstIntegration[\"integration_name\"],\"value\": integrationId}, startDate, endDate);\n }\n });\n\n\n let datasets = getCachedDatasets(teamId, integrationId)\n if (datasets !== null) {\n this.setAvailableDataSets(datasets, null, \"\", {\"label\": firstIntegration[\"integration_name\"],\"value\": integrationId})\n return;\n }\n// let endPoint = `datasets?tenant_id=${teamId}&integration_id=${integrationId}`;\n call_get_api(ui_service_ip, \"/datasets\" , chartInputData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else {\n const datasets = res[\"datasets\"];\n this.setAvailableDataSets(datasets, null, \"\", {\"label\": firstIntegration[\"integration_name\"],\"value\": integrationId});\n cacheDatasets(datasets, teamId, integrationId);\n }\n });\n }\n}\n\nfunction getModelDatasets(model) {\n let modelDetails = model.model_details;\n let datasets = []\n if(modelDetails.model_data_id !== undefined && modelDetails.model_data !== undefined) {\n datasets.push({\"label\":modelDetails.model_data, \"value\":modelDetails.model_data_id });\n }\n if(modelDetails.raw_data !== undefined && modelDetails.raw_data_id !== undefined) {\n datasets.push({\"label\":modelDetails.raw_data, \"value\":modelDetails.raw_data_id })\n }\n if(modelDetails.test_data !== undefined && modelDetails.test_data_id !== undefined) {\n datasets.push({\"label\":modelDetails.test_data, \"value\":modelDetails.test_data_id })\n }\n let features = model.features;\n if(features.length > 0) {\n let model_info_details = features[0][\"model_info_details\"]\n datasets.push({\"label\": features[0][\"base_line_data_set\"], \"value\": model_info_details[\"base_line_data_set_id\"], \"type\": null})\n datasets.push({\"label\": features[0][\"target_data_set\"], \"value\": model_info_details[\"target_data_set\"], \"type\": features[0][\"type\"]})\n model_info_details = features[2][\"model_info_details\"]\n datasets.push({\"label\": features[2][\"target_data_set\"], \"value\": model_info_details[\"target_data_set\"], \"type\": features[2][\"type\"]})\n model_info_details = features[3][\"model_info_details\"]\n datasets.push({\"label\": features[3][\"target_data_set\"], \"value\": model_info_details[\"target_data_set\"], \"type\": features[3][\"type\"]})\n if(features[1][\"target_data_set\"] !== \"\") {\n model_info_details = features[1][\"model_info_details\"]\n datasets.push({\"label\": features[1][\"target_data_set\"], \"value\": model_info_details[\"target_data_set\"], \"type\": features[1][\"type\"]})\n }\n }\n let jsonObject = datasets.map(JSON.stringify);\n let uniqueSet = new Set(jsonObject);\n datasets = Array.from(uniqueSet).map(JSON.parse);\n\n return datasets\n\n}\n\nexport function setIntegrationDetails(integration_details){\n let dataSources = [];\n\t\tif(integration_details !== undefined && integration_details.length > 0) {\n dataSources = integration_details.map(function(row) {\n return {\"value\":row['integration_id'], \"label\": row[\"integration_name\"], \"env_id\":row[\"env_id\"]};\n });\n\t\t}\n this.setState({dataSources: dataSources,\n integration_details: integration_details,\n });\n}\n\nexport function getPaymentDetailsTableData(cardData) {\n let allPaymentDetails = [];\n if (cardData === undefined || cardData === null) {\n return allPaymentDetails;\n }\n\n for (let card of cardData) {\n let cardDetail = card.details;\n let requiredCardData = {\n \"customerName\": cardDetail.cardholder_name,\n \"isPrimary\": card.is_default === 1,\n \"id\": card.payment_detail_id,\n \"brand\": cardDetail.card_type,\n \"expires\": `${String(cardDetail.expiration_month)}/${cardDetail.expiration_year % 100}`,\n \"lastFourDigits\": cardDetail.last_4,\n };\n allPaymentDetails.push(requiredCardData);\n }\n\n return allPaymentDetails;\n}\n\nexport function getBillingAddressDetails(addressDetails) {\n let reqAddressDetails = {};\n if (addressDetails === undefined || addressDetails === null) {\n return reqAddressDetails;\n }\n for (let data of addressDetails) {\n let billingAddress = data.details;\n reqAddressDetails[data.billing_address_id] = billingAddress;\n }\n\n return reqAddressDetails;\n}\n\nexport function getBillingHistoryTableData(billingData) {\n let headers = [\"Order ID\", \"Plan\", \"Billing Date\",\n \"Card Number\", \"Amount\", \"Status\", \"Receipt\"];\n let billingTableRows = [];\n\n let billingTableData = {\n \"headers\": headers,\n \"data\": billingTableRows\n };\n\n if (billingData === undefined || billingData === null) {\n return billingTableData;\n }\n let index = 0;\n for (let billing of billingData) {\n let rowData = [];\n let billingDetail = billing.details;\n rowData.push({\"value\": billing.order_id, \"type\": \"td\"});\n rowData.push({\"value\": `Qualdo ${billingDetail.plan_title}`, \"type\": \"td\"});\n // rowData.push({\"value\": \"Aug 4, 2020\", \"type\": \"td\"});\n rowData.push({\"value\": `${billing.created_time}`, \"type\": \"td\"});\n rowData.push({\"value\": `**** ${billingDetail.last_4}`, \"type\": \"td\"});\n rowData.push({\"value\": `${billing.currency_symbol}${billing.amount}`, \"type\": \"td\"});\n\n // \"03 Aug 2021\",\n let addOnDetail = {\n \"nextDate\": `${billing.next_payment_date}`,\n \"showTooltip\": index === 0,\n }\n\n addOnDetail[\"billing_address_id\"] = billing.billing_address_id;\n rowData.push({\"value\": \"\", \"billingDetails\": addOnDetail, \"type\": \"billingComponent\"});\n rowData.push({\"value\": billing, \"type\": \"td\"});\n billingTableRows.push(rowData);\n index = index + 1;\n }\n\n return billingTableData;\n}\n\n\nexport function getApi(api_name, details={}) {\n const team_id= localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n let data = {\"tenant_id\": team_id }\n switch(api_name) {\n case \"dataset\":\n call_get_api(ui_service_ip, \"/datasets\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.setState({datasets:response['datasets']});\n call_get_api(ui_service_ip, \"/metadatas\", data).then((res_1) =>{\n if (res_1 === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setState({attributes: res_1[\"meta_data\"]});\n }\n })\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"data_set\":\n call_get_api(ui_service_ip, \"/datasets\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let details = {...this.state.details};\n details.data_set = response['datasets'];\n call_get_api(ui_service_ip, \"/metadatas\",data).then((res_1) =>{\n if (res_1 === undefined) {\n this.setState({errorOccurred: true});\n } else {\n details.attributes = res_1[\"meta_data\"];\n this.setState({details})\n }\n })\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n\n case \"alert_details\":\n call_get_api(ui_service_ip, \"/datasets\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let details = {...this.state.details};\n details.data_set = response['datasets'];\n call_get_api(ui_service_ip, \"consume_group\", data).then((res_1) =>{\n if(res_1 === undefined){\n this.setState({errorOccurred: true});\n this.setState({details})\n return;\n }\n details.consume_group = res_1[\"consume_group\"];\n this.setState({details})\n })\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"trigger\":\n let notificationResponse = [];\n let pipelineResponse = [];\n call_get_api(ui_service_ip, \"consume_group\", data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n notificationResponse = response.consume_group;\n this.setState({notificationOptions:notificationResponse});\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n call_get_api(ui_service_ip, \"pipeline_trigger\", data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n pipelineResponse = response.pipeline_trigger;\n this.setState({pipelineOptions:pipelineResponse});\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n\n break;\n case \"get_alerts_for_tenants\":\n data[\"mas_type\"] = \"dq\";\n call_get_api(ui_service_ip, \"alert\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res = alert_table(response.alerts);\n this.setState({alertsDataDq:res})\n } else {\n this.setState({errorOccurred: true});\n }\n });\n data[\"mas_type\"] =\"ml\";\n call_get_api(ui_service_ip, \"alert\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res = alert_table(response.alerts);\n this.setState({alertsDataMl:res})\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n\n case \"consume_group\":\n call_get_api(ui_service_ip, \"consume_group\", data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res=consume_group_table(response.consume_group);\n this.setState({data:res})\n this.setState({notification_title:\"AVAILABLE NOTIFICATIONS\"})\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n break;\n\n case \"pipeline_trigger\":\n call_get_api(ui_service_ip, \"pipeline_trigger\", data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res=pipeline_table(response.pipeline_trigger);\n this.setState({pipeline_data:res})\n this.setState({pipeline_title:\"AVAILABLE PIPELINE TRIGGERS\"})\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n break;\n case \"monitor_ml_charts\":\n let setMlMonitor = setMonitorChartsForMlModel.bind(this);\n let mlModels = getCachedModels(team_id);\n if (mlModels !== null) {\n setMlMonitor(mlModels, team_id, session);\n let firstmlModelId = mlModels[0][\"ml_model_id\"];\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time?ml_model_id=\" + firstmlModelId).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false})\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n\n return\n } else {\n call_get_api(ui_service_ip, \"/ml-models/list\", data, session).then((mlRes) => {\n if (mlRes === undefined) {\n this.setState({errorOccurred: true});\n } else if(mlRes.code === 200) {\n const mlModels = mlRes[\"response\"];\n let firstmlModelId = mlModels[0][\"ml_model_id\"];\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time?ml_model_id=\" + firstmlModelId).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false})\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n setMlMonitor(mlModels, team_id, session);\n cacheMlModels(mlModels, team_id);\n }\n });\n }\n break;\n case \"modelPerformance\":\n {\n let setMlModelPerformance = setPerformanceChartsForMlModel.bind(this);\n let mlModels = getCachedModels(team_id);\n if (mlModels !== null) {\n setMlModelPerformance(mlModels, team_id, session);\n let firstmlModelId = mlModels[0][\"ml_model_id\"];\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time?ml_model_id=\" + firstmlModelId).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"]\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage : false});\n }\n\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n return;\n } else {\n call_get_api(ui_service_ip,\"/ml-models/list\",data, session).then((mlRes) => {\n if (mlRes === undefined) {\n this.setState({errorOccurred: true});\n } else if(mlRes.code === 200) {\n const mlModels = mlRes[\"response\"];\n let firstmlModelId = mlModels[0][\"ml_model_id\"];\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time?ml_model_id=\" + firstmlModelId).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"payload_created_time\"], isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n setMlModelPerformance(mlModels, team_id, session);\n cacheMlModels(mlModels, team_id);\n }\n });\n }\n }\n\n break;\n case \"monitor_charts\":\n let setMonitor = setMonitorChartDataForIntegrations.bind(this);\n let cachedIntegrations = getCachedIntegrations(team_id);\n if (cachedIntegrations !== null && cachedIntegrations.length > 0) {\n let firstCachedIntegrationId = cachedIntegrations[0][\"integration_id\"];\n data[\"integration_id\"] = firstCachedIntegrationId;\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time\",data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"last_processed_time\"],isSuccessMessage: true});\n } else{\n this.setState({isSuccessMessage: false});\n }\n\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n setMonitor(cachedIntegrations, team_id, session);\n return;\n }\n data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n const integrations = response['integrations'];\n if(integrations !==null && integrations.length > 0){\n\n let integrationId = integrations[0][\"integration_id\"];\n data[\"integration_id\"] = integrationId;\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"last_processed_time\"]});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n\n }\n\n setMonitor(integrations, team_id, session);\n cachedIntegrationData(integrations, team_id);\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n })\n break;\n case \"profile_cards_and_charts\":\n let fetchProfileData = getProfileData.bind(this);\n let fetchLastProfilingTime = getLastDQProfilingTime.bind(this);\n let integrations = getCachedIntegrations(team_id);\n if (integrations !== null && integrations.length > 0) {\n this.setIntegrationDetails(integrations);\n fetchProfileData(integrations, team_id, session);\n let firstCachedIntegrationId = integrations[0][\"integration_id\"];\n fetchLastProfilingTime(firstCachedIntegrationId);\n break;\n }\n data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\",data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let integrations = response['integrations'];\n fetchProfileData(integrations, team_id, session);\n this.setIntegrationDetails(integrations);\n let firstCachedIntegrationId = integrations[0][\"integration_id\"];\n fetchLastProfilingTime(firstCachedIntegrationId);\n if (integrations.length > 0) {\n cachedIntegrationData(integrations, team_id);\n }\n }\n });\n break;\n case \"profile_ml_filter\":\n let fetchProfileMLData = getProfileMLData.bind(this);\n let ml_integrations = getCachedIntegrations(team_id);\n if (ml_integrations !== null && ml_integrations.length > 0) {\n fetchProfileMLData(ml_integrations, team_id, session);\n break;\n }\n data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let ml_integrations = response['integrations'];\n if (ml_integrations.length > 0) {\n cachedIntegrationData(ml_integrations, team_id);\n fetchProfileMLData(ml_integrations, team_id, session);\n }\n }\n });\n break;\n case \"profile_cards_filter\":\n let req_datasets = this.state.filter_data[\"dataset\"]\n if (req_datasets === null || req_datasets === undefined || req_datasets.length === 0){\n return\n }\n\n let chart_input_data ={ \"tenant_id\": team_id,\n \"env_id\": null,\n \"integration_ids\": null,\n \"data_set_ids\": [req_datasets[0]],\n \"mas_id\": null,\n \"metrics_id\": null\n }\n call_post_api(ui_service_ip, \"metrics/charts\", chart_input_data, session).then((res_1) =>{\n this.setChartData(res_1)\n });\n break\n case \"getMetrics\":\n call_get_api(ui_service_ip, \"metricsassociation\").then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n DQM_widget_setup(\"dq\", response.metrics_association, team_id).then((res) => {\n let details = {...this.state.details};\n details.dqMetrics=res;\n this.setState({details});\n });\n DQM_widget_setup(\"ml\", response.metrics_association, team_id).then((res) => {\n let details = {...this.state.details};\n details.mlMetrics=res;\n this.setState({details});\n });\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"checkConsistency\":\n let consistencyEndPoint = \"check_consistency\";\n call_get_api(ui_service_ip, consistencyEndPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else {\n let isConsistencyEnabled = response.is_consistency_enabled;\n this.setState({isConsistencyEnabled:isConsistencyEnabled});\n if (response.code === 200){\n this.setState({enabledMetrics:response[\"enabled_metrics\"]});\n }\n }\n\n });\n break;\n\n case \"completeMetricInfo\":\n const endPoint = \"metrics/all\";\n call_get_api(ui_service_ip, endPoint, data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let data = response.data;\n if (data === undefined || data === null){\n return;\n }\n\n let dqmData = data.dqm;\n let mlmData = data.mlm;\n this.setState({\n dqmData: dqmData,\n mlmData: mlmData\n });\n }\n else {\n\n }\n });\n break;\n\n case \"metricsassociation\":\n call_get_api(ui_service_ip, \"metricsassociation\").then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n DQM_widget_setup(this.state.details.page, response.metrics_association,\n team_id).then((res) => {\n if(res.length > 0) {\n if(this.state.details.page === \"dq\")\n {\n this.setState({dqm_card_data:res});\n }else if (this.state.details.page === \"ml\")\n {\n this.setState({mlm_card_data:res});\n }\n fill_table(res, team_id).then((res_1) => {\n let details = {...this.state.details};\n details.data[this.state.details.page] = res_1;\n details.card_data = res;\n this.setState({details});\n if (this.state.details.page === \"dq\") {\n let dqmData = this.state.dqm_card_data;\n const all_metric_details = res_1[\"metric_details\"];\n for (let i = 0; i < dqmData.length; i++) {\n let dqmDataValue = dqmData[i];\n if (dqmDataValue === undefined || dqmDataValue === null) {\n continue;\n }\n const dqmDataElement = dqmDataValue[\"metric_data\"];\n for (let j = 0; j < dqmDataElement.length; j++) {\n const curr_mas_id = dqmDataValue[\"mas_id\"];\n dqmDataElement[j][\"metric_def\"] = all_metric_details[curr_mas_id][j];\n }\n }\n this.setState({dqm_card_data: dqmData});\n }\n else if (this.state.details.page === \"ml\") {\n let mlmData = this.state.mlm_card_data;\n for (let i = 0; i < mlmData.length; i++) {\n let mlDataValue = mlmData[i];\n if (mlDataValue === undefined || mlDataValue === null) {\n continue;\n }\n for (let j = 0; j < mlDataValue[\"metric_data\"].length; j++) {\n mlDataValue[\"metric_data\"][j][\"metric_def\"] = res_1[\"metric_details\"][mlDataValue[\"mas_id\"]][j];\n }\n\n }\n this.setState({mlm_card_data: mlmData});\n }\n });\n }\n });\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"environments\":\n let environments = getCachedEnvironments(team_id);\n if (environments !== null && environments.length > 0) {\n let option_arr = environments.map(function (row) {\n return {\"label\": row[\"env_name\"], \"value\": row[\"env_id\"]};\n });\n this.setState({environment: option_arr});\n break;\n }\n\n call_get_api(ui_service_ip, \"/environments\",data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let option_arr = [];\n let environments = response[\"environments\"];\n if (environments.length > 0) {\n cacheEnvironmentData(environments, team_id);\n option_arr = environments.map(function (row) {\n return {\"label\": row[\"env_name\"], \"value\": row[\"env_id\"]};\n });\n }\n this.setState({environment: option_arr});\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"profile_ml_minimal_integrations\":\n let min_integrations = getCachedIntegrations(team_id);\n if (min_integrations !== null && min_integrations.length > 0) {\n this.setState({integration_details: min_integrations});\n break;\n }\n data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let integrations = response[\"integrations\"];\n this.setState({integration_details: min_integrations});\n cachedIntegrationData(integrations, team_id);\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"datasource_updates\":\n call_get_api(ui_service_ip, \"data_refreshes_info\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res = [];\n let datasource_updates = response[\"final\"];\n res = datasource_updates_table(datasource_updates);\n this.setState({\n datasource_updates: res,\n });\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"modelABData\":\n call_get_api(ui_service_ip, \"model_ab_data\").then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n return;\n }\n\n if (response.code === 200) {\n let fetched_ab_data = response[\"model_ab_data\"];\n let model_info_map = response[\"model_info_map\"];\n let res = prepare_model_ab_table_data(fetched_ab_data, model_info_map);\n this.setState({\n model_ab_data: res,\n currModelABList: fetched_ab_data\n });\n return;\n }\n\n if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n\n case \"integrations_profile\":\n // Getting integrations for profile page\n if (team_id !== undefined && team_id !== null) {\n let data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let integrations = response[\"integrations\"];\n let integrationsMap = {};\n for (let integration of integrations) {\n integrationsMap[integration[\"integration_id\"]] = integration;\n }\n\n this.setState({\n integrationsMap: integrationsMap,\n });\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n }\n break;\n\n case \"model_updates\":\n call_get_api(ui_service_ip, \"model_refreshes_info\", data).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n return;\n }\n\n if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n return;\n }\n \n if (response.code === 200) {\n let res = [];\n if (response['model_dataset_processing_info'].length > 0) {\n let model_updates = response[\"model_dataset_processing_info\"];\n res = model_updates_table(model_updates);\n }\n this.setState({\n model_updates: res,\n });\n\n }\n else {\n this.setState({ errorOccurred: true });\n }\n });\n break;\n case \"alertDatasets\":\n call_get_api(ui_service_ip, \"/datasets\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let details = {...this.state.details};\n details.data_set = response['datasets'];\n this.setState({details: details})\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"integrations\":\n if (team_id !== undefined && team_id !== null) {\n let data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res = [];\n let int_arr = [];\n let integrations = response[\"integrations\"];\n res = integration_table_data_setup(integrations);\n int_arr = integrations.map(function (row) {\n return {\"label\": row[\"integration_name\"], \"value\": row[\"integration_id\"]};\n });\n this.setState({\n integration_details: integrations,\n data: res,\n integration_option: int_arr,\n updateStatus:true\n });\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n }\n break;\n case \"integrationOptions\":\n if (team_id !== undefined && team_id !== null) {\n data = {tenant_id: team_id}\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let int_arr = [];\n let integrations = response[\"integrations\"];\n int_arr = integrations.map(function (row) {\n return {\"label\": row[\"integration_name\"], \"value\": row[\"integration_id\"]};\n });\n this.setState({\n integration_option: int_arr\n });\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n }\n break;\n case \"accountDetails\":\n call_get_api(ui_service_ip, \"account/features\", data).then((res_1) => {\n if (res_1 !== undefined && res_1.code === 200) {\n const accPlanDetails = res_1.plan_details;\n this.setState({\n mlLimitExceed: accPlanDetails.ml_usage_exceeded,\n maxModel: accPlanDetails.max_ml_model_limit,\n planName: accPlanDetails.plan_name,\n dataLimitExceed: accPlanDetails.usage_exceeded\n });\n } else {\n this.setState({mlLimitExceed: null, maxModel: null});\n }\n });\n break;\n\n case \"dd_sleep_time_fetch\":\n call_get_api(ui_service_ip, \"dd_sleep_time\", data).then((response) => {\n if (response !== undefined){\n let curr_sleep_time = response['sleep_time'];\n if (curr_sleep_time === undefined || curr_sleep_time === null) {\n curr_sleep_time = 1;\n }\n if (response.code === 200) {\n this.setState({\n sleepComponentLoad: false,\n sleepInterval: curr_sleep_time,\n prevSleepInterval: curr_sleep_time\n });\n }\n }\n });\n break;\n \n case \"save_dd_sleep_time\":\n this.setState({sleepIntervalClass: \"d-none\"});\n const sleep_time_val= this.state.sleepInterval;\n let currSession = localStorage.getItem(\"sessionToken\");\n let sleepIntervalData = {\"sleep_interval\": sleep_time_val}\n call_update_api(ui_service_ip, \"dd_sleep_time\", sleepIntervalData, currSession).then(\n (response) => {\n this.setState({sleepComponentLoad: false});\n if(response !== undefined && response.code === 200) {\n this.setState({\n prevSleepInterval: sleep_time_val,\n sleepIntervalClass: \"d-none\"\n });\n this.showToast(\"alert-success\", \"Scan interval update is successful\", \"\");\n }else{\n this.setState({sleepIntervalClass: \"\"});\n this.showToast(\"alert-danger\", \"Could Not Update scan interval\", \"\");\n }\n }\n );\n break;\n \n case \"increaseDataLimit\":\n const inputData = {\"tenant_id\": team_id};\n call_update_api(ui_service_ip, \"plan/status\", inputData, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n console.error(\"Unable to reach console server\");\n } else if (response.code === 200) {\n this.setState({dataLimitExceed: false});\n } else {\n console.error(\"Unable to update data limit\")\n }\n });\n break\n\n case \"mlmodels\":\n call_get_api(ui_service_ip, \"/ml-models\", data).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let res = mlTableDataSetup(response.ml_model);\n this.setState({ mlDetails: response.ml_model, mlData: res,\n change_request_exists: response.change_request_exists});\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n });\n break;\n case \"models\":\n call_get_api(ui_service_ip, \"/ml-models\", data ).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let options = response[\"ml_model\"];\n let modelOptions = options.map(function (row) {\n let datasets = getModelDatasets(row);\n return {\"label\": row[\"model_name\"], \"value\": row[\"ml_model_id\"], \"datasets\": datasets};\n });\n this.setState({\n modelDetails: response,\n modelOptions: modelOptions\n });\n\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n });\n break;\n case \"metrics\":\n call_get_api(ui_service_ip, \"metrics_meta/metrics\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n }else if(response.code === 200) {\n let res=DQM_metric_setup(this.state.details.page, response.metrics_list);\n let details = {...this.state.details};\n details.data = res;\n this.setState({details});\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"attributePage\":\n let dataSetId = this.state.dataSetId === -1 ? this.props.dataModule.selectedDataSetId : this.state.dataSetId;\n if(dataSetId === undefined || dataSetId === -1){\n // Invalid data set id. So no need to call api further\n return;\n }\n\n data[\"data_set_id\"] = dataSetId;\n\n let attributeID = this.state.attributeID === \"\" ? this.props.dataModule.selectedAttributeID : this.state.attributeID;\n let attributeName = this.state.attributeName === \"\" ? this.props.dataModule.selectedAttributeName : this.state.attributeName;\n if(attributeID !== undefined && attributeID !== \"\") {\n // When we have valid attribute id, we will try to fetch using attribute id\n data[\"attribute_id\"] = attributeID;\n }else if(attributeName !== undefined && attributeName !== \"\") {\n // When we have valid attribute name, we will try to fetch using attribute name \n data[\"attribute_name\"] = attributeName;\n } else {\n return;\n }\n\n call_get_api(ui_service_ip, \"attributes/dataprofile\",data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let apiStatusCode = response.code;\n this.setApiResponse(response, apiStatusCode, false);\n } else {\n this.setState({errorOccurred: true});\n }\n });\n\n break;\n case \"get_user_payments_and_billing_history\":\n call_get_api(ui_service_ip, \"customer/payment\",data).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let data = response.data;\n let paymentDetails = data.payment_details;\n let billingHistory = data.billing_history;\n let plan_details = data.plan_details;\n let billingAddress = data.billing_address\n if (plan_details === undefined) {\n plan_details = {};\n }\n\n let auto_debit_status = plan_details.auto_debit_status === 1;\n\n let allDetails = this.getPaymentDetailsTableData(paymentDetails);\n billingAddress = this.getBillingAddressDetails(billingAddress);\n let billingHistoryTableData = this.getBillingHistoryTableData(billingHistory);\n this.setState({\n availableCards: allDetails,\n billingHistory: billingHistoryTableData,\n autoDebit: auto_debit_status,\n disableAutoDebitToggle: false,\n billinginitalloader:false,\n billing_address : billingAddress,\n\n });\n\n } else {\n this.setState({errorOccurred: true});\n }\n\n this.setState({cardGroupLoading: false});\n });\n break;\n case \"fetchQualdoPlans\": \n call_get_api(ui_service_ip, \"get_all_plan\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n }else if(response.code === 200) {\n let plans = response.qualdo_plans;\n this.setQualdoPlans(plans);\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n \n break;\n case \"get_payment_page_details\":\n let getPaymentDetailsEndPoint = \"customer/payment_page\";\n let planData = {\"tenant_id\":team_id}\n let srcIsChoosePlan = this.state.srcIsChoosePlan;\n let planType = localStorage.getItem(\"qualdoPlan\");\n // Check whether there is change in plan. If there is a change update the end point\n if (srcIsChoosePlan === true &&\n planType !== undefined &&\n VALID_QUALDO_PLANS.includes(planType)) {\n let qualdoPlanCycle = this.getQualdoPlanCycle();\n let planChanged = isPlanChanged(planType, qualdoPlanCycle);\n if (planChanged) {\n if (planType === QualdoPlanVersions.FREE) {\n qualdoPlanCycle = \"monthly\";\n }\n planData[\"user_plan\"] = planType;\n planData[\"plan_cycle\"] = qualdoPlanCycle;\n } else{\n this.showErrorMessage(\"You are already in the \"+ qualdoPlanCycle +\" plan\");\n return;\n }\n }\n\n call_get_api(ui_service_ip, getPaymentDetailsEndPoint,planData).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let data = response.data;\n if (data[\"error_message\"] !== undefined && data[\"error_message\"] !== null){\n this.showErrorMessage(data[\"error_message\"])\n } else if(data[\"is_downgrade\"] !== undefined && data[\"is_downgrade\"] === true){\n // show popup\n this.showDowngradePopup(data)\n }\n else {\n let available_cards = this.getPaymentDetailsTableData(data.available_cards);\n data[\"available_cards\"] = available_cards;\n data[\"show_payment_details\"] = true;\n this.changePaymentPageDetails(data)\n }\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"customMetricProcessInfo\":\n const customMetricEndPoint = \"custom_metrics_process_info\";\n call_get_api(ui_service_ip, customMetricEndPoint, data ).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let data = response.data;\n if (data === undefined || data === null){\n return;\n }\n\n let dqmData = data.dqm;\n let mlmData = data.mlm;\n this.setState({\n customMetricDqmData: customMetricsProcessUpdates(dqmData),\n customMetricMlmData: customMetricsProcessUpdates(mlmData)\n });\n }\n });\n break;\n\n case \"fetchDatasetRefreshInfo\": \n call_get_api(ui_service_ip, \"datasets/last_processed_time\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n return;\n }\n \n if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n return;\n }\n\n if(response.code === 200) {\n let datasetRefInfo = response.results;\n this.props.fetchLastRefreshOfDatasets(datasetRefInfo);\n return;\n }\n });\n \n break;\n case \"fetchDatasourceChartData\":\n call_post_api(ui_service_ip, \"discover\",data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n return;\n }\n \n if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n return;\n }\n\n if(response.code === 200) {\n let dataSrcInfo = response.data;\n this.props.storeDiscoverPageDataForDataSrc(dataSrcInfo);\n return;\n }\n });\n break;\n default:\n break;\n }\n}\n\nexport function getBrainTreeAuthToken() {\n return BRAIN_TREE_AUTH_TOKEN;\n\n // We can get the token API when it is supported\n\n // call_get_api(ui_service_ip, \"customer/payment_page?tenant_id=\"+ team_id).then(\n // (response) => {\n // if (response === undefined) {\n // this.setState({errorOccurred: true});\n // } else if (response.code === 200) {\n // this.setState({errorOccurred: true});\n // } else {\n // this.setState({errorOccurred: true});\n // }\n // });\n}\n\n\nexport function setTimeFilter(Id, key, modelTitle, chartTitle, startDate, endDate) {\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n let appliedFilters = {'startDate': startDate, \"endDate\": endDate};\n let showMoreEndPoint;\n let distance = null;\n let chartInputData;\n if (this.state.distance !== null) {\n distance = this.state.distance;\n }\n\n if (key === \"mlModelPerformance\") {\n chartInputData = {\n \"ml_model_ids\": [Id],\n \"cross_chart_data\": chartDataCombinations\n };\n showMoreEndPoint = `model_performance/results?tenant_id=${teamId}`;\n }\n else {\n chartInputData = {\n \"tenant_id\": teamId,\n \"data_set_ids\": [Id],\n \"distance\": distance,\n \"level\":\"all\",\n \"result_type\": \"chart\",\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate\n };\n\n if (key === \"mlModel\") {\n chartInputData = {\n \"tenant_id\": teamId,\n \"level\": \"all\",\n \"ml_model_id\": Id,\n \"metrics_id\": null,\n \"result_type\": \"chart\",\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate\n };\n }\n\n showMoreEndPoint = \"monitor/charts\";\n }\n\n call_post_api(ui_service_ip, showMoreEndPoint, chartInputData,\n session).then((res) => {\n this.setSelectedFilterChartData(res, key, modelTitle, chartTitle, Id, appliedFilters);\n });\n}\n\n//export function setModelPerformanceTimeFilter(Id, performanceType, startDate, endDate) {\n// const teamId = localStorage.getItem('team_id');\n// let session = localStorage.getItem(\"sessionToken\");\n// let showMoreEndPoint;\n// let chartInputData;\n// if (Id === undefined || Id === null){\n// this.setState({loadValue: false});\n// return;\n// }\n//\n// chartInputData = {\n// \"ml_model_ids\": [parseInt(Id)],\n// \"performance_types\": [performanceType],\n// \"cross_chart_data\": []\n// };\n// showMoreEndPoint = `model_performance/results?tenant_id=${teamId}`;\n//\n// call_post_api(ui_service_ip, showMoreEndPoint, chartInputData,\n// session).then((res) => {\n// this.setModelPerformanceTimeFilterChartData(res, this.props.variant, this.state.chartID);\n// });\n//}\n\nexport function profileTimeFilterSubmit(data, startDate, endDate)\n{\n let session = localStorage.getItem(\"sessionToken\");\n let team_id = localStorage.getItem('team_id');\n let fetchLastProfilingTime = getLastDQProfilingTime.bind(this);\n fetchLastProfilingTime(data[\"value\"]);\n let d = {\"data_source\": [data[\"value\"]], \"payload_start_time\":startDate, \"payload_end_time\": endDate};\n d[\"tenant_id\"] = team_id;\n call_post_api(ui_service_ip, \"relationship/all\", d , session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let attributeLink = \"dataset/attributes/latest?tenant_id=\"+localStorage.getItem('team_id')+\"&integration_id=\"+data[\"value\"]+\n \"&payload_start_time=\"+startDate+\"&payload_end_time=\"+endDate;\n let chartInputData = { \"tenant_id\": localStorage.getItem('team_id'),\n \"env_id\": null,\n \"integration_id\": data[\"value\"],\n \"data_set_ids\": null,\n \"mas_id\": null,\n \"metrics_id\": null,\n }\n if (startDate !=null && endDate !=null) {\n chartInputData[\"payload_start_time\"] = startDate;\n chartInputData[\"payload_end_time\"] = endDate;\n }\n call_get_api(ui_service_ip, attributeLink ).then((res_2) =>{\n if (res_2 !== undefined && res_2[\"code\"] === 200) {\n call_post_api(ui_service_ip, \"metrics/charts\", chartInputData, session).then((res_3) =>{\n this.setDataInTab(response[\"relationships\"], res_2[\"result\"], res_3, data, startDate, endDate, true);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n });\n }\n });\n\n }else if(response.code === 401)\n {\n this.showToast(\"alert-danger\",\"could not add Filter\",'')\n }else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n }\n });\n}\n\nexport function setDistanceFilter(event, Id, key, modelTitle, chartTitle) {\n // Commented the API calls, since we are not supporting distance based filters.\n // and hence to prevent unnecessary API call\n\n // const teamId = localStorage.getItem('team_id');\n // let session = localStorage.getItem(\"sessionToken\");\n // let appliedFilters = {'distance': event};\n // let startDate = null;\n // let endDate = null;\n // if (this.state.startDate !== null && this.state.endDate !== null) {\n // startDate = this.state.startDate;\n // endDate = this.state.endDate;\n // }\n //\n // let chartInputData;\n // let showMoreEndPoint;\n // if (key === \"mlModelPerformance\") {\n // chartInputData = {\n // \"ml_model_ids\": [Id],\n // \"payload_start_time\": startDate,\n // \"payload_end_time\": endDate,\n // \"cross_chart_data\": chartDataCombinations\n // };\n // showMoreEndPoint = `model_performance/results?tenant_id=${teamId}`;\n // } else {\n // chartInputData = { \"tenant_id\": teamId,\n // \"data_set_ids\": [Id],\n // \"result_type\": \"chart\",\n // \"distance\": event,\n // \"payload_start_time\":startDate,\n // \"payload_end_time\": endDate\n // };\n // if (key === \"mlModel\") {\n // chartInputData = { \"tenant_id\": teamId,\n // \"level\": \"all\",\n // \"ml_model_id\": Id,\n // \"metrics_id\": null,\n // \"result_type\": \"chart\",\n // \"payload_start_time\":startDate,\n // \"payload_end_time\": endDate\n // };\n // }\n //\n // showMoreEndPoint = \"monitor/charts\";\n // }\n\n\n // call_post_api(ui_service_ip, showMoreEndPoint, chartInputData, session).then((res) => {\n // if (res === undefined) {\n // this.setState({errorOccurred: true});\n // }\n // else {\n // this.setSelectedFilterChartData(res, key, modelTitle, chartTitle, Id, appliedFilters);\n // }\n // });\n}\n\nexport function setDataSource(dataSource, key, title, startDate, endDate) {\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n let dataSourceID = dataSource[\"value\"];\n let chartInputData = {\n \"tenant_id\": teamId,\n \"env_id\": null,\n \"integration_ids\": [dataSourceID],\n \"data_set_ids\": null,\n \"level\": \"all\",\n \"mas_id\": null,\n \"metrics_id\": null,\n \"result_type\": \"chart\"\n }\n\n if (startDate !=null && endDate !=null) {\n chartInputData[\"payload_start_time\"] = startDate;\n chartInputData[\"payload_end_time\"] = endDate;\n } else {\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n chartInputData[\"payload_start_time\"] = startDate;\n chartInputData[\"payload_end_time\"] = endDate;\n }\n\n // API call fetch the latest monitoring time for the selected integration\n let payData ={\"tenant_id\":teamId};\n payData[\"integration_id\"] = dataSourceID\n call_get_api(ui_service_ip, \"metrics_store_payload_created_time\",payData).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n let results = response[\"results\"]\n if (results !== null && results.length > 0){\n this.setState({lastMonitorTime: results[0][\"last_processed_time\"], isSuccessMessage: true})\n } else{\n this.setState({isSuccessMessage: false});\n }\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n\n call_post_api(ui_service_ip, \"monitor/charts\", chartInputData, session).then((res) => {\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setSelectedChartData(res, key, title, dataSource);\n }\n });\n\n let datasets = getCachedDatasets(teamId, dataSourceID)\n if (datasets !== null) {\n this.setAvailableDataSets(datasets, key, title, dataSourceID)\n return;\n }\n\n // const endPoint = `datasets?tenant_id=${teamId}&integration_id=${dataSourceID}`;\n let data = {'tenant_id':teamId, 'integration_id':dataSourceID}\n call_get_api(ui_service_ip,\"/datasets\", data, session).then((res) => {\n let datasets = res[\"datasets\"];\n this.setAvailableDataSets(datasets, key, title, dataSourceID);\n cacheDatasets(datasets, teamId, dataSourceID);\n });\n}\n\nexport function setDataset(dataset, key, title) {\n const team_id = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n let startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n let chart_input_data = { \"tenant_id\": team_id,\n \"env_id\": null,\n \"integration_ids\": null,\n \"data_set_ids\": [dataset[\"value\"]],\n \"mas_id\": null,\n \"metrics_id\": null,\n \"result_type\": \"chart\",\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate,\n \"level\": \"all\"\n }\n call_post_api(ui_service_ip, \"monitor/charts\", chart_input_data, session).then((res) =>{\n this.setSelectedChartData(res, key, title, dataset)\n });\n}\n\nexport function compareMlCharts(mlModel,mlModelId, key, modelTitle, chartTitle){\n let startDate = null;\n let endDate = null;\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n if (this.state.startDate !== null && this.state.endDate !== null) {\n startDate = this.state.startDate;\n endDate = this.state.endDate;\n } else {\n startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n }\n\n let appliedFilters = {'compareMlModel': mlModel};\n\n let chartInputData = { \"tenant_id\": teamId,\n// \"level\": \"all\",\n \"ml_model_id\": mlModel[\"value\"],\n \"metrics_id\": null,\n \"result_type\": \"chart\",\n \"payload_start_time\":startDate,\n \"payload_end_time\": endDate\n };\n call_post_api(ui_service_ip, \"monitor/charts\", chartInputData, session).then((res) =>{\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setCompareChart(res, key, modelTitle, chartTitle, mlModelId, appliedFilters);\n }\n });\n}\n\nexport function compareDqCharts(dataSet, dataSetId, key, modelTitle, chartTitle){\n let startDate = null;\n let endDate = null;\n const teamId = localStorage.getItem('team_id');\n let session = localStorage.getItem(\"sessionToken\");\n if (this.state.startDate !== null && this.state.endDate !== null) {\n startDate = this.state.startDate;\n endDate = this.state.endDate;\n } else {\n startDate = moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD 00:00:00').toString();\n endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n }\n\n let appliedFilters = {'compareDataSet': dataSet};\n\n let chartInputData = {\"tenant_id\": teamId,\n \"data_set_ids\": [dataSet[\"value\"]],\n \"result_type\": \"chart\",\n// \"level\":\"all\",\n \"payload_start_time\":startDate,\n \"payload_end_time\": endDate\n };\n call_post_api(ui_service_ip, \"monitor/charts\", chartInputData, session).then((res) =>{\n if (res === undefined) {\n this.setState({errorOccurred: true});\n } else {\n this.setCompareChart(res, key, modelTitle, chartTitle, dataSetId, appliedFilters);\n }\n });\n}\n\n\n\nexport function formSubmit(event, props) {\n event.preventDefault();\n\n const { name } = event.target;\n let session = localStorage.getItem(\"sessionToken\");\n switch(name) {\n case \"defaultMetrics\":\n var date = new Date();\n var currentTime = date.getUTCFullYear() + \":\" + (\"0\" + (date.getUTCMonth()+1)).slice(-2) + \":\" + (\"0\" + date.getUTCDate()).slice(-2) + \" \" +\n (\"0\" + date.getUTCHours()).slice(-2) + \":\" + (\"0\" + date.getUTCMinutes()).slice(-2) + \":\" + (\"0\" + date.getUTCSeconds()).slice(-2);\n const metricData = new FormData(event.target);\n const metricsUpdated = {\n \"metric_name\": metricData.get(\"metricName\"),\n \"metrics_definition\": {\n \"name\": metricData.get(\"metricName\"),\n \"version\": \"1\",\n \"dimension\": \"dataset\",\n \"compute_drift\": true,\n \"drift_threshold\": 10,\n \"checks\": [{\"name\": this.state.selectedCheck.value, \"value\": metricData.get(\"checkValue\")}],\n \"sources\": [],\n \"timestamp\": currentTime,\n \"formula\": this.props.exMetricDetails.metrics_definition.formula,\n \"mas_type\": this.props.exMetricDetails.metrics_definition.mas_type,\n \"measures\": this.props.exMetricDetails.metrics_definition.measures\n }\n };\n\t\t const team_id = localStorage.getItem('team_id');\n metricsUpdated[\"tenant_id\"] = team_id;\n metricsUpdated[\"metrics_id\"] = this.props.metricId;\n let end_point = \"metrics_meta/metrics\";\n call_update_api(ui_service_ip, end_point, metricsUpdated, session).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.props.closeModal();\n this.props.showToast(\"alert-success\", 'metrics updated successfully', \"\")\n } else {\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", response.message, \"\")\n }\n }\n );\n break;\n case \"customDefaultMetrics\":\n let dataSetId = this.state.sourceDataset;\n let targetDataSetId = this.state.targetDataSetId;\n let requiresTarget = this.requiresTargetSelection();\n\n if (dataSetId === null || (requiresTarget && targetDataSetId === null)) {\n const err = \"Select a dataset to associate with metric\";\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", err, \"\");\n return;\n }\n\n if (String(dataSetId) === String(targetDataSetId)) {\n const err = \"Target dataset cannot be same as current dataset\";\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", err, \"\");\n return;\n }\n\n const exMetricDetails = this.props.exMetricDetails;\n const metricsId = exMetricDetails.metrics_id;\n let teamId = localStorage.getItem('team_id');\n\n let data = {\n \"metrics_id\": metricsId,\n \"data_set_id\": dataSetId,\n \"target_data_set_id\": targetDataSetId,\n \"tenant_id\": teamId\n }\n\n const isMetricsEdit = this.props.src_page === \"edit_metrics\";\n let editProcess = isMetricsEdit ? 'updated' : 'enabled';\n\n let responseHandler = (response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\", \"Unable to process request\", \"\");\n }\n else if (response.code === 200) {\n const message = `Metric ${metricsId} is ${editProcess} for dataset ${dataSetId} successfully`;\n this.props.showToast(\"alert-success\", message, \"\");\n }\n else {\n this.props.showToast(\"alert-danger\", response.message, \"\");\n }\n };\n\n this.props.closeModal();\n const metricEditEndPoint = \"metrics/custom\";\n if (isMetricsEdit) {\n data[\"job_id\"] = exMetricDetails.job_id;\n call_update_api(ui_service_ip, metricEditEndPoint, data, session).then(\n responseHandler\n );\n }\n else {\n call_post_api(ui_service_ip, metricEditEndPoint, data, session).then(\n responseHandler\n );\n }\n\n break;\n case \"email_configure\":\n const emailFormData = new FormData(event.target);\n const emailConfigureData = {\n \"tenant_id\": localStorage.getItem('team_id'), \"consume_group_name\": emailFormData.get('consume_group_name'),\n \"alert_id\": emailFormData.get(\"alertId\"),\n \"consume_group_type\": \"email\", \"config_details\":\n {\n \"email_id\": emailFormData.get(\"email\"),\n \"repeat_count\": emailFormData.get(\"repeat_count\"),\n \"repeat_interval\": emailFormData.get(\"repeat_interval\"),\n \"repeat_on\": emailFormData.getAll(\"repeat_on\"),\n \"repeat_at\": emailFormData.get(\"repeat_at\"),\n \"type\": emailFormData.get(\"cg_type\"),\n \"time_zone\": emailFormData.get(\"time_zone\")\n }\n };\n call_post_api(ui_service_ip, \"consume_group\", emailConfigureData, session).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.props.showToast(\"alert-success\", \"Notification added successfully\", \"\");\n } else {\n this.props.showToast(\"alert-danger\", response.message, \"\");\n }\n }\n );\n break;\n case \"pipeline_trigger\":\n const pipeline_data = this.create_data_to_post(event)\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal()\n }\n this.props.showToast(\"alert-success\",\n `${pipeline_data[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${pipeline_data[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(pipeline_data)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n pipeline_data[\"pipeline_trigger_id\"] = pipeline_trigger_id\n call_update_api(ui_service_ip, endPoint,\n pipeline_data, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n pipeline_data, session).then(pipeline_resp_handler);\n }\n\n break;\n default:\n break;\n }\n}\n\nexport function submitUsersPayment(paymentData, setPaymentStatus) {\n const teamId = localStorage.getItem('team_id');\n const session = localStorage.getItem(\"sessionToken\");\n let data = {\"tenant_id\" : teamId}\n let endPoint = \"customer/payment_page\";\n paymentData[\"tenant_id\"] = teamId;\n call_post_api(ui_service_ip, endPoint, paymentData, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true,\n showModal:true,\n disableSubmitBtn: false,\n failure_message : \"Unable to contact server. Try after sometime\"});\n } else if (response.code === 200) {\n \n // Update encrypted User Details\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n decrypt_data[\"isPlanExpired\"] = false;\n let encrypt_data = encryptForLocalUsage(decrypt_data)\n localStorage.setItem(LOCAL_STORE_KEY, encrypt_data)\n call_get_api(ui_service_ip, \"account/features\",data).then((res_1) => {\n if (res_1.code === 200) {\n const accountFeatures = res_1[\"plan_details\"];\n localStorage.setItem(\"plan_details\", JSON.stringify(accountFeatures));\n }\n });\n this.setState({errorOccurred: false});\n setPaymentStatus(true);\n } else {\n this.setState({\n showModal:true,\n disableSubmitBtn: false,\n failure_message : response.message\n })\n }\n });\n}\n\n\nexport function handleClick(event){\n let session = localStorage.getItem(\"sessionToken\");\n let name=event.target.name;\n switch(name) {\n case \"logout\":\n let team_id = localStorage.getItem('team_id');\n let user_id = localStorage.getItem('user_id');\n const logout_data = {token:session, team_id: team_id, user_id: user_id};\n call_post_api(iam_ip, \"logout\", logout_data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }else {\n let powerbiip = process.env.REACT_APP_POWERBI_BASE_URL;\n let protocol = getProtocol(powerbiip);\n window.location = protocol+'//'+powerbiip;\n } \n }\n });\n postMixpanel('User logged out');\n break;\n default:\n break\n }\n}\n\nexport function test() {\n\n\n}\n\nexport function handleFileSubmit(event)\n{\n event.preventDefault();\n let errors = this.state.errors;\n const { name } = event.target;\n if (typeof(errors) !== 'undefined' || errors != null) {\n this.setState({formValid: validateForm(this.state.errors)});\n this.setState({errorCount: countErrors(this.state.errors)});\n }\n let session = localStorage.getItem(\"sessionToken\");\n switch(name) {\n case \"upload_integration\":\n if(this.state.file.length === 0)\n {\n this.setState({uploadClick:true});\n }else{\n this.setState({uploadClick:false});\n this.disableButton();\n const integration_data = new FormData();\n integration_data.append(\"integrations\", this.state.file[0]);\n call_file_post_api(ui_service_ip, \"integrations/file\", integration_data,session).then((response) =>{\n if(response.code === 200) {\n this.setState({show: false,hideSubmitButton: false,file: []})\n let successList = [];\n let dangerList = [];\n for(let i=0;i{\n if (response.code === 200) {\n this.setState({show: false,hideSubmitButton: false,file: []});\n let successList = [];\n let dangerList = [];\n for(let i=0;i {\n deleteClose();\n this.setState({disableDelete: false});\n if (response.code === 200) {\n props.handleDelete();\n props.showToast(\"alert-success\", `${context} deleted successfully`, '');\n if (preFetchType !== null)\n {\n UpdateReduxStore(preFetchType, props, details);\n }\n }\n else {\n props.showToast(\"alert-danger\", `Could not delete ${context.toLowerCase()}`, '')\n }\n });\n}\n\nexport function handleDeleteForModelABConfig(props) {\n this.setState({deleteButtonDisabled: true});\n let session = localStorage.getItem(\"sessionToken\");\n let deleteIp = ui_service_ip;\n let model_ab_id = props.view_details['model_ab_id'];\n\n let endPoint = 'model_ab';\n let context = 'Model AB configuration';\n\n call_delete_api(deleteIp, endPoint,{\"model_ab_id\": model_ab_id} ,session).then((response) => {\n this.setState({deleteButtonDisabled: true});\n if (response.code === 200) {\n const model_ab_id = response[\"model_ab_id\"];\n props.handleABDeleteInParent(model_ab_id);\n props.showToast(\"alert-success\", `${context} deleted successfully`,\n '', '', false);\n } else {\n props.showToast(\"alert-danger\", `Could not delete ${context.toLowerCase()}`,\n '', '', false);\n }\n });\n}\n\nfunction UpdateReduxStore(preFetchType, prefetch, details) {\n if (preFetchType === \"Model\") {\n let mlModelMapping = prefetch.monitorModule.mlModelMapping;\n if (details[\"action_type\"] === \"add\")\n {\n mlModelMapping[details[\"ml_model_id\"]] = details[\"ml_model_name\"]\n if (Object.keys(mlModelMapping).length === 1 ) {\n prefetch.setMLModel(details[\"ml_model_id\"]);\n }\n } else if(details[\"action_type\"] === \"delete\") {\n if(details[\"ml_model_id\"] in mlModelMapping) {\n delete mlModelMapping[details[\"ml_model_id\"]];\n }\n if (Object.keys(mlModelMapping).length === 0 ) {\n prefetch.setMLModel(-1);\n } else {\n prefetch.setMLModel(Object.keys(mlModelMapping)[0])\n }\n }\n prefetch.addMLModelMapping(mlModelMapping);\n }\n}\n\n\nexport function updateMetricStatus(data, showToast){\n let toastMessage = \"Could not process your request.\"\n let metricName = data[\"metric_name\"];\n if (data[\"status\"] === true){\n toastMessage = `${metricName} enabled successfully`\n } else if(data[\"status\"] === false){\n toastMessage = `${metricName} disabled successfully`\n }\n call_post_api(ui_service_ip, \"metrics/status\", data).then((response) => {\n if (response === undefined) {\n showToast(\"alert-danger\", `\"Could not process your request.\"`, '');\n }\n else if (response.code === 200) {\n showToast(\"alert-success\", toastMessage, '');\n }\n else {\n showToast(\"alert-danger\", `${response.message}`, '');\n }\n });\n}\n\nexport function handleFollowStatus(props, name, currentStatus, updateFollowStatus) {\n const newStatus = !currentStatus;\n updateFollowStatus(newStatus);\n\n const teamId = localStorage.getItem('team_id');\n\n switch (name) {\n case \"metric_status\":\n let data = props.details.metrics_data;\n data[\"tenant_id\"] = teamId;\n data[\"status\"] = newStatus;\n updateMetricStatus(data, props.showToast);\n setTimeout(() => { props.handleDelete(); }, 2000);\n break;\n default:\n break;\n }\n}\n\nexport function handleMetricFollow(event) {\n const ex_metric_details = this.props.ex_metric_details;\n if (ex_metric_details === undefined || ex_metric_details === null) {\n return;\n }\n\n let activeStatus = this.state.active;\n let showTemplatePopup = false;\n if ( this.props.ex_metric_details !== undefined) {\n activeStatus = this.props.ex_metric_details.status_code === 1;\n\n const metricsDefinition = this.props.ex_metric_details.metrics_definition;\n const jobId = this.props.ex_metric_details.job_id;\n showTemplatePopup = (metricsDefinition.is_template === true) && (jobId === undefined);\n }\n\n if(showTemplatePopup === true && this.props.configuredCount !== false && this.props.configuredCount === 0) {\n this.props.showConfigureConsistency(ex_metric_details[\"metric_name\"]);\n return;\n }\n\n if (this.state.active === null && this.props.ex_metric_details !== undefined) {\n activeStatus = this.props.ex_metric_details.status_code === 1;\n }\n\n let newStatus;\n if(this.state.active === null && activeStatus === false) {\n newStatus = true;\n } else if (this.state.active === null && activeStatus === true) {\n newStatus = false;\n } else {\n newStatus = !(this.state.active)\n }\n\n this.setState({active: newStatus});\n\n // Form the required data and update the entry in the database\n ex_metric_details[\"tenant_id\"] = localStorage.getItem('team_id');\n ex_metric_details[\"status\"] = newStatus;\n updateMetricStatus(ex_metric_details, this.props.showToast);\n}\n\nexport function setShow(key, value){\n this.setState({[key]: value})\n}\n\nexport function alertFormSubmit(event) {\n let session = localStorage.getItem(\"sessionToken\");\n this.disableButton();\n const alert_form_data = event;\n let expressions = this.state.expressions;\n let validData = true;\n let gate_type = \"quality_gate\";\n let quality_gate = [];\n if (expressions.length === 0) {\n validData = false;\n this.enableButton();\n this.props.showToast(\"alert-danger\", \"Add Alert Conditions\",'')\n return;\n }\n else\n {\n let expression = this.state.expressions.at(-1)\n if(expression !== undefined && (([expression.alert_conditional_op,expression.alert_threshold_val,expression.alert_metrics_options].includes(\"\"))\n || (this.state.expressions.length > 1 && [expression.alert_join_options].includes(\"\"))))\n {\n\n this.setState({errorMsg:true});\n this.enableButton();\n return;\n }\n }\n for (let k = 0; k < expressions.length; k++) {\n let e = expressions[k];\n if (quality_gate.length > 0 && e[\"alert_join_options\"][\"value\"] !== \"\") {\n quality_gate.push(e[\"alert_join_options\"][\"value\"])\n }\n if (e['alert_metrics_options'][\"value\"] === undefined || e['alert_metrics_options'][\"value\"] === null) {\n validData = false;\n this.enableButton();\n this.props.showToast(\"alert-danger\", \"Add Valid Alert Conditions\",'')\n } else if (e['alert_conditional_op'][\"value\"] === undefined || e['alert_conditional_op'][\"value\"] === null) {\n validData = false;\n this.enableButton();\n this.props.showToast(\"alert-danger\", \"Add Valid Alert Conditions\",'')\n } else if (e['alert_threshold_val'][\"value\"] === undefined || e['alert_threshold_val'][\"value\"] === null) {\n validData = false;\n this.enableButton();\n this.props.showToast(\"alert-danger\", \"Add Valid Alert Conditions\",'')\n } else {\n validData = true;\n if (e['alert_metrics_options'][\"value\"] === \"Recency\") {\n gate_type = \"recency_quality_gate\";\n }\n quality_gate.push([e['alert_metrics_options'][\"value\"],\n e['alert_conditional_op'][\"value\"],\n e['alert_threshold_val'][\"value\"]]);\n }\n }\n if (validData === true) {\n let trigger = this.state.selectedOptions;\n let consumeGroup = [];\n let pipeline = [];\n for (let i = 0; i < trigger.length; i++) {\n let triggerType = trigger[i][\"type\"];\n if(triggerType === \"email\" || triggerType === \"slack\" || triggerType === \"pagerduty\" || triggerType === \"MicrosoftTeams\") {\n let alertFormId = trigger[i][\"value\"]\n let alertId = alertFormId.split(\"_\")\n let alertIdData = alertId[1]\n consumeGroup.push(alertIdData);\n }\n else if(triggerType === \"webhook\" || triggerType === \"databricks\" || triggerType === \"airflow\" ||\n triggerType === \"sagemaker\" || triggerType === \"lambda\" || triggerType === \"cloudfunction\" || triggerType === \"kubeflow\") {\n let alertFormId = trigger[i][\"value\"]\n let alertId = alertFormId.split(\"_\")\n let alertIdData = alertId[1]\n pipeline.push(alertIdData);\n }\n }\n let alerts = this.state.alerts;\n if (trigger.length === 0 && alerts.mechanismOptions !== undefined) {\n let optionList = alerts.mechanismOptions;\n for (let i = 0; i < optionList.length; i++) {\n let optionListType = optionList[i][\"type\"];\n if(optionListType === \"email\" || optionListType === \"slack\" || optionListType === \"pagerduty\" || optionListType === \"MicrosoftTeams\") {\n let alertFormId = optionList[i][\"value\"]\n let alertId = alertFormId.split(\"_\")\n let alertIdData = alertId[1]\n consumeGroup.push(alertIdData);\n } else if(optionListType === \"webhook\" || optionListType === \"databricks\" || optionListType === \"airflow\" ||\n optionListType === \"sagemaker\" || optionListType === \"lambda\" || optionListType === \"cloudfunction\" || optionListType === \"kubeflow\") {\n let alertFormId = optionList[i][\"value\"]\n let alertId = alertFormId.split(\"_\")\n let alertIdData = alertId[1]\n pipeline.push(alertIdData);\n }\n }\n }\n let compute_type = null;\n if (this.state.alertComputeType !== null){\n compute_type = this.state.alertComputeType[\"value\"];\n }\n\n let attribute_name = null;\n if (alert_form_data[\"attribute_name\"] !== \"\"){\n attribute_name = alert_form_data[\"attribute_name\"];\n }\n\n\n try {\n let tenant_id = localStorage.getItem('team_id');\n const alert_data = {\n \"tenant_id\": tenant_id,\n \"mas_type\": this.props.tab,\n \"alert_name\": alert_form_data['alert_name'],\n \"data_set_id\": alert_form_data['data_set_id'],\n \"alert_schedule\": \"@once\",\n \"alert_period\": this.state.alertPeriod,\n \"metrics_definition\": {\n \"alert_computation_type\": compute_type,\n \"attribute_name\": attribute_name,\n \"gates\": quality_gate,\n \"model\": this.state.model,\n \"integration\": this.state.dataSource\n },\n \"alert_type\" : this.state.alertType,\n \"consume_group_id\":consumeGroup,\n \"pipeline_trigger_id\":pipeline,\n \"types\":this.props.tab,\n \"metric_type\": gate_type\n }\n\n if(this.props.src_page === \"edit_alert\") {\n alert_data[\"old_name\"] = this.props.exDetails.alert_name;\n alert_data[\"old_data_set_id\"] = this.props.exDetails.data_set_id;\n alert_data[\"old_alert_type\"] = this.props.exDetails.alert_type;\n alert_data[\"old_alert_period\"] = this.props.exDetails.alert_period;\n alert_data[\"alert_id\"] = this.props.exDetails.alert_id;\n call_update_api(ui_service_ip, \"alert\", alert_data, session).then((response) => {\n if(response.code === 200) {\n this.props.showToast(\"alert-success\",\"alerts updated successfully\",'');\n this.props.closeModal();\n } else {\n this.props.showToast(\"alert-danger\",response.message,'')\n this.props.closeModal();\n }\n });\n }else {\n call_post_api(ui_service_ip, \"alert\", alert_data).then((response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", \"alert added successfully\", \"\");\n this.props.handleClick();\n } else {\n this.props.showToast(\"alert-danger\", response.message, \"\");\n this.props.handleClick();\n }\n });\n }\n\n\n } catch{\n this.props.showToast(\"alert-danger\", \"select all the fields\", '');\n }\n }\n postMixpanel('Alert submitted', { });\n}\n\nexport function handleSubmit(event){\n event.preventDefault();\n let errors = this.state.errors;\n const { name } = event.target;\n\n if (typeof(errors) !== 'undefined' || errors != null) {\n this.setState({formValid: validateForm(this.state.errors)});\n this.setState({errorCount: countErrors(this.state.errors)});\n\n }\n let session = localStorage.getItem(\"sessionToken\");\n switch(name) {\n case \"requestInvite\":\n if ( this.props.userDetails[\"email\"] === this.state.adminEmail ) {\n errors.msg = \"Provide Admin's email\";\n this.setState({errors: errors});\n } else {\n const requestData = { email: this.props.userDetails[\"email\"], admin_email: this.state.adminEmail,\n user_id: this.props.userDetails[\"user_id\"], team_id: this.props.userDetails[\"team_id\"] };\n call_post_api(iam_ip, \"request/invite\", requestData).then((response) => {\n if ( response === undefined ) {\n this.props.setEmailPage(\"Could not process your request.\");\n } else if( response.code === 200 ) {\n this.props.setEmailPage(response.message);\n } else {\n errors.msg = response.message;\n this.setState({errors:errors});\n }\n });\n }\n break;\n case \"login\":\n const data = {email: this.state.email, password: this.state.password};\n call_post_api(iam_ip, \"login\", data).then((response) =>{\n if(response ===undefined){\n errors.password = \"Could not login\";\n this.setState({errors:errors});\n }else if(response.code === 200) {\n const now = new Date();\n const item = {\n value: response['response']['auth_token'],\n expiry: now.getTime() + 150*60000\n };\n setTimeout(() => browserHistory.push('/'), 9000000);\n localStorage.setItem('sessionToken', JSON.stringify(item));\n localStorage.setItem('team_id', response['response']['team_id']);\n localStorage.setItem('user_name',response['response']['user_name']);\n localStorage.setItem('user_id',response['response']['user_id']);\n localStorage.setItem('emailId',response['response']['email']);\n if (response['response'][\"setup_status\"] === \"completed\") {\n window.location = '/configure';\n } else {\n window.location = '/setup';\n }\n } else {\n errors.password = response.message;\n this.setState({errors:errors});\n }\n });\n break;\n case \"forgot-password\":\n const forgot_data= {email: this.state.email};\n call_post_api(iam_ip, \"forgot-password\", forgot_data).then((response) => {\n errors.email = response.message;\n this.setState({errors:errors, isRedirectToThankYou :true});\n\n });\n break;\n case \"reset-password\":\n let token = localStorage.getItem('resetPwdToken');\n const password = {password:this.state.password};\n call_post_api(iam_ip, 'reset-confirm?token='+token, password).then((response) => {\n localStorage.removeItem(\"resetPwdToken\");\n if (response.code === 200) {\n window.location = '/';\n } else {\n errors.tokenStatus = response.message;\n this.setState({errors:errors});\n }\n });\n break\n case \"google_signup_complete\":\n const google_data = {email: this.state.email, phone: this.state.phone, company: this.state.company};\n const qualdoPlan = localStorage.getItem(\"qualdoPlan\");\n const qualdoPlanCycle = localStorage.getItem(\"qualdoPlanCycle\");\n if (qualdoPlan !== undefined && qualdoPlan !== null) {\n google_data[\"plan\"] = qualdoPlan;\n }\n\n if (qualdoPlanCycle !== undefined && qualdoPlanCycle !== null) {\n google_data[\"cycle\"] = qualdoPlanCycle;\n }\n\n call_post_api(iam_ip, 'update_google_user', google_data).then((response) => {\n if(response.code === 200) {\n const now = new Date();\n const item = {\n value: response['response']['auth_token'],\n expiry: now.getTime() + 150*60000\n };\n\n setTimeout(() => browserHistory.push('/'), 9000000);\n localStorage.setItem('sessionToken', JSON.stringify(item));\n localStorage.setItem('team_id', response['response']['team_id']);\n localStorage.setItem('user_name', response['response']['user_name']);\n localStorage.setItem('user_id', response['response']['user_id']);\n localStorage.setItem(\"org_id\", response['response']['org_id']);\n localStorage.setItem('user_signup_type', response['response']['user_signup_type']);\n localStorage.setItem(\"permissions\", response[\"response\"][\"permissions\"]);\n window.location = '/setup';\n } else {\n errors.tokenStatus = response.message;\n this.setState({errors:errors})\n }\n });\n break;\n case 'integration_test':\n break;\n case \"test_integration\":\n // TODO To be removed??. Check whether this case is used in code. Remove this case, if it is not used.\n this.closeTestConnection()\n let test_integration_details= this.state.integration_data;\n test_integration_details['env_id'] = this.props.env_id\n let test_integration_data = construct_integration_data(test_integration_details);\n call_post_api(ui_service_ip, 'test_integration', test_integration_data, session).then((response) => {\n if (response.status_code === 200) {\n this.setState({submit_button:false});\n this.props.showToast(\"alert-success\",response.status_message,null)\n } else {\n this.setState({submit_button:true});\n this.props.showToast(\"alert-danger\",response.status_message,null)\n }\n this.setState({testConnection:response});\n });\n break;\n case 'save_integration':\n this.setState({disableFinishSetup: true});\n let integration_details = this.state.integration_data;\n integration_details['env_id'] = this.props.env_id\n let integration_data = construct_integration_data(integration_details);\n integration_data[\"integration_id\"] = integration_details[\"integration_id\"]\n if(this.props.src_page === \"edit_integration\")\n {\n call_update_api(ui_service_ip, '/integrations', integration_data, session).then((response) => {\n if(response.code === 200) {\n // localStorage.removeItem(\"env_id\");\n this.props.setEnvData(null)\n this.props.showToast(\"alert-success\",\"Datasource updated successfully\",'')\n this.props.closeModal();\n } else {\n this.props.showToast(\"alert-danger\",response.message,'')\n this.setState({disableFinishSetup: false});\n }\n\n });\n }else{\n\n call_post_api(ui_service_ip, 'integrations', integration_data, session).then((response) => {\n if(response.code === 200) {\n let is_first_datasource = false\n\n if (this.props.existingIntegrations === undefined ||\n this.props.existingIntegrations === null ||\n this.props.existingIntegrations.length === 0 ){\n is_first_datasource = true\n }\n this.props.setEnvData(null)\n // localStorage.removeItem(\"env_id\");\n\n if((this.props.src_page !== undefined && this.props.src_page ===\"setup\") || is_first_datasource ) {\n let setup_update_data = {\n \"team_id\": localStorage.getItem('team_id'),\n \"email_id\": localStorage.getItem('emailId')\n };\n\n call_post_api(iam_ip, 'update_setup_status',setup_update_data).then((response) => {\n if(response.code === 200) {\n localStorage.setItem(\"DataSetupStatus\", true);\n this.props.setPage(false);\n this.props.closeTestConnection()\n this.props.showToast(\"alert-success\",\"Datasource added successfully\",\"\");\n }else{\n this.props.showToast(\"alert-danger\",response.message,\"\")\n }\n });\n } else {\n this.props.closeTestConnection()\n this.props.setPage(false);\n this.props.showToast(\"alert-success\",\"Datasource added successfully\",\"\")\n }\n } else {\n this.props.showToast(\"alert-danger\",response.message,'')\n this.setState({disableFinishSetup: false});\n }\n });\n }\n postMixpanel('Saving Integrations', { });\n break;\n case \"setup_add_environment\":\n const set_env = new FormData(event.target);\n const set_env_data = {env_name: set_env.get('environment'), tenant_id: localStorage.getItem('team_id')};\n call_post_api(ui_service_ip, 'environment', set_env_data, session).then((response) => {\n if(response.code === 200) {\n localStorage.setItem(\"env_id\", response['env_data']['env_id']);\n localStorage.getItem('env_id');\n this.showToast(\"alert-success\",\"Environment added successfully\",'')\n } else if(response.code === 403 ) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.showToast(\"alert-danger\",response.message,'')\n }\n });\n break;\n case \"add_environment\":\n const env_form_data = new FormData(event.target);\n const env_data = {env_name: env_form_data.get('environment'), tenant_id: localStorage.getItem('team_id')};\n call_post_api(ui_service_ip, 'environment', env_data, session).then((response) => {\n if(response.code === 200) {\n this.form.reset()\n this.props.showToast(\"alert-success\",\"Environment added successfully\",'')\n let tenant_id = localStorage.getItem('team_id')\n let key = `environments_${tenant_id}`\n sessionStorage.removeItem(key);\n this.setState({showButton:false})\n } else {\n this.props.showToast(\"alert-danger\",response.message,'')\n }\n });\n break;\n case \"add_ml_model\":\n // TODO This section is not called. We can remove this section after checking\n let modelForm = this.state;\n let formErrors = checkErrorsInAddMLForm(modelForm);\n if (formErrors){\n this.setState({errors: formErrors});\n } else {\n let features = [{\"base_line_data_set\":modelForm.datasets.trainingData.label,\n \"target_data_set\":modelForm.datasets.servingData.label,\n \"type\":\"feature\",\"model_info_details\":{\"target_column_name1\":modelForm.featuresServing,\n \"target_column_name2\":modelForm.featureTraining,\n \"base_line_data_set_id\":modelForm.datasets.trainingData.value,\n \"target_data_set\":modelForm.datasets.servingData.value\n }\n },\n {\"target_data_set\":\"\",\"base_line_data_set\":\"c\",\n \"type\":\"accuracy\",\"model_info_details\":{\n \"target_column_names\":modelForm.accuracy,\n \"target_data_set\":\"\"}\n },\n {\"target_data_set\":modelForm.datasets.prediction.label,\"base_line_data_set\":\"c\",\n \"type\":\"prediction\",\"model_info_details\":{\"target_column_names\":modelForm.prediction,\n \"target_data_set\":modelForm.datasets.prediction.value}\n },\n {\"target_data_set\":modelForm.datasets.response.label,\"base_line_data_set\":\"c\",\n \"type\":\"response\",\"model_info_details\":{\"target_column_names\":modelForm.response,\n \"target_data_set\":modelForm.datasets.response.value}\n }];\n if (modelForm.datasets.accuracy !== null) {\n features[1] = {\"target_data_set\":modelForm.datasets.accuracy.label,\"base_line_data_set\":\"c\",\n \"type\":\"accuracy\",\"model_info_details\":{\n \"target_column_names\":modelForm.accuracy,\n \"target_data_set\":modelForm.datasets.accuracy.value}\n };\n }\n\n let modelDetails = {\n \"model_deployement\":modelForm.modelDeployment\n }\n if (modelForm.datasets.rawData !== null) {\n modelDetails[\"raw_data\"]= modelForm.datasets.rawData.label;\n modelDetails[\"raw_data_id\"]=modelForm.datasets.rawData.value;\n }\n if (modelForm.algoType !== null) {\n modelDetails[\"ml_algo_type\"]=modelForm.algoType.value;\n }\n if (this.state.checkedR !== false) {\n modelDetails[\"accuracy_ratcheting\"] = modelForm.data.ratchetingAccuracy;\n modelDetails[\"precision_ratcheting\"] = modelForm.data.ratchetingPrecision;\n modelDetails[\"recall_ratcheting\"] = modelForm.data.ratchetingRecall;\n modelDetails[\"score_ratcheting\"] = modelForm.data.ratchetingScore;\n modelDetails[\"silhouette_ratcheting\"] = modelForm.data.thresholdSilhouette;\n\n }\n if (this.state.checkedT !== false) {\n modelDetails[\"accuracy_threshold\"] = modelForm.data.thresholdAccuracy;\n modelDetails[\"rmse_threshold\"] = modelForm.data.thresholdRMSE;\n modelDetails[\"precision_threshold\"] = modelForm.data.thresholdPrecision;\n modelDetails[\"recall_threshold\"] = modelForm.data.thresholdRecall;\n modelDetails[\"score_threshold\"] = modelForm.data.thresholdScore;\n modelDetails[\"silhouette_threshold\"] = modelForm.data.thresholdSilhouette;\n }\n\n let mlInput = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"model_name\": modelForm.modelName,\n \"author\": localStorage.getItem('user_name'),\n \"version\": \"ver_0\",\n \"ml_stack\": modelForm.modelType.value,\n \"integration_id\": modelForm.integrationId,\n \"env_id\": localStorage.getItem(\"env_id\"),\n \"ml_model_type\": modelForm.mlType.value,\n \"features\": features,\n \"model_details\":modelDetails,\n };\n\n\n if (this.props.srcPage === \"edit_ml_model\") {\n let mlModelDetails = this.props.exMLData;\n let featureEx = mlModelDetails[\"features\"]\n for (let k = 0; k < featureEx.length; k++) {\n mlInput.features[k][\"feature_id\"]=featureEx[k][\"feature_id\"]\n }\n mlInput[\"model_id\"] = mlModelDetails[\"ml_model_id\"]\n call_update_api(ui_service_ip, '/ml-models', mlInput, session).then((response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", \"Model is updated successfully\", '');\n this.props.closeModal();\n } else {\n this.props.showToast(\"alert-danger\", response.message, '');\n this.props.closeModal();\n }\n });\n }\n else {\n call_post_api(ui_service_ip, \"ml-models\", mlInput, session).then(\n (response) => {\n if (response.code === 200) {\n this.props.setPage();\n this.props.showToast(\"alert-success\", \"ml-model added successfully\", '');\n\n } else {\n this.props.setPage();\n this.props.showToast(\"alert-danger\", response.message, '');\n }\n });\n }\n }\n break;\n\n case \"test_ml_model\":\n // Not in use\n this.closeTestConnection();\n let mlModelDetails = this.state;\n let mlModelData = constructTestMlModelConnection(mlModelDetails);\n let testMlModelData = { \"integration_id\": mlModelDetails.integrationId, \"file_name\": mlModelData };\n call_post_api(ui_service_ip, 'test_dataset_integration', testMlModelData, session).then((response) => {\n if (response.status_code === 200) {\n this.setState({ submit_button: false });\n this.setState({ testConnection: response });\n this.props.showToast(\"alert-success\", response.status_message, null);\n } else {\n this.setState({ submit_button: true });\n this.props.showToast(\"alert-danger\", response.status_message, null);\n }\n\n });\n break;\n\n case \"notification_configure\":\n const notificationConfigureData = this.formConsumeData(event);\n const isConsumeEdit = this.props.src_page === \"edit_consume\";\n let consumeSuccessProcess = isConsumeEdit? 'updated': 'added';\n let consumeErrorProcess = isConsumeEdit? 'update': 'add';\n let consumeResponseHandler = (response) => {\n if(response.code === 200) {\n if (isConsumeEdit){\n this.props.closeModal();\n }\n\n this.props.showToast(\"alert-success\",\n `Notification ${consumeSuccessProcess} successfully`,\n \"\");\n }else{\n this.props.showToast(\"alert-danger\",\n `could not ${consumeErrorProcess} notification`,\n \"\");\n }\n };\n if (isConsumeEdit){\n if (!this.requiresConsumeUpdate(notificationConfigureData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n const ex_consume_item = this.props.exConsumeDetails.consume_item;\n let consume_group_id = ex_consume_item.consume_group_id;\n\n // Update email configuration\n let updateConsumeEndpoint = \"consume_group\";\n notificationConfigureData[\"consume_group_id\"] = consume_group_id;\n call_update_api(ui_service_ip, updateConsumeEndpoint,\n notificationConfigureData, session).then(consumeResponseHandler);\n }else{\n call_post_api(ui_service_ip, \"consume_group\",\n notificationConfigureData, session).then(consumeResponseHandler);\n }\n\n break;\n\n\n\n case \"metricsForm\":\n const metricData = this.constructMetricData(event)\n const isMetricEdit = this.props.src_page === \"edit_metrics\";\n\n let successProcess = isMetricEdit? \"updated\" :\"added\"\n let errorProcess = isMetricEdit? \"update\" :\"add\"\n\n const responseHandler = (response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", `Metrics ${successProcess} successfully`,\n '')\n\n if (isMetricEdit) {\n // Close the edit metric modal pop-up\n this.props.closeModal();\n }\n\n }\n else if (response.code === 401) {\n this.props.showToast(\"alert-danger\", `Could not ${errorProcess} Metrics`, '')\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n }\n else {\n errors.password = response.message;\n this.setState({errors: errors});\n }\n }\n\n if (isMetricEdit) {\n let require_update = this.requires_metric_definition_update(metricData);\n if (require_update === false) {\n this.props.showToast(\"alert-info\", `No changes made`, '');\n this.props.closeModal();\n return;\n }\n\n const exMetricDetails = this.props.ex_metric_details;\n\n if (exMetricDetails.job_id !== null) {\n metricData.job_id = exMetricDetails.job_id\n }\n\n let metric_id = exMetricDetails.metrics_id\n let tenant_id = metricData.tenant_id\n let end_point = \"metrics_meta/metrics\";\n metricData[\"tenant_id\"] = tenant_id;\n metricData[\"metrics_id\"] = metric_id;\n call_update_api(ui_service_ip, end_point, metricData).then(responseHandler);\n }\n else {\n call_post_api(ui_service_ip, \"metrics_meta/metrics\", metricData).then(responseHandler);\n }\n\n break;\n default:\n break;\n }\n}\n\n\nexport function profileMLFilterSubmit(data, startDate, endDate)\n{\n\n let selectedModel = data[\"mlModels\"];\n\n if (selectedModel !== null && selectedModel !== undefined && selectedModel.length > 0) {\n let firstmlModelId = selectedModel[0];\n let fetchLastMLProfilingTime = getLastMLProfilingTime.bind(this);\n fetchLastMLProfilingTime(firstmlModelId);\n }\n\n let session = localStorage.getItem(\"sessionToken\");\n if (startDate !=null && endDate !=null) {\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n } else {\n let startDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n }\n data[\"tenant_id\"] = localStorage.getItem('team_id');\n call_post_api(ui_service_ip, \"ml/relationship/all\", data, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n data[\"data_set_ids\"] = response[\"data_set_ids\"];\n if (response[\"data_set_ids\"].length === 0)\n {\n this.setDataInTab([], [], {\"metrics\":[]}, null, startDate,endDate, false);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n } else {\n call_post_api(ui_service_ip, \"ml/attributes\", data, session).then((res_2) =>{\n if (res_2[\"code\"] === 200) {\n call_post_api(ui_service_ip, \"ml/metrics/charts\", data, session).then((res_3) =>{\n this.setDataInTab(response[\"relationships\"], res_2[\"result\"], res_3, null, startDate,endDate, false);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n });\n }\n });\n }\n } else if(response.code === 401) {\n this.showToast(\"alert-danger\",\"could not add Filter\",'')\n this.closeFilterModal()\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n } else {\n this.setState({errorOccurred: true});\n }\n });\n}\n\nexport function profileMLTimeFilterSubmit(data, startDate, endDate)\n{\n let session = localStorage.getItem(\"sessionToken\");\n let d = {}\n d[\"payload_start_time\"] = startDate;\n d[\"payload_end_time\"] = endDate;\n d[\"tenant_id\"] = localStorage.getItem('team_id');\n if ('type' in data && data[\"type\"] === \"mlModel\") {\n d[\"mlModels\"]=[data[\"value\"]];\n } else {\n d[\"data_source\"]= [data[\"value\"]];\n }\n d[\"tenant_id\"] = localStorage.getItem('team_id');\n call_post_api(ui_service_ip, \"ml/relationship/all\", d, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n data[\"data_set_ids\"] = response[\"data_set_ids\"];\n if (response[\"data_set_ids\"].length === 0)\n {\n this.setDataInTab([], [], {\"metrics\":[]}, null, startDate,endDate, false);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n } else {\n call_post_api(ui_service_ip, \"ml/attributes\", d, session).then((res_2) =>{\n if (res_2[\"code\"] === 200) {\n call_post_api(ui_service_ip, \"ml/metrics/charts\", d, session).then((res_3) =>{\n this.setDataInTab(response[\"relationships\"], res_2[\"result\"], res_3, data, startDate, endDate, true);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n });\n }\n });\n }\n } else if(response.code === 401) {\n this.showToast(\"alert-danger\",\"could not add Filter\",'')\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n } else {\n this.setState({errorOccurred: true});\n }\n });\n}\n\n\nexport function profileMLDropdownFilterSubmit(data, startDate, endDate)\n{\n\n let selectedmlModel = data[\"mlModels\"];\n if (selectedmlModel !== null && selectedmlModel !== undefined && selectedmlModel.length >0){\n let firstmlModelId = selectedmlModel[0];\n let fetchLastMLProfilingTime = getLastMLProfilingTime.bind(this);\n fetchLastMLProfilingTime(firstmlModelId);\n }\n\n let session = localStorage.getItem(\"sessionToken\");\n if (startDate !=null && endDate !=null) {\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n } else {\n let startDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00').toString();\n let endDate = moment().utc().endOf('day').format('YYYY-MM-DD 23:59:59').toString();\n data[\"payload_start_time\"] = startDate;\n data[\"payload_end_time\"] = endDate;\n }\n\n data[\"tenant_id\"] = localStorage.getItem('team_id');\n call_post_api(ui_service_ip, \"ml/relationship/all\", data, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n data[\"data_set_ids\"] = response[\"data_set_ids\"];\n if (response[\"data_set_ids\"].length === 0)\n {\n this.setDataInTab([], [], {\"metrics\":[]}, null, startDate,endDate, false);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n } else {\n call_post_api(ui_service_ip, \"ml/attributes\", data, session).then((res_2) =>{\n if (res_2[\"code\"] === 200) {\n call_post_api(ui_service_ip, \"ml/metrics/charts\", data, session).then((res_3) =>{\n this.changeChartBody(response[\"relationships\"], res_2[\"result\"], res_3, null, startDate,endDate);\n this.showToast(\"alert-success\",\"Filter added successfully\",'');\n this.setState({loadValue:false});\n });\n }\n });\n }\n } else if(response.code === 401) {\n this.showToast(\"alert-danger\",\"could not add Filter\",'')\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n } else {\n this.setState({errorOccurred: true});\n }\n });\n}\n\n\nexport function showTrigger() {\n let env=localStorage.getItem(\"env\");\n if (env === \"\" || env===\"none\") {\n } else {\n $(\".trigger__to-show\").removeClass(\"d-none\");\n }\n}\n\nexport function joinExistingTeamSignUp(event){\n this.disableButton();\n let {company, email, username, password, phone} = event;\n if (company === '' || email === '' || username === '' || password === '') {\n this.setState({hideSubmitButton: false});\n } else {\n const data = {user_signup_type: 'join_team', company: company, email: email,\n first_name: username, last_name: username, username: username,\n password: password, phone_number: phone};\n let protocol = getProtocol(iam_ip);\n fetch(protocol+'//'+iam_ip+'/signup', {\n method: 'POST',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth' }\n }).then(\n res => res.json()\n ).catch(\n error => console.error(\"signup api failed\")\n ).then(\n (response) => {\n if(response.code === 200) {\n this.props.setTeamPage(response);\n } else if(response.code === 401 && response.message === \"NAVIGATE_TO_NEXT_PAGE\"){\n this.props.setTeamPage(response);\n } else {\n this.setState({error: response.message, hideSubmitButton: false});\n }\n }\n )\n }\n}\n\nexport function attributeProfileFilterSubmit(dataSetId,attributeId)\n{\n if(dataSetId !== undefined && attributeId !== undefined && dataSetId !==\"\" && attributeId !== \"\") {\n let teamId = localStorage.getItem('team_id');\n let attData ={\"tenant_id\":teamId, \"attribute_id\":attributeId, \"data_set_id\":dataSetId};\n call_get_api(ui_service_ip, \"attributes/dataprofile\",attData).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let apiStatusCode = response.code;\n this.setApiResponse(response, apiStatusCode, true);\n } else {\n this.setState({errorOccurred: true});\n }\n });\n }\n}\n\nexport function updateUserNotification(notificationId, selectedNotification) {\n let session = localStorage.getItem(\"sessionToken\");\n let update_notification_data = {\"read_status\": true, \"tenant_id\": localStorage.getItem('team_id'),user_notification_id:notificationId}\n call_update_api(ui_service_ip, \"user_notification\",\n update_notification_data, session).then((response) => {\n if (response === undefined || response === null) {\n this.setState({errorOccurred: true});\n return;\n }\n\n if (response.code === 200) {\n // Update is successful\n selectedNotification[\"read_status\"] = true;\n\n // Update to redux store unread list\n this.props.markNotificationAsRead(notificationId);\n\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n\n}\n\n\nexport function getEndPointWithPreviousDateInfo(all_user_notifications, unread_notifications) {\n let reqEndPoint ={\"tenant_id\": localStorage.getItem('team_id'), \"count\":MAX_NOTIFICATIONS_PER_PAGE};\n\n if (IS_NONE_CHECK.includes(all_user_notifications) || IS_NONE_CHECK.includes(unread_notifications)) {\n return reqEndPoint;\n }\n\n if (all_user_notifications.length === 0 && unread_notifications.length === 0) {\n return reqEndPoint;\n }\n\n if (all_user_notifications.length > 0) {\n const prevResult = all_user_notifications[all_user_notifications.length - 1];\n reqEndPoint[\"previous_date\"] = prevResult.created_time;\n }\n\n if (unread_notifications.length === 0) {\n reqEndPoint[\"unread_previous_date\"]=\"-1\";\n } else {\n const prevResult = unread_notifications[unread_notifications.length - 1];\n reqEndPoint[\"unread_previous_date\"]=prevResult.created_time;\n }\n\n return reqEndPoint;\n}\n\nfunction fetchNotificationForPageNumber(endPoint, prevDataQuery, page, setNotificationsToRedux) {\n return call_get_api(ui_service_ip, endPoint,prevDataQuery).then((response) => {\n if (response === undefined || response === null || response.code !== 200) {\n this.setState({errorOccurred: true});\n return null;\n }\n\n // Valid result. Set the result to redux\n response.page = page;\n setNotificationsToRedux(response);\n\n return response\n });\n}\n\n\nasync function getNotifications(endPoint, prevDataQuery, totalPages, notificationReduxStore) {\n let reqEndPoint = endPoint;\n let prevData = prevDataQuery;\n // Get the notifications for the user batch by batch\n for (let currPage = 2; currPage <= totalPages; currPage++) {\n let result = await Promise.resolve(fetchNotificationForPageNumber(reqEndPoint, prevData, currPage, notificationReduxStore));\n if (result === undefined || result === null) {\n break;\n }\n\n // Form the end point for fetching next set of notifications\n const all_user_notifications = result.user_notification;\n const unread_notifications = result.unread_user_notification;\n let prevDataQuery = getEndPointWithPreviousDateInfo(all_user_notifications, unread_notifications);\n if (Object.keys(prevDataQuery).length === 0) {\n break;\n }\n\n reqEndPoint = \"user_notification\";\n prevData = prevDataQuery;\n }\n\n return true;\n}\n\n\nexport function fetchAllUserNotifications(setNotificationsToRedux) {\n const teamID = localStorage.getItem('team_id');\n if (IS_NONE_CHECK.includes(teamID)) {\n // Invalid team id / tenant_id. Skip fetching process\n return;\n }\n let data ={tenant_id: teamID,count:MAX_NOTIFICATIONS_PER_PAGE};\n let endPoint = \"user_notification\";\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined || response === null) {\n this.setState({errorOccurred: true});\n return;\n }\n\n if (response.code === 200) {\n response.resetData = true;\n response.page = 1;\n\n // Call redux store function for the storing the notifications\n setNotificationsToRedux(response);\n\n const all_user_notifications = response.user_notification;\n const unread_notifications = response.unread_user_notification;\n\n const allNotificationCount = response.all_notification_count;\n\n let prevDataQuery = getEndPointWithPreviousDateInfo(all_user_notifications, unread_notifications);\n if (Object.keys(prevDataQuery).length === 0) {\n return;\n }\n prevDataQuery = Object.assign({}, data, prevDataQuery);\n // Loop the API call to fetch all the notifications page by page\n // const totalPages = Math.ceil(allNotificationCount / MAX_NOTIFICATIONS_PER_PAGE);\n // This is temperory fix for demo purpose.\n let totalPages = Math.ceil(allNotificationCount / MAX_NOTIFICATIONS_PER_PAGE);\n if(allNotificationCount > 6000){\n totalPages = Math.ceil(6000 / MAX_NOTIFICATIONS_PER_PAGE);\n }\n \n getNotifications(endPoint, prevDataQuery, totalPages, setNotificationsToRedux).then((res => {\n if (res) {\n // Fetching notification is success\n } else {\n console.error(\"Error while fetching notifications\")\n }\n }));\n\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n\n}\n\n\nexport function hideRequestNotification(notificationId) {\n let session = localStorage.getItem(\"sessionToken\");\n let update_notification_data = {\n \"read_status\": true, \"hide_status\": true,\n \"tenant_id\": localStorage.getItem('team_id'),\n \"user_notification_id\":notificationId\n };\n\n const endPoint = \"hide/user_notification\";\n call_update_api(ui_service_ip, endPoint, update_notification_data, session).then((response) => {\n if (response === undefined || response === null) {\n // Server didn't return a response\n this.setState({errorOccurred: true});\n return;\n }\n\n if (response.code === 200) {\n // Status is updated in the server. So remove the current notification from\n // unread list and all notifications list\n this.props.removeNotificationFromList(notificationId);\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n\n}\n\nexport function checkErrorsInAddMLForm(prediction,response){\n let errors = {};\n\n if(Object.keys(prediction[0]).length === 0){\n errors.featurePrediction = \"prediction column is required\";\n }\n\n if(Object.keys(response[0]).length === 0){\n errors.featureResponse = \"response column is required\";\n }\n if(isEmpty(errors)){\n return {featureResponse:null,featurePrediction:null};\n }\n return errors;\n}\n\nexport function handleDeleteTeamMate(userDetails,state_details, handleClose){\n handleClose();\n let org_id = localStorage.getItem(\"org_id\");\n let inputData= {\"teammate_user_id\": userDetails[\"user_id\"],\n \"org_id\": org_id, \"user_id\": localStorage.getItem('user_id')};\n inputData[\"user_current_status\"] = \"deleted\";\n call_update_api(iam_ip, \"team/user\", inputData).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.props.showToast(\"alert-success\",\"User deleted successfully.\",\"\");\n } else {\n this.props.showToast(\"alert-danger\",\"could not update user status\",'');\n }\n });\n\n }\n\n//export function handleEditTeamMate(userDetails,state_details, handleClose){\n// handleClose();\n// let org_id = localStorage.getItem(\"org_id\");\n// let role_id = null;\n// let role_name = null;\n// if (state_details.role[\"value\"] !== \"\") {\n// role_id = state_details.role[\"value\"];\n// role_name = state_details.role[\"label\"];\n// }\n// let inputData= {\"user_id\": userDetails[\"user_id\"],\n// \"org_id\": org_id,\n// \"organisation\": state_details.organisation,\n// \"department\": state_details.department,\n// \"role_id\": role_id,\n// \"role_name\": role_name,\n// \"team_id\": localStorage.getItem('team_id')\n// };\n//\n// let msg = \"could not update user status\";\n// if (state_details.disableUser === true) {\n// inputData[\"user_current_status\"] = \"disabled\";\n// msg = \"User status changed to disabled successfully\";\n// } else if(state_details.disableUser === false) {\n// inputData[\"user_current_status\"] = \"active\";\n// msg = \"User status changed to active successfully\"\n// }\n// call_update_api(iam_ip, \"team/user\", inputData).then((response) => {\n// if (response === undefined) {\n// this.setState({errorOccurred: true});\n// } else if (response.code === 200) {\n// this.props.showToast(\"alert-success\", response.message,\"\");\n// } else {\n// this.props.showToast(\"alert-danger\",msg,'');\n// }\n// });\n//\n//\n//}\n\nexport function postDatabricks (event) {\n this.disableButton();\n let {databricksName, jobId, params, token, url, type} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let databrickData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": databricksName,\n \"pipeline_trigger_type\": \"databricks\",\n \"configuration\":\n {\n \"url\": url,\n \"token\": token,\n \"job_id\":Number(jobId),\n \"params\": params,\n \"type\": type\n }\n\n };\n\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${databrickData[\"pipeline_trigger_type\"]}`,\n \"\")\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal()\n }\n this.props.showToast(\"alert-success\",\n `${databrickData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${databrickData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(databrickData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n databrickData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n databrickData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n databrickData, session).then(pipeline_resp_handler);\n }\n }\n\nexport function validateDatabricksUrl(event) {\n this.disableButton();\n const {url,token} = event;\n let dataBricks = this.state.dataBricks;\n dataBricks.url = url;\n dataBricks.token = token;\n this.setState({dataBricks:dataBricks});\n let data = {\"url\": url,\"token\": token};\n call_post_api(ui_service_ip, \"databricks/jobs\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let optionArr = [];\n let emptyList = []\n if (response.jobs !== emptyList) {\n optionArr = response[\"jobs\"].map(function (row) {\n return {\"label\": row[\"job_name\"], \"value\": row[\"job_id\"], \"type\": row[\"task_type\"]};\n });\n }\n if (this.props.ex_details !== undefined) {\n let id = this.props.ex_details.configuration.job_id\n let databricksMatch = optionArr.filter(x => x.value === Number(id));\n if (databricksMatch.length > 0) {\n this.setState({job:databricksMatch});\n }\n }\n this.setState({options:optionArr});\n this.setState({check:true,hideSubmitButton:false});\n } else {\n this.setState({options: []});\n this.setState({check:false,hideSubmitButton:false});\n this.props.showToast(\"alert-danger\",\"Enter the Valid Databricks\",\"\");\n }\n });\n }\n\n\n export function postAWSLambda (event) {\n this.disableButton();\n let {awsLambdaName, awsLambdaFunctionName, awsAccessId, awsSecretKeyAccess, awsRegion, payload} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let lambdaData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": awsLambdaName,\n \"pipeline_trigger_type\": \"lambda\",\n \"configuration\":\n {\n \"aws_access_key_id\": awsAccessId,\n \"aws_secret_access_key\": awsSecretKeyAccess,\n \"aws_region_name\": awsRegion,\n \"url\": awsLambdaFunctionName,\n \"payload\": payload\n }\n };\n\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal();\n }\n this.props.showToast(\"alert-success\",\n `${lambdaData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${lambdaData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(lambdaData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n lambdaData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n lambdaData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n lambdaData, session).then(pipeline_resp_handler);\n }\n }\n\n\n\nexport function validateAWSCredentials(event) {\n this.disableButton();\n const {awsAccessId,awsSecretKeyAccess, awsRegion} = event;\n let awslambda = this.state.awsLambda;\n awslambda.awsAccessId = awsAccessId;\n awslambda.awsSecretKeyAccess = awsSecretKeyAccess;\n this.setState({awslambda:awslambda});\n let data = {\"aws_access_key_id\": awsAccessId,\"aws_secret_access_key\": awsSecretKeyAccess, \"aws_region_name\": awsRegion};\n call_post_api(ui_service_ip, \"aws/lambda/functions\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let optionArr = [];\n let emptyList = []\n if (response.jobs !== emptyList) {\n optionArr = response[\"functions\"].map(function (row) {\n return {\"label\": row[\"function_name\"], \"value\": row[\"function_arn\"]};\n });\n }\n this.setState({check:true,hideSubmitButton:false});\n if (this.props.ex_details !== undefined) {\n let url = this.props.ex_details.configuration.url\n let lambdaMatch = optionArr.filter(x => x.value === url);\n if (lambdaMatch.length > 0) {\n this.setState({lambda:lambdaMatch});\n }\n }\n this.setState({options:optionArr});\n this.setState({check:true,hideSubmitButton:false});\n } else {\n this.setState({options: []});\n this.setState({check:false,hideSubmitButton:false});\n this.props.showToast(\"alert-info\",\"Enter the valid AWS crdentials\",\"\");\n }\n });\n}\n\n\nexport function postWebhookData(event) {\n this.disableButton();\n let {webhookName,url,header,parameter,dataFormat,methods} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let webhookData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": webhookName,\n \"pipeline_trigger_type\": \"webhook\",\n \"configuration\":\n {\n \"header\": header,\n \"payload\": parameter,\n \"url\": url,\n \"http_method\": methods,\n \"data_format\": dataFormat,\n }\n };\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal()\n }\n this.props.showToast(\"alert-success\",\n `${webhookData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${webhookData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(webhookData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n webhookData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n webhookData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n webhookData, session).then(pipeline_resp_handler);\n }\n\n\n }\n\nexport function postCloudFunctionData(event) {\n this.disableButton();\n let {cloudFunctionName,url,header,parameter,dataFormat,methods} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let webhookData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": cloudFunctionName,\n \"pipeline_trigger_type\": \"cloudfunction\",\n \"configuration\":\n {\n \"header\": header,\n \"payload\": parameter,\n \"url\": url,\n \"http_method\": methods,\n \"data_format\": dataFormat,\n }\n };\n\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal()\n }\n this.props.showToast(\"alert-success\",\n `${webhookData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${webhookData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(webhookData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n webhookData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n webhookData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n webhookData, session).then(pipeline_resp_handler);\n }\n\n\n}\n\nexport function postEmailData(event) {\n if(this.state.emailData.email.length === 0) {\n\n this.setState({errorMsg:\"Enter a valid Email Id\"})\n\n }else {\n const {groupName,notificationType} = event;\n let schedule = this.state.emailData.schedule;\n this.disableButton();\n let scheduleValue = notificationType === \"recurring\" ? schedule : '1hour';\n let emailData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"consume_group_name\": groupName,\n \"consume_group_type\": \"email\",\n \"config_details\": {\n \"email_id\": this.state.emailData.email,\n \"notification_type\" : notificationType,\n \"schedule\" : scheduleValue,\n \"is_default_error_enabled\" : this.state.isChecked\n\n }\n };\n let session = localStorage.getItem(\"sessionToken\");\n const isConsumeEdit = this.props.src_page === \"edit_consume\";\n let consumeSuccessProcess = isConsumeEdit? 'updated': 'added';\n let consumeErrorProcess = isConsumeEdit? 'update': 'add';\n let consumeResponseHandler = (response) => {\n if(response.code === 200) {\n if (isConsumeEdit){\n this.props.closeModal();\n }\n\n this.props.showToast(\"alert-success\",\n `Notification ${consumeSuccessProcess} successfully`,\n \"\");\n }else{\n this.props.showToast(\"alert-danger\",\n `could not ${consumeErrorProcess} notification`,\n \"\");\n }\n if(!isConsumeEdit) {\n this.props.handleCancel();\n }\n };\n if (isConsumeEdit){\n if (!this.requiresConsumeUpdate(emailData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n\n const ex_consume_item = this.props.exConsumeDetails.consume_item;\n let consume_group_id = ex_consume_item.consume_group_id;\n // Update email configuration\n let updateConsumeEndpoint = \"consume_group\";\n emailData[\"consume_group_id\"] = consume_group_id;\n call_update_api(ui_service_ip, updateConsumeEndpoint,\n emailData, session).then(consumeResponseHandler);\n }else{\n call_post_api(ui_service_ip, \"consume_group\",\n emailData, session).then(consumeResponseHandler);\n }\n\n }\n\n}\n\nexport function validateSlackToken(event) {\n this.disableButton();\n const {token} = event;\n let data = {\"token\": token}\n call_post_api(ui_service_ip, \"slack/channel\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.setState({channels:response.channels});\n this.setState({check:true,hideSubmitButton:false});\n } else {\n this.setState({channels:[]});\n this.setState({check:false,hideSubmitButton:false});\n this.props.showToast(\"alert-info\",\"Enter the Valid Slack Token\",\"\");\n }\n });\n\n\n}\n\n\nexport function postSlackData(event) {\n this.disableButton();\n const {token,consumeName,channelName,description} = event;\n let slackPostData = {\"tenant_id\": localStorage.getItem('team_id'),\n \"consume_group_name\": consumeName,\n \"consume_group_type\": \"slack\",\n \"config_details\": {\n \"token\": token,\n \"channel_name\": channelName,\n \"description\":description\n }\n };\n let session = localStorage.getItem(\"sessionToken\");\n const isConsumeEdit = this.props.src_page === \"edit_consume\";\n let consumeSuccessProcess = isConsumeEdit? 'updated': 'added';\n let consumeErrorProcess = isConsumeEdit? 'update': 'add';\n let consumeResponseHandler = (response) => {\n if(response.code === 200) {\n if (isConsumeEdit){\n this.props.closeModal();\n }\n\n this.props.showToast(\"alert-success\",\n `Notification ${consumeSuccessProcess} successfully`,\n \"\");\n }else{\n this.props.showToast(\"alert-danger\",\n `could not ${consumeErrorProcess} notification`,\n \"\");\n }\n\n if(!isConsumeEdit) {\n this.props.handleCancel();\n }\n\n };\n if (isConsumeEdit){\n if (!this.requiresConsumeUpdate(slackPostData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n const ex_consume_item = this.props.exConsumeDetails.consume_item;\n let consume_group_id = ex_consume_item.consume_group_id;\n\n // Update email configuration\n let updateConsumeEndpoint = \"consume_group\";\n slackPostData[\"consume_group_id\"] = consume_group_id;\n call_update_api(ui_service_ip, updateConsumeEndpoint,\n slackPostData, session).then(consumeResponseHandler);\n }else{\n call_post_api(ui_service_ip, \"consume_group\",\n slackPostData, session).then(consumeResponseHandler);\n }\n\n\n\n}\n\n\nexport function postMetricsData(event) {\n this.disableButton();\n const metricData = this.constructMetricData(event);\n const isMetricEdit = this.props.src_page === \"edit_metrics\";\n let successProcess = isMetricEdit ? \"updated\" : \"added\"\n //let errorProcess = isMetricEdit? \"update\" :\"add\"\n\n const responseHandler = (response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", `Metrics ${successProcess} successfully`,\n '')\n\n if (isMetricEdit) {\n // Close the edit metric modal pop-up\n this.props.closeModal();\n }\n\n } else if (response.code === 401) {\n this.props.showToast(\"alert-danger\", response.message, '')\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n }\n if (!isMetricEdit) {\n this.props.handleClick();\n }\n }\n if (isMetricEdit === false){\n const author = String(localStorage.getItem(\"user_name\"));\n metricData['metrics_definition']['author'] = author;\n }\n\n if (isMetricEdit) {\n let require_update = this.requires_metric_definition_update(metricData);\n if (require_update === false) {\n this.props.showToast(\"alert-info\", `No changes made`, '');\n this.props.closeModal();\n return;\n }\n\n const exMetricDetails = this.props.ex_metric_details;\n\n if (exMetricDetails.job_id !== null) {\n metricData.job_id = exMetricDetails.job_id\n }\n let metric_id = exMetricDetails.metrics_id\n let prevAuthor = exMetricDetails.metrics_definition.author\n let tenant_id = metricData.tenant_id\n let end_point = \"metrics_meta/metrics\";\n metricData['metrics_definition']['author'] = prevAuthor;\n metricData[\"tenant_id\"] = tenant_id;\n metricData[\"metrics_id\"] = metric_id;\n call_update_api(ui_service_ip, end_point, metricData).then(responseHandler);\n } else {\n call_post_api(ui_service_ip, \"metrics_meta/metrics\", metricData).then(responseHandler);\n }\n postMixpanel('Custom Metrics created', { });\n\n}\n\nexport function formDatasource(integrationData) {\n let test_integration_data = {}\n if (integrationData.is_config_details !== undefined && integrationData.is_config_details !== null &&\n integrationData.is_config_details === false) {\n test_integration_data[\"tenant_id\"] = localStorage.getItem('team_id')\n test_integration_data[\"is_config_details\"] = false\n } else {\n let data = '';\n switch(integrationData.integration_type) {\n case \"azure_blob\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"filesystem\",\n \"error_storage\": integrationData.integration_config.error_storage,\n \"bucket_name\": integrationData.integration_config.bucket,\n \"sub_path\": integrationData.integration_config.sub_path,\n \"filetype\": integrationData.integration_config.filetype,\n \"storage_name\": integrationData.integration_config.storage_name,\n \"blob_secret\": integrationData.auth_config.secret_key,\n \"integration_type\": \"azure_blob\"\n };\n break\n case \"snow_flake\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":\"snow_flake\",\n \"url\": integrationData.integration_config.url,\n \"database\": integrationData.integration_config.database,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"schema\": integrationData.integration_config.schema,\n \"ware_house\": integrationData.integration_config.ware_house,\n \"user\": integrationData.auth_config.user,\n \"password\": integrationData.auth_config.password,\n \"table_name\": integrationData.integration_config.table_name\n };\n break\n case \"azure_data_lake\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"filesystem\",\n \"error_storage\": integrationData.integration_config.error_storage,\n \"bucket_name\": integrationData.integration_config.bucket,\n \"sub_path\": integrationData.integration_config.sub_path,\n \"filetype\": integrationData.integration_config.filetype,\n \"adl_tenant_id\": integrationData.auth_config.tenant_id,\n \"adl_client_id\": integrationData.auth_config.adl_client_id,\n \"secret_key\": integrationData.auth_config.secret_key,\n \"integration_type\": \"azure_data_lake\"\n };\n break\n case \"azure_databricks_table\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"error_storage\": integrationData.integration_config.error_storage,\n \"host\": integrationData.integration_config.host,\n \"secret_key\": integrationData.auth_config.secret_key,\n \"http_path\": integrationData.integration_config.http_path,\n \"catalog\": integrationData.integration_config.catalog,\n \"schema\": integrationData.auth_config.schema,\n \"table\": integrationData.auth_config.table_name, \n \"filetype\": integrationData.integration_config.filetype,\n \"integration_type\": \"azure_databricks_table\"\n };\n break \n case \"postgresql\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":\"postgresql\",\n \"host_url\": integrationData.integration_config.host_url,\n \"database_name\": integrationData.integration_config.database_name,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"schema_name\": integrationData.integration_config.schema_name,\n \"user_name\": integrationData.auth_config.user_name,\n \"password\": integrationData.auth_config.password,\n \"table_name\": integrationData.integration_config.table_name\n };\n break\n case \"redshift\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":\"redshift\",\n \"host_url\": integrationData.integration_config.host_url,\n \"database_name\": integrationData.integration_config.database_name,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"schema_name\": integrationData.integration_config.schema_name,\n \"user_name\": integrationData.auth_config.user_name,\n \"password\": integrationData.auth_config.password,\n \"table_name\": integrationData.integration_config.table_name\n };\n break\n case \"mysql\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":\"mysql\",\n \"host\": integrationData.integration_config.host,\n \"database\": integrationData.integration_config.database,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"user\": integrationData.auth_config.user,\n \"password\": integrationData.auth_config.password,\n \"table_name\": integrationData.integration_config.table_name\n };\n break\n case \"azure_sql\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":\"azure_sql\",\n \"host\": integrationData.integration_config.host,\n \"database\": integrationData.integration_config.database,\n \"schema\": integrationData.integration_config.schema,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"user\": integrationData.auth_config.user,\n \"password\": integrationData.auth_config.password,\n \"table_name\": integrationData.integration_config.table_name,\n };\n break\n case \"gcp_sql\":\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":\"gcp_sql\",\n \"host\": integrationData.integration_config.host,\n \"database\": integrationData.integration_config.database,\n \"schema\": integrationData.integration_config.schema,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"user\": integrationData.auth_config.user,\n \"password\": integrationData.auth_config.password,\n \"table_name\": integrationData.integration_config.table_name\n };\n break\n case POWER_BI_CONNECTOR:\n data = {\"integration_name\":integrationData.integration_name,\n \"data_store_type\":\"database\",\n \"integration_type\":POWER_BI_CONNECTOR,\n \"error_storage\": integrationData.integration_config.error_storage,\n \"workspace\": integrationData.integration_config.workspace,\n \"database\": integrationData.integration_config.database,\n \"table_name\": integrationData.integration_config.table_name,\n \"user_name\": integrationData.auth_config.user_name,\n \"password\": integrationData.auth_config.password,\n };\n break\n default:\n break\n }\n test_integration_data = construct_integration_data(data);\n }\n let session = localStorage.getItem(\"sessionToken\");\n test_integration_data[\"env_id\"] = integrationData[\"env_id\"];\n test_integration_data[\"integration_id\"] = integrationData[\"integration_id\"]\n test_integration_data[\"isTestConnection\"] = true;\n call_post_api(ui_service_ip, 'test_integration', test_integration_data, session).then((response) => {\n this.setState({test_conn:response});\n });\n}\n\nexport function getQualdoIps() {\n call_get_api(ui_service_ip, \"/get_qualdo_ips_created\").then((response) => {\n if (response.code !== undefined && response.code === 200) {\n let ip_address = response[\"ip_address\"];\n this.setState({ip_address: ip_address});\n }\n });\n}\n\nexport function postDatasource(integrationData) {\n //this.props.closeTestConnection();\n let session = localStorage.getItem(\"sessionToken\");\n if (integrationData[\"error_storage\"] !== '' && integrationData[\"error_storage\"] !== undefined) {\n if (integrationData[\"data_store_type\"] === \"filesystem\" && integrationData[\"error_storage\"] === integrationData[\"sub_path\"]) {\n this.props.showToast(\"alert-danger\", \"Error storage path should not be same as dataset\");\n this.setState({hideSubmitButton:false});\n } else if (integrationData[\"data_store_type\"] === \"database\" && integrationData[\"error_storage\"] === integrationData[\"table_name\"]){\n this.props.showToast(\"alert-danger\", \"Error storage Table Name and Table Name should not be same\");\n } else {\n let test_integration_data = construct_integration_data(integrationData);\n test_integration_data[\"integration_id\"] = integrationData[\"integration_id\"]\n call_post_api(ui_service_ip, 'test_integration', test_integration_data, session).then((response) => {\n if (response.status_code === 200) {\n this.props.setSubmitButton(false);\n this.props.showToast(\"alert-success\",response.status_message,null);\n this.setState({hideSubmitButton:false});\n } else {\n this.props.setSubmitButton(true);\n this.props.showToast(\"alert-danger\",response.status_message,null);\n this.setState({hideSubmitButton:false});\n }\n this.props.setData(integrationData,response)\n });\n }\n } else {\n // Edit Integration -> Test Connection\n let test_integration_data = construct_integration_data(integrationData);\n test_integration_data[\"integration_id\"] = integrationData[\"integration_id\"];\n call_post_api(ui_service_ip, 'test_integration', test_integration_data, session).then((response) => {\n if (response.status_code === 200) {\n this.props.setSubmitButton(false);\n /** Fix for issue - 1898. Commented the showToast calls since this reloads the page,\n editing integration from 2nd, 3rd page is not possible **/\n\n // this.props.showToast(\"alert-success\",response.status_message,null);\n this.setState({hideSubmitButton:false});\n } else {\n this.props.setSubmitButton(true);\n // this.props.showToast(\"alert-danger\",response.status_message,null);\n this.setState({hideSubmitButton:false});\n }\n this.props.setData(integrationData,response)\n });\n }\n postMixpanel('New DataSource created', { });\n}\n\nexport function postModelData(event) {\n let modelForm = this.state;\n let responseDatasetName = \"\";\n let responseDataset = \"\";\n let trainingDatasetName = \"\";\n let trainingDataset = \"\";\n let session = localStorage.getItem(\"sessionToken\");\n const {\n modelName,modelAuthored, mlStack, mlType, integrationId, testData, modelData,\n customAlgoType, customMlType, customMlStack,\n algoType, thresholdRecall, thresholdPrecision, thresholdScore,\n thresholdAccuracy, thresholdSilhouette, ratchetingRecall, ratchetingPrecision,\n ratchetingScore, ratchetingAccuracy, ratchetingSilhouette, accuracy, rawData, prediction, thresholdRMSE,\n response, trainingData, servingData, predictionColumn, responseColumn, version,\n recommendationKValue, predictionGroupBY, predictionItemCol, responseGroupBY,\n responseItemCol,columnType\n } = event;\n\n this.disableButton();\n\n if (modelForm.datasets.response !== null && modelForm.datasets.response.label !== undefined){\n responseDatasetName = modelForm.datasets.response.label;\n responseDataset = response;\n }\n else {\n responseDatasetName = \"-1\";\n responseDataset = \"-1\";\n }\n\n if (modelForm.datasets.trainingData !== null && modelForm.datasets.response.label !== undefined){\n trainingDatasetName = modelForm.datasets.trainingData.label;\n trainingDataset = trainingData\n }\n else {\n trainingDatasetName = \"-1\";\n trainingDataset = \"-1\";\n }\n\n const predictionData = {\n \"target_data_set\": modelForm.datasets.prediction.label, \"base_line_data_set\": \"c\",\n \"type\": \"prediction\", \"model_info_details\": {\n \"target_column_names\": [{\"Prediction1\": predictionColumn}],\n \"target_data_set\": prediction\n }\n };\n\n const responseData = {\n \"target_data_set\": responseDatasetName, \"base_line_data_set\": \"c\",\n \"type\": \"response\", \"model_info_details\": {\n \"target_column_names\": [{\"Response1\": responseColumn}],\n \"target_data_set\": responseDataset\n }\n };\n\n\n let features = [{\n \"base_line_data_set\": trainingDatasetName,\n \"target_data_set\": modelForm.datasets.servingData.label,\n \"type\": \"feature\", \"model_info_details\": {\n \"target_column_serving\": modelForm.featuresServing,\n \"target_column_training\": modelForm.featuresTraining,\n \"base_line_data_set_id\": trainingDataset,\n \"target_data_set\": servingData\n }\n },\n {\n \"target_data_set\": \"\", \"base_line_data_set\": \"c\",\n \"type\": \"accuracy\", \"model_info_details\": {\n \"target_column_names\": modelForm.accuracy,\n \"target_data_set\": \"\"\n }\n },\n predictionData,\n responseData];\n\n if (accuracy !== '') {\n features[1] = {\n \"target_data_set\": modelForm.datasets.accuracy.label, \"base_line_data_set\": \"c\",\n \"type\": \"accuracy\", \"model_info_details\": {\n \"target_column_names\": modelForm.accuracy,\n \"target_data_set\": accuracy\n }\n };\n }\n\n let modelDetails = {\n \"model_deployment\": (this.state.modelDeployment === \"others\" ? this.state.custom_deployment : this.state.modelDeployment),\n \"ml_algo_type\": algoType === \"others\" ? customAlgoType : algoType\n }\n if (rawData !== '') {\n modelDetails[\"raw_data\"] = modelForm.datasets.rawData.label;\n modelDetails[\"raw_data_id\"] = rawData;\n }\n\n if(columnType !== null){\n modelDetails[\"pred_res_column_type\"] = columnType;\n }\n\n if (testData !== '') {\n modelDetails[\"test_data\"] = modelForm.datasets.testData.label;\n modelDetails[\"test_data_id\"] = testData;\n }\n\n if (modelData !== '') {\n modelDetails[\"model_data\"] = modelForm.datasets.modelData.label;\n modelDetails[\"model_data_id\"] = modelData;\n }\n\n if (this.state.checkedR !== false) {\n modelDetails[\"accuracy_ratcheting\"] = ratchetingAccuracy;\n modelDetails[\"precision_ratcheting\"] = ratchetingPrecision;\n modelDetails[\"recall_ratcheting\"] = ratchetingRecall;\n modelDetails[\"score_ratcheting\"] = ratchetingScore;\n modelDetails[\"silhouette_ratcheting\"] = ratchetingSilhouette;\n }\n if (this.state.checkedT !== false) {\n // Keys should be in sync with :\n // qualdo/compute_engine/compute_measure/estimators/ml_constants.py\n // Variables: ACCURACY_THRESHOLD_NAME, other related variables next to it\n modelDetails[\"accuracy_threshold\"] = thresholdAccuracy;\n modelDetails[\"precision_threshold\"] = thresholdPrecision;\n modelDetails[\"recall_threshold\"] = thresholdRecall;\n modelDetails[\"score_threshold\"] = thresholdScore;\n modelDetails[\"rmse_threshold\"] = thresholdRMSE;\n modelDetails[\"silhouette_threshold\"] = thresholdSilhouette;\n }\n\n //modelDetails[\"serving_into_prediction\"] = modelForm.servingIntoPrediction;\n\n const selectedMLType = mlType === \"others\" ? customMlType : mlType;\n\n if (selectedMLType === \"recommendation\") {\n modelDetails[\"recommendation_k_value\"] = (recommendationKValue === \"\" ? null: recommendationKValue);\n if (recommendationKValue !== \"\" && recommendationKValue !== null ){\n predictionData[\"model_info_details\"].group_by = (predictionGroupBY === \"\" ? null : predictionGroupBY);\n predictionData[\"model_info_details\"].item_col = (predictionItemCol === \"\" ? null : predictionItemCol);\n responseData[\"model_info_details\"].group_by = (responseGroupBY === \"\" ? null : responseGroupBY);\n responseData[\"model_info_details\"].item_col = (responseItemCol === \"\" ? null : responseItemCol);\n }\n }\n\n let mlInput = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"model_name\": modelName,\n \"author\": modelAuthored,\n \"version\": version,\n \"ml_stack\": mlStack === \"others\" ? customMlStack : mlStack,\n \"integration_id\": integrationId,\n \"env_id\": localStorage.getItem(\"env_id\"),\n \"ml_model_type\": selectedMLType,\n \"features\": features,\n \"model_details\": modelDetails,\n \"username\": localStorage.getItem('user_name'),\n \"email\": localStorage.getItem('emailId')\n };\n\n\n if (this.props.srcPage === \"edit_ml_model\") {\n let mlModelDetails = this.props.exMLData;\n let featureEx = mlModelDetails[\"features\"]\n for (let k = 0; k < featureEx.length; k++) {\n mlInput.features[k][\"feature_id\"] = featureEx[k][\"feature_id\"]\n }\n mlInput[\"model_id\"] = mlModelDetails[\"ml_model_id\"]\n call_update_api(ui_service_ip, '/ml-models', mlInput, session).then((response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", \"Model is updated successfully\", '');\n this.props.closeModal();\n } else {\n this.props.showToast(\"alert-danger\", response.message, '');\n this.props.closeModal();\n }\n });\n } else {\n call_post_api(ui_service_ip, \"ml-models\", mlInput, session).then(\n (response) => {\n if (response.code === 200) {\n this.props.setPage();\n this.props.showToast(\"alert-success\", \"Model added successfully\", '');\n if (response.response !== undefined){\n let ml_model_id = response.response[\"ml_model_id\"];\n let ml_model_name = response.response[\"ml_model_name\"];\n let details = {\"ml_model_id\":ml_model_id, \"action_type\":\"add\", \"ml_model_name\":ml_model_name}\n UpdateReduxStore(\"Model\", this.props.prefetch, details);\n }\n } else {\n this.props.setPage();\n this.props.showToast(\"alert-danger\", response.message, '');\n }\n });\n }\n postMixpanel('New Model Configured', { });\n}\n\nexport function postDefaultMetrics(event) {\n let { metricsThreshold, windowCount, checkValue } = event;\n this.disableButton();\n let masType = this.props.exMetricDetails.metrics_definition.mas_type;\n const temp_gates = [];\n if (masType === \"dqm\" || masType === \"mlm\"){\n let session = localStorage.getItem(\"sessionToken\");\n var date = new Date();\n var currentTime = date.getUTCFullYear() + \":\" + (\"0\" + (date.getUTCMonth()+1)).slice(-2) + \":\" + (\"0\" + date.getUTCDate()).slice(-2) + \" \" +\n (\"0\" + date.getUTCHours()).slice(-2) + \":\" + (\"0\" + date.getUTCMinutes()).slice(-2) + \":\" + (\"0\" + date.getUTCSeconds()).slice(-2);\n\n if(this.props.metricName === \"Fill Rate\"){\n temp_gates.push([this.props.metricName, \"<\", metricsThreshold]);\n }\n else{\n temp_gates.push([this.props.metricName, \">\", metricsThreshold]);\n }\n const metricsUpdated = {\n \"metric_name\": this.props.metricName,\n \"metrics_definition\": {\n \"name\": this.props.metricName,\n \"version\": \"1\",\n \"dimension\": \"dataset\",\n \"compute_drift\": true,\n \"drift_threshold\": this.state.driftThreshold,\n \"metrics_threshold\": metricsThreshold,\n \"window_count\": windowCount,\n \"gates\": temp_gates,\n \"checks\": (this.state.selectedCheck !== null ? [{\"name\": this.state.selectedCheck.value, \"value\": checkValue}]:[]),\n \"sources\": [],\n \"timestamp\": currentTime,\n \"formula\": this.props.exMetricDetails.metrics_definition.formula,\n \"mas_type\": this.props.exMetricDetails.metrics_definition.mas_type,\n \"measures\": this.props.exMetricDetails.metrics_definition.measures\n },\n \"status\": this.state.activeStatus,\n \"metric_type\": this.props.exMetricDetails.metric_type,\n };\n\n if (\"is_template\" in this.props.exMetricDetails.metrics_definition) {\n metricsUpdated[\"metrics_definition\"][\"is_template\"] = this.props.exMetricDetails.metrics_definition.is_template;\n metricsUpdated[\"metrics_definition\"][\"requires_target\"] = this.props.exMetricDetails.metrics_definition.requires_target;\n }\n const team_id = localStorage.getItem('team_id');\n let end_point = \"metrics_meta/metrics\";\n metricsUpdated[\"tenant_id\"] = team_id;\n metricsUpdated[\"metrics_id\"] = this.props.metricId;\n call_update_api(ui_service_ip, end_point, metricsUpdated, session).then(\n (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.props.updateEnableButton(this.state.activeStatus);\n this.props.closeModal();\n this.props.showToast(\"alert-success\", 'metrics updated successfully', \"\")\n } else {\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", response.message, \"\")\n }\n }\n );\n }\n\n}\n\n\nexport function submitPrimaryCardRequest(cardDetail) {\n let paymentID = cardDetail.id;\n let last4 = cardDetail.lastFourDigits;\n let cardType = cardDetail.brand;\n let session = localStorage.getItem(\"sessionToken\");\n let teamID = localStorage.getItem('team_id');\n let data = {\"payment_id\":paymentID,\"tenant_id\":teamID}\n let end_point = \"customer/payment/primary\";\n\n call_get_api(ui_service_ip, end_point, data, session).then(\n (response) => {\n if (response === undefined) {\n this.showAlertSection(\"Error!\", \"Failed to update the primary payment card\", false, \"danger\");\n return;\n }\n\n if (response.code === 200) {\n let successMsg = `${cardType} (ending with #${last4}) is now your primary payment`;\n this.showAlertSection(\"Success!\", successMsg, false, \"success\");\n this.updatePrimaryStatusOfCards(paymentID);\n } else {\n let message = \"Error while updating primary card\";\n this.showAlertSection(\"Error!\", message, false, \"danger\");\n }\n });\n}\nexport function deleteCardDetails(cardDetails) {\n let session = localStorage.getItem(\"sessionToken\");\n let teamID = localStorage.getItem('team_id');\n let cardID = cardDetails.id;\n let brand = cardDetails.brand;\n let last4Digits = cardDetails.lastFourDigits;\n let end_point = \"customer/payment\";\n let data = {\"tenant_id\":teamID,\"card_detail_id\":cardID};\n call_delete_api(ui_service_ip, end_point, data, session).then(\n (response) => {\n if (response === undefined) {\n this.props.showAlertSection(\"Error!\", \"Failed to delete the card details\", true, \"danger\");\n return;\n }\n\n if (response.code === 200) {\n let successMsg = `${brand} (Card #${last4Digits}) has been removed successfully.`;\n this.props.showAlertSection(\"Success!\", successMsg, false, \"success\");\n this.props.removeCardDetailFromList(cardID);\n } else {\n let message = response.message;\n let errorMessage = \"Failed to delete the card details\";\n postUIlogs(`${errorMessage}: ${message}`);\n this.props.showAlertSection(\"Error!\", errorMessage, true, \"danger\");\n }\n });\n}\n\n\nexport function updatePaymentCard(cardDetails) {\n let session = localStorage.getItem(\"sessionToken\");\n let teamID = localStorage.getItem('team_id');\n let end_point = \"customer/payment\";\n let brand = cardDetails.brand;\n let last4Digits = cardDetails.lastFourDigits;\n cardDetails[\"tenant_id\"] = teamID\n call_update_api(ui_service_ip, end_point, cardDetails, session).then(\n (response)=>{\n\n if (response === undefined) {\n this.props.showAlertSection(\"Error!\", \"Failed to update the card details\", true, \"danger\");\n return;\n }\n\n if (response.code === 200) {\n let successMsg = `${brand} (Card #${last4Digits}) has been updated successfully.`;\n this.props.showAlertSection(\"Success!\", successMsg, false, \"success\");\n this.props.updateCardDetailToList(cardDetails);\n } else {\n let message = \"Error while updating card detail\";\n this.props.showAlertSection(\"Error!\", message, true, \"danger\");\n }\n this.setState({disableCardButton: false});\n });\n}\n\nexport function postPaymentNonce(cardDataToPost) {\n let session = localStorage.getItem(\"sessionToken\");\n let teamID = localStorage.getItem('team_id');\n let end_point = \"customer/payment\";\n cardDataToPost[\"tenant_id\"] = teamID;\n call_post_api(ui_service_ip, end_point, cardDataToPost, session).then(\n (response) => {\n if (response === undefined) {\n this.props.showAlertSection(\"Error!\", \"Failed to add the given card\", true,\"danger\");\n return;\n }\n\n if (response.code === 200) {\n let detail = response.detail;\n detail[\"id\"] = response.payment_detail_id;\n let cardType = detail.card_type;\n let last4 = detail.last_4;\n let successMsg = `${cardType} (Card #${last4}) has been added successfully.`;\n detail[\"isPrimary\"] = cardDataToPost[\"make_default\"];\n this.props.showAlertSection(\"Success!\", successMsg, false, \"success\");\n this.props.addNewCardDetailToList(detail);\n } else {\n let message = \"Error while adding card information. Please recheck the card details\";\n let submitBtn = document.getElementById('btn-add-card');\n submitBtn.removeAttribute('disabled');\n this.props.showAlertSection(\"Error!\", message, true, \"danger\");\n }\n });\n}\n\nexport function postCustomMetrics (event) {\n this.disableButton();\n const {targetDataSetId,sourceDataset,scheduleInterval} = event;\n let datasetName = this.state.selectedDataSetOption.label;\n let session = localStorage.getItem(\"sessionToken\");\n\n if (String(sourceDataset) === String(targetDataSetId)) {\n const err = \"Target dataset cannot be same as current dataset\";\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", err, \"\");\n return;\n }\n\n const exMetricDetails = this.props.exMetricDetails;\n const metricsId = exMetricDetails.metrics_id;\n const metricName = exMetricDetails.metric_name;\n let teamId = localStorage.getItem('team_id');\n\n let data = {\n \"metrics_id\": metricsId,\n \"data_set_id\": sourceDataset,\n \"target_data_set_id\": targetDataSetId,\n \"tenant_id\": teamId,\n \"schedule_interval\": scheduleInterval\n }\n const isMetricsEdit = this.props.src_page === \"edit_metrics\";\n let editProcess = isMetricsEdit ? 'updated' : 'enabled';\n\n let responseHandler = (response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\", \"Unable to process request\", \"\");\n }\n else if (response.code === 200) {\n const message = `Metric ${metricName} is ${editProcess} for dataset ${datasetName} successfully`;\n this.props.closeModal();\n this.props.showToast(\"alert-success\", message, \"\");\n }\n else {\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", response.message, \"\");\n }\n };\n const metricEditEndPoint = \"metrics/custom\";\n if (isMetricsEdit) {\n if (!this.requires_metrics_update(data)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n data[\"job_id\"] = exMetricDetails.job_id;\n call_update_api(ui_service_ip, metricEditEndPoint, data, session).then(\n responseHandler\n );\n }\n else {\n call_post_api(ui_service_ip, metricEditEndPoint, data, session).then(\n responseHandler\n );\n }\n\n}\n\n\nexport function postConsistencyMetrics (event) {\n this.disableButton();\n let ConsistencyDataSet = this.state.selectedDataSetOption;\n let ConsistencyTargetDataSet= this.state.targetDataSetOption;\n let ConsistencyMetrics = this.state.consistencyTypes;\n if (ConsistencyDataSet === null || ConsistencyTargetDataSet === null) {\n const err = \"Select a dataset to associate with metric\";\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", err, \"\");\n return;\n }\n\n let ConsistencyDataSetId = ConsistencyDataSet[\"value\"];\n// let datasetName = ConsistencyDataSet[\"label\"]\n let ConsistencyTargetDataSetId = ConsistencyTargetDataSet[\"value\"];\n if (String(ConsistencyDataSetId) === String(ConsistencyTargetDataSetId)) {\n const err = \"Target dataset cannot be same as current dataset\";\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", err, \"\");\n return;\n }\n let ConsistencyMetricsList = ConsistencyMetrics.map(function (metric) { return metric[\"value\"]; });\n let metrics_list = [];\n let has_all = false;\n if (ConsistencyMetricsList.length > 0) {\n let all_metrics = this.state.consistencyMetricOptions;\n if (ConsistencyMetricsList.includes(\"all\")) {\n has_all = true;\n ConsistencyMetricsList = all_metrics.filter(x => x[\"value\"] !== \"all\");\n ConsistencyMetricsList = ConsistencyMetricsList.map(function (metric) { return metric[\"value\"]; });\n }\n ConsistencyMetricsList.map(function (id) {\n let consistency_data = {\n \"metrics_id\": id,\n \"data_set_id\": ConsistencyDataSetId,\n \"target_data_set_id\": ConsistencyTargetDataSetId,\n \"tenant_id\": localStorage.getItem('team_id')\n }\n metrics_list.push(consistency_data);\n return 1;\n });\n }\n\n let data = {\"tenant_id\": localStorage.getItem('team_id'), \"metrics_list\": metrics_list}\n\n let toastMessage = \"Successfully Updated\"\n if (has_all === true || metrics_list.length > 1){\n toastMessage = `Data Consistency metrics are enabled successfully`;\n } else if (metrics_list.length === 1) {\n toastMessage = `${ConsistencyMetrics[0][\"label\"]} enabled successfully`;\n }\n\n let responseHandler = (response) => {\n\n if (response === undefined) {\n this.props.showToast(\"alert-danger\", \"Unable to process request\", \"\");\n }\n else if (response.code === 200) {\n const message = toastMessage;\n this.props.closeModal();\n this.props.showToast(\"alert-success\", message, \"\");\n }\n else {\n this.props.closeModal();\n this.props.showToast(\"alert-danger\", response.message, \"\");\n }\n };\n const metricEditEndPoint = \"metrics/consistency\";\n let session = localStorage.getItem(\"sessionToken\");\n call_post_api(ui_service_ip, metricEditEndPoint, data, session).then(\n responseHandler\n );\n\n}\n\nexport function updateAutoDebitStatus(auto_debit_status) {\n let session = localStorage.getItem(\"sessionToken\");\n let teamId = localStorage.getItem('team_id');\n\n let postError = {\"auto_debit\": auto_debit_status,\"tenant_id\":teamId};\n const autoDebitEndPoint = \"payment/autodebit\";\n call_update_api(ui_service_ip, autoDebitEndPoint, postError, session).then((res) => {\n\n // Server is not reachable. We did not receive any response from server\n if (res === undefined) {\n this.props.showToast(\"alert-danger\", \"Unable to reach server\", \"\");\n return;\n }\n\n // Server response is 200. Successful update\n if (res.code === 200) {\n this.setState({autoDebit: auto_debit_status});\n this.props.showToast(\"alert-success\", \"Successfully updated\", \"\");\n return;\n }\n\n // Server response is NOT 200. Unsuccessful update\n this.props.showToast(\"alert-danger\", \"Error while updating the auto-debit status\", \"\");\n });\n\n}\n\nexport function getIntegrationDetail(integration_id, formType) {\n if (integration_id !== undefined && integration_id !== null) {\n let teamId = localStorage.getItem('team_id');\n let data = {integration_id:integration_id, tenant_id:teamId}\n call_get_api(ui_service_ip, \"/integration\", data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let integration_details = response[\"integration\"];\n this.setState({ex_edit_integration_details: integration_details});\n }\n else {\n this.setState({errorOccurred: true});\n }\n });\n }\n}\n\n\nexport function submitPlanChangeRequest(data, showToast) {\n const teamId = localStorage.getItem('team_id');\n const session = localStorage.getItem(\"sessionToken\");\n\n let endPoint = `customer/choose_model?tenant_id=${teamId}`;\n\n call_post_api(ui_service_ip, endPoint, data, session).then((response) => {\n if (response === undefined) {\n showToast(\"alert-danger\", \"Unable to contact server. Try after sometime\", \"\");\n } else if (response.code === 200) {\n this.props.closeDowngradePopup();\n if (showToast !== undefined) {\n showToast(\"alert-success\", response.message, \"plan\");\n } else {\n showToast(\"alert-success\", response.message, \"plan\");\n }\n } else {\n this.props.closeDowngradePopup();\n if (showToast !== undefined) {\n showToast(\"alert-danger\", response.message, \"plan\");\n } else {\n showToast(\"alert-danger\", response.message, \"plan\");\n }\n\n }\n });\n}\n\n\nexport function deletePlanChangeRequest(change_request_id){\n let end_point = \"plan_change_requests\";\n let data = {\"tenant_id\": localStorage.getItem('team_id'),\"change_request_id\":change_request_id};\n call_delete_api(ui_service_ip, end_point, data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.props.showToast(\"alert-success\",\"plan change request deleted successfully.\",\"plan\");\n } else {\n this.props.showToast(\"alert-danger\",\"could not delete plan change request\",'');\n }\n });\n\n }\n\nexport function postModelABConfiguration(data, showToastFunction, isEdit=false) {\n this.disableButton();\n let session = localStorage.getItem(\"sessionToken\");\n\n if (isEdit) {\n call_update_api(ui_service_ip, \"model_ab_data\", data, session).then(\n (response) => {\n this.setState({hideSubmitButton: false});\n this.props.closeModalFunction();\n\n if (response === undefined) {\n // Unable to reach server\n showToastFunction(\"alert-danger\", \"Unable to update Model AB\", '', '', false);\n return;\n }\n\n if (response.code !== 200) {\n // We are getting response, but response code is not 200\n showToastFunction(\"alert-danger\", response.message, '', '', false);\n return;\n }\n\n // Successful post\n showToastFunction(\"alert-success\", \"Model AB updated successfully\",\n '', '', false);\n let model_ab_data = response.model_ab_data;\n let model_info_map = response.model_info_map;\n\n // Corresponding function definition: handleModelABAddition() in configure/index.js\n this.props.handleModelABAddition(model_ab_data, model_info_map, isEdit);\n });\n return;\n }\n\n call_post_api(ui_service_ip, \"model_ab_data\", data, session).then(\n (response) => {\n this.setState({hideSubmitButton: false});\n this.props.closeModalFunction();\n\n if (response === undefined) {\n // Unable to reach server\n showToastFunction(\"alert-danger\", \"Unable to configure Model AB\", '', '', false);\n return;\n }\n\n if (response.code !== 200) {\n // We are getting response, but response code is not 200\n showToastFunction(\"alert-danger\", response.message, '', '', false);\n return;\n }\n\n // Successful post\n showToastFunction(\"alert-success\", \"Model AB configured successfully\",\n '', '', false);\n let model_ab_data = response.model_ab_data;\n let model_info_map = response.model_info_map;\n\n // Corresponding function definition: handleModelABAddition() in configure/index.js\n this.props.handleModelABAddition(model_ab_data, model_info_map, isEdit);\n });\n}\n\n\nexport function validateAirflowUrl(event) {\n this.disableButton();\n const {url, username, password} = event;\n let airflow = this.state.airflow;\n airflow.url = url;\n airflow.username = username;\n airflow.password = password;\n this.setState({airflow:airflow});\n let data = {\"url\": url, \"username\": username, \"password\": password};\n call_post_api(ui_service_ip, \"airflow/dags\", data).then((response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\",\"Enter the Valid Airflow credentials\",\"\");\n } else if (response.code === 200) {\n let optionArr = [];\n let emptyList = []\n if (response.dags !== emptyList) {\n optionArr = response[\"dags\"].map(function (row) {\n return {\"label\": row[\"dag_id\"], \"value\": row[\"dag_id\"]};\n });\n }\n if (this.props.ex_details !== undefined) {\n let id = this.props.ex_details.configuration.dag_id\n let airflowMatch = optionArr.filter(x => x.value === Number(id));\n if (airflowMatch.length > 0) {\n this.setState({dag:airflowMatch});\n }\n }\n this.setState({options:optionArr});\n this.setState({check:true,hideSubmitButton:false});\n } else {\n this.setState({options: []});\n this.setState({check:false,hideSubmitButton:false});\n this.props.showToast(\"alert-danger\",\"Enter the Valid Airflow\",\"\");\n }\n });\n }\n\n\n\n export function postAirflow (event) {\n this.disableButton();\n let {airflowName, dagId, payload, url, username, password} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let airflowData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": airflowName,\n \"pipeline_trigger_type\": \"airflow\",\n \"configuration\":\n {\n \"url\": url,\n \"dag_id\":dagId,\n \"payload\": payload,\n \"username\": username,\n \"password\": password\n }\n\n };\n\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal()\n }\n this.props.showToast(\"alert-success\",\n `${airflowData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${airflowData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(airflowData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n airflowData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n airflowData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n airflowData, session).then(pipeline_resp_handler);\n }\n }\n\n\nexport function validateAWSSagemakerCredentials(event) {\n this.disableButton();\n const {awsAccessId,awsSecretKeyAccess, awsRegion} = event;\n let awsSagemaker = this.state.awsSagemaker;\n awsSagemaker.awsAccessId = awsAccessId;\n awsSagemaker.awsSecretKeyAccess = awsSecretKeyAccess;\n this.setState({awsSagemaker:awsSagemaker});\n let data = {\"aws_access_key_id\": awsAccessId,\"aws_secret_access_key\": awsSecretKeyAccess,\n \"aws_region_name\": awsRegion};\n call_post_api(ui_service_ip, \"aws/sagemaker\", data).then((response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\",\"Enter the Valid Sagemaker credentials\",\"\");\n } else if (response.code === 200) {\n let optionArr = [];\n let emptyList = []\n if (response.jobs !== emptyList) {\n optionArr = response[\"end_points\"].map(function (row) {\n return {\"label\": row[\"endpoint_name\"], \"value\": row[\"endpoint_name\"]};\n });\n }\n this.setState({check:true,hideSubmitButton:false});\n if (this.props.ex_details !== undefined) {\n let url = this.props.ex_details.configuration.url\n let sagemakerMatch = optionArr.filter(x => x.value === url);\n if (sagemakerMatch.length > 0) {\n this.setState({job:sagemakerMatch});\n }\n }\n this.setState({options:optionArr});\n this.setState({check:true,hideSubmitButton:false});\n } else {\n this.setState({options: []});\n this.setState({check:false,hideSubmitButton:false});\n this.props.showToast(\"alert-info\",\"Enter the valid AWS crdentials\",\"\");\n }\n });\n}\n\n\nexport function postAWSSagemaker (event) {\n this.disableButton();\n let {awsSagemakerName, awsAccessId, awsSecretKeyAccess, awsRegion, endpointName, payload} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let sagemakerData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": awsSagemakerName,\n \"pipeline_trigger_type\": \"sagemaker\",\n \"configuration\":\n {\n \"aws_access_key_id\": awsAccessId,\n \"aws_secret_access_key\": awsSecretKeyAccess,\n \"aws_region_name\": awsRegion,\n \"url\": endpointName,\n \"payload\": payload\n }\n };\n\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal();\n }\n this.props.showToast(\"alert-success\",\n `${sagemakerData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${sagemakerData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(sagemakerData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n sagemakerData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n sagemakerData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n sagemakerData, session).then(pipeline_resp_handler);\n }\n }\n\n\nexport function getAttributeData(dataSetId, attributeId) {\n let team_id = localStorage.getItem('team_id');\n if(dataSetId !== undefined && attributeId !== undefined && dataSetId !== -1 && attributeId !== -1) {\n let attData ={\"tenant_id\":team_id, \"attribute_id\":attributeId, \"data_set_id\":dataSetId};\n call_get_api(ui_service_ip, \"attributes/dataprofile\", attData).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let profileData = (response[\"data_profile\"] !== null && response[\"data_profile\"] !== undefined && response[\"data_profile\"].length > 0)? response[\"data_profile\"][0]: null;\n let size = response[\"size\"]\n if (size === undefined) {\n size = 0;\n }\n let digits_size = size.toString().length;\n if (digits_size <= 5) {\n size = (size / 1000).toFixed(2) + \" KB\"\n } else {\n size = (size / 1000000).toFixed(2) + \" MB\"\n }\n let distributionData = (response[\"data_distribution\"] !== null && response[\"data_distribution\"] !== undefined && response[\"data_distribution\"].length > 0)? response[\"data_distribution\"]: null;\n if(distributionData !== null) {\n distributionData['attribute_name'] = response[\"attribute_name\"];\n distributionData['datasetName'] = response[\"data_set_name\"];\n }\n this.convertDataForDiscoverCharts(response[\"metrics\"][0], response[\"data_set_name\"])\n this.setState({\n profileData: profileData,\n outlier: response[\"outlier\"],\n businessRule: response[\"business_rule\"],\n dataType: response[\"data_type\"],\n nativeType: response[\"native_type\"],\n size: size, count: response[\"count\"],\n distributionData: distributionData,\n isFetched: true,\n metricsChartData: response[\"metrics\"][0]\n });\n } else {\n this.setState({errorOccurred: true});\n }\n });\n }\n}\n\n\nexport function getDiscoverPageDataset(dataSetId, datasetName, sectionName) {\n let team_id = localStorage.getItem('team_id');\n\n if (dataSetId === undefined || dataSetId === null) {\n return;\n }\n\n let reqInpData = { \"tenant_id\": team_id, \"data_set_id\": dataSetId };\n\n call_get_api(ui_service_ip, \"chart_data\", reqInpData).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n return;\n } \n \n if (response.code !== 200) {\n this.setState({ errorOccurred: true });\n return;\n }\n\n \n let data = response[\"data\"];\n let convertedData = [];\n for (let i = 0; i < data.length; i++) {\n convertedData.push(data[i][\"chart_data\"]);\n }\n\n this.convertDataForDiscoverCharts(convertedData, datasetName, sectionName)\n this.setState({\n isFetched: true,\n metricsChartData: data\n });\n });\n}\n\n\nexport function validateKubeflowUrl(event) {\n this.disableButton();\n const {url,username,password} = event;\n let kubeflow = this.state.kubeflow;\n kubeflow.url = url;\n kubeflow.username = username;\n kubeflow.password = password;\n this.setState({kubeflow:kubeflow});\n let data = {\"url\": url,\"username\": username, \"password\":password};\n call_post_api(ui_service_ip, \"kubeflow_pipelines\", data).then((response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\",\"Enter the Valid Kubeflow credentials\",\"\");\n } else if (response.code === 200) {\n let optionArr = [];\n let emptyList = []\n if (response.pipelines !== emptyList) {\n optionArr = response[\"pipelines\"].map(function (row) {\n return {\"label\": row[\"pipeline_name\"], \"value\": row[\"pipeline_id\"]};\n });\n }\n if (this.props.ex_details !== undefined) {\n let id = this.props.ex_details.configuration.pipeline_id\n let kubeflowMatch = optionArr.filter(x => x.value === Number(id));\n if (kubeflowMatch.length > 0) {\n this.setState({pipeline:kubeflowMatch});\n }\n }\n this.setState({options:optionArr});\n this.setState({check:true,hideSubmitButton:false});\n } else {\n this.setState({options: []});\n this.setState({check:false,hideSubmitButton:false});\n this.props.showToast(\"alert-danger\",\"Enter the Valid Kubeflow details\",\"\");\n }\n });\n}\n\n\nexport function postKubeflow (event) {\n this.disableButton();\n let {kubeflowName, pipelineId, payload, username, password, url, experiment} = event;\n let session = localStorage.getItem(\"sessionToken\");\n let kubeflowData = {\n \"tenant_id\": localStorage.getItem('team_id'),\n \"pipeline_trigger_name\": kubeflowName,\n \"pipeline_trigger_type\": \"kubeflow\",\n \"configuration\":\n {\n \"url\": url,\n \"username\": username,\n \"password\": password,\n \"pipeline_id\":pipelineId,\n \"payload\": payload,\n \"experiment\": experiment\n }\n\n };\n\n const is_pipeline_edit = this.props.src_page === \"edit_pipeline\";\n let pipeline_success_process = is_pipeline_edit ? 'updated' : 'added'\n let pipeline_error_process = is_pipeline_edit ? 'update' : 'add'\n\n let pipeline_resp_handler = (response) => {\n if (response === undefined) {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${kubeflowData[\"pipeline_trigger_type\"]}`,\n \"\")\n } else if (response.code === 200) {\n if (is_pipeline_edit) {\n this.props.closeModal()\n }\n this.props.showToast(\"alert-success\",\n `${kubeflowData[\"pipeline_trigger_type\"]} ${pipeline_success_process} successfully`,\n \"\")\n } else {\n this.props.showToast(\"alert-danger\",\n `could not ${pipeline_error_process} ${kubeflowData[\"pipeline_trigger_type\"]}`,\n \"\")\n }\n if(!is_pipeline_edit) {\n this.props.handleCancel();\n }\n }\n\n if (is_pipeline_edit) {\n if (!this.requires_pipeline_update(kubeflowData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n // Update pipeline trigger information\n const pipeline_trigger_id = this.props.ex_details.pipeline_trigger_id\n const endPoint = \"pipeline_trigger\";\n kubeflowData[\"pipeline_trigger_id\"] = pipeline_trigger_id;\n call_update_api(ui_service_ip, endPoint,\n kubeflowData, session).then(pipeline_resp_handler);\n }\n else {\n call_post_api(ui_service_ip, \"pipeline_trigger\",\n kubeflowData, session).then(pipeline_resp_handler);\n }\n }\n\n\nexport function postPagerdutyData(event) {\n this.disableButton();\n const {token,consumeName} = event;\n let pagerdutyPostData = {\"tenant_id\": localStorage.getItem('team_id'),\n \"consume_group_name\": consumeName,\n \"consume_group_type\": \"pagerduty\",\n \"config_details\": {\n \"token\": token\n }\n };\n let session = localStorage.getItem(\"sessionToken\");\n const isConsumeEdit = this.props.src_page === \"edit_consume\";\n let consumeSuccessProcess = isConsumeEdit? 'updated': 'added';\n let consumeErrorProcess = isConsumeEdit? 'update': 'add';\n let consumeResponseHandler = (response) => {\n if(response.code === 200) {\n if (isConsumeEdit){\n this.props.closeModal();\n }\n\n this.props.showToast(\"alert-success\",\n `Notification ${consumeSuccessProcess} successfully`,\n \"\");\n }else{\n this.props.showToast(\"alert-danger\",\n `could not ${consumeErrorProcess} notification`,\n \"\");\n }\n\n if(!isConsumeEdit) {\n this.props.handleCancel();\n }\n\n };\n if (isConsumeEdit){\n if (!this.requiresConsumeUpdate(pagerdutyPostData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n const ex_consume_item = this.props.exConsumeDetails.consume_item;\n let consume_group_id = ex_consume_item.consume_group_id;\n\n // Update email configuration\n let updateConsumeEndpoint = \"consume_group\";\n pagerdutyPostData[\"consume_group_id\"] = consume_group_id;\n call_update_api(ui_service_ip, updateConsumeEndpoint,\n pagerdutyPostData, session).then(consumeResponseHandler);\n }else{\n call_post_api(ui_service_ip, \"consume_group\",\n pagerdutyPostData, session).then(consumeResponseHandler);\n }\n\n}\n\n\nexport function postmicrosoftTeamsData(event) {\n this.disableButton();\n const {url,consumeName} = event;\n let microsoftTeamsPostData = {\"tenant_id\": localStorage.getItem('team_id'),\n \"consume_group_name\": consumeName,\n \"consume_group_type\": \"MicrosoftTeams\",\n \"config_details\": {\n \"url\": url\n }\n };\n let session = localStorage.getItem(\"sessionToken\");\n const isConsumeEdit = this.props.src_page === \"edit_consume\";\n let consumeSuccessProcess = isConsumeEdit? 'updated': 'added';\n let consumeErrorProcess = isConsumeEdit? 'update': 'add';\n let consumeResponseHandler = (response) => {\n if(response.code === 200) {\n if (isConsumeEdit){\n this.props.closeModal();\n }\n\n this.props.showToast(\"alert-success\",\n `Notification ${consumeSuccessProcess} successfully`,\n \"\");\n }else{\n this.props.showToast(\"alert-danger\",\n `could not ${consumeErrorProcess} notification`,\n \"\");\n }\n\n if(!isConsumeEdit) {\n this.props.handleCancel();\n }\n\n };\n if (isConsumeEdit){\n if (!this.requiresConsumeUpdate(microsoftTeamsPostData)) {\n this.props.showToast(\"alert-info\", 'No changes made', \"\");\n this.props.closeModal();\n return;\n }\n\n const ex_consume_item = this.props.exConsumeDetails.consume_item;\n let consume_group_id = ex_consume_item.consume_group_id;\n\n let updateConsumeEndpoint = \"consume_group\";\n microsoftTeamsPostData[\"consume_group_id\"] = consume_group_id;\n call_update_api(ui_service_ip, updateConsumeEndpoint,\n microsoftTeamsPostData, session).then(consumeResponseHandler);\n }else{\n call_post_api(ui_service_ip, \"consume_group\",\n microsoftTeamsPostData, session).then(consumeResponseHandler);\n }\n\n}\n","import BasicPortlet from \"../../components/basicPortlet\";\nimport React from \"react\";\nimport { browserHistory} from 'react-router';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faBezierCurve} from '@fortawesome/free-solid-svg-icons';\nimport Image from \"../../components/image\";\nimport Load from '../../components/loadAction';\n\n\n\nclass NoModelComponent extends React.Component {\n constructor(props) {\n super(props);\n this.go_to_configure_page = this.go_to_configure_page.bind(this);\n // setUpBotton this variable for the to show configure datasource if the user have no integration details\n this.state = {setUpBotton: false}\n }\n\n go_to_configure_page() {\n let redirectPage = \"/model\"\n if(this.props.navigatePage !== undefined){\n redirectPage = this.props.navigatePage\n }\n browserHistory.push(redirectPage);\n }\n\n componentDidMount(){\n if (this.props.noIntegration !== null && this.props.noIntegration === true){\n this.setState({setUpBotton:true})\n }\n }\n\n render() {\n let buttonName = \"Setup Model\";\n let noContentSubtext = \"No models configured yet.\";\n if (this.props.customButtonName !== undefined) {\n buttonName = this.props.customButtonName;\n }\n\n if (this.props.noContentSubtext !== undefined) {\n noContentSubtext = this.props.noContentSubtext;\n }\n return (\n <>\n {\n // here we will check the undefined and the setUpBotton status if it is false means we will show the \n // loader if it is true means we will show the configure datasource button\n this.state.setUpBotton?\n \n
\n \n \n \n {\n (this.props.isInProgress !== undefined && this.props.isInProgress === true) ?\n

{this.props.message}

\n :\n <>\n

\n {noContentSubtext}\n

\n
\n \n
\n \n }\n
\n \n }\n />\n :\n (this.props.model === true?\n \n
\n \n \n \n

{noContentSubtext}

\n
\n \n
\n
\n \n }\n />\n :\n \n )\n }\n )\n }\n}\n\n\nexport default NoModelComponent;\n","import React from 'react';\nimport logo from '../assets/img/logo_qualdo.svg';\nimport oopsHuman from '../assets/img/opps_img_human.svg';\nimport oopsGlobe from '../assets/img/oops_img_globe.svg';\nimport googleLogo from '../assets/img/icon_google.svg';\nimport dataEngLogo from '../assets/img/icons/icon_data-engineers.svg';\nimport dataStewLogo from '../assets/img/icons/icon_data-stewards.svg';\nimport dataSciLogo from '../assets/img/icons/icon_data-scientists.svg';\nimport dataDevLogo from '../assets/img/icons/icon_data-devops.svg';\nimport logoLight from '../assets/img/logo_qualdo-light.svg';\nimport dataQualityLogo from '../assets/img/icons/icon_data-quality.svg';\nimport urlLink from '../assets/img/icons/icon_url-link.svg';\nimport notificationLogo from '../assets/img/icons/icon_notification.svg';\nimport addLogo from '../assets/img/icons/icon_add-data.svg';\nimport blob from '../assets/img/brand-logo_azure-blob-storage.png';\nimport pipelineTrigger from '../assets/img/icons/icon_pipeline-tigger.svg';\nimport success from '../assets/img/icons/icon_success.svg';\nimport incremental from '../assets/img/incremental.svg';\nimport timeSeries from '../assets/img/line-time-series-default.png';\nimport alert from '../assets/img/icons/icon_data-alert.svg';\nimport email from '../assets/img/icons/icon_thankyou-email.svg';\nimport linegraph from '../assets/img/icon-graph.png';\nimport areachartinfo from '../assets/img/d3-area-chart_info.png';\nimport areachartsuccess from '../assets/img/d3-area-chart_success.png';\nimport areachartwarning from '../assets/img/d3-area-chart_warning.png';\nimport areachartdanger from '../assets/img/d3-area-chart_danger.png';\nimport areachartPurple from '../assets/img/d3-area-chart_purple.png';\nimport areachartGray from '../assets/img/d3-area-chart_gray.png';\nimport areachartOrange from '../assets/img/d3-area-chart_orange.png';\nimport areachartBrown from '../assets/img/d3-area-chart_brown.png';\nimport brokenInternet from '../assets/img/icons/icon_internet-broken.svg';\nimport icon_privacyPolicy from '../assets/img/secure_data.svg';\n\nimport creditCard_visa from '../assets/img/credit-card_visa.svg';\nimport creditCard_master from '../assets/img/credit-card_master.svg';\nimport creditCard_amex from '../assets/img/credit-card_amex.svg';\nimport creditCard_discover from '../assets/img/credit-card_discover.svg';\nimport creditCard_jcb from '../assets/img/credit-card_jcb.svg';\nimport creditCard_paypal from '../assets/img/credit-card_paypal.svg';\n\nimport pricingIcon_free from '../assets/img/pricing-icon_free.svg';\nimport pricingIcon_starter from '../assets/img/pricing-icon_starter.svg';\nimport pricingIcon_professional from '../assets/img/pricing-icon_professional.svg';\n\nimport plan_starter from '../assets/img/plan-icon_starter.svg';\nimport plan_professional from '../assets/img/pricing-icon_professional.svg';\nimport illustration_paymentSuccess from '../assets/img/illustration_payment-success.svg';\nimport loader from \"../assets/img/loader.gif\"\nimport spinner from \"../assets/img/spinner.gif\"\n\nimport upgradePlan from '../assets/img/illustration_upgrade-rocket.svg';\nimport exceedModelLimit from '../assets/img/illustration_exceed-model-limit.svg';\n\nimport icon_monitor from '../assets/img/icon_monitor.svg';\nimport icon_configure from '../assets/img/icon_configure.svg';\n\nimport userProfile from '../assets/img/user_profile.png';\nimport icon_emptyData from '../assets/img/icons/icon_empty-data.svg';\nimport icon_uniqueData from '../assets/img/icons/icon_unique-data.svg';\nimport icon_duplicateData from '../assets/img/icons/icon_duplicate-data.svg';\nimport icon_errorData from '../assets/img/icons/icon_error-data.svg';\nimport icon_downRed from '../assets/img/icon_arrow-down_red.svg';\nimport icon_upGreen from '../assets/img/icon_arrow-up_green.svg';\nimport plan_navigation_arrow from '../assets/img/icons/icon_arrow-right.svg';\nimport icon_green_check from '../assets/img/icons/icon_check-green.svg';\nimport icon_model_cubes from '../assets/img/icons/icon_model-cubes.svg';\n\nimport icon_filter from '../assets/img/icons/icon_filter.svg';\nimport icon_cross_light from '../assets/img/icons/icon_cross-light.svg';\nimport icon_discover from '../assets/img/icons/icon_search-placeholder.svg';\nimport icon_info_circle from '../assets/img/icons/icon_info-circle.svg';\nimport icon_layer_partition from '../assets/img/icons/icon_layer-partition.svg';\n\n//Discover page icons\nimport icon_attribute from '../assets/img/icons/icon_attribute.svg';\nimport icon_datasource from '../assets/img/icons/icon_datasource.svg';\nimport icon_dataset from '../assets/img/icons/icon_dataset.svg';\nimport icon_environment from '../assets/img/icons/icon_environment.svg';\nimport icon_exclamation_gray from \"../assets/img/icons/icon_exclamation-gray.svg\"\n\n//powerbi\nimport icon_qd_pbi_configure from \"../assets/img/icons/icon_pbi-configure.svg\";\nimport icon_pbi_configure_success from \"../assets/img/icons/icon_pbi-configure-success.svg\";\nimport icon_powerbi_dark from \"../assets/img/icons/icon_powerbi-dark.svg\";\n\n\nimport logoDrx from \"../assets/img/managed_service_logos/logo_qualdo-drx.svg\"\nimport logoDrxLight from \"../assets/img/managed_service_logos/logo_qualdo-drx-light.svg\"\n\nimport logoMqx from \"../assets/img/managed_service_logos/logo_qualdo-mqx.svg\"\nimport logoMqxLight from \"../assets/img/managed_service_logos/logo_qualdo-mqx-light.svg\"\n\nimport logoBix from \"../assets/img/managed_service_logos/logo_qualdo-bix.svg\"\nimport logoBixLight from \"../assets/img/managed_service_logos/logo_qualdo-bix-light.svg\"\n\nimport gcp_brandMark from '../assets/img/icons/gcp_brandmark.svg';\nimport aws_brandMark from '../assets/img/icons/aws_brandmark.svg';\nimport azure_brandMark from '../assets/img/icons/azure_brandmark.svg';\nimport icon_timer_blue from '../assets/img/icons/icon_timer-blue.svg';\n\nimport icon_clipboard_check from '../assets/img/icons/icon_clipboard-check.svg';\nimport icon_exclamation_octagon from '../assets/img/icons/icon_exclamation-octagon.svg';\nimport icon_bullseye from '../assets/img/icons/icon_bullseye.svg';\nimport icon_stopwatch from '../assets/img/icons/icon_stopwatch.svg';\n\nclass Image extends React.Component {\n constructor() {\n super();\n this.images = {\n 'oopsHuman': oopsHuman,\n 'oopsGlobe': oopsGlobe,\n 'logoLight': logoLight,\n 'logo': logo,\n 'logoDrxLight':logoDrxLight,\n 'logoDrx':logoDrx,\n 'logoMqxLight':logoMqxLight,\n 'logoMqx':logoMqx,\n 'logoBixLight':logoBixLight,\n 'logoBix':logoBix,\n 'googleLogo': googleLogo,\n 'dataEngLogo': dataEngLogo,\n 'dataStewLogo': dataStewLogo,\n 'dataSciLogo': dataSciLogo,\n 'dataDevLogo': dataDevLogo,\n 'dataQuality': dataQualityLogo,\n 'urlLink': urlLink,\n 'notification': notificationLogo,\n 'addLogo': addLogo,\n 'blob': blob,\n 'pipeline trigger':pipelineTrigger,\n 'success':success,\n 'incremental': incremental,\n 'timeSeries': timeSeries,\n 'alert':alert,\n 'email':email,\n 'linegraph': linegraph,\n 'areachartinfo': areachartinfo,\n 'areachartsuccess': areachartsuccess,\n 'icon_down_red': icon_downRed,\n 'icon_up_green': icon_upGreen,\n 'plan_navigation_arrow': plan_navigation_arrow,\n 'icon_green_check': icon_green_check,\n 'areachartwarning': areachartwarning,\n 'areachartdanger': areachartdanger,\n 'areachartPurple': areachartPurple,\n 'areachartGray': areachartGray,\n 'areachartOrange': areachartOrange,\n 'areachartBrown': areachartBrown,\n 'brokenInternet': brokenInternet,\n 'icon_privacyPolicy': icon_privacyPolicy,\n 'creditCard_visa':creditCard_visa,\n 'creditCard_master':creditCard_master,\n 'creditCard_amex':creditCard_amex,\n 'creditCard_discover':creditCard_discover,\n 'creditCard_jcb':creditCard_jcb,\n 'creditCard_paypal':creditCard_paypal,\n 'pricingIcon_professional':pricingIcon_professional,\n 'pricingIcon_free':pricingIcon_free,\n 'pricingIcon_starter':pricingIcon_starter,\n 'upgradePlanIcon': upgradePlan,\n 'exceedModelLimit': exceedModelLimit,\n 'plan_starter': plan_starter,\n 'plan_professional': plan_professional,\n 'illustration_paymentSuccess': illustration_paymentSuccess,\n 'loader': loader,\n 'spinner': spinner,\n 'icon_monitor': icon_monitor,\n 'icon_configure': icon_configure,\n 'userProfile': userProfile,\n 'icon_emptyData': icon_emptyData,\n 'icon_uniqueData': icon_uniqueData,\n 'icon_duplicateData': icon_duplicateData,\n 'icon_errorData': icon_errorData,\n 'icon_filter': icon_filter,\n 'icon_model_cubes': icon_model_cubes,\n 'icon_cross_light': icon_cross_light,\n 'icon_discover': icon_discover,\n 'icon_attribute':icon_attribute,\n 'icon_datasource':icon_datasource,\n 'icon_dataset':icon_dataset,\n 'icon_environment':icon_environment,\n 'icon_exclamation_gray': icon_exclamation_gray,\n 'gcp_brandMark': gcp_brandMark,\n \"aws_brandMark\":aws_brandMark,\n \"azure_brandMark\":azure_brandMark,\n 'icon_qd_pbi_configure': icon_qd_pbi_configure,\n 'icon_pbi_configure_success':icon_pbi_configure_success,\n 'icon_powerbi_dark':icon_powerbi_dark,\n 'icon_timer_blue':icon_timer_blue,\n 'icon_info_circle':icon_info_circle,\n 'icon_layer_partition':icon_layer_partition,\n 'icon_clipboard_check':icon_clipboard_check,\n 'icon_exclamation_octagon':icon_exclamation_octagon,\n 'icon_bullseye':icon_bullseye,\n 'icon_stopwatch':icon_stopwatch,\n };\n }\n\n render() {\n return (\n \n );\n }\n}\n\nexport default Image;","import React, { Component } from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearch, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport {CONFIGURE_DATA_SOURCE_URL, MONITOR_MODEL_URL, MONITOR_DATA_URL,\n PROFILE_DATA_URL, PROFILE_MODEL_URL, MONITOR_MODEL_PERFORMANCE_URL} from \"../utils/constant\";\nimport {Mediakind} from \"./mediaKind\"\n\n\nclass VideoContent extends Component {\n\n constructor(props) {\n super(props);\n this.getVideo = this.getVideo.bind(this);\n this.getVideoUrl = this.getVideoUrl.bind(this);\n this.state = {\n }\n }\n\n renderContent(name) {\n if(this.props.modelName !== undefined) {\n switch(this.props.modelName) {\n case \"Model Errors\":\n return (<>

{this.props.modelName}

\n

This page is the primary source to look for any issues around your model. All the supported metrics on the model side are configured with a threshold by default but it can be changed at any point in time from the Metrics page. Any threshold breach on drift detected is highlighted as the error in red.

\n

Drifts in the configured model

\n

This section is a view to understand different errors/drifts contributing to the model decay. At this point of time, any threshold violation of the performance metrics will appear under this section.

\n

Drifts in the serving data of the model

\n

This section is a view to represent the overall drift in the serving data. Many features might be contributing to it and the same can be understood by clicking on contribution in the options.

\n

Consistency Errors in the Serving data in comparison with the Training data

\n

This section highlights any consistency error between serving and training data. Consistency problems can easily lead to model failure if unnoticed.

\n

Feature Drifts on Serving data over time

\n

This section captures the drifts in features of the serving data over time which can cause a potential decay of the model.

\n

Feature Drifts on Serving data in comparison with training data

\n

This section captures the drifts in features of the serving data in comparison with the training data. Variations in serving data can cause the poor performance of a model compared to the time it was trained.

\n

Drifts in Predictions of model

\n

This section captures how the predictions of the model themselves are drifting over time. It needn’t always point to a performance issue in the model but will be a good starting point to understand any imbalance of serving data.

\n

Drifts in response of model

\n

This section captures how the business response to the predictions made are drifting over time.

\n );\n case \"Model Performance Dashboard\":\n return (<>

{this.props.modelName}

\n

The page provides different model performance metrics for the configured model.

\n

Model Accuracy

\n

Model Accuracy is the first level of metrics to understand the model performance. For a classification type of model, this section provides the time-series view of metrics like F1 score, Precision, Recall, etc. For a regression model, this section provides basic metrics like RMSE, MAE, etc.

\n

Model Evaluation

\n

Model Evaluation is the second level metrics to debug further to understand the model performance. For a classification type of model, this section is loaded with additional views like confusion matrix, AUC, etc.

\n

Model Monitoring

\n

Model Monitoring is a view to monitor the resource utilization of the model like CPU, Memory Usages, etc.

\n );\n default:\n return \"\"\n }\n }\n switch(name) {\n case \"Data Completeness Dashboard\":\n return(<>

{name}

\n

Fill rate is a metric to understand whether desired data are present or not. Qualdo has a default definition to detect the presence or absence of desired data but this definition can be customized.

\n

Cards

\n

1. Cards on this page give an overview of the percentage of data contributing to different ranges of fill rate and the total number of rows present.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. Data completeness visualization gives an overview of the fill rate of the attribute(s) in the data source by default or based on the applied filters.

\n

2. Attributes are on the circumference and each of the concentric circles represents a fill rate in percentage.

\n

3. Each bar represents the fill rate for the attribute they correspond to and hover over the bar to find out the fill rate value.

\n

4. Fill rate values shown are always the lowest fill rate for attributes in the selected period.

\n

5. Visualization will change based on the applied filters.

\n

6. Clicking on any attribute will take you to a detailed overview of the attribute.

\n

Grid

\n

1. A table view is to get quick access to the fill rates of attributes.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Data Accuracy Dashboard\":\n return(<>

{name}

\n

Data Outliers are metrics to capture any anomaly in the data.

\n

Cards

\n

1. Cards on this page give an overview of outliers present in the data.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. The visualization captures the different types of accuracy errors present in the configured data at a glimpse. Currently, data outlier is the supported metric.

\n

2. Every unique type of accuracy error is shown as separate circles. Data Outlier is represented as a single circle surrounded by attribute names found to contain outliers.

\n

3. Higher the error values, the bigger will be the circle containing the metric name (Data outliers).

\n

4. Hover over the circle containing the attribute name to find out the outlier value.

\n

5. For the selected period, visualization always shows the maximum of the outlier errors that occurred per attribute.

\n

6. Visualization will change based on the applied filters.

\n

7. Clicking on any attribute will take you to a detailed overview of the attribute.

\n

Grid

\n

1. A table view is to get quick access to the outlier values in the data.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Data Conformity Dashboard\":\n return(<>

{name}

\n

Data conformity errors are metrics to identify data that don’t comply with certain standards. For example, a date attribute has to be of the format “dd/mm/yyyy”

\n

Cards

\n

1. Cards on this page give an overview of different types of conformity errors that occurred.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. Data conformity visualization captures the different types of conformity errors present in the configured data at a glimpse.

\n

2. Every unique type of conformity error is shown as separate circles. Within the circle are attribute names found to contain errors and a single circle containing the conformity error name.

\n

3. Higher the error values, the bigger will be the circle containing the conformity error name.

\n

4. Hover over the circle containing the attribute name to find out the conformity error value.

\n

5. For the selected period, visualization always shows the maximum of the conformity errors that occurred per attribute.

\n

6. Visualization will change based on the applied filters.

\n

7. Clicking on any attribute will take you to a detailed overview of the attribute.

\n

Grid

\n

A table view is to get quick access to the different conformity errors in the data.

\n

This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Data Timeliness Dashboard\":\n return(<>

{name}

\n

Recency is a metric to understand how latest the data is. Recency is measured in days once the dataset is configured and is reset every time the dataset is refreshed.

\n

Cards

\n

1. Cards on this page give an overview of how recent the datasets are.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. Visualization gives an overview of recency for the configured datasets.

\n

2. Datasets are on the circumference and each of the concentric circles represents different recency in days.

\n

3. Each bar represents the recency of the dataset they correspond to and hover over the bar to find the recency value.

\n

4. For the selected time, the visualization shows the maximum recency value of a dataset. (i.e) the longest duration in days for which the dataset hasn’t been refreshed.

\n

5. Visualization will change based on the applied filters.

\n

6. Clicking on any attribute will take you to a detailed overview of the attribute.

\n

Grid

\n

1. A table view is to get quick access to the recency of the datasets.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Relationships & Errors within a Datasource\":\n return(<>

{name}

\n

Data relationship is a way to understand how the data are interconnected. Currently, attributes that are similar in nature will be auto-detected and shown on the visualization.

\n

Cards

\n

1. Cards on this page give an overview of the different data quality metrics on the configured data source.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. Visualization gives a quick peek of how attributes in different data sources are related to each other. A relation is represented as a line connecting the related attributes.

\n

2. Attributes are found on the circumference and each group of attributes belongs to a dataset within the data source.

\n

3. Hover over the attribute to understand about the other attributes they are related to and the confidence score of the relationships. It also shows you details about any errors detected in that attribute.

\n

4. Different types of errors are represented in a different color next to the attribute and a legend is placed to guide you.

\n

5. Error-values shown are always the latest errors found on the attributes for the selected time.

\n

6. Visualization will change based on the applied filters.

\n

7. Clicking on any attribute will take you to a detailed overview of the selected attribute.

\n

Grid

\n

1. A table view is to get quick access to the different data quality metrics and their associated values for each attribute.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Data Consistency Dashboard\":\n return(<>

{name}

\n

Data consistency errors are metrics to identify any consistency errors happening between two datasets. Data consistency is not enabled automatically and the user can enable it from the “Metrics” page.

\n

Cards

\n

1. Cards on this page give an overview of different types of consistency errors that occurred.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. Visualization captures the data consistency issues in the dataset being monitored in comparison with the reference dataset provided.

\n

2. Attributes are found on the circumference and each group of attributes belongs to a dataset within the data source.

\n

3. Different types of consistency errors are represented in a different color next to the attribute and a legend is placed to guide you.

\n

4. Hover over the attribute to find out the error values.

\n

5. For the selected period, visualization always shows the maximum of the consistency errors that occurred per attribute.

\n

6. Visualization will change based on the applied filters.

\n

7. Clicking on any attribute will take you to a detailed overview of the attribute.

\n

Grid

\n

1. A table view is to get quick access to the different consistency errors in the data.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Drift Overview\":\n return(<>

{name}

\n

This page provides a quick view of how the model is performing and the different types of drifts detected in the model which in turn affects the performance.

\n

Cards

\n

1. Cards on this page give an overview of how the model is performing and highlight any issues on a glance.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

Visualization

\n

1. Visualization gives an overview of different types of drifts and also on when they are happening at a glimpse.

\n\t

2. Features are on the circumference and each of the concentric circles represents a timeline.

\n\t

3. Drifts on features are represented by a bar and the bar starts and ends based on the timeline of when it started and ended.

\n\t

4. Hover over the bar to know more details of the drifts.

\n\t

5. For the selected period, visualization represents the maximum drift noticed during that time.

\n

Grid

\n

1. A table view is to get quick access to the different model drifts and consistency errors.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Model Performance\":\n return(<>

{name}

\n

1. This section covers the model performance metrics for the configured models.

\n

2. Model accuracy metrics like f1 score, precision, recall and Model Evaluation metrics like ROC, AUC are presented for investigation.

\n \n );\n case \"Data Completeness Errors - Across Datasources\":\n return(<>

{name}

\n

1. Fill rate is a metric to understand whether desired data are present or not. Qualdo has a default definition to detect the presence or absence of desired data but this definition can be customized.

\n

2. Fill rate values represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Fill rate) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Timeliness Errors - Across Datasources\":\n return(<>

{name}

\n

1. Recency is a metric to understand how latest the data is. Recency is measured in days once the dataset is configured and is reset every time the dataset is refreshed.

\n

2. Recency values represented in days are presented for only for the datasets. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Recency) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Accuracy Errors - Across Datasources\":\n return(<>

{name}

\n

1. Data Outliers are metrics to capture any anomaly in the data.

\n

2. Data Outliers values represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Outliers) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Consistency Errors - Across Datasources\":\n return(<>

{name}

\n

1. Data consistency errors are metrics to identify any consistency errors happening between two datasets. Data consistency is not enabled automatically and the user can enable it from the “Metrics” page.

\n

2. Data Consistency errors represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (consistency checks) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Conformity Errors - Across Datasources\":\n return(<>

{name}

\n

1. Data conformity errors are metrics to identify data that don’t comply with certain standards. For example, a date attribute has to be of the format “dd/mm/yyyy”.

\n

2. All the supported conformity checks appear as separate groups.

\n

3. Data Conformity errors represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (conformity checks) are indicated as error in red color.

\n

4. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

5. Inside show more, data can be filtered by a dataset for further analysis.

\n

6. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Drift Errors - Across Datasources\":\n return( <>

{name}

\n

1. Data Drift is a metric to understand variations in the statistical properties of the data. It’s an indicator to a possible problem in the data.

\n

2. Drift values represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Drift) are indicated as error in red color.

\n

3. Drift values are also computed and presented on aggregates like mean, min, max, mode etc.

\n

4. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

5. Inside show more, data can be filtered by a dataset for further analysis.

\n \n );\n\n case \"Data Uniqueness Errors - Across Datasources\":\n return(<>\n

{name}

\n

Uniqueness is a metric to understand whether duplicates present in the data or not.

\n

Uniqueness values represented in numbers are presented for both dataset and attributes.

\n

Three charts are shown on this page and the rest of the views are available on clicking show more.

\n

Inside show more, data can be filtered by datasource, dataset, attribute and metrics for further analysis.

\n

Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n\n case \"Data Uniqueness Dashboard\":\n return(<>

Data Uniqueness Overview

\n

Uniqueness is a metric to understand whether duplicates present in your data or not.

\n

Cards

\n

1. Cards on this page give an overview of the number of datasets having the duplicate data.

\n

2. Refer to the individual help section on the cards to understand what they represent.

\n

3. Card values will change based on the applied filters (Top level filter and the filters found near the visualization)

\n

Visualization

\n

1. Data uniqueness visualization gives an overview of the uniqueness of the attribute(s) in the datasource by default or based on the applied filters.

\n

2. Attributes are on the circumference and each of the concentric circles represents a uniqueness in percentage.

\n

3. Each bar represents the uniqueness for the attribute they correspond to and hover over the bar to find out the uniqueness percentage value.

\n

4. Uniqueness values shown are always the lowest uniqueness for attributes in the selected period.

\n

5. Visualization will change based on the applied filters.

\n

6. Clicking on any attribute will take you to a detailed overview of the attribute.

\n

Grid

\n

1. A table view is to get quick access to the uniqueness of attributes.

\n

2. This view also will change based on the applied filters (Top level filter and the filters found near the visualization)

\n \n );\n case \"Attribute Drifts\":\n return (<>

{name}

\n

1. This page gives a detailed summary of the selected attribute.

\n

2. Attribute Drifts is a visualization on different types of drifts happening on the selected attribute.

\n

a. Metrics drop down - Gives a view of drift on the values of attribute over time, drift on the applicable metrics on the attribute

\n

b. Aggregate drop down - Gives a view of drifts happening on the statistical measures of the attribute. Statistical measures are applied only on the numeric types.

\n );\n \n case \"Discover\":\n return (\n <>\n

{name}

\n

1. Discover page helps you to discover the information about a particular Environment, Datasource, Dataset and Attributes in a single place. It also gives you the view on the complete metadata of the configured Datasource(s).

\n

2. One can start typing the name of the entity that they are looking for in the Search box present at the top of all the pages or present in the Discover page.

\n

3. One can also click on the Filters button and apply the filters of their interest to discover the information.

\n

4. One can also search from the Search box available in the left panel on top of the metdadata tree, where only the matched entities are shown in the tree view.

\n );\n\n case \"Data Drift - Across Datasources\":\n return( <>\n

{name}

\n

1. Data Drift is a metric to understand variations in the statistical properties of the data. It’s an indicator to a possible problem in the data.

\n

2. Drift values represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Drift) are indicated as error in red color.

\n

3. Drift values are also computed and presented on aggregates like mean, min, max, mode etc.

\n

4. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

5. Inside show more, data can be filtered by a dataset for further analysis.

\n \n ); \n \n case \"Data Completeness - Across Datasources\":\n return(<> \n

{name}

\n

1. Fill rate is a metric to understand whether desired data are present or not. Qualdo has a default definition to detect the presence or absence of desired data but this definition can be customized.

\n

2. Fill rate values represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Fill rate) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Uniqueness - Across Datasources\":\n return(<>\n

{name}

\n

Uniqueness is a metric to understand whether duplicates present in the data or not.

\n

Uniqueness values represented in numbers are presented for both dataset and attributes.

\n

Three charts are shown on this page and the rest of the views are available on clicking show more.

\n

Inside show more, data can be filtered by datasource, dataset, attribute and metrics for further analysis.

\n

Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Timelines- Across Datasources\":\n return(<>\n

{name}

\n

1. Recency is a metric to understand how latest the data is. Recency is measured in days once the dataset is configured and is reset every time the dataset is refreshed.

\n

2. Recency values represented in days are presented for only for the datasets. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Recency) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Accuracy - Across Datasources\":\n return(<>\n

{name}

\n

1. Data Outliers are metrics to capture any anomaly in the data.

\n

2. Data Outliers values represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (Outliers) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Conformity - Across Datasources\":\n return(<>\n

{name}

\n

1. Data conformity errors are metrics to identify data that don’t comply with certain standards. For example, a date attribute has to be of the format “dd/mm/yyyy”.

\n

2. All the supported conformity checks appear as separate groups.

\n

3. Data Conformity errors represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (conformity checks) are indicated as error in red color.

\n

4. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

5. Inside show more, data can be filtered by a dataset for further analysis.

\n

6. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n case \"Data Consistency - Across Datasources\":\n return(<>\n

{name}

\n

1. Data consistency errors are metrics to identify any consistency errors happening between two datasets. Data consistency is not enabled automatically and the user can enable it from the “Metrics” page.

\n

2. Data Consistency errors represented in percentage are presented for both dataset and attributes. A default threshold value is set and it can be changed from the Metrics page. Any threshold breach and drift on the metric (consistency checks) are indicated as error in red color.

\n

3. Top three critical errors are shown on this page and the rest of the views are available on clicking show more.

\n

4. Inside show more, data can be filtered by a dataset for further analysis.

\n

5. Apart from default metrics, any custom metrics created and associated with this metric will appear under this section.

\n \n );\n \n\n default:\n return \"\"\n\n }\n\n }\n\n getVideo() {\n switch(this.props.name) {\n case \"accuracy\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n case \"completeness\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n case \"timeliness\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n case \"standardisation\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n case \"relationship\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n case \"integrity\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n case \"ml_model\":\n return \"https://www.youtube.com/embed/YiuGaP_UhwA\";\n default:\n return \"\"\n }\n }\n\n getVideoUrl(){\n let video_url = CONFIGURE_DATA_SOURCE_URL;\n switch(this.props.video_url) {\n case \"profile_model\":\n return PROFILE_MODEL_URL;\n case \"profile_data\":\n return PROFILE_DATA_URL;\n case \"monitor_model\":\n return MONITOR_MODEL_URL;\n case \"monitor_model_performance\":\n return MONITOR_MODEL_PERFORMANCE_URL;\n case \"monitor_data\":\n return MONITOR_DATA_URL;\n default:\n return video_url\n }\n }\n\n render() {\n let video_url = this.getVideoUrl();\n return (\n \n \n \n

Help

\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n {this.renderContent(this.props.name)}\n
\n
\n
\n \n
\n
\n
\n {/* \n */}\n
\n );\n }\n}\n\nexport default VideoContent;\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlusSquare, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport Select from 'react-select';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\nimport { alertFormSubmit, getApi } from \"../../utils/event_handling\";\nimport { userValidation } from '../../utils/common_utils';\nimport {DQ_ALERT_ALLOWED_METRICS, CONFORMITY_METRICS_CUSTOM_ALERTS, IS_NONE_CHECK, triggers} from \"../../utils/constant\";\nimport Form from 'react-bootstrap/Form';\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\nimport {connect} from \"react-redux\";\n// import _ from 'lodash';\nimport {MODEL_ALERT_ALLOWED_METRICS} from '../../utils/constant';\nimport {storeMetadataDetails} from \"../../redux/actions\";\nimport {normalizeAttributeName, attributeNameFromMappedValue, normalizeChildDatasetName} from \"../../utils/attribute_name_utils\";\nlet expressionData = {alert_metrics_options:\"\", alert_conditional_op:\"\", alert_threshold_val:\"\", alert_join_options:\"\"};\n\nconst Expressions = (props) => {\n return props.expressions.map((expression, idx) => {\n let selectedMetricName = props.expressions[idx].alert_metrics_options;\n return (\n <>\n {\n (props.expressions.length > 1 && idx !== 0) &&\n
\n
\n label.includes(query)}\n id=\"join_condition\"\n onChange={(e) => props.dropDownChange(idx, \"alert_join_options\", e)}\n value={props.expressions[idx].alert_join_options}\n options={props.alert_join_options}\n placeholder=\"Condition\"\n classNamePrefix='select-control'\n />\n {expression !== undefined && expression.alert_join_options ===\"\" && props.errorMsg === true?\n
Condition is required field
:''\n }\n
\n
\n }\n
\n
\n label.includes(query)}\n id=\"selectMetricsAlert\"\n onChange={(e) => props.dropDownChange(idx, \"alert_metrics_options\", e)}\n value={props.expressions[idx].alert_metrics_options}\n options={props.metrics_options}\n placeholder=\"Select Metrics\"\n classNamePrefix='select-control'\n />\n {expression !== undefined && expression.alert_metrics_options ===\"\" && props.errorMsg === true?\n
Metrics is required field
:''\n }\n
\n
\n label.includes(query)}\n id=\"alertCondition\"\n onChange={(e) => props.dropDownChange(idx, \"alert_conditional_op\", e)}\n value={props.expressions[idx].alert_conditional_op}\n options={props.alert_conditional_op}\n placeholder=\"Condition\"\n classNamePrefix='select-control'\n />\n {expression !== undefined && expression.alert_conditional_op ===\"\" && props.errorMsg === true?\n
Condition is required field
:''\n }\n
\n {selectedMetricName !== null && selectedMetricName[\"label\"] !== \"Row Count\" && selectedMetricName[\"is_udfm\"] === false?\n
\n label.includes(query)}\n id=\"alertThreshold\"\n onChange={(e) => props.dropDownChange(idx, \"alert_threshold_val\", e)}\n value={props.expressions[idx].alert_threshold_val}\n options={props.alert_threshold_options}\n placeholder=\"Threshold\"\n classNamePrefix='select-control'\n />\n {expression !== undefined && expression.alert_threshold_val ===\"\" && props.errorMsg === true?\n
Threshold is required field
:''\n }\n
\n :\n
\n props.dropDownChange(idx, \"alert_threshold_val\", {\"value\": Math.abs(e.target.value)})}\n />\n {expression !== undefined && expression.alert_threshold_val ===\"\" && props.errorMsg === true?\n
Threshold is required field
:''\n }\n
\n }\n
\n \n
\n
\n \n );\n });\n}\n\n\nclass AlertForm extends React.Component {\n\n constructor(props) {\n super(props);\n let alertMechanismValue = [];\n let id = '';\n let pipelineName = localStorage.getItem(\"pipelineTriggerName\");\n if(pipelineName !== undefined && pipelineName !== null) {\n let pipelineTriggerType = localStorage.getItem(\"pipelineTriggerType\");\n let pipelineTriggerId = localStorage.getItem(\"pipelineTriggerId\");\n id = pipelineTriggerId;\n alertMechanismValue.push({\"label\":pipelineName,\"value\":\"pid_\"+Number(pipelineTriggerId),\"type\":pipelineTriggerType});\n }\n this.getApi = getApi.bind(this);\n this.alertFormSubmit = alertFormSubmit.bind(this);\n this.getAllOptions = this.getAllOptions.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.enableButton = this.enableButton.bind(this);\n this.associateOptions = [];\n this.datasetOptions = [];\n this.state = {\n hideSubmitButton: false,\n model: null,\n dataSource: null,\n dataSet: null,\n attribute: null,\n expressions: [],\n errorMsg:false,\n selectedOptions: [],\n alert_mechanism: id,\n pipelineOptions: [],\n notificationOptions: [],\n exConsume: [],\n exPipeline: [],\n options: [],\n errors: {\n },\n alerts: {\n alert_name: \"\",\n mechanismOptions: alertMechanismValue,\n alertComputeType: \"\",\n },\n alertType: triggers.INSTANT_NOTIFICATION,\n alertComputeType: null,\n alertPeriod : triggers.DAY_SCHEDULE,\n alertTypeWithkey: triggers.EMPTY_ALERT,\n alertPeriodWithKey: triggers.EMPTY_PERIOD,\n associatedWithKey: triggers.EMPTY_ASSOCIATED,\n alertDatasetWithKey: triggers.EMPTY_DATASET_WITH_KEY,\n alertAttributeWithKey: triggers.EMPTY_ATTRIBUTE_WITH_KEY,\n alertModelWithKey: triggers.EMPTY_MODEL_WITH_KEY,\n alertDataSourceWithKey: triggers.EMPTY_DATASOURCE_WITH_KEY,\n alertMechanismWithKey: triggers.EMPTY_ALERT_MECHANISM_WITH_KEY,\n isEdit : false\n };\n }\n componentDidMount() {\n this.getApi(\"trigger\");\n this.getApi(\"completeMetricInfo\");\n this.fillDetails();\n }\n\n componentWillUnmount() {\n localStorage.removeItem(\"pipelineTriggerName\");\n localStorage.removeItem(\"pipelineTriggerType\");\n localStorage.removeItem(\"pipelineTriggerId\");\n }\n\n fillDetails() {\n let expressions= [];\n //this.associateOptions = this.getAssociations();\n const exAlert = this.props.exDetails;\n\n if (exAlert === undefined) {\n return;\n }\n let alerts = this.state.alerts;\n let dataSource, model = null;\n if (exAlert.metrics_definition !== undefined && exAlert.metrics_definition.gates !== undefined){\n dataSource = exAlert.metrics_definition.integration;\n model = exAlert.metrics_definition.model;\n if(dataSource !== undefined && dataSource !== null) {\n alerts.dataSourceId = dataSource.value;\n\n }else if(model !== undefined && model !== null) {\n alerts.modelId = model.value;\n\n }\n expressions = this.editExpression(exAlert.metrics_definition.gates);\n }\n this.datasetOptions = this.getDatasets(dataSource, model);\n alerts.alert_name = exAlert.alert_name;\n alerts.alertPeriod = exAlert.alert_period;\n let alertType = exAlert.alert_type;\n let alertPeriod = exAlert.alert_period;\n let data_set_id = exAlert.data_set_id;\n let attribute_name = exAlert.metrics_definition.attribute_name;\n let alertComputeType = exAlert.metrics_definition.alert_computation_type;\n let data_set_match = this.datasetOptions.filter(x => Number(x.value) === data_set_id);\n let selectedDataset = {label: \"\", value: null, type: \"\"}\n if (data_set_match.length > 0) {\n alerts.dataset = data_set_match[0];\n alerts.data_set_id = data_set_match[0].value;\n selectedDataset.label = data_set_match[0];\n selectedDataset.value = Number(data_set_match[0].value);\n selectedDataset.type = data_set_match[0].type;\n }\n let selectedAttribute = {label: \"\", value: null}\n if (attribute_name !== undefined && attribute_name!== null){\n let attributes = this.getAttributes(dataSource, selectedDataset);\n let attribute_match = attributes.filter(x => x.value === attribute_name);\n if (attribute_match.length > 0){\n alerts.attribute = attribute_match[0];\n alerts.attribute_name = attribute_match[0].value;\n selectedAttribute.label = attribute_match[0].label;\n selectedAttribute.value = attribute_match[0].value;\n }\n }\n let selectedComputeType= {label: \"\", value: null}\n if (alertComputeType !== undefined && alertComputeType!== null){\n let computeOptions = this.getComputationTypes();\n let match_computation = computeOptions.filter(x => x.value === alertComputeType);\n if (match_computation.length > 0){\n alerts.alertComputeType = match_computation[0];\n selectedComputeType.label = match_computation[0].label;\n selectedComputeType.value = match_computation[0].value;\n }\n }\n\n //let masId = exAlert.mas_id\n //let associationMatch = this.associateOptions.filter(x => x.value === masId);\n //if (associationMatch.length > 0) {\n // alerts.association = associationMatch[0];\n //}\n let optionList = [];\n let consumeIds = exAlert.consume_group_id;\n let consumeName = exAlert.consume_group_name;\n let pipelineIds = exAlert.pipeline_trigger_id;\n let pipelineName = exAlert.pipeline_trigger_name;\n let consumeType = exAlert.consume_group_type;\n let pipelineType = exAlert.pipeline_trigger_type;\n\n if(consumeName.length>0) {\n alerts.alertMechanism = consumeIds[0].toString();\n for(let i=0;i0) {\n alerts.alertMechanism = pipelineIds[0].toString();\n for(let i=0;i0) {\n for (let i = 0; i < optionList.length; i++) {\n if(optionList[i][\"type\"] === \"email\" || optionList[i][\"type\"] === \"slack\") {\n let alertFormId = optionList[i][\"value\"]\n let alertId = alertFormId.split(\"_\")\n let alertIdData = alertId[1]\n consumeGroup.push(alertIdData);\n }\n else if(optionList[i][\"type\"] === \"webhook\" || optionList[i][\"type\"] === \"databricks\") {\n let alertFormId = optionList[i][\"value\"]\n let alertId = alertFormId.split(\"_\")\n let alertIdData = alertId[1]\n pipeline.push(alertIdData);\n }\n }\n }\n this.setState({isEdit: true})\n this.setState({exConsume:consumeGroup, dataSource: dataSource, model: model, dataSet:selectedDataset, attribute: selectedAttribute});\n this.setState({exPipeline:pipeline});\n this.setState({alerts});\n this.setState({alertType: alertType});\n this.setState({alertComputeType: selectedComputeType});\n this.setState({alertPeriod: alertPeriod});\n this.setState({expressions: expressions});\n this.setState({alertTypeWithkey: triggers.UPDATED_ALERT});\n this.setState({alertPeriodWithKey: triggers.UPDATED_PERIOD});\n this.setState({associatedWithKey: triggers.UPDATED_ASSOCIATED});\n this.setState({alertScheduleWithkey: triggers.UPDATED_ALERT_SCHEDULE});\n this.setState({alertDatasetWithKey: triggers.UPDATED_DATASET_WITH_KEY});\n this.setState({alertAttributeWithKey: triggers.UPDATED_ATTRIBUTE_WITH_KEY})\n this.setState({alertMechanismWithKey: triggers.UPDATED_ALERT_MECHANISM_WITH_KEY,\n alertModelWithKey: triggers.UPDATED_MODEL_WITH_KEY,\n alertDataSourceWithKey: triggers.UPDATED_DATASOURCE_WITH_KEY});\n }\n\n\n editExpression(editExpressions){\n let expressions =[];\n let bool_condition = null;\n editExpressions.forEach(element => {\n if(element === 'AND' || element === \"OR\"){\n bool_condition = element;\n } else {\n let finalDict ={}\n let alert_metrics_options ={};\n let alert_conditional_op ={};\n let alert_threshold_val ={};\n let alert_join_options = {};\n alert_metrics_options[\"label\"] = element[0];\n alert_metrics_options[\"value\"] = element[0];\n alert_conditional_op[\"label\"] = element[1];\n alert_conditional_op[\"value\"] = element[1];\n alert_threshold_val[\"label\"] = element[2];\n alert_threshold_val[\"value\"] = element[2];\n if(bool_condition !== null){\n alert_join_options[\"label\"] = bool_condition;\n alert_join_options[\"value\"] = bool_condition;\n finalDict[\"alert_join_options\"] = alert_join_options;\n bool_condition=null;\n }\n finalDict[\"alert_metrics_options\"] = alert_metrics_options;\n finalDict[\"alert_conditional_op\"] = alert_conditional_op;\n finalDict[\"alert_threshold_val\"] = alert_threshold_val;\n expressions.push(finalDict);\n }\n });\n return expressions;\n\n }\n\n addExpression = (e) => {\n let tempExpression = Object.assign({}, expressionData);\n let expression = this.state.expressions.at(-1)\n this.setState({errorMsg:false});\n if(expression !== undefined && ([expression.alert_conditional_op,expression.alert_threshold_val,expression.alert_metrics_options].includes(\"\")\n || (this.state.expressions.length > 1 && [expression.alert_join_options].includes(\"\"))))\n { \n this.setState({errorMsg:true});\n this.setState((prevState) => ({\n expressions: [...prevState.expressions]\n }));\n \n }\n else\n {\n this.setState((prevState) => ({\n expressions: [...prevState.expressions, tempExpression]\n }));\n }\n }\n\n removeExpression = (idx) => {\n if (this.state.expressions !== undefined)\n { this.state.expressions.splice(idx,1)\n this.setState({expressions:this.state.expressions});\n }\n }\n\n dropDownChange= (idx, name, selectedOption) => {\n if ([\"alert_metrics_options\", \"alert_conditional_op\", \"alert_threshold_val\", \"alert_join_options\"].includes(name)) {\n let expressions = [...this.state.expressions];\n expressions[idx][name] = selectedOption;\n this.setState({expressions});\n }\n }\n\n getAllOptions() {\n let notificationArr = [];\n let pipelineArr = [];\n if(this.state.notificationOptions !== null) {\n notificationArr = this.state.notificationOptions.map(function (row){\n return {\"label\":row[\"consume_group_name\"]+\"[\"+row[\"consume_group_type\"]+\"]\", \"value\":\"nid_\"+row[\"consume_group_id\"], \"type\":row[\"consume_group_type\"]};\n });\n }\n if(this.state.pipelineOptions !== null) {\n pipelineArr = this.state.pipelineOptions.map(function (row){\n return {\"label\":row[\"pipeline_trigger_name\"]+\"[\"+row[\"pipeline_trigger_type\"]+\"]\", \"value\":\"pid_\"+row[\"pipeline_trigger_id\"], \"type\":row[\"pipeline_trigger_type\"]};\n });\n }\n let final = [...notificationArr, ...pipelineArr];\n return final;\n\n }\n\n getDatasets(dataSource, model) {\n let option_arr = [];\n\n if (dataSource !== null && dataSource !== undefined) {\n let id = dataSource.value;\n if (this.props.details.data_set !== undefined && this.props.details.data_set !== null && this.props.datasets !== null) {\n this.props.details.data_set.map(function (row) {\n if (row[\"integration_id\"] === id) {\n let req_dataset_name = normalizeChildDatasetName(row[\"data_set_name\"])\n option_arr.push({\"label\": req_dataset_name, \"value\": row[\"data_set_id\"]});\n }\n return 1;\n });\n }\n }else if(model !== null && model !== undefined) {\n option_arr = model.datasets.filter(item => item.value !== \"-1\")\n }\n return option_arr;\n }\n\n parseMetaMapping(env_id, data_source_id, data_set_id, attribute_id) {\n // let metaMapping = _.cloneDeep(this.props.dataModule.metaData);\n let metaMapping = this.props.dataModule.metaData;\n let sub_string = `${env_id}.${data_source_id}.${data_set_id}.${attribute_id}`;\n // const filtered = Object.keys(metaMapping)\n // .filter(key => key.includes(sub_string))\n // .reduce((obj, key) => {\n // obj[key] = metaMapping[key];\n // return obj;\n // }, {});\n let attributeName = metaMapping[sub_string];\n if (attributeName !== undefined && attributeName !== null) {\n return attributeNameFromMappedValue(attributeName)\n }\n return null;\n }\n\n getAttributes(data_source, data_set) {\n let data_set_id = null;\n if(data_set !== null) {\n data_set_id = data_set.value;\n }\n let option_arr = [];\n\n let data_source_id = null;\n let env_id = null;\n let envDSMapping = this.props.dataModule.environmentDataSourceMapping;\n if(data_source !== null && envDSMapping !== undefined){\n data_source_id = data_source.value;\n\n for (const [key, value] of Object.entries(envDSMapping)) {\n if (value.includes(data_source_id.toString())) {\n env_id = key;\n }\n }\n }\n\n if (this.props.dataModule.dataSetAttributeMapping !== undefined && data_set_id !== null && data_source_id !== null) {\n let attributes = this.props.dataModule.dataSetAttributeMapping[data_set_id];\n if (attributes !== undefined){\n attributes.forEach((attributeId) => {\n let attribute_name = this.parseMetaMapping(env_id, data_source_id, data_set_id, attributeId)\n let req_attribute_name = normalizeAttributeName(attribute_name)\n option_arr.push({\"value\": attribute_name, \"label\": req_attribute_name});\n })\n }\n }\n return option_arr;\n }\n\n getMetrics(dataSet, dataSource, alerts) {\n let option_arr = [];\n let cm_arr = [];\n let conformityList = [];\n let attributeDict = {};\n let attributeType = null\n let data = null;\n let alertLevel = null;\n let cm_data = null;\n let metadataDetails = this.props.dataModule.metadataDetails;\n let metadataMapping = metadataDetails.metadata_mapping;\n let cm_details = metadataDetails.consistency_metrics_details;\n data = (this.props.tab === \"dq\" ? this.props.details.dqMetrics : this.props.details.mlMetrics);\n let tab = this.props.tab;\n let attribute = this.state.attribute;\n if(data !== null && dataSet != null) {\n let data_source_id = \"\";\n if (dataSource !== null) {\n data_source_id = dataSource.value.toString();\n }\n \n let data_set_id = dataSet.value.toString();\n let data_set_type = dataSet.type;\n if (metadataMapping !== undefined && metadataMapping !== null) {\n if (Object.keys(metadataMapping).includes(data_source_id)) {\n if (Object.keys(metadataMapping[data_source_id]).includes(data_set_id)) {\n let temp_data = metadataMapping[data_source_id][data_set_id]\n if (cm_details !== undefined) {\n cm_data = cm_details[data_set_id]\n }\n for(let l in temp_data){\n let attributeName = temp_data[l][\"attribute_name\"]\n if (temp_data[l][\"business_rule\"] !== null){\n conformityList.push(CONFORMITY_METRICS_CUSTOM_ALERTS[temp_data[l][\"business_rule\"]])\n }\n if (attribute !== null && attribute[\"value\"] === attributeName) {\n attributeType = temp_data[l][\"attribute_type\"]\n attributeDict[CONFORMITY_METRICS_CUSTOM_ALERTS[temp_data[l][\"business_rule\"]]] = attributeName\n }\n }\n }\n }\n }\n\n for(let i=0;i {\n this.setState({ selectedOptions });\n }\n\n handleClick = e => {\n this.setState({alertType:e.target.value});\n }\n\n handleConvert = (e) => {\n let tempExpression = Object.assign({}, expressionData);\n this.setState((prevState) => ({\n options: [...prevState.options, tempExpression]\n }));\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n enableButton() {\n this.setState({hideSubmitButton: false});\n }\n\n getAssociations() {\n let option_arr = [];\n let data = null;\n data = (this.props.tab === \"dq\" ? this.props.details.dqMetrics : this.props.details.mlMetrics);\n if (data !== null) {\n option_arr = data.map(function (row){\n return {\"label\":row[\"mas_name\"], \"value\":row[\"mas_id\"]}\n });\n }\n return option_arr;\n }\n\n handleStateChange = (selectedOptions) => {\n this.setState({ selectedOptions });\n }\n\n EnableRecurringTimeInterval(){\n if (this.state.alertType === \"recurring\") {\n return(\n
\n \n
\n
\n this.alertPeriodHandler(\"1hour\")}\n defaultChecked={this.state.alertPeriod === triggers.HOUR_SCHEDULE}\n className=\"custom-control-input\"/>\n \n
\n
\n this.alertPeriodHandler(\"24hours\")}\n defaultChecked={this.state.alertPeriod === triggers.DAY_SCHEDULE}\n className=\"custom-control-input\"/>\n \n
\n
\n
\n );\n\n }\n }\n\n radioHandler = (status) => {\n this.setState({alertType: status});\n }\n\n alertPeriodHandler = (status) => {\n this.setState({alertPeriod: status});\n }\n\n getComputationTypes(){\n //alertComputeType\n let alertComputationTypes = [{\"label\":\"Metric Value at dataset Level\", \"value\":\"metric_value\"},\n {\"label\":\"Metric Value at Attribute Level\", \"value\":\"metric_attribute_level\"},\n {\"label\":\"Drift Value at dataset Level\", \"value\":\"drift_value\"},\n {\"label\":\"Drift Value at Attribute Level\", \"value\":\"drift_attribute_level\"}];\n return alertComputationTypes;\n }\n\n render() {\n // For Recency we allow user can able to configure one alert condition only.\n let canShowAddCondition = true;\n if ((this.state.expressions).length === 1) {\n let currentExp = this.state.expressions[0];\n if (currentExp.alert_metrics_options !== undefined && currentExp.alert_metrics_options !== null) {\n if (currentExp.alert_metrics_options.value === \"Recency\" && currentExp.alert_conditional_op !== \"\"\n && currentExp.alert_threshold_val !== \"\") {\n canShowAddCondition = false;\n }\n }\n }\n\n let metrics_options = this.getMetrics(this.state.dataSet, this.state.dataSource, this.state.alerts);\n // To avoid user to configure any other metrics with recency\n if (this.state.expressions.length > 0 && canShowAddCondition === true) {\n let currentExp = this.state.expressions[0];\n if (currentExp.alert_metrics_options !== undefined && currentExp.alert_metrics_options !== null) {\n if (currentExp.alert_metrics_options.value !== \"Recency\" && currentExp.alert_conditional_op !== \"\"\n && currentExp.alert_threshold_val !== \"\") {\n let newMetricsList = []\n for (let k = 0; k < metrics_options.length; k++) {\n if (metrics_options[k].value !== \"Recency\") {\n newMetricsList.push(metrics_options[k]);\n }\n }\n metrics_options = newMetricsList;\n }\n }\n }\n\n let alert_conditional_op = [{\"label\":\">\", \"value\":\">\"}, {\"label\":\">=\", \"value\":\">=\"}, {\"label\":\"<\", \"value\":\"<\"},\n {\"label\":\"<=\", \"value\":\"<=\"}, {\"label\":\"==\", \"value\":\"==\"}];\n let alert_join_options = [{\"label\":\"AND\", \"value\":\"AND\"},{\"label\":\"OR\", \"value\":\"OR\"}]\n let alert_threshold_options = [{\"label\":\"0\", \"value\":0},{\"label\":\"1\", \"value\":1},{\"label\":\"2\", \"value\":2},{\"label\":\"3\", \"value\":3},{\"label\":\"4\", \"value\":4},{\"label\":\"5\", \"value\":5},{\"label\":\"6\", \"value\":6},{\"label\":\"7\", \"value\":7},{\"label\":\"8\", \"value\":8},{\"label\":\"9\", \"value\":9},{\"label\":\"10\", \"value\":10},{\"label\":\"11\", \"value\":11},{\"label\":\"12\", \"value\":12},{\"label\":\"13\", \"value\":13},{\"label\":\"14\", \"value\":14},{\"label\":\"15\", \"value\":15},{\"label\":\"16\", \"value\":16},{\"label\":\"17\", \"value\":17},{\"label\":\"18\", \"value\":18},{\"label\":\"19\", \"value\":19},{\"label\":\"20\", \"value\":20},{\"label\":\"21\", \"value\":21},{\"label\":\"22\", \"value\":22},{\"label\":\"23\", \"value\":23},{\"label\":\"24\", \"value\":24},{\"label\":\"25\", \"value\":25},{\"label\":\"26\", \"value\":26},{\"label\":\"27\", \"value\":27},{\"label\":\"28\", \"value\":28},{\"label\":\"29\", \"value\":29},{\"label\":\"30\", \"value\":30},{\"label\":\"31\", \"value\":31},{\"label\":\"32\", \"value\":32},{\"label\":\"33\", \"value\":33},{\"label\":\"34\", \"value\":34},{\"label\":\"35\", \"value\":35},{\"label\":\"36\", \"value\":36},{\"label\":\"37\", \"value\":37},{\"label\":\"38\", \"value\":38},{\"label\":\"39\", \"value\":39},{\"label\":\"40\", \"value\":40},{\"label\":\"41\", \"value\":41},{\"label\":\"42\", \"value\":42},{\"label\":\"43\", \"value\":43},{\"label\":\"44\", \"value\":44},{\"label\":\"45\", \"value\":45},{\"label\":\"46\", \"value\":46},{\"label\":\"47\", \"value\":47},{\"label\":\"48\", \"value\":48},{\"label\":\"49\", \"value\":49},{\"label\":\"50\", \"value\":50},{\"label\":\"51\", \"value\":51},{\"label\":\"52\", \"value\":52},{\"label\":\"53\", \"value\":53},{\"label\":\"54\", \"value\":54},{\"label\":\"55\", \"value\":55},{\"label\":\"56\", \"value\":56},{\"label\":\"57\", \"value\":57},{\"label\":\"58\", \"value\":58},{\"label\":\"59\", \"value\":59},{\"label\":\"60\", \"value\":60},{\"label\":\"61\", \"value\":61},{\"label\":\"62\", \"value\":62},{\"label\":\"63\", \"value\":63},{\"label\":\"64\", \"value\":64},{\"label\":\"65\", \"value\":65},{\"label\":\"66\", \"value\":66},{\"label\":\"67\", \"value\":67},{\"label\":\"68\", \"value\":68},{\"label\":\"69\", \"value\":69},{\"label\":\"70\", \"value\":70},{\"label\":\"71\", \"value\":71},{\"label\":\"72\", \"value\":72},{\"label\":\"73\", \"value\":73},{\"label\":\"74\", \"value\":74},{\"label\":\"75\", \"value\":75},{\"label\":\"76\", \"value\":76},{\"label\":\"77\", \"value\":77},{\"label\":\"78\", \"value\":78},{\"label\":\"79\", \"value\":79},{\"label\":\"80\", \"value\":80},{\"label\":\"81\", \"value\":81},{\"label\":\"82\", \"value\":82},{\"label\":\"83\", \"value\":83},{\"label\":\"84\", \"value\":84},{\"label\":\"85\", \"value\":85},{\"label\":\"86\", \"value\":86},{\"label\":\"87\", \"value\":87},{\"label\":\"88\", \"value\":88},{\"label\":\"89\", \"value\":89},{\"label\":\"90\", \"value\":90},{\"label\":\"91\", \"value\":91},{\"label\":\"92\", \"value\":92},{\"label\":\"93\", \"value\":93},{\"label\":\"94\", \"value\":94},{\"label\":\"95\", \"value\":95},{\"label\":\"96\", \"value\":96},{\"label\":\"97\", \"value\":97},{\"label\":\"98\", \"value\":98},{\"label\":\"99\", \"value\":99},{\"label\":\"100\", \"value\":100}];\n// let time_interval_options = [{\"label\": \"@once\", \"value\": \"@once\"}, {\"label\": \"@daily\", \"value\": \"@daily\"},\n// {\"label\": \"@hourly\", \"value\": \"@hourly\"}, {\"label\": \"@monthly\", \"value\": \"@monthly\"}];\n let triggerOptions = this.getAllOptions();\n// let associates_options = this.getAssociations();\n let data_set_options = this.getDatasets(this.state.dataSource, this.state.model);\n let attribute_options = this.getAttributes(this.state.dataSource, this.state.dataSet);\n let alertComputationTypes = this.getComputationTypes();\n\n\n /** Sorting Datasource and dataset options for the From dropDown */\n if(data_set_options.length>1){\n data_set_options = data_set_options.sort((a, b) => a.value - b.value)\n }\n\n let datasourceOptions = [];\n if(this.props.integrationOption !== undefined && this.props.integrationOption !== null && this.props.integrationOption.length > 1){\n datasourceOptions= this.props.integrationOption.sort((a, b) => a.value - b.value)\n }\n else{\n datasourceOptions= this.props.integrationOption\n }\n /** Sorting Datasource and dataset options for the Form dropDown */\n\n\n\n\n\n let {expressions} = this.state;\n// const selectStyles = {\n// container: () => ({\n// height: 34\n// }),\n// indicatorSeparator: () => ({\n//\n// }),\n// };\n let has_attribute = (this.state.alertComputeType !== null && this.state.alertComputeType[\"value\"] !==null && this.state.alertComputeType[\"value\"].includes(\"attribute_level\"));\n let alertSchema = \"\";\n if(this.props.tab === \"dq\") {\n alertSchema = yup.object({\n alert_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Alert Name is a required field\").test(\n 'Alert name test',\n 'invalid Alert name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n alertComputeType : yup.string().required(\"Alert Type is a required field\"),\n alertMechanism: yup.string().required('Alert Mechanism is a required field'),\n dataSourceId: yup.number().required('Datasource is a required field'),\n data_set_id: yup.number().required('Dataset is a required field')\n });\n if (has_attribute === true){\n alertSchema = yup.object({\n alert_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Alert Name is a required field\").test(\n 'Alert name test',\n 'invalid Alert name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n alertComputeType : yup.string().required(\"Alert Type is a required field\"),\n alertMechanism: yup.string().required('Alert Mechanism is a required field'),\n dataSourceId: yup.number().required('Datasource is a required field'),\n data_set_id: yup.number().required('Dataset is a required field'),\n attribute_name: yup.string().required(\"Attribute Name is a required field\"),\n });\n }\n }else {\n alertSchema = yup.object({\n alert_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Alert Name is a required field\").test(\n 'Alert name test',\n 'invalid Alert name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n alertMechanism: yup.string().required('Alert Mechanism is a required field'),\n modelId: yup.number().required('Model is a required field'),\n data_set_id: yup.number().required('Dataset is a required field')\n });\n\n }\n\n let exDetails = this.props.exDetails;\n if (this.props.exDetails !== undefined) {\n exDetails[\"alertMechanism\"] = this.state.alerts.mechanismOptions;\n }\n let initial_values = {alert_name: '',dataSourceId: '', modelId: '', data_set_id:'', alertComputeType:'', attribute_name:'', alertMechanism:this.state.alert_mechanism, alertPeriod: '', alert_type: '' , errorMsg:this.state.errorMsg};\n return (\n
\n
\n \n {({\n values,\n setFieldValue,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n \n Alert Name * :\n
\n \n \n { errors.alert_name }\n \n
\n
\n \n Types :\n
\n
\n this.radioHandler(\"instant\")}\n id={this.props.exDetails !== undefined ? \"instantRadioEx\" : \"instantRadio\"}\n value=\"instant\"\n defaultChecked={this.state.alertType === triggers.INSTANT_NOTIFICATION}\n className=\"custom-control-input\"/>\n \n
\n
\n this.radioHandler(\"recurring\")}\n id={this.props.exDetails !== undefined ? \"recurringRadioEx\" : \"recurringRadio\"}\n value=\"recurring\"\n defaultChecked={this.state.alertType === triggers.RECURRING_NOTIFICATION}\n className=\"custom-control-input\"/>\n \n
\n
\n
\n {this.state.alertType === triggers.RECURRING_NOTIFICATION? this.EnableRecurringTimeInterval(): \"\"}\n {this.props.tab === \"dq\" ?\n \n Datasource * :\n
\n label.includes(query)}\n id=\"alertModel\"\n options={this.props.modelOptions}\n placeholder=\"Select Model\"\n isInvalid={errors.modelId && touched.modelId}\n onChange={selectedOption => {\n handleChange(\"modelId\")(selectedOption.value.toString());\n setFieldValue('data_set_id', '')\n let alerts = this.state.alerts;\n alerts.dataset = null;\n this.setState({model: selectedOption, alerts: alerts});\n }}\n classNamePrefix='select-control'\n defaultValue={this.state.model}\n />\n {this.state.model === null && }\n
\n
\n }\n \n Dataset * :\n
\n label.includes(query)}\n id=\"alertComputeType\"\n options={alertComputationTypes}\n placeholder=\"Select Alert Type\"\n isInvalid={errors.alertComputeType && touched.alertComputeType}\n onChange={selectedOption => {\n handleChange(\"alertComputeType\")(selectedOption.value.toString());\n setFieldValue('expressions', '')\n setFieldValue('attribute_name', '')\n let alerts = this.state.alerts;\n alerts.attribute = null;\n alerts.alertComputeType = selectedOption;\n this.setState({alertComputeType:selectedOption, alerts: alerts});\n }}\n classNamePrefix='select-control'\n value={this.state.alerts.alertComputeType}\n />\n {this.state.alerts.alertComputeType === null && }\n
\n
\n }\n {\n (this.props.tab === \"dq\" && has_attribute === true) ?\n \n Attribute * :\n
\n label.includes(query)}\n id=\"alertMechanism\"\n options={triggerOptions}\n onChange={selectedOption => {\n if (selectedOption !==null && selectedOption.length > 0) {\n handleChange(\"alertMechanism\")(selectedOption[0].value.toString());\n this.handleStateChange(selectedOption);\n } else {\n handleChange(\"alertMechanism\")(\"\");\n }\n }}\n isInvalid={errors.alertMechanism && touched.alertMechanism}\n defaultValue={this.state.alerts.mechanismOptions}\n placeholder=\"Select Alert Mechanism\"\n />\n \n
\n
\n
\n
\n \n \n
\n
\n
\n )}\n \n\n
\n
\n );\n }\n}\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps,storeMetadataDetails) (AlertForm);","import React from 'react';\nimport Select from 'react-select';\nimport {faPlusCircle, faCheck} from '@fortawesome/free-solid-svg-icons';\nimport {faQuestionCircle, faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { postModelData } from \"../../utils/event_handling\";\nimport {userValidation} from \"../../utils/common_utils\";\nimport {\n K_VALUE_TOOLTIP,\n DELIMITER_OPTIONS,\n MODEL_PERFORMANCE_THRESHOLDS,\n RECOMMENDATION_MODEL_DEFAULTS, SUPPORTED_ML_ALGO_TYPES,\n SUPPORTED_ML_STACK_OPTIONS,\n SUPPORTED_ML_TYPE_OPTIONS,\n SUPPORTED_ML_COLUMN_TYPES\n // ,\n // USE_SERVING_AS_PREDICTION\n} from \"../../utils/constant\";\nimport Form from 'react-bootstrap/Form';\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\nimport OverlayTrigger from \"react-bootstrap/OverlayTrigger\";\nimport {Popover} from \"react-bootstrap\";\nimport { normalizeChildDatasetName } from '../../utils/attribute_name_utils';\n\nconst renderK_ValueTooltip = (props) => (\n \n \n {K_VALUE_TOOLTIP}\n \n \n );\n// const renderUseServingAsPredictionTooltip = (props) => (\n// \n// \n// {USE_SERVING_AS_PREDICTION}\n// \n// \n// );\n\nconst Features = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n if(props.clickedValue[idx][name] === undefined){\n return (\n \n \n {props.name + \" Column \" + (idx+1)} \n \n \n \n label.includes(query)}\n id={props.name}\n onChange={selectedOption => {\n props.handleChange(props.name,(idx+1),selectedOption.value);\n }}\n number={idx}\n options={ props.attributes }\n placeholder={\"Choose \"+props.name+\" Column \"+ (idx+1)}\n />\n \n );\n }\n else{\n return (\n \n \n \n {props.name + \" Column \" + (idx+1)}\n \n \n \n \n \n label.includes(query)}\n id={props.name}\n onChange={selectedOption => {\n props.handleChange(props.name,(idx+1),selectedOption.value);\n }}\n number={idx}\n defaultValue={{\"label\":props.clickedValue[idx][name],\"value\":props.clickedValue[idx][name]}}\n options={ props.attributes }\n placeholder={\"Choose \"+props.name+\" Column \"+ (idx+1)}\n />\n \n );\n }\n\n });\n}\n\n\n\nclass AddModel extends React.Component {\n constructor(props) {\n super(props);\n this.getDatasets = this.getDatasets.bind(this);\n this.postModelData = postModelData.bind(this);\n this.resetForm = this.resetForm.bind(this);\n this.cancelButton = this.cancelButton.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.state = {\n optionalTraining: [],\n optionalServing: [],\n optionalAccuracy: [],\n hideSubmitButton: false,\n hideUseServingAsPredictionCheckbox: true,\n hidePredictionDataBox: false,\n optionsMLStack: SUPPORTED_ML_STACK_OPTIONS,\n optionsMlType : SUPPORTED_ML_TYPE_OPTIONS,\n optionsAlgoType: SUPPORTED_ML_ALGO_TYPES,\n optionsColumnType: SUPPORTED_ML_COLUMN_TYPES,\n exValues: {\n modelName: '', modelAuthored: '', version: '',\n mlStack: '', mlType: '',predictionColumn: '',responseColumn: '',\n predictionGroupBY: '', responseGroupBY:'', predictionItemCol: '',\n responseItemCol: '',\n integrationId: '', algoType: '', columnType: '',\n thresholdRecall: MODEL_PERFORMANCE_THRESHOLDS.RECALL,\n thresholdPrecision: MODEL_PERFORMANCE_THRESHOLDS.PRECISION,\n thresholdScore: MODEL_PERFORMANCE_THRESHOLDS.F1_SCORE,\n thresholdAccuracy: MODEL_PERFORMANCE_THRESHOLDS.RECALL,\n thresholdRMSE: MODEL_PERFORMANCE_THRESHOLDS.RMSE,\n thresholdSilhouette: MODEL_PERFORMANCE_THRESHOLDS.SILHOUETTE,\n predictionDelimiter: DELIMITER_OPTIONS[0],\n customPredictionDelimiter: null,\n responseDelimiter: DELIMITER_OPTIONS[0],\n customResponseDelimiter: null,\n recommendationKValue: RECOMMENDATION_MODEL_DEFAULTS.K_VALUE,\n ratchetingRecall: '', ratchetingPrecision: '',\n ratchetingScore: '', ratchetingAccuracy: '',customAlgoType: '',\n modelDeployment: '', customMlStack: '',customMlType: '',\n accuracy: '', rawData: '',testData: '',modelData: '',\n prediction: '', response: '',\n trainingData: '', servingData: ''\n },\n algoType: '',\n columnType: null,\n predictionColumn: [],\n responseColumn: [],\n predictionGroupBY: [],\n responseGroupBY: [],\n predictionItemCol: [],\n responseItemCol: [],\n featuresServing: [],\n featuresTraining: [],\n accuracy: [],\n integrationId: null,\n integrationOption: null,\n datasets: [],\n checkedR: false,\n checkedT: true,\n servingIntoPrediction: false,\n mlStack: \"\",\n mlType: \"\",\n modelDeployment: \"\",\n custom_deployment: '',\n predictionDelimiter: null,\n customPredictionDelimiter: null,\n responseDelimiter: null,\n customResponseDelimiter: null,\n errors: {}\n }\n\n }\n\n componentDidMount() {\n this.fillDetails();\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n handleChange = (name,number,value) => {\n if ([\"Feature Training\",\"Feature Serving\",\"Accuracy\"].includes(name)) {\n switch(name) {\n case \"Feature Training\":\n let featuresTraining = [...this.state.featuresTraining];\n featuresTraining[number-1][name] = value;\n this.setState({ featuresTraining: featuresTraining });\n this.setState({optionalTraining : featuresTraining});\n break;\n case \"Feature Serving\":\n let featuresServing = [...this.state.featuresServing];\n featuresServing[number-1][name] = value;\n this.setState({ featuresServing: featuresServing });\n this.setState({optionalServing : featuresServing});\n break;\n case \"Accuracy\":\n let accuracy = [...this.state.accuracy];\n accuracy[number-1][name] = value;\n this.setState({ accuracy: accuracy });\n this.setState({optionalAccuracy : accuracy});\n break;\n default:\n break\n }\n }\n\n }\n\n\n removeOption = (idx,name) => {\n if ([\"Feature Training\",\"Feature Serving\",\"Accuracy\"].includes(name)) {\n switch(name) {\n case \"Feature Training\":\n this.state.featuresTraining.splice(idx,1)\n this.setState({featuresTraining:this.state.featuresTraining});\n // this.state.optionalTraining.splice(idx,1)\n // this.setState({optionalTraining:this.state.optionalTraining});\n\n break;\n\n case \"Feature Serving\":\n this.state.featuresServing.splice(idx,1)\n this.setState({featuresServing:this.state.featuresServing});\n // this.state.optionalServing.splice(idx,1)\n // this.setState({optionalServing:this.state.optionalServing});\n break;\n case \"Accuracy\":\n this.state.accuracy.splice(idx,1)\n this.setState({accuracy:this.state.accuracy});\n // this.state.optionalAccuracy.splice(idx,1)\n // this.setState({optionalAccuracy:this.state.optionalAccuracy});\n break;\n default:\n break\n }\n }\n }\n\n\n addFeature = (e) => {\n let tempData = null\n let idx;\n if(tempData===null){\n switch(e.target.name) {\n case \"Accuracy\":\n tempData = Object.assign({});\n idx = this.state.accuracy.length-1;\n if((this.state.optionalAccuracy[idx] === undefined && idx === -1) || (this.state.optionalAccuracy[idx] !== undefined && idx > -1)){\n this.setState((prevState) => ({\n accuracy: [...prevState.accuracy, tempData]\n }));\n }\n break\n case \"Feature Training\":\n tempData = Object.assign({});\n idx = this.state.featuresTraining.length-1;\n if((this.state.optionalTraining[idx] === undefined && idx === -1) || (this.state.optionalTraining[idx] !== undefined && idx > -1)){\n this.setState((prevState) => ({\n featuresTraining: [...prevState.featuresTraining, tempData]\n }));\n }\n break\n case \"Feature Serving\":\n tempData = Object.assign({});\n idx = this.state.featuresServing.length-1;\n if((this.state.optionalServing[idx] === undefined && idx === -1) || (this.state.optionalServing[idx] !== undefined && idx > -1))\n {\n this.setState((prevState) => ({\n featuresServing: [...prevState.featuresServing, tempData]\n }));\n }\n\n break\n default:\n break\n\n }\n }\n }\n\n fillDetails() {\n if (this.props.exMLData === undefined) {\n return;\n }\n \n let mlData = this.state;\n const exValues = mlData.exValues;\n const stateDatasets = mlData.datasets;\n\n let exMLData = this.props.exMLData;\n let exFeature = exMLData.features[0];\n let exAccuracy = exMLData.features[1];\n let exPrediction = exMLData.features[2];\n let exResponse = exMLData.features[3];\n \n if (exResponse.target_data_set === \"-1\") {\n exResponse.target_data_set = ''\n }\n\n if (exFeature.base_line_data_set === \"-1\") {\n exFeature.base_line_data_set = ''\n }\n\n\n if (exFeature !== undefined) {\n\n this.setState({\n optionalServing: exFeature.model_info_details.target_column_serving,\n optionalTraining: exFeature.model_info_details.target_column_training,\n featuresServing: exFeature.model_info_details.target_column_serving,\n featuresTraining: exFeature.model_info_details.target_column_serving,\n });\n }\n\n if (exAccuracy !== undefined) {\n this.setState({\n accuracy: exAccuracy.model_info_details.target_column_names,\n optionalAccuracy: exAccuracy.model_info_details.target_column_names,\n });\n }\n\n if (exPrediction !== undefined) {\n const exPredictionModelInfoDetails = exPrediction.model_info_details;\n\n let prediction = exPredictionModelInfoDetails.target_column_names[0][\"Prediction1\"];\n exValues.predictionColumn = prediction;\n\n const predictionGroupBY = {\n \"label\": exPredictionModelInfoDetails[\"group_by\"],\n \"value\": exPredictionModelInfoDetails[\"group_by\"]\n };\n\n this.setState({\n predictionColumn: {\"label\":prediction,\"value\":prediction},\n predictionGroupBY: predictionGroupBY\n });\n\n exValues.predictionGroupBY = exPredictionModelInfoDetails[\"group_by\"];\n\n const exPredictionModelInfoItemCol = exPredictionModelInfoDetails[\"item_col\"];\n if (exPredictionModelInfoItemCol !== null) {\n const predictionItemCol = {\n \"label\": exPredictionModelInfoItemCol,\n \"value\": exPredictionModelInfoItemCol\n };\n this.setState({\n predictionItemCol: predictionItemCol\n });\n exValues.predictionGroupBY = exPredictionModelInfoItemCol;\n }\n\n\n// // If the model is recommendation model, we need delimiter information\n// const predDelimiter = exPredictionModelInfoDetails.delimiter;\n// if (!IS_NONE_CHECK.includes(predDelimiter)) {\n// mlData.exValues.predictionDelimiter = predDelimiter;\n// mlData.predictionDelimiter = {\"label\": predDelimiter, \"value\": predDelimiter};\n// mlData.exValues.customPredictionDelimiter = exPredictionModelInfoDetails.custom_delimiter;\n// }\n }\n\n if (exResponse !== undefined) {\n let exResponseModelInfoDetails = exResponse.model_info_details;\n let response = exResponseModelInfoDetails.target_column_names[0][\"Response1\"];\n this.setState({\n responseColumn: {\"label\": response, \"value\": response},\n responseGroupBY: {\n \"label\": exResponseModelInfoDetails[\"group_by\"],\n \"value\": exResponseModelInfoDetails[\"group_by\"]\n }\n\n });\n\n exValues.responseColumn = response;\n exValues.responseGroupBY = exResponseModelInfoDetails[\"group_by\"];\n\n const exRepItemCol = exResponseModelInfoDetails[\"item_col\"];\n if (exRepItemCol !== null) {\n this.setState({\n responseItemCol: {\"label\": exRepItemCol, \"value\": exRepItemCol},\n });\n\n exValues.responseItemCol = exRepItemCol;\n }\n\n// // If the model is recommendation model, we need delimiter information\n// const respDelimiter = exResponseModelInfoDetails.delimiter;\n// if (!IS_NONE_CHECK.includes(respDelimiter)) {\n// mlData.exValues.responseDelimiter = respDelimiter;\n// mlData.responseDelimiter = {\"label\": respDelimiter, \"value\": respDelimiter};\n// mlData.exValues.customResponseDelimiter = exResponseModelInfoDetails.custom_delimiter;\n// }\n }\n\n if (exMLData.model_details !== null) {\n let algoType = exMLData.model_details.ml_algo_type;\n let servingInPrediction = exMLData.model_details.serving_into_prediction;\n let columnType = exMLData.model_details.pred_res_column_type;\n let colMatch = this.state.optionsColumnType.filter(x => x.value === columnType);\n\n if (colMatch.length > 0) {\n this.setState({columnType: colMatch[0]});\n exValues.columnType = colMatch[0].value;\n } else {\n this.setState({columnType: null});\n exValues.columnType = null;\n }\n this.setState({servingIntoPrediction: servingInPrediction});\n\n let algoMatch = this.state.optionsAlgoType.filter(x => x.value === algoType);\n if (algoMatch.length > 0) {\n this.setState({algoType: algoMatch[0]});\n exValues.algoType = algoMatch[0].value;\n\n } else {\n const reqAlgoType = {\"label\": \"Others\", \"value\": \"others\"}\n this.setState({algoType: reqAlgoType});\n exValues.algoType = \"others\";\n exValues.customAlgoType = algoType;\n }\n\n stateDatasets.rawData = {\n label: exMLData.model_details.raw_data,\n value: exMLData.model_details.raw_data_id\n }\n\n exValues.rawData = exMLData.model_details.raw_data_id;\n\n stateDatasets.testData = {\n label: exMLData.model_details.test_data,\n value: exMLData.model_details.test_data_id\n }\n exValues.testData = exMLData.model_details.test_data_id;\n\n stateDatasets.modelData = {\n label: exMLData.model_details.model_data,\n value: exMLData.model_details.model_data_id\n }\n exValues.modelData = exMLData.model_details.model_data_id;\n \n\n if (exMLData.model_details.rmse_threshold !== undefined) {\n exValues.thresholdRMSE = exMLData.model_details.rmse_threshold;\n this.setState({checkedT: true});\n }\n\n if (exMLData.model_details.accuracy_threshold !== undefined) {\n exValues.thresholdAccuracy = exMLData.model_details.accuracy_threshold;\n this.setState({checkedT: true});\n }\n\n if (exMLData.model_details.recommendation_k_value !== undefined) {\n exValues.recommendationKValue = exMLData.model_details.recommendation_k_value;\n }\n\n if(exMLData.model_details.accuracy_ratcheting !== undefined) {\n exValues.ratchetingAccuracy = exMLData.model_details.accuracy_ratcheting;\n this.setState({checkedR: true});\n }\n if(exMLData.model_details.precision_threshold !== undefined) {\n exValues.thresholdPrecision = exMLData.model_details.precision_threshold;\n this.setState({checkedT: true});\n }\n if(exMLData.model_details.precision_ratcheting !== undefined) {\n exValues.ratchetingPrecision = exMLData.model_details.precision_ratcheting;\n this.setState({checkedR: true});\n }\n if(exMLData.model_details.recall_threshold !== undefined) {\n exValues.thresholdRecall = exMLData.model_details.recall_threshold;\n this.setState({checkedT: true});\n }\n if(exMLData.model_details.recall_ratcheting !== undefined) {\n exValues.ratchetingRecall = exMLData.model_details.recall_ratcheting;\n this.setState({checkedR: true});\n }\n if(exMLData.model_details.score_threshold !== undefined) {\n exValues.thresholdScore = exMLData.model_details.score_threshold;\n this.setState({checkedT: true});\n }\n if(exMLData.model_details.score_ratcheting !== undefined) {\n exValues.ratchetingScore = exMLData.model_details.score_ratcheting;\n this.setState({checkedR: true});\n }\n if(exMLData.model_details.silhouette_threshold !== undefined) {\n exValues.thresholdSilhouette = exMLData.model_details.silhouette_threshold;\n this.setState({checkedT: true});\n }\n if(exMLData.model_details.silhouette_ratcheting !== undefined) {\n exValues.ratchetingSilhouette = exMLData.model_details.silhouette_ratcheting;\n this.setState({checkedR: true});\n }\n let deployments = [\"aws\", \"azure\", \"gcp\", \"databricks\", ''];\n let reqModelDeployment = exMLData.model_details.model_deployment;\n\n if (!(deployments.includes(exMLData.model_details.model_deployment))) {\n reqModelDeployment = \"others\"\n this.setState({custom_deployment: exMLData.model_details.model_deployment});\n }\n\n this.setState({modelDeployment: reqModelDeployment});\n\n }\n let mlStack = exMLData.ml_stack;\n let mlStackMatch = this.state.optionsMLStack.filter(x => x.value === mlStack );\n\n let reqMLStack;\n if (mlStackMatch.length > 0) {\n reqMLStack = mlStackMatch[0];\n exValues.mlStack = exMLData.ml_stack;\n }else {\n reqMLStack = {\"label\":\"Others\",\"value\":\"others\"}\n exValues.mlStack = \"others\";\n exValues.customMlStack = mlStack;\n }\n\n this.setState({mlStack: reqMLStack});\n\n exValues.modelName = exMLData.model_name;\n let mlType = exMLData.ml_model_type;\n let mlMatch = this.state.optionsMlType.filter(x => x.value === mlType );\n\n let reqMLType;\n if (mlMatch.length > 0) {\n reqMLType = mlMatch[0];\n exValues.mlType = mlMatch[0].value;\n }else {\n reqMLType = {\"label\":\"Others\",\"value\":\"others\"}\n exValues.mlType = \"others\";\n exValues.customMlType = mlType;\n }\n\n this.setState({mlType: reqMLType});\n\n exValues.integrationId = exMLData.integration_id;\n exValues.modelAuthored = exMLData.author;\n exValues.version = exMLData.version;\n\n let reqIntegrationOption = {\n label: exMLData.integration_name,\n value: exMLData.integration_id\n }\n\n this.setState({\n features: exMLData.features,\n integrationId: exMLData.integration_id,\n integrationOption: reqIntegrationOption\n });\n\n if (exFeature !== undefined) {\n stateDatasets.trainingData = {\n label: exFeature.base_line_data_set,\n value: exFeature.model_info_details.base_line_data_set_id\n }\n exValues.trainingData = exFeature.model_info_details.base_line_data_set_id;\n stateDatasets.servingData = {\n label: exFeature.target_data_set,\n value: exFeature.model_info_details.target_data_set\n }\n exValues.servingData = exFeature.model_info_details.target_data_set;\n }\n\n if (exAccuracy !== undefined) {\n stateDatasets.accuracy = {\n label: exAccuracy.target_data_set,\n value: exAccuracy.model_info_details.target_data_set\n }\n exValues.accuracy = exAccuracy.model_info_details.target_data_set;\n\n }\n\n if (exPrediction !== undefined ){\n stateDatasets.prediction = {\n label: exPrediction.target_data_set,\n value: exPrediction.model_info_details.target_data_set\n }\n exValues.prediction = exPrediction.model_info_details.target_data_set;\n }\n\n if (exResponse !== undefined){\n stateDatasets.response = {\n label: exResponse.target_data_set,\n value: exResponse.model_info_details.target_data_set\n }\n exValues.response = exResponse.model_info_details.target_data_set;\n }\n this.setState({\n exValues: exValues,\n datasets: stateDatasets\n });\n\n }\n\n handleCheckClick1 = () => {\n this.setState({ checkedR: !this.state.checkedR });\n }\n\n handleCheckClick2 = () => {\n this.setState({ checkedT: !this.state.checkedT });\n }\n\n populateServingIntoPrediction = () => {\n let prediction_dataset_autopopulate = this.state.datasets;\n let prediction_column_clear = this.state.predictionColumn;\n this.setState({ servingIntoPrediction: !this.state.servingIntoPrediction });\n prediction_dataset_autopopulate.prediction = prediction_dataset_autopopulate.servingData;\n this.setState({ datasets: prediction_dataset_autopopulate });\n prediction_column_clear = \"\";\n this.setState({predictionColumn:prediction_column_clear});\n }\n\n handleModelDeployment =(e)=> {\n this.setState({modelDeployment:e.target.value});\n }\n\n cancelButton() {\n if (this.props.srcPage === \"edit_ml_model\") {\n this.props.closeModal();\n } else {\n this.props.setPage(false);\n }\n }\n\n resetForm() {\n let datasets = this.state.datasets;\n datasets.accuracy = null;\n datasets.rawData = null;\n datasets.servingData = null;\n datasets.trainingData = null;\n datasets.prediction = null;\n datasets.testData = null;\n datasets.modelData = null;\n datasets.response = null;\n this.setState({\n algoType: null,\n mlStack: null,\n mlType: \"\",\n modelDeployment: \"\",\n integrationId: null,\n integrationOption: \"\",\n featuresServing: [],\n featuresTraining: [],\n accuracy: [],\n predictionColumn: [],\n responseColumn: [],\n predictionGroupBY: [],\n responseGroupBY: [],\n predictionItemCol: [],\n responseItemCol: [],\n checkedR:false,\n checkedT: false,\n servingIntoPrediction: false,\n data:{\n targetData: \"\",\n servingData: \"\"\n }});\n }\n\n getDatasets() {\n let id = this.state.integrationId;\n let optionArr = [];\n\n if (id !== null) {\n if (this.props.datasets !== undefined && this.props.datasets !== null && this.props.datasets.length > 0) {\n this.props.datasets.map(function (row) {\n if (row[\"integration_id\"] === id) {\n optionArr.push({\"label\": normalizeChildDatasetName(row[\"data_set_name\"]), \"value\": row[\"data_set_id\"]});\n }\n return 1;\n });\n }\n return optionArr\n }}\n\n getAlgoTypes(){\n let optionArr = [];\n let type = \"classification\";\n if(this.state.mlType !== \"\"){\n type = this.state.mlType[\"value\"];\n }\n this.state.optionsAlgoType.map(function (row) {\n if(row[\"type\"].includes(type) || row[\"type\"] === \"others\") {\n optionArr.push(row);\n }\n return 1;\n });\n return optionArr;\n }\n\n getAttributes(data_set_id) {\n let option_arr = [];\n if (this.props.attributes !== null) {\n this.props.attributes.map(function (row) {\n if (row[\"data_set_id\"] === Number(data_set_id)) {\n option_arr.push({\"label\": row[\"attribute_name\"], \"value\": row[\"attribute_name\"]});\n }\n return 1;\n });\n }\n return option_arr;\n }\n\n getDelimiter(handleChange, values, isPrediction) {\n /**\n * Gives the delimiter components (for recommendation models)\n *\n * Delimiter drop down and delimiter text box (for custom option)\n * Same function is used for both prediction and response column sections\n * */\n if (this.state.mlType.value !== \"recommendation\") {\n return '';\n }\n\n let delimiterSelectName;\n let customDelimiterName;\n let defaultValueForDelimiter;\n let labelPrefix;\n if (isPrediction) {\n delimiterSelectName = \"predictionDelimiter\";\n customDelimiterName = \"customPredictionDelimiter\";\n defaultValueForDelimiter = \"\";\n labelPrefix = \"Prediction \";\n } else {\n delimiterSelectName = \"responseDelimiter\";\n customDelimiterName = \"customResponseDelimiter\";\n defaultValueForDelimiter = \"\";\n labelPrefix = \"Response \";\n }\n\n const currentSelected = this.state[delimiterSelectName];\n let canShowCustom = currentSelected !== null && currentSelected.value === \"custom\";\n\n return (\n <>\n \n {`${labelPrefix}`} Delimiter\n label.toLowerCase().includes(query.toLowerCase())} \n onChange={selectedOption => {\n handleChange(\"fileType\")(selectedOption.value);\n }}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"adlFileTypeEdit\" : \"adlFileTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.fileType}\n options={file_option}\n isInvalid={errors.fileType && touched.fileType}\n placeholder=\"Choose file type\"\n classNamePrefix='select-control'\n />\n \n \n \n ADL Tenant ID *\n \n \n { touched.adl_tenant_id && errors.adl_tenant_id }\n \n \n \n ADL Client ID *\n \n \n { touched.adl_client_id && errors.adl_client_id }\n \n \n \n ADL Secret key *\n \n \n \n \n \n \n { touched.secret_key && errors.secret_key }\n \n \n \n \n \n \n \n Refresh Type *\n label.includes(query)} \n onChange={selectedOption => {\n this.setState ({\n versionFormat: {\"label\": selectedOption[\"value\"] ,\"value\": selectedOption[\"value\"]}});\n handleChange(\"versionFormat\")(selectedOption.value);}}\n isInvalid={errors.versionFormat && touched.versionFormat}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"adlVersionTypeEdit\" : \"adlVersionTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.versionFormat}\n options={version_option}\n placeholder=\"Choose Refresh Format\"\n classNamePrefix='select-control'\n />\n \n : \"\"\n }\n { this.state.versionFormat !== null && (this.state.versionFormat.value === \"custom\" && this.state.refreshType.value !== \"file_replace\") ?\n \n Custom Refresh Format\n \n \n { touched.versionFormatRegex && errors.versionFormatRegex }\n \n : \"\"\n }\n { this.state.refreshType !== null && (this.state.refreshType.value === \"file_version\" || this.state.refreshType.value === \"folder_version\") ?\n \n Refresh Format Occurrence *\n label.toLowerCase().includes(query.toLowerCase())} \n onChange={selectedOption => {\n handleChange(\"fileType\")(selectedOption.value);\n }}\n isInvalid={errors.fileType && touched.fileType}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"blobFileTypeEdit\" : \"blobFileTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.fileType}\n options={file_option}\n placeholder=\"Choose file type\"\n classNamePrefix='select-control'\n />\n \n \n \n Blob Secret *\n \n \n \n \n \n \n \n \n \n \n { touched.blob_secret && errors.blob_secret }\n \n \n \n Refresh Type *\n label.includes(query)}\n onChange={selectedOption => {\n this.setState ({\n versionFormat: {\"label\": selectedOption[\"value\"] ,\"value\": selectedOption[\"value\"]}});\n handleChange(\"versionFormat\")(selectedOption.value);}}\n isInvalid={errors.versionFormat && touched.versionFormat}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"blobVersionTypeEdit\" : \"blobVersionTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.versionFormat}\n options={version_option}\n placeholder=\"Choose Refresh Format\"\n classNamePrefix='select-control'\n />\n \n : \"\"\n }\n { this.state.versionFormat !== null && (this.state.versionFormat.value === \"custom\" && this.state.refreshType.value !== \"file_replace\") ?\n \n Custom Refresh Format\n \n \n { touched.versionFormatRegex && errors.versionFormatRegex }\n \n : \"\"\n }\n { this.state.refreshType !== null && (this.state.refreshType.value === \"file_version\" || this.state.refreshType.value === \"folder_version\") ?\n \n Refresh Format Occurrence *\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n \n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n \n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n \n \n )\n //}\n });\n}\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass DatabricksTableForm extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postAzureDeltaTable = this.postAzureDeltaTable.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n\n\n\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye, \n fileType: null,\n selectOptionKey:\"emptyFileType\",\n passwordType:'password',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n //specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null\n };\n }\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n \n //#Partition Code\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n\n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n let partitionList = []\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.host = exIntegrationConfig.host;\n integration_data.http_path = exIntegrationConfig.http_path;\n integration_data.schema = exIntegrationConfig.schema;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table = exIntegrationConfig.table;\n let fileType = this.props.ex_integration_details.integration_config.filetype;\n integration_data.fileType = fileType\n integration_data.catalog = exIntegrationConfig.catalog;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.secret_key = ex_integration_details.auth_config.secret_key;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"azure_databricks_table\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage,\n selectOptionKey: \"updatedFileType\",\n fileType:{\"label\": fileType, \"value\": fileType},\n integration_data:integration_data\n });\n\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postAzureDeltaTable(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n \n\n this.disableButton();\n const {\n integration_name, host, http_path, catalog, schema, table,fileType,\n error_storage, secret_key,\n created_time\n } = event;\n\n let azureDeltaTable = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"azure_databricks_table\",\n \"host\": host,\n \"secret_key\":secret_key,\n \"http_path\": http_path,\n \"catalog\": catalog,\n \"schema\": schema,\n \"table\": table,\n \"error_storage\": error_storage, \n \"filetype\": fileType,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed,\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"azure_databricks_table\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(azureDeltaTable, default_message);\n this.postDatasource(azureDeltaTable);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n }\n\n render() {\n let azureDeltaTableSchema = '';\n if(this.state.isChecked === false) {\n azureDeltaTableSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Databricks URL is a required field'),\n http_path: yup.string().required('Databricks HTTP Path is a required field'),\n catalog: yup.string().required('Catalog is a required field'),\n schema: yup.string().required('Schema is a required field'),\n fileType: yup.string().required('File type is a required field'),\n secret_key: yup.string().required('Databricks Access token is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n azureDeltaTableSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Databricks URL is a required field'),\n http_path: yup.string().required('Databricks HTTP Path is a required field'),\n catalog: yup.string().required('Catalog is a required field'),\n schema: yup.string().required('Schema is a required field'),\n fileType: yup.string().required('File type is a required field'),\n secret_key: yup.string().required('Databricks Access token is a required field'),\n });\n }\n\n let initial_values = {\n integration_name: '', host: '', http_path: '', catalog: '', schema: '', table: '', fileType:'', secret_key: '', error_storage: '',\n created_time: ''\n }\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else {\n edit_integration = false;\n }\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Server Hostname*\n \n \n { touched.host && errors.host }\n \n \n \n Databricks Access token *\n \n \n \n \n \n \n { touched.secret_key && errors.secret_key }\n \n \n \n \n \n \n \n HTTP Path *\n \n \n { touched.http_path && errors.http_path }\n \n \n \n Catalog *\n \n \n { touched.catalog && errors.catalog }\n \n \n \n Schema *\n \n \n { touched.schema && errors.schema }\n \n \n {/* \n Table name \n \n \n { touched.table && errors.table }\n \n */}\n \n File Type *\n label.toLowerCase().includes(query.toLowerCase())}\n onChange={selectedOption => {\n handleChange(\"fileType\")(selectedOption.value);\n }}\n key={this.state.selectOptionKey}\n isInvalid={errors.fileType && touched.fileType}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"s3FileTypeEdit\":\"s3FileTypeAdd\"}\n options={file_option}\n defaultValue={this.state.fileType}\n placeholder=\"Choose file type\"\n classNamePrefix='select-control'\n />\n \n \n \n Access key *\n \n \n { touched.accessKey && errors.accessKey }\n \n \n \n Secret Access key *\n \n \n \n \n \n \n { touched.secretAccessKey && errors.secretAccessKey }\n \n \n \n \n \n \n\n \n \n Refresh Type *\n label.includes(query)}\n onChange={selectedOption => {\n this.setState ({\n versionFormat: {\"label\": selectedOption[\"value\"] ,\"value\": selectedOption[\"value\"]}});\n handleChange(\"versionFormat\")(selectedOption.value);}}\n isInvalid={errors.versionFormat && touched.versionFormat}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"s3VersionTypeEdit\" : \"s3VersionTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.versionFormat}\n options={version_option}\n placeholder=\"Choose Refresh Format\"\n classNamePrefix='select-control'\n />\n \n : \"\"\n }\n { this.state.versionFormat !== null && (this.state.versionFormat.value === \"custom\" && this.state.refreshType.value !== \"file_replace\") ?\n \n Custom Refresh Format\n \n \n { touched.versionFormatRegex && errors.versionFormatRegex }\n \n : \"\"\n }\n { this.state.refreshType !== null && (this.state.refreshType.value === \"file_version\" || this.state.refreshType.value === \"folder_version\") ?\n \n Refresh format Occurrence *\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n \n \n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n \n \n )\n //}\n });\n}\n\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass Redshift extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.PostRedshiftData = this.PostRedshiftData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n \n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n // specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true \n };\n }\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n //#Partition Code\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n \n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n \n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n let partitionList = []\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.host_url = exIntegrationConfig.host_url;\n integration_data.database_name = exIntegrationConfig.database_name;\n integration_data.schema_name = exIntegrationConfig.schema_name;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.tenant_id = ex_integration_details.auth_config.tenant_id;\n integration_data.user_name = ex_integration_details.auth_config.user_name;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"redshift\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n PostRedshiftData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name'] \n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const {\n integration_name, host_url, database_name,\n schema_name, table_name,\n user_name, error_storage, password, created_time\n } = event;\n\n let redshiftData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"redshift\",\n \"host_url\": host_url,\n \"database_name\": database_name,\n \"error_storage\": error_storage,\n \"schema_name\": schema_name,\n \"user_name\": user_name,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"redshift\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(redshiftData, default_message);\n this.postDatasource(redshiftData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n }\n\n\n render() {\n let redshiftSchema = '';\n if(this.state.isChecked === false) {\n redshiftSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name',\n function test(value) {\n let val = userValidation(value,\"input\");\n return val;\n }\n ),\n host_url: yup.string().required('Host is a required field'),\n database_name: yup.string().required('Database is a required field'),\n schema_name: yup.string().required('Schema is a required field'),\n user_name: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n redshiftSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name',\n function test(value) {\n let val = userValidation(value,\"input\");\n return val;\n }\n ),\n host_url: yup.string().required('Host is a required field'),\n database_name: yup.string().required('Database is a required field'),\n schema_name: yup.string().required('Schema is a required field'),\n user_name: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n\n });\n }\n\n let initial_values = {\n integration_name: '', host_url: '', database_name: '', schema_name: '',\n table_name: '', user_name: '', password: '', error_storage: '',\n created_time: ''\n }\n\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else{\n edit_integration = false;\n }\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n \n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Host *\n \n \n { touched.host_url && errors.host_url }\n \n \n \n Database *\n \n \n { touched.database_name && errors.database_name }\n \n \n\n \n Username *\n \n \n { touched.user_name && errors.user_name }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n \n \n Schema *\n \n \n { touched.schema_name && errors.schema_name }\n \n \n {/* \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n \n \n \n \n Incremental Data Identifier \n \n */}\n\n\nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n \n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n
\n {this.props.showCancel ?\n : ''\n }\n \n
\n )}\n \n \n\n );\n }\n}\nexport default Redshift;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from '../../../../utils/common_utils';\nimport {Form, InputGroup} from 'react-bootstrap';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {TEST_CONNECTION_MESSAGES} from \"../../../../utils/constant\";\nimport {faPlusCircle} from '@fortawesome/free-solid-svg-icons';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport {faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n//#Partition Code\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\n\nclass BigQueryForm extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postBigQueryData = this.postBigQueryData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.handleFileChange = this.handleFileChange.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n json: '',\n json_file_name: '',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n //specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null\n };\n }\n \n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n //#Partition Code\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n let partitionList = []\n\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n const authConfig = ex_integration_details.auth_config;\n integration_data.schema = exIntegrationConfig.schema;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.json_file = \"exists\";\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"big_query\";\n integration_data.json = authConfig;\n integration_data.json_file_name = exIntegrationConfig.json_file_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postBigQueryData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const {integration_name, schema,\n table_name, tenant_id, created_time} = event;\n\n let json = this.state.json;\n let json_file_name = this.state.json_file_name;\n if (json === '') {\n json_file_name = this.state.integration_data.json_file_name;\n json = this.state.integration_data.json;\n }\n let bigQueryData = {\"integration_name\":integration_name,\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"big_query\",\n \"schema\": schema,\n \"data_store_type\":\"database\",\n \"tenant_id\": tenant_id,\n \"table_name\": table_name,\n \"json\": json,\n \"json_file\": json_file_name,\n \"created_time\": created_time,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"big_query\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(bigQueryData, default_message);\n this.postDatasource(bigQueryData);\n\n }\n\n handleFileChange(e) {\n const fileReader = new FileReader();\n fileReader.readAsText(e.target.files[0], \"UTF-8\");\n let name = e.target.files[0][\"name\"];\n fileReader.onload = e => {\n this.setState({\"json\": JSON.parse(e.target.result), \"json_file_name\": name});\n };\n };\n\n render() {\n let bigQuerySchema = '';\n if (this.state.isChecked === false){\n bigQuerySchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n schema: yup.string().required('Dataset is a required field'),\n json_file: yup.string().required('JSON file is required'),\n error_storage: yup.string().required('Error Storage is required'),\n });\n }else {\n bigQuerySchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n schema: yup.string().required('Dataset is a required field'),\n json_file: yup.string().required('JSON file is required'),\n });\n }\n\n\n\n let initial_values = {\n integration_name: '', schema: '',\n table_name: '', tenant_id: '',\n error_storage: '', json_file: '',\n created_time: ''\n }\n\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else {\n edit_integration = false;\n }\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n setFieldValue,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Schema *\n \n \n { touched.schema && errors.schema }\n \n \n {/* \n Table Name \n \n \n { touched.table_name && errors.table_name }\n \n */}\n {values.json_file !== \"exists\" ?\n \n Service Account JSON *\n {\n handleChange(e);\n this.handleFileChange(e);\n }}\n isInvalid={errors.json_file && touched.json_file}\n />\n \n { touched.json_file && errors.json_file }\n \n \n :\n \n Service Account JSON *\n \n \n \n {\n setFieldValue ('json_file', '')\n }} >\n Edit\n \n \n \n \n }\n {/* \n Incremental Data Identifier \n \n */}\n\nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n\n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n
\n {this.props.showCancel ?\n : ''}\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default BigQueryForm;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from \"../../../../utils/common_utils\"\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES} from \"../../../../utils/constant\";\nimport { faEye, faLock, faEyeSlash,faPlusCircle,faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\n\n\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass SnowflakeIntegration extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postSnowflakeData = this.postSnowflakeData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n //specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null\n };\n }\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets: []\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n\n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n \n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n let partitionList = []\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[],\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"incremental data identifier\"}]\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.snowflakeUrl = exIntegrationConfig.url;\n integration_data.database = exIntegrationConfig.database;\n integration_data.schema = exIntegrationConfig.schema;\n integration_data.ware_house = exIntegrationConfig.ware_house;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.tenant_id = ex_integration_details.auth_config.tenant_id;\n integration_data.user = ex_integration_details.auth_config.user;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"snow_flake\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postSnowflakeData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection\n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const {\n integration_name, snowflakeUrl, database,\n schema, ware_house, table_name,\n user, error_storage, password,\n tenant_id, created_time\n } = event;\n\n let snowflakeData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"snow_flake\",\n \"url\": snowflakeUrl,\n \"database\": database,\n \"error_storage\": error_storage,\n \"schema\": schema,\n \"ware_house\": ware_house,\n \"tenant_id\": tenant_id,\n \"user\": user,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"snow_flake\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(snowflakeData, default_message);\n this.postDatasource(snowflakeData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n }\n\n render() {\n let snowflakeSchema = '';\n if(this.state.isChecked === false) {\n snowflakeSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n snowflakeUrl: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n schema: yup.string().required('Schema is a required field'),\n ware_house: yup.string().required('Warehouse is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n snowflakeSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n snowflakeUrl: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n schema: yup.string().required('Schema is a required field'),\n ware_house: yup.string().required('Warehouse is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n\n });\n }\n\n let initial_values = {\n integration_name: '', snowflakeUrl: '', database: '', schema: '',\n ware_house: '', table_name: '', user: '', password: '', tenant_id: '', error_storage: '',\n created_time: ''\n }\n\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else{\n edit_integration = false;\n }\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Host *\n \n \n { touched.snowflakeUrl && errors.snowflakeUrl }\n \n \n \n Database *\n \n \n { touched.database && errors.database }\n \n \n \n Schema *\n \n \n { touched.schema && errors.schema }\n \n \n \n Warehouse *\n \n \n { touched.ware_house && errors.ware_house }\n \n \n {/* \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n */}\n \n Username *\n \n \n { touched.user && errors.user }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n {/* \n Incremental Data Identifier \n \n */}\n \nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n \n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n
\n {this.props.showCancel ?\n : ''\n }\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default SnowflakeIntegration;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from '../../../../utils/common_utils';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES} from \"../../../../utils/constant\";\nimport { faEye, faLock, faEyeSlash,faPlusCircle, faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\n\n\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass PostgresForm extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postPostgresData = this.postPostgresData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password', \n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n // specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null \n };\n }\n componentDidMount() {\n this.fill_details();\n\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets: []\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n \n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }}\n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n let partitionList = []\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[],\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.host_url = exIntegrationConfig.host_url;\n integration_data.database_name = exIntegrationConfig.database_name;\n integration_data.schema_name = exIntegrationConfig.schema_name;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.tenant_id = ex_integration_details.auth_config.tenant_id;\n integration_data.user_name = ex_integration_details.auth_config.user_name;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"postgresql\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postPostgresData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const {\n integration_name, host_url, database_name,\n schema_name, table_name,\n user_name, error_storage, password, created_time\n } = event;\n let postgresData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"postgresql\",\n \"host_url\": host_url,\n \"database_name\": database_name,\n \"error_storage\": error_storage,\n \"schema_name\": schema_name,\n \"user_name\": user_name,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"postgresql\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(postgresData, default_message);\n this.postDatasource(postgresData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n } \n\n render() {\n let postgresSchema = '';\n if(this.state.isChecked === false) {\n postgresSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host_url: yup.string().required('Host is a required field'),\n database_name: yup.string().required('Database is a required field'),\n schema_name: yup.string().required('Schema is a required field'),\n user_name: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n postgresSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host_url: yup.string().required('Host is a required field'),\n database_name: yup.string().required('Database is a required field'),\n schema_name: yup.string().required('Schema is a required field'),\n user_name: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n\n });\n }\n\n let initial_values = {\n integration_name: '', host_url: '', database_name: '', schema_name: '',\n table_name: '', user_name: '', password: '', error_storage: '',\n created_time: ''\n }\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n\n }\n else{\n edit_integration = false;\n }\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Host *\n \n \n { touched.host_url && errors.host_url }\n \n \n \n Database *\n \n \n { touched.database_name && errors.database_name }\n \n \n \n Schema *\n \n \n { touched.schema_name && errors.schema_name }\n \n \n {/* \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n */}\n \n Username *\n \n \n { touched.user_name && errors.user_name }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n {/* \n Incremental Data Identifier \n \n */}\n \nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n \n \n \n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n\n\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n
\n {this.props.showCancel ?\n : ''\n }\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default PostgresForm;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from \"../../../../utils/common_utils\"\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES} from \"../../../../utils/constant\";\nimport { faEye, faLock, faEyeSlash,faPlusCircle,faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\n\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass MySqlForm extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postMySqlData = this.postMySqlData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this) \n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n \n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password', \n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n // specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null\n };\n }\n\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n //#Partition Code\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n let partitionList = []\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.host = exIntegrationConfig.host;\n integration_data.database = exIntegrationConfig.database;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.user = ex_integration_details.auth_config.user;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"mysql\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postMySqlData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n \n this.disableButton();\n const {\n integration_name, host, database, table_name,\n user, error_storage, password,\n created_time\n } = event;\n\n let mySqlData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"mysql\",\n \"host\": host,\n \"database\": database,\n \"error_storage\": error_storage,\n \"user\": user,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"mysql\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(mySqlData, default_message);\n this.postDatasource(mySqlData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n } \n\n render() {\n let mySqlSchema = '';\n if(this.state.isChecked === false) {\n mySqlSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n mySqlSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n });\n }\n\n let initial_values = {\n integration_name: '', host: '', database: '', table_name: '', user: '', password: '', error_storage: '',\n created_time: ''\n }\n\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else{\n edit_integration = false;\n }\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Host *\n \n \n { touched.host && errors.host }\n \n \n \n Database *\n \n \n { touched.database && errors.database }\n \n \n {/* \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n */}\n \n Username *\n \n \n { touched.user && errors.user }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n {/* \n Incremental Data Identifier \n \n */}\n \nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n\n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n
\n {this.props.showCancel ?\n : ''}\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default MySqlForm;","import React from 'react';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { postDatasource } from \"../../../../utils/event_handling\";\nimport { userValidation } from \"../../../../utils/common_utils\"\nimport { TEST_CONNECTION_MESSAGES } from \"../../../../utils/constant\";\nimport { faEye, faLock, faEyeSlash,faPlusCircle, faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n//#Partition Code\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\n \n const Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n \n \n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n \n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n })\n }\n //#Partition Code \nclass AzureSynapseDSForm extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.postAzureData = this.postAzureData.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangesecretKeyIcon = this.ChangesecretKeyIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this) \n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n \n this.state = {\n formType_option: null,\n isChecked: true,\n hideSubmitButton: false,\n selectOptionKey: \"emptyFileType\",\n integration_data: this.props.integration_data,\n secretKeyIcon: faEye,\n secretKeyType: 'password',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n //specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null\n };\n }\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n \n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n \n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n let partitionList = []\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n \n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n \n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n \n }\n }\n \n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n \n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n \n //#Partition Code\n \n toggleChange = () => {\n this.setState({ isChecked: !this.state.isChecked });\n }\n\n fill_details() {\n let exIntegrationDetails = this.props.ex_integration_details;\n\n if ( exIntegrationDetails !== undefined && exIntegrationDetails !== null) {\n let integration_data = this.state.integration_data;\n integration_data.integration_name = exIntegrationDetails[\"integration_name\"];\n integration_data.integration_id = exIntegrationDetails[\"integration_id\"];\n\n let exIntegrationConfig = exIntegrationDetails.integration_config;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.created_time = exIntegrationConfig.created_time;\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({ isChecked: defaultErrorStorage });\n\n integration_data.synapse_table_name = exIntegrationConfig.synapse_table_name;\n integration_data.database_name = exIntegrationConfig.database_name;\n integration_data.schema = exIntegrationConfig.schema;\n integration_data.synapse_sql_host = exIntegrationConfig.synapse_sql_host;\n\n let exAuthConfig = exIntegrationDetails.auth_config;\n integration_data.synapse_password = exAuthConfig.synapse_password;\n integration_data.synapse_user = exAuthConfig.synapse_user;\n\n this.setState({\n integration_type: this.props.formType,\n integration_data: integration_data\n });\n }\n\n }\n\n postAzureData(event) {\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const { integration_name, error_storage, \n synapse_user, synapse_password, synapse_table_name,\n created_time, \n database_name, synapse_sql_host, schema } = event;\n\n let azureData = {\n \"integration_name\": integration_name,\n \"integration_id\": this.state.integration_data.integration_id,\n \"data_store_type\": \"filesystem\",\n \"error_storage\": error_storage,\n \"env_id\": this.props.env_id,\n \"created_time\": created_time,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n azureData[\"database_name\"] = database_name\n azureData[\"synapse_sql_host\"] = synapse_sql_host\n azureData[\"integration_type\"] = \"azure_synapse_ds\"\n azureData[\"synapse_table_name\"] = synapse_table_name\n azureData[\"synapse_password\"] = synapse_password\n azureData[\"synapse_user\"] = synapse_user\n azureData[\"schema\"] = schema\n\n azureData[\"isFirstIntegration\"] = this.props.isFirstIntegration;\n let default_message = TEST_CONNECTION_MESSAGES[this.props.formType];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(azureData, default_message);\n this.postDatasource(azureData);\n\n }\n\n\n getSchema() {\n let azureSchema = '';\n if (this.state.isChecked === true) {\n azureSchema = yup.object({\n integration_name: yup.string().min(1, \"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name',\n function test(value) {\n let val = userValidation(value, \"input\");\n return val;\n }\n ),\n database_name: yup.string().required('Database is a required field'),\n synapse_sql_host: yup.string().required('Host is a required field'), \n synapse_password: yup.string().required('Password is a required field'),\n synapse_user: yup.string().required('Username is a required field'),\n schema: yup.string().required('Schema is a required field'),\n });\n\n } else if (this.state.isChecked === false) {\n azureSchema = yup.object({\n integration_name: yup.string().min(1, \"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name',\n function test(value) {\n let val = userValidation(value, \"input\");\n return val;\n }\n ),\n database_name: yup.string().required('Database is a required field'),\n synapse_user: yup.string().required('Username is a required field'),\n synapse_password: yup.string().required('Password is a required field'),\n synapse_sql_host: yup.string().required('Host is a required field'), \n error_storage: yup.string().required('Error Storage is a required field'),\n schema: yup.string().required('Schema is a required field'),\n });\n }\n\n return azureSchema;\n }\n\n ChangesecretKeyIcon() {\n let state = this.state.secretKeyIcon;\n if (state.iconName === \"eye\") {\n this.setState({ secretKeyIcon: faEyeSlash });\n this.setState({ secretKeyType: \"text\" })\n } else {\n this.setState({ secretKeyIcon: faEye });\n this.setState({ secretKeyType: \"password\" })\n }\n }\n\n disableButton() {\n this.setState({ hideSubmitButton: true });\n }\n\n render() {\n let azureSchema = this.getSchema();\n\n let initial_values = {\n integration_name: '', error_storage: '', \n synapse_user: '', synapse_password: '',\n synapse_table_name: '', database_name: '', \n created_time: '',\n synapse_sql_host: '',\n schema: ''\n }\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined) {\n edit_integration = true;\n }\n else {\n edit_integration = false;\n }\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n {touched.integration_name && errors.integration_name}\n \n \n <>\n\n \n Host\n *\n \n \n {touched.synapse_sql_host && errors.synapse_sql_host}\n \n \n\n \n Database *\n \n \n {touched.database_name && errors.database_name}\n \n \n \n Schema *\n \n \n { touched.schema && errors.schema }\n \n \n {/* \n Table name \n \n \n {touched.synapse_table_name && errors.synapse_table_name}\n \n */}\n\n \n Username *\n \n \n {touched.synapse_user && errors.synapse_user}\n \n \n\n \n Password *\n \n \n \n \n \n \n {touched.synapse_password && errors.synapse_password}\n \n \n \n \n \n \n\n {/* \n Incremental Data Identifier \n \n */}\n\n\nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n \n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n \n\n \n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Storage Sub Path *\n \n \n {touched.error_storage && errors.error_storage}\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n \n
\n {this.props.showCancel ? : ''}\n \n
\n
)}\n \n \n );\n }\n}\nexport default AzureSynapseDSForm;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from '../../../../utils/common_utils';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES} from \"../../../../utils/constant\";\nimport { faEye, faLock, faEyeSlash,faPlusCircle,faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n//#Partition Code\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\n\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass AzureSQL extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postAzureSqlData = this.postAzureSqlData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n\n\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n //specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null,\n edit_partition_list:[],\n edit_specifieddataset_list:[]\n\n };\n }\n\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n //specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n\n //#Partition Code\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n\n \n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n let partitionList = []\n\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.host = exIntegrationConfig.host;\n integration_data.database = exIntegrationConfig.database;\n integration_data.schema = exIntegrationConfig.schema;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.user = ex_integration_details.auth_config.user;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"azure_sql\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postAzureSqlData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const {\n integration_name, host, database,schema, table_name,\n user, error_storage, password,\n created_time\n } = event;\n\n let azureSqlData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"azure_sql\",\n \"host\": host,\n \"database\": database,\n \"schema\": schema,\n \"error_storage\": error_storage,\n \"user\": user,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed,\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"azure_sql\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(azureSqlData, default_message);\n this.postDatasource(azureSqlData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n }\n\n render() {\n let azureSqlSchema = '';\n if(this.state.isChecked === false) {\n azureSqlSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n schema: yup.string().required('Schema is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n azureSqlSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n schema: yup.string().required('Schema is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n });\n }\n\n let initial_values = {\n integration_name: '', host: '', database: '', schema: '', table_name: '', user: '', password: '', error_storage: '',\n created_time: ''\n }\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else {\n edit_integration = false;\n }\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Host *\n \n \n { touched.host && errors.host }\n \n \n \n Database *\n \n \n { touched.database && errors.database }\n \n \n \n Schema *\n \n \n { touched.schema && errors.schema }\n \n \n {/* \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n */}\n \n Username *\n \n \n { touched.user && errors.user }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n {/* \n Incremental Data Identifier \n \n */}\n\n\nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n\n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n
\n {this.props.showCancel ?\n : ''\n }\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default AzureSQL;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from '../../../../utils/common_utils';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES, POWER_BI_CONNECTOR} from \"../../../../utils/constant\";\nimport { faEye, faLock, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\n\n\nclass PowerBi extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postPowerBiData = this.postPowerBiData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password',\n };\n }\n\n componentDidMount() {\n this.fill_details();\n }\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.workspace = exIntegrationConfig.workspace;\n integration_data.database = exIntegrationConfig.database;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.tenant_id = ex_integration_details.auth_config.tenant_id;\n integration_data.user_name = ex_integration_details.auth_config.user_name;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = POWER_BI_CONNECTOR;\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postPowerBiData(event){\n this.disableButton();\n const {\n integration_name, workspace, database,\n table_name, user_name, error_storage, password, created_time\n } = event;\n\n let powerbiData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":POWER_BI_CONNECTOR,\n \"error_storage\": error_storage,\n \"workspace\": workspace,\n \"database\": database,\n \"user_name\": user_name,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id\n }\n let default_message = TEST_CONNECTION_MESSAGES[POWER_BI_CONNECTOR];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(powerbiData, default_message);\n this.postDatasource(powerbiData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n }\n\n render() {\n let powerBiSchema = '';\n if(this.state.isChecked === false) {\n powerBiSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name',\n function test(value) {\n let val = userValidation(value,\"input\");\n return val;\n }\n ),\n user_name: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n powerBiSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name',\n function test(value) {\n let val = userValidation(value,\"input\");\n return val;\n }\n ),\n user_name: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n });\n }\n\n let initial_values = {\n integration_name: '', workspace: '',\n database: '', table_name: '', user_name: '', password: '', error_storage: '',\n created_time: ''\n }\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Workspace \n \n \n { touched.workspace && errors.workspace }\n \n \n \n Database \n \n \n { touched.database && errors.database }\n \n \n \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n \n \n Username *\n \n \n { touched.user_name && errors.user_name }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n
\n {this.props.showCancel ?\n : ''\n }\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default PowerBi;","import React from 'react';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport { userValidation } from '../../../../utils/common_utils';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES} from \"../../../../utils/constant\";\nimport {faEye, faLock, faEyeSlash,faPlusCircle,faInfoCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Select from 'react-select';\nimport {faTimesCircle} from '@fortawesome/fontawesome-free-regular';\nimport RcTooltip from 'rc-tooltip';\nimport Image from '../../../../components/image.js';\nimport Alert from 'react-bootstrap/Alert';\n\n//#Partition Code\n//#Partition Code\nconst SpecificDataset = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n \n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.table; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n // if(props.clickedValue[idx][name] === undefined){\n let checked = props.clickedValue[idx][\"match_exact\"] === \"match_exact\" ? \"checked\" : \"\";\n return (\n
\n {(idx===0 && props.datasetToBeProcessed === \"specifiedDataset\" && props.editAction === false) ? \"\" : }\n
\n { props.datasetToBeProcessed === \"allDataset\" ?\n Add Incremental Data Identification (Optional)\n :\n Dataset {idx+1} to be processed}\n
\n \n Dataset Name \n {props.datasetToBeProcessed === \"specifiedDataset\" ?\n * : \"\" }\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n \n
\n x===props.clickedValue[idx][\"table\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n placeholder=\"Dataset Name\"\n name={\"specic_dataset_name_\"+(idx+1)}\n id={\"specic_dataset_name_\"+(idx+1)}\n data-index={(idx)}\n data-key={\"table\"}\n value={((props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined)) ? \"\" : props.clickedValue[idx][\"table\"]}\n onChange={(e) => {props.changeDatasetText(e)}}\n />\n {\n (props.clickedValue[idx][\"table\"]===\"\" || props.clickedValue[idx][\"table\"]===undefined) ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"table\"]!==\"\" && props.clickedValue[idx][\"table\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"table\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n {checked !==\"\" ?\n \n \n {props.handleExactMatch(e)}}\n />\n \n :\n \n {props.handleExactMatch(e)}}\n />\n \n }\n
\n \n Incremental Data Identifier\n {props.changeDatasetText(e)}}\n placeholder=\"Incremental data identifier\"\n />\n {(props.datasetToBeProcessed === \"allDataset\" && (props.clickedValue[idx][\"created_time\"]===\"\" || props.clickedValue[idx][\"created_time\"]===undefined)) ?
Incremental Data Identifier is required field
: \"\" }\n
\n\n\n \n
\n {props.handleStartIndex(e)}}\n />\n \n Starting Index (Optional)\n \n
\n
\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option1\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n \n className=\"custom-control-input\" />\n \n
\n\n
\n {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n\n className=\"custom-control-input\" />\n \n
\n\n\n {/* {props.handleStartIndexRadio(e)}}\n id={idx+\"startindex_radio_option2\"} \n data-index={(idx)}\n data-key={\"start_index_type\"}\n />\n This Dataset will get partition.\n }\n arrowContent={
}\n >\n \n */}\n
\n
\n{(props.clickedValue[idx][\"start_index_check_box\"]=== \"false\" || props.clickedValue[idx][\"start_index_check_box\"]=== undefined) ?\n\"\" : props.clickedValue[idx][\"start_index_type\"]=== \"incremental data identifier\" || props.clickedValue[idx][\"start_index_type\"]=== undefined ? \n \n Starting Index Value\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with\"]===\"\" || props.clickedValue[idx][\"start_with\"]===undefined) ?
Starting Index Value is required field
: \"\"}\n
\n :\n \n \n Starting Index Query\n {props.changeDatasetText(e)}}\n />\n {(props.clickedValue[idx][\"start_with_query\"]===\"\" || props.clickedValue[idx][\"start_with_query\"]===undefined) ?
Starting Index Query is required field
: \"\"}\n Note:This query will be used for Starting Index.\n
\n }\n
\n
\n
)\n //}\n });\n}\n\nconst Partitions = (props) => {\n if (props.clickedValue === undefined){\n return '';\n }\n\n let tablelist;\n tablelist = props.clickedValue.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n tablelist = tablelist.split(\",\");\n\n\n return props.clickedValue.map((value,idx) => {\n let name = props.name;\n let filterdatasetlist =\n props.partitiondatasetlist.filter(d =>\n d.value === props.clickedValue[idx][\"dataset_name\"]\n ).length\n return (
\n \n
\n Partition {idx+1}\n
\n {props.datasetToBeProcessed === \"allDataset\" ?\n \n Dataset Name\n x===props.clickedValue[idx][\"dataset_name\"]).length > 1)) ? \"form-control is-invalid\" : \"form-control\"}\n name={\"dataset_name_\"+(idx+1)}\n placeholder=\"Dataset Name\"\n onChange={(e) => {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name already added
: \"\"\n } \n
:\n \n Select Dataset\n label.includes(query)}\n id={\"dataset_name_\"+(idx+1)}\n onChange={(e) => {props.changePartitionSelect(e,\"dataset_name\",idx)}}\n options={props.partitiondatasetlist}\n placeholder=\"Dataset\"\n />\n {\n props.clickedValue[idx][\"dataset_name\"]===\"\" || props.clickedValue[idx][\"dataset_name\"]===undefined || filterdatasetlist ===0 ?
Dataset Name is required field
: \"\"\n }\n {\n (props.clickedValue[idx][\"dataset_name\"]!==\"\" && props.clickedValue[idx][\"dataset_name\"]!==undefined && tablelist.filter(x => x===props.clickedValue[idx][\"dataset_name\"]).length > 1) ?
Dataset Name is already selected
: \"\"\n }\n \n
}\n \n \n Partition Name\n {props.changePartitionText(e)}}\n placeholder=\"Partition Name\"\n />\n {\n props.clickedValue[idx][\"partition_name\"]===\"\" || props.clickedValue[idx][\"partition_name\"]===undefined ?
Partition Name is required field
: \"\"\n }\n
\n \n Partition By\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByColumn\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Column\"\n checked={(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined ) ? true : false}\n className=\"custom-control-input\" />\n Column\n
\n
\n {\n props.changePartitionBy(selectedOption.currentTarget.name,(idx+1),selectedOption.currentTarget.value);\n }}\n type=\"radio\"\n data-key={\"partition_by\"}\n id={\"partitionByCustom\"+(idx+1)}\n name={\"partitionBy\"+(idx+1)}\n value=\"Custom Query\"\n disabled={\"disabled\"}\n checked={value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? true : false}\n className=\"custom-control-input\" />\n Custom Query\n
\n
\n
\n {(value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Column\" || value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === undefined) ? \n \n Partition Identifier\n {props.changePartitionText(e)}}\n />\n {\n props.clickedValue[idx][\"column_name\"]===\"\" || props.clickedValue[idx][\"column_name\"]===undefined ?
Partition Identifier is required field
: \"\"\n }\n\n
:\"\" }\n {value[\"partitionBy\"+(parseInt(idx)+parseInt(1))] === \"Custom Query\" ? \n \n Custom Query\n \n Note:This query will be used to partition and monitor the Dataset.\n : \"\" }\n
\n
\n
)\n})\n}\n//#Partition Code\n\nclass GcpSQL extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postGcpSqlData = this.postGcpSqlData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.ChangePasswordIcon = this.ChangePasswordIcon.bind(this);\n //#Partition Code\n this.handleDatasetChange = this.handleDatasetChange.bind(this);\n this.addPartition = this.addPartition.bind(this);\n this.removePartition = this.removePartition.bind(this);\n this.addSpecificDataset = this.addSpecificDataset.bind(this);\n this.removeSpecificDataset = this.removeSpecificDataset.bind(this);\n this.changePartitionBy = this.changePartitionBy.bind(this);\n this.changePartitionText = this.changePartitionText.bind(this);\n this.changeDatasetText = this.changeDatasetText.bind(this);\n this.changePartitionSelect = this.changePartitionSelect.bind(this);\n this.handleExactMatch = this.handleExactMatch.bind(this)\n this.handleStartIndex = this.handleStartIndex.bind(this)\n this.handleStartIndexRadio = this.handleStartIndexRadio.bind(this)\n\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n passwordIcon:faEye,\n passwordType:'password',\n //#Partition Code\n datasetToBeProcessed:\"allDataset\",\n partition:[],\n specificDatasets:[],\n // specificDatasets:[{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}],\n default_partition_by:\"Column\",\n partitiondatasetlist:[],\n dataset_processed_edit:true,\n selectedPartitionRemoved:null\n };\n }\n componentDidMount() {\n this.fill_details();\n //#Partition Code\n if(this.props.ex_integration_details!==null){\n let partitiondatasetlist = [];\n if(this.props.ex_integration_details.integration_config.table_names!==undefined){\n for(let loop=0;loop ({\n partition:[],\n selectedPartitionRemoved:null,\n partitiondatasetlist:[],\n specificDatasets:[]\n // specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\"}]\n }))\n }\n }\n //#Partition Code\n }\n //#Partition Code\n changePartitionBy(name,idx,value){\n let partition = [...this.state.partition];\n partition[idx-1][name] = value;\n this.setState({partition:partition});\n }\n\n changeDatasetText(e){\n let specificDatasets = [...this.state.specificDatasets];\n let partitiondatasetlist = [...this.state.partitiondatasetlist];\n let partition = [...this.state.partition]\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved\n\n if(e.currentTarget.getAttribute(\"data-key\")===\"table\"){\n let selectobj = {};\n selectobj.label= e.currentTarget.value;\n selectobj.value= e.currentTarget.value;\n partitiondatasetlist[e.currentTarget.getAttribute(\"data-index\")] = selectobj;\n }\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n if(e.currentTarget.getAttribute(\"data-key\")===\"created_time\"){\n if(e.currentTarget.value===\"\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n }} \n\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with_query\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with\"] = \"\";\n }\n if(e.currentTarget.getAttribute(\"data-key\")===\"start_with\"){\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"start_with_query\"] = \"\";\n } \n\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][e.currentTarget.getAttribute(\"data-key\")] = e.currentTarget.value;\n specificDatasets[e.currentTarget.getAttribute(\"data-index\")][\"partition_type\"] = \"column\";\n \n this.setState({\n specificDatasets:specificDatasets,\n partitiondatasetlist:partitiondatasetlist});\n\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n let partitionList = []\n\n for (let loop=0;loop ({\n //specificDatasets: [...prevState.specificDatasets, tempData]\n partition:[],\n partitiondatasetlist:[],\n specificDatasets: [{\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}]\n }))\n }else {\n // let tempData = null\n // let idx;\n //tempData = Object.assign({});\n this.setState((prevState) => ({\n partition:[],\n partitiondatasetlist:[],\n specificDatasets:[]\n// specificDatasets: {\"table\":\"\",\"created_time\":\"\",\"start_with\":\"\",\"match_exact\":\"match_exact\",\"start_with_query\":\"\",\"start_index_check_box\":\"false\",\"start_index_type\":\"\"}\n }))\n }\n this.setState({datasetToBeProcessed:e.target.value});\n }\n\n removePartition = (idx,name) => {\n this.state.partition.splice(idx,1)\n this.setState({partition:this.state.partition});\n }\n\n addSpecificDataset(e){\n e.preventDefault();\n let checkpartitionvalidation = true;\n let specificDatasets = this.state.specificDatasets;\n if (this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n specificDatasets: [...prevState.specificDatasets, tempData]\n }));\n\n }\n }\n\n removeSpecificDataset = (idx,name) => {\n this.state.specificDatasets.splice(idx,1)\n this.setState({specificDatasets:this.state.specificDatasets});\n }\n\n addPartition(e){\n if(this.state.datasetToBeProcessed === \"specifiedDataset\"){\n for(let loop=0;loop ({\n partition: [...prevState.partition, tempData]\n }));\n }\n }\n\n//#Partition Code\n\n\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n const exIntegrationConfig = ex_integration_details.integration_config;\n integration_data.host = exIntegrationConfig.host;\n integration_data.database = exIntegrationConfig.database;\n integration_data.schema = exIntegrationConfig.schema;\n integration_data.error_storage = exIntegrationConfig.error_storage;\n integration_data.table_name = exIntegrationConfig.table_name;\n integration_data.created_time = exIntegrationConfig.created_time;\n integration_data.user = ex_integration_details.auth_config.user;\n integration_data.password = ex_integration_details.auth_config.password;\n integration_data.integration_name = ex_integration_details.integration_name;\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"gcp_sql\";\n\n let defaultErrorStorage = exIntegrationConfig.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n integration_data.filetype= \"json\";\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postGcpSqlData(event){\n let partitiondata = this.state.partition;\n let datasetToBeProcessed= this.state.datasetToBeProcessed;\n let specificDatasets = this.state.specificDatasets;\n let selectedPartitionRemoved = this.state.selectedPartitionRemoved;\n let checkpartitionvalidation = true;\n\n let tablelistparition,incrementaldataset;\n tablelistparition = partitiondata.map(function(elem){ \n return elem.dataset_name; }).join(\",\");\n if(tablelistparition!==\"\"){\n tablelistparition = tablelistparition.split(\",\");\n }\n\n incrementaldataset = specificDatasets.map(function(elem){ \n return elem.table; }).join(\",\");\n if(incrementaldataset!==\"\"){\n incrementaldataset = incrementaldataset.split(\",\"); \n }\n if (datasetToBeProcessed === 'specifiedDataset'){\n if(specificDatasets.length === 0){\n document.getElementById(\"addSpecificDataset\").click();\n return; \n }\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n else {\n for(let loop=0;loop x===specificDatasets[loop][\"table\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n }\n }\n }\n \n \n for(let loop=0;loop x===partitiondata[loop][\"dataset_name\"]).length > 1) {\n checkpartitionvalidation = false;\n break;\n }\n } \n }\n\n // Partition/Dataset Chcek Already Saved Connection\n if (this.props.ex_integration_details !== null) {\n let paritioneditcheck = true;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.add(\"d-none\");\n });\n if (this.props.ex_integration_details.integration_config.table_names !== undefined) {\n let table_names = this.props.ex_integration_details.integration_config.table_names;\n if (table_names.length > 0) {\n table_names = this.props.ex_integration_details.integration_config.table_names;\n for (let loop = 0; loop < table_names.length; loop++) {\n if (table_names.length <= specificDatasets.length) {\n if (specificDatasets[loop]['table'] !== table_names[loop]['table'] ||\n specificDatasets[loop]['start_with'] !== table_names[loop]['start_with'] ||\n specificDatasets[loop]['partition_type'] !== table_names[loop]['partition_type'] ||\n specificDatasets[loop]['match_exact'] !== table_names[loop]['match_exact'] ||\n specificDatasets[loop]['created_time'] !== table_names[loop]['created_time'] ||\n specificDatasets[loop]['start_with_query'] !== table_names[loop]['start_with_query']\n\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (this.props.ex_integration_details.integration_config.partitions !== undefined) {\n let edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n if (edit_partition_list.length > 0) {\n edit_partition_list = this.props.ex_integration_details.integration_config.partitions;\n for (let loop = 0; loop < edit_partition_list.length; loop++) {\n if (edit_partition_list.length <= partitiondata.length) {\n if (partitiondata[loop]['dataset_name'] !== edit_partition_list[loop]['dataset_name'] ||\n partitiondata[loop]['partition_type'] !== edit_partition_list[loop]['partition_type'] ||\n partitiondata[loop]['partition_name'] !== edit_partition_list[loop]['partition_name'] ||\n partitiondata[loop]['column_name'] !== edit_partition_list[loop]['column_name']\n ) {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n } else {\n paritioneditcheck = false;\n let elems = document.querySelectorAll(\"#edit_ds_model .partition_alert_check\");\n [].forEach.call(elems, function(el) {\n el.classList.remove(\"d-none\");\n });\n }\n }\n }\n }\n if (!paritioneditcheck) {\n let partioncheck = document.getElementById(\"partion-checkbox\");\n if (partioncheck.checked === false) {\n partioncheck.focus()\n return;\n }\n }\n }\n // End Partition/Dataset Chcek Already Saved Connection \n if(!checkpartitionvalidation){\n return;\n }\n this.disableButton();\n const {\n integration_name, host, database,schema, table_name,\n user, error_storage, password,\n created_time\n } = event;\n\n let gcpSqlData = {\"integration_name\":integration_name,\n \"data_store_type\":\"database\",\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"gcp_sql\",\n \"host\": host,\n \"database\": database,\n \"schema\": schema,\n \"error_storage\": error_storage,\n \"user\": user,\n \"password\": password,\n \"table_name\": table_name,\n \"created_time\": created_time,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id,\n \"partitions\":this.state.partition,\n \"table_names\":specificDatasets,\n \"datasetToBeProcessed\":this.state.datasetToBeProcessed\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"gcp_sql\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(gcpSqlData, default_message);\n this.postDatasource(gcpSqlData);\n\n }\n\n ChangePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n }\n\n render() {\n let gcpSqlSchema = '';\n if(this.state.isChecked === false) {\n gcpSqlSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n schema: yup.string().required('Schema is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n error_storage: yup.string().required('Error Storage is a required field'),\n });\n }else {\n gcpSqlSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n host: yup.string().required('Host is a required field'),\n database: yup.string().required('Database is a required field'),\n schema: yup.string().required('Schema is a required field'),\n user: yup.string().required('Username is a required field'),\n password: yup.string().required('Password is a required field'),\n });\n }\n\n let initial_values = {\n integration_name: '', host: '', database: '', schema: '', table_name: '', user: '', password: '', error_storage: '',\n created_time: ''\n }\n\n let edit_integration = null;\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined){\n edit_integration = true;\n }\n else{\n edit_integration = false;\n }\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n \n Host *\n \n \n { touched.host && errors.host }\n \n \n \n Database *\n \n \n { touched.database && errors.database }\n \n \n \n Schema *\n \n \n { touched.schema && errors.schema }\n \n \n {/* \n Table name \n \n \n { touched.table_name && errors.table_name }\n \n */}\n \n Username *\n \n \n { touched.user && errors.user }\n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n {/* \n Incremental Data Identifier \n \n */}\n \nDataset to be processed\n
\n
\n \n All Datasets\n
\n
\n \n Specified Datasets\n
\n
\n
\n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets

\n
\n
\n<>\n\n \n
\n \n \n\n\n
\n \n \n Partioning Dataset.\n \n }\n arrowContent={
}\n >\n \n \n
\n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Table Name *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n \n
\n \n \n
\n \n

Current Metrics and all related information will be lost on modifying existing specified datasets or existing incremental data identifiers or existing partitions. Are you sure you want to go ahead?

\n
\n
\n
\n
\n
\n {this.props.showCancel ?\n : ''\n }\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default GcpSQL;","import React from 'react';\nimport Select from 'react-select';\nimport {postDatasource} from \"../../../../utils/event_handling\";\nimport {userValidation} from '../../../../utils/common_utils';\nimport {Form, InputGroup} from 'react-bootstrap';\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\nimport {TEST_CONNECTION_MESSAGES, VERSION_FORMATS, FILE_TYPE_FORMATS} from \"../../../../utils/constant\";\n\n\nclass GcsForm extends React.Component {\n constructor(props) {\n super(props);\n this.fill_details = this.fill_details.bind(this);\n this.postGcsData = this.postGcsData.bind(this);\n this.postDatasource = postDatasource.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.handleFileChange = this.handleFileChange.bind(this);\n this.state = {\n integration_data: this.props.integration_data,\n isChecked: true,\n hideSubmitButton: false,\n json: '',\n json_file_name: '',\n refreshType: {\"label\":\"File Replace\", \"value\":\"file_replace\"},\n versionFormat: null,\n versionOccurence: {\"label\":\"prefix\", \"value\":\"prefix\"},\n fileType: null,\n };\n\n }\n toggleChange = () => {\n this.setState({isChecked: !this.state.isChecked});\n }\n\n componentDidMount() {\n this.fill_details();\n }\n\n fill_details() {\n if (this.props.ex_integration_details !== null && this.props.ex_integration_details !== undefined && this.props.ex_integration_details.integration_config !== undefined) {\n let ex_integration_details = this.props.ex_integration_details;\n let integration_data = this.state.integration_data;\n integration_data.integration_name = this.props.ex_integration_details[\"integration_name\"];\n integration_data.integration_id = this.props.ex_integration_details[\"integration_id\"];\n integration_data.integration_type = \"gcs\";\n const exIntegrationConfig = ex_integration_details.integration_config;\n const authConfig = ex_integration_details.auth_config;\n integration_data.json_file = \"exists\";\n integration_data.json = authConfig;\n integration_data.json_file_name = exIntegrationConfig.json_file_name;\n integration_data.bucket_name = this.props.ex_integration_details.integration_config.bucket;\n integration_data.sub_path = this.props.ex_integration_details.integration_config.sub_path;\n integration_data.error_storage = this.props.ex_integration_details.integration_config.error_storage;\n let fileType = this.props.ex_integration_details.integration_config.filetype;\n integration_data.fileType = fileType\n let refreshType = this.props.ex_integration_details.integration_config.refresh_type;\n integration_data.refreshType = refreshType;\n let versionType = this.props.ex_integration_details.integration_config.version_type;\n let versionFormat = this.props.ex_integration_details.integration_config.version_format;\n let versionOccurence = this.props.ex_integration_details.integration_config.version_occurence;\n integration_data.versionOccurence = versionOccurence;\n if (versionType !== \"custom\") {\n integration_data.versionFormat = versionType;\n this.setState({versionFormat: {\"label\": versionType, \"value\": versionType}});\n } else {\n integration_data.versionFormat = versionType;\n integration_data.versionFormatRegex = versionFormat;\n this.setState({versionFormat: {\"label\": versionType, \"value\": versionType}});\n }\n let defaultErrorStorage = this.props.ex_integration_details.integration_config.default_error_storage;\n if (defaultErrorStorage === undefined) {\n defaultErrorStorage = true;\n }\n this.setState({isChecked: defaultErrorStorage,\n selectOptionKey: \"updatedFileType\",\n fileType:{\"label\": fileType, \"value\": fileType},\n refreshType: {\"label\": FILE_TYPE_FORMATS[refreshType], \"value\": refreshType},\n versionOccurence: {\"label\": versionOccurence, \"value\": versionOccurence}}\n );\n\n\n this.setState({isChecked: defaultErrorStorage});\n this.setState({integration_data:integration_data});\n } else {\n let integration_data = this.state.integration_data;\n this.setState({integration_data:integration_data});\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n postGcsData(event){\n this.disableButton();\n const {integration_name, error_storage, bucket_name, sub_path,\n fileType, versionFormat, versionFormatRegex} = event;\n\n let json = this.state.json;\n let json_file_name = this.state.json_file_name;\n if (json === '') {\n json_file_name = this.state.integration_data.json_file_name;\n json = this.state.integration_data.json;\n }\n let version_format;\n let version_type;\n if (versionFormat === \"custom\") {\n version_format = versionFormatRegex;\n version_type = \"custom\";\n } else {\n version_format = VERSION_FORMATS[versionFormat];\n version_type = versionFormat;\n }\n let gcsData = {\"integration_name\":integration_name,\n \"integration_id\":this.state.integration_data.integration_id,\n \"integration_type\":\"gcs\",\n \"data_store_type\":\"filesystem\",\n \"error_storage\": error_storage,\n \"bucket_name\": bucket_name,\n \"sub_path\": sub_path,\n \"filetype\": fileType,\n \"refresh_type\": this.state.refreshType.value,\n \"version_format\": version_format,\n \"version_type\": version_type,\n \"version_occurence\": this.state.versionOccurence.value,\n \"json\": json,\n \"json_file\": json_file_name,\n \"isFirstIntegration\": this.props.isFirstIntegration,\n \"env_id\":this.props.env_id\n }\n let default_message = TEST_CONNECTION_MESSAGES[\"gcs\"];\n this.props.closeTestConnection();\n this.props.setSubmitButton(true);\n this.props.setData(gcsData, default_message);\n this.postDatasource(gcsData);\n\n }\n\n handleFileChange(e) {\n const fileReader = new FileReader();\n fileReader.readAsText(e.target.files[0], \"UTF-8\");\n let name = e.target.files[0][\"name\"];\n fileReader.onload = e => {\n this.setState({\"json\": JSON.parse(e.target.result), \"json_file_name\": name});\n };\n };\n\n\n getSchema() {\n const subPath = RegExp(/^(?!\\/)/);\n\n let gcsSchema = '';\n if(this.props.formType === \"gcs\" && this.state.isChecked === true &&\n this.state.refreshType.value ===\"file_replace\") {\n gcsSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n bucket_name: yup.string().required('Bucket Name is a required field'),\n sub_path : yup.string().matches(subPath, 'Invalid Sub Path'),\n json_file: yup.string().required('JSON file is required'),\n fileType: yup.string().required('File type is a required field')\n });\n }else if(this.props.formType === \"gcs\" && this.state.isChecked === false &&\n this.state.refreshType.value ===\"file_replace\") {\n gcsSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n bucket_name: yup.string().required('Bucket Name is a required field'),\n sub_path : yup.string().matches(subPath, 'Invalid Sub Path'),\n json_file: yup.string().required('JSON file is required'),\n error_storage: yup.string().required('Error Storage is a required field'),\n fileType: yup.string().required('File type is a required field')\n });\n }else if (this.props.formType === \"gcs\" && this.state.isChecked === true &&\n this.state.refreshType.value !==\"file_replace\") {\n gcsSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n bucket_name: yup.string().required('Bucket Name is a required field'),\n sub_path : yup.string().matches(subPath, 'Invalid Sub Path'),\n json_file: yup.string().required('JSON file is required'),\n fileType: yup.string().required('File type is a required field'),\n versionFormat: yup.string().required('Refresh Format is a required field')\n });\n }else if(this.props.formType === \"gcs\" && this.state.isChecked === false &&\n this.state.refreshType.value !==\"file_replace\") {\n gcsSchema = yup.object({\n integration_name: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Datasource Name is a required field\").test(\n 'DatasourceName test',\n 'invalid Datasource name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n bucket_name: yup.string().required('Bucket Name is a required field'),\n sub_path : yup.string().matches(subPath, 'Invalid Sub Path'),\n json_file: yup.string().required('JSON file is required'),\n error_storage: yup.string().required('Error Storage is a required field'),\n fileType: yup.string().required('File type is a required field'),\n versionFormat: yup.string().required('Refresh Format is a required field')\n });\n }\n\n return gcsSchema;\n\n\n }\n\n render() {\n let gcsSchema = this.getSchema();\n let file_option = [\n {\"label\":\"csv\", \"value\":\"csv\"},\n {\"label\":\"json\", \"value\":\"json\"},\n {\"label\":\"parquet\", \"value\":\"parquet\"},\n {\"label\":\"avro\", \"value\":\"avro\"},\n {\"label\":\"excel\", \"value\":\"excel\"}\n ];\n let refresh_option = [\n {\"label\":\"File Replace\", \"value\":\"file_replace\"},\n {\"label\":\"File Version\", \"value\":\"file_version\"},\n {\"label\": \"Folder Version\", \"value\":\"folder_version\"}\n ];\n let version_option = [\n {\"label\":\"dd-mm-yyyy\", \"value\":\"dd-mm-yyyy\"},\n {\"label\":\"yyyy-mm-dd\", \"value\":\"yyyy-mm-dd\"},\n {\"label\": \"dd-mm-yy\", \"value\":\"dd-mm-yy\"},\n {\"label\": \"custom\", \"value\": \"custom\" }\n ];\n let occurence_options = [\n {\"label\":\"prefix\", \"value\":\"prefix\"},\n {\"label\":\"suffix\", \"value\":\"suffix\"}\n ]\n let initial_values = {\n integration_name: '', error_storage: '', bucket_name: '', sub_path: '', fileType: '',\n refreshType: this.state.refreshType, versionFormat: '',\n versionOccurence: this.state.versionOccurence,\n json_file: ''\n };\n\n\n return (\n <>\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n setFieldValue,\n }) => (\n
\n
\n \n Datasource Name *\n \n \n { touched.integration_name && errors.integration_name }\n \n \n <>\n \n Bucket Name *\n \n \n { touched.bucket_name && errors.bucket_name }\n \n \n \n Sub Path\n \n \n {errors.sub_path }\n \n \n \n File Type *\n label.toLowerCase().includes(query.toLowerCase())}\n onChange={selectedOption => {\n handleChange(\"refreshType\")(selectedOption.value);\n this.setState ({\n refreshType: {\"label\":selectedOption[\"label\"], \"value\":selectedOption[\"value\"]}});\n }}\n isInvalid={errors.refreshType && touched.refreshType}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"blobRefreshTypeEdit\" : \"blobRefreshTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.refreshType}\n options={refresh_option}\n placeholder=\"Choose refresh type\"\n classNamePrefix='select-control'\n />\n \n \n { this.state.refreshType !== null && (this.state.refreshType.value === \"file_version\" || this.state.refreshType.value === \"folder_version\") ?\n \n Refresh Format *\n label.includes(query)}\n onChange={selectedOption => {\n handleChange(\"versionOccurence\")(selectedOption.value);\n this.setState ({\n versionOccurence: {\"label\":selectedOption[\"label\"], \"value\":selectedOption[\"value\"]}});\n }}\n isInvalid={errors.versionOccurence && touched.versionOccurence}\n id={(this.props.ex_integration_details !== undefined && this.props.ex_integration_details !== null) ? \"blobOccurenceTypeEdit\" : \"blobOccurenceTypeAdd\"}\n key={this.state.selectOptionKey}\n defaultValue={this.state.versionOccurence}\n options={occurence_options}\n placeholder=\"Choose Refresh Format Occurrence\"\n classNamePrefix='select-control'\n />\n \n : \"\"\n }\n \n
\n
\n \n Store Data Issues and Errors in Qualdo™\n
\n
\n {this.state.isChecked === false ?\n \n Error Storage Sub Path *\n \n \n { touched.error_storage && errors.error_storage }\n \n : ''}\n
\n
\n
\n {this.props.showCancel ?\n : ''}\n \n
\n
)}\n \n \n\n );\n }\n}\nexport default GcsForm;","import React from 'react';\nimport Select from 'react-select';\nimport AdlForm from './integration_forms/Azure/adl';\nimport AzureForm from './integration_forms/Azure/azure';\nimport DatabricksTableForm from './integration_forms/Azure/AzuredatabricksTable';\nimport S3Form from './integration_forms/AWS/s3';\nimport Redshift from './integration_forms/AWS/AWS_redshift';\nimport BigQueryForm from './integration_forms/GCS/big_query';\nimport SnowflakeIntegration from './integration_forms/Snowflake/snowflake_integration_form';\nimport PostgresForm from './integration_forms/postgres/postgres';\nimport MySqlForm from './integration_forms/MYSQL/mysql_form';\nimport AzureSynapseDSForm from './integration_forms/Azure/azure_synapse_ds';\nimport TestConnection from './testConnection';\nimport {helpContent,get_document_link, getSupportedDatasourceOptions} from \"../../utils/common_utils\";\nimport AzureSQL from './integration_forms/Azure/azureSQL';\nimport PowerBi from './integration_forms/PowerBi/PowerBi';\nimport GcpSQL from './integration_forms/GCS/gcp_sql';\nimport GcsForm from './integration_forms/GCS/gcs';\nimport {getIntegrationDetail, getQualdoIps} from \"../../utils/event_handling\"\nimport Load from '../../components/loadAction';\nimport $ from 'jquery';\nimport {POWER_BI_CONNECTOR, QUALDO_DOCUMENTATION,\n AZURE_SYNAPSE_DS_CONNECTOR} from \"../../utils/constant\";\nconst groupStyles = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n};\nconst groupBadgeStyles = {\n backgroundColor: '#EBECF0',\n borderRadius: '2em',\n color: '#172B4D',\n display: 'inline-block',\n fontSize: 12,\n fontWeight: 'normal',\n lineHeight: '1',\n minWidth: 1,\n padding: '0.16666666666667em 0.5em',\n textAlign: 'center',\n};\n\nconst formatGroupLabel = data => (\n
\n {data.label}\n {data.options.length}\n
\n);\n\n\nclass Integration extends React.Component {\n constructor(props) {\n super(props);\n this.setForm = this.setForm.bind(this);\n this.closeTestConnection = this.closeTestConnection.bind(this);\n this.setIntegrationData = this.setIntegrationData.bind(this);\n this.setSubmitButton = this.setSubmitButton.bind(this);\n this.setData = this.setData.bind(this);\n this.fill_details= this.fill_details.bind(this);\n this.changeHelpContent = this.changeHelpContent.bind(this);\n this.getIntegrationDetail = getIntegrationDetail.bind(this);\n this.renderForm = this.renderForm.bind(this);\n this.getQualdoIps = getQualdoIps.bind(this);\n\n const supportedDatasourceOptions = getSupportedDatasourceOptions();\n\n let formType = \"\";\n if (supportedDatasourceOptions.length > 0) {\n formType = supportedDatasourceOptions[0].options[0].value;\n }\n\n this.state = {\n submit_button:false,\n testConnection:null,\n data_source_options: supportedDatasourceOptions,\n formType: formType,\n formType_option:{\"label\":\"Azure Blob\", \"value\":'azure_blob'},\n helpContentKey: formType,\n integration_data:{\n integration_type:formType,\n data_store_type: \"filesystem\"\n },\n ex_edit_integration_details: null,\n ip_address: null\n };\n }\n\n componentDidMount() {\n this.getQualdoIps();\n this.fill_details();\n }\n\n fill_details() {\n // Removed defaultValues as we given default value directly inside the state variable\n if (this.props.ex_integration_details !== undefined) {\n let values = this.FillFormDetails(this.props.ex_integration_details);\n //eslint-disable-next-line\n this.state.formType = values[1];\n //eslint-disable-next-line\n this.state.formType_option = values[0];\n }\n }\n\n setForm = (selectedOption) => {\n this.setState ({\n formType: selectedOption[\"value\"],\n helpContentKey: selectedOption[\"value\"]\n });\n this.closeTestConnection();\n }\n\n closeTestConnection() {\n this.setState ({\n testConnection: null\n });\n }\n\n setIntegrationData(data) {\n this.setState ({\n integration_data: data\n });\n }\n\n setData(integration_data,testConnection_data) {\n this.setState({testConnection:testConnection_data,\n integration_data:integration_data,\n });\n }\n\n setSubmitButton(value) {\n this.setState({submit_button:value});\n }\n\n\n renderForm(formType) {\n\n if (formType === \"azure_blob\") {\n return ();\n } else if(formType === \"azure_data_lake\") {\n return ();\n } else if(formType === \"azure_databricks_table\") {\n return (); \n }\n else if(formType === \"azure_synapse_ds\") {\n return ();\n\n }\n else if(formType === \"s3\") {\n return();\n }\n else if(formType === \"redshift\") {\n return();\n }\n else if(formType === \"big_query\") {\n return();\n }else if(formType === \"azure_sql\") {\n return();\n }else if(formType === \"gcp_sql\") {\n return();\n }\n else if(formType === \"snowflake\") {\n return();\n\n } else if(formType === \"postgresql\") {\n return();\n\n }else if(formType === \"mysql\") {\n return()\n\n }else if(formType === \"gcs\") {\n return();\n }else if(formType === POWER_BI_CONNECTOR) {\n return();\n }\n\n }\n\n renderTest() {\n if (this.state.testConnection != null) {\n return ;\n }\n }\n\n\n FillFormDetails(integration_details) {\n let defaultValue, formType = null;\n const integration_type = integration_details[\"integration_type\"];\n if (integration_type === undefined){\n return [null, null];\n }\n if(integration_type === \"azure_blob\") {\n formType = \"azure_blob\";\n defaultValue = {\"label\":\"Azure Blob\", \"value\":'azure_blob'};\n } else if (integration_type === \"azure_data_lake\") {\n formType = \"azure_data_lake\";\n defaultValue = {\"label\":'Azure Data Lake', \"value\":'azure_data_lake'};\n } else if (integration_type === \"azure_databricks_table\") {\n formType = \"azure_databricks_table\";\n defaultValue = {\"label\":'Azure Databricks Table', \"value\":'azure_databricks_table'}; \n } else if (integration_type.includes(\"snow_flake\")) {\n formType = \"snowflake\";\n defaultValue = {\"label\":'Snowflake', \"value\":'snowflake'};\n } else if (integration_type.includes(\"s3\")) {\n formType = \"s3\";\n defaultValue = {\"label\":'AWS S3', \"value\":'s3'};\n } else if (integration_type.includes(\"azure_sql\")) {\n formType = \"azure_sql\";\n defaultValue = {\"label\":\"Azure SQLServer\", \"value\":'azure_sql'};\n }else if (integration_type.includes(\"gcp_sql\")) {\n formType = \"gcp_sql\";\n defaultValue = {\"label\":\"GCP SQLServer\", \"value\":'gcp_sql'};\n }else if (integration_type.includes(\"big_query\")) {\n formType = \"big_query\";\n defaultValue = {\"label\":\"Google BigQuery\", \"value\":'big_query'};\n } else if (integration_type.includes(\"postgresql\")) {\n formType = \"postgresql\";\n defaultValue = {\"label\":\"Postgres\", \"value\":'postgresql'};\n } else if (integration_type.includes(\"mysql\")) {\n formType = \"mysql\";\n defaultValue = {\"label\":\"MySQL\", \"value\":'mysql'};\n }else if (integration_type.includes(\"gcs\")) {\n formType = \"gcs\";\n defaultValue = {\"label\":\"GCS\", \"value\":'gcs'};\n } else if (integration_type.includes(\"redshift\")) {\n formType = \"redshift\";\n defaultValue = {\"label\":'AWS redshift', \"value\":'redshift'};\n }else if (integration_type.includes(POWER_BI_CONNECTOR)) {\n formType = POWER_BI_CONNECTOR;\n defaultValue = {\"label\":'Power Bi', \"value\":POWER_BI_CONNECTOR};\n }\n else if (integration_type === AZURE_SYNAPSE_DS_CONNECTOR) {\n formType = AZURE_SYNAPSE_DS_CONNECTOR;\n defaultValue = {\"label\":'Azure Synapse', \"value\":AZURE_SYNAPSE_DS_CONNECTOR};\n }\n else {\n formType = \"AWS\";\n defaultValue = {\"label\":'AWS', \"value\":'AWS'};\n }\n return [defaultValue, formType];\n }\n\n changeHelpContent(key) {\n this.setState({helpContentKey: key});\n }\n\n renderHelpContent() {\n let content = [];\n let info = [];\n if(this.state.formType === \"AWS\" ) {\n info = helpContent[\"aws\"];\n } else if (this.state.formType === \"snowflake\") {\n info = helpContent[\"snowflake\"];\n } else if(this.state.helpContentKey === \"azure_blob\") {\n info = helpContent[\"azure_blob\"];\n } else if(this.state.helpContentKey === \"azure_data_lake\") {\n info = helpContent[\"azure_data_lake\"];\n } else if(this.state.helpContentKey === \"azure_databricks_table\") {\n info = helpContent[\"azure_databricks_table\"]; \n } else if(this.state.formType === \"s3\" ) {\n info = helpContent[\"aws\"];\n } else if(this.state.formType === \"redshift\" ) {\n info = helpContent[\"redshift\"];\n } else if(this.state.formType === \"azure_sql\" ) {\n info = helpContent[\"azure_sql\"];\n }else if(this.state.formType === \"gcp_sql\" ) {\n info = helpContent[\"gcp_sql\"];\n }else if(this.state.formType === \"big_query\" ) {\n info = helpContent[\"big_query\"];\n } else if (this.state.formType === \"postgresql\"){\n info = helpContent[\"postgresql\"];\n }else if (this.state.formType === \"mysql\"){\n info = helpContent[\"mysql\"];\n }\n else if (this.state.formType === \"gcs\"){\n info = helpContent[\"gcs\"];\n }\n else if (this.state.formType === \"azure_synapse_ds\"){\n info = helpContent[\"azure_synapse_ds\"];\n }\n else {\n info = helpContent[\"azure_blob\"];\n }\n let k=0;\n for (k=0; k < info.length; k++) {\n if(k=== (info.length-1) && this.state.formType !== 'big_query'){\n content.push(
  • Make sure Qualdo's IP : {this.state.ip_address} is added to your authorised network(s).
  • );\n content.push(
  • {info[k]} Refer to the {QUALDO_DOCUMENTATION} for more details.
  • );\n }\n else if(k=== (info.length-1) && this.state.formType === 'big_query'){\n content.push(
  • {info[k]} Refer to the {QUALDO_DOCUMENTATION} for more details.
  • );\n content.push(
  • Make sure Qualdo's IP : {this.state.ip_address} is added to your authorised network(s).
  • );\n\n }\n else {\n if(this.state.formType === 'azure_databricks_table'){\n if((k >= 3 && k <= 6) || (k >= 8 && k <= 11)){\n content.push(
      {info[k]}
    ); \n }\n else{\n content.push(
  • {info[k]}
  • );\n }\n }\n else{\n content.push(
  • {info[k]}
  • );\n } \n }\n } \n\n if($( window ).width() > 768){\n let addheight = $('#add-datasource').height();\n $('#add-datasource_help').height(addheight - 26);\n } \n return content;\n }\n\n getAddIntegrationContent(data_source_option){\n return (\n <>\n
    \n
    \n
    \n {this.props.src_page === \"setup\" ? \"Add your first DataSource\" : \"Add DataSource\"}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n label.toLowerCase().includes(query.toLowerCase())}\n onChange={this.setForm}\n defaultValue={this.state.formType_option}\n options={data_source_option}\n placeholder=\"Choose Data Source\"\n classNamePrefix='select-control'\n formatGroupLabel={formatGroupLabel}\n />\n
    \n
    \n { this.renderForm(this.state.formType) }\n
    \n
    \n
    \n
    \n
    \n
    \n Help\n
    \n
    \n
    \n
    \n {/*

    \n
    \n Steps to enable access from your storage to Qualdo™: \n \n \n
    \n

    */}\n {/*
    \n {this.renderHelpContent()}\n
    */}\n\n
    \n
    \n

    Steps to enable access from your storage to Qualdo™:

    \n
      \n {this.renderHelpContent()}\n
    \n
    \n
    \n\n\n
    \n
    \n
    \n
    \n
    \n { this.renderTest() }\n \n );\n }\n\n getEditIntegrationContent(data_source_option){\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n label.toLowerCase().includes(query.toLowerCase())}\n onChange={this.setForm}\n defaultValue={this.state.formType_option}\n options={data_source_option}\n placeholder=\"Choose Data Source\"\n formatGroupLabel={formatGroupLabel}\n classNamePrefix='select-control'\n isDisabled={true}\n />\n
    \n
    \n { this.renderForm(this.state.formType) }\n
    \n
    \n
    \n
    \n
    \n { this.renderTest() }\n
    \n );\n }\n\n render() {\n const data_source_option = this.state.data_source_options;\n let editLoad = false;\n if (this.props.src_page === \"edit_integration\" && this.state.ex_edit_integration_details === null) {\n editLoad = true;\n this.getIntegrationDetail(this.props.ex_integration_details[\"integration_id\"], \"azure_blob\");\n }\n\n return (\n editLoad ?\n \n :\n <>\n {\n this.props.ex_integration_details !== undefined ?\n this.getEditIntegrationContent(data_source_option) :\n this.getAddIntegrationContent(data_source_option)\n }\n \n );\n }\n}\nexport default Integration;","import React from 'react';\nimport {INDEX_IN_AB} from \"../../utils/constant\";\n\nexport function ModelABSingleStat(props) {\n const propsData = props.data;\n const reqLabel = propsData.model_name;\n const reqText = INDEX_IN_AB[propsData.index_in_ab];\n\n return (\n

    \n {reqText}\n \n \n\n {reqLabel}\n \n

    \n );\n}\n\nexport function ModelABCVStats(props) {\n const propsData = props.data;\n const associatedModels = propsData.associatedModels;\n\n return (\n <>\n {associatedModels[0] === null ? '' :\n \n }\n\n {associatedModels[1] === null ? '' :\n \n }\n\n {associatedModels[2] === null ? '' :\n \n }\n \n );\n}","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTag } from \"@fortawesome/free-solid-svg-icons\";\nimport { NO_ERROR_COLOR_CLASS_MAP } from \"../../utils/constant\";\nimport { getShortTitleForAttribute } from \"../../utils/common_utils\";\nimport { FQ_TOOLTIP_PLACEHOLDER } from \"../../utils/attribute_name_utils\";\nimport RcTooltip from 'rc-tooltip';\n\n\nconst renderTitleToolTip = (props) => (\n \n {props}\n \n);\n\n\nclass StatsAttributeName extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.renderAttributeName = this.renderAttributeName.bind(this);\n }\n\n renderAttributeName() {\n let requiredAttributeName = this.props.attributeName;\n let propsColor = this.props.color;\n let reqClassName;\n if (propsColor === null || propsColor === undefined) {\n reqClassName = \"f-16 lh-20 text-danger\";\n } else {\n reqClassName = NO_ERROR_COLOR_CLASS_MAP[propsColor];\n }\n\n let shortenedData = getShortTitleForAttribute(requiredAttributeName);\n let requiredName = shortenedData[\"requiredName\"];\n let fqTooltipContent = shortenedData[\"fqTooltipContent\"];\n\n if (fqTooltipContent === null) {\n // Render without tooltip\n return (\n {requiredAttributeName} \n );\n }\n\n // Render with tooltip\n return (\n <>\n }\n >\n {FQ_TOOLTIP_PLACEHOLDER} \n \n \n {requiredName} \n \n\n\n\n );\n\n }\n\n render() {\n return (\n

    \n \n \n \n {this.renderAttributeName()}\n \n

    \n );\n }\n}\n\nexport default StatsAttributeName;","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faExclamationCircle, faPercentage, faServer, faTimesCircle, faTag,\n faLayerGroup, faCube, faDatabase, faStopwatch, faCalendarDay\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n DEFAULT_METRICS_MAP,\n NO_ERROR_COLOR_CLASS_MAP,\n METRICS_INFO,\n IS_NONE_CHECK,\n MODEL_AB_COMPARE_SRC\n} from \"../../utils/constant\";\n\nimport { getAliasNameForMetricAttributeLevel,getAliasNameForMetric, getErrorTypeForStatsComponent, getFullNameOfMetric } from \"../../utils/common_utils\";\nimport RcTooltip from 'rc-tooltip';\nimport { ModelABCVStats } from \"./statsForModelABCompareView\";\nimport {normalizeAttributeName, normalizeChildDatasetName} from \"../../utils/attribute_name_utils\";\nimport StatsAttributeName from \"./statsAttributeName\";\n\n\nclass MonitorStatsComponent extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n\n let showPercentageSymbol = (DEFAULT_METRICS_MAP.dq.includes(this.props.metricName) ||\n DEFAULT_METRICS_MAP.ml.includes(this.props.metricName));\n let showDate = DEFAULT_METRICS_MAP.recency.includes(this.props.metricName)\n\n this.renderMetricNameLine = this.renderMetricNameLine.bind(this);\n this.renderMetricNameLineErr = this.renderMetricNameLineErr.bind(this);\n\n this.renderDatasetLevelContent = this.renderDatasetLevelContent.bind(this);\n this.renderAttributeLevelContent = this.renderAttributeLevelContent.bind(this);\n this.renderComponent = this.renderComponent.bind(this);\n this.renderComponentWithAddonButton = this.renderComponentWithAddonButton.bind(this);\n\n this.renderNonPercentageMetricNameLine = this.renderNonPercentageMetricNameLine.bind(this);\n this.renderNonPercentMetricNameLineErr = this.renderNonPercentMetricNameLineErr.bind(this);\n\n this.state = {\n containerLabel: this.props.containerLabel,\n containerName: this.props.containerName,\n metricLabel: this.props.metricLabel,\n metricName: getFullNameOfMetric(this.props.metricName),\n errorPercentage: this.props.errorPercentage,\n lastErrorPercentage: this.props.lastErrorPercentage,\n errorDivClass: this.props.errorDivClass === undefined ? '' : this.props.errorDivClass,\n parentDivClass: this.props.parentDivClass === undefined ? '' : this.props.parentDivClass,\n driftLabel: this.props.driftLabel,\n showPercentageSymbol: showPercentageSymbol,\n showDate: showDate\n }\n }\n\n getSplitMetrics(metric_name) {\n const metric_name_lower_case = metric_name.toLowerCase()\n if (metric_name_lower_case === \"precision vs recall\" || metric_name_lower_case === \"sensitivity vs specificity\") {\n const split_metric_name_lc = metric_name_lower_case.split(\" \");\n const split_metric_name = metric_name.split(\" \");\n return (\n <>\n \n \n \n {METRICS_INFO[split_metric_name_lc[0]]}
    \n
    \n }\n arrowContent={
    }\n >\n {getAliasNameForMetric(split_metric_name[0])}\n \n \n\n  {getAliasNameForMetric(split_metric_name[1])} \n\n \n \n {METRICS_INFO[split_metric_name_lc[2]]}
    \n
    \n }\n arrowContent={
    }\n >\n {getAliasNameForMetric(split_metric_name[2])}\n \n \n \n );\n }\n }\n\n getToolTip(metric_name) {\n const metric_name_lc = metric_name.toLowerCase();\n let m = [\"precision vs recall\", \"sensitivity vs specificity\"];\n let exclude_tooltip = [\"memory_usage\", \"model_latency\", \"overhead_latency\", \"cpu_usage\"]\n if (!(m.includes(metric_name_lc))) {\n return (\n <>\n\n \n \n \n { (!exclude_tooltip.includes(metric_name_lc)) ?\n \n {METRICS_INFO[metric_name_lc]}
    \n
    \n }\n arrowContent={
    }\n >\n \n {getAliasNameForMetric(metric_name)}\n \n \n :\n \n {getAliasNameForMetric(metric_name)}\n \n }\n \n\n \n );\n }\n else {\n return (\n <>\n \n {this.getSplitMetrics(metric_name)}\n \n );\n }\n }\n\n renderMetricNameLineErr(){\n if (this.state.metricName === \"Data Drift\"){\n return \"\";\n }\n\n return (\n

    \n \n \n \n \n \n {this.props.lastErrorPercentage}\n {\n this.state.showPercentageSymbol ?\n '%'\n :\n ''\n }\n \n \n {this.props.errorPercentage}\n {\n\n this.state.showPercentageSymbol ?\n '%'\n :\n ''\n }\n \n

    \n );\n }\n\n renderMetricNameLine(){\n if (this.state.metricName === \"Data Drift\"){\n return \"\";\n }\n\n return (\n

    \n \n \n \n \n \n {\n this.props.lastErrorPercentage - Math.round(this.props.lastErrorPercentage) === 0 ?\n Math.round(this.props.lastErrorPercentage)\n :\n this.props.lastErrorPercentage\n }\n {'%'}\n \n \n {\n this.props.lastErrorPercentage - Math.round(this.props.lastErrorPercentage) === 0 ?\n Math.round(this.props.lastErrorPercentage)\n :\n this.props.lastErrorPercentage\n }\n {'%'}\n \n

    \n )\n }\n\n renderNonPercentMetricNameLineErr() {\n return (\n

    \n {this.state.showDate ?\n \n :\n \n }\n \n \n \n \n {Math.round(this.props.lastErrorPercentage)}\n {this.state.showDate ?\n ' Days'\n :\n ''\n }\n \n \n {Math.round(this.props.errorPercentage)}\n {\n this.state.showDate ?\n ' Days'\n :\n ''\n }\n \n

    \n );\n }\n\n renderNonPercentageMetricNameLine() {\n return (\n

    \n {this.state.showDate ?\n \n :\n \n }\n \n \n \n \n {Math.round(this.props.lastErrorPercentage)}\n {this.state.showDate ?\n ' Days'\n :\n ''\n }\n \n \n {Math.round(this.props.errorPercentage)}\n {this.state.showDate ?\n ' Days'\n :\n ''\n }\n \n

    \n );\n }\n\n renderComponent(dataSetName, isABCompareView, isCombinedChart, \n chartData, reqAttributeName, canShowErrorVal){\n /**\n * This function is introduced since we need to render based on condition.\n * 'has-track-btn' class should be parent only when there is issue.\n * For normal cases, that parent div is not needed.\n *\n * So we have created this function to render common components. When 'has-track-btn' parent is\n * needed, we will call this function inside the parent.\n * For other cases, we will call this function without that parent div.\n * */\n\n return (\n
    \n {\n this.props.isModelPerformance === true ?\n this.props.variant === \"mlModelPerformanceListView\" || this.props.variant === \"mlModelPerformanceChartView\" ?\n\n <>\n\n

    {this.getToolTip(this.state.metricName)}

    \n

    \n \n \n \n {this.state.containerName}\n \n

    \n {\n this.state.metricName === \"mean_shap_value\" &&\n

    \n \n \n \n {normalizeChildDatasetName(dataSetName)}\n \n

    \n }\n {\n reqAttributeName !== undefined &&\n \n \n }\n :\n <>\n

    \n \n \n \n {getAliasNameForMetric(this.state.metricName)}\n \n

    \n\n {isABCompareView && isCombinedChart ?\n \n :\n

    \n \n \n {this.state.containerName}\n \n

    \n }\n\n \n :\n <>\n {\n (reqAttributeName === undefined) ?\n (this.props.dataSetName === undefined) ?\n '' :\n

    \n \n \n \n {normalizeChildDatasetName(this.props.dataSetName)}\n \n

    :\n \n \n\n }\n

    \n \n \n \n \n {(reqAttributeName === undefined) ?\n getAliasNameForMetric(this.state.metricName) : \n getAliasNameForMetricAttributeLevel(this.state.metricName) }\n \n \n

    \n\n {\n (this.props.dataSetName !== undefined && reqAttributeName !== undefined) ?\n

    \n \n \n \n {normalizeChildDatasetName(this.props.dataSetName)}\n \n

    :\n ''\n }\n\n {\n this.props.referenceDataSetName === undefined ?\n '' :\n

    \n \n \n \n {this.props.referenceDataSetName}\n \n

    \n }\n\n

    \n \n \n \n {this.state.containerName}\n \n

    \n\n {!canShowErrorVal ?\n this.state.showPercentageSymbol ?\n this.renderMetricNameLine()\n :\n this.renderNonPercentageMetricNameLine()\n :\n ''\n }\n\n {canShowErrorVal ?\n this.state.showPercentageSymbol ?\n this.renderMetricNameLineErr()\n :\n this.renderNonPercentMetricNameLineErr()\n :\n ''\n }\n \n }\n\n
    \n )\n }\n\n renderComponentWithAddonButton(dataSetName, isABCompareView, isCombinedChart,\n chartData, reqAttributeName, canShowErrorVal) {\n /**\n * This function is introduced to avoid frequent conflicts \n * with enterprise branch where \n * they we have introduced create issue button\n */\n\n return this.renderComponent(dataSetName, isABCompareView, isCombinedChart,\n chartData, reqAttributeName, canShowErrorVal);\n }\n\n renderDatasetLevelContent(dataSetName, reqAttributeName) {\n const chartData = this.props.chart_data;\n let canShowErrorVal = this.props.canShowError;\n let isABCompareView = false;\n let isCombinedChart = false;\n\n if (!IS_NONE_CHECK.includes(chartData)) {\n isABCompareView = chartData.source === MODEL_AB_COMPARE_SRC;\n isCombinedChart = chartData.isCombinedChart === true;\n }\n\n return (\n
    \n \n {this.renderComponentWithAddonButton(dataSetName, isABCompareView,\n isCombinedChart, chartData, reqAttributeName, canShowErrorVal)}\n\n {this.props.driftLabel === undefined || this.props.driftLabel === null\n ?\n ''\n :\n
    \n \n \n \n

    {getErrorTypeForStatsComponent(this.props.driftLabel)}

    \n
    \n }\n
    \n );\n }\n\n renderAttributeLevelContent(){\n return (\n
    \n
    \n

    \n \n \n \n {this.props.dataSetName}\n \n

    \n

    \n \n \n \n {this.state.metricName}\n \n

    \n
    \n\n {this.props.driftLabel === undefined || this.props.driftLabel === null\n ?\n ''\n :\n
    \n \n \n \n

    {getErrorTypeForStatsComponent(this.props.driftLabel)}

    \n
    \n }\n
    \n );\n }\n\n render() {\n const chartData = this.props.chart_data;\n\n if (this.state.metricName === undefined) {\n return \"\"\n }\n\n let dataSetName = normalizeChildDatasetName(this.props.dataSetName)\n if (this.state.metricName === \"mean_shap_value\" &&\n chartData !== undefined && chartData !== null) {\n dataSetName = normalizeChildDatasetName(chartData[\"dataSetName\"])\n }\n\n let reqAttributeName = normalizeAttributeName(this.props.attributeName);\n\n let isAttribute = this.props.isAttribute;\n if (isAttribute === undefined || isAttribute === null) {\n // Render components required for dataset level\n return this.renderDatasetLevelContent(dataSetName, reqAttributeName);\n }\n\n // Render components required for attribute level\n return this.renderAttributeLevelContent();\n }\n}\n\nexport default MonitorStatsComponent;\n","export const CHART_TITLE_SEPARATOR = \" > \";\nexport const CHART_TITLE_METRIC_SEPARATOR = \" - drift in \";\n//export const PROTOCOL = window.location.protocol;\n export const PROTOCOL = \"https:\";\n// export const PROTOCOL = \"http:\";\n\nexport const LIST_VIEW_OPTIONS = [{\"label\": \"Dataset + Attribute\", \"value\": \"all\"},\n {\"label\": \"Dataset Level\", \"value\": \"datasets\"},\n {\"label\": \"Attribute Only\", \"value\": \"attributes\"},\n {\"label\": \"Followed Attribute Only\", \"value\": \"followedAttributes\"}]\nexport const BUTTON_WAIT_TIME = 2000;\nexport const ENVIRONMENT = 0;\nexport const DATA_SOURCE = 1;\nexport const DATA_SET = 2;\nexport const ATTRIBUTE = 3;\n\nexport const PRIVACY_POLICY_LINK = \"https://www.termsfeed.com/live/239e61f8-71af-48ac-8bb8-67cd9ddd24c9\"\nexport const COOKIE_POLICY_LINK = \"https://www.termsfeed.com/live/3b7b5f77-42fb-4494-98ad-7b1155fc05b7\"\nexport const TERMS_CONDITIONS_LINK = \"https://www.termsfeed.com/live/51fabc0d-1f6b-4290-a0c0-d7ce653cb580\"\n\nexport const NO_DATA_SET_FOUND_TEXT = \"No Datasets found yet\";\n//status code for default metrics run failure\nexport const DEFAULT_METRICS_RUN_FAILURE = -2;\n\nexport const RUN_IN_QUEUE = 0;\n\nexport const RUN_TRIGGERED = 200;\nexport const RUN_STARTED = 201;\n\nexport const RUN_PROGRESS_STATES = [RUN_IN_QUEUE, RUN_TRIGGERED, RUN_STARTED];\n\nexport const RUN_SUCCESS = 1;\n// status code when qualdo skips mcf computation\nexport const MCF_SKIPPED = -3\n\n// Currently the display message is same as text. But if required the tooltip display can be changed later\nexport const NO_DATA_SET_FOUND_TOOLTIP = \"No Datasets found yet\";\n\n// The display message that we show on top of Profile/Monitor page\nexport const NO_DATASET_NO_DATA_PROFILE = \"No data available to profile\";\nexport const NO_DATASET_NO_ERROR = \"No data available for processing. Kindly check the configure datasource.\";\nexport const DATA_PROFILING_FAILED = \"No data available to profile\";\nexport const ROW_WARN_CLASS = \"has-table-warning\";\nexport const ROW_ERROR_CLASS = \"has-table-error\";\n\n\nexport const configure = {\n ML_MODEL_TYPE: \"ML\",\n DNN_MODEL_TYPE: \"DNN\",\n CNN_MODEL_TYPE: \"CNN\"\n}\n\nexport const DQ_MONITOR_SECTIONS = {\n COMPLETENESS: \"completeness\",\n UNIQUENESS: \"uniqueness\",\n TIMELINESS: \"timeliness\",\n ACCURACY: \"accuracy\",\n CONFORMITY: \"conformity\",\n CONSISTENCY: \"consistency\",\n DRIFT: \"drift\",\n}\n\nexport const defaultMetrics = {\n defaultQuaityGatesCount: 22\n}\n\nexport const ALERT_NAME_DESC = {\n \"Feature Drift\" : \" Feature Drift of Serving Data vs Training Data\",\n \"Model Drift\": \" Feature Drift of Serving Data\",\n}\n\nexport const metricType = {\n DEFAULT: \"default\",\n COMBINED: \"combined\"\n}\n\nexport const triggers = {\n INSTANT_NOTIFICATION: \"instant\",\n RECURRING_NOTIFICATION: \"recurring\",\n EMPTY_NOTIFICATION_KEY: \"emptyNotificationKey\",\n UPDATED_NOTIFICATION_KEY: \"updatedNotificationKey\",\n EMPTY_ALERT: \"emptyAlert\",\n EMPTY_PERIOD: \"emptyPeriod\",\n EMPTY_ASSOCIATED: \"emptyAssociated\",\n EMPTY_ALERT_SCHEDULE: \"emptyAlertScheule\",\n EMPTY_DATASET_WITH_KEY: \"emptyDatasetWithKey\",\n EMPTY_ATTRIBUTE_WITH_KEY: \"emptyAttributeWithKey\",\n EMPTY_DATA_SOURCE_WITH_KEY: \"emptyDataSourceWithKey\",\n EMPTY_MODEL_WITH_KEY: \"emptyModelWithKey\",\n EMPTY_ALERT_MECHANISM_WITH_KEY: \"emptyMechanismWithKey\",\n UPDATED_ALERT: \"updatedAlertTypeWithkey\",\n UPDATED_PERIOD: \"updatedAlertPeriodWithkey\",\n UPDATED_ASSOCIATED: \"updatedAssociation\",\n UPDATED_ALERT_SCHEDULE: \"updatedAlertSchedule\",\n UPDATED_DATASET_WITH_KEY: \"updatedAlertDatasetWithKey\",\n UPDATED_ATTRIBUTE_WITH_KEY: \"updatedAlertAttributeWithKey\",\n UPDATED_DATASOURCE_WITH_KEY: \"updatedAlertDataSourceWithKey\",\n UPDATED_MODEL_WITH_KEY: \"updatedAlertModelWithKey\",\n UPDATED_ALERT_MECHANISM_WITH_KEY: \"updatedAlertMechanismWithKey\",\n HOUR_SCHEDULE: \"1hour\",\n DAY_SCHEDULE: \"24hours\",\n WEEK_SCHEDULE: \"1week\",\n MONTH_SCHEDULE: \"1month\",\n}\n\nexport const dataRunStatuses = {\n \"inProgress1\": 200,\n \"inProgress2\": 201,\n \"failed\": -2,\n \"success\": 1,\n \"inQueue\": 0,\n \"skipMcf\": -3\n\n}\n\nexport const IN_PROGRESS_STATUSES = [dataRunStatuses.inProgress1, dataRunStatuses.inProgress2];\n\nexport const modelPerformance = {\n CONFUSION_MATRIX: \"Confusion matrix\",\n F1_SCORE: \"f1 score\",\n PRECISION: \"precision\",\n RECALL: \"recall\",\n MAE: \"mae\",\n MSE: \"mse\",\n RMSE: \"rmse\",\n R2: \"r2\",\n ROC_CURVE: \"ROC Curve\",\n SENSITIVITY: \"Sensitivity\",\n SPECIFICITY: \"Specificity\",\n ACCURACY: \"Accuracy\",\n CPU_USAGE: \"cpu_usage\",\n MEMORY_USAGE: \"memory_usage\",\n MODEL_LATENCY: \"model_latency\",\n OVERHEAD_LATENCY: \"overhead_latency\",\n MEAN_SHAP_VALUE: \"mean_shap_value\",\n HOMOGENEITY_COMPLETENESS_V_MEASURE_SCORE:\"Homogeneity Completeness V-measure Score\",\n SILHOUETTE_SCORE: \"Silhouette Score\"\n}\n\nexport const chartTypes = {\n CONFUSION_MATRIX: \"confusionMatrix\",\n HORIZONTAL_BAR_CHART: \"horizontalBarChart\",\n GROUPED_HORIZONTAL_BAR_CHART: \"groupedHorizontalBarChart\",\n HORIZONTAL_COMPARE_CHART: \"horizontalCompareChart\",\n MULTILINE_FEATURE_CHART: \"multiLineFeatureChart\",\n GROUPED_VERTICAL_BAR_CHART: \"groupedVerticalBarChart\"\n}\n\nexport const SEE_FULL_VIEW_ICONS = [chartTypes.MULTILINE_FEATURE_CHART, chartTypes.HORIZONTAL_BAR_CHART, chartTypes.GROUPED_HORIZONTAL_BAR_CHART ]\nexport const showMoreVariants = [\"mlModelPerformanceListView\", \"mlModelPerformanceChartView\",\n \"model_perf_comp_view\"];\n\nexport const UNIQUENESS_METRIC_CARD_ONE = \"No. of Datasets having Duplicate\"\nexport const UNIQUENESS_METRIC_CARD_TWO = \"Total no of attributes having duplicate values\"\nexport const UNIQUENESS_METRIC_CARD_THREE = \"Total no of duplicate rows in Datasets\"\n\n\nexport const cardTitlesMap = {\n \"Normalization Consistency\": \"Normalisation Errors\",\n \"Categorical Ordinal\": \"Categorical Ordinal Errors\",\n \"Categorical Encode\": \"Categorical Encoding Errors\",\n \"Data Type Consistency\": \"Data Type Errors\",\n \"Fill Rate\": \"Average Fill Rate\",\n \"Row Count\": \"Row Count\",\n \"Unique Values\": \"Unique Values\",\n \"Recency\": \"Average Recency (in days)\",\n \"URL Conformity\": \"URL Conformity Errors\",\n \"Credit Card Conformity\": \"Credit Card Conformity Errors\",\n \"Gender Conformity\": \"Gender Conformity Errors\",\n \"IP Conformity\": \"IP Conformity Errors\",\n \"Http Conformity\": \"HTTP Conformity Errors\",\n \"Date Conformity\": \"Date Conformity Errors\",\n \"Email Conformity\": \"Email Conformity Errors\",\n \"SSN Conformity\": \"SSN Conformity Errors\",\n \"Boolean Conformity\": \"Boolean Conformity Errors\",\n \"Data Outlier\": \"Data Outlier Errors\",\n}\n\nexport const chartDataCombinations = [{\"combinations\": [modelPerformance.PRECISION, modelPerformance.RECALL]}]\n\nexport const metricCategory = {\n DQM: \"dqm\",\n MLM: \"mlm\"\n}\n\nexport const RECENCY_INTERNAL_ID = 19;\nexport const ROW_COUNT_INTERNAL_ID = 25;\n\nexport const metricMapping = {\n 1: \"Accuracy Drift\",\n 2: \"Categorical Encoding Errors\",\n 3: \"Categorical Ordinal Errors\",\n 4: \"Credit Card Conformity Errors\",\n 5: \"Data Drift\",\n 6: \"Data Outliers\",\n 7: \"Data Type Errors\",\n 8: \"Date Conformity Errors\",\n 9: \"Email Conformity Errors\",\n 10: \"Feature Drift\",\n 11: \"Fill Rate\",\n 12: \"Gender Conformity Errors\",\n 13: \"Http Conformity Errors\",\n 14: \"IP Conformity Errors\",\n 15: \"ML Data Consistency\",\n 16: \"Model Drift\",\n 17: \"Normalization Consistency\",\n 18: \"Prediction Drift\",\n 19: \"Recency\",\n 20: \"Response Drift\",\n 21: \"SSN Conformity Errors\",\n 22: \"URL Conformity Errors\",\n 25 : \"Row Count\",\n 26: \"Unique Values\",\n 27: \"Boolean Conformity\"\n}\nexport const METRIC_SCALE = {\n \"Recency\": \"days.\",\n \"Data Drift\":\"\",\n};\n\nexport const RELATIONSHIP_METRIC = {\n 11: \"Data Completeness\",\n 19: \"Data Timeliness\",\n 6: \"Data Accuracy Errors\",\n \"Data Conformity Errors\": [4, 8, 9, 12, 13, 14, 21, 22, 27],\n \"Data Consistency Errors\": [2, 3, 17, 7]\n}\n\nexport const RELATIONSHIP_METRIC_ORDER = [11, 19, \"Data Conformity Errors\", 6, \"Data Consistency Errors\"];\n\n\n// Time is in minutes. If 2 results of same dataset are within this interval,\n// we will consider the results as same refresh\nexport const BUFFER_TIME_TO_IDENTIFY_REFRESH = 10;\n\n\nexport const RELATIONSHIP_STATIC_CARD = {\n 11: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],\n 19: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],\n 5: [7.0, 9.5, 18.4, 25.2, 23.3, 18.3, 13.9, 9.6],\n 6: [3.7, 3.3, 3.9, 5.1, 3.5, 3.8, 4.0, 5.0, 6.1, 3.7, 3.3, 6.4,\n 6.9, 6.0, 6.8, 4.4, 4.0, 3.8, 5.0, 4.9, 9.2, 9.6, 9.5, 6.3,\n 9.5, 10.8, 14.0, 11.5, 10.0, 10.2, 10.3, 9.4, 8.9, 10.6, 10.5, 11.1,\n 10.4, 10.7, 11.3, 10.2, 9.6, 10.2, 11.1, 10.8, 13.0, 12.5, 12.5, 11.3,\n 10.1\n ],\n \"Data Conformity Errors\": [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],\n \"Data Consistency Errors\": [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]\n}\n\nexport const STATIC_CARDS = [\n [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],\n [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],\n [7.0, 9.5, 18.4, 25.2, 23.3, 18.3, 13.9, 9.6],\n [3.7, 3.3, 3.9, 5.1, 3.5, 3.8, 4.0, 5.0, 6.1, 3.7, 3.3, 6.4, 6.9, 6.0, 6.8, 4.4, 4.0, 3.8, 5.0, 4.9, 9.2, 9.6, 9.5, 6.3, 9.5, 10.8, 14.0, 11.5, 10.0, 10.2, 10.3, 9.4, 8.9, 10.6, 10.5, 11.1, 10.4, 10.7, 11.3, 10.2, 9.6, 10.2, 11.1, 10.8, 13.0, 12.5, 12.5, 11.3, 10.1],\n [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],\n [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],\n [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],\n [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],\n [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]\n]\n\n\nexport const THUMBNAIL_COLORS = {\n \"VIOLET_VARS\": [\"#dac8f3\", \"#9690ea\", \"#796bef\", \"#545fef\",\n \"#689dee\"],\n \"GREEN_VARS\": [\"#bdecd0\", \"#8cf3b7\", \"#7cf1ac\", \"#2df381\",\n \"#06dc55\"],\n \"ORANGE_VARS\": [\"#f3e3e0\", \"#f6cc9a\", \"#eeae69\", \"#efbc50\",\n \"#e0bd40\"],\n \"RED_VARS\": [\"#FF6347\", \"#D3D3D3\", \"#FF6347\", \"#D3D3D3\"]\n};\n\nexport const ML_METRIC = {\n 24: \"Model Performance\",\n 23: \"Model Performance\",\n 10: \"Serving Features Drift Over Training\",\n 16: \"Serving Features Drift\",\n 15: \"ML Data Consistency Error\",\n}\n\nexport const ML_METRIC_2 = {\n 24: \"Model Performance\",\n 23: \"Model Performance\",\n 10: \"Serving Features Drift Over Training\",\n 16: \"Serving Features Drift\",\n 15: \"ML Data Consistency Error\",\n 18: \"Prediction Drift\",\n 20: \"Response Drift\"\n}\n\n\n\nexport const ML_METRIC_ORDER = [24, 23, 15, 16, 10];\n\nexport const ML_METRIC_COLOR = {\n 1: {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n 10: {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"},\n 15: {\"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\"},\n 16: {\"cardBackground\": \"dashboard-stat-danger\", \"textColor\": \"text-danger\"},\n 18: {\"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\"},\n 20: {\"cardBackground\": \"dashboard-stat-royalblue\", \"textColor\": \"text-royalblue\"},\n 24: {\"cardBackground\": \"dashboard-stat-gray\", \"textColor\": \"text-gray\"},\n 23: {\"cardBackground\": \"dashboard-stat-gray\", \"textColor\": \"text-gray\"}\n}\n\nexport const COMPLETENESS_METRIC = {\n 11: \"Fill Rate\",\n 25: \"Row Count\"\n\n};\nexport const DUPLICATE_METRIC = 26\nexport const UNIQUENESS_METRIC = {\n 26: \"Unique Values\"\n}\n\nexport const FILL_RATE_RANGE_ONE = \"Attribute Fill Rate < 25%\"\nexport const FILL_RATE_RANGE_TWO = \"Attribute Fill Rate 25% to 75%\"\nexport const FILL_RATE_RANGE_THREE = \"Attribute Fill Rate > 75%\"\nexport const ROW_COUNT_METRIC_CARD = \"Total number of Rows\"\n\nexport const OUTLIERS_METRIC_CARD = \"Data Outliers\"\nexport const WITH_OUTLIERS_METRIC_CARD = \"No of Numerical Attributes with Outliers\"\nexport const WITHOUT_OUTLIERS_METRIC_CARD = \"No of Numerical Attributes without Outliers\"\n\n\nexport const COMPLETENESS_CARDS = {\n [FILL_RATE_RANGE_ONE]: 25, [FILL_RATE_RANGE_TWO]: 75, [FILL_RATE_RANGE_THREE]: 100, [ROW_COUNT_METRIC_CARD]: 100,\n}\n\nexport const COMPLETENESS_METRIC_COLOR = {\n \"Attribute Fill Rate < 25%\": {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n \"Attribute Fill Rate 25% to 75%\": {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"},\n \"Attribute Fill Rate > 75%\": {\"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\"},\n \"Total number of Rows\": {\"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\"}\n\n}\n\n\nexport const RECENCY_METRIC_CARD_ONE =\"Datasets with Recency < One Day\"\nexport const RECENCY_METRIC_CARD_TWO =\"Datasets with Recency < One Week\"\nexport const RECENCY_METRIC_CARD_THREE =\"Datasets with Recency < One Month\"\nexport const RECENCY_METRIC_CARD_FOUR =\"Datasets with Recency > One Month\"\n\n\nexport const TIMELINESS_CARDS = {\n \"Datasets with Recency < One Day\": 1, \"Datasets with Recency < One Week\": 7, \"Datasets with Recency < One Month\": 30, \"Datasets with Recency > One Month\": 9999999\n}\n\nexport const TIMELINESS_METRIC_COLOR = {\n \"Datasets with Recency < One Day\": {\"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\"},\n \"Datasets with Recency < One Week\": {\"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\"},\n \"Datasets with Recency < One Month\": {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"},\n \"Datasets with Recency > One Month\": {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"}\n}\n\nexport const ACCURACY_METRIC = {\n 6: \"Data Outliers\"\n};\n\nexport const NON_EDITABLE_METRIC = [\"Unique Values\"];\n\nexport const ACCURACY_METRIC_COLOR = {\n 5: {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n 6: {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"}\n}\n\nexport const TIMELINESS_METRIC = {\n 19: \"Recency\"\n}\n\nexport const CONFORMITY_METRIC = {\n 4: \"Credit Card Conformity Errors\",\n 8: \"Date Conformity Errors\",\n 9: \"Email Conformity Errors\",\n 12: \"Gender Conformity Errors\",\n 13: \"Http Conformity Errors\",\n 14: \"IP Conformity Errors\",\n 21: \"SSN Conformity Errors\",\n 22: \"URL Conformity Errors\",\n 27: \"Boolean Conformity Errors\"\n}\n\nexport const METRIC_CARD_COLORS = {\n 0: { \"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\", \"chartLine\": \"areachartPurple\" },\n 1: { \"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\", \"chartLine\": \"areachartsuccess\" },\n 2: { \"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\", \"chartLine\": \"areachartwarning\" },\n 3: { \"cardBackground\": \"dashboard-stat-danger\", \"textColor\": \"text-danger\", \"chartLine\": \"areachartdanger\" },\n 4: { \"cardBackground\": \"dashboard-stat-orange\", \"textColor\": \"text-orange\", \"chartLine\": \"areachartOrange\" }\n}\n\nexport const CONFORMITY_METRIC_COLOR = {\n 4: {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n 8: {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"},\n 9: {\"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\"},\n 12: {\"cardBackground\": \"dashboard-stat-danger\", \"textColor\": \"text-danger\"},\n 13: {\"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\"},\n 14: {\"cardBackground\": \"dashboard-stat-royalblue\", \"textColor\": \"text-royalblue\"},\n 21: {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n 22: {\"cardBackground\": \"dashboard-stat-gray\", \"textColor\": \"text-gray\"},\n 27: {\"cardBackground\": \"dashboard-stat-orange\", \"textColor\": \"text-orange\"}\n}\n\nexport const RELATIONSHIP_METRIC_COLOR = {\n 11: {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n 19: {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"},\n 5: {\"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\"},\n 6: {\"cardBackground\": \"dashboard-stat-danger\", \"textColor\": \"text-danger\"},\n \"Data Conformity Errors\": {\"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\"},\n \"Data Consistency Errors\": {\"cardBackground\": \"dashboard-stat-royalblue\", \"textColor\": \"text-royalblue\"}\n}\n\nexport const CONSISTENCY_METRIC = {\n 2: \"Categorical Consistency Errors\",\n 17: \"Normalization Consistency Errors\",\n 7: \"Data Type Consistency Errors\",\n}\n\nexport const CONSISTENCY_METRIC_COLOR = {\n 2: {\"cardBackground\": \"dashboard-stat-info\", \"textColor\": \"text-info\"},\n 3: {\"cardBackground\": \"dashboard-stat-success\", \"textColor\": \"text-success\"},\n 17: {\"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\"},\n 7: {\"cardBackground\": \"dashboard-stat-danger\", \"textColor\": \"text-danger\"}\n}\n\nconst compare_a_line_0 = \"rgb(250,70,22)\";\nconst compare_a_line_1 = \"rgba(250,70,22,0.5)\";\nconst compare_b_line_0 = \"rgb(62,155,254)\";\nconst compare_b_line_1 = \"rgb(62,155,254, 0.5)\";\nconst compare_c_line_0 = \"rgb(78,210,204)\";\nconst compare_c_line_1 = \"rgb(78,210,204, 0.5)\";\n\nexport const CLASS_COLORS = {\n \"text-info\": {\"line\": \"rgb(76, 163, 255)\", \"area\": \"rgba(76, 163, 255,0.2)\", \"line1\": \"rgb(121,171,241)\",},\n \"text-success\": {\"line\": \"rgb(78,210,204)\", \"area\": \"rgba(78,210,204,0.2)\", \"line1\": \"rgb(130,246,185)\"},\n \"text-warning\": {\"line\": \"rgb(255,168,0)\", \"area\": \"rgba(255,168,0,0.2)\", \"line1\": \"rgb(243,203,111)\",},\n \"text-danger\": {\"line\": \"rgb(246,78,96)\", \"area\": \"rgba(246,78,96,0.2)\", \"line1\": \"rgb(236,130,142)\",},\n \"text-purple\": {\"line\": \"rgb(145,94,249)\", \"area\": \"rgba(145,94,249,0.2)\", \"line1\": \"rgb(88,84,137)\"},\n \"text-royalblue\": {\"line\": \"rgb(73,95,184)\", \"area\": \"rgba(73,95,184,0.2)\", \"line1\": \"rgb(145,164,243)\"},\n \"text-gray\": {\"line\": \"rgb(125,125,125)\", \"area\": \"rgba(125,125,125,0.2)\", \"line1\": \"rgb(135,85,85)\"},\n \"text-orange\": {\"line\": \"rgb(255,168,0)\", \"area\": \"rgba(255,168,0,0.2)\", \"line1\": \"rgb(243,203,111)\",},\n \"compare_a\": {\"line\": compare_a_line_0, \"area\": \"rgba(250,70,22,0.2)\", compare_a_line_1,},\n \"compare_b\": {\"line\": compare_b_line_0, \"area\": \"rgba(62,155,254,0.2)\", \"line1\": compare_b_line_1,},\n \"compare_c\": {\"line\": compare_c_line_0, \"area\": \"rgba(78,210,204,0.2)\", \"line1\": compare_c_line_1,},\n \"multi-line-colors\": {\n \"line1\": compare_a_line_0, \"line1_a\": \"rgba(250,70,22,0.5)\",\n \"line2\": compare_b_line_0, \"line2_a\": compare_b_line_1,\n \"line3\": compare_c_line_0, \"line3_a\": compare_c_line_1\n },\n}\n\nexport const MULTI_LINE_COLORS = \"multi-line-colors\";\n\nexport const MODEL_PERFORMANCE_THRESHOLDS = {\n RECALL: 0.6,\n PRECISION: 0.6,\n F1_SCORE: 0.6,\n ACCURACY: 0.6,\n RMSE: 50,\n SILHOUETTE: 0,\n}\n\nexport const RECOMMENDATION_MODEL_DEFAULTS = {\n K_VALUE: null\n}\n\nexport const K_RESULTS = [\"Mean Average Recall @K\", \"Mean Average Precision @K\"]\nexport const COEFFICIENT_VALUES = [\"Spearman correlation coefficient\", \"Pearson's correlation coefficient\"]\nexport const OTHER_ACCURACY_METRIC = [\"mse\", \"mae\", \"rmse\",\"r2\"]\n\nexport const MODEL_ACCURACY = \"Model Accuracy\"\nexport const MODEL_EVALUATION = \"Model Evaluation\"\nexport const MODEL_MONITORING = \"Model Monitoring\"\nexport const FEATURE_IMPORTANCE = \"Feature Importance\"\nexport const MODEL_EXPLAINABILITY = \"Model Explainability\"\n\nexport const MODEL_RUNTIME_PROFILE = \"Model Runtime-Profile\";\n\n\nexport const ML_MODEL_WITH_MODEL_EVALUATION_METRICS = [\"classification\"]\n\nexport const MODEL_PERFORMANCE_GROUPS = {\n \"Model Accuracy\": {\n \"data\": [],\n \"type\": \"all_accuracy\",\n \"header\": \"Model Accuracy Metrics\",\n \"sub_header\": \"Following are the charts which show the model accuracy metrics (eg: f1 score, precision, recall) of the configured model\",\n },\n \"Model Evaluation\": {\n \"data\": [],\n \"type\": \"all_evaluation\",\n \"header\": \"Model Evaluation Metrics\",\n \"sub_header\": `Following are the charts which show the model evaluation metrics (eg: TP/TN/FP/FN, AUC) of the configured model`\n },\n \"Model Monitoring\": {\n \"data\": [],\n \"type\": \"model_runtime\",\n \"header\": \"Model Runtime-Profile Metrics\",\n \"sub_header\": `Following are the charts which show the model runtime-profile metrics (eg: cpu usage, memory usage, latency, invocation) of the configured model`\n },\n \"Model Explainability\": {\n \"data\": [],\n \"type\": \"model_explainability\",\n \"header\": \"Model Explainability\",\n \"sub_header\": `Following are the charts which show the Model Explainability of the serving data and training data`\n }\n};\n\n\nexport const MODEL_PERFORMANCE_RESULT_GROUP_MAP = {\n \"precision\": MODEL_ACCURACY,\n \"Weighted precision\": MODEL_ACCURACY,\n \"f1 score\": MODEL_ACCURACY,\n \"Weighted F(1) Score\": MODEL_ACCURACY,\n \"Accuracy\": MODEL_ACCURACY,\n \"recall\": MODEL_ACCURACY,\n \"Weighted recall\": MODEL_ACCURACY,\n \"Sensitivity\": MODEL_ACCURACY,\n \"Specificity\": MODEL_ACCURACY,\n \"precision vs recall\": MODEL_ACCURACY,\n \"Sensitivity vs Specificity\": MODEL_ACCURACY,\n\n \"Confusion matrix\": MODEL_EVALUATION,\n \"areaUnderPR\": MODEL_EVALUATION,\n \"areaUnderPR Error\": MODEL_EVALUATION,\n \"areaUnderROC\": MODEL_EVALUATION,\n \"areaUnderROC Error\": MODEL_EVALUATION,\n \"True Positive\": MODEL_EVALUATION,\n \"False Positive\": MODEL_EVALUATION,\n \"True Negative\": MODEL_EVALUATION,\n \"False Negative\": MODEL_EVALUATION,\n \"ROC Curve\": MODEL_EVALUATION,\n\n \"cpu_usage\": MODEL_MONITORING,\n \"memory_usage\": MODEL_MONITORING,\n \"model_latency\": MODEL_MONITORING,\n \"overhead_latency\": MODEL_MONITORING,\n\n \"mean_shap_value\": MODEL_EXPLAINABILITY,\n\n\n};\n\nexport const ATTRIBUTE_LEVEL_MODEL_ERROR_DESCRIPTIONS = {\n \"Model Drift\": {\n \"desc\": \"Following are the charts which showcase the drifts in the \" +\n \"features of the serving data in comparison with themselves over a period of time.\",\n \"title\": \"Feature drifts - By Serving data Attributes\"\n },\n \"Feature Drift\": {\n \"desc\": \"Following are the charts which showcase the drifts in the \" +\n \"features of the serving data in comparison with the same features from training data.\",\n \"title\": \"Feature drifts - Serving data vs Training data\"\n },\n \"Feature Drift_temporal\": {\n \"desc\": \"Following are the charts which showcase the drifts in the \" +\n \"different features used in the serving data over a period of time.\",\n \"title\": \"Drifts in the features of the Serving data over a period of time\"\n },\n \"Prediction Drift\": {\n \"desc\": \"Following are the charts which showcase the drifts in the \" +\n \"prediction of the configured model.\",\n \"title\": \"Prediction Metrics - Drifts\"\n },\n \"Response Drift\": {\n \"desc\": \"Following are the charts which showcase the drifts in the \" +\n \"business response of the configured model.\",\n \"title\": \"Business Response Metrics - Drifts\"\n },\n \"Accuracy Drift\": {\n \"desc\": \"Following are the model performance metrics with threshold errors (f1 score, Root Mean Squared Error, etc.).\",\n \"title\": \"Key 'Model Performance Metrics' Crossing Thresholds\"\n },\n \"ML Data Consistency\": {\n \"desc\": \"Following are the charts which showcase the errors noticed in \" +\n \"the consistency of serving data in comparison with the training data at individual features level.\",\n \"title\": \"Consistency Errors - Serving data versus Training data\"\n },\n \"default\": {\n \"desc\": \"Following are the charts which showcase the errors in \" +\n \"Models for \",\n \"title\": \"Errors in the configured Model\"\n },\n}\n\n\nexport const DATA_SET_LEVEL_MODEL_ERROR_DESCRIPTIONS = {\n \"Model Drift\": {\n \"desc\": \"Following are the charts which showcase the feature drifts in the \" +\n \"serving data of the Models\",\n \"title\": \"Feature Drifts - Entire Serving dataset\"\n },\n \"ML Data Consistency\": {\n \"desc\": \"Following chart highlights data consistency issues between serving and training data.\",\n \"title\": \"Consistency Errors - Serving data vs Training data\"\n },\n \"default\": {\n \"desc\": \"Following are the charts which showcase the errors in \" +\n \"Models for \",\n \"title\": \"Errors in the configured Model\"\n },\n \"Custom Metrics\": {\n \"desc\": \"Following are the charts which showcase the drifts in the \" +\n \"custom metrics \",\n \"title\": \"Custom ML Metrics - Drifts\"\n },\n}\n\nexport const SECTION_TYPE_MAPPING = {\"type8\": \"Custom ML Metrics - Drifts\" }\n\nexport const MODEL_DRIFT = \"Model Drift\";\n// Alias name to be used for Model Drift while showing the chart\nexport const SERVING_DATA_DRIFT = \"Serving Data Drift\";\n// Alias name for Attribute level Model drift charts\nexport const FEATURE_DRIFT_TEMPORAL = \"Feature Drift in Serving Data\";\n\n// Alias name for feature drift in comparison with training attributes\n\nexport const FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT = \"Number of rows in serving data drifted from training data\";\nexport const FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT = \"Number of rows in serving data drifting from training data exceeds threshold\";\n\nexport const FEATURE_DRIFT_ALIAS_GREEN_TEXT = \"% drift between serving and training attribute\";\nexport const FEATURE_DRIFT_ALIAS_RED_TEXT = \"% drift between serving and training attribute exceeds threshold\";\n\nexport const FEATURE_DRIFT_ALIASES = [FEATURE_DRIFT_ALIAS_GREEN_TEXT, FEATURE_DRIFT_ALIAS_RED_TEXT];\n\nexport const FEATURE_DRIFT = \"Feature Drift\";\n\nexport const ML_BOX_PLOT_LIST = [MODEL_DRIFT, SERVING_DATA_DRIFT, FEATURE_DRIFT_TEMPORAL, FEATURE_DRIFT,\n \"Response Drift\", \"Prediction Drift\", \"Accuracy Drift\"]\n\nexport const DEFAULT_METRICS_MAP = {\n \"dq\": [\"Fill Rate\", \"Data Outlier\", \"Data Drift\",\n \"Data Type Consistency\", \"Normalization Consistency\", \"Normalisation Consistency\",\n \"Categorical Encode\", \"Gender Conformity\", \"URL Conformity\", \"IP Conformity\",\n \"SSN Conformity\", \"Credit Card Conformity\", \"Http Conformity\",\n \"Email Conformity\", \"Date Conformity\", \"Boolean Conformity\"],\n \"recency\": [\"Recency\"],\n \"ml\": [\"Model Drift\", \"Prediction Drift\",\n \"Response Drift\", FEATURE_DRIFT, \"Accuracy Drift\", \"ML Data Consistency\",\n SERVING_DATA_DRIFT, FEATURE_DRIFT_TEMPORAL, ...FEATURE_DRIFT_ALIASES]\n}\n\nexport function getMetaInformationAboutChart(isDataSet, key) {\n let description;\n let isDefault = DEFAULT_METRICS_MAP.dq.includes(key);\n let metricType = isDefault ? \"default\" : \"custom\";\n let header = ''\n switch(key) {\n case \"Data Drift\":\n if (isDataSet) {\n description = \"Following are the charts which showcase the net aggregated data drift for the selected dataset(s).\"\n header = \"Data Drift Errors - By Datasets\";\n }\n else {\n description = \"Following are the charts which showcase data drift errors for a selected attribute.\"\n header = \"Data Drift Errors - By Attributes\";\n }\n break\n case \"Data Outlier\":\n if (isDataSet) {\n description = \"Following are the charts which showcase data accuracy drift at a dataset level\"\n header = \"Data Accuracy Errors - Dataset\";\n }\n else {\n description = \"Following are the charts which showcase data accuracy drifts for a selected attribute.\"\n header = \"Data Accuracy Errors - By Attributes\";\n }\n break\n case \"Fill Rate\":\n if (isDataSet) {\n description = \"Following are the charts which showcase fill rate drift at a dataset level\"\n header = \"Data Completeness Drift - Dataset\";\n }\n else {\n description = \"Following are the charts which showcase fill rate drifts for a selected attribute.\"\n header = \"Data Completeness Drift - By Attributes\";\n }\n break\n case \"Row Count\":\n if (isDataSet) {\n description = \"Following are the charts which showcase row count drift at a dataset level\"\n header = \"Data Completeness - Row Count Drift - Dataset\";\n }\n else {\n description = \"Following are the charts which showcase row count drifts for a selected attribute.\"\n header = \"Row Count Drift - By Attributes\";\n }\n break\n case \"Unique Values\":\n if (isDataSet) {\n description = \"Following are the charts which showcase Unique Values drift at a dataset level\"\n header = \"Data Uniqueness Drift - Dataset\";\n }\n else {\n description = \"Following are the charts which showcase Unique Values drifts for a selected attribute.\"\n header = \"Data Uniqueness Drift - By Attributes\";\n }\n break\n case \"Recency\":\n if (isDataSet) {\n description = \"Following are the charts which showcase timeliness drift at a dataset level\"\n header = \"Data Timeliness Drift - Dataset\";\n }\n else {\n description = \"Following are the charts which showcase timeliness drifts for a selected attribute.\"\n header = \"Data Timeliness Drift - By Attributes\";\n }\n break\n default:\n if (isDataSet) {\n description = `Following are the charts which showcase the drifts in custom metric ${key} at a dataset level`\n header = `Drifts in the custom metric ${key} - Dataset`;\n }\n else {\n description = `Following are the charts which showcase errors in custom metric ${key} for a selected attribute.`\n header = `Drifts in the custom metric ${key} - By Attributes`;\n }\n }\n if ( key.includes(\"Consistency\") || key.includes('Categorical' ) || key.includes('Conformity')) {\n if (isDataSet) {\n description = \"Following are the charts which showcase \" + key +\" errors at a dataset level\"\n header = key + \" Errors - Dataset\";\n }\n else {\n description = \"Following are the charts which showcase \"+ key +\" errors for a selected attribute.\"\n header = key +\" Errors - By Attributes\";\n }\n }\n return {\n \"header\": header,\n \"description\": description,\n \"metricType\": metricType\n }\n}\n\n\nexport const MODEL_PERFORMANCE_DEFAULT_CHART_MAPPING = {\n \"True Positive\": \"barChart\",\n \"False Positive\": \"barChart\",\n \"True Negative\": \"barChart\",\n \"False Negative\": \"barChart\",\n \"areaUnderPR\": \"areaChart\",\n \"areaUnderROC\": \"areaChart\",\n \"areaUnderROC Error\": \"areaChart\",\n \"areaUnderPR Error\": \"areaChart\",\n}\n\nexport const DEFAULT_ML_METRICS = [\"Model Drift\", \"Feature Drift\", \"Prediction Drift\",\n \"Response Drift\", \"Accuracy Drift\", \"ML Data Consistency\"];\n\n\nexport const CUSTOM_ML_METRIC =\"Custom Metrics\";\nexport const DATASET_LEVEL_ALLOWED_ML_METRICS = [\"Model Drift\", \"ML Data Consistency\"];\nexport const ATTRIBUTE_LEVEL_ALLOWED_ML_METRICS = [\"Model Drift\", \"Prediction Drift\",\n \"Response Drift\", \"Feature Drift\", \"Accuracy Drift\"];\n\nexport const MODEL_ALERT_ALLOWED_METRICS = {\n \"feature\": [\"Feature Drift\", \"ML Data Consistency\", \"Model Drift\"],\n \"accuracy\": [\"Accuracy Drift\"],\n \"prediction\": [\"Prediction Drift\"],\n \"response\": [\"Response Drift\"],\n }\n\nexport const DQ_ALERT_ALLOWED_METRICS = {\n \"dataset_level\": [\"Fill Rate\", \"Row Count\", \"Recency\", \"Data Outlier\", \"Data Drift\", \n \"Unique Values\"],\n \"attribute_level_num\": [\"Fill Rate\", \"Data Outlier\", \"Data Drift\"],\n \"attribute_level_str\": [\"Fill Rate\", \"Data Drift\"]\n }\n\n/*\n* Contains keys required to show applicable metrics for custom alerts.\n* Refered from qualdo/compute_engine/compute_measure/estimators/datatypes.py - class DataType\n */\nexport const CONFORMITY_METRICS_CUSTOM_ALERTS = {\n \"email\": \"Email Conformity\",\n \"url\": \"URL Conformity\",\n \"boolean\": \"Boolean Conformity\",\n \"date\": \"Date Conformity\",\n \"gender\": \"Gender Conformity\",\n \"http\": \"HTTP Conformity\",\n \"ip\": \"IP Conformity\",\n \"ssn\": \"SSN Conformity\",\n \"credit_card\": \"Credit Card Conformity\"\n }\n\nexport const REQUIRES_FILTER = [\"Prediction Drift\", \"Response Drift\"];\n\n/*\n* Contains keys required to access model related sections.\n* For Feature Drift we didn't have columnKey currently.\n* There can be 2 type of columnKey for Feature Drift\n* Training feature x Serving feature\n */\nexport const ML_FEATURE_KEYS = {\n \"Prediction Drift\": {\n \"key\": \"prediction\",\n \"columnKey\": \"target_column_names\"\n },\n \"Response Drift\": {\n \"key\": \"response\",\n \"columnKey\": \"target_column_names\"\n },\n \"Feature Drift\": {\n \"key\": \"feature\",\n },\n \"Accuracy Drift\": {\n \"key\": \"accuracy\",\n \"columnKey\": \"target_column_names\"\n }\n}\n\nexport const MODEL_PERFORMANCE_COMBINATION_CHART = [\n {\"y\": modelPerformance.PRECISION, \"y1\": modelPerformance.RECALL},\n {\"y\": modelPerformance.SENSITIVITY, \"y1\": modelPerformance.SPECIFICITY}];\n\n/*\n* Contains priority score for each ml model metric for sorting purpose\n*\n* */\nexport const DEFAULT_ML_METRIC_PRIORITY = {\n \"Model Drift\": {\"Dataset\": 3, \"Attribute\": 4},\n \"Feature Drift\": {\"Dataset\": 100, \"Attribute\": 5},\n \"Prediction Drift\": {\"Dataset\": 10, \"Attribute\": 6},\n \"Response Drift\": {\"Dataset\": 10, \"Attribute\": 7},\n \"Accuracy Drift\": {\"Dataset\": 10, \"Attribute\": 1},\n \"ML Data Consistency\": {\"Dataset\": 2, \"Attribute\": 100},\n}\n\n\n/*\n* Contains priority score for each metric for sorting purpose\n*\n* */\nexport const DEFAULT_METRIC_PRIORITY = {\n \"Fill Rate\": 10,\n \"Row Count\": 10,\n \"Unique Values\": 10,\n \"Recency\": 10,\n \"Data Drift\": 10,\n \"Data Outlier\": 10,\n \"Data Type Consistency\": 6,\n \"Gender Conformity\": 10,\n \"Model Drift\": 10,\n \"Feature Drift\": 10,\n \"Prediction Drift\": 10,\n \"Response Drift\": 10,\n \"Email Conformity\": 10,\n \"Accuracy Drift\": 10,\n \"ML Data Consistency\": 10,\n \"SSN Conformity\": 10,\n \"Credit Card Conformity\": 10,\n \"Http Conformity\": 10,\n \"URL Conformity\": 10,\n \"IP Conformity\": 10,\n \"Normalization Consistency\": 9,\n \"Categorical Encode\": 7,\n \"Categorical Ordinal\": 8,\n \"Date Conformity\": 10,\n \"Boolean Conformity\": 10,\n \"Silhouette Score\": 8,\n \"Davies Bouldin Score\": 9,\n \"Calinski Harabasz Score\": 10\n}\n\n\n// we are using \"cmVzZXRQYXNzd29yZAo=\", \"b25lCg==\", \"emVybwo=\" \n// instead of reset_password, 1, 0 respectively\n// to avoid users to change it in inspect window.\n\nexport const MANDATE_RESET_PASSWORD = {\n \"Reset_Password\": \"cmVzZXRQYXNzd29yZAo=\",\n \"One\": \"b25lCg==\",\n \"Zero\": \"emVybwo=\"\n}\n\n\n/*\n* Contains priority score for each error for sorting purpose\n*\n* */\nexport const DEFAULT_ERROR_PRIORITY = {\n \"NO_DRIFT\": 10,\n \"not_computed\": 10,\n \"Threshold Alert\": 1\n}\n\nexport const MODEL_PERFORMANCE_PREVIEW_PAGE = [modelPerformance.F1_SCORE,\n modelPerformance.PRECISION, modelPerformance.RECALL,\n modelPerformance.ACCURACY,\n modelPerformance.SENSITIVITY, modelPerformance.SPECIFICITY];\n\nexport const MODEL_MONITOR_PREVIEW_PAGE = [modelPerformance.CPU_USAGE,\n modelPerformance.MEMORY_USAGE, modelPerformance.MODEL_LATENCY,\n modelPerformance.OVERHEAD_LATENCY]\n\nexport const MIN_MAX_SCALE = \"minMaxScale\";\n\nexport const DATA_CONSISTENCY = \"Data Consistency\";\n\nexport const PAYMENT_CARD_TYPES = {\n \"visa\": \"creditCard_visa\",\n \"mastercard\": \"creditCard_master\",\n \"american-express\": \"creditCard_amex\",\n \"diners-club\": \"\",\n \"discover\": \"creditCard_discover\",\n \"jcb\": \"creditCard_jcb\",\n \"union-pay\": \"\",\n \"maestro\": \"\",\n};\n\n\nexport const QualdoPlanDurations = {\n MONTHLY: 0,\n YEARLY: 1\n}\n\n\nexport const QualdoPlanCycle = {\n MONTHLY: \"monthly\",\n YEARLY: \"annually\",\n TRIAL_14_DAYS: \"14_days\",\n}\n\n\nexport const DateParts = {\n YEAR: 0,\n MONTH: 1,\n DAY: 2,\n}\n\n\nexport const QualdoEditionMapping = {\n \"MME\" : \"Model Monitoring Edition\",\n \"DQE\" : \"Data Quality Edition\",\n \"EE\" : \"Enterprise Edition\"\n}\n\nexport const QualdoEditions = {\n DQ_EDITION: 0,\n ML_EDITION: \"Model Monitoring Edition\",\n ENTERPRISE_EDITION: 2\n}\n\nexport const QualdoPlanVersions = {\n FREE: \"free\",\n STARTER: \"starter\",\n PROFESSIONAL: \"professional\"\n}\n\nexport const DQ_CHART_POINTS = \"dq_chart_points\";\n\nexport const SUBSCRIPTION_PLANS = {\n \"monthly\": {\n \"free\": {\n \"title\": \"Basic\",\n \"price\": \"0\",\n \"duration\": \"month\",\n \"details\": {\n \"currency\": \"$\",\n \"data_size\": 10,\n \"ml_models_size\": 2,\n \"benefits\": [\n {\"name\": \"Model Metrics\"},\n {\"name\": \"Model Monitoring Visualizations\"},\n {\"name\": \"Error and Threshold Notifications\"},\n {\"name\": \"Alerts\"}\n ]\n }\n },\n \"starter\": {\n \"title\": \"Starter\",\n \"price\": \"79\",\n \"duration\": \"month\",\n \"details\": {\n \"currency\": \"$\",\n \"data_size\": 100,\n \"ml_models_size\": 10,\n \"benefits\": [\n {\"name\": \"Model Metrics\"},\n {\"name\": \"Model Monitoring Visualizations\"},\n {\"name\": \"Error and Threshold Notifications\"},\n {\"name\": \"Alerts\"}\n ]\n }\n },\n \"professional\": {\n \"title\": \"Professional\",\n \"price\": \"295\",\n \"duration\": \"month\",\n \"details\": {\n \"data_size\": 750,\n \"ml_models_size\": 40,\n \"benefits\": [\n {\"name\": \"Model Metrics\"},\n {\"name\": \"Model Monitoring Visualizations\"},\n {\"name\": \"Error and Threshold Notifications\"},\n {\"name\": \"Alerts\"}\n ]\n }\n }\n },\n \"annually\": {\n \"free\": {\n \"title\": \"Basic\",\n \"price\": \"0\",\n \"duration\": \"month\",\n \"details\": {\n \"currency\": \"$\",\n \"data_size\": 10,\n \"ml_models_size\": 2,\n \"benefits\": [\n {\"name\": \"Model Metrics\"},\n {\"name\": \"Model Monitoring Visualizations\"},\n {\"name\": \"Error and Threshold Notifications\"},\n {\"name\": \"Alerts\"}\n ]\n }\n },\n \"starter\": {\n \"title\": \"Starter\",\n \"price\": \"61\",\n \"duration\": \"month\",\n \"details\": {\n \"currency\": \"$\",\n \"data_size\": 100,\n \"ml_models_size\": 10,\n \"benefits\": [\n {\"name\": \"Model Metrics\"},\n {\"name\": \"Model Monitoring Visualizations\"},\n {\"name\": \"Error and Threshold Notifications\"},\n {\"name\": \"Alerts\"}\n ]\n }\n },\n \"professional\": {\n \"title\": \"Professional\",\n \"price\": \"277\",\n \"duration\": \"month\",\n \"details\": {\n \"currency\": \"$\",\n \"data_size\": 750,\n \"ml_models_size\": 40,\n \"benefits\": [\n {\"name\": \"Model Metrics\"},\n {\"name\": \"Model Monitoring Visualizations\"},\n {\"name\": \"Error and Threshold Notifications\"},\n {\"name\": \"Alerts\"}\n ]\n }\n }\n },\n }\n\n\nexport const BRAIN_TREE_AUTH_TOKEN = process.env.REACT_APP_BRAINTREE_TOKEN;\nexport const MIXPANEL_KEY = process.env.REACT_APP_MIXPANEL_KEY;\n\n/**\n * In .env file we do have REACT_APP_SAAS_EDITION\n * It will be in true for all SAAS .env file \n * so we can you make use of this constant to differentiate SAAS and DRX UI as well as BIX(DRX)\n * else if it is false we will be setting the IS_NONE_SAAS_EDITION to true\n */\nexport const IS_SAAS_EDITION = process.env.REACT_APP_SAAS_EDITION === 'true' ? true : false\nexport const IS_NONE_SAAS_EDITION = process.env.REACT_APP_SAAS_EDITION === 'true' ? false : true\nexport const IS_AZURE_DRX = process.env.REACT_APP_MARKET_EDITION === \"qualdo-drx-az\" ? true : false\n\n// ============= GTM RELATED CONSTANTS START ========\nexport const GTM_INTEGRATION_TOKEN = process.env.REACT_APP_GTM_AUTH;\nexport const GTM_ID = process.env.REACT_APP_GTM_ID;\nexport const GTM_PREVIEW = process.env.REACT_APP_GTM_PREVIEW_ENV;\nexport const GTM_EVENTS = {\n 'gtm.start': new Date().getTime(),\n event: 'gtm.js'\n};\n// ============= GTM RELATED CONSTANTS END ========\n\nexport const trigger_name_regex = /[^A-Za-z0-9]/\nexport const trigger_special_char_regex = /^[!@#$%^&*)(+=._-]{0,}$/\n\nexport const NON_NUMERIC_COLUMNS = [\"string\", \"date\", \"timestamp\", \"boolean\"]\n\nexport const DATA_TYPE_MAPPING = {\n \"string\":\"String\",\n \"date\":\"Date\",\n \"timestamp\":\"Timestamp\",\n \"boolean\":\"Boolean\"\n}\n\nexport const DATA_DRIFT = \"Data Drift\";\nexport const DATA_TYPE_CONSISTENCY = \"Data Type Consistency\";\nexport const NORMALIZATION_CONSISTENCY = \"Normalization Consistency\";\nexport const CATEGORICAL_ENCODE = \"Categorical Encode\";\n\nexport const ML_DATA_CONSISTENCY = \"ML Data Consistency\";\nexport const ML_ACCURACY_DRIFT = \"Accuracy Drift\";\n\nexport const REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART = [DATA_TYPE_CONSISTENCY, NORMALIZATION_CONSISTENCY,\n CATEGORICAL_ENCODE];\n\nexport const DATA_CONSISTENCY_METRICS = [CATEGORICAL_ENCODE, DATA_TYPE_CONSISTENCY, NORMALIZATION_CONSISTENCY];\n\nexport const ML_REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART = [ML_DATA_CONSISTENCY];\n\nexport const CONTRIBUTION_KEY = \"contribution\";\n\nexport const REFERENCE_TYPE_COLUMN_NAME = {\n [DATA_TYPE_CONSISTENCY]: \"Reference Data type\",\n [ML_DATA_CONSISTENCY]: \"Training Data type\"\n};\n\nexport const CONSISTENCY_CONTRIBUTION_HEADERS = [\"Date\", \"Attribute Name\", \"Data type\",\n REFERENCE_TYPE_COLUMN_NAME[DATA_TYPE_CONSISTENCY]];\n\nexport const CONSISTENCY_CONTRIBUTION_HEADERS_ML = [\"Date\", \"Attribute Name\", \"Data type\",\n REFERENCE_TYPE_COLUMN_NAME[ML_DATA_CONSISTENCY]];\n\nexport const MODEL_PERFORMANCE_AS_MODEL_ERRORS = [modelPerformance.F1_SCORE,\n modelPerformance.PRECISION, modelPerformance.RECALL,\n modelPerformance.ACCURACY,\n modelPerformance.RMSE]\n\n\nexport const DATA_TYPE_CONSISTENCY_HEADERS = {\n [DATA_TYPE_CONSISTENCY]: CONSISTENCY_CONTRIBUTION_HEADERS,\n [ML_DATA_CONSISTENCY]: CONSISTENCY_CONTRIBUTION_HEADERS_ML\n};\n\n\nexport const PAID_PLANS = [QualdoPlanVersions.STARTER, QualdoPlanVersions.PROFESSIONAL]\n\nexport const VALID_QUALDO_PLANS = [QualdoPlanVersions.STARTER, QualdoPlanVersions.PROFESSIONAL,\n QualdoPlanVersions.FREE];\n\nexport const VALID_QUALDO_PLAN_CYCLES = [QualdoPlanCycle.MONTHLY, QualdoPlanCycle.YEARLY, QualdoPlanCycle.TRIAL_14_DAYS];\n\nexport const FREE_PLAN_CYCLES = [QualdoPlanCycle.MONTHLY, QualdoPlanCycle.TRIAL_14_DAYS];\nexport const STARTER_PLAN_CYCLES = [QualdoPlanCycle.MONTHLY, QualdoPlanCycle.YEARLY];\nexport const PROFESSIONAL_PLAN_CYCLES = [QualdoPlanCycle.MONTHLY, QualdoPlanCycle.YEARLY];\n\nexport const VALID_QUALDO_EDITIONS = [QualdoEditions.ML_EDITION]\nexport const QUALDO_WEBSITE_URL = \"https://www.qualdo.ai/monitor-ml-model-performance-monitoring/#pricing\";\nexport const PAYMENT_FIELD_ID_MAP = {\n number: \"card_number\",\n cvv: \"cvv\",\n expirationDate: \"expiration_date\"\n}\n\nexport const PAYMENT_COMPONENT_STYLES = {\n 'input': {\n 'font-size': '16px',\n 'color': '#020202'\n },\n\n ':-moz-placeholder': {\n 'font-family': \"'Poppins', sans-serif\",\n 'font-size': '14px',\n 'font-weight': '400',\n 'color': '#c9c9c9',\n 'opacity': '1'\n },\n '::-moz-placeholder': {\n 'font-family': \"'Poppins', sans-serif\",\n 'font-size': '14px',\n 'font-weight': '400',\n 'color': '#c9c9c9',\n 'opacity': '1'\n },\n ':-ms-input-placeholder': {\n 'font-family': \"'Poppins', sans-serif\",\n 'font-size': '14px',\n 'font-weight': '400',\n 'color': '#c9c9c9',\n 'opacity': '1'\n }\n};\n\nexport const DRIFT_PATTERN_TYPES = {\n NO_DRIFT: \"NO_DRIFT\",\n NOT_COMPUTED: \"not_computed\",\n THRESHOLD_ALERT: \"Threshold Alert\",\n ERRORS_DETECTED: \"Errors Detected\",\n SUDDEN: \"sudden\",\n INCREMENTAL: \"incremental\",\n GRADUAL: \"gradual\",\n RECURRING: \"recurring\",\n BLIP: \"blip\",\n NOISE: \"noise\",\n DECREMENTAL: \"decremental\"\n\n}\n\n\n\nexport const NON_ERROR_DRIFT_PATTERNS = [DRIFT_PATTERN_TYPES.NO_DRIFT, \n DRIFT_PATTERN_TYPES.NOT_COMPUTED,\n DRIFT_PATTERN_TYPES.SUDDEN, DRIFT_PATTERN_TYPES.INCREMENTAL,\n DRIFT_PATTERN_TYPES.BLIP, DRIFT_PATTERN_TYPES.NOISE,\n DRIFT_PATTERN_TYPES.DECREMENTAL\n];\n\nexport const MIN_MAX_SCALE_LIST = [\"Recency\", \"Data Drift\", \"Data Type Consistency\",\n \"Normalization Consistency\", \"Normalisation Consistency\"];\n\nexport const METRIC_ALIAS_NAMES = {\n \"precision\" : \"Precision\",\n \"recall\" : \"Recall\",\n \"precision vs recall\": \"Precision vs Recall\",\n \"f1 score\": \"F1 score\",\n \"Weighted F(1) Score\": \"Weighted F1 Score\",\n \"Weighted precision\": \"Weighted Precision\",\n \"Weighted recall\": \"Weighted Recall\",\n \"rmse\": \"Root Mean Squared Error\",\n \"mse\": \"Mean Squared Error\",\n \"r2\": \"R-squared\",\n \"mae\": \"Mean Absolute Error\",\n \"memory_usage\": \"Memory Usage\",\n \"cpu_usage\": \"CPU Usage\",\n \"overhead_latency\": \"Overhead Latency\",\n \"model_latency\": \"Model Latency\",\n \"areaUnderROC\": \"Area Under ROC\",\n \"areaUnderPR\": \"Area Under PR\",\n \"areaUnderROC Error\": \"Area Under ROC Error\",\n \"areaUnderPR Error\": \"Area Under PR Error\",\n \"Accuracy\": \"Accuracy\",\n \"Sensitivity\": \"Sensitivity\",\n \"Specificity\": \"Specificity\",\n \"True Positive\": \"true positive\",\n \"False Positive\": \"false positive\",\n \"True Negative\": \"true negative\",\n \"False Negative\": \"false negative\",\n \"Spearman correlation coefficient\": \"Spearman Correlation Coefficient\",\n \"Pearson's correlation coefficient\": \"Pearson's Correlation Coefficient\",\n \"Matthews Correlation Coefficient\": \"Matthews Correlation Coefficient\",\n \"mean_shap_value\": \"Feature Contribution Value\",\n \"Homogeneity Completeness V-measure Score\": \"Homogeneity Completeness V-measure Score\",\n \"Silhouette Score\": \"Silhouette Score\",\n \"Calinski Harabasz Score\": \"Calinski Harabasz Score\",\n \"Davies Bouldin Score\": \"Davies Bouldin Score\",\n \"Rand Score\": \"Rand Score\",\n \"Adjusted Rand Score\": \"Adjusted Rand Score\",\n \"Adjusted Mutual Info Score\": \"Adjusted Mutual Info Score\",\n \"Normalized Mutual Info Score\": \"Normalized Mutual Info Score\",\n \"Fowlkes Mallows Score\": \"Fowlkes Mallows Score\"\n}\n\n// Should be in sync with QualdoPaymentStatus in qualdo/qualdo_utils/constants.py\nexport const QUALDO_PAYMENT_STATUS = {\n TRIAL_EXPIRED: \"trial_expired\",\n PAYMENT_COMPLETED: \"payment_completed\",\n PAYMENT_PENDING: \"payment_pending\"\n}\n\nexport const PENDING_PAYMENTS = [QUALDO_PAYMENT_STATUS.TRIAL_EXPIRED,\n QUALDO_PAYMENT_STATUS.PAYMENT_PENDING];\n\nexport const BUTTON_NAMES = {\n PAY_NOW: \"Pay now\",\n CHOOSE_PLAN: \"Choose plan\",\n INCREASE_LIMIT: \"Increase limit\"\n}\n\nexport const EXCLUDED_COMPONENTS = [\"dqErrorListViewTable\"]\nexport const PLAN_PAGE_WARNINGS = {\n [QUALDO_PAYMENT_STATUS.TRIAL_EXPIRED]: [ \"Free trial expiration. \",\n \"Free-trial period and the extension has expired. Please subscribe to one of the plans to continue using Qualdo\\u2122\",\n BUTTON_NAMES.CHOOSE_PLAN],\n [QUALDO_PAYMENT_STATUS.PAYMENT_PENDING]: [\"There is a pending payment.\",\n \"Your current bill is past-due. The warning extension period is also past. To continue using Qualdo\\u2122, please pay immediately. For any assistance please contact the help desk below.\",\n BUTTON_NAMES.PAY_NOW ],\n \"data_limit_exceeded_paid_plans\" : [\"Data size limit reached.\",\n \"The size limit of the Total Data Processed by Qualdo\\u2122 for the current plan is (100 GB). You are starting to breach this limit. Please remember, you will be charged an extra $52 for every 100 GB data processing increase. This will show up in the next bill/invoice. You can also upgrade to another plan to continue using Qualdo\\u2122.\",\n BUTTON_NAMES.INCREASE_LIMIT ],\n \"free_trial_exceeded\": [\"Data size limit reached.\",\n \"The size limit of the Total Data Processed by Qualdo\\u2122 for the current plan is (10 GB). \" +\n \"You are starting to breach this limit. Please subscribe to one of the plans to continue using Qualdo\\u2122.\",\n BUTTON_NAMES.CHOOSE_PLAN]\n }\n\nexport const TEST_CONNECTION_MESSAGES = {\n\"azure_blob\": {'stages': [{'stage': 1, 'name': 'Validate Storage Name', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Secret Key', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Container', 'status': \"in-progress\"}\n ]},\n\"azure_data_lake\": {'stages': [{'stage': 1, 'name': 'Validate Tenant Id', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Client Id', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Client Secret', 'status': \"in-progress\"},\n {'stage': 4, 'name': 'Connect to Bucket', 'status': \"in-progress\"}\n ]},\n\"big_query\": {'stages': [{'stage': 1, 'name': 'Validate Service Account JSON', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate schema Name', 'status': \"in-progress\"}\n ]},\n\"gcs\": {'stages': [{'stage': 1, 'name': 'Validate Json', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Bucket Name', 'status': \"in-progress\"}\n ]},\n\"s3\": {'stages': [{'stage': 1, 'name': 'Validate Access key', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Secret Access key', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Bucket Name', 'status': \"in-progress\"},\n ]},\n\"redshift\": {'stages': [{'stage': 1, 'name': 'Validate Host name', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate User name', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Password', 'status': \"in-progress\"},\n {'stage': 4, 'name': 'Validate Schema Name', 'status': \"in-progress\"},\n {'stage': 5, 'name': 'Validate Table Name', 'status': \"in-progress\"}\n ]}, \n\"snow_flake\": {'stages': [{'stage': 1, 'name': 'Validate Account Name', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Security Credentials', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Database/schema/Table', 'status': \"in-progress\"}\n ]},\n\"postgresql\": {'stages': [{'stage': 1, 'name': 'Validate Host name', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate User name', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Password', 'status': \"in-progress\"},\n {'stage': 4, 'name': 'Validate Schema Name', 'status': \"in-progress\"},\n {'stage': 5, 'name': 'Validate Table Name', 'status': \"in-progress\"}\n ]},\n\"mysql\": {'stages':[{'stage': 1, 'name': 'Validate Host', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Username/Password', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Database/Table', 'status': \"in-progress\"}\n ]},\n\"azure_sql\": {'stages': [{'stage': 1, 'name': 'Validate Host', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Username/Password', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Database/Schema/Table', 'status': \"in-progress\"}\n ]},\n\"gcp_sql\": {'stages': [{'stage': 1, 'name': 'Validate Host', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Username/Password', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Database/Schema/Table', 'status': \"in-progress\"}\n ]},\n\"power_bi_connector\": {'stages': [{'stage': 1, 'name': 'Validate User Name/password', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Workspace', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Database', 'status': \"in-progress\"},\n {'stage': 4, 'name': 'Validate Table Name', 'status': \"in-progress\"},\n ]},\n\"azure_databricks_table\": {'stages': [{'stage': 1, 'name': 'Validate Host', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Token', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Path', 'status': \"in-progress\"},\n {'stage': 4, 'name': 'Validate Catalog/Schema/Table', 'status': \"in-progress\"},\n]},\n\"azure_synapse_ds\": {\n 'stages': [\n {'stage': 1, 'name': 'Validate Host', 'status': \"in-progress\"},\n {'stage': 2, 'name': 'Validate Username/Password', 'status': \"in-progress\"},\n {'stage': 3, 'name': 'Validate Database/Table', 'status': \"in-progress\"}\n ]\n},\n}\n\nexport const DATA_LIMIT_EXCEED = {\n TITLE: \"You are going to exceed your data usage limit\",\n DESCRIPTION: \"For extra data usage you will be charged $52 per 100 GB as part of the next\" +\n \" month billing cycle. To use extra data, please provide us the confirmation for further processing.\"\n}\n\n\nexport const PLAN_ICON_MAPS = {\n \"Starter\": \"plan_starter\",\n \"starter\": \"plan_starter\",\n \"Professional\": \"pricingIcon_professional\",\n \"professional\": \"pricingIcon_professional\",\n \"Free\": \"pricingIcon_free\",\n \"free\": \"pricingIcon_free\"\n}\n\nexport const PLAN_CARD_CLASS_MAPS = {\n \"Starter\": \"card__qualdo-edition your-plan__starter\",\n \"Professional\": \"card__qualdo-edition your-plan__professional\",\n \"Free\": \"card__qualdo-edition your-plan__starter\",\n}\n\nexport const CYCLE_CARD_CLASS_MAPS = {\n \"annually\": \"card__qualdo-edition your-plan__starter\",\n \"monthly\": \"card__qualdo-edition your-plan__professional\",\n \"Free\": \"card__qualdo-edition your-plan__starter\",\n}\n\nexport const CYCLE_ICON_MAPS = {\n \"annually\": \"plan_starter\",\n \"monthly\": \"pricingIcon_professional\",\n \"Free\": \"pricingIcon_free\",\n \"free\": \"pricingIcon_free\"\n}\nexport const NO_ERROR_CHART_COLORS = {\n \"Purple\" : \"#915EF9\",\n \"Green\" : \"#4ED2CC\",\n \"Blue\" : \"#4CA3FF\",\n \"Yellow\" : \"#FFA800\"\n}\n\nexport const NO_ERROR_COLOR_CLASS_MAP = {\n \"#915EF9\" : \"f-16 lh-20 text-purple\",\n \"#4ED2CC\" : \"f-16 lh-20 text-success\",\n \"#4CA3FF\" : \"f-16 lh-20 text-info\",\n \"#FFA800\" : \"f-16 lh-20 text-warning\"\n}\n\nexport const LIGHT_COLOR_MAP = {\n \"#915EF9\" : \"rgba(145, 94, 249, 0.25)\",\n \"#4ED2CC\" : \"rgba(78, 210, 204, 0.25)\",\n \"#4CA3FF\" : \"rgba(76, 163, 255, 0.25)\",\n \"#FFA800\" : \"rgba(255, 168, 0, 0.25)\"\n}\n/*\n * These URLs will be shown only when the user is not logged.\n * When the user is logged in and they are reaching these URLS,\n * we will redirect them to configure page or any other page\n * based on their plan status and plan types\n */\nexport const ACCOUNT_FREE_URLS = [\"/\", \"/signup\", \"/login\", \"/google_signup\"];\n\n\nexport const DEFAULT_CURRENCY_SYMBOL = \"$\";\n\nexport const BOX_PLOT_METRICS = [\"Data Drift\", \"Model Drift\", \"Prediction Drift\", \"Response Drift\", \"Feature Drift\",\n \"Accuracy Drift\"];\n\n\nexport const MEMORY_UNITS = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\nexport const SINGLE_ARROW_CHART_TYPE = \"singleArrowChart\";\n\n\nexport const GENERIC_CONSTANTS = {\n NA: \"NA\",\n}\n\nexport const MONITOR_DQ_LIST_VIEW_HEADERS = [\"Datasource Name\", \"Dataset Name\", \"Attribute Name\", \"DQ Metrics with Issues\", \"Action\"];\nexport const MONITOR_DQP_LIST_VIEW_HEADERS = [\"Datasource Name\", \"Dataset Name\", \"Attribute Name\", \"DQ Metrics\", \"Action\"];\n\nexport const MONITOR_MODEL_ERROR_LIST_VIEW_HEADERS = [\"Model Name\", \"Model Summary\", \"Model Error Summary\", \"Data Quality Issues\", \"Serving Features Drifting\", \"Performance Metrics with Issues\", \"Action\"];\n\nexport const MONITOR_MODEL_PERF_LIST_VIEW_HEADERS = [\"Model Name\", \"Model Summary\",\n \"Model Error Summary\", \"Performance Metrics\", \"Action\"];\n\nexport const MONITOR_PERF_LIST_VIEW = {\n \"Model Accuracy Metrics\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": THUMBNAIL_COLORS.GREEN_VARS\n },\n \"Model Evaluation Metrics\": {\n \"cardBackground\": \"dashboard-stat-purple\", \"textColor\": \"text-purple\",\n \"colorArray\": THUMBNAIL_COLORS.VIOLET_VARS\n\n },\n \"Model Runtime-Profile Metrics\": {\n \"cardBackground\": \"dashboard-stat-warning\", \"textColor\": \"text-warning\",\n \"colorArray\": THUMBNAIL_COLORS.ORANGE_VARS\n },\n \"Model Explainability\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": THUMBNAIL_COLORS.GREEN_VARS\n },\n \"Monitor Error\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": THUMBNAIL_COLORS.RED_VARS\n },\n \"Monitor Data Quality Performance-1\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": THUMBNAIL_COLORS.GREEN_VARS\n },\n \"Monitor Data Quality Performance-2\": {\n \"cardBackground\": \"dashboard-stat-purple\",\n \"textColor\": \"text-purple\",\n \"colorArray\": THUMBNAIL_COLORS.VIOLET_VARS\n\n }\n};\n\nexport const IMAGE_NAMES = {\n ICON_DOWN_RED: \"icon_down_red\",\n ICON_UP_GREEN: \"icon_up_green\",\n};\n\nexport const LIMIT_ABOUT_TO_REACH = \"You are going to breach the current plan’s data limit\";\n\n// This value should be in sync with\n// 'qualdo/qualdo_utils/constants.py' -> MONITOR_RESULTS_PER_PAGE\nexport const MAX_CHARTS_PER_API = 500;\n\n\nlet env = process.env.REACT_APP_CUSTOM_BRAND_LOGO\n\nexport function videoUrl(edition,key){\n if(edition === 'logoDrxLight'){\n return urlDrx[key]\n }\n else{\n return urlMqx[key]\n }\n}\n\nlet urlMqx = {\n \"CONFIGURE_DATA_SOURCE_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/8000d890-ad15-478c-8d3a-1f3c68cfd304/Configure_Datasource_V2.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"CONFIGURE_MODEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/1544efed-780f-4fbd-9281-272cfb7f3174/Configure_Model_V2.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"PIPELINE_CHANNEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/a2ef80ae-6b79-4ae1-ac7e-60186b7c3095/pipeline_channel.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"MONITOR_MODEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/f9b6e10d-14b4-4e6a-8534-92990665a8ec/Model_Monitor_Errors_V4.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"MONITOR_DATA_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/4cc3ecf7-f466-43a4-9bfb-24fc9899345b/Data_Quality_Errors_V3.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"PROFILE_DATA_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/64c1043b-16b7-4448-8a29-274caf21b3cf/Profile_Data.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"PROFILE_MODEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/c23588cb-7ee5-4ba7-84ec-7124ca4dba0e/Profile_Model.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"NOTIFICATION_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/ecaa726f-1f34-420f-8655-1ee2f710dfbb/notification_channel.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"DATA_QUALITY_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/b76b9585-eb57-4360-8d07-f4c807fe5b04/Dataquality_Alert_V2.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"MONITOR_MODEL_PERFORMANCE_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/614797e6-4231-4079-b8b4-863c72e995cb/Model_Monitor_Performance_V3.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n }\n\nlet urlDrx ={\n \"CONFIGURE_DATA_SOURCE_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/bc20d981-8c25-40eb-804b-a7e230f1a9a2/Datasource_Configuration_drx.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"CONFIGURE_MODEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/1544efed-780f-4fbd-9281-272cfb7f3174/Configure_Model_V2.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"PIPELINE_CHANNEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/f264d732-f622-443e-88ba-58c2b61bf525/Pipeline_Alert_drx.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"MONITOR_MODEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/f9b6e10d-14b4-4e6a-8534-92990665a8ec/Model_Monitor_Errors_V4.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"MONITOR_DATA_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/1aa25338-5c3d-4969-b804-6994b16b468b/Monitor_Page_drx.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"PROFILE_DATA_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/7274511c-5496-454d-af61-c11e468cc4e6/Profile_page_drx.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"PROFILE_MODEL_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/c23588cb-7ee5-4ba7-84ec-7124ca4dba0e/Profile_Model.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"NOTIFICATION_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/644583f1-5939-4a4c-816a-b937ebe21d76/Notification_Alert_drx.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"DATA_QUALITY_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/da69415c-3dd9-4787-9f4b-f06796e7ecc6/Alert_Configuration_drx.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n \"MONITOR_MODEL_PERFORMANCE_URL\" : \"https://eastus.av.mk.io/video-prod-media-kind/614797e6-4231-4079-b8b4-863c72e995cb/Model_Monitor_Performance_V3.ism/manifest(format=m3u8-cmaf,encryption=cbc)\",\n }\n\nexport const CONFIGURE_DATA_SOURCE_URL = videoUrl(env,\"CONFIGURE_DATA_SOURCE_URL\")\nexport const CONFIGURE_MODEL_URL = videoUrl(env,\"CONFIGURE_MODEL_URL\")\nexport const PIPELINE_CHANNEL_URL = videoUrl(env,\"PIPELINE_CHANNEL_URL\")\nexport const MONITOR_MODEL_URL = videoUrl(env,\"MONITOR_MODEL_URL\")\nexport const MONITOR_DATA_URL = videoUrl(env,\"MONITOR_DATA_URL\")\nexport const PROFILE_DATA_URL = videoUrl(env,\"PROFILE_DATA_URL\")\nexport const PROFILE_MODEL_URL = videoUrl(env,\"PROFILE_MODEL_URL\")\nexport const NOTIFICATION_URL = videoUrl(env,\"NOTIFICATION_URL\")\nexport const DATA_QUALITY_URL = videoUrl(env,\"DATA_QUALITY_URL\")\nexport const MONITOR_MODEL_PERFORMANCE_URL = videoUrl(env,\"MONITOR_MODEL_PERFORMANCE_URL\")\n\n\nexport const VERSION_FORMATS = {\n \"dd-mm-yyyy\": \"[\\\\d]{1,2}-[\\\\d]{1,2}-[\\\\d]{4}\",\n \"yyyy-mm-dd\": \"[\\\\d]{4}-[\\\\d]{1,2}-[\\\\d]{1,2}\",\n \"dd-mm-yy\": \"[\\\\d]{1,2}-[\\\\d]{1,2}-[\\\\d]{2}\",\n \"yy-mm-dd\": \"[\\\\d]{2}-[\\\\d]{1,2}-[\\\\d]{1,2}\",\n \"ddmmyyyy\": \"[\\\\d]{8}\"\n};\n\n\n\nexport const FILE_TYPE_FORMATS = {\n \"file_replace\" : \"File Replace\",\n \"file_version\" : \"File Version\",\n \"folder_version\" : \"Folder Version\"\n}\n\n\n\nexport const DISPLAY_DATE_FORMAT = 'MMM DD, YYYY';\nexport const MAX_DATA_POINTS_FOR_LIST_VIEW = 30;\nexport const MAX_POINTS_THUMBNAIL = 7;\n\nexport const DISABLE_CHECKBOXES_IN_CARDS = [\"Categorical Encode\", \"Data Type Consistency\",\n \"Normalization Consistency\"]\n\n\n// The following constant should be in sync with \n// qualdo\\compute_engine\\compute_measure\\estimators\\constants.py (DOUBLE_COLON)\nexport const DOUBLE_COLON = \"::\";\n\nexport const SQL_QUERY_DUMMY_PLACE_HOLDER = \"select count(*) from $dataset$ where `attribute1` = 1\";\n\nexport const SQL_QUERY_NOTE_1 = \"In the query, use $dataset$ instead of dataset name.\";\n\nexport const SQL_QUERY_NOTE_2 = `For nested record columns, use \ndouble colon ${DOUBLE_COLON} as separator between parent column and child column.`;\n\n// This count will be used for fetch unread notifications during pre-fetch API call\nexport const MAX_UNREAD_PER_PAGE = 15;\n\n// This count will be used for fetching all notifications during fetch API calls in /notification page.\nexport const MAX_NOTIFICATIONS_PER_PAGE = 500;\n\nexport const IS_NONE_CHECK = [null, undefined];\n\n// give in lower case\nexport const NOT_SORTABLE = [\"summary\", \"profile status\", \"datasets\", \"errors\", \"model summary\",\n \"model error summary\", \"performance metrics\", \"data quality issues\",\n \"serving features drifting\", \"performance metrics with issues\",\n \"dq metrics with issues\", 'action', \"actions\"]\n\n\n// To be in sync with 'qualdo/qualdo_utils/constants.py' => ALLOWED_ML_STACKS\nexport const SUPPORTED_ML_STACK_OPTIONS = [{label: 'Tensor Flow', value: 'TF'}, {label: 'MXNet', value: 'MXNet'},\n {label: 'DataBricks', value: 'DataBricks'}, {label: 'Others', value: 'others'}];\n\n\n// To be in sync with 'qualdo/qualdo_utils/constants.py' => ALLOWED_ML_TYPES\n// and qualdo/compute_engine/compute_measure/estimators/ml_constants.py => SUPPORTED_MODELS\nexport const SUPPORTED_ML_TYPE_OPTIONS = [{label: 'Classification', value: 'classification'},\n {label: 'Regression', value: 'regression'},\n {label: 'Clustering', value: 'clustering'},\n {label: 'Recommendation', value: 'recommendation'}];\n// Removed\n// {label: 'Others', value: 'others'}\n\nexport const SUPPORTED_ML_COLUMN_TYPES = [{label: 'Item', value: 'item'},\n {label: 'Rating', value: 'rating'}];\n\n// To be in sync with 'qualdo/qualdo_utils/constants.py' => ALLOWED_ML_ALGO_TYPES\nexport const SUPPORTED_ML_ALGO_TYPES = [\n {label: 'Content based recommendation system', value: 'Content based recommendation system', type: \"recommendation\"},\n {label: 'Collaborative recommendation system', value: 'Collaborative recommendation system', type: \"recommendation\"},\n {label: 'Logistic Regression', value: 'Logistic Regression', type: \"classification\"},\n {label: 'k-Nearest Neighbors', value: 'k-Nearest Neighbors', type: \"classification\"},\n {label: 'Support Vector Machine', value: 'Support Vector Machine', type: \"classification\"},\n {label: 'Naive Bayes', value: 'Naive Bayes', type: \"classification\"},\n {label: 'Random Forest', value: 'Random Forest', type: \"classification\"},\n {label: 'Gradient Boosting', value: 'Gradient Boosting', type: \"classification\"},\n {label: 'Linear Regression', value: 'Linear Regression', type: \"regression\"},\n {label: 'Tree Regression', value: 'Tree Regression', type: \"regression\"},\n {label: 'GBT Regression', value: 'GBT Regression', type: \"regression\"},\n {label: 'Polynomial Regression', value: 'Polynomial Regression', type: \"regression\"},\n {label: 'Lasso Regression', value: 'Lasso Regression', type: \"regression\"},\n {label: 'K-Means', value: 'K-Means', type: \"clustering\"},\n {label: 'Affinity Propagation', value: 'Affinity Propagation', type: \"clustering\"},\n {label: 'Agglomerative Clustering', value: 'Agglomerative Clustering', type: \"clustering\"},\n {label: 'Spectral Clustering', value: 'Spectral Clustering', type: \"clustering\"},\n {label: 'Mean Shift', value: 'Mean Shift', type: \"clustering\"},\n {label: 'CNN', value: 'CNN', type: \"regression classification\"},\n {label: 'DNN', value: 'DNN', type: \"regression classification\"}\n ];\n//{label: 'Others', value: 'others', type: \"others\"}\n\nexport const QUALITY_PERF_CHART_VIEW = {\n 'drift': {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": [\"#915EF9\", \"#4ED2CC\", \"#4CA3FF\", \"#FFA800\"]\n },\n \"completeness\": {\n \"cardBackground\": \"dashboard-stat-purple\",\n \"textColor\": \"text-purple\",\n \"colorArray\": [ \"#4ED2CC\", \"#4CA3FF\", \"#FFA800\", \"#915EF9\"]\n\n },\n \"uniqueness\":{\n \"cardBackground\": \"dashboard-stat-purple\",\n \"textColor\": \"text-purple\",\n \"colorArray\": [ \"#4ED2CC\", \"#4CA3FF\", \"#FFA800\", \"#915EF9\"]\n\n },\n \"timeliness\": {\n \"cardBackground\": \"dashboard-stat-warning\",\n \"textColor\": \"text-warning\",\n \"colorArray\": [\"#4CA3FF\", \"#FFA800\", \"#915EF9\", \"#4ED2CC\"]\n },\n \"accuracy\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": [\"#FFA800\", \"#915EF9\", \"#4ED2CC\", \"#4CA3FF\"]\n },\n \"conformity\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": [\"#915EF9\", \"#4ED2CC\", \"#4CA3FF\", \"#FFA800\"]\n },\n \"consistency\": {\n \"cardBackground\": \"dashboard-stat-success\",\n \"textColor\": \"text-success\",\n \"colorArray\": [\"#4ED2CC\", \"#4CA3FF\", \"#FFA800\", \"#915EF9\"]\n },\n};\n\nexport const REQUIRES_EXCLAMATION_TRIANGLE_ICON = [\"Datasource Configuration Alert\",\n \"Model Monitoring Metrics Alert\",\n \"Datasets deletion info\", \"No dataset found\", \"Model dataset has null values\"];\n\n\nexport const CONFORMITY_METRIC_KEYS = [\"Credit Card Conformity\", \"Date Conformity\",\n\"Email Conformity\", \"Gender Conformity\", \"Http Conformity\", \"IP Conformity\",\n\"SSN Conformity\", \"URL Conformity\", \"Boolean Conformity\"]\n\nexport const METRICS_INFO = {\n \"rmse\": \"Root Mean Squared Error\",\n \"mae\": \"Mean Absolute Error\",\n \"mean absolute error\": \"It is the arithmetic mean of magnitudes of difference between the prediction of an observation and the true value of that observation.\",\n \"root mean squared error\": \"It is the standard deviation of the residuals (prediction errors).\",\n \"mse\": \"It is the estimator measures the average of the squares of the errors—that is, the average squared difference between the estimated values and the actual value.\",\n \"r2\": \"It is the statistical measure that determines the proportion of variance in the dependent variable that can be explained by the independent variable. In other words, it shows how well the data fit the regression model\",\n \"precision\": \"It is the ratio of correctly predicted positive observations to the total predicted positive observations.\",\n \"mean average precision @k\": \"Precision at k is the proportion of recommended items in the top-k set that are relevant.\",\n \"weighted precision\": \"Weighted mean of precision with weights equal to class probability.\",\n \"f1 score\": \"It is the weighted average of Precision and Recall.\",\n \"Feature Importance\": \"Feature Importance of the attribute\",\n \"weighted f(1) score\": \"Weighted mean of f1-score with weights equal to class probability.\",\n \"accuracy\": \"It is a ratio of correctly predicted observation to the total observations.\",\n \"recall\": \" It is is the ratio of correctly predicted positive observations to the all observations in actual class - yes.\",\n \"mean average recall @k\":\"Recall at k is the proportion of relevant items found in the top-k recommendations.\",\n \"weighted recall\": \"Weighted mean of recall with weights equal to class probability.\",\n \"sensitivity\" : \" It is is the ratio of correctly predicted positive observations to the all observations in actual class - yes.\",\n \"specificity\": \"It is the ratio of correctly predicted negative observations to the all observations in actual class - no.\",\n \"confusion matrix\": \" It is a table with different combinations of predicted and actual values.\",\n \"areaunderpr\": \"It is a singular value that summarizes the precision vs recall curve.\",\n \"areaunderpr error\": \"It is a singular value that summarizes the error of precision vs recall curve.\",\n \"areaunderroc\": \"It is a single scalar value that measures the overall performance of a binary classifier on the positive class.\",\n \"areaunderroc error\": \"It is a single scalar value that measures the error in predictions of the model\",\n \"true positive\": \"These are the correctly predicted positive values which means that the value of actual class is yes and the value of predicted class is also yes.\",\n \"false positive\": \"These are wrongly predicted positives which means when the actual class is no and predicted class is yes.\",\n \"true negative\": \"These are the correctly predicted negative values which means that the value of actual class is no and value of predicted class is also no.\",\n \"false negative\": \"These are wrongly predicted negative values which means the actual class is yes but predicted class in no.\",\n \"spearman correlation coefficient\": \"It is a technique which can be used to discover the strength of a link between actual observation and predicted values. The coefficient closer to +/-1, the stronger the likely correlation.\",\n \"pearson's correlation coefficient\": \"It is a measure of the strength of a linear association between the actual observation and predicted variables. +/-1 indicates strong +/- accosiation.\",\n \"matthews correlation coefficient\": \"It is a measure of the correlation of actual observation with the predicted values. MCC value is always between -1 and 1, with 0 meaning that the prediction value is random w.r.t actual observation.\",\n \"mean_shap_value\": \"SHAP value breacks down the predictions to show the impact of each feature. The collective SHAP values can show how much each feature contributes, either positively or negatively, to the predicted value.\",\n \"calinski harabasz score\": \"It is the ratio of the sum of between-clusters dispersion and of within-cluster dispersion for all clusters.\",\n \"silhouette score\": \"It is the measure of how similar an object is to its own cluster (cohesion) compared to other clusters (separation).\",\n \"davies bouldin score\": \"It is the average similarity measure of each cluster with its most similar cluster, where similarity is the ratio of within-cluster distances to between-cluster distances.\",\n \"fowlkes mallows score\": \"It is the geometric mean between of the precision and recall.\",\n \"homogeneity completeness v-measure score\": \"It is the normalized conditional entropy measures of the clustering labeling to evaluate given the knowledge of a Ground Truth class labels of the same samples.\",\n \"rand score\": \"It is the similarity measure between two clusterings by considering all pairs of samples and counting pairs that are assigned in the same or different clusters in the predicted and true clusterings.\",\n \"normalized mutual info score\": \"It is the score to scale the Mutual Information results between 0 (no mutual information) and 1 (perfect correlation). Mutual Information is a function that measures the agreement of the two assignments, ignoring permutations.\",\n \"adjusted mutual info score\": \"It is the adjustment of the Mutual Information (MI) score to account for chance. Mutual Information is a function that measures the agreement of the two assignments, ignoring permutations.\",\n \"adjusted rand score\": \"It is the Rand Index adjusted for chance. Rand Index is the similarity measure between two clusterings by considering all pairs of samples and counting pairs that are assigned in the same or different clusters in the predicted and true clusterings.\",\n}\n\nexport const K_VALUE_TOOLTIP = \"In the context of recommendation systems we are most likely \" +\n \"interested in recommending top-N items to the user. k is a user definable integer \" +\n \"that is set by the user to match the top-N recommendations objective.\";\n\nexport const USE_SERVING_AS_PREDICTION = \"By checking this, Qualdo uses Serving Dataset as Prediction Data\";\n\n// Delimiter options are used by recommendation models to split data\n// To be in sync with qualdo/qualdo_utils/constants.py -> ALLOWED_DELIMITER_FOR_RECO\nexport const DELIMITER_OPTIONS = [\n {\"label\": \",\", \"value\": \",\"},\n {\"label\": \";\", \"value\": \";\"},\n {\"label\": \"|\", \"value\": \"|\"},\n {\"label\": \"custom\", \"value\": \"custom\"},\n];\n\n\nexport const TABLE_VIEW_CLASS = \"btn btn-sm btn-outline-success mr-1\";\nexport const TABLE_EDIT_CLASS = \"btn btn-sm btn-outline-warning mr-1\";\nexport const TABLE_DELETE_CLASS = \"btn btn-sm btn-outline-danger show-danger-toast mr-1\";\nexport const TABLE_COMP_MODELS_CLASS = \"btn btn-sm btn-outline-purple mr-1\";\n\n\nexport const MODEL_AB_TABLE_HEADERS = [\"Model Name\", \"Model Version\", \"Datasource\",\n \"Environment\", \"Created By\", \"Created Time\", \"Actions\"];\n\nexport const AB_MODELS_TABLE_TITLE = \"CONFIGURED MODELS FOR AB TESTING\";\n\n\nexport const AB_COMPARE_VIEW_TABLE_HEADERS = [\"Model Name\", \"Model Summary\",\n \"Performance Metrics\", \"Action\"];\n\nexport const SUFFIXED_DATE = {\n \"1\": \"st\", \"2\": \"nd\", \"3\": \"rd\"\n};\n\n\nexport const MODEL_AB_COMPARE_SRC = \"model_ab_compare_dc_src\";\n\nexport const INDEX_IN_AB = {1: \"A\", 2: \"B\", 3: \"C\"};\n\nexport const AB_THUMBNAIL_LIMIT = 10;\n\n\n// Has mapping between names in Advanced filter and chart names\nexport const AB_ADVANCE_FILTER_METRIC_NAMES = {\n \"accuracy\": \"Accuracy\",\n \"precisionVsRecall\": \"precision vs recall\",\n \"sensitivityVsSpecificity\": \"Sensitivity vs Specificity\",\n \"weightedRecall\": \"Weighted recall\",\n \"f1score\": \"f1 score\",\n \"weightedF1Score\": \"Weighted F(1) Score\",\n};\n\nexport const DOCUMENT_BASE_LINK = \"https://docs.qualdo.ai/\";\nexport const DOCUMENT_LINK_MAPPING = {\n \"index\": \"index.html\",\n \"data_source\": \"tutorials/datasources.html\",\n \"profile_data\": \"tutorials/profile.html#profile-data\",\n \"profile-data-relationship\": \"tutorials/profile.html#relationship\",\n \"profile-data-completeness\": \"tutorials/profile.html#completeness\",\n \"accuracy\": \"tutorials/profile.html#data-accuracy\",\n \"profile-data-timeliness\": \"tutorials/profile.html#data-timeliness\",\n \"conformity\": \"tutorials/profile.html#conformity\",\n \"profile-data-consistency\": \"tutorials/profile.html#consistency\",\n \"profile-data-uniqueness\": \"tutorials/profile.html#uniqueness\",\n \"profile-data-attribute\": \"tutorials/profile.html#attribute\",\n \"monitor-model-performance\":\"tutorials/insights.html#model-performance\",\n \"monitor-model-errors\": \"tutorials/insights.html#model-errors\",\n \"data-quality-errors\": \"tutorials/insights.html#data-quality-errors\",\n \"data-quality-performance\": \"tutorials/insights.html#data-quality-errors\",\n \"dqErrorListViewTable\": \"tutorials/insights.html#id11\",\n \"modelErrorListViewTable\": \"tutorials/insights.html#id3\",\n \"mpErrorListViewTable\": \"tutorials/insights.html#list-view\",\n \"modelABTestTable\": \"tutorials/insights.html#compare-view\",\n \"mpCompareViewTable\": \"tutorials/insights.html#compare-view\",\n \"requests\": \"account_security.html#join-team\",\n \"invitation\": \"account_security.html#invite-to-team\",\n \"teamMate\": \"account_security.html#team\",\n \"profile-models\": \"tutorials/profile.html#profile-models\",\n \"consume\": \"tutorials/consume.html#notification-channels\",\n \"consume_pipeline\": \"tutorials/consume.html#pipeline-channels\",\n \"alert\": \"tutorials/consume.html#configuring-an-alert\",\n \"metrics\":\"tutorials/metrics.html#custom-metrics\",\n \"datasource\":\"tutorials/datasources.html\",\n \"ml_model\":\"tutorials/model.html\",\n \"billingHistory\":\"account_security.html#billing-payment\",\n \"discover\":\"tutorials/discover.html\"\n }\n\n\nexport const MONITOR_DATA_KEYS = [\"dataFrom\", \"dataTo\", \"data_points_found\", \"filterEndDate\", \"filterStartDate\", \"min_difference\"]\n\nexport const ALERT_TYPE = {\n \"metric_value\": \"Metric value at dataset level\",\n \"metric_attribute_level\": \"Metric value at attribute level\",\n \"drift_value\": \"Drift value at dataset level\",\n \"drift_attribute_level\": \"Drift value at attribute level\",\n};\n\nexport const ABOVE_ALERT_SUPPORTED_TABLES = [\"dqErrorListViewTable\", \"mpCompareViewTable\"];\n\nexport const IAM_SECRET_KEY = process.env.REACT_APP_IAM_DECRYPT_KEY;\n\nexport const ROW_COUNT_NAME = 'Row Count'\n\nexport const POWER_BI_CONNECTOR = 'power_bi_connector'\nexport const AZURE_SYNAPSE_DS_CONNECTOR = 'azure_synapse_ds'\n\n/* Reason why Synapse is not yet ready: \nCurrently Qualdo using its own storage location for Synapse connector which is incorrect. \nWe have to get it from user itself. Thats why it got paused. */\n\nexport const DATA_SOURCE_OPTIONS = [\n {\n \"options\": [{\"label\": \"Azure Blob\", \"value\": 'azure_blob'},\n {\"label\": \"Azure Data Lake\", \"value\": 'azure_data_lake'},\n // {\"label\": \"Azure Synapse\", \"value\": 'azure_synapse_ds'},\n {\"label\": 'Azure SQLServer', \"value\": 'azure_sql'},\n {\"label\": \"Azure Databricks Table\", \"value\": 'azure_databricks_table'},\n ],\n \"label\": \"Azure Connectors\"\n },\n {\n \"options\": [{\"label\": \"AWS S3\", \"value\": 's3'},\n {\"label\": \"AWS Redshift\", \"value\": 'redshift'}],\n \"label\": \"AWS Connectors\"\n },\n {\n \"options\": [{\"label\": \"Google BigQuery\", \"value\": 'big_query'},\n {\"label\": \"GCP SQLServer\", \"value\": 'gcp_sql'},\n {\"label\": \"Google Cloud Storage\", \"value\": \"gcs\"}],\n \"label\": \"GCP Connectors\"\n },\n {\n \"options\": [{\"label\": \"Power bi\", \"value\": POWER_BI_CONNECTOR}],\n \"label\": \"Power Bi Connectors\"\n },\n {\n \"options\": [{\"label\": 'Snowflake', \"value\": 'snowflake'},\n {\"label\": \"Postgres\", \"value\": 'postgresql'},\n {\"label\": \"MySQL\", \"value\": 'mysql'}],\n \"label\": \"Database Connectors\"\n }\n ];\n\nexport const MANAGED_SERVICE_NAME = 'managed_service'\n\nexport const CYCLE ={\n 'annually':\"Annually\",\n 'monthly': \"Monthly\",\n}\n\nexport const CLOUD ={\n \"gcp_brandMark\":\"Google Cloud\",\n \"azure_brandMark\":\"AZURE Cloud\",\n \"aws_brandMark\":\"AWS Cloud\"\n}\n\nexport const GCLOUD = \"GCP\"\nexport const AWS_CLOUD = \"AWS\"\n\nexport const LOCAL_STORE_KEY = \"yek_odlauq\"\n\nexport const QUALDO_DOCUMENTATION = \"Qualdo™ Documentation\"\n\nexport const LOGIN_SOURCE = {\n NORMAL_LOGIN_SRC: 1,\n GOOGLE_LOGIN_SRC: 2,\n MSI_LOGIN_SRC: 3\n};\n\n\nexport const SRC_ATTRIBUTE_COLUMN = \"Source Attribute\";\nexport const DEST_ATTRIBUTE_COLUMN = \"Destination Attribute\";\n\nexport const MODEL_TYPES = {\n BINARY_CLASSIFICATION: \"binary_classification_model\",\n MULTI_CLASS_CLASSIFICATION: \"multi_class_classification_model\",\n CLUSTERING_MODEL_WO_RESPONSE: \"clustering_model_without_response_data\",\n CLUSTERING_MODEL_WITH_RESPONSE: \"clustering_model_with_response_data\",\n REGRESSION: \"regression\",\n RECOMMENDATION: \"recommendation\"\n}\n\n\n// Represent the max allowed sleep time value (in minutes). To be in sync with backend code.\n// qualdo/qualdo_utils/constants.py => MAX_SLEEP_TIME_LIMIT\nexport const MAX_SLEEP_TIME = 10080;\nexport const MAX_SLEEP_ERROR = `You have crossed maximum time limit range,\nPlease set lesser than ${MAX_SLEEP_TIME} minutes`;\nexport const NEG_SLEEP_ERROR = \"Time interval should be a positive number\";\n\n\nexport const FILE_TYPE_OPTIONS = [\n {\"label\":\"delta\", \"value\":\"delta\"},\n\n // Supported file type in Databricks table\n // {\"label\":\"avro\", \"value\":\"avro\"},\n // {\"label\":\"csv\", \"value\":\"csv\"},\n // {\"label\":\"json\", \"value\":\"json\"},\n // {\"label\":\"orc\", \"value\":\"orc\"},\n // {\"label\":\"parquet\", \"value\":\"parquet\"},\n // {\"label\":\"text\", \"value\":\"text\"}\n];\n\n\nexport const WINDOW_METRICS = [\"Row Count\"]\n\nexport const METRIC_SCALE_MAPPING = {\n \"Data Accuracy Errors\":\"%\",\n \"Data Completeness\":\"%\",\n \"Data Timeliness\":\"days\",\n \"Fill Rate\":\"%\",\n \"Row Count\":\"\",\n \"Data Outlier\":\"%\",\n \"Data Outliers\":\"%\",\n \"Recency\":\"days\",\n \"Unique Values\": \"\",\n \"Accuracy Drift\":\"%\",\n \"Data Drift\":\"%\",\n \"Data Type Errors\":\"%\",\n \"Date Conformity Errors\":\"%\",\n \"Email Conformity Errors\":\"%\",\n \"Categorical Encoding Errors\":\"%\",\n \"Categorical Ordinal Errors\":\"%\",\n \"Credit Card Conformity Errors\":\"%\",\n \"Gender Conformity Errors\":\"%\",\n \"Http Conformity Errors\":\"%\",\n \"IP Conformity Errors\":\"%\",\n \"Normalization Consistency Errors\":\"%\",\n \"SSN Conformity Errors\":\"%\",\n \"URL Conformity Errors\":\"%\",\n \"Data Conformity Errors\":\"%\",\n \"Data Type Consistency Errors\":\"%\",\n \"Categorical Consistency Errors\":\"%\",\n \"Boolean Conformity Errors\":\"%\",\n \"Data Type\":\"%\",\n \"Data Type Consistency\":\"%\",\n \"Date Conformity\":\"%\",\n \"Email Conformity\":\"%\",\n \"Categorical Encoding\":\"%\",\n \"Categorical Encode\":\"%\",\n \"Categorical Ordinal\":\"%\",\n \"Credit Card Conformity\":\"%\",\n \"Gender Conformity\":\"%\",\n \"Http Conformity\":\"%\",\n \"IP Conformity\":\"%\",\n \"Normalization Consistency\":\"%\",\n \"SSN Conformity\":\"%\",\n \"URL Conformity\":\"%\",\n \"Data Conformity\":\"%\",\n \"Boolean Conformity\":\"%\",\n\n \"Attribute Fill Rate < 25%\":\"%\",\n \"Attribute Fill Rate 25% to 75%\":\"%\",\n \"Attribute Fill Rate > 75%\":\"%\",\n \"Total number of Rows\":\"\",\n\n \"Feature Drift\":\"%\",\n \"Prediction Drift\":\"%\",\n \"Response Drift\":\"%\",\n \"ML Data Consistency\":\"%\",\n \"Model Drift\":\"%\",\n \"No of Numerical Attributes with Outliers\":\"\",\n \"No of Numerical Attributes without Outliers\":\"\",\n\n\n \"Datasets with Recency < One Day\":\"%\",\n \"Datasets with Recency < One Week\":\"%\",\n \"Datasets with Recency < One Month\":\"%\",\n \"Datasets with Recency > One Month\":\"%\",\n\n \"No. of Datasets having Duplicate\":\"\",\n \"Total no of attributes having duplicate values\":\"\",\n \"Total no of duplicate rows in Datasets\":\"\",\n\n\n\n};\n\nexport const TAB_KEY_MAPPING = {\n \"relationship\":1,\n \"completeness\":2,\n \"accuracy\":3,\n \"timeliness\":4,\n \"conformity\":5,\n \"consistency\":6,\n \"uniqueness\":7,\n \"attribute\":8,\n}\n\nexport const CONSISTENCY_MAPPING = {\n \"Categorical Encode\":\"Categorical Consistency Errors\",\n \"Data Type Consistency\" : \"Data Type Consistency Errors\",\n \"Normalization Consistency\" : \"Normalization Consistency Errors\",\n}\n\nexport const CONSISTENCY_KEY = [\n \"Data Type Consistency\" ,\n \"Normalization Consistency\" ,\n \"Categorical Encode\",\n]\n\nexport const RELATIONSHIP_METRIC_KEYS = [\n \"Data Completeness\" ,\n \"Data Timeliness\" ,\n \"Data Accuracy Errors\",\n \"Data Conformity Errors\",\n \"Data Consistency Errors\"\n]\n\n// Used in Discover page to decide whether to render suggestion or not\n// Reference: https://www.npmjs.com/package/react-autosuggest#shouldrendersuggestions-optional\nexport const SKIP_SUGGESTION_RENDER = ['input-blurred', 'escape-pressed']","import React from 'react';\n\n\nclass Load extends React.Component {\n\n render(){\n return (\n
    \n
    \n Loading...\n
    \n
    \n );\n }\n}\n\nexport default Load;\n\n\n\n","import React from 'react';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCalendar, faCog } from '@fortawesome/free-solid-svg-icons';\nimport RcTooltip from 'rc-tooltip';\nimport VideoContent from './videoContent';\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport { connect } from \"react-redux\";\nimport { setStartDate, setEndDate } from \"../redux/actions\";\nimport {DISPLAY_DATE_FORMAT} from \"../utils/constant\";\n\nconst renderTooltip = (props) => (\n \n Need Help ?\n \n );\n\n const renderTitleToolTip = (props) => (\n \n {props}\n \n );\n\nclass BasicPortlet extends React.Component {\n constructor(props) {\n super(props);\n this.changeSource = this.changeSource.bind(this);\n this.changeModel = this.changeModel.bind(this);\n this.renderTitle = this.renderTitle.bind(this);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.state = {\n showModal: false\n }\n }\n\n handleClick() {\n this.setState({showModal:true});\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n };\n\n\n changeSource(event, obj) {\n let ChartFilter=true\n this.props.changeSource(event.value,ChartFilter);\n }\n\n changeModel(event, obj)\n {\n this.props.handleLoad(true);\n this.props.changeModel(event, this.props.id, this.props.title);\n }\n\n handleTimeFilter(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n let selectedValue = {\"label\":\"\", value:null};\n if (this.props.selectedDataSrc['data_source'] !== undefined && this.props.selectedDataSrc['data_source'] !== null ) {\n selectedValue = this.props.selectedDataSrc[\"data_source\"];\n// this.props.handleLoad(true);\n } else if(this.props.selectedDataSrc['mlmodels'] !== undefined && this.props.selectedDataSrc['mlmodels'] !== null) {\n selectedValue = this.props.selectedDataSrc['mlmodels'];\n }\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.props.changeTime(selectedValue,startDate.format('YYYY-MM-DD 00:00:00'),endDate.format('YYYY-MM-DD 23:59:59') )\n }\n\n renderTitle() {\n let titleToolTip = this.props.titleTooltip;\n \n if (titleToolTip === undefined || titleToolTip === null) {\n return (\n {this.props.title}\n );\n }\n\n return (\n <>\n {\n this.props.titlePrefix !== undefined ?\n {this.props.titlePrefix} :\n ''\n }\n\n }\n >\n {this.props.toolTipHandle}\n \n\n {this.props.shortTitle}\n\n \n\n );\n }\n\n render() {\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n\n\n let srcOption = [];\n if (this.props.srcOption !== null && this.props.srcOption !== undefined) {\n srcOption = this.props.srcOption;\n }\n\n let startDate = this.props.disableTimeFilter ? moment().subtract(0, 'days') : moment(this.props.dataModule.startDate);\n let endDate = this.props.disableTimeFilter ? moment().subtract(0, 'days') : moment(this.props.dataModule.endDate);\n let startDateText = startDate.format(DISPLAY_DATE_FORMAT);\n let endDateText = endDate.format(DISPLAY_DATE_FORMAT);\n let defaultDataSrc = {\"label\":\"\", \"value\":\"\"};\n if (this.props.selectedDataSrc !== null && this.props.selectedDataSrc !== undefined) {\n defaultDataSrc = this.props.selectedDataSrc;\n }\n\n /*if(this.props.selectedDataSrc !== null && this.props.selectedDataSrc !== undefined && this.props.selectedDataSrc.details !== undefined ) {\n startDateText = this.props.selectedDataSrc.details.startDate.split(\" \")[0];\n endDateText = this.props.selectedDataSrc.details.endDate.split(\" \")[0];\n }*/\n\n let defaultMLModel = {\"label\":\"\", \"value\":\"\"};\n\n /*if (this.props.selectedDataSrc !== null && this.props.selectedDataSrc !== undefined) {\n if (this.props.selectedDataSrc.details[\"dropDownDataSrc\"] !== null) {\n defaultDataSrc = this.props.selectedDataSrc.details[\"dropDownDataSrc\"];\n }\n if (this.props.selectedDataSrc.details[\"dropDownMLModel\"] !== null) {\n defaultMLModel = this.props.selectedDataSrc.details[\"dropDownMLModel\"];\n }\n }*/\n return(\n
    \n
    \n
    \n {this.props.id === \"discoverSearch\" && this.props.searchText !== \"\" && this.props.searchText !== undefined ?\n <>{ '\"' + this.props.searchText + '\" '}Search results:\n this.renderTitle()\n }\n {\n this.props.mas_name === \"Data Consistency\" ?\n \n : ''\n }\n
    \n
    \n {\n this.props.showFilter ?\n label.includes(query)}\n className=\"mr-2\"\n classNamePrefix='select-control'\n options={srcOption}\n id={this.props.id !== undefined ? this.props.id + \"ChooseDatasource\" : \"ChooseDatasource\"}\n value = {defaultDataSrc}\n onChange={this.changeSource}\n placeholder=\"Choose Datasource\"\n />\n : ''\n }\n {\n this.props.showModelFilter ?\n label.includes(query)}\n classNamePrefix='select-control'\n options={srcOption}\n value = {defaultMLModel}\n onChange={this.changeModel}\n placeholder=\"Choose Model\"\n />\n : ''\n }\n {\n this.props.showtimeFilter ?\n (this.props.disableTimeFilter ?\n
    \n \n \n \n {startDateText} - {endDateText}\n
    \n :\n <>\n {/*
    */}\n \n \n \n \n {startDateText} - {endDateText}\n \n {/*
    */}\n )\n : ''\n }\n {this.props.showFilter || this.props.showModelFilter || this.props.title === \"Attribute Drifts\" || this.props.showHelpSection ?\n
    \n
    }\n >\n \n \n
    : ''\n }\n {\n this.state.showModal ?\n : \"\"\n }\n
    \n
    \n
    \n {this.props.content}\n
    \n \n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\n\nexport default connect(mapStateToProps, { setStartDate, setEndDate })(BasicPortlet);","export const ADD_METADATA = \"ADD_METADATA\";\nexport const ADD_RELATIONSHIP = \"ADD_RELATIONSHIP\";\nexport const ADD_ML_RELATIONSHIP = \"ADD_ML_RELATIONSHIP\";\nexport const ADD_INFO = \"ADD_INFO\";\nexport const SET_DATA_SOURCE = \"SET_DATA_SOURCE\";\nexport const SET_ML_DATA_SOURCE = \"SET_ML_DATA_SOURCE\";\nexport const SET_CHIP_DATA = \"SET_CHIP_DATA\";\nexport const SET_ML_CHIP_DATA = \"SET_ML_CHIP_DATA\";\nexport const ADD_PROCESSING_STATUS = \"ADD_PROCESSING_STATUS\";\nexport const SET_START_DATE = \"SET_START_DATE\";\nexport const SET_END_DATE = \"SET_END_DATE\";\nexport const SET_FILTERED_DATA = \"SET_FILTERED_DATA\";\nexport const SET_ML_MODEL = \"SET_ML_MODEL\";\nexport const SET_TIME_FILTER = \"SET_TIME_FILTER\";\nexport const ADD_DATA_SOURCE = \"ADD_DATA_SOURCE\";\nexport const ADD_DISCOVERY_STATUS = \"ADD_DISCOVERY_STATUS\";\nexport const ADD_LAST_PROFILING_TIME = \"ADD_LAST_PROFILING_TIME\";\nexport const ADD_ENVIRONMENT = \"ADD_ENVIRONMENT\";\nexport const SET_ENVIRONMENT = \"SET_ENVIRONMENT\";\nexport const ADD_ENVIRONMENT_DATA_SOURCE_MAPPING = \"ADD_ENVIRONMENT_DATA_SOURCE_MAPPING\";\nexport const ADD_DATA_SOURCE_DATA_SET_MAPPING = \"ADD_DATA_SOURCE_DATA_SET_MAPPING\";\nexport const ADD_DATA_SET_ATTRIBUTE_MAPPING = \"ADD_DATA_SET_ATTRIBUTE_MAPPING\";\nexport const SET_TENANT_ID = \"SET_TENANT_ID\";\nexport const SET_INITIAL_VALUES = \"SET_INITIAL_VALUES\";\nexport const SET_DATA_SET = \"SET_DATA_SET\";\nexport const SET_ATTRIBUTE = \"SET_ATTRIBUTE\";\nexport const ADD_MONITOR_PREVIEW = \"ADD_MONITOR_PREVIEW\";\nexport const ADD_DQ_MONITOR_PREVIEW = \"ADD_DQ_MONITOR_PREVIEW\";\nexport const ADD_PERFORMANCE_PREVIEW = \"ADD_PERFORMANCE_PREVIEW\";\nexport const SET_MONITOR_INITIAL_VALUES = \"SET_MONITOR_INITIAL_VALUES\";\nexport const ADD_COMPLETENESS_INFO = \"ADD_COMPLETENESS_INFO\";\nexport const ADD_COMPLETENESS_ATTRIBUTE_INFO = \"ADD_COMPLETENESS_ATTRIBUTE_INFO\";\nexport const ADD_TIMELINESS_INFO = \"ADD_TIMELINESS_INFO\";\nexport const ADD_TIMELINESS_ATTRIBUTE_INFO = \"ADD_TIMELINESS_ATTRIBUTE_INFO\";\nexport const ADD_ACCURACY_INFO = \"ADD_ACCURACY_INFO\";\nexport const ADD_ACCURACY_ATTRIBUTE_INFO = \"ADD_ACCURACY_ATTRIBUTE_INFO\";\nexport const ADD_DRIFT_INFO = \"ADD_DRIFT_INFO\";\nexport const ADD_DRIFT_ATTRIBUTE_INFO = \"ADD_DRIFT_ATTRIBUTE_INFO\";\nexport const ADD_CONFORMITY_INFO = \"ADD_CONFORMITY_INFO\";\nexport const ADD_CONFORMITY_ATTRIBUTE_INFO = \"ADD_CONFORMITY_ATTRIBUTE_INFO\";\nexport const ADD_CONSISTENCY_INFO = \"ADD_CONSISTENCY_INFO\";\nexport const ADD_CONSISTENCY_ATTRIBUTE_INFO = \"ADD_CONSISTENCY_ATTRIBUTE_INFO\";\nexport const ADD_ML_MODEL_MAPPING = \"ADD_ML_MODEL_MAPPING\";\nexport const ADD_ML_MODEL_ATTRIBUTE_INFO = \"ADD_ML_MODEL_ATTRIBUTE_INFO\";\nexport const ADD_ML_MODEL_INFO = \"ADD_ML_MODEL_INFO\";\nexport const ADD_ML_MODEL_PERFORMANCE = \"ADD_ML_MODEL_PERFORMANCE\";\nexport const ADD_ML_MODEL_DETAILS = \"ADD_ML_MODEL_DETAILS\";\nexport const ADD_MONITOR_DQ_LIST_VIEW = \"ADD_MONITOR_DQ_LIST_VIEW\";\nexport const ADD_METRICS = \"ADD_METRICS\";\nexport const USER_NOTIFICATIONS = \"USER_NOTIFICATIONS\";\nexport const MARK_NOTIFICATION_AS_READ = \"MARK_NOTIFICATIONS_AS_READ\";\nexport const REMOVE_NOTIFICATION_FROM_LIST = \"REMOVE_NOTIFICATION_FROM_LIST\";\nexport const ADD_DATASET_VERSIONS = \"ADD_DATASET_VERSIONS\";\nexport const ADD_UNIQUENESS_INFO = \"ADD_UNIQUENESS_INFO\";\nexport const ADD_UNIQUENESS_ATTRIBUTE_INFO = \"ADD_UNIQUENESS_ATTRIBUTE_INFO\";\nexport const ADD_RECENCY_DETAILS = \"ADD_RECENCY_DETAILS\";\nexport const SET_MODEL_AB_LIST = \"SET_MODEL_AB_LIST\";\nexport const ADD_RECENCY_PREVIEW = \"ADD_RECENCY_PREVIEW\";\nexport const ADD_RECENT_HISTORY = \"ADD_RECENT_HISTORY\";\nexport const ADD_DATA_SIZE = \"ADD_DATA_SIZE\";\nexport const ADD_FOLLOW_ATTRIBUTES = \"ADD_FOLLOW_ATTRIBUTES\";\nexport const PREFETCH_MONITOR_STATE = \"PREFETCH_MONITOR_STATE\";\nexport const STORE_IP_DATA = \"STORE_IP_DATA\";\nexport const ADD_METADATA_DETAILS = \"ADD_METADATA_DETAILS\"\nexport const NO_INTEGRATION = \"NO_INTEGRATION\";\nexport const FORM_DATASET_INFO = \"FORM_DATASET_INFO\";\nexport const FORM_LISTVIEW_TABLE_DATA = \"FORM_LISTVIEW_TABLE_DATA\";\nexport const ADD_DATASET_LAST_REFRESH = \"ADD_DATASET_LAST_REFRESH\";\nexport const ADD_DATASOURCE_DISCOVER_PAGE = \"ADD_DATASOURCE_DISCOVER_PAGE\";\n","import _ from 'lodash';\nimport moment from 'moment';\nimport {iam_ip} from \"./ip_details\";\nimport CryptoJS from 'crypto-js';\nimport {Parser} from 'node-sql-parser';\n\nimport {faCheckCircle, faTimesCircle} from '@fortawesome/free-solid-svg-icons';\nimport {\n ATTRIBUTE,\n ATTRIBUTE_LEVEL_ALLOWED_ML_METRICS,\n ATTRIBUTE_LEVEL_MODEL_ERROR_DESCRIPTIONS,\n CHART_TITLE_METRIC_SEPARATOR,\n CHART_TITLE_SEPARATOR,\n chartTypes,\n CONTRIBUTION_KEY,\n DATA_CONSISTENCY,\n DATA_DRIFT,\n DATA_SET,\n DATA_SET_LEVEL_MODEL_ERROR_DESCRIPTIONS,\n DATA_TYPE_CONSISTENCY,\n DATA_TYPE_CONSISTENCY_HEADERS,\n DATASET_LEVEL_ALLOWED_ML_METRICS,\n DateParts,\n DEFAULT_CURRENCY_SYMBOL,\n DEFAULT_ERROR_PRIORITY,\n DEFAULT_METRIC_PRIORITY,\n DEFAULT_ML_METRIC_PRIORITY,\n DQ_CHART_POINTS,\n DQ_MONITOR_SECTIONS,\n DRIFT_PATTERN_TYPES,\n FEATURE_DRIFT,\n FEATURE_DRIFT_ALIAS_GREEN_TEXT,\n FEATURE_DRIFT_ALIAS_RED_TEXT,\n FEATURE_DRIFT_TEMPORAL,\n GENERIC_CONSTANTS,\n getMetaInformationAboutChart,\n IS_NONE_CHECK,\n LIGHT_COLOR_MAP,\n MAX_DATA_POINTS_FOR_LIST_VIEW,\n MEMORY_UNITS,\n METRIC_ALIAS_NAMES,\n metricType,\n MIN_MAX_SCALE,\n ML_ACCURACY_DRIFT,\n ML_BOX_PLOT_LIST,\n ML_DATA_CONSISTENCY,\n ML_FEATURE_KEYS,\n ML_METRIC,\n ML_METRIC_COLOR,\n ML_METRIC_ORDER,\n ML_REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART, MODEL_AB_COMPARE_SRC,\n MODEL_ACCURACY,\n MODEL_DRIFT,\n MODEL_EVALUATION,\n MODEL_MONITOR_PREVIEW_PAGE, MODEL_MONITORING,\n MODEL_PERFORMANCE_AS_MODEL_ERRORS,\n MODEL_PERFORMANCE_COMBINATION_CHART,\n MODEL_PERFORMANCE_DEFAULT_CHART_MAPPING,\n MODEL_PERFORMANCE_GROUPS,\n MODEL_PERFORMANCE_PREVIEW_PAGE,\n MODEL_PERFORMANCE_RESULT_GROUP_MAP,\n modelPerformance,\n MONITOR_PERF_LIST_VIEW,\n NO_DATA_SET_FOUND_TEXT,\n NO_ERROR_CHART_COLORS,\n NON_ERROR_DRIFT_PATTERNS,\n PROTOCOL,\n QualdoPlanCycle,\n QualdoPlanVersions,\n REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART,\n REQUIRES_FILTER,\n SERVING_DATA_DRIFT,\n STATIC_CARDS,\n K_RESULTS,\n COEFFICIENT_VALUES,\n OTHER_ACCURACY_METRIC,\n SUFFIXED_DATE, IAM_SECRET_KEY, DATA_SOURCE_OPTIONS,\n DOCUMENT_LINK_MAPPING,\n CUSTOM_ML_METRIC,\n DEFAULT_ML_METRICS,\n MULTI_LINE_COLORS,\n MODEL_RUNTIME_PROFILE,\n MODEL_EXPLAINABILITY,\n FEATURE_IMPORTANCE,\n MANDATE_RESET_PASSWORD,\n MODEL_TYPES,\n DOUBLE_COLON\n } from './constant';\nimport store from \"../redux/store\";\nimport {setInitialValues, setMonitorInitialValues} from \"../redux/actions\";\nimport React from \"react\";\nimport NoErrorComponent from \"../monitor/components/monitorNoResult\";\nimport {LazyLoadComponent} from \"react-lazy-load-image-component\";\nimport Load from \"../components/loadAction\";\nimport ChartFilterHeader from \"../monitor/components/chartFilterHeader\";\nimport {getDateObject} from \"../charts/browser_utils\";\nimport {\n attributeNameFromMappedValue,\n normalizeAttributeName,\n datasetNameFromMappedValue,\n METADATA_MAP_VALUE_SEPARATOR,\n METADATA_MAP_KEY_SEPARATOR,\n STRUCT_SEPARATOR,\n QUALDO_ATTRIBUTE_SEPARATOR, \n FQ_TOOLTIP_PLACEHOLDER,\n normalizeChildDatasetName,\n QUALDO_CHILD_DATASET_SEPARATOR\n} from \"./attribute_name_utils\";\n\nconst metricsNameKeyObj = {\n \"completeness\": \"Data Completeness\",\n \"uniqueness\": \"Data Uniqueness\",\n \"timeliness\": \"Data Timeliness\",\n \"accuracy\": \"Data Accuracy\",\n \"integrity\": \"Data Integrity\",\n \"standardisation\": \"Data Consistency\",\n \"conformity\": \"Data Conformity\",\n \"feature\": \"Model Feature\",\n \"modelPrediction\": \"Model Prediction\",\n \"businessResponse\": \"Business response\",\n \"modelAccuracy\": \"Model Accuracy\",\n \"ml_model\": \"ML Model\"\n};\n\nconst cachedLocalData = {};\n\nexport const helpContent = {\n\"aws\": ['Sign in to the AWS Management Console \\n as an IAM user. ',\n 'In the navigation bar on the upper \\n right, choose your user name \\n and then choose My Security Credentials.',\n 'Choose AWS IAM credentials, Create\\n access key and provide the same for \\n Access Key.',\n \"If configuring the files from the root folder, \\n leave ‘Sub Path’ as empty. Don’t specify \\n ‘/' or ‘*' in the 'Sub Path’.\",\n 'When prompted, choose Download .csv\\n file or Show secret access key. This \\n is your only opportunity to save your \\n secret access key. Copy the secret access\\n key somewhere handy. Provide the same for \\n Secret Access Key.',\"Choose appropriate Refresh Type.\",\"In the Refresh Format field, provide the\\n format string that will be used to identify the\\n refreshed dataset. This is applicable for \\n 'File/Folder Version' Refresh type.\",\n \"In Refresh Format Occurrence field, provide the\\n occurrence of the refresh format string in the filename. \\nThe default value is 'prefix'. \"],\n\"redshift\": [\"Ensure you have a running Redshift instance.\",\n \"Keep the required inputs like Redshift host URL/IP, Username, Password etc ready\",\n \"Please note that while entering URL/IP do not enter the port number.\",\n \"In the Incremental Data Identifier field, enter the attribute name which has to be tracked to identify the refreshed data. The attribute has to be in *timestamp* format.\",\n \"In Refresh Format Occurrence field, provide the\\n occurrence of the refresh format string in the filename. \\nThe default value is 'prefix'. \"],\n\"big_query\": [\"Login to Google Cloud Platform console. In the left side navigation panel, click Service Accounts from IAM & Admin.\",\n \"Look for the service account you want to generate JSON key, click *three vertical dots under Actions in that row.\",\n \"Click Create Key and choose JSON in Key type.\",\"Click Create to generate and download the JSON key file.\",\"Provide BigQuery Admin role to the service account.\",\n \"In the \\\"Schema\\\" field enter the name of a Dataset in BigQuery.\",\n \"In the \\\"Dataset\\\" field enter the name of a table in BigQuery.\",\n \"In the Incremental Data Identifier field, enter the attribute name which has to be tracked to identify the refreshed data. The attribute has to be in *timestamp* format.\"],\n\"azure_blob\": [\"Navigate to the Azure portal\",\"Locate your storage account\",\n \"Under Settings, select Access keys\", \"Find the Key value under key1\",\n \"Copy button to copy the account key\", \"Paste the key into blob secret. \",\n \"If configuring the files from the root folder, \\n leave ‘Sub Path’ as empty. Don’t specify \\n ‘/' or ‘*' in the 'Sub Path’.\",\n \"Choose appropriate Refresh Type.\",\"In the Refresh Format field, provide the\\n format string that will be used to identify the\\n refreshed dataset. This is applicable for \\n 'File/Folder Version' Refresh type.\",\n \"In Refresh Format Occurrence field, provide the\\n occurrence of the refresh format string in the filename. \\nThe default value is 'prefix'. \"],\n\"azure_synapse_ds\": [\"Sign in to the Azure portal and go to the Synapse service.\",\n \"For host url, go to your azure synapse analytics in azure portal. In the overview you can see “Dedicated SQL endpoint” copy that url.\",\n \"Keep the required inputs like \\n host URL/IP, Username, \\n Password etc ready.\",\n \"Please note that while entering URL/IP \\n do not enter the port number.\",\n \"In the Incremental Data Identifier field,\\n enter the attribute name which has to be tracked\\n to identify the refreshed data.\\n The attribute has to be in *timestamp* format.\\n\"],\n\"azure_data_lake\": [\"Login to Azure Portal. In the sidenav,\\n click Azure Active Directory\",\n \"From App registrations in Azure AD,\\n select your application.\",\n \"Copy the Directory (tenant) ID and\\n store it somewhere handy to input for ADL\\n Tenant ID.\",\n \"Copy the Application ID and store \\n it somewhere handy to input for ADL\\n client ID.\",\n \"Select Certificates & secrets.\",\n \"If configuring the files from the root folder, \\n leave ‘Sub Path’ as empty. Don’t specify \\n ‘/' or ‘*' in the 'Sub Path’.\",\n \"Select Client secrets -> New client\\n secret.\",\n \"Provide a description of the secret,\\n and a duration.When done, select Add.\",\n \"After saving the client secret,\\n the value of the client secret is \\n displayed. Copy this value because you\\n won’t be able to retrieve the key later.\\n Provide the same for ADL Secret key. \",\n \"Choose appropriate Refresh Type.\",\"In the Refresh Format field, provide the\\n format string that will be used to identify the\\n refreshed dataset. This is applicable for \\n 'File/Folder Version' Refresh type.\",\n \"In Refresh Format Occurrence field, provide the\\n occurrence of the refresh format string in the filename. \\nThe default value is 'prefix'. \"],\n\"snowflake\": [\"Ensure you have ACCOUNTADMIN role \\n privileges in Snowflake, OR privileges\\n equivalent to the SECURITYADMIN \\n and SYSADMIN roles.\",\n \"Keep the required inputs like \\n Snowflake account URL, Username, \\n Password etc ready.\",\n 'Please note that while entering URL,\\n entering the http:// or https:// \\n portion of the URL will prevent \\n a successful connection.\\n Example value is \\n \"xy12345.east-us-2.azure.snowflakecomputing.com\".',\n \"In the Incremental Data Identifier field,\\n enter the attribute name which has to be tracked\\n to identify the refreshed data.\\n The attribute has to be in *timestamp* format.\\n\"],\n\"postgresql\": [\"Ensure you have a running Postgres \\n instance.\",\n \"Keep the required inputs like \\n Postgres host URL/IP, Username, \\n Password etc ready\",\n \"Please note that while entering URL/IP \\n do not enter the port number.\",\n \"In the Incremental Data Identifier field,\\n enter the attribute name which has to be tracked\\n to identify the refreshed data.\\n The attribute has to be in *timestamp* format.\\n\"],\n \"mysql\": [\"Ensure you have a running MySQL \\n instance.\",\n \"Keep the required inputs like \\n MySQL host URL/IP, Username, \\n Password etc ready.\",\n \"Please note that while entering URL/IP \\n do not enter the port number.\",\n \"In the Incremental Data Identifier field,\\n enter the attribute name which has to be tracked\\n to identify the refreshed data.\\n The attribute has to be in *timestamp* format.\\n\"],\n \"azure_sql\": [\"Ensure you have a running Azure \\n SQLServer instance.\",\n \"Keep the required inputs like \\n SQL Server host URL/IP, Username, \\n Password etc ready.\",\n \"Please note that while entering URL/IP \\n do not enter the port number.\\n Example value is \\n xy12345.database.windows.net\",\n \"In the Incremental Data Identifier field,\\n enter the attribute name which has to be tracked\\n to identify the refreshed data.\\n The attribute has to be in *timestamp* format.\\n\"],\n \"gcp_sql\": [\"Login to Google Cloud Platform console. In the left side navigation panel, click Service Accounts from IAM & Admin.\",\n \"Look for the service account you want to generate JSON key, click *three vertical dots under Actions in that row.\",\n \"Click Create Key and choose JSON in Key type.\",\"Click Create to generate and download the JSON key file.\",\n \"Provide Storage Object Admin role to the service account.\",\"If configuring the files from the root folder, leave ‘Sub Path’ as empty. Don’t specify ‘/' or ‘*' in the 'Sub Path’.\",\n \"Choose appropriate Refresh Type.\",\"In the Refresh Format field, provide the format string that will be used to identify the refreshed dataset. This is applicable for 'File/Folder Version' Refresh type.\",\n \"In Refresh Format Occurrence field, provide the occurrence of the refresh format string in the filename. The default value is 'prefix'.\"\n ],\n\"gcs\": [\"Login to Google Cloud Platform console. In the left side navigation panel, click Service Accounts from IAM & Admin.\",\n \"Look for the service account you want to generate JSON key, click *three vertical dots under Actions in that row.\",\n \"Click Create Key and choose JSON in Key type.\",\"Click Create to generate and download the JSON key file.\",\n \"Provide BigQuery Admin role to the service account.\",\n \"If configuring the files from the root folder, leave ‘Sub Path’ as empty. Don’t specify ‘/' or ‘*' in the 'Sub Path’.\",\n \"Choose appropriate Refresh Type.\",\n \"In the Refresh Format field, provide the format string that will be used to identify the refreshed dataset.This is applicable for 'File/Folder Version' Refresh type.\",\n \"In the Refresh Format Occurrence field, provide the occurrence of the refresh format string in the filename. The default value is 'prefix'. \",\n],\n\"azure_databricks_table\": [\n 'Login to Databricks Workspace.',\n 'To generate access token, go to \"User Settings\". Click on \"Access tokens\". Click on \"GENERATE NEW TOKEN\". Copy and save the token as this will not be visible again. Use this token as input for \"Databricks Access token\". You can also use a previously generated access token.',\n 'To add Databricks Cluster as a Datasource:',\n ' a. Click on \"Compute\" in the sidebar. Select the required cluster.', \n ' b. Click on \"Advanced options\". Select JDBC/ODBC.', \n ' c. Copy and save the details in \"Server Hostname\". This will be used as the input for \"Databricks URL\".',\n ' d. Copy and save the details in \"HTTP Path\" . This will be used as input for \"Databricks HTTP Path\".',\n 'To add SQL Warehouse as a Datasource:',\n ' a. Click on \"SQL Warehouses\" in the sidebar. Select the required warehouse.',\n ' b. Click on \"Connection details\".',\n ' c. Copy and save the details in \"Server Hostname\". This will be used as the input for \"Databricks URL\".',\n ' d. Copy and save the details in \"HTTP Path\" . This will be used as input for \"Databricks HTTP Path\".',\n 'Click on Data in sidebar to get Catalog/Schema/Table details.',\n ''\n ]\n}\n\n\nexport function list_comparison_without_order(set_1, set_2) {\n if (set_1.length !== set_2.length) {\n return false;\n }\n for (const a of set_1) if (!set_2.includes(a)) return false;\n\n return true;\n}\n\n\nexport function roundOffResult(inputVal, decimalPoints=4){\n if (IS_NONE_CHECK.includes(inputVal) || inputVal === \"\") {\n return inputVal\n }\n\n try{\n if(inputVal % 1 !== 0) {\n return parseFloat(String(inputVal)).toFixed(decimalPoints);\n }\n else {\n return parseFloat(String(inputVal));\n }\n } \n catch {\n return inputVal\n }\n}\n\nexport const toastObj = {\n \"alert-success\": {\n \"className\": \"toast floating-top-toast toast-success\",\n \"icon\": faCheckCircle,\n \"heading\": \"Success!\"\n },\n \"alert-danger\": {\"className\": \"toast floating-top-toast toast-danger\", \"icon\": faTimesCircle, \"heading\": \"Error!\"},\n \"alert-info\": {\"className\": \"toast floating-top-toast toast-info\", \"icon\": faTimesCircle, \"heading\": \"Info!\"},\n \"alert-warning\": {\"className\": \"toast floating-top-toast toast-warning\", \"icon\": faTimesCircle, \"heading\": \"Warning!\"}\n};\n\nexport function getSelectedModel(dataSource, models) {\n let mlModels = [];\n for(let m in models) {\n let model = models[m];\n if(model.integration_id === dataSource.value) {\n mlModels.push({\"label\": model.model_name, \"value\": model.ml_model_id});\n }\n }\n if (mlModels.length === 0) {\n return null;\n }\n return mlModels;\n}\n\nexport function getTrimmedData(data) {\n if (data === undefined || data === null) {\n return data;\n }\n\n if (typeof data !== \"string\"){\n return data;\n }\n\n return String(data).trim();\n}\n\nexport function profileTableData(inputData, key) {\n let headers = [\"Dataset Name\", \"Attribute Name\", \"Metric Name\", \"Date\", \"Check Name\", \"Value\"];\n let finalOp = [];\n let selectedTabName = metricsNameKeyObj[key];\n for (let i of inputData) {\n let d = inputData[i];\n if (key === \"relationship\") {\n let metricsList = d['payload']['computed_measures']\n for (let j of metricsList) {\n let attribute = metricsList[j];\n let row = [];\n row.push({\"value\": d[\"data_set_name\"], \"type\": \"td\"})\n row.push({\"value\": attribute[\"attribute_name\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"measure_name\"], \"type\": \"td\"});\n row.push({\"value\": d[\"payload_created_time\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"check\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"value\"], \"type\": \"td\"});\n finalOp.push(row);\n }\n } else if (d[\"mas_name\"] === selectedTabName) {\n let metricsList = d['payload']['computed_measures']\n for (let j in metricsList) {\n let attribute = metricsList[j];\n let row = [];\n row.push({\"value\": d[\"data_set_name\"], \"type\": \"td\"})\n row.push({\"value\": attribute[\"attribute_name\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"measure_name\"], \"type\": \"td\"});\n row.push({\"value\": d[\"payload_created_time\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"check\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"value\"], \"type\": \"td\"});\n finalOp.push(row);\n }\n }\n }\n\n let tableData = {\"headers\": headers, \"data\": finalOp};\n return tableData;\n}\n\n//function getRecentData(i, contribution) {\n// let d = contribution[i];\n// if(d.length > 0 || i === 0 ) {\n// return d;\n// } else {\n// let ans = getRecentData(i-1, contribution);\n// return ans;\n// }\n// }\n\n\nexport function profileMlTableData(inputData, key) {\n let headers = [\"Model Name\",\"Dataset Name\", \"Attribute Name\", \"Date\", \"Value\"];\n let finalOp = [];\n for (let i in inputData) {\n let d = inputData[i];\n let metricsList = d[\"payload\"][\"computed_measures\"];\n for (let j in metricsList) {\n let attribute = metricsList[j];\n let row = [];\n row.push({\"value\": d[\"model_name\"], \"type\": \"td\"});\n row.push({\"value\": d[\"data_set_name\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"attribute_name\"], \"type\": \"td\"});\n row.push({\"value\": d[\"payload_created_time\"], \"type\": \"td\"});\n //row.push({\"value\": attribute[\"check\"], \"type\": \"td\"});\n row.push({\"value\": attribute[\"value\"], \"type\": \"td\"});\n finalOp.push(row);\n }\n }\n\n let tableData = {\"headers\": headers, \"data\": finalOp};\n return tableData;\n}\n\nexport function chartFilterTable(inputData) {\n let headers = [\"Date\", \"Attribute Name\", \" Contribution\"];\n let finalOp = [];\n let time = inputData[\"time\"];\n let contribution = inputData[\"contribution\"];\n if (time === undefined || contribution === undefined) {\n return {\"headers\": headers, \"data\": finalOp};\n }\n\n let contributionCount = contribution.length;\n if (time.length === 0 || contributionCount === 0) {\n return {\"headers\": headers, \"data\": finalOp};\n }\n\n let metricName = inputData.name;\n let showDataTypeDifferences = (metricName === DATA_TYPE_CONSISTENCY ||\n metricName === ML_DATA_CONSISTENCY);\n if (showDataTypeDifferences){\n headers = DATA_TYPE_CONSISTENCY_HEADERS[metricName];\n }\n\n let recent_time = time[time.length - 1];\n\n for (const contribute_data of contribution) {\n if (contribute_data === undefined || contribute_data === null) {\n continue;\n }\n\n let timeValue;\n if (contribute_data[\"time\"] === undefined) {\n timeValue = recent_time;\n } else {\n timeValue = contribute_data[\"time\"];\n }\n\n let reqAttributeName = contribute_data[\"attribute_name\"];\n reqAttributeName = normalizeAttributeName(reqAttributeName);\n\n let row = [];\n if (showDataTypeDifferences) {\n let targetDS = contribute_data.target_data_set_name;\n if (targetDS === undefined || targetDS === null) {\n continue;\n }\n\n let matchColumn = contribute_data.match_column;\n if (matchColumn === undefined || matchColumn === null) {\n matchColumn = ``;\n }\n\n row.push({\"value\": timeValue, \"type\": \"td\"});\n\n row.push({\"value\": reqAttributeName, \"type\": \"td\"});\n row.push({\"value\": contribute_data.data_type, \"type\": \"td\"});\n let referenceDataType = contribute_data.reference_data_type;\n if (referenceDataType === undefined || referenceDataType === null){\n referenceDataType = ``;\n }\n\n row.push({\"value\": referenceDataType, \"type\": \"td\"});\n } else {\n row.push({\"value\": timeValue, \"type\": \"td\"});\n row.push({\"value\": reqAttributeName, \"type\": \"td\"});\n row.push({\"value\": contribute_data[\"value\"].toFixed(2), \"type\": \"td\"});\n }\n\n finalOp.push(row);\n }\n\n let tableData = {\"headers\": headers, \"data\": finalOp};\n return tableData;\n}\n\nexport function updateChartDataErrorType(r) {\n let driftLevels = r[\"drift_level\"];\n let type = false;\n if (driftLevels !== undefined) {\n type = driftLevels.every(v => v === \"NO_DRIFT\");\n }\n\n if (type) {\n r[\"chart_head\"] = \"No Errors\";\n r[\"type\"] = \"success\";\n }\n else {\n let driftPatterns = r[\"drift_pattern\"];\n let charHeadText;\n if (driftPatterns !== undefined) {\n // let drifts = driftPatterns.filter(v => v !== \"not_computed\");\n let drifts = driftPatterns.filter(v => v === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT);\n let driftsFound = drifts.length > 0;\n if (driftsFound) {\n charHeadText = \"Found \" + drifts[drifts.length - 1] + \" Drift\";\n }\n else {\n charHeadText = \"Found Data Errors\";\n r[\"chart_head\"] = \"No Errors\";\n r[\"type\"] = \"success\";\n return;\n }\n } else {\n charHeadText = \"Found Model Errors\";\n }\n\n r[\"chart_head\"] = charHeadText;\n r[\"type\"] = \"error\";\n }\n}\n\nexport function updateChartData(data, dataSource=null, computeTitle=true) {\n let values = data.map(function (r) {\n if (computeTitle) {\n r[\"chartTitle\"] = getChartTitleBasedOnData(r, dataSource);\n }\n updateChartDataErrorType(r);\n return r;\n });\n return values;\n}\n\nexport function getSortedBasedOnError(data) {\n return data.sort(function (a, b) {\n const chartTypeA = a[\"type\"];\n const chartTypeB = b[\"type\"];\n if (chartTypeA === \"success\" && chartTypeB !== \"success\") {\n // B result should be listed first . BEFORE A. So return 1\n return 1;\n }\n else if (chartTypeA !== \"success\" && chartTypeB === \"success\") {\n // A result should be listed first. BEFORE B. So return -1\n return -1;\n }\n return 0;\n });\n}\n\nexport function getModelPerformanceCharts(data) {\n let timeList = [];\n let valueList = [];\n let drift_patterns = [];\n\n // Error list contains error history for the particular model performance chart\n let errorList = [];\n\n let dataLength = data.length;\n if (dataLength === 0) {\n return {\n \"time\": timeList,\n \"drift\": valueList,\n \"drift_patterns\": drift_patterns\n };\n }\n\n let firstData = data[0];\n\n let multipleComponents = [];\n let componentsLength = firstData.components;\n if (componentsLength !== undefined) {\n for (let i = 1; i < componentsLength; i++) {\n multipleComponents.push([]);\n }\n }\n\n for (let i = 0; i < dataLength; i++) {\n let datum = data[i];\n\n let x_value;\n x_value = datum.payload_created_time;\n let _payload = datum.payload;\n if (_payload.feature_imp_val !== undefined){\n valueList.push(_payload.feature_imp_val);\n }else{\n valueList.push(_payload.value);\n }\n let current_drift_pattern = _payload.drift_pattern;\n\n if (current_drift_pattern === undefined || current_drift_pattern === null){\n current_drift_pattern = DRIFT_PATTERN_TYPES.NO_DRIFT;\n }\n\n let thresholdErrorData = _payload.error;\n if (thresholdErrorData !== undefined && thresholdErrorData !== null) {\n current_drift_pattern = DRIFT_PATTERN_TYPES.THRESHOLD_ALERT;\n }\n\n drift_patterns.push(current_drift_pattern);\n errorList.push(_payload.error);\n timeList.push(x_value);\n\n if (componentsLength !== undefined) {\n for (let i = 0; i < multipleComponents.length; i++) {\n let y_val_i = _payload[`value_${i + 1}`]\n multipleComponents[i].push(y_val_i);\n }\n }\n }\n\n let pointsData = {\n \"time\": timeList,\n \"drift\": valueList,\n \"errorList\": errorList,\n \"drift_patterns\": drift_patterns\n };\n\n if (componentsLength !== undefined) {\n for (let i = 0; i < multipleComponents.length; i++) {\n pointsData[`y${i + 1}`] = multipleComponents[i];\n }\n }\n return pointsData;\n}\nexport function getModelMultipleLineData(chartData){\n let data = chartData.drift;\n let line1 = [];\n let line2 = [];\n let line3 = [];\n\n for (let i = 0; i < data.length; i++){\n line1.push(data[i][0]);\n line2.push(data[i][1]);\n line3.push(data[i][2]);\n }\n let lineData = {\"line1\": line1, \"line2\": line2, \"line3\": line3};\n return lineData;\n}\n\nexport function getModelPerformanceChartType(chartData, chartName) {\n let chartType = undefined;\n let values = chartData.drift;\n if (values === undefined || values === null) {\n return chartType;\n }\n\n let totalValues = values.length;\n let totalZeroValues = values.filter(x => x === 0).length;\n if (totalValues === totalZeroValues) {\n chartType = `areaChart`;\n } else{\n chartType = MODEL_PERFORMANCE_DEFAULT_CHART_MAPPING[chartName];\n }\n\n return chartType;\n}\n\n\nexport function getGroupedData(fullScreenData, selectedMLModel, ignoreModelIDFilter=true) {\n const emptyGroupedData = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n let selectedMLModelId = null;\n if (selectedMLModel !== undefined && selectedMLModel !== null) {\n selectedMLModelId = selectedMLModel['value'];\n }\n\n if (ignoreModelIDFilter && selectedMLModelId === null) {\n return emptyGroupedData;\n }\n\n if (fullScreenData === undefined || fullScreenData === null) {\n return emptyGroupedData;\n }\n\n let groupedData = {};\n let mappedData = {};\n for (let data of fullScreenData) {\n let mlModelId = data.ml_model_id;\n if (ignoreModelIDFilter && String(selectedMLModelId) !== String(mlModelId)) {\n continue;\n }\n\n // let modelName = this.props.monitorModule.mlModelMapping[mlModelId];\n let reqGroup = mappedData[mlModelId];\n if (reqGroup === undefined) {\n // Create a new group for the current ML Model\n reqGroup = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n for (let _key of Object.keys(reqGroup)) {\n let value = reqGroup[_key];\n groupedData[`${_key}_${mlModelId}`] = value;\n // value['header'] = `${value['header']} - ${modelName}`;\n value['header'] = `${value['header']}`;\n }\n\n mappedData[mlModelId] = reqGroup;\n }\n\n let performanceMetricName = data.name;\n let groupName = MODEL_PERFORMANCE_RESULT_GROUP_MAP[performanceMetricName];\n if (groupName === undefined) {\n groupName = MODEL_ACCURACY\n }\n\n let group = reqGroup[groupName];\n if (group === undefined) {\n continue;\n }\n\n group.data.push(data);\n }\n\n if (Object.keys(groupedData).length === 0) {\n return emptyGroupedData;\n }\n\n return groupedData;\n}\n\nexport function reorderModelPerformanceResults(accuracyResults){\n if (accuracyResults.length > 0) {\n let k_results = accuracyResults.filter(chart => K_RESULTS.includes(chart.name))\n let cc_charts = accuracyResults.filter(chart => COEFFICIENT_VALUES.includes(chart.name))\n let other_charts = accuracyResults.filter(chart => OTHER_ACCURACY_METRIC.includes(chart.name))\n let result = k_results.concat(other_charts).concat(cc_charts);\n\n if (accuracyResults.length > result.length){\n let recommendation_charts = K_RESULTS.concat(COEFFICIENT_VALUES).concat(OTHER_ACCURACY_METRIC);\n let otherModelMetrics = accuracyResults.filter(chart => !recommendation_charts.includes(chart.name))\n result = result.concat(otherModelMetrics)\n }\n return result;\n } else {\n return accuracyResults\n }\n}\n\nexport function getGroupedDataListView(selectedMetrics, fullScreenData, selectedMLModel, ignoreModelIDFilter=true) {\n const emptyGroupedData = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n if (fullScreenData === undefined || fullScreenData === null) {\n return emptyGroupedData;\n }\n\n let groupedData = {};\n let mappedData = {};\n let reqGroup = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n for (let _key of Object.keys(reqGroup)) {\n let value = reqGroup[_key];\n groupedData[`${_key}`] = value;\n value['header'] = `${value['header']}`;\n }\n for (let data of fullScreenData) {\n let mlModelId = data.ml_model_id;\n\n let filtered = selectedMLModel.filter(x=>Number(x.value) === Number(mlModelId))\n if (filtered.length === 0) {\n continue;\n }\n\n\n if(selectedMetrics.length !== 0){\n let filteredMetrics = selectedMetrics.filter(x=>(x.label.toLowerCase() === data.name.toLowerCase() || x.value === data.name || x.value === data.filter_name))\n if(filteredMetrics.length === 0) {\n continue;\n }\n }\n\n mappedData[mlModelId] = reqGroup;\n\n let performanceMetricName = data.name;\n let groupName = MODEL_PERFORMANCE_RESULT_GROUP_MAP[performanceMetricName];\n if (groupName === undefined) {\n groupName = MODEL_ACCURACY\n }\n\n let group = reqGroup[groupName];\n if (group === undefined) {\n continue;\n }\n\n group.data.push(data);\n }\n\n if (Object.keys(groupedData).length === 0) {\n return emptyGroupedData;\n }\n\n if (groupedData[MODEL_ACCURACY] !== undefined &&\n groupedData[MODEL_ACCURACY].data !== undefined &&\n groupedData[MODEL_ACCURACY].data.length > 0 ){\n // reorder charts\n let accuracyResults = reorderModelPerformanceResults(groupedData[MODEL_ACCURACY].data);\n groupedData[MODEL_ACCURACY].data = accuracyResults;\n }\n\n return groupedData;\n}\n\n\nfunction fill_empty_with_zero(expected_labels, actual_labels, values){\n let final = []\n let empty_rows_index = []\n for (let a of values){\n for (let e of expected_labels){\n if (!actual_labels.includes(e)){\n a.splice(expected_labels.indexOf(e), 0, 0);\n }\n }\n final.push(a);\n }\n\n for(let e of expected_labels){\n if(!actual_labels.includes(e)){\n let new_row = new Array(expected_labels.length).fill(0);\n if (!empty_rows_index.includes(expected_labels.indexOf(e))) {\n final.splice(expected_labels.indexOf(e), 0, new_row)\n empty_rows_index.push(expected_labels.indexOf(e))\n }\n }\n }\n return final\n}\n\nfunction get_aggregated_confusion_matrix(label_values_final, res){\n let agg_matrix = [];\n let label_count = label_values_final.length;\n for(let i=0; i < label_count; i++) {\n let row = new Array(label_count).fill(0);\n agg_matrix.push(row)\n }\n\n for(let result of res){\n let values = result[\"payload\"][\"value\"]\n values = fill_empty_with_zero(label_values_final, result[\"label_values\"], values)\n for(let i=0; i < label_count; i++){\n for(let j=0; j < label_count; j++){\n try{\n agg_matrix[i][j] = agg_matrix[i][j] + values[i][j]\n }\n catch{\n agg_matrix[i][j] = agg_matrix[i][j] + 0\n }\n }\n }\n }\n\n return agg_matrix\n}\n\nexport function setModelPerformanceTimeFilter(data, startDate, endDate){\n let all_details = data[\"all_details\"];\n let filteredList = [];\n for(let d of all_details){\n let timeObj = new Date(d[\"payload_created_time\"]);\n const parsedDate = moment(timeObj);\n if(parsedDate.isSameOrAfter(startDate) && parsedDate.isSameOrBefore(endDate)) {\n filteredList.push(d);\n }\n }\n let label_values_final = [];\n for(let result of filteredList){\n let labels = result[\"label_values\"];\n label_values_final.push(...labels);\n\n }\n let setFinalValue = new Set(label_values_final);\n let sortedList = Array.from(setFinalValue);\n// let sortedList = array.sort();\n\n if(sortedList.length > 0){\n// let first_confusion_mat = filteredList[0]\n let aggregated_res = get_aggregated_confusion_matrix(sortedList, filteredList)\n data[\"values\"] = aggregated_res\n data[\"labels\"] = sortedList\n } else {\n data = null;\n }\n this.setModelPerformanceConfusionTimeFilterChartData(data)\n}\n\n\nexport function setModelPerformanceTimeFilterPreviewPage(data, startDate, endDate){\n let all_details = data[\"all_details\"];\n let selectedDate = startDate.format('YYYY-MM-DD');\n let filteredList = [];\n for(let d of all_details){\n let timeObj = new Date(d[\"payload_created_time\"]);\n // find latest\n const parsedDate = moment(timeObj).format('YYYY-MM-DD');\n if (parsedDate <= selectedDate) {\n filteredList.push(d);\n }\n }\n\n if (filteredList.length > 0) {\n filteredList = [filteredList[filteredList.length -1]]\n }\n let label_values_final = [];\n for(let result of filteredList){\n let labels = result[\"label_values\"];\n label_values_final.push(...labels);\n\n }\n let setFinalValue = new Set(label_values_final);\n let sortedList = Array.from(setFinalValue);\n// let sortedList = array.sort();\n\n if(sortedList.length > 0){\n// let first_confusion_mat = filteredList[0]\n let aggregated_res = get_aggregated_confusion_matrix(sortedList, filteredList)\n data[\"chartData\"][\"values\"] = aggregated_res\n return data;\n } else {\n data = null;\n return data;\n }\n}\n\nexport function getDatasetLevelFeatureImportance(allAttributes){\n let datasetLevelChart = {};\n let count = 0\n if (allAttributes.length > 0){\n let data = allAttributes[0]\n let datasourceName = data[\"data_source_name\"]\n let ml_model_id = data[\"ml_model_id\"]\n let data_set_id = data[\"data_set_id\"] !== undefined ? data[\"data_set_id\"] : null\n datasetLevelChart = {\n \"chartTitle\": \"mean_shap_value\",\n \"chartType\": \"horizontalBarChart\",\n \"data_source_name\": datasourceName,\n \"drift\": [],\n \"data_set_id\": data_set_id,\n \"attribute_list\": [],\n \"drift_patterns\": [],\n \"errorList\": [],\n \"isError\": false,\n \"isModelPerformance\": true,\n \"key\": [\"mean_shap_value\",ml_model_id, datasourceName].join(\"_\"),\n \"label\": \"Model\",\n \"chart_level\":\"dataset\",\n \"ml_model_id\": ml_model_id,\n \"name\": \"mean_shap_value\",\n \"scale\": \"minMaxScale\",\n \"time\":[],\n \"dataOf\":data.time[data.time.length-1],\n \"toolTipTitle\": \"mean_shap_value\",\n \"toolTiptopHeader\": \"mean_shap_value\",\n \"xValue\": \"Attributes\",\n \"yValue\": \"mean_shap_value\",\n }\n\n for (let chart of allAttributes){\n if (chart[\"name\"] === \"mean_shap_value\"){\n count = count+1;\n let feature_imp_val = chart.drift[chart.drift.length -1];\n //let feature_imp_val = chart.drift[0];\n datasetLevelChart[\"drift\"].push(feature_imp_val)\n datasetLevelChart[\"time\"].push(chart[\"time\"])\n datasetLevelChart[\"attribute_list\"].push(chart[\"attribute_name\"])\n }\n }\n }\n\n if (count > 0){\n return datasetLevelChart;\n } else {\n return {};\n }\n}\n\nexport function getDatasetLevelShapValues(allAttributes){\n let datasetLevelChart = {};\n let count = 0\n if (allAttributes.length > 0){\n let data = allAttributes[0]\n let ml_model_id = data[\"ml_model_id\"]\n let data_set_id = data[\"payload\"][\"attribute_details\"][0][\"data_set_id\"] !== undefined ? data[\"payload\"][\"attribute_details\"][0][\"data_set_id\"] : null\n datasetLevelChart = {\n \"chartTitle\": \"mean_shap_value\",\n \"chartType\": \"horizontalBarChart\",\n \"drift\": [],\n \"data_set_id\": data_set_id,\n \"attribute_list\": [],\n \"drift_patterns\": [],\n \"errorList\": [],\n \"isError\": false,\n \"isModelPerformance\": true,\n \"key\": [\"mean_shap_value\",ml_model_id, \"datasetLevel\", data_set_id].join(\"_\"),\n \"label\": \"Model\",\n \"chart_level\":\"dataset\",\n \"ml_model_id\": ml_model_id,\n \"name\": \"mean_shap_value\",\n \"scale\": \"minMaxScale\",\n \"time\":[],\n \"chartDataPoints\":[],\n \"total\":[],\n \"toolTipTitle\": \"mean_shap_value\",\n \"toolTiptopHeader\": \"mean_shap_value\",\n \"xValue\": \"Attributes\",\n \"yValue\": \"mean_shap_value\",\n }\n\n for (let dsResult of allAttributes){\n if (dsResult[\"metric_type\"] === \"mean_shap_value\"){\n let latestData = allAttributes[0][\"payload\"][\"attribute_details\"];\n let dataset_id = allAttributes[0][\"payload\"][\"data_set_id\"]\n let total = latestData.reduce(function (acc, obj) { return acc + obj.feature_imp_val; }, 0);\n\n count = count+1;\n datasetLevelChart[\"time\"].push(dsResult[\"payload_created_time\"])\n datasetLevelChart[\"chartDataPoints\"].push(dsResult[\"payload\"][\"attribute_details\"])\n datasetLevelChart[\"total\"].push({\"data_set_id\":dataset_id, \"total\":total});\n }\n }\n }\n\n if (count > 0){\n return datasetLevelChart;\n } else {\n return {};\n }\n}\n\nexport function getFeatureImportanceChartData(chartData, performanceName, modelName, key, ml_model_id){\n if(chartData[\"key\"] === undefined){\n chartData[\"key\"] = key+\"_\"+chartData[\"data_set_id\"]+\"_\"+chartData[\"attribute_name\"];\n }\n chartData[\"xValue\"] = \"Time\";\n chartData[\"isError\"] = false;\n chartData[\"yValue\"] = performanceName.replaceAll(\"_\",\" \");\n chartData[\"toolTipTitle\"] = performanceName;\n chartData[\"chartTitle\"] = performanceName;\n let chartType = getModelPerformanceChartType(chartData, performanceName);\n if (chartType === undefined || chartType === null) {\n chartType = `areaChart`;\n } else {\n chartData[\"useFixedChart\"] = true;\n }\n\n if(chartData[\"chartTitle\"] === \"mean_shap_value\" && chartData[\"chart_level\"]===\"dataset\"){\n chartType = \"horizontalBarChart\";\n }\n chartData[\"chartType\"] = chartType;\n chartData[\"ml_model_id\"] = ml_model_id;\n chartData[\"label\"] = \"Model\";\n chartData[\"name\"] = performanceName;\n chartData[\"scale\"] = MIN_MAX_SCALE;\n chartData[\"isModelPerformance\"] = true;\n chartData[\"data_source_name\"] = modelName;\n chartData[\"toolTiptopHeader\"] = METRIC_ALIAS_NAMES[performanceName];\n return chartData\n}\n\nexport function addTrainingServingData(serving_data, training_data,type){\n let combinedChart = null\n if (serving_data !== null && training_data !== null){\n let dataSetName = null;\n let data_set_name_2 = null;\n if (type === \"serving\"){\n let serving_dataset_name = [training_data[\"data_set_name\"], \"Latest\"].join(\"-\")\n dataSetName = [training_data[\"data_set_name\"], \"(\" ,\"Base dataset vs Latest Refresh\", \")\"].join(\" \")\n data_set_name_2 = serving_dataset_name\n }\n else{\n dataSetName = [serving_data[\"data_set_name\"], \"vs\",training_data[\"data_set_name\"]].join(\" \");\n data_set_name_2 = training_data[\"data_set_name\"]\n }\n let serving_data_points = serving_data[\"chartDataPoints\"]\n let training_data_points = training_data[\"chartDataPoints\"]\n let latest_data_point_1 = serving_data[\"chartDataPoints\"].slice(-1).pop();\n let latest_data_point_2 = training_data[\"chartDataPoints\"].slice(-1).pop();\n let d1 = {\"data_set_id\":serving_data[\"data_set_id\"], \"data_set_name\": serving_data[\"data_set_name\"],\n \"data_points\": latest_data_point_1}\n let d2 = {\"data_set_id\": training_data[\"data_set_id\"], \"data_set_name\": data_set_name_2,\n \"data_points\": latest_data_point_2}\n combinedChart = {\n \"chartTitle\": \"mean_shap_value\",\n \"chartType\": \"groupedHorizontalBarChart\",\n \"drift\": [],\n \"data_source_name\": serving_data[\"data_source_name\"],\n \"data_set_id_1\": serving_data[\"data_set_id\"],\n \"data_set_name_1\": serving_data[\"data_set_name\"],\n \"data_set_id_2\": training_data[\"data_set_id\"],\n \"data_set_name_2\": training_data[\"data_set_name\"],\n \"data_set_1_type\": serving_data[\"data_set_type\"],\n \"data_set_2_type\": training_data[\"data_set_type\"],\n \"dataSetName\": dataSetName,\n \"drift_patterns\": [],\n \"isError\": false,\n \"isModelPerformance\": true,\n \"key\": [\"mean_shap_value\",serving_data[\"ml_model_id\"], serving_data[\"data_set_id\"],\"vs\",training_data[\"data_set_id\"], serving_data[\"data_source_name\"]].join(\"_\"),\n \"label\": \"Model\",\n \"chart_level\": \"dataset\",\n \"ml_model_id\": serving_data[\"ml_model_id\"],\n \"name\": \"mean_shap_value\",\n \"scale\": MIN_MAX_SCALE,\n \"toolTipTitle\": \"mean_shap_value\",\n \"toolTiptopHeader\": \"Feature Importance\",\n \"xValue\": \"Time\",\n \"yValue\": \"Feature Contribution Value\",\n \"useFixedChart\": true,\n \"time\": [],\n \"data_set_1_time\": serving_data[\"time\"],\n \"data_set_2_time\": training_data[\"time\"],\n \"chartDataPoints_1\": serving_data_points,\n \"chartDataPoints_2\": training_data_points,\n \"chartDataPoints\": [d1,d2]\n }\n }\n return combinedChart;\n}\n\nexport function getPerformanceChartData(performanceResults, modelMapping,\n ignoreCombinedCharts=false, mappedDatasetInfo=null, fullModelInfo=null) {\n /*\n * Gets performance chart data in usable (for drawing chart) format\n *\n * performanceResults: Result list from API\n * modelMapping: Key value pair in dictionary. Key is model id and Value is model name\n * ignoreCombinedCharts: Boolean. If it is true, we will not create combined chart like\n * 'precision vs recall' or 'sensitivity vs specificity'\n *\n */\n let chartValues = [];\n let tempResult = {};\n\n if (performanceResults === undefined || performanceResults === null) {\n return chartValues;\n }\n let datasetMapping = null\n if(mappedDatasetInfo !== null){\n datasetMapping = mappedDatasetInfo[\"idDatasetDetail\"]\n }\n // This will have the combined charts of all the models\n let combinedChartOfAllModels = {};\n\n\n for (let k = 0; k < performanceResults.length; k++) {\n let row = performanceResults[k];\n const performanceName = row[\"performance_metric_name\"];\n const ml_model_id = row[\"ml_model_id\"];\n\n let modelName = modelMapping[ml_model_id];\n if(modelName === undefined)\n {\n continue;\n }\n let modelRes = tempResult[ml_model_id];\n if (modelRes === undefined) {\n modelRes = { \"needSorting\" : false , \"charts\" : [] };\n tempResult[ml_model_id] = modelRes;\n }\n\n if (performanceName === modelPerformance.SILHOUETTE_SCORE){\n modelRes[\"needSorting\"] = true;\n }\n\n let reqCombinedCharts = combinedChartOfAllModels[ml_model_id];\n\n if (ignoreCombinedCharts) {\n reqCombinedCharts = [];\n } else {\n if (reqCombinedCharts === undefined){\n reqCombinedCharts = _.cloneDeep(MODEL_PERFORMANCE_COMBINATION_CHART);\n combinedChartOfAllModels[ml_model_id] = reqCombinedCharts;\n }\n }\n\n let key = `${getNormalizedName(performanceName)}_${ml_model_id}`;\n\n let perfResults = row[\"results\"];\n\n if (perfResults === undefined || perfResults === null) {\n continue;\n }\n\n if (perfResults.length === 0) {\n continue;\n }\n\n if (performanceName === modelPerformance.CONFUSION_MATRIX) {\n let latestConfusionMatrixRes = perfResults[perfResults.length - 1];\n let label_values = latestConfusionMatrixRes[\"label_values\"];\n let confusionMatrix = latestConfusionMatrixRes[\"payload\"][\"value\"];\n let confusionChartData = {\n \"all_details\": latestConfusionMatrixRes[\"all_details\"],\n \"values\": confusionMatrix,\n \"labels\": label_values,\n \"key\": key,\n \"chartTitle\": performanceName,\n \"chartType\": chartTypes.CONFUSION_MATRIX,\n \"ml_model_id\": ml_model_id,\n \"name\": performanceName,\n \"metric\": performanceName,\n \"data_source_name\": modelName,\n \"isModelPerformance\": true,\n \"toolTiptopHeader\": performanceName,\n \"label\": \"Model\"\n }\n\n modelRes[\"charts\"].push(confusionChartData);\n //chartValues.push(confusionChartData);\n } else if (performanceName === modelPerformance.ROC_CURVE) {\n let latestROC = perfResults[perfResults.length - 1];\n let payload = latestROC[\"payload\"];\n let xAxis = payload[\"false_positive_rate\"];\n let yAxis = payload[\"true_positive_rate\"];\n\n let confusionChartData = {\n \"time\": xAxis,\n \"drift\": yAxis,\n \"y1\": xAxis,\n \"key\": key,\n \"chartTitle\": performanceName,\n \"chartType\": `areaChart`,\n \"ml_model_id\": ml_model_id,\n \"name\": performanceName,\n \"isNonTimeSeries\": true,\n \"data_source_name\": modelName,\n \"toolTiptopHeader\": METRIC_ALIAS_NAMES[performanceName],\n \"isModelPerformance\": true,\n \"xValue\": \"Time\",\n \"yValue\": \"ROC Curve\",\n \"isError\": false,\n \"toolTipTitle\": performanceName,\n \"label\": \"Model\"\n }\n\n modelRes[\"charts\"].push(confusionChartData);\n //chartValues.push(confusionChartData);\n } else if (performanceName === modelPerformance.HOMOGENEITY_COMPLETENESS_V_MEASURE_SCORE) {\n let chartData = getModelPerformanceCharts(perfResults);\n chartData[\"lineData\"] = getModelMultipleLineData(chartData);\n chartData[\"line1\"] = chartData.lineData.line1;\n chartData[\"line2\"] = chartData.lineData.line2;\n chartData[\"line3\"] = chartData.lineData.line3;\n chartData[\"key\"] = key;\n chartData[\"xValue\"] = \"Time\";\n chartData[\"isError\"] = false;\n chartData[\"yValue\"] = performanceName;\n chartData[\"yValue1\"] = \"Homogeneity\";\n chartData[\"yValue2\"] = \"Completeness\";\n chartData[\"yValue3\"] = \"V-measure\";\n chartData[\"toolTipTitle\"] = performanceName;\n chartData[\"chartTitle\"] = performanceName;\n let chartType = chartTypes.GROUPED_VERTICAL_BAR_CHART;\n chartData[\"useFixedChart\"] = true;\n chartData[\"chartType\"] = chartType;\n chartData[\"ml_model_id\"] = ml_model_id;\n chartData[\"label\"] = \"Model\";\n chartData[\"labels\"] = [\"Homogeneity\",\"Completeness\",\"V-measure\"];\n chartData[\"name\"] = performanceName;\n chartData[\"scale\"] = MIN_MAX_SCALE;\n chartData[\"colorType\"] = MULTI_LINE_COLORS;\n chartData[\"isModelPerformance\"] = true;\n chartData[\"data_source_name\"] = modelName;\n chartData[\"toolTiptopHeader\"] = METRIC_ALIAS_NAMES[performanceName];\n chartData[\"labelText1Line1\"] = chartData.label;\n chartData[\"labelText1Line2\"] = chartData.label;\n chartData[\"labelText1Line3\"] = chartData.label;\n chartData[\"labelValue1Line1\"] = modelName;\n chartData[\"labelValue1Line2\"] = modelName;\n chartData[\"labelValue1Line3\"] = modelName;\n chartData[\"isMultiLine\"] = true;\n chartData[\"isMultiBar\"] = true;\n chartData[\"multipleLines\"] = true;\n\n modelRes[\"charts\"].push(chartData);\n // chartValues.push(chartData);\n } else if (MODEL_MONITOR_PREVIEW_PAGE.includes(performanceName)) {\n let latestResult = perfResults[perfResults.length - 1];\n let payload = latestResult[\"payload\"];\n let xAxis = payload[\"time\"];\n let yAxis = payload[\"value\"];\n\n let modelMonitorChartData = {\n \"time\": xAxis,\n \"drift\": yAxis,\n \"key\": key,\n \"chartTitle\": performanceName,\n \"chartType\": `areaChart`,\n \"ml_model_id\": ml_model_id,\n \"name\": performanceName,\n \"data_source_name\": modelName,\n \"toolTiptopHeader\": METRIC_ALIAS_NAMES[performanceName],\n \"isModelPerformance\": true,\n \"xValue\": \"Time\",\n \"yValue\": \"Value\",\n \"isError\": false,\n \"toolTipTitle\": performanceName,\n \"label\": \"Model\"\n }\n\n modelRes[\"charts\"].push(modelMonitorChartData);\n //chartValues.push(modelMonitorChartData);\n } else if(performanceName === modelPerformance.MEAN_SHAP_VALUE){\n let grouped = [];\n let datasetLevelCharts = perfResults.filter(x => x.payload.attribute_details !== undefined);\n let attributeLevelCharts = perfResults.filter(x => x.payload.metaKey !== undefined);\n\n let dataset_grouped = []\n datasetLevelCharts.forEach(function (a) {\n this[a.payload.data_set_id] || dataset_grouped.push(this[a.payload.data_set_id] = []);\n this[a.payload.data_set_id].push(a);\n }, Object.create(null));\n\n attributeLevelCharts.forEach(function (a) {\n this[a.payload.metaKey] || grouped.push(this[a.payload.metaKey] = []);\n this[a.payload.metaKey].push(a);\n }, Object.create(null));\n let total_shap_value = [];\n let combined_chart = []\n let lineCharts = []\n let model_res = []\n for (let res of dataset_grouped){\n if(res[0][\"payload\"][\"attribute_details\"] !== undefined){\n let chartData = getDatasetLevelShapValues(res)\n let total = chartData[\"total\"]\n chartData = getFeatureImportanceChartData(chartData, performanceName, modelName, key, ml_model_id)\n chartData[\"dataSetName\"] = datasetMapping[chartData[\"data_set_id\"]][\"datasetName\"];\n chartData[\"data_set_name\"] = datasetMapping[chartData[\"data_set_id\"]][\"datasetName\"];\n chartData[\"filter_name\"] = \"mean_shap_value_ds_level\"\n combined_chart.push(chartData);\n let lineChart = _.cloneDeep(chartData);\n lineChart[\"chartType\"] = \"multiLineFeatureChart\"\n lineChart[\"key\"] = chartData[\"key\"]+\"_line_chart\"\n lineCharts.push(lineChart);\n model_res.push(chartData)\n model_res.push(lineChart)\n //chartValues.push(chartData);\n total_shap_value.push(total)\n }\n }\n //chartValues.push(...lineCharts);\n let serving_data_set_id = null;\n let training_data_set_id = null;\n if (combined_chart.length > 0 ){\n let modelFullDetails = fullModelInfo.filter(x => x.ml_model_id === ml_model_id)\n let serving_data_points, training_data_points = null;\n if(modelFullDetails.length > 0){\n let modelDatasetsDetails = modelFullDetails[0][\"features\"].filter(x=> x.type === \"feature\");\n if(modelDatasetsDetails.length > 0) {\n serving_data_set_id = modelDatasetsDetails[0][\"model_info_details\"][\"target_data_set\"]\n serving_data_points = combined_chart.filter(x => parseInt(x.data_set_id)=== parseInt(serving_data_set_id))\n training_data_set_id = modelDatasetsDetails[0][\"model_info_details\"][\"base_line_data_set_id\"]\n training_data_points = combined_chart.filter(x => parseInt(x.data_set_id)=== parseInt(training_data_set_id))\n }\n }\n\n for (let res of model_res){\n if (res[\"data_set_id\"].toString() === serving_data_set_id){\n modelRes[\"charts\"].push(res)\n }\n }\n\n if (serving_data_points !== null && training_data_points !== null && serving_data_points.length > 0 && training_data_points.length > 0){\n serving_data_points[0][\"data_set_type\"] = \"serving dataset\"\n training_data_points[0][\"data_set_type\"] = \"training dataset\"\n let combinedChart = addTrainingServingData(serving_data_points[0], training_data_points[0],\"training\")\n if (combinedChart !== null){\n combinedChart[\"chartVariant\"] = \"training_vs_serving\";\n combinedChart[\"filter_name\"] = \"mean_shap_value_combined_level\"\n modelRes[\"charts\"].push(combinedChart);\n //chartValues.push(combinedChart);\n }\n }\n\n if(serving_data_points !== null && serving_data_points.length > 0){\n let ServingBase = _.cloneDeep(serving_data_points[0]);\n if( ServingBase[\"chartDataPoints\"].length > 0){\n ServingBase[\"chartDataPoints\"]= [ServingBase[\"chartDataPoints\"][0]];\n ServingBase[\"time\"]= ServingBase[\"time\"][0];\n }\n ServingBase[\"data_set_type\"] = \"Base serving dataset\"\n ServingBase[\"data_set_name\"] = ServingBase[\"data_set_name\"]+\"-Base\"\n serving_data_points[0][\"data_set_type\"] = \"serving dataset\"\n let combinedChart = addTrainingServingData(ServingBase, serving_data_points[0],\"serving\")\n if (combinedChart !== null){\n combinedChart[\"chartVariant\"] = \"serving_vs_serving\";\n combinedChart[\"filter_name\"] = \"mean_shap_value_combined_level\"\n modelRes[\"charts\"].push(combinedChart);\n //chartValues.push(combinedChart);\n }\n }\n\n for (let res of model_res){\n if (res[\"data_set_id\"].toString() === training_data_set_id){\n modelRes[\"charts\"].push(res)\n }\n }\n\n }\n\n for (let res of grouped){\n let chartData = getModelPerformanceCharts(res);\n if (res[0][\"payload\"] !== undefined && res[0][\"payload\"][\"attribute_name\"] !== undefined){\n chartData[\"attribute_name\"] = res[0][\"payload\"][\"attribute_name\"];\n if ( res[0][\"payload\"][\"metaKey\"] !== undefined){\n chartData[\"data_set_id\"] = res[0][\"payload\"][\"metaKey\"].split(\".\")[1];\n chartData = getFeatureImportanceChartData(chartData, performanceName, modelName, key, ml_model_id)\n chartData[\"dataSetName\"] = datasetMapping[chartData[\"data_set_id\"]][\"datasetName\"];\n chartData[\"data_set_name\"] = datasetMapping[chartData[\"data_set_id\"]][\"datasetName\"];\n chartData[\"filter_name\"] = \"mean_shap_value_attribute_level\"\n modelRes[\"charts\"].push(chartData);\n //chartValues.push(chartData);\n let dataset_id = chartData[\"data_set_id\"]\n let total_value\n for(let total of total_shap_value){\n if(total[0]['data_set_id'] === undefined){\n continue\n }\n if(total[0]['data_set_id'].toString() === dataset_id){\n total_value = total[0]['total']\n }\n }\n chartData[\"total\"] = total_value\n }\n }\n }\n\n }\n else {\n let chartData = getModelPerformanceCharts(perfResults);\n chartData[\"key\"] = key;\n chartData[\"xValue\"] = \"Time\";\n chartData[\"isError\"] = false;\n chartData[\"yValue\"] = performanceName;\n chartData[\"toolTipTitle\"] = performanceName;\n chartData[\"chartTitle\"] = performanceName;\n let chartType = getModelPerformanceChartType(chartData, performanceName);\n if (chartType === undefined || chartType === null) {\n chartType = `areaChart`;\n } else {\n chartData[\"useFixedChart\"] = true;\n }\n\n chartData[\"chartType\"] = chartType;\n chartData[\"ml_model_id\"] = ml_model_id;\n chartData[\"label\"] = \"Model\";\n chartData[\"name\"] = performanceName;\n chartData[\"scale\"] = MIN_MAX_SCALE;\n chartData[\"isModelPerformance\"] = true;\n chartData[\"data_source_name\"] = modelName;\n chartData[\"toolTiptopHeader\"] = METRIC_ALIAS_NAMES[performanceName];\n\n let found = reqCombinedCharts.find(x => Object.values(x).includes(performanceName));\n if (found === undefined || found === null) {\n // Normal chart does not require additional process\n modelRes[\"charts\"].push(chartData);\n //chartValues.push(chartData);\n continue;\n }\n\n const combinedName = `${found.y} vs ${found.y1}`;\n chartData[\"chartTitle\"] = combinedName;\n chartData[\"name\"] = combinedName;\n chartData[\"toolTiptopHeader\"] = combinedName;\n chartData[\"useFixedChart\"] = true;\n\n let combinedChart;\n if (found.added === undefined) {\n chartData[\"multipleLines\"] = true;\n modelRes[\"charts\"].push(chartData);\n //chartValues.push(chartData);\n combinedChart = chartData;\n found[\"added\"] = chartData;\n } else {\n combinedChart = found[\"added\"];\n }\n\n if (found.y === performanceName) {\n combinedChart[\"drift\"] = chartData[\"drift\"];\n combinedChart[\"titleY\"] = performanceName;\n combinedChart[\"yValue\"] = performanceName;\n } else {\n combinedChart[\"drift1\"] = chartData[\"drift\"];\n combinedChart[\"titleY1\"] = performanceName;\n combinedChart[\"y1Value\"] = performanceName;\n combinedChart[\"y2Value\"] = `${found.y} / ${found.y1}`;\n }\n }\n }\n\n let allModelIds = Object.keys(tempResult);\n for (let l = 0; l < allModelIds.length; l++){\n let currentModelId = allModelIds[l];\n if (tempResult[currentModelId].needSorting){\n tempResult[currentModelId].charts.sort(sortBasedOnMetrics);\n }\n chartValues.push(...tempResult[currentModelId].charts);\n }\n return chartValues;\n}\n\n\n/**\n * Creates show more data for model error tab in Monitor page\n * @param {*} dataSetData - Object containing model error chart data\n * @param {boolean} isDataSetLevel - Represents whether current chart group formation is for dataset level or\n * at attribute level\n * @param mlModelDetails - Complete model details for the current tenant\n * @param mlModelMapping - Key-Value pair where key is model id and value is model name\n * @param {{}} metadataMap - Key-Value pair where\n * KEY is \"env_id.integration_id.data_set_id.meta_data_id\"\n * VALUE is \"env_name.integration_name.data_set_name.meta_data_name\"\n *\n * @param {canIncludeMetric} canIncludeFunction - Function to be called to decide whether\n * to include chart to group or not.\n * @param {[]} modelPerformanceCharts - list contains model performance charts\n * that are to be shown in model error page\n */\n\nexport function getCustomMetrics(dataSetData){\n let customMlOptions =[];\n let CustomMetrics = dataSetData.filter(x=>(x.metric === CUSTOM_ML_METRIC))\n if(CustomMetrics.length > 0){\n for(let data of CustomMetrics[0].data){\n customMlOptions.push({\"name\": data.name, \"ml_model_id\":data.ml_model_id, \"model_name\": data.model_name})\n }\n }\n return customMlOptions;\n\n}\n\nexport function setShowMoreDataOnGroupingLevel(dataSetData, isDataSetLevel, mlModelDetails,\n mlModelMapping, metadataMap, canIncludeFunction,\n modelPerformanceCharts) {\n let gridData = [];\n if (dataSetData === undefined) {\n return gridData;\n }\n\n\n let modelGroup = {};\n let allowedMetrics = ATTRIBUTE_LEVEL_ALLOWED_ML_METRICS;\n let descriptionInfo = ATTRIBUTE_LEVEL_MODEL_ERROR_DESCRIPTIONS;\n let level = \"Attribute\";\n\n if (isDataSetLevel) {\n allowedMetrics = DATASET_LEVEL_ALLOWED_ML_METRICS;\n descriptionInfo = DATA_SET_LEVEL_MODEL_ERROR_DESCRIPTIONS;\n level = \"Dataset\";\n }\n\n for (const [key, modelValue] of Object.entries(dataSetData)) {\n let modelName = mlModelMapping[key];\n if (modelName === undefined) {\n continue;\n }\n\n for (const metricValue of Object.values(modelValue)) {\n\n let processedKeys = [];\n for (const [attribute, chartData] of Object.entries(metricValue)) {\n\n // If consolidation is done at attribute level,\n // make sure that there are 4 parts in attribute key (Ex) 22.33.16.2003)\n const attributeKeys = attribute.split(METADATA_MAP_KEY_SEPARATOR);\n let attribute_id = attributeKeys[attributeKeys.length - 1]\n if (!isDataSetLevel && attributeKeys.length !== 4) {\n continue;\n }\n\n // if (isDataSetLevel && attributeKeys.length > 3){\n // continue;\n // }\n\n let metricName = chartData.name;\n let is_udf_ml_metrics = false;\n if(!DEFAULT_ML_METRICS.includes(metricName) && chartData.ml_model_id !== undefined && chartData.model_name !== undefined && chartData.metric_threshold_error_status !== undefined){\n is_udf_ml_metrics=true;\n metricName = CUSTOM_ML_METRIC;\n }\n if (!allowedMetrics.includes(metricName) && !(is_udf_ml_metrics)) {\n continue;\n }\n\n if (metricName === ML_ACCURACY_DRIFT) {\n continue;\n }\n\n // To avoid repetitive charts for same attribute - metric combination\n let uniqueKey = `${attribute}_${metricName}`;\n if (processedKeys.includes(uniqueKey)) {\n continue;\n }\n processedKeys.push(uniqueKey);\n\n let metricGroup = modelGroup[metricName];\n if (metricGroup === undefined) {\n metricGroup = {};\n let description = descriptionInfo[metricName];\n if (description === undefined) {\n description = `${descriptionInfo[\"default\"]} ${metricName}`;\n }\n\n metricGroup[\"metric\"] = `${metricName}`;\n metricGroup[\"level\"] = level;\n metricGroup[\"description\"] = description.desc;\n let headerTitle = description.title;\n metricGroup[\"header\"] = headerTitle;\n metricGroup[\"data\"] = [];\n metricGroup[\"key\"] = `metricGroup_${metricName}`;\n modelGroup[metricName] = metricGroup;\n }\n\n let metaData = metadataMap[attribute];\n if (metaData === undefined) {\n metaData = metadataMap;\n // const filtered = Object.keys(metaData)\n // .filter(key => key.startsWith(attribute))\n // .reduce((obj, key) => {\n // obj[key] = metaData[key];\n // return obj;\n // }, {});\n metaData = metadataMap[attribute];\n if (metaData !== undefined) {\n let metaDataAfterSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR)\n if(metaDataAfterSplit.length > 4) {\n metaData = metaDataAfterSplit.slice(0, metaDataAfterSplit.length - 2).join(METADATA_MAP_VALUE_SEPARATOR);\n\n }\n }\n }\n\n if (metaData !== undefined) {\n let metaDataSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n let _attribute_name = null;\n let datasetName;\n let toolTiptopHeader;\n\n if (isDataSetLevel) {\n datasetName = metaDataSplit[2];\n } else {\n datasetName = metaDataSplit[2];\n _attribute_name = metaDataSplit[metaDataSplit.length - 1];\n }\n\n if (REQUIRES_FILTER.includes(metricName) &&\n !canIncludeFunction(key, attribute, chartData,\n _attribute_name, metricName, mlModelDetails)) {\n continue;\n }\n\n if (_attribute_name !== null) {\n chartData[\"attribute_name\"] = _attribute_name;\n chartData[\"attribute_id\"] = attribute_id;\n }\n chartData[\"datasetName\"] = datasetName;\n chartData[\"data_set_id\"] = attribute.split(METADATA_MAP_KEY_SEPARATOR)[2];\n let title = `${metaDataSplit.join(\" > \")}`;\n chartData[\"title\"] = title;\n\n chartData[\"name\"] = getAliasChartName(chartData[\"name\"], isDataSetLevel);\n if (ML_BOX_PLOT_LIST.includes(chartData[\"name\"])) {\n let boxPlotData = {}\n let statistics = {}\n let quantile = chartData[\"boxplot_data\"]\n if (quantile !== undefined && quantile !== null) {\n statistics[\"attribute_name\"] = _attribute_name\n statistics[\"quantile\"] = quantile\n statistics[\"drift_patterns\"] = chartData[\"drift_patterns\"]\n statistics[\"time\"] = chartData[\"time\"]\n if (_attribute_name !== null) {\n boxPlotData[\"chart_level\"] = \"Attribute\"\n } else {\n boxPlotData[\"chart_level\"] = \"Dataset\"\n }\n boxPlotData[\"statistics\"] = [statistics]\n chartData[\"boxPlotData\"] = boxPlotData\n chartData[\"chartType\"] = \"boxPlotZoomable\"\n }\n }\n\n chartData[\"key\"] = `show_more_${uniqueKey}_${chartData[\"ml_model_id\"]}_${chartData.name}`;\n chartData[\"title\"] = title;\n\n let chartTypeData = getChartTypeForMonitorCharts(chartData);\n let hasError = chartTypeData.hasError;\n chartData[\"type\"] = chartTypeData.chartPatternType;\n chartData[\"hasDrift\"] = hasError;\n // We are changing scale of all charts to min max scale\n // Part of fix for issue 1038\n chartData[\"scale\"] = MIN_MAX_SCALE;\n\n chartData[\"label\"] = \"Model\";\n chartData[\"data_source_name\"] = modelName;\n chartData[\"errorChart\"] = true;\n\n if (ML_REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART.includes(metricName)) {\n chartData[\"settings\"] = CONTRIBUTION_KEY;\n chartData[\"referenceDataSetLabel\"] = \"Training Dataset\";\n let contributions = chartData[\"contribution\"];\n let referenceDataset = \"\";\n if (contributions !== undefined && contributions.length > 0) {\n referenceDataset = contributions[contributions.length - 1].target_data_set_name;\n }\n\n chartData[\"referenceDataSetName\"] = referenceDataset;\n }\n\n // For drawing model error related chart we need to use actual drifts\n // and not drifts of drifts\n let valueList = chartData.value;\n if (valueList !== undefined && valueList !== null) {\n chartData[\"drift\"] = valueList;\n }\n\n normalizeChartData(chartData);\n let drift_len = chartData.drift.length;\n let time_len = chartData[\"time\"].length;\n if (drift_len > 1) {\n let recentValue = chartData.drift[(drift_len - 1)];\n chartData[\"error_percentage\"] = recentValue.toFixed(2);\n chartData[\"latest_refresh\"] = chartData[\"time\"][(time_len - 1)];\n chartData[\"last_error\"] = chartData.drift[(drift_len - 2)].toFixed(2);\n } else if (drift_len === 1) {\n chartData[\"error_percentage\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n } else {\n chartData[\"error_percentage\"] = 0;\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = 0;\n }\n\n if (this !== undefined && this.state !== undefined) {\n filterChartDataForTime(chartData, this.state.startDate, this.state.endDate);\n }\n\n if (chartData[\"name\"] === FEATURE_DRIFT) {\n if (chartData[\"type\"] === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT) {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_RED_TEXT;\n } else {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_GREEN_TEXT;\n }\n }\n toolTiptopHeader = chartData[\"name\"];\n chartData[\"toolTiptopHeader\"] = toolTiptopHeader;\n\n\n metricGroup.data.push(chartData);\n }\n }\n }\n }\n\n if(isDataSetLevel && !(allowedMetrics.includes(CUSTOM_ML_METRIC))){\n allowedMetrics.push(CUSTOM_ML_METRIC);\n }\n\n for (let allowedMetric of allowedMetrics) {\n\n let groupData = modelGroup[allowedMetric];\n\n if (groupData !== undefined) {\n if (allowedMetric === ML_ACCURACY_DRIFT) {\n groupData.data = [...groupData.data, ...modelPerformanceCharts];\n }\n groupData.data.sort(sortBasedOnErrors);\n gridData.push(groupData);\n continue;\n }\n\n // No chart data found for these sections, so add section with empty chart list\n let description = descriptionInfo[allowedMetric];\n if (description === undefined) {\n continue;\n }\n\n let header = description.title;\n groupData = {\n \"metric\": allowedMetric,\n \"description\": description.desc,\n \"header\": header,\n \"level\": level,\n \"data\": [],\n };\n\n if (allowedMetric === ML_ACCURACY_DRIFT) {\n groupData.data = [...groupData.data, ...modelPerformanceCharts];\n }\n groupData.data.sort(sortBasedOnErrors);\n gridData.push(groupData);\n }\n return gridData;\n}\n\n\n\nexport function canIncludeMetric(ml_model_id, attribute, chartData,\n attribute_name, metricName, mlModelDetails) {\n //This function checks the model configuration and\n // decides whether the current chart can be shown or not\n\n let reqModelDetail = mlModelDetails[ml_model_id];\n if (reqModelDetail === undefined || reqModelDetail === null) {\n return false;\n }\n\n let featureMap = reqModelDetail[\"feature_map\"];\n if (featureMap === undefined || featureMap === null) {\n return false;\n }\n\n const mlFeaturekey = ML_FEATURE_KEYS[metricName];\n if (mlFeaturekey === undefined || mlFeaturekey === null) {\n return false;\n }\n\n let typeKey = mlFeaturekey[\"key\"];\n let featureInfo = featureMap[typeKey];\n if (featureInfo === undefined || featureInfo === null) {\n return false;\n }\n\n const modelInfoDetails = featureInfo[\"model_info_details\"];\n let target_data_set = modelInfoDetails[\"target_data_set\"];\n const attributeSplits = attribute.split(METADATA_MAP_KEY_SEPARATOR);\n\n if (String(attributeSplits[2]) !== String(target_data_set)) {\n //Current dataset id vs dataset id present in model configuration\n //Dataset id does not match. So skipping this chart data\n return false;\n }\n\n let columnKey = mlFeaturekey[\"columnKey\"];\n if (columnKey === undefined || columnKey === null) {\n return false;\n }\n\n let targetColumns = modelInfoDetails[columnKey];\n\n if (targetColumns === undefined || targetColumns === null) {\n return false;\n }\n\n let requiredColumns = [];\n for (let column of targetColumns) {\n requiredColumns.push(...Object.values(column))\n }\n\n return requiredColumns.includes(attribute_name);\n}\n\n\nexport function convertModelDetails(mlModelDetails) {\n let modelDetail = {};\n for (let detail of mlModelDetails) {\n let feature_map = {};\n for (let feat of detail[\"features\"]) {\n feature_map[feat[\"type\"]] = feat;\n }\n\n detail[\"feature_map\"] = feature_map;\n modelDetail[detail[\"ml_model_id\"]] = detail\n }\n\n return modelDetail;\n}\n\nexport function getModelErrorsOfPerformanceCharts(allCharts) {\n /*\n * This function is used in model error page to get only threshold error charts\n * among model performance charts\n */\n let errorCharts = [];\n\n for (let chart of allCharts) {\n\n if (!MODEL_PERFORMANCE_AS_MODEL_ERRORS.includes(chart.name)) {\n continue;\n }\n\n let errorChart = _.cloneDeep(chart);\n\n errorChart[\"name\"] = capitalize(errorChart[\"name\"]);\n errorChart[\"attribute_name\"] = errorChart.name;\n errorChart[\"data_set_id\"] = \"\";\n errorChart[\"title\"] = errorChart.name;\n const modelId = errorChart[\"ml_model_id\"];\n errorChart[\"key\"] = `show_more_model_perf_${modelId}_${errorChart.name}`;\n errorChart[\"hasDrift\"] = false;\n errorChart[\"scale\"] = MIN_MAX_SCALE;\n errorChart[\"label\"] = \"Model\";\n errorChart[\"isModelPerformance\"] = true;\n errorCharts.push(errorChart);\n\n let driftPatterns = errorChart.drift_patterns;\n let driftType;\n\n if (driftPatterns === undefined || driftPatterns.length === 0) {\n driftType = DRIFT_PATTERN_TYPES.NO_DRIFT;\n } else {\n driftType = driftPatterns[driftPatterns.length - 1];\n }\n errorChart[\"type\"] = driftType;\n\n let errorList = chart.errorList;\n if (errorList === undefined || errorList === null) {\n continue;\n }\n\n let errorCount = errorList.length;\n if (errorCount === 0) {\n continue;\n }\n\n let recentError = errorList[errorCount - 1];\n if (recentError === undefined || recentError === null) {\n continue;\n }\n\n errorChart[\"thresholdError\"] = recentError;\n errorChart[\"hasDrift\"] = (driftType === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT);\n }\n\n return errorCharts;\n}\n\nexport function setGridData(data, metadataMap, mlModelMapping, modelPerfErrors) {\n /*\n * Creates monitor - model error preview page charts\n */\n let gridData = [];\n let errorChartInfo = {};\n let hasChartData = false;\n\n // Filter charts that have only threshold errors\n let errorCharts = modelPerfErrors.filter(x => x.hasDrift);\n\n if (data === undefined || data === null || Object.keys(mlModelMapping).length === 0 ) {\n return gridData;\n }\n let mlModelIds = Object.keys(mlModelMapping);\n for (const [key, value] of Object.entries(data)) {\n let modelData = {};\n let chartDataList = [];\n modelData[\"title\"] = `Model Errors for '${key}'`;\n if ( typeof(value)!=='object' || key === undefined || key === null || key === \"null\" || typeof(value) === \"string\" || value === null) {\n continue;\n }\n\n modelData[\"key\"] = key;\n let ml_model_id = null;\n for (const fullData of Object.values(value)) {\n for (const [attribute, chartData] of Object.entries(fullData)) {\n\n let metaData = metadataMap[attribute];\n if (metaData === undefined) {\n metaData = metadataMap;\n // const filtered = Object.keys(metaData)\n // .filter(key => key.startsWith(attribute))\n // .reduce((obj, key) => {\n // obj[key] = metaData[key];\n // return obj;\n // }, {});\n\n let matchedKeys = metadataMap[attribute];\n if (matchedKeys.length === 0) {\n continue;\n }\n\n metaData = matchedKeys;\n if (metaData === undefined || metaData === null) {\n continue;\n }\n\n let metaDataAfterSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR)\n if(metaDataAfterSplit.length > 4) {\n metaData = metaDataAfterSplit.slice(0, metaDataAfterSplit.length - 2).join(METADATA_MAP_VALUE_SEPARATOR);\n\n }\n }\n const metadataSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n const attributeKeySplit = attribute.split(METADATA_MAP_KEY_SEPARATOR);\n\n let attributeName;\n let datasetName;\n let toolTiptopHeader;\n let isAttributeLevel = false;\n if (attributeKeySplit.length === 4) {\n datasetName = metadataSplit[2];\n attributeName = metadataSplit[metadataSplit.length - 1];\n isAttributeLevel = true;\n } else {\n datasetName = metadataSplit[2];\n }\n\n let metricName = chartData['name'];\n chartData[\"name\"] = getAliasChartName(metricName, !isAttributeLevel);\n\n toolTiptopHeader = chartData[\"name\"];\n\n if (attributeName !== null) {\n chartData[\"attribute_name\"] = attributeName;\n }\n\n chartData[\"toolTiptopHeader\"] = toolTiptopHeader\n chartData[\"datasetName\"] = datasetName;\n chartData[\"data_set_id\"] = attributeKeySplit[2];\n chartData[\"integration_id\"] = attributeKeySplit[1];\n const mlModelId = chartData[\"ml_model_id\"];\n ml_model_id = chartData[\"ml_model_id\"];\n modelData[\"ml_model_id\"] = mlModelId;\n modelData[\"label\"] = \"Model\";\n chartData[\"title\"] = `${metadataSplit.join(\" > \")} - ${chartData.name}`;\n const chartKeyText = `preview_${chartData[\"data_set_id\"]}_${mlModelId}_${chartData.name}`;\n chartData[\"key\"] = getNormalizedName(chartKeyText);\n // We are changing scale of all charts to min max scale\n // Part of fix for issue 1038\n chartData[\"scale\"] = MIN_MAX_SCALE;\n\n let chartTypeData = getChartTypeForMonitorCharts(chartData);\n let hasError = chartTypeData.hasError;\n chartData[\"type\"] = chartTypeData.chartPatternType;\n chartData[\"hasDrift\"] = hasError;\n if (ML_BOX_PLOT_LIST.includes(chartData[\"name\"])) {\n let boxPlotData = {}\n let statistics = {}\n let quantile = chartData[\"boxplot_data\"]\n if (quantile !== undefined && quantile !== null) {\n statistics[\"attribute_name\"] = attributeName\n statistics[\"quantile\"] = quantile\n statistics[\"drift_patterns\"] = chartData[\"drift_patterns\"]\n statistics[\"time\"] = chartData[\"time\"]\n if (attributeName !== null) {\n boxPlotData[\"chart_level\"] = \"Attribute\"\n } else {\n boxPlotData[\"chart_level\"] = \"Dataset\"\n }\n boxPlotData[\"statistics\"] = [statistics]\n chartData[\"boxPlotData\"] = boxPlotData\n chartData[\"chartType\"] = \"boxPlotZoomable\"\n }\n }\n\n // For drawing model error related chart we need to use actual drifts\n // and not drifts of drifts\n let valueList = chartData.value;\n if (valueList !== undefined && valueList !== null) {\n chartData[\"drift\"] = valueList;\n }\n\n chartData[\"data_source_name\"] = key;\n normalizeChartData(chartData);\n let drift_len = chartData.drift.length;\n let time_len = chartData.time.length;\n if (drift_len > 1) {\n chartData[\"error_percentage\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n chartData[\"last_error\"] = chartData.drift[(drift_len - 2)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n } else if (drift_len === 1) {\n chartData[\"error_percentage\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n chartData[\"last_error\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n } else {\n chartData[\"error_percentage\"] = 0;\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = 0;\n }\n\n if (this !== undefined && this.state !== undefined) {\n filterChartDataForTime(chartData, this.state.startDate, this.state.endDate);\n }\n\n hasChartData = true;\n if (hasError) {\n chartData[\"errorChart\"] = true;\n chartDataList.push(chartData);\n\n // Add it to under performing model list\n let clonedChartData = _.cloneDeep(chartData);\n let mlModelID = clonedChartData[\"ml_model_id\"];\n let errorData = errorChartInfo[mlModelID];\n if (errorData === undefined) {\n errorData = {\n \"count\": 0,\n \"data\": [],\n \"ml_model_id\": String(mlModelID)\n }\n if(mlModelIds.includes(String(mlModelID))){\n errorChartInfo[mlModelID] = errorData;\n }\n }\n\n errorData.count = errorData.count + 1;\n errorData.data.push(clonedChartData);\n }\n if (chartData[\"name\"] === FEATURE_DRIFT) {\n if (chartData[\"type\"] === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT) {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_RED_TEXT;\n } else {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_GREEN_TEXT;\n }\n }\n }\n }\n modelData[\"data\"] = chartDataList;\n if (ml_model_id === null || mlModelIds.includes(String(ml_model_id))) {\n gridData.push(modelData);\n }\n }\n\n let processedIDs = gridData.map(x => String(x[\"ml_model_id\"]));\n for (const [mlModelId, modelName] of Object.entries(mlModelMapping)) {\n let currentModelPerfErrorCharts = errorCharts.filter(x => String(x[\"ml_model_id\"]) === String(mlModelId));\n let currentPerfErrors = _.cloneDeep(currentModelPerfErrorCharts);\n\n if (processedIDs.includes(String(mlModelId))) {\n let currModelData = gridData.find(x=>String(x.ml_model_id) === mlModelId);\n currModelData[\"data\"] = [...currentPerfErrors, ...currModelData[\"data\"]];\n continue;\n }\n\n let modelData = {};\n modelData[\"title\"] = `Model Name - ${modelName}`;\n modelData[\"label\"] = \"Model\";\n modelData[\"key\"] = modelName;\n // modelData[\"disableShowMore\"] = true;\n modelData[\"data\"] = currentPerfErrors;\n modelData[\"ml_model_id\"] = mlModelId;\n gridData.push(modelData);\n }\n\n let underPerformingModels = {\n \"title\": \"Top Under-performing Models\",\n \"data\": [],\n \"under_performing_model_ids\": []\n };\n\n // Sort the list in descending order to get top under performing models\n const errorChartValues = Object.values(errorChartInfo);\n errorChartValues.sort(function (a, b) {\n return b.count - a.count;\n });\n if (errorChartValues.length === 1) {\n const topErrorContainer = errorChartValues[0];\n underPerformingModels.under_performing_model_ids.push(topErrorContainer.ml_model_id);\n underPerformingModels.data = topErrorContainer.data.slice(0, 3);\n } else if (errorChartValues.length === 2) {\n underPerformingModels.data = errorChartValues[0].data.slice(0, 2);\n underPerformingModels.under_performing_model_ids.push(errorChartValues[0].ml_model_id);\n\n let chartFromSecondTopError = errorChartValues[1].data[0];\n underPerformingModels.under_performing_model_ids.push(errorChartValues[1].ml_model_id);\n underPerformingModels.data.push(chartFromSecondTopError);\n } else if (errorChartValues.length > 2) {\n let chartFromFirstTopError = errorChartValues[0].data[0];\n underPerformingModels.under_performing_model_ids.push(errorChartValues[0].ml_model_id);\n\n let chartFromSecondTopError = errorChartValues[1].data[0];\n underPerformingModels.under_performing_model_ids.push(errorChartValues[1].ml_model_id);\n\n let chartFromThirdTopError = errorChartValues[2].data[0];\n underPerformingModels.under_performing_model_ids.push(errorChartValues[2].ml_model_id);\n\n underPerformingModels.data.push(chartFromFirstTopError);\n underPerformingModels.data.push(chartFromSecondTopError);\n underPerformingModels.data.push(chartFromThirdTopError);\n }\n\n underPerformingModels.data.forEach(x => x[\"key\"] = `${x[\"key\"]}_un_perf_models`);\n if (hasChartData && underPerformingModels.data.length > 0) {\n gridData = [underPerformingModels, ...gridData];\n }\n\n\n return gridData;\n}\n\nexport function applyDefaultTimeFilter(gridData, startDate, endDate) {\n//\n// let startDate = moment().subtract(10, 'days');\n// let endDate = moment().utc().endOf('day');\n for (let grid of gridData) {\n let timeFilteredData = [];\n for (let data of grid.data) {\n let copiedData = {}\n Object.assign(copiedData, data);\n let result = filterChartDataForTime(data, startDate, endDate);\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n copiedData.boxPlotData = result.boxPlotData;\n }\n let updatedTime = result.time;\n let yAxis = result.drift;\n if ((copiedData.chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false) ||\n (copiedData.chartType !== \"boxPlotZoomable\" && updatedTime.length === 0 )) {\n continue;\n }\n if (updatedTime.length >= 10) {\n updatedTime = updatedTime.slice(Math.max(updatedTime.length - 10, 0));\n yAxis = yAxis.slice(Math.max(yAxis.length - 10, 0));\n }\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift\"] = yAxis;\n timeFilteredData.push(copiedData);\n }\n grid.data = timeFilteredData;\n }\n return gridData\n}\n\nfunction addColor(metricGroup) {\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let i = 0;\n for (let group in metricGroup) {\n let groupData = metricGroup[group].data;\n for (let data in groupData) {\n groupData[data][\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[i]];\n }\n if (i === 3) {\n i = 0;\n } else {\n i = i + 1;\n }\n }\n}\n\nexport function getPreviewPerformanceChartData(performanceResults, mlModelMapping) {\n let groupedCharts = [];\n if (performanceResults === undefined || performanceResults === null) {\n return groupedCharts;\n }\n\n for (let key of Object.keys(performanceResults)) {\n let charts = performanceResults[key];\n let modelName = mlModelMapping[key];\n if (modelName === undefined) {\n continue;\n }\n\n let metricGroup = {}\n let chartValues = [];\n metricGroup[\"metric\"] = modelName;\n metricGroup[\"mlModelID\"] = key;\n metricGroup[\"data\"] = chartValues;\n let reqCombinedCharts = _.cloneDeep(MODEL_PERFORMANCE_COMBINATION_CHART);\n\n const allChartKeys = Object.keys(charts);\n const isClassification = allChartKeys.includes(modelPerformance.PRECISION);\n\n for (let chartName of allChartKeys) {\n if (chartName === modelPerformance.ROC_CURVE ||\n chartName === modelPerformance.CONFUSION_MATRIX) {\n continue;\n }\n\n if (isClassification && !MODEL_PERFORMANCE_PREVIEW_PAGE.includes(chartName)) {\n continue;\n }\n\n if (MODEL_MONITOR_PREVIEW_PAGE.includes(chartName)) {\n continue;\n }\n\n let priorityScore = MODEL_PERFORMANCE_RESULT_GROUP_MAP[chartName] === MODEL_ACCURACY ? 0 : 10;\n\n let chartData = charts[chartName];\n let ml_model_id = chartData[\"ml_model_id\"]\n chartData[\"key\"] = `${getNormalizedName(chartName)}_${ml_model_id}`;\n chartData[\"chartTitle\"] = chartName;\n chartData[\"chartType\"] = `areaChart`;\n chartData[\"ml_model_id\"] = ml_model_id;\n chartData[\"attribute_name\"] = undefined;\n chartData[\"name\"] = chartName;\n chartData[\"toolTiptopHeader\"] = METRIC_ALIAS_NAMES[chartName];\n chartData[\"label\"] = \"Model\";\n chartData[\"xValue\"] = \"Time\";\n chartData[\"isError\"] = false;\n chartData[\"yValue\"] = chartName;\n chartData[\"toolTipTitle\"] = chartName;\n chartData[\"metric\"] = chartName;\n chartData[\"scale\"] = MIN_MAX_SCALE;\n chartData[\"data_source_name\"] = modelName;\n chartData[\"sortPriority\"] = priorityScore;\n chartData[\"isModelPerformance\"] = true;\n\n let found = reqCombinedCharts.find(x => Object.values(x).includes(chartName));\n if (found === undefined || found === null) {\n // Normal chart does not require additional process\n chartValues.push(chartData);\n continue;\n }\n\n if (found.y === chartName && !allChartKeys.includes(found.y1)){\n // We have only one chart data for combined charts.\n // So we are ignoring the chart\n continue;\n }\n\n if (found.y1 === chartName && !allChartKeys.includes(found.y)){\n // We have only one chart data for combined charts.\n // So we are ignoring the chart\n continue;\n }\n\n const combinedName = `${found.y} vs ${found.y1}`;\n chartData[\"chartTitle\"] = combinedName;\n chartData[\"toolTiptopHeader\"] = combinedName;\n chartData[\"name\"] = combinedName;\n chartData[\"useFixedChart\"] = true;\n\n let combinedChart;\n if (found.added === undefined) {\n chartData[\"multipleLines\"] = true;\n chartValues.push(chartData);\n combinedChart = chartData;\n found[\"added\"] = chartData;\n } else {\n combinedChart = found[\"added\"];\n }\n\n if (found.y === chartName) {\n combinedChart[\"drift\"] = chartData[\"drift\"];\n if (combinedChart.drift1 === undefined) {\n combinedChart[\"drift1\"] = [];\n }\n\n combinedChart[\"titleY\"] = chartName;\n combinedChart[\"yValue\"] = chartName;\n } else {\n combinedChart[\"drift1\"] = chartData[\"drift\"];\n combinedChart[\"titleY1\"] = chartName;\n combinedChart[\"y1Value\"] = chartName;\n combinedChart[\"y2Value\"] = `${found.y} / ${found.y1}`;\n }\n }\n\n // Sort charts. We need to show Accuracy related charts first\n chartValues.sort((a, b) => a[\"sortPriority\"] - b[\"sortPriority\"]);\n groupedCharts.push(metricGroup);\n }\n addColor(groupedCharts);\n\n let processedIDs = groupedCharts.map(x => String(x[\"mlModelID\"]));\n for (const [mlModelId, modelName] of Object.entries(mlModelMapping)) {\n if (processedIDs.includes(String(mlModelId))) {\n continue;\n }\n\n let metricGroup = {}\n metricGroup[\"metric\"] = modelName;\n metricGroup[\"mlModelID\"] = mlModelId;\n metricGroup[\"data\"] = [];\n groupedCharts.push(metricGroup);\n }\n return groupedCharts;\n}\n\nexport function getDqErrorDetails(modelInfo, monitorModule) {\n if(monitorModule.monitorDQListView !== undefined && monitorModule.monitorDQListView.issued_attributes !== undefined) {\n let modelDatasets = modelInfo[\"model_datasets\"]\n let updatedDatasets = []\n let issuedAttributes = monitorModule.monitorDQListView.issued_attributes\n let attributeLevelData = monitorModule.monitorDQListView.attribute_level_data\n let datasetLevelData = monitorModule.monitorDQListView.dataset_level_data\n for(let i=0;i (x === modelDatasets[i][\"data_set_id\"]))\n if(data_set_id.length > 0) {\n let dataId = data_set_id[0]\n if(issuedAttributes[dataId] === undefined) {\n continue;\n }\n let latestError = issuedAttributes[dataId][0][\"issued_attributes\"]\n let latestRefreshedTime = issuedAttributes[dataId][0][\"refresh_time\"]\n let startDate = moment().format('YYYY-MM-DD 00:00:00');\n let endDate = moment().format('YYYY-MM-DD 23:59:59');\n let diff = moment(endDate).diff(latestRefreshedTime,'days')\n if(moment(latestRefreshedTime).isSameOrBefore(moment(endDate)) && moment(latestRefreshedTime).isSameOrAfter(moment(startDate))) {\n modelDatasets[i][\"latestError\"] = latestError.length\n modelDatasets[i][\"filteredValues\"] = latestError\n }else {\n modelDatasets[i][\"latestError\"] = \"not refreshed\"\n modelDatasets[i][\"filteredValues\"] = []\n modelDatasets[i][\"recencyInDays\"] = diff\n modelDatasets[i][\"prevRefreshDate\"] = issuedAttributes[dataId][0] !== undefined ? latestRefreshedTime : \"\"\n }\n modelDatasets[i][\"lastProfiled\"] = latestRefreshedTime\n modelDatasets[i][\"datasetLevelData\"] = datasetLevelData[dataId]\n modelDatasets[i][\"attributeLevelData\"] = attributeLevelData[dataId]\n modelDatasets[i][\"issuedAttributes\"] = issuedAttributes[dataId]\n updatedDatasets.push(modelDatasets[i]);\n }\n\n }\n return updatedDatasets\n\n }else {\n return []\n }\n\n}\n\nexport function getModelErrTableData(monitorModule, dataModule, modelPerformanceData, chartData) {\n let finalData = []\n let fullModelInfo = monitorModule.mlModelDetails\n const modelDataSourceDetails = mapModelToDataSource(fullModelInfo);\n const propsDataModuleInfo = dataModule.info;\n let lastProfilingTime = dataModule.lastProfilingTime;\n let modelPrefetchInfo = _.cloneDeep(monitorModule.mlModelAttributeInfo);\n let filteredData = _.cloneDeep(chartData[\"attribute\"][4][\"data\"])\n let attributeOptions = {}\n for (let mlModelId of Object.keys(monitorModule.mlModelMapping)) {\n let filteredModel = fullModelInfo.find(x => String(x.ml_model_id) === String(mlModelId));\n let modelList = []\n if (filteredModel !== undefined && filteredModel !== null && Object.keys(lastProfilingTime).length>0) {\n let modelName = filteredModel[\"model_name\"]\n let modelId = filteredModel[\"ml_model_id\"]\n let integrationId = filteredModel[\"integration_id\"]\n let datasourceName = filteredModel[\"integration_name\"]\n let filteredDataFinal = filteredData.filter(x => (x.ml_model_id === modelId))\n let performanceError = filteredDataFinal.filter(x => (x.hasDrift === true))\n let performance_error = false;\n if (performanceError.length > 0)\n {\n performance_error = true;\n }\n let thumbnailCharts = getThumbnailChartsModelErr(filteredDataFinal, modelName, datasourceName)\n let dqErrorInfo = getDqErrorDetails(filteredModel,monitorModule)\n\n let summaryData = [{\"text\": \"Model Type\", \"value\": filteredModel[\"ml_model_type\"]},\n {\"text\": \"Author\", \"value\": filteredModel[\"author\"]},\n {\"text\": \"Version\", \"value\": filteredModel[\"version\"]},\n {\"text\": \"Model Created On\", \"timeValue\": filteredModel[\"created_time\"].split(\",\")[1], \"highlight\": false},\n {\"text\": \"Model Updated On\", \"timeValue\": filteredModel[\"modified_time\"].split(\",\")[1]},\n ]\n let errModelSummaryData = formModelErrorDataForListView([], modelDataSourceDetails,\n propsDataModuleInfo, modelId);\n let attributeDetails = getServingFeatureDriftAttributes(modelPrefetchInfo[modelId], dataModule.metaData);\n attributeOptions[mlModelId] = attributeDetails[\"attributesOptions\"]\n modelList.push({\"value\": modelName, \"type\": \"td\"});\n modelList.push({\"value\": summaryData, \"type\": \"modelSummary\", \"inProgress\": false});\n modelList.push({\"value\": errModelSummaryData, \"type\": \"errModelSummary\", \"noModelConfigured\": false});\n modelList.push({\"value\": dqErrorInfo, \"type\": \"dqErrorInfo\", \"datasourceName\": datasourceName, \"inProgress\": false});\n modelList.push({\"value\": attributeDetails, \"type\": \"servingFeatureDrift\", \"modelId\": modelId, \"noModelConfigured\": false});\n modelList.push({\"value\": thumbnailCharts, \"type\": \"thumbnailCharts\", \"noModelConfigured\": false, \"performanceError\": performance_error});\n modelList.push({\"value\": modelId, \"type\": \"detailedChart\", \"integrationId\": integrationId, \"createdTime\": filteredModel.created_time});\n } else if (modelDataSourceDetails === undefined || modelDataSourceDetails === null ||\n modelDataSourceDetails[mlModelId] === undefined) {\n modelList.push({\"value\": monitorModule.mlModelMapping[mlModelId], \"type\": \"td\"});\n modelList.push({\"value\": [], \"type\": \"modelSummary\", \"inProgress\": true});\n modelList.push({\"value\": [], \"type\": \"errModelSummary\", \"noModelConfigured\": false});\n modelList.push({\"value\": [], \"type\": \"dqErrorInfo\", \"datasourceName\": null, \"inProgress\": true});\n modelList.push({\"value\": [], \"type\": \"servingFeatureDrift\", \"modelId\": mlModelId, \"noModelConfigured\": false});\n modelList.push({\"value\": [], \"type\": \"thumbnailCharts\", \"noModelConfigured\": false});\n modelList.push({\"value\": mlModelId, \"type\": \"detailedChart\", \"integrationId\": null, \"createdTime\": null});\n\n }\n if(modelList.length > 0) {\n finalData.push(modelList)\n }\n\n }\n\n return {\"finalData\": finalData, \"attributeOptions\": attributeOptions};\n\n }\n\n\nexport function getThumbnailChartsDqErr(data, idInput, datasourceName, headerName, timelinessData, datasetName) {\n let allThumbnailChartSections = [];\n const sectionName = \"Monitor Error\";\n if(data === undefined) {\n return allThumbnailChartSections\n }\n let chartType = \"thumbnailBar\"\n let updatedData = []\n for (const _cData of Object.values(data)) {\n let newData = _.cloneDeep(_cData);\n if(newData.name === \"Recency\" && timelinessData !== undefined && timelinessData.length > 0) {\n newData = _.cloneDeep(timelinessData[0])\n }else if(newData.name === \"Recency\" && timelinessData !== undefined && timelinessData.length === 0) {\n continue;\n }\n if([\"not_computed\", \"NO_DRIFT\"].includes(newData.drift_pattern)) {\n continue;\n }\n newData[DQ_CHART_POINTS] = newData[\"value\"];\n\n normalizeChartData(newData, DQ_CHART_POINTS);\n\n let colorInfo = MONITOR_PERF_LIST_VIEW[sectionName];\n newData[\"background\"] = colorInfo.cardBackground;\n newData[\"textColor\"] = colorInfo.textColor;\n delete newData[\"boxplot_data\"];\n let reqChartData = {\"time\": newData.time};\n reqChartData.label = \"Dataset\";\n reqChartData.labelValue = datasetName;\n reqChartData.toolTiptopHeader = headerName;\n reqChartData.version_name = newData.version_name;\n let uniqid = Math.floor(Math.random() * 1000000000);\n newData[\"chartData\"] = reqChartData;\n newData[\"idValue\"] = \"lv\" + idInput + getNormalizedName(newData[\"name\"]).replace(/ /g,\"_\")+\"_\"+uniqid\n reqChartData[\"values\"] = convertDecimalDigits(newData.dq_chart_points);\n reqChartData[\"colorArray\"] = colorInfo.colorArray;\n reqChartData[\"name\"] = newData.name;\n newData[\"chartType\"] = chartType;\n chartType = chartType === \"thumbnailBar\" ? \"thumbnailArea\": \"thumbnailBar\"\n\n newData[\"scale\"] = MIN_MAX_SCALE;\n updatedData.push(newData);\n }\n\n let sectionData = {\n \"name\": \"\",\n \"key\": getNormalizedName(idInput + sectionName),\n \"data\": Object.values(updatedData).slice(0, 6)\n }\n\n if (sectionData.data.length > 0){\n allThumbnailChartSections.push(sectionData);\n }\n return allThumbnailChartSections;\n\n}\nexport function getThumbnailChartsModelErr(data, modelName, datasourceName) {\n let allThumbnailChartSections = [];\n let ml_model_id = null;\n const sectionName = \"Monitor Error\";\n if(data === undefined) {\n return allThumbnailChartSections\n }\n let chartType = \"thumbnailBar\"\n for (let _cData of data) {\n let colorInfo = MONITOR_PERF_LIST_VIEW[sectionName];\n _cData[\"background\"] = colorInfo.cardBackground;\n _cData[\"textColor\"] = colorInfo.textColor;\n\n const reqChartData = {\"time\": _cData.time};\n // Add values for showing as tooltip header and labels\n reqChartData.label = \"Model\";\n reqChartData.labelValue = modelName;\n reqChartData.toolTiptopHeader = _cData[\"toolTiptopHeader\"];\n\n if (ml_model_id === null) {\n ml_model_id = _cData.ml_model_id;\n }\n\n _cData[\"chartData\"] = reqChartData;\n _cData[\"idValue\"] = \"lv\" + getNormalizedName(_cData.key).replace(/ /g,\"_\");\n reqChartData[\"values\"] = convertDecimalDigits(_cData.drift);\n reqChartData[\"colorArray\"] = colorInfo.colorArray;\n _cData[\"chartType\"] = chartType;\n chartType = chartType === \"thumbnailBar\" ? \"thumbnailArea\": \"thumbnailBar\"\n _cData[\"scale\"] = MIN_MAX_SCALE;\n }\n let sectionData = {\n \"name\": \"\",\n \"key\": getNormalizedName(ml_model_id + sectionName),\n \"data\": data.slice(0, 4)\n }\n\n if (sectionData.data.length > 0){\n allThumbnailChartSections.push(sectionData);\n }\n\n\n return allThumbnailChartSections;\n\n}\n\nexport function getThumbnailChartsForModelPerfLV(groupedDataForModel, modelName, lastProfilingTime, datasourceName) {\n let allThumbnailChartSections = [];\n let ml_model_id = null;\n for (let grpData of Object.values(groupedDataForModel)) {\n const sectionName = grpData.header;\n\n const chartDataList = grpData.data;\n for (let _cData of chartDataList) {\n let colorInfo = MONITOR_PERF_LIST_VIEW[sectionName];\n _cData[\"background\"] = colorInfo.cardBackground;\n _cData[\"textColor\"] = colorInfo.textColor;\n const reqChartData = {\"time\": _cData.time};\n\n // Add values for showing as tooltip header and labels\n reqChartData.label = \"Model\";\n reqChartData.labelValue = modelName;\n reqChartData.toolTiptopHeader = _cData[\"toolTiptopHeader\"];\n\n if (ml_model_id === null) {\n ml_model_id = _cData.ml_model_id;\n }\n\n _cData[\"chartData\"] = reqChartData;\n let currChartType = _cData[\"chartType\"];\n const hasSecondLine = _cData.drift1 !== undefined;\n\n // If there is only one data point, we can show it as barchart. In area chart we cannot see the data point\n // if we have single data point\n if (currChartType === \"areaChart\" && reqChartData.time.length === 1 && !hasSecondLine) {\n currChartType = \"barChart\";\n }\n\n if (currChartType === \"areaChart\") {\n reqChartData[\"values\"] = convertDecimalDigits(_cData.drift);\n if (hasSecondLine) {\n reqChartData[\"Y2_Values\"] = convertDecimalDigits(_cData.drift1);\n reqChartData[\"y1Value\"] = _cData.y1Value;\n }\n\n _cData[\"chartType\"] = \"thumbnailArea\";\n _cData[\"scale\"] = MIN_MAX_SCALE;\n reqChartData[\"yValue\"] = _cData.yValue;\n } else if (currChartType === \"barChart\") {\n reqChartData[\"values\"] = convertDecimalDigits(_cData.drift);\n reqChartData[\"colorArray\"] = colorInfo.colorArray;\n _cData[\"chartType\"] = \"thumbnailBar\";\n _cData[\"scale\"] = MIN_MAX_SCALE;\n reqChartData[\"yValue\"] = _cData.yValue;\n }else if (currChartType === \"confusionMatrix\") {\n reqChartData[\"values\"] = _cData.values;\n _cData[\"chartType\"] = \"thumbnailConfusionMatrix\";\n reqChartData[\"time\"] = lastProfilingTime;\n }\n _cData[\"idValue\"] = \"lv\" + _cData.key;\n }\n\n let sectionData = {\n \"name\": sectionName,\n \"key\": getNormalizedName(ml_model_id + sectionName),\n \"data\": chartDataList.slice(0, 6)\n }\n\n if (sectionData.data.length > 0) {\n allThumbnailChartSections.push(sectionData);\n }\n }\n\n return allThumbnailChartSections;\n}\n\nexport function getModelPerfListViewTableData(completeDataOrg, modelDataSourceDetails,\n propsDataModule,\n mlModelMapping, fullModelInfo) {\n let currListViewTableData = [];\n if (completeDataOrg === undefined || completeDataOrg === null ||\n mlModelMapping === null || mlModelMapping === undefined ||\n fullModelInfo === undefined || fullModelInfo === null ||\n modelDataSourceDetails === undefined || modelDataSourceDetails === null) {\n return [];\n }\n let propsDataModuleInfo = propsDataModule.info\n let lastProfilingTime = propsDataModule.lastProfilingTime\n\n let completeData = _.cloneDeep(completeDataOrg);\n\n // const chartData = getAllHorizontalChartsData();\n\n for (let mlModelId of Object.keys(mlModelMapping)) {\n let modelName = mlModelMapping[mlModelId];\n let modelType = '';\n let modelAuthor = '';\n let integrationId;\n let lastProfilingTimeModel;\n let datasourceName;\n let createdTime;\n\n let matchData = fullModelInfo.find(x => String(x.ml_model_id) === String(mlModelId));\n let modelSummaryData = [];\n let inProgress = false;\n if (matchData !== undefined && matchData !== null && Object.keys(lastProfilingTime).length>0) {\n modelType = capitalize(matchData.ml_model_type);\n modelAuthor = matchData.author;\n integrationId = matchData.integration_id;\n datasourceName = matchData.integration_name;\n createdTime = matchData.created_time\n\n lastProfilingTimeModel = lastProfilingTime[integrationId]\n modelSummaryData.push({\"text\": \"Model Type\", \"value\": modelType});\n modelSummaryData.push({\"text\": \"Author\", \"value\": modelAuthor});\n modelSummaryData.push({\"text\": \"Version\", \"value\": matchData.version});\n modelSummaryData.push({\"text\": \"Model Created On\", \"timeValue\": matchData.created_time.split(\",\")[1], \"highlight\": false});\n modelSummaryData.push({\"text\": \"Model Updated On\", \"timeValue\": matchData.modified_time.split(\",\")[1]})\n } else if (modelDataSourceDetails === undefined || modelDataSourceDetails === null ||\n modelDataSourceDetails[mlModelId] === undefined){\n inProgress = true;\n }\n let dataForModel = getGroupedData(completeData, {\"value\": mlModelId});\n let thumbnailChartData = getThumbnailChartsForModelPerfLV(dataForModel, modelName, lastProfilingTimeModel, datasourceName)\n\n const errorSummaryData = formModelErrorDataForListView([], modelDataSourceDetails,\n propsDataModuleInfo, mlModelId);\n\n const thumbnailData = {\"key\": mlModelId, \"data\": thumbnailChartData};\n\n let rowData = [{\"value\": modelName, \"type\": \"td\"},\n {\"value\": modelSummaryData, \"type\": \"modelSummary\", \"inProgress\": inProgress},\n {\"value\": errorSummaryData, \"type\": \"modelErrorSummary\", \"noModelConfigured\": false},\n {\"value\": thumbnailData, \"type\": \"thumbnailCharts\", \"lastProfilingTime\":lastProfilingTimeModel, \"noModelConfigured\": false},\n {\"value\": mlModelId, \"type\": \"detailedChart\", \"integrationId\": integrationId, \"createdTime\": createdTime}\n ]\n\n currListViewTableData.push(rowData);\n }\n\n return currListViewTableData;\n}\n\nlet lastId = 0;\n\nexport function getId(tab) {\n lastId++;\n if (tab === \"dq\") {\n return `${\"dq\"}${lastId}`;\n }\n else if (tab === \"ml\") {\n return `${\"ml\"}${lastId}`;\n }\n}\n\nexport function getNormalizedName(name) {\n let updated = name.split(' ').join('_');\n updated = updated.split('.').join('_');\n updated = updated.split('(').join('_');\n updated = updated.split(')').join('_');\n updated = updated.split('{').join('_');\n updated = updated.split('}').join('_');\n updated = updated.split('>').join('_');\n updated = updated.split('<').join('_');\n updated = updated.split('-').join('_');\n updated = updated.split('/').join('_');\n updated = updated.split('\\\\').join('_');\n\n // Following line replaces all non-alpha numeric characters with under score\n // Above statements can be removed after proper check until then let's have both operations\n updated = updated.replace(/[\\W_]+/g,\"_\");\n return updated;\n}\n\n\nexport function getDatasets(dataSets) {\n let option_arr = [];\n\n if (dataSets === undefined || dataSets === null) {\n return option_arr;\n }\n\n option_arr = dataSets.map(function (row) {\n return {\"label\": normalizeChildDatasetName(row[\"data_set_name\"]), \"value\": row[\"data_set_id\"]};\n });\n return option_arr;\n}\n\nexport function formMetricsCardData(data) {\n let metricsCardData = [];\n data.forEach(d => {\n let element = _.cloneDeep(d);\n let data_set_id = element[\"data_set_id\"];\n // let hasJob = (job_id !== undefined && job_id !== null);\n element[\"key\"] = element[\"metrics_id\"];\n // When there are no data_sets attached, that means they are Default metrics.\n // Only default metrics will be shown in cards\n if (data_set_id === undefined || data_set_id === null) {\n metricsCardData.push(element);\n }\n\n // if((element.metric_type === metricType.DEFAULT && !hasJob) || (element.metric_type === metricType.COMBINED && !hasJob)){\n // metricsCardData.push(element);\n // }\n });\n\n return metricsCardData;\n}\n\nexport function convertDecimalDigits(drifts) {\n if (drifts === undefined) {\n return drifts;\n }\n\n if (typeof (drifts[0]) === \"number\") {\n for (let i = 0; i < drifts.length; i++) {\n const driftElement = drifts[i];\n if (driftElement === undefined || driftElement === null) {\n continue;\n }\n\n drifts[i] = parseFloat(driftElement.toFixed(4));\n }\n } else if (typeof (drifts[0]) === \"object\") {\n for (let i = 0; i < drifts.length; i++) {\n const driftElement = drifts[i];\n\n if (driftElement === undefined || driftElement === null) {\n continue;\n }\n\n for (let j = 0; j < drifts.length; j++) {\n if (driftElement[j] === undefined || typeof (driftElement[j]) !== \"number\") {\n continue;\n }\n\n driftElement[j] = parseFloat((driftElement[j]).toFixed(4));\n }\n }\n }\n else if(typeof (drifts) === \"number\")\n {\n drifts = parseFloat(drifts.toFixed(4));\n }\n\n return drifts;\n}\n\nexport function formMLMetricsCardData(data) {\n let metricsCardData = [];\n data.forEach(element => {\n let job_id = element[\"job_id\"];\n let key = element[\"metrics_id\"];\n element[\"hide_edit\"] = false;\n let hasJob = (job_id !== undefined && job_id !== null);\n element[\"key\"] = key;\n if((element.metric_type === metricType.DEFAULT && !hasJob) || (element.metric_type === metricType.COMBINED && !hasJob)){\n metricsCardData.push(element);\n }\n });\n return metricsCardData;\n}\n\nexport function checkConsistencyStatus(data) {\n let finalOp = [];\n\n for (let i = 0; i < data.length; i++) {\n let masData = data[i];\n if (masData === undefined || masData === null) {\n continue;\n }\n let metrics = masData[\"metrics\"];\n\n for (let j = 0; j < metrics.length; j++) {\n let d = metrics[j];\n const jobId = d['job_id'];\n const isTemplate = (jobId !== undefined && jobId !== null);\n if (d['metric_type'] === \"UDF\" || isTemplate) {\n finalOp.push(d);\n }\n }\n }\n\n if (finalOp.length > 0 ){\n return true\n }\n return false;\n}\n\nexport function getConsistencyCardDetails(data){\n let dataConsistency = data.filter(x=>x.mas_name === DATA_CONSISTENCY);\n let result = {\"categorical_encode\": 0, \"normalization_consistency\": 0, \"data_type_consistency\": 0}\n if (dataConsistency !== undefined && dataConsistency.length > 0){\n let metrics = dataConsistency[0].metrics;\n for (let j = 0; j < metrics.length; j++) {\n let d = _.cloneDeep(metrics[j]);\n if (d[\"base_metric_id\"] === null){\n continue;\n }\n const metricName = d['metric_name'].toLowerCase().replace(/ /g,'_');\n if(metricName === \"categorical_encode\"){\n result['categorical_encode'] = result[\"categorical_encode\"]+1;\n } else if(metricName === \"data_type_consistency\"){\n result[\"data_type_consistency\"] = result[\"data_type_consistency\"]+1;\n } else if(metricName === \"normalization_consistency\"){\n result[\"normalization_consistency\"] = result[\"normalization_consistency\"]+1;\n }\n }\n }\n return result;\n}\n\nexport function getDefaultMetricsTableData(data) {\n let headers = [\"Metric Name\", \"Metric Associations\", \"Data Set\",\n \"Type of Formula\", \"Created By\",\n \"Created Date\", \"Version\", \"Actions\"];\n\n let finalOp = [];\n\n for (let i = 0; i < data.length; i++) {\n let masData = data[i];\n if (masData === undefined || masData === null) {\n continue;\n }\n\n let metrics = masData[\"metrics\"];\n const masName = masData[\"mas_name\"];\n if (masName !== DATA_CONSISTENCY){\n continue\n }\n for (let j = 0; j < metrics.length; j++) {\n let d = _.cloneDeep(metrics[j]);\n const metricsDefinition = d['metrics_definition'];\n const metricName = d['metric_name'];\n const data_set_id = d['data_set_id'];\n let key = d[\"metrics_id\"];\n const isTemplate = (data_set_id !== undefined && data_set_id !== null);\n if (isTemplate) {\n let row = [];\n let formula = metricsDefinition['formula'];\n if (typeof formula === \"object\") {\n formula = formula[\"type\"];\n }\n\n if (data_set_id !== undefined && data_set_id !== null) {\n key = `${key}_${data_set_id}`;\n }\n\n d[\"key\"] = `${key}_${d[\"status_code\"]}`;\n row.push({\"value\": metricName, \"type\": \"td\"});\n row.push({\"value\": masName, \"type\": \"td\"});\n row.push({\"value\": normalizeChildDatasetName(d[\"data_set_name\"]), \"type\": \"td\"});\n row.push({\"value\": formula, \"type\": \"td\"});\n row.push({\"value\": localStorage.getItem('user_name'), \"type\": \"td\"});\n row.push({\"value\": d[\"created_time\"], \"type\": \"td\"});\n row.push({\"value\": metricsDefinition['version'], \"type\": \"td\"});\n row.push({\"value\": \"\", \"type\": \"component\", \"metrics_data\": d});\n finalOp.push(row);\n }\n }\n }\n\n\n let table_data = {\n \"headers\": headers,\n \"data\": finalOp\n }\n\n return table_data;\n}\n\n\nexport function getMetricsTableData(data) {\n let headers = [\"Metric Name\", \"Metric Associations\", \"Data Set\",\n \"Type of Formula\", \"Created By\",\n \"Created Date\", \"Version\", \"Actions\"];\n\n let finalOp = [];\n\n for (let i = 0; i < data.length; i++) {\n let masData = data[i];\n if (masData === undefined || masData === null) {\n continue;\n }\n\n let metrics = masData[\"metrics\"];\n const masName = masData[\"mas_name\"];\n\n for (let j = 0; j < metrics.length; j++) {\n let d = _.cloneDeep(metrics[j]);\n const metricsDefinition = d['metrics_definition'];\n const metricName = d['metric_name'];\n const data_set_id = d['data_set_id'];\n let key = d[\"metrics_id\"];\n// const isTemplate = (data_set_id !== undefined && data_set_id !== null);\n if (d['metric_type'] === \"UDF\") {\n let row = [];\n let formula = metricsDefinition['formula'];\n if (typeof formula === \"object\") {\n formula = formula[\"type\"];\n }\n\n if (data_set_id !== undefined && data_set_id !== null) {\n key = `${key}_${data_set_id}`;\n }\n\n d[\"key\"] = `${key}_${d[\"status_code\"]}`;\n row.push({\"value\": metricName, \"type\": \"td\"});\n row.push({\"value\": masName, \"type\": \"td\"});\n row.push({\"value\": normalizeChildDatasetName(d[\"data_set_name\"]), \"type\": \"td\"});\n row.push({\"value\": formula, \"type\": \"td\"});\n row.push({\"value\": metricsDefinition['author'], \"type\": \"td\"});\n row.push({\"value\": d[\"created_time\"], \"type\": \"td\"});\n row.push({\"value\": metricsDefinition['version'], \"type\": \"td\"});\n row.push({\"value\": \"\", \"type\": \"component\", \"metrics_data\": d});\n finalOp.push(row);\n }\n }\n }\n\n\n let table_data = {\n \"headers\": headers,\n \"data\": finalOp\n }\n\n return table_data;\n}\n\nexport function hasSimpleTextFormula(metricDefinition) {\n let hasTextFormula = false;\n if (metricDefinition === undefined || metricDefinition === null) {\n return hasTextFormula;\n }\n\n hasTextFormula = ((typeof metricDefinition.formula) === \"string\");\n return hasTextFormula;\n}\n\nexport function getMetricTypeFromDefinition(metricDefinition) {\n let metricType = null;\n if (metricDefinition === undefined || metricDefinition === null) {\n return metricType;\n }\n\n const masType = metricDefinition.mas_type;\n if (masType === \"dqm\") {\n metricType = \"dq\";\n }\n else if (masType === \"mlm\") {\n metricType = \"ml\";\n }\n\n return metricType;\n}\n\nexport function isTemplateMetric(metricDefinition) {\n let isTemplateMetric = false;\n if (metricDefinition === undefined || metricDefinition === null) {\n return isTemplateMetric;\n }\n\n const isTemplate = metricDefinition.is_template;\n if (isTemplate === undefined || isTemplate === null) {\n return isTemplateMetric;\n }\n\n isTemplateMetric = (isTemplate === true);\n return isTemplateMetric;\n}\n\nexport function getFormulaContent(formula){\n let formulaDetail = formula;\n if (typeof (formula) == 'object') {\n let type = formula[\"type\"];\n if (type === \"sql_as_formula\"){\n formulaDetail = formula[\"query\"];\n }else if(type === \"custom_formula\"){\n formulaDetail = formula[\"components\"];\n }\n }\n\n return formulaDetail;\n}\n\nexport function getViewDetailsForMetrics(metricsData) {\n let viewDetails = {};\n Object.keys(metricsData).forEach(function (key) {\n let value;\n if (key === 'metrics_definition') {\n let definition = metricsData[key];\n const checks = definition[\"checks\"];\n if (checks !== undefined && checks !== null && checks.length > 0) {\n viewDetails[\"checks\"] = JSON.stringify(checks);\n }\n const formula = definition[\"formula\"];\n viewDetails[\"formula\"] = getFormulaContent(formula);\n }\n else {\n value = metricsData[key];\n viewDetails[key] = value;\n }\n });\n\n return viewDetails;\n}\n\nexport function getCurrentFilterData(selectedDataSet, availableData) {\n let chartData = [];\n availableData.map(function (r) {\n if (r[\"data_set_id\"] === selectedDataSet[\"value\"]) {\n chartData.push(r);\n }\n return 1;\n });\n return chartData;\n}\n\n\nexport function getCurrentMLFilterData(selectedMlModel, availableData) {\n let chartData = [];\n availableData.map(function (r) {\n if (r[\"ml_model_id\"] === selectedMlModel[\"value\"]) {\n chartData.push(r);\n }\n return 1;\n });\n return chartData;\n}\n\n\nexport function getChartTitleBasedOnData(data, dataSource=null, includeDatasetName=true){\n if (data === undefined || data === null) {\n return \"\";\n }\n let selectedModel = data[\"selectedMlModel\"];\n if (selectedModel !== undefined && selectedModel !=null) {\n// includeDatasetName = false;\n dataSource = selectedModel;\n }\n\n let dataSourceState = (dataSource !== undefined && dataSource !== null);\n let title = dataSourceState? dataSource[\"label\"] : \"\";\n let requiresSeparator = dataSourceState;\n let separator = CHART_TITLE_SEPARATOR;\n // let metricSeparator = CHART_TITLE_METRIC_SEPARATOR;\n\n let dataSetName = data.data_set_name;\n let attributeName = data.attribute_name;\n // let metricName = data.name;\n\n if (dataSetName !== undefined && includeDatasetName) {\n title = requiresSeparator ? `${title}${separator}${dataSetName}`\n : `${dataSetName}`;\n requiresSeparator = true;\n }\n\n if (attributeName !== undefined) {\n title = requiresSeparator ? `${title}${separator}${attributeName}`\n : `${attributeName}`;\n }\n\n // if (metricName !== undefined) {\n // title = `${title}${metricSeparator}${metricName}`;\n // }\n\n return title;\n}\n\nexport function formChartTitleForModelPerformanceChart(title, selectedMlModel){\n if (title.toLowerCase() === \"confusion matrix\") {\n title = \"Model Confusion Matrix\"\n }\n\n if (selectedMlModel === undefined || selectedMlModel === null) {\n return title;\n }\n\n return `${selectedMlModel[\"label\"]} - ${title}`;\n}\n\nexport function extractMetricNameFromChartName(chartName, isAttribute) {\n let nameSplit = chartName.split(CHART_TITLE_METRIC_SEPARATOR);\n if (nameSplit.length < 2){\n return chartName;\n }\n\n let fqMetricName = nameSplit[nameSplit.length - 1];\n let dataSetAttributeName = nameSplit[0];\n let dataSetAttributeSplit = dataSetAttributeName.split(CHART_TITLE_SEPARATOR);\n if (dataSetAttributeSplit.length < 2) {\n return fqMetricName;\n }\n\n let lastElement = dataSetAttributeSplit[dataSetAttributeSplit.length - 1];\n if (!isAttribute) {\n // last element is data set name, since full name does not have attribute in it\n return lastElement;\n }\n\n // Last element is attribute, since full name has attribute name in it\n return `${lastElement}_${fqMetricName}`;\n}\n\nexport function replaceNullValues(chartData) {\n let driftValues = chartData[\"drift\"];\n if (driftValues === undefined || driftValues === null) {\n return;\n }\n\n chartData[\"drift\"] = driftValues.map(x => x === null ? 0 : x);\n}\n\nexport function getMonitorTimeStampMessage(){\n if (this.state.lastMonitorTime){\n return \"Charts displayed are based on the analysis happened at, \"+ this.state.lastMonitorTime;\n } else{\n return \"Loading ..\";\n }\n }\n\nexport function getProfileTimeStampMessage() {\n if (this.state.lastProfilingTime){\n return \"Your data last profiled at, \"+ this.state.lastProfilingTime;\n } else {\n return \"Loading ..\";\n }\n}\n\nexport function filterChartDataForTime(chartData, startTime, endTime, considerEndTimeAlone=false, maxDataPoints=8) {\n let driftValues;\n if (\"dq_chart_points\" in chartData) {\n driftValues = chartData.dq_chart_points;\n } else {\n driftValues = chartData.drift;\n }\n\n let times = chartData.time;\n let filteredTimes = [];\n let filteredValues = [];\n let filteredDriftPattern = [];\n let filterErrorRows = [];\n let DqValues = [];\n let boxPlotData = null;\n let filteredVersionName = [];\n let filteredMetricThresholdStatus = []\n let filteredAvgRowCount = []\n let filteredDeviationPercentage = []\n let filteredAllStringColumnStatus = []\n let filteredMetricThresholdError = []\n if (times === undefined) {\n return {\n \"drift\": filteredValues,\n \"time\": filteredTimes,\n \"dq_chart_points\": DqValues,\n \"drift_patterns\": filteredDriftPattern,\n \"boxPlotData\": boxPlotData,\n \"error_rows\": filterErrorRows,\n \"version_name\": filteredVersionName,\n \"metric_threshold_error_diff_value\": filteredMetricThresholdError,\n \"metric_threshold_error_status\": filteredMetricThresholdStatus,\n }\n }\n if (chartData.boxPlotData !== undefined) {\n let boxPlotDataCopy = _.cloneDeep(chartData.boxPlotData);\n if (chartData.boxPlotData.statistics !== undefined && chartData.boxPlotData.statistics !== null) {\n let statisticsData = chartData.boxPlotData.statistics;\n let UpdatedStatisticsData = [];\n for (let i = 0; i < statisticsData.length; i++) {\n let copiedData = _.cloneDeep(statisticsData[i]);\n let quantile = copiedData.quantile;\n let timeList = copiedData.time;\n let filteredQuantile = [];\n let filteredTimes = [];\n for (let index = 0; index < timeList.length; index++) {\n let value = quantile[index];\n let xTime = timeList[index];\n\n let timeObj = getDateObject(xTime);\n\n const parsedDate = moment(timeObj);\n const cDateIsBeforeEndDate = parsedDate.isSameOrBefore(endTime);\n\n const canIncludeVal = ((parsedDate.isSameOrAfter(startTime) && cDateIsBeforeEndDate) ||\n (considerEndTimeAlone && cDateIsBeforeEndDate));\n\n if(canIncludeVal) {\n filteredTimes.push(xTime);\n filteredQuantile.push(value);\n }\n }\n if (filteredTimes.length > 0){\n if(considerEndTimeAlone) {\n filteredQuantile = filteredQuantile.slice(Math.max(filteredQuantile.length - maxDataPoints, 0))\n filteredTimes = filteredTimes.slice(Math.max(filteredTimes.length - maxDataPoints, 0))\n }\n copiedData.quantile = filteredQuantile;\n copiedData.time = filteredTimes;\n UpdatedStatisticsData.push(copiedData);\n }\n }\n boxPlotDataCopy.statistics = UpdatedStatisticsData;\n boxPlotData = boxPlotDataCopy;\n }\n }\n\n let drift_patterns = [];\n if ('drift_patterns' in chartData){\n drift_patterns = chartData.drift_patterns;\n }\n let error_rows = []\n if('error_rows' in chartData){\n error_rows = chartData.error_rows;\n }\n let metricThresholdErrors = chartData.metric_threshold_error_diff_value;\n let metricThresholdStatuses = chartData.metric_threshold_error_status;\n let avgRowCount = chartData.avg_row_count\n let deviationPercentage = chartData.deviation_percentage\n let isAllStringColumn = chartData.is_all_string_column;\n let version_names = []\n\n if('version_name' in chartData){\n version_names = chartData.version_name;\n }\n\n\n for (let index = 0; index < times.length; index++) {\n let value = driftValues[index];\n let xTime = times[index];\n\n let timeObj = getDateObject(xTime);\n\n const parsedDate = moment(timeObj);\n const cDateIsBeforeEndDate = parsedDate.isSameOrBefore(endTime);\n const canIncludeVal = ((parsedDate.isSameOrAfter(startTime) && cDateIsBeforeEndDate) ||\n (considerEndTimeAlone && cDateIsBeforeEndDate));\n\n if (canIncludeVal) {\n filteredTimes.push(xTime);\n filteredValues.push(value);\n if (times.length === drift_patterns.length) {\n let drift_pattern = drift_patterns[index];\n filteredDriftPattern.push(drift_pattern);\n }\n if(error_rows !== undefined && error_rows.length > 0 && error_rows.length === times.length) {\n let error_row = error_rows[index]\n filterErrorRows.push(error_row)\n }\n if(version_names !== undefined && version_names !== null && version_names.length > 0 && version_names.length === times.length) {\n let version_name = version_names[index]\n filteredVersionName.push(version_name)\n }\n if(metricThresholdErrors !== undefined && metricThresholdErrors.length > 0 && metricThresholdErrors.length === times.length) {\n let metricThresholdError = metricThresholdErrors[index]\n filteredMetricThresholdError.push(metricThresholdError)\n }\n if(metricThresholdStatuses !== undefined && metricThresholdStatuses.length > 0 && metricThresholdStatuses.length === times.length) {\n let metricThresholdStatus = metricThresholdStatuses[index]\n filteredMetricThresholdStatus.push(metricThresholdStatus)\n }\n if(isAllStringColumn !== undefined && isAllStringColumn.length > 0 && isAllStringColumn.length === times.length) {\n let isAllStringColumn_ = isAllStringColumn[index]\n filteredAllStringColumnStatus.push(isAllStringColumn_)\n }\n if(avgRowCount !== undefined && avgRowCount.length > 0 && avgRowCount.length === times.length) {\n let avgRow = avgRowCount[index]\n filteredAvgRowCount.push(avgRow)\n }\n if(deviationPercentage !== undefined && deviationPercentage.length > 0 && deviationPercentage.length === times.length) {\n let deviationPercentages = deviationPercentage[index]\n filteredDeviationPercentage.push(deviationPercentages)\n }\n }\n }\n\n if (boxPlotData !== null && boxPlotData.statistics.length === 0){\n boxPlotData = null;\n }\n\n if (considerEndTimeAlone) {\n filteredTimes = filteredTimes.slice(Math.max(filteredTimes.length - maxDataPoints, 0));\n filteredValues = filteredValues.slice(Math.max(filteredValues.length - maxDataPoints, 0));\n filteredDriftPattern = filteredDriftPattern.slice(Math.max(filteredDriftPattern.length - maxDataPoints, 0));\n filterErrorRows = filterErrorRows.slice(Math.max(filterErrorRows.length - maxDataPoints, 0));\n }\n if (\"dq_chart_points\" in chartData) {\n return {\n \"time\": filteredTimes,\n \"dq_chart_points\": filteredValues,\n \"boxPlotData\": boxPlotData,\n \"drift_patterns\": filteredDriftPattern,\n \"error_rows\": filterErrorRows,\n \"metric_threshold_error_diff_value\": filteredMetricThresholdError,\n \"metric_threshold_error_status\": filteredMetricThresholdStatus,\n \"is_all_string_column\":filteredAllStringColumnStatus,\n \"avg_row_count\": filteredAvgRowCount,\n \"deviation_percentage\": filteredDeviationPercentage\n }\n }\n return {\n \"drift\": filteredValues,\n \"time\": filteredTimes,\n \"boxPlotData\": boxPlotData,\n \"drift_patterns\": filteredDriftPattern,\n \"error_rows\": filterErrorRows,\n \"metric_threshold_error_diff_value\": filteredMetricThresholdError,\n \"metric_threshold_error_status\": filteredMetricThresholdStatus,\n \"is_all_string_column\":filteredAllStringColumnStatus\n }\n}\n\nexport function getConfusionMatrixModelPerformanceTimeFilter(chartData, startTime, endTime, considerEndTimeAlone){\n let all_details = chartData[\"all_details\"];\n let filteredList = [];\n for(let d of all_details){\n let timeObj = new Date(d[\"payload_created_time\"]);\n const parsedDate = moment(timeObj);\n const cDateIsBeforeEndDate = parsedDate.isSameOrBefore(endTime);\n const canIncludeVal = ((parsedDate.isSameOrAfter(startTime) && cDateIsBeforeEndDate) ||\n (considerEndTimeAlone && cDateIsBeforeEndDate));\n if(canIncludeVal) {\n filteredList.push(d);\n }\n }\n\n if (filteredList.length > 0){\n chartData[\"all_details\"] = filteredList;\n return chartData\n } else {\n return null;\n }\n}\n\n\nexport function getHorizontalChartModelPerformanceTimeFilter(chartData, startTime, endTime, considerEndTimeAlone){\n let chartDetails = chartData[\"chartDataPoints\"];\n let timeData = chartData[\"time\"]\n let filteredTimeList = [];\n let filteredChartpointList = [];\n for(let i in timeData){\n let t = timeData[i]\n let timeObj = new Date(timeData[i]);\n const parsedDate = moment(timeObj);\n const cDateIsBeforeEndDate = parsedDate.isSameOrBefore(endTime);\n const canIncludeVal = ((parsedDate.isSameOrAfter(startTime) && cDateIsBeforeEndDate) ||\n (considerEndTimeAlone && cDateIsBeforeEndDate));\n if(canIncludeVal) {\n filteredTimeList.push(t);\n filteredChartpointList.push(chartDetails[i]);\n }\n }\n\n if (filteredTimeList.length > 0){\n chartData[\"time\"]=filteredTimeList;\n chartData[\"chartDataPoints\"] = filteredChartpointList;\n return chartData\n } else {\n return null;\n }\n}\n\n\nexport function applyTimeFilterOnGroupedChart(timeData, chartDetails, startTime, endTime, considerEndTimeAlone){\n let filteredTimeList = [];\n let filteredChartpointList = [];\n for(let i in timeData){\n let t = timeData[i]\n let timeObj = new Date(timeData[i]);\n const parsedDate = moment(timeObj);\n const cDateIsBeforeEndDate = parsedDate.isSameOrBefore(endTime);\n const canIncludeVal = ((parsedDate.isSameOrAfter(startTime) && cDateIsBeforeEndDate) ||\n (considerEndTimeAlone && cDateIsBeforeEndDate));\n if(canIncludeVal) {\n filteredTimeList.push(t);\n filteredChartpointList.push(chartDetails[i]);\n }\n }\n return {\"chart_points\": filteredChartpointList, \"time\": filteredTimeList};\n}\n\n\nexport function getHorizontalGroupChartModelPerformanceTimeFilter(chartData, startTime, endTime, considerEndTimeAlone){\n let chartDetails = chartData[\"chartDataPoints\"];\n let timeData = chartData[\"time\"]\n let d1 = chartData[\"chartDataPoints\"][0];\n let d2 = chartData[\"chartDataPoints\"][1];\n let filteredTimeList = [];\n let filteredChartpointList = [];\n let newChartPoints = []\n if(chartData[\"chartVariant\"] === \"serving_vs_serving\"){\n // don't change serving base data - available in d1\n // timefilter applicable to data available in d2. respective time available in key-data_set_2_time\n timeData=chartData[\"data_set_2_time\"];\n chartDetails = chartData[\"chartDataPoints_2\"];\n let res = applyTimeFilterOnGroupedChart(timeData,chartDetails, startTime, endTime, considerEndTimeAlone);\n filteredChartpointList=res[\"chart_points\"].slice(-1).pop();\n filteredTimeList=res[\"time\"];\n d2[\"data_points\"] = filteredChartpointList\n newChartPoints=[d1,d2]\n } else if(chartData[\"chartVariant\"] === \"training_vs_serving\"){\n // time filter applicable to data available in d1 and d2. respective time available in key-data_set_2_time\n //apply on serving data\n let timeData1=chartData[\"data_set_1_time\"];\n let chartDetails1 = chartData[\"chartDataPoints_1\"];\n let res1 = applyTimeFilterOnGroupedChart(timeData1,chartDetails1, startTime, endTime, considerEndTimeAlone);\n if (res1[\"chart_points\"].length > 0){\n let data_points_1=res1[\"chart_points\"].slice(-1).pop();\n d1[\"data_points\"] = data_points_1\n filteredTimeList=res1[\"time\"]\n }\n\n //apply in training data\n let timeData2 = chartData[\"data_set_2_time\"];\n let chartDetails2 = chartData[\"chartDataPoints_2\"];\n let res2 = applyTimeFilterOnGroupedChart(timeData2,chartDetails2, startTime, endTime, considerEndTimeAlone);\n if (res2[\"chart_points\"].length > 0){\n let data_points_2=res2[\"chart_points\"].slice(-1).pop();\n d2[\"data_points\"] = data_points_2\n filteredTimeList=res2[\"time\"]\n }\n newChartPoints=[d1,d2]\n }\n\n if (filteredTimeList.length > 0){\n chartData[\"time\"]=filteredTimeList;\n chartData[\"chartDataPoints\"] = newChartPoints;\n return chartData\n } else {\n return null;\n }\n}\n\n\nexport function getChartFilterData(currentData, startDate, endDate, chartType, isPatternNotNeeded=false,\n considerEndTimeAlone = false, maxDataPoints = 2) {\n let copiedData = _.cloneDeep(currentData);\n let result = null;\n if (chartType === chartTypes.CONFUSION_MATRIX){\n result = getConfusionMatrixModelPerformanceTimeFilter(copiedData, startDate, endDate, considerEndTimeAlone);\n return result;\n } else if(chartType === chartTypes.HORIZONTAL_BAR_CHART || chartType === chartTypes.MULTILINE_FEATURE_CHART){\n result = getHorizontalChartModelPerformanceTimeFilter(copiedData, startDate, endDate, considerEndTimeAlone);\n return result;\n } else if(chartType === chartTypes.GROUPED_HORIZONTAL_BAR_CHART){\n result = getHorizontalGroupChartModelPerformanceTimeFilter(copiedData, startDate, endDate, considerEndTimeAlone)\n return result;\n }\n else {\n result = filterChartDataForTime(currentData, startDate, endDate, considerEndTimeAlone, maxDataPoints);\n }\n\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n copiedData.boxPlotData = result.boxPlotData;\n }\n let updatedTime = result.time;\n if ((chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false)\n || (chartType !== \"boxPlotZoomable\" && updatedTime.length === 0)) {\n return null;\n } else {\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift_patterns\"] = result.drift_patterns;\n copiedData[\"error_rows\"] = result.error_rows;\n copiedData[\"metric_threshold_error_diff_value\"] = result.metric_threshold_error_diff_value;\n copiedData[\"metric_threshold_error_status\"] = result.metric_threshold_error_status;\n copiedData[\"is_all_string_column\"] = result.is_all_string_column;\n if (result.drift_patterns.length > 0) {\n let latest_drift_index = result.drift_patterns.length - 1;\n copiedData[\"drift_pattern\"] = result.drift_patterns[latest_drift_index];\n }\n let dataPoints;\n if (\"dq_chart_points\" in result) {\n copiedData[\"dq_chart_points\"] = result.dq_chart_points;\n dataPoints = result.dq_chart_points\n } else {\n copiedData[\"drift\"] = result.drift;\n dataPoints = result.drift\n }\n if (\"avg_row_count\" in result) {\n copiedData[\"avg_row_count\"] = result.avg_row_count\n }\n if (\"deviation_percentage\" in result) {\n copiedData[\"deviation_percentage\"] = result.deviation_percentage\n }\n if(!isPatternNotNeeded) {\n let chartTypeData = getChartTypeForMonitorCharts(copiedData);\n let hasError = chartTypeData.hasError;\n copiedData[\"type\"] = chartTypeData.chartPatternType;\n copiedData[\"hasDrift\"] = hasError;\n let drift_len = dataPoints.length;\n if (drift_len > 1) {\n let recentValue = dataPoints[(drift_len - 1)];\n copiedData[\"error_percentage\"] = recentValue.toFixed(2);\n copiedData[\"last_error\"] = dataPoints[(drift_len - 2)].toFixed(2);\n } else if (drift_len === 1) {\n copiedData[\"error_percentage\"] = dataPoints[(drift_len - 1)].toFixed(2);\n copiedData[\"last_error\"] = dataPoints[(drift_len - 1)].toFixed(2);\n } else {\n copiedData[\"error_percentage\"] = 0;\n copiedData[\"last_error\"] = 0;\n }\n }\n\n return copiedData;\n }\n}\n\nexport function getMLModelOptions() {\n let dataSourceOptions = [];\n for (const [key, value] of Object.entries(this.props.monitorModule.mlModelMapping)) {\n dataSourceOptions.push({\"label\": value, \"value\": key});\n }\n\n return dataSourceOptions;\n}\n\nexport function getMLModelOptionsForGivenMapping(mlModels) {\n let modelOptions = [];\n\n for (const value of Object.values(mlModels)) {\n let modelType = value[\"ml_model_type\"]\n if(modelType === \"classification\"){\n let modelDetails = value[\"model_details\"]\n modelType = modelDetails[\"model_type\"]\n if (modelType === undefined) {\n modelType = MODEL_TYPES.BINARY_CLASSIFICATION;\n }\n }\n\n if (modelType === \"clustering\"){\n let no_of_datasets = value[\"model_datasets\"].length\n if (no_of_datasets === 3) {\n modelType = MODEL_TYPES.CLUSTERING_MODEL_WO_RESPONSE\n }\n else {\n modelType = MODEL_TYPES.CLUSTERING_MODEL_WITH_RESPONSE\n }\n }\n modelOptions.push({\"label\": value[\"model_name\"], \"value\": value[\"ml_model_id\"].toString(), \"type\": modelType, \"mlType\": value[\"ml_model_type\"]});\n }\n\n return modelOptions;\n}\n\nexport function normalizeChartData(chart, key=\"drift\") {\n if (chart === undefined || chart === null) {\n return;\n }\n\n let driftData = chart[key];\n let timeSeries = chart.time;\n if (driftData === undefined || driftData === null ||\n timeSeries === undefined || timeSeries === null) {\n return;\n }\n\n let updatedDrift = [];\n let updatedTimeSeries = [];\n for (let index = 0; index < driftData.length; index++) {\n let value = driftData[index];\n let timeData = timeSeries[index];\n if (value === null || value === -1) {\n continue;\n }\n\n updatedDrift.push(value);\n updatedTimeSeries.push(timeData);\n }\n\n chart[key] = updatedDrift;\n chart[\"time\"] = updatedTimeSeries;\n\n let requiresNormalization = chart.requires_normalization;\n if (requiresNormalization === undefined || requiresNormalization === null || !requiresNormalization) {\n return;\n }\n\n let normalizationValue = chart.normalization_value;\n\n // updatedDrift = [];\n let normal_updatedDrift = [];\n for (let i=0; i < driftData.length; i++) {\n let currentValue = driftData[i];\n const normalizationValueElement = normalizationValue[i];\n\n if (normalizationValueElement === undefined ||\n normalizationValueElement === null ||\n normalizationValueElement === 0 || currentValue === 0) {\n normal_updatedDrift.push(currentValue);\n } else {\n let normResult = (currentValue / normalizationValueElement) * 100;\n //let normResult = (Math.abs(currentValue - normalizationValueElement) / (normalizationValueElement)) * 100;\n normal_updatedDrift.push(normResult);\n }\n }\n chart[key] = normal_updatedDrift;\n chart[\"original_value\"] = updatedDrift;\n}\n\n\nexport function getChartType(chartData, chartCount) {\n let isChartTypeFixed = chartData[\"useFixedChart\"];\n let errorChart = chartData[\"errorChart\"];\n let chartType = chartData[\"chartType\"];\n\n if (isChartTypeFixed !== undefined && chartType !== undefined) {\n chartType = convertChartTypeToError(chartType, errorChart);\n return chartType;\n }\n\n chartType = \"areaChart\";\n if (chartCount % 2 === 0) {\n chartType = \"barChart\";\n }\n\n let timeSeries = chartData.time;\n if (timeSeries !== undefined && timeSeries !== null && timeSeries.length <= 2) {\n chartType = \"barChart\";\n }\n\n chartType = convertChartTypeToError(chartType, errorChart)\n return chartType;\n}\n\n\nexport function sortBasedOnMetrics(a, b) {\n /*\n * Sort based on ascending order.\n * Default metrics should come first.\n * */\n let a_metricName = a[\"metric\"];\n let b_metricName = b[\"metric\"];\n if (a_metricName === undefined){\n a_metricName = a[\"name\"];\n b_metricName = b[\"name\"];\n }\n let aPriorityValue = DEFAULT_METRIC_PRIORITY[a_metricName];\n let bPriorityValue = DEFAULT_METRIC_PRIORITY[b_metricName];\n\n if (aPriorityValue === undefined || aPriorityValue === null) {\n aPriorityValue = 100;\n }\n\n if (bPriorityValue === undefined || bPriorityValue === null) {\n bPriorityValue = 100;\n }\n\n if (aPriorityValue > bPriorityValue) return 1;\n if (bPriorityValue > aPriorityValue) return -1;\n\n return 0;\n}\n\nexport function sortBasedOnErrors(a, b) {\n let a_errorName = a[\"type\"];\n let b_errorName = b[\"type\"];\n let a_PriorityValue = DEFAULT_ERROR_PRIORITY[a_errorName];\n let b_PriorityValue = DEFAULT_ERROR_PRIORITY[b_errorName];\n if (a_PriorityValue === undefined || a_PriorityValue === null) {\n a_PriorityValue = 5;\n }\n if (b_PriorityValue === undefined || b_PriorityValue === null) {\n b_PriorityValue = 5;\n }\n if (a_PriorityValue > b_PriorityValue) return 1;\n if (b_PriorityValue > a_PriorityValue) return -1;\n return 0;\n}\n\n\nexport function sortModelErrorsBasedOnMetrics(a, b) {\n /*\n * Sort based on ascending order.\n * Default metrics should come first.\n * */\n let a_metricName = a[\"metric\"];\n let b_metricName = b[\"metric\"];\n\n let aLevel = a['level'];\n let bLevel = b['level'];\n\n let aPriorityData = DEFAULT_ML_METRIC_PRIORITY[a_metricName];\n let bPriorityData = DEFAULT_ML_METRIC_PRIORITY[b_metricName];\n let aPriorityValue = 100;\n let bPriorityValue = 100;\n\n if (aPriorityData !== undefined && aPriorityData !== null) {\n aPriorityValue = aPriorityData[aLevel];\n }\n\n if (aPriorityValue === undefined || aPriorityValue === null) {\n aPriorityValue = 100;\n }\n\n if (bPriorityData !== undefined && bPriorityData !== null) {\n bPriorityValue = bPriorityData[bLevel];\n }\n\n if (bPriorityValue === undefined || bPriorityValue === null) {\n bPriorityValue = 100;\n }\n\n if (aPriorityValue > bPriorityValue) return 1;\n if (bPriorityValue > aPriorityValue) return -1;\n\n return 0;\n}\n\nexport function getPercentage(value1, value2, defaultValue = 0, decimals = 2) {\n const number1 = parseFloat(String(value1));\n const number2 = parseFloat(String(value2));\n let diff = number1 - number2;\n if (parseInt(value1) === 0) {\n return defaultValue;\n }\n\n return ((diff / number1) * 100).toFixed(decimals);\n}\n\nexport function getCurrentUTCDateTime() {\n const currentUTCMoment = moment.utc();\n const parsedYear = currentUTCMoment.year();\n const parsedMonth = currentUTCMoment.month();\n const parsedDay = currentUTCMoment.date();\n const parsedUTCHours = currentUTCMoment.hours();\n const parsedUTCMinutes = currentUTCMoment.minutes();\n const parsedUTCSeconds = currentUTCMoment.seconds();\n\n return new Date(parsedYear, parsedMonth, parsedDay,\n parsedUTCHours, parsedUTCMinutes, parsedUTCSeconds);\n}\n\nexport function trimTimeLabel(timeLabel, timeValue) {\n if (timeValue <= 1){\n return timeLabel.slice(0, -1) //'Removes \"s\" from the end'\n }\n\n return timeLabel;\n}\n\nexport function formatFutureTime(endTime) {\n /*\n * Gives the timer information between the incoming time and current time.\n * Requirements:\n * Incoming time will be always greater than current time.\n *\n * Incoming time object will be in UTC. We will be comparing it against current UTC time.\n *\n * Returns: \"10 Mins more\" or \"10 days more\" depends on the difference between the 2 timings\n */\n let minutes = null;\n let hours = null;\n let days = null;\n let currentTime = getCurrentUTCDateTime();\n let timeDifference = (endTime - currentTime);\n\n let differenceTimeString;\n let suffix = \" more\";\n if (timeDifference < 0) {\n timeDifference = timeDifference * -1;\n suffix = \" ago\";\n }\n\n minutes = parseInt((timeDifference) / (60 * 1000));\n hours = parseInt((timeDifference) / (3600 * 1000));\n days = parseInt((timeDifference) / (24 * 3600 * 1000));\n\n\n if (minutes != null && minutes <= 60) {\n differenceTimeString = minutes + \" \" + trimTimeLabel(\"Mins\", minutes);\n } else if (hours != null && hours <= 24) {\n differenceTimeString = hours + \" \" + trimTimeLabel(\"Hours\", hours);\n } else {\n differenceTimeString = days + \" \" + trimTimeLabel(\"days\", days)\n }\n\n return differenceTimeString + suffix;\n}\n\nexport function parseDateAsUTC(createdTimeString) {\n /*\n * This function parses the incoming GMT date time string into the same Date object.\n * For example, if the incoming GMT time is 'Aug 04 2020 23:59:59',\n * While parsing we will get as 'Aug 05 2020 05:29:59', if the browser is in India. (GMT + 5:30)\n * For the same account & scenario, we might get different time while accessing it from countries\n * which are in different time zones.\n *\n * To handle this discrepancy, while parsing itself we are parsing the date as UTC.\n * So now if we get date string as 'Aug 04 2020 23:59:59',\n * we will get date object as 'Aug 04 2020 23:59:59'\n * */\n const parsedMoment = moment.utc(createdTimeString);\n\n const parsedYear = parsedMoment.year();\n const parsedMonth = parsedMoment.month();\n const parsedDay = parsedMoment.date();\n const parsedUTCHours = parsedMoment.hours();\n const parsedUTCMinutes = parsedMoment.minutes();\n const parsedUTCSeconds = parsedMoment.seconds();\n const utcDate = new Date(parsedYear, parsedMonth, parsedDay,\n parsedUTCHours, parsedUTCMinutes, parsedUTCSeconds);\n\n return utcDate;\n}\n\nexport function addTime(inputDate, quantity, part = DateParts.YEAR) {\n const year = inputDate.getFullYear();\n const month = inputDate.getMonth();\n const day = inputDate.getDate();\n\n let result = null;\n if (part === DateParts.YEAR) {\n result = new Date(year + quantity, month, day);\n } else if (part === DateParts.MONTH) {\n result = new Date(year, month + quantity, day);\n } else if (part === DateParts.DAY) {\n result = new Date(year, month, day + quantity);\n }\n\n return result;\n}\n\n\nexport function convertChartTypeToError(chartType, isError) {\n if (!isError) {\n return chartType;\n }\n\n if (chartType === \"barChart\") {\n return \"barWithError\";\n }\n\n if (chartType === \"areaChart\") {\n return \"areaWithError\";\n }\n\n return chartType;\n}\n\nexport function logoutPageRedirect(){\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return true\n }\n else{\n return false\n }\n}\n\nexport function removeLocalStorageKeys() {\n\n // Clear localstorage\n localStorage.removeItem('DataSetupStatus');\n localStorage.removeItem('sessionToken');\n localStorage.removeItem('team_id');\n localStorage.removeItem('env_id');\n localStorage.removeItem(\"org_id\");\n localStorage.removeItem('user_id');\n localStorage.removeItem('current_status');\n localStorage.removeItem('user_signup_type');\n localStorage.removeItem('isPlanExpired');\n localStorage.removeItem(MANDATE_RESET_PASSWORD.Reset_Password);\n localStorage.removeItem('qualdoPlan');\n localStorage.removeItem('qualdoPlanCycle');\n localStorage.removeItem('qualdoEdition');\n localStorage.removeItem('plan_details');\n localStorage.removeItem('permissions');\n localStorage.removeItem('user_name');\n localStorage.removeItem('qualdoPlanDetails');\n localStorage.removeItem('emailId');\n localStorage.removeItem('warning_message');\n localStorage.removeItem('selected_notification_id');\n localStorage.removeItem('featureAccess');\n\n // Clear localforage - local db memory and reset the values\n store.dispatch(setInitialValues());\n store.dispatch(setMonitorInitialValues());\n\n}\n\nexport function convertBytesToGB(values_in_bytes){\n return (values_in_bytes / Math.pow(1024, 3));\n}\n\nexport function formatBytes(a, b = 2) {\n if (0 === a) return \"0 GB\";\n const c = 0 > b ? 0 : b, d = Math.floor(Math.log(a) / Math.log(1024));\n const memoryValue = parseFloat((a / Math.pow(1024, d)).toFixed(c));\n return memoryValue + \" \" + MEMORY_UNITS[d];\n}\n\nexport function getChartTypeForMonitorCharts(chartData) {\n let hasError = false;\n let hasSecondaryError = false;\n let threshold_error_len = 0;\n const metricThresholdErrorStatuses = chartData.metric_threshold_error_status;\n if (metricThresholdErrorStatuses !== undefined && metricThresholdErrorStatuses !== null) {\n threshold_error_len = metricThresholdErrorStatuses.length;\n }\n\n const driftPatterns = chartData.drift_patterns;\n let chartPatternType = driftPatterns[driftPatterns.length - 1];\n\n if (threshold_error_len > 0) {\n let metric_threshold_error_status = metricThresholdErrorStatuses[(threshold_error_len - 1)];\n if (metric_threshold_error_status) {\n chartPatternType = DRIFT_PATTERN_TYPES.THRESHOLD_ALERT;\n }\n\n // If the last threshold status is True which means error and if it is ML Data Consistency,\n // we will show the chart pattern type as \"Errors Detected\"\n if(metric_threshold_error_status && chartData[\"name\"] === ML_DATA_CONSISTENCY) {\n chartPatternType = DRIFT_PATTERN_TYPES.ERRORS_DETECTED;\n }\n\n }\n\n let prev = undefined;\n for (let i = 0; i < driftPatterns.length; i++) {\n const currentDriftPattern = driftPatterns[i];\n if (NON_ERROR_DRIFT_PATTERNS.includes(currentDriftPattern)){\n prev = currentDriftPattern;\n continue;\n }\n\n if (currentDriftPattern === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT){\n prev = currentDriftPattern;\n hasError = true;\n break;\n }\n\n // if (prev === undefined) {\n // prev = currentDriftPattern;\n // continue;\n // }\n\n // hasSecondaryError = true;\n\n // if (currentDriftPattern !== prev){\n // hasError = true;\n // prev = currentDriftPattern;\n // break;\n // }\n\n // prev = currentDriftPattern;\n }\n\n // If last data point is not error, but previous data point has any errors pattern\n // We will show this in error. i.e Gray and Red colour bars in charts\n if (!hasError && hasSecondaryError) {\n hasError = true;\n }\n\n // If last data point is not error, but previous data point has any errors pattern\n // We will show this in error. i.e Grey and Red colour bars in charts\n if (hasError && prev !== undefined &&\n !NON_ERROR_DRIFT_PATTERNS.includes(prev) &&\n NON_ERROR_DRIFT_PATTERNS.includes(chartPatternType)) {\n chartPatternType = prev;\n }\n\n return {\n \"hasError\": hasError,\n \"chartPatternType\": chartPatternType\n }\n}\n\nexport function getAliasChartName(actualChartName, isDataSetLevel) {\n let aliasChartName = actualChartName;\n if (actualChartName === MODEL_DRIFT) {\n if (isDataSetLevel) {\n // Dataset level - Model Drift will be shown as Serving Data Drift\n aliasChartName = SERVING_DATA_DRIFT;\n } else {\n // Attribute level - Model Drift will be shown as Feature Drift\n aliasChartName = FEATURE_DRIFT_TEMPORAL;\n }\n }\n\n return aliasChartName;\n}\n\nexport function getAliasNameForMetric(metricName) {\n let updatedMetricName = METRIC_ALIAS_NAMES[metricName];\n if (updatedMetricName !== undefined){\n return updatedMetricName === \"Unique Values\" ? \"Unique Rows\" : updatedMetricName;\n }\n if(metricName === \"Unique Values\" || metricName === \"Unique Rows\"){\n return \"Uniqueness\"\n }\n return metricName\n}\n\nexport function getAliasNameForMetricAttributeLevel(metricName) {\n let updatedMetricName = METRIC_ALIAS_NAMES[metricName];\n if (updatedMetricName !== undefined){\n return updatedMetricName === \"Unique Values\" ? \"Unique Values\" : updatedMetricName;\n }\n if(metricName === \"Unique Values\" || metricName === \"Unique Rows\"){\n return \"Uniqueness\"\n }\n return metricName\n}\n\nexport function getErrorTypeForStatsComponent(errorType){\n let updatedErrorType = errorType;\n if (errorType === \"NO_DRIFT\" || errorType === \"not_computed\"){\n updatedErrorType = \"No Errors Detected\";\n }\n\n if (errorType === \"NO_DRIFT\" || errorType === \"not_computed\" || \n NON_ERROR_DRIFT_PATTERNS.includes(errorType)){\n updatedErrorType = \"No Errors Detected\";\n}\n\n return convertToCamelCase(updatedErrorType);\n}\n\nexport function convertToCamelCase(input) {\n if (input === undefined || input === null || input.length === 0) {\n return input;\n }\n\n const firstChar = input.charAt(0);\n return firstChar.toUpperCase() + input.slice(1);\n}\n\nexport function getProtocol(ipAddress) {\n if (ipAddress.includes(\"localhost\")){\n return \"http:\";\n }\n\n return PROTOCOL;\n}\n\nexport function getQualdoPlanCycle() {\n let selectedPlanCycle = localStorage.getItem('qualdoPlanCycle');\n if (selectedPlanCycle === QualdoPlanCycle.TRIAL_14_DAYS) {\n selectedPlanCycle = QualdoPlanCycle.MONTHLY;\n }\n if (selectedPlanCycle === undefined || selectedPlanCycle === null ) {\n selectedPlanCycle = QualdoPlanCycle.YEARLY;\n }\n return selectedPlanCycle;\n}\n\nexport function removeQualdoPlanCycle() {\n localStorage.removeItem(\"qualdoPlanCycle\");\n localStorage.removeItem(\"src_choose_plan\")\n}\n\nexport function getCurrentPlanDetailOfUser() {\n let details_json = null;\n let planDetails = localStorage.getItem(\"plan_details\");\n if (planDetails !== null && planDetails !== undefined\n && planDetails !== \"null\" && String(planDetails).trim().length > 0) {\n details_json = JSON.parse(planDetails);\n }\n\n return details_json;\n}\n\nexport function isPlanChanged(selectedPlan, selectedCycle) {\n let currentUserPlan = getCurrentPlanDetailOfUser();\n if (currentUserPlan === null) {\n return true;\n }\n\n let currentPlanCycle = currentUserPlan.plan_cycle;\n let currentPlanName = currentUserPlan.plan_name;\n return (selectedPlan !== currentPlanName || selectedCycle !== currentPlanCycle);\n}\n\nexport function isUserOnFreeTrial() {\n let currentUserPlan = getCurrentPlanDetailOfUser();\n if (currentUserPlan === null) {\n return false;\n }\n\n let currentPlanCycle = currentUserPlan.plan_cycle;\n let currentPlanName = currentUserPlan.plan_name;\n return (currentPlanCycle === QualdoPlanCycle.TRIAL_14_DAYS &&\n currentPlanName === QualdoPlanVersions.FREE)\n}\n\nexport function getRedirectionLinkToExpiredPlan() {\n let freeTrialUser = isUserOnFreeTrial();\n if (freeTrialUser) {\n return \"/choose-plan\";\n }\n\n return \"/plan\";\n}\n\nexport function getRedirectionLinkToChangePassword() {\n return \"/password-reset\"\n}\n\nexport function setBasicPlanInLocalStorage() {\n /*\n * This function will be called when user upgrades from Free tier to Basic plan.\n * After updating plan details in database, we need to update the same in local storage.\n * This function will update the plan detail present in local storage\n */\n let currentUserPlan = getCurrentPlanDetailOfUser();\n if (currentUserPlan === null) {\n return;\n }\n\n currentUserPlan.plan_cycle = QualdoPlanCycle.MONTHLY;\n localStorage.setItem(\"plan_details\", JSON.stringify(currentUserPlan));\n}\n\nexport function isUserOnBasicPlan() {\n let currentUserPlan = getCurrentPlanDetailOfUser();\n if (currentUserPlan === null) {\n return false;\n }\n\n let currentPlanCycle = currentUserPlan.plan_cycle;\n let currentPlanName = currentUserPlan.plan_name;\n return (currentPlanCycle === QualdoPlanCycle.MONTHLY &&\n currentPlanName === QualdoPlanVersions.FREE)\n}\n\n\nexport function isDataLimitExceeded() {\n let currentUserPlan = getCurrentPlanDetailOfUser();\n if (currentUserPlan === null) {\n return false;\n }\n\n return currentUserPlan.usage_exceeded;\n}\n\nexport function filterBoxPlotData(chartData) {\n if (chartData !== undefined && chartData !== null) {\n for (let j=0;j substitute q1 = 0 and q1_min = 0\n if (quantile[i].q1 === quantile[i].q1_min) {\n quantile[i][\"sub_q1\"] = 0;\n quantile[i][\"sub_q1_min\"] = 0;\n quantile[i][\"sub_min\"] = 0;\n } else {\n // q1_min is different => substitute q1=q1_min\n quantile[i][\"sub_q1\"] = quantile[i].q1_min;\n }\n }*/\n quantileNew.push(quantile[i]);\n timeNew.push(time[i]);\n driftPatternNew.push(driftPattern[i])\n }\n }\n }\n chartData.statistics[j].time = timeNew\n chartData.statistics[j].quantile = quantileNew\n chartData.statistics[j].drift_patterns = driftPatternNew\n }\n }\n return chartData\n }\n\nexport function getCurrencySymbol() {\n let currentPlan = getCurrentPlanDetailOfUser();\n if (currentPlan === null) {\n return DEFAULT_CURRENCY_SYMBOL;\n }\n\n return currentPlan.details.currency;\n}\n\n\nexport function canDisableShowMore(data) {\n if (data === undefined || data === null) {\n return true;\n }\n\n const enableShowMore = (data.hasChartData === true);\n return !enableShowMore;\n}\n\n\nexport function hasValidNumberOfDatasets(integrationMap, selectedDataSource) {\n if (integrationMap === undefined || integrationMap === null) {\n return true;\n }\n\n let currentDatasourceInfo = integrationMap[selectedDataSource];\n if (currentDatasourceInfo === undefined || currentDatasourceInfo === null) {\n return true;\n }\n\n const discoveryStatus = currentDatasourceInfo.discovery_status;\n const integrationStatusText = currentDatasourceInfo.status_text;\n\n if (discoveryStatus === \"complete\" && integrationStatusText === NO_DATA_SET_FOUND_TEXT) {\n return false;\n }\n\n return true;\n}\n\n\n\nexport function parseMetaMapping(props, type, parentId, id, selectedEnvironmentOption, selectedDataSourceOption) {\n let metaMapping = _.cloneDeep(props.dataModule.metaData);\n let prefix;\n switch (type) {\n case DATA_SET: {\n prefix = `${selectedEnvironmentOption.value}.${parentId}.${id}`;\n // const filtered = Object.keys(metaMapping)\n // .filter( key => key.startsWith(prefix))\n // .reduce((obj, key) => {\n // obj[key] = metaMapping[key];\n // return obj;\n // }, {});\n\n let dataSetName = metaMapping[prefix];\n if (dataSetName === undefined) {\n return \"NA\";\n }\n\n let requiredDatasetName = datasetNameFromMappedValue(dataSetName);\n return requiredDatasetName;\n }\n case ATTRIBUTE: {\n prefix = `${selectedEnvironmentOption.value}.${selectedDataSourceOption.value}.${parentId}.${id}`;\n // const filtered = Object.keys(metaMapping)\n // .filter(key => key === prefix)\n // .reduce((obj, key) => {\n // obj[key] = metaMapping[key];\n // return obj;\n // }, {});\n \n let attributeName = metaMapping[prefix];\n if (attributeName === undefined) {\n return \"NA\";\n }\n\n let requiredAttributeName = attributeNameFromMappedValue(attributeName)\n return requiredAttributeName;\n }\n default:\n return \"NA\";\n }\n}\n\n\nexport function capitalize(_stringVal) {\n if (_stringVal === undefined || _stringVal === null) {\n return _stringVal;\n }\n\n const stringArray = _stringVal.split(/\\b(\\s)/);\n let result = \"\";\n for (let data of stringArray) {\n if (data !== \" \") {\n result = result + data[0].toUpperCase() + data.slice(1)\n } else {\n result = result + \" \";\n }\n }\n return result;\n}\n\n\nexport function getDatsetIdForSelectedDatasource(props, integrationId) {\n let datasetId = -1;\n let dataSourceDataSetMapping = props.dataSourceDataSetMapping;\n if (dataSourceDataSetMapping !== undefined && dataSourceDataSetMapping !== null && integrationId !== -1) {\n let datasetIds = dataSourceDataSetMapping[integrationId];\n if (datasetIds !== undefined && datasetIds !== null) {\n if (datasetIds.length > 0) {\n datasetId = datasetIds[0];\n }\n }\n }\n return datasetId;\n}\n\nexport function getAttributeNameIdForSelectedDatasource(props, integrationId, datasetId) {\n let attributeId = -1;\n let environmentId = -1;\n let attributeName;\n let dataSetAttributeMapping = props.dataSetAttributeMapping;\n if (dataSetAttributeMapping !== undefined && dataSetAttributeMapping !== null &&\n datasetId !== -1) {\n let attributeIds = dataSetAttributeMapping[datasetId];\n if (attributeIds.length > 0) {\n attributeId = attributeIds[0];\n }\n }\n for (const [key, value] of Object.entries(props.environmentDataSourceMapping)) {\n if (value.includes(integrationId.toString())) {\n environmentId = key;\n }\n }\n if (environmentId !== -1 && integrationId !== -1 && datasetId !== -1 && attributeId !== -1) {\n let metaDataKey = environmentId.toString() + \".\" + integrationId.toString() + \".\" + datasetId.toString() + \".\" + attributeId.toString();\n let metaDataValue = props.metaData[metaDataKey];\n if (metaDataValue !== undefined && metaDataValue !== null) {\n attributeName = attributeNameFromMappedValue(metaDataValue);\n }\n }\n return {\"attributeName\": attributeName, \"attributeId\": attributeId};\n}\n\n\nexport function getRowCountContributionFromData(chartData) {\n const errorRowList = chartData.error_rows;\n if (errorRowList === undefined || errorRowList === null) {\n return GENERIC_CONSTANTS.NA;\n }\n\n const rowCount = errorRowList.length;\n if (rowCount === 0) {\n return GENERIC_CONSTANTS.NA;\n }\n\n return errorRowList[rowCount - 1];\n}\n\n\nexport function get_document_link(page=\"index\"){\n let token = localStorage.getItem(\"sessionToken\");\n let document_link =\"#\"\n if (token !== \"\" && token !== null && token !== undefined) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n removeLocalStorageKeys();\n window.location = '/';\n }\n token = item.value;\n if(page === undefined){\n page = \"index\"\n }\n let data = {\"user_id\":localStorage.getItem(\"user_id\"),\n \"team_id\":localStorage.getItem(\"team_id\"),\n \"auth_token\":token,\n \"iam_ip\":iam_ip\n }\n\n // Encrypt data to prevent exposure of user details in url\n // Decryption will handled in documentation code [In Function : index.html]\n let encryptData = encryptForLocalUsage(data)\n encryptData = encryptData.replace(/\\+/g, 'qua111111d000');\n let authDetails = \"?data=\"+encryptData\n let url = DOCUMENT_LINK_MAPPING[page];\n if (url !== undefined){\n let sections = url.split(\"#\")\n if(sections.length > 1){\n let section = sections[1];\n url= sections[0];\n authDetails = authDetails+\"§ion=\"+section;\n }\n } \n let doc_link = process.env.REACT_APP_DOCUMENT_BASE_LINK\n document_link = doc_link + url+authDetails\n\n }\n return document_link\n}\n\nexport function filterInfoData_mlModel(filteredValues, infoData) {\n let updatedInfoData = {}\n if (filteredValues === null || filteredValues === undefined || infoData === undefined || infoData === null) {\n return updatedInfoData;\n }\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = {...updatedInfoData, ...filtered}\n });\n return updatedInfoData;\n}\n\nexport function getTimeFilteredData_mlModel(allMetricInfo, startDate,\n endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n if (timeList.length === 0) {\n return [];\n }\n\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n });\n\n if (startIndex !== -1 && endIndex !== -1) {\n if (startIndex === 0 && endIndex === 0) {\n endIndex = 1;\n }\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`][startIndex];\n return tempMetricValueList;\n }\n return null;\n}\n\nexport function filterTimeData_mlModel_profile(key, tempStartDate) {\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return {\"time\": timeList, \"values\": STATIC_CARDS[key]}\n}\n\nexport function formCardData_mlModel(filteredValues, changedDataSource = -1,\n mlModelId, timeFilterApplied = false,\n startDate = null, endDate = null) {\n let cardInfo = [];\n let allMetricInfo;\n\n let dataSourceId = this.state.modelDataSourceDetails[mlModelId];\n\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[dataSourceId]);\n } else {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n }\n if (filteredValues.length !== 0) {\n allMetricInfo = this.filterInfoData_mlModel(filteredValues, allMetricInfo);\n }\n let commonId = 0;\n ML_METRIC_ORDER.forEach((key) => {\n let attributeMetricList = [];\n for (const metricInfo in allMetricInfo) {\n if (key in allMetricInfo[metricInfo]) {\n if (timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData_mlModel(allMetricInfo, startDate, endDate, metricInfo, key);\n if (timeFilteredData !== null && timeFilteredData.length > 0) {\n attributeMetricList.push(Math.min.apply(null, timeFilteredData));\n }\n } else {\n attributeMetricList.push(allMetricInfo[metricInfo][key]);\n }\n }\n }\n if (attributeMetricList.length !== 0) {\n let tempInfo = {};\n if (key === 16) {\n tempInfo[\"metric_name\"] = \"No of Serving Features Drift\";\n tempInfo[\"metric_value\"] = attributeMetricList.filter(x => x !== 0).length;\n } else if (key === 10) {\n tempInfo[\"metric_name\"] = \"No of Serving Features Drift Over Training\";\n tempInfo[\"metric_value\"] = attributeMetricList.filter(x => x !== 0).length;\n } else {\n tempInfo[\"metric_name\"] = ML_METRIC[key];\n tempInfo[\"metric_value\"] = `${(attributeMetricList.reduce((a, b) => a + b) / attributeMetricList.length).toFixed(2)}`;\n }\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = ML_METRIC_COLOR[key].cardBackground;\n tempInfo[\"textColor\"] = ML_METRIC_COLOR[key].textColor;\n tempInfo[\"idValue\"] = `mlmetric${commonId}`;\n tempInfo[\"chartData\"] = filterTimeData_mlModel_profile(commonId, this.state.startDate);\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n }\n });\n\n return cardInfo;\n}\n\nexport function getServingFeatureDriftAttributes(data, metaData, timeFilterApplied = false,\n startDate = null, endDate = null) {\n\n let metaDataLength = Object.keys(metaData).length;\n if(data === undefined || metaDataLength === 0) {\n return {\"attributeInfo\":[],\"attributes\": [], \"attributesOptions\": []}\n }\n let attributeInfo = []\n let attributes = []\n let servingDrift = Object.keys(data)[0]\n let servingDriftData = data[servingDrift]\n let attributesOptions = []\n for (const [key, value] of Object.entries(servingDriftData)) {\n let metaDataValue = metaData[key]\n if(metaDataValue !== undefined) {\n let metaDataSplit = metaDataValue.split(METADATA_MAP_VALUE_SEPARATOR)\n let idsSplit = key.split(METADATA_MAP_KEY_SEPARATOR)\n let attributeName = metaDataSplit[metaDataSplit.length - 1]\n let attributeId = idsSplit[idsSplit.length - 1];\n let timeList = value.time;\n if(attributeName !== undefined && timeList.length > 0) {\n attributesOptions.push({\"label\": attributeName, \"value\": attributeId})\n let latest_refresh = timeList[(timeList.length - 1)]\n startDate = moment().format('YYYY-MM-DD 00:00:00');\n endDate = moment().format('YYYY-MM-DD 23:59:59');\n attributeInfo.push({\"attribute_name\": attributeName, \"drift\": value[\"drift\"], \"drift_patterns\": value[\"drift_patterns\"], \"time\": value[\"time\"],\"latest_drift\":value[\"error_percentage\"]})\n if(!attributes.includes(attributeName) && value[\"drift_pattern\"] !== \"not_computed\" && value[\"drift_pattern\"] !== \"NO_DRIFT\" && (moment(latest_refresh).isSameOrBefore(moment(endDate)) && moment(latest_refresh).isSameOrAfter(moment(startDate)))) {\n attributes.push(attributeName)\n }\n\n }\n }\n }\n return {\"attributeInfo\":attributeInfo,\"attributes\": attributes, \"attributesOptions\": attributesOptions};\n}\n\nexport function formModelErrorDataForListView(filteredValues, modelDataSourceDetails,\n propsDataModuleInfo,\n mlModelId, timeFilterApplied = false,\n startDate = null, endDate = null) {\n let cardInfo = [];\n let allMetricInfo;\n if (modelDataSourceDetails === undefined || modelDataSourceDetails === null) {\n return [];\n }\n\n let dataSourceId = modelDataSourceDetails[mlModelId];\n if (dataSourceId === undefined || dataSourceId === null) {\n return [];\n }\n\n allMetricInfo = _.cloneDeep(propsDataModuleInfo[dataSourceId]);\n\n if (filteredValues.length !== 0) {\n allMetricInfo = filterInfoData_mlModel(filteredValues, allMetricInfo);\n }\n\n ML_METRIC_ORDER.forEach((key) => {\n let attributeMetricList = [];\n for (const metricInfo in allMetricInfo) {\n if (key in allMetricInfo[metricInfo]) {\n if (timeFilterApplied === false) {\n startDate = moment().format('YYYY-MM-DD 00:00:00');\n endDate = moment().format('YYYY-MM-DD 23:59:59');\n }\n let timeFilteredData = getTimeFilteredData_mlModel(allMetricInfo, startDate,\n endDate, metricInfo, key);\n if (timeFilteredData) {\n attributeMetricList.push(timeFilteredData);\n }\n\n }\n }\n if (attributeMetricList.length !== 0) {\n let tempInfo = {};\n if (key === 16) {\n tempInfo[\"text\"] = \"No of Serving Features Drift\";\n tempInfo[\"value\"] = attributeMetricList.filter(x => x !== 0).length;\n } else if (key === 10) {\n tempInfo[\"text\"] = \"No of Serving Features Drift Over Training\";\n tempInfo[\"value\"] = attributeMetricList.filter(x => x !== 0).length;\n } else {\n tempInfo[\"text\"] = ML_METRIC[key];\n tempInfo[\"value\"] = `${(attributeMetricList.reduce((a, b) => a + b) / attributeMetricList.length).toFixed(2)}`;\n }\n\n cardInfo.push(tempInfo);\n }\n });\n\n return cardInfo;\n}\n\nexport function mapModelToDataSource(modelDetails) {\n /**\n * Returns model to data source mapping information.\n * A dictionary with model id as key and corresponding data source id as it's value\n * */\n let modelToDataSource = {};\n modelDetails.forEach((modelDetail) => {\n modelToDataSource[modelDetail.ml_model_id] = modelDetail.integration_id;\n });\n\n return modelToDataSource;\n}\n\nexport function getMonitorTabDQListViewTableData(datasetMapping, dqListData, monitorModule, timelinessData) {\n let dqData = []\n if(dqListData.dataset_level_data !== undefined && dqListData.attribute_level_data !== undefined && timelinessData !== undefined) {\n let timelinessDataValues = timelinessData[\"DefaultDataSet\"]\n let issuedAttributes = dqListData.issued_attributes;\n let attributeLevelData = dqListData.attribute_level_data;\n let dataset_level_data = dqListData.dataset_level_data;\n let followAttributes = monitorModule.follow_attributes;\n let attributeIds = datasetMapping[\"attributeIds\"]\n for (const [key, value] of Object.entries(datasetMapping[\"idDatasetDetail\"])) {\n if(key === \"attributeIds\" || issuedAttributes[key] === undefined) {\n continue;\n }\n let totalLength = issuedAttributes[key].length\n let lastProfilingTime = issuedAttributes[key][0][\"refresh_time\"]\n let createdTime = issuedAttributes[key][totalLength - 1][\"refresh_time\"]\n let startDate = moment().subtract(9, 'days').set({\"hour\": 0, \"minute\": 0, \"seconds\": 0});\n let endDate = moment().endOf('day').set({\"hour\": 23, \"minute\": 59, \"seconds\": 59});\n let previousTime = null;\n let isAlertNeeded = !(moment(lastProfilingTime).isSameOrBefore(endDate) && moment(lastProfilingTime).isSameOrAfter(startDate))\n if(isAlertNeeded) {\n previousTime = lastProfilingTime\n }\n let filteredTimelinessData = []\n let filteredTimeliness = timelinessDataValues[0]\n if(filteredTimeliness !== undefined) {\n filteredTimelinessData = filteredTimeliness[\"data\"].filter(x=>x.data_set_id === key)\n }\n let datasourceName = value[\"dataSourceName\"];\n let datasetName = value[\"datasetName\"]\n let thumbnailCharts = getThumbnailChartsDqErr(dataset_level_data[key], key, datasourceName, datasetName, filteredTimelinessData, datasetName)\n let row = []\n let dataSourceId = value[\"dataSourceId\"]\n let follow_attributes_details = {}\n if(Object.keys(followAttributes).length !== 0){\n follow_attributes_details = followAttributes[dataSourceId]\n }\n row.push({\"value\": datasourceName, \"type\": \"td\", \"group\": \"dataset\"});\n row.push({\"value\": normalizeChildDatasetName(datasetName), \"type\": \"datasetName\", \"lastProfilingTime\": lastProfilingTime, \"previousTime\": previousTime});\n row.push({\"value\": 'Dataset Level - Includes All Attributes', \"type\": \"td\"});\n row.push({\"value\": thumbnailCharts, \"type\": \"thumbnailCharts\", \"issuedAttributes\": issuedAttributes[key], \"noDataAvailable\": false, \"createdTime\": createdTime});\n row.push({\"value\": key, \"type\": \"action\", \"level\": \"dataset\", \"datasetName\": datasetName, \"dataSourceId\": value[\"dataSourceId\"], \"dataSourceName\":datasourceName, \"lastProfilingTime\": lastProfilingTime})\n dqData.push(row)\n let filteredAttributes = attributeIds.filter(x=>x.datasetId === key)\n for(let j=0;j 0) {\n referenceDataset = contributions[contributions.length - 1].target_data_set_name;\n }\n\n chartData[\"referenceDataSetName\"] = referenceDataset;\n }\n\n chartData[DQ_CHART_POINTS] = chartData[\"value\"];\n\n normalizeChartData(chartData, DQ_CHART_POINTS);\n\n let chartValues = chartData[DQ_CHART_POINTS];\n let drift_len = chartValues.length;\n\n if (drift_len === 0) {\n continue;\n }\n let time_len = chartData[\"time\"].length;\n\n if (drift_len > 1) {\n chartData[\"error_percentage\"] = chartValues[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartValues[(drift_len - 2)].toFixed(2);\n } else if (drift_len === 1) {\n chartData[\"error_percentage\"] = chartValues[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartValues[(drift_len - 1)].toFixed(2);\n } else {\n chartData[\"error_percentage\"] = 0;\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = 0;\n }\n\n // We are changing scale of all charts to min max scale\n // Part of fix for issue 1038\n chartData[\"scale\"] = MIN_MAX_SCALE;\n\n // if (chartInfo[\"metricType\"] === 'custom' || MIN_MAX_SCALE_LIST.includes(key)) {\n // chartData[\"scale\"] = MIN_MAX_SCALE;\n // }\n\n updatedData.push(chartData)\n\n }\n }\n\n\n return updatedData\n\n}\n\nexport function setDQShowMoreDataOnGroupingLevel(dataSetData, isDataSet,\n dataSourceId, metricType,\n section, propsDataModule) {\n /**\n * This function will prepare the data for 'Show More' section of\n * Data Quality error page in \"Monitor\" section\n *\n */\n let gridData = [];\n let profileKeys = [\"avg\", \"duplicate\", \"empty\", \"max\", \"min\", \"mode\", \"std\", \"unique\"];\n let hasChartData = false;\n\n if (dataSetData !== undefined) {\n for (const [key, value] of Object.entries(dataSetData)) {\n let metricGroup = {};\n let chartInfo = getMetaInformationAboutChart(isDataSet, key);\n\n // Skip attribute level charts for consistency related metrics\n if (!isDataSet && REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART.includes(key)) {\n continue;\n }\n\n metricGroup[\"metric\"] = key;\n metricGroup[\"key\"] = `${key}_${isDataSet}`;\n let processedKeys = [];\n metricGroup[\"description\"] = chartInfo[\"description\"];\n metricGroup[\"header\"] = chartInfo[\"header\"];\n metricGroup[\"metricType\"] = chartInfo[\"metricType\"];\n metricGroup[\"data\"] = []\n\n if (metricType !== chartInfo[\"metricType\"]) {\n continue;\n }\n if (key === \"Recency\" && !isDataSet) {\n continue;\n }\n\n if (profileKeys.includes(key)) {\n continue;\n }\n\n for (const [attribute, chartData] of Object.entries(value)) {\n // If consolidation is done at attribute level,\n // make sure that there are 4 parts in attribute key (Ex) 22.33.16.2003)\n const attributeKeys = attribute.split(METADATA_MAP_KEY_SEPARATOR);\n if (!isDataSet && attributeKeys.length !== 4) {\n continue;\n }\n\n let data_src_id = attributeKeys[1];\n if (dataSourceId !== null && dataSourceId !== data_src_id) {\n continue;\n }\n\n // To avoid repetitive charts for same attribute - metric combination\n const metricName = chartData.name;\n let uniqueKey = `${attribute}_${metricName}`;\n if (processedKeys.includes(uniqueKey)) {\n continue;\n }\n processedKeys.push(uniqueKey);\n\n let metaData = propsDataModule.metaData[attribute];\n if (metaData === undefined) {\n metaData = propsDataModule.metaData;\n // const filtered = Object.keys(metaData)\n // .filter(key => key.startsWith(attribute))\n // .reduce((obj, key) => {\n // obj[key] = metaData[key];\n // return obj;\n // }, {});\n metaData = metaData[attribute];\n if (metaData !== undefined) {\n let metaDataAfterSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR)\n if(metaDataAfterSplit.length > 4) {\n metaData = metaDataAfterSplit.slice(0, metaDataAfterSplit.length - 2).join(METADATA_MAP_VALUE_SEPARATOR);\n\n }\n }\n }\n if (metaData !== undefined) {\n const metadataSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n let attributeName = null;\n let datasetName;\n let toolTiptopHeader;\n\n if (isDataSet) {\n datasetName = metadataSplit[2];\n toolTiptopHeader = datasetName;\n } else {\n datasetName = metadataSplit[2];\n attributeName = metadataSplit[metadataSplit.length - 1];\n toolTiptopHeader = attributeName;\n }\n if (chartData[\"name\"] === \"Data Drift\") {\n let boxPlotData = {}\n let statistics = {}\n let quantile = chartData[\"boxplot_data\"]\n if (quantile !== undefined && quantile !== null) {\n statistics[\"attribute_name\"] = attributeName\n statistics[\"quantile\"] = quantile\n statistics[\"drift_patterns\"] = chartData[\"drift_patterns\"]\n statistics[\"time\"] = chartData[\"time\"]\n if (attributeName !== null) {\n boxPlotData[\"chart_level\"] = \"Attribute\"\n } else {\n boxPlotData[\"chart_level\"] = \"Dataset\"\n }\n boxPlotData[\"statistics\"] = [statistics]\n chartData[\"boxPlotData\"] = boxPlotData\n chartData[\"chartType\"] = \"boxPlotZoomable\"\n }\n }\n let chartTypeData = getChartTypeForMonitorCharts(chartData);\n let hasError = chartTypeData.hasError;\n chartData[\"type\"] = chartTypeData.chartPatternType;\n chartData[\"hasDrift\"] = hasError;\n if (attributeName !== null) {\n chartData[\"attribute_name\"] = attributeName;\n }\n let idSplit = attribute.split(METADATA_MAP_KEY_SEPARATOR)\n\n chartData[\"datasetName\"] = datasetName;\n chartData[\"errorChart\"] = true;\n chartData[\"toolTiptopHeader\"] = toolTiptopHeader;\n chartData[\"data_set_id\"] = idSplit[2];\n chartData[\"attribute_id\"] = idSplit[idSplit.length-1];\n chartData[\"title\"] = `${metadataSplit.join(\" > \")} - ${metricName}`;\n let charKeyUnformatted = `${metricName}_${attribute}`;\n chartData[\"key\"] = replaceMetricNameByBracket(charKeyUnformatted);\n chartData[\"data_source_name\"] = metadataSplit[1];\n if (REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART.includes(metricName)) {\n chartData[\"settings\"] = CONTRIBUTION_KEY;\n }\n\n if (metricName === DATA_TYPE_CONSISTENCY) {\n chartData[\"referenceDataSetLabel\"] = \"Reference Dataset\";\n let contributions = chartData[\"contribution\"];\n let referenceDataset = \"\";\n if (contributions !== undefined && contributions.length > 0) {\n referenceDataset = contributions[contributions.length - 1].target_data_set_name;\n }\n\n chartData[\"referenceDataSetName\"] = referenceDataset;\n }\n\n chartData[DQ_CHART_POINTS] = chartData[\"value\"];\n\n normalizeChartData(chartData, DQ_CHART_POINTS);\n\n let chartValues = chartData[DQ_CHART_POINTS];\n let drift_len = chartValues.length;\n if (drift_len === 0) {\n continue;\n }\n let time_len = chartData[\"time\"].length\n\n if (drift_len > 1) {\n chartData[\"error_percentage\"] = chartValues[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartValues[(drift_len - 2)].toFixed(2);\n } else if (drift_len === 1) {\n chartData[\"error_percentage\"] = chartValues[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartValues[(drift_len - 1)].toFixed(2);\n } else {\n chartData[\"error_percentage\"] = 0;\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = 0;\n }\n\n // We are changing scale of all charts to min max scale\n // Part of fix for issue 1038\n chartData[\"scale\"] = MIN_MAX_SCALE;\n\n // if (chartInfo[\"metricType\"] === 'custom' || MIN_MAX_SCALE_LIST.includes(key)) {\n // chartData[\"scale\"] = MIN_MAX_SCALE;\n // }\n\n metricGroup.data.push(chartData);\n hasChartData = true;\n }\n }\n\n metricGroup.data.sort(sortBasedOnErrors);\n\n if (chartInfo[\"metricType\"] === \"default\") {\n gridData.push(metricGroup);\n } else if (chartInfo[\"metricType\"] === \"custom\" && metricGroup.data.length > 0) {\n gridData.push(metricGroup);\n }\n }\n }\n gridData.sort(sortBasedOnMetrics);\n\n // Add missing metrics for consistency with empty\n if (metricType === 'default' &&\n isDataSet &&\n section === DQ_MONITOR_SECTIONS.CONSISTENCY) {\n\n for (let consistencyMet of REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART) {\n let match = gridData.find(x => x.metric === consistencyMet);\n if (match !== undefined && match !== null) {\n continue;\n }\n\n let metricGroup = {};\n let chartInfo = getMetaInformationAboutChart(true, consistencyMet);\n metricGroup[\"metric\"] = consistencyMet;\n metricGroup[\"description\"] = chartInfo[\"description\"];\n metricGroup[\"header\"] = chartInfo[\"header\"];\n metricGroup[\"metricType\"] = chartInfo[\"metricType\"];\n metricGroup[\"data\"] = [];\n gridData.push(metricGroup);\n }\n }\n return {\n \"data\": gridData,\n \"hasChartData\": hasChartData\n };\n}\n\n\nexport function setProfilingData(dataSetData, isDataSet, dataSourceId, propsDataModule) {\n /**\n * This function will prepare the data for 'Show More' section of\n * Data Quality error page in \"Monitor\" section\n *\n */\n let gridData = [];\n let profileKeys = [\"avg\", \"duplicate\", \"empty\", \"max\", \"min\", \"mode\", \"std\", \"unique\"];\n if (dataSetData !== undefined) {\n for (const [key, value] of Object.entries(dataSetData)) {\n let metricGroup = {};\n\n metricGroup[\"metric\"] = key;\n let processedKeys = [];\n metricGroup[\"data\"] = []\n\n if (!profileKeys.includes(key)) {\n continue;\n }\n\n for (const [attribute, chartData] of Object.entries(value)) {\n // If consolidation is done at attribute level,\n // make sure that there are 4 parts in attribute key (Ex) 22.33.16.2003)\n const attributeKeys = attribute.split(METADATA_MAP_KEY_SEPARATOR);\n if (!isDataSet && attributeKeys.length !== 4) {\n continue;\n }\n\n let data_src_id = attributeKeys[1];\n if (dataSourceId !== null && dataSourceId !== data_src_id) {\n continue;\n }\n\n // To avoid repetitive charts for same attribute - metric combination\n const metricName = chartData.name;\n let uniqueKey = `${attribute}_${metricName}`;\n if (processedKeys.includes(uniqueKey)) {\n continue;\n }\n processedKeys.push(uniqueKey);\n\n let metaData = propsDataModule.metaData[attribute];\n if (metaData === undefined) {\n metaData = propsDataModule.metaData;\n // const filtered = Object.keys(metaData)\n // .filter(key => key.startsWith(attribute))\n // .reduce((obj, key) => {\n // obj[key] = metaData[key];\n // return obj;\n // }, {});\n\n let matchedKeys = metaData[attribute];\n if (matchedKeys !== undefined && matchedKeys !== null && matchedKeys.length === 0) {\n continue;\n }\n\n metaData = metaData[attribute];\n if (metaData === undefined || metaData === null) {\n continue;\n }\n let metaDataAfterSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR)\n if(metaDataAfterSplit.length > 4) {\n metaData = metaDataAfterSplit.slice(0, metaDataAfterSplit.length - 2).join(METADATA_MAP_VALUE_SEPARATOR);\n\n }\n\n }\n if (metaData !== undefined) {\n const metadataSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n let attributeName;\n if (isDataSet) {\n attributeName = metadataSplit[2];\n } else {\n attributeName = metadataSplit[metadataSplit.length - 1];\n }\n\n let chartTypeData = getChartTypeForMonitorCharts(chartData);\n chartData[\"type\"] = chartTypeData.chartPatternType;\n chartData[\"hasDrift\"] = chartTypeData.hasError;\n\n chartData[\"attribute_name\"] = attributeName;\n chartData[\"data_set_id\"] = attribute.split(METADATA_MAP_KEY_SEPARATOR)[2];\n chartData[\"title\"] = `${metadataSplit.join(\" > \")} - ${metricName}`;\n\n chartData[\"key\"] = `${metricName}_${attribute}`;\n chartData[\"data_source_name\"] = metadataSplit[1];\n\n normalizeChartData(chartData);\n let time_len = chartData.time.length;\n let drift_len = chartData.drift.length;\n if (drift_len > 1) {\n chartData[\"error_percentage\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartData.drift[(drift_len - 2)].toFixed(2);\n } else if (drift_len === 1) {\n chartData[\"error_percentage\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = chartData.drift[(drift_len - 1)].toFixed(2);\n } else {\n chartData[\"error_percentage\"] = 0;\n chartData[\"latest_refresh\"] = chartData.time[(time_len - 1)];\n chartData[\"last_error\"] = 0;\n }\n\n chartData[DQ_CHART_POINTS] = chartData[\"value\"];\n chartData[\"scale\"] = MIN_MAX_SCALE;\n metricGroup.data.push(chartData);\n }\n }\n gridData.push(metricGroup);\n }\n }\n\n gridData.sort(sortBasedOnMetrics);\n return gridData;\n}\n\nexport function setDQShowMoreData(propsDataSetData, propsAttributeData, propsDataModule,\n dataSourceId, section = null) {\n /**\n * This function will prepare the data for 'Show More' section of\n * Data Quality error page in \"Monitor\" section\n *\n */\n const dataSetData = _.cloneDeep(propsDataSetData);\n const attributeData = _.cloneDeep(propsAttributeData);\n // const dataSetData = propsDataSetData;\n // const attributeData = propsAttributeData;\n\n const DefaultDatasetGroups = setDQShowMoreDataOnGroupingLevel(dataSetData, true,\n dataSourceId, \"default\", section, propsDataModule);\n const CustomDatasetGroups = setDQShowMoreDataOnGroupingLevel(dataSetData, true,\n dataSourceId, \"custom\", section, propsDataModule);\n const DefaultAttributeGroups = setDQShowMoreDataOnGroupingLevel(attributeData, false,\n dataSourceId, \"default\", section, propsDataModule);\n const CustomAttributeGroups = setDQShowMoreDataOnGroupingLevel(attributeData, false,\n dataSourceId, \"custom\", section, propsDataModule);\n const profileData = setProfilingData(attributeData, false,\n dataSourceId, propsDataModule);\n\n const defaultDatasetGroupChartData = DefaultDatasetGroups.data;\n const customDatasetGroupChartData = CustomDatasetGroups.data;\n const defaultAttributeChartData = DefaultAttributeGroups.data;\n const customAttributeChartData = CustomAttributeGroups.data;\n\n const hasChartData = (DefaultDatasetGroups.hasChartData ||\n CustomDatasetGroups.hasChartData ||\n DefaultAttributeGroups.hasChartData ||\n CustomAttributeGroups.hasChartData\n );\n\n const result = {\n \"DefaultDataSet\": defaultDatasetGroupChartData,\n \"CustomDataSet\": customDatasetGroupChartData,\n \"DefaultAttribute\": defaultAttributeChartData,\n \"CustomAttribute\": customAttributeChartData,\n \"profilingData\": profileData,\n \"dataSet\": defaultDatasetGroupChartData.concat(customDatasetGroupChartData),\n \"attribute\": defaultAttributeChartData.concat(customAttributeChartData),\n \"hasChartData\": hasChartData\n };\n return result;\n}\n\nexport function getAllDQShowMoreCharts(propsMonitorModule, propsDataModule, dataSourceId) {\n // Get Dataset list information for each metric association\n const completenessDataSetList = getDataSetList(propsMonitorModule.completenessAttributeInfo,\n dataSourceId, propsDataModule);\n const timelinessDataSetList = getDataSetList(propsMonitorModule.timelinessAttributeInfo,\n dataSourceId, propsDataModule);\n const accuracyDataSetList = getDataSetList(propsMonitorModule.accuracyAttributeInfo,\n dataSourceId, propsDataModule);\n const conformityDataSetList = getDataSetList(propsMonitorModule.conformityAttributeInfo,\n dataSourceId, propsDataModule);\n const consistencyDataSetList = getDataSetList(propsMonitorModule.consistencyAttributeInfo,\n dataSourceId, propsDataModule);\n const driftDataSetList = getDataSetList(propsMonitorModule.driftAttributeInfo,\n dataSourceId, propsDataModule);\n const uniquenessDataSetList = getDataSetList(propsMonitorModule.uniquenessAttributeInfo,\n dataSourceId, propsDataModule);\n\n // Get Show More chart information for each metric association\n const completenessShowMore = setDQShowMoreData(propsMonitorModule.completenessDataSetInfo,\n propsMonitorModule.completenessAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.COMPLETENESS);\n const timelinessShowMore = setDQShowMoreData(propsMonitorModule.timelinessDataSetInfo,\n propsMonitorModule.timelinessAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.TIMELINESS);\n const accuracyShowMore = setDQShowMoreData(propsMonitorModule.accuracyDataSetInfo,\n propsMonitorModule.accuracyAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.ACCURACY);\n const conformityShowMore = setDQShowMoreData(propsMonitorModule.conformityDataSetInfo,\n propsMonitorModule.conformityAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.CONFORMITY);\n const consistencyShowMore = setDQShowMoreData(propsMonitorModule.consistencyDataSetInfo,\n propsMonitorModule.consistencyAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.CONSISTENCY);\n const driftShowMore = setDQShowMoreData(propsMonitorModule.driftDataSetInfo,\n propsMonitorModule.driftAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.DRIFT);\n const uniquenessShowMore = setDQShowMoreData(propsMonitorModule.uniquenessDataSetInfo,\n propsMonitorModule.uniquenessAttributeInfo, propsDataModule,\n dataSourceId, DQ_MONITOR_SECTIONS.UNIQUENESS);\n\n return {\n \"completenessDataSetList\": completenessDataSetList,\n \"timelinessDataSetList\": timelinessDataSetList,\n \"accuracyDataSetList\": accuracyDataSetList,\n \"conformityDataSetList\": conformityDataSetList,\n \"consistencyDataSetList\": consistencyDataSetList,\n \"driftDataSetList\": driftDataSetList,\n \"uniquenessDataSetList\": uniquenessDataSetList,\n \"completenessShowMore\": completenessShowMore,\n \"timelinessShowMore\": timelinessShowMore,\n \"accuracyShowMore\": accuracyShowMore,\n \"conformityShowMore\": conformityShowMore,\n \"consistencyShowMore\": consistencyShowMore,\n \"driftShowMore\": driftShowMore,\n \"uniquenessShowMore\": uniquenessShowMore,\n }\n}\n\nexport function dqRenderGroup(modalData) {\n let DefaultDatasetData = modalData.DefaultDataSet;\n let DefaultAttributeData = modalData.DefaultAttribute;\n let CustomDatasetData = modalData.CustomDataSet;\n let CustomAttributeData = modalData.CustomAttribute;\n let initialCount = 0;\n let data = [{\"data\": DefaultDatasetData, \"level\": \"Dataset\", \"initialCount\": 0},\n {\"data\": DefaultAttributeData, \"level\": \"Attribute\", \"initialCount\": 0},\n {\"data\": CustomDatasetData, \"level\": \"Dataset\", \"initialCount\": 0},\n {\"data\": CustomAttributeData, \"level\": \"Attribute\", \"initialCount\": 0}\n ];\n\n return data.map((fullScreenData) => {\n let sectionData = fullScreenData.data;\n let level = fullScreenData.level;\n if (sectionData === undefined) {\n return '';\n }\n\n let fKey = \"\";\n if (fullScreenData.key !== undefined) {\n fKey = fullScreenData.key;\n\n }\n\n return sectionData.map((groupData, index) => {\n if(this.state.isAdvancedFilterApplied){\n let metric = groupData.metric;\n if(metric === 'Unique Values'){\n //Uniqueness label metric name have been handled in UI, not yet updated in backend\n // Handling metric name for comparsion\n metric = \"Uniqueness\"\n }\n let metricsFiltered = this.state.selectedMetrics.filter(x=>x.label === metric);\n if(metricsFiltered.length === 0) {\n return \"\"\n }\n }\n let header = groupData.header;\n if(!this.state.showAttributes && header.includes(\"By Attributes\")){\n return \"\"\n }\n\n initialCount = initialCount + 1;\n return (\n
    \n
    \n

    \n \n {initialCount}\n \n {header}\n

    \n

    \n {groupData.description}\n

    \n\n
    \n
    \n
    \n {this.dqRenderModalChart(level, groupData.data, groupData.metricType)}\n
    \n
    \n
    \n );\n });\n });\n}\n\n\nexport function dqRenderModalChart(chartLevel, chartDataList, metricType) {\n if (chartDataList === undefined || chartDataList === null || chartDataList.length === 0) {\n return ();\n }\n let profileKeys = [\"avg\", \"duplicate\", \"empty\", \"max\", \"min\", \"mode\", \"std\", \"unique\"];\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let chartCount = 0;\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j = 1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n let filteredDataset = []\n let filteredAttributes = []\n let isEmpty = true\n\n\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n const attribute_name = chartData.attribute_name;\n let attributeId = chartData.attribute_id;\n let datasetId = chartData.data_set_id;\n let lastDiv = (chartDataList.length === index + 1 && chartCount === 0)\n if(chartLevel === \"Dataset\" && this.state.isAdvancedFilterApplied) {\n filteredDataset = this.state.selectedDatasets.filter(x=>Number(x.value) === Number(datasetId))\n if(isEmpty && lastDiv && filteredDataset.length === 0) {\n return()\n }\n else if(filteredDataset.length === 0) {\n return \"\"\n }\n }else if(chartLevel === \"Attribute\" && this.state.isAdvancedFilterApplied){\n filteredAttributes = this.state.selectedAttributes.filter(x=>Number(x.value) === Number(attributeId))\n if(isEmpty && lastDiv) {\n return()\n }else if(filteredAttributes.length === 0) {\n return \"\"\n }\n }\n if(!isEmpty) {\n isEmpty = false\n }\n\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n chartData[\"dq_chart_points\"] = convertDecimalDigits(chartData[\"dq_chart_points\"])\n let not_computed = chartData[\"value\"].every((val, i, arr) => val === -1);\n\n let metricName = chartData.name;\n if (not_computed === true && lastDiv === true) {\n return ();\n } else if (not_computed === true) {\n return \"\";\n } else if (!this.state.isAdvancedFilterApplied || this.state.showErrorsOnly) {\n if (chartData[\"hasDrift\"] === false && lastDiv === true) {\n return ();\n }\n if (chartData[\"hasDrift\"] === false) {\n return \"\";\n }\n }\n// else if (String(this.state.selectedDataSet[\"value\"]) !== String(chartData[\"data_set_id\"]) && lastDiv === true) {\n// return ();\n// } else if (String(this.state.selectedDataSet[\"value\"]) !== String(chartData[\"data_set_id\"])) {\n// return \"\"\n// }\n else if (profileKeys.includes(metricName)) {\n return \"\";\n }\n\n\n if (chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\")) {\n\n let aggregateOptions = null;\n let id = chartData[\"data_set_id\"];\n\n let key = `modal_${metricName}_${id}`;\n let title = this.props.title !== undefined ? this.props.title : '';\n let compareDatasetOptions = null\n let compareType = null;\n let compareAttributeOptions = null;\n if (attribute_name !== undefined && attribute_name !== null) {\n key = key + \"_\" + attribute_name;\n }\n let idValue = ''\n\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function (d) {\n return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== metricName ||\n d.data_set_id !== chartData.data_set_id);\n });\n }\n\n let showAggregateError = false;\n let canShowAggregateOptions = (metricName === DATA_DRIFT);\n if (chartLevel === \"Attribute\" && canShowAggregateOptions) {\n aggregateOptions = this.state.aggregateOptions.filter(function (d) {\n return d.attribute_name === attribute_name && d.data_set_id === chartData.data_set_id\n });\n let isAggregateError = aggregateOptions.filter(function (d) {\n return d.is_error === true\n });\n if (isAggregateError.length > 0) {\n showAggregateError = true;\n }\n let drift_pattern = chartData.type;\n if (drift_pattern !== undefined && drift_pattern !== null) {\n if (drift_pattern === \"NO_DRIFT\" || drift_pattern === \"not_computed\") {\n aggregateOptions.unshift({\n \"label\": self,\n \"value\": \"self\",\n \"attribute_name\": attribute_name,\n \"data_set_id\": chartData.data_set_id,\n \"data\": chartData,\n \"is_error\": false\n });\n } else {\n showAggregateError = true;\n aggregateOptions.unshift({\n \"label\": selfError,\n \"value\": \"self\",\n \"attribute_name\": attribute_name,\n \"data_set_id\": chartData.data_set_id,\n \"data\": chartData,\n \"is_error\": true\n });\n }\n }\n }\n\n if (chartLevel === \"Dataset\") {\n idValue = chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function (d) {\n return (d.value === chartData[\"data_set_id\"] || d.type !== metricName)\n });\n }\n\n title = title.replace(\" \", \"_\");\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n if (chartLevel === \"Dataset\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n\n if (chartData[\"name\"] === \"Data Drift\") {\n let isBoxplot = chartData[\"boxplot_data\"].filter(x=>x !== \"NA\")\n if(isBoxplot.length > 0){\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n if (chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartType = \"boxPlotZoomable\";\n }\n }\n }\n let filteredData = null;\n let propsStartDate = this.state.startDateInside === null ? this.props.startDate : this.state.startDateInside\n let propsEndDate = this.state.endDateInside === null ? this.props.endDate : this.state.endDateInside\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, false, false, MAX_DATA_POINTS_FOR_LIST_VIEW);\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n propsStartDate = moment(new Date(timeVals[0]));\n }\n }\n return (\n
    \n }>\n \n \n
    \n\n );\n } else if (lastDiv === true) {\n return ();\n }\n return '';\n });\n }\n}\n\n\nexport function getDefaultDateRangeOptions() {\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n\n return ranges;\n}\n\nexport function setShowMoreData(dataSetData, attributeData, mlModelDetails, modelPerformanceCharts) {\n let mlModelMapping = this.props.monitorModule.mlModelMapping;\n let metadataMap = this.props.dataModule.metaData;\n\n let showMoreDataForDatasets = setShowMoreDataOnGroupingLevel(dataSetData, true,\n mlModelDetails, mlModelMapping, metadataMap, canIncludeMetric,\n modelPerformanceCharts);\n let showMoreDataForAttributes = setShowMoreDataOnGroupingLevel(attributeData, false,\n mlModelDetails, mlModelMapping, metadataMap, canIncludeMetric,\n modelPerformanceCharts);\n\n return {\n \"dataSet\": showMoreDataForDatasets,\n \"attribute\": showMoreDataForAttributes\n };\n }\n\n\nexport function decryptMsg(data) {\n let secretKey = process.env.REACT_APP_IAM_DECRYPT_KEY\n data = data.replace(/qua111111d000/g, '+');\n data = data.replace(\"'\",'')\n let result = CryptoJS.DES.decrypt(data, CryptoJS.enc.Utf8.parse(secretKey), {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString(CryptoJS.enc.Utf8);\n return JSON.parse(result)\n}\n\n// This function is not tested and is not used anywhere. For future purpose it is added\nexport function encryptMsg(data) {\n let secretKey = process.env.REACT_APP_IAM_DECRYPT_KEY\n let result = CryptoJS.DES.encrypt(data, CryptoJS.enc.Utf8.parse(secretKey), {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n });\n result = result.toString()\n result = result.replace('+', /qua111111d000/g);\n return result\n}\n\nexport function encryptForLocalUsage(incomingJSON) {\n const ciphertext = CryptoJS.AES.encrypt(JSON.stringify(incomingJSON), IAM_SECRET_KEY);\n return ciphertext.toString();\n}\n\nexport function decryptForLocalUsage(incomingString) {\n const decText = CryptoJS.AES.decrypt(incomingString, IAM_SECRET_KEY);\n const decryptedRes = decText.toString(CryptoJS.enc.Utf8);\n if (decryptedRes !== \"\") {\n return JSON.parse(decryptedRes)\n }\n return null\n}\n\nexport function getFeatureAccess() {\n let featureAccess = cachedLocalData.featureAccess;\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n return featureAccess;\n }\n\n let fa = localStorage.getItem('featureAccess');\n if (IS_NONE_CHECK.includes(fa) || fa === '') {\n // Someone deleted feature access from local storage\n return null;\n }\n\n let featureAccessData = decryptForLocalUsage(fa);\n cachedLocalData.featureAccess = featureAccessData;\n return featureAccessData;\n}\n\nexport function getSupportedDatasourceOptions() {\n let datasourceOptions = cachedLocalData.datasourceOptions;\n if (!IS_NONE_CHECK.includes(datasourceOptions)) {\n return datasourceOptions;\n }\n\n let featureAccessData = getFeatureAccess();\n if (featureAccessData === null) {\n return [];\n }\n\n const filterOptions = [];\n for (let currOption of DATA_SOURCE_OPTIONS) {\n let subOptions = [];\n for (let currSrc of currOption.options) {\n const srcVal = currSrc.value;\n\n const accessData = featureAccessData[srcVal];\n if (accessData === false) {\n continue;\n }\n\n subOptions.push(currSrc);\n }\n if (subOptions.length === 0) {\n continue;\n }\n\n currOption.options = subOptions;\n filterOptions.push(currOption);\n }\n\n cachedLocalData.datasourceOptions = filterOptions;\n return filterOptions;\n}\n\nexport function getCompleteEndpoint(protocol, ip, end_point) {\n let _separator = \"/\";\n if (end_point.startsWith(\"/\")) {\n _separator = \"\";\n }\n return protocol + '//' + ip + _separator + end_point;\n}\n\n\nexport function validateSQLQueryMetric(values, selectMetricType) {\n let errors = {};\n\n // Perform additional validation on SQL query\n const inputSQLTxt = values.sqlQuery;\n const checkQuery = selectMetricType === \"sql query\" && String(inputSQLTxt).length > 0;\n if (checkQuery) {\n const validStatus = isValidSQLQuery(inputSQLTxt);\n if (validStatus.status === false) {\n errors.sqlQuery = validStatus.message;\n }\n }\n\n return errors;\n}\n\n\nexport function isValidSQLQuery(inputSQLQuery) {\n let response = {\n status: true,\n message: ''\n };\n\n try {\n inputSQLQuery = inputSQLQuery.split(DOUBLE_COLON).join(QUALDO_ATTRIBUTE_SEPARATOR);\n inputSQLQuery = inputSQLQuery.replace(\"$dataset$\", \"SdatasetS\");\n const parser = new Parser();\n parser.parse(inputSQLQuery);\n } catch (err) {\n response.status = false;\n response.message = String(err);\n }\n return response;\n}\n\nexport function getSQLQueryErrorComponents(errorData) {\n if (errorData === undefined || errorData === null || errorData === '') {\n return errorData;\n }\n\n\n let multiLines = errorData.split('\\n');\n if (errorData.includes('--')) {\n const chartCount = (errorData.match(/-/g) || []).length;\n // Add this position information at the beginning of the list, so that it will be shown at top\n multiLines.unshift(`Error at position: ${chartCount}`);\n }\n\n return multiLines.map((x, index) =>
    {x}
    )\n}\n\nexport function customDateFormat(date_str){\n let d= new Date(date_str).toGMTString()\n d = d.split(' ');\n let result = d[1] +' '+ d[2]+ \", \"+ d[3]\n return result\n}\n\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n\nexport function getTrimmedNotificationMessage(notificationData) {\n const notificationMessage = notificationData[\"message\"];\n const replacedText = notificationMessage.replace(\"Quality Gate\", \" \").replace(\"Data source name:\", \"\");\n return replacedText.substring(0, 45) + \"...\";\n}\n\n\nexport function dqpRenderGroup(modalData) {\n let DefaultDatasetData = modalData.DefaultDataSet;\n let DefaultAttributeData = modalData.DefaultAttribute;\n let CustomDatasetData = modalData.CustomDataSet;\n let CustomAttributeData = modalData.CustomAttribute;\n let initialCount = 0;\n let data = [{\"data\": DefaultDatasetData, \"level\": \"Dataset\", \"initialCount\": 0},\n {\"data\": DefaultAttributeData, \"level\": \"Attribute\", \"initialCount\": 0},\n {\"data\": CustomDatasetData, \"level\": \"Dataset\", \"initialCount\": 0},\n {\"data\": CustomAttributeData, \"level\": \"Attribute\", \"initialCount\": 0}\n ];\n\n return data.map((fullScreenData) => {\n let sectionData = fullScreenData.data;\n let level = fullScreenData.level;\n if (sectionData === undefined) {\n return '';\n }\n\n let fKey = \"\";\n if (fullScreenData.key !== undefined) {\n fKey = fullScreenData.key;\n\n }\n\n return sectionData.map((groupData, index) => {\n if(this.state.isAdvancedFilterApplied){\n let metric = groupData.metric;\n if(metric === 'Unique Values'){\n //Uniqueness label metric name have been handled in UI, not yet updated in backend\n // Handling metric name for comparsion\n metric = \"Uniqueness\"\n }\n \n let metricsFiltered = this.state.selectedMetrics.filter(x=>x.label === metric);\n if(metricsFiltered.length === 0) {\n return \"\"\n }\n }\n let header = groupData.header;\n if(!this.state.showAttributes && header.includes(\"By Attributes\")){\n return \"\"\n }\n header = header.replace(\"Errors\", '');\n let description = groupData.description.replace(\"errors\", '');\n initialCount = initialCount + 1;\n return (\n
    \n
    \n

    \n \n {initialCount}\n \n {header}\n

    \n

    \n {description}\n

    \n\n
    \n
    \n
    \n {this.dqpRenderModalChart(level, groupData.data, groupData.metricType)}\n
    \n
    \n
    \n );\n });\n });\n}\n\nexport function dqpRenderModalChart(chartLevel, chartDataList, metricType) {\n if (chartDataList === undefined || chartDataList === null || chartDataList.length === 0) {\n return ();\n }\n\n let profileKeys = [\"avg\", \"duplicate\", \"empty\", \"max\", \"min\", \"mode\", \"std\", \"unique\"];\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let chartCount = 0;\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j = 1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n let filteredDataset = []\n let filteredAttributes = []\n\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n const attribute_name = chartData.attribute_name;\n let attributeId = chartData.attribute_id;\n let datasetId = chartData.data_set_id;\n let lastDiv = false;\n if (index > 0) {\n lastDiv = (chartDataList.length === index + 1 && chartCount === 0)\n }\n if(chartLevel === \"Dataset\" && this.state.isAdvancedFilterApplied) {\n filteredDataset = this.state.selectedDatasets.filter(x=>Number(x.value) === Number(datasetId))\n if(lastDiv && filteredDataset.length === 0) {\n return()\n }\n else if(filteredDataset.length === 0) {\n return \"\"\n }\n } else if(chartLevel === \"Attribute\" && this.state.isAdvancedFilterApplied){\n filteredAttributes = this.state.selectedAttributes.filter(x=>Number(x.value) === Number(attributeId))\n if(lastDiv && filteredDataset.length === 0) {\n return()\n }else if(filteredAttributes.length === 0) {\n return \"\"\n }\n }\n\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n chartData[\"dq_chart_points\"] = convertDecimalDigits(chartData[\"dq_chart_points\"])\n let not_computed = chartData[\"value\"].every((val, i, arr) => val === -1);\n\n let metricName = chartData.name;\n if (not_computed === true && lastDiv === true) {\n return ();\n } else if (not_computed === true) {\n return \"\";\n }\n else if (!this.state.isAdvancedFilterApplied) {\n if (lastDiv === true) {\n return ();\n }\n\n } else if (profileKeys.includes(metricName)) {\n return \"\";\n }\n\n\n if (chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\")) {\n\n let aggregateOptions = null;\n let id = chartData[\"data_set_id\"];\n\n let key = `modal_${metricName}_${id}`;\n let title = this.props.title !== undefined ? this.props.title : '';\n let compareDatasetOptions = null\n let compareType = null;\n let compareAttributeOptions = null;\n if (attribute_name !== undefined && attribute_name !== null) {\n key = key + \"_\" + attribute_name;\n }\n let idValue = ''\n\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function (d) {\n return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== metricName ||\n d.data_set_id !== chartData.data_set_id);\n });\n }\n\n let showAggregateError = false;\n let canShowAggregateOptions = (metricName === DATA_DRIFT);\n if (chartLevel === \"Attribute\" && canShowAggregateOptions) {\n aggregateOptions = this.state.aggregateOptions.filter(function (d) {\n return d.attribute_name === attribute_name && d.data_set_id === chartData.data_set_id\n });\n let isAggregateError = aggregateOptions.filter(function (d) {\n return d.is_error === true\n });\n if (isAggregateError.length > 0) {\n showAggregateError = true;\n }\n aggregateOptions.unshift({\n \"label\": selfError,\n \"value\": \"self\",\n \"attribute_name\": attribute_name,\n \"data_set_id\": chartData.data_set_id,\n \"data\": chartData,\n \"is_error\": true\n });\n }\n\n if (chartLevel === \"Dataset\") {\n\n if(chartData[\"name\"] === \"Unique Values\"){\n chartData[\"name\"] = \"Unique Rows\"\n }\n \n idValue = chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function (d) {\n return (d.value === chartData[\"data_set_id\"] || d.type !== metricName)\n });\n }\n\n title = title.replace(\" \", \"_\");\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n if (chartLevel === \"Dataset\") {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n\n if (chartData[\"name\"] === \"Data Drift\") {\n let isBoxplot = chartData[\"boxplot_data\"].filter(x=>x !== \"NA\")\n if(isBoxplot.length > 0){\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n if (chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartType = \"boxPlotZoomable\";\n }\n }\n if (chartData[\"boxPlotData\"][\"statistics\"] !== undefined && chartData[\"boxPlotData\"][\"statistics\"].length > 0) {\n delete chartData[\"boxPlotData\"][\"statistics\"][0][\"drift_patterns\"];\n }\n chartData[\"drift_patterns\"] =[]\n chartData[\"hasDrift\"] = false;\n chartData[\"colorCode\"] = chartData[\"color\"];\n }\n\n let filteredData = null;\n let propsStartDate = this.state.startDateInside === null ? this.props.startDate : this.state.startDateInside\n let propsEndDate = this.state.endDateInside === null ? this.props.endDate : this.state.endDateInside\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, false, false, MAX_DATA_POINTS_FOR_LIST_VIEW);\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n propsStartDate = moment(new Date(timeVals[0]));\n }\n }\n\n return (\n
    \n }>\n \n \n
    \n\n );\n } else if (lastDiv === true) {\n return ();\n }\n return '';\n });\n }\n}\n\n\nexport function getThumbnailChartsDqpErr(level, data, idInput, datasourceName, headerName, timelinessData, datasetName) {\n let allThumbnailChartSections = [];\n let sectionName = \"Monitor Data Quality Performance\";\n if(data === undefined) {\n return allThumbnailChartSections\n }\n let chartType = \"thumbnailBar\"\n let updatedData = []\n for (const _cData of Object.values(data)) {\n let newData = _.cloneDeep(_cData);\n if(newData.name === \"Recency\" && timelinessData !== undefined && timelinessData.length > 0) {\n newData = _.cloneDeep(timelinessData[0])\n } else if(newData.name === \"Recency\" && timelinessData !== undefined && timelinessData.length === 0) {\n // continue;\n } else if(newData.name === \"Data Drift\" && newData.is_all_string_column !== undefined && !(newData.is_all_string_column.includes(false))) {\n continue;\n }\n if(level === \"dataset\" && newData.attribute_name !== undefined) {\n continue;\n }\n newData[DQ_CHART_POINTS] = newData[\"value\"];\n normalizeChartData(newData, DQ_CHART_POINTS);\n if (newData[DQ_CHART_POINTS] !== undefined && newData[DQ_CHART_POINTS].length === 0){\n continue;\n }\n let section = sectionName+\"-1\"\n if(level === \"dataset\"){\n section = sectionName+\"-1\"\n } else {\n section = \"Monitor Data Quality Performance-2\";\n }\n\n let colorInfo = MONITOR_PERF_LIST_VIEW[section];\n newData[\"background\"] = colorInfo.cardBackground;\n newData[\"textColor\"] = colorInfo.textColor;\n delete newData[\"boxplot_data\"];\n let reqChartData = {\"time\": newData.time};\n reqChartData.label = \"Dataset\";\n reqChartData.labelValue = datasetName;\n reqChartData.toolTiptopHeader = headerName;\n reqChartData.version_name = newData.version_name;\n let uniqid = Math.floor(Math.random() * 1000000000);\n newData[\"chartData\"] = reqChartData;\n newData[\"idValue\"] = \"lv\"+ idInput + getNormalizedName(newData[\"name\"]).replace(/ /g,\"_\")+\"_\"+uniqid\n reqChartData[\"values\"] = convertDecimalDigits(newData.dq_chart_points);\n reqChartData[\"colorArray\"] = colorInfo.colorArray;\n reqChartData[\"name\"] = newData.name;\n newData[\"chartType\"] = chartType;\n chartType = chartType === \"thumbnailBar\" ? \"thumbnailArea\": \"thumbnailBar\"\n newData[\"scale\"] = MIN_MAX_SCALE;\n updatedData.push(newData);\n }\n\n if (updatedData.length < 4){\n let sectionData = {\n \"name\": \"\",\n \"key\": getNormalizedName(idInput + sectionName),\n \"data\": Object.values(updatedData)\n }\n\n if (sectionData.data.length > 0){\n allThumbnailChartSections.push(sectionData);\n }\n } else {\n let i,j, chartCount = 4 ;\n for (i = 0,j = updatedData.length; i < j; i += chartCount) {\n let sectionData = {\n \"name\": \"\",\n \"key\": getNormalizedName(idInput + sectionName),\n \"data\": Object.values(updatedData).slice(i, i+chartCount)\n }\n allThumbnailChartSections.push(sectionData);\n }\n }\n return allThumbnailChartSections;\n}\n\nexport function getMonitorTabDQPListViewTableData(datasetMapping, dqListData, followedAttributes, timelinessData) {\n let dqData = []\n if(dqListData.dataset_level_data !== undefined && dqListData.attribute_level_data !== undefined && timelinessData !== undefined) {\n let timelinessDataValues = timelinessData[\"DefaultDataSet\"]\n let issuedAttributes = dqListData.issued_attributes;\n let followAttributes = followedAttributes;\n let attributeLevelData = dqListData.attribute_level_data;\n let dataset_level_data = dqListData.dataset_level_data;\n let attributeIds = datasetMapping[\"attributeIds\"]\n for (const [key, value] of Object.entries(datasetMapping[\"idDatasetDetail\"])) {\n if(key === \"attributeIds\" || issuedAttributes[key] === undefined) {\n continue;\n }\n let totalLength = issuedAttributes[key].length\n let lastProfilingTime = issuedAttributes[key][0][\"refresh_time\"]\n let createdTime = issuedAttributes[key][totalLength - 1][\"refresh_time\"]\n let startDate = moment().subtract(9, 'days').set({\"hour\": 0, \"minute\": 0, \"seconds\": 0});\n let endDate = moment().endOf('day').set({\"hour\": 23, \"minute\": 59, \"seconds\": 59});\n let previousTime = null;\n let isAlertNeeded = !(moment(lastProfilingTime).isSameOrBefore(endDate) && moment(lastProfilingTime).isSameOrAfter(startDate))\n if(isAlertNeeded) {\n previousTime = lastProfilingTime\n }\n let filteredTimelinessData = []\n let filteredTimeliness = timelinessDataValues[0]\n if(filteredTimeliness !== undefined) {\n filteredTimelinessData = filteredTimeliness[\"data\"].filter(x=>x.data_set_id === key)\n }\n let datasourceName = value[\"dataSourceName\"];\n let datasetName = value[\"datasetName\"]\n let thumbnailCharts = getThumbnailChartsDqpErr(\"dataset\", dataset_level_data[key], key, datasourceName, datasetName,\n filteredTimelinessData, datasetName)\n let row = []\n let dataSourceId = value[\"dataSourceId\"]\n let follow_attributes_details = {}\n if(Object.keys(followAttributes).length !== 0){\n follow_attributes_details = followAttributes[dataSourceId]\n }\n row.push({\"value\": datasourceName, \"type\": \"td\", \"group\": \"dataset\"});\n row.push({\"value\": normalizeChildDatasetName(datasetName), \"type\": \"datasetName\", \"lastProfilingTime\": lastProfilingTime, \"previousTime\": previousTime});\n row.push({\"value\": 'Dataset Level - Includes All Attributes', \"type\": \"td\"});\n row.push({\"value\": thumbnailCharts, \"type\": \"thumbnailCharts\", \"issuedAttributes\": issuedAttributes[key], \"noDataAvailable\": false, \"createdTime\": createdTime});\n row.push({\"value\": key, \"type\": \"action\", \"level\": \"dataset\", \"datasetName\": datasetName, \"dataSourceId\": dataSourceId, \"dataSourceName\":datasourceName, \"lastProfilingTime\": lastProfilingTime})\n dqData.push(row)\n let filteredAttributes = attributeIds.filter(x=>x.datasetId === key)\n for(let j=0;j el < 100);\n if (has_duplicates === true){\n DatasetsWithDuplicates = DatasetsWithDuplicates +1;\n }\n }\n return DatasetsWithDuplicates;\n}\n\nexport function getConvertedSize(bytes, decimals = 2) {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n\nexport function userValidation(data,type=\"username\")\n{\n if(data === \"\" || data ===null || data ===undefined){return false;}\n const urlRegex = RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\n let result = (urlRegex.test(data));\n if(!result && type === \"username\")\n {\n const userNameRegex = RegExp(/^(?![_.~`!@#$%^&*()?<>;:\"'{} ])([a-zA-Z0-9\\u00C0-\\u00ff .]*)$/);\n result = (userNameRegex.test(data));\n return result;\n }\n else if (!result && type === \"input\")\n {\n const userInput = RegExp(/^(?![_.~`!@#$%^&*()?<>;:\"'{} ])([a-zA-Z0-9\\u00C0-\\u00ff -_ .]*)$/);\n result = (userInput.test(data));\n return result;\n }\n}\n\nexport function getFullNameOfMetric(metricName){\n if (metricName && metricName.toLowerCase() === \"mae\"){\n metricName = \"Mean Absolute Error\";\n } else if(metricName && metricName.toLowerCase() === \"rmse\"){\n metricName = \"Root Mean Squared Error\";\n }\n return metricName;\n}\n\n\nexport function getNoOfDuplicateRows(data){\n let noOfDuplicatesRows = 0;\n for (let dataSetId of Object.keys(data)) {\n let duplicate_count = data[dataSetId];\n // if value is less than 100 mean, duplicates present in that table\n noOfDuplicatesRows = noOfDuplicatesRows + duplicate_count;\n }\n return noOfDuplicatesRows;\n}\n\nexport function getAttributesWithDuplicateRows(data){\n let attributesWithDuplicates = 0;\n for (let dataSetId of Object.keys(data)) {\n let valueList = data[dataSetId];\n let duplicates = valueList.filter(el => el < 100);\n attributesWithDuplicates = attributesWithDuplicates + duplicates.length;\n }\n return attributesWithDuplicates;\n}\n\nexport function formModelVersionMap(mlModels) {\n const modelVersionMap = {};\n const modelsDropDown = [];\n const modelsDataMap = {};\n const modelTypeMap = {};\n\n for (let currModel of mlModels) {\n const currModelId = currModel[\"ml_model_id\"];\n const ml_model_type = currModel[\"ml_model_type\"];\n\n // Has Complete model data with model id as key\n modelsDataMap[String(currModelId)] = currModel;\n\n // List contains drop down options for model selection drop down\n const ddItem = {\"label\": currModel[\"model_name\"], \"value\": String(currModelId)};\n modelsDropDown.push(ddItem);\n\n // List has version information for the selected root model. Currently we have only one entry\n // in list. Will have more values when we implement model versioning\n modelVersionMap[String(currModelId)] = [{\"label\": currModel[\"version\"], \"value\": String(currModelId)}];\n\n // Has model type as key and associated drop down options as their values\n let mtOptions = modelTypeMap[ml_model_type];\n if (mtOptions === undefined) {\n mtOptions = [];\n }\n\n mtOptions.push(ddItem);\n modelTypeMap[ml_model_type] = mtOptions;\n }\n\n return {\n \"modelsDropDown\": modelsDropDown,\n \"modelVersionMap\": modelVersionMap,\n \"modelsDataMap\": modelsDataMap,\n \"modelTypeMap\": modelTypeMap\n };\n}\n\n\nexport function checkUniqueModelABCombination(modelAVersion, modelBVersion, modelCVersion,\n existingVersions) {\n const currCombinationList = [];\n if (modelAVersion !== undefined) {\n currCombinationList.push(modelAVersion);\n }\n\n if (modelBVersion !== undefined) {\n currCombinationList.push(modelBVersion);\n }\n\n if (modelCVersion !== undefined) {\n currCombinationList.push(modelCVersion);\n }\n\n if (currCombinationList.length <= 1) {\n // User has selected 0 or 1 input, so no need to verify for unique combination\n return true;\n }\n\n let matches = existingVersions.filter(x => {\n const matching_first_2_found = currCombinationList.includes(String(x.model_1)) &&\n currCombinationList.includes(String(x.model_2));\n\n let isThirdMatch = true;\n if (x.model_3 !== undefined && x.model_3 !== null) {\n isThirdMatch = currCombinationList.includes(String(x.model_3));\n } else if (modelCVersion !== undefined) {\n isThirdMatch = currCombinationList.includes(String(x.model_3));\n }\n\n return matching_first_2_found && isThirdMatch;\n });\n\n // If there are no matches found, it means the given configuration is a new configuration\n return matches.length === 0;\n}\n\nexport function getABCompareViewModelSummary(modelData, modelErrMap) {\n const model_name = modelData.model_name;\n const model_id = modelData.ml_model_id;\n\n const createdTimeStr = modelData.created_time.replace(\" GMT\", \"\");\n const modifiedTimeStr = modelData.modified_time.replace(\" GMT\", \"\");\n const lastComputedTime = modelData.last_computed_time;\n\n const cDateObj = new Date(createdTimeStr);\n const mDateObj = new Date(modifiedTimeStr);\n\n const DATE_FORMAT = 'MMM YYYY';\n let createdTime = getSuffixedDate(cDateObj) + ' ' + moment(cDateObj).format(DATE_FORMAT)\n let modifiedTime = getSuffixedDate(mDateObj) + ' ' + moment(mDateObj).format(DATE_FORMAT);\n let lastComputedTimeFormatted = '-';\n\n if (!IS_NONE_CHECK.includes(lastComputedTime)) {\n const lct = new Date(lastComputedTime.replace(\" GMT\", \"\"));\n lastComputedTimeFormatted = getSuffixedDate(lct) + ' ' + moment(lct).format(DATE_FORMAT);\n }\n\n const abKeyValueSummary = [\n {\"key\": \"Model Type\", \"value\": convertToCamelCase(modelData.ml_model_type)},\n {\"key\": \"Author\", \"value\": modelData.author},\n {\"key\": \"Version\", \"value\": modelData.version},\n {\"key\": \"Created on\", \"value\": createdTime},\n {\"key\": \"Updated on\", \"value\": modifiedTime},\n {\"key\": \"Last Processed on\", \"value\": lastComputedTimeFormatted}\n ];\n\n let modelHasError = modelErrMap[model_id];\n if (IS_NONE_CHECK.includes(modelHasError)){\n modelHasError = false;\n }\n\n let lastProcessedTime = '';\n if (modelHasError) {\n lastProcessedTime = lastComputedTime;\n }\n\n return {\n \"name\": model_name,\n \"model_id\": model_id,\n \"modelHasError\": modelHasError,\n \"lastProcessedTime\": lastProcessedTime,\n \"abKeyValueSummary\": abKeyValueSummary,\n }\n}\n\nexport function getABChartData(combinedData, currModelCharts,\n requiredMetricName, index, fullChartInfoForCurrMetric) {\n /**\n * combinedData - is a dictionary object which will have combined thumbnail chart data.\n * We will combine current model performance data of all the 2 or 3 models data into single object.\n *\n * currModelCharts - Represents a chart data of the current model (among the 2 or 3 AB configure models.)\n *\n * requiredMetricName - Represents current model performance metric name\n *\n * index - Represents the configured index of model in Model AB configuration.\n * For ex) if it is 'A' model, index will be 1. For B, it will be 2, 'C' it will be 3\n *\n * fullChartInfoForCurrMetric - Will have complete chart data for the current metric name combination.\n * **/\n if (IS_NONE_CHECK.includes(currModelCharts)) {\n // Current model does not have anything chart data yet. Nothing to process here\n return {\"combinedData\": combinedData, \"currModelInfo\": null};\n }\n\n let currChartData = currModelCharts[requiredMetricName];\n if (IS_NONE_CHECK.includes(currChartData)) {\n // Required chart data is not found. So we can skip further processing\n return {\"combinedData\": combinedData, \"currModelInfo\": null};\n }\n\n if (combinedData === null) {\n combinedData = _.cloneDeep(currChartData);\n }\n\n // const clonedChart = _.cloneDeep(currChartData);\n const modelName = currChartData.data_source_name;\n\n // clonedChart[\"source\"] = MODEL_AB_COMPARE_SRC;\n // clonedChart.drift = convertDecimalDigits(clonedChart.drift);\n // fullChartInfoForCurrMetric[`chart${index}`] = clonedChart;\n\n combinedData[`line${index}`] = convertDecimalDigits(currChartData.drift);\n combinedData[`time${index}`] = currChartData.time;\n combinedData[`labelText1Line${index}`] = \"Model\";\n combinedData[`labelValue1Line${index}`] = modelName;\n\n // if (!IS_NONE_CHECK.includes(combinedData.name) && combinedData.name.includes(\" vs \")) {\n // // Dual charts. So add this to chart data\n // combinedData[`line${index}_a`] = currChartData.drift1;\n // combinedData[`time${index}_a`] = currChartData.time;\n // }\n\n\n const currModelData = {\n \"ml_model_id\": currChartData.ml_model_id,\n \"index_in_ab\": index,\n \"model_name\": modelName\n };\n\n return {\"combinedData\": combinedData, \"currModelInfo\": currModelData};\n}\n\nexport function getChartsWithMinTime(timeArr) {\n // Returns minimum time & corresponding chart indices among the\n // given timestamps [\"2021-07-01 11:20:05\", undefined, \"2021-07-14 18:10:47\"]\n const chartInfo = {};\n let minTime = null;\n let requiredChartIndices = [];\n\n for (let index = 0; index < timeArr.length; index++) {\n let currVal = timeArr[index];\n if (currVal === undefined) {\n continue;\n }\n\n if (minTime === null) {\n minTime = currVal;\n requiredChartIndices.push(index + 1);\n continue;\n }\n\n const currMoment = moment(new Date(currVal))\n const minMoment = moment(new Date(minTime))\n if (currMoment.isAfter(minMoment)) {\n continue;\n }\n\n if (currVal === minTime) {\n requiredChartIndices.push(index + 1);\n continue;\n }\n\n if (currMoment.isBefore(minMoment)) {\n minTime = currVal;\n requiredChartIndices = [index + 1]\n }\n }\n\n chartInfo[\"requiredChartIndices\"] = requiredChartIndices;\n chartInfo[\"minTime\"] = minTime;\n return chartInfo;\n}\n\nexport function mergeTimelines(abChartDataCombined) {\n /** Merge timeline of multiple charts. We will populate with previous data points\n * for missing data points.\n *\n **/\n const clonedAbChartDataCombined = _.cloneDeep(abChartDataCombined);\n let prevLine1 = undefined;\n let prevLine2 = undefined;\n let prevLine3 = undefined;\n let line1 = clonedAbChartDataCombined.line1;\n let time1 = clonedAbChartDataCombined.time1;\n let line2 = clonedAbChartDataCombined.line2;\n let time2 = clonedAbChartDataCombined.time2;\n let time3 = clonedAbChartDataCombined.time3;\n let line3 = clonedAbChartDataCombined.line3;\n\n const combined_time = [];\n const updatedLine1 = [];\n const updatedLine2 = [];\n const updatedLine3 = [];\n const line_1_fake = [];\n const line_2_fake = [];\n const line_3_fake = [];\n\n while (true) {\n let currIndexTimes = [];\n if (time1 !== undefined) {\n currIndexTimes.push(time1[0]);\n } else {\n currIndexTimes.push(undefined);\n }\n if (time2 !== undefined) {\n currIndexTimes.push(time2[0]);\n } else {\n currIndexTimes.push(undefined);\n }\n if (time3 !== undefined) {\n currIndexTimes.push(time3[0]);\n } else {\n currIndexTimes.push(undefined);\n }\n\n if (currIndexTimes.filter(x => x === undefined).length === 3) {\n break;\n }\n\n const res = getChartsWithMinTime(currIndexTimes);\n combined_time.push(res.minTime);\n const requiredChartIndices = res.requiredChartIndices;\n if (requiredChartIndices.length === 0){\n break;\n }\n\n if (time1 !== undefined && requiredChartIndices.includes(1)) {\n // Remove first element from line 1,s time array\n time1.shift();\n let point = line1.shift();\n prevLine1 = point;\n updatedLine1.push(point);\n line_1_fake.push(false)\n } else if (time1 !== undefined) {\n line_1_fake.push(true)\n if (prevLine1 === undefined || line1[0] === undefined) {\n updatedLine1.push(undefined);\n } else {\n // const avgPoint = (prevLine1 + line1[0]) / 2;\n const avgPoint = prevLine1;\n updatedLine1.push(avgPoint);\n prevLine1 = avgPoint;\n }\n }\n\n if (time2 !== undefined && requiredChartIndices.includes(2)) {\n // Remove first element from line 1,s time array\n time2.shift();\n let point = line2.shift();\n prevLine2 = point;\n updatedLine2.push(point);\n line_2_fake.push(false)\n } else if (time2 !== undefined) {\n line_2_fake.push(true)\n if (prevLine2 === undefined || line2[0] === undefined) {\n updatedLine2.push(undefined);\n } else {\n // const avgPoint = (prevLine2 + line2[0]) / 2\n const avgPoint = prevLine2\n updatedLine2.push(avgPoint);\n prevLine2 = avgPoint;\n }\n }\n\n if (time3 !== undefined && requiredChartIndices.includes(3)) {\n // Remove first element from line 1,s time array\n time3.shift();\n let point = line3.shift();\n prevLine3 = point;\n updatedLine3.push(point);\n line_3_fake.push(false)\n } else if (time3 !== undefined) {\n line_3_fake.push(true)\n if (prevLine3 === undefined || line3[0] === undefined) {\n updatedLine3.push(undefined);\n } else {\n // const avgPoint = (prevLine3 + line3[0]) / 2\n const avgPoint = prevLine3\n updatedLine3.push(avgPoint);\n prevLine3 = avgPoint;\n }\n }\n }\n\n clonedAbChartDataCombined.time = combined_time;\n if (updatedLine1.length > 0) {\n clonedAbChartDataCombined.line1 = updatedLine1;\n clonedAbChartDataCombined.is_fake_line1 = line_1_fake;\n }\n\n if (updatedLine2.length > 0) {\n clonedAbChartDataCombined.line2 = updatedLine2;\n clonedAbChartDataCombined.is_fake_line2 = line_2_fake;\n }\n\n if (updatedLine3.length > 0) {\n clonedAbChartDataCombined.line3 = updatedLine3;\n clonedAbChartDataCombined.is_fake_line3 = line_3_fake;\n }\n\n return clonedAbChartDataCombined;\n}\n\n\nexport function getModelABCombineChartsInMonitor(currModelAB_id, model_ids, mappedChartData) {\n const thumbnailData = {};\n const detailedChartData = {};\n thumbnailData[\"model_ids\"] = model_ids;\n const sections = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n const thumbnailDataSections = [];\n let recentTimeValueInChart = null;\n\n // Commented Safari not supported replaceAll function \n // const idKeyStr = currModelAB_id + '_' + model_ids.toString().replaceAll(\",\",\"_\");\n const idKeyStr = currModelAB_id + '_' + model_ids.toString().replace(/,/g, \"_\");\n // Add keys to be used\n const modelAccuracySection = sections[MODEL_ACCURACY];\n modelAccuracySection[\"key\"] = `${MODEL_ACCURACY}_${idKeyStr}`;\n modelAccuracySection[\"name\"] = `${MODEL_ACCURACY} Metrics`;\n\n const detailedSections = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n\n // Delete model evaluation, model explainability, feature_importance section, since we won't show \n // that in Compare View - Detailed charts page.\n delete detailedSections[MODEL_EVALUATION];\n delete detailedSections[MODEL_EXPLAINABILITY];\n delete detailedSections[FEATURE_IMPORTANCE];\n\n thumbnailDataSections.push(modelAccuracySection);\n\n const modelMonitoringSection = sections[MODEL_MONITORING];\n modelMonitoringSection[\"key\"] = `${MODEL_MONITORING}_${idKeyStr}`;\n // Name is changed as per QPS-2230\n modelMonitoringSection[\"name\"] = `${MODEL_RUNTIME_PROFILE} Metrics`;\n thumbnailDataSections.push(modelMonitoringSection);\n thumbnailData[\"sections\"] = thumbnailDataSections;\n\n // Get chart data of the required 2 or 3 models\n const model_id_1 = model_ids[0];\n const model_id_2 = model_ids[1];\n const model_id_3 = model_ids[2];\n\n const chartData_1 = mappedChartData[model_id_1];\n const chartData_2 = mappedChartData[model_id_2];\n const chartData_3 = mappedChartData[model_id_3];\n\n\n\n // Combine the metric names into single list\n let metricNames = [];\n if (!IS_NONE_CHECK.includes(chartData_1)) {\n metricNames = [...metricNames, ...Object.keys(chartData_1)];\n }\n\n if (!IS_NONE_CHECK.includes(chartData_2)) {\n metricNames = [...metricNames, ...Object.keys(chartData_2)];\n }\n\n if (!IS_NONE_CHECK.includes(chartData_3)) {\n metricNames = [...metricNames, ...Object.keys(chartData_3)];\n }\n\n const uniqueMetricNames = new Set(metricNames);\n\n // Get the data for each metric of models, merge the charts into single charts for each metric\n // and add the merged result to the corresponding section.\n for (let currentMetric of uniqueMetricNames) {\n if (currentMetric.includes(\" vs \")){\n continue;\n }\n if (currentMetric === modelPerformance.HOMOGENEITY_COMPLETENESS_V_MEASURE_SCORE){\n continue;\n }\n // Check for model 1\n let sectionType = MODEL_PERFORMANCE_RESULT_GROUP_MAP[currentMetric];\n if (sectionType === MODEL_EVALUATION || sectionType === MODEL_EXPLAINABILITY) {\n continue;\n }\n\n if (sectionType === undefined) {\n sectionType = MODEL_ACCURACY;\n }\n\n let fullChartInfoForCurrMetric = {};\n let associatedModels = [];\n let combinedChart1 = getABChartData(null, chartData_1,\n currentMetric, 1, fullChartInfoForCurrMetric);\n let combinedChart = combinedChart1[\"combinedData\"];\n associatedModels.push(combinedChart1[\"currModelInfo\"]);\n\n const combinedChart2 = getABChartData(combinedChart, chartData_2,\n currentMetric, 2, fullChartInfoForCurrMetric);\n combinedChart = combinedChart2[\"combinedData\"];\n associatedModels.push(combinedChart2[\"currModelInfo\"]);\n\n const combinedChart3 = getABChartData(combinedChart, chartData_3,\n currentMetric, 3, fullChartInfoForCurrMetric);\n combinedChart = combinedChart3[\"combinedData\"];\n associatedModels.push(combinedChart3[\"currModelInfo\"]);\n\n if (IS_NONE_CHECK.includes(combinedChart)) {\n // All 3 models does not have chart\n continue;\n }\n\n const reqKey = `model_ab_${getNormalizedName(currentMetric)}_${idKeyStr}`;\n combinedChart[\"idValue\"] = reqKey;\n combinedChart[\"key\"] = reqKey;\n combinedChart[\"chartType\"] = \"thumbnailMultiLine\";\n combinedChart[\"lineColors\"] = \"multi-line-colors\";\n\n // Merge timelines of combined charts\n combinedChart = mergeTimelines(combinedChart);\n\n\n const timeArr = combinedChart.time;\n if (IS_NONE_CHECK.includes(recentTimeValueInChart) && timeArr.length > 1) {\n recentTimeValueInChart = timeArr[timeArr.length - 1];\n }\n\n sections[sectionType].data.push(combinedChart);\n\n // Add to detailed chart data\n const clonedCombinedChart = _.cloneDeep(combinedChart);\n clonedCombinedChart[\"key\"] = `fs_${reqKey}`;\n clonedCombinedChart[\"chartType\"] = \"multiLineChart\";\n clonedCombinedChart[\"source\"] = MODEL_AB_COMPARE_SRC;\n clonedCombinedChart[\"isCombinedChart\"] = true;\n clonedCombinedChart[\"associatedModels\"] = associatedModels;\n\n fullChartInfoForCurrMetric[\"combinedChart\"] = clonedCombinedChart;\n\n detailedSections[sectionType].data.push(fullChartInfoForCurrMetric);\n }\n\n detailedChartData[\"key\"] = `mpcv_detailed_${idKeyStr}`\n detailedChartData[\"data\"] = detailedSections\n\n thumbnailData[\"recentTimeValueInChart\"] = recentTimeValueInChart\n\n\n return {\n \"thumbnailData\": thumbnailData,\n \"detailedChartData\": detailedChartData\n };\n}\n\nexport function getMonitorCompareViewTableData(modelABData, modelInfoMap,\n mappedChartData, showMoreData) {\n if (IS_NONE_CHECK.includes(modelABData) || IS_NONE_CHECK.includes(modelInfoMap)) {\n return {\"abDetailedChartData\": {},\"tableRows\": []};\n }\n\n // Get error status about available models\n const errMap = getModelErrorStatusForModelAB(showMoreData);\n\n const tableRows = [];\n const abDetailedChartData = {};\n for (const currAB of modelABData) {\n let currentRow = [];\n\n // First column data -> Model name with text\n const modelNameData = [];\n const model_ids = [];\n const modelSummaryData = [];\n\n const currModelAB_id = currAB.model_ab_id;\n const model_1 = currAB.model_1;\n model_ids.push(String(model_1));\n const model_1_data = modelInfoMap[model_1];\n if (IS_NONE_CHECK.includes(model_1_data)){\n continue;\n }\n\n modelNameData.push({\"name\": model_1_data.model_name, \"text\": \"A\"});\n const model_1_summary = getABCompareViewModelSummary(model_1_data, errMap);\n modelSummaryData.push(model_1_summary);\n\n const model_2 = currAB.model_2;\n const model_2_data = modelInfoMap[model_2];\n model_ids.push(String(model_2));\n if (IS_NONE_CHECK.includes(model_2_data)){\n continue;\n }\n\n modelNameData.push({\"name\": model_2_data.model_name, \"text\": \"B\"});\n const model_2_summary = getABCompareViewModelSummary(model_2_data, errMap);\n modelSummaryData.push(model_2_summary);\n\n const model_3 = currAB.model_3;\n let model_3_data = modelInfoMap[model_3];\n if (!IS_NONE_CHECK.includes(model_3_data)) {\n model_ids.push(String(model_3));\n modelNameData.push({\"name\": model_3_data.model_name, \"text\": \"C\"});\n const model_3_summary = getABCompareViewModelSummary(model_3_data, errMap);\n modelSummaryData.push(model_3_summary);\n }\n\n currentRow.push(modelNameData);\n currentRow.push(modelSummaryData);\n\n const abChartData = getModelABCombineChartsInMonitor(currModelAB_id, model_ids, mappedChartData);\n\n const thumbnailChartsData = abChartData[\"thumbnailData\"];\n const detailedChartData = abChartData[\"detailedChartData\"];\n thumbnailChartsData[\"key\"] = `thumbnail_${currAB.model_ab_id}`;\n\n // For Performance Metrics column\n currentRow.push(thumbnailChartsData);\n\n // For Detailed Charts column\n currentRow.push({\"model_ab_id\": currModelAB_id, \"model_ids\": model_ids});\n\n tableRows.push(currentRow);\n\n detailedChartData[\"model_ids\"] = model_ids;\n abDetailedChartData[String(currModelAB_id)] = detailedChartData;\n }\n\n return {\"abDetailedChartData\": abDetailedChartData,\"tableRows\": tableRows};\n}\n\n\nexport function getSuffixedDate(date_obj) {\n // Get the input date string and adds required suffix to date\n // Given input should be Date object. Ex) new Date()\n const dayValue = date_obj.getDate();\n let suffix;\n if (dayValue >= 11 && dayValue <= 20) {\n suffix = \"th\";\n return `${dayValue}${suffix}`;\n }\n\n let lastDigit = dayValue % 10;\n suffix = SUFFIXED_DATE[String(lastDigit)];\n if (suffix === undefined) {\n suffix = \"th\";\n }\n\n return `${dayValue}${suffix}`;\n}\n\n\nexport function getModelNameMappedCharts(chartData) {\n /*\n * Gets performance chart data in format required for Model AB combination charts\n *\n * Sample return data:\n * {\"2\": {\"Weighted precision\": {}\n */\n const modelABCombinationChart = {};\n for (const currChart of chartData) {\n const ml_model_id = String(currChart[\"ml_model_id\"]);\n const name = currChart[\"name\"];\n if (modelABCombinationChart[ml_model_id] === undefined) {\n modelABCombinationChart[ml_model_id] = {};\n }\n\n modelABCombinationChart[ml_model_id][name] = _.cloneDeep(currChart);\n }\n\n return modelABCombinationChart;\n}\n\n\nexport function getTotalShowMoreDataPointsCount(fullShowMoreData) {\n let count = 0;\n const dataSetData = fullShowMoreData.dataSet;\n const attributeData = fullShowMoreData.attribute;\n for (let currData of dataSetData) {\n let chartData = currData.data;\n if (IS_NONE_CHECK.includes(chartData)) {\n continue;\n }\n\n count = count + chartData.length;\n }\n\n for (let currData of attributeData) {\n let chartData = currData.data;\n if (IS_NONE_CHECK.includes(chartData)) {\n continue;\n }\n\n count = count + chartData.length;\n }\n\n return count;\n}\n\n\nexport function getModelErrorStatusForModelAB(fullShowMoreData) {\n /**\n * Returns a dictionary with model id as key and true if the model has error chart data in it.\n * */\n if (IS_NONE_CHECK.includes(fullShowMoreData)) {\n return {};\n }\n\n const modelErrMap = {};\n const dataSetLevelMLCharts = fullShowMoreData.dataSet;\n const attributeLevelMLCharts = fullShowMoreData.attribute;\n for (let currSection of dataSetLevelMLCharts) {\n const charts = currSection.data;\n\n for (let chart of charts) {\n const currModelID = chart.ml_model_id;\n if (!IS_NONE_CHECK.includes(modelErrMap[currModelID])){\n // We have taken result for this model already.\n continue;\n }\n\n const res = getChartTypeForMonitorCharts(chart);\n if (res.hasError) {\n modelErrMap[currModelID] = true;\n }\n }\n }\n\n for (let currSection of attributeLevelMLCharts) {\n const charts = currSection.data;\n for (let chart of charts) {\n const currModelID = chart.ml_model_id;\n if (!IS_NONE_CHECK.includes(modelErrMap[currModelID])){\n // We have taken result for this model already.\n continue;\n }\n\n const res = getChartTypeForMonitorCharts(chart);\n if (res.hasError) {\n modelErrMap[currModelID] = true;\n }\n }\n }\n\n return modelErrMap;\n}\n\nexport function filterBasedOnModelAB_ID(mpCompareViewTableData, selectedModelABID) {\n let currentTableData = [];\n for (let currRow of mpCompareViewTableData) {\n if (currRow[3].model_ab_id !== selectedModelABID) {\n continue;\n }\n currentTableData.push(_.cloneDeep(currRow));\n break;\n }\n return currentTableData;\n}\n\n\nexport function getModelOptionsAssociatedWithAB(currABData, mlModelOptions) {\n if (IS_NONE_CHECK.includes(currABData)) {\n currABData = [];\n }\n\n if (IS_NONE_CHECK.includes(mlModelOptions)) {\n mlModelOptions = [];\n }\n\n let associatedModels = [];\n for (let modelABData of currABData) {\n const model_1 = modelABData.model_1;\n if (!IS_NONE_CHECK.includes(model_1) && !associatedModels.includes(model_1)) {\n associatedModels.push(model_1);\n }\n\n const model_2 = modelABData.model_2;\n if (!IS_NONE_CHECK.includes(model_2) && !associatedModels.includes(model_2)) {\n associatedModels.push(model_2);\n }\n\n const model_3 = modelABData.model_3;\n if (!IS_NONE_CHECK.includes(model_3) && !associatedModels.includes(model_3)) {\n associatedModels.push(model_3);\n }\n }\n\n associatedModels = associatedModels.map(x=> Number(x));\n return mlModelOptions.filter(x => associatedModels.includes(Number(x.value)));\n}\n\n\nexport function filterBasedOnMetricNames(fullScreenData, requiredMetrics, startDate, endDate) {\n if (IS_NONE_CHECK.includes(fullScreenData)){\n return fullScreenData;\n }\n\n const requiredFullScreenData = _.cloneDeep(fullScreenData);\n\n for (let sectionName of Object.keys(requiredFullScreenData)){\n let sectionData = requiredFullScreenData[sectionName];\n if (IS_NONE_CHECK.includes(sectionData)){\n continue;\n }\n\n let data = sectionData[\"data\"];\n\n let filteredData = [];\n for (let currData of data){\n const combinedChart = currData.combinedChart;\n if (IS_NONE_CHECK.includes(combinedChart)){\n continue;\n }\n\n // Perform time filter\n currData.combinedChart = performTimeFilterForModelABCombinedCharts(combinedChart, startDate, endDate);\n\n // If metrics list is given, we will filter only selected metrics.\n // If required metrics is not given, we will include all the chart results\n if (requiredMetrics === null || requiredMetrics.includes(combinedChart.name)){\n filteredData.push(currData)\n }\n }\n\n sectionData[\"data\"] = filteredData;\n requiredFullScreenData[sectionName] = sectionData;\n }\n\n return requiredFullScreenData;\n}\n\nexport function performTimeFilterForModelABCombinedCharts(currentData, startDate, endDate) {\n let times = currentData.time;\n let line_1_values = currentData.line1;\n let line_1_status = currentData.is_fake_line1;\n let line_2_values = currentData.line2;\n let line_2_status = currentData.is_fake_line2;\n let line_3_values = currentData.line3;\n let line_3_status = currentData.is_fake_line3;\n const filteredTimes = [];\n const filtered_line_1 = [];\n const filtered_line_1_status = [];\n const filtered_line_2 = [];\n const filtered_line_2_status = [];\n const filtered_line_3 = [];\n const filtered_line_3_status = [];\n\n for (let index = 0; index < times.length; index++) {\n let xTime = times[index];\n let timeObj = new Date(xTime);\n const parsedDate = moment(timeObj);\n const cDateIsBeforeEndDate = parsedDate.isSameOrBefore(endDate);\n const canIncludeVal = parsedDate.isSameOrAfter(startDate) && cDateIsBeforeEndDate;\n if (!canIncludeVal) {\n continue;\n }\n\n filteredTimes.push(xTime);\n\n if (line_1_values !== undefined) {\n filtered_line_1.push(line_1_values[index]);\n filtered_line_1_status.push(line_1_status[index]);\n }\n\n if (line_2_values !== undefined) {\n filtered_line_2.push(line_2_values[index]);\n filtered_line_2_status.push(line_2_status[index]);\n }\n\n if (line_3_values !== undefined) {\n filtered_line_3.push(line_3_values[index]);\n filtered_line_3_status.push(line_3_status[index]);\n }\n }\n\n const clonedData = _.cloneDeep(currentData);\n clonedData.time = filteredTimes;\n if (line_1_values !== undefined) {\n clonedData.line1 = filtered_line_1;\n clonedData.is_fake_line1 = filtered_line_1_status;\n }\n\n if (line_2_values !== undefined) {\n clonedData.line2 = filtered_line_2;\n clonedData.is_fake_line2 = filtered_line_2_status;\n }\n\n if (line_3_values !== undefined) {\n clonedData.line3 = filtered_line_3;\n clonedData.is_fake_line3 = filtered_line_3_status;\n }\n\n return clonedData;\n}\n\n\nexport function getAllMetricRecencyInfo(otherMetrics, recencyMetrics) {\n let recencyKeys = Object.keys(recencyMetrics);\n let otherKeys = Object.keys(otherMetrics);\n if (otherKeys !== undefined && otherKeys !== null && recencyKeys !== undefined && recencyKeys !== null) {\n for (let intKey in recencyKeys) {\n const integrationKey = recencyKeys[intKey];\n if (otherKeys.includes(integrationKey)) {\n let recencyIntegData = recencyMetrics[integrationKey];\n let otherIntegData = otherMetrics[integrationKey];\n let recencyIntegDataKeys = Object.keys(recencyIntegData);\n for (let key in recencyIntegDataKeys) {\n const recencyMetricDataKey = recencyIntegDataKeys[key];\n if (Object.keys(otherIntegData).includes(recencyMetricDataKey)) {\n const recencyMetricKey = Object.keys(recencyMetrics[integrationKey][recencyMetricDataKey]);\n for (let recencyKey in recencyMetricKey) {\n const recencyValueKey = recencyMetricKey[recencyKey];\n otherMetrics[integrationKey][recencyMetricDataKey][recencyValueKey] = recencyMetrics[integrationKey][recencyMetricDataKey][recencyValueKey]\n }\n } else {\n otherMetrics[integrationKey][recencyMetricDataKey] = recencyMetrics[integrationKey][recencyMetricDataKey];\n }\n }\n } else {\n otherMetrics[integrationKey] = recencyMetrics[integrationKey];\n }\n }\n }\n return otherMetrics;\n }\n\n\nexport function formatNumber(number) {\n let formattedNumber;\n try{\n formattedNumber = new Intl.NumberFormat('en-US', {\n notation: \"compact\",\n maximumFractionDigits: 4\n }).format(number);\n } catch {\n formattedNumber = number\n\n }\n return formattedNumber;\n}\n\n\nexport function checkExpiryPowerBI() {\n const featureAccess = getFeatureAccess();\n let enablePowerBiTab = false;\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const powerbiTab = featureAccess[\"powerbi\"];\n enablePowerBiTab = powerbiTab === true;\n }\n return enablePowerBiTab;\n}\n\nexport function checkSessionForRedirection() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" ||\n sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n}\n\n\nexport function getShortTitleForAttribute(fullAttributeName, separator=STRUCT_SEPARATOR){\n // Most of the time we will use struct separator. \n // But if user gives different separator, we will use that. \n // (Different separator will come for cases like tooltip in charts)\n if(fullAttributeName === undefined){\n return {\"requiredName\": \"\", \"fqTooltipContent\": null};\n }\n\n let arrSplit = fullAttributeName.split(separator);\n if (arrSplit.length <= 2) {\n return {\"requiredName\": fullAttributeName, \"fqTooltipContent\": null};\n }\n\n let miniText = arrSplit.slice(-2).join(STRUCT_SEPARATOR);\n return {\"requiredName\": miniText, \"fqTooltipContent\": fullAttributeName}\n}\n\n\nexport function getChartTooltipHeaderNestedRecord(tooltipTopHeader) {\n /**\n * This is for having shortened name for nested struct.\n * This function is called by all tooltip functions of charts.\n * This function returns a json object with 2 keys.\n * \n * 'tooltipTopHeader' -> Represents shortened name\n * 'attributeTooltip' -> Represents full name\n */\n let shortenedData = getShortTitleForAttribute(tooltipTopHeader, QUALDO_ATTRIBUTE_SEPARATOR);\n let shortenedName = shortenedData[\"requiredName\"]\n let attributeTooltip = shortenedData[\"fqTooltipContent\"];\n if (attributeTooltip !== null) {\n // We have tool tip component. So use shortened component\n shortenedName = FQ_TOOLTIP_PLACEHOLDER + shortenedName;\n attributeTooltip = normalizeAttributeName(attributeTooltip);\n }\n\n tooltipTopHeader = normalizeAttributeName(shortenedName);\n return {\n \"tooltipTopHeader\": tooltipTopHeader,\n \"attributeTooltip\": attributeTooltip\n }\n}\n\n\n\nexport function getNestedAttributeTreeOptions(all_options) {\n let flattenedOptions = [{label: \"Select All\", value: \"selectAll\",\n className: \"select-all\"}];\n for (let datasetOption of all_options) {\n let datasetName = datasetOption.label;\n flattenedOptions.push({ label: datasetName, disabled: true });\n let attributes = datasetOption.options;\n let tmpData = {};\n\n for (let currAttribute of attributes) {\n let attributeName = currAttribute.label;\n let attributeId = currAttribute.value;\n let sepArr = attributeName.split(STRUCT_SEPARATOR);\n\n if (sepArr.length === 1) {\n tmpData[attributeName] = { label: attributeName, value: attributeId }\n continue;\n }\n\n let parent = tmpData;\n let index = 0;\n let lastIdx = sepArr.length;\n let pathArr = [];\n for (let part of sepArr) {\n pathArr.push(part);\n index = index + 1;\n\n if (index === lastIdx) {\n // Leaf element. So update with value\n parent[\"children\"].push({\n \"label\": part, \"value\": attributeId,\n \"pathArr\": _.cloneDeep(pathArr)\n });\n continue;\n }\n\n let currentPart = parent[part];\n if (currentPart === undefined) {\n let newParent = {\n \"label\": part, \"children\": [],\n \"pathArr\": _.cloneDeep(pathArr)\n };\n parent[part] = newParent\n if (index > 1) {\n parent[\"children\"].push(newParent);\n }\n }\n\n parent = parent[part];\n }\n\n }\n\n flattenedOptions.push(...Object.values(tmpData));\n }\n\n if (flattenedOptions.length === 1) {\n flattenedOptions = [];\n }\n\n return flattenedOptions;\n}\n\n\nexport function getVersionNameFromData(data) {\n let versionName;\n if (data.version_name !== undefined && data.version_name !== null) {\n versionName = data.version_name;\n } else {\n versionName = \"Not Applicable\";\n }\n \n return versionName;\n}\n/* Monitor Tab New Row Count Feature Check */\nexport function checkNewRowCnt(){\n return process.env.REACT_APP_NEW_ROW_CNT_FEATURE === \"true\" ? true : false;\n}\n","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo.48061a72.svg\";","module.exports = __webpack_public_path__ + \"static/media/opps_img_human.da787b41.svg\";","module.exports = __webpack_public_path__ + \"static/media/oops_img_globe.36c6875e.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_google.8c627930.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_data-engineers.efd72275.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_data-stewards.ebd6110f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_data-scientists.5164e56f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_data-devops.28270645.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-light.08621011.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_data-quality.87770d16.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_url-link.edd4e2ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_notification.3767c555.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_add-data.ae149c1a.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/icon_pipeline-tigger.80d9dad2.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_success.bb5e5352.svg\";","module.exports = __webpack_public_path__ + \"static/media/incremental.ffb62368.svg\";","module.exports = __webpack_public_path__ + \"static/media/line-time-series-default.6c9d7f45.png\";","module.exports = __webpack_public_path__ + \"static/media/icon_data-alert.c7f2a9cd.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_thankyou-email.52221123.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMjBUMjM6MTU6MzQrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTIwVDIzOjE1OjUyKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTIwVDIzOjE1OjUyKzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNjOWYxMDhiLWZlMmYt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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMjBUMjM6MTA6MTcrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTIwVDIzOjExOjU3KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTIwVDIzOjExOjU3KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU1ZmNhYmYxLTczNzYtNDc0Ni05YmI1LTM5YTMwZTE1YTI3YSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NWZjYWJmMS03Mzc2LTQ3NDYtOWJiNS0zOWEzMGUxNWEyN2EiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NWZjYWJmMS03Mzc2LTQ3NDYtOWJiNS0zOWEzMGUxNWEyN2EiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1ZmNhYmYxLTczNzYtNDc0Ni05YmI1LTM5YTMwZTE1YTI3YSIgc3RFdnQ6d2hlbj0iMjAyMC0wOC0yMFQyMzoxMDoxNyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0/0luAAAFm1JREFUeJztnXmYnVV9xz/f87535s4QspCEEIICEpaCBHBrq4K4UGvVsrQUS4W6VK36+Ni6tVpQWlyAQAhBFhEVeWjdlRZbFDfUKILgghiJLEqUJUA2SCYzc9/3/PrHOe+dm0g0y8zcZc7ned5n7nvunbnn3nfO9z3nd36LzjjjDMwM5xwAZgaApObPoihwzjXbzAxJZFlGWZbNczOj0WhQq9WQhPeeWq1GURRsC0mcffbZnHnmmUjCOdf8mytXruSQQw5p/u2KRqNBnucAOOcYGhqiXq9v8brq/bMsw3u/xWcCyLKMRqOBJPI8Z8OGDdvsY6cwY8YMAEZGRsjzHDMjz3OKomh+9tbP6L3HOYf3Hkm/c/1aH1evLcuyeV2r/4myLKnVanjvaTQaDAwM4L3HzJrXaeHChWRZtsX7rV+/ntmzZ1OWZfO9Vq5cyWGHHcbo6ChZlgE0f1avq9qq/7vqmhZFQZZlW3zG6jvoJVq/hyei+m6APkn9RVHMybJsEXCYpEXAXsDuZra7pN2B/gnvdIdQluXzeuu/IZHofQTMAJ4FHAs8P8/zgwnC1Qc0x3Sr+E8VsizrT6KWSHQPdeCEoij+VdL+wCAtIhbxQAlYfGzxmAoY0Eiilkh0PgKOAs4GjpE0reW5BrDae79S0gPOuQe896udcxuBjWa2CRhuQ58nHTPbIOnnSdQSic4mA04BLgLmtLQ/ambfAr4v6efOuVGgYWaFpNLMPGGmVs3WpgLrzKxIopZIdC4OeD/wJmB6bGsA1wHXSHoEGAJG42u11ZHxu8vTXqYOU+sDJxLdxtuBf2Zs9/IXks43s7uADQThckyh3c3tIYlaItGZnAycxZhgfQVYYmYPE5aTtTb1q+Nx7e5AIpH4HQ42s4sIu5tIuhk4F3iQsKRMgvZ7SDO1RKKzGACukDQfwMzuBz4ArCUtM7eLJGqJnqAsS4aGhtrdjZ1mcHCwengOcAyAmTUIGwX3kWZn200StURPYGZ/MLyok4nhan8N/GNL8+WSbiEJ2g6RRC3RM3R5WNB+wIWEUCeA70r6NGFToKs/2GSTNgoSifZTk/QxYJ94/gBhY2ATaYzuMGmmlugZBgcHu8quNjAwUM0uPwC8IDYXkt5vZr8hLTt3iiRqiZ6hSmHULcQ0SscDb6nSK5nZpcAPSIK20yRRS/QMrTn3ugEz24dgR6vH8+WSPtPeXnU/ab2eSLSHTNIVwP7xfLWkxSQ72i6TZmqJnqJer3d0JtxGo1FlFH4f8JLY7CV90Mx+xdjuZ2In6dyrn0jsBFmWdbSoxRTzfwG8rcWOdgXwXZKgjQude/UTiZ2gqpvQqZjZPt77ZZJ2i03fk/Sfbe1Uj5HW7onE5OGcc5dJOiCer/beLwYeJ43FcSPN1BI9h5kxOjra7m40qdWa3hlnSXoZgJmVwDmS7iEFqo8rSdR6mwFCxtTdgHXx6HnM7PeWZZxsoo3vRcDbqjZJnwBuJAnauJNErbc4CPgT4I+B/SUNEmpD1iQNE5Y5Gwh5ue4AvgPc3a7OTiQdFge6ALiMcHMBuAm4mhTTOSEkUet+BJwAnCjpjwgDaD5sWZB6i1+QDHgYWAWsBJYD18fznqGdGwYt37nM7CJJC+P5GuA8ws0lRQ1MAEnUupuXeu9fL+kIYN+tn4zpbB43syFghqR6fErAPGCepGcCfy7pVcD/AZcSBl5Xk+d5W8OmiqKohO1dkv4KwMzMObc41hio/94/kNhpkqh1Jw54t6RXm1m1k4aZjUr6iaQV3vu7JW0ERiQ1CINo0Dk3pyzLPYHDJR1O8I2aI2kOcIRz7vnAZ4Ergc4xTO0gzrm2+quVZYlz7hhJ/9rSfLWZ3UAStAkliVr3MZhl2cXAqbQMDjP7pqRrgfvNbDVhtlUyVi7NAG9mu8ViuPOBvYCDCYVynwMMSHo+sEjSccD5BPtPV9Jmf7V5ki4DZsa+3BI3BxITTBK17qJeluVlkk6H5qBd4Zz7InAzwT5WI+TnGuQJDNGxyO1GYAVwOyEjxDck3Whmf2Vmh0ia7Zw7CVhoZlcDF0zGh+slnHNLgEPj6Rozu0DSOpIdbcJJohap7ur1entXBsPDw9t8znu/1MxObzFC/4+kz5jZ7fF8+jZ+tRUXj+raF8BdZnYPcKekownl2WYRZmxnOecWEXLn/2KHP1AbKctyUu1qRVFUcZ1vk3QqNP+vFktaQXLfmBSSqEWqhH3XXnttW/txwgknACFGEMKgcM5hZm8wsze0CNo3JH0Y+C3BH21n3QOyeHjgNuCXhBncK4DnAtOcc6eb2ULgEwRbW1cw2ctP7z2Sng2cWbVJugb4KknQJo0kapFarUaWZaxYsaKt/TjllFMAms6jUdReZmZnV6+RdJOZXQg8RKwNOQ64+LdGga8B90v6lff+tCikz5Z0UJ7nBwHvBbY9pZy6zCbsHs8EMLNbY5ru5I82iaR4s0inBEJX/Wg5Do8CNje+ZIWZnU8omzYRWR0yYHfCkvRySR8ys8rFY45z7p3e+48Q/OESLTjnzgOOADCztTE/2lrSOJtU0pfd2SyQ9BFgIYCZPUqwba1k4pczdWCTpE9JOsvMbqueMLPTzezjwJ9OcB92mWoZP1EURYH3Hu/9GyW9Bpr+gUsJURtpY2CSSaLWuQxIWibpTyH4oJnZYuBWJs/PKTezGmE5uhj435bZ7J8BHwZO7uR6mxMtat57zOwZZvbv0BS0T0v6MsHWmZhkkqh1KJLOB06C5kBZJun/GD8b2nZ3BZgm6Q5gqaSrW557mqQle++991smuU+dxAyCHa0yD/wY+EgnmDKmKknUOhDv/fuAN7U0fSwuA9uZGbUOPCzp8ri0qmrR7TNnzpwPOec+wBTM3Bo/9zPj6eNmtoRkR2sr6YvvMLz3rzWzf6vOzexLkq60cOtv9y5azcw2A1cB55jZ/QBlWe7mnHtPdDHpuA2E8V6ClmVZ2dFeI+nNVbuZLZP0E5Idra0kl46teOELX4j3njVrJi6me968ec3HWw24l3rvz5FUDYqbgEsI7hOdUtQyi1EJnwfWmdmrCctQgNeZ2Z6E4rw/bGMft8B7XznFjgsxrnORpA+2NH8R+IKk5I/WZpKobcWLXvQiiqJg5cqVE/YeixYtaj4uy7JyJXm6pKVDQ0Nz4lP3AhdIeoTOu/M7YFDS1+OO7Glm9hdR2I6XNB9YbGafb2svJ45B4CJCphMIkRaXdlgOtylLErWtGBoaoigKRkZGJvQ9KqKoPRlY1pJz61EzWyxpMlw3doXdJP0MWBJ92U6L7c8Clg4MDOxJMKJ3BJLGxRfROXeWpGMBzGyTmV3gnOvEm8+UJNnU2s8MSRfF8BqAzd77JYSstJ0saBV14BFJF5vZxWb2WGxfMDAwcIH3/oMEZ9624r3fpboFLXa0UyW9o+WpyyTdTBK0jiGJWnvJzOw8QuZaAMzsEknXSeomH6caITD+o4R0Rb8GMLO69/7dMSLioPZ1b9eLsURROyRer2qd+WXgU8mO1lkkUWsjZnYW8PqW848D17TZdWNncbEWwucI9rSboZnW+rXAMuC4djrq7qLNqw5cyNju7t3AxTE1eqKDSKLWJrz3b/Hen9Fi5/k8cLmkjPa7buwsIhQXuRE4z8yuh6aYvBi4eO7cuX/btt5FJG3XsdXvvAf483i6OfqjPUQaQx1H2ijYBhM5o/Dev9J7f25rGiHgIkkFvTFIBiTdZWbnee8fdc69gpC48uD58+df6r3fi+CqMunFOc1suzeBqnqdkk5yzr2n5W9cCXyX7rB5TjmSqG2DuXPnVuFJO7xsqZITRn+m5o5bNWPx3i9tsZndFkOiNtI5vmjjQZ+kdWa2NArbK4G5ZVnONLMlkhYQMuo+OJmd8t6zefPm7XptTDD5FElLGLs2NwBXJzta55JEbRvMnz+/KWo7mj11dHSUvr4+RkdHybKsVdSeBlxSluVsADO7R9K5hIHdi9cid875OLN52MxOk3RovFG8nWCfWkpIRT5p7MBNKicE8leVulYR4l9LemNG3ZP04kAaFyqn2J0xLpdl2TygmYF1X0kXA1X1p0cIO4V30tsxky7OSv8beNDMXgMcE7/XVwAHeO/PiXUWJoVWX7XWSIMnyKn3T5JOio9HvPcXOuceII2bjiZdnMlhDrAEqHzRHifY0L7L1CmXNijpNjN7MEZJnEBY0j3Te/9RQmWrjwET5/Uc6esL9xBJbNq0qdne39/fOis/TlIz27CZXSXpG/T2DagnSKI28ewGfIiYRghoAJcB1zJ1BK2iX9JqSed67x+RdAowS9Ie3vtLJD2ZEIEwoZXi+/v7cc7hnGPt2rXN9sHBQfr7+wGeJGmZmVXXZznw8S51tZlyJLvAxJIB75P0Dy3L2KuAa5h6glaRm1lB2P1cBtwFTTvXvxCW5BOaUbc1XfrWLhxm5szsHDM7JL78ATM7P+5MJ7qAJGoTSAyneWd1bmafM7PLSUsYF3cPPwuca2Y/aHnuZEKSxePb0zXeqFjeDhg1swsl/Zru9R2cciRRmyC89292zp3T0nQ9cGHK5LAFA8Atkv7DzK4jhFoBHO69vwp4KxOc6TfGc1bpiV4mqfWafVrS9SQzTVeRLtYEIOlvvfcXtAjYcuA8ScOkG8nW9BF2RT8g6X7gREJKn5kxw+4CQi2ECbGzDQ42NfPZtVrtcmBaPL/ZzD4iaaqaCbqWJGrjjJm93Dl3KWPe5ncAHwQ2kARtW2TOuQbBxnYfcDrwRwBm9k5gP+BcQrHlcWXmzJmY2VMlXWFmC+J7rpR0rqTNpGvWdaQLtp08QT3OJzqO9d5fQSxmC9wTqww9SPqu/xAiLDW/TMicu5yx5ejJwEcl/R1jiRnHBTN7upldamaHxabfxPe/l3TNupJ00bYT733TobZ6vFXb08qyrPytAH5jZh+SdBe9Ff400fQDd0g6g7BTXC07j3LOXUNwjzmGXf/fHTSzvwE+Ieno2PZITM55O2kV07WkCzc+HE7wY6qKDj8ELJZ0K+k73hnymGzyQjP7aZyhHRV3TF8NvISQBmg5IXfbAzvwt+cSikO/zHv/TsaSO67y3l/pnPs2KeFjV5MG3K5zAHAlcEQ8f9TMlqTBscs4QraP75jZD4HTYgrtw4C9zOxcSb8FvmNmNwIrgN8CjwFVmEBOqMs5DdjdObcQOA54sZk9CZohUz90zl0laTnpmnU9OTAdMELoTmLH2Bv4sKRnxfP1wDLn3FdJg2O8qElqABeb2dfM7LXOuWfE4i77SDrVe38qIbfZ9yX9Bng4/u4A8GRgPrCgVqsdClsEtG8ws2/FVORrNFbFK9HF5MDfxzQwqwjZPIcId7vHCEL3GCG0J7Elc4HzJVWJAzea2WWS/pskaONNVSV+lZm9K1au+htCTO0CoC5pL+CkKunm7/MHjPGnq83sK5I+o/DitGrpEXJJr2Vs6QTB9WAVYWv9PmCVpPuA1fG5xwgzkvVA+3Izt5cFwPuAKovrJuBKSZ8mCdpE4pxzuxGSan7NzI4ghFQdKWkeocDLIGMRGyXhJj0EDJvZMPArM/s2cKuk9aTr1XPkBNvFsJnVYxqWGQTD9+EQbA4tiQ5/FY9fAivNbCXwKGMit57en9XtS9gEODmebyJkl/gEaYBMFjmApDu89z92zpVmdoSkfYHZZjYtPt8g2DgfBtaY2aOS7o/CmJGuV0+Se+8vd84dLmmfoijmZlk2SLjbDRINrNC0Q+wP7C/pBdCsLv4wQeTuBFY65+4k+GWtIQjexsn9SBPKAYQiti+N54+Z2SclfYw0QNpB5pzLACT9ErjTzIZ8/Md0zmWS+hXrPsRl5ow29jcxCeRFUXyyr6/vAOfc0PDwsOV5vpf3fj7BCL6Pc26fsiwXSNqdsBs1neBcWsWX7ClpT+C5ksjzvHJp+DHwYzO7lbCcXUcQuce27kSXcDChMMqx8Xw9cKWZXZMMzB2BIwTKT9/RTMWJ3iKPR817P6Ner2NmmyXdA9ztvS8lbSqKYnOe57PMbO8sy54CHOi9PzDP873LspwmaRrhDjgdIBptX+Kce0m8aa4DbgduBX5EmNmtjcf6Sf7MO4yZPR+4QNJRsWltrM/5BedcMjAnEh3EEw1IxQPnXOa97+vr65tFcPtYC6w2s28WRTFcr9dVFMX+kvY3swPN7MAsy/bz3s+QNBPYg7AlPwt4Xjwws42EmdxtwI8WLFjwc8JGxEN01ubDTODEsiyXxM8DwRfqCknXkXbMEomOY0cGZbVH3iepr6+vb8bo6CjOuY3A7ZJ+WJbl5jzPR8zsAEmHe++PBA6TNFvSDGAWIfvpNODoePC6171uY1mW3wBuMLObCAK32nvfToE7CHiTmb21JYHgzwgztp+SQp8SiY5kPGYa1cxuIM/zesxLtQlY7r3/ivd+xDm3r3Puqc65I4FFBB+vyjZX995PA443s+PN7HHg68ANg4ODPyBsRKxm8mZw8yU9F3ivpKfGttFYT+BMIKUPSiQ6mPFePrV6PNbyPJ8ZHw977292zn0TGPLePxk41MyONLOjnHPzCI6Uswi7rSdKOnG//fYbIvgkfYVQPHYdYVd1+wo37hjTo9/TO7Is+8uW9ke991/K83xpzFmfBC2R6GAm2ibUFDnnXO69n06YoY0QbGrfAx6PIve8LMte4L0/QNIeBIEbBF5uZi8nCNly4EZJ3yYEMT9GcAje2fzxfcAeZjYHeFVZlm+UVO3qFmZ2r6RLzOwG7/0gKaVzItHxTLahW60/Je0WRWSkLMvrnHP/VRTFXpKOzrLsBbH4xUxgNiGO7zjguOg2sgK4BbjFOXcrYRd1mCCYIwShKwjOwJWjZY0glANmtifwHOBY7/3RwIzKdibpPu/918uyvCzP85Hou5cELZHoAtq9e9fcac2yrF6WZX+WZUVZljc4575QluUeZvZc4DnOuaPMbHfCjmq/pEMJS9hX9ff3V75xqwhJ/h5gLMJhHWFJO4uwxF0IPMV7f1BrIVtCkY2HgFudcxcVRbGqVqvNIszmkqAlEl1Cu0WtlVaB6yvLcg8ASd9uNBpfrtfrZVEUR0o6uizLZ+R5/qQoctMZC2jeqyVjRjO86w8UO1ljZmudc9cXRfF5SXeb2ZwoaMl+lkh0GZ0kaq00BQ5QrVabWZalSbrXe/+TRqOxsa+vb0ZZlk8zs2cR4lQPjEUyBgnZU3PCsjMHPGPL0REzG3bOjQC/NLPPeO+/lue5kzQjy7J5JHeNRKJr6VRRa6VV4Jxzbna9Xt+jLEuAXwA/9d4Pl2U5kuf5AZIOds4t8N7PJMzipksaNrN1kjaY2YPe+3vzPP8tMFQUxbQsy2aXZaksy9LMLJHocrpB1FpRy2GEZWd/lmXTsiwzYLgsy9vyPL/Je+/NrCyKwsdZWGZmmfe+lmVZXpZlnRDL6kg2s0SiZ+g2Uauw+HOLZSpgWZa5sixrkpBkfX3NYuiVva71dxKJRI+RxzxpvcATCV0ikZgi5HluAK7RaIyQRCCRSHQ3IvinNrPebiYJWyKR6E5E8HBYD5DXajVGR0dX9ff3LyS5MiQSie5CQJll2cPE0ojVRsHjRVGsyvN8PiGUKM3aEolERxMd6733fm2WZfdX7a27n2uA9VmW7TE6Otqtu6KJRGKKUBSFDQ4OrvPeNxjbKOT/AdvjI4e7rjuaAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMjBUMjM6MTA6MDMrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTIwVDIzOjExOjQ3KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTIwVDIzOjExOjQ3KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmM1MDE5YzVmLTU2Yjgt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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMjBUMjM6MDY6MzgrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTIwVDIzOjEyOjA1KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTIwVDIzOjEyOjA1KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjM1NzE0YjcwLWZmMjYt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\"","module.exports = __webpack_public_path__ + \"static/media/icon_internet-broken.5ea5739e.svg\";","module.exports = __webpack_public_path__ + \"static/media/secure_data.e4531902.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_visa.f762e3b4.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_master.957c8183.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_amex.12bb1b7f.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_discover.a00f6208.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_jcb.2157d4bd.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_paypal.f6f6e09a.svg\";","import React from 'react';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\nimport DataQualityMetricsForm from \"../metrics/components/DataQualityMetricsForm\";\nimport ModelQualityMetricsForm from \"../metrics/components/ModelQualityMetricsForm\";\nimport Select from \"react-select\";\nimport Integration from \"../configure/components/integration\";\nimport AddModel from \"../configure/mlmodel/addModel\";\nimport EmailForm from '../consume/components/EmailForm';\nimport WebhookForm from '../consume/components/WebhookForm';\nimport DatabricksForm from '../consume/components/DatabricksForm';\nimport AwsLambdaForm from '../consume/components/awsLambdaForm';\nimport GcpCloudFunctions from '../consume/components/gcpCloudFunctions';\nimport AirflowForm from '../consume/components/AirflowForm';\nimport AWSSagemakerForm from '../consume/components/AWSSagemakerForm';\nimport KubeflowForm from '../consume/components/KubeflowForm';\nimport SlackForm from '../consume/components/slackForm';\nimport PagerdutyForm from '../consume/components/PagerdutyForm';\nimport AlertForm from '../consume/components/alertForm';\nimport {getMetricTypeFromDefinition, isTemplateMetric} from '../utils/common_utils'\nimport CustomDefaultMetrics from \"./customDefaultMetrics\";\nimport MSTeamsForm from '../consume/components/msTeamsForm';\n\nexport function get_edit_component(props) {\n let details = props.details;\n switch (details.component_name) {\n case 'datasource':\n if (details.integration_details === undefined) {\n return (
    );\n }\n\n let env_value = null;\n if (details.environment !== null) {\n env_value = details.environment.filter(function (env) {\n return details.integration_details.env_id === env.value &&\n details.integration_details.env_name === env.label;\n });\n }\n\n\n let env_id = null;\n if (env_value !== null) {\n env_id = details.integration_details.env_id;\n }\n\n const handleChange = (selectedOption) => {\n this.props.setEnvData(selectedOption[\"value\"])\n }\n\n\n return (\n <>\n
    \n
    \n \n label.includes(query)}\n defaultValue={env_value}\n id=\"choose_environment_datasource_edit\"\n options={details.environment}\n placeholder=\"Choose Environment\"\n classNamePrefix='select-control'\n />\n
    \n
    \n \n \n );\n case 'metrics': case 'default_metrics':\n const exMetricDetails = details.metrics_data;\n const metricDefinition = exMetricDetails.metrics_definition;\n let metricType = getMetricTypeFromDefinition(metricDefinition);\n let isTemplate = isTemplateMetric(metricDefinition);\n let editComponent;\n let modelOptions = details.modelOptions;\n if (isTemplate) {\n editComponent = ();\n } else if(modelOptions !== undefined) {\n editComponent = ()\n }\n else {\n editComponent = ()\n }\n\n return (\n <>\n
    \n
    \n {editComponent}\n \n );\n case 'alert':\n const exAlert = details.alert_item;\n return (\n <>\n
    \n
    \n \n \n );\n\n case 'ml_model':\n if (details.mlData === undefined) {\n return (
    );\n }\n return (\n <>\n
    \n
    \n \n \n );\n case 'consume':\n const exConsume = details.consume_item;\n const consumeType = exConsume.consume_group_type;\n switch(consumeType) {\n case \"email\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"slack\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"pagerduty\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"MicrosoftTeams\":\n return (\n <>\n
    \n
    \n \n \n );\n default:\n return (\n <>\n \n );\n }\n\n case 'consume_pipeline':\n const ex_consume_web_hook = details.consume_item;\n const trigger_type = ex_consume_web_hook.pipeline_trigger_type;\n switch (trigger_type) {\n case \"webhook\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"databricks\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"lambda\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"cloudfunction\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"airflow\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"sagemaker\":\n return (\n <>\n
    \n
    \n \n \n );\n case \"kubeflow\":\n return (\n <>\n
    \n
    \n \n \n );\n default:\n return (\n <>\n \n );\n }\n default:\n return (\n
    \n );\n }\n}\n","import React from \"react\";\nimport Form from 'react-bootstrap/Form';\nimport { normalizeChildDatasetName } from \"../utils/attribute_name_utils\";\nimport {getIntegrationDetail} from \"../utils/event_handling\"\nimport Load from \"./loadAction\";\nimport QualdoDataTable from '../components/bootstrapTable';\nimport $ from \"jquery\";\n\nclass ViewContent extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n }\n this.getIntegrationDetail = getIntegrationDetail.bind(this);\n this.getPartitionTable = this.getPartitionTable.bind(this);\n this.SpecifiedDatasetTable = this.SpecifiedDatasetTable.bind(this);\n }\n \n renderOption(viewDetails){\n\n let notificationChannel = viewDetails[\"consume_group_type\"]\n let description = viewDetails[\"config_details\"][\"description\"]\n if ( notificationChannel === \"slack\" ) {\n return (<> \n
    \n
    \n \n
    \n {viewDetails[\"config_details\"][\"channel_name\"]}\n
    \n
    \n
    \n \n
    \n {description !== \"\" ? description : \"-\"}\n
    \n
    \n
    \n )\n }\n else if (notificationChannel === \"email\"){\n return (<>\n
    \n
    \n \n
    \n {viewDetails[\"config_details\"][\"email_id\"].join(', ')}\n
    \n
    \n
    \n )\n }\n else if (notificationChannel === \"MicrosoftTeams\") {\n return (<> \n
    \n
    \n \n
    \n {viewDetails[\"config_details\"][\"url\"]}\n
    \n
    \n
    \n )\n }\n }\n\n getPartitionTable() {\n let inputData =this.state.ex_edit_integration_details.integration_config.partitions;\n let headers=[\"Dataset Name\", \"Partition Name\", \"Partition By\", \"Partition Identifier\"];\n let final_op=[];\n\n setTimeout(\n () => {\n $(\"#ds_non_sticky_table .react-bootstrap-table\").removeClass(\"action-sticky-cell\");\n var el = document.getElementById('partition_cnt');\n if (el != null) {\n document.getElementById(\"partition_cnt\").innerHTML = inputData.length\n }}, \n 500\n );\n\n for(let i=0; i < inputData.length; i++) {\n let row=[];\n let d = inputData[i];\n row.push({\"value\": d[\"dataset_name\"], \"type\": \"td\"});\n row.push({\"value\": d[\"partition_name\"], \"type\": \"td\"});\n row.push({\"value\": d[\"partition_type\"], \"type\": \"td\"});\n row.push({\"value\": d[\"column_name\"], \"type\": \"td\"});\n final_op.push(row);\n }\n let table_data ={\"headers\": headers, \"data\": final_op};\n return table_data;\n }\n\n SpecifiedDatasetTable() {\n let inputData =this.state.ex_edit_integration_details.integration_config.table_names;\n let headers=[\"Dataset Name\", \"Match Dataset Name\", \"Incremental Data Identifier\", \"Start with\"];\n let final_op=[];\n\n setTimeout(\n () => {\n $(\"#ds_non_sticky_table .react-bootstrap-table\").removeClass(\"action-sticky-cell\");\n var el = document.getElementById('spec_cnt');\n if (el != null) {\n document.getElementById(\"spec_cnt\").innerHTML = inputData.length\n }}, \n 500\n );\n\n \n for(let i=0; i < inputData.length; i++) {\n let row=[];\n let d = inputData[i];\n let startWith = d[\"start_with\"] === \"\" ? d[\"start_with_query\"] : d[\"start_with\"]\n row.push({\"value\": d[\"table\"], \"type\": \"td\"});\n row.push({\"value\": d[\"match_exact\"]===\"match_exact\" ? \"Exact\" : \"---\", \"type\": \"td\"});\n row.push({\"value\": d[\"created_time\"], \"type\": \"td\"});\n row.push({\"value\": startWith, \"type\": \"td\"});\n final_op.push(row);\n }\n let table_data ={\"headers\": headers, \"data\": final_op};\n return table_data;\n }\n\n componentDidMount(){\n if(this.props.component === \"Datasource\"){\n this.getIntegrationDetail(this.props.viewDetails.integration_id);\n }\n }\n render() {\n\n let hadPartition = false\n if(this.props.component === \"Datasource\" && this.state.ex_edit_integration_details!==undefined){\n let integration_config = this.state.ex_edit_integration_details.integration_config\n if( \"partitions\" in integration_config && integration_config.partitions.length > 0) {\n hadPartition = true\n $(\".modal-dialog\").addClass(\"modal-xl\")\n $(\".modal-dialog\").removeClass(\"modal-lg\")\n }\n }\n // (this.state.ex_edit_integration_details === null){\n // }\n\n let viewDetails = this.props.viewDetails;\n if (this === undefined || this.props.viewDetails === undefined) {\n return;\n }\n\n let notifications = [];\n let pipelines = [];\n\n switch(this.props.component) {\n case \"Datasource\":\n return this.state.ex_edit_integration_details === null || this.state.ex_edit_integration_details === undefined ? \n
    :\n <>\n {/*
    */}\n
    \n { this.state.ex_edit_integration_details.integration_config.datasetToBeProcessed!== undefined && this.state.ex_edit_integration_details.integration_config.datasetToBeProcessed!== \"\" ?\n (hadPartition &&
    \"Datasource Info
    )\n :\"\"}\n
    \n \n
    {viewDetails[\"env_name\"]}
    \n
    \n
    \n \n
    {viewDetails[\"integration_name\"]}
    \n
    \n
    \n \n
    {viewDetails[\"integration_type\"]}
    \n
    \n
    \n \n
    {viewDetails[\"discovery_status\"]}
    \n
    \n
    \n \n
    {viewDetails[\"data_store_type\"]}
    \n
    \n
    \n \n
    {viewDetails[\"created_time\"]}
    \n
    \n { this.state.ex_edit_integration_details.integration_config.datasetToBeProcessed!== undefined && this.state.ex_edit_integration_details.integration_config.datasetToBeProcessed!== \"\" ?\n
    \n \n
    \n \n
    \n
    : \"\"\n }\n { this.state.ex_edit_integration_details.integration_config.table_names!== undefined && this.state.ex_edit_integration_details.integration_config.table_names!== \"\" && this.state.ex_edit_integration_details.integration_config.table_names.length > 0 ?\n
    \n
    \n
    {this.state.ex_edit_integration_details.integration_config.datasetToBeProcessed === \"allDataset\" ? \"All Datasets\" :\"Specified Datasets\"}
    \n
    \n:\"\"}\n\n{ this.state.ex_edit_integration_details.integration_config.partitions!== undefined && this.state.ex_edit_integration_details.integration_config.partitions!== \"\" && this.state.ex_edit_integration_details.integration_config.partitions.length > 0 ?\n
    \n
    \n
    Partitions
    \n
    \n:\"\"}\n
    \n \n\n case \"Model\":\n return (<>
    \n
    \n \n
    \n {viewDetails[\"model_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"ml_stack\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"ml_model_type\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"env_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"integration_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"author\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"created_time\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"modified_time\"]}\n
    \n
    \n
    \n )\n case \"Metric\":\n return (<>
    \n
    \n \n
    \n {viewDetails[\"metric_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {normalizeChildDatasetName(viewDetails[\"data_set_name\"])}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"created_time\"]}\n
    \n
    \n
    \n )\n case \"Notification Channel\":\n let notificationChannel = viewDetails[\"consume_group_type\"]\n return (<>
    \n
    \n \n
    \n {viewDetails[\"consume_group_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {notificationChannel}\n
    \n
    \n
    \n {this.renderOption(viewDetails)}\n
    \n
    \n \n
    \n {viewDetails[\"created_time\"]}\n
    \n
    \n
    \n\n )\n case \"Pipeline Channel\":\n return (<>
    \n
    \n \n
    \n {viewDetails[\"pipeline_trigger_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"pipeline_trigger_type\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"configuration\"][\"url\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"created_time\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"modified_time\"]}\n
    \n
    \n
    \n )\n case \"Custom Data Quality Alert\":\n notifications = viewDetails[\"consume_group_name\"].join(', ')\n pipelines = viewDetails[\"pipeline_trigger_name\"].join(', ')\n return (<>
    \n
    \n \n
    \n {viewDetails[\"alert_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"alert_period\"] !== null ? viewDetails[\"alert_period\"] : \"-\"}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"alert_type\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {notifications.length > 0 ? notifications : \"-\"}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {pipelines.length > 0 ? pipelines : \"-\"}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"metrics_definition\"][\"gates\"]}\n
    \n
    \n
    \n )\n case \"Custom Model Alert\":\n notifications = viewDetails[\"consume_group_name\"].join(', ')\n pipelines = viewDetails[\"pipeline_trigger_name\"].join(', ')\n return (<>
    \n
    \n \n
    \n {viewDetails[\"alert_name\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"alert_period\"] !== null ? viewDetails[\"alert_period\"] : \"-\"}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"alert_type\"]}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {notifications.length > 0 ? notifications : \"-\"}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {pipelines.length > 0 ? pipelines : \"-\"}\n
    \n
    \n
    \n
    \n
    \n \n
    \n {viewDetails[\"metrics_definition\"][\"gates\"]}\n
    \n
    \n
    \n )\n default:\n return ''\n\n }\n\n\n }\n\n\n}\n\nexport default ViewContent;\n","import React from 'react';\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faEdit,\n faEye,\n faTrash,\n faTrashAlt,\n faCheckCircle,\n faBolt,\n faCoins,\n faSpellCheck,\n // faCodeBranch\n} from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-bootstrap/Modal\";\nimport { handleDelete, handleFollowStatus, formDatasource } from \"../utils/event_handling\";\nimport { get_edit_component } from \"./editComponents\";\nimport ViewContent from \"./viewContent\";\nimport Row from 'react-bootstrap/Row';\nimport TestConnection from '../configure/components/testConnection';\nimport RcTooltip from 'rc-tooltip';\nimport { connect } from \"react-redux\";\nimport {\n addMLModelMapping,\n setMLModel\n} from \"../redux/actions\";\nimport { TABLE_DELETE_CLASS, TABLE_EDIT_CLASS, TABLE_VIEW_CLASS } from \"../utils/constant\";\nimport { DeleteWarningModal } from \"./DeleteWarningModal\";\n\n\nclass EditActions extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n test_conn: null,\n disableDelete: false\n }\n this.get_edit_component = get_edit_component.bind(this);\n this.formDatasource = formDatasource.bind(this);\n this.setConnection = this.setConnection.bind(this);\n this.renderActionButton = this.renderActionButton.bind(this);\n }\n\n renderActionButton(componentName, onClickFunction, classNameValue,\n buttonIconName,\n toolTipContent = null,\n showButtonText = true) {\n /*\n * This function will render the action button with / without tooltip based on the tooltip content\n */\n\n\n if (toolTipContent === undefined || toolTipContent === null) {\n return (\n \n {'View'}\n \n }\n arrowContent={
    }\n >\n \n
    \n );\n }\n\n // We need to show tooltip since tooltip content is not null\n return (\n <>\n \n {'View'}\n \n }\n arrowContent={
    }\n >\n \n
    \n \n );\n }\n\n getFormattedKeys() {\n switch (this.props.component) {\n case \"Datasource\":\n return [\"Created Time\", \"Datastore Type\", \"Schema Learning Status\", \"Environment Name\",\n \"Datasource Name\", \"Datasource Type\"]\n case \"Model\":\n return [\"Author\", \"Created Time\", \"Environment Name\", \"Datasource Name\", \"Model Type\",\n \"ML Stack\", \"Model Name\", \"Modified Time\", \"Version\"]\n case \"Metric\":\n return [\"Created Time\", \"Dataset Name\", \"Metric Name\", \"Formula\", \"Next Run Time\",\n \"Schedule Interval\"]\n case \"Alert\":\n return [\"Alert Name\", \"Alert Period\", \"Alert Type\", \"Configured Notifications\",\n \"Created Time\", \"Alert If\", \"Configured Pipeline Channels\"]\n case \"Notification Channel\":\n return [\"Configuration\", \"Notification Name\", \"Created Time\", \"Modified Time\"]\n case \"Pipeline\":\n return [\"Configuration\", \"Created Time\", \"Modified Time\", \"Pipeline Channel Name\"]\n default:\n return ''\n }\n\n }\n\n loadViewDetails() {\n if (this === undefined || this.props.view_details === undefined) {\n return;\n }\n\n const details = this.props.view_details;\n const divItems = [];\n let FormattedKeys = this.getFormattedKeys()\n let i = 0\n Object.keys(details).forEach(function (key) {\n let value;\n if (typeof (details[key]) == 'object') {\n value = JSON.stringify(details[key]);\n }\n else {\n value = details[key];\n }\n if (!([\"metric_type\", \"key\", \"status_code\", \"checks\", \"status_text\", \"pipeline_trigger_type\", \"consume_group_type\", \"hide_edit\", \"auth_config\", \"integration_config\", \"features\", \"model_details\"].includes(key)) && key.endsWith(\"_id\") !== true) {\n divItems.push(\n
    \n
    \n \n
    \n {value}\n
    \n
    \n
    \n );\n }\n });\n return divItems;\n }\n\n setConnection() {\n let test_conn_data = this.props.view_details;\n test_conn_data[\"is_config_details\"] = false;\n this.formDatasource(this.props.view_details);\n this.props.ConnectionShow();\n\n }\n\n render() {\n // Currently we will be showing View and Edit button with tooltip warning messages,\n // if any warning messages are to be shown\n\n const isModel = this.props.component === \"Model\";\n let showButtonText = isModel ? false : true;\n let viewTooltip = isModel ? \"View\" : this.props.tooltipContent;\n let editTooltip = isModel ? \"Edit\" : this.props.tooltipContent;\n\n return (\n <>\n {\n this.renderActionButton('View',\n this.props.viewShow,\n TABLE_VIEW_CLASS,\n faEye,\n viewTooltip,\n showButtonText)\n }\n\n {/* {\n this.renderActionButton('Edit',\n this.props.handleShow,\n TABLE_EDIT_CLASS,\n faEdit,\n editTooltip,\n showButtonText)\n } */}\n {(editTooltip === undefined || editTooltip === null) ?\n \n {'Edit'}\n \n }\n arrowContent={
    }\n >\n {\n e.preventDefault(); \n this.props.handleShow();\n this.props.component === \"Datasource\" && this.props.setAddDS(false)\n }}\n type=\"button\"\n className={TABLE_EDIT_CLASS}>\n \n \n \n {showButtonText ? {\"Edit\"} : ''}\n \n
    \n\n :\n\n \n {'Edit'}\n \n }\n arrowContent={
    }\n >\n {\n e.preventDefault();\n \n this.props.handleShow();\n }}\n type=\"button\"\n className={TABLE_EDIT_CLASS}>\n \n \n \n {showButtonText ? {\"Edit\"} : ''}\n \n
    \n\n }\n\n\n\n \n {'Delete'}\n \n }\n arrowContent={
    }\n >\n \n
    \n\n\n\n {\n this.props.component === \"Datasource\" ?\n \n {'Test Connection'}\n \n }\n arrowContent={
    }\n >\n \n
    \n :\n ''\n }\n\n {this.props.followComponent !== undefined ?\n /**/\n
    \n \n
    \n :\n ''\n }\n\n {this.props.component === \"Pipeline Channel\" ?\n <>\n \n {this.props.hideModelAlertsTab ? \"\" : }\n \n : ''\n }\n\n {\n // For Create Model AB configuration button in ML Models table\n this.props.modelABState === undefined ?\n '' :\n \n {'Create Model AB Test'}\n \n }\n arrowContent={
    }\n >\n \n
    \n\n }\n\n {/* {\n // For Create Model Version button in ML Models table\n this.props.modelVersionState === undefined ?\n '' :\n \n {'Create new version of the model'}\n \n }\n arrowContent={
    }\n >\n\n \n\n
    \n } */}\n\n \n \n
    \n {this.props.modalTitle !== undefined ? `${this.props.modalTitle} Details` : `${this.props.component} Details`}\n
    \n
    \n \n \n {}\n \n \n
    \n \n \n
    \n Test Connection\n
    \n
    \n \n \n {}\n \n \n
    \n\n \n \n
    \n Model Delete\n
    \n
    \n\n \n
    \n
    \n \n \n \n
    \n\n
    \n

    You have Model AB tests configured for the selected model

    \n

    Please delete the model AB configurations which use this model\n before trying to delete it

    \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n\n \n \n\n\n \n \n
    \n {this.props.modalTitle !== undefined ? `Edit ${this.props.modalTitle} Details` : `Edit ${this.props.component}`}\n
    \n
    \n \n {this.get_edit_component(this.props)}\n \n
    \n\n {/* Model AB Configuration model*/}\n {this.props.modelABState ?\n this.props.showModelABPopup(this.props, this.props.modelABState,\n this.props.modelABClose, this.props.handleModelABAddition) :\n ''\n }\n\n \n\n \n
    \n Model Version\n
    \n
    \n \n {/*{this.get_edit_component(this.props)}*/}\n \n
    \n\n \n );\n\n }\n}\n\n//export default EditActions;\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(\n mapStateToProps, {\n addMLModelMapping,\n setMLModel\n}\n)(EditActions);\n","import React from 'react';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faEdit, faTrash, faTrashAlt} from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-bootstrap/Modal\";\nimport { handleEditTeamMate, getApi} from \"../utils/User_handling\";\nimport { handleDeleteTeamMate } from \"../utils/event_handling\"\nimport Select from \"react-select\";\n\n\nclass TeamEditAction extends React.Component {\n\n constructor(props) {\n super(props);\n this.disableUser = this.disableUser.bind(this);\n this.getApi = getApi.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleRoleChange = this.handleRoleChange.bind(this);\n this.getRoles = this.getRoles.bind(this);\n this.fill_details= this.fill_details.bind(this);\n this.state = {\n roles: [],\n groups: [],\n disableUser: \"\",\n department: \"\",\n organisation: \"\",\n role: {\"label\": \"\", \"value\":\"\"}\n }\n this.fill_details();\n }\n\n\n fill_details() {\n if (this.props.userDetails !== undefined && this.state.disableUser === '') {\n let userDetails = this.props.userDetails;\n //eslint-disable-next-line\n this.state.role = {\"label\": userDetails[\"role_name\"] === \"DataScientist\" ? \"Data Scientist\" : userDetails[\"role_name\"], \"value\": userDetails[\"role_id\"]}\n //eslint-disable-next-line\n this.state.organisation =userDetails[\"organisation_name\"];\n //eslint-disable-next-line\n this.state.department =userDetails[\"department_name\"];\n }\n }\n\n disableUser(e){\n let isChecked = e.target.checked;\n this.setState({disableUser: isChecked})\n }\n\n handleRoleChange(event, obj){\n this.setState({role: event});\n }\n\n getRoles() {\n let option_arr = [];\n if (this.props.ugmDetails != null) {\n this.props.ugmDetails[\"roles\"].map(function (row) {\n option_arr.push({\"label\":row[\"role_name\"] === \"DataScientist\" ? \"Data Scientist\" : row[\"role_name\"], \"value\":row[\"role_id\"]});\n return 1;\n });\n }\n return option_arr;\n }\n\n handleChange(event){\n const {name, value} = event.target;\n this.setState({[name]: value});\n }\n\n render() {\n let ModelTitle = \"Manage Teammate\";\n let buttonStatus = false;\n if (this.props.userDetails !== undefined && this.props.userDetails !== null) {\n ModelTitle = \"Edit Role - \" + this.props.userDetails[\"username\"]+\" (\"+this.props.userDetails['email']+\")\";\n }\n let roles = this.getRoles()\n\n if (this.props.userDetails !== undefined && this.state.disableUser === '') {\n buttonStatus = this.props.userDetails[\"current_status\"] === 'disabled' ? true: false;\n } else {\n buttonStatus = this.state.disableUser;\n }\n\n let DisableEditDelete = false;\n let user_signup_type = localStorage.getItem(\"user_signup_type\");\n if (user_signup_type === \"join_team\") {\n DisableEditDelete = true;\n }\n return (\n <>\n \n \n \n \n
    \n {`Delete ${this.props.component}`}
    \n
    \n \n
    \n
    \n
    \n

    You are about to delete a Teammate

    \n

    {`This will delete your Teammate`}

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n { ModelTitle }\n
    \n
    \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n
    \n \n label.includes(query)}\n options={roles}\n value={this.state.role}\n onChange={this.handleRoleChange}\n placeholder=\"Select Role\"\n classNamePrefix='select-control'\n />\n
    \n
    \n
    \n
    \n \n this.handleChange(e)} className=\"form-control\" />\n
    \n
    \n
    \n
    \n \n this.handleChange(e)} className=\"form-control\" />\n
    \n
    \n
    \n
    \n \n \n \n \n
    \n \n );\n\n }\n}\n\nexport default TeamEditAction;","import React, { useState } from 'react';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\nimport EditActions from \"./EditActions\";\nimport TeamEditAction from \"./teamEditAction\";\nimport {getViewDetailsForMetrics} from \"../utils/common_utils\";\nimport {NO_DATA_SET_FOUND_TEXT, NO_DATA_SET_FOUND_TOOLTIP} from \"../utils/constant\";\n\nexport function IntegrationEdit(props) {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const [delete_show, setDelete_show] = useState(false);\n const deleteClose = () => setDelete_show(false);\n const deleteShow = () => setDelete_show(true);\n\n const [view, setView] = useState(false);\n const viewClose = () => setView(false);\n const viewShow = () => setView(true);\n\n const [connection_show, setConnection_show] = useState(false);\n const connectionClose = () => setConnection_show(false);\n const ConnectionShow = () => setConnection_show(true);\n\n const integrationDetails = props.integration_details;\n const showTooltip = integrationDetails !== undefined && integrationDetails.status_text === NO_DATA_SET_FOUND_TEXT;\n let tooltipContent = null;\n if (showTooltip) {\n tooltipContent = NO_DATA_SET_FOUND_TOOLTIP;\n }\n\n return (\n \n );\n}\n\nexport function TeamEdit(props){\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const [delete_show, setDelete_show] = useState(false);\n const deleteClose = () => setDelete_show(false);\n const deleteShow = () => setDelete_show(true);\n\n\n return (\n \n );\n}\n\nexport function MLModelEdit(props){\n const viewDetails = props.mlData;\n\n const[show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const[canShowDelWarning, setDeleteWarning] = useState(false);\n\n const closeDeleteWarning = () => setDeleteWarning(false);\n const showDeleteWarning = () => setDeleteWarning(true);\n\n\n const [delete_show, setDelete_show] = useState(false);\n const deleteClose = () => setDelete_show(false);\n\n const deleteShow = () => {\n const ml_model_id = viewDetails['ml_model_id'];\n const isABConfigured = props.modelHasModelABConfiguration(ml_model_id);\n if (isABConfigured) {\n showDeleteWarning();\n return;\n }\n\n setDelete_show(true);\n };\n\n const [view, setView] = useState(false);\n const viewClose = () => setView(false);\n const viewShow = () => setView(true);\n\n const [modelABState, setModelAB] = useState(false);\n const modelABClose = () => setModelAB(false);\n const modelABShow = () => setModelAB(true);\n\n const [modelVersionState, setModelVersion] = useState(false);\n const modelVersionClose = () => setModelVersion(false);\n const modelVersionShow = () => setModelVersion(true);\n\n return (\n \n );\n\n}\n\nexport function AlertEdit(props){\n const[show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const [delete_show, setDelete_show] = useState(false);\n const deleteClose = () => setDelete_show(false);\n const deleteShow = () => setDelete_show(true);\n\n const [view, setView] = useState(false);\n const viewClose = () => setView(false);\n const viewShow = () => setView(true);\n\n return (\n \n );\n\n}\n\nexport function MetricsEdit(props) {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const [delete_show, setDelete_show] = useState(false);\n const deleteClose = () => setDelete_show(false);\n const deleteShow = () => setDelete_show(true);\n\n const [view, setView] = useState(false);\n const viewClose = () => setView(false);\n const viewShow = () => setView(true);\n\n const metricsData = props.metrics_data;\n let viewDetails = getViewDetailsForMetrics(metricsData);\n let isActiveMetric = metricsData.status_code === 1;\n const [metricStatus, setMetricStatus] = useState(isActiveMetric);\n\n React.useEffect(() => {\n setMetricStatus(isActiveMetric);\n }, [isActiveMetric])\n\n const changeButtonStatus = () => setMetricStatus(!(metricStatus));\n return (\n \n );\n\n}\n\n\nexport function ConsumeEdit(props) {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const [delete_show, setDelete_show] = useState(false);\n const deleteClose = () => setDelete_show(false);\n const deleteShow = () => setDelete_show(true);\n\n const [view, setView] = useState(false);\n const viewClose = () => setView(false);\n const viewShow = () => setView(true);\n return (\n \n );\n\n}","import React from 'react';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck, faTimes, faTimesCircle, faCheckCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-bootstrap/Modal\";\nimport {handleRequest} from \"../utils/User_handling\";\n\n\nclass ButtonActions extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n disableApprove: false\n }\n\n }\n loadViewDetails() {\n if (this === undefined || this.props.view_details === undefined) {\n return;\n }\n\n const details = this.props.view_details;\n const divItems = [];\n Object.keys(details).forEach(function (key) {\n let value;\n if (typeof (details[key]) == 'object') {\n value = JSON.stringify(details[key]);\n }\n else {\n value = details[key];\n }\n divItems.push(\n
    \n \n \n
    \n );\n });\n return divItems;\n }\n\n render() {\n return (\n <>\n \n \n \n \n \n {/* \n
    \n {`Approve ${this.props.userDetails['username']}`}
    \n
    */}\n \n
    \n
    \n
    \n

    Confirm Approve

    \n

    {`${this.props.userDetails['requested_username']}`} ({`${this.props.userDetails[\"requested_user_email\"]}`})

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n {/* \n
    \n {`Reject ${this.props.userDetails['username']}`}
    \n
    */}\n \n
    \n
    \n
    \n

    Are you sure you want to Reject?

    \n

    {`${this.props.userDetails['requested_username']}`} ({`${this.props.userDetails[\"requested_user_email\"]}`})

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n );\n\n }\n}\n\nexport default ButtonActions;","import React, { useState } from 'react';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\nimport ButtonActions from \"./buttonActions\";\n\nexport function TeamTableButtons(props) {\n const [approveUser, setApproveUser] = useState(false);\n const approveClose = () => setApproveUser(false);\n const approveShow = () => setApproveUser(true);\n\n const [rejectUser, setRejectUser] = useState(false);\n const rejectClose = () => setRejectUser(false);\n const rejectShow = () => setRejectUser(true);\n\n return (\n \n );\n}\n\n","import React from 'react';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\n\nexport function ImageComponent(props) {\n\n return (\n
    \n
    \n
    {props.userDetails.username}
    \n {props.userDetails.email}\n
    \n
    \n );\n}\n\n\n","import React from 'react';\nimport ToolkitProvider from 'react-bootstrap-table2-toolkit';\nimport $ from \"jquery\";\nimport {AlertEdit, ConsumeEdit, IntegrationEdit, MetricsEdit, MLModelEdit, TeamEdit} from './tableEdit';\nimport paginationFactory, {\n PaginationListStandalone,\n PaginationProvider,\n PaginationTotalStandalone,\n SizePerPageDropdownStandalone\n} from 'react-bootstrap-table2-paginator';\nimport {TeamTableButtons} from \"./tableButtons\";\nimport {ImageComponent} from \"./imageComponent\";\nimport BootstrapTable from 'react-bootstrap-table-next';\nimport _ from 'lodash';\nimport Select from \"react-select\";\nimport \"react-bootstrap-table-next/dist/react-bootstrap-table2.min.css\"\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faTable, faInfoCircle, faSearch, faCheckCircle, faTimesCircle, faExternalLinkAlt, faSitemap,faPencilAlt} from '@fortawesome/free-solid-svg-icons';\nimport { faArrowAltCircleRight, faWindowRestore} from '@fortawesome/free-regular-svg-icons';\nimport RcTooltip from 'rc-tooltip';\nimport {\n NO_DATA_SET_FOUND_TEXT, ROW_WARN_CLASS, EXCLUDED_COMPONENTS,\n NOT_SORTABLE, ABOVE_ALERT_SUPPORTED_TABLES, LIST_VIEW_OPTIONS, QUALDO_DOCUMENTATION\n} from \"../utils/constant\";\nimport {get_document_link} from \"../utils/common_utils\";\nimport NoErrorInPreview from '../monitor/components/noErrorPreview';\nimport NoModelComponent from \"../monitor/components/noModelComponent\";\nimport Image from \"../components/image\"\nimport { Link } from 'react-router';\nimport Form from 'react-bootstrap/Form';\n\n\nconst renderTooltip = (props) => (\n \n Click here to Mapping\n \n);\n\nclass QualdoDataTable extends React.Component {\n constructor(props) {\n super(props);\n this.data = this.props.data;\n this.paginationSize = this.props.paginationSize;\n this.onPageChange = this.onPageChange.bind(this);\n this.component_name = this.props.component_name;\n this.handleSearchOperation = null;\n this.handleDeleteOperation = this.handleDeleteOperation.bind(this);\n this.handleSeeMore = this.handleSeeMore.bind(this);\n this.input = null;\n this.state = {\n hideSizePerPage: this.props.hideSizePerPage !== undefined ? this.props.hideSizePerPage : false,\n paginationSize: this.props.paginationSize,\n tableData: this.props.data,\n isDelete: false,\n tempData: this.props.data,\n selectedGroup: this.props.selectedGroup ? this.props.selectedGroup : LIST_VIEW_OPTIONS[0],\n isSeeMore:this.props.isSeeMore !== undefined ? this.props.isSeeMore : false,\n isSeeMoreId:Math.random().toString(36).replace('0.','btn_seemore_' || '')\n }\n }\n\n componentDidMount() {\n if(this.state.isSeeMore===true){\n this.handleSeeMore();\n }\n }\n\n shouldComponentUpdate(prevProps){\n if(this.props.id===\"configuredDatasources\"){\n if(JSON.stringify(prevProps.data.data) !== JSON.stringify(this.props.data.data)){\n // To handle rendering while edit and delete actions\n return true\n }\n // Only for Configure page : To avoid rerendering of Qualdo Data Table\n // While the first call all the datas will received here\n // Only once this table will gets rendered to avoid the rerendering \n return false\n }\n else{\n return true\n }\n }\n\n onPageChange() {\n\n var target = $('#monitorDQListView,#monitorDQListView');\n if (target.length) {\n $('html, body').animate({scrollTop:0},500);\n }\n\n if(ABOVE_ALERT_SUPPORTED_TABLES.includes(this.props.component_name)){\n $('tr.alert-warning-row').remove();\n setTimeout(function(){\n\n var prevClassFlag = 1;\n $('.table tbody tr').each(function() {\n\n if($(this).hasClass(\"row-highlight has-above-alert\") && prevClassFlag === 1) {\n $(this).before('

    No Refreshes found in the chosen date range. Displaying the data points of earlier refreshes.

    ');\n }\n\n if($(this).hasClass(\"alert-warning-row\")){\n prevClassFlag = 0;\n }else {\n prevClassFlag = 1;\n }\n\n });\n\n }, 500);\n\n }\n\n }\n\n getActionComponent(item) {\n switch (this.props.component_name) {\n case 'datasource':\n return (\n \n );\n\n case 'ml_model':\n return (\n \n );\n\n case 'default_metrics':\n let metricsDataDefault = item.metrics_data;\n return (\n \n );\n case 'metrics':\n const metricsData = item.metrics_data;\n return (\n \n );\n case 'consume':\n let consume_item = item.consume;\n return (\n \n );\n case 'alert':\n let alert_item = item.alert;\n return (\n \n );\n case 'consume_pipeline':\n let consume_pipeline = item.consume;\n return (\n \n );\n case 'teamMate':\n let userDetails = item.userDetails;\n return (\n \n );\n case 'billingHistory':\n\n let billingDetails = item.billingDetails;\n return (\n <>\n Paid\n {\n billingDetails.showTooltip\n ?\n \n Your next Billing date is\n
    {billingDetails.nextDate}.\n \n }\n arrowContent={
    }\n >\n \n \n \n
    \n :\n ''\n }\n\n \n );\n case 'billingHistoryLink':\n return (\n <>\n \n \n \n\n \n );\n case 'pbierrordashboard':\n return (\n <>\n
    \n this.props.pbistatus(e)} id={item.pbierrordashboard.index} />\n
    \n \n );\n \n case 'pbimapping':\n if(item['pbimapping'].status === 1) {\n return (\n <>\n \n \n \n ); \n }else {\n return (\n <>\n \n \n ); \n }\n\n \n default:\n return (\n
    \n );\n }\n\n }\n\n getButtonComponent(item) {\n switch (this.props.component_name) {\n case 'requests':\n return (\n \n );\n case 'teamMate':\n if (item.userDetails !== undefined) {\n return (\n \n );\n }\n else {\n return ({item});\n }\n default:\n return (\n
    \n );\n }\n }\n\n async navigateFirstPage(props) {\n return props.onPageChange(1);\n }\n\n async handlePageChange(value) {\n this.setState({paginationSize: value});\n return;\n }\n\n async clearSearch(props) {\n this.setState({isDelete: false});\n return;\n }\n\n renderRow() {\n let result = []\n let headerKeys = {}\n this.state.tableData.headers.forEach((headerValue) => {\n headerKeys[headerValue] = null;\n });\n let j = 0;\n let isDatasetRowFound = false\n let datasetData;\n let selectedGroup;\n if(this.state.selectedGroup){\n selectedGroup = this.state.selectedGroup.value;\n }\n let fullData = this.props.component_name === \"dqErrorListViewTable\" ? this.state.tempData.data : this.state.tableData.data;\n fullData = _.cloneDeep(fullData)\n for (let i = 0; i < fullData.length; i++) {\n let rowItems = fullData[i];\n if(this.props.component_name === \"dqErrorListViewTable\"){\n if(rowItems[0].group === \"dataset\" && selectedGroup === \"attributes\"){\n isDatasetRowFound = true\n datasetData = rowItems[1]\n continue;\n }\n if(rowItems[0].group === \"attribute\" && selectedGroup === \"datasets\"){\n continue;\n }\n \n if(Object.keys(this.props.follow_attribute_details).length === 0){\n continue\n }\n\n let updatedAttributeStatus = this.props.follow_attribute_details[rowItems[4]['dataSourceId']][rowItems[4]['attributeId']];\n if((selectedGroup === \"followedAttributes\" && updatedAttributeStatus !== true) && (rowItems[0].group === \"dataset\" || updatedAttributeStatus !== true)){\n if(rowItems[0].group === \"dataset\"){\n isDatasetRowFound = true\n datasetData = rowItems[1]\n }\n continue;\n }\n\n if(selectedGroup === \"attributes\" && isDatasetRowFound === true){\n rowItems[0].value = rowItems[4].dataSourceName\n rowItems[1].value = datasetData\n }\n if(selectedGroup === \"followedAttributes\" && isDatasetRowFound === true && updatedAttributeStatus === true){\n rowItems[0].value = rowItems[4].dataSourceName\n rowItems[1].value = datasetData\n }\n isDatasetRowFound = false\n\n }\n let obj = _.cloneDeep(headerKeys);\n let keys = Object.keys(obj);\n for (let k = 0; k < rowItems.length; k++) {\n let items = rowItems[k];\n if (items.type === 'td') {\n obj[keys[k]] = items.value\n } else if (items.type === \"buttons\") {\n obj[keys[k]] = items;\n } else if (items.type === \"component\") {\n obj[keys[k]] = items;\n } else if (items.type === \"image\") {\n obj[keys[k]] = items;\n } else if (items.type === \"singlebutton\") {\n obj[keys[k]] = items.value;\n }else if (items.type === \"billingComponent\") {\n obj[keys[k]] = items;\n }\n else if (items.type === \"billingComponentLink\") {\n obj[keys[k]] = items;\n }\n else {\n obj[keys[k]] = items;\n }\n }\n\n if (this.props.component_name === \"dqErrorListViewTable\") {\n obj[\"ID\"] = i + 1;\n if (rowItems[0][\"group\"] === \"attribute\" && ![\"attributes\",\"followedAttributes\"].includes(selectedGroup)) {\n obj[\"R.No\"] = \"\";\n }else {\n j = j + 1\n obj[\"R.No\"] = j;\n }\n } else if (this.props.component_name === \"modelABTestTable\") {\n obj[\"ID\"] = i + 1;\n } \n else {\n if(this.props.component_name !== \"datasourceView\"){\n obj[\"ID\"] = i + 1;\n }\n }\n\n result.push(obj);\n }\n return result\n }\n\n\n getDefaultPaginationOptions() {\n let pageLimit = [10,25,50,100]\n let pageList = [{text: 5, value: 5}]\n for(let i=0;i<=(pageLimit.length-1);i++) {\n if(this.state.tableData.data.length >= pageLimit[i]){\n pageList.push({text: pageLimit[i], value: pageLimit[i]});\n }else{\n break\n }\n\n }\n if(this.props.component_name !== 'dqErrorListViewTable'){\n pageList.push({text: \"All\" , value: this.state.tableData.data.length});\n }\n\n const options = {\n custom: true,\n // totalSize: this.state.tableData.data.length,\n page: 1, // which page you want to show as default\n sizePerPageList: pageList, // you can change the dropdown list for size per page\n sizePerPage: 5, // which size per page you want to locate as default\n pageStartIndex: 1, // where to start counting the pages\n paginationSize: 5, // the pagination bar size.\n prePage: 'Prev', // Previous page button text\n nextPage: 'Next', // Next page button text\n firstPage: 'First', // First page button text\n lastPage: 'Last', // Last page button text\n paginationPosition: 'top' // default is bottom, top and both is all available\n // hideSizePerPage: true > You can hide the dropdown for sizePerPage\n // alwaysShowAllBtns: true // Always show next and previous button\n // withFirstAndLast: false > Hide the going to First and Last page button\n };\n return options;\n }\n\n\n\n getCustomPaginationOptions(pageLimitCustom) {\n let pageLimit = this.props.pageOptions;\n if (pageLimit === undefined || pageLimit === null) {\n pageLimit = pageLimitCustom;\n }\n\n let sizePerPage = this.props.paginationSize;\n\n // Add the first option\n let pageList = [];\n\n for (let i = 0; i <= (pageLimit.length - 1); i++) {\n const currentValue = pageLimit[i];\n\n if (this.state.tableData.data.length >= currentValue) {\n pageList.push({text: currentValue, value: currentValue});\n } else {\n break;\n }\n\n }\n\n // Add the 'All' option\n if(this.props.component_name !== 'dqErrorListViewTable'){\n pageList.push({text: \"All\" , value: this.state.tableData.data.length});\n }\n\n const options = {\n custom: true,\n onPageChange: this.onPageChange,\n page: 1, // which page you want to show as default\n // totalSize: this.state.tableData.data.length,\n sizePerPageList: pageList, // you can change the dropdown list for size per page\n sizePerPage: sizePerPage, // which size per page you want to locate as default\n pageStartIndex: 1, // where to start counting the pages\n paginationSize: 5, // the pagination bar size.\n prePage: 'Prev', // Previous page button text\n nextPage: 'Next', // Next page button text\n firstPage: 'First', // First page button text\n lastPage: 'Last', // Last page button text\n paginationPosition: 'bottom' // default is bottom, top and both is all available\n // hideSizePerPage: true > You can hide the dropdown for sizePerPage\n // alwaysShowAllBtns: true // Always show next and previous button\n // withFirstAndLast: false > Hide the going to First and Last page button\n };\n return options;\n }\n\n convertData(actionType, headerValue, cell, row,rowIndex) {\n\n \n // If getActionComponent is provided in the props we can use that method itself\n if (this.props.customGetActionComponent !== undefined && this.props.customGetActionComponent !== null) {\n return this.props.customGetActionComponent(actionType, headerValue, cell, this.props,rowIndex);\n }\n\n if (headerValue === \"Actions\" && actionType === \"component\") {\n return this.getActionComponent(cell);\n } else if (headerValue === \"Action\" && actionType === \"button\") {\n return this.getButtonComponent(cell);\n } else if (headerValue === \"Status\" && actionType === \"component\") {\n return this.getButtonComponent(cell);\n } else if (headerValue === \"Teammate\" && actionType === \"component\") {\n return this.getButtonComponent(cell);\n } else if (headerValue === \"Status\" && actionType === \"billingComponent\") {\n return this.getActionComponent(cell);\n } else if (headerValue === \"Receipt\") {\n return \n // return \n\n } else if (headerValue === \"Schema Learning Status\") {\n let integrations = row.Actions;\n if(integrations !== undefined && integrations !== null && integrations.integration_data !== undefined && integrations.integration_data !== null) {\n let status_text = integrations.integration_data.status_text\n if(status_text === NO_DATA_SET_FOUND_TEXT) {\n return <>{cell} \n No Datasets Found\n \n }\n arrowContent={
    }\n >\n \n \n \n
    \n }\n }\n\n }\n\n // Power BI \n else if (headerValue === \"Reports & Dashboards\" && actionType === \"component\") {\n\n return (\n this.props.pireportdatasetfullscreen(row)}>{row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"name\"]}\n // this.props.pireportdatasetfullscreen(row)}>{row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"name\"]}\n )\n }\n else if (headerValue === \"Dataset Summary\" && actionType === \"component\") {\n \n return (\n <>\n
    Last refresh time
    {row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"refreshed_date\"].substring(4)}
    \n
    Last processed time
    {row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"processedtime\"].substring(4)}
    \n \n )\n }\n else if (headerValue === \"Name\" && actionType === \"component\") {\n\n return (\n <>\n this.props.pireportfullscreen(row)}>{row[\"Name\"]}\n
    Datasource
    {row[\"Actions\"][\"pbierrordashboard\"][\"integration_name\"]}
    \n
    Workspace
    {row[\"Actions\"][\"pbierrordashboard\"][\"workspace\"]}
    \n \n )\n }\n else if(headerValue === \"Errors\" && actionType === \"component\") {\n\n if(row[\"Quality Check Status\"] === \"Not yet started\" || row[\"Quality Check Status\"] === \"In Progress\"){\n return (\"\"/)\n }\n\n else if(row[\"Quality Check Status\"] === \"Completed\"){\n \n let pageredirection = JSON.stringify(row[\"Actions\"][\"pbierrordashboard\"][\"redirection\"]);\n if(row[\"Errors\"] === \"Error\"){\n return (\n \n {row[\"Actions\"][\"pbierrordashboard\"][\"error_count\"]} widgets have error\n );\n }\n else if(row[\"Errors\"] === \"No Error\"){\n return ( \n No Error);\n }\n else {\n return(\"---\")\n }\n }\n else{\n return (\"--\");\n }\n }\n else if(headerValue === \"Quality Status\" && actionType === \"component\") {\n\n let pageredirection = JSON.stringify(row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"redirection\"]);\n\n if(row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"qualitystatus\"] === \"Error\"){\n return ( \n Error);\n }\n else if(row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"qualitystatus\"] === \"No Error\"){\n return ( No Error);\n }\n else {\n return(\"---\")\n }\n }\n else if(headerValue === \"Quality Check Status\" && actionType === \"component\") {\n if(row[\"Quality Check Status\"] === \"Not yet started\"){\n return (Not yet started);\n }\n else if(row[\"Quality Check Status\"] === \"Completed\"){\n return (Completed);\n }\n else if(row[\"Quality Check Status\"] === \"in-progress\"){\n return (In Progress);\n }\n else if(row[\"Quality Check Status\"] === \"Failed Authentication\"){\n return (Failed Authentication);\n }\n else if(row[\"Quality Check Status\"] === \"Mapping Not Found\"){\n return (<>Mapping Not Found
    }>);\n }\n\n }\n\n return cell;\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.data !== state.tableData) {\n return {tableData : props.data};\n } else if (props.paginationSize !== state.paginationSize && !EXCLUDED_COMPONENTS.includes(props.component_name)){\n return {paginationSize: props.paginationSize}\n }\n\n return null;\n }\n\n\n\n componentDidUpdate(prevProps) {\n if (prevProps.data !== undefined && this.props.data !== undefined) {\n // if (prevProps.data.data.length !== this.props.data.data.length) {\n if (JSON.stringify(prevProps.data.data) !== JSON.stringify(this.props.data.data)) {\n this.setState({tableData: this.props.data, tempData: this.props.data, selectedGroup: this.props.selectedGroup});\n this.setState({paginationSize: this.props.paginationSize});\n }\n }\n if(prevProps.selectedGroup !== this.props.selectedGroup){\n this.setState({selectedGroup: this.props.selectedGroup})\n }\n\n }\n\n handleDeleteOperation() {\n this.setState({isDelete: this.props.data});\n }\n\n handleSeeMore() {\n var curobj = $(\"#\"+this.state.isSeeMoreId);\n curobj.toggleClass(\"active\");\n curobj.parent().parent().find('.react-bootstrap-table__footer').toggleClass(\"d-none\");\n curobj.parent().parent().find('table tbody tr').toggleClass(\"d-none\");\n curobj.parent().parent().find('table tbody tr:first').removeClass(\"d-none\");\n curobj.parent().parent().find('.react-table__length').toggleClass(\"d-none\");\n curobj.parent().parent().find('.react-table__filter').toggleClass(\"d-none\");\n $(\"#\"+this.state.isSeeMoreId+\" span\").text(function(i, v){\n return v === 'See Less' ? 'See More' : 'See Less'\n })\n\n }\n\n render() {\n let hasData = this.state.tableData.data.length > 0;\n const customTotal = (from, to, size) => (\n \n Showing {from} to {to} of {size} results\n \n );\n\n const addClassFailure = (row, rowIndex) => {\n if (row === undefined || row === null) {\n return \"\";\n }\n\n if (row.Actions === undefined || row.Actions === null) {\n return \"\";\n }\n\n let integration_data = row.Actions;\n if (integration_data === undefined || integration_data === null) {\n return \"\";\n }\n\n if (integration_data.integration_data === undefined || integration_data.integration_data === null){\n return \"\";\n }\n\n let connection_status = integration_data.integration_data[\"status_text\"];\n if (connection_status === \"connection_failure\") {\n return \"has-table-error\";\n }\n\n if (connection_status === NO_DATA_SET_FOUND_TEXT) {\n return ROW_WARN_CLASS;\n }\n\n return \"\";\n };\n\n const pageListRenderer = ({\n pages,\n onPageChange\n }) => {\n return (\n
    \n
    \n {\n pages.map(p => (\n \n ))\n }\n
    \n
    \n );\n };\n\n let options;\n let lengthLimit = 0;\n if (this.state.paginationSize === undefined || this.state.paginationSize === null ) {\n options = this.getDefaultPaginationOptions();\n\n lengthLimit = 5;\n }\n else {\n\n if(this.props.component_name === \"dqErrorListViewTable\") {\n options = this.getCustomPaginationOptions([1, 5,10,20,30,50,100,150,200,250]);\n lengthLimit = this.state.paginationSize;\n }else if(this.props.component_name === \"modelErrorListViewTable\" || this.props.component_name === \"mpErrorListViewTable\"){\n options = this.getCustomPaginationOptions([2, 4, 10, 25, 50]);\n lengthLimit = this.state.paginationSize;\n } else if (this.props.pageOptions !== undefined) {\n options = this.getCustomPaginationOptions(this.props.pageOptions);\n lengthLimit = this.state.paginationSize;\n }else {\n options = this.getCustomPaginationOptions([3,6,10,25,50,100]);\n lengthLimit = this.state.paginationSize;\n }\n\n if(ABOVE_ALERT_SUPPORTED_TABLES.includes(this.props.component_name)){\n $('tr.alert-warning-row').remove();\n setTimeout(function(){\n var prevClassFlag = 1;\n $('.table tbody tr').each(function() {\n if($(this).hasClass(\"row-highlight has-above-alert\") && prevClassFlag === 1) {\n $(this).before('

    No Refreshes found in the chosen date range. Displaying the data points of earlier refreshes.

    ');\n }\n if($(this).hasClass(\"alert-warning-row\")){\n prevClassFlag = 0;\n }else {\n prevClassFlag = 1;\n }\n\n });\n\n }, 100); }\n }\n options[\"paginationTotalRenderer\"] = customTotal;\n options[\"pageListRenderer\"] = pageListRenderer;\n options[\"hideSizePerPage\"] = this.state.hideSizePerPage;\n\n let data = this.renderRow();\n\n const sizePerPageRenderer = ({\n options,\n currSizePerPage,\n onSizePerPageChange\n }) => (\n
    \n
    \n
    \n
    \n
    \n Show\n this.state.tableData.data.length ? {\"label\": \"All\",\"value\":this.state.tableData.data.length} : {\"label\":lengthLimit,\"value\":lengthLimit}}\n options={options.map((option) => ({'label': option.text, 'value': option.page}))}\n onChange={(selectedOption) => {\n this.handlePageChange(selectedOption.value).then((res) => {\n onSizePerPageChange(selectedOption.value);\n });\n }}\n />\n items\n
    \n {this.props.component_name === \"dqErrorListViewTable\" ? \n <>\n
    \n
    \n \n
    \n
    \n option.disabled}\n onChange={this.props.changeGroup}\n />\n
    \n
    \n \n \n : \"\"\n }\n
    \n
    \n
    \n
    \n Search:\n
    \n this.input = n}\n onChange={this.handleSearchOperation}\n style={{backgroundColor: 'white', align: 'right'}}\n type=\"text\"\n />\n
    \n
    \n
    \n
    \n
    \n );\n options[\"sizePerPageRenderer\"] = sizePerPageRenderer.bind(this);\n\n\n let actionType = null;\n if (this.state.tableData.data != null && this.state.tableData.data.length > 0) {\n let rowItems = this.state.tableData.data[0];\n for (let k = 0; k < rowItems.length; k++) {\n let items = rowItems[k];\n if (items.type === \"buttons\") {\n actionType = \"button\";\n } else if (items.type === \"component\") {\n actionType = \"component\";\n } else if (items.type === \"image\") {\n actionType = \"image\";\n } else if (items.type === \"billingComponent\") {\n actionType = \"billingComponent\";\n }\n else if (items.type === \"billingComponentLink\") {\n actionType = \"billingComponentLink\";\n }\n }\n }\n\n const addClassForColumns = (cell, row, rowIndex, colIndex) => {\n return \"\";\n }\n\n const rowClasses = (row, rowIndex) => {\n\n if (this.props.component_name === 'dqErrorListViewTable') {\n if (row['Attribute Name'] === 'Dataset Level - Includes All Attributes') {\n let previousTime = row[\"Dataset Name\"][\"previousTime\"];\n if (previousTime === null) {\n return 'row-highlight';\n }\n\n return 'row-highlight has-above-alert';\n }\n\n } else {\n return this.props.customRowHighlighter === undefined ?\n addClassFailure(row, rowIndex) : this.props.customRowHighlighter(row, rowIndex);\n }\n };\n\n const classFuncForCols = this.props.getCustomClassForColumns === undefined ?\n addClassForColumns :\n this.props.getCustomClassForColumns;\n\n let is_table_not_sortable = (this.state.tableData.not_sortable !== undefined &&\n this.state.tableData.not_sortable === true);\n\n // let columns = this.state.tableData.headers.map(x => ({\n // 'dataField': x,\n // 'text': x,\n // 'sort': (NOT_SORTABLE.includes(x.toLowerCase()) || is_table_not_sortable === true) ? false : true,\n // 'searchable': true,\n // 'formatter': this.convertData.bind(this, actionType, x),\n // 'classes': classFuncForCols\n // }));\n\n let columns = this.state.tableData.headers.map((x) => (\n x===\"Metric Value\" ? \n {\n 'dataField': x,\n 'text': x,\n 'sort': (NOT_SORTABLE.includes(x.toLowerCase()) || is_table_not_sortable === true) ? false : true,\n 'searchable': true,\n 'formatter': this.convertData.bind(this, actionType, x),\n 'classes': classFuncForCols,\n 'sortFunc': (a, b, order, dataField, rowA, rowB) => {\n if(dataField===\"Metric Value\"){\n a = String(a).replace(/[^0-9.-]/g, '');\n b = String(b).replace(/[^0-9.-]/g, '');\n if (order === \"asc\") return Number(a) - Number(b);\n else return Number(b) - Number(a);\n } \n } \n }\n :\n {\n 'dataField': x,\n 'text': x,\n 'sort': (NOT_SORTABLE.includes(x.toLowerCase()) || is_table_not_sortable === true) ? false : true,\n 'searchable': true,\n 'formatter': this.convertData.bind(this, actionType, x),\n 'classes': classFuncForCols \n }\n ));\n\n switch (this.props.component_name) {\n \n case \"dqErrorListViewTable\":\n columns = [{\n 'dataField': \"ID\",\n 'text': \"ID\",\n 'sort': false,\n 'classes': classFuncForCols,\n 'formatter': (cell, row) => row[\"R.No\"]\n }, ...columns];\n break;\n case \"modelABTestTable\":\n columns = [{\n 'dataField': \"ID\",\n 'text': \"ID\",\n 'sort': false,\n 'classes': classFuncForCols,\n 'formatter': this.props.tableIDFormatter\n }, ...columns];\n break;\n default:\n if(this.props.component_name!==\"datasourceView\") {\n columns = [{\n 'dataField': \"ID\",\n 'text': \"ID\",\n 'sort': true,\n 'classes': classFuncForCols\n }, ...columns];\n }\n break;\n }\n\n const afterSearch = (newResult) => {\n $('tr.alert-warning-row').remove();\n };\n\n let CustomSearchBar = (props) => {\n if (this.state.isDelete) {\n this.clearSearch(props).then((res) => {\n props.onClear();\n if (this.input !== null && this.input !== undefined) {\n this.input.value = \"\";\n }\n });\n }\n const handleClick = () => {\n this.navigateFirstPage(props).then((res) => {\n props.onSearch(this.input.value)\n });\n };\n this.handleSearchOperation = handleClick.bind(this);\n return (\"\"\n //
    \n // \n // input = n}\n // onChange={handleClick}\n // type=\"text\"\n // />\n //
    \n );\n };\n\n let BindedCustomSearchBar = CustomSearchBar.bind(this);\n const contentTable = ({paginationProps, paginationTableProps}) => (\n <>\n {\n hasData && (this.state.tableData.data.length > lengthLimit || (this.props.component_name === \"dqErrorListViewTable\"))\n ?\n \n :\n ''\n }\n\n {hasData ? <>\n {\n toolkitprops => {\n let classNameForTable = this.props.component_name === 'dqErrorListViewTable' ? \"table-striped\" : \"\";\n if (this.props.classNameForTable !== undefined) {\n classNameForTable = this.props.classNameForTable;\n }\n\n return (\n <>\n {\n hasData\n ?\n <>\n \n \n :\n ''\n }\n\n\n \n \n );\n }\n }\n : \"\"}\n
    \n
    \n {\n hasData ?
    \n :\n ''\n }\n
    \n {hasData && this.state.tableData.data.length > lengthLimit ? : ''}\n
    \n
    \n
    \n {\n this.state.isSeeMore === true ?\n
    \n \n
    \n :\n ''\n }\n \n );\n if (hasData) {\n return (\n <>\n \n {contentTable}\n \n \n );\n\n } else {\n switch(this.props.component_name) {\n case \"modelErrorListViewTable\":\n case \"mpErrorListViewTable\":\n if (this.props.message != null && this.props.message === \"in-progress\"){\n return \n } else {\n return \n }\n case \"mpCompareViewTable\":\n if (this.props.message != null && this.props.message === \"in-progress\") {\n return \n } else {\n const subText = \"No model AB test configured yet.\";\n return \n }\n case \"dqErrorListViewTable\":\n if (this.props.message !== null){\n let message = this.props.message;\n return \n } else {\n return (
    \n

    \n

    No data available

    \n

    For help, check out the {QUALDO_DOCUMENTATION}

    \n
    \n );\n }\n case \"teamMate\":\n return(
    \n

    \n \n \n \n

    \n

    Teammates not available

    \n

    Try broadening your filters or search terms.

    \n
    \n );\n case \"invitation\":\n return(
    \n

    \n \n \n \n

    \n

    We couldn't find any invitations sent from this account

    \n

    No invitation at the moment.

    \n
    \n );\n case \"requests\":\n return(
    \n

    \n \n \n \n

    \n

    You have no incoming team requests.

    \n
    \n );\n case \"modelABTestTable\":\n return(
    \n

    \n \n \n \n

    \n

    Model AB is not configured

    \n

    Please configure Model AB test

    \n
    \n );\n default:\n return (
    \n

    \n

    No data available

    \n

    For help, check out the {QUALDO_DOCUMENTATION}

    \n
    \n );\n }\n }\n }\n}\n\nexport default QualdoDataTable;","module.exports = __webpack_public_path__ + \"static/media/pricing-icon_free.6b4799c2.svg\";","module.exports = __webpack_public_path__ + \"static/media/pricing-icon_starter.29acc724.svg\";","module.exports = __webpack_public_path__ + \"static/media/plan-icon_starter.012ba6cf.svg\";","module.exports = __webpack_public_path__ + \"static/media/illustration_payment-success.ea15cc4b.svg\";","module.exports = \"data:image/gif;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/spinner.9725b84e.gif\";","module.exports = __webpack_public_path__ + \"static/media/illustration_upgrade-rocket.cd2f53f8.svg\";","module.exports = __webpack_public_path__ + \"static/media/illustration_exceed-model-limit.ff000220.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_monitor.56f4c8a5.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_configure.3c09906c.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/icon_empty-data.7b6f2b1f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_unique-data.3d9f46ac.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_duplicate-data.f59e2b57.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_error-data.e14d6e67.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_arrow-down_red.a2e73f35.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_arrow-up_green.97ae6c0f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_arrow-right.67aeace0.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_check-green.54cfcfa6.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_model-cubes.8ea04b17.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_filter.6b22b963.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_cross-light.e64fc575.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_search-placeholder.b68aa691.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_info-circle.10f50aa4.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_layer-partition.0a494d97.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_attribute.0f3711ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_datasource.3209c5c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_dataset.c21124d8.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_environment.9f74e862.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_exclamation-gray.7fb8ad0a.svg\";","import React from \"react\";\nimport Image from \"../../components/image\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTable } from '@fortawesome/free-solid-svg-icons';\nimport {\n QUALDO_DOCUMENTATION\n} from \"../../utils/constant\";\nimport { get_document_link } from \"../../utils/common_utils\";\n\nclass NoErrorInPreview extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n let message = this.props.message;\n if (message === undefined || message === null) {\n message = \"No Error found in the latest computation.\";\n }\n\n let footer = this.props.footer;\n if (footer === undefined || footer === null) {\n footer = \"Try with a different time period.\"\n }\n this.state = {\n message: message,\n footer: footer\n }\n }\n\n render() {\n return (\n this.props.message === null ?\n
    \n

    \n

    No data available

    \n

    For help, check out the {QUALDO_DOCUMENTATION}

    \n
    \n :\n
    \n
    \n \n \n \n

    {this.state.message}

    \n

    {this.state.footer}

    \n
    \n
    \n );\n }\n}\n\nexport default NoErrorInPreview;\n","module.exports = __webpack_public_path__ + \"static/media/icon_pbi-configure.b824e4bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_pbi-configure-success.6a414144.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_powerbi-dark.c49cacd3.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-drx.3cdb7639.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-drx-light.fcc8069c.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-mqx.00c85e2b.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-mqx-light.a9f7c32a.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-bix.6727bc23.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_qualdo-bix-light.fbe1c4c4.svg\";","module.exports = __webpack_public_path__ + \"static/media/gcp_brandmark.ff0ffb9c.svg\";","import mixpanel from 'mixpanel-browser';\nimport {MIXPANEL_KEY} from './utils/constant'\n\nmixpanel.init(MIXPANEL_KEY, {debug: true});\n\nexport function postMixpanel(event_name, data) {\n if (MIXPANEL_KEY === undefined) {\n return;\n }\n\n if (data === undefined) {\n data = {}\n }\n\n mixpanel.track(event_name, data);\n}\n\nexport function postMixPanelIdentifyData(data) {\n if (MIXPANEL_KEY === undefined) {\n return\n }\n\n mixpanel.identify(data);\n}\n\nexport function postMixpanelPeopleData(data) {\n if (MIXPANEL_KEY === undefined) {\n return;\n }\n mixpanel.people.set(data);\n}","module.exports = __webpack_public_path__ + \"static/media/aws_brandmark.acf6dd33.svg\";","module.exports = __webpack_public_path__ + \"static/media/azure_brandmark.2e706e77.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_timer-blue.c655947d.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_clipboard-check.68e15723.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_exclamation-octagon.a4f1bcbd.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_bullseye.1d055b33.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_stopwatch.38541094.svg\";","import React from \"react\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faChartArea} from \"@fortawesome/free-solid-svg-icons\";\n\nclass NoErrorComponent extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n let message = this.props.message;\n if (message === undefined || message === null) {\n message = \"No Error found in the latest computation.\";\n }\n\n let footer = this.props.footer;\n if (footer === undefined || footer === null) {\n footer = \"Please check after sometime.\"\n }\n this.state = {\n message: message,\n footer: footer\n }\n }\n\n render() {\n return (\n
    \n

    \n

    {this.state.message}

    \n

    {this.state.footer}

    \n
    \n );\n }\n}\n\nexport default NoErrorComponent;\n","export function getDateObject(timeStr) {\n let dateObj;\n let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (isSafari) {\n dateObj = new Date(timeStr.replace(/\\s/, 'T'));\n } else {\n dateObj = new Date(timeStr);\n }\n return dateObj;\n}","export const CHART_TYPES = {\n hierarchicalEdgeBundling: 'hierarchicalEdgeBundling',\n radialBarChart: 'radialBarChart',\n chordDependency: 'chordDependency',\n zoomAbleSunburst: 'zoomAbleSunburst',\n radialDenDroGram: 'radialDenDroGram',\n areaChart: 'areaChart',\n heatMap: 'heatMap',\n bumpChart: 'bumpChart',\n barChart: 'barChart',\n horizontalBarChart: 'horizontalBarChart',\n groupedHorizontalBarChart: 'groupedHorizontalBarChart',\n groupedVerticalBarChart: 'groupedVerticalBarChart',\n horizontalCompareChart: 'horizontalCompareChart',\n multiLineFeatureChart: 'multiLineFeatureChart',\n baseLine: 'baseLine',\n cardArea: 'cardArea',\n thumbnailArea: 'thumbnailArea',\n thumbnailMultiLine: 'thumbnailMultiLine',\n multiLineChart: 'multiLineChart',\n thumbnailBar: 'thumbnailBar',\n asterPlot: 'asterPlot',\n boxPlot: 'boxPlot',\n scatterPlot: 'scatterPlot',\n stackedBarChart: 'stackedBarChart',\n packedChart: 'packedChart',\n hierarchicalEdgeBundlingV1: 'hierarchicalEdgeBundlingV1',\n radialBarChartV1: 'radialBarChartV1',\n hierarchicalEdgeBundlingV2: 'hierarchicalEdgeBundlingV2',\n radialBarChartV2: 'radialBarChartV2',\n hierarchicalEdgeBundlingV3: 'hierarchicalEdgeBundlingV3',\n hierarchicalEdgeBundlingDiscover: 'hierarchicalEdgeBundlingDiscover',\n hierarchicalEdgeBundlingV4: 'hierarchicalEdgeBundlingV4',\n hierarchicalEdgeBundlingV5: 'hierarchicalEdgeBundlingV5',\n hierarchicalEdgeBundlingV6: 'hierarchicalEdgeBundlingV6',\n confusionMatrix: 'confusionMatrix',\n thumbnailConfusionMatrix: 'thumbnailConfusionMatrix',\n modelDriftChart: 'modelDriftChart',\n barWithError: 'barWithError',\n areaWithError: 'areaWithError',\n radialBarChartV3: 'radialBarChartV3',\n boxPlotZoomable: 'boxPlotZoomable',\n radialBarChartV4: 'radialBarChartV4',\n};\n\nconst loadChart = promise =>\n promise.then((module) => {\n const defaultExport = module.default || module;\n return defaultExport.default || defaultExport;\n });\n\nconst chartMap = {\n [CHART_TYPES.hierarchicalEdgeBundling]: () => loadChart(import('./hierarchicalEdgeBundling')),\n [CHART_TYPES.radialBarChart]: () => loadChart(import('./radialBarChart')),\n [CHART_TYPES.chordDependency]: () => loadChart(import('./chordDependency')),\n [CHART_TYPES.zoomAbleSunburst]: () => loadChart(import('./zoomAbleSunburst')),\n [CHART_TYPES.radialDenDroGram]: () => loadChart(import('./radialDenDroGram')),\n [CHART_TYPES.areaChart]: () => loadChart(import('./areaChart')),\n [CHART_TYPES.heatMap]: () => loadChart(import('./heatMap')),\n [CHART_TYPES.bumpChart]: () => loadChart(import('./bumpChart')),\n [CHART_TYPES.barChart]: () => loadChart(import('./barChart')),\n [CHART_TYPES.horizontalBarChart]: () => loadChart(import('./horizontalBarChart')),\n [CHART_TYPES.groupedHorizontalBarChart]: () => loadChart(import('./groupedHorizontalBarChart')),\n [CHART_TYPES.groupedVerticalBarChart]: () => loadChart(import('./groupedVerticalBarChart')),\n [CHART_TYPES.horizontalCompareChart]: () => loadChart(import('./horizontalCompareChart')),\n [CHART_TYPES.multiLineFeatureChart]: () => loadChart(import('./multiLineFeatureChart')),\n [CHART_TYPES.baseLine]: () => loadChart(import('./baseLine')),\n [CHART_TYPES.cardArea]: () => loadChart(import('./cardArea')),\n [CHART_TYPES.thumbnailArea]: () => loadChart(import('./thumbnailCharts/thumbnailArea')),\n [CHART_TYPES.thumbnailMultiLine]: () => loadChart(import('./thumbnailCharts/thumbnailMultiLine')),\n [CHART_TYPES.thumbnailBar]: () => loadChart(import('./thumbnailCharts/thumbnailBar')),\n [CHART_TYPES.multiLineChart]: () => loadChart(import('./multiLineChart')),\n [CHART_TYPES.asterPlot]: () => loadChart(import('./asterPlot')),\n [CHART_TYPES.boxPlot]: () => loadChart(import('./boxPlot')),\n [CHART_TYPES.scatterPlot]: () => loadChart(import('./scatterPlot')),\n [CHART_TYPES.stackedBarChart]: () => loadChart(import('./stackedBarChart')),\n [CHART_TYPES.packedChart]: () => loadChart(import('./packedChart')),\n [CHART_TYPES.hierarchicalEdgeBundlingV1]: () => loadChart(import('./hierarchicalEdgeBundlingV1')),\n [CHART_TYPES.radialBarChartV1]: () => loadChart(import('./radialBarChartV1')),\n [CHART_TYPES.hierarchicalEdgeBundlingV2]: () => loadChart(import('./hierarchicalEdgeBundlingV2')),\n [CHART_TYPES.radialBarChartV2]: () => loadChart(import('./radialBarChartV2')),\n [CHART_TYPES.hierarchicalEdgeBundlingV3]: () => loadChart(import('./hierarchicalEdgeBundlingV3')),\n [CHART_TYPES.hierarchicalEdgeBundlingV4]: () => loadChart(import('./hierarchicalEdgeBundlingV4')),\n [CHART_TYPES.hierarchicalEdgeBundlingV5]: () => loadChart(import('./hierarchicalEdgeBundlingV5')),\n [CHART_TYPES.hierarchicalEdgeBundlingV6]: () => loadChart(import('./hierarchicalEdgeBundlingV6')),\n [CHART_TYPES.hierarchicalEdgeBundlingDiscover]: () => loadChart(import('./hierarchicalEdgeBundlingDiscover')),\n [CHART_TYPES.confusionMatrix]: () => loadChart(import('./confusionMatrix')),\n [CHART_TYPES.thumbnailConfusionMatrix]: () => loadChart(import('./thumbnailCharts/thumbnailConfusionMatrix')),\n [CHART_TYPES.modelDriftChart]: () => loadChart(import('./modelDriftChart')),\n [CHART_TYPES.barWithError]: () => loadChart(import('./barWithError')),\n [CHART_TYPES.areaWithError]: () => loadChart(import('./areaWithError')),\n [CHART_TYPES.radialBarChartV3]: () => loadChart(import('./radialBarChartV3')),\n [CHART_TYPES.boxPlotZoomable]: () => loadChart(import('./boxPlotZoomable')),\n [CHART_TYPES.radialBarChartV4]: () => loadChart(import('./radialBarChartV4'))\n\n}\n\nexport default chartMap;","import React from 'react';\nimport visPromiseLookup from '../charts';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faInfoCircle, faTag } from '@fortawesome/free-solid-svg-icons';\nimport VideoContent from './videoContent';\nimport Form from 'react-bootstrap/Form';\nimport Slider from 'rc-slider';\nimport 'rc-slider/assets/index.css';\nimport * as d3Module from 'd3';\nimport d3Tip from 'd3-tip';\nimport { event as currentEvent } from 'd3-selection';\n\n\nconst d3 = {\n ...d3Module,\n tip: d3Tip\n};\n\nclass ChartBody extends React.Component {\n\n constructor(props) {\n super(props);\n this.toggleHelpSection = this.toggleHelpSection.bind(this);\n this.hideTextLegendArea = this.hideTextLegendArea.bind(this);\n this.state = {\n renderVis: null,\n chart_data: this.props.chart_data,\n metaData: this.props.metaData,\n hidePartitions: this.props.hidePartitions,\n metricInfo: this.props.metricInfo,\n selector: this.props.id,\n visPromise: null,\n chartType: this.props.chartType,\n colorType: this.props.colorType,\n expand: this.props.expand,\n customHeight: this.props.customHeight,\n chartName: this.props.chartName,\n page: this.props.page,\n compareChart: this.props.compareChart,\n isNonTimeSeries: this.props.chart_data ? this.props.chart_data.isNonTimeSeries : false,\n filteredValues: this.props.filteredValues,\n selectedDataSource: this.props.selectedDataSource,\n timeFilterApplied: this.props.timeFilterApplied,\n startDate: this.props.startDate,\n endDate: this.props.endDate,\n showHelpSection: false,\n showTextLegendArea: true,\n datasetVersion: this.props.datasetVersion,\n chartzoom: 10,\n checkedAttributes: this.props.checkedAttributes,\n checkedPartition: this.props.checkedPartition,\n relationshipCheckFilter: this.props.relationshipCheckFilter,\n showSliderPopover: false,\n allowRelationsFilter: this.props.allowRelationsFilter,\n };\n this.chartZoom = this.chartZoom.bind(this);\n this.resetZoom = this.resetZoom.bind(this);\n this.chartHelpText = this.chartHelpText.bind(this);\n this.chartHelpTextHide = this.chartHelpTextHide.bind(this);\n this.relationshipApplyFilter = this.relationshipApplyFilter.bind(this);\n this.zoomIn = this.zoomIn.bind(this);\n this.zoomOut = this.zoomOut.bind(this);\n }\n\n relationshipApplyFilter(e) {\n this.setState({\n allowRelationsFilter: e.currentTarget.value,\n })\n let value = e.currentTarget.value\n this.props.relationshipCheck(value)\n }\n\n toggleHelpSection = () => {\n let showHelpSection = this.state.showHelpSection ? false : true;\n this.setState({ showHelpSection: showHelpSection });\n };\n\n hideTextLegendArea = () => {\n this.setState({ showTextLegendArea: false });\n }\n\n showTextLegendAreaContent = () => {\n this.setState({ showTextLegendArea: true });\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.chart_data !== state.chart_data) {\n return { chart_data: props.chart_data };\n } else if (props.expand !== state.expand) {\n return { expand: props.expand }\n } else if (props.chart_data_v1 !== state.chart_data_v1) {\n return { chart_data_v1: props.chart_data_v1 };\n } else if (props.chartType !== state.chartType) {\n return { chartType: props.chartType }\n } else if (props.compareChart !== state.compareChart) {\n return { compareChart: props.compareChart }\n } else if (props.filteredValues !== state.filteredValues) {\n return { filteredValues: props.filteredValues }\n } else if (props.selectedDataSource !== state.selectedDataSource) {\n return { selectedDataSource: props.selectedDataSource }\n } else if (props.metricInfo !== state.metricInfo) {\n return { metricInfo: props.metricInfo }\n } else if (props.timeFilterApplied !== state.timeFilterApplied) {\n return { timeFilterApplied: props.timeFilterApplied }\n } else if (props.startDate !== state.startDate) {\n return { startDate: props.startDate }\n } else if (props.endDate !== state.endDate) {\n return { endDate: props.endDate }\n }\n else if (props.checkedAttributes !== state.checkedAttributes) {\n return { checkedAttributes: props.checkedAttributes }\n }\n else if (props.relationshipCheckFilter !== state.relationshipCheckFilter) {\n return { relationshipCheckFilter: props.relationshipCheckFilter }\n }\n else if (props.checkedPartition !== state.checkedPartition) {\n return { checkedPartition: props.checkedPartition }\n }\n else if (props.allowRelationsFilter !== state.allowRelationsFilter) {\n return { allowRelationsFilter: props.allowRelationsFilter }\n }\n else return null;\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.chart_data !== this.state.chart_data) {\n this.setState({ chart_data: this.props.chart_data });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.expand !== this.state.expand) {\n this.setState({ expand: this.props.expand });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.chart_data_v1 !== this.state.chart_data_v1) {\n this.setState({ chart_data_v1: this.props.chart_data_v1 });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.chartType !== this.state.chartType) {\n this.setState({ chartType: this.props.chartType });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.compareChart !== this.state.compareChart) {\n this.setState({ compareChart: this.props.compareChart });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.filteredValues !== this.state.filteredValues) {\n this.setState({ filteredValues: this.props.filteredValues });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.selectedDataSource !== this.state.selectedDataSource) {\n this.setState({ selectedDataSource: this.props.selectedDataSource });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.metricInfo !== this.state.metricInfo) {\n this.setState({ metricInfo: this.props.metricInfo });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.timeFilterApplied !== this.state.timeFilterApplied) {\n this.setState({ timeFilterApplied: this.props.timeFilterApplied });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.startDate !== this.state.startDate) {\n this.setState({ startDate: this.props.startDate });\n this.loadAsyncVis(this.props.chartType);\n } else if (prevState.endDate !== this.state.endDate) {\n this.setState({ endDate: this.props.endDate });\n this.loadAsyncVis(this.props.chartType);\n }\n else if (prevState.checkedAttributes !== this.state.checkedAttributes) {\n this.setState({ checkedAttributes: this.props.checkedAttributes });\n this.loadAsyncVis(this.props.chartType);\n }\n else if (prevState.checkedPartition !== this.state.checkedPartition) {\n this.setState({ checkedPartition: this.props.checkedPartition });\n this.loadAsyncVis(this.props.chartType);\n }\n else if (prevState.relationshipCheckFilter !== this.state.relationshipCheckFilter) {\n this.setState({ relationshipCheckFilter: this.props.relationshipCheckFilter });\n this.loadAsyncVis(this.props.chartType);\n }\n else if (prevState.relationshipCheckFilter !== this.state.relationshipCheckFilter) {\n this.setState({ relationshipCheckFilter: this.props.relationshipCheckFilter });\n this.loadAsyncVis(this.props.chartType);\n }\n else if (prevState.allowRelationsFilter !== this.state.allowRelationsFilter) {\n this.setState({ allowRelationsFilter: this.props.allowRelationsFilter });\n this.loadAsyncVis(this.props.chartType);\n }\n\n }\n\n\n chartHelpText() {\n this.setState({ showSliderPopover: true });\n }\n\n chartHelpTextHide() {\n this.setState({ showSliderPopover: false });\n }\n\n componentDidMount() {\n this.loadAsyncVis(this.props.chartType);\n // setTimeout(() => {\n // this.setState({ showSliderPopover: true });\n // }, 2000);\n\n }\n\n loadAsyncVis(visType) {\n this.visPromise = visPromiseLookup[visType];\n this.visPromise()\n .then((renderVis) => {\n if (this.visPromise) {\n this.setState({ renderVis }, this.renderVis);\n }\n })\n .catch((error) => {\n console.warn(error); // eslint-disable-line\n });\n }\n\n renderVis() {\n const hasVisPromise = !!this.state.renderVis;\n if (hasVisPromise) {\n this.state.renderVis(this);\n }\n }\n zoomIn() {\n if (document.getElementById(\"zoomlevel\") !== null) {\n if (document.getElementById(\"zoomlevel\").value < 10) {\n let zoomvalue = (parseInt(document.getElementById(\"zoomlevel\").value) + 1) * parseInt(10)\n this.chartZoom(zoomvalue)\n }\n }\n }\n zoomOut() {\n if (document.getElementById(\"zoomlevel\") !== null) {\n if (document.getElementById(\"zoomlevel\").value > 1) {\n let zoomvalue = (parseInt(document.getElementById(\"zoomlevel\").value) - 1) * parseInt(10)\n this.chartZoom(zoomvalue)\n }\n }\n }\n\n chartZoom(newchartzoom) {\n if (document.getElementById(\"zoomlevel\") !== null) {\n let zoom = d3.zoom()\n .scaleExtent([1, 10])\n .on(\"zoom\", zoom_actions)\n // .filter(() => {\n // // const foundNode = this.N.findNodeByID(D3.event.srcElement.id.split('_')[1])\n // })\n let graphzoomlevel = (newchartzoom / 10);\n document.getElementById(\"zoomlevel\").value = graphzoomlevel;\n d3.select('svg')\n .transition()\n .call(zoom.scaleTo, graphzoomlevel);\n this.setState({ chartzoom: newchartzoom });\n function zoom_actions() {\n let g = d3.select('.everything');\n let width = g[\"_groups\"][0][0][\"attributes\"][1][\"value\"]\n let height = g[\"_groups\"][0][0][\"attributes\"][2][\"value\"]\n let trans = currentEvent.transform;\n let panX = parseInt(trans.x) > 10 ? 10 : parseInt(trans.x);\n let maxX = -(parseInt(trans.k) - 1) * parseInt(width - 10);\n let tx = parseInt(panX) < parseInt(maxX) ? parseInt(maxX) : parseInt(panX);\n\n let panY = parseInt(trans.y) > 10 ? 10 : parseInt(trans.y);\n let maxY = -(parseInt(trans.k) - 1) * parseInt(height - 10);\n let ty = parseInt(panY) < parseInt(maxY) ? parseInt(maxY) : parseInt(panY);\n\n // let tx = Math.min(0, Math.max(parseInt(trans.x), parseInt(width) - parseInt(width) * parseInt(trans.k)));\n // let ty = Math.min(0, Math.max(parseInt(trans.y), parseInt(height) - parseInt(height) * parseInt(trans.k)));\n if (trans !== \"\") {\n let obj = currentEvent.transform;\n obj.k = graphzoomlevel;\n if (graphzoomlevel === 1) {\n let obj = currentEvent.transform;\n obj.x = 0;\n obj.y = 0;\n }\n else {\n let obj = currentEvent.transform;\n obj.x = tx;\n obj.y = ty;\n }\n g.transition().duration(10).attr(\"transform\", obj)\n // .on('dblclick.zoom', false)\n // .on('wheel', function() {\n // currentEvent.preventDefault();\n // });\n }\n // g.attr(\"transform\", currentEvent.transform)\n }\n }\n }\n\n handleChartZoomChange = (newchartzoom) => {\n this.chartZoom(newchartzoom)\n }\n\n resetZoom() {\n this.chartZoom('10')\n }\n\n render() {\n // const { sliderValue } = this.state;\n if (this.props.page === \"profile\" || this.props.page === \"profile_discover\") {\n return (\n <>\n
    \n {\n this.state.showTextLegendArea ?\n
    \n
    \n

    \n \n Hover over an dataset/attribute to understand data quality metrics and errors in detail.\n To know more about this chart type in detail, click here\n

    \n
    \n
    : \"\"\n }\n {\n this.state.showHelpSection ?\n : \"\"\n }\n {this.props.showChartFilter !== false ?\n
    \n
    \n {this.props.showParititionFilter === true && this.props.datasetLevelChart.length + this.props.attributeLevelChart.length > 0 ?\n \n
    \n {\n this.setState({ allowPartition: !this.state.allowPartition })\n this.props.allowPartition()\n }}\n />\n \n \n \n \n \n \n Partition Dataset ({this.props.datasetLevelChart.length})\n \n
    \n
    : \"\"\n }\n {this.props.showAttributeFilter === true && (this.props.datasetLevelChart.length + this.props.attributeLevelChart.length) > 0 ?\n \n
    \n {\n this.setState({ checkedAttributes: !this.state.checkedAttributes })\n this.props.allowAttributes()\n }}\n\n\n />\n \n \n \n Attributes ({this.props.attributeLevelChart.length})\n \n
    \n
    : \"\"\n }\n
    \n {this.state.relationshipCheckFilter === true && this.state.checkedAttributes === true ?\n
    \n \n \n
    : \"\"}\n
    : \"\"}\n {/* Start: RC Slider */}\n {(this.props.showZoom === true && this.props.datasetLevelChart.length + this.props.attributeLevelChart.length > 0) || (this.props.chartType === \"hierarchicalEdgeBundlingDiscover\") ?\n
    \n
    \n
    \n \n \n \n \n \n \n \n
    \n
    \n {/* {this.state.chartzoom}% */}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    : \"\"}\n {/* End: RC Slider */}\n
    \n
    \n {this.state.showSliderPopover === true ?\n
    \n
    \n
    \n
    \n

    Zoom and Reset Controls

    \n
    \n
    \n

    To improve your chart visualization, use the draggable slide range to zoom in or out, and click the 'Reset' button icon to return to the default view

    \n
    \n
    \n \n
    \n
    \n
    : \"\"\n }\n\n \n );\n } else {\n return (\n <>\n
    \n \n );\n }\n\n }\n}\n\nexport default ChartBody;","import {\n ADD_DATA_SET_ATTRIBUTE_MAPPING,\n ADD_DATA_SOURCE,\n ADD_DATA_SOURCE_DATA_SET_MAPPING,\n ADD_DATASET_VERSIONS,\n ADD_DISCOVERY_STATUS,\n ADD_ENVIRONMENT,\n ADD_ENVIRONMENT_DATA_SOURCE_MAPPING,\n ADD_INFO,\n ADD_LAST_PROFILING_TIME,\n ADD_METADATA,\n ADD_ML_RELATIONSHIP,\n ADD_PROCESSING_STATUS,\n ADD_RECENCY_DETAILS,\n ADD_RELATIONSHIP,\n ADD_RECENT_HISTORY,\n ADD_DATA_SIZE,\n MARK_NOTIFICATION_AS_READ,\n REMOVE_NOTIFICATION_FROM_LIST,\n SET_ATTRIBUTE,\n SET_CHIP_DATA,\n SET_DATA_SET,\n SET_DATA_SOURCE,\n SET_END_DATE,\n SET_ENVIRONMENT,\n SET_FILTERED_DATA,\n SET_INITIAL_VALUES,\n SET_ML_CHIP_DATA,\n SET_ML_DATA_SOURCE,\n SET_ML_MODEL,\n SET_MODEL_AB_LIST,\n SET_START_DATE,\n SET_TENANT_ID,\n SET_TIME_FILTER,\n USER_NOTIFICATIONS,\n STORE_IP_DATA,\n ADD_METADATA_DETAILS,\n NO_INTEGRATION,\n FORM_DATASET_INFO,\n ADD_DATASET_LAST_REFRESH,\n ADD_DATASOURCE_DISCOVER_PAGE\n} from \"../actionTypes\";\nimport moment from 'moment';\nimport {IS_NONE_CHECK} from \"../../utils/constant\";\n\n\nconst initialState = {\n relationship: {},\n dataset_relationship: {}, \n metaData: {},\n info: {},\n selectedDataSource: -1,\n selectedMlDataSource: -1,\n selectedEnvironment: -1,\n integrations: {},\n lastProfilingTime: {},\n environments:{},\n environmentDataSourceMapping: {},\n dataSourceDataSetMapping: {},\n dataSetAttributeMapping: {},\n dataSets:{},\n columns:{},\n chipData: [],\n mlChipData: [],\n processingStatus: {},\n discoveryStatus: {},\n filteredValues: [],\n tenantId: -1,\n selectedDataSetId: -1,\n selectedAttributeName: \"\",\n selectedAttributeID: \"\",\n selectedMLModel: -1,\n mlRelationship: {},\n modelABData: [],\n modelInfoMap: {},\n modelABDataLoaded: false,\n startDate: moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00'),\n endDate: moment().format('YYYY-MM-DD 23:59:59'),\n timeFilterApplied: false,\n userNotificationData: {\n page: 0,\n loaded: false,\n unreadNotifications: [],\n allNotifications: [],\n completeLoadInitiated: false\n },\n datasetVersion: {},\n recencyDetails: {},\n recentHistory: [],\n dataSize: [],\n metadataDetails: {},\n preFetchMetaData: false,\n prefetchDatasetDetails: false,\n prefetchRecencyDetails: false,\n prefetchRecentHistory: false,\n prefetchDataSize: false,\n prefetchModelABData: false,\n preFetchUserNotifications: false,\n preFetchMetadataDetails: false,\n ipData:null,\n noIntegrationStatus:null,\n mappedDatasetInfo:{},\n discoverPageDataSource: {},\n datasetLastProcessInfoOver: false,\n datasetLastProcessInfo: {}\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case SET_INITIAL_VALUES: {\n return initialState;\n }\n case ADD_METADATA: {\n return {\n ...state,\n metaData: {\n ...state.metaData,\n ...action.payload.content\n },\n preFetchMetaData:true\n\n };\n }\n case ADD_RELATIONSHIP: {\n let attribute_data = [];\n let dataset_data = [];\n let payload = action.payload.data; \n if( Array.isArray(payload)){ \n attribute_data = payload;\n }\n else if(!IS_NONE_CHECK.includes(payload) && typeof payload === \"object\"){\n attribute_data = payload.attribute;\n dataset_data = payload.dataset;\n if (IS_NONE_CHECK.includes(attribute_data)){\n attribute_data = [];\n }\n if (IS_NONE_CHECK.includes(dataset_data)){\n dataset_data = [];\n } \n } \n return {\n ...state,\n relationship: {\n ...state.relationship,\n [action.payload.dataSource]: attribute_data\n },\n dataset_relationship: {\n ...state.dataset_relationship,\n [action.payload.dataSource]: dataset_data\n }\n };\n }\n case SET_DATA_SOURCE: {\n return {\n ...state,\n selectedDataSource: action.payload.dataSource\n }\n }\n case SET_ML_DATA_SOURCE: {\n return {\n ...state,\n selectedMlDataSource: action.payload.mlDataSource\n }\n }\n case ADD_ML_RELATIONSHIP: {\n return {\n ...state,\n mlRelationship: {\n ...state.mlRelationship,\n [action.payload.mlModel]: action.payload.data\n }\n };\n }\n case SET_ML_MODEL: {\n return {\n ...state,\n selectedMLModel: action.payload.mlModel\n }\n }\n case SET_TENANT_ID: {\n return {\n ...state,\n tenantId: action.payload.tenantId\n }\n }\n case SET_DATA_SET: {\n return {\n ...state,\n selectedDataSetId: action.payload.dataSet\n }\n }\n case SET_CHIP_DATA: {\n return {\n ...state,\n chipData: action.payload.chipData\n }\n }\n case SET_ML_CHIP_DATA: {\n return {\n ...state,\n mlChipData: action.payload.mlChipData\n }\n }\n case SET_FILTERED_DATA: {\n return {\n ...state,\n filteredValues: action.payload.filteredValues\n }\n }\n case SET_START_DATE: {\n return {\n ...state,\n startDate: action.payload.startDate\n }\n }\n case SET_END_DATE: {\n return {\n ...state,\n endDate: action.payload.endDate\n }\n }\n case SET_TIME_FILTER: {\n return {\n ...state,\n timeFilterApplied: action.payload.timeFilterApplied\n }\n }\n case SET_ATTRIBUTE: {\n return {\n ...state,\n selectedAttributeName: action.payload.attributeName,\n selectedAttributeID: action.payload.attributeId\n }\n }\n case SET_ENVIRONMENT: {\n return {\n ...state,\n selectedEnvironment: action.payload.environment\n }\n }\n case ADD_DATA_SOURCE: {\n return {\n ...state,\n integrations: {\n ...state.integrations,\n [action.payload.dataSourceId]: action.payload.dataSourceName\n }\n }\n }\n case ADD_INFO: {\n return {\n ...state,\n info: {\n ...state.info,\n ...action.payload.data\n }\n }\n }\n case ADD_DISCOVERY_STATUS: {\n return {\n ...state,\n discoveryStatus: {\n ...state.discoveryStatus,\n [action.payload.dataSourceId]: action.payload.discoveryStatus\n }\n }\n }\n case ADD_PROCESSING_STATUS: {\n return {\n ...state,\n processingStatus: {\n ...state.processingStatus,\n [action.payload.dataSourceId]: action.payload.processingStatus\n }\n }\n }\n case ADD_LAST_PROFILING_TIME: {\n return {\n ...state,\n lastProfilingTime: {\n ...state.lastProfilingTime,\n [action.payload.dataSourceId]: action.payload.lastProfilingTime\n }\n }\n }\n case ADD_ENVIRONMENT: {\n return {\n ...state,\n environments: {\n ...state.environments,\n ...action.payload.data\n }\n }\n }\n case ADD_ENVIRONMENT_DATA_SOURCE_MAPPING: {\n return {\n ...state,\n environmentDataSourceMapping: {\n ...state.environmentDataSourceMapping,\n ...action.payload.mapping\n }\n }\n }\n case ADD_DATA_SOURCE_DATA_SET_MAPPING: {\n return {\n ...state,\n dataSourceDataSetMapping: {\n ...state.dataSourceDataSetMapping,\n ...action.payload.mapping\n }\n }\n }\n case ADD_DATA_SET_ATTRIBUTE_MAPPING: {\n return {\n ...state,\n dataSetAttributeMapping: {\n ...state.dataSetAttributeMapping,\n ...action.payload.mapping\n }\n }\n }\n\n case USER_NOTIFICATIONS: {\n let userNotificationResult = action.payload.userNotificationData;\n const isReset = userNotificationResult.resetData;\n let notificationInState = state.userNotificationData;\n\n notificationInState.loaded = true;\n notificationInState.page = userNotificationResult.page;\n\n // We will reset the data during first time clicking if View All notifications\n // is clicked for the first time\n if (isReset === true) {\n notificationInState.allNotifications = userNotificationResult.user_notification;\n notificationInState.unreadNotifications = userNotificationResult.unread_user_notification;\n notificationInState.completeLoadInitiated = true;\n return {\n ...state,\n userNotificationData: notificationInState,\n preFetchUserNotifications: true\n };\n }\n\n // Append the results to existing data\n const newUnreadNotifications = userNotificationResult.unread_user_notification;\n if (newUnreadNotifications !== undefined && newUnreadNotifications !== null &&\n newUnreadNotifications.length > 0) {\n // Merge incoming unread items to existing list\n notificationInState.unreadNotifications.push(...newUnreadNotifications);\n }\n\n const newAllNotifications = userNotificationResult.user_notification;\n if (newAllNotifications !== undefined && newAllNotifications !== null &&\n newAllNotifications.length > 0) {\n // Merge incoming notification items to existing list\n notificationInState.allNotifications.push(...newAllNotifications);\n }\n\n return {\n ...state,\n userNotificationData: notificationInState,\n preFetchUserNotifications: true\n };\n }\n\n case MARK_NOTIFICATION_AS_READ: {\n let userNotificationID = action.payload.notificationID;\n\n let notificationInState = state.userNotificationData;\n const currUnreadNotifications = notificationInState.unreadNotifications;\n\n // Remove the given notification from unread list. User has clicked it,\n // so this will be removed from unread list\n const newUnreadNotifications = currUnreadNotifications.filter(x=>x.notification_id !== userNotificationID);\n notificationInState.unreadNotifications = newUnreadNotifications;\n\n // Mark it as read notification\n const currAllNotifications = notificationInState.allNotifications;\n const reqNotification = currAllNotifications.find(x=>x.notification_id === userNotificationID);\n if (!IS_NONE_CHECK.includes(reqNotification)) {\n reqNotification[\"read_status\"] = true;\n }\n\n return {\n ...state,\n userNotificationData: notificationInState\n };\n }\n\n case REMOVE_NOTIFICATION_FROM_LIST: {\n let userNotificationID = action.payload.notificationID;\n\n let notificationInState = state.userNotificationData;\n const currUnreadNotifications = notificationInState.unreadNotifications;\n const currAllNotifications = notificationInState.allNotifications;\n\n // Remove the selected notification from all the lists\n const newUnreadNotifications = currUnreadNotifications.filter(x=>x.notification_id !== userNotificationID);\n const newAllNotifications = currAllNotifications.filter(x=>x.notification_id !== userNotificationID);\n\n notificationInState.unreadNotifications = newUnreadNotifications;\n notificationInState.allNotifications = newAllNotifications;\n\n return {\n ...state,\n userNotificationData: notificationInState\n };\n }\n\n case ADD_DATASET_VERSIONS: {\n return {\n ...state,\n datasetVersion: {\n ...state.datasetVersion,\n ...action.payload.datasetVersion\n },\n prefetchDatasetDetails: true\n }\n }\n\n case ADD_RECENCY_DETAILS: {\n return {\n ...state,\n recencyDetails: {\n ...state.recencyDetails,\n ...action.payload.recencyDetails\n },\n prefetchRecencyDetails: true\n }\n }\n case ADD_RECENT_HISTORY:\n {\n return {\n ...state,\n recentHistory: action.payload.recentHistory,\n prefetchRecentHistory: true\n }\n }\n case ADD_DATA_SIZE:\n {\n return {\n ...state,\n dataSize: action.payload.dataSize,\n prefetchDataSize: true\n }\n }\n case ADD_METADATA_DETAILS:\n {\n return {\n ...state,\n metadataDetails: action.payload.metadataDetails,\n preFetchMetadataDetails: true\n }\n }\n\n case SET_MODEL_AB_LIST: {\n const updated_state = {\n ...state,\n modelABDataLoaded: true,\n modelABData: action.payload.modelABList,\n prefetchModelABData: true\n };\n\n let modelInfoMap = action.payload.model_info_map;\n if (modelInfoMap === undefined || modelInfoMap === null) {\n modelInfoMap = {};\n }\n\n // Combine existing map info and new map info\n const stateModelInfoMap = updated_state[\"modelInfoMap\"];\n updated_state[\"modelInfoMap\"] = Object.assign({}, stateModelInfoMap, modelInfoMap);\n return updated_state;\n }\n\n case STORE_IP_DATA: {\n\n return {\n ...state,\n ipData: {\n ...state.ipData,\n ...action.payload.ipData\n }\n }\n }\n\n case NO_INTEGRATION: {\n return{\n ...state,\n noIntegrationStatus:action.payload.data\n }\n }\n case FORM_DATASET_INFO:\n return {\n ...state,\n mappedDatasetInfo: action.payload.data,\n }\n\n case ADD_DATASET_LAST_REFRESH:\n return {\n ...state,\n datasetLastProcessInfo: action.payload.lastRefreshOfDatasets,\n datasetLastProcessInfoOver: true\n }\n\n case ADD_DATASOURCE_DISCOVER_PAGE:\n let requiredRes = {};\n let incomingData = action.payload.discoverPageData;\n\n for (let currIntData of incomingData){\n let currSource = currIntData.integration_id;\n let currPageData = currIntData.page_data;\n if (IS_NONE_CHECK.includes(currPageData)) {\n currPageData = {};\n }\n \n let chartContent = currPageData.chart_content;\n if (IS_NONE_CHECK.includes(chartContent)) {\n chartContent = {}\n }\n requiredRes[currSource] = chartContent;\n }\n\n return {\n ...state,\n discoverPageDataSource: requiredRes\n }\n \n default:\n return state;\n }\n}\n","import {\n ADD_MONITOR_PREVIEW,\n ADD_PERFORMANCE_PREVIEW,\n ADD_COMPLETENESS_INFO,\n SET_MONITOR_INITIAL_VALUES,\n ADD_COMPLETENESS_ATTRIBUTE_INFO,\n ADD_TIMELINESS_INFO,\n ADD_TIMELINESS_ATTRIBUTE_INFO,\n ADD_ACCURACY_INFO,\n ADD_ACCURACY_ATTRIBUTE_INFO,\n ADD_DRIFT_INFO,\n ADD_DRIFT_ATTRIBUTE_INFO,\n ADD_CONFORMITY_INFO,\n ADD_CONFORMITY_ATTRIBUTE_INFO,\n ADD_CONSISTENCY_INFO,\n ADD_CONSISTENCY_ATTRIBUTE_INFO,\n ADD_ML_MODEL_MAPPING,\n ADD_ML_MODEL_INFO,\n ADD_ML_MODEL_ATTRIBUTE_INFO,\n ADD_ML_MODEL_PERFORMANCE,\n ADD_ML_MODEL_DETAILS, ADD_MONITOR_DQ_LIST_VIEW,\n ADD_METRICS,\n ADD_UNIQUENESS_INFO,\n ADD_UNIQUENESS_ATTRIBUTE_INFO,\n ADD_RECENCY_PREVIEW,\n ADD_FOLLOW_ATTRIBUTES,\n PREFETCH_MONITOR_STATE,\n FORM_DATASET_INFO,\n FORM_LISTVIEW_TABLE_DATA\n} from \"../actionTypes\";\nimport {IS_NONE_CHECK, MONITOR_DATA_KEYS} from \"../../utils/constant\";\n\nconst initialState = {\n dqPreview: {},\n mlPreview: {},\n performancePreview: {},\n completenessDataSetInfo: {},\n completenessAttributeInfo: {},\n timelinessDataSetInfo: {},\n timelinessAttributeInfo: {},\n accuracyDataSetInfo: {},\n accuracyAttributeInfo: {},\n driftDataSetInfo: {},\n driftAttributeInfo: {},\n driftAttributeInfoCount: 0,\n conformityDataSetInfo: {},\n conformityAttributeInfo: {},\n consistencyDataSetInfo: {},\n consistencyAttributeInfo: {},\n uniquenessDataSetInfo: {},\n uniquenessAttributeInfo: {},\n mlModelMapping: {},\n mlModelDataSetInfo: {},\n mlModelDataSetInfo2: {},\n mlModelAttributeInfo: {},\n mlModelErrorFetch: 0,\n mlModelErrorAttributeFetch: 0,\n mlModelPerformanceInfo: {},\n modelPerformanceFetchCompleted: false,\n mlModelDetails: [],\n monitorDQListView: {\"apiFetchOver\": false},\n metrics: [],\n recencyPreview: {},\n follow_attributes: {},\n preFetchMonitorPreview: false,\n preFetchMonitorModelInfo: false,\n preFetchModelDetails: false,\n preFetchMetrics: false,\n preFetchFollowAttributes: false,\n preFetchMonitorListViewData: false,\n fetchInfo: {},\n mappedDatasetInfo : {},\n listViewTableData : []\n\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case SET_MONITOR_INITIAL_VALUES: {\n return initialState;\n }\n case ADD_ML_MODEL_MAPPING:\n return {\n ...state,\n mlModelMapping: action.payload.mlModelMapping,\n preFetchMonitorModelInfo: true\n }\n case ADD_MONITOR_PREVIEW:\n// commented lines are for dq monitor page\n\n// let dqPreview = action.payload.dqPreview;\n// let previousDqData = state.dqPreview;\n// let newDqData = {};\n let newMlData = {};\n//\n// if (dqPreview === undefined || dqPreview === null){\n// dqPreview = {};\n// }\n// if (Object.keys(previousDqData).length === 0) {\n// newDqData = dqPreview\n// }\n\n let mlPreview = action.payload.mlPreview;\n let previousMlData = state.mlPreview;\n if (mlPreview === undefined || mlPreview === null){\n mlPreview = {};\n }\n if (Object.keys(previousMlData).length === 0) {\n newMlData = mlPreview\n }\n\n// let prev_dq_keys = Object.keys(previousDqData)\n// for (const key of prev_dq_keys) {\n// if (MONITOR_DATA_KEYS.includes(key)) {\n// newDqData[key] =dqPreview[key]\n// } else {\n// newDqData[key] = {\n// ...previousDqData[key],\n// ...dqPreview[key]\n// }\n// }\n// }\n\n let prev_ml_keys = Object.keys(previousMlData)\n for (const key of prev_ml_keys) {\n if (MONITOR_DATA_KEYS.includes(key)) {\n newMlData[key] =mlPreview[key]\n } else {\n newMlData[key] = {\n ...previousMlData[key],\n ...mlPreview[key]\n }\n }\n }\n//\n// for (const current_key of Object.keys(dqPreview)) {\n// if (prev_dq_keys.includes(current_key)) {\n// continue;\n// }\n// if (MONITOR_DATA_KEYS.includes(current_key)) {\n// newMlData[current_key] =mlPreview[current_key]\n// } else {\n// newDqData[current_key] = {\n// ...dqPreview[current_key]\n// }\n// }\n// }\n\n for (const current_key of Object.keys(mlPreview)) {\n if (prev_ml_keys.includes(current_key)) {\n continue;\n }\n if (MONITOR_DATA_KEYS.includes(current_key)) {\n newMlData[current_key] =mlPreview[current_key]\n } else {\n newMlData[current_key] = {\n ...mlPreview[current_key]\n }\n }\n }\n return {\n ...state,\n// dqPreview: newDqData,\n mlPreview: newMlData\n };\n case ADD_RECENCY_PREVIEW:\n let recencyPreview = action.payload.recencyPreview;\n if (recencyPreview === undefined || recencyPreview === null){\n recencyPreview = {};\n }\n return {\n ...state,\n recencyPreview: recencyPreview,\n };\n case ADD_PERFORMANCE_PREVIEW:\n let payloadPerformancePreview = action.payload.performancePreview;\n if (payloadPerformancePreview === undefined || payloadPerformancePreview === null){\n payloadPerformancePreview = {};\n }\n\n return {\n ...state,\n performancePreview: payloadPerformancePreview,\n preFetchMonitorPreview: true\n\n }\n case PREFETCH_MONITOR_STATE:\n return {\n ...state,\n fetchInfo :{...state.fetchInfo,[action.payload.fetchState]: true}\n }\n case ADD_COMPLETENESS_ATTRIBUTE_INFO:\n let previousAttributeData = state.completenessAttributeInfo;\n let payloadCompletenessAttribute = action.payload.completenessAttributeInfo;\n if (payloadCompletenessAttribute === undefined || payloadCompletenessAttribute === null) {\n payloadCompletenessAttribute = {};\n }\n if (Object.keys(previousAttributeData).length === 0) {\n return {\n ...state,\n completenessAttributeInfo: payloadCompletenessAttribute\n }\n }\n let newAttributeData = {};\n let prev_completeness_attr_keys = Object.keys(previousAttributeData)\n for (const key of prev_completeness_attr_keys) {\n newAttributeData[key] = {\n ...previousAttributeData[key],\n ...payloadCompletenessAttribute[key]\n }\n }\n for (const current_key of Object.keys(payloadCompletenessAttribute)) {\n if (prev_completeness_attr_keys.includes(current_key)) {\n continue;\n }\n\n newAttributeData[current_key] = {\n ...payloadCompletenessAttribute[current_key]\n }\n }\n return {\n ...state,\n completenessAttributeInfo: newAttributeData\n }\n case ADD_COMPLETENESS_INFO:\n let previousData = state.completenessDataSetInfo;\n let payloadCompletenessDatasetInfo = action.payload.completenessDataSetInfo;\n if (payloadCompletenessDatasetInfo === undefined || payloadCompletenessDatasetInfo === null) {\n payloadCompletenessDatasetInfo = {};\n }\n if (Object.keys(previousData).length === 0) {\n return {\n ...state,\n completenessDataSetInfo: payloadCompletenessDatasetInfo\n }\n }\n let newData = {};\n let prev_completeness_keys = Object.keys(previousData)\n for (const key of prev_completeness_keys) {\n newData[key] = {\n ...previousData[key],\n ...payloadCompletenessDatasetInfo[key]\n }\n }\n for (const current_key of Object.keys(payloadCompletenessDatasetInfo)) {\n if (prev_completeness_keys.includes(current_key)) {\n continue;\n }\n\n newData[current_key] = {\n ...payloadCompletenessDatasetInfo[current_key]\n }\n }\n return {\n ...state,\n completenessDataSetInfo: newData\n }\n case ADD_TIMELINESS_ATTRIBUTE_INFO:\n let previousTimeAttributeData = state.timelinessAttributeInfo;\n let payloadTimelinessAttribute = action.payload.timelinessAttributeInfo;\n if (payloadTimelinessAttribute === undefined || payloadTimelinessAttribute === null){\n payloadTimelinessAttribute = {};\n }\n if (Object.keys(previousTimeAttributeData).length === 0) {\n return {\n ...state,\n timelinessAttributeInfo: payloadTimelinessAttribute\n }\n }\n let newTimeAttributeData = {};\n let prev_timeliness_attr_keys = Object.keys(previousTimeAttributeData)\n for (const key of prev_timeliness_attr_keys) {\n newTimeAttributeData[key] = {\n ...previousTimeAttributeData[key],\n ...payloadTimelinessAttribute[key]\n }\n }\n for (const current_key of Object.keys(payloadTimelinessAttribute)) {\n if (prev_timeliness_attr_keys.includes(current_key)) {\n continue;\n }\n\n newTimeAttributeData[current_key] = {\n ...payloadTimelinessAttribute[current_key]\n }\n }\n return {\n ...state,\n timelinessAttributeInfo: newTimeAttributeData\n }\n case ADD_TIMELINESS_INFO:\n let previousTimeData = state.timelinessDataSetInfo;\n let payloadTimelinessDataSetInfo = action.payload.timelinessDataSetInfo;\n if (payloadTimelinessDataSetInfo === undefined || payloadTimelinessDataSetInfo === null) {\n payloadTimelinessDataSetInfo = {};\n }\n if (Object.keys(previousTimeData).length === 0) {\n return {\n ...state,\n timelinessDataSetInfo: payloadTimelinessDataSetInfo\n }\n }\n let newTimeData = {};\n let prev_timeliness_keys = Object.keys(previousTimeData)\n for (const key of prev_timeliness_keys) {\n newTimeData[key] = {\n ...previousTimeData[key],\n ...payloadTimelinessDataSetInfo[key]\n }\n }\n for (const current_key of Object.keys(payloadTimelinessDataSetInfo)) {\n if (prev_timeliness_keys.includes(current_key)) {\n continue;\n }\n\n newTimeData[current_key] = {\n ...payloadTimelinessDataSetInfo[current_key]\n }\n }\n return {\n ...state,\n timelinessDataSetInfo: newTimeData\n }\n case ADD_ACCURACY_ATTRIBUTE_INFO:\n let previousAccuracyAttributeData = state.accuracyAttributeInfo;\n let payloadAccuracyAttribute = action.payload.accuracyAttributeInfo;\n if (payloadAccuracyAttribute === undefined || payloadAccuracyAttribute === null) {\n payloadAccuracyAttribute = {};\n }\n if (Object.keys(previousAccuracyAttributeData).length === 0) {\n return {\n ...state,\n accuracyAttributeInfo: payloadAccuracyAttribute\n }\n }\n let newAttributeAccuracyData = {};\n let prev_accuracy_attr_keys = Object.keys(previousAccuracyAttributeData)\n for (const previous_key of prev_accuracy_attr_keys) {\n newAttributeAccuracyData[previous_key] = {\n ...previousAccuracyAttributeData[previous_key],\n ...payloadAccuracyAttribute[previous_key]\n }\n }\n for (const current_key of Object.keys(payloadAccuracyAttribute)) {\n if (prev_accuracy_attr_keys.includes(current_key)) {\n continue;\n }\n\n newAttributeAccuracyData[current_key] = {\n ...payloadAccuracyAttribute[current_key]\n }\n }\n return {\n ...state,\n accuracyAttributeInfo: newAttributeAccuracyData\n }\n case ADD_ACCURACY_INFO:\n let previousAccuracyData = state.accuracyDataSetInfo;\n let payloadAccuracyDataset = action.payload.accuracyDataSetInfo;\n if (payloadAccuracyDataset === undefined || payloadAccuracyDataset === null) {\n payloadAccuracyDataset = {};\n }\n if (Object.keys(previousAccuracyData).length === 0) {\n return {\n ...state,\n accuracyDataSetInfo: payloadAccuracyDataset\n }\n }\n let newAccuracyData = {};\n let prev_accuracy_keys = Object.keys(previousAccuracyData)\n for (const key of prev_accuracy_keys) {\n newAccuracyData[key] = {\n ...previousAccuracyData[key],\n ...payloadAccuracyDataset[key]\n }\n }\n for (const current_key of Object.keys(payloadAccuracyDataset)) {\n if (prev_accuracy_keys.includes(current_key)) {\n continue;\n }\n\n newAccuracyData[current_key] = {\n ...payloadAccuracyDataset[current_key]\n }\n }\n\n return {\n ...state,\n accuracyDataSetInfo: newAccuracyData\n }\n case ADD_DRIFT_ATTRIBUTE_INFO:\n // eslint-disable-next-line\n let previousDriftAttributeData = state.driftAttributeInfo;\n let previousDriftAttributeCount = state.driftAttributeInfoCount;\n // let payloadDriftAttribute = action.payload.driftAttributeInfo;\n let newAttributeDriftData = action.payload.driftAttributeInfo;\n // if (payloadDriftAttribute === undefined || payloadDriftAttribute === null) {\n // payloadDriftAttribute = {};\n // }\n\n // if (Object.keys(previousDriftAttributeData).length === 0) {\n // return {\n // ...state,\n // driftAttributeInfo: payloadDriftAttribute,\n // driftAttributeInfoCount: previousDriftAttributeCount + 1\n // }\n // }\n\n // let newAttributeDriftData = {};\n // for (const key of Object.keys(previousDriftAttributeData)) {\n // newAttributeDriftData[key] = {\n // ...previousDriftAttributeData[key],\n // ...payloadDriftAttribute[key]\n // }\n // }\n\n // let processedKeys = Object.keys(previousDriftAttributeData);\n // for (const newPayloadKey of Object.keys(payloadDriftAttribute)) {\n // if(processedKeys.includes(newPayloadKey)){\n // continue;\n // }\n\n // newAttributeDriftData[newPayloadKey] = {\n // ...payloadDriftAttribute[newPayloadKey]\n // }\n // }\n return {\n ...state,\n // driftAttributeInfo: previousDriftAttributeData,\n driftAttributeInfo: newAttributeDriftData,\n driftAttributeInfoCount: previousDriftAttributeCount + 1\n }\n case ADD_DRIFT_INFO:\n let previousDriftData = state.driftDataSetInfo;\n let payloadDriftDataset = action.payload.driftDataSetInfo;\n if (payloadDriftDataset === undefined || payloadDriftDataset === null) {\n payloadDriftDataset = {};\n }\n\n if (Object.keys(previousDriftData).length === 0) {\n return {\n ...state,\n driftDataSetInfo: payloadDriftDataset\n }\n }\n let newDriftData = {};\n for (const key of Object.keys(previousDriftData)) {\n newDriftData[key] = {\n ...previousDriftData[key],\n ...payloadDriftDataset[key]\n }\n }\n\n let processedKeysDriftDataset = Object.keys(previousDriftData);\n for (const newPayloadKey of Object.keys(payloadDriftDataset)) {\n if (processedKeysDriftDataset.includes(newPayloadKey)) {\n continue;\n }\n\n newDriftData[newPayloadKey] = {\n ...payloadDriftDataset[newPayloadKey]\n }\n }\n return {\n ...state,\n driftDataSetInfo: newDriftData\n }\n case ADD_CONFORMITY_ATTRIBUTE_INFO:\n let previousConformityAttributeData = state.conformityAttributeInfo;\n let payloadConformityAttributeInfo = action.payload.conformityAttributeInfo;\n if (payloadConformityAttributeInfo === undefined || payloadConformityAttributeInfo === null) {\n payloadConformityAttributeInfo = {};\n }\n if (Object.keys(previousConformityAttributeData).length === 0) {\n return {\n ...state,\n conformityAttributeInfo: payloadConformityAttributeInfo\n }\n }\n let newConformityAttributeData = {};\n let prev_conformity_attr_keys = Object.keys(previousConformityAttributeData)\n for (const key of prev_conformity_attr_keys) {\n newConformityAttributeData[key] = {\n ...previousConformityAttributeData[key],\n ...payloadConformityAttributeInfo[key]\n }\n }\n for (const current_key of Object.keys(payloadConformityAttributeInfo)) {\n if (prev_conformity_attr_keys.includes(current_key)) {\n continue;\n }\n\n newConformityAttributeData[current_key] = {\n ...payloadConformityAttributeInfo[current_key]\n }\n }\n return {\n ...state,\n conformityAttributeInfo: newConformityAttributeData\n }\n case ADD_CONFORMITY_INFO:\n let previousConformityData = state.conformityDataSetInfo;\n let payloadConformityDataSetInfo = action.payload.conformityDataSetInfo;\n if (payloadConformityDataSetInfo === undefined || payloadConformityDataSetInfo === null){\n payloadConformityDataSetInfo = {};\n }\n if (Object.keys(previousConformityData).length === 0) {\n return {\n ...state,\n conformityDataSetInfo: payloadConformityDataSetInfo\n }\n }\n let newConformityData = {};\n let prev_conformity_keys = Object.keys(previousConformityData);\n for (const key of prev_conformity_keys) {\n newConformityData[key] = {\n ...previousConformityData[key],\n ...payloadConformityDataSetInfo[key]\n }\n }\n\n for (const current_key of Object.keys(payloadConformityDataSetInfo)) {\n if (prev_conformity_keys.includes(current_key)) {\n continue;\n }\n\n newConformityData[current_key] = {\n ...payloadConformityDataSetInfo[current_key]\n }\n }\n\n return {\n ...state,\n conformityDataSetInfo: newConformityData\n }\n case ADD_CONSISTENCY_ATTRIBUTE_INFO:\n let previousConsistencyAttributeData = state.consistencyAttributeInfo;\n let payloadConsistencyAttributeInfo = action.payload.consistencyAttributeInfo;\n if (payloadConsistencyAttributeInfo === undefined || payloadConsistencyAttributeInfo === null) {\n payloadConsistencyAttributeInfo = {};\n }\n if (Object.keys(previousConsistencyAttributeData).length === 0) {\n return {\n ...state,\n consistencyAttributeInfo: payloadConsistencyAttributeInfo\n }\n }\n let newConsistencyAttributeData = {};\n let prev_consistency_attr_keys = Object.keys(previousConsistencyAttributeData)\n for (const key of prev_consistency_attr_keys) {\n newConsistencyAttributeData[key] = {\n ...previousConsistencyAttributeData[key],\n ...payloadConsistencyAttributeInfo[key]\n }\n }\n for (const current_key of Object.keys(payloadConsistencyAttributeInfo)) {\n if (prev_consistency_attr_keys.includes(current_key)) {\n continue;\n }\n\n newConsistencyAttributeData[current_key] = {\n ...payloadConsistencyAttributeInfo[current_key]\n }\n }\n return {\n ...state,\n consistencyAttributeInfo: newConsistencyAttributeData\n }\n case ADD_CONSISTENCY_INFO:\n let previousConsistencyData = state.consistencyDataSetInfo;\n let payloadConsistencyDataSetInfo = action.payload.consistencyDataSetInfo;\n if (payloadConsistencyDataSetInfo === undefined || payloadConsistencyDataSetInfo === null) {\n payloadConsistencyDataSetInfo = {};\n }\n if (Object.keys(previousConsistencyData).length === 0) {\n return {\n ...state,\n consistencyDataSetInfo: payloadConsistencyDataSetInfo\n }\n }\n let newConsistencyData = {};\n let prev_consistency_keys = Object.keys(previousConsistencyData)\n for (const key of prev_consistency_keys) {\n newConsistencyData[key] = {\n ...previousConsistencyData[key],\n ...payloadConsistencyDataSetInfo[key]\n }\n }\n for (const current_key of Object.keys(payloadConsistencyDataSetInfo)) {\n if (prev_consistency_keys.includes(current_key)) {\n continue;\n }\n\n newConsistencyData[current_key] = {\n ...payloadConsistencyDataSetInfo[current_key]\n }\n }\n return {\n ...state,\n consistencyDataSetInfo: newConsistencyData\n }\n case ADD_ML_MODEL_ATTRIBUTE_INFO:\n const incomingNewData = action.payload.mlModelAttributeInfo;\n if (incomingNewData === undefined || incomingNewData === null){\n return state;\n }\n\n let previousMLAttributeData = state.mlModelAttributeInfo;\n if (Object.keys(previousMLAttributeData).length === 0){\n return {\n ...state,\n mlModelErrorAttributeFetch: state.mlModelErrorAttributeFetch + 1,\n mlModelAttributeInfo: incomingNewData,\n };\n }\n\n let newMLAttributeData = {...previousMLAttributeData};\n\n for (const modelKey of Object.keys(incomingNewData)) {\n let previousModelData = previousMLAttributeData[modelKey];\n let modelLevelData = incomingNewData[modelKey];\n\n if (previousModelData === undefined) {\n newMLAttributeData[modelKey] = modelLevelData;\n }\n else{\n const updatedModelData = {...previousModelData};\n newMLAttributeData[modelKey] = updatedModelData\n\n for (const metricKey of Object.keys(modelLevelData)) {\n let metricData = updatedModelData[metricKey];\n const incomingMetricData = modelLevelData[metricKey];\n if (metricData === undefined) {\n updatedModelData[metricKey] = incomingMetricData;\n continue;\n }\n\n updatedModelData[metricKey] = {...metricData, ...incomingMetricData};\n }\n }\n }\n\n return {\n ...state,\n mlModelErrorAttributeFetch: state.mlModelErrorAttributeFetch + 1,\n mlModelAttributeInfo: newMLAttributeData\n }\n case ADD_ML_MODEL_INFO:\n const incomingNewDataDS = action.payload.mlModelDataSetInfo;\n if (incomingNewDataDS === undefined || incomingNewDataDS === null){\n return state;\n }\n\n let previousMLData = state.mlModelDataSetInfo2;\n if (Object.keys(previousMLData).length === 0){\n return {\n ...state,\n mlModelErrorFetch: state.mlModelErrorFetch + 1,\n mlModelDataSetInfo2: action.payload.mlModelDataSetInfo,\n mlModelDataSetInfo: action.payload.mlModelDataSetInfo\n };\n }\n\n let newMLDatasetData = {...previousMLData};\n\n for (const modelKey of Object.keys(incomingNewDataDS)) {\n let previousModelData = previousMLData[modelKey];\n let modelLevelData = incomingNewDataDS[modelKey];\n\n if (previousModelData === undefined) {\n newMLDatasetData[modelKey] = modelLevelData;\n }\n else{\n const updatedModelData = {...previousModelData};\n newMLDatasetData[modelKey] = updatedModelData\n\n for (const metricKey of Object.keys(modelLevelData)) {\n let metricData = updatedModelData[metricKey];\n const incomingMetricData = modelLevelData[metricKey];\n if (metricData === undefined) {\n updatedModelData[metricKey] = incomingMetricData;\n continue;\n }\n\n updatedModelData[metricKey] = {...metricData, ...incomingMetricData};\n }\n }\n }\n\n return {\n ...state,\n mlModelErrorFetch: state.mlModelErrorFetch + 1,\n mlModelDataSetInfo2: newMLDatasetData,\n mlModelDataSetInfo: newMLDatasetData\n }\n case ADD_ML_MODEL_PERFORMANCE:\n let previousPerformanceResults = state.mlModelPerformanceInfo;\n if (previousPerformanceResults === undefined){\n previousPerformanceResults = {};\n }\n\n let payloadMlModelPerformanceInfo = action.payload.mlModelPerformanceInfo;\n if (payloadMlModelPerformanceInfo === undefined || payloadMlModelPerformanceInfo === null){\n payloadMlModelPerformanceInfo = {};\n }\n\n if (Object.keys(previousPerformanceResults).length === 0) {\n return {\n ...state,\n modelPerformanceFetchCompleted: true,\n mlModelPerformanceInfo: payloadMlModelPerformanceInfo\n }\n }\n\n let newPerformanceResult = {};\n for (const key of Object.keys(previousPerformanceResults)) {\n newPerformanceResult[key] = {\n ...previousPerformanceResults[key],\n ...payloadMlModelPerformanceInfo[key]\n }\n }\n return {\n ...state,\n modelPerformanceFetchCompleted: true,\n mlModelPerformanceInfo: newPerformanceResult\n }\n case ADD_ML_MODEL_DETAILS:\n let payloadMLModelDetails = action.payload.mlModelDetails;\n if (payloadMLModelDetails === undefined || payloadMLModelDetails === null){\n payloadMLModelDetails = [];\n }\n\n let newModelDetails = payloadMLModelDetails;\n return {\n ...state,\n mlModelDetails: newModelDetails,\n preFetchModelDetails: true\n }\n case ADD_MONITOR_DQ_LIST_VIEW:\n let previousDQListView = state.monitorDQListView;\n let currentDQListView = action.payload.monitorDQListView;\n\n if (currentDQListView === undefined || currentDQListView === null){\n return state;\n }\n\n let newDQListView = {...previousDQListView};\n if (currentDQListView.isRecency === true) {\n delete currentDQListView.isRecency;\n for (let _key of Object.keys(currentDQListView)) {\n let currValue = currentDQListView[_key];\n if (IS_NONE_CHECK.includes(newDQListView[\"dataset_level_data\"])){\n continue;\n }\n\n if (newDQListView[\"dataset_level_data\"][_key] !== undefined && newDQListView[\"dataset_level_data\"][_key] !== null) {\n for (let _currKey of Object.keys(currValue)) {\n newDQListView[\"dataset_level_data\"][_key][_currKey] = currValue[_currKey];\n }\n } else {\n newDQListView[\"dataset_level_data\"][_key] = currValue;\n }\n }\n } else {\n for (const listKey of Object.keys(currentDQListView)) {\n let previousListData = previousDQListView[listKey];\n let currentListData = currentDQListView[listKey];\n if (listKey === \"ordered_data_set_ids\") {\n if (previousListData !== null && previousListData !== undefined) {\n newDQListView[listKey] = previousListData.concat(currentListData);\n } else {\n newDQListView[listKey] = currentListData\n }\n } else {\n if (previousListData !== null && previousListData !== undefined) {\n newDQListView[listKey] = {...previousListData, ...currentListData}\n } else {\n newDQListView[listKey] = currentListData\n }\n }\n }\n }\n newDQListView[\"apiFetchOver\"] = true;\n return {\n ...state,\n monitorDQListView: newDQListView,\n preFetchMonitorListViewData: true\n }\n\n case ADD_METRICS:\n let metrics = action.payload.metrics;\n if (metrics === undefined || metrics === null){\n metrics = [];\n }\n return {\n ...state,\n metrics: metrics,\n preFetchMetrics: true\n }\n\n case ADD_FOLLOW_ATTRIBUTES:\n let follow_attributes = action.payload.follow_attributes;\n if (follow_attributes === undefined || follow_attributes === null){\n follow_attributes = {};\n }\n\n return {\n ...state,\n follow_attributes: follow_attributes,\n preFetchFollowAttributes: true\n }\n\n case ADD_UNIQUENESS_ATTRIBUTE_INFO:\n let previousUniquenessAttributeData = state.uniquenessAttributeInfo;\n let payloadUniquenessAttributeInfo = action.payload.uniquenessAttributeInfo\n if (payloadUniquenessAttributeInfo === undefined || payloadUniquenessAttributeInfo === null) {\n payloadUniquenessAttributeInfo = {};\n }\n if (Object.keys(previousUniquenessAttributeData).length === 0) {\n return {\n ...state,\n uniquenessAttributeInfo: payloadUniquenessAttributeInfo\n }\n }\n let newUniquenessAttributeData = {};\n let prev_uniqueness_attr_keys = Object.keys(previousUniquenessAttributeData)\n for (const key of prev_uniqueness_attr_keys) {\n newUniquenessAttributeData[key] = {\n ...previousUniquenessAttributeData[key],\n ...payloadUniquenessAttributeInfo[key]\n }\n }\n for (const current_key of Object.keys(payloadUniquenessAttributeInfo)) {\n if (prev_uniqueness_attr_keys.includes(current_key)) {\n continue;\n }\n\n newUniquenessAttributeData[current_key] = {\n ...payloadUniquenessAttributeInfo[current_key]\n }\n }\n return {\n ...state,\n uniquenessAttributeInfo: newUniquenessAttributeData\n }\n case ADD_UNIQUENESS_INFO:\n let previousUniquenessData = state.uniquenessDataSetInfo;\n let payUniquenessDataSetInfo = action.payload.uniquenessDataSetInfo;\n if (payUniquenessDataSetInfo === undefined || payUniquenessDataSetInfo === null) {\n payUniquenessDataSetInfo = {};\n }\n if (Object.keys(previousUniquenessData).length === 0) {\n return {\n ...state,\n uniquenessDataSetInfo: payUniquenessDataSetInfo\n }\n }\n let newUniquenessData = {};\n let prev_uniqueness_keys = Object.keys(previousUniquenessData)\n for (const key of prev_uniqueness_keys) {\n newUniquenessData[key] = {\n ...previousUniquenessData[key],\n ...payUniquenessDataSetInfo[key]\n }\n }\n for (const current_key of Object.keys(payUniquenessDataSetInfo)) {\n if (prev_uniqueness_keys.includes(current_key)) {\n continue;\n }\n\n newUniquenessData[current_key] = {\n ...payUniquenessDataSetInfo[current_key]\n }\n }\n return {\n ...state,\n uniquenessDataSetInfo: newUniquenessData\n }\n case FORM_DATASET_INFO:\n return {\n ...state,\n mappedDatasetInfo: action.payload.data,\n }\n case FORM_LISTVIEW_TABLE_DATA:\n return {\n ...state,\n listViewTableData: action.payload.data,\n }\n default:\n return state;\n }\n}\n","import { combineReducers } from \"redux\";\nimport dataModule from \"./dataModule\";\nimport monitorModule from \"./monitorModule\";\n\nexport default combineReducers({ dataModule, monitorModule });","import { createStore } from \"redux\";\nimport rootReducer from \"./reducers\";\nimport { persistReducer } from 'redux-persist';\nimport localforage from 'localforage';\n\nconst persistConfig = {\n key: 'root',\n storage: localforage,\n}\n\nconst persistedReducer = persistReducer(persistConfig, rootReducer)\n\nexport default createStore(persistedReducer);\n\n","import * as MKPlayerSDK from \"@mediakind/mkplayer\"\nimport React from 'react'\nimport \"./mkplayer-ui.css\"\nimport {decryptForLocalUsage} from \"../utils/common_utils\";\n\nexport function Mediakind(props) {\n\n let key = decryptForLocalUsage(localStorage.getItem('v_ky'))\n let token = decryptForLocalUsage(localStorage.getItem('v_tk'))\n\n let vContainerRef = React.useRef(null);\n let player = null;\n const playerConfig = {\n key: key,\n ui: true,\n playback: {\n muted: true,\n autoplay: false, // browsers do not allow autoplay if audio is not muted, so when enabling autoplay set \"muted: true\"\n preferredTech: [\n {\n player: 'html5',\n streaming: 'hls'\n },\n {\n player: 'native',\n streaming: 'hls'\n }\n ]\n },\n };\n\n const sourceConfig = {\n hls: props.url,\n drm: {\n clearkey: {\n LA_URL: \"HLS_AES\",\n \"headers\": {\n \"Authorization\": \"Bearer=\" + token,\n \"Content-Type\": \"application/json\"\n }\n }\n }\n };\n\n React.useEffect(() => {\n load();\n })\n\n\n const load = async () => {\n if (MKPlayerSDK) {\n if (player) {\n await player?.unload?.();\n player = null;\n }\n\n player = new MKPlayerSDK.MKPlayer(\n vContainerRef.current,\n playerConfig\n );\n player.load(sourceConfig).then(() => {\n if (!playerConfig.playback.autoplay) {\n player.play(); // to start playback when autoplay is disabled\n // you can also start playback from sourceloaded event handler!\n }\n });\n } else {\n console.log(\"::: MKPlayer SDK not initiated yet :::\");\n }\n }\n\n return (\n
    \n
    \n
    \n );\n}\n","import {ui_service_ip, iam_ip} from \"./ip_details\";\nimport _ from 'lodash';\nimport {\n LIMIT_ABOUT_TO_REACH,\n PAID_PLANS,\n PENDING_PAYMENTS,\n PLAN_PAGE_WARNINGS,\n QUALDO_PAYMENT_STATUS,\n QualdoPlanVersions,\n LOCAL_STORE_KEY\n} from \"./constant\";\nimport {formatBytes, getProtocol, removeLocalStorageKeys, convertBytesToGB, checkExpiryPowerBI, decryptForLocalUsage} from \"./common_utils\";\nimport {storeIpData} from \"../redux/actions\";\nimport store from \"../redux/store\";\n\nfunction call_Update_api(ip, end_point,data, token=\"\") {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'authToken':token, 'userId':user_id, 'teamId':team_id}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}\n\nfunction call_post_api(ip, end_point,data, token=\"\") {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'POST',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'authToken':token, \"api-type\": \"qualdo_db_auth\", 'userId':user_id, 'teamId':team_id }\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}\n\nfunction call_iam_get_api(ip, end_point,data, token=\"\") {\n let session = localStorage.getItem('sessionToken');\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (session !== \"\" && session !== null) {\n const item = JSON.parse(session);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n session = item.value;\n }\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'GET',\n headers:{ 'data':JSON.stringify(data), 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':session, \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}\n\nfunction teamMateTable(inputData) {\n let headers = [\"Teammate\", \"Role\", \"Status\",\"Last Login\", \"Actions\"]\n let resultData = [];\n for (let i = 0; i < inputData.length; i++) {\n let row = [];\n let d = inputData[i];\n row.push({ \"userDetails\": d, \"type\": \"image\"});\n row.push({\"value\":d[\"role_name\"], \"type\":\"td\"});\n row.push({\"value\":d[\"current_status\"], \"type\":\"td\"});\n row.push({\"value\":d[\"last_login\"], \"type\":\"td\"});\n row.push({\"value\": \"\", \"type\": \"component\", \"userDetails\":d});\n resultData.push(row);\n }\n let tableData = {\"headers\": headers, \"data\": resultData};\n return tableData;\n}\n\nfunction invitationTable(inputData) {\n let headers = [\"Invited Email\", \"Status\"];\n let resultData = [];\n let tableData = null;\n let firstDatum = inputData[0];\n if (firstDatum === undefined || firstDatum === null) {\n return {\"headers\": headers, \"data\": resultData};\n }\n\n for (let i = 0; i < firstDatum.email_id.length; i++) {\n let row = [];\n let d = firstDatum[\"email_id\"][i];\n row.push({\"value\": d, \"type\": \"td\"});\n row.push({\"value\": \"Invitation Sent\", \"type\": \"td\"});\n resultData.push(row);\n }\n\n tableData = {\"headers\": headers, \"data\": resultData};\n return tableData;\n\n}\n\nfunction requestTable(inputData){\n let headers = [\"User Name\",\"Action\"];\n let resultData = [];\n for (let i = 0; i < inputData.length; i++) {\n let row = [];\n let d = inputData[i];\n row.push({ \"value\": d[\"requested_user_email\"], \"type\": \"td\" });\n row.push({ \"userDetails\": d, \"type\": \"buttons\"});\n resultData.push(row);\n }\n let tableData = {\"headers\": headers, \"data\": resultData};\n return tableData;\n}\nfunction call_update_api(ip, end_point,data, token=\"\") {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (token !== \"\" && token !== null) {\n const item = JSON.parse(token);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n window.location = '/';\n }\n }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':token,\n \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.error(end_point, \"- failed\"));\n}\n\nexport function handleEditTeamMate(userDetails,state_details, handleClose, getApi){\n handleClose();\n let org_id = localStorage.getItem(\"org_id\");\n let role_id = null;\n let role_name = null;\n if (state_details.role[\"value\"] !== \"\") {\n role_id = state_details.role[\"value\"];\n role_name = state_details.role[\"label\"];\n }\n let inputData= {\"teammate_user_id\": userDetails[\"user_id\"],\n \"org_id\": org_id,\n \"organisation\": state_details.organisation,\n \"department\": state_details.department,\n \"role_id\": role_id,\n \"role_name\": role_name,\n \"team_id\": localStorage.getItem('team_id'),\n \"user_id\": localStorage.getItem('user_id')\n };\n\n let msg = \"could not update user status\";\n if (state_details.disableUser === true) {\n inputData[\"user_current_status\"] = \"disabled\";\n msg = \"User status changed to disabled successfully\";\n } else if(state_details.disableUser === false) {\n inputData[\"user_current_status\"] = \"active\";\n msg = \"User status changed to active successfully\"\n }\n let session = localStorage.getItem(\"sessionToken\");\n call_update_api(iam_ip, \"team/user\", inputData, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.props.showToast(\"alert-success\", response.message,\"\");\n getApi(\"teamMate\");\n } else {\n this.props.showToast(\"alert-danger\",msg,'');\n getApi(\"teamMate\");\n }\n });\n}\n\nexport function findQuantileForProgress(currentUsage, maxAllowedUsage) {\n let progressPercentage = 0;\n if (parseInt(currentUsage) === 0) {\n return progressPercentage\n } else {\n let usedPercentage = (currentUsage / maxAllowedUsage) * 100;\n if (usedPercentage >= 100) {\n progressPercentage = 100;\n } else if (usedPercentage >= 0 && usedPercentage <= 1) {\n progressPercentage = 0;\n } else if (usedPercentage >= 1 && usedPercentage <= 25) {\n progressPercentage = 25;\n } else if (usedPercentage >= 25 && usedPercentage < 50) {\n progressPercentage = 25;\n } else if (usedPercentage >= 50 && usedPercentage <= 75) {\n progressPercentage = 50;\n } else if (usedPercentage >= 75 && usedPercentage <= 100) {\n progressPercentage = 75;\n }\n return progressPercentage;\n }\n}\n\nexport function handleRequest(props, name, closeModal, status){\n switch (name) {\n case \"requests\":\n this.setState({disableApprove: true});\n let userDetails = _.cloneDeep(this.props.userDetails);\n userDetails.request_status = status;\n userDetails.team_id = localStorage.getItem(\"team_id\");\n call_Update_api(iam_ip, \"/notification/requests/\"+localStorage.getItem(\"user_id\"), userDetails, localStorage.getItem(\"sessionToken\")).then((response) =>{\n this.setState({disableApprove: false});\n closeModal()\n if(response.code === 200) {\n status === \"approved\" ? this.props.showToast(\"alert-success\",\"Approved successfully\",''): this.props.showToast(\"alert-success\",\"Rejected successfully\",'');\n } else {\n this.props.showToast(\"alert-danger\",\"could not update\",'');\n }\n });\n break;\n default:\n break;\n }\n}\n\nexport function increaseDataLimit() {\n const tenant_id = localStorage.getItem(\"team_id\");\n const inputData = {\"tenant_id\": tenant_id};\n let session = localStorage.getItem(\"sessionToken\");\n\n call_update_api(ui_service_ip, \"plan/status\", inputData, session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let planDetails = this.state.planDetails;\n planDetails.requiresDataLimitUpgrade = false;\n planDetails.showInformationBanner = false;\n planDetails.maxDataLimit = response.new_data_limit;\n this.closeWarningMessage();\n this.setState({planDetails: planDetails});\n } else {\n console.error(\"Unable to update data limit\")\n }\n });\n}\n\nexport function getApi(api_name) {\n let data = {tenant_id:localStorage.getItem('team_id')}\n switch(api_name) {\n case \"edition_details\":\n call_iam_get_api(ui_service_ip, \"plan/edition\",data).then( (response) =>{\n if(response.code === 200) {\n if (Object.keys(response['edition_details']).length > 0)\n {\n this.setState({edition_details:response['edition_details'],\n next_billing_date:response[\"next_billing_date\"]});\n }\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"planChangeRequest\":\n call_iam_get_api(ui_service_ip, \"plan_change_requests\", data).then( (response) =>{\n if(response.code === 200) {\n if (Object.keys(response['change_request']).length > 0)\n {\n this.setState({change_request:response['change_request']});\n }\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"teamMate\":\n call_iam_get_api(iam_ip, \"notification/requests\",{\"user_id\":localStorage.getItem(\"user_id\")}).then( (response) =>{\n if(response.code === 200) {\n if (\"requests_result\" in response && response['requests_result'] !==null)\n {\n let table = requestTable(response[\"requests_result\"]);\n this.setState({requestData: table});\n }\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n let teamUserdata = {\"team_id\":localStorage.getItem(\"team_id\"),\"user_id\":localStorage.getItem(\"user_id\")}\n call_iam_get_api(iam_ip, \"tenant/users\", teamUserdata).then( (response) =>{\n if(response.code === 200) {\n if (\"users\" in response && response['users'] !== null)\n {\n let table = teamMateTable(response[\"users\"]);\n this.setState({teamMateData: table});\n }\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n call_iam_get_api(iam_ip, \"groups/roles\",{\"team_id\":localStorage.getItem(\"team_id\")}).then( (response) =>{\n if(response.code === 200) {\n this.setState({ugmDetails: response});\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n let invitationData = {\"user_id\":localStorage.getItem(\"user_id\"),\"team_id\":localStorage.getItem(\"team_id\")}\n call_iam_get_api(iam_ip, \"invitations\", invitationData).then( (response) =>{\n if(response.code === 200) {\n if (\"invitations_result\" in response && response['invitations_result'] !== null)\n {\n let table = invitationTable(response[\"invitations_result\"]);\n this.setState({inviteData: table});\n }\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"user_details\":\n call_iam_get_api(iam_ip, \"user\",{\"user_id\":localStorage.getItem(\"user_id\")}).then( (response) =>{\n if(response.code === 200) {\n if (\"user_details\" in response && response['user_details'] !==null)\n {\n let user_details=response['user_details'];\n this.setState({first_name: user_details[\"first_name\"],\n last_name:user_details[\"last_name\"],\n org_name: user_details[\"org_name\"],\n email: user_details[\"email\"],\n phoneNo: user_details[\"phone_number\"],\n user_profile_image: user_details[\"user_profile_image\"]})\n }\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"usage\":\n call_iam_get_api(ui_service_ip, \"usage\",data).then( (response) =>{\n if(response.code === 200) {\n let dataUsage = -1;\n let dataLimit = 0;\n \n let mydate = new Date(response['data_usage']['cycle_start']);\n mydate.setDate(mydate.getDate() - 1);\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"June\",\n \"July\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n ];\n let cycle_end_date = String(mydate.getDate() )+\" \"+ monthNames[mydate.getMonth()] +\" \"+ String( mydate.getFullYear())\n this.setState({cycle_end_data:cycle_end_date})\n\n if (\"data_usage\" in response && response['data_usage'] !== null) {\n let dataUsageDetails = response[\"data_usage\"];\n // Converting the bytes to the GB\n const dataUsageSize = dataUsageDetails[\"size\"];\n let dataSize= (dataUsageSize !== undefined ? formatBytes(dataUsageSize) : '0 GB' );\n let planDetails = this.state.planDetails;\n dataUsage = (dataUsageSize !== undefined ? convertBytesToGB(dataUsageSize) : 0 );\n planDetails.size = dataSize;\n planDetails.progressbar = dataUsage;\n planDetails.mlModelCount = response[\"ml_model_count\"];\n planDetails.cycleEnd = dataUsageDetails[\"cycle_end\"];\n planDetails.cycleEndDate = cycle_end_date;\n planDetails.paymentStatus = response[\"plan_details\"][\"payment_status\"]\n this.setState({planDetails:planDetails});\n }\n\n if (\"plan_details\" in response && response['plan_details'] !== null) {\n const planInformation = response[\"plan_details\"];\n let planDetails = planInformation[\"payload\"];\n let planNameKey = planInformation[\"plan_name\"];\n let metaDetails = planInformation[\"details\"];\n let addDataCost = metaDetails.additional_data_cost;\n let addModelCost = metaDetails.additional_model_cost;\n const currencySymbol = metaDetails.currency;\n const paymentStatus = planInformation[\"payment_status\"];\n dataLimit = planInformation[\"allowed_datasize\"];\n let planInfo = this.state.planDetails;\n planInfo.addModelCost = addModelCost;\n planInfo.addDataCost = addDataCost;\n planInfo.planName = planDetails[\"name\"]\n planInfo.planBenefits = planDetails[\"plan_benefits\"];\n planInfo.cost = `${currencySymbol}${planInformation.price.toFixed(1)}/Month`;\n planInfo.monthlyLimit = planDetails[\"monthly_limit\"]\n planInfo.maxDataLimit = dataLimit;\n planInfo.maxMlModelLimit = planDetails[\"max_ml_model_limit\"];\n planInfo.comments = planDetails[\"comments\"];\n planInfo.dataLimit = dataLimit;\n planInfo.planNameKey = planNameKey;\n let usageExceeded = dataUsage >= dataLimit;\n\n if (!usageExceeded) {\n // User has received a warning message that their limit is about to reach.\n // So we will show Increase Data limit button to these users\n\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n const warning_message = decrypt_data['warning_message']\n // const warning_message = localStorage.getItem(\"warning_message\");\n\n usageExceeded = (warning_message !== undefined &&\n warning_message !== null &&\n warning_message.includes(LIMIT_ABOUT_TO_REACH));\n }\n\n if (planNameKey === QualdoPlanVersions.FREE && usageExceeded) {\n planInfo.showInformationBanner = true;\n planInfo.comments = PLAN_PAGE_WARNINGS[\"free_trial_exceeded\"];\n }\n // paid plans and completed payment, exceeded data limit warning messages\n const validPaymentStatus = (paymentStatus === QUALDO_PAYMENT_STATUS.PAYMENT_COMPLETED);\n if (PAID_PLANS.includes(planNameKey) && validPaymentStatus && usageExceeded) {\n planInfo.requiresDataLimitUpgrade = usageExceeded;\n planInfo.showInformationBanner = true;\n planInfo.comments = PLAN_PAGE_WARNINGS['data_limit_exceeded_paid_plans'];\n }\n\n // Get Appropriate message for failure to show page\n // and display those messages in the banner section\n // free trial expired or pending payment is there\n if (PENDING_PAYMENTS.includes(paymentStatus)) {\n planInfo.showInformationBanner = true;\n let messages = PLAN_PAGE_WARNINGS[paymentStatus];\n if (messages !== undefined) {\n planInfo.comments = messages;\n }\n }\n\n this.setState({planDetails: planInfo});\n }\n\n } else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"get_email_subscription\":\n call_iam_get_api(ui_service_ip, \"subscription_info\", data).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let subscriptionInfo = response['subscription_info'];\n this.checkAndUpdateTopButton(subscriptionInfo);\n \n this.setState({\n emailsubscription: subscriptionInfo,\n emailsubscriptioninitalloader: false\n });\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\")\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n\n case \"get_whitelisted_ip\":\n call_iam_get_api(ui_service_ip, \"managed_service/whitelisted_ip\", data).then( (response) =>{\n let data = response['whitelisted_ip']\n if (response.code === 200){\n if (store !== undefined){\n store.dispatch(storeIpData(response));\n } else {\n storeIpData(response);\n }\n this.setState({ whitelisted_ip: data['ip_list'],\n old_whitelisted_ip: data['ip_list'],\n updated :response['updated_status'],\n client_id:data['client_id'],\n client_secret:data['client_secret'],\n cloud:response['cloud']\n\n });\n\n }\n\n setTimeout(() => {\n this.setState({loader:false})\n }, 200);\n\n let updated_status = response['updated_status'];\n if (updated_status === undefined) {\n updated_status = {};\n }\n\n /**Handle updation failure case */\n if(updated_status['status'] === false){\n this.setState({ old_whitelisted_ip:updated_status['old_ip'],\n updated:false,\n disableSave:false,\n disableCancel:false,\n editButton:false,\n updateloader:false,\n placeholder:null,\n close_tag:'tag-close-icon',\n })\n }\n else if(response.cloud === 'GCP' && updated_status['status'] === true){\n this.setState({\n updated:true,\n editButton:true,\n updateloader:null,\n disableSave:false,\n disableCancel:false,\n close_tag:'tag-close-icon d-none',\n })\n }\n else if(updated_status['status'] === 'initiated'){\n this.setState({\n updated:null,\n updateloader:true,\n editButton:false,\n disableSave:true,\n disableCancel:true,\n close_tag:'tag-close-icon d-none',\n })\n }\n });\n break;\n\n case \"save_email_subscription\":\n const preferences_data= this.state.emailsubscription;\n let session = localStorage.getItem(\"sessionToken\");\n let team_id = localStorage.getItem(\"team_id\");\n preferences_data[\"tenant_id\"] = team_id;\n call_Update_api(ui_service_ip, \"subscription_info\", preferences_data, session).then(\n (response) => {\n if(response.code === 200) {\n this.showToast(\"alert-success\", \"Email Subscriptions Sucessfully Updated\", \"\");\n }else{\n this.showToast(\"alert-danger\", \"Could Not Update Email Subscriptions\", \"\");\n }\n }\n );\n break;\n case \"get_email_subscriptionviaemail\":\n let eData = {\"u\":this.state.uid,\"k\":this.state.eid}; \n call_iam_get_api(ui_service_ip, \"email_subscription_info\", eData).then( (response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n this.setState({emailsubscription:response['subscription_info'],\n emailsubscriptioninitalloader:false,\n emailsubscriptionid:response['eid'],\n });\n } else {\n this.setState({errorOccurred: true});\n }\n });\n break;\n case \"save_email_subscriptionviaemail\":\n let preferences_data_email= this.state.emailsubscription;\n let sessionemail = localStorage.getItem(\"sessionToken\");\n preferences_data_email[\"u\"] = this.state.uid;\n preferences_data_email[\"k\"] = this.state.eid;\n call_Update_api(ui_service_ip, \"email_subscription_info\", preferences_data_email, sessionemail).then(\n (response) => {\n if(response.code === 200) {\n this.setState({errorOccurred: false});\n }else{\n this.setState({errorOccurred: true}); }\n }\n );\n break; \n default:\n break;\n }\n}\n\n\nexport function handleIAMSubmit(event){\n event.preventDefault();\n let session = localStorage.getItem(\"sessionToken\");\n let user_id = localStorage.getItem(\"user_id\");\n const { name } = event.target;\n switch(name) {\n case \"preferences\":\n const preferences_data={user_id:localStorage.getItem('user_id'),\n daily_digest:this.state.daily_digest,weekly_digest:this.state.weekly_digest,\n monitor_report_weekly:this.state.monitor_report,pager_duty_report_weekly:this.state.pager_duty_report,\n nagios_report_weekly:this.state.nagios_report,reply_to_post_you_follow:this.state.reply_post_notify,\n mention_email_notification_from_event_stream:this.state.mention_email_notify,\n notification_from_monitor_alerts:this.state.monitor_alert_notify,reply_to_your_comments:this.state.reply_comments_notify};\n call_post_api(iam_ip, \"mysettings/preferences\", preferences_data, session).then(\n (response) => {\n if(response.code === 200) {\n this.showToast(\"alert-success\", \"preferences added successfully\", \"\");\n }else{\n this.showToast(\"alert-danger\", \"could not add preferences\", \"\");\n }\n }\n );\n break;\n case \"changePassword\":\n const passwordData = new FormData(event.target);\n const passwordDataValue = {\"user_id\":localStorage.getItem('user_id'),\n \"current_password\":passwordData.get(\"currentPassword\"),\n \"reset_password\":passwordData.get(\"password\")}\n call_post_api(iam_ip, \"profile/reset-password\", passwordDataValue, session).then(\n (response) => {\n if(response.code === 200) {\n this.showToast(\"alert-success\", \"password changed successfully\", \"\");\n }else{\n this.showToast(\"alert-danger\", \"could not change password\", \"\");\n }\n }\n );\n break;\n case \"update_user_details\":\n this.setState({disableButton: true});\n const profile_data = {\n first_name: this.state.first_name,\n last_name: this.state.last_name,\n org_name: this.state.org_name,\n org_id:localStorage.getItem('org_id'),\n user_profile_image: this.state.user_profile_image\n };\n const userDetailUpdateURL = \"user\";\n profile_data[\"team_id\"] = localStorage.getItem(\"team_id\");\n profile_data[\"user_id\"] = user_id;\n profile_data[\"detail_type\"] = \"account\";\n call_Update_api(iam_ip, userDetailUpdateURL, profile_data, session).then((response) =>{\n if(response.code === 200) {\n localStorage.setItem(\"user_name\",response.data[\"username\"]);\n this.showToast(\"alert-success\",\"User details updated successfully\",'');\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.showToast(\"alert-danger\",\"could not update user details\",'');\n }\n });\n break;\n\n default:\n break;\n }\n }\n\nexport function sendInvite() {\n if(this.state.emails.length === 0) {\n this.setState({errorMsg:\"Please Enter email\"})\n }else if(this.state.description === '') {\n this.setState({descriptionErrorMsg: \"Please Enter email content\"})\n }else{\n this.disableButton();\n let data = {\n user_id: localStorage.getItem('user_id'),\n description: this.state.description,\n email_id: this.state.emails,\n team_id: localStorage.getItem('team_id')}\n let session = localStorage.getItem(\"sessionToken\");\n call_post_api(iam_ip, \"send_invitation\", data, session).then(\n (response) => {\n if(response.code === 200) {\n this.handleClose();\n this.showToast(\"alert-success\", \"Invitations sent successfully\", \"\");\n }else{\n this.handleClose();\n this.showToast(\"alert-danger\", \"Could not send Invitations\", \"\");\n }\n this.setState({emails: [],hideSubmitButton: false});\n }\n );\n }\n\n}\n\n\nexport function updateWhitelistedIp(data){\n let end_point = \"managed_service/whitelisted_ip\"\n let session = localStorage.getItem(\"sessionToken\");\n call_Update_api(ui_service_ip,end_point, data, session).then((response) =>{\n if(response !== null && response !== undefined){\n\n /**\n * While making cancle after update failure\n * Need to update the DB with old ip\n * So Will make update API call\n */\n\n if(data['internal_update'] === true){\n this.setState({updated:null, updateloader: false})\n }\n else{\n if(response['cloud'] === 'GCP' && response.code === 200){\n this.setState({updated:null, updateloader: true, disableSave:true,disableCancel:true})\n }\n else if(response.code === 200) {\n this.setState({ editButton:true,\n whitelisted_ip:response['whitelisted_ip'],\n old_whiteleted_ip:response['whitelisted_ip'],\n disableSave:false,\n disableCancel:false,\n invalid:false,\n updated:true,\n updateloader:false,\n })\n }\n else if(response.code !== 200) {\n this.setState({disableSave:false, updated:false})\n }\n }\n }\n });\n}","import React from 'react';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport ChartBody from '../../components/chartBody';\nimport domtoimage from 'dom-to-image';\n\n\nimport {\n compareDqCharts,\n compareMlCharts,\n setDistanceFilter,\n setTimeFilter\n} from \"../../utils/event_handling\";\n\nimport {\n chartFilterTable, convertChartTypeToError,\n extractMetricNameFromChartName,\n getChartTitleBasedOnData,\n getNormalizedName,\n getPerformanceChartData,\n updateChartDataErrorType,\n filterBoxPlotData,\n getChartFilterData,\n setModelPerformanceTimeFilter,\n} from \"../../utils/common_utils\";\n\nimport Image from '../../components/image';\nimport {faChartArea, faDownload, faExclamationCircle} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n//import html2canvas from \"html2canvas\";\nimport BasicPortlet from '../../components/basicPortlet';\nimport BootstrapTable from '../../components/bootstrapTable';\nimport {\n CHART_TITLE_METRIC_SEPARATOR,\n CHART_TITLE_SEPARATOR,\n chartTypes,\n DATA_TYPE_CONSISTENCY, ML_DATA_CONSISTENCY,\n REFERENCE_TYPE_COLUMN_NAME, ROW_ERROR_CLASS,\n showMoreVariants,\n BOX_PLOT_METRICS, SINGLE_ARROW_CHART_TYPE, IS_NONE_CHECK,\n SEE_FULL_VIEW_ICONS\n} from \"../../utils/constant\";\nimport Load from \"../../components/loadAction\";\nimport MonitorStatsComponent from \"./monitorStatsComponent\";\nimport SingleArrowChart from \"../../components/charts/singleArrowChart\";\n\nconst chartNameMapping = {\n \"barChart\": \"Bar\",\n \"barWithError\": \"Bar\",\n \"areaChart\": \"Area\",\n \"areaWithError\": \"Area\",\n \"baseLine\": \"BaseLine\",\n \"bumpChart\": \"Bump\",\n \"boxPlotZoomable\": \"BoxPlot\",\n \"groupedVerticalBarChart\": \"Bar\",\n \"multiLineChart\": \"Line\"\n}\n\nconst chartSvg = {\n \"barChart\": \n \n \n \n ,\n \"barWithError\": \n \n \n \n ,\n \"boxPlotZoomable\": \n \n \n \n \n \n \n ,\n \"defaultIcon\": \n \n \n \n \n \n ,\n \"areaChart\": \n \n \n \n \n ,\n \"areaWithError\": \n \n \n \n \n,\n \"baseLine\": \n \n \n \n \n \n \n ,\n \"bumpChart\": \n \n \n \n \n \n \n \n \n \n \n \n ,\n \"groupedVerticalBarChart\": \n \n \n \n ,\n \"multiLineChart\": \n \n \n}\n\nlet start = moment().subtract(29, 'days');\nlet end = moment();\n\n\nconst chartToggle = React.forwardRef(\n ({ children, onClick, chartType,panelchartid}, ref) => {\n let svgIcon = chartSvg[chartType];\n let chartName = chartNameMapping[chartType];\n return (\n
    {\n if(document.getElementById('body_'+panelchartid)!==null){\n if(chartType===\"BoxPlot\" || chartType===\"boxPlotZoomable\"){\n document.getElementById('body_'+panelchartid).classList.add(\"boxplot\");\n }else {\n document.getElementById('body_'+panelchartid).classList.remove(\"boxplot\");\n }} e.preventDefault(); onClick(e);}} className=\"qd-cw-btn\">\n {svgIcon}\n
    {chartName}
    \n {children}\n
    \n );\n },\n);\n\nconst distanceToggle = React.forwardRef(({ children, onClick }, ref) => (\n
    { e.preventDefault(); onClick(e);}} className=\"qd-cw-btn\">\n \n \n \n \n \n \n
    Distance
    \n {children}\n
    \n));\n\nconst settingsToggle = React.forwardRef(({ children, onClick }, ref) => (\n
    { e.preventDefault(); onClick(e);}} className=\"qd-cw-btn\">\n \n \n \n \n \n \n \n {children}\n
    \n));\n\nconst AggregateTogle = React.forwardRef(({ children, onClick }, ref) => (\n
    { e.preventDefault(); onClick(e);}} className=\"qd-cw-btn\">\n \n \n \n \n \n \n \n \n \n \n \n
    Aggregate
    \n {children}\n
    \n));\n\n\nconst metricsTogle = React.forwardRef(({ children, onClick }, ref) => (\n
    { e.preventDefault(); onClick(e);}} className=\"qd-cw-btn\">\n \n \n \n \n \n \n \n \n \n \n \n
    Metrics
    \n {children}\n
    \n));\n\n\nlet ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n};\n\nclass ChartFilterHeader extends React.Component {\n constructor(props) {\n super(props);\n this.handleEvent = this.handleEvent.bind(this);\n this.setCompare = this.setCompare.bind(this);\n this.setSelectedFilterChartData = this.setSelectedFilterChartData.bind(this);\n this.getChartDataFromResult = this.getChartDataFromResult.bind(this);\n this.setTimeFilter = setTimeFilter.bind(this);\n this.setDistanceFilter = setDistanceFilter.bind(this);\n this.setChartFilter = this.setChartFilter.bind(this);\n this.setShowSaveImage = this.setShowSaveImage.bind(this);\n this.saveChartScreenShot = this.saveChartScreenShot.bind(this);\n this.settingFilter = this.settingFilter.bind(this);\n this.setModelPerformanceConfusionTimeFilterChartData = this.setModelPerformanceConfusionTimeFilterChartData.bind(this);\n this.setModelPerformanceTimeFilter = setModelPerformanceTimeFilter.bind(this);\n this.setModelPerformanceTimeFilterChartData = this.setModelPerformanceTimeFilterChartData.bind(this);\n this.showCompare = this.showCompare.bind(this);\n this.closeCompare = this.closeCompare.bind(this);\n this.compareDqCharts = compareDqCharts.bind(this);\n this.compareMlCharts = compareMlCharts.bind(this);\n this.setCompareChart = this.setCompareChart.bind(this);\n this.setAttrCompare = this.setAttrCompare.bind(this);\n this.setAggregate = this.setAggregate.bind(this);\n this.setMlCompare = this.setMlCompare.bind(this);\n this.setMlAttributeCompare = this.setMlAttributeCompare.bind(this);\n this.getPerformanceChartData = getPerformanceChartData.bind(this);\n this.changeSource = this.changeSource.bind(this);\n this.expandChart = this.expandChart.bind(this);\n this.headerRef = React.createRef();\n let chartName;\n\n // If the props has filtered data, we can display the filtered data initially\n let data;\n const filteredData = this.props.filteredData;\n if (filteredData === undefined || filteredData === null) {\n if (this.props.chartType === \"groupedHorizontalBarChart\" || this.props.chartType === \"horizontalCompareChart\") {\n data = this.props.data;\n } else if(this.props.timeFilterApplied === true) {\n data = filteredData;\n } else {\n data = this.props.data;\n }\n } else {\n // We have received 'time filtered data', so it is used\n data = filteredData;\n }\n\n if (data !== undefined && data !== null && data.name !== undefined ) {\n chartName =data.name.replace(\" \",\"_\");\n }\n// let compareType = \"Dataset\";\n// const attribute_name = this.props.data.attribute_name;\n\n let title;\n if (this.props.usePropsTitle === undefined || this.props.usePropsTitle === null) {\n title = getChartTitleBasedOnData(data, this.props.selectedIntegration);\n chartName = title;\n// if (this.props.data.model_name !== undefined && attribute_name !== undefined) {\n// compareType = \"modelAttribute\";\n// } else if (this.props.data.model_name !== undefined && attribute_name === undefined) {\n// compareType = \"modelDataSet\";\n// } else if (attribute_name !== undefined && attribute_name !== null) {\n// compareType = \"Attribute\";\n// }\n }\n else {\n title = this.props.title;\n }\n\n let customChartKey = \"\";\n if (data !== undefined && data !== null) {\n customChartKey = data.key;\n }\n\n let currentData = data;\n let settings = null;\n if (currentData !== undefined && currentData !== null){\n settings = currentData.settings;\n }\n\n let multipleLines = this.props.multipleLines === undefined ? null : this.props.multipleLines;\n let errorChart = false;\n if (data !== null && data !== undefined) {\n errorChart = data.errorChart;\n }\n\n let chartType = this.props.chartType;\n chartType = convertChartTypeToError(chartType, errorChart)\n\n if (data !== null && data !== undefined && this.props.page === \"attribute\") {\n let boxplot_data = data[\"boxplot_data\"]\n if (BOX_PLOT_METRICS.includes(data.name) && (!boxplot_data.includes(\"NA\"))) {\n chartType = \"boxPlotZoomable\";\n data[\"toolTiptopHeader\"] = data[\"attribute_name\"];\n data[\"boxPlotData\"] = filterBoxPlotData(data[\"boxPlotData\"])\n }\n }\n let startDate = null;\n let endDate = null;\n if (this.props.startDate !== undefined && this.props.startDate !== null &&\n this.props.endDate !== undefined && this.props.endDate !== null) {\n startDate = this.props.startDate;\n endDate = this.props.endDate;\n }\n\n this.state = {\n startDate: startDate,\n endDate: endDate,\n distance: null,\n compareDataSet:null,\n compareChart: multipleLines,\n showCompare: false,\n settings: settings,\n backdrop: '',\n expand: this.props.page === \"attribute\" ? this.props.expand :false,\n data: data,\n dataSetId: this.props.dataSetId,\n mlModelId: this.props.mlModelId,\n compareModelOptions: this.props.compareModelOptions,\n compareMLAttributeOptions: this.props.compareMLAttributeOptions,\n compareAttributeOptions:this.props.compareAttributeOptions,\n aggregateOptions: this.props.aggregateOptions,\n chartName: chartName,\n chartTitle: title,\n errorChart: errorChart,\n compareType: this.props.compareType,\n chartType: chartType,\n variant: this.props.variant,\n chartID: getNormalizedName(`modal_${this.props.variant}_${title}_${customChartKey}`),\n showSaveImage: false,\n showSettingsMenu: this.props.showSettingsMenu,\n loadValue: false,\n height1: 0,\n height2: 0,\n showHeatMap: this.props.showHeatMap,\n }\n }\n\n setShowSaveImage() {\n let saveImage = this.state.showSaveImage ? false : true;\n let backdrop = this.state.showSaveImage ? \"\": \"show\";\n this.setState({showSaveImage: saveImage, backdrop:backdrop});\n }\n\n expandChart() {\n let expand = this.state.expand ? false : true;\n this.setState({expand: expand});\n }\n\n getChartDataFromResult(res, variant, chartID) {\n let chartData = null;\n if (res === undefined || res === null){\n return chartData;\n }\n\n let chartValues = this.getPerformanceChartData(res[\"results\"], this.props.mapModel, false, null, null);\n chartValues.forEach(function (chart) {\n let title = chart[\"chartTitle\"];\n let customChartKey = chart.key;\n if (customChartKey === undefined) {\n customChartKey = \"\";\n }\n\n let currentID = getNormalizedName(`modal_${variant}_${title}_${customChartKey}`);\n\n if (chartID === currentID) {\n chartData = chart;\n updateChartDataErrorType(chartData);\n }\n });\n\n return chartData;\n }\n\n setModelPerformanceTimeFilterChartData(res, variant, chartID) {\n let data = this.getChartDataFromResult(res, variant, chartID);\n this.setState({data: data, loadValue: false});\n }\n\n setModelPerformanceConfusionTimeFilterChartData(res) {\n this.setState({data: res, loadValue: false});\n }\n\n handleEvent(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n this.setState({loadValue: true});\n let currentData = this.props.data;\n\n const chartType = this.state.chartType;\n let isPatternNotNeeded = this.props.isAttribute === undefined ? false : true\n\n if (this.props.customTimeFilterFunction !== undefined) {\n const filteredData = this.props.customTimeFilterFunction(currentData, startDate, endDate, chartType, isPatternNotNeeded);\n this.setState({data: filteredData, loadValue: false});\n return;\n }\n\n if(currentData === null && this.props.errorNotAvailable){\n this.setState({loadValue: false})\n return\n }\n const isModelPerf = this.props.variant === \"mlModelPerformance\";\n// let startTime = startDate.format('YYYY-MM-DD 00:00:00');\n// let endTime = endDate.format('YYYY-MM-DD 23:59:59')\n// let exStartDate = moment().subtract(180, 'days');\n// let valuesAvailable = startDate.isSameOrAfter(exStartDate) && endDate.isSameOrAfter(exStartDate);\n// if (isModelPerf) {\n// valuesAvailable = true;\n// }\n// if (valuesAvailable === true) {\n// const chartType = this.state.chartType;\n// const filteredData = getChartFilterData(currentData, startDate, endDate, chartType);\n// this.setState({data: filteredData, loadValue: false});\n// } else {\n// // this.setTimeFilter(this.state.dataSetId, this.props.variant,\n// // this.props.title, this.state.chartTitle, startTime, endTime);\n// this.setState({data: null, loadValue: false});\n// }\n\n\n let isNonTimeSeries = (currentData.time === undefined || currentData.isNonTimeSeries);\n\n if (isNonTimeSeries && isModelPerf) {\n // For filtering 'non time series' - model performance charts like Confusion matrix, ROC Curve\n this.setModelPerformanceTimeFilter(currentData, startDate, endDate);\n return;\n }\n\n const filteredData = getChartFilterData(currentData, startDate, endDate, chartType, isPatternNotNeeded);\n\n let chartID = this.state.chartID;\n if (filteredData !== undefined && filteredData !== null) {\n let customChartKey = filteredData.key;\n let title = this.props.title;\n chartID = getNormalizedName(`modal_${this.props.variant}_${title}_${customChartKey}`)\n }\n\n this.setState({data: filteredData, loadValue: false, chartID:chartID});\n }\n\n saveChartScreenShot() {\n let chartTitle = this.state.chartTitle;\n let downloadFileName = chartTitle.split('-').join('');\n downloadFileName = getNormalizedName(downloadFileName);\n downloadFileName = downloadFileName + \"_\" + new Date().getTime();\n let ChartId = this.state.chartID + this.props.chartLevel;\n\n if(this.state.settings === 'contribution'){\n ChartId = \"body_\"+this.state.chartID;\n }\n let divId= getNormalizedName(ChartId);\n domtoimage.toJpeg(document.getElementById(divId), {bgcolor: 'white'}).then(function (dataUrl) {\n var link = document.createElement('a');\n link.download = downloadFileName + '.jpg';\n link.href = dataUrl;\n link.click();\n });\n// html2canvas(document.getElementById(divId)).then(\n// function (canvas) {\n// let a = document.createElement('a');\n// a.href = canvas.toDataURL(\"image/jpeg\").replace(\"image/jpeg\", \"image/octet-stream\");\n// a.download = downloadFileName + '.jpg';\n// a.click();\n// }\n// );\n }\n\n setCompareChart(res, key, modelTitle, ExChartName, dataSetId, filters){\n this.closeCompare();\n let metrics = res[\"metrics\"];\n let chartData = null;\n modelTitle = modelTitle.replace('_',' ');\n for(let row of metrics) {\n if (row.name === modelTitle && row.data !=null) {\n for(let chart of row.data) {\n let chartName = getChartTitleBasedOnData(chart);\n let isAttribute = (chart.attribute_name !== undefined &&\n chart.attribute_name !== null);\n let metricName = extractMetricNameFromChartName(chartName, isAttribute);\n let exMetricName = extractMetricNameFromChartName(ExChartName, isAttribute);\n\n if (metricName === exMetricName) {\n chartData = chart;\n break;\n }\n }\n break;\n }\n }\n let compareChart = null;\n let exData = {...this.state.data};\n if(chartData !== null) {\n if (\"dq_chart_points\" in chartData) {\n exData.dq_chart_points1 = chartData.dq_chart_points;\n } else {\n exData.drift1 = chartData.drift;\n }\n compareChart = true;\n }\n this.setState({ data: exData, compareChart: compareChart });\n }\n\n setSelectedFilterChartData(res, key, modelTitle, chartTitle, dataSetId, filters) {\n let chartData = this.getChartDataFromResult(res, key, modelTitle, chartTitle);\n let compareAttributeOptions = [{\"label\":\"\", \"value\":\"\"}];\n let compareMLAttributeOptions = [{\"label\":\"\", \"value\":\"\"}];\n let compareModelOptions = [{\"label\":\"\", \"value\":\"\"}];\n if (key !== \"mlModelPerformance\") {\n let selectedMlModel = this.props.selectedMLModel;\n let selectedSource = this.props.selectedIntegration;\n\n let metrics = res[\"metrics\"];\n modelTitle = modelTitle.replace('_',' ');\n for(let i = 0; i < metrics.length; i++) {\n let row = metrics[i];\n if (row.name === modelTitle && row.data !=null) {\n for(let chart of row.data) {\n if (selectedMlModel !== undefined) {\n chart[\"selectedMlModel\"] = selectedMlModel;\n }\n\n let chartName = getChartTitleBasedOnData(chart, selectedSource);\n let type = \"dataSet\";\n if (chart.model_name !== undefined && chart.attribute_name !== undefined){\n type = \"modelAttribute\";\n } else if(chart.model_name !== undefined && chart.attribute_name === undefined)\n {\n type = \"modalDataSet\";\n\n } else if (chart.attribute_name !== undefined && chart.attribute_name !== null) {\n type = \"attribute\";\n }\n\n if (chartName === chartTitle) {\n chartData = chart;\n } else if(type === \"attribute\" && chartTitle.includes([chart.name.replace(\" \", '_'),chart.data_set_name.replace(\".\", '_')].join(\"_\"))){\n let dataSetName = chartTitle.split(CHART_TITLE_SEPARATOR)[1];\n dataSetName = dataSetName.split(CHART_TITLE_SEPARATOR)[0];\n if (chartTitle.split(CHART_TITLE_SEPARATOR)[0] === chartName.split(CHART_TITLE_SEPARATOR)[0] &&\n chartTitle.split(CHART_TITLE_METRIC_SEPARATOR)[1] === chartName.split(CHART_TITLE_METRIC_SEPARATOR)[1] &&\n chart.data_set_name === dataSetName)\n {\n compareAttributeOptions.push({\n \"label\": chart.attribute_name,\n \"value\": chart.name, \"data\": chart\n });\n }\n } else if(type === \"modelAttribute\"){\n let dataSetName = chartTitle.split(CHART_TITLE_SEPARATOR)[1];\n dataSetName = dataSetName.split(CHART_TITLE_SEPARATOR)[0];\n if (chartTitle.split(CHART_TITLE_SEPARATOR)[0] === chartName.split(CHART_TITLE_SEPARATOR)[0] &&\n chartTitle.split(CHART_TITLE_METRIC_SEPARATOR)[1] === chartName.split(CHART_TITLE_METRIC_SEPARATOR)[1] &&\n chart.data_set_name === dataSetName)\n {\n compareMLAttributeOptions.push({\n \"label\": chart.attribute_name,\n \"value\": chart.name, \"data\": chart\n });\n }\n } else if(type === \"modalDataSet\"){\n if (chartTitle.split(CHART_TITLE_SEPARATOR)[0] === chartName.split(CHART_TITLE_SEPARATOR)[0] && chartTitle.split(CHART_TITLE_METRIC_SEPARATOR)[1] === chartName.split(CHART_TITLE_METRIC_SEPARATOR)[1])\n {\n compareModelOptions.push({\n \"label\": chart.data_set_name,\n \"value\": chart.name, \"data\": chart\n });\n }\n }\n }\n break;\n }\n }\n if (chartData !== null) {\n updateChartDataErrorType(chartData);\n }\n }\n\n let startDate = this.state.startDate;\n let endDate = this.state.endDate;\n let distance = this.state.distance;\n if (filters !== null) {\n Object.keys(filters).forEach(function(key) {\n if (key === \"startDate\") {\n startDate = filters[key];\n } else if (key === \"endDate\") {\n endDate = filters[key];\n } else if(key === \"distance\") {\n distance = filters[key];\n }\n });\n }\n\n let compareList = this.state.compareAttributeOptions;\n let compareMlDataset = this.state.compareModelOptions;\n let compareMlAttributes = this.state.compareMLAttributeOptions;\n if (compareAttributeOptions.length > 1) {\n compareList = compareAttributeOptions;\n }\n if( compareModelOptions.length > 1) {\n compareMlDataset = compareModelOptions;\n }\n\n if(compareMLAttributeOptions.length > 1) {\n compareMlAttributes = compareMLAttributeOptions;\n }\n\n this.setState({ data: chartData,\n startDate: startDate,\n endDate: endDate,\n distance: distance,\n compareChart: null,\n compareModelOptions: compareMlDataset,\n compareMLAttributeOptions: compareMlAttributes,\n compareAttributeOptions: compareList,\n loadValue: false\n });\n }\n\n chartTimeFilter(startDate, endDate, stateKey, title) {\n this.setTimeFilter(this.state.modalData[\"dataSetId\"], stateKey, title,\n startDate.format('YYYY-MM-DD 00:00:00'), endDate.format('YYYY-MM-DD 23:59:59'));\n }\n\n showCompare() {\n this.setState({showCompare:true, backdrop:\"show\"});\n }\n\n setAttrCompare(event) {\n this.closeCompare();\n let compareChart = null;\n let exData = {...this.state.data};\n const eventData = event.data;\n if(eventData !== null) {\n if (\"dq_chart_points\" in eventData) {\n exData.dq_chart_points1 = eventData.dq_chart_points;\n } else {\n exData.drift1 = eventData.drift;\n }\n\n exData.compareLabel = eventData.attribute_name;\n compareChart = true;\n }\n\n this.setState({ data: exData, compareChart: compareChart});\n }\n\n setAggregate(event) {\n let chartData = this.props.aggregateOptions.filter(function (d) { return d.value === event});\n let Data = null;\n if (chartData.length > 0) {\n Data = chartData[0].data;\n }\n this.setState({data:Data});\n }\n\n setMlCompare(event) {\n this.closeCompare();\n let compareChart = null;\n let exData = {...this.state.data};\n if(event.data !== null) {\n exData.drift1 = event.data.drift;\n compareChart = true;\n }\n this.setState({ data: exData, compareChart: compareChart });\n }\n\n setMlAttributeCompare(event) {\n this.closeCompare();\n let compareChart = null;\n let exData = {...this.state.data};\n if(event.data !== null) {\n exData.drift1 = event.data.drift;\n compareChart = true;\n }\n this.setState({ data: exData, compareChart: compareChart});\n }\n\n closeCompare() {\n this.setState({showCompare: false, backdrop:\"\"});\n }\n\n setCompare(event) {\n this.closeCompare();\n let compareChart = null;\n let exData = {...this.state.data};\n const eventData = event.data;\n if(exData !== undefined && Object.keys(exData).length > 0 && eventData !== null) {\n if (\"dq_chart_points\" in eventData) {\n exData.dq_chart_points1 = eventData.dq_chart_points;\n } else {\n exData.drift1 = eventData.drift;\n }\n\n exData.compareLabel = eventData.datasetName;\n compareChart = true;\n } else {\n exData = null;\n }\n\n this.setState({ data: exData, compareChart: compareChart});\n\n // For showing compare charts, we will make the chart type as area.\n // Currently we are showing compare charts as area chart only\n let compareChartType = \"areaChart\";\n compareChartType = convertChartTypeToError(compareChartType, this.state.errorChart);\n this.setState({chartType: compareChartType});\n }\n\n setChartFilter(event) {\n this.setState({chartType: event});\n }\n\n renderChart() {\n if (this.state.loadValue === true) {\n return (}\n />);\n }\n\n let colorType = \"success\";\n if (this.props.data !== undefined &&\n this.props.data !== null &&\n this.props.data.hasDrift !==undefined &&\n this.props.data.hasDrift) {\n colorType=\"error\";\n }\n\n // For multiline charts that are used in Model Performance - Compare View,\n // we will use colorType from props\n if (this.props.variant === \"model_perf_comp_view\") {\n colorType = this.props.colorCode;\n }\n const stateData = this.state.data;\n let chartHasValidPoints = (!IS_NONE_CHECK.includes(stateData) && stateData.time && stateData.time.length > 0);\n\n chartHasValidPoints = chartHasValidPoints || this.props.chartType === chartTypes.CONFUSION_MATRIX || this.props.chartType === chartTypes.GROUPED_HORIZONTAL_BAR_CHART || this.props.chartType === chartTypes.HORIZONTAL_COMPARE_CHART\n if (stateData !== null && stateData !== undefined && stateData.colorType !== undefined && stateData.colorType !== null){\n colorType = stateData.colorType;\n }\n\n switch (this.state.settings) {\n case \"timeSeries\":\n if (chartHasValidPoints) {\n let chartId = this.state.chartID;\n return (\n
    \n \n\n
    \n );\n } else {\n return (\n this.props.errorNotAvailable ?\n
    \n

    \n

    No Error found in the selected metric

    \n
    \n :\n
    \n

    \n

    No Data found in the selected Time period

    \n
    \n );\n }\n case \"heatMap\":\n if (this.state.data) {\n let chartId = this.state.chartID;\n return (\n
    \n \n\n
    \n );\n } else {\n return (\n this.props.errorNotAvailable ?\n
    \n

    \n

    No Error found in the selected metric

    \n
    \n :\n
    \n

    \n

    No Data found in the selected Time period

    \n
    \n );\n }\n case \"contribution\":\n let data = [];\n if (this.state.data !== null && this.state.data !== \"undefined\") {\n data = chartFilterTable(this.state.data);\n let metricName;\n if (this.state.data !== null) {\n metricName = this.state.data.name;\n }\n let showDataTypeDifferences = (metricName === DATA_TYPE_CONSISTENCY ||\n metricName === ML_DATA_CONSISTENCY);\n\n let errorRowHighlighter = undefined;\n\n if (showDataTypeDifferences) {\n // Error row highlighter for data type consistency\n errorRowHighlighter = (row, rowIndex) => {\n if (row === undefined || row === null) {\n return \"\";\n }\n\n const referenceColumnHeader = REFERENCE_TYPE_COLUMN_NAME[metricName];\n if (row[\"Data type\"] !== row[referenceColumnHeader]) {\n return ROW_ERROR_CLASS;\n }\n\n return \"\";\n };\n }\n\n return(\n \n );\n\n\n } else {\n return (\n this.props.errorNotAvailable ?\n
    \n

    \n

    No Error found in the selected metric

    \n
    \n :\n
    \n

    \n

    No Data found in the selected Time period

    \n
    \n );\n }\n default:\n let chartId = this.state.chartID;\n\n if (this.state.data && this.state.chartType === SINGLE_ARROW_CHART_TYPE) {\n return ()\n }\n let showViewAllButton = false;\n if((this.state.chartType === chartTypes.MULTILINE_FEATURE_CHART && this.state.expand === false) ||\n (this.state.chartType === chartTypes.GROUPED_HORIZONTAL_BAR_CHART && this.state.expand === false) ||\n (this.state.chartType === chartTypes.HORIZONTAL_BAR_CHART && this.state.expand === false && this.state.data !==null &&\n this.state.data.chartDataPoints !== undefined && this.state.data.chartDataPoints.length > 0 && this.state.data.chartDataPoints[0].length > 8)){\n showViewAllButton = true;\n }\n if (chartHasValidPoints && this.state.data ) {\n if (this.state.data.is_all_string_column !== undefined && this.state.data.is_all_string_column.length > 0 && !this.state.data.is_all_string_column.includes(false)){\n return (\n
    \n

    \n

    Data Drift is not applicable since the dataset has no numeric attribute

    \n
    \n );\n }\n else{\n return (\n <>\n \n {\n (showViewAllButton === true) &&\n
    \n \n
    \n }\n \n );\n }\n } else {\n return (\n this.props.errorNotAvailable ?\n
    \n

    \n

    No Error found in the selected metric

    \n
    \n :\n
    \n

    \n

    No Data found in the selected Time period

    \n
    \n );\n }\n }\n }\n\n settingFilter(event, dataSetId, key, modelTitle, chartTitle) {\n this.setState({settings: event})\n }\n\n renderCompareOptions(){\n if(this.state.compareType === \"Dataset\") {\n return <>\n label.includes(query)}\n onChange={this.setCompare}\n id=\"compareWithDatasets\"\n options={this.props.compareDataSrc}\n value={this.state.CompareSrc}\n placeholder=\"Choose dataset\"\n classNamePrefix='select-control'\n />\n } else if(this.state.compareType === \"Attribute\") {\n return <>\n \n label.includes(query)}\n id=\"compareWithAttributes\"\n onChange={this.setAttrCompare}\n options={this.state.compareAttributeOptions}\n placeholder=\"Choose attribute\"\n classNamePrefix='select-control'\n />\n \n } else if(this.state.compareType === \"modelDataSet\") {\n return <>\n \n label.includes(query)}\n onChange={this.setMlCompare}\n id=\"compareWithModels\"\n options={this.state.compareModelOptions}\n placeholder=\"Choose ML-Model\"\n classNamePrefix='select-control'\n />\n \n\n } else if(this.state.compareType === \"modelAttribute\") {\n return <>\n \n label.includes(query)}\n id=\"compareWithModelAttributes\"\n onChange={this.setMlAttributeCompare}\n options={this.state.compareMLAttributeOptions}\n placeholder=\"Choose Attribute\"\n classNamePrefix='select-control'\n />\n \n\n }\n }\n\n fillAggregateDropDown(item, key){\n return(\n \n {item.label}\n \n );\n }\n\n monitorFillAggregateDropDown(item, key){\n return(\n \n {item.label}\n \n );\n }\n\n changeSource(event, obj)\n {\n this.props.changeSource(event, this.props.id, this.props.title,this.state.expand)\n this.props.handleLoad(true);\n }\n\n getCompareHTML(showCompareInHeader) {\n if (showCompareInHeader && this.state.data !== null) {\n return(\n
    \n
    \n \n \n \n \n \n
    Compare
    \n
    \n
    \n );\n }\n return '';\n }\n\n componentDidMount() {\n let currentHeaderRef = this.headerRef.current;\n let currentFooterRef = this.footerRef.current;\n if (currentHeaderRef !== undefined && currentHeaderRef !== null) {\n this.setState({height1: currentHeaderRef.offsetHeight});\n }\n if (currentFooterRef !== undefined && currentFooterRef !== null) {\n this.setState({height2: currentFooterRef.offsetHeight});\n }\n }\n\n footerRef = (ref) => {\n this.footerRef.current = ref;\n }\n\n componentDidUpdate(prevProps) {\n if (this.state.expand === true) {\n let expandChartId = this.state.chartID+this.props.chartLevel;\n let x = document.getElementById(expandChartId);\n if(x!=null){\n if(SEE_FULL_VIEW_ICONS.includes(this.props.chartType)){\n this.renderChart()\n }\n else{\n let ele = x.querySelectorAll(\"svg\");\n if(ele!=null){\n if(ele.length > 0){\n let viewboxsize = \"0,0,1506,500\"\n setTimeout(function(){\n x = document.getElementById(expandChartId);\n ele = x.querySelectorAll(\"svg\");\n let res = viewboxsize.split(\",\");\n ele[0].setAttribute(\"viewBox\",viewboxsize)\n viewboxsize = ele[0].getAttribute(\"viewBox\")\n ele[0].style.height = \"100%\";\n ele[0].setAttribute(\"width\",res[2])\n }, 100);\n } else {\n }\n }\n }\n }\n }\n\n\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props !== null && props !== undefined) {\n if (props.page === \"attribute\" && props.data !== state.data) {\n return {data : props.data};\n }\n }\n return null;\n }\n\n render() {\n let metricsOptions = [];\n let attributeProfileOptions = [];\n let page = \"monitor\";\n let widgetName = this.props.widgetClass ? this.props.widgetClass : \"qd-chartWidget\";\n if (this.props.metricsOptions !== null && this.props.metricsOptions !== undefined) {\n metricsOptions = this.props.metricsOptions;\n }\n if (this.props.attributeProfileOptions !== null && this.props.attributeProfileOptions !== undefined) {\n attributeProfileOptions = this.props.attributeProfileOptions;\n page = \"attribute\";\n widgetName = \"qd-chartWidget m-0 border-0\";\n }\n\n\n let isModelPerformance = false;\n let isCompareChart = false;\n let isBoxplot = false;\n let isMultiBar = false;\n let isMultiLine = false;\n if (this.props.data !== null && this.props.data !== undefined) {\n isModelPerformance = this.props.data[\"isModelPerformance\"];\n isCompareChart = this.props.data[\"multipleLines\"];\n isBoxplot = this.props.data[\"boxPlotData\"];\n isMultiBar = this.props.data[\"isMultiBar\"];\n isMultiLine = this.props.data[\"isMultiLine\"];\n if (isBoxplot !== undefined) {\n let quantile = isBoxplot.statistics[0].quantile;\n if (quantile.length > 0 && (!quantile.includes(\"NA\"))) {\n isBoxplot = true;\n }\n }\n }\n\n if (attributeProfileOptions === undefined || attributeProfileOptions === null){\n attributeProfileOptions = [];\n }\n\n let attributeMonitorPage = [];\n if (this.props.aggregateOptions !== undefined && this.props.aggregateOptions !== null) {\n attributeMonitorPage = this.props.aggregateOptions;\n }\n\n if (attributeMonitorPage === undefined || attributeMonitorPage === null) {\n attributeMonitorPage = []; }\n\n let variant_list_view = null;\n if(this.props.variant !== undefined){\n variant_list_view = this.props.variant.substring(0,28); }\n\n let containerName = \"Datasource:\";\n let canShowMetrics = true;\n let metricLabel = \"Metric with issue:\";\n const propsData = this.state.data;\n let attributeName = this.props.attributeName;\n if (this.props.data !== null && (this.props.variant === \"mlModelPerformance\" || this.props.data[\"isModelPerformance\"])){\n containerName = \"Model:\"\n canShowMetrics = false;\n metricLabel = \"Metric:\";\n attributeName = undefined;\n if(this.props.data[\"name\"] === \"mean_shap_value\"){\n attributeName = this.props.data[\"attribute_name\"]\n }\n } else if (this.props.variant === \"mlModel\" || variant_list_view === \"listViewFullScreenModelError\") {\n containerName = \"Model:\"\n } else if(this.props.dqpGrid !== undefined && this.props.dqpGrid === true){\n metricLabel = \"Metric:\";\n canShowMetrics = false;\n }\n\n let ErrorPercentage;\n let LastErrorPercentage;\n let dataSource;\n let MetricName;\n let Drift =\"No Error\";\n let multipleLines = this.props.multipleLines;\n\n\n if (propsData !== undefined && propsData !== null) {\n ErrorPercentage = propsData[\"error_percentage\"];\n LastErrorPercentage = propsData[\"last_error\"];\n dataSource = propsData[\"data_source_name\"];\n MetricName = propsData[\"name\"];\n Drift = propsData[\"type\"];\n }else if(this.props.data) {\n ErrorPercentage = null;\n LastErrorPercentage = null;\n dataSource = this.props.data[\"data_source_name\"];\n MetricName = this.props.data[\"name\"];\n Drift = null;\n canShowMetrics = false;\n }\n\n if (Drift === \"success\") {\n Drift = \"NO_DRIFT\";\n\n }\n\n if (this.props.page === \"attribute\" || (this.props.dqpGrid !== undefined && this.props.dqpGrid === true) ||\n this.props.variant === \"mlModelPerformanceListView\" || this.props.variant === \"mlModelPerformanceListView\") {\n Drift = undefined;\n }\n\n let expandIconClass = \"qd-cw-btn qd-cw-btn_fullscreen\";\n let pageHeight = 'auto';\n\n let e = window;\n let a = 'inner';\n if (!('innerWidth' in window)) {\n a = 'client';\n e = document.documentElement || document.body;\n }\n\n// var height = App.getViewPort().height - portlet.children('.qd-chartWidget_top').outerHeight() - portlet.children('.qd-chartWidget_bottom').outerHeight() - 2;\n\n if (this.state.expand === true) {\n expandIconClass = \"qd-cw-btn qd-cw-btn_fullscreen on\";\n widgetName = widgetName + \" chartWidget-fullscreen\";\n document.body.classList.add(\"page-chartWidget-fullscreen\");\n pageHeight = e[a + 'Height'];\n let h1 = this.state.height1;\n let h2= this.state.height2;\n pageHeight = pageHeight - h1- h2 -2;\n // let expandChartId = this.state.chartID+this.props.chartLevel;\n // let x = document.getElementById(expandChartId);\n // if(x!=null){\n // let ele = x.querySelectorAll(\"svg\");\n // ele[0].style.height = \"auto\"; \n // }\n } else {\n document.body.classList.remove(\"page-chartWidget-fullscreen\");\n }\n\n let showCompareInHeader = true;\n if (this.props.compareType === \"Dataset\") {\n showCompareInHeader = this.props.compareDataSrc.length > 0;\n } else if (this.props.compareType === \"Attribute\") {\n showCompareInHeader = this.props.compareAttributeOptions.length > 0;\n } else if (this.props.compareType === \"modelDataSet\") {\n showCompareInHeader = this.props.compareModelOptions.length > 0;\n } else if (this.props.compareType === \"modelAttribute\") {\n showCompareInHeader = this.props.compareMLAttributeOptions.length > 0;\n }\n if (MetricName === \"Recency\") {\n canShowMetrics = false;\n }\n\n if (this.state.startDate !== null && this.state.endDate !== null) {\n start = this.state.startDate;\n end = this.state.endDate;\n }\n\n let chart_body_class_name = this.state.chartType === \"boxPlotZoomable\" ? \"qd-chartWidget_body boxplot\" : \"qd-chartWidget_body\";\n let page_height;\n if(SEE_FULL_VIEW_ICONS.includes(this.props.chartType)){\n chart_body_class_name = \"qd-chartWidget_body position-relative overflow-hidden\"\n page_height = \"250px\";\n if (this.state.expand === true){\n page_height = pageHeight\n chart_body_class_name = \"qd-chartWidget_body position-relative overflow-auto\"\n }\n }\n const doNotShowChartDropdowns = (this.props.chartType === chartTypes.CONFUSION_MATRIX ||\n this.props.hideChartOptions === true || this.state.settings === \"contribution\" ||\n this.props.chartType === chartTypes.MULTILINE_FEATURE_CHART || this.props.chartType === chartTypes.HORIZONTAL_BAR_CHART || this.props.chartType === chartTypes.GROUPED_HORIZONTAL_BAR_CHART || this.props.chartType === chartTypes.HORIZONTAL_COMPARE_CHART);\n\n return (\n <>\n
    \n
    \n
    \n
    \n
    \n
    \n
    Compare
    \n
    \n
    \n {\n this.renderCompareOptions()\n }\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {this.state.chartTitle.replace(\" \", \"_\")}
    \n
    \n
    \n \"\"\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n\n
    \n {this.renderChart()}\n
    \n \n \n
    \n \n );\n }\n}\n\nexport default ChartFilterHeader;","import React from 'react';\nimport { IS_NONE_SAAS_EDITION } from \"../utils/constant\"\n\nlet content = \"Detect data drifts and decays for your Models.\"\nif(IS_NONE_SAAS_EDITION){\n content = \"Detect data drifts and outliers in cloud data warehouses.\"\n}\n\nclass Banner extends React.Component {\n\n render() {\n return (\n
    \n
    \n
    \n
    \n

    Eliminate high-stake\n
    data issues in minutes\n

    \n

    Use Qualdo™ to identify, monitor and troubleshoot data issues and errors in your favourite modern\n databases. {content}

    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Banner;","import React from 'react';\nimport {PRIVACY_POLICY_LINK, COOKIE_POLICY_LINK, TERMS_CONDITIONS_LINK} from \"../utils/constant\";\n\nconst d = new Date();\nlet year = d.getFullYear();\n\nclass CopyRights extends React.Component {\n render() {\n return (\n
    \n {\n (this.props.text !== null && this.props.text !== undefined) ?\n this.props.text : ''\n }\n Terms & Conditions -\n Privacy Policy -\n Cookie Policy\n
    \n {\n this.props.showCopyRight ?\n 'Copyright Saturam Inc.'+year: ''\n }\n
    \n );\n }\n}\n\nexport default CopyRights;\n\n\nexport function CopyRightsFooter() {\n return (\n \n );\n}\n\n","// import {\n// // preFetchRelationshipData,\n// preFetchMetaData, preFetchUserNotifications, prefetchDatasetDetails, prefetchRecencyDetails, prefetchRecentHistory,\n// prefetchModelABData, prefetchDataSize, preFetchMetadataDetails\n// } from \"../utils/dataFetch\";\n\n// import {\n// preFetchMonitorPreview,\n// preFetchMonitorInfo,\n// preFetchMonitorModelInfo,\n// preFetchModelDetails,\n// preFetchMonitorListViewData,\n// preFetchMetrics,\n// preFetchFollowAttributes\n// } from \"../utils/monitorDataFetch\";\n\n// import {\n// addFollowAttributes, addUserNotificationToState,\n// addDatasetVersions, addRecencyDetails, setModelABDataToList,\n// addRecentHistory, addDataSize, storeMetadataDetails\n// } from \"../redux/actions\";\n\nimport { LOGIN_SOURCE, MANDATE_RESET_PASSWORD, LOCAL_STORE_KEY } from '../utils/constant';\nimport { browserHistory } from 'react-router';\nimport {\n encryptForLocalUsage, decryptForLocalUsage, getRedirectionLinkToChangePassword,\n getRedirectionLinkToExpiredPlan, isDataLimitExceeded\n} from \"../utils/common_utils\";\n\n// import store from \"../redux/store\";\nimport mixpanel from 'mixpanel-browser';\n\nexport function perform_remember_me_checks(rememberMe, email, password) {\n if (rememberMe === true) {\n localStorage.setItem(\"rememailId\", email);\n localStorage.setItem(\"rempassword\", password);\n localStorage.setItem(\"rememberMe\", rememberMe);\n } else {\n localStorage.setItem(\"rememailId\", \"\");\n localStorage.setItem(\"rempassword\", \"\");\n localStorage.setItem(\"rememberMe\", \"\");\n }\n}\n\nexport function perform_login_initial_setup(source, response, details) {\n /***\n * This function is used for calling the necessary prefetch APIs and \n * performing initial setup and checks after login process.\n * This function is used by Normal Sign-in flow, Google sign-in flow.\n * \n * @param {str} source Value can be 'normal_login' or 'google_login'\n */\n\n if (response === undefined) {\n // We did not get response from server. Due to server/error or \n // connection issue on client side\n this.setState({ errors: \"Could not login\" });\n return;\n }\n\n if (response.code !== 200) {\n // We get response from server but it is invalid\n let errorMsg = response.message;\n if (errorMsg === \"Bad request\") {\n errorMsg = \"An unexpected error occurred. Please try logging in again.\";\n }\n\n let setPasswordLink = this.state.setPasswordLink;\n if (errorMsg === \"Please set password or you can login using google!.\") {\n // This case will be used when google sign in user is trying normal signup for first time.\n // We will not have password in db. So we are redirecting them to set password page \n localStorage.setItem(\"setPassword\", true);\n setPasswordLink = true;\n } else {\n setPasswordLink = false;\n }\n this.setState({\n errors: errorMsg, hideSubmitButton: false,\n setPasswordLink: setPasswordLink\n });\n return;\n }\n\n\n // We are getting successful response from server. So proceed prefetch \n // and other initial setups that should be done after login.\n const now = new Date();\n const responseData = response['response'];\n let feature_access = responseData[\"feature_access\"];\n const encryptedFA = encryptForLocalUsage(feature_access);\n localStorage.setItem('featureAccess', encryptedFA);\n\n const item = {\n value: responseData['auth_token'],\n user_id: responseData['user_id'],\n team_id: responseData['team_id'],\n expiry: now.getTime() + 150 * 60000\n };\n\n setTimeout(() => browserHistory.push('/'), 9000000);\n\n localStorage.setItem('sessionToken', JSON.stringify(item));\n\n if (details === undefined || details === null) {\n details = {};\n }\n\n // These keys used only for new user when redirected from web page\n localStorage.removeItem(\"isPlanDetailAvailable\");\n localStorage.removeItem(\"qualdoPlan\");\n localStorage.removeItem(\"qualdoPlanCycle\");\n localStorage.removeItem(\"qualdoEdition\");\n\n let email = details[\"email\"];\n if (source === LOGIN_SOURCE.MSI_LOGIN_SRC) {\n // For MSI Login, we will get email from response data\n email = responseData.email\n }\n\n if (email !== undefined && email !== null){\n localStorage.removeItem(\"emailId\");\n localStorage.setItem('emailId', email);\n }\n\n let connector_added = responseData[\"connector_added\"];\n\n if (source === LOGIN_SOURCE.NORMAL_LOGIN_SRC) {\n // The following function call is need only for normal signup flow\n let rememberMe = details[\"rememberMe\"];\n let password = details[\"password\"];\n perform_remember_me_checks(rememberMe, email, password);\n }\n\n const accountFeatures = response[\"account_features\"][\"plan_details\"];\n accountFeatures[\"payment_status\"] = response[\"account_features\"][\"payment_status\"];\n\n // Storing warning_message key into accountFeature and update buffer and expire key name\n accountFeatures['warning_message'] = response[\"account_features\"][\"warning_message\"]\n accountFeatures['isPlanExpired'] = accountFeatures[\"is_plan_expired\"]\n accountFeatures['isInBufferPeriod'] = accountFeatures[\"is_in_buffer_period\"]\n\n // Encrypt User Details\n let encrypt_data = encryptForLocalUsage(accountFeatures)\n localStorage.setItem(LOCAL_STORE_KEY, encrypt_data)\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n\n // localStorage.setItem(\"warning_message\", response[\"account_features\"][\"warning_message\"]);\n // localStorage.setItem(\"isPlanExpired\", accountFeatures[\"is_plan_expired\"]);\n // localStorage.setItem(\"isInBufferPeriod\", accountFeatures[\"is_in_buffer_period\"]);\n\n localStorage.setItem(\"plan_details\", JSON.stringify(accountFeatures));\n\n let passwordToken = null;\n let mandateToResetPassword = false;\n\n // Mandate password flow is applicable only for normal signup\n if (source === LOGIN_SOURCE.NORMAL_LOGIN_SRC) {\n mandateToResetPassword = String(responseData['reset_password']) === \"1\";\n }\n\n if (mandateToResetPassword) {\n passwordToken = MANDATE_RESET_PASSWORD.One;\n localStorage.setItem(MANDATE_RESET_PASSWORD.Reset_Password, passwordToken);\n }\n\n let teamID = responseData['team_id'];\n localStorage.setItem('team_id', teamID);\n localStorage.setItem('user_name', responseData['user_name']);\n localStorage.setItem('user_id', responseData['user_id']);\n localStorage.setItem(\"org_id\", responseData['org_id']);\n localStorage.setItem('user_signup_type', responseData['user_signup_type']);\n localStorage.setItem(\"permissions\", response[\"response\"][\"permissions\"]);\n localStorage.setItem(\"v_ky\", encryptForLocalUsage(responseData['video_key']));\n localStorage.setItem(\"v_tk\", encryptForLocalUsage(responseData['video_token']));\n\n // let tenantData = { \"tenant_id\": teamID };\n let currentStatus = response[\"response\"][\"current_status\"];\n\n if (currentStatus === \"disabled\") {\n this.props.router.push(\"/user_status\");\n return;\n }\n\n if (email !== undefined && email !== null) {\n mixpanel.init('155c019784ab639716eb7828d60964e2', { debug: true });\n mixpanel.identify(email);\n mixpanel.track('Users logged in', {});\n mixpanel.people.set({\n $email: email\n });\n }\n\n if (mandateToResetPassword) {\n // Currently mandate reset password will be used in AWS managed service \n // when user logins for the first time with generated password.\n let redirectionLink = getRedirectionLinkToChangePassword();\n this.props.router.push(redirectionLink);\n return;\n }\n\n let setUpComplete = responseData[\"setup_status\"] === \"completed\";\n let isPlanExpired = decrypt_data['isPlanExpired']\n let isInBufferPeriod = decrypt_data['isInBufferPeriod']\n\n if (isPlanExpired === true && isInBufferPeriod === false) {\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n this.props.router.push(redirectionLink);\n return;\n }\n\n if (!setUpComplete) {\n // Setup is not complete(User has not created any datasource so far). \n // So we will redirect to corresponding setup page\n if (feature_access[\"skip_setup\"] === true) {\n localStorage.setItem(\"DataSetupStatus\", true);\n this.props.router.push(\"/quick-start\");\n } else {\n localStorage.setItem(\"DataSetupStatus\", false);\n this.props.router.push(\"/setup\");\n }\n\n // no need to proceed since set up is incomplete.\n return;\n }\n\n // User has completed the setup.(Created at least one data source). \n // So we can start prefetching other details\n this.props.setInitialValues();\n this.props.setTenantId(teamID);\n this.props.setMonitorInitialValues();\n\n /* ##\n preFetchMonitorPreview(tenantData, this.props.addMonitorPreview,\n this.props.addPerformancePreview,\n this.props.addModelPerformance); */\n /*preFetchRelationshipData(\n tenantData, this.props.setDataSource, this.props.addRelationship,\n this.props.addDataSource, this.props.addInfo, this.props.addLastProfilingTime\n );*/\n /* ##\n preFetchMetaData(\n tenantData, this.props.addMetaData, this.props.addEnvironment,\n this.props.addEnvironmentDataSourceMapping, this.props.addDataSourceDataSetMapping,\n this.props.addDataSetAttributeMapping, this.props.setDataSet, this.props.setAttribute,\n this.props.setDataSource, this.props.setMlDataSource, this.props.addRelationship, this.props.addDataSource,\n this.props.addInfo, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate, this.props.addDiscoveryStatus, this.props.addProcessingStatus,\n this.props.noIntegration\n );\n preFetchMonitorInfo(\n tenantData, this.props.addCompletenessDataSetInfo, this.props.addCompletenessAttributeInfo,\n this.props.addTimelinessDataSetInfo, this.props.addTimelinessAttributeInfo,\n this.props.addAccuracyDataSetInfo, this.props.addAccuracyAttributeInfo,\n this.props.addConformityDataSetInfo, this.props.addConformityAttributeInfo,\n this.props.addConsistencyDataSetInfo, this.props.addConsistencyAttributeInfo,\n this.props.addDriftDataSetInfo, this.props.addDriftAttributeInfo, this.props.addMLDataSetInfo,\n this.props.addMLAttributeInfo, this.props.addMonitorPreview, this.props.addUniquenessDataSetInfo,\n this.props.addUniquenessAttributeInfo, this.props.addRecencyPreview, this.props.prefetchMonitorState\n );\n preFetchMonitorModelInfo(\n teamID, this.props.addMLModelMapping,\n this.props.addMLDataSetInfo, this.props.addMLAttributeInfo,\n this.props.addMLModel, this.props.setMLModel\n );*/\n\n // preFetchModelPerformanceInfo(\n // teamID, this.props.addModelPerformance\n // );\n\n /* ##\n preFetchModelDetails(teamID, this.props.addModelDetails);\n\n preFetchMetrics(teamID, this.props.addMetrics);\n\n preFetchFollowAttributes(tenantData, addFollowAttributes, store);\n\n preFetchMonitorListViewData(teamID, this.props.addMonitorDQListViewData);\n\n // Fetch first page result of user notifications\n preFetchUserNotifications(tenantData, addUserNotificationToState, store);\n\n // Fetch dataset version details\n prefetchDatasetDetails(tenantData, addDatasetVersions, store);\n\n // Fetch Recency Details\n prefetchRecencyDetails(tenantData, addRecencyDetails, store);\n\n // Fetch Model AB configuration list\n prefetchModelABData(tenantData, setModelABDataToList, store);\n\n // Fetch recent search history - discover page\n prefetchRecentHistory(tenantData, addRecentHistory, store);\n\n // Fetch data size - discover page\n prefetchDataSize(tenantData, addDataSize, store)\n\n // Fetch Metadata details used in custom alerts\n preFetchMetadataDetails(tenantData, storeMetadataDetails, store)\n */\n\n let isPbiEnabled = feature_access[\"powerbi\"] === true;\n let dataLimitExceeded = isDataLimitExceeded();\n if (isPlanExpired === true && isInBufferPeriod === false) {\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n this.props.router.push(redirectionLink);\n } else if (isPbiEnabled && connector_added === false) {\n this.props.router.push(\"/pbi-setup\");\n } else if (dataLimitExceeded) {\n this.props.router.push(\"/plan\");\n } else if (mandateToResetPassword) {\n let redirectionLink = getRedirectionLinkToChangePassword();\n this.props.router.push(redirectionLink);\n } else {\n let redirectUrl = \"/configure\";\n if (isPbiEnabled) {\n redirectUrl = \"/pbi-report\";\n }\n this.props.router.push(redirectUrl);\n }\n\n}","import React from 'react';\nimport CopyRights from '../../components/copyrights';\nimport { iam_google_signup } from \"../../utils/ip_details\";\nimport { call_post_api } from \"../../utils/event_handling\";\nimport { getCompleteEndpoint, getProtocol } from \"../../utils/common_utils\";\nimport {LOGIN_SOURCE} from \"../../utils/constant\";\n\nimport { faEnvelope, faLock, faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { connect } from \"react-redux\";\nimport { Link } from 'react-router';\nimport {perform_login_initial_setup} from '../login_initial_steps';\n\nimport {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setEndDate,\n setStartDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setTenantId,\n setInitialValues,\n setAttribute,\n setDataSet,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n setMonitorInitialValues,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n setMLModel,\n addMLModel,\n addModelPerformance, addModelDetails,\n addMonitorDQListViewData, addMetrics, addDatasetVersions,\n addUniquenessDataSetInfo, addUniquenessAttributeInfo, addRecencyDetails,\n addRecentHistory, addDataSize, addRecencyPreview, \n prefetchMonitorState,\n storeMetadataDetails, noIntegration\n} from \"../../redux/actions\";\nimport {IS_AZURE_DRX} from \"../../utils/constant\"\n\nclass Login extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n let errorMsg = localStorage.getItem(\"error_message\");\n let errors = null;\n if (errorMsg !== undefined && errorMsg !== null && errorMsg !== \"undefined\" && errorMsg !== 'null') {\n errors = errorMsg;\n localStorage.removeItem(\"error_message\");\n }\n\n let rememailId, rempassword, remcheckbox;\n if (localStorage.getItem('rememberMe') === \"\" || localStorage.getItem('rememberMe') === null || localStorage.getItem('rememberMe') === false || localStorage.getItem('rememberMe') === undefined) {\n rememailId = \"\";\n rempassword = \"\";\n remcheckbox = \"\";\n } else {\n rememailId = localStorage.getItem(\"rememailId\");\n rempassword = localStorage.getItem(\"rempassword\");\n remcheckbox = localStorage.getItem(\"rememberMe\");\n }\n this.state = {\n passwordIcon: faEye,\n passwordType: \"password\",\n errors: errors,\n setPasswordLink: false,\n rememailId: rememailId,\n rempassword: rempassword,\n remcheckbox: remcheckbox,\n azLoaderClass:\"btn\"\n\n };\n\n this.hideAlert = this.hideAlert.bind(this);\n this.msiLogin = this.msiLogin.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.login = this.login.bind(this);\n this.perform_login_initial_setup = perform_login_initial_setup.bind(this);\n this.getForgotPasswordContent = this.getForgotPasswordContent.bind(this);\n }\n\n hideAlert() {\n this.setState({\n errors: null,\n hideSubmitButton: false\n });\n }\n\n msiLogin() {\n this.setState({azLoaderClass:\"btn loading-btn loading-btn--pending\"})\n let login_env = process.env.REACT_APP_CUSTOM_NODE_ENV_LOGIN;\n if (login_env === \"msi_login\") {\n let protocol = getProtocol(iam_ip);\n let reqEndPoint = getCompleteEndpoint(protocol, iam_ip, \"market_place_login\");\n window.location.href = reqEndPoint\n }\n }\n\n getForgotPasswordContent() {\n \n return (\n Forgot Password?\n )\n }\n\n disableButton() {\n this.setState({ hideSubmitButton: true });\n }\n\n changePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({ passwordIcon: faEyeSlash });\n this.setState({ passwordType: \"text\" })\n } else {\n this.setState({ passwordIcon: faEye });\n this.setState({ passwordType: \"password\" })\n }\n }\n\n login(event) {\n\n this.disableButton();\n let { email, password } = event;\n const { rememberMe } = this.state;\n const data = { email: email, password: password };\n call_post_api(iam_ip, \"login\", data).then((response) => {\n let req_details = {\n \"email\": email, \"password\": password,\n \"rememberMe\": rememberMe\n }\n\n // Following function performs required prefetches and initial setups\n this.perform_login_initial_setup(LOGIN_SOURCE.NORMAL_LOGIN_SRC,\n response, req_details);\n });\n }\n\n handleChange = (event) => {\n\n const input = event.target;\n const value = input.type === 'checkbox' ? input.checked : input.value;\n if (input.type === 'checkbox') {\n this.setState({ [input.name]: value });\n this.setState({ \"remcheckbox\": value });\n }\n };\n\n render() {\n const loginSchema = yup.object({\n email: yup.string().email(\"Email must be a valid email\").required(\"Email is a required field\"),\n password: yup.string().required(\"Password is a required field\"),\n });\n\n let DEPLOYED_ENVIRONMENT = process.env.REACT_APP_CUSTOM_NODE_ENV\n let LOGIN_ENVIRONMENT = process.env.REACT_APP_CUSTOM_NODE_ENV_LOGIN;\n let LOGIN_CLOUD = process.env.REACT_APP_CLOUD;\n if (DEPLOYED_ENVIRONMENT === \"managed_service\" && LOGIN_ENVIRONMENT !== \"msi_login\") {\n return (\n
    \n {this.props.isFirstTimeLogin ?\n

    Thank you for email confirmation,\n
    Please login to your account.

    :

    Welcome, Please login\n
    to your account.

    \n }\n
    \n {this.state.errors ?\n
    \n {this.state.errors}\n {this.state.setPasswordLink ?\n \n Click the link to set password.\n \n :\n ''\n }\n
    : \"\"\n }\n\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n Email Address *\n \n \n \n \n \n \n { touched.email && errors.email }\n \n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n
    \n \n \n \n {this.getForgotPasswordContent()}\n
    \n
    \n \n {this.state.hideSubmitButton ? : \"\"}\n
    \n
    \n )}\n \n \n
    \n
    \n );\n } else if (LOGIN_ENVIRONMENT === \"msi_login\" && LOGIN_CLOUD !== \"AWS\") {\n return (\n
    \n

    Welcome Back, Please login
    to your account.

    \n
    \n
    \n

    Sign in using Azure Active Directory Single Sign On.
    Learn more

    \n {this.state.errors ?\n
    \n {this.state.errors}\n
    : \"\"\n }\n
    \n \n
    \n {this.state.hideSubmitButton ? : \"\"}\n

    Contact your site administrator to
    request access.

    \n
    \n
    \n \n
    \n );\n }\n else if(LOGIN_CLOUD === \"AWS\"){\n return (\n
    \n {this.props.isFirstTimeLogin ?\n

    Thank you for email confirmation,\n
    Please login to your account.

    :

    Welcome, Please login\n
    to your account.

    \n } \n
    \n

    Sign in using Azure Active Directory Single Sign On.
    Learn more

    \n
    \n \n
    \n {this.state.hideSubmitButton ? : \"\"}\n {/*

    Contact your site administrator to
    request access.

    */}\n
    \n
    \n
    \n or Login with email \n
    \n {this.state.errors ?\n
    \n {this.state.errors}\n {this.state.setPasswordLink ?\n \n Click the link to set password.\n \n :\n ''\n }\n
    : \"\"\n }\n\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n Email Address *\n \n \n \n \n \n \n { touched.email && errors.email }\n \n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n
    \n \n \n \n {\n IS_AZURE_DRX\n ?\n ''\n :\n this.getForgotPasswordContent()\n }\n \n
    \n
    \n \n {this.state.hideSubmitButton ? : \"\"}\n
    \n
    \n )}\n \n \n
    \n
    \n );\n \n\n }\n else {\n return (\n
    \n {this.props.isFirstTimeLogin ?\n

    Thank you for email confirmation,\n
    Please login to your account.

    :

    Welcome, Please login\n
    to your account.

    \n }\n \n
    \n
    \n or Login with email \n
    \n {this.state.errors ?\n
    \n {this.state.errors}\n {this.state.setPasswordLink ?\n \n Click the link to set password.\n \n :\n ''\n }\n
    : \"\"\n }\n\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n Email Address *\n \n \n \n \n \n \n { touched.email && errors.email }\n \n \n \n \n Password *\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n
    \n \n \n \n {\n IS_AZURE_DRX\n ?\n ''\n :\n this.getForgotPasswordContent()\n }\n \n
    \n
    \n Sign Up\n \n \n {this.state.hideSubmitButton ? : \"\"}\n
    \n
    \n )}\n \n \n
    \n
    \n );\n }\n }\n\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(\n mapStateToProps, {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setStartDate,\n setEndDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setTenantId,\n setInitialValues,\n setDataSet,\n setAttribute,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n setMonitorInitialValues,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n setMLModel,\n addModelPerformance,\n addModelDetails,\n addMonitorDQListViewData,\n addMetrics,\n addDatasetVersions,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyDetails,\n addRecencyPreview,\n addRecentHistory,\n addDataSize,\n prefetchMonitorState,\n storeMetadataDetails,\n noIntegration\n}\n)(Login);","import React from 'react';\nimport Image from './image';\nimport {removeLocalStorageKeys, checkExpiryPowerBI, getProtocol} from \"../utils/common_utils\";\nimport {browserHistory} from 'react-router';\n\n\nclass ErrorHandler extends React.Component {\n constructor(props) {\n super(props);\n this.goToLogin = this.goToLogin.bind(this);\n }\n componentWillUnmount() {\n var element = document.getElementById(\"root\");\n element.classList.add(\"main-wrap\");\n }\n\n goToLogin() {\n removeLocalStorageKeys();\n if(checkExpiryPowerBI()===false){\n browserHistory.push('/');\n }else{\n let powerbiip = process.env.REACT_APP_POWERBI_BASE_URL;\n let protocol = getProtocol(powerbiip);\n window.location = protocol+'//'+powerbiip;\n }\n }\n\n render(){\n var element = document.getElementById(\"root\");\n element.classList.remove(\"main-wrap\");\n return (\n <>\n
    \n
    \n
    \n \n \n
    \n
    \n

    Oops! Something went wrong…

    \n

    Go back to the previous page and try again. If you think something is broken, report a problem.

    \n
    \n
    \n \n
    \n
    \n
    \n \n );\n }\n}\n\nexport default ErrorHandler;\n","import React from 'react';\nimport Image from '../components/image';\nimport Banner from '../components/banner';\nimport Login from './components/login';\nimport ErrorHandler from '../components/error_500';\nimport { getFeatureAccess } from \"../utils/common_utils\";\nimport { IS_SAAS_EDITION } from \"../utils/constant\"\nclass Home extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.setPasswordPage = this.setPasswordPage.bind(this);\n this.setLoginPage = this.setLoginPage.bind(this);\n this.state = {\n isLoginPage: true,\n errorOccurred: false,\n featureAccess: getFeatureAccess(),\n };\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n }\n\n setPasswordPage() {\n this.setState({ isLoginPage: false });\n }\n setLoginPage() {\n this.setState({ isLoginPage: true });\n }\n\n render() {\n // let LOGIN_ENVIRONMENT = process.env.REACT_APP_CUSTOM_NODE_ENV_LOGIN;\n // commenting for common footer className={\"user-prelogin\" + (LOGIN_ENVIRONMENT ? ' has-sticky-footer': '')}\n return (\n this.state.errorOccurred ?\n \n :\n
    \n
    \n
    \n\n
    \n {\n IS_SAAS_EDITION?\n \n :\n \n } \n \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default Home;","import React from 'react';\nimport Image from '../../components/image';\n\nclass Banner extends React.Component {\n\n render() {\n return (\n
    \n
    \n
    \n

    Transform your business with powerful data reliablity monitoring

    \n
    \n
    \n
    \n
    \n \n
    \n

    For Data Engineers

    \n

    Continuously identify data issues during ingestion or in upstream pipelines\n

    \n
    \n
    \n
    \n \n
    \n

    For Data Stewards

    \n

    Easily comply with regulations\n by reporting continuously\n updated data\n quality measures

    \n
    \n
    \n
    \n
    \n
    \n \n
    \n

    For Data Scientists

    \n

    Keep an eagle eye on data drifts in your input datasets and output model\n predictions

    \n
    \n
    \n
    \n \n
    \n

    For DevOps and DataOps

    \n

    Effortlessly compare data consistency across different environments and\n databases

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Banner;","import React from 'react';\nimport {browserHistory} from 'react-router';\nimport CopyRights from '../../components/copyrights';\nimport Image from '../../components/image';\nimport { faEnvelope, faLock, faEye, faEyeSlash, faUser, faBuilding, faPhoneAlt, faArrowRight } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { joinExistingTeamSignUp } from \"../../utils/event_handling\";\nimport { iam_google_signup, iam_ip } from \"../../utils/ip_details\";\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport {QUALDO_WEBSITE_URL} from \"../../utils/constant\";\nimport {getProtocol,userValidation} from \"../../utils/common_utils\";\nimport Modal from 'react-bootstrap/Modal';\nimport { PhoneNumberUtil } from 'google-libphonenumber';\n\nimport {postMixpanel, postMixpanelPeopleData, postMixPanelIdentifyData} from '../../mixpanel';\n\n\nclass SignupForm extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n formValid: false,\n errorCount: null,\n error: null,\n hideSubmitButton: false,\n errors: {\n email: '',\n username: '',\n company: '',\n password: '',\n confirmPassword: '',\n phone: ''\n },\n passwordIcon: faEye,\n passwordType: \"password\",\n confirmPasswordIcon: faEye,\n confirmPasswordType: \"password\"\n };\n this.hideAlert = this.hideAlert.bind(this);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.changeConfirmPasswordIcon = this.changeConfirmPasswordIcon.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.joinExistingTeamSignUp = joinExistingTeamSignUp.bind(this);\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n handleSubmit = (event) => {\n this.disableButton();\n let { email, password, company, username, phone } = event;\n this.props.setEmail(email,\"signup\");\n const qualdoPlan = localStorage.getItem(\"qualdoPlan\");\n const qualdoPlanCycle = localStorage.getItem(\"qualdoPlanCycle\");\n const qualdoEdition = localStorage.getItem(\"qualdoEdition\");\n\n postMixpanel('New user signup', {\n distinct_id: email\n });\n\n postMixPanelIdentifyData(email);\n\n postMixpanelPeopleData({\n $first_name: username,\n $last_name: company,\n $email: email\n });\n\n const data = {\n user_signup_type: \"qualdo_db_auth\", company: company, email: email,\n first_name: username, last_name: username, username: username, password: password,\n phone_number: phone\n };\n\n if (qualdoPlan !== undefined && qualdoPlan !== null) {\n data[\"plan\"] = qualdoPlan;\n }\n\n if (qualdoPlanCycle !== undefined && qualdoPlanCycle !== null) {\n data[\"cycle\"] = qualdoPlanCycle;\n }\n\n if (qualdoEdition !== undefined && qualdoEdition !== null) {\n data[\"edition\"] = qualdoEdition;\n }\n\n let protocol = getProtocol(iam_ip);\n fetch(protocol+'//'+iam_ip+'/signup', {\n method: 'POST',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth' }\n }).then(\n res => res.json()\n ).catch(\n error => console.error(\"signup api failed\")\n ).then(\n (response) => {\n if(response.code === 200) {\n let res = response.response;\n let redirect_to_login = res[\"redirect_to_login\"];\n if (redirect_to_login !== undefined && redirect_to_login === true) {\n browserHistory.push(\"/\");\n } else {\n this.props.setEmailPage(\"We have sent a verification link via your registered email. Please check your email to continue\");\n browserHistory.push({\n pathname: '/verify-email',\n state: { email:email}\n })\n\n }\n } else if(response.code === 401 && response.message === \"invalid_plan\"){\n browserHistory.push(\"/invalid-request\");\n } else {\n this.setState({error: response.message, hideSubmitButton: false});\n }\n }\n )\n }\n\n hideAlert() {\n this.setState({\n error: null,\n });\n }\n\n goToQualdoWebsite(){\n window.location.href = QUALDO_WEBSITE_URL;\n }\n changePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n\n }\n\n changeConfirmPasswordIcon() {\n let state = this.state.confirmPasswordIcon;\n if (state.iconName === \"eye\") {\n this.setState({confirmPasswordIcon: faEyeSlash});\n this.setState({confirmPasswordType: \"text\"});\n } else {\n this.setState({confirmPasswordIcon: faEye});\n this.setState({confirmPasswordType: \"password\"});\n }\n\n }\n\n render() {\n postMixpanel('In normal signup page', { });\n const loginSchema = yup.object({\n email: yup.string().email(\"Email must be a valid email\").required(\"Email is a required field\"),\n password: yup.string().required(\"Password is a required field\").matches(/^(?=.*[a-z])(?=.*\\d)(?=.*[@$!%*#?&._-])[A-Za-z\\d@$!%*#?&._-]{8,}$/,\n \"Use at least 8 characters containing at least 1 number, 1 lowercase letter, 1 special character in @$!%*#?&._-\"),\n confirmPassword: yup.string().required(\"Confirm Password is a required field\").oneOf([yup.ref('password'), null],'Passwords must match',),\n username: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Name is a required field\").test(\n 'Name test',\n 'Name is invalid',\n function test(value) {\n let val = userValidation(value);\n return val;\n }\n ),\n company: yup.string().min(2,\"Company must be at least 2 characters\").matches(/^[A-Za-z ]+$/,\"Company name should contains letters only\").required(\"Company is a required field\"),\n phone: yup.mixed().required(\"Mobile number is a required field\").test(\n 'mobile number test',\n 'Mobile Number is not valid. Enter valid country code',\n function test(value) {\n try{\n const phoneUtil = PhoneNumberUtil.getInstance()\n if(value[0] !== '+'){\n value = '+' + value}\n const val = phoneUtil.parse(value)\n let result = phoneUtil.isValidNumber(val)\n return result\n }\n catch(error){\n console.error(error)\n return false\n }\n }\n )\n\n });\n const qualdoPlan = localStorage.getItem(\"qualdoPlan\");\n let invalidRequest = false;\n if (this.props.showInvalidRequestModal !== undefined && this.props.showInvalidRequestModal !== null && this.props.showInvalidRequestModal === true){\n invalidRequest = true;\n }\n return (\n <>\n \n \n
    \n
    \n
    Your are trying to subscribe to an Invalid plan.
    \n
    \n Please subscribe to one of the valid plans.\n
    \n
    \n \n \n \n
    \n
    \n

    Get Started in 30 seconds

    \n
    \n
    No credit card required
    \n

    { qualdoPlan === null || qualdoPlan === undefined ? \"Try it free for 14 days and monitor data and model as you like.\" : \"Try it for free till 10 GB data & 2 models and monitor data and model as you like.\"}

    \n
    \n {\n this.state.error ?\n
    \n {this.state.error}\n
    : \"\"\n }\n {\n if(values.isJoinTeamButton){\n this.joinExistingTeamSignUp(values);\n } else {\n this.handleSubmit(values);\n }\n }}\n initialValues={{ email: '', username: '', company: '',\n password: '', confirmPassword: '', phone: '', isJoinTeamButton: false}}\n >\n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n setFieldValue,\n isValid,\n }) => (\n
    \n
    \n \n \n \n \n \n \n \n { touched.email && errors.email }\n \n \n \n \n \n \n \n \n \n \n { touched.username && errors.username }\n \n \n \n \n \n \n \n \n \n \n { touched.company && errors.company }\n \n \n \n \n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n \n \n \n \n \n \n \n { touched.confirmPassword && errors.confirmPassword }\n \n \n \n \n \n \n \n \n \n \n \n \n \n { touched.phone && errors.phone }\n \n \n Please provide Country code
    \n
    \n \n
    \n
    \n \n \n \n \n \n {\n this.state.hideSubmitButton ?\n
    \n
    \n )}\n \n \n Already have an account?\n \n
    \n \n );\n }\n}\n\nexport default SignupForm;","import React from 'react';\nimport CopyRights from '../../components/copyrights';\nimport { faEnvelope, faArrowLeft, faUserFriends } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { call_post_api } from \"../../utils/event_handling\"\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\n\n\nclass TeamSignup extends React.Component {\n constructor(props) {\n super(props);\n this.hideAlert = this.hideAlert.bind(this);\n this.state = {\n formValid: false,\n errorCount: null,\n hideSubmitButton: false,\n error: null,\n errors: {\n adminEmail: '',\n msg: ''\n }\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n hideAlert() {\n this.setState({\n error: null,\n });\n }\n\n handleSubmit = (event) => {\n this.disableButton();\n let { adminEmail } = event;\n this.props.setEmail(adminEmail,\"joinTeam\");\n if ( this.props.userDetails[\"email\"] === adminEmail ) {\n this.setState({error: \"Provide Admin's email\", hideSubmitButton: false});\n } else {\n const requestData = { email: this.props.userDetails[\"email\"], admin_email: adminEmail,\n user_id: this.props.userDetails[\"user_id\"], team_id: this.props.userDetails[\"team_id\"] };\n call_post_api(iam_ip, \"/request/invite\", requestData).then((response) => {\n if ( response === undefined ) {\n this.setState({error: \"Could not process your request.\", hideSubmitButton: false});\n } else if( response.code === 200 ) {\n this.props.setEmailPage(response.message);\n } else {\n this.setState({error: response.message, hideSubmitButton: false});\n }\n });\n }\n }\n\n render() {\n const adminSchema = yup.object({\n adminEmail: yup.string().email().required(\"Admin Email is a required field\")\n });\n return (\n
    \n

    Do you wish to join an existing team?

    \n
    Team Admin’s Email
    \n {\n this.state.error ?\n
    \n {this.state.error}\n \n
    : \"\"\n }\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n }) => (\n
    \n
    \n \n \n \n \n \n \n \n { touched.adminEmail && errors.adminEmail }\n \n \n \n \n
    \n
    \n \n Back\n \n \n
    \n
    \n )}\n \n
    \n );\n }\n}\n\nexport default TeamSignup;\n","import React from 'react';\nimport CopyRights from '../../components/copyrights';\nimport {browserHistory} from 'react-router';\nimport { faEnvelope, faFlag, faBuilding, faPhoneAlt, faArrowLeft } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { call_post_api } from \"../../utils/event_handling\";\nimport { PhoneNumberUtil } from 'google-libphonenumber';\nimport { encryptForLocalUsage } from \"../../utils/common_utils\";\nimport { LOCAL_STORE_KEY } from \"../../utils/constant\"\n\nclass GoogleSignup extends React.Component {\n constructor(props) {\n super(props);\n this.googleSignUp = this.googleSignUp.bind(this);\n this.hideAlert = this.hideAlert.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.state = {\n name:localStorage.getItem('user_name'),\n email: localStorage.getItem('emailId'),\n errors: null\n };\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n hideAlert() {\n this.setState({\n errors: null,\n hideSubmitButton: false\n });\n }\n\n googleSignUp(event) {\n this.disableButton();\n const {email,phone,company} =event\n const google_data = {email: email, phone: phone, company: company};\n const qualdoPlan = localStorage.getItem(\"qualdoPlan\");\n const qualdoPlanCycle = localStorage.getItem(\"qualdoPlanCycle\");\n const qualdoEdition = localStorage.getItem(\"qualdoEdition\");\n if (qualdoPlan !== undefined && qualdoPlan !== null) {\n google_data[\"plan\"] = qualdoPlan;\n }\n\n if (qualdoPlanCycle !== undefined && qualdoPlanCycle !== null) {\n google_data[\"cycle\"] = qualdoPlanCycle;\n }\n\n if (qualdoEdition !== undefined && qualdoEdition !== null) {\n google_data[\"edition\"] = qualdoEdition;\n }\n call_post_api(iam_ip, 'update_google_user', google_data).then((response) => {\n if(response.code === 200) {\n const now = new Date();\n const item = {\n value: response['response']['auth_token'],\n user_id : response['response']['user_id'],\n team_id: response['response']['team_id'],\n expiry: now.getTime() + 150*60000\n };\n setTimeout(() => browserHistory.push('/'), 9000000);\n localStorage.setItem('sessionToken', JSON.stringify(item));\n let teamID = response['response']['team_id'];\n localStorage.setItem('team_id', teamID);\n localStorage.setItem('user_name', response['response']['user_name']);\n localStorage.setItem('user_id', response['response']['user_id']);\n localStorage.setItem(\"org_id\", response['response']['org_id']);\n localStorage.setItem('user_signup_type', response['response']['user_signup_type']);\n localStorage.setItem(\"permissions\", response[\"response\"][\"permissions\"]);\n localStorage.setItem(\"DataSetupStatus\", false);\n const accountFeatures = response[\"account_features\"][\"plan_details\"];\n\n /**\n * Storing warning_message key into accountFeature and update buffer and expire key name\n */\n accountFeatures['warning_message'] = response[\"account_features\"][\"warning_message\"]\n accountFeatures['isPlanExpired'] = accountFeatures[\"is_plan_expired\"]\n\n // Encrypt User Details\n let encrypt_data = encryptForLocalUsage(accountFeatures)\n localStorage.setItem(LOCAL_STORE_KEY, encrypt_data)\n\n // localStorage.setItem(\"warning_message\", response[\"account_features\"][\"warning_message\"]);\n // localStorage.setItem(\"isPlanExpired\",accountFeatures[\"is_plan_expired\"])\n\n localStorage.setItem(\"plan_details\", JSON.stringify(accountFeatures)) \n \n let feature_access = response['response'][\"feature_access\"];\n const encryptedFA = encryptForLocalUsage(feature_access);\n localStorage.setItem('featureAccess', encryptedFA);\n if (feature_access[\"skip_setup\"] === true)\n {\n browserHistory.push(\"/quick-start\");\n }\n else{\n browserHistory.push(\"/setup\");\n }\n } else if(response.code === 401 && response.message === \"invalid_plan\"){\n browserHistory.push(\"/invalid-request\");\n }else {\n this.setState({errors:response.message, hideSubmitButton: false});\n }\n });\n }\n render() {\n let prefilled_user_name = localStorage.getItem('user_name');\n let prefilled_email = localStorage.getItem('emailId');\n if (prefilled_email === \"undefined\" || prefilled_email === null || prefilled_user_name === \"undefined\" || prefilled_user_name === null){\n window.location = '/';\n return null;\n }\n\n const loginSchema = yup.object({\n company: yup.string().min(2,\"Company must be at least 2 characters\").required(\"Company is a required field\"),\n phone: yup.mixed().required(\"Mobile number is a required field\").test(\n 'mobile number test',\n 'Mobile Number is not valid. Enter valid Country code',\n function test(value) {\n try{\n const phoneUtil = PhoneNumberUtil.getInstance()\n if(value[0] !== '+'){\n value = '+' + value}\n const val = phoneUtil.parse(value)\n let result = phoneUtil.isValidNumber(val)\n return result\n }\n catch(error){\n console.error(error)\n return false\n }\n }\n )\n });\n return (\n
    \n

    Get Started in 30 seconds

    \n
    \n
    No credit card required
    \n

    Try it free for 14 days and monitor as many models and data as you like.

    \n
    \n { this.state.errors ?\n
    \n {this.state.errors}\n
    : \"\"\n }\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n
    \n \n \n \n \n \n \n \n { errors.name }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n { touched.company && errors.company }\n \n \n \n \n \n \n \n \n \n \n { touched.phone && errors.phone }\n \n \n Please provide Country code
    \n
    \n \n
    \n
    \n Back\n \n {\n this.state.hideSubmitButton ? : ''\n }\n
    \n
    )}\n \n Already have an account?\n
    \n );\n }\n}\n\nexport default GoogleSignup;\n","import React from 'react';\nimport Image from '../../components/image';\nimport Banner from './banner';\n\nclass EmailNotification extends React.Component {\n\n render() {\n let isPassWordThankyou = this.props.isPasswordThankYou;\n if(isPassWordThankyou){\n return (\n
    \n
    \n \n \n \n

    Thank you!

    \n

    Please check your email!

    \n

    Look out for an email from us with instructions on how to reset your password!

    \n

    Didn’t receive an email? Try a different email address

    \n
    \n
    \n );\n\n } else{\n if(this.props.signupType === \"joinTeam\") {\n return (\n
    \n
    \n \n \n \n

    Thank you!

    \n

    We have sent your request to the Admin({this.props.email}).

    \n

    You will receive an email if admin approves your request.

    \n

    Didn’t receive an email? Try a different email address

    \n
    \n
    \n );\n }else{\n let email = this.props.email;\n if (this.props.route !== undefined && this.props.route.isNormalSignup === true) {\n const {location} = this.props\n // Case happens during normal signup\n email = location.state.email;\n }\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n \n

    Thank you!

    \n

    Check your Email!

    \n

    We have sent a verification email to {email}. Follow instructions in the email to get started!

    \n

    Didn’t receive an email? Try a different email address

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n );\n }\n }\n \n }\n\n}\n\nexport default EmailNotification;\n","import React from 'react';\nimport Image from '../components/image';\nimport Banner from './components/banner';\nimport SignupForm from './components/signup';\nimport TeamSignup from './components/team';\nimport GoogleSignup from './components/google';\nimport EmailNotification from './components/email';\nimport ErrorHandler from '../components/error_500';\nimport { postUIlogs } from \"../utils/event_handling\";\n\n\nconst pageTypes = {\n SIGNUP: 0,\n TEAM: 1,\n GOOGLE: 2,\n EMAIL: 3,\n INVALID_REQUEST: 4\n}\n\nclass Signup extends React.Component {\n constructor(props) {\n super(props);\n this.setSignupPage = this.setSignupPage.bind(this);\n this.setTeamPage = this.setTeamPage.bind(this);\n this.setGooglePage = this.setGooglePage.bind(this);\n this.setEmailPage = this.setEmailPage.bind(this);\n this.setEmail = this.setEmail.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n let pageType = 0;\n if (this.props.route !== undefined && this.props.route.pageType !== undefined && this.props.route.pageType !== null) {\n pageType = this.props.route.pageType;\n } else if( this.props.pageType !== undefined && this.props.pageType !== null) {\n pageType = this.props.pageType;\n }\n this.state = {\n errorOccurred: false,\n pageType: pageType,\n userDetails: null,\n responseText: \"\",\n signupType: \"signup\",\n email: \"\"\n };\n }\n static getDerivedStateFromProps(props, state) {\n let windowPathName = window.location.pathname;\n if (windowPathName === \"/invalid-request\" && props.route.pageType !== undefined && props.route.pageType !== state.pageType){\n return {\n pageType: props.route.pageType\n }\n }\n return null;\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n setSignupPage() {\n this.setState ({pageType: pageTypes.SIGNUP});\n }\n\n setTeamPage(data) {\n this.setState ({pageType: pageTypes.TEAM, userDetails: data[\"response\"]});\n }\n\n setGooglePage() {\n this.setState ({pageType: pageTypes.GOOGLE});\n }\n\n setEmailPage(responseText) {\n this.setState ({pageType: pageTypes.EMAIL, responseText: responseText});\n }\n setEmail(value,type) {\n this.setState({email:value,signupType:type});\n }\n renderPage(pageType) {\n switch(pageType) {\n case pageTypes.SIGNUP:\n return ;\n case pageTypes.TEAM:\n return ;\n case pageTypes.GOOGLE:\n return ;\n case pageTypes.EMAIL:\n return ;\n case pageTypes.INVALID_REQUEST:\n return ;\n default:\n return ;\n }\n }\n\n render() {\n return (\n this.state.errorOccurred ?\n \n :\n
    \n
    \n
    \n
    \n \n {this.renderPage(this.state.pageType)}\n
    \n
    \n \n
    \n
    \n );\n }\n\n}\n\nexport default Signup;","import React from \"react\";\nimport $ from 'jquery';\nclass WarningMessageHeader extends React.Component {\n\n hidebar(){\n $('.global-notifications-bar').addClass('d-none');\n }\n render() {\n\n return (\n (this.props.warning_message !== null && this.props.warning_message !== undefined) &&\n
    \n \n
    {this.props.warning_message}
    \n
    \n
    \n\n
    \n
    \n {this.props.quick_start===true\n ?\n \n :\n \n }\n
    \n
    \n );\n }\n}\n\nexport default WarningMessageHeader;\n\n\n\n\n","import React from \"react\";\nimport Zendesk from \"react-zendesk\";\nconst ZENDESK_KEY = \"58986417-35ca-4773-899c-348cdd0b099d\";\n\nconst setting = {\n color: {\n theme: \"#F64E60\",\n launcherText: \"#ffffff\",\n widgetTitle: \"#ffffff\"\n },\n launcher: {\n chatLabel: {\n \"en-US\": \"Need Help\"\n }\n },\n contactForm: {\n fields: [\n { id: \"name\", prefill: { \"*\": localStorage.getItem('user_name') } },\n { id: \"email\", prefill: { \"*\": localStorage.getItem('emailId') } }\n ]\n }\n};\n\nclass HelpZendesk extends React.Component {\n\n render() {\n return ();\n }\n\n}\n\nexport default HelpZendesk;","import React from \"react\";\nimport Image from \"./image\";\n\nclass OfflineComponent extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.state={\n show: true\n }\n }\n handleClick(){\n this.setState({show:false});\n }\n render() {\n if(this.state.show) {\n return (\n <>\n
    \n
    \n \n \n
    \n
    Your connection was interrupted
    \n
    \n

    It looks like we are having trouble connecting.

    \n

    \n Please check your internet connection and try again.\n

    \n
    \n
    \n
    \n
    \n \n );\n }else {\n return('');\n }\n\n }\n}\n\n\nexport default OfflineComponent;","import React from 'react';\nimport Image from './image';\nimport Navbar from 'react-bootstrap/Navbar';\nimport Nav from 'react-bootstrap/Nav';\nimport NavDropdown from 'react-bootstrap/NavDropdown';\nimport WarningMessageHeader from './warningMessageHeader';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport {handleClick} from \"../utils/event_handling\";\nimport HelpZendesk from \"./help.js\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { connect } from \"react-redux\";\nimport {browserHistory} from 'react-router';\n\nimport {\n faBell, faUser, faChartPie, faHistory, faUserPlus, faServer,\n faUserCog, faUserFriends, faSignOutAlt, faBezierCurve, faDatabase,\n faShoppingBag, faExclamationTriangle, faArrowRight, faHdd, faQuestion,\n faHeadset, faBook, faDollarSign, faRocket, faUserMinus, faSearch\n} from '@fortawesome/free-solid-svg-icons';\nimport { getApi } from \"../utils/event_handling\";\nimport $ from \"jquery\";\nimport { Link } from 'react-router';\nimport OfflineComponent from './offlineComponent'\nimport { Offline } from \"react-detect-offline\";\nimport {get_document_link, getTrimmedNotificationMessage, getFeatureAccess, decryptForLocalUsage} from \"../utils/common_utils\";\nimport {IS_NONE_CHECK, REQUIRES_EXCLAMATION_TRIANGLE_ICON, LOCAL_STORE_KEY, QUALDO_DOCUMENTATION} from \"../utils/constant\";\n\n\nconst userToggle = React.forwardRef(({ children, onClick }, ref) => (\n {\n e.preventDefault();\n onClick(e);\n }}\n >\n \n {children}\n \n));\n\nconst helpToggle = React.forwardRef(({ children, onClick }, ref) => (\n
    {\n e.preventDefault();\n onClick(e);\n }}\n >\n \n \n {children}\n \n
    \n ));\n\nconst customLink = React.forwardRef(({link, tab, children, onClick}, ref) => (\n \n {children}\n \n));\n\nconst goToNotifications = () => {\n window.location.href = \"/notification\";\n}\nconst bellToggle = React.forwardRef(({ children, onClick, unReadMsg }, ref) => {\n\n if (unReadMsg !=null && unReadMsg.length > 0)\n {\n return ( {\n e.preventDefault();\n onClick(e);\n }}\n >\n \n {children}\n \n );\n } else {\n return ( {\n e.preventDefault();\n goToNotifications();\n }}\n >\n \n {children}\n \n );\n }\n },\n);\n\n\nlet activeItems = {\n 'configure': 'nav-item',\n 'profile': 'nav-item',\n 'monitor': 'nav-item',\n 'metrics': 'nav-item',\n 'alerts': 'nav-item',\n 'discover': 'nav-item'\n};\nlet SUB_BRAND = process.env.REACT_APP_CUSTOM_SUB_BRAND\nlet BRAND_LOGO = process.env.REACT_APP_CUSTOM_BRAND_LOGO\nclass NavigationHeader extends React.Component {\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.handleHelp = this.handleHelp.bind(this);\n this.onKeyDownHandler = this.onKeyDownHandler.bind(this);\n this.check_access_billing = this.check_access_billing.bind(this);\n this.closeWarning = this.closeWarning.bind(this);\n\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let warning_message = decrypt_data['warning_message']\n // let warning_message = localStorage.getItem(\"warning_message\");\n\n let showWarning = false;\n this.input = null;\n if (warning_message !== undefined && warning_message !== null && warning_message !== '' && warning_message !== 'undefined') {\n showWarning = true;\n }\n this.state = {\n unreadNotifications: null,\n featureAccess: getFeatureAccess(),\n selectedView : null,\n notificationLoaded: false,\n notificationType: null,\n selectedNotification: null,\n zendeskShow: false,\n showWarning: showWarning,\n warningMessage: warning_message,\n prefetch_load: this.props.prefetch_load === true ? this.props.prefetch_load : false\n }\n\n this.getNotificationHeaderData();\n }\n \n pageRefresh(internetstatus){\n if(internetstatus === true){\n window.location.reload(false);\n }\n }\n\n onKeyDownHandler = e => {\n if (e.keyCode === 13) {\n e.preventDefault();\n if(this.input.value.trim()){\n let data = {\"search_text\":this.input.value }\n browserHistory.push({\n pathname: '/discover',\n state: data // your data array of objects\n })\n }\n\n }\n };\n\n componentDidMount() {\n let header = $(\".qd-header\");\n let body = $(\"body\");\n let shrinkIt = header.height();\n $(window).scroll(function () {\n let scroll = $(window).scrollTop();\n if (scroll >= shrinkIt) {\n header.addClass(\"sticky-header\");\n body.addClass(\"has-sticky-header\");\n } else {\n header.removeClass(\"sticky-header\");\n body.removeClass(\"has-sticky-header\");\n }\n });\n $(\"#navBarToggler\").click(function() {\n if ($(\"#navBarToggler\").hasClass(\"collapsed\")) {\n $(\"#navBarToggler\").removeClass(\"collapsed\");\n $(\"#navbarCollapse\").addClass(\"show\");\n } else {\n $(\"#navBarToggler\").addClass(\"collapsed\");\n $(\"#navbarCollapse\").removeClass(\"show\");\n }\n });\n }\n\n static getDerivedStateFromProps(props, state) {\n const userNotificationDataFromProps = props.dataModule.userNotificationData;\n\n const currStateUnreads = state.unreadNotifications;\n const propsUnreadsCount = userNotificationDataFromProps.unreadNotifications.length;\n const unreadCountMisMatch = (currStateUnreads !== null) && (currStateUnreads.length !== propsUnreadsCount);\n\n const firstTimeLoading = state.notificationLoaded === false && userNotificationDataFromProps.loaded === true;\n\n if (firstTimeLoading || unreadCountMisMatch) {\n return {\n unreadNotifications: userNotificationDataFromProps.unreadNotifications,\n notificationLoaded: true\n };\n }\n\n return null;\n }\n\n goToTeamMate() {\n window.location.href = \"/teammate\";\n }\n\n getNotificationHeaderData() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" ||\n sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n\n }\n\n\n handleHelp() {\n //this.setState({zendeskShow:true});\n window.zE(function() {\n window.zE.show();\n window.zE.identify({\n name: localStorage.getItem('user_name'),\n email: localStorage.getItem('emailId'),\n });\n });\n window.zE.activate({hideOnClose: false});\n }\n\n getErrorIcon(notification_type){\n if (notification_type === \"Data Quality Error\"){\n return faServer;\n }else if(notification_type === \"Model Error\"){\n return faHdd;\n }else if(notification_type === \"Limit Exceeded Alert\"){\n return faExclamationTriangle;\n }else if(notification_type === \"Payment Failure Alert\"){\n return faDollarSign;\n } else if (notification_type === \"Missing Dataset\"){\n return faServer;\n } else if (notification_type === \"Schema Drift\"){\n return faServer;\n } else {\n if (REQUIRES_EXCLAMATION_TRIANGLE_ICON.includes(notification_type)) {\n return faExclamationTriangle;\n }\n }\n }\n\n getNotificationSendTimeInMinutes(createdTimeString){\n let minutes = null;\n let hours = null;\n let days = null;\n var currentTime = new Date();\n var createdTime = new Date(createdTimeString);\n minutes = parseInt((currentTime-createdTime)/(60*1000));\n hours = parseInt((currentTime-createdTime)/(3600*1000));\n days = parseInt((currentTime-createdTime)/(24*3600*1000));\n if(minutes != null && minutes <= 60){\n return minutes + \" Mins ago\";\n\n }else if(hours != null && hours <= 24){\n return hours + \" Hours ago\";\n\n }else{\n return days + \" days ago\"\n }\n }\n\n setView(evt, notificationType, selectedView) {\n window.location.href = \"/notification?notification_id=\" + evt;\n }\n\n\n renderNotifications() {\n let requests = [];\n if (this.state.unreadNotifications === undefined || this.state.unreadNotifications === null) {\n return requests;\n }\n\n\n requests = this.state.unreadNotifications.map(val => val.notification_type === \"request\" || val.notification_type === \"request_auto_deleted\" ?\n {this.setView(evt, val.notification_type, val)}}>\n {\n val.notification_type === \"request\" ?\n <>\n
    \n \n \n \n
    \n
    \n
    \n
    \n Invitation Request\n
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"username\"]} would like to join your team on Qualdo.

    \n
    \n \n :\n <>\n
    \n \n \n \n
    \n
    \n
    \n
    \n Request Auto Deleted\n
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n \n }\n
    \n :\n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n \n \n
    \n
    \n
    \n
    {val[\"notification_type\"]}
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {getTrimmedNotificationMessage(val)}

    \n
    \n
    \n );\n\n return requests;\n }\n\n closeWarning(){\n this.setState({showWarning: false, warningMessage: null});\n }\n\n\n check_access_billing() {\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let isPlanExpired = ((decrypt_data['isPlanExpired'] === true && decrypt_data['isInBufferPeriod'] === false) ? true : false);\n // let isPlanExpired = ((localStorage.getItem(\"isPlanExpired\") === \"true\" && localStorage.getItem(\"isInBufferPeriod\") === \"false\") ? true : false);\n\n return (\n <>\n {\n (this.state.featureAccess !== null && this.state.featureAccess[\"usage_payment\"] === false &&\n permissionsList.includes('BillingAccess')) ?\n <>\n \n \n Team\n \n \n :\n permissionsList.includes('BillingAccess') ?\n\n <>\n \n \n Plan & Usage\n \n \n \n Upgrade Plan\n \n \n \n Billing & Payment\n \n \n \n Team\n \n : ''\n }\n \n );\n }\n shouldComponentUpdate(){\n if(this.state.page === \"configure\") {\n if(this.state.prefetch_load === true) {\n return false;\n }else {\n return true;\n }\n }else {\n return true;\n }\n }\n\n componentDidUpdate(prevProps){\n if(prevProps.page === \"configure\") {\n if (prevProps.prefetch_load !== this.props.prefetch_load) {\n this.setState({prefetch_load:this.props.prefetch_load});\n }\n }\n }\n\n render() {\n //let permissions = localStorage.getItem(\"permissions\");\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let isPlanExpired = ((decrypt_data['isPlanExpired'] === true && decrypt_data['isInBufferPeriod'] === false) ? true : false);\n // let isPlanExpired = ((localStorage.getItem(\"isPlanExpired\") === \"true\" && localStorage.getItem(\"isInBufferPeriod\") === \"false\") ? true : false);\n\n for (let [key] of Object.entries(activeItems)) {\n activeItems[key] = \"nav-item\";\n }\n activeItems[this.props.page] = 'nav-item active'\n\n let warning_message;\n if (this.state.warningMessage !== null) {\n warning_message = this.state.warningMessage;\n }\n\n let notificationAlertClassName = \"\";\n let notificationCircleCount = \"\";\n\n const currUnreadNotifications = this.state.unreadNotifications;\n const unreadCount = IS_NONE_CHECK.includes(currUnreadNotifications) ? '' : currUnreadNotifications.length;\n\n if (unreadCount > 0) {\n notificationAlertClassName = \"badge alert-badge\";\n notificationCircleCount = unreadCount;\n }\n\n let hideProfileModelTab = true;\n let enableDiscoveryTab = false;\n let enablePowerBiTab = false;\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const profileModel = this.state.featureAccess[\"models\"];\n const discoverTab = this.state.featureAccess[\"discover\"];\n hideProfileModelTab = profileModel === false;\n enableDiscoveryTab = discoverTab === true;\n const powerbiTab = this.state.featureAccess[\"powerbi\"];\n enablePowerBiTab = powerbiTab === true;\n }\n\n return (\n <>\n {\n this.state.showWarning === true ?\n \n : ''\n }\n\n
    \n
    \n {(SUB_BRAND !== null && SUB_BRAND !== undefined) ?\n
    {SUB_BRAND}
    \n :\n ''\n }\n \n \n
    \n \n
    \n
    \n \n \n \n {this.props.page !== \"discover\" && enableDiscoveryTab ?
    \n
    \n
    \n
    \n \n
    \n this.input = n} className=\"form-control qd-quick-search__input\" placeholder=\"Search...\"/>\n
    \n
    \n
    : \"\"}\n
    \n
    \n\n \n \n \n {notificationCircleCount}\n \n { this.state.prefetch_load !== true && currUnreadNotifications !== null && isPlanExpired !== true ?\n \n \n \n {currUnreadNotifications.length} New Qualdo Notifications\n \n \n\n
    \n {this.renderNotifications()}\n
    \n\n \n View All Notifications\n \n \n \n \n
    : \"\"\n }\n
    \n\n\n
    \n
    \n
    \n
    \n \n \n \n \n \n Help Desk & Support\n \n \n \n Quick Start\n \n \n \n {QUALDO_DOCUMENTATION}\n \n \n \n
    \n {this.state.zendeskShow === true ? : \"\"}\n
    \n
    \n
    \n Hi,\n \n {localStorage.getItem('user_name')}\n \n \n \n \n\n \n Profile\n {this.check_access_billing()}\n \n \n Log Out\n \n \n \n
    \n
    \n
    \n
    \n\n\n
    \n \n \n \n \n
    \n \n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null) (NavigationHeader);\n\n\nexport function SimpleHeader() {\n let DataSetupStatus = localStorage.getItem(\"DataSetupStatus\");\n const canShowQuickStart = DataSetupStatus !== \"false\";\n let BRAND_LOGO = process.env.REACT_APP_CUSTOM_BRAND_LOGO\n\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let warning_message = decrypt_data['warning_message']\n // let warning_message = localStorage.getItem(\"warning_message\");\n \n let showWarning = false;\n if (warning_message !== undefined && warning_message !== null && warning_message !== '' && warning_message !== 'undefined') {\n showWarning = true;\n }\n \n return (\n <> \n {\n showWarning === true ?\n \n : ''\n }\n \n
    \n
    \n {(SUB_BRAND !== null && SUB_BRAND !== undefined) ?\n
    {SUB_BRAND}
    \n :\n ''\n }\n
    \n \n \n \n
    \n \n
    \n
    \n
    \n Hi,\n \n {localStorage.getItem('user_name')}\n \n \n \n \n \n \n Profile\n \n\n {\n canShowQuickStart ?\n \n Quick Start\n \n :\n ''\n }\n\n \n {QUALDO_DOCUMENTATION}\n \n \n \n Log Out\n \n \n \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n \n );\n\n}\n","import React from 'react';\nimport { faLock, faDatabase, faHandshake, faRocket, faCog, faUserCog, faCube, faHourglassHalf, faChartArea, faPlusCircle, faUserCircle, faBell, faUserFriends,faTachometerAlt,faSitemap } from '@fortawesome/free-solid-svg-icons';\nimport { faSearchengin} from '@fortawesome/free-brands-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nconst faIconMapping = {\n 'cog': faCog,\n 'cube': faCube,\n 'hourGlass': faHourglassHalf,\n 'chartArea': faChartArea,\n 'plusCircle': faPlusCircle,\n 'userCog': faUserCog,\n 'userCircle': faUserCircle,\n 'quickStart': faRocket,\n 'notifications': faBell,\n 'privacy': faLock,\n 'cookie': faDatabase,\n 'freeTrial': faHandshake,\n 'userFriends': faUserFriends,\n 'faSearchEngine': faSearchengin,\n 'tachometer':faTachometerAlt,\n 'faSitemap':faSitemap\n};\n\nclass BreadCrumb extends React.Component {\n render() {\n let icon = faIconMapping[this.props.icon];\n return (\n
    \n
    \n
    \n {this.props.sidenav ? : ''}\n
    \n
    \n
    {this.props.title}
    \n {\n this.props.separator ?\n <>\n \n
    {this.props.separatorData}
    \n : ''\n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default BreadCrumb;","import React from 'react';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\n\nclass DefaultHome extends React.Component {\n render() {\n return (\n
    \n \n \n
    \n );\n }\n}\n\nexport default DefaultHome;","import React from 'react';\nimport { faLock, faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api } from \"../../utils/event_handling\";\nimport {removeLocalStorageKeys} from \"../../utils/common_utils\";\nimport { MANDATE_RESET_PASSWORD } from '../../utils/constant';\n\n\n\nclass ResetForm extends React.Component {\n constructor(props) {\n super(props);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.resetPassword = this.resetPassword.bind(this);\n this.hideAlert = this.hideAlert.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.changeConfirmPasswordIcon = this.changeConfirmPasswordIcon.bind(this);\n this.state = {\n formValid: false,\n hideSubmitButton: false,\n errorCount: null,\n errors: '',\n passwordIcon: faEye,\n passwordType: \"password\",\n confirmPasswordIcon: faEye,\n confirmPasswordType: \"password\"\n };\n\n }\n\n\n resetPassword(event) {\n this.disableButton();\n const {password} = event;\n let token = localStorage.getItem('resetPwdToken');\n let reset_password = localStorage.getItem(MANDATE_RESET_PASSWORD.Reset_Password);\n let auth_token = localStorage.getItem('sessionToken')\n if (auth_token !== \"\" && auth_token !== null && auth_token !== undefined) {\n const item = JSON.parse(auth_token);\n auth_token = item.value;\n }\n let passwordData = {password:password};\n if (reset_password === MANDATE_RESET_PASSWORD.One){\n passwordData['authToken'] = auth_token;\n }\n call_post_api(iam_ip, 'reset-confirm?token='+token, passwordData).then((response) => {\n localStorage.removeItem(\"resetPwdToken\");\n if (response.code === 200) {\n if (reset_password === MANDATE_RESET_PASSWORD.One) {\n removeLocalStorageKeys()\n }\n window.location = '/';\n } else {\n this.setState({errors:response.message,hideSubmitButton: false});\n }\n });\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n changePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n\n }\n\n changeConfirmPasswordIcon() {\n let state = this.state.confirmPasswordIcon;\n if (state.iconName === \"eye\") {\n this.setState({confirmPasswordIcon: faEyeSlash});\n this.setState({confirmPasswordType: \"text\"});\n } else {\n this.setState({confirmPasswordIcon: faEye});\n this.setState({confirmPasswordType: \"password\"});\n }\n\n }\n\n hideAlert() {\n this.setState({\n errors: '',\n });\n }\n\n render() {\n const resetSchema = yup.object({\n password: yup.string().required(\"Password is a required field\").matches(/^(?=.*[a-z])(?=.*\\d)(?=.*[@$!%*#?&._-])[A-Za-z\\d@$!%*#?&._-]{8,}$/,\n \"Use at least 8 characters containing at least 1 number, 1 lowercase letter, 1 special character in @$!%*#?&._-\"),\n confirmPassword: yup.string().required(\"Confirm Password is a required field\").oneOf([yup.ref('password'), null],'Passwords must match',)\n });\n return (\n
    \n

    Set new password

    \n

    Create a new password for your account. If you have a problem with resetting your password,\n please send your queries to helpdesk@qualdo.ai

    \n
    \n {this.state.errors !== '' ?\n
    \n {this.state.errors}\n \n
    : ''\n }\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n Password*\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n \n Confirm Password*\n \n \n \n \n \n \n { touched.confirmPassword && errors.confirmPassword }\n \n \n \n \n \n \n \n
    \n )}\n \n
    \n
    \n );\n }\n}\n\nexport default ResetForm;","import React from 'react';\nimport Image from '../components/image';\nimport Banner from '../components/banner';\nimport ResetForm from './components/reset_password';\nimport ErrorHandler from '../components/error_500';\nimport { postUIlogs } from \"../utils/event_handling\";\nimport { MANDATE_RESET_PASSWORD } from '../utils/constant';\n\n\nclass resetPassword extends React.Component {\n constructor(props) {\n super(props);\n this.postUIlogs = postUIlogs.bind(this);\n this.state = {\n errorOccurred: false\n }\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n render() {\n let reset_password_token = localStorage.getItem(\"resetPwdToken\");\n let reset_password = localStorage.getItem(MANDATE_RESET_PASSWORD.Reset_Password);\n if (reset_password !== MANDATE_RESET_PASSWORD.One) {\n if (reset_password_token === undefined || reset_password_token === \"undefined\" || reset_password_token === null) {\n window.location = '/';\n return;\n }\n }\n\n return (\n this.state.errorOccurred ?\n \n :\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default resetPassword;","import React from 'react';\nimport { faLock, faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api } from \"../../utils/event_handling\";\nimport Image from '../../components/image';\nimport {browserHistory} from 'react-router';\n\n\nclass ResetForm extends React.Component {\n constructor(props) {\n super(props);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.setPassword = this.setPassword.bind(this);\n this.hideAlert = this.hideAlert.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.changeConfirmPasswordIcon = this.changeConfirmPasswordIcon.bind(this);\n this.state = {\n formValid: false,\n hideSubmitButton: false,\n errorCount: null,\n errors: '',\n passwordIcon: faEye,\n passwordType: \"password\",\n confirmPasswordIcon: faEye,\n confirmPasswordType: \"password\",\n successMessage: false,\n };\n\n }\n\n\n setPassword(event) {\n this.disableButton();\n const {password} = event;\n const passwordData = {password:password};\n let token = localStorage.getItem('resetPwdToken');\n call_post_api(iam_ip, 'set-password?token='+token, passwordData).then((response) => {\n localStorage.removeItem(\"resetPwdToken\");\n if (response.code === 200) {\n this.setState({successMessage: true});\n } else {\n this.setState({errors:response.message,hideSubmitButton: false});\n }\n });\n\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n changePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n\n }\n\n changeConfirmPasswordIcon() {\n let state = this.state.confirmPasswordIcon;\n if (state.iconName === \"eye\") {\n this.setState({confirmPasswordIcon: faEyeSlash});\n this.setState({confirmPasswordType: \"text\"});\n } else {\n this.setState({confirmPasswordIcon: faEye});\n this.setState({confirmPasswordType: \"password\"});\n }\n\n }\n\n gotoLogin() {\n browserHistory.push(\"/\");\n }\n\n hideAlert() {\n this.setState({\n errors: '',\n });\n }\n\n render() {\n const setSchema = yup.object({\n password: yup.string().required(\"Password is a required field\").matches(/^(?=.*[a-z])(?=.*\\d)(?=.*[@$!%*#?&._-])[A-Za-z\\d@$!%*#?&._-]{8,}$/,\n \"Use at least 8 characters containing at least 1 number, 1 lowercase letter, 1 special character in @$!%*#?&._-\"),\n confirmPassword: yup.string().required(\"Confirm Password is a required field\").oneOf([yup.ref('password'), null],'Passwords must match',),\n });\n return (\n <>\n {\n this.state.successMessage === true ?\n
    \n
    \n \n \n \n

    Thank you!

    \n

    Password set successfully!

    \n

    Password has been set for your account.

    \n \n
    \n
    \n :\n
    \n

    Set new password

    \n

    Create a new password for your account. If you have a problem with setting your password,\n please send your queries to helpdesk@qualdo.ai

    \n
    \n {this.state.errors !== '' ?\n
    \n {this.state.errors}\n \n
    : ''\n }\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n Password*\n \n \n \n \n \n \n { touched.password && errors.password }\n \n \n \n \n \n \n \n Confirm Password*\n \n \n \n \n \n \n { touched.confirmPassword && errors.confirmPassword }\n \n \n \n \n \n \n \n
    \n )}\n \n
    \n
    \n }\n \n );\n }\n}\n\nexport default ResetForm;","import React from 'react';\nimport Image from '../components/image';\nimport Banner from '../components/banner';\nimport ResetForm from './components/set_password';\nimport ErrorHandler from '../components/error_500';\nimport { postUIlogs } from \"../utils/event_handling\";\n\n\nclass setPasswordForm extends React.Component {\n constructor(props) {\n super(props);\n this.postUIlogs = postUIlogs.bind(this);\n this.state = {\n errorOccurred: false\n }\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n render() {\n return (\n this.state.errorOccurred ?\n \n :\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default setPasswordForm;","import React from 'react';\nimport { faEnvelope } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api } from \"../../utils/event_handling\";\nimport Image from '../../components/image';\nimport Banner from '../../components/banner';\n\n\n\nclass InitiateSetPassword extends React.Component {\n constructor(props) {\n super(props);\n this.setPassword = this.setPassword.bind(this);\n this.hideAlert = this.hideAlert.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.state = {\n formValid: false,\n hideSubmitButton: false,\n errorCount: null,\n errors: '',\n emailSent: false\n };\n\n }\n\n\n setPassword(event) {\n this.disableButton();\n const { email} = event;\n const passwordData = {email: email};\n call_post_api(iam_ip, 'send/set-password-link', passwordData).then((response) => {\n if (response.code === 200) {\n this.setState({emailSent: true});\n } else {\n this.setState({errors:response.message,hideSubmitButton: false});\n }\n });\n\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n hideAlert() {\n this.setState({\n errors: '',\n });\n }\n\n render() {\n let setPassword = localStorage.getItem(\"setPassword\");\n if (setPassword === \"undefined\" || setPassword === \"null\" || setPassword === null || setPassword === undefined || setPassword === false) {\n window.location = '/';\n return;\n }\n\n if (this.state.emailSent === true){\n localStorage.removeItem(\"setPassword\");\n }\n\n const setSchema = yup.object({\n email: yup.string().email(\"Email must be a valid email\").required(\"Email is a required field\"),\n });\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n { this.state.emailSent === false ?\n <>\n

    Set new password

    \n

    To set a password for your account, enter your email and click send email button. Email will be sent to your account with link. Using that link you can set password for this account. If you have a problem with setting your password,\n please send your queries to helpdesk@qualdo.ai

    \n
    \n {this.state.errors !== '' ?\n
    \n {this.state.errors}\n \n
    : ''\n }\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n Email Address *\n \n \n \n \n \n \n { touched.email && errors.email }\n \n \n \n \n
    \n )}\n \n
    \n \n :\n
    \n
    \n \n \n \n

    Thank you!

    \n

    Please check your email!

    \n

    Look out for an email from us with instructions on how to set your password!

    \n

    Didn’t receive an email? Try a different email address

    \n
    \n
    \n }\n
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default InitiateSetPassword;","import React from 'react';\nimport Image from '../../components/image';\n\nclass URLWidget extends React.Component {\n\n render() {\n return(\n
    \n \n \n \n

    Create your cute {this.props.title} URL

    \n

    Integrations are apps and databases that you can use to send data through your\n pipeline. Select your first integration below to get started.\n

    \n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n
    \n );\n }\n\n}\n\nexport default URLWidget;","import React from 'react';\nimport Select from 'react-select';\nimport { faPlusCircle, faDownload, faCloudUploadAlt, faArrowRight} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { handleFileSubmit } from \"../../utils/event_handling\";\nimport {userValidation} from \"../../utils/common_utils\";\nimport Modal from 'react-bootstrap/Modal';\nimport Dropzone from 'react-dropzone';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api } from \"../../utils/event_handling\";\nimport {ui_service_ip} from \"../../utils/ip_details\";\nimport Image from \"../../components/image\";\nimport ReactDOM from 'react-dom';\nimport {postMixpanel} from '../../mixpanel';\n\n\nclass MLModelEnvironment extends React.Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.showFileUpload = this.showFileUpload.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.checkEnv = this.checkEnv.bind(this);\n this.enableModelVersionCreation = this.enableModelVersionCreation.bind(this);\n this.closeModal = this.closeModal.bind(this);\n this.setFile = this.setFile.bind(this);\n this.showButtonAction = this.showButtonAction.bind(this);\n this.addEnvironment = this.addEnvironment.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.state = {\n errors: {\n },\n env_id:null,\n show: false,\n uploadClick:false,\n file:[],\n actionType: '',\n acceptCondition: false,\n showButton: false,\n clickAction: false,\n show_add_model_modal: null,\n hideSubmitButton: false\n }\n }\n\n showFileUpload() {\n postMixpanel(\"Clicked Bulk-add models in Configure->models\")\n this.setState({show_add_model_modal:(this.props.mlLimitExceed || this.props.change_request_exists === true), actionType: \"upload\"});\n if(this.props.mlLimitExceed === false){\n this.setState({show:true});\n }\n\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n handleClose() {\n this.setState({show: false});\n this.setState({uploadClick:false});\n }\n\n\n setFile(file){\n this.setState({\n file\n });\n }\n\n addEnvironment(event) {\n let {environment} = event;\n let session = localStorage.getItem(\"sessionToken\");\n const env_data = {env_name: environment, tenant_id: localStorage.getItem('team_id')};\n call_post_api(ui_service_ip, 'environment', env_data, session).then((response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", \"Environment added successfully\", '');\n let tenant_id = localStorage.getItem('team_id');\n let key = `environments_${tenant_id}`;\n sessionStorage.removeItem(key);\n this.setState({showButton: false});\n let env_data = response.env_data;\n this.props.updateEnvironmentList(env_data);\n } else {\n this.props.showToast(\"alert-danger\", response.message, '')\n }\n });\n postMixpanel('New Env created in Models Config');\n }\n\n checkEnv() {\n postMixpanel(\"Clicked add models to be monitored in Configure->Models\")\n let env = this.state.env_id;\n this.setState({clickAction:true});\n localStorage.setItem(\"env_id\",env);\n if(env !== null) {\n this.setState({show_add_model_modal:(this.props.mlLimitExceed || this.props.change_request_exists === true), actionType: \"add\"});\n if(this.props.mlLimitExceed === false){\n this.props.setPage(true);\n setTimeout(\n () => {\n var topOfElement = document.querySelector(\"#addModel\").offsetTop;\n window.scroll({ top: topOfElement, behavior: \"smooth\" });\n }, \n 100\n );\n }else{\n this.props.setPage(false);\n }\n }else{\n const containerchooseenv = ReactDOM.findDOMNode(this.refs.containerchooseenv)\n window.scrollTo({top:containerchooseenv.offsetTop,behavior: 'smooth'});\n }\n }\n\n enableModelVersionCreation() {\n this.setState({\n show_add_model_modal: (this.props.mlLimitExceed || this.props.change_request_exists === true),\n actionType: \"modelVersion\"\n });\n\n if (this.props.mlLimitExceed === false) {\n this.props.setModelVersion(true);\n } else {\n this.props.setModelVersion(false);\n }\n }\n\n handleChange = (selectedOption) => {\n this.setState({ env_id:selectedOption[\"value\"]});\n localStorage.setItem(\"env_id\",selectedOption[\"value\"]);\n }\n\n downloadSampleData = (e) => {\n e.preventDefault();\n\t\tfetch('https://samplecsv.blob.core.windows.net/mlmodel/mlmodel_template.json')\n\t\t\t.then(response => {\n\t\t\t\tresponse.blob().then(blob => {\n\t\t\t\t\tlet url = window.URL.createObjectURL(blob);\n\t\t\t\t\tlet a = document.createElement('a');\n\t\t\t\t\ta.href = url;\n\t\t\t\t\ta.download = 'mlmodel_template.json';\n\t\t\t\t\ta.click();\n\t\t\t\t});\n\t\t});\n\t}\n\n\tshowButtonAction () {\n\t this.setState({showButton: true});\n\t}\n\n\tcloseModal(){\n\t this.setState({show_add_model_modal:false});\n\t}\n\n\tgoToChoosePlan = () => {\n this.props.router.push(\"/choose-plan\");\n }\n\n \tgoToPlanPage = () => {\n this.props.router.push(\"/plan\");\n }\n\n setConfirm=()=>{\n this.setState({acceptCondition:true});\n this.setState({show_add_model_modal:false});\n if(this.state.actionType === \"add\") {\n this.props.setPage(true);\n }else {\n this.setState({show:true});\n }\n }\n\n\n render() {\n const envSchema = yup.object({\n environment: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Environment is a required field\").test(\n 'environmentName test',\n 'invalid Environment name',\n function test(value) {\n let val = userValidation(value,\"input\");\n return val;\n }\n ),\n });\n\n return(\n <>\n \n {\n this.props.change_request_exists === true ?\n <>\n
    \n Adding Model Not Allowed
    \n

    There is a scheduled request for plan downgrade. Please cancel the request for plan downgrade and try again.

    \n \n \n \n :\n this.props.planName !== \"free\" && this.props.planName !== \"basic\" && this.props.planName !== null ? <>\n
    \n You are going to exceed your model usage limit
    \n

    \n For extra model you will be charged $9 per Model as part of the next month billing cycle.\n To use extra model, please provide us the confirmation for further processing or\n kindly delete the existing model(s) and create a new model.\n

    \n \n \n \n :<>\n
    \n You are currently on a {this.props.planName === \"free\" ? \"Free-trail\" : \"Basic Plan\" }
    \n

    Upgrade now to use this feature

    \n \n \n \n }\n
    \n
    \n
    \n
    \n 1\n
    Add or Choose Environment
    \n
    \n
    \n

    Environment is used to organize related models (Eg. Dev, Staging, Production). Add or select an existing environment.

    \n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    this.form = form} name='add_environment' onSubmit={handleSubmit}>\n
    \n
    \n
    \n
    \n Choose Environment \n \n

    Click the Upload Models to be monitored button.

    : <>

    Drop files here or click to upload

    \n \n

    File should be in json format.

    }\n
    \n {this.state.file.length === 0 && this.state.uploadClick === true ?
    Select file
    : ''}\n \n )}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default MLModelEnvironment;","import React from 'react';\nimport Select from 'react-select';\nimport { faPlusCircle, faDownload, faCloudUploadAlt, faArrowRight} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { handleFileSubmit } from \"../../utils/event_handling\";\nimport {userValidation} from \"../../utils/common_utils\";\nimport Modal from 'react-bootstrap/Modal';\nimport Dropzone from 'react-dropzone';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api } from \"../../utils/event_handling\";\nimport {ui_service_ip} from \"../../utils/ip_details\";\nimport Image from \"../../components/image\";\nimport {postMixpanel} from '../../mixpanel';\nimport ReactDOM from 'react-dom';\n\n\nclass DSEnvironment extends React.Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.showFileUpload = this.showFileUpload.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.checkEnv= this.checkEnv.bind(this);\n this.closeModal = this.closeModal.bind(this);\n this.setFile = this.setFile.bind(this);\n this.showButtonAction = this.showButtonAction.bind(this);\n this.addEnvironment = this.addEnvironment.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.state = {\n errors: {\n },\n env_id:null,\n show: false,\n show_add_datasource_modal: false,\n uploadClick: false,\n file:[],\n actionType: '',\n showButton: false,\n clickAction: false,\n hideSubmitButton: false\n }\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n showFileUpload() {\n postMixpanel(\"Clicked Bulk-add Datasource in Configure->data\")\n this.setState({show_add_datasource_modal:this.props.dataLimitExceed,actionType:\"upload\"});\n if(this.props.dataLimitExceed === false){\n this.setState({show:true});\n }\n }\n\n handleClose() {\n this.setState({show: false});\n this.setState({uploadClick:false});\n }\n\n goToChoosePlan = () => {\n this.props.router.push(\"/choose-plan\");\n }\n\n checkEnv() {\n postMixpanel(\"Clicked Add datasource in configure -> data tab\")\n let env = this.state.env_id;\n this.setState({clickAction:true});\n this.props.setEnvData(env)\n if(env !== null) {\n var topOfElement = document.querySelector(\"#jump-to_datasource\").offsetTop;\n window.scroll({ top: topOfElement+200, behavior: \"smooth\" });\n this.setState({show_add_datasource_modal:this.props.dataLimitExceed, actionType: \"add\"});\n if(this.props.dataLimitExceed === false){\n this.props.setPage(true);\n }else{\n this.props.setPage(false);\n }\n }else {\n const containerchooseenv = ReactDOM.findDOMNode(this.refs.containerchooseenv)\n window.scrollTo({top:containerchooseenv.offsetTop,behavior: 'smooth'});\n }\n }\n\n setFile(file){\n this.setState({\n file\n });\n }\n\n handleChange = (selectedOption) => {\n this.setState({ env_id:selectedOption[\"value\"],env_name:selectedOption['label']});\n let data = {env_id:selectedOption[\"value\"],env_name:selectedOption['label']}\n this.props.setEnvData(data['env_id'])\n }\n\n addEnvironment(event) {\n let {environment} = event;\n let session = localStorage.getItem(\"sessionToken\");\n const env_data = {env_name: environment, tenant_id: localStorage.getItem('team_id')};\n call_post_api(ui_service_ip, 'environment', env_data, session).then((response) => {\n if (response.code === 200) {\n this.props.showToast(\"alert-success\", \"Environment added successfully\", '')\n let tenant_id = localStorage.getItem('team_id')\n let key = `environments_${tenant_id}`\n sessionStorage.removeItem(key);\n let env_data = response.env_data;\n this.setState({showButton: false});\n this.props.updateEnvironmentList(env_data);\n } else {\n this.props.showToast(\"alert-danger\", response.message, '')\n }\n });\n postMixpanel('New Environment created');\n }\n\n downloadSampleData = (e) => {\n e.preventDefault();\n\t\tfetch('https://samplecsv.blob.core.windows.net/mlmodel/datasources_template.json')\n\t\t\t.then(response => {\n\t\t\t\tresponse.blob().then(blob => {\n\t\t\t\t\tlet url = window.URL.createObjectURL(blob);\n\t\t\t\t\tlet a = document.createElement('a');\n\t\t\t\t\ta.href = url;\n\t\t\t\t\ta.download = 'datasources_template.json';\n\t\t\t\t\ta.click();\n\t\t\t\t});\n\t\t});\n\t}\n\tshowButtonAction () {\n\t this.setState({showButton: true});\n\t}\n\n\tcloseModal(){\n\t this.setState({show_add_datasource_modal:false});\n\t}\n\n\tgoToChoosePlan = () => {\n this.props.router.push(\"/choose-plan\");\n }\n\n setConfirm=()=>{\n this.props.setDataLimit();\n this.setState({acceptCondition:true});\n this.setState({show_add_datasource_modal:false});\n if(this.state.actionType === \"add\") {\n this.props.setPage(true);\n }else if(this.state.actionType === \"upload\") {\n this.setState({show:true});\n }\n\n }\n render() {\n const envSchema = yup.object({\n environment: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Environment is a required field\").test(\n 'environmentName test',\n 'invalid Environment name', \n function test(value) { \n let val = userValidation(value,\"input\"); \n return val;\n }\n ),\n });\n\n return(\n <>\n \n {this.props.planName !== \"free\" && this.props.planName !== null ? <>\n
    \n You are going to exceed your data usage limit
    \n

    For extra data you will be charged $52 per 100GB as part of the next month billing cycle.\n To use additional data, please provide us the confirmation for further processing.

    \n \n \n \n :<>\n
    \n You are currently on a Basic Plan (Free)
    \n

    Upgrade now to use this feature

    \n \n \n }\n
    \n
    \n
    \n
    \n 1\n
    Add or Choose Environment
    \n
    \n
    \n

    Environment is used to organize related datasources (Eg. Dev, Staging, Production). Add or select an existing environment.

    \n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    this.form = form} name='add_environment' onSubmit={handleSubmit}>\n
    \n
    \n
    \n
    \n Choose Environment\n \n

    Click the Upload Datasources button.

    \n : <>

    Drop files here or click to upload

    \n \n

    File should be in json format.

    }\n
    \n {this.state.file.length === 0 && this.state.uploadClick === true ?
    Select file
    : ''}\n \n )}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default DSEnvironment;","import React from 'react';\nimport Integration from \"../components/integration\";\n\nclass AddDataSources extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n errors: {\n }\n }\n }\n\n render() {\n return(\n \n );\n }\n}\n\nexport default AddDataSources;","import React from 'react';\nimport Button from 'react-bootstrap/Button';\nimport Modal from \"react-bootstrap/Modal\";\nimport ProgressBar from 'react-bootstrap/ProgressBar';\nimport Table from 'react-bootstrap/Table';\nimport { getErrorMsg } from \"../utils/event_handling\";\nimport {dataRunStatuses, IN_PROGRESS_STATUSES} from \"../utils/constant\";\nimport { normalizeChildDatasetName,QUALDO_CHILD_DATASET_SEPARATOR } from '../utils/attribute_name_utils';\nclass DatasetButton extends React.Component {\n constructor(props) {\n super(props);\n this.handleMore = this.handleMore.bind(this);\n this.handleRefreshModalClose = this.handleRefreshModalClose.bind(this);\n this.handleDataset = this.handleDataset.bind(this);\n this.getErrorMsg = getErrorMsg.bind(this);\n this.getStatus = this.getStatus.bind(this);\n this.getProgressPercentage = this.getProgressPercentage.bind(this);\n this.state = {\n showMore: false,\n showDataset: false,\n data: null,\n textColor: \"text-success\",\n runEndTime: null,\n successCount: 0,\n failedCount: 0,\n type:0\n }\n }\n\n getProgressPercentage() {\n\n const run_status_code = this.state.data[\"run_status_code\"];\n if(IN_PROGRESS_STATUSES.includes(run_status_code)) {\n let progressInfoTotal = 40\n let progressInfo = null\n if(this.state.data[\"progress_info\"] !== undefined) {\n progressInfo = this.state.data[\"progress_info\"]\n progressInfoTotal = progressInfo[\"cache_view\"] + progressInfo[\"data_profiling\"] + progressInfo[\"datatype_identification\"] + progressInfo[\"metrics_computation\"] + progressInfo[\"model_performance\"] + progressInfo[\"relationship_identification\"]\n\n\n }else {\n let row = this.props.item[\"value\"][\"dataset_processing_info\"].filter(x => (x.data_set_id === this.state.data[\"data_set_id\"] ))\n if(row.length > 0){\n progressInfo = row[0]\n progressInfoTotal = progressInfo[\"cache_view\"] + progressInfo[\"data_profiling\"] + progressInfo[\"datatype_identification\"] + progressInfo[\"metrics_computation\"] + progressInfo[\"model_performance\"] + progressInfo[\"relationship_identification\"]\n }\n\n }\n\n let progressPercentage = ((progressInfoTotal/40) * 100)/2\n return progressPercentage+25\n\n }else if(run_status_code === dataRunStatuses[\"inQueue\"]) {\n return 25\n }else if(run_status_code === dataRunStatuses[\"success\"]) {\n return 100\n }else if(run_status_code === dataRunStatuses[\"skipMcf\"]) {\n return 0\n }\n return 100\n }\n\n\n handleRefreshModalClose(){\n this.setState({showDataset:false});\n }\n\n handleMore() {\n this.setState({showMore: true})\n }\n\n\n handleDataset(data, runEndTime, successRefresh=[], failedRefresh=[],type) {\n let successCount = 0;\n let failedCount = 0;\n if(successRefresh.length > 0) {\n successCount = successRefresh[0][\"success\"]\n }\n if(failedRefresh.length > 0) {\n failedCount = failedRefresh[0][\"failed\"]\n }\n let runEndTimeValue = null;\n if(runEndTime !== undefined) {\n runEndTimeValue = runEndTime[\"run_end_time\"]\n }\n\n this.setState({showDataset: true,\n data: data,\n type:type,\n runEndTime: runEndTimeValue,\n successCount: successCount,\n failedCount: failedCount})\n }\n\n getStatus(statusCode) {\n if (IN_PROGRESS_STATUSES.includes(statusCode)){\n return \"In Progress\"\n }else if(statusCode === dataRunStatuses[\"failed\"]){\n return \"Failed\"\n }else if(statusCode === dataRunStatuses[\"inQueue\"]) {\n return \"In Queue\"\n }else if(statusCode === dataRunStatuses[\"success\"]) {\n return \"Completed\"\n }else if(statusCode === dataRunStatuses[\"skipMcf\"]) {\n return \"Not Yet Started\"\n }else{\n return \"Failed\"\n }\n }\n render() {\n const children = []\n let dataProcessingInfo = this.props.item[\"value\"][\"dataset_processing_info\"];\n let lastRunTime = this.props.item[\"value\"][\"last_run_time\"];\n let successRefresh = this.props.item[\"value\"][\"dataset_success_refresh\"];\n let failedRefresh = this.props.item[\"value\"][\"dataset_failed_refresh\"];\n // Check Parition value for render New format HTML \n let datasetlist = (dataProcessingInfo.filter(function(item){\n if (item.data_set_name === undefined) {\n return false;\n }\n\n return !(item.data_set_name.includes(QUALDO_CHILD_DATASET_SEPARATOR)); \n }));\n for(let loop=0;loop 0 ? partitionlist : [];\n datasetlist[loop][\"partition\"]= partitionlist.length > 0 ? true : false;\n }\n dataProcessingInfo = datasetlist;\n //End Parition\n let length = (dataProcessingInfo.length > 5 && this.state.showMore === false ? 5 : dataProcessingInfo.length)\n for (let i = 0; i < length; i++) {\n const currentDatasetName = normalizeChildDatasetName(dataProcessingInfo[i][\"data_set_name\"]);\n if (currentDatasetName === undefined) {\n console.error(\"Dataset name not found\");\n continue;\n }\n let data_set_id = dataProcessingInfo[i][\"data_set_id\"]\n let success_refresh_count, failed_refresh_count = []\n if(successRefresh !== undefined) {\n success_refresh_count = successRefresh.filter(x => x.data_set_id === data_set_id)\n }\n if(failedRefresh !== undefined) {\n failed_refresh_count = failedRefresh.filter(x => x.data_set_id === data_set_id)\n }\n children.push(\n dataProcessingInfo[i][\"partition\"]=== false ? \n \n :\n
    \n \n
    \n {dataProcessingInfo[i][\"child\"].map((partitioninfo) => (\n<> \n \n\n))}\n
    \n
    \n)\n\n\n\n\n\n\n // if(checkpartitionflag){\n \n // children.push(\n // )\n\n // }else {\n // children.push(\n // ) }\n }\n if (dataProcessingInfo.length > 5 && this.state.showMore === false) {\n children.push(\n )\n }\n return (<>\n {children}\n \n \n
    \n Dataset Processing Information\n
    \n
    \n \n
    \n \n \n \n {this.state.type===0 ? \n : \n }\n {this.props.componentName === \"model\" ? : <>}\n \n \n \n \n \n \n \n \n {this.state.data !== null ? \n \n {this.props.componentName === \"model\" ? : <>}\n \n \n \n \n \n : <>}\n \n
    DatasetsPartitionType of DatasetLast Processing TimeCurrent Processing StatusSuccessful RefreshFailed RefreshErrors
    {normalizeChildDatasetName(this.state.data[\"data_set_name\"])}{this.state.data[\"dataset_type\"]}{this.props.componentName === \"model\" ? this.state.data[\"run_end_time\"] : this.state.runEndTime}\n
    \n \n \n
    \n
    {this.props.componentName === \"model\"? this.state.data[\"success_refreshes\"] : this.state.successCount}{this.props.componentName === \"model\"? this.state.data[\"failed_refreshes\"] : this.state.failedCount}{getErrorMsg(this.state.data['run_status_text'], this.state.data[\"run_status_code\"])}
    \n
    \n
    \n
    \n\n\n );\n\n }\n}\n\nexport default DatasetButton;\n","import React from 'react';\nimport Modal from \"react-bootstrap/Modal\";\nimport Table from 'react-bootstrap/Table';\nimport { getErrorMsg } from \"../utils/event_handling\";\nimport {dataRunStatuses} from \"../utils/constant\";\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport { faTable, faExclamationCircle } from '@fortawesome/free-solid-svg-icons';\nimport {NO_DATA_SET_FOUND_TEXT, QUALDO_DOCUMENTATION} from \"../utils/constant\";\nimport ProgressBar from 'react-bootstrap/ProgressBar';\nimport Button from 'react-bootstrap/Button';\nimport {get_document_link} from \"../utils/common_utils\";\nimport { normalizeChildDatasetName } from '../utils/attribute_name_utils';\n\n\n\n\n\nclass DatasetError extends React.Component {\n constructor(props) {\n super(props);\n this.handleErrorModal = this.handleErrorModal.bind(this);\n this.handleErrorModalClose = this.handleErrorModalClose.bind(this);\n this.getErrorMsg = getErrorMsg.bind(this);\n let itemVal = null;\n if(props.item[\"value\"] !== undefined && props.item[\"value\"] !== null) {\n itemVal = props.item[\"value\"];\n }\n this.getErrorText = this.getErrorText.bind(this);\n this.state = {\n show: false,\n children: itemVal\n }\n }\n\n handleErrorModal(item){\n this.setState({show:true,children: item[\"value\"]});\n }\n handleErrorModalClose(){\n this.setState({show:false});\n }\n\n getErrorText(item) {\n const dataSourceInfo = item.value;\n const noDatasetFound = dataSourceInfo.status_text === NO_DATA_SET_FOUND_TEXT;\n let defaultErrorMessage = \"None\";\n if (noDatasetFound) {\n defaultErrorMessage = NO_DATA_SET_FOUND_TEXT;\n }\n\n return defaultErrorMessage;\n }\n\n render() {\n let errorList = []\n if(this.state.children !== null) {\n if (this.props.componentName === \"metrics\") {\n if (this.state.children[\"status_code\"] === 0) {\n errorList.push({normalizeChildDatasetName(this.state.children[\"data_set_name\"])}\n {this.state.children[\"modified_time\"]}\n \n
    \n \n \n
    \n \n {this.getErrorMsg(this.state.children[\"computation_status\"])}\n )\n }\n }\n else {\n let childData = this.state.children[\"dataset_processing_info\"];\n if(childData === undefined || childData === null) {\n childData = [];\n }\n \n for(let i=0;i{data_set_name}\n {this.props.componentName === \"model\" ?\n <>{current_processing_info[\"dataset_type\"]}\n {current_processing_info[\"run_end_time\"]}\n :\n {this.state.children[\"last_run_time\"][i][\"run_end_time\"]}\n }\n \n
    \n \n \n
    \n \n {this.getErrorMsg(current_processing_info['run_status_text'])}\n )\n\n }\n }\n }\n }\n\n return(\n <>\n \n\n \n \n
    \n Errors Information\n
    \n
    \n \n
    \n {errorList.length > 0 ? \n \n \n \n {this.props.componentName === \"model\" ? : <>}\n \n \n \n \n \n \n {errorList}\n \n
    DatasetsType of DatasetLast Processing TimeCurrent Processing StatusErrors
    :
    \n

    \n

    No error data available

    \n

    Unable to display the data. For help, check out the {QUALDO_DOCUMENTATION}

    \n
    }\n
    \n
    \n
    );\n\n }\n\n}\n\nexport default DatasetError;","import React from 'react';\nimport ToolkitProvider from 'react-bootstrap-table2-toolkit';\nimport paginationFactory, {\n PaginationListStandalone,\n PaginationProvider,\n PaginationTotalStandalone,\n SizePerPageDropdownStandalone\n} from 'react-bootstrap-table2-paginator';\nimport DatasetButton from \"./datasetButton\";\nimport DatasetError from \"./datasetErrorComponent\";\nimport BootstrapTable from 'react-bootstrap-table-next';\nimport _ from 'lodash';\nimport Select from \"react-select\";\nimport \"react-bootstrap-table-next/dist/react-bootstrap-table2.min.css\"\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport { faTable } from '@fortawesome/free-solid-svg-icons';\nimport {get_document_link} from \"../utils/common_utils\";\nimport ProgressBar from 'react-bootstrap/ProgressBar';\nimport {NOT_SORTABLE, QUALDO_DOCUMENTATION} from \"../utils/constant\";\n\n\nclass RefreshesTable extends React.Component {\n constructor(props) {\n super(props);\n this.data = this.props.data;\n this.paginationSize = this.props.paginationSize;\n this.getErrorComponent = this.getErrorComponent.bind(this);\n this.handleErrorModal = this.handleErrorModal.bind(this);\n this.handleErrorModalClose = this.handleErrorModalClose.bind(this);\n this.handleSearchOperation = null;\n this.input = null;\n this.state = {\n hideSizePerPage: this.props.hideSizePerPage !== undefined ? this.props.hideSizePerPage : false,\n show: false,\n children: null\n }\n }\n\n // componentDidMount(){\n // if(this.props.id===\"datasourceErrorRefreshes\"){\n // this.props.renderedOnce(true)\n // }\n // }\n\n shouldComponentUpdate(){\n if(this.props.id===\"datasourceErrorRefreshes\"){\n // Only for Configure page : To avoid rerendering of Refresh table on Configure page\n // While the first call all the datas will received here\n // Only once this table will gets rendered to avoid the rerendering\n \n if(this.props.updateStatus === true){\n // To handle rendering the Grid while Editing the datasource\n return true\n }\n return false\n }\n else{\n return true\n }\n // if(this.props.render===false){\n // return false\n // }\n // else{\n // return false\n // }\n }\n\n handleErrorModal(item){\n this.setState({show:true,children: item[\"value\"]});\n }\n handleErrorModalClose(){\n this.setState({show:false});\n }\n\n getErrorComponent(item) {\n return()\n\n }\n\n\n getButtonComponent(item) {\n return ()\n }\n\n async navigateFirstPage(props) {\n return props.onPageChange(1);\n }\n\n renderCustomPageRow() {\n let result = []\n let headerKeys = {}\n this.props.data.headers.forEach((headerValue) => {\n headerKeys[headerValue] = null;\n });\n\n for (let i = 0; i < this.props.data.data.length; i++) {\n let rowItems = this.props.data.data[i];\n let obj = _.cloneDeep(headerKeys);\n let keys = Object.keys(obj);\n const return_item_values = [\"metric\", \"masName\", \"dataset\",\"datasource\"]\n const return_items = [\"status\", \"refresh\", \"errors\"]\n for (let k = 0; k < rowItems.length; k++) {\n let items = rowItems[k];\n if (return_item_values.includes(items.type)) {\n obj[keys[k]] = items.value\n } else if (return_items.includes(items.type)) {\n obj[keys[k]] = items;\n }\n }\n obj[\"ID\"] = i + 1;\n result.push(obj);\n }\n return result\n\n }\n\n renderRow() {\n let result = []\n let headerKeys = {}\n this.props.data.headers.forEach((headerValue) => {\n headerKeys[headerValue] = null;\n });\n\n for (let i = 0; i < this.props.data.data.length; i++) {\n let rowItems = this.props.data.data[i];\n\n let obj = _.cloneDeep(headerKeys);\n let keys = Object.keys(obj);\n for (let k = 0; k < rowItems.length; k++) {\n let items = rowItems[k];\n if (items.type === 'td') {\n obj[keys[k]] = items.value\n } else if (items.type === \"summary\") {\n obj[keys[k]] = items;\n } else if (items.type === \"datasets\") {\n obj[keys[k]] = items;\n } else if (items.type === \"errors\") {\n obj[keys[k]] = items;\n }else if (items.type === \"datasetDiscovery\") {\n obj[keys[k]] = items;\n }\n }\n obj[\"ID\"] = i + 1;\n result.push(obj);\n }\n return result\n }\n\n\n getDefaultPaginationOptions() {\n let pageLimit = [10,25,50,100]\n let pageList = [{text: 2, value: 2}]\n for(let i=0;i<=(pageLimit.length-1);i++) {\n if(this.props.data.data.length >= pageLimit[i]){\n pageList.push({text: pageLimit[i], value: pageLimit[i]});\n }else{\n break\n }\n\n }\n pageList.push({text: \"All\" , value: this.props.data.data.length});\n\n const options = {\n custom: true,\n // totalSize: this.props.data.data.length,\n page: 1, // which page you want to show as default\n sizePerPageList: pageList, // you can change the dropdown list for size per page\n sizePerPage: 2, // which size per page you want to locate as default\n pageStartIndex: 1, // where to start counting the pages\n paginationSize: 5, // the pagination bar size.\n prePage: 'Prev', // Previous page button text\n nextPage: 'Next', // Next page button text\n firstPage: 'First', // First page button text\n lastPage: 'Last', // Last page button text\n paginationPosition: 'top' // default is bottom, top and both is all available\n // hideSizePerPage: true > You can hide the dropdown for sizePerPage\n // alwaysShowAllBtns: true // Always show next and previous button\n // withFirstAndLast: false > Hide the going to First and Last page button\n };\n return options;\n }\n\n convertCustomMetricData(headerValue, cell, row) {\n const return_cell = [\"Metric Name\", \"Metric Associations\", \"Dataset Name\", \"Datasource Name\"]\n if (return_cell.includes(headerValue)) {\n return cell;\n } else if (headerValue === \"Errors\") {\n return (this.getErrorComponent(cell));\n }else if (headerValue === \"Refresh Status\") {\n return (<>
    \n
    Successful
    \n
    {cell[\"value\"][0]}
    \n
    \n
    \n
    Failed
    \n
    {cell[\"value\"][1]}
    \n
    \n );\n }else if(headerValue === \"Profile Status\") {\n return (<>
    \n
    Last Processing Time
    \n
    {cell[\"value\"][1]}
    \n
    \n
    \n
    Current Processing Status
    \n
    \n
    \n \n \n
    \n
    \n
    \n );\n }\n\n\n return cell;\n }\n\n convertData(headerValue, cell, row) {\n if (headerValue === \"Datasource Name\") {\n return cell;\n } else if (headerValue === \"Summary\") {\n return (<>
    \n
    No. Of Datasets
    \n
    {cell[\"value\"]}
    \n
    \n );\n } else if (headerValue === \"Datasets\") {\n return (
    {this.getButtonComponent(cell)}
    );\n } else if (headerValue === \"Errors\") {\n return (this.getErrorComponent(cell));\n }else if(headerValue === \"Profile Status\") {\n return (<>
    \n
    Last Processing Time
    \n
    {cell[\"value\"][1]}
    \n
    \n
    \n
    Current Processing Status
    \n
    \n
    \n \n \n
    \n
    \n
    \n );\n }\n\n\n return cell;\n }\n\n render() {\n const hasData = this.props.data.data.length > 0;\n const customTotal = (from, to, size) => {\n\n return(\n \n Showing {from} to {to} of {size} results\n \n );\n \n };\n\n const pageListRenderer = ({\n pages,\n onPageChange\n }) => {\n return (\n
    \n
    \n {\n pages.map(p => (\n \n ))\n }\n
    \n
    \n );\n };\n\n let options;\n let lengthLimit = 0;\n options = this.getDefaultPaginationOptions();\n lengthLimit = 2;\n\n\n options[\"paginationTotalRenderer\"] = customTotal;\n options[\"pageListRenderer\"] = pageListRenderer;\n options[\"hideSizePerPage\"] = this.state.hideSizePerPage;\n\n let data = [];\n if (this.props.page === \"custom_metrics\") {\n data = this.renderCustomPageRow();\n } else {\n data = this.renderRow();\n }\n const sizePerPageRenderer = ({\n options,\n currSizePerPage,\n onSizePerPageChange\n }) => {\n return(\n
    \n
    \n
    \n
    \n Show\n ({'label': option.text, 'value': option.page}))}\n onChange={(selectedOption) => {\n onSizePerPageChange(selectedOption.value);\n }}\n />\n items\n
    \n
    \n
    \n
    \n Search:\n
    \n this.input = n}\n onChange={this.handleSearchOperation}\n style={{backgroundColor: 'white', align: 'right'}}\n type=\"text\"\n />\n
    \n
    \n
    \n
    \n
    \n );\n }\n options[\"sizePerPageRenderer\"] = sizePerPageRenderer.bind(this);\n\n let columns;\n if (this.props.page === \"custom_metrics\") {\n columns = this.props.data.headers.map(x => ({\n 'dataField': x,\n 'text': x,\n 'sort': NOT_SORTABLE.includes(x.toLowerCase()) ? false : true,\n 'searchable': true,\n 'formatter': this.convertCustomMetricData.bind(this, x)\n }));\n } else {\n columns = this.props.data.headers.map(x => ({\n 'dataField': x,\n 'text': x,\n 'sort': NOT_SORTABLE.includes(x.toLowerCase()) ? false : true,\n 'searchable': true,\n 'formatter': this.convertData.bind(this, x)\n }));\n }\n\n columns = [{\n 'dataField': \"ID\",\n 'text': \"ID\",\n 'sort': true\n }, ...columns];\n\n let CustomSearchBar = (props) => {\n const handleClick = () => {\n this.navigateFirstPage(props).then((res) => {\n props.onSearch(this.input.value)\n });\n };\n this.handleSearchOperation = handleClick.bind(this);\n return (\"\");\n };\n let BindedCustomSearchBar = CustomSearchBar.bind(this);\n const contentTable = ({paginationProps, paginationTableProps}) => { \n return(\n
    \n {\n hasData && this.props.data.data.length > lengthLimit\n ?\n \n :\n ''\n }\n\n {hasData ? <>\n {\n toolkitprops => (\n <>\n {\n hasData\n ?\n \n :\n ''\n }\n\n \n \n )\n }\n : \"\"}\n
    \n
    \n {\n hasData ?
    \n :\n ''\n }\n
    \n {hasData && this.props.data.data.length > lengthLimit ? : ''}\n
    \n\n
    \n
    \n\n
    \n\n );\n }\n if (hasData) {\n return (\n <>
    \n \n {contentTable}\n \n
    \n \n );\n } else {\n return (
    \n

    \n

    No data available

    \n

    For help, check out the {QUALDO_DOCUMENTATION}

    \n
    \n );\n }\n }\n}\n\nexport default RefreshesTable;","import React from \"react\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faPlusCircle, faCheck, faTimesCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Select from \"react-select\";\nimport Form from 'react-bootstrap/Form';\nimport RcTooltip from 'rc-tooltip';\nimport {Formik, ErrorMessage} from 'formik';\nimport * as yup from \"yup\";\nimport {postModelABConfiguration} from \"../../utils/event_handling\";\nimport {checkUniqueModelABCombination} from \"../../utils/common_utils\";\nimport {IS_NONE_CHECK} from \"../../utils/constant\";\n\nconst TOOLTIP_CONTENT = \"You can compare only 2 extra models in AB testing.\";\n\n\nexport function AddModelButton(props) {\n if (props.showWithTooltip) {\n return (\n // Showing button with tooltip\n \n {TOOLTIP_CONTENT}\n \n }\n arrowContent={
    }>\n\n
    \n \n \n \n
    \n Add Model\n
    \n
    \n\n\n
    \n )\n }\n\n return (\n
    \n \n \n \n
    \n Add Model\n
    \n
    \n )\n}\n\nclass ConfigureABTest extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.postModelABConfiguration = postModelABConfiguration.bind(this);\n this.updateVersionOptions = this.updateVersionOptions.bind(this);\n this.remove3rdSection = this.remove3rdSection.bind(this);\n\n const incomingProps = this.props.tableRowProps;\n const currentModelDetail = incomingProps.view_details;\n\n // This is in list form. Each entry will be in form {\"label\": \"Model name\", \"value\": model_id}\n const models = incomingProps.availableModels;\n\n // Dictionary contains root model id key and corresponding values will list of association versions\n // Each entry in the list will in form {\"label\": \"Version_22\", \"value\": model_id}\n const modelVersionMap = incomingProps.modelVersionMap;\n\n // Dictionary with model types as keys and associated model options list as their values\n const modelTypeMap = incomingProps.modelTypeMap;\n\n // Dictionary containing model ids as keys along with the complete detail about the model.\n const modelsDataMap = incomingProps.modelsDataMap;\n\n let availableModelAVersions;\n let availableModelBVersions = [];\n let availableModelCVersions = [];\n\n let selectedModelA;\n let selectedModelAVersion;\n let selectedModelB = null;\n let selectedModelBVersion = null\n let selectedModelC = null;\n let selectedModelCVersion = null;\n\n if (this.props.operation === 'ab_add') {\n const selectedModelDetailID = String(currentModelDetail.ml_model_id);\n availableModelAVersions = modelVersionMap[selectedModelDetailID];\n\n selectedModelA = models.filter(x => x.value === selectedModelDetailID)[0];\n selectedModelAVersion = availableModelAVersions.filter(x => x.value === selectedModelDetailID)[0];\n } else {\n // Edit operation. We will use existing configuration.\n const model_1 = String(this.props.existingConfig.model_1);\n selectedModelA = models.filter(x => x.value === model_1)[0];\n availableModelAVersions = modelVersionMap[model_1];\n selectedModelAVersion = availableModelAVersions.filter(x => x.value === model_1)[0];\n\n const model_2 = String(this.props.existingConfig.model_2);\n selectedModelB = models.filter(x => x.value === model_2)[0];\n availableModelBVersions = modelVersionMap[model_2];\n selectedModelBVersion = availableModelBVersions.filter(x => x.value === model_2)[0];\n\n let model_3 = this.props.existingConfig.model_3;\n if (model_3 !== null) {\n model_3 = String(model_3);\n selectedModelC = models.filter(x => x.value === model_3)[0];\n availableModelCVersions = modelVersionMap[model_3];\n selectedModelCVersion = availableModelCVersions.filter(x => x.value === model_3)[0];\n }\n }\n\n const modelA_ID = selectedModelAVersion.value;\n const modelAData = modelsDataMap[String(modelA_ID)];\n const modelAType = modelAData.ml_model_type;\n let modelBOptions = modelTypeMap[modelAType];\n let modelCOptions = modelTypeMap[modelAType];\n\n this.state = {\n hideSubmitButton: false,\n show3rdSection: !IS_NONE_CHECK.includes(selectedModelC),\n currentModelDetail: currentModelDetail,\n modelVersionMap: modelVersionMap,\n availableModelOptions: models,\n modelsDataMap: modelsDataMap,\n modelTypeMap: modelTypeMap,\n prevModelAType: modelAType,\n modelBOptions: modelBOptions,\n modelCOptions: modelCOptions,\n availableModelAVersions: availableModelAVersions,\n availableModelBVersions: availableModelBVersions,\n availableModelCVersions: availableModelCVersions,\n modelA: selectedModelA,\n modelA_version: selectedModelAVersion,\n modelB: selectedModelB,\n modelB_version: selectedModelBVersion,\n modelC: selectedModelC,\n modelC_version: selectedModelCVersion,\n }\n }\n\n closeCurrentModal() {\n this.setState({show3rdSection: false});\n this.props.closeModalFunction();\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n handleSubmit = (event) => {\n\n const {\n modelA_version,\n modelB_version,\n modelC_version\n } = event;\n\n const ab_data_to_post = {\n 'model_1': modelA_version,\n 'model_2': modelB_version\n };\n if (modelC_version !== '') {\n ab_data_to_post[\"model_3\"] = modelC_version\n }\n\n let isAB_Edit = this.props.operation === 'ab_edit';\n if (isAB_Edit) {\n ab_data_to_post[\"model_ab_id\"] = this.props.existingConfig.model_ab_id;\n } else {\n ab_data_to_post[\"created_by\"] = localStorage.getItem('user_name');\n }\n\n const showToastFunction = this.props.tableRowProps.showToast;\n this.postModelABConfiguration(ab_data_to_post,\n showToastFunction, isAB_Edit);\n }\n\n remove3rdSection() {\n this.setState({show3rdSection: false});\n }\n\n update3rdSectionStatus() {\n if (this.state.show3rdSection) {\n return;\n }\n\n this.setState({show3rdSection: true});\n }\n\n updateVersionOptions(reqKey, selectedModel, setFieldValueFunc) {\n if (reqKey === \"availableModelAVersions\") {\n // When user is changing model A, update model B and C drop down options\n const modelAData = this.state.modelsDataMap[String(selectedModel)];\n const modelAType = modelAData.ml_model_type;\n\n // User has chosen a different model type. So update the model B and model C options\n if (this.state.prevModelAType !== modelAType) {\n let modelBOptions = this.state.modelTypeMap[modelAType];\n let modelCOptions = this.state.modelTypeMap[modelAType];\n setFieldValueFunc('modelB', '');\n setFieldValueFunc('modelB_version', '');\n setFieldValueFunc('modelC', '');\n setFieldValueFunc('modelC_version', '');\n this.setState({\n modelB: '',\n modelB_version: '',\n modelC: '',\n modelC_version: '',\n prevModelAType: modelAType,\n modelBOptions: modelBOptions,\n modelCOptions: modelCOptions\n });\n }\n\n }\n\n const modelVersionMap = this.state.modelVersionMap;\n let currVersions = modelVersionMap[selectedModel];\n this.setState({[reqKey]: currVersions})\n }\n\n getModelABConfigurationSchema() {\n const incomingProps = this.props.tableRowProps;\n\n // We will get existing data by calling getExistingABData function in root component\n // which is Configure -> getExistingABData().\n const existingABData = incomingProps.getExistingABData();\n const show3rdSection = this.state.show3rdSection;\n\n const modelSchema = yup.object().shape({\n modelA: yup.string().required(\"Model A is a required field\"),\n modelA_version: yup.string().required(\"Model A version is a required field\").test(\n 'Model A version unique config',\n 'This configuration exists already',\n function test(current_A_Version) {\n const bVersion = this.parent.modelB_version;\n const cVersion = this.parent.modelC_version;\n return checkUniqueModelABCombination(current_A_Version, bVersion,\n cVersion, existingABData);\n }\n ),\n modelB: yup.string().required(\"Model B is a required field\"),\n modelB_version: yup.string().required(\"Model B version is a required field\").test(\n 'Model B version unique check',\n 'Selected model - version should be unique across configuration',\n function test(current_B_Version) {\n const aVersion = this.parent.modelA_version;\n const aModel = this.parent.modelA;\n const bModel = this.parent.modelB;\n\n if (bModel === aModel && current_B_Version === aVersion) {\n // Model A - Model A Version is same as Model B and it's version\n return false;\n }\n\n return true;\n }\n ),\n modelC: yup.string().test('Model C is required', 'Model C is required',\n function test(modelC) {\n if (show3rdSection && modelC === undefined) {\n // User has enabled 3rd section, but we have not provided value for that\n return false;\n }\n return true;\n }),\n modelC_version: yup.string().when(\"modelC\", {\n is: (modelCVal) => {\n return modelCVal !== undefined;\n },\n\n then: yup.string().required(\"Model C version is a required field\")\n }).test(\n 'Model C version unique check',\n 'Selected model - version should be unique across configuration',\n function test(current_C_Version) {\n if (current_C_Version === undefined) {\n return true;\n }\n\n const aVersion = this.parent.modelA_version;\n const aModel = this.parent.modelA;\n const bVersion = this.parent.modelB_version;\n const bModel = this.parent.modelB;\n const cModel = this.parent.modelC;\n\n if (cModel === aModel && current_C_Version === aVersion) {\n // Model A - Model A Version is same as Model C and it's version\n return false;\n }\n\n if (cModel === bModel && current_C_Version === bVersion) {\n // Model B - Model B Version is same as Model C and it's version\n return false;\n }\n\n return true;\n }\n ),\n });\n return modelSchema;\n }\n\n getInitialValuesForFormik() {\n let selectedModelA = '';\n let selectedModelAVersion = '';\n let selectedModelB = '';\n let selectedModelBVersion = '';\n let selectedModelC = '';\n let selectedModelCVersion = '';\n\n if (!IS_NONE_CHECK.includes(this.state.modelA)) {\n selectedModelA = this.state.modelA[\"value\"];\n }\n\n if (!IS_NONE_CHECK.includes(this.state.modelA_version)) {\n selectedModelAVersion = this.state.modelA_version[\"value\"];\n }\n\n if (!IS_NONE_CHECK.includes(this.state.modelB)) {\n selectedModelB = this.state.modelB[\"value\"];\n }\n\n if (!IS_NONE_CHECK.includes(this.state.modelB_version)) {\n selectedModelBVersion = this.state.modelB_version[\"value\"];\n }\n\n if (!IS_NONE_CHECK.includes(this.state.modelC)) {\n selectedModelC = this.state.modelC[\"value\"];\n }\n\n if (!IS_NONE_CHECK.includes(this.state.modelC_version)) {\n selectedModelCVersion = this.state.modelC_version[\"value\"];\n }\n\n let initial_values = {\n modelA: String(selectedModelA), modelA_version: String(selectedModelAVersion),\n modelB: selectedModelB, modelB_version: selectedModelBVersion,\n modelC: selectedModelC, modelC_version: selectedModelCVersion,\n };\n\n return initial_values;\n }\n\n render() {\n let modelSchema = this.getModelABConfigurationSchema();\n const initial_values = this.getInitialValuesForFormik();\n\n let addButtonClassName = \"vertical-stepper__heading has-hyperlink \";\n if (this.state.show3rdSection) {\n addButtonClassName = addButtonClassName + \"disabled\";\n }\n\n return (\n \n \n

    \n Model AB Creation\n

    \n
    \n\n \n {\"Please do the Model AB Testing by clicking \"}\n \n \n \n \n {\" Plus symbol\"}\n \n {\" you wish to continue monitoring in the new plan\"}\n \n \n {({\n values,\n setFieldValue,\n handleReset,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n\n \n
    \n 1\n
    \n Model A\n
    \n\n
    \n
    \n
    \n \n Choose Model\n *\n \n label.includes(query)}\n options={this.state.availableModelOptions}\n isInvalid={errors.modelA && touched.modelA}\n onChange={selectedOption => {\n handleChange(\"modelA\")(selectedOption.value);\n this.updateVersionOptions(\"availableModelAVersions\", selectedOption.value, setFieldValue);\n setFieldValue(\"modelA_version\", '');\n this.setState({\n modelA: selectedOption,\n modelA_version: '',\n });\n }}\n value={this.state.modelA}\n id={\"modelA\"}\n isOptionDisabled={(option) => option.disabled === 'yes'}\n placeholder=\"Choose Model\"\n />\n \n \n\n \n Choose Version *\n \n label.includes(query)}\n options={this.state.availableModelAVersions}\n isInvalid={errors.modelA_version && touched.modelA_version}\n onChange={selectedOption => {\n handleChange(\"modelA_version\")(selectedOption.value);\n this.setState({\n modelA_version: selectedOption,\n });\n }}\n value={this.state.modelA_version}\n id={\"modelA_version\"}\n isOptionDisabled={(option) => option.disabled === 'yes'}\n placeholder=\"Version\"\n />\n \n \n
    \n
    \n\n
    \n
    \n
    \n 2\n
    \n Model B\n
    \n
    \n
    \n
    \n \n Choose Model *\n \n label.includes(query)}\n options={this.state.modelBOptions}\n isInvalid={errors.modelB && touched.modelB}\n onChange={selectedOption => {\n handleChange(\"modelB\")(selectedOption.value);\n this.updateVersionOptions(\"availableModelBVersions\", selectedOption.value);\n setFieldValue(\"modelB_version\", '');\n this.setState({\n modelB: selectedOption,\n modelB_version: '',\n });\n }}\n value={this.state.modelB}\n id={\"modelB\"}\n isOptionDisabled={(option) => option.disabled === 'yes'}\n placeholder=\"Choose Model\"\n />\n \n \n\n \n Choose Version *\n \n label.includes(query)}\n options={this.state.availableModelBVersions}\n isInvalid={errors.modelB_version && touched.modelB_version}\n onChange={selectedOption => {\n handleChange(\"modelB_version\")(selectedOption.value);\n this.setState({\n modelB_version: selectedOption,\n });\n }}\n value={this.state.modelB_version}\n id={\"modelB_version\"}\n isOptionDisabled={(option) => option.disabled === 'yes'}\n placeholder=\"Version\"\n />\n \n \n\n
    \n\n
    \n
    \n\n {this.state.show3rdSection ?\n
    \n
    \n 3\n
    \n Model C\n
    \n \n
    \n
    \n
    \n \n Choose Model *\n \n label.includes(query)}\n options={this.state.modelCOptions}\n isInvalid={errors.modelC && touched.modelC}\n onChange={selectedOption => {\n handleChange(\"modelC\")(selectedOption.value);\n this.updateVersionOptions(\"availableModelCVersions\", selectedOption.value);\n setFieldValue(\"modelC_version\", '');\n this.setState({\n modelC: selectedOption,\n modelC_version: '',\n });\n }}\n value={this.state.modelC}\n id={\"modelC\"}\n isOptionDisabled={(option) => option.disabled === 'yes'}\n placeholder=\"Choose Model\"\n />\n \n \n\n \n Choose Version *\n \n label.includes(query)}\n options={this.state.availableModelCVersions}\n isInvalid={errors.modelC_version && touched.modelC_version}\n onChange={selectedOption => {\n handleChange(\"modelC_version\")(selectedOption.value);\n this.setState({\n modelC_version: selectedOption,\n });\n }}\n value={this.state.modelC_version}\n id={\"modelC_version\"}\n isOptionDisabled={(option) => option.disabled === 'yes'}\n placeholder=\"Version\"\n />\n \n \n\n
    \n\n
    \n
    \n\n :\n ''\n }\n
    \n\n \n\n
    \n\n \n \n\n \n \n\n\n )}\n\n\n \n \n\n \n );\n\n }\n}\n\n\nexport default ConfigureABTest;\n","import React from 'react';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport RcTooltip from 'rc-tooltip';\n\nclass TableCellButton extends React.Component {\n\n render() {\n const toolTipContentVal = this.props.toolTipContent;\n\n if (toolTipContentVal === undefined || toolTipContentVal === null) {\n return (\n \n );\n }\n\n // We need to show tooltip since tooltip content is not null\n return (\n <>\n \n {toolTipContentVal}\n \n }\n arrowContent={
    }>\n \n
    \n \n );\n }\n}\n\nexport default TableCellButton;","import React from \"react\";\nimport TableCellButton from \"../../components/tableCellButton\";\nimport {browserHistory} from 'react-router';\n\nimport {\n faCheckDouble,\n faTrash, faEdit\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n TABLE_COMP_MODELS_CLASS, TABLE_DELETE_CLASS,\n TABLE_EDIT_CLASS\n} from \"../../utils/constant\";\n// import ViewContentModelAB from \"./viewContentModelAB\";\nimport {handleDeleteForModelABConfig} from \"../../utils/event_handling\";\nimport ConfigureABTest from \"./configureABTest\";\nimport {DeleteWarningModal} from \"../../components/DeleteWarningModal\";\n\nclass ModelABEditActions extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.go_to_monitor_page = this.go_to_monitor_page.bind(this);\n this.state = {deleteButtonDisabled: false}\n }\n\n go_to_monitor_page() {\n const modelAbId = this.props.view_details.model_ab_id;\n browserHistory.push(`/monitor/modelPerf/mp_compare_view/${modelAbId}`);\n }\n\n render() {\n let matchingData = null;\n if (this.props.edit) {\n // Prepare data required for edit operation\n const modelAbId = this.props.view_details.model_ab_id;\n\n // This will get existing model AB data list, we will be using this to identify\n // pre-selected options\n const existingABData = this.props.modelABTableProps.getExistingABData();\n matchingData = existingABData.filter(x => x.model_ab_id === modelAbId)[0];\n }\n\n return (\n
    \n {/**/}\n {/**/}\n\n \n \n\n \n \n\n \n \n\n {/*{this.props.view ?*/}\n {/* */}\n\n {/* */}\n {/* : ''*/}\n {/*}*/}\n\n \n \n\n {this.props.edit && matchingData !== null ?\n \n\n \n : ''\n }\n\n
    \n );\n }\n}\n\nexport default ModelABEditActions;\n","import React, {useState} from \"react\";\nimport ModelABEditActions from \"./modelABEditActions\";\n\nexport function ModelABEdit(props) {\n const [view, setView] = useState(false);\n const viewClose = () => setView(false);\n const viewShow = () => setView(true);\n\n const [edit, setEdit] = useState(false);\n const closeEdit = () => setEdit(false);\n const showEdit = () => setEdit(true);\n\n const [deleteWarningStatus, setDeleteWarning] = useState(false);\n const closeDeleteWarning = () => setDeleteWarning(false);\n const enableDeleteWarning = () => setDeleteWarning(true);\n\n return (\n \n );\n\n}\n","import {call_get_api, call_post_api, postUIlogs} from \"./event_handling\";\nimport { ui_service_ip } from \"./ip_details\";\nimport moment from 'moment';\nimport {MAX_UNREAD_PER_PAGE} from \"./constant\";\nimport {\n attributeIDFromMappedValue,\n attributeNameFromMappedValue,\n datasetIDFromMappedValue,\n METADATA_MAP_KEY_SEPARATOR, \n METADATA_MAP_VALUE_SEPARATOR\n} from \"./attribute_name_utils\";\n\nlet startDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\nlet endDate = moment().format('YYYY-MM-DD 23:59:59');\n\nexport function preFetchRelationshipData (\n tenantData, setDataSource, setMlDataSource, addRelationship,\n addDataSource, addInfo, addLastProfilingTime, setStartDate, setEndDate, addDiscoveryStatus, addProcessingStatus, noIntegration, store\n) {\n let page = 1;\n tenantData[\"page\"] = page;\n call_post_api(ui_service_ip, \"profile/data/relationship/latest\", tenantData).then(\n (result) => {\n if (result !== undefined && result !== null && result.integration !== null ) {\n let profileRequestData = {\n \"integrations\": [result.integration],\n \"tenant_id\": tenantData.tenant_id,\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate\n }\n call_post_api(ui_service_ip, \"profile/info/latest\", profileRequestData).then(\n (profileResult) => {\n let infoData = {};\n if (profileResult !== undefined && profileResult !== null) {\n infoData[result.integration] = profileResult.response;\n if (store !== undefined) {\n store.dispatch(addInfo(infoData));\n store.dispatch(setDataSource(result.integration));\n store.dispatch(setMlDataSource(result.integration));\n } else {\n addInfo(infoData);\n setDataSource(result.integration);\n setMlDataSource(result.integration);\n }\n }\n }\n );\n if (store !== undefined) {\n store.dispatch(addRelationship(result.integration, result[result.integration]));\n if (result.count.length === 0 || result.integration === undefined){\n store.dispatch(noIntegration(true));\n }\n else{\n store.dispatch(noIntegration(false));\n }\n store.dispatch(addDataSource(result.integration, result.integration_name));\n store.dispatch(addDiscoveryStatus(result.integration, result.status_text));\n store.dispatch(addProcessingStatus(result.integration, result.latest_processing_status));\n } else {\n addRelationship(result.integration, result[result.integration]);\n if (result.count.length === 0 || result.integration === undefined){\n noIntegration(true);\n }\n else{\n noIntegration(false);\n }\n addDataSource(result.integration, result.integration_name);\n addDiscoveryStatus(result.integration, result.status_text);\n addProcessingStatus(result.integration, result.latest_processing_status);\n }\n let firstPage = \"yes\"\n getLastProfilingTime(firstPage, addLastProfilingTime, tenantData.tenant_id, setStartDate, setEndDate, store);\n let totalPage = result.count;\n firstPage = \"no\"\n while (page < totalPage ) {\n page = page + 1;\n tenantData[\"page\"] = page;\n call_post_api(ui_service_ip, \"profile/data/relationship/latest\", tenantData).then(\n (pageResult) => {\n if (pageResult !== null && pageResult !== undefined) {\n let profileRequestData = {\n \"integrations\": [pageResult.integration],\n \"tenant_id\": tenantData.tenant_id,\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate\n }\n if (store !== undefined) {\n if (pageResult.count.length === 0 || pageResult.integration === undefined){\n store.dispatch(noIntegration(true));\n }\n else{\n store.dispatch(noIntegration(false));\n }\n store.dispatch(addDataSource(pageResult.integration, pageResult.integration_name));\n store.dispatch(addDiscoveryStatus(pageResult.integration, pageResult.status_text));\n store.dispatch(addProcessingStatus(pageResult.integration, pageResult.latest_processing_status));\n } else {\n if (pageResult.count.length === 0 || pageResult.integration === undefined){\n noIntegration(true);\n }\n else{\n noIntegration(false);\n }\n addDataSource(pageResult.integration, pageResult.integration_name);\n addDiscoveryStatus(pageResult.integration, pageResult.status_text);\n addProcessingStatus(pageResult.integration, pageResult.latest_processing_status);\n }\n call_post_api(ui_service_ip, \"profile/info/latest\", profileRequestData).then(\n (profileResult) => {\n let infoData = {};\n if (profileResult !== undefined && profileResult !== null) {\n infoData[pageResult.integration] = profileResult.response;\n if (store !== undefined) {\n store.dispatch(addInfo(infoData));\n } else {\n addInfo(infoData);\n } \n\n }\n }\n );\n if (store !== undefined) {\n store.dispatch(addRelationship(pageResult.integration, pageResult[pageResult.integration]));\n } else {\n addRelationship(pageResult.integration, pageResult[pageResult.integration]);\n }\n }\n }\n );\n }\n }\n }\n )\n}\n\nexport function preFetchMetaData(\n tenantData, addMetaData, addEnvironment,\n addEnvironmentDataSourceMapping, addDataSourceDataSetMapping,\n addDataSetAttributeMapping, setDataSet, setAttribute, setDataSource, setMlDataSource, addRelationship,\n addDataSource, addInfo, addLastProfilingTime, setStartDate, setEndDate, addDiscoveryStatus, addProcessingStatus, noIntegration, store,retries=3\n) {\n\n call_get_api(ui_service_ip, \"metadata/mapping/latest\",{\"tenant_id\":tenantData[\"tenant_id\"]}).then(\n (result) => {\n if (result !== undefined && result !== null) {\n for (const [key, value] of Object.entries(result.meta_data)) {\n let dataSetId = datasetIDFromMappedValue(key);\n let attributeId = attributeIDFromMappedValue(key);\n let attributeName = attributeNameFromMappedValue(value);\n if (store !== undefined) {\n store.dispatch(addMetaData(result.meta_data));\n store.dispatch(setDataSet(dataSetId));\n store.dispatch(setAttribute(attributeId, attributeName));\n } else {\n addMetaData(result.meta_data);\n setDataSet(dataSetId);\n setAttribute(attributeId, attributeName);\n }\n break;\n }\n let firstPage = \"yes\"\n getLastProfilingTime(firstPage, addLastProfilingTime, tenantData.tenant_id, setStartDate, setEndDate, store);\n preFetchRelationshipData(\n tenantData, setDataSource, setMlDataSource, addRelationship,\n addDataSource, addInfo, addLastProfilingTime,setStartDate, setEndDate, addDiscoveryStatus, addProcessingStatus, noIntegration, store\n );\n formEnvData(\n result.meta_data, addEnvironment, addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping, addDataSetAttributeMapping, store\n );\n }\n else {\n if (retries > 0) {\n preFetchMetaData(\n tenantData, addMetaData, addEnvironment,\n addEnvironmentDataSourceMapping, addDataSourceDataSetMapping,\n addDataSetAttributeMapping, setDataSet, setAttribute, setDataSource, setMlDataSource, addRelationship,\n addDataSource, addInfo, addLastProfilingTime, setStartDate, setEndDate, addDiscoveryStatus, addProcessingStatus, noIntegration, store,retries - 1)\n }\n }\n }\n );\n}\n\nexport function preFetchUserNotifications(tenantData, setUserNotificationToState, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n let data = {tenant_id:tenantID,count:MAX_UNREAD_PER_PAGE}\n call_get_api(ui_service_ip, \"user_notification/unread\",data).then(\n (result) => {\n if (result === undefined || result === null) {\n if (retries > 0) {\n preFetchUserNotifications(tenantData, setUserNotificationToState, store,retries-1)\n }\n const error = `Unable to fetch user notification for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n\n result[\"page\"] = 1;\n if (store !== undefined) {\n store.dispatch(setUserNotificationToState(result));\n } else {\n setUserNotificationToState(result);\n }\n }\n );\n}\n\n\nfunction formEnvData(\n metadata, addEnvironment, addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping, addDataSetAttributeMapping, store\n) {\n let envData = {};\n let dataSourceInfo = {};\n let dataSetInfo = {};\n let attributeInfo = {};\n for (let item in metadata) {\n let idList = item.split(METADATA_MAP_KEY_SEPARATOR);\n if (idList.length === 3){\n continue;\n }\n\n let envId = idList[0];\n if (!(envId in envData)) {\n envData[envId] = metadata[item].split(METADATA_MAP_VALUE_SEPARATOR)[0];\n dataSourceInfo[envId] = [];\n }\n let dataSourceId = idList[1];\n if (dataSourceInfo[envId].indexOf(dataSourceId) === -1) {\n dataSourceInfo[envId].push(dataSourceId);\n dataSetInfo[dataSourceId] = [];\n }\n let dataSetId = idList[2];\n if (dataSetInfo[dataSourceId].indexOf(dataSetId) === -1) {\n dataSetInfo[dataSourceId].push(dataSetId);\n attributeInfo[dataSetId] = [];\n }\n let attributeId = idList[3];\n if (attributeId!== undefined && attributeInfo[dataSetId].indexOf(attributeId) === -1) {\n attributeInfo[dataSetId].push(attributeId)\n }\n }\n if (store !== undefined) {\n store.dispatch(addEnvironment(envData));\n store.dispatch(addEnvironmentDataSourceMapping(dataSourceInfo));\n store.dispatch(addDataSourceDataSetMapping(dataSetInfo));\n store.dispatch(addDataSetAttributeMapping(attributeInfo));\n } else {\n addEnvironment(envData);\n addEnvironmentDataSourceMapping(dataSourceInfo);\n addDataSourceDataSetMapping(dataSetInfo);\n addDataSetAttributeMapping(attributeInfo);\n }\n}\n\nfunction getLastProfilingTime(firstPage, addLastProfilingTime, tenantId, setStartDate, setEndDate, store){\n let endPoint = \"metrics_store_payload_created_time\";\n let data = {\"tenant_id\":tenantId}\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response !== undefined && response.code === 200) { \n let results = response[\"results\"];\n if (results !== null && results.length > 0){\n for (let index = 0; index < results.length; index++) { \n let integrationId = results[index][\"integration_id\"] \n if (store !== undefined) {\n store.dispatch(addLastProfilingTime(integrationId, results[index][\"last_processed_time\"]));\n } else {\n addLastProfilingTime(integrationId, results[index][\"last_processed_time\"]);\n }\n if (firstPage === \"yes\" ) {\n if(store !== undefined) {\n store.dispatch(setStartDate(moment(results[index][\"last_processed_time\"])))\n store.dispatch(setEndDate(moment(results[index][\"last_processed_time\"])))\n } else {\n setStartDate(moment(results[index][\"last_processed_time\"]))\n setEndDate(moment(results[index][\"last_processed_time\"]))\n }\n firstPage = false\n }\n }\n\n } \n\n }\n }\n );\n}\n\n\nexport function prefetchDatasetDetails(tenantData, addDatasetVersions, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n\n let data = {\"tenant_id\" : tenantID};\n call_get_api(ui_service_ip, \"/datasets\",data).then(\n (result) => {\n if (result === undefined || result === null) {\n if (retries > 0) {\n prefetchDatasetDetails(tenantData, addDatasetVersions, store,retries-1)\n }\n const error = `Unable to fetch dataset version details for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n if (store !== undefined) {\n store.dispatch(addDatasetVersions(result.datasets));\n } else {\n addDatasetVersions(result.datasets);\n }\n }\n );\n}\n\n\nexport function prefetchRecencyDetails(tenantData, addRecencyDetails, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n\n const endPoint = \"recency/all\";\n let data = {\"tenant_id\":tenantID, \"type\":\"profile\"};\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result === undefined || result === null) {\n if (retries > 0) {\n prefetchRecencyDetails(tenantData, addRecencyDetails, store,retries-1)\n }\n const error = `Unable to fetch recency details for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n if (store !== undefined) {\n store.dispatch(addRecencyDetails(result.profile_res));\n } else {\n addRecencyDetails(result.profile_res);\n }\n }\n );\n}\n\n\nexport function prefetchModelABData(tenantData, addModelABDataToList, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n\n const endPoint = `/model_ab_data`;\n call_get_api(ui_service_ip, endPoint).then(\n (result) => {\n if (result === undefined || result === null || result.code !== 200) {\n if (retries > 0) {\n prefetchModelABData(tenantData, addModelABDataToList, store,retries-1)\n }\n const error = `Unable to fetch model_ab_data for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n if (store !== undefined) {\n store.dispatch(addModelABDataToList(result.model_ab_data, result.model_info_map));\n } else {\n addModelABDataToList(result.model_ab_data, result.model_info_map);\n }\n }\n );\n}\n\n\nexport function prefetchRecentHistory(tenantData, addRecentHistory, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n\n const endPoint = \"recent_search\";\n call_get_api(ui_service_ip, endPoint,{\"tenant_id\":tenantID}).then(\n (result) => {\n if (result === undefined || result === null) {\n if (retries > 0) {\n prefetchRecentHistory(tenantData, addRecentHistory,store,retries-1)\n }\n const error = `Unable to fetch recent search history for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n let searchResults = Object.values(result.search_results)\n if (store !== undefined) {\n store.dispatch(addRecentHistory(searchResults));\n } else {\n addRecentHistory(searchResults);\n }\n }\n );\n}\n\n\nexport function prefetchDataSize(tenantData, addDataSize, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n\n const endPoint = \"data_size\";\n call_get_api(ui_service_ip, endPoint,{\"tenant_id\":tenantID}).then(\n (result) => {\n if (result === undefined || result === null) {\n if (retries > 0) {\n prefetchDataSize(tenantData, addDataSize, store,retries-1)\n }\n const error = `Unable to fetch data size for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n let dataSize = result.data_size\n if (store !== undefined) {\n store.dispatch(addDataSize(dataSize));\n } else {\n addDataSize(dataSize);\n }\n }\n );\n}\n\n\nexport function preFetchMetadataDetails(tenantData, storeMetadataDetails, store,retries=3) {\n const tenantID = tenantData[\"tenant_id\"];\n if (tenantID === undefined || tenantID === null) {\n return;\n }\n\n const endPoint = \"alert_applicable_metrics\";\n call_get_api(ui_service_ip, endPoint,{\"tenant_id\":tenantID}).then(\n (result) => {\n if (result === undefined || result === null) {\n const error = `Unable to fetch metadata details for tenant: ${tenantID}`;\n postUIlogs(error);\n return;\n }\n let metadataDetails = result.metadata_details\n if (store !== undefined) {\n store.dispatch(storeMetadataDetails(metadataDetails));\n } else {\n storeMetadataDetails(metadataDetails);\n }\n }\n );\n}\n\nexport function formData(mappedDatasetInfo, data_mappedDatasetInfo, store) {\n if (data_mappedDatasetInfo !== undefined){\n if(store !== undefined){\n store.dispatch(mappedDatasetInfo(data_mappedDatasetInfo));\n } \n else {\n mappedDatasetInfo(data_mappedDatasetInfo);\n }\n }\n }","import { \n call_post_api,\n call_get_api } from \"./event_handling\";\nimport { ui_service_ip } from \"./ip_details\";\n// import moment from 'moment';\n// import { CONFORMITY_METRIC_KEYS} from \"./constant\";\nimport moment from 'moment';\n// import {\n// attributeIDFromMappedValue,\n// attributeNameFromMappedValue,\n// datasetIDFromMappedValue,\n// } from \"./attribute_name_utils\";\n// import { getMonitorTabDQPListViewTableData } from \"../utils/common_utils\"\n// import { normalizeChildDatasetName } from \"../utils/attribute_name_utils\"\n import {\n IS_NONE_CHECK\n} from \"../utils/constant\";\n\nexport function getDateObject(timeStr) {\n let dateObj;\n let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (isSafari) {\n dateObj = new Date(timeStr.replace(/\\s/, 'T'));\n } else {\n dateObj = new Date(timeStr);\n }\n return dateObj;\n}\n\n\n//export function preFetchMlMonitorPreview(tenantData, setMlPreview, store) {\n// // Not in use\n// call_post_api(ui_service_ip, \"/monitor/info/preview\", tenantData).then(\n// (result) => {\n// if (result !== undefined && result !== null) {\n// setMlPreview(result[\"ml_model\"]);\n// }\n// }\n// );\n//}\n\n/**Optimization Changes*/\n export function preFetchMonitorInfo(\n tenantData, addCompletenessDataSetInfo, addCompletenessAttributeInfo,\n addTimelinessDataSetInfo, addTimelinessAttributeInfo, addAccuracyDataSetInfo,\n addAccuracyAttributeInfo, addConformityDataSetInfo, addConformityAttributeInfo,\n addConsistencyDataSetInfo, addConsistencyAttributeInfo,\n addDriftDataSetInfo, addDriftAttributeInfo, addMLDataSetInfo,\n addMLAttributeInfo, addMonitorPreview, addUniquenessDataSetInfo,\n addUniquenessAttributeInfo, addRecencyPreview, prefetchMonitorState, setDataSource, integrationId = null, store, retries = 3\n\n ) {\n let apiReqData = tenantData;\n if (integrationId !== null) {\n apiReqData[\"integration_id\"] = integrationId;\n }\n\n let monitorModuleProps = {}\n prefetchRecencyInfo(tenantData, store, addTimelinessDataSetInfo, addRecencyPreview);\n call_post_api(ui_service_ip, `monitor/info`, apiReqData).then(\n (result) => {\n if (result !== undefined && result !== null) {\n if (result.results !== undefined) {\n\n let integrationId = result.results[0].integration_id\n monitorModuleProps = persistInfoData(result.results, addCompletenessDataSetInfo, addCompletenessAttributeInfo,\n addTimelinessDataSetInfo, addTimelinessAttributeInfo, addAccuracyDataSetInfo,\n addAccuracyAttributeInfo, addConformityDataSetInfo, addConformityAttributeInfo,\n addConsistencyDataSetInfo, addConsistencyAttributeInfo,\n addDriftDataSetInfo, addDriftAttributeInfo, addMLDataSetInfo,\n addMLAttributeInfo, addMonitorPreview,\n addUniquenessDataSetInfo, addUniquenessAttributeInfo, prefetchMonitorState,\n store, integrationId\n );\n\n const integrationIds = result.integration_ids;\n if (integrationIds !== undefined) {\n for (let integrationId of integrationIds) {\n apiReqData[\"integration_id\"] = integrationId;\n call_post_api(ui_service_ip, `monitor/info`, apiReqData).then(\n (result) => {\n if (result !== null && result !== undefined && result.results !== undefined) {\n persistInfoData(result.results, addCompletenessDataSetInfo, addCompletenessAttributeInfo,\n addTimelinessDataSetInfo, addTimelinessAttributeInfo, addAccuracyDataSetInfo,\n addAccuracyAttributeInfo, addConformityDataSetInfo, addConformityAttributeInfo,\n addConsistencyDataSetInfo, addConsistencyAttributeInfo,\n addDriftDataSetInfo, addDriftAttributeInfo, addMLDataSetInfo,\n addMLAttributeInfo,addMonitorPreview, addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,prefetchMonitorState,store,integrationId\n );\n }\n }\n );\n }\n }\n// let integration_name = this.props.filterData.datasourceOptions.filter((data)=>data.value ===Number(integrationId))\n const tenantId = localStorage.getItem('team_id');\n let endPoint = \"metrics_store_payload_created_time\";\n let data = { \"tenant_id\": tenantId, \"integration_id\": integrationId}\n let last_processed_time=null;\n call_get_api(ui_service_ip, endPoint, data).then((response) => {\n if (response !== undefined && response.code === 200) {\n let results = response[\"results\"];\n last_processed_time = results[0].last_processed_time\n // let maxLastProfilingTime = results.reduce((a, b) => Number(getDateObject(results[a])) > Number(getDateObject(results[b])) ? a : b);\n this.setState({\n monitorModuleProps: monitorModuleProps,\n// selectedDataSrc:{'value':String(integrationId), 'label':integration_name[0].label},\n showLoader: false,\n noIntegration: false,\n last_processed_time:last_processed_time\n })\n }\n }\n )\n\n // setTimeout(() => {\n // }, 1000);\n\n }\n else if(result.integration_ids !== undefined && result.integration_ids.length > 0){\n let integrationId = result.integration_ids[result.integration_ids.length-1]\n this.preFetchMonitorInfo(\n tenantData, addCompletenessDataSetInfo, addCompletenessAttributeInfo,\n addTimelinessDataSetInfo, addTimelinessAttributeInfo, addAccuracyDataSetInfo,\n addAccuracyAttributeInfo, addConformityDataSetInfo, addConformityAttributeInfo,\n addConsistencyDataSetInfo, addConsistencyAttributeInfo,\n addDriftDataSetInfo, addDriftAttributeInfo, addMLDataSetInfo,\n addMLAttributeInfo, addMonitorPreview, addUniquenessDataSetInfo,\n addUniquenessAttributeInfo, addRecencyPreview, prefetchMonitorState, setDataSource, integrationId\n )\n }\n else if (result.message === 'Result not found') {\n this.setState({\n showLoader: false,\n noIntegration: true\n })\n }\n }\n }\n );\n }\n\n\n function persistInfoData(data, addCompletenessDataSetInfo, addCompletenessAttributeInfo,\n addTimelinessDataSetInfo, addTimelinessAttributeInfo, addAccuracyDataSetInfo,\n addAccuracyAttributeInfo, addConformityDataSetInfo, addConformityAttributeInfo,\n addConsistencyDataSetInfo, addConsistencyAttributeInfo,\n addDriftDataSetInfo, addDriftAttributeInfo, addMLDataSetInfo,\n addMLAttributeInfo, addMonitorPreview, addUniquenessDataSetInfo, addUniquenessAttributeInfo, prefetchMonitorState, store, integrationId = 'none'\n ) {\n// commented lines are for dq monitor page\n// let chartData = {}\n let metricList = [\n// 'drift_dq_attribute',\n// 'drift_dq_dataset',\n//\n// 'completeness_dq_attribute',\n// 'completeness_dq_dataset',\n//\n// 'uniqueness_dq_attribute',\n// 'uniqueness_dq_dataset',\n//\n// 'accuracy_dq_attribute',\n// 'accuracy_dq_dataset',\n//\n// 'consistency_dq_dataset',\n// 'consistency_dq_attribute',\n//\n// 'conformity_dq_dataset',\n// 'conformity_dq_attribute',\n\n 'ml_attribute',\n 'ml_dataset',\n 'preview',\n\n ]\n\n// let completenessDataSetInfo = {}\n// let completenessAttributeInfo = {}\n//\n// let conformityDataSetInfo = {}\n// let conformityAttributeInfo = {}\n//\n// let accuracyDataSetInfo = {}\n// let accuracyAttributeInfo = {}\n//\n// let uniquenessDataSetInfo = {}\n// let uniquenessAttributeInfo = {}\n//\n// let driftDataSetInfo = {}\n// let driftAttributeInfo = {}\n//\n// let consistencyDataSetInfo = {}\n// let consistencyAttributeInfo = {}\n\n let monitorPreview = {}\n let mlDatasetInfo = {}\n let mlAttributeInfo = {}\n\n let filterPreviewData = data.filter((data) => data.type === 'preview' && data.payload !== undefined && Object.keys(data.payload).length !== 0)\n// monitorPreview['dq_metrics'] = filterPreviewData[0]['payload']['dq_metrics']\n// monitorPreview['dqpreview'] = filterPreviewData[0]['payload']['dq_metrics']\n monitorPreview['ml_model'] = filterPreviewData[0]['payload']['ml_model']\n monitorPreview['mlPreview'] = filterPreviewData[0]['payload']['ml_model']\n if(store !== undefined) {\n store.dispatch(monitorPreview['mlPreview'])\n }else {\n addMonitorPreview(monitorPreview['mlPreview'])\n }\n\n // Filter out Null data\n let filterData = data.filter((data) => metricList.includes(data.type) && data.payload.data !== undefined && Object.keys(data.payload.data).length !== 0)\n for (let metric of metricList) {\n\n filterData.filter((data) => data.type === metric && data.payload.data !== undefined && Object.keys(data.payload.data).length !== 0 &&\n // eslint-disable-next-line\n Object.keys(data.payload.data).map((key) => {\n // eslint-disable-next-line\n Object.keys(data.payload.data[key]).map((value) => {\n// if (metric === 'drift_dq_dataset') {\n// if (driftDataSetInfo[key] === undefined) {\n// driftDataSetInfo[key] = {}\n// driftDataSetInfo[key][value] = data.payload.data[key][value]\n//\n// }\n// else {\n// driftDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'drift_dq_attribute') {\n// if (driftAttributeInfo[key] === undefined) {\n// driftAttributeInfo[key] = {}\n// driftAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// driftAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// if (metric === 'uniqueness_dq_dataset') {\n// if (uniquenessDataSetInfo[key] === undefined) {\n// uniquenessDataSetInfo[key] = {}\n// uniquenessDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// uniquenessDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'uniqueness_dq_attribute') {\n// if (uniquenessAttributeInfo[key] === undefined) {\n// uniquenessAttributeInfo[key] = {}\n// uniquenessAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// uniquenessAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'completeness_dq_attribute') {\n// if (completenessAttributeInfo[key] === undefined) {\n// completenessAttributeInfo[key] = {}\n// completenessAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// completenessAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'completeness_dq_dataset') {\n// if (completenessDataSetInfo[key] === undefined) {\n// completenessDataSetInfo[key] = {}\n// completenessDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// completenessDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'accuracy_dq_dataset') {\n// if (accuracyDataSetInfo[key] === undefined) {\n// accuracyDataSetInfo[key] = {}\n// accuracyDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// accuracyDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// if (metric === 'accuracy_dq_attribute') {\n// if (accuracyAttributeInfo[key] === undefined) {\n// accuracyAttributeInfo[key] = {}\n// accuracyAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// accuracyAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'conformity_dq_dataset') {\n// if (conformityDataSetInfo[key] === undefined) {\n// conformityDataSetInfo[key] = {}\n// conformityDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// conformityDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'conformity_dq_attribute') {\n// if (conformityAttributeInfo[key] === undefined) {\n// conformityAttributeInfo[key] = {}\n// conformityAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// conformityAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'consistency_dq_dataset') {\n// if (consistencyDataSetInfo[key] === undefined) {\n// consistencyDataSetInfo[key] = {}\n// consistencyDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// consistencyDataSetInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n// else if (metric === 'consistency_dq_attribute') {\n// if (consistencyAttributeInfo[key] === undefined) {\n// consistencyAttributeInfo[key] = {}\n// consistencyAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// else {\n// consistencyAttributeInfo[key][value] = data.payload.data[key][value]\n// }\n// }\n if (metric === 'ml_dataset') {\n if (mlDatasetInfo[key] === undefined) {\n mlDatasetInfo[key] = {}\n mlDatasetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n mlDatasetInfo[key][value] = data.payload.data[key][value]\n }\n if(store !== undefined) {\n store.dispatch(addMLDataSetInfo(mlDatasetInfo))\n }else {\n addMLDataSetInfo(mlDatasetInfo)\n }\n }\n else if (metric === 'ml_attribute') {\n if (mlAttributeInfo[key] === undefined) {\n mlAttributeInfo[key] = {}\n mlAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n mlAttributeInfo[key][value] = data.payload.data[key][value]\n }\n if(store !== undefined) {\n store.dispatch(addMLAttributeInfo(mlAttributeInfo))\n }else {\n addMLAttributeInfo(mlAttributeInfo)\n }\n }\n else if (metric === 'preview') {\n if (monitorPreview[key] === undefined) {\n monitorPreview[key] = {}\n monitorPreview[key][value] = data.payload.data[key][value]\n }\n else {\n monitorPreview[key][value] = data.payload.data[key][value]\n }\n if(store !== undefined) {\n store.dispatch(addMonitorPreview(monitorPreview))\n }else {\n addMonitorPreview(monitorPreview)\n }\n }\n })\n }\n ))\n }\n\n if (integrationId !== 'none') {\n prefetchMonitorState(integrationId)\n }\n\n let monitorModuleProps = {\n// \"accuracyAttributeInfo\": accuracyAttributeInfo,\n// \"accuracyDataSetInfo\": accuracyDataSetInfo,\n// \"consistencyDataSetInfo\": consistencyDataSetInfo,\n// \"consistencyAttributeInfo\": consistencyAttributeInfo,\n// \"conformityDataSetInfo\": conformityDataSetInfo,\n// \"conformityAttributeInfo\": conformityAttributeInfo,\n// \"completenessAttributeInfo\": completenessAttributeInfo,\n// \"completenessDataSetInfo\": completenessDataSetInfo,\n// \"driftAttributeInfo\": driftAttributeInfo,\n// \"driftDataSetInfo\": driftDataSetInfo,\n \"mlAttributeInfo\": mlAttributeInfo,\n \"mlDataSetInfo\": mlDatasetInfo,\n \"monitorPreview\": monitorPreview,\n// \"uniquenessAttributeInfo\": uniquenessAttributeInfo,\n// \"uniquenessDataSetInfo\": uniquenessDataSetInfo,\n// \"dqPreview\": monitorPreview,\n// \"MonitorPreview\": monitorPreview\n }\n return monitorModuleProps\n }\n\n\n export function preFetchMonitorListViewData(tenantData, addMonitorDQListViewData, integrationId = null, store, retries = 3) {\n let endPoint = \"monitor_list_view\";\n let data = { \"tenant_id\": tenantData, \"res_type\": \"dq\" }\n if (integrationId !== null) {\n data[\"integration_id\"] = integrationId;\n }\n // prefetchRecencyInfo(tenantData, store, addTimelinessDataSetInfo, addRecencyPreview);\n\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null && result.list_view_data !== null) {\n if (store !== undefined) {\n store.dispatch(addMonitorDQListViewData(result.list_view_data))\n } else {\n addMonitorDQListViewData(result.list_view_data)\n }\n let endPoint = \"recency/all\";\n let reData = { \"tenant_id\": tenantData, \"type\": \"monitor_list\" };\n call_get_api(ui_service_ip, endPoint, reData).then(\n (recencyResult) => {\n if (recencyResult !== undefined && recencyResult.message === \"Successfully fetched\") {\n let recencyProfileResult = recencyResult.monitor_list_view;\n recencyProfileResult[\"isRecency\"] = true;\n if (store !== undefined) {\n store.dispatch(addMonitorDQListViewData(recencyProfileResult));\n } else {\n addMonitorDQListViewData(recencyProfileResult);\n }\n }\n }\n );\n let integrationIds = result.integration_ids;\n if (integrationIds !== undefined && integrationIds.length > 0) {\n for (let integrationId of integrationIds) {\n let endPoint = \"monitor_list_view\";\n data[\"integration_id\"] = integrationId;\n call_get_api(ui_service_ip, endPoint, data).then(\n (curr_result) => {\n if (curr_result !== undefined) {\n integrationIds.pop(integrationId)\n let curr_list_view_data = curr_result.list_view_data;\n if (IS_NONE_CHECK.includes(curr_list_view_data)) {\n curr_list_view_data = {};\n }\n curr_list_view_data[\"apiFetchOver\"] = true;\n if (result !== undefined && result !== null) {\n if (store !== undefined) {\n store.dispatch(addMonitorDQListViewData(curr_list_view_data));\n } else {\n addMonitorDQListViewData(curr_list_view_data);\n }\n }\n if (integrationIds.length === 0) {\n let endPoint = \"recency/all\";\n let reData = { \"tenant_id\": tenantData, \"type\": \"monitor_list\" };\n call_get_api(ui_service_ip, endPoint, reData).then(\n (recencyResult) => {\n if (recencyResult !== undefined && recencyResult.message === \"Successfully fetched\") {\n let recencyProfileResult = recencyResult.monitor_list_view;\n recencyProfileResult[\"isRecency\"] = true;\n if (store !== undefined) {\n store.dispatch(addMonitorDQListViewData(recencyProfileResult));\n } else {\n addMonitorDQListViewData(recencyProfileResult);\n }\n }\n }\n );\n }\n }\n }\n );\n }\n }\n \n let list_view_data = result.list_view_data;\n list_view_data[\"apiFetchOver\"] = true;\n// let integrationId = result.integration_id\n//\n// if (integrationId === undefined || integrationId === null) {\n// this.setState({ showLoader: false, noIntegration: true })\n// }\n// else {\n// this.setState({ noIntegration: false })\n// let filterdatasouce = [];\n// if(this.props.filterData !== undefined && this.props.filterData !==\"\"){\n// if(this.props.filterData.datasourceOptions !== undefined && this.props.filterData.datasourceOptions !==null){\n// filterdatasouce = this.props.filterData.datasourceOptions.filter((data)=>\n// data.value === integrationId\n// )\n// }\n// }\n// let datasets = []\n// integrationId = String(integrationId)\n// if (this.props.mappedDatasetInfo[\"idDatasetDetail\"] !== undefined){\n// for (const [key, value] of Object.entries(this.props.mappedDatasetInfo[\"idDatasetDetail\"])) {\n// if (value[\"dataSourceId\"] === integrationId) {\n// datasets.push({ \"label\": normalizeChildDatasetName(value[\"datasetName\"]), \"value\": key });\n// }\n// }\n// }\n//\n//\n//\n// let defaultDataSourceOption = {\"value\":integrationId,\"label\":this.props.dataModule.integrations[integrationId]}\n// const reqTableData = getMonitorTabDQPListViewTableData(this.state.mappedDatasetInfo, list_view_data, this.props.monitorModule.follow_attributes, this.props.timelinessData);\n// const listViewTableData = reqTableData.tableData;\n// this.setState({\n// keyData: `dqListView_${listViewTableData.length}`,\n// monitorDQListView: list_view_data,\n// currListViewTableData: listViewTableData, completeTableData: listViewTableData, listViewTableData: listViewTableData ,\n// defaultDatasourceInside:defaultDataSourceOption,\n// selectedDataSource:defaultDataSourceOption,\n// selectedDataSourceID: integrationId,\n// selectedDataSourceName:filterdatasouce.length > 0 ? filterdatasouce[0][\"label\"] : \"\",\n// datasets: datasets,\n// })\n// this.setState({showLoader:false})\n//\n// }\n }\n else if(result.list_view_data === undefined || result.list_view_data === null) {\n if(result.integration_ids !== undefined && result.integration_ids.length > 0){\n let integrationId = result.integration_ids[result.integration_ids.length-1];\n this.preFetchMonitorListViewData(tenantData, addMonitorDQListViewData,integrationId)\n }\n else{\n this.setState({ noIntegration: true, showLoader: false })\n }\n }\n else {\n if (retries > 0) {\n preFetchMonitorListViewData(tenantData, addMonitorDQListViewData, store, retries - 1)\n }\n }\n }\n );\n }\n\n\n// export function preFetchFollowAttributes(tenantData, addFollowAttributes, store, retries = 3) {\n// let endPoint = \"follow_attributes\";\n\n// call_get_api(ui_service_ip, endPoint, { \"tenant_id\": tenantData.tenant_id }).then(\n// (result) => {\n// if (result !== undefined && result !== null) {\n// if (store !== undefined) {\n// store.dispatch(addFollowAttributes(result.follow_attributes));\n// } else {\n// addFollowAttributes(result.follow_attributes);\n// }\n// }\n// else {\n// if (retries > 0) {\n// preFetchFollowAttributes(tenantData, addFollowAttributes, store, retries - 1)\n// }\n// }\n// }\n// );\n// }\n\n\n function prefetchRecencyInfo(tenantData, store, addTimelinessDataSetInfo, addRecencyPreview) {\n let endPoint = \"recency/all\";\n let reData = { \"tenant_id\": tenantData.tenant_id, \"type\": \"monitor_chart\" };\n call_get_api(ui_service_ip, endPoint, reData).then(\n (recencyResult) => {\n if (recencyResult !== undefined && recencyResult !== null) {\n if (recencyResult.code === 200) {\n let recencyData = recencyResult.monitor_others;\n let recencyPreviewData = recencyResult.preview_res;\n if (recencyData !== undefined && recencyData !== null) {\n let chartData = recencyData.data;\n if (store !== undefined) {\n store.dispatch(addTimelinessDataSetInfo(chartData))\n store.dispatch(addRecencyPreview(recencyPreviewData))\n } else {\n addTimelinessDataSetInfo(chartData)\n addRecencyPreview(recencyPreviewData)\n }\n }\n }\n }\n }\n );\n }\n\n\n\n\n\n\n// export function preFetchMonitorMetaData(\n// tenantData, addMetaData, setDataSet, setAttribute, store, retries = 3\n// ) {\n\n// call_get_api(ui_service_ip, \"metadata/mapping/latest\", { \"tenant_id\": tenantData[\"tenant_id\"] }).then(\n// (result) => {\n// if (result !== undefined && result !== null) {\n// for (const [key, value] of Object.entries(result.meta_data)) {\n// let dataSetId = datasetIDFromMappedValue(key);\n// let attributeId = attributeIDFromMappedValue(key);\n// let attributeName = attributeNameFromMappedValue(value);\n// if (store !== undefined) {\n// store.dispatch(addMetaData(result.meta_data));\n// store.dispatch(setDataSet(dataSetId));\n// store.dispatch(setAttribute(attributeId, attributeName));\n// } else {\n// addMetaData(result.meta_data);\n// setDataSet(dataSetId);\n// setAttribute(attributeId, attributeName);\n// }\n// break;\n// }\n// }\n// else {\n// if (retries > 0) {\n// preFetchMonitorMetaData(\n// tenantData, addMetaData, setDataSet, setAttribute, store, retries - 1)\n// }\n// }\n// }\n// );\n// }\n\n// export function fromMonitorData(mappedDatasetInfo, listViewTableData, data_mappedDatasetInfo, data_listViewTableData, store) {\n// if (data_mappedDatasetInfo !== undefined && data_listViewTableData !== undefined) {\n// if (store !== undefined) {\n// // mappedDatasetInfo(data_mappedDatasetInfo);\n// // listViewTableData(data_listViewTableData);\n// store.dispatch(mappedDatasetInfo(data_mappedDatasetInfo));\n// store.dispatch(listViewTableData(data_listViewTableData));\n// }\n// else {\n// mappedDatasetInfo(data_mappedDatasetInfo);\n// listViewTableData(data_listViewTableData);\n// }\n// }\n// }\n\n\n export function preFetchMonitorPreview(tenantData, addMonitorPreview, addPerformancePreview, addModelPerformanceResults, store, retries = 3) {\n tenantData.tenant_id = tenantData.tenant_id.toString();\n call_post_api(ui_service_ip, \"/model_performance/results/info\", tenantData).then(\n (result) => {\n if (result !== undefined && result !== null) {\n let data = result.data;\n let dateDetails = result.date_details;\n if (dateDetails !== undefined && dateDetails !== null) {\n data[\"filterStartDate\"] = dateDetails.filterStartDate;\n data[\"filterEndDate\"] = dateDetails.filterEndDate;\n data[\"dataFrom\"] = dateDetails.dataFrom;\n data[\"dataTo\"] = dateDetails.dataTo;\n }\n\n if (store !== undefined) {\n store.dispatch(addPerformancePreview(data));\n store.dispatch(addModelPerformanceResults(result.results));\n } else {\n addPerformancePreview(data);\n addModelPerformanceResults(result.results);\n }\n }\n else {\n if (retries > 0) {\n preFetchMonitorPreview(tenantData, addMonitorPreview, addPerformancePreview, addModelPerformanceResults, store, retries - 1)\n }\n }\n }\n );\n }\n\n\n// export function preFetchDqMonitorPreview(tenantData, setDqPreview, store) {\n// // Not in use\n// call_post_api(ui_service_ip, \"/monitor/info/preview\", tenantData).then(\n// (result) => {\n// if (result !== undefined && result !== null) {\n// if (store !== undefined) {\n// store.dispatch(setDqPreview(result[\"dq_metrics\"]));\n// } else {\n// setDqPreview(result[\"dq_metrics\"]);\n// }\n// }\n// }\n// );\n// }\n\n/**Optimization Changes End */\n\nexport function preFetchMonitorModelInfo(tenantData, addMLModelMapping, addMLDataSet, addMLAttribute, addMLModel, setMLModel, store, retries = 3) {\n let data = { \"tenant_id\": tenantData }\n call_get_api(ui_service_ip, \"model/map\", data).then(\n (result) => {\n if (result !== undefined && result !== null) {\n if (store !== undefined) {\n store.dispatch(addMLModelMapping(result.model_map));\n store.dispatch(setMLModel(Object.keys(result.model_map)[0]));\n } else {\n addMLModelMapping(result.model_map);\n setMLModel(Object.keys(result.model_map)[0]);\n }\n //getMonitorModelInfo(tenantData, \"dataset\", addMLDataSet, store);\n //getMonitorModelInfo(tenantData, \"attribute\", addMLAttribute, store);\n // Object.keys(result.model_map).forEach((mlModelId) => {\n // getProfileMLChart(tenantData, mlModelId, addMLModel, store);\n // });\n }\n else {\n if (retries > 0) {\n preFetchMonitorModelInfo(tenantData, addMLModelMapping, addMLDataSet, addMLAttribute, addMLModel, setMLModel, store, retries - 1)\n }\n }\n }\n );\n}\n\nexport function preFetchModelDetails(tenantData, addModelDetails, store, retries = 3) {\n let data = { tenant_id: tenantData, isDataset: 1 }\n call_get_api(ui_service_ip, \"ml-models\", data).then(\n (result) => {\n if (result !== undefined && result !== null) {\n if (store !== undefined) {\n store.dispatch(addModelDetails(result.ml_model));\n } else {\n addModelDetails(result.ml_model)\n }\n }\n else {\n if (retries > 0) {\n preFetchModelDetails(tenantData, addModelDetails, store, retries = retries - 1)\n }\n }\n\n }\n );\n}\n\n//export function getMonitorModelInfo(tenantData, level, persistData, store) {\n// // Not in use\n// let postData = {};\n// postData[\"tenant_id\"] = tenantData;\n// postData[\"type\"] = level;\n// call_post_api(ui_service_ip, `/monitor/info/ml?page=1&count=${MAX_CHARTS_PER_API}`, postData).then((result) => {\n// if (result !== null && result !== undefined) {\n// if (store !== undefined) {\n// store.dispatch(persistData(result.data));\n// } else {\n// persistData(result.data);\n// }\n//\n// let page = 1;\n// let totalPage = Math.ceil(result.count/MAX_CHARTS_PER_API);\n//\n// while (page < totalPage ) {\n// page = page + 1;\n// call_post_api(ui_service_ip, `/monitor/info/ml?page=${page}&count=${MAX_CHARTS_PER_API}`, postData).then(\n// (pageResult) => {\n// if (pageResult !== null && pageResult !== undefined) {\n// if (store !== undefined) {\n// store.dispatch(persistData(pageResult.data, store));\n// } else {\n// persistData(pageResult.data, store);\n// }\n// }\n// }\n// );\n// }\n// }\n//\n// });\n//}\n\n\n\n// call_get_api(ui_service_ip, \"metadata/mapping/latest\",{\"tenant_id\":tenantData[\"tenant_id\"]}).then(\n\n// For first time we will send only tenant id and res_type. API will return anyone of integration details and also\n// return other integration ids. We will call the same api with integration id. API will return data associated with\n// this integration id\n\n\n// This function was introduced for issue_1905.\n// function addConformityNoErrorData(conformityData) {\n// const errorMetricKeys = Object.keys(conformityData);\n// for (let key in CONFORMITY_METRIC_KEYS) {\n// if (errorMetricKeys.includes(CONFORMITY_METRIC_KEYS[key])) {\n// continue\n// } else {\n// conformityData[CONFORMITY_METRIC_KEYS[key]] = {}\n// }\n// }\n// return conformityData\n// }\n\n\nexport function getLastProfilingTime(tenantData, addLastProfilingTime, setStartDate, setEndDate, store) {\n let endPoint = \"metrics_store_payload_created_time\";\n call_get_api(ui_service_ip, endPoint, tenantData).then((response) => {\n if (response !== undefined && response.code === 200) {\n let results = response[\"results\"];\n // let maxLastProfilingTime = Object.keys(results).reduce((a, b) => Number(new Date(results[a])) > Number(new Date(results[b])) ? a : b);\n if (results !== null && results.length > 0) {\n for (let index = 0; index < results.length; index++) {\n let integrationId = results[index][\"integration_id\"]\n if (store !== undefined) {\n store.dispatch(addLastProfilingTime(integrationId, results[index][\"last_processed_time\"]));\n } else {\n addLastProfilingTime(integrationId, results[index][\"last_processed_time\"]);\n }\n if (store !== undefined) {\n store.dispatch(setStartDate(moment(results[index][\"last_processed_time\"])))\n store.dispatch(setEndDate(moment(results[index][\"last_processed_time\"])))\n } else {\n setStartDate(moment(results[index][\"last_processed_time\"]))\n setEndDate(moment(results[index][\"last_processed_time\"]))\n }\n }\n\n }\n\n }\n }\n );\n}\n\n\nexport function preFetchMetrics(tenantData, addMetrics, store, retries = 3) {\n let endPoint = \"metrics/monitor\";\n let data = { \"tenant_id\": tenantData }\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null) {\n if (store !== undefined) {\n store.dispatch(addMetrics(result.metrics));\n } else {\n addMetrics(result.metrics);\n }\n }\n else {\n if (retries > 0) {\n preFetchMetrics(tenantData, addMetrics, store, retries - 1)\n }\n }\n }\n );\n}","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport Tab from 'react-bootstrap/Tab';\nimport BasicPortlet from '../components/basicPortlet';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport URLWidget from './components/urlWidget';\nimport { getApi, postUIlogs, prepare_model_ab_data_for_a_config, get_api_call_cnt, get_api_call_complete_cnt, post_api_call_cnt, post_api_call_complete_cnt } from \"../utils/event_handling\";\nimport Nav from 'react-bootstrap/Nav';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport MLModelEnvironment from './mlmodel/environment';\nimport AddModel from './mlmodel/addModel';\nimport DSEnvironment from './dataSources/dsEnvironment';\nimport AddDataSources from './dataSources/addDataSources';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons';\nimport { formModelVersionMap, getFeatureAccess, toastObj } from \"../utils/common_utils\";\n\nimport Load from '../components/loadAction';\nimport ErrorHandler from '../components/error_500';\nimport RefreshesTable from \"../components/refreshesTable\";\nimport { connect } from \"react-redux\";\nimport { addMLModelMapping, setMLModel, setModelABDataToList } from \"../redux/actions\";\n\nimport ConfigureABTest from \"./mlmodel/configureABTest\";\nimport { ModelABEdit } from \"./mlmodel/modelABEdit\";\nimport {\n AB_MODELS_TABLE_TITLE, IS_NONE_CHECK,\n MAX_SLEEP_TIME, MAX_SLEEP_ERROR, NEG_SLEEP_ERROR, IS_NONE_SAAS_EDITION,\n // DQ_MONITOR_SECTIONS\n} from \"../utils/constant\";\nimport { postMixpanel } from '../mixpanel';\nimport store from \"../redux/store\";\nimport Form from 'react-bootstrap/Form';\nimport RcTooltip from 'rc-tooltip';\nimport Button from \"react-bootstrap/Button\";\nimport {\n // preFetchRelationshipData,\n preFetchMetaData, \n preFetchUserNotifications, prefetchDatasetDetails, prefetchRecencyDetails, prefetchRecentHistory,\n // prefetchModelABData, \n prefetchDataSize, preFetchMetadataDetails\n} from \"../utils/dataFetch\";\n\nimport {\n // preFetchMonitorPreview,\n // preFetchMonitorInfo,\n // preFetchMonitorModelInfo,\n // preFetchModelDetails,\n // preFetchMonitorListViewData,\n preFetchMetrics,\n // preFetchFollowAttributes,\n // fromMonitorData,\n getLastProfilingTime\n} from \"../utils/monitorDataFetch\";\nimport {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setEndDate,\n setStartDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setAttribute,\n setDataSet,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n addModelPerformance,\n addModelDetails,\n // addFollowAttributes,\n addMonitorDQListViewData,\n addMetrics,\n addUserNotificationToState,\n addDatasetVersions,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyDetails,\n addRecentHistory,\n addDataSize,\n addRecencyPreview,\n prefetchMonitorState,\n noIntegration,\n storeMetadataDetails,\n mappedDatasetInfo,\n listViewTableData\n} from \"../redux/actions\";\nimport NoErrorInPreview from \"../monitor/components/noErrorPreview\";\n\n// import {\n// extractDatasetInfoForMonitorListView,\n// getMonitorTabDQPListViewTableData,\n// setDQShowMoreData\n// } from \"../utils/common_utils\";\n\n// let cur_data = null;\n// let cur_datasource_updates=null;\n// let cur_isAddDS = false;\n// let pre_load = true;\n\nclass Configure extends React.Component {\n constructor(props) {\n super(props);\n let tab = \"ds\"\n if (this.props.route.navKey !== undefined && this.props.route.navKey !== null) {\n tab = this.props.route.navKey\n }\n this.pre_load = true;\n this.formDataOnce = 1;\n this.getApi = getApi.bind(this);\n this.setAddModel = this.setAddModel.bind(this);\n this.setModelVersion = this.setModelVersion.bind(this);\n this.setAddDS = this.setAddDS.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.setDataLimit = this.setDataLimit.bind(this);\n this.updateTable = this.updateTable.bind(this);\n this.getExistingABData = this.getExistingABData.bind(this);\n this.handleModelABAddition = this.handleModelABAddition.bind(this);\n this.modelHasModelABConfiguration = this.modelHasModelABConfiguration.bind(this);\n this.handleModelABDelete = this.handleModelABDelete.bind(this);\n this.showModelABConfigureSection = this.showModelABConfigureSection.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.updateEnvironmentList = this.updateEnvironmentList.bind(this);\n this.setEnvData = this.setEnvData.bind(this)\n this.renderRefreshTable = this.renderRefreshTable.bind(this)\n // this.preFetchMonitorGraph = this.preFetchMonitorGraph.bind(this);\n\n this.sleepIntervalChanged = this.sleepIntervalChanged.bind(this);\n this.cancelSleepInterval = this.cancelSleepInterval.bind(this);\n this.submitSleepInterval = this.submitSleepInterval.bind(this);\n this.renderScanIntervalComponents = this.renderScanIntervalComponents.bind(this);\n this.renderScanIntervalContent = this.renderScanIntervalContent.bind(this);\n\n // State variable => model_ab_data contains data for table rendering,\n // State variable => currModelABList contains AB data that is fetched from API\n this.state = {\n errorOccurred: false,\n toastStatus: false,\n current_tab: tab,\n featureAccess: getFeatureAccess(),\n data: null,\n integration_details: null,\n integration_option: null,\n mlDetails: null,\n mlData: null,\n mlLimitExceed: null,\n dataLimitExceed: null,\n isAddModel: false,\n isModelVersion: false,\n isAddDS: false,\n planName: null,\n environment: null,\n datasets: [],\n attributes: [],\n maxModel: null,\n datasource_updates: null,\n model_ab_data: null,\n currModelABList: [],\n model_ab_updated: false,\n model_updates: null,\n show: false,\n change_request_exists: false,\n env_id: null,\n datasourceErrorRefreshesId: \"datasourceErrorRefreshes\",\n modelRefreshesId: \"modelRefreshes\",\n intervalId: '',\n sleepComponentLoad: true,\n sleepInterval: 1,\n prevSleepInterval: 1,\n sleepIntervalClass: \"d-none\",\n isSleepIntervalErrMsg: \"\",\n updateStatus:false,\n }\n }\n\n sleepIntervalChanged(event) {\n let currInterval = event.target.value;\n let isSleepIntervalMaxErr = currInterval >= MAX_SLEEP_TIME;\n let sleepIntervalClass = Number(currInterval) === Number(this.state.prevSleepInterval) ? \"d-none\" : \"\";\n let errorMsg = \"\";\n if (isSleepIntervalMaxErr) {\n errorMsg = MAX_SLEEP_ERROR;\n } else if (Number(currInterval) <= 0) {\n errorMsg = NEG_SLEEP_ERROR;\n }\n if (errorMsg.length > 0) {\n sleepIntervalClass = \"d-none\";\n }\n this.setState({\n sleepInterval: currInterval,\n isSleepIntervalErrMsg: errorMsg,\n sleepIntervalClass: sleepIntervalClass\n });\n }\n submitSleepInterval() {\n this.getApi(\"save_dd_sleep_time\");\n }\n cancelSleepInterval() {\n let prevValue = Number(this.state.prevSleepInterval);\n this.setState({\n sleepInterval: prevValue,\n sleepIntervalClass: \"d-none\"\n });\n }\n\n setEnvData(data) {\n this.setState({ env_id: data })\n }\n\n getExistingABData() {\n return this.state.currModelABList;\n }\n\n modelHasModelABConfiguration(model_id) {\n const modelABList = this.state.currModelABList;\n let hasModelABConfiguration = false;\n for (let currentAB of modelABList) {\n if (currentAB.model_1 === model_id) {\n hasModelABConfiguration = true;\n break;\n }\n if (currentAB.model_2 === model_id) {\n hasModelABConfiguration = true;\n break;\n }\n if (currentAB.model_3 === model_id) {\n hasModelABConfiguration = true;\n break;\n }\n }\n\n return hasModelABConfiguration;\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n handleModelABAddition(model_ab_data, model_info_map, isEdit) {\n let modelAbData = this.state.model_ab_data;\n let modelABList = this.state.currModelABList;\n\n let newData = [];\n if (isEdit) {\n let updatedABList = [];\n for (const currAB of modelABList) {\n if (currAB.model_ab_id !== model_ab_data.model_ab_id) {\n updatedABList.push(currAB);\n continue;\n }\n\n updatedABList.push(model_ab_data);\n }\n modelABList = updatedABList;\n\n // Update table row data\n let prevList = modelAbData[\"data\"];\n for (const currRowData of prevList) {\n if (currRowData[6].model_ab_id !== model_ab_data.model_ab_id) {\n newData.push(currRowData);\n continue;\n }\n\n let abRowData = prepare_model_ab_data_for_a_config(model_ab_data, model_info_map);\n if (IS_NONE_CHECK.includes(abRowData)) {\n continue;\n }\n\n newData.push(abRowData);\n }\n\n } else {\n // Adding the newly added model AB configuration to row data and state variable\n let abRowData = prepare_model_ab_data_for_a_config(model_ab_data, model_info_map)\n if (IS_NONE_CHECK.includes(abRowData)) {\n return;\n }\n\n modelABList.push(model_ab_data);\n\n let prevList = modelAbData[\"data\"];\n newData = [abRowData, ...prevList];\n }\n\n modelAbData[\"data\"] = newData;\n\n // Set the information to dataModule state\n this.props.setModelABDataToList(modelABList, model_info_map);\n\n // Setting information to Configure state\n this.setState({\n model_ab_data: modelAbData,\n currModelABList: modelABList,\n model_ab_updated: !this.state.model_ab_updated\n });\n }\n\n handleModelABDelete(model_ab_id) {\n let prevABData = this.state.model_ab_data;\n let modelABList = this.state.currModelABList.filter(x => String(x.model_ab_id) !== String(model_ab_id));\n\n // Updates the state variable for model AB table data so it will be removed from ui\n let newList = [];\n for (const rowData of prevABData[\"data\"]) {\n const viewData = rowData[6];\n let currModel_ab_id = viewData[\"model_ab_id\"];\n if (currModel_ab_id === model_ab_id) {\n // Skip the deleted Model AB id\n continue;\n }\n\n newList.push(rowData);\n }\n\n prevABData[\"data\"] = newList;\n\n // Set the information to dataModule state\n this.props.setModelABDataToList(modelABList);\n\n this.setState({\n model_ab_data: prevABData,\n currModelABList: modelABList,\n model_ab_updated: !this.state.model_ab_updated\n });\n }\n\n componentDidMount() {\n this.getData()\n this.sectionNavigation();\n\n\n let prefetch = (Object.keys(this.props.dataModule.environmentDataSourceMapping).length !==\n Object.keys(this.props.dataModule.environments).length) ||\n (Object.keys(this.props.dataModule.integrations).length !==\n Object.keys(this.props.dataModule.relationship).length)\n let initial_prefetch = Object.keys(this.props.dataModule.environmentDataSourceMapping).length === 0 &&\n Object.keys(this.props.dataModule.environments).length === 0 &&\n Object.keys(this.props.dataModule.integrations).length === 0 &&\n Object.keys(this.props.dataModule.relationship).length === 0\n if (prefetch === true || initial_prefetch === true) {\n this.preFetch();\n // var intervalId = setInterval(this.preFetchMonitorGraph, 1000);\n // // store intervalId in the state so it can be accessed later:\n // this.setState({\n // intervalId: intervalId\n // });\n }\n // this.preFetch();\n\n }\n\n\n /**Optimization changes */\n\n // preFetchMonitorGraph() {\n // let teamID = localStorage.getItem('team_id')\n // let tenantData = { \"tenant_id\": teamID };\n // if (Object.keys(this.props.dataModule.integrations).length > 0) {\n // clearInterval(this.state.intervalId);\n // for (const key of Object.keys(this.props.dataModule.integrations)) {\n // if (!(key in this.props.monitorModule.fetchInfo && this.props.monitorModule.fetchInfo[key])) {\n // preFetchMonitorInfo(\n // tenantData, this.props.addCompletenessDataSetInfo, this.props.addCompletenessAttributeInfo,\n // this.props.addTimelinessDataSetInfo, this.props.addTimelinessAttributeInfo,\n // this.props.addAccuracyDataSetInfo, this.props.addAccuracyAttributeInfo,\n // this.props.addConformityDataSetInfo, this.props.addConformityAttributeInfo,\n // this.props.addConsistencyDataSetInfo, this.props.addConsistencyAttributeInfo,\n // this.props.addDriftDataSetInfo, this.props.addDriftAttributeInfo, this.props.addMLDataSetInfo,\n // this.props.addMLAttributeInfo, this.props.addMonitorPreview, this.props.addUniquenessDataSetInfo,\n // this.props.addUniquenessAttributeInfo, this.props.addRecencyPreview,\n // this.props.prefetchMonitorState\n // );\n // }\n // }\n // }\n // }\n\n // formData() {\n // if (this.props.dataModule.metaData !== undefined) {\n // const metaDataMapping = this.props.dataModule.metaData;\n // const monitorDQListViewData = this.props.monitorModule.monitorDQListView;\n // const timelinessShowMore = setDQShowMoreData(this.props.monitorModule.timelinessDataSetInfo,\n // this.props.monitorModule.timelinessAttributeInfo, this.props.dataModule,\n // null, DQ_MONITOR_SECTIONS.TIMELINESS);\n\n // const mappedDatasetInfos = extractDatasetInfoForMonitorListView(metaDataMapping);\n // const listViewTableDatas = getMonitorTabDQPListViewTableData(mappedDatasetInfos, monitorDQListViewData, this.props.monitorModule, timelinessShowMore);\n // fromMonitorData(this.props.mappedDatasetInfo, this.props.listViewTableData, mappedDatasetInfos, listViewTableDatas, store)\n // this.formDataOnce = 0\n // }\n // }\n\n // preFetchMonitor() {\n // let teamID = localStorage.getItem('team_id')\n // let tenantData = { \"tenant_id\": teamID };\n\n // // Monitor Prefetch\n // // Prefetch happens for every Integrations \n // // Gets the result and iterate for all integrations\n // if (!this.props.dataModule.integrations) {\n // for (const key of Object.keys(this.props.dataModule.integrations)) {\n // if (!(key in this.props.monitorModule.fetchInfo && this.props.monitorModule.fetchInfo[key])) {\n // preFetchMonitorInfo(\n // tenantData, this.props.addCompletenessDataSetInfo, this.props.addCompletenessAttributeInfo,\n // this.props.addTimelinessDataSetInfo, this.props.addTimelinessAttributeInfo,\n // this.props.addAccuracyDataSetInfo, this.props.addAccuracyAttributeInfo,\n // this.props.addConformityDataSetInfo, this.props.addConformityAttributeInfo,\n // this.props.addConsistencyDataSetInfo, this.props.addConsistencyAttributeInfo,\n // this.props.addDriftDataSetInfo, this.props.addDriftAttributeInfo, this.props.addMLDataSetInfo,\n // this.props.addMLAttributeInfo, this.props.addMonitorPreview, this.props.addUniquenessDataSetInfo,\n // this.props.addUniquenessAttributeInfo, this.props.addRecencyPreview,\n // this.props.prefetchMonitorState\n // );\n // }\n // }\n // }\n\n // }\n\n // preFetchData() {\n // let teamID = localStorage.getItem('team_id')\n // let tenantData = { \"tenant_id\": teamID };\n\n // // Data Prefetch\n // // Single Api call and interating the result to get exact metadata values\n // if (!this.props.dataModule.preFetchMetaData) {\n // preFetchMetaData(\n // tenantData, this.props.addMetaData, this.props.addEnvironment,\n // this.props.addEnvironmentDataSourceMapping, this.props.addDataSourceDataSetMapping,\n // this.props.addDataSetAttributeMapping, this.props.setDataSet, this.props.setAttribute,\n // this.props.setDataSource, this.props.setMlDataSource, this.props.addRelationship, this.props.addDataSource,\n // this.props.addInfo, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate, this.props.addDiscoveryStatus,\n // this.props.addProcessingStatus, this.props.noIntegration\n // );\n // }\n // }\n\n /**Optimization changes Ends*/\n\n\n preFetch() {\n let teamID = localStorage.getItem('team_id')\n let tenantData = { \"tenant_id\": teamID };\n\n // Monitor Prefetch.\n // Single api call : /model_performance/results/info\n // if (!this.props.monitorModule.preFetchMonitorPreview) {\n // preFetchMonitorPreview(tenantData, this.props.addMonitorPreview, this.props.addPerformancePreview,\n // this.props.addModelPerformance);\n // }\n if (!this.props.monitorModule.lastProfilingTime){\n getLastProfilingTime(tenantData, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate,);\n }\n // // Data Prefetch\n // // Single Api call and interating the result to get exact metadata values\n if (!this.props.dataModule.preFetchMetaData) {\n preFetchMetaData(\n tenantData, this.props.addMetaData, this.props.addEnvironment,\n this.props.addEnvironmentDataSourceMapping, this.props.addDataSourceDataSetMapping,\n this.props.addDataSetAttributeMapping, this.props.setDataSet, this.props.setAttribute,\n this.props.setDataSource, this.props.setMlDataSource, this.props.addRelationship, this.props.addDataSource,\n this.props.addInfo, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate, this.props.addDiscoveryStatus,\n this.props.addProcessingStatus, this.props.noIntegration\n );\n }\n // // Monitor Prefetch\n // // Prefetch happens for every Integrations \n // // Gets the result and iterate for all integrations\n // if (!this.props.dataModule.integrations) {\n // for (const key of Object.keys(this.props.dataModule.integrations)) {\n // if (!(key in this.props.monitorModule.fetchInfo && this.props.monitorModule.fetchInfo[key])) {\n // preFetchMonitorInfo(\n // tenantData, this.props.addCompletenessDataSetInfo, this.props.addCompletenessAttributeInfo,\n // this.props.addTimelinessDataSetInfo, this.props.addTimelinessAttributeInfo,\n // this.props.addAccuracyDataSetInfo, this.props.addAccuracyAttributeInfo,\n // this.props.addConformityDataSetInfo, this.props.addConformityAttributeInfo,\n // this.props.addConsistencyDataSetInfo, this.props.addConsistencyAttributeInfo,\n // this.props.addDriftDataSetInfo, this.props.addDriftAttributeInfo, this.props.addMLDataSetInfo,\n // this.props.addMLAttributeInfo, this.props.addMonitorPreview, this.props.addUniquenessDataSetInfo,\n // this.props.addUniquenessAttributeInfo, this.props.addRecencyPreview,\n // this.props.prefetchMonitorState\n // );\n // }\n // }\n // }\n\n // // Monitor Model Prefetch : model/map\n // // store the value in redux\n // if (!this.props.monitorModule.preFetchMonitorModelInfo) {\n // preFetchMonitorModelInfo(\n // teamID, this.props.addMLModelMapping,\n // this.props.addMLDataSetInfo, this.props.addMLAttributeInfo,\n // this.props.addMLModel, this.props.setMLModel\n // );\n // }\n\n // // ML Monitor prefetch : ml-models \n // // Profile ML filter and ML tab\n // if (!this.props.monitorModule.preFetchModelDetails) {\n // preFetchModelDetails(teamID, this.props.addModelDetails);\n // }\n\n // custom Metrics Prefetch used in custom metric page\n // Fetch and Store\n if (!this.props.monitorModule.preFetchMetrics) {\n preFetchMetrics(teamID, this.props.addMetrics);\n }\n\n // Monitor Prefetch\n // Prefetch happens for every Integrations \n // Gets the result and iterate for all integrations\n // if (!this.props.monitorModule.preFetchMonitorListViewData) {\n // preFetchMonitorListViewData(teamID, this.props.addMonitorDQListViewData);\n // }\n\n // Notification Prefetch: user_notification/unread\n // Used in navigation header\n // Fetch and store\n if (!this.props.dataModule.preFetchUserNotifications) {\n // Fetch first page result of user notifications\n preFetchUserNotifications(tenantData, addUserNotificationToState, store);\n }\n\n // Data Prefetch: /datasets\n // Used in charts discover, profile\n // Fetch and store\n if (!this.props.dataModule.prefetchDatasetDetails) {// Fetch dataset version details\n prefetchDatasetDetails(tenantData, addDatasetVersions, store);\n }\n\n // Data Prefetch: recency/all \n // Used in Discovery and profile\n // Fetch and store\n if (!this.props.dataModule.prefetchRecencyDetails) {// Fetch Recency Details\n prefetchRecencyDetails(tenantData, addRecencyDetails, store);\n }\n\n // Discover prefetch: recent_search\n // user in discover page \n // fetch and store\n if (!this.props.dataModule.prefetchRecentHistory) { // Fetch recent search history - discover page\n prefetchRecentHistory(tenantData, addRecentHistory, store);\n }\n\n // Fetch and store datasize : /data_size\n // simple prefetch\n if (!this.props.dataModule.prefetchDataSize) {// Fetch data size - discover page\n prefetchDataSize(tenantData, addDataSize, store)\n }\n\n // Monitor Model Prefetch used in configure and monitor : model_ab_data\n // if (!this.props.dataModule.prefetchModelABData) { // Fetch Model AB configuration list\n // prefetchModelABData(tenantData, setModelABDataToList, store);\n // }\n\n // Monitor Prefetch: follow_attributes\n // used in monitor page\n // fetch and store\n // if (!this.props.monitorModule.preFetchFollowAttributes) {\n // preFetchFollowAttributes(tenantData, addFollowAttributes, store);\n // }\n\n // Alert Prefetch : alert_applicable_metrics\n // used on alert page\n if (!this.props.monitorModule.preFetchMetadataDetails) {\n preFetchMetadataDetails(tenantData, storeMetadataDetails, store)\n }\n }\n\n setDataLimit() {\n this.getApi(\"increaseDataLimit\");\n }\n\n showModelABConfigureSection(tableRowProps, canShowABModal, closeModalFunction, handleModelABAddition) {\n return (\n \n );\n }\n\n getData() {\n this.getApi(\"accountDetails\");\n this.getApi(\"environments\");\n this.getApi(\"integrations\");\n this.getApi(\"dataset\");\n this.getApi(\"datasource_updates\");\n\n // let teamID = localStorage.getItem('team_id')\n // let tenantData = { \"tenant_id\": teamID };\n\n let hideConfPageModelTab = false;\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const confPageData = this.state.featureAccess[\"models\"];\n hideConfPageModelTab = confPageData === false;\n }\n\n if (IS_NONE_SAAS_EDITION) {\n this.getApi(\"dd_sleep_time_fetch\");\n }\n if (!hideConfPageModelTab) {\n // When models feature is disabled, no need to call model related apis.\n this.getApi(\"mlmodels\");\n this.getApi(\"model_updates\");\n this.getApi(\"modelABData\");\n }\n }\n\n updateEnvironmentList(newEnvironmentData) {\n //Adds the newly added environment information to existing list\n const existingEnvironmentDetail = this.state.environment;\n if (existingEnvironmentDetail === undefined || existingEnvironmentDetail === null) {\n return;\n }\n\n if (newEnvironmentData === undefined || newEnvironmentData === null) {\n return;\n }\n\n let data = { \"label\": newEnvironmentData.env_name, \"value\": newEnvironmentData.env_id };\n existingEnvironmentDetail.push(data);\n this.setState({ environment: existingEnvironmentDetail });\n }\n\n setAddModel(value) {\n this.setState({ isAddModel: value });\n if (value) {\n this.setModelVersion(false);\n }\n }\n\n setModelVersion(value) {\n if (value) {\n this.setAddModel(false);\n }\n\n this.setState({ isModelVersion: value });\n }\n\n setAddDS(value) {\n this.setState({ isAddDS: value });\n }\n closeToast() {\n this.setState({ toastStatus: false });\n }\n\n updateTable() {\n this.setState({ updateStatus: false }, this.getApi(\"integrations\"));\n }\n\n showToast(status, msg, link, bulk, reloadData = true) {\n if (reloadData) {\n this.getData();\n }\n\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastIcon: toastObj[status][\"icon\"],\n toastLink: link,\n toastHeading: toastObj[status][\"heading\"],\n toastBulk: bulk\n });\n }\n\n getModelABTableComponent(actionType, headerValue, cell, tableProps) {\n // This is a call back function called from QualdoDataTable - convertData() function\n\n if (headerValue === \"Model Name\") {\n const names = cell;\n return (\n <>\n
    \n A\n {names[0]}\n
    \n\n
    \n B\n {names[1]}\n
    \n\n {names[2] === undefined ? '' :\n
    \n C\n {names[2]}\n
    \n }\n\n \n )\n\n }\n\n const divDupHeaders = [\"Model Version\", \"Datasource\", \"Environment\"];\n if (divDupHeaders.includes(headerValue)) {\n const modelDataStrings = cell;\n return (\n <>\n
    {modelDataStrings[0]}
    \n\n
    {modelDataStrings[1]}
    \n\n {modelDataStrings[2] === undefined ? '' :\n
    {modelDataStrings[2]}
    \n }\n\n \n )\n\n }\n\n const emptyDivHeaders = [\"Created By\", \"Created Time\"];\n if (emptyDivHeaders.includes(headerValue)) {\n const cellValue = cell.value;\n const has3Models = cell.has3Models;\n return (\n <>\n
    {cellValue}
    \n\n
    \n\n {has3Models ?
    : ''}\n \n )\n\n }\n\n if (headerValue === \"Actions\") {\n return (\n <>\n \n\n
    \n\n {cell.has3Models === true ?
    : ''}\n \n\n );\n }\n\n\n return cell;\n }\n\n getModelABTableIDFormatter(cell, row, rowIndex) {\n const has3Models = row[\"Created By\"].has3Models;\n\n return (\n <>\n
    {row[\"ID\"]}
    \n
    \n {has3Models ?
    : ''}\n \n );\n }\n\n renderModelABTable(key) {\n if (this.state.mlData === null || this.state.mlDetails === null) {\n return '';\n }\n\n // Used in Model AB configurations\n const mlDropDown = formModelVersionMap(this.state.mlDetails);\n const tableData = this.state.model_ab_data;\n\n if (tableData === null) {\n return \n }\n />\n }\n\n let reqKey = this.state.model_ab_updated ? \"reloadAB\" : \"abTableNormal\";\n return
    \n }\n />\n
    \n\n }\n\n shouldComponentUpdate() {\n if (get_api_call_cnt > 4 && get_api_call_cnt === get_api_call_complete_cnt && post_api_call_cnt === post_api_call_complete_cnt) {\n this.pre_load = false;\n return true;\n }\n else {\n return false;\n }\n }\n\n renderTableds(key) {\n let reqKey = 'empty';\n if (this.state.integration !== undefined && this.state.integration !== null) {\n reqKey = this.state.integration.length;\n }\n\n if (key === \"ds\" && this.state.data !== null) {\n return
    \n }\n />\n
    \n }\n else if (key === \"ds\" && this.state.data === null) {\n return \n }\n />\n }\n }\n\n renderScanIntervalContent() {\n if (this.state.sleepComponentLoad) {\n return (\n \n );\n }\n\n return (\n <>\n

    \n Scan interval defines the minimum waiting time, in minutes,\n between the successive scans to identify\n refreshed datasets of the datasource\n

    \n\n \n \n Time Interval\n \n {`Set the time duration less than ${MAX_SLEEP_TIME} minutes`}\n \n }\n arrowContent={
    }\n >\n \n \n
    \n\n
    \n \n minutes\n
    \n\n {\n this.state.isSleepIntervalErrMsg.length > 0 ?\n \n {this.state.isSleepIntervalErrMsg}\n \n :\n ''\n }\n
    \n\n
    \n 0}\n onClick={this.submitSleepInterval}\n type=\"submit\"\n className=\"btn-primary btn-circle mr-2\"\n >\n \n \n \n Save Changes\n \n Cancel\n
    \n \n );\n }\n\n renderScanIntervalComponents() {\n return (\n
    \n \n
    \n );\n }\n\n renderRefreshTable(data, key) {\n let reqKey = 'empty';\n if (this.state.integration !== undefined && this.state.integration !== null) {\n reqKey = this.state.integration.length;\n }\n if (key === 'data') {\n return (\n
    \n \n :\n (data.length === 0 ?\n \n :\n \n )\n }\n />\n
    \n )\n }\n else if(key==='ml'){\n return(\n
    \n \n :\n (data.length === 0 ?\n \n :\n \n )\n )\n }\n />\n
    \n )\n }\n\n if(data!== null && data.length>0){\n this.setState({updateStatus:false})\n }\n }\n\n renderTableml(key) {\n\n if (key === \"ml\" && this.state.mlData !== null) {\n const mlDropDown = formModelVersionMap(this.state.mlDetails);\n return
    \n \n }\n />\n
    \n\n }\n else if (key === \"ml\" && this.state.mlData === null) {\n return \n }\n />\n }\n }\n\n handleTab(key) {\n postMixpanel(\"Configure -> \" + key + \"tab Page\")\n this.setState({ current_tab: key });\n }\n\n sectionNavigation() {\n document.querySelectorAll('.breadcrumb-direct-section li a[href*=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n var topOfElement = document.querySelector(this.getAttribute('href')).offsetTop;\n window.scroll({ top: topOfElement - 80, behavior: \"smooth\" });\n });\n });\n }\n\n render() {\n let hideConfPageModelTab = true;\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const confPageData = this.state.featureAccess[\"models\"];\n hideConfPageModelTab = confPageData === false;\n }\n return (\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n \n {this.state.toastIcon ?\n :\n \"\"\n }\n \n \n {this.state.toastHeading}\n {this.state.toastBulk === \"bulk\" ?\n this.state.toastMsg.map(function (row) {\n return

    {row.message}

    ;\n }) :

    {this.state.toastMsg}

    \n }\n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n <>\n
    \n \n }\n />\n
    \n \n {\n\n this.state.isAddDS ?\n \n : ''\n }\n {this.renderTableds(this.state.current_tab)}\n\n {\n IS_NONE_SAAS_EDITION ?\n this.renderScanIntervalComponents() : ''\n }\n\n {this.renderRefreshTable(this.state.datasource_updates, 'data')}\n\n
    \n {hideConfPageModelTab ?\n '' :\n \n \n
    \n \n }\n />\n\n
    \n {\n this.state.isAddModel ?\n \n }\n /> : ''\n }\n\n {\n this.state.isModelVersion ?\n \n }\n /> : ''\n }\n\n {this.renderTableml(this.state.current_tab)}\n\n {this.renderModelABTable(this.state.current_tab)}\n\n {this.renderRefreshTable(this.state.model_updates,'ml')}\n
    \n }\n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n\n \n );\n }\n}\n\n//export default Configure;\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(\n mapStateToProps, {\n addMetaData,\n addMLModelMapping,\n setMLModel,\n setModelABDataToList,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setDataSet,\n setAttribute,\n setDataSource,\n setMlDataSource,\n addRelationship,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setStartDate,\n setEndDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addMonitorPreview,\n addPerformancePreview,\n addModelPerformance,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyPreview,\n addMLModel,\n addModelDetails,\n addMetrics,\n addMonitorDQListViewData,\n prefetchMonitorState,\n noIntegration,\n mappedDatasetInfo,\n listViewTableData\n}\n)(Configure);\n","import React from 'react';\nimport {postDefaultMetrics} from \"../utils/event_handling\";\nimport {faCheck} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport Modal from 'react-bootstrap/Modal';\nimport Form from 'react-bootstrap/Form';\nimport { Formik, ErrorMessage } from 'formik';\nimport {DISABLE_CHECKBOXES_IN_CARDS, WINDOW_METRICS, DATA_DRIFT} from \"../utils/constant\";\nimport * as yup from 'yup';\n\n\nclass DefaultMetricsEdit extends React.Component {\n constructor(props) {\n super(props);\n this.postDefaultMetrics = postDefaultMetrics.bind(this);\n this.handleEditButton = this.handleEditButton.bind(this);\n this.disableButton = this.disableButton.bind(this);\n\n this.state = {\n activeStatus: this.props.activeStatus,\n hideSubmitButton: false,\n selectedCheck: \"\",\n metricsThreshold: this.props.exMetricDetails.metrics_definition.metrics_threshold !== undefined ? this.props.exMetricDetails.metrics_definition.metrics_threshold : \"\",\n driftThreshold: \"\",\n initial:{\n checkValue : \"\",\n metricsThreshold: this.props.exMetricDetails.metrics_definition.metrics_threshold !== undefined ? this.props.exMetricDetails.metrics_definition.metrics_threshold : \"\",\n windowCount: this.props.exMetricDetails.metrics_definition.window_count !== undefined ?this.props.exMetricDetails.metrics_definition.window_count : \"\"\n\n },\n windowCount: this.props.exMetricDetails.metrics_definition.window_count !== undefined ?this.props.exMetricDetails.metrics_definition.window_count : \"\"\n }\n }\n\n\n componentDidMount() {\n let metricsDefinition = this.props.exMetricDetails.metrics_definition;\n const existingChecks = metricsDefinition.checks;\n let checkOptions = [\n {\"label\": \"Date Check\", \"value\": \"date_check\"},\n {\"label\": \"Not Null Check\", \"value\": \"not_null_check\"},\n {\"label\":\"IP Address Check\",\"value\":\"ip_address_check\"},\n {\"label\":\"Url Check\",\"value\":\"url_check\"},\n {\"label\":\"Email Check\",\"value\":\"email_check\"},\n {\"label\":\"Gender Check\",\"value\":\"gender_check\"}];\n\n let selectedCheck = null;\n let check = null\n let value = null\n if (existingChecks.length > 0) {\n check = existingChecks[0];\n let checkName = check.name;\n value = check.value;\n\n let matched = checkOptions.filter(x => x[\"value\"] === checkName);\n if (matched.length > 0) {\n selectedCheck = matched[0];\n }\n }\n this.setState({selectedCheck:selectedCheck});\n let initial = this.state.initial;\n initial.checkValue = value;\n this.setState({initial:initial});\n\n let driftThresholdValue = metricsDefinition.drift_threshold;\n this.setState({driftThreshold: driftThresholdValue})\n\n let metricsThreshold = metricsDefinition.metrics_threshold\n this.setState({metricsThreshold:metricsThreshold})\n\n let windowCount = metricsDefinition.window_count;\n this.setState({windowCount: windowCount})\n\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n renderExample(value) {\n if (value !== null) {\n switch (Object.values(value)[1]) {\n case \"gender_check\":\n return (<>Example: \"^M(ale)?$|^F(emale)?$\");\n case \"not_null_check\":\n return (<>Example: [\"NA\",\"\", \"Not Available\"]);\n default:\n return \"\"\n }\n }\n }\n\n getMetricValue(){\n let metricName = this.props.metricName;\n if (metricName === \"Fill Rate\"){\n return \"List of invalid values\";\n } else {\n return \"Pattern to identify possible values\"\n }\n }\n\n handleEditButton(event) {\n let a= (this.state.activeStatus) ? false : true;\n this.setState({activeStatus: a});\n }\n\n render() {\n\n let masType = this.props.exMetricDetails.metrics_definition.mas_type;\n const currentMetricName = this.props.metricName;\n\n let schema = yup.object({\n metricsThreshold: yup.number().min(0,\"Threshold cannot be less than 0\").max(100,\"Threshold cannot be greater than 100\").required(\"This field is a required field\"),\n });\n\n if(WINDOW_METRICS.includes(currentMetricName)){\n schema = yup.object({\n metricsThreshold: yup.number().min(0,\"Threshold cannot be less than 0\").max(100,\"Threshold cannot be greater than 100\").required(\"This field is a required field\"),\n windowCount: yup.number().min(1,\"Window Size cannot be less than 1\").max(2000,\"Window Size cannot be greater than 2000\").required(\"This field is a required field\"),\n }); \n }\n return (\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => {\n return (\n
    \n \n \n Metric Name :\n \n
    \n \n
    \n
    \n {masType === \"dqm\" && this.state.selectedCheck !== null ?\n \n \n {this.getMetricValue()} :\n \n
    \n \n \n {touched.checkValue && errors.checkValue}\n \n \n {this.renderExample(this.state.selectedCheck)}\n \n
    \n
    \n : \"\"\n }\n \n {currentMetricName !== undefined && currentMetricName === \"Recency\" ?\n \n Metrics Threshold (in Days) :\n \n :\n \n Metrics Threshold (in %) :\n \n }\n
    \n \n \n
    \n
    \n {currentMetricName !== undefined && WINDOW_METRICS.includes(currentMetricName) ?\n \n \n Window Size:\n \n
    \n
    \n \n Refreshes\n
    \n \n \n {currentMetricName === DATA_DRIFT?\n \"The window size denotes the number of refreshes which is used to measure the drift in the data.\":\n \"The window size denotes the number of refreshes which is used to measure the drift in the \"+ currentMetricName + \".\"}\n
    \n
    \n : ''}\n\n {DISABLE_CHECKBOXES_IN_CARDS.includes(currentMetricName)\n ?\n ''\n :\n \n
    \n
    \n \n \n Enable\n \n
    \n
    \n
    \n }\n\n \n \n \n \n
    \n );\n }}\n \n );\n\n }\n}\n\nexport default DefaultMetricsEdit;\n","import React from 'react';\nimport { faEdit } from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport Modal from 'react-bootstrap/Modal';\nimport Image from './image';\nimport ChartBody from './chartBody';\nimport DefaultMetricsEdit from './defaultMetrics';\nimport CustomDefaultMetrics from './customDefaultMetrics';\nimport {setShow} from \"../utils/event_handling\";\nimport {getMetricTypeFromDefinition} from \"../utils/common_utils\";\n\n\nclass Card extends React.Component {\n constructor(props) {\n super(props);\n this.setShow = setShow.bind(this);\n this.handleClose = () => this.setShow(\"show\", false);\n this.handleShow = () => this.setShow(\"show\", true);\n this.handleCloseCustom = () => this.setShow(\"showFollowModal\", false);\n this.updateEnableButton = this.updateEnableButton.bind(this);\n let handleFollow = null;\n if (this.props.handleCardFollow !== undefined) {\n handleFollow = this.props.handleCardFollow.bind(this);\n }\n this.handleFollow = handleFollow;\n\n let tabValue = \"\";\n if (this.props.ex_metric_details !== undefined && this.props.ex_metric_details !== null) {\n let metricType = getMetricTypeFromDefinition(this.props.ex_metric_details.metrics_definition);\n if (metricType !== null) {\n tabValue = metricType.toUpperCase();\n }\n }\n\n this.tabValue = tabValue;\n this.state = {\n show: false,\n showFollowModal: false,\n active: null,\n data: this.props.ex_metric_details,\n chartData: this.props.chartData\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.ex_metric_details.status_code !== state.data.status_code) {\n let activeStatus = props.ex_metric_details.status_code === 1;\n return {\n active: activeStatus,\n data: props.ex_metric_details\n }\n }\n\n return null;\n }\n\n // Commented the following function since it's usage is deprecated in React.\n // As alternative used 'getDerivedStateFromProps()' function\n // componentWillReceiveProps(nextProps) {\n // if (nextProps.ex_metric_details.status_code !== this.state.data.status_code) {\n // let activeStatus = nextProps.ex_metric_details.status_code === 1;\n // this.setState({ active: activeStatus, data: nextProps.ex_metric_details});\n // }\n // }\n\n\n\n getEditComponent(componentName) {\n // When we get proper component name, if condition can be changed to switch-case\n let activeStatus = this.state.active;\n if (this.state.active === null && this.props.ex_metric_details !== undefined) {\n activeStatus = this.props.ex_metric_details.status_code === 1;\n }\n if (componentName === undefined) {\n const exMetricDetails = this.props.ex_metric_details;\n let editComponent = ();\n return (\n \n \n
    \n Edit the Following {this.tabValue === \"DQ\" ? \"Data Quality\" : \"Model\"} Metric
    \n
    \n {editComponent}\n \n\n
    \n );\n }\n }\n\n getFollowButtonComponent(componentName) {\n if (componentName === undefined) {\n if (this.props.metricType === \"default\" || this.props.metricType === \"combined\") {\n return (\n \n \n
    \n Apply {this.props.name} to
    \n
    \n {\n \n\n }\n \n
    \n );\n }\n }\n\n return (<>\n );\n }\n\n updateEnableButton(status){\n this.setState({active: status});\n }\n\n render() {\n let activeStatus = this.state.active;\n\n if (this.state.active === null && this.props.ex_metric_details !== undefined) {\n activeStatus = this.props.ex_metric_details.status_code === 1;\n }\n\n\n\n let cardBackground = this.props.background ? `dashboard-stat ${this.props.background}` : \"dashboard-stat dashboard-stat-info\";\n let textColor = this.props.textColor ? `title ${this.props.textColor}` : \"title text-info\";\n let chartLine = this.props.chartLine ? this.props.chartLine : \"incremental\";\n return (\n <>\n
    \n
    \n
    \n
    \n
    \n {this.props.name}\n {/*\n this.props.configuredCount !== false ?\n {this.props.configuredCount}\n : ''\n */}\n
    \n {\n (this.props.showFollow) ?\n\n <>\n
    \n \n
    \n {/* \n \n */}\n :\n ''\n }\n
    \n\n
    \n {\n this.props.value !== null && this.props.value !== undefined ?\n {this.props.value} :\n ''\n }\n {\n // %\n }\n \n
    \n {\n this.props.cardType === undefined ?\n
    \n \"\"/\n
    \n :\n \n }\n\n
    \n
    \n
    \n {this.getEditComponent(this.props.cardType)}\n {this.getFollowButtonComponent(this.props.cardType)}\n \n );\n }\n}\n\nexport default Card;","import React from 'react';\nimport Card from './card';\nimport { METRIC_CARD_COLORS } from '../utils/constant';\nimport { NON_EDITABLE_METRIC } from '../utils/constant';\nclass CardGroup extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n data: props.data\n }\n }\n\n\n renderCard() {\n let showToast = this.props.showToast;\n let handleCardFollow = this.props.handleCardFollow;\n let additionalDetails = this.props.additionalDetails;\n let colors = {0: [4,3,1,2,0], 1: [2,4,3,0,1], 2:[1,0,4,2,3], 3:[0,1,2,4,3], 4:[3,2,1,0,4]}\n if (this.props.data) {\n const showFollow = this.props.showFollow;\n const showConfigureConsistency=this.props.showConfigureConsistency;\n let rowNo = this.props.rowNo;\n let colorIndex = colors[rowNo % 4];\n let consistencyCount = this.props.data[\"consistency_count\"];\n return this.props.data.map(function (row, index) {\n if (index % 5 === 0 && index > 4) {\n colorIndex = colors[(rowNo+1) % 4];\n }\n let i = colorIndex[index % 5]\n let color = METRIC_CARD_COLORS[i];\n let cardBackground = color[\"cardBackground\"];\n let textColor = color[\"textColor\"];\n let chartLine = color[\"chartLine\"];\n if (NON_EDITABLE_METRIC.includes(row.metric_name)){\n row.hide_edit = true;\n }\n let configuredCount = false;\n if (consistencyCount !== undefined){\n let metrics_key = row.metric_name.toLowerCase().replace(/ /g,'_');\n configuredCount = consistencyCount[metrics_key];\n }\n\n return (\n \n );\n \n });\n }\n }\n\n render() {\n return (\n
    \n { this.renderCard() }\n
    \n );\n }\n}\n\nexport default CardGroup;","import React from 'react';\nimport Select from 'react-select';\nimport {postConsistencyMetrics} from \"../utils/event_handling\";\nimport {faCheck} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport Modal from 'react-bootstrap/Modal';\nimport {getDatasets} from \"../utils/common_utils\";\nimport Form from 'react-bootstrap/Form';\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\n\n\n\nclass ConsistencyMetrics extends React.Component {\n constructor(props) {\n super(props);\n this.postConsistencyMetrics = postConsistencyMetrics.bind(this);\n this.disableButton = this.disableButton.bind(this);\n let consistencyMetricOptions = this.getMetricOptions(this.props.consistencyMetricsList);\n let consistencyTypes = [];\n let selected_metric_id=null;\n if (this.props.selected_metric_name !== null && this.props.selected_metric_name !== undefined){\n let selectedType = consistencyMetricOptions.find(o => o.label === this.props.selected_metric_name);\n consistencyTypes = [selectedType]\n selected_metric_id = selectedType['value'];\n }\n this.state = {\n hideSubmitButton: false,\n customMetrics: {\n sourceDataset: null,\n targetDataSetId: null,\n consistencyTypes: consistencyTypes,\n consistencyMetric: selected_metric_id\n },\n details: {\n data_set: [],\n attributes: []\n },\n consistencyMetricOptions: consistencyMetricOptions,\n selectedDataSetOption: null,\n targetDataSetOption: null,\n consistencyTypes: consistencyTypes\n\n }\n }\n\n\n componentDidMount() {\n if (this.props.details === undefined || this.props.details === null) {\n return;\n }\n this.setState({details: this.props.details});\n if (this.props.exMetricDetails === undefined || this.props.exMetricDetails === null) {\n return;\n }\n let dataSetOptions = getDatasets(this.props.details.data_set);\n let customMetrics = this.state.customMetrics;\n let selectedTarget = this.props.exMetricDetails.target_data_set_id;\n let targetDataSetOption = null;\n let matchedTargets = dataSetOptions.filter(x => x[\"value\"] === selectedTarget);\n if (matchedTargets.length > 0) {\n targetDataSetOption = matchedTargets[0];\n customMetrics.targetDataSetId = targetDataSetOption.value;\n }\n let selectedSource = this.props.exMetricDetails.data_set_id;\n let selectedDataSetOption = null;\n let matchedSource = dataSetOptions.filter(x => x[\"value\"] === selectedSource);\n if (matchedSource.length > 0) {\n selectedDataSetOption = matchedSource[0];\n customMetrics.sourceDataset = selectedDataSetOption.value;\n }\n\n// let selectedInterval = this.props.exMetricDetails.schedule_interval;\n// let selectedIntervalOption = null;\n// let matchedInterval = this.state.scheduleOptions.filter(x => x[\"value\"] === selectedInterval);\n// if (matchedInterval.length > 0) {\n// selectedIntervalOption = matchedInterval[0];\n// customMetrics.scheduleInterval = selectedIntervalOption.value;\n// }\n\n this.setState({selectedDataSetOption:selectedDataSetOption,\n targetDataSetOption:targetDataSetOption,\n consistencyTypes:[]});\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n requires_metrics_update(metricsData) {\n const exMetricDetails = this.props.exMetricDetails;\n if(exMetricDetails.target_data_set_id !== metricsData.target_data_set_id) {\n return true\n }\n if(exMetricDetails.data_set_id !== metricsData.data_set_id) {\n return true\n }\n if(exMetricDetails.schedule_interval !== metricsData.schedule_interval) {\n return true\n }\n return false\n }\n\n requiresTargetSelection() {\n let showTarget = false;\n\n if (this.props.exMetricDetails !== undefined) {\n showTarget = this.props.exMetricDetails.metrics_definition.requires_target;\n }\n return showTarget;\n }\n\n getMetricOptions(consistencyMetricsList){\n let option_arr = [];\n if (consistencyMetricsList !== undefined) {\n option_arr.push({\"label\":\"All\", \"value\":\"all\"});\n this.props.consistencyMetricsList.map(function (row) {\n option_arr.push({\"label\":row[\"metric_name\"], \"value\":row[\"metrics_id\"]});\n return 1;\n });\n }\n return option_arr;\n }\n render() {\n let metricsSchema = yup.object({\n consistencyMetric: yup.mixed().nullable(false).required(\"Dataset Consistency type is a required field\"),\n sourceDataset: yup.mixed().nullable(false).required(\"Dataset to be monitored is a required field\"),\n targetDataSetId: yup.mixed().nullable(false).required(\"Reference dataset is a required field\"),\n });\n\n let dataSetOptions = getDatasets(this.state.details.data_set);\n\n\n let sourceKey = \"emptySourceKey\";\n if (this.state.selectedDataSetOption !== null) {\n sourceKey = \"updatedSourceKey\";\n }\n\n let targetSelectKey = \"emptyTargetSelectKey\";\n if (this.state.targetDataSetOption !== null) {\n targetSelectKey = \"updatedTargetSelectKey\";\n }\n\n// let consistencyMetricKey = \"emptyConsistencyMetricKey\";\n// if (this.state.consistencyTypes !== null) {\n// consistencyMetricKey = \"updateConsistencyMetricKey\";\n// }\n\n let disableSourceDatasetSelection = this.props.src_page === \"edit_metrics\";\n\n return (\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n \n Data Consistency Type\n * :\n
    \n label.includes(query)}\n isInvalid={errors.consistencyMetric && touched.consistencyMetric}\n classNamePrefix='select-control'\n isDisabled={disableSourceDatasetSelection}\n name=\"consistencyMetric\"\n defaultValue={this.state.consistencyTypes}\n key={sourceKey}\n onChange={selectedOption => {\n if (selectedOption !==null && selectedOption.length > 0) {\n handleChange(\"consistencyMetric\")(selectedOption[0].value.toString());\n this.setState({consistencyTypes:selectedOption});\n } else {\n handleChange(\"consistencyMetric\")(\"\");\n }\n }}\n options={this.state.consistencyMetricOptions}\n placeholder=\"Select data consistency type\"\n\n />\n \n
    \n
    \n \n Dataset to be monitored\n * :\n
    \n label.includes(query)}\n isInvalid={errors.sourceDataset && touched.sourceDataset}\n classNamePrefix='select-control'\n isDisabled={disableSourceDatasetSelection}\n name=\"sourceDataset\"\n defaultValue={this.state.selectedDataSetOption}\n key={sourceKey}\n onChange={selectedOption => {\n handleChange(\"sourceDataset\")(selectedOption.value.toString());\n this.setState({selectedDataSetOption:selectedOption});\n }}\n options={dataSetOptions}\n placeholder=\"Select dataset\"\n\n />\n \n
    \n
    \n \n \n Reference Dataset * :\n \n
    \n label.includes(query)}\n isInvalid={errors.targetDataSetId && touched.targetDataSetId}\n key={targetSelectKey}\n onChange={selectedOption => {\n handleChange(\"targetDataSetId\")(selectedOption.value.toString());\n this.setState({targetDataSetOption:selectedOption});\n }}\n defaultValue={this.state.targetDataSetOption}\n options={dataSetOptions}\n placeholder=\"Select dataset\"\n\n />\n \n
    \n
    \n \n \n \n \n
    )}\n \n );\n\n }\n}\n\nexport default ConsistencyMetrics;\n","import React from 'react';\nimport BasicPortlet from '../components/basicPortlet';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport CardGroup from \"../components/cardGroup\";\nimport {handleMetricFollow} from \"../utils/event_handling\";\nimport {formMetricsCardData, getMetricsTableData, getDefaultMetricsTableData, getConsistencyCardDetails} from \"../utils/common_utils\";\nimport Image from \"../components/image\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCloudUploadAlt, faArrowRight} from \"@fortawesome/free-solid-svg-icons\";\nimport DataQualityMetricsForm from \"./components/DataQualityMetricsForm\";\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\nimport Load from '../components/loadAction';\nimport Modal from \"react-bootstrap/Modal\";\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport {faCube, faCubes} from \"@fortawesome/free-solid-svg-icons\";\nimport ConsistencyMetrics from '../components/consistencyMetrics';\nimport {DATA_CONSISTENCY} from \"../utils/constant.js\";\nimport RefreshesTable from \"../components/refreshesTable\";\n\n\nclass DQMetrics extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.showConfigureConsistency = this.showConfigureConsistency.bind(this);\n this.renderCard = this.renderCard.bind(this);\n this.handleCloseConfigure = this.handleCloseConfigure.bind(this);\n this.state = {\n activeTabKey: \"dq_metrics_default\",\n selected_metric_name: null,\n check: false,\n consistencyConfigure:false,\n plan_details: localStorage.getItem(\"plan_details\"),\n title: \"Data Quality Metrics\",\n text: \"Here, you can either edit qualdo-generated default metrics or create a user-defined data quality metric.\",\n seemore_table_data : null,\n seemore_table_header: null\n }\n }\n handleClick() {\n if (this.state.check === true) {\n this.setState({check:false});\n }else {\n this.setState({check:true});\n }\n }\n\n handleCloseConfigure(){\n this.setState({consistencyConfigure: false});\n }\n\n showConfigureConsistency(metric_name){\n this.setState({consistencyConfigure: true, selected_metric_name: metric_name});\n }\n\n getConsistencyMetricList(data){\n let dataConsistencyMetrics = [];\n if(data !== undefined && data.length > 0){\n let dataConsistency = data.filter(x=>x.mas_name === DATA_CONSISTENCY);\n if (dataConsistency !== undefined && dataConsistency.length > 0){\n dataConsistencyMetrics = dataConsistency[0].metrics;\n dataConsistencyMetrics = dataConsistencyMetrics.filter(x=>(x.metric_type === \"default\" && x.data_set_name === null));\n }\n }\n return dataConsistencyMetrics;\n }\n\n renderCard(){\n let showToast = this.props.showToast;\n const dqmData = this.props.dqmData;\n let additionalDetails = {\n \"data\": dqmData,\n \"datasetInfo\": this.props.datasetInfo\n }\n let enabledMetrics = this.props.enabledMetrics;\n let isConsistencyEnabled = this.props.isConsistencyEnabled;\n let showConfigureConsistency = this.showConfigureConsistency;\n if (dqmData !== \"\") {\n let tableData_default = getDefaultMetricsTableData(this.props.dqmData);\n\n let table_title_seemoretable = \"CONFIGURED DATA CONSISTENCY METRICS\";\n let integrationOption_seemoretable = this.props.integrationOption;\n let showToast_seemoretable = this.props.showToast;\n let dqmData_seemoretable = this.props.dqmData;\n let datasetInfo_seemoretable = this.props.datasetInfo;\n let tableData_default_seemoretable =tableData_default;\n\n return dqmData.map(function (row, index) {\n let cardData = formMetricsCardData(row.metrics);\n if (row.mas_name === DATA_CONSISTENCY){\n let consistencyCardDetails= getConsistencyCardDetails(dqmData)\n cardData.forEach(function (card) {\n if ( isConsistencyEnabled === false || !enabledMetrics.includes(card['metric_name'])) {\n card.status_code = 0;\n }\n });\n cardData[\"consistency_count\"] = consistencyCardDetails;\n\n }\n\n if (row.mas_name === DATA_CONSISTENCY){ \n if(tableData_default_seemoretable.data.length > 0){\n return(\n \n
    \n

    CONFIGURED DATA CONSISTENCY METRICS

    \n \n \n \n }\n />);\n }else {\n return(\n \n }\n/>);\n\n }\n\n }else {\n\n return(\n \n }\n />);\n\n\n\n }\n });\n }\n }\n\n\n renderTable(tab, allDataAvailable, tableData){\n let title = \"CONFIGURED DATA CONSISTENCY METRICS\"\n if(tab === \"dq_metrics_custom\"){\n title = \"Custom - User Defined Data Quality Metrics\";\n }\n\n const emptyTable = tableData.data.length === 0 && this.props.dqmData !== \"\";\n\n if (emptyTable || allDataAvailable) {\n return(\n }\n />\n );\n }else {\n if(tab === \"dq_metrics_custom\"){\n return(}\n />);\n }\n }\n }\n\n renderCustomProcess(tab) {\n if(tab === \"dq_metrics_custom\"){\n let tableData = this.props.customMetricDqmData;\n let emptyTable = false;\n let isData = false;\n if (tableData !== undefined && tableData !== null) {\n if (tableData.data !== undefined && tableData.data !== null) {\n emptyTable = (tableData.data.length === 0 && this.props.dqmData !== \"\");\n if (tableData.data.length > 0) {\n isData = true;\n }\n }\n }\n if (emptyTable || isData) {\n return(\n :\n \n\n }\n />);\n }else {\n return(}\n />);\n }\n }\n }\n\n goToChoosePlan = () => {\n window.location.href = \"/choose-plan\";\n }\n\n\n render() {\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n let consistencyMetricsList = this.getConsistencyMetricList(this.props.dqmData);\n let hide_choose_plan_button = true;\n if (permissionsList.includes('BillingAccess')) {\n hide_choose_plan_button = false;\n } else {\n hide_choose_plan_button = true;\n }\n\n let show_custom_metrics = false;\n let planDetails = this.state.plan_details;\n if (planDetails !== null && planDetails !== undefined\n && planDetails !== \"null\" && String(planDetails).trim().length > 0) {\n let details_json = JSON.parse(planDetails);\n let details = details_json[\"details\"][\"supported_features\"];\n if (details !== undefined && details !== null) {\n for (const [key, val] of Object.entries(details)) {\n if (key !== \"custom_metrics\") {\n continue;\n }\n\n let status = val[\"support\"];\n show_custom_metrics = status;\n break;\n }\n }\n }\n\n let show_custom_metrics_modal = (this.state.check === true && show_custom_metrics === false);\n let tableData_default = getDefaultMetricsTableData(this.props.dqmData);\n let tableData_custom = getMetricsTableData(this.props.dqmData);\n let dataSet = this.props.datasetInfo.data_set;\n let attributeInfo = this.props.datasetInfo.attributes;\n const allDataAvailable = this.props.dqmData !== \"\" &&\n dataSet !== undefined && dataSet !== null &&\n dataSet.length > 0 &&\n attributeInfo !== undefined && attributeInfo !== null &&\n this.props.integrationOption !== null;\n let emptyTable = tableData_default.data.length === 0 && this.props.dqmData !== \"\";\n return(\n <>\n \n
    \n \n
    \n\n \n \n
    \n Data Consistency Configuration
    \n
    \n {\n \n\n }\n \n
    \n\n
    \n \n \n {(this.props.dqmData !== \"\" && (allDataAvailable || emptyTable)) ?\n <>\n {/* {this.renderTable(\"dq_metrics_default\", allDataAvailable, tableData_default)} */}\n {this.renderCard()}\n \n :\n }\n />\n }\n \n \n \n \n
    \n You are currently on a Basic Plan (Free)
    \n

    Upgrade now to use this feature

    \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n

    {this.state.title}

    \n

    {this.state.text}

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n { this.state.check === false || show_custom_metrics === false ? \"\" :\n
    \n }\n />\n
    \n } \n {this.renderTable(\"dq_metrics_custom\", allDataAvailable, tableData_custom)}\n {this.renderCustomProcess(\"dq_metrics_custom\")}\n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default DQMetrics;","import React from 'react';\nimport BasicPortlet from '../components/basicPortlet';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport CardGroup from \"../components/cardGroup\";\nimport {handleMetricFollow} from \"../utils/event_handling\";\nimport {getMetricsTableData, formMLMetricsCardData} from \"../utils/common_utils\";\nimport Image from \"../components/image\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCloudUploadAlt,faArrowRight} from \"@fortawesome/free-solid-svg-icons\";\nimport ModelQualityMetricsForm from \"./components/ModelQualityMetricsForm\";\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'bootstrap-daterangepicker/daterangepicker.css';\nimport Load from '../components/loadAction';\nimport Modal from \"react-bootstrap/Modal\";\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport {faCube, faCubes} from \"@fortawesome/free-solid-svg-icons\";\nimport RefreshesTable from \"../components/refreshesTable\";\n\nclass ModelMetrics extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.state = {\n check: false,\n activeTabKey: \"ml_metrics_default\",\n plan_details: localStorage.getItem(\"plan_details\"),\n title: \"Model Metrics\",\n text: \"Here, you can either edit qualdo-generated default metrics or create a user-defined model metric.\"\n }\n }\n\n handleClick() {\n if (this.state.check === true) {\n this.setState({check:false});\n }else {\n this.setState({check:true});\n }\n }\n\n renderCard(){\n let showToast = this.props.showToast;\n const mlmData = this.props.mlmData;\n let additionalDetails = {\n \"data\": mlmData,\n \"datasetInfo\": this.props.datasetInfo\n }\n\n if (mlmData !== \"\") {\n return mlmData.map(function (row, index) {\n let defaultMetricCardData = [];\n let cardData = formMLMetricsCardData(row.metrics);\n cardData.forEach(element => {\n if(element.metric_type === \"default\"){\n defaultMetricCardData.push(element);\n }\n });\n return(\n }\n />);\n });\n }else {\n return(\n }\n />);\n }\n }\n\n renderCustomProcess(tab) {\n if(tab === \"ml_metrics_custom\"){\n let tableData = this.props.customMetricMlmData;\n let emptyTable = false;\n let isData = false;\n if (tableData !== undefined && tableData !== null) {\n if (tableData.data !== undefined && tableData.data !== null) {\n emptyTable = (tableData.data.length === 0 && this.props.dqmData !== \"\");\n if (tableData.data.length > 0) {\n isData = true;\n }\n }\n }\n if (emptyTable || isData) {\n return(\n :\n \n\n }\n />);\n }else {\n return(}\n />);\n }\n }\n }\n\n renderTable(){\n let tableData = getMetricsTableData(this.props.mlmData);\n let dataSet = this.props.datasetInfo.data_set;\n const allDataAvailable = this.props.mlmData !== \"\" &&\n dataSet !== undefined &&\n this.props.datasetInfo.attributes !== undefined && dataSet.length > 0 &&\n this.props.modelOptions !== null;\n\n const isEmptyTable = tableData.data.length === 0 && this.props.mlmData !== \"\";\n\n if (isEmptyTable || allDataAvailable) {\n return }\n />\n }else {\n return }\n />\n }\n }\n\n\n goToChoosePlan = () => {\n window.location.href = \"/choose-plan\";\n }\n\n\n\n\n render() {\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n\n let hide_choose_plan_button = true;\n if (permissionsList.includes('BillingAccess')) {\n hide_choose_plan_button = false;\n } else {\n hide_choose_plan_button = true;\n }\n\n let show_custom_metrics = false;\n if (this.state.plan_details !== null && this.state.plan_details !== undefined) {\n let details_json = JSON.parse(this.state.plan_details);\n if (details_json !== null) {\n let details = details_json[\"details\"][\"supported_features\"];\n if (details !== null) {\n for (const [key, val] of Object.entries(details)) {\n if (key !== \"custom_metrics\") {\n continue;\n } else {\n let status = val[\"support\"];\n show_custom_metrics = status;\n }\n }\n }\n }\n\n }\n let show_custom_metrics_modal = (this.state.check === true && show_custom_metrics === false);\n return (\n <>\n\n\n\n
    \n \n
    \n
    \n \n \n {this.renderCard()}\n \n \n\n \n \n
    \n You are currently on a Basic Plan (Free)
    \n

    Upgrade now to use this feature

    \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n

    {this.state.title}

    \n

    {this.state.text}

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n { this.state.check === false || show_custom_metrics === false ? \"\" :\n
    \n }\n />\n
    \n \n }\n {this.renderTable()}\n {this.renderCustomProcess(\"ml_metrics_custom\")}\n
    \n
    \n
    \n
    \n\n \n\n \n );\n }\n}\n\n\nexport default ModelMetrics;","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport Tab from 'react-bootstrap/Tab';\nimport { getApi, postUIlogs } from \"../utils/event_handling\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\nimport Nav from 'react-bootstrap/Nav';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {toastObj, getFeatureAccess} from \"../utils/common_utils\";\nimport DQMetrics from \"./dqMetrics\";\nimport ModelMetrics from \"./mlMetrics\";\nimport ErrorHandler from '../components/error_500';\nimport {CopyRightsFooter} from '../components/copyrights';\nimport {postMixpanel} from '../mixpanel';\nimport {logoutPageRedirect} from \"../utils/common_utils\";\n\n\nclass Metrics extends React.Component {\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.showToast =this.showToast.bind(this);\n this.closeToast= this.closeToast.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.state = {\n dqmData: \"\",\n mlmData: \"\",\n customMetricDqmData: null,\n featureAccess: getFeatureAccess(),\n customMetricMlmData: null,\n activateKey: \"dqm\",\n errorOccurred: false,\n modelOptions: null,\n enabledMetrics:[],\n isConsistencyEnabled: false,\n integration_option: null,\n details: {\n data_set: [],\n attributes: []\n },\n toastStatus: false,\n }\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n componentDidMount() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n this.getData();\n }\n\n getData(){\n this.getApi(\"completeMetricInfo\");\n this.getApi(\"data_set\");\n this.getApi(\"integrationOptions\");\n this.getApi(\"checkConsistency\");\n this.getApi(\"customMetricProcessInfo\");\n \n let hideModelMetricsTab = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelMetrics = this.state.featureAccess[\"models\"];\n hideModelMetricsTab = modelMetrics === false;\n }\n\n if (hideModelMetricsTab) {\n // When models feature is disabled, no need to call model related apis.\n return;\n }\n\n this.getApi(\"models\");\n }\n\n closeToast(){\n this.setState({toastStatus:false});\n }\n handleTab(key) {\n postMixpanel(\"Metrics -> \"+key +\" Tab Page\")\n this.setState({activateKey: key})\n }\n showToast(status, msg, link) {\n this.getData();\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastLink: link,\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n });\n }\n\n render() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n let hideModelMetricsTab = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelMetrics = this.state.featureAccess[\"models\"];\n hideModelMetricsTab = modelMetrics === false;\n }\n return (\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    { this.state.toastMsg }

    \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n {hideModelMetricsTab ? \"\" : \n \n \n }\n \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default Metrics;","import React from 'react';\nimport DropdownTreeSelect from \"react-dropdown-tree-select\";\nimport $ from 'jquery';\nimport \"./nested-data.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nclass CustomTreeSelect extends React.Component {\n\n constructor(props) {\n super(props);\n this.onFocus = this.onFocus.bind(this);\n \n this.onChange = this.onChange.bind(this);\n this.loadFilterDataset = this.loadFilterDataset.bind(this)\n this.toggleAll = this.toggleAll.bind(this)\n this.state = {\n id:this.props.id,\n placeholder:this.props.placeholder,\n selected_id:[],\n selected_id_index:[],\n data:this.props.data,\n cur_data:\"\",\n renderDataset:true,\n // fullscreenviewselect:this.props.fullscreenviewselect\n }\n }\n\n\n loadFilterDataset(pmname){\n\n let parms; \n let filterDatasetId = []\n let filterMetricsId = []\n let filterAttributeId = []\n let filterUncheckedDatasetId = []\n if(pmname.target.id===\"parentview_data_set\" || pmname.target.id===\"fullscreen_data_set\"){\n\n let cur_data = this.props.data.filter((data)=> \n parseInt(data.integration_id) === parseInt(this.props.seletedDatasource) || data.integration_id === \"-1\"\n )\n\n let metrics_data = this.props.metrics_data;\n if(metrics_data!==undefined){\n for(let i=0;i 0){\n if(pmname.target.getAttribute(\"data-type\")===\"fullscreen\") { \n this.props.loadFilterDataset(parms)\n }else {\n this.props.loadFilterDataset(parms)\n }\n }else {\n parms.fiteredDatseset = [\"*\"];\n if(pmname.target.getAttribute(\"data-type\")===\"fullscreen\") { \n this.props.loadFilterDataset(parms)\n }else {\n this.props.loadFilterDataset(parms)\n }\n }\n }\n if(pmname.target.id===\"parentview_attributes\" || pmname.target.id===\"fullscreen_attributes\"){\n let cur_data = this.props.data;\n let parms \n let datasetindex; \n if(pmname.target.id===\"parentview_attributes\" || pmname.target.id===\"fullscreen_attributes\"){\n \n let metrics_data = this.props.metrics_data;\n if(metrics_data!==undefined){\n for(let i=0;i 0 && cur_data[i].checked === true){\n filterAttributeId.push({\"value\":cur_data[i].value})\n }\n\n if(cur_data[i][\"children\"]!==undefined){\n for(let j=0;j 0 && cur_data[i][\"children\"][j][\"checked\"]===true){\n filterAttributeId.push({\"value\":cur_data[i][\"children\"][j].value,\"label\":cur_data[i][\"children\"][j].label});\n }\n }\n }\n }\n }\n }\n\n cur_data = this.props.dataset_data;\n for(let i=0;i 0 && cur_data[i].checked === true){\n filterAttributeId.push({\"value\":cur_data[i].value})\n }\n \n let datasetindex;\n if(cur_data[i][\"children\"]!==undefined){\n for(let j=0;j 0 && cur_data[i][\"children\"][j][\"checked\"]===true){\n filterAttributeId.push({\"value\":cur_data[i][\"children\"][j].value,\"label\":cur_data[i][\"children\"][j].label});\n }\n }\n }\n }\n }\n }\n \n\n parms = {\n filterdDatsource:[this.props.seletedDatasource],\n fiteredDatseset:filterDatasetId,\n fitlerdDate:[this.props.startDate,this.props.endDate],\n fitlerdAttr:filterAttributeId,\n filterMetricsId:filterMetricsId\n }\n\n if(pmname.target.getAttribute(\"data-type\")===\"fullscreen\") { \n this.props.loadFilterDataset(parms)\n }else {\n this.props.loadFilterDataset(parms)\n }\n return;\n }\n }\n \n componentWillUnmount(){\n }\n componentDidMount(){\n $('body').click(function() {\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n });\n\n $(document).off('click', '#datasettreeselectapply');\n $(document).on('click', '#datasettreeselectapply', function(e){\n // if(this.props.fullscreenviewselect){\n // $(\"#fullscreen_data_set\").click();\n // }else{\n // $(\"#parentview_data_set\").click();\n // }\n $(\"#\"+$(\"#datasettreeselectapply\").parents().eq(5)[0][\"childNodes\"][1][\"attributes\"][\"id\"][\"value\"]).click();\n\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n document.body.click()\n // eslint-disable-next-line\n }.bind(this));\n \n $(document).off('click', '#attributestreeselectapply');\n $(document).on('click', '#attributestreeselectapply', function(e){\n // if(this.props.fullscreenviewselect){\n // $(\"#fullscreen_attributes\").click();\n // }else{\n // $(\"#parentview_attributes\").click();\n // }\n $(\"#\"+$(\"#attributestreeselectapply\").parents().eq(5)[0][\"childNodes\"][1][\"attributes\"][\"id\"][\"value\"]).click();\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n document.body.click()\n // eslint-disable-next-line\n }.bind(this));\n\n $(document).off('click', '#metricsapply');\n $(document).on('click', '#metricsapply', function(e){\n // $(this).closest('input').find(\".trigger-click\").click();\n // return;\n // if(this.props.fullscreenviewselect){\n // $(\"#fullscreen_metrics\").click();\n // }else{\n // $(\"#parentview_metrics\").click();\n // }\n $(\"#\"+$(\"#metricsapply\").parents().eq(5)[0][\"childNodes\"][1][\"attributes\"][\"id\"][\"value\"]).click();\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n document.body.click()\n // eslint-disable-next-line\n }.bind(this));\n\n $(document).off('click', '.treeselectcancel');\n $(document).on('click', '.treeselectcancel', function(e){\n document.body.click()\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n // eslint-disable-next-line\n }.bind(this));\n this.setState({\"cur_data\":this.state.data});\n let cur_id = this.state.id;\n $(\"#\"+cur_id+\" .search\").keyup(function(){\n setTimeout(() => {\n if($(\"span\").hasClass(\"no-matches\")){\n $(\".custom-dropdown-action\").remove();\n }else {\n setTimeout(() => {\n if($(this).parents().eq(4)[0][\"attributes\"][\"id\"][\"value\"]===\"chooseDatassetForDqError\"){\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n } \n }\n if($(this).parents().eq(4)[0][\"attributes\"][\"id\"][\"value\"]===\"chooseAttributeForDqError\"){\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n } \n }\n if($(this).parents().eq(4)[0][\"attributes\"][\"id\"][\"value\"]===\"chooseMetricsForDqError\"){\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n } \n }\n }, 10);\n }},500); \n });\n }\n\n componentDidUpdate(){\n // let cur_id = this.state.id;\n if(this.props.name===\"data_set\" && this.props.data!==undefined){\n setTimeout(() => {\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false && this.props.data.length > 1){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n } \n }, \"100\");\n }\n if(this.props.name===\"attributes\" && this.props.data!==undefined){\n setTimeout(() => {\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false && this.props.data.length > 1){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n } \n }, \"100\");\n }\n\n \n\n if(this.props.name===\"metrics\" && this.props.data!==undefined){\n setTimeout(() => {\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false && this.props.data.length > 1){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n } \n }, \"100\");\n }\n }\n\n onFocus(){\n // While changing datasource need to render the dropdown with latest data\n if(this.props.name===\"data_set\"){\n this.setState({renderDataset:true,type:\"data_set\"})\n }\n if(this.props.name===\"attributes\"){\n this.setState({renderDataset:true,type:\"attributes\"})\n }\n let cur_id = this.state.id;\n if(this.state.data!==undefined){\n if(this.state.data.length > 0){\n setTimeout(() => {\n if(this.props.name===\"data_set\"){\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false && this.props.data.length > 1){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n $(\"#\"+cur_id).parent().parent().addClass('customselect-active'); \n }\n }\n\n if(this.props.name===\"attributes\"){\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false && this.props.data.length > 1){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n $(\"#\"+cur_id).parent().parent().addClass('customselect-active'); \n }\n }\n if(this.props.name===\"metrics\"){\n if($('.custom-dropdown-action').length===0 && $(\"span\").hasClass(\"no-matches\")===false && this.props.data.length > 1){\n $(\".dropdown-content\").append(`
    \n \n
    `);\n $(\"#\"+cur_id).parent().parent().addClass('customselect-active'); \n }\n } \n\n }, \"100\");\n }\n }\n }\n\n onChange = (currentNode, selectedNodes) => {\n if(this.props.name === \"metrics\"){\n let cur_data = this.props.data;\n if (currentNode.value === \"*\") {\n this.toggleAll(currentNode);\n } else {\n let index = -1;\n index = cur_data.findIndex(function(item){\n return item.value === currentNode[\"value\"];\n });\n if(index > -1){\n cur_data[index][\"checked\"] = currentNode[\"checked\"]\n }\n\n }\n this.props.handleSelectedAttributes(cur_data);\n this.setState({renderDataset:false})\n }\n\n if(this.props.name===\"data_set\"){\n let cur_data = this.props.data;\n if (currentNode.value === \"*\") {\n this.toggleAll(currentNode);\n } else {\n let selected_id = this.state.selected_id;\n let selected_id_index = this.state.selected_id_index;\n let index = -1;\n if(currentNode.parent_data_set_id===undefined){\n index = cur_data.findIndex(function(item){\n return parseInt(item.value) === parseInt(currentNode[\"value\"]);\n });\n if(index > -1){\n cur_data[index][\"checked\"] = currentNode[\"checked\"]\n }\n if(currentNode[\"_children\"]!==undefined){\n for (let i = 0; i < cur_data.length; i++) {\n if(cur_data[i][\"value\"]===currentNode.value){\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n // eslint-disable-next-line\n if(cur_data[i][\"children\"][j].checked!==undefined){\n // eslint-disable-next-line\n cur_data[i][\"children\"][j].checked = cur_data[i][\"children\"][j].checked;\n }else {\n cur_data[i][\"children\"][j].checked = false;\n }\n }\n \n }\n }\n }\n\n let obj = {\n \"type\":this.props.name,\n \"id\":currentNode[\"value\"],\n \"label\":currentNode[\"label\"],\n \"attribute_ids\":currentNode[\"attribute_ids\"]\n }\n if(currentNode[\"checked\"] === true){\n if(currentNode[\"value\"]!==null){\n selected_id_index.push(currentNode[\"value\"]);\n selected_id.push({'id':currentNode[\"value\"],\"type\":this.props.name,'detail':obj});\n }\n }\n else {\n let temp = [];\n for (var i = 0; i < selected_id.length; i++) {\n if(selected_id[i].id!==currentNode[\"value\"]){\n temp.push({'id':selected_id[i][\"id\"],\n \"type\":selected_id[i][\"type\"],\n 'detail':selected_id[i][\"detail\"]});\n }\n }\n selected_id = temp;\n }\n\n }else {\n let childindex = -1;\n index = cur_data.findIndex(function(item){\n return item.value === currentNode[\"parent_data_set_id\"];\n });\n if(index > -1){\n childindex = cur_data[index][\"children\"].findIndex(function(item){\n return item.value === currentNode[\"value\"];\n });\n }\n if(childindex > -1){\n cur_data[index]['children'][childindex][\"checked\"] = currentNode[\"checked\"]\n }\n } \n this.props.handleSelectedAttributes(cur_data);\n this.setState({renderDataset:false,selected_id:selected_id})\n } \n }\n\n if(this.props.name===\"attributes\"){\n \n if (currentNode.value === \"*\") {\n this.setState({renderDataset:false})\n this.toggleAll(currentNode);\n } else {\n let cur_data = this.props.data;\n if(currentNode[\"_depth\"]===0){\n let index = cur_data.findIndex(function(item){\n return item.value === currentNode[\"value\"] && item.dataset_id === currentNode[\"dataset_id\"];\n });\n if(index > -1){\n cur_data[index][\"checked\"] = currentNode[\"checked\"]\n if (cur_data[index][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[index][\"children\"].length; j++) {\n cur_data[index][\"children\"][j].checked = currentNode.checked;\n }\n }\n }\n }\n else if(currentNode[\"_depth\"]===1){\n let index = cur_data.findIndex(function(item){\n return item.value === currentNode[\"dataset_id\"];\n });\n\n cur_data = cur_data.map((data)=> {\n if(data.value === currentNode.data_set_id && currentNode[\"checked\"] === false){\n let checkAll = false\n data.checked = checkAll\n return data\n }\n\n else if(data.value === currentNode.data_set_id && currentNode[\"checked\"] === true){\n \n let checkedAll = false\n if(data.children !== undefined){\n let childAtt = data.children\n\n let CheckedList = childAtt.filter((childData)=> childData.checked !== false)\n \n \n if(data.children.length === CheckedList.length+1 ){\n /** Length -1 is included because the current data have the selecting attribute value as false\n * As of now handled with -1 login further we can to check the logic\n */\n checkedAll = true\n }\n else {\n }\n }\n data.checked = checkedAll\n return data\n }\n else{\n return data\n }\n })\n\n if(cur_data[index][\"children\"]!==undefined){\n let childindex = -1;\n if(index > -1){\n childindex = cur_data[index][\"children\"].findIndex(function(item){\n return item.value === currentNode[\"value\"];\n });\n }\n if(childindex > -1){\n cur_data[index]['children'][childindex][\"checked\"] = currentNode[\"checked\"]\n }\n }\n }\n this.props.handleAttributesSelection(cur_data)\n return;\n\n }\n }\n\n }\n onAction = (node, action) => {\n \n\n }\n\n toggleAll = (node) => {\n\n if(this.props.name===\"metrics\"){\n let data = this.props.data;\n for (let i = 0; i < data.length; i++) {\n data[i].checked = node.checked;\n }\n this.props.handleSelectedAttributes(data);\n return data;\n }\n if(this.props.name===\"data_set\"){\n let data;\n if(this.props.data!==\"\"){\n data = this.props.data.filter((data)=> \n parseInt(data.integration_id) === parseInt(this.props.seletedDatasource) || data.value === \"*\"\n ) \n if(node.is_child_dataset === true){\n for (let i = 0; i < data.length; i++) {\n\n if(data[i][\"value\"]===node.parent_data_set_id || data[i][\"value\"] === \"*\"){\n if(data[i][\"value\"] === \"*\"){\n data[i].checked = node.checked;\n }else {\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }}\n }\n }\n }else {\n for (let i = 0; i < data.length; i++) {\n data[i].checked = node.checked;\n if(data[i][\"children\"]!==undefined){\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n }\n }\n this.setState({renderDataset:true,data:data})\n }\n this.props.handleSelectedAttributes(data);\n return data;\n \n }\n\n /*\n if(this.props.name===\"attributes\"){\n let data=this.props.data;\n if(node.value===\"*\" && node.dataset_id===undefined){\n for (let i = 0; i < data.length; i++) {\n if(data[i][\"children\"]===undefined) {\n data[i].checked = node.checked;\n }else{\n data[i].checked = node.checked;\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n }\n }\n else if(node.value===\"*\" && node.dataset_id > 0){\n for (let i = 0; i < data.length; i++) {\n\n if(data[i][\"children\"]===undefined && parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n if(parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id))\n {\n data[i].checked = node.checked;\n } }else{\n if(data[i][\"children\"]!==undefined ){\n data[i].checked = node.checked;\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n else {\n if(parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id))\n {\n data[i].checked = node.checked;\n }\n }\n }\n }\n }\n this.props.handleAttributesSelection(data)\n }*/\n if(this.props.name === \"attributes\"){\n let data = this.props.data;\n if (node.value === \"*\" && node.dataset_id === undefined) {\n for (let i = 0; i < data.length; i++) {\n if (data[i][\"children\"] === undefined) {\n data[i].checked = node.checked;\n } else {\n data[i].checked = node.checked;\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n }\n }\n else if (node.value === \"*\" && node.dataset_id > 0) {\n for (let i = 0; i < data.length; i++) {\n if (data[i][\"children\"] === undefined && parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n if (parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n data[i].checked = node.checked;\n }\n } else {\n if (data[i][\"children\"] !== undefined && parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n data[i].checked = node.checked;\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n else {\n if (parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n data[i].checked = node.checked;\n }\n }\n }\n }\n }\n this.props.handleAttributesSelection(data)\n }\n };\n\n onNodeToggle = currentNode => {\n let index = -1;\n if(this.props.name===\"data_set\"){\n let cur_data = this.props.data;\n index = cur_data.findIndex(function(item){\n return item.value === currentNode[\"value\"];\n });\n if(index > -1){\n cur_data[index][\"expanded\"] = currentNode[\"expanded\"]\n }\n this.setState({cur_data:cur_data});\n this.props.handleExpand(cur_data);\n }\n if(this.props.name===\"attributes\"){\n let cur_data = this.props.data;\n index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"value\"];\n });\n if (index > -1) {\n cur_data[index][\"expanded\"] = currentNode[\"expanded\"]\n }\n this.setState({ cur_data: cur_data });\n this.props.handleAttributesSelection(cur_data); \n }\n }\n\n render() {\n let cur_data = [];\n let checkall = 0;\n let selectplaceholdercnt = 0;\n if (this.props.data !== undefined && this.props.name === \"attributes\") {\n if (this.props.data !== undefined) {\n cur_data = this.props.data;\n for (let i = 0; i < cur_data.length; i++) {\n if (cur_data[i].checked === true && cur_data[i].value !== \"*\" && cur_data[i].value !== undefined && cur_data[i].children === undefined) {\n selectplaceholdercnt++;\n }\n /** Handle un-checking of all option under dataset */\n if (cur_data[i].value === \"*\" && cur_data[i].dataset_id !== undefined) {\n let currentData = cur_data\n let data = currentData.filter((data) => data.dataset_id === currentData[i].dataset_id && data.checked !== true)\n if (data.length > 0) {\n cur_data[i].checked = false\n }\n if (data.length === 1 && data[0].value === \"*\") {\n cur_data[i].checked = true\n }\n }\n if (cur_data[i][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n if (cur_data[i][\"children\"][j].value !== \"*\" && cur_data[i][\"children\"][j].checked === true && cur_data[i].value !== \"*\" && cur_data[i].value !== undefined) {\n if (cur_data[i][\"children\"][j].value !== \"*\") {\n selectplaceholdercnt++;\n }\n }\n }\n }\n }\n }\n checkall = cur_data.filter((data) => data.checked !== true && data.value !== undefined);\n if (cur_data.length !== 1 && checkall.length === 1 && checkall[0].value === \"*\") {\n cur_data[0].checked = true\n }\n else {\n cur_data[0].checked = false\n }\n\n }\n if (this.props.data !== undefined && this.props.name === \"data_set\") {\n if (this.props.data !== \"\") {\n cur_data = this.props.data.filter((data) =>\n parseInt(data.integration_id) === parseInt(this.props.seletedDatasource) || data.integration_id === \"-1\"\n )\n if (cur_data !== \"\") {\n checkall = cur_data.filter((data) =>\n data.checked === true && data.value !== \"*\"\n ).length;\n\n }\n\n if (checkall + 1 !== cur_data.length) {\n cur_data[0][\"checked\"] = \"\";\n } else {\n if (cur_data.length > 0) {\n if (checkall === cur_data.length + 1) {\n cur_data[0][\"checked\"] = true;\n }\n }\n }\n for (let i = 0; i < cur_data.length; i++) {\n if (cur_data[i].checked === true && cur_data[i].value !== \"*\") {\n //&& String(cur_data[i].value).includes(\")\") === false\n selectplaceholdercnt++;\n }\n if (cur_data[i][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n if (cur_data[i][\"children\"][j].checked === true && cur_data[i][\"children\"][j].value !== \"*\") {\n //&& String(cur_data[i].value).includes(\")\") === false\n selectplaceholdercnt++;\n }\n }\n }\n }\n }\n // let checkedAll = cur_data.filter((data) =>data.integration_id !== \"-1\" && data.checked !== true ).length;\n let checkedAll = [];\n cur_data.map((data) => {\n if (data.integration_id !== \"-1\" && data.checked !== true) {\n checkedAll.push(false)\n }\n if (data.children !== undefined) {\n let childAtt = data.children.filter((childData) => childData.parent_data_set_id === data.value && childData.value !== \"*\" && (childData.checked === undefined || childData.checked !== true))//.length\n if (childAtt.length === 0) {\n data.children[0].checked = true\n }\n else {\n data.children[0].checked = false\n checkedAll.push(false)\n }\n }\n return null\n }\n )\n\n if (checkedAll.includes(false)) {\n cur_data[0].checked = false\n }\n else {\n cur_data[0].checked = true\n }\n }\n\n if (this.props.data !== undefined && this.props.name === \"metrics\") {\n let _data = this.props.data;\n if (this.props.selectedGroup !== undefined && this.props.selectedGroup.label === 'Attribute Only') {\n cur_data = _data.filter((data) =>\n data.label !== 'Row Count' && data.label !== 'Recency'\n )\n // cur_data = _data\n }\n else {\n cur_data = _data\n }\n\n let checkall = cur_data.filter((data) =>\n data.value !== \"*\"\n ).length;\n\n for (let i = 0; i < cur_data.length; i++) {\n if (cur_data[i].checked === true && cur_data[i].value !== \"*\") {\n selectplaceholdercnt++;\n }\n }\n if (checkall === selectplaceholdercnt) {\n if (selectplaceholdercnt > 0) {\n cur_data[0][\"checked\"] = true;\n }\n } else {\n if (selectplaceholdercnt > 0) {\n cur_data[0][\"checked\"] = \"\";\n }\n }\n }\n return (\n
    \n
    \n \n
    \n \n \n \n
    \n );\n }\n}\nexport default CustomTreeSelect;","import { components } from \"react-select\";\nimport React from 'react';\nimport _ from 'lodash';\nimport moment from \"moment\";\nimport Form from 'react-bootstrap/Form';\nimport { normalizeAttributeName, normalizeChildDatasetName } from \"../../utils/attribute_name_utils\";\nimport {MODEL_TYPES} from \"../../utils/constant\";\n// import { json } from \"d3\";\n\nlet MULTI_CLASSIFICATION_EVALUATION = [{\"label\":\"Confusion matrix\", \"value\":'cMatrix',\"type\": \"all_evaluation\"},\n {\"label\":\"False Negative\", \"value\":'FN',\"type\": \"all_evaluation\"},\n {\"label\":\"False Positive\", \"value\":'FP',\"type\": \"all_evaluation\"},\n {\"label\":\"True Negative\", \"value\":'TN', \"type\": \"all_evaluation\"},\n {\"label\":\"True Positive\", \"value\":'TP', \"type\": \"all_evaluation\"},\n ]\n\nlet BINARY_CLASSIFICATION_EVALUATION = [{\"label\":\"Confusion matrix\", \"value\":'cMatrix',\"type\": \"all_evaluation\"},\n {\"label\":\"False Negative\", \"value\":'FN',\"type\": \"all_evaluation\"},\n {\"label\":\"False Positive\", \"value\":'FP',\"type\": \"all_evaluation\"},\n {\"label\":\"True Negative\", \"value\":'TN', \"type\": \"all_evaluation\"},\n {\"label\":\"True Positive\", \"value\":'TP', \"type\": \"all_evaluation\"},\n {\"label\":\"Area Under ROC\", \"value\":'AUR', \"type\": \"all_evaluation\"},\n {\"label\":\"Area Under PR\", \"value\":'AUPR', \"type\": \"all_evaluation\"},\n {\"label\":\"Area Under ROC Error\", \"value\":'AURE', \"type\": \"all_evaluation\"},\n {\"label\":\"Area Under PR Error\", \"value\":'AUPE', \"type\": \"all_evaluation\"}]\n\nlet MULTI_CLASSIFICATION_ACCURACY = [ {\"label\":\"Accuracy\", \"value\":'accuracy', \"type\": \"all_accuracy\"},\n {\"label\":\"F1 score\", \"value\":'f1score', \"type\": \"all_accuracy\"},\n {\"label\":'Precision vs Recall', \"value\":'precisionVsRecall', \"type\": \"all_accuracy\"},\n {\"label\": \"Sensitivity vs Specificity\", \"value\": \"sensitivityVsSpecificity\", \"type\": \"all_accuracy\"},\n {\"label\":'Weighted F(1) Score', \"value\":'weightedF1Score', \"type\": \"all_accuracy\"},\n {\"label\":'Weighted Precision', \"value\":'weightedPrecision', \"type\": \"all_accuracy\"},\n {\"label\":'Weighted Recall', \"value\":'weightedRecall',\"type\": \"all_accuracy\"},\n {\"label\":\"Matthews Correlation Coefficient\", \"value\":'Matthews correlation coefficient', \"type\": \"all_accuracy\"}\n ]\nlet BINARY_CLASSIFICATION_ACCURACY = [ {\"label\":\"Accuracy\", \"value\":'accuracy', \"type\": \"all_accuracy\"},\n {\"label\":\"F1 score\", \"value\":'f1score', \"type\": \"all_accuracy\"},\n {\"label\":'Precision vs Recall', \"value\":'precisionVsRecall', \"type\": \"all_accuracy\"},\n {\"label\": \"Sensitivity vs Specificity\", \"value\": \"sensitivityVsSpecificity\", \"type\": \"all_accuracy\"},\n {\"label\":'Weighted F(1) Score', \"value\":'weightedF1Score', \"type\": \"all_accuracy\"},\n {\"label\":'Weighted Precision', \"value\":'weightedPrecision', \"type\": \"all_accuracy\"},\n {\"label\":'Weighted Recall', \"value\":'weightedRecall',\"type\": \"all_accuracy\"},\n {\"label\":\"Matthews Correlation Coefficient\", \"value\":'Matthews correlation coefficient', \"type\": \"all_accuracy\"}\n ]\n\nlet REGRESSION = [{\"label\": \"Mean Squared Error\", \"value\": \"mse\", \"type\": \"all_accuracy\"},\n {\"label\": \"Mean Absolute Error\", \"value\": \"mae\", \"type\": \"all_accuracy\"},\n {\"label\": \"Root Mean Squared Error\", \"value\": \"rmse\", \"type\": \"all_accuracy\"},\n {\"label\": \"R-squared\", \"value\": \"r2\", \"type\": \"all_accuracy\"},\n {\"label\": \"Spearman Correlation Coefficient\", \"value\": \"Spearman correlation coefficient\", \"type\": \"all_accuracy\"},\n {\"label\": \"Pearson's Correlation Coefficient\", \"value\": \"Pearson's correlation coefficient\", \"type\": \"all_accuracy\"},]\n\nlet RECOMMENDATION = [{\"label\": \"Mean Squared Error\", \"value\": \"mse\", \"type\": \"all_accuracy\"},\n {\"label\": \"Mean Absolute Error\", \"value\": \"mae\", \"type\": \"all_accuracy\"},\n {\"label\": \"Root Mean Squared Error\", \"value\": \"Rmse\", \"type\": \"all_accuracy\"},\n {\"label\": \"R-squared\", \"value\": \"r2\", \"type\": \"all_accuracy\"},\n {\"label\": \"Spearman Correlation Coefficient\", \"value\": \"Spearman correlation coefficient\", \"type\": \"all_accuracy\"},\n {\"label\": \"Pearson's Correlation Coefficient\", \"value\": \"Pearson's correlation coefficient\", \"type\": \"all_accuracy\"},\n {\"label\": \"Mean Average Recall @K\", \"value\": \"Mean Average Recall @K\", \"type\": \"all_accuracy\"},\n {\"label\": \"Mean Average Precision @K\", \"value\": \"Mean Average Precision @K\", \"type\": \"all_accuracy\"}]\n\nlet CLUSTERING_WITHOUT_RESPONSE_DATA = [{\"label\": \"Silhouette Score\", \"value\": \"silhouetteScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Davies Bouldin Score\", \"value\": \"daviesBouldinScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Calinski Harabasz Score\", \"value\": \"calinskiHarabaszScore\", \"type\": \"all_accuracy\"}]\n\nlet CLUSTERING_WITH_RESPONSE_DATA = [{\"label\": \"Silhouette Score\", \"value\": \"silhouetteScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Davies Bouldin Score\", \"value\": \"daviesBouldinScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Calinski Harabasz Score\", \"value\": \"calinskiHarabaszScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Adjusted Rand Score\", \"value\": \"adjustedRandScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Fowlkes Mallows Score\", \"value\": \"fowlkesMallowsScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Rand Score\", \"value\": \"randScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Adjusted Mutual Info Score\", \"value\": \"adjustedMutualInfoScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Homogeneity Completeness V-measure Score\", \"value\": \"homogeneityCompletenessV-measureScore\", \"type\": \"all_accuracy\"},\n {\"label\": \"Normalized Mutual Info Score\", \"value\": \"normalizedMutualInfoScore\", \"type\": \"all_accuracy\"}]\n\nexport function getOptions(selectedModel=[], customMetrics=[]) {\n let options = []\n let modelType = \"\"\n let modelList = []\n let isMPCompareView = this.props.type === \"modelPerformanceCompView\";\n if(this.props.type === \"modelPerformance\" || isMPCompareView) {\n let accuracyMetrics = [{\"label\": \"Model Accuracy Metrics\", \"value\":\"all_accuracy\",\"type\": \"all_accuracy\"}]\n let evaluationMetrics = [{\"label\": \"Model Evaluation Metrics\", \"value\":\"all_evaluation\",\"type\": \"all_evaluation\"},]\n let modelRuntime = [{\"label\": \"Model Runtime-Profile Metrics\", \"value\": \"model_runtime\", \"type\": \"model_runtime\"},]\n \n for(let i=0;iNumber(x.value) === Number(data[\"ml_model_id\"]))\n let name = data[\"name\"]\n if(filtered.length > 0 && name !== null && name !== undefined) {\n let labelName = _.startCase(name)\n modelRuntime.push({\"label\": labelName, \"value\": data[\"name\"], \"type\": \"model_runtime\"})\n }\n }\n options = options.concat(accuracyMetrics)\n \n // For Model Performance Compare View, no need to show Evaluation metrics in Advanced filter\n if(evaluationMetrics.length > 1 && !isMPCompareView) {\n options = options.concat(evaluationMetrics)\n }\n\n options = options.concat(modelRuntime)\n }else {\n let issueMetrics = [{\"label\": \"Key 'Model Performance Metrics' Crossing Thresholds\", \"value\": \"type1\", \"type\": \"type1\"}]\n let c_metrics = [];\n for(let i=0;iNumber(x.ml_model_id) === Number(selectedModel[i][\"value\"]))\n for (let met of custom){\n c_metrics.push({\"label\":met.name, \"value\":met.name, \"type\": \"type8\"});\n }\n\n modelList.push(modelType);\n if([MODEL_TYPES.MULTI_CLASS_CLASSIFICATION, \n MODEL_TYPES.BINARY_CLASSIFICATION].includes(modelType)) {\n issueMetrics = issueMetrics.concat([{\"label\":\"Accuracy\", \"value\":'accuracy', \"type\": \"type1\"},\n {\"label\":\"F1 Score\", \"value\":'f1score', \"type\": \"type1\"},\n {\"label\":'Precision', \"value\":'precision', \"type\": \"type1\"},\n {\"label\":'Recall', \"value\":'recall', \"type\": \"type1\"},])\n }else if(modelType === \"regression\") {\n issueMetrics = issueMetrics.concat([{\"label\":'Root Mean Squared Error', \"value\":'Rmse', \"type\": \"type1\"}])\n }else if(modelType === \"recommendation\"){\n issueMetrics = issueMetrics.concat([{\"label\": \"Mean Squared Error\", \"value\": \"mse\", \"type\": \"type1\"},\n {\"label\": \"Root Mean Squared Error\", \"value\": \"Rmse\", \"type\": \"type1\"},\n {\"label\": \"Mean Average Recall @K\", \"value\": \"Mean Average Recall @K\", \"type\": \"type1\"},\n {\"label\": \"Mean Average Precision @K\", \"value\": \"Mean Average Precision @K\", \"type\": \"type1\"}])\n }\n }\n\n options = issueMetrics.concat([{\"label\": \"Consistency Errors - Serving data vs Training data\", \"value\": \"type2\", \"type\": \"type2\"},\n {\"label\": \"Feature Drifts - Entire Serving dataset\", \"value\": \"type3\", \"type\": \"type3\"},\n {\"label\": \"Feature drifts - By Serving data Attributes\", \"value\": \"type4\", \"type\": \"type4\"},\n {\"label\": \"Feature drifts - Serving data vs Training data\", \"value\": \"type5\", \"type\": \"type5\"},\n {\"label\": \"Prediction Metrics - Drifts\", \"value\": \"type6\", \"type\": \"type6\"},\n {\"label\": \"Business Response Metrics - Drifts\", \"value\": \"type7\", \"type\": \"type7\"}\n ]);\n if(customMetrics.length > 0 && c_metrics.length>0){\n options = options.concat([{\"label\": \"Custom ML Metrics - Drifts\", \"value\": \"type8\", \"type\": \"type8\"}]);\n options=options.concat(c_metrics);\n }\n }\n options = options.filter((v,i,a)=>a.findIndex(t=>(t.value === v.value && t.type===v.type))===i)\n if (this.props.type === \"modelPerformance\"){\n let modelExplainability = [{\"label\": \"Model Explainability\", \"value\":\"model_explainability\",\"type\": \"model_explainability\"},\n {\"label\": \"Feature Contribution Value - Attribute Level\", \"value\" : \"mean_shap_value_attribute_level\",\"type\": \"model_explainability\"},\n {\"label\": \"Feature Contribution Value - Dataset Level\", \"value\" : \"mean_shap_value_ds_level\",\"type\": \"model_explainability\"},\n {\"label\": \"Feature Contribution Value - Compare view\", \"value\" : \"mean_shap_value_combined_level\",\"type\": \"model_explainability\"}]\n options = options.concat(modelExplainability)\n }\n return options\n\n}\n\nexport const typeMappings = {\n \"Accuracy\": \"Accuracy\",\n \"Mean Average Recall @K\": \"Mean Average Recall @K\",\n \"Mean Average Precision @K\": \"Mean Average Precision @K\",\n \"F1 Score\": \"F1 Score\",\n \"Precision\": \"Precision\",\n \"Recall\": \"Recall\",\n \"Rmse\": \"Root Mean Squared Error\",\n \"ML Data Consistency\": \"Consistency Errors - Serving data vs Training data\",\n \"Serving Data Drift\": \"Feature Drifts - Entire Serving dataset\",\n \"Feature Drift in Serving Data\": \"Feature drifts - By Serving data Attributes\",\n \"Number of rows in serving data drifted from training data\":\"Feature drifts - Serving data vs Training data\",\n \"Number of rows in serving data drifting from training data exceeds threshold\": \"Feature drifts - Serving data vs Training data\",\n \"% drift between serving and training attribute\":\"Feature drifts - Serving data vs Training data\",\n \"% drift between serving and training attribute exceeds threshold\": \"Feature drifts - Serving data vs Training data\",\n \"Prediction Drift\": \"Prediction Metrics - Drifts\",\n \"Response Drift\": \"Business Response Metrics - Drifts\",\n \"Custom Metrics\": \"Custom ML Metrics - Drifts\",\n}\nexport const Option = props => {\n return (\n
    \n \n {/* null}\n />{\" \"}\n */}\n
    \n null}\n />{\" \"}\n {props.label}\n
    \n
    \n
    \n );\n};\n\nexport function changeDataSourceAdvanced(dataSourceOption) {\n let datasourceId = dataSourceOption.value;\n let datasets = []\n\n for (const [key, value] of Object.entries(this.props.mappedDatasetInfo[\"idDatasetDetail\"])) {\n if(Number(value[\"dataSourceId\"]) === Number(datasourceId)) {\n datasets.push({\"label\": normalizeChildDatasetName(value[\"datasetName\"]), \"value\": key});\n }\n }\n\n\n this.setState({datasets: datasets,\n attributeOptions: [],\n originalAttributeOptions: [],\n selectedDatasource: dataSourceOption,\n selectedAttributes: [],\n selectedDataSet: [] });\n }\n\nexport function handleChangeDataset(event) {\n let attributes = []\n let groupedlist = [];\n if(event !== null) {\n event.forEach(dataset => {\n this.props.mappedDatasetInfo.attributeIds.forEach(attribute => {\n if(attribute[\"datasetId\"] === dataset.value){\n let reqAttributeName = attribute[\"attributeName\"];\n reqAttributeName = normalizeAttributeName(reqAttributeName);\n attributes.push({\"label\": reqAttributeName, \"value\": attribute[\"attributeId\"],\"datasetName\": normalizeChildDatasetName(attribute[\"datasetName\"])})\n }\n\n });\n\n });\n\n let grouped = _.mapValues(_.groupBy(attributes, 'datasetName'));\n for (let [key,value] of Object.entries(grouped)) {\n groupedlist.push({'label':key,'options':value});\n } \n\n }\n\n this.setState({attributeOptions: groupedlist, originalAttributeOptions: attributes, selectedDataSet: event, selectedAttributes: []});\n\n }\n\nexport function changeAttribute(option){\n this.setState({selectedAttributes: option});\n }\n\nexport function changeMetric(option){\n this.setState({selectedMetrics: option});\n }\n\nexport function getFilteredData(data, startDate, endDate, considerEndAlone=false) {\n let updatedThumbnailCharts = []\n for (let _singleThumbnailData of data){\n let name = _singleThumbnailData.name;\n let filteredMetrics = this.state.selectedMetrics.filter(x=>x.label === name)\n if(filteredMetrics.length === 0) {\n continue\n }\n const actChartData = _.cloneDeep(_singleThumbnailData.chartData);\n let timeArr = actChartData.time;\n let valArr = actChartData.values;\n let driftPatterns = actChartData.drift_patterns;\n let newValues = []\n let newDrift = []\n if (timeArr === undefined) {\n continue;\n }\n let filteredArr\n if(considerEndAlone) {\n filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(endDate));\n }else {\n filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(endDate) && moment(x).isSameOrAfter(startDate));\n }\n\n const filteredLength = filteredArr.length;\n if (filteredLength === 0) {\n continue;\n }\n let startIndex = timeArr.indexOf(filteredArr[0]);\n let endIndex = timeArr.indexOf(filteredArr[filteredLength - 1]);\n for(let i=startIndex;i<=endIndex;i++){\n newValues.push(valArr[i])\n if(driftPatterns !==undefined) {\n newDrift.push(driftPatterns[i])\n }\n }\n if(filteredLength === 1) {\n newValues.push(valArr[startIndex])\n if(driftPatterns !==undefined) {\n newDrift.push(driftPatterns[startIndex])\n }\n }\n actChartData.time = filteredArr;\n actChartData.dq_chart_points = newValues;\n actChartData.values = newValues;\n actChartData.drift_patterns = newDrift;\n _singleThumbnailData.chartData = actChartData;\n updatedThumbnailCharts.push(_singleThumbnailData);\n }\n return updatedThumbnailCharts\n }\n\nexport function handleSubmit(event){\n this.setState({showDropDown: false});\n let filteredData = [];\n let clonedData = _.cloneDeep(this.state.completeTableData)\n \n for (let rowData of clonedData) {\n let previousTime = null;\n let thumbnailData = rowData.find(x => x.type === \"thumbnailCharts\");\n let datasetName = rowData.find(x => x.type === \"datasetName\");\n let detailedCharts = rowData.find(x => x.type === \"action\")\n let datasetId = detailedCharts.value;\n let attributeId = detailedCharts.attributeId;\n\n if(datasetName !== undefined) {\n // For filtering dataset rows\n let selectedDataSet = this.state.selectedDataSet.filter(x=>Number(x.value) === Number(datasetId))\n if(selectedDataSet.length === 0) {\n continue\n }\n }else if(this.state.showAttributes === false){\n continue\n\n }else {\n // For filtering attribute rows\n let selectedAttributes = this.state.selectedAttributes.filter(x=>Number(x.value) === Number(attributeId))\n if(selectedAttributes.length === 0) {\n continue\n }\n }\n\n let createdTime = moment(thumbnailData.createdTime).startOf(\"day\").toDate();\n let noDataAvailable = moment(this.state.startDate).isBefore(createdTime) && moment(this.state.endDate).isBefore(createdTime)\n\n if(noDataAvailable === true) {\n continue;\n }\n\n\n const thumbnailVal = thumbnailData.value;\n\n let issuedAttributes = thumbnailData.issuedAttributes;\n\n for (let _cData of thumbnailVal) {\n let updatedThumbnailCharts = this.getFilteredData(_cData.data,this.state.startDate,this.state.endDate);\n if(updatedThumbnailCharts.length === 0 || (updatedThumbnailCharts.length === 1 && updatedThumbnailCharts[0][\"name\"] === \"Recency\")) {\n updatedThumbnailCharts = this.getFilteredData(_cData.data, this.state.startDate, this.state.endDate, true)\n if(issuedAttributes !== undefined) {\n let previousTimeArr = issuedAttributes.filter(x => moment(x.refresh_time).isSameOrBefore(this.state.endDate))\n if(previousTimeArr.length > 0) {\n previousTime = previousTimeArr[0][\"refresh_time\"]\n }\n\n }\n\n\n }\n _cData.data = updatedThumbnailCharts;\n }\n\n if(datasetName !== undefined) {\n datasetName[\"previousTime\"] = previousTime\n thumbnailData.noDataAvailable = noDataAvailable;\n }\n if(this.state.showpartitions !== true){\n let check = this.props.filterData.parentDatasets.filter((data)=> \n parseInt(data.value) === parseInt(datasetId)\n ).length;\n if(check > 0){\n filteredData.push(rowData);\n }\n }else {\n filteredData.push(rowData);\n }\n }\n this.setState({dataFilteredValues: filteredData});\n }\n\nexport function handleCheckClick() {\n this.setState({showAttributes: !this.state.showAttributes})\n }\n\nexport function showDatasets() {\n this.setState({showDatasets: !this.state.showDatasets});\n}\n\nexport function handleTime(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n this.setState({startDate: startDate, endDate: endDate});\n }\n\n\nexport function getMetricsOption(selectedDataSet,pmallflag = 0,allchecked=0) {\n let metricsOption = []\n let checked = \"\"\n if(allchecked === -1){\n checked = true\n }\n if(pmallflag===1){\n metricsOption.push({\"label\":\"All\",\"value\":\"*\",\"checked\":checked})\n }\n this.props.metricsList.forEach(metric => {\n\n if(metric.metric_name === \"Unique Values\"){\n metric['metric_name'] = \"Uniqueness\"\n }\n if(metric.value !==\"*\"){\n if(metric.mas_type === \"dqm\" && metric.data_set_id === null) {\n if(allchecked ===1){\n if(metric.mas_name === this.props.metricType){\n checked = true\n }else {\n checked = \"\"\n }\n }\n metricsOption.push({\"label\": metric.metric_name, \"value\": metric.metrics_id, \"group\": metric.mas_name, \"checked\":checked})\n }else if(metric.mas_type === \"dqm\" && metric.data_set_id !== null && selectedDataSet!== undefined){\n if(selectedDataSet.length > 0){ \n let filtered = selectedDataSet.filter(x=>Number(x.value) === Number(metric.data_set_id))\n if(filtered.length > 0) {\n //group === this.props.metricType\n if(allchecked ===1){\n if(metric.mas_name === this.props.metricType){\n checked = true\n }else {\n checked = \"\"\n }\n }\n metricsOption.push({\"label\": metric.metric_name, \"value\": metric.metrics_id, \"group\": metric.mas_name, \"checked\":checked})\n }\n }\n }\n }\n });\n\n /// metricsOptions.filter(x=>x.group === this.props.metricType)\n\n return metricsOption\n }\n\n\nexport function getPlaceholder(defaultText, selected, data) {\n if (selected === undefined || selected === null) {\n return \"\";\n }\n\n if (selected.length === 0) {\n return defaultText\n } else if (selected.length > data.length) {\n return \"All selected\"\n } else {\n return selected.length + \" selected\"\n }\n\n}","import React from 'react';\nimport { faLayerGroup, faTag, faCalendar, faDatabase } from '@fortawesome/free-solid-svg-icons';\nimport moment from 'moment';\nimport Form from 'react-bootstrap/Form';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport $ from 'jquery';\nimport {\n DISPLAY_DATE_FORMAT,\n TAB_KEY_MAPPING,\n LIST_VIEW_OPTIONS\n} from '../../utils/constant';\nimport Select, {\n components,\n} from 'react-select';\nimport CustomTreeSelect from '../../components/customTreeSelect';\n\nimport {\n handleSubmit\n} from \"../components/filter_common_utils\";\n\nimport {\n normalizeAttributeName,\n} from \"../../utils/attribute_name_utils\";\n\nconst customSelectDatasource = ({ children, ...props }) => (\n \n \n {children}\n \n\n);\nclass CustomTreeFilter extends React.Component {\n constructor(props) {\n super(props);\n this.handleDatasourceoptions = this.handleDatasourceoptions.bind(this)\n this.handleDatasetsoptions = this.handleDatasetsoptions.bind(this)\n //this.handleAttributeoptions = this.handleAttributeoptions.bind(this)\n this.handleSelectedAttributes = this.handleSelectedAttributes.bind(this)\n this.handleSelectDate = this.handleSelectDate.bind(this);\n this.handleClearAll = this.handleClearAll.bind(this);\n this.loadFilter = this.loadFilter.bind(this)\n this.handleExpand = this.handleExpand.bind(this);\n this.handleExpandAttributes = this.handleExpandAttributes.bind(this);\n this.handleAttributesSelection = this.handleAttributesSelection.bind(this);\n this.handleSubmit = handleSubmit.bind(this);\n this.handleSelectedMetrics = this.handleSelectedMetrics.bind(this);\n \n // let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n // let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n let startDate = moment(this.props.startDate);\n let endDate = moment(this.props.endDate);\n\n this.state = {\n filterData: this.props.data,\n filterDataInitial: this.props.data,\n dateDisplay: startDate.format(DISPLAY_DATE_FORMAT) + ' - ' + endDate.format(DISPLAY_DATE_FORMAT),\n startDate: startDate,\n endDate: endDate,\n attributeOptions: [],\n datasetOptions: [],\n renderDatasetDD: false,\n seletedDatasource: this.props.seletedDatasourceId,\n seletedDatasourceLabel: this.props.seletedDatasourceName,\n filteredDatas: {},\n completeTableData:this.props.completeTableData,\n fullscreenview:this.props.fullscreenview,\n metricsSelectedOptions:this.props.metrics_data,\n }\n }\n handleClearAll() {\n this.props.data[\"parentDatasets\"] = JSON.parse(JSON.stringify(this.props.data[\"parentDatasets\"]).replaceAll(/\"checked\":true/g,'\"checked\":false'));\n this.setState({attributeOptions:[]});\n this.props.clearAllFilterData();\n }\n handleExpand(pmData) {\n let expand = this.state.filterData;\n expand['parentDatasets'] = pmData;\n this.setState({ filterData: expand });\n }\n \n componentDidMount() {\n\n let data = this.state.filterData;\n if(data!==\"\" && data!==undefined && this.state.filterData['datasetsOptions']!==undefined){\n\n let filterIntegrationData = this.state.filterData['datasetsOptions'].filter((data) =>\n (data.integration_id === Number(this.state.seletedDatasource) && data.checked === true)\n ||\n (data.children !== undefined && data.integration_id === Number(this.state.seletedDatasource) )\n )\n \n this.setState({ attributeOptions: [] })\n let mappedAttributes = this.state.filterData['attributesOptions']\n\n let finalList; // = this.state.attributeOptions\n let parentAttribute = []\n\n filterIntegrationData.map((selectedList, i) => {\n if (selectedList.checked === true || selectedList.children !== undefined) {\n /** OR condition is included If only child dataset is seleted */\n let splitLable = selectedList.label.split('( ')\n let loopData = []\n if (i === 0) {\n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\" })\n }\n if(mappedAttributes[selectedList.value]!==undefined){\n let childAttributes = []\n let parentName = null \n if((selectedList.is_child_dataset === undefined || selectedList.is_child_dataset !== true) && selectedList.checked === true){\n parentAttribute.push({ \"label\": splitLable[0], \"disabled\": true })\n let checked = false\n let parentAttributeList = mappedAttributes[selectedList.value]\n parentAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = parentAttributeList.filter((data)=> data.checked === true)\n if(parentAttributeList.length === AllChecked.length){\n /**If all attributes check from parent dataset marked All options as marked on attribute Dropdown */\n checked=true\n } \n \n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\",\"checked\":checked, \"dataset_id\": selectedList.value})\n parentAttribute = parentAttribute.concat(mappedAttributes[selectedList.value]) \n }\n\n if (selectedList.children !== undefined && selectedList.children.length > 0) {\n selectedList.children.map((selectedListchild, j) => {\n if (selectedListchild.checked === true && selectedListchild.value !== \"*\") {\n let checked=false;\n let childAttributeList = mappedAttributes[selectedListchild.value] //.slice(1,mappedAttributes[selectedListchild.value].length)\n childAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = childAttributeList.filter((data)=> data.checked === true)\n if(childAttributeList.length === AllChecked.length){\n /**If all attributes check from child-data set marked child-dataset as marked on attribute Dropdown */\n checked=true\n } \n \n \n let expand=false\n if(AllChecked.length > 0){\n /**Expand the dropdown if anyone of the attribute is selected from the child dataset */\n expand = true\n }\n childAttributes = [{ \"label\": selectedListchild.label, \"value\": selectedListchild.value,\"expanded\":expand, checked:checked, \"children\": childAttributeList }]\n if(parentName === null ){\n parentName = selectedListchild.label.split('$')\n loopData = [{ \"label\": splitLable[0] + \" - Partitions\", \"disabled\": true }]\n parentAttribute = parentAttribute.concat(loopData) \n }\n parentAttribute = parentAttribute.concat(childAttributes)\n return selectedListchild;\n }\n return selectedListchild;\n })\n } \n }\n\n finalList = parentAttribute\n }\n return selectedList;\n }\n )\n this.setState({ attributeOptions: finalList })\n }\n } \n handleExpandAttributes(pmData) {\n let expand = this.state.filterData;\n expand['parentDatasets'] = pmData;\n this.setState({ filterData: expand });\n this.setState({ filterData: expand });\n }\n\n handleSelectDate(event, picker) {\n\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n let customlabel = picker.chosenLabel === \"Custom Range\" ? startDate.format(DISPLAY_DATE_FORMAT) + ' - ' + endDate.format(DISPLAY_DATE_FORMAT) : picker.chosenLabel;\n this.setState({ dateDisplay: customlabel, startDate: startDate, endDate: endDate })\n this.props.applyDateFilter(startDate,endDate,customlabel);\n }\n\n handleDatasourceoptions(key) {\n // this.props.data[\"parentDatasets\"] = JSON.parse(JSON.stringify(this.props.data[\"parentDatasets\"]).replaceAll(/\"checked\":true/g,'\"checked\":false'));\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n let datasourceID = key.value;\n let datasourceName = key.label;\n let loadparams = {\n \"integration_id\": datasourceID,\n \"integration_name\": datasourceName,\n \"tab_type\": TAB_KEY_MAPPING[this.props.tab],\n \"start_date\": this.props.startDate,\n \"end_date\": this.props.endDate\n }\n let tempData = this.state.filterData;\n for(let loop=0;loop \n // data.integration_id === this.state.seletedDatasource && data.checked=== true\n // )\n\n let mappedAttributes = this.state.filterData['attributesOptions']\n let finalList = this.state.attributeOptions\n let data=[]\n let splitLable = selectedList.label.split('( ')\n // if (selectedList.value === \"all\") {\n // for(let child in mappedAttributes){\n // childDatasetList = mappedAttributes[selectedList.value].concat(childDatasetList)\n // this.state.filterData['parentDatasets'].map((data) => {\n // if (data.children !== undefined && data.value === selectedList.value) {\n // finalList.push({ \"label\": splitLable[0], \"disabled\": true })\n // data.children.map((child) => {\n // let childDataset = []\n // childDatasetList.push({ \"label\": child.label, \"disabled\": true })\n // childDataset = [{ \"label\": child.label, \"value\": selectedList.value, \"children\": mappedAttributes[child.value] }]\n // childDatasetList = childDatasetList.concat(childDataset)\n // // finalList.push({\"label\":selectedList.label, \"disabled\": true })\n // })\n\n // finalChild = mappedAttributes[selectedList.value].concat(childDatasetList)\n // }\n // })\n // }\n // return\n //}\n\n if (selectedList.checked === false) {\n finalList = finalList.filter((data) => data.dataset_id !== selectedList.value && data.label !== splitLable[0] && data.label !== selectedList.label)\n }\n else {\n let childDatasetList = []\n let finalChild = mappedAttributes[selectedList.value].concat(childDatasetList)\n // let SelectedDataset = selectedList\n\n if (selectedList._children !== undefined && selectedList._children.length > 0) {\n this.state.filterData['parentDatasets'].map((data) => {\n if (data.children !== undefined && data.value === selectedList.value) {\n finalList.push({ \"label\": splitLable[0], \"disabled\": true })\n data.children.map((child) => {\n let childDataset = []\n childDatasetList.push({ \"label\": child.label, \"disabled\": true })\n childDataset = [{ \"label\": child.label, \"value\": selectedList.value, \"children\": mappedAttributes[child.value] }]\n childDatasetList = childDatasetList.concat(childDataset)\n return child;\n // finalList.push({\"label\":selectedList.label, \"disabled\": true })\n })\n\n finalChild = mappedAttributes[selectedList.value].concat(childDatasetList)\n }\n return data;\n })\n }\n data = [{ \"label\": selectedList.label, \"value\": selectedList.value, \"children\": finalChild }]\n }\n finalList = finalList.concat(data)\n this.setState({ attributeOptions: finalList })\n }*/\n\n handleAttributesSelection(selectedList) {\n this.setState({ attributeOptions: selectedList })\n }\n\n handleSelectedMetrics(selectedList){\n this.setState({ metricsSelectedOptions: selectedList })\n }\n /*\n handleSelectedAttributes(selectedList) {\n\n let data = selectedList;\n let filterIntegrationData = data.filter((data) =>\n parseInt(data.integration_id) === parseInt(this.state.seletedDatasource) && data.checked === true\n )\n // return;\n this.setState({ attributeOptions: [] })\n let childDatasetList = []\n let mappedAttributes = this.state.filterData['attributesOptions']\n let finalList; // = this.state.attributeOptions\n let finalChild = []\n filterIntegrationData.map((selectedList, i) => {\n if (selectedList.checked === true) {\n let splitLable = selectedList.label.split('( ')\n let loopData = []\n if (i === 0) {\n finalChild.push({ \"label\": \"All\", \"value\": \"*\" })\n }\n finalChild.push({ \"label\": splitLable[0], \"disabled\": true })\n finalChild.push({ \"label\": \"All (\" + splitLable[0] + \")\", \"value\": \"*\", \"dataset_id\": selectedList.value,\"checked\":\"\"})\n if(mappedAttributes[selectedList.value]!==undefined){\n finalChild = finalChild.concat(mappedAttributes[selectedList.value])\n }\n let childDataset = []\n if (selectedList.children !== undefined && selectedList.children.length > 0) {\n selectedList.children.map((selectedListchild, j) => {\n if (j === 0) {\n loopData = [{ \"label\": splitLable[0] + \" - Partitions\", \"disabled\": true ,\"checked\":\"\" }]\n }\n if (selectedListchild.checked === true && selectedListchild.value !== \"*\") {\n childDataset = [{ \"label\": selectedListchild.label, \"value\": selectedListchild.value, \"children\": mappedAttributes[selectedListchild.value],\"checked\":\"\" }]\n childDatasetList = childDatasetList.concat(childDataset)\n return selectedListchild;\n }\n return selectedListchild;\n })\n }\n loopData = loopData.concat(childDatasetList)\n finalList = finalChild.concat(loopData)\n }\n return selectedList;\n }\n )\n if(finalList!==undefined){\n finalList = JSON.parse(String(JSON.stringify(finalList)).replace(/\"checked\":true/g, '\"checked\":\"\"'))\n }\n this.setState({ attributeOptions:finalList})\n }*/\n\n handleSelectedAttributes(selectedList, selectedNode=null) {\n let data = selectedList;\n let filterIntegrationData = data.filter((data) =>\n (data.integration_id === Number(this.state.seletedDatasource) && data.checked === true) \n \n ||\n /** OR condition is included If only child dataset is seleted */\n (data.children !== undefined && data.integration_id === Number(this.state.seletedDatasource) )\n )\n // return;\n\n this.setState({ attributeOptions: [] })\n let mappedAttributes = this.state.filterData['attributesOptions']\n let finalList; // = this.state.attributeOptions\n let parentAttribute = []\n filterIntegrationData.map((selectedList, i) => {\n if (selectedList.checked === true || selectedList.children !== undefined) {\n /** OR condition is included If only child dataset is seleted */\n let splitLable = selectedList.label.split('( ')\n let loopData = []\n if (i === 0) {\n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\" })\n }\n if(mappedAttributes[selectedList.value]!==undefined){\n if(selectedList.checked === true){\n parentAttribute.push({ \"label\": splitLable[0], \"disabled\": true })\n let checked = false;\n let parentAttributeList = mappedAttributes[selectedList.value]\n parentAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = parentAttributeList.filter((data)=> data.checked === true)\n if(parentAttributeList.length === AllChecked.length){\n /**If all attributes check from parent dataset marked All options as marked on attribute Dropdown */\n checked=true\n } \n \n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\",\"checked\":checked, \"dataset_id\": selectedList.value})\n parentAttribute = parentAttribute.concat(mappedAttributes[selectedList.value]) \n }\n \n let childAttributes = []\n let parentName = null \n if (selectedList.children !== undefined && selectedList.children.length > 0) {\n selectedList.children.map((selectedListchild, j) => {\n if (selectedListchild.checked === true && selectedListchild.value !== \"*\") {\n let checked=false;\n let childAttributeList = mappedAttributes[selectedListchild.value] //.slice(1,mappedAttributes[selectedListchild.value].length)\n childAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = childAttributeList.filter((data)=> data.checked === true)\n if(childAttributeList.length === AllChecked.length){\n /**If all attributes check from child-data set marked child-dataset as marked on attribute Dropdown */\n checked=true\n } \n \n \n let expand=false\n if(AllChecked.length > 0){\n /**Expand the dropdown if anyone of the attribute is selected from the child dataset */\n expand = true\n }\n\n childAttributes = [{ \"label\": selectedListchild.label, \"value\": selectedListchild.value,\"expanded\":expand, checked:checked, \"children\": childAttributeList }]\n\n if(parentName === null ){\n parentName = selectedListchild.label.split('$')\n loopData = [{ \"label\": splitLable[0] + \" - Partitions\", \"disabled\": true }]\n parentAttribute = parentAttribute.concat(loopData) \n }\n parentAttribute = parentAttribute.concat(childAttributes)\n return selectedListchild;\n }\n return selectedListchild;\n })\n } \n }\n finalList = parentAttribute\n }\n\n return selectedList;\n }\n )\n\n this.setState({ attributeOptions: finalList })\n }\n\n loadFilterFullsceen(pm){\n let obj = {\"datasource\":pm.filterdDatsource,\n \"dataset\":pm.fiteredDatseset,\n \"attribute\":pm.fitlerdAttr,\n \"metrics\":this.state.metricsSelectedOptions,\n \"startdate\":pm.fitlerdDate[0],\n \"enddate\":pm.fitlerdDate[1]\n }\n this.props.applyDataset(obj);\n }\n\n loadFilter(pm) {\n let obj = {\"datasource\":pm.filterdDatsource,\n \"dataset\":pm.fiteredDatseset,\n \"attribute\":pm.fitlerdAttr,\n //\"metrics\":this.state.metricsSelectedOptions,\n \"metrics\":pm.filterMetricsId,\n \"startdate\":pm.fitlerdDate[0],\n \"enddate\":pm.fitlerdDate[1]\n }\n this.props.applyDataset(obj);\n }\n\n handleFocus() {\n // $(\"#chooseDatasourceForDqError\").parent(\".textfield-outlined\").addClass('customselect-active'); \n }\n\n handleBlur() {\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n }\n\n render() {\n\n let data = [];\n if(this.props.data[\"parentDatasets\"]!==undefined){\n data = this.props.data[\"parentDatasets\"].filter((data)=> \n parseInt(data.integration_id) === parseInt(this.props.seletedDatasource) || data.checked === true\n ) \n\n }\n if (data !== undefined) {\n // Dummy \"If block\" code. Added for the purpose to suppress warning\n // This block can be removed if the variable 'data' is used\n }\n\n let attributeOptions = [];\n if(this.state.attributeOptions !== undefined && this.state.attributeOptions.length > 0){\n attributeOptions =this.state.attributeOptions\n }\n\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n \n return (\n <>\n
    \n
    \n
    \n
    Data Relationship Filter
    \n \n
    \n
    \n
    \n
    \n Datasource\n \n {/* */}\n
    \n {this.props.showDatasets === true ?\n
    \n Datasets\n \n
    : \"\" }\n {this.props.showAttributes === true ?\n
    \n Attributes\n \n
    : \"\"}\n {this.props.showMetrics === true ?\n
    \n Metrics\n \n
    : \"\"\n }\n \n \n \n \n \n \n {this.state.dateDisplay}\n {/* {this.state.endDate.format(DISPLAY_DATE_FORMAT)+' - '+ this.state.startDate.format(DISPLAY_DATE_FORMAT)} */}\n \n \n \n {this.props.showAttributesCheckbox === true ?\n
    \n \n Show Attributes\n
    : \"\" } \n {this.props.showErrorsOnlyCheckbox === true ?\n
    \n \n Show Errors Only\n
    : \"\" }\n \n \n
    \n
    \n
    \n
    \n {/*
    */}\n {this.props.viewOptions === true || this.props.showErrorCheckbox === true || this.props.showParitionCheckbox ?\n
    \n {this.props.viewOptions === true ?\n
    \n
    \n \n
    \n
    \n option.disabled}\n onChange={this.props.changeGroup}\n />\n
    \n
    : \"\"}\n {this.props.showErrorCheckbox === true ?\n : \"\" }\n {this.props.showParitionCheckbox === true ?\n : \"\"\n }\n
    : \"\"}\n \n {/*
    */}\n \n );\n }\n}\nexport default CustomTreeFilter;","import { ui_service_ip } from \"./ip_details\";\n// import moment from 'moment';\n// import {\n// METRIC_SCALE_MAPPING,\n// // metricCategory, \n// // metricMapping \n// } from \"../utils/constant\"\nimport { call_post_api, call_get_api } from \"./event_handling\"\nimport { normalizeChildDatasetName } from \"../utils/attribute_name_utils\";\n\nimport { extractDatasetInfoForMonitorListView, getMonitorTabDQPListViewTableData } from \"./common_utils\"\n// import store from \"../redux/store\";\n\nexport function getDateObject(timeStr) {\n let dateObj;\n let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (isSafari) {\n dateObj = new Date(timeStr.replace(/\\s/, 'T'));\n } else {\n dateObj = new Date(timeStr);\n }\n return dateObj;\n}\n\n// let teamID = localStorage.getItem('team_id')\nexport function formDatasetsList(datasets) {\n let childDatasets = []\n let parentDatasets = []\n let child = {}\n let childDatasetMap = []\n parentDatasets.push({ \"integration_id\": \"-1\", \"label\": \"All\", \"value\": \"*\" })\n datasets.map((data) => {\n if (data.is_child_dataset === true) {\n data['label'] = normalizeChildDatasetName(data.label)\n childDatasets.push(data)\n if (child[data.parent_data_set_id] === undefined) {\n child[data.parent_data_set_id] = [{\n \"label\": \"All\", \"value\": \"*\",\n is_child_dataset: true,\n parent_data_set_id: data.parent_data_set_id\n }]\n }\n child[data.parent_data_set_id].push(data)\n if (childDatasetMap[data.parent_data_set_id] === undefined) {\n childDatasetMap[data.parent_data_set_id] = []\n }\n childDatasetMap[data.parent_data_set_id] = child[data.parent_data_set_id].concat(data)\n\n\n }\n else {\n parentDatasets.push(data)\n }\n return data;\n })\n let finalList = []\n parentDatasets.map((data) => {\n if (child[String(data.value)] !== undefined) {\n let partitionsLength = child[String(data.value)].length - 1\n data['label'] = data.label + '( ' + String(partitionsLength) + ' Partitions)'\n data['children'] = child[String(data.value)]\n finalList.push(data)\n }\n else {\n finalList.push(data)\n }\n return data;\n }\n )\n finalList = { \"childDatasetMap\": child, \"parentDatasets\": finalList }\n return finalList\n}\n\nexport function formAttributesDict(attributes) {\n let finalDict = {}\n attributes.map((data) => {\n let id = data.dataset_id === undefined ? data.data_set_id : data.dataset_id\n if (finalDict[id] === undefined) {\n finalDict[id] = []\n }\n data['dataset_id'] = id\n finalDict[id].push(data)\n return data;\n })\n return finalDict\n}\n\nexport function getMappedMetadatas() {\n\n call_get_api(ui_service_ip, \"metadata/mapping/latest\", { \"tenant_id\": localStorage.getItem('team_id') }).then(\n (result) => {\n let mappedDatasetInfo = extractDatasetInfoForMonitorListView(result.meta_data);\n this.setState({ metaData: mappedDatasetInfo, mappedDatasetInfo: mappedDatasetInfo, showLoader: false })\n\n let endPoint = \"follow_attributes\";\n call_get_api(ui_service_ip, endPoint, { \"tenant_id\": localStorage.getItem('team_id') }).then(\n (result) => {\n if (result !== undefined && result !== null) {\n this.setState({ follow_attributes: result.follow_attributes })\n }\n }\n );\n\n }\n )\n}\n\nexport function getFollowAttributes() {\n let endPoint = \"follow_attributes\";\n call_get_api(ui_service_ip, endPoint, { \"tenant_id\": localStorage.getItem('team_id') }).then(\n (result) => {\n if (result !== undefined && result !== null) {\n this.setState({ follow_attributes: result.follow_attributes })\n }\n }\n );\n}\n\n// export function getMetricsInfo() {\n// const endPoint = \"alert_applicable_metrics\";\n// call_get_api(ui_service_ip, endPoint,{\"tenant_id\":localStorage.getItem('team_id')}).then(\n// (result) => {\n// if (result === undefined || result === null) {\n// // const error = `Unable to fetch metadata details for tenant: ${tenantID}`;\n// // postUIlogs(error);\n// return;\n// }\n// let metadataDetails = result.metadata_details\n// this.setState({metrics_info:metadataDetails})\n// }\n// );\n// }\n\n\nexport function getMetaDatas() {\n let endPoint = \"metadata_mapping\";\n let data = { \"tenant_id\": localStorage.getItem('team_id') }\n let api2 = false\n\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null && result.data !== undefined) {\n let filterData = {}\n filterData[\"environmentOptions\"] = result.data['environments']\n filterData[\"datasourceOptions\"] = result.data['integrations']\n filterData[\"datasetsOptions\"] = result.data['datasets']\n filterData[\"attributesOptions\"] = result.data['attributes']\n let childDatasets = []\n\n\n // TODO Need to append values in existingList without this iteration\n let existingList = []\n result.data['environments'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n result.data['integrations'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n result.data['datasets'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n result.data['attributes'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n this.setState({ existingList: existingList })\n // TODO Need to append values in existingList without this iteration\n\n if(result.data['integrations'].length === 1){\n // Checking the In-progress status for the First Configured Datasource\n const teamId = localStorage.getItem('team_id');\n let data = {\"tenant_id\":teamId, \"integration_id\": result.data['integrations'][0].value}\n let endPoint = \"dataset_progress_info\";\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n api2 = true\n this.setState({progressStatus: response[\"progress_percentage\"]});\n }\n if(response[\"progress_percentage\"] !== 100){\n this.setState({inProgress:true, showLoader:false, noDataFound:false})\n }\n else{\n this.setState({inProgress:false, showLoader:false})\n }\n });\n }\n else if (result.data['integrations'].length === 0){\n api2=true\n this.setState({noDataFound:true, noIntegration: true})\n }\n else{\n api2=true\n this.setState({selectedDataSourceID :result.data['integrations'][0]['value'] ,inProgress:false, noDataFound:false})\n }\n\n for (let level in result.data) {\n // eslint-disable-next-line\n result.data[level].filter((data) => {\n if (data.is_child_dataset !== undefined && data.is_child_dataset === true) {\n childDatasets.push(data.value)\n }\n return data;\n })\n }\n let datasets = result.data['datasets']\n\n let formDatasetOption = formDatasetsList(datasets)\n let attributesList = filterData[\"attributesOptions\"]\n let formAttributeOption = formAttributesDict(attributesList)\n\n let integrationMapping = {};\n result.data['integrations'].map((data) => {\n integrationMapping[data.value] = \"\"\n integrationMapping[data.value] = data.label\n return null\n }\n )\n\n filterData[\"childDatasets\"] = childDatasets\n filterData[\"childDatasetMap\"] = formDatasetOption['childDatasetMap']\n filterData[\"parentDatasets\"] = formDatasetOption['parentDatasets']\n filterData[\"attributesOptions\"] = formAttributeOption\n\n call_get_api(ui_service_ip, \"metadata/mapping/latest\", { \"tenant_id\": localStorage.getItem('team_id') }).then(\n (result) => {\n let metaData = result.meta_data\n let mappedDatasetInfo = extractDatasetInfoForMonitorListView(metaData);\n\n let endPoint = \"follow_attributes\";\n call_get_api(ui_service_ip, endPoint, { \"tenant_id\": localStorage.getItem('team_id') }).then(\n (result) => {\n if (result !== undefined && result !== null) {\n \n let showLoader = true\n if(api2 === true){\n showLoader = false\n }\n\n this.setState({\n metaData: metaData,\n mappedDatasetInfo: mappedDatasetInfo,\n showLoader: showLoader,\n follow_attributes: result.follow_attributes,\n initialData: { \"value\": filterData, \"label\": \"tempvalue\" },\n filterData: filterData,\n integrationMapping: integrationMapping,\n pre_load:false\n })\n }\n }\n );\n\n }\n )\n\n }\n }\n );\n}\n\n// export function getLastProcessing(pmtype, integrationid = \"\") {\n// const tenantId = localStorage.getItem('team_id');\n// let endPoint = \"metrics_store_payload_created_time\";\n// let data = { \"tenant_id\": tenantId }\n\n// call_get_api(ui_service_ip, endPoint, data).then((response) => {\n// if (response !== undefined && response.code === 200) {\n// let results = response[\"results\"];\n// let maxLastProfilingTime = results.reduce((a, b) => Number(getDateObject(results[a])) > Number(getDateObject(results[b])) ? a : b);\n// }\n// }\n// )\n// }\n\n/*function numAvg(num) {\n var total = 0;\n for (var i = 0; i < num.length; i++) {\n total += num[i];\n }\n return total / num.length;\n}*/\n\n\n\n\nexport function getMonitorInfo(\n tenantData, addTimelinessDataSetInfo, addRecencyPreview, integrationId = null, store) {\n let apiReqData = tenantData;\n let selectedDataSourceID = integrationId\n let selectedDataSourceName = \"Choose Datasource\"\n if (integrationId !== null) {\n apiReqData[\"integration_id\"] = integrationId;\n selectedDataSourceName = this.props.integrationMapping[integrationId]\n\n }\n else{\n selectedDataSourceID = -1\n }\n\n let monitorModuleProps = {}\n getRecencyInfo(tenantData, store, addTimelinessDataSetInfo, addRecencyPreview);\n\n\n call_post_api(ui_service_ip, `monitor/info`, apiReqData).then(\n (result) => {\n if (result !== undefined && result !== null) {\n if (result.results !== undefined) {\n let integrationId = result.results[0].integration_id\n monitorModuleProps = formMonitorChartData(result.results);\n const tenantId = localStorage.getItem('team_id');\n let endPoint = \"metrics_store_payload_created_time\";\n let data = { \"tenant_id\": tenantId, \"integration_id\": integrationId}\n let last_processed_time=null;\n call_get_api(ui_service_ip, endPoint, data).then((response) => {\n if (response !== undefined && response.code === 200) {\n let results = response[\"results\"];\n last_processed_time = results[0].last_processed_time\n // let maxLastProfilingTime = results.reduce((a, b) => Number(getDateObject(results[a])) > Number(getDateObject(results[b])) ? a : b);\n selectedDataSourceName = this.props.integrationMapping[integrationId]\n this.setState({\n monitorModuleProps: monitorModuleProps,\n selectedDataSrc:{'value':String(integrationId), 'label':selectedDataSourceName},\n last_processed_time:last_processed_time,\n selectedDataSourceID:selectedDataSourceID,\n showLoader:false,\n noIntegration: false,\n noDataFound : false,\n inProgress:false\n }) \n }\n }\n ) \n }\n else if (result.message === 'Result not found') {\n const teamId = localStorage.getItem('team_id');\n let data = {\"tenant_id\":teamId, \"integration_id\": integrationId}\n let endPoint = \"dataset_progress_info\";\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n this.setState({progressStatus: response[\"progress_percentage\"]});\n }\n if(response[\"progress_percentage\"] !== 100){\n this.setState({ \n showLoader: false, \n inProgress: true, \n selectedDataSourceID:selectedDataSourceID,\n selectedDataSrc:{'value':String(selectedDataSourceID), 'label':selectedDataSourceName},\n })\n }\n else{\n this.setState({ \n noIntegration: false, \n showLoader: false, \n inProgress: false, \n selectedDataSourceID:selectedDataSourceID,\n selectedDataSrc:{'value':String(selectedDataSourceID), 'label':selectedDataSourceName},\n })\n\n }\n });\n }\n else{\n this.setState({ showLoader: false, noIntegration: true, selectedDataSourceID:selectedDataSourceID })\n }\n }\n else{\n this.setState({ showLoader: false, noIntegration: true, selectedDataSourceID:selectedDataSourceID })\n }\n }\n );\n }\n\nfunction getRecencyInfo(tenantData, store, addTimelinessDataSetInfo, addRecencyPreview) {\n let endPoint = \"recency/all\";\n let reData = { \"tenant_id\": tenantData.tenant_id, \"type\": \"monitor_chart\" };\n call_get_api(ui_service_ip, endPoint, reData).then(\n (recencyResult) => {\n if (recencyResult !== undefined && recencyResult !== null) {\n if (recencyResult.code === 200) {\n let recencyData = recencyResult.monitor_others;\n let recencyPreviewData = recencyResult.preview_res;\n if (recencyData !== undefined && recencyData !== null) {\n let chartData = recencyData.data;\n // if (store !== undefined) {\n // store.dispatch(addTimelinessDataSetInfo(chartData))\n // store.dispatch(addRecencyPreview(recencyPreviewData))\n // } else {\n addTimelinessDataSetInfo(chartData)\n addRecencyPreview(recencyPreviewData)\n // }\n }\n }\n }\n }\n );\n }\n \nfunction formMonitorChartData(data) {\n // let chartData = {}\n\n\n let metricList = [\n 'drift_dq_attribute',\n 'drift_dq_dataset',\n\n 'completeness_dq_attribute',\n 'completeness_dq_dataset',\n\n 'uniqueness_dq_attribute',\n 'uniqueness_dq_dataset',\n\n 'accuracy_dq_attribute',\n 'accuracy_dq_dataset',\n\n 'consistency_dq_dataset',\n 'consistency_dq_attribute',\n\n 'conformity_dq_dataset',\n 'conformity_dq_attribute',\n\n 'ml_attribute',\n 'ml_dataset',\n 'preview',\n\n ]\n\n let completenessDataSetInfo = {}\n let completenessAttributeInfo = {}\n\n let conformityDataSetInfo = {}\n let conformityAttributeInfo = {}\n\n let accuracyDataSetInfo = {}\n let accuracyAttributeInfo = {}\n\n let uniquenessDataSetInfo = {}\n let uniquenessAttributeInfo = {}\n\n let driftDataSetInfo = {}\n let driftAttributeInfo = {}\n\n let consistencyDataSetInfo = {}\n let consistencyAttributeInfo = {}\n\n let monitorPreview = {}\n let mlDatasetInfo = {}\n let mlAttributeInfo = {}\n\n let filterPreviewData = data.filter((data) => data.type === 'preview' && data.payload !== undefined && Object.keys(data.payload).length !== 0)\n monitorPreview['dq_metrics'] = filterPreviewData[0]['payload']['dq_metrics']\n monitorPreview['dqpreview'] = filterPreviewData[0]['payload']['dq_metrics']\n monitorPreview['ml_model'] = filterPreviewData[0]['payload']['ml_model']\n monitorPreview['mlPreview'] = filterPreviewData[0]['payload']['ml_model']\n\n // Filter out Null data\n let filterData = data.filter((data) => metricList.includes(data.type) && data.payload.data !== undefined && Object.keys(data.payload.data).length !== 0)\n\n for (let metric of metricList) {\n \n filterData.filter((data) => data.type === metric && data.payload.data !== undefined && Object.keys(data.payload.data).length !== 0 &&\n // eslint-disable-next-line \n Object.keys(data.payload.data).map((key) => {\n // eslint-disable-next-line\n Object.keys(data.payload.data[key]).map((value) => {\n if (metric === 'drift_dq_dataset') {\n if (driftDataSetInfo[key] === undefined) {\n driftDataSetInfo[key] = {}\n driftDataSetInfo[key][value] = data.payload.data[key][value]\n\n }\n else {\n driftDataSetInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'drift_dq_attribute') {\n if (driftAttributeInfo[key] === undefined) {\n driftAttributeInfo[key] = {}\n driftAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n driftAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n if (metric === 'uniqueness_dq_dataset') {\n if (uniquenessDataSetInfo[key] === undefined) {\n uniquenessDataSetInfo[key] = {}\n uniquenessDataSetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n uniquenessDataSetInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'uniqueness_dq_attribute') {\n if (uniquenessAttributeInfo[key] === undefined) {\n uniquenessAttributeInfo[key] = {}\n uniquenessAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n uniquenessAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'completeness_dq_attribute') {\n if (completenessAttributeInfo[key] === undefined) {\n completenessAttributeInfo[key] = {}\n completenessAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n completenessAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'completeness_dq_dataset') {\n if (completenessDataSetInfo[key] === undefined) {\n completenessDataSetInfo[key] = {}\n completenessDataSetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n completenessDataSetInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'accuracy_dq_dataset') {\n if (accuracyDataSetInfo[key] === undefined) {\n accuracyDataSetInfo[key] = {}\n accuracyDataSetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n accuracyDataSetInfo[key][value] = data.payload.data[key][value]\n }\n }\n if (metric === 'accuracy_dq_attribute') {\n if (accuracyAttributeInfo[key] === undefined) {\n accuracyAttributeInfo[key] = {}\n accuracyAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n accuracyAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'conformity_dq_dataset') {\n if (conformityDataSetInfo[key] === undefined) {\n conformityDataSetInfo[key] = {}\n conformityDataSetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n conformityDataSetInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'conformity_dq_attribute') {\n if (conformityAttributeInfo[key] === undefined) {\n conformityAttributeInfo[key] = {}\n conformityAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n conformityAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'consistency_dq_dataset') {\n if (consistencyDataSetInfo[key] === undefined) {\n consistencyDataSetInfo[key] = {}\n consistencyDataSetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n consistencyDataSetInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'consistency_dq_attribute') {\n if (consistencyAttributeInfo[key] === undefined) {\n consistencyAttributeInfo[key] = {}\n consistencyAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n consistencyAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'ml_dataset') {\n if (mlDatasetInfo[key] === undefined) {\n mlDatasetInfo[key] = {}\n mlDatasetInfo[key][value] = data.payload.data[key][value]\n }\n else {\n mlDatasetInfo[key][value] = data.payload.data[key][value]\n }\n }\n else if (metric === 'ml_attribute') {\n if (mlAttributeInfo[key] === undefined) {\n mlAttributeInfo[key] = {}\n mlAttributeInfo[key][value] = data.payload.data[key][value]\n }\n else {\n mlAttributeInfo[key][value] = data.payload.data[key][value]\n }\n }\n })\n }\n ))\n }\n\n // if (integrationId !== 'none') {\n // this.propsprefetchMonitorState(integrationId)\n // }\n\n let monitorModuleProps = {\n \"accuracyAttributeInfo\": accuracyAttributeInfo,\n \"accuracyDataSetInfo\": accuracyDataSetInfo,\n \"consistencyDataSetInfo\": consistencyDataSetInfo,\n \"consistencyAttributeInfo\": consistencyAttributeInfo,\n \"conformityDataSetInfo\": conformityDataSetInfo,\n \"conformityAttributeInfo\": conformityAttributeInfo,\n \"completenessAttributeInfo\": completenessAttributeInfo,\n \"completenessDataSetInfo\": completenessDataSetInfo,\n \"driftAttributeInfo\": driftAttributeInfo,\n \"driftDataSetInfo\": driftDataSetInfo,\n \"mlAttributeInfo\": mlAttributeInfo,\n \"mlDataSetInfo\": mlDatasetInfo,\n \"monitorPreview\": monitorPreview,\n \"uniquenessAttributeInfo\": uniquenessAttributeInfo,\n \"uniquenessDataSetInfo\": uniquenessDataSetInfo,\n \"dqPreview\": monitorPreview,\n \"MonitorPreview\": monitorPreview\n }\n return monitorModuleProps\n}\n\nexport function getMonitorListViewData(tenantData, addMonitorDQListViewData, integrationId = null, store, retries = 3) {\n let endPoint = \"monitor_list_view\";\n let data = { \"tenant_id\": tenantData, \"res_type\": \"dq\" }\n let selectedDataSourceID = integrationId\n let selectedDataSourceName = \"Choose Datasource\"\n if (integrationId !== null) {\n data[\"integration_id\"] = integrationId;\n selectedDataSourceName = this.props.integrationMapping[integrationId]\n }\n else{\n selectedDataSourceID =- 1\n }\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null && result.list_view_data !== null) {\n let endPoint = \"recency/all\";\n let reData = { \"tenant_id\": tenantData, \"type\": \"monitor_list\" };\n let integrationId = result.integration_id\n selectedDataSourceName = this.props.integrationMapping[integrationId]\n\n call_get_api(ui_service_ip, endPoint, reData).then(\n (recencyResult) => {\n if (recencyResult !== undefined && recencyResult.message === \"Successfully fetched\") {\n let recencyProfileResult = recencyResult.monitor_list_view;\n recencyProfileResult[\"isRecency\"] = true;\n if (store !== undefined) {\n store.dispatch(addMonitorDQListViewData(recencyProfileResult));\n } else {\n addMonitorDQListViewData(recencyProfileResult);\n }\n }\n }\n );\n\n let list_view_data = result.list_view_data;\n if(result.integration_id !== undefined && result.integration_id !== null ){\n selectedDataSourceID = result.integration_id\n }\n list_view_data[\"apiFetchOver\"] = true;\n\n if (integrationId === undefined || integrationId === null) {\n this.setState({ showLoader: false, noIntegration: true, selectedDataSourceID : selectedDataSourceID})\n }\n else {\n this.setState({ noIntegration: false, selectedDataSourceID : selectedDataSourceID })\n let datasets = []\n integrationId = String(integrationId)\n for (const [key, value] of Object.entries(this.props.mappedDatasetInfo[\"idDatasetDetail\"])) {\n if (value[\"dataSourceId\"] === integrationId) {\n datasets.push({ \"label\": normalizeChildDatasetName(value[\"datasetName\"]), \"value\": key });\n }\n }\n\n let last_processed_time = null;\n if(result.last_processed_time !== undefined && result.last_processed_time !== null){\n last_processed_time = result.last_processed_time\n }\n let defaultDataSourceOption = { \"value\": integrationId, \"label\": this.props.dataModule.integrations[integrationId] }\n const reqTableData = getMonitorTabDQPListViewTableData(this.state.mappedDatasetInfo, list_view_data, this.props.monitorModule.follow_attributes, this.props.timelinessData);\n const listViewTableData = reqTableData.tableData;\n this.setState({\n keyData: `dqListView_${listViewTableData.length}`,\n monitorDQListView: list_view_data,\n currListViewTableData: listViewTableData, completeTableData: listViewTableData, listViewTableData: listViewTableData,\n defaultDatasourceInside: defaultDataSourceOption,\n selectedDataSource: defaultDataSourceOption,\n selectedDataSourceID: selectedDataSourceID,\n selectedDataSourceName: selectedDataSourceName,\n datasets: datasets,\n last_processed_time:last_processed_time,\n noDataFound : false,\n inProgress: false,\n noIntegration:false\n\n })\n this.setState({ showLoader: false })\n }\n }\n else if (result.list_view_data === undefined || result.list_view_data === null) {\n let integrationId = null\n let last_processed_time = null\n let noIntegration = true\n\n if(result.integration_name !== null && result.integration_name !== undefined ){\n this.setState({ selectedDataSourceName:result.integration_name})\n }\n else if(result.integration_id !== undefined && result.integration_id !== null){\n selectedDataSourceName = this.props.integrationMapping[integrationId]\n this.setState({ selectedDataSourceName:selectedDataSourceName})\n }\n else{\n this.setState({ selectedDataSourceName:selectedDataSourceName})\n }\n \n if(result.last_processed_time !== undefined && result.last_processed_time !== null){\n last_processed_time = result.last_processed_time\n noIntegration = false\n }\n if( result.list_view_data === null) {\n const teamId = localStorage.getItem('team_id');\n let data = {\"tenant_id\":teamId, \"integration_id\": integrationId}\n let endPoint = \"dataset_progress_info\";\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n this.setState({progressStatus: response[\"progress_percentage\"]});\n }\n if(response[\"progress_percentage\"] !== 100){\n this.setState({ noIntegration:noIntegration, last_processed_time:last_processed_time, inProgress: true, currListViewTableData:[], selectedDataSourceID: selectedDataSourceID, showLoader: false })\n }\n else{\n this.setState({ noIntegration:noIntegration, last_processed_time:last_processed_time, inProgress: false, currListViewTableData:[],selectedDataSourceID: selectedDataSourceID, showLoader: false })\n }\n });\n }\n }\n else {\n if (retries > 0) {\n getMonitorListViewData(tenantData, addMonitorDQListViewData, store, retries - 1)\n }\n }\n }\n );\n}\n","import React from 'react';\nimport Image from '../components/image';\nimport ChartFilterHeader from './components/chartFilterHeader';\nimport _ from 'lodash';\n// import AdvancedFilterDq from './components/advanced_filter_dq';\nimport NoErrorComponent from \"./components/monitorNoResult\";\nimport {\n getChartType,\n convertDecimalDigits,\n filterBoxPlotData,\n getRowCountContributionFromData, convertDataForListView, getChartFilterData\n} from \"../utils/common_utils\";\nimport Load from '../components/loadAction';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport moment from \"moment\";\nimport {\n NO_ERROR_CHART_COLORS,\n LIGHT_COLOR_MAP,\n SINGLE_ARROW_CHART_TYPE,\n GENERIC_CONSTANTS,\n FEATURE_DRIFT_ALIASES,\n MAX_DATA_POINTS_FOR_LIST_VIEW,\n NON_ERROR_DRIFT_PATTERNS\n} from \"../utils/constant\";\nimport {getDateObject} from \"../charts/browser_utils\";\nimport { normalizeAttributeName, normalizeChildDatasetName } from '../utils/attribute_name_utils';\nimport {faChartArea} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport CustomTreeFilter from './components/customTreeFilter';\nimport { getMetricsOption} from \"./components/filter_common_utils\";\nimport { getMonitorListViewData} from \"../utils/monitorEventHandling\";\n// import { addFollowAttributes, addMonitorDQListViewData} from \"../redux/actions\";\nclass DqErrorFullScreen extends React.Component {\n\n constructor(props) {\n super(props);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.renderGroup = this.renderGroup.bind(this);\n this.updateFullScreenData = this.updateFullScreenData.bind(this);\n this.changeGroup = this.changeGroup.bind(this);\n this.fullscreenapplyDataset = this.fullscreenapplyDataset.bind(this);\n this.changeShowErrors = this.changeShowErrors.bind(this);\n this.changePartitions = this.changePartitions.bind(this);\n this.getMetricsOption = getMetricsOption.bind(this);\n this.fetchDataSource = this.fetchDataSource.bind(this);\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this)\n this.applyFilter = this.applyFilter.bind(this)\n this.getFetchMonitorListViewData = getMonitorListViewData.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this);\n this.applyDateFilter = this.applyDateFilter.bind(this);\n\n this.state={\n idValue: this.props.title,\n tempFullScreenData: null,\n // tempFullScreenDataAttribute: null,\n fullScreen: \"fade\",\n isAdvancedFilterApplied: false,\n startDateInside: null,\n endDateInside: null,\n showFullScreen: false,\n showErrorsOnly: true,\n variant: this.props.variant,\n fullScreenData: null,\n showDatasets: null,\n metrics_data:this.props.metrics_data,\n selectedGroup:this.props.selectedGroup,\n showpartitions:true,\n showerrors:true,\n // metrics_data:[],\n intial_datasource_id:\"\",\n intial_datasource_name:\"\",\n intial_dataset_Id:[],\n intial_attribute_Id:[],\n initial: {\n datasource: \"\",\n dataset: \"\",\n attribute: \"\",\n },\n showLoader:false,\n applied_dataset:[],\n applied_attribute:[],\n applied_metrics:[],\n applied_start_date:'',\n applied_end_date:'',\n applied_dataset_level:this.props.isDatasetLevel,\n tempFullScreenDataAttribute:Object.values(this.props.fullScreenAttributeData),\n clearAllFilter:false,\n dateDisplay:\"\",\n intial_datasource:[],\n intial_datset:[],\n intial_attribute:[]\n }\n }\n\n setFullScreen() {\n document.body.classList.add(\"overflow-hidden\");\n this.setState({showFullScreen : true, fullScreen: \"show\"});\n }\n\n renderAttributeCharts(attributeData) {\n attributeData = attributeData === \"\" ? this.state.tempFullScreenDataAttribute : attributeData;\n let displayNumber = 0\n return attributeData.map((chartData, index) => {\n let chart_data_value = Object.values(chartData)\n if(chart_data_value.length === 0) {\n return \"\"\n }\n let chartDataValue = chart_data_value[0]\n let datasetName = chartDataValue.datasetName !== undefined ? chartDataValue.datasetName : this.props.datasetName\n let datasourceName = chartDataValue.datasourceName !== undefined ? chartDataValue.datasourceName : this.props.datasourceName\n let convertedData = convertDataForListView(chartData, datasetName, datasourceName)\n let attributeName = chartDataValue.attribute_name\n\n displayNumber = displayNumber + 1\n return (\n
    \n
    \n {displayNumber === 1 ?\n

    \n\n {\"Attribute Level Charts\"}\n

    \n : \"\"\n }\n

    \n \n {displayNumber}\n \n {normalizeAttributeName(attributeName)}\n

    \n

    \n {\"\"}\n

    \n\n
    \n
    \n
    \n { this.renderModalChart(\"Attribute\", convertedData) }\n
    \n
    \n
    \n );\n\n });\n }\n\n updateFullScreenData(data, attributeData, startDate, endDate, showErrorsOnly,showDatasets){\n\n this.setState({tempFullScreenData: data,\n tempFullScreenDataAttribute: attributeData,\n isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied,\n startDateInside: startDate,\n endDateInside: endDate,\n showErrorsOnly: showErrorsOnly,\n showDatasets:showDatasets})\n }\n componentDidMount() {\n let selectedDataSet = {label:this.props.defaultDatasetInside[0].label,value:this.props.defaultDatasetInside[0].value}\n\n let datsetid = [];\n let attribute = [];\n for(let loop=0;loop 0 && this.props.defaultAttributeInside === undefined && this.props.filterData[\"attributesOptions\"][this.props.defaultDatasetInside[0].value] !== undefined){\n for(let loop=0;loop {\n let convertedData;\n let attributeData;\n let datasetName = normalizeChildDatasetName(this.props.datasetName);\n let datasourceName = this.props.datasourceName;\n if(Object.values(chartData) === undefined || Object.values(chartData).length === 0){\n attributeData = [];\n convertedData = [];\n return null\n }\n else{\n datasetName = Object.values(chartData)[0].datasetName !== undefined ? normalizeChildDatasetName(Object.values(chartData)[0].datasetName) : normalizeChildDatasetName(this.props.datasetName)\n datasourceName = Object.values(chartData)[0].datasourceName !== undefined ? Object.values(chartData)[0].datasourceName : this.props.datasourceName\n convertedData = convertDataForListView(chartData, datasetName, datasourceName)\n attributeData = Object.values(this.props.fullScreenAttributeData)\n if(this.state.tempFullScreenDataAttribute !== null) {\n let datasetId = datasetKeys[index]\n attributeData = Object.values(this.state.tempFullScreenDataAttribute)\n if(attributeData.length > 0) {\n if(this.state.tempFullScreenDataAttribute[datasetId]!==undefined){\n attributeData = Object.values(this.state.tempFullScreenDataAttribute[datasetId])\n } \n }\n }\n }\n\n\n return (\n <>\n {this.props.lastProfilingTime !== null && this.props.lastProfilingTime !== undefined ?
    \n

    \n {`Your data last profiled at ${this.props.lastProfilingTime}`}\n \n

    \n
    \n :\n \"\"\n }\n {this.state.applied_dataset_level !== null && this.state.applied_dataset_level === false \n ?\n ''\n :\n
    \n
    \n

    \n \n {1}\n \n {\"Dataset Level Charts - \"} {datasetName}\n

    \n

    \n {\"\"}\n

    \n\n
    \n
    \n
    \n { this.renderModalChart(\"Dataset\", convertedData) }\n
    \n
    \n
    \n }\n {\n this.state.selectedGroup.value === \"all\" || this.state.selectedGroup.value === 'attributes' ?\n this.renderAttributeCharts(attributeData) : \"\"\n } \n );\n });\n }\n\n renderModalChart(chartLevel, chartDataList) {\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let chartCount = 0;\n\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j = 1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n chartDataList = Object.values(chartDataList)\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n let dataSetId = chartData[\"datasetId\"]\n // commenting here, because we combinely fetch recency data along with other metrics\n // if (chartData[\"name\"] === \"Recency\") {\n // let timelinessData = this.props.timelinessData.DefaultDataSet[0]\n // if(timelinessData === undefined || timelinessData.data === undefined) {\n // return \"\";\n // }\n\n // if(dataSetId === undefined) {\n // chartData = this.props.filteredTimeliness[0]\n // } else{\n // let chartDataFiltered = timelinessData.data.filter(x=>Number(x.data_set_id) === Number(dataSetId))\n // if(chartDataFiltered.length > 0) {\n // chartData = chartDataFiltered[0]\n // }\n // }\n // }\n if(chartData === undefined) {\n return \"\"\n }\n let lastDiv = (chartDataList.length === index + 1 && chartCount === 0)\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n chartData[\"dq_chart_points\"] = convertDecimalDigits(chartData[\"dq_chart_points\"])\n const attribute_name = chartData.attribute_name;\n if (this.state.showErrorsOnly) {\n if (chartData[\"hasDrift\"] === false && lastDiv === true) {\n return ();\n }\n if (chartData[\"hasDrift\"] === false) {\n return \"\";\n }\n }\n if ( chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\") ) {\n\n let id = null;\n let aggregateOptions = null;\n\n id = chartData[\"data_set_id\"];\n\n let key = `modal_${chartData.name}_${id}`;\n let title = this.props.title !== undefined ? this.props.title: '';\n let compareDatasetOptions = null\n let compareType =null;\n let compareAttributeOptions = null;\n let idValue = ''\n let showAggregateError = false;\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function(d) { return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== chartData.name ||\n d.data_set_id !== chartData.data_set_id); });\n }\n if (chartLevel === \"Dataset\") {\n \n if(chartData[\"name\"] === \"Unique Values\"){\n chartData[\"name\"] = \"Unique Rows\"\n }\n\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function(d) { return (d.value === chartData[\"data_set_id\"] || d.type !== chartData.name) });\n }\n\n title = title.replace(\" \", \"_\");\n\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n const chartPatternType = chartData[\"type\"];\n if (chartLevel === \"Dataset\") {\n if (NON_ERROR_DRIFT_PATTERNS.includes(chartPatternType)) {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (NON_ERROR_DRIFT_PATTERNS.includes(chartPatternType)) {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n }\n if(chartData[\"dq_chart_points\"].length === 0) {\n return \"\"\n }\n\n if (chartData[\"name\"] === \"Data Drift\") {\n let isBoxplot = chartData[\"boxplot_data\"].filter(x=>x !== \"NA\")\n if(isBoxplot.length > 0){\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n if (chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartType = \"boxPlotZoomable\";\n }\n }\n }\n let filteredData = null;\n let propsStartDate = this.state.startDateInside === null ? this.props.startDate : this.state.startDateInside\n let propsEndDate = this.state.endDateInside === null ? this.props.endDate : this.state.endDateInside\n let timeFilterApplied = true;\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, false, false, MAX_DATA_POINTS_FOR_LIST_VIEW);\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n const timeValStr = timeVals[0];\n propsStartDate = moment(getDateObject(timeValStr));\n }\n }\n\n\n return (\n
    \n }>\n \n \n
    \n\n );\n }\n return '';\n });\n }\n }\n\n loadDataSourceRender(selectedDataSource){\n \n }\n\n loadDataSourceRender1(selectedDataSource){\n \n this.setState({showLoader:true});\n let selectedDataSourceobj = {\"label\":selectedDataSource.integration_name,\"value\":selectedDataSource.integration_id}\n this.setState({ showLoader: true,clearAllFilter: false})\n let selectedDataSourceID = selectedDataSource.integration_id;\n let initial = this.state.initial\n initial.datasource = selectedDataSourceID\n //let filteredRows = [];\n /*\n for (let rowData of this.state.currListViewTableData) {\n if (rowData[4].dataSourceId === selectedDataSourceID) {\n filteredRows.push(rowData);\n }\n }\n let datasets = []\n for (const [key, value] of Object.entries(this.props.mappedDatasetInfo[\"idDatasetDetail\"])) {\n if (value[\"dataSourceId\"] === selectedDataSourceID) {\n datasets.push({ \"label\": normalizeChildDatasetName(value[\"datasetName\"]), \"value\": key });\n }\n }\n let lastProfilingTimeData = this.props.dataModule.lastProfilingTime[selectedDataSourceID]\n */\n this.setState({\n selectedDatasource: selectedDataSourceobj,\n selectedDataSourceID: selectedDataSource.integration_id,\n selectedDataSourceName:selectedDataSource.integration_name,\n // lastProfilingTimeData: lastProfilingTimeData,\n // initial: initial\n });\n this.fetchDataSource(selectedDataSource.integration_id, 'dqp_list_view')\n }\n\n applyFilter(){\n\n let datasetLevelData = this.props.allData.dataset_level_data\n // let attributeLevelData = this.props.allData.attribute_level_data\n let datasourceName = this.props.seletedDatasourceName;\n let newData = {}\n let newDataAttribute = {}\n let check = 0;\n\n // return;\n \n for (let i=0; i \n parseInt(data.value) === parseInt(datasetId)\n ).length;\n\n if(filteredDataset !== undefined) {\n let metricundfisedcheck = false; \n for (let i=0; i 0 ){\n if(this.state.showpartitions === false){\n if(check > 0 ){\n if(this.state.selectedGroup.value !== \"attributes\"){\n newData[datasetId] = {}\n }\n }\n }else {\n if(this.state.selectedGroup.value !== \"attributes\"){\n newData[datasetId] = {}\n }\n }\n \n for (let i=0; i 0 ){\n if(newData[datasetId]!==undefined){\n if(this.state.selectedGroup.value !== \"attributes\"){\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n }\n }\n }\n }else {\n if(newData[datasetId]!==undefined){\n if(this.state.showpartitions === false){\n if(check > 0 ){\n if(this.state.selectedGroup.value !== \"attributes\"){\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n }\n }}else {\n if(this.state.selectedGroup.value !== \"attributes\"){\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n }\n }\n }\n }\n \n }\n }\n }\n }\n // let filteredAttributeData = attributeLevelData[datasetId]\n // let filteredAttribute = {}\n if(this.state.showpartitions === false){\n if(check > 0 ){\n newDataAttribute[datasetId] = {}\n }\n }else {\n newDataAttribute[datasetId] = {}\n }\n\n /* for(let i=0;i 0 ){\n if(this.state.selectedGroup.value !== \"datasets\"){\n newDataAttribute[datasetId][attributeId] = {}\n }\n } \n }else {\n\n if(this.state.selectedGroup.value !== \"datasets\"){\n newDataAttribute[datasetId][attributeId] = {}\n }\n } \n for (let i=0; i 0 ){\n if(this.state.selectedGroup.value !== \"datasets\"){\n newDataAttribute[datasetId][attributeId][metricsId] = filteredMetricsAttributes\n newDataAttribute[datasetId][attributeId][metricsId][\"datasetName\"] = datasetName.toString()\n newDataAttribute[datasetId][attributeId][metricsId][\"datasourceName\"] = datasourceName\n newDataAttribute[datasetId][attributeId][metricsId][\"attributeId\"] = attributeId\n }\n }\n }else {\n if(this.state.selectedGroup.value !== \"datasets\"){\n newDataAttribute[datasetId][attributeId][metricsId] = filteredMetricsAttributes\n newDataAttribute[datasetId][attributeId][metricsId][\"datasetName\"] = datasetName.toString()\n newDataAttribute[datasetId][attributeId][metricsId][\"datasourceName\"] = datasourceName\n newDataAttribute[datasetId][attributeId][metricsId][\"attributeId\"] = attributeId\n }\n } \n }\n }\n }\n }\n } */\n }\n }\n this.updateFullScreenData(newData, newDataAttribute, this.state.startDate, this.state.endDate, this.state.showerrors,this.state.showDatasets);\n }\n\n fetchDataSource(value = null, tab = null) {\n let teamID = localStorage.getItem('team_id')\n let integrationId = value\n if(this.state.selectedDataSourceID !== Number(integrationId)){\n this.getFetchMonitorListViewData(teamID, this.props.addMonitorDQListViewData, integrationId);\n this.setState({showLoader:true})\n }\n }\n\n fullscreenapplyDataset(pm){\n this.setState({\"applied_dataset\":pm.dataset,\n \"applied_attribute\":pm.attribute,\n \"applied_metrics\":pm.metrics,\n \"applied_start_date\":pm.startdate,\n \"applied_end_date\": pm.enddate\n })\n \n let datasetLevelData = this.props.allData.dataset_level_data\n let attributeLevelData = this.props.allData.attribute_level_data\n let datasourceName = this.props.seletedDatasourceName;\n let newData = {}\n let newDataAttribute = {}\n let check = 0;\n for (let i=0; i \n parseInt(data.value) === parseInt(datasetId)\n ).length;\n\n if(filteredDataset !== undefined) {\n let metricundfisedcheck = false; \n for (let i=0; i 0 ){\n if(this.state.showpartitions === false){\n if(check > 0 ){\n newData[datasetId] = {}\n \n }\n }else {\n newData[datasetId] = {}\n }\n \n for (let i=0; i 0 ){\n if(newData[datasetId]!==undefined){\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n }\n }\n }else {\n if(newData[datasetId]!==undefined){\n if(this.state.showpartitions === false){\n if(check > 0 ){\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n \n }}else {\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n \n }\n }\n }\n \n }\n }\n }\n }\n // if(!this.state.showAttributes) {\n // continue\n // }\n let filteredAttributeData = attributeLevelData[datasetId]\n let filteredAttribute = {}\n if(this.state.showpartitions === false){\n if(check > 0 ){\n newDataAttribute[datasetId] = {}\n }\n }else {\n newDataAttribute[datasetId] = {}\n }\n\n\n\n for(let i=0;i 0 ){\n newDataAttribute[datasetId][attributeId] = {}\n \n } \n }else {\n\n newDataAttribute[datasetId][attributeId] = {}\n \n } \n for (let i=0; i 0 ){\n newDataAttribute[datasetId][attributeId][metricsId] = filteredMetricsAttributes\n newDataAttribute[datasetId][attributeId][metricsId][\"datasetName\"] = datasetName.toString()\n newDataAttribute[datasetId][attributeId][metricsId][\"datasourceName\"] = datasourceName\n newDataAttribute[datasetId][attributeId][metricsId][\"attributeId\"] = attributeId\n \n }\n }else {\n newDataAttribute[datasetId][attributeId][metricsId] = filteredMetricsAttributes\n newDataAttribute[datasetId][attributeId][metricsId][\"datasetName\"] = datasetName.toString()\n newDataAttribute[datasetId][attributeId][metricsId][\"datasourceName\"] = datasourceName\n newDataAttribute[datasetId][attributeId][metricsId][\"attributeId\"] = attributeId\n \n } \n }\n }\n }\n }\n }\n }\n }\n }\n this.updateFullScreenData(newData, newDataAttribute, pm.startdate, pm.enddate, this.state.showerrors,this.state.showDatasets);\n }\n\n applyDateFilter(pmStartDate,pmEndDate,pmDateDisplay) {\n this.setState({ applied_start_date:pmStartDate,\n applied_end_date:pmEndDate}, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n dateDisplay:pmDateDisplay\n }\n this.fullscreenapplyDataset(obj);\n });\n }\n\n clearAllFilterData() {\n if(this.props.filterData!==\"\"){\n for (let i = 0; i < this.props.filterData[\"datasetsOptions\"].length; i++) {\n this.props.filterData[\"datasetsOptions\"][i][\"checked\"]=\"\"\n }\n }\n let metrics_data;\n if(this.state.metrics_data!==\"\"){\n metrics_data = this.state.metrics_data;\n for (let i = 0; i < metrics_data.length; i++) {\n metrics_data[i][\"checked\"]=\"\"\n }\n }\n\n this.setState({\n metrics_data:metrics_data,\n clearAllFilter:true,\n applied_dataset:[],\n applied_attribute:[],\n applied_metrics:[],\n })\n }\n\n changePartitions(){\n this.setState({ showpartitions:!this.state.showpartitions }, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n }\n this.fullscreenapplyDataset(obj);\n });\n }\n\n changeShowErrors(){\n this.setState({ showerrors: !this.state.showerrors }, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n }\n this.fullscreenapplyDataset(obj);\n });\n }\n changeGroup(selectedOption) {\n let dataset_level = this.state.applied_dataset_level;\n if(selectedOption.value===\"attributes\"){\n dataset_level = false\n }else {\n dataset_level = true\n }\n this.setState({ selectedGroup:selectedOption,applied_dataset_level:dataset_level}, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n }\n this.fullscreenapplyDataset(obj);\n });\n } \n render() {\n let attributeData = Object.values(this.props.fullScreenAttributeData)\n\n let selectedMetricsCount = null\n let selectedMetrics = null\n if (this.state.metrics_data !== undefined){\n selectedMetrics = this.state.metrics_data.filter((data) => data.checked === true)\n selectedMetricsCount = selectedMetrics.length\n if (this.state.selectedGroup.label === \"Attribute Only\" && selectedMetrics !== null && selectedMetrics.length !== 0){\n let row_count_recency = selectedMetrics.filter((data) => data.label === 'Row Count' || data.label === 'Recency')\n selectedMetricsCount = selectedMetricsCount-row_count_recency.length\n }\n }\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    \n {this.props.title}\n

    \n
    \n
    \n {/* */}\n \n
    \n
    \n
    \n
    \n
    \n {this.state.intial_datasource_id.length > 0 ?\n : \"\" }\n {this.state.showLoader === true ? : \"\" }\n {(this.props.isDatasetLevel === true || this.state.tempFullScreenData !== null) && this.state.showLoader===false ? this.renderGroup() : \"\"}\n {(this.state.tempFullScreenData === null && this.props.isDatasetLevel === false) && this.state.showLoader===false ? this.renderAttributeCharts(attributeData) : \"\"}\n {(this.state.tempFullScreenData !== null && this.state.showLoader===false) ? Object.keys(this.state.tempFullScreenData).length === 0 && this.state.showLoader===false ? \n <>\n

    \n

    No Error found for the selected metric

    \n
    \n \n : \"\" : \"\" }\n {selectedMetricsCount === 0 ?\n

    \n

    Please Select a metric

    \n
    \n : \"\"}\n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\nexport default DqErrorFullScreen;\n\n","import React from 'react';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck, faPlus, faTimes} from \"@fortawesome/free-solid-svg-icons\";\nimport {updateFollowAttributeStatus} from \"../../utils/event_handling\";\n\nclass FollowComponent extends React.Component {\n\n constructor(props) {\n super(props);\n this.updateFollowAttributeStatus = updateFollowAttributeStatus.bind(this);\n let follow_attribute_details = this.props.follow_attribute_details\n let followStatus = follow_attribute_details[\"follow_status\"]\n let followClassName = followStatus ? \"follow-btn mr-3 following\" : \"follow-btn mr-3\"\n\n this.state = {\n followClassName: followClassName,\n followStatus: followStatus,\n isHovered: false,\n follow_attribute_details: follow_attribute_details,\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if(props.follow_attribute_details !== state.follow_attribute_details){\n return{\n follow_attribute_details:props.follow_attribute_details\n }\n }\n \n return null;\n }\n\n componentWillUnmount(){\n this.setState({isHovered:false})\n }\n\n handleHoverEntry(){\n this.setState({isHovered: true});\n }\n\n handleHoverExit(){\n this.setState({isHovered: false});\n }\n\n handleFollowButton(){\n let className = this.state.followClassName === \"follow-btn mr-3\" ? \"follow-btn mr-3 following\" : \"follow-btn mr-3\";\n let followStatus = !this.state.followStatus\n this.setState({followClassName: className, followStatus: followStatus});\n let follow_attribute_details = this.props.follow_attribute_details\n let follow_attributes = this.props.follow_attributes\n let dataSourceId = follow_attribute_details[\"dataSourceId\"]\n let attributeId = follow_attribute_details[\"attributeId\"]\n follow_attributes[dataSourceId][attributeId] = followStatus\n let data = {\"integration_id\": dataSourceId, \"attribute_id\": attributeId, \"follow_status\": followStatus}\n this.updateFollowAttributeStatus(data);\n // this.props.updateFollowAttributes(follow_attributes);\n }\n\n render(){\n return(
    \n \n \n \n

    {this.state.followStatus ? (this.state.isHovered ? \"Unfollow\" : \"Following\") : \"Follow\"}
    Attribute

    \n
    )\n\n\n }\n\n\n}\n\nexport default FollowComponent;","import React from 'react';\nimport ChartBody from \"../../components/chartBody\";\nimport moment from \"moment\";\nimport _ from 'lodash';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faChartArea} from \"@fortawesome/free-solid-svg-icons\";\nimport {formatNumber} from \"../../utils/common_utils\";\n\n\nclass ThumbnailChartList extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n let startDate = moment().startOf(\"day\");\n this.state = {\n startData: startDate\n }\n\n this.getHorizontalSection = this.getHorizontalSection.bind(this);\n this.renderSingleThumbnailChart = this.renderSingleThumbnailChart.bind(this);\n }\n\n getClassInfoForChartStatistics(valueList, metricName) {\n let classDataForUp = {\n \"classForNumber\": \"perform up\",\n \"classForStrongElement\": \"text-green\"\n }\n let classDataForDown = {\n \"classForNumber\": \"perform down\",\n \"classForStrongElement\": \"text-danger\"\n }\n let classDataForNoChange = {\n \"classForNumber\": \"\",\n \"classForStrongElement\": \"\"\n }\n\n const valLength = valueList.length;\n if (valLength === 0) {\n return classDataForNoChange;\n }\n\n if (valLength === 1) {\n return classDataForNoChange\n }\n let valueIncreaseMetrics = [\"Fill Rate\", \"Row Count\", \"Uniqueness\"]\n let isPositive = valueIncreaseMetrics.includes(metricName) || this.props.isModel\n\n let latestValue = valueList[valLength - 1];\n let secondLatestValue = valueList[valLength - 2];\n let isValueDecreases = latestValue < secondLatestValue;\n let isValueIncreases = latestValue > secondLatestValue\n if (isValueDecreases && isPositive) {\n classDataForDown.classForNumber = \"perform down\"\n return classDataForDown;\n }else if(isValueDecreases && !isPositive){\n classDataForUp.classForNumber = \"perform pve-down\"\n return classDataForUp;\n }else if(isValueIncreases && isPositive){\n classDataForUp.classForNumber = \"perform up\"\n return classDataForUp;\n }else if(isValueIncreases && !isPositive) {\n classDataForDown.classForNumber = \"perform nve-up\"\n return classDataForDown;\n }else {\n return classDataForNoChange;\n }\n\n }\n\n renderSingleThumbnailChart(singleChartData) {\n if(singleChartData.hasDrift === false) {\n return\n }else if((singleChartData.chart_level === \"dataset\" || singleChartData.chart_level === \"combined\") && singleChartData.chartTitle === \"mean_shap_value\"){\n return\n }\n let metricName = singleChartData.name;\n let nSingleChartData = _.cloneDeep(singleChartData);\n const chartVals = nSingleChartData.chartData.values;\n const Y2_Values = nSingleChartData.chartData.Y2_Values;\n let firstNumberStrongClass = \"\";\n\n let firstNumClass;\n let firstNumber;\n /**Suffix can be added if required */\n // let sufix = METRIC_SCALE_MAPPING[nSingleChartData.name]\n \n let sufix = \"\"\n\n if (Array.isArray(chartVals[chartVals.length - 1])) {\n firstNumber = '';\n firstNumClass = \"\";\n } else {\n let classData = this.getClassInfoForChartStatistics(chartVals, metricName);\n firstNumber = chartVals[chartVals.length - 1]\n if (firstNumber % 1 !== 0) {\n firstNumber = firstNumber.toFixed(1)\n firstNumber = formatNumber(firstNumber)\n firstNumber = String(firstNumber)+sufix\n }\n else {\n firstNumber = formatNumber(firstNumber)\n firstNumber = String(firstNumber)+sufix\n }\n firstNumClass = classData.classForNumber;\n firstNumberStrongClass = classData.classForStrongElement;\n }\n\n let secondNumberStrongClass;\n let secondNumber;\n let secondNumberClass;\n let showSecondNumber = Y2_Values !== undefined && Y2_Values !== null;\n if (showSecondNumber) {\n secondNumber = Y2_Values[Y2_Values.length - 1]\n if (secondNumber % 1 !== 0) {\n secondNumber = String(secondNumber.toFixed(1))+sufix\n }\n else {\n secondNumber = String(secondNumber)+sufix\n }\n let classData = this.getClassInfoForChartStatistics(Y2_Values, metricName);\n secondNumberClass = classData.classForNumber;\n secondNumberStrongClass = classData.classForStrongElement;\n }\n\n if(singleChartData[\"errorList\"] !== undefined) {\n singleChartData[\"chartData\"][\"errorList\"] = nSingleChartData[\"errorList\"]\n }\n if(singleChartData.drift_patterns !== undefined) {\n singleChartData[\"chartData\"][\"drift_patterns\"] = nSingleChartData[\"drift_patterns\"]\n }\n \n if(singleChartData.name === \"Unique Values\" && singleChartData.attribute_name === undefined ){\n // Updating Uniqueness metric label for dataset level. \n singleChartData[\"name\"] = \"Unique Rows\"\n }\n\n return (\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n {firstNumber}\n \n \n
    \n {\n showSecondNumber ?\n
    \n \n {secondNumber}\n \n \n
    \n :\n \"\"\n }\n\n
    \n
    \n
    \n );\n }\n\n getHorizontalSection(sectionData) {\n let sectionName = sectionData.name;\n if(sectionName === \"Model Explainability\"){\n return \"\"\n }\n let sectionKey = sectionData.key;\n\n if (sectionData.data.length === 0) {\n return (
    \n

    \n \n

    \n {this.props.noModelConfigured === true ? \"Model not configured\" : (this.props.noDataAvailable === true ? \"No Charts Found\": \"No Errors Found\")}\n
    );\n }\n\n return (\n
    \n
    {sectionName}
    \n
    \n \n {\n sectionData.data.map(_d => this.renderSingleThumbnailChart(_d))\n }\n\n
    \n \n \n );\n }\n\n render() {\n let allHorizontalSections = this.props.listData;\n return (\n allHorizontalSections.length > 0 ? allHorizontalSections.map(x => this.getHorizontalSection(x)) :
    \n

    \n \n

    \n

    \n {this.props.noModelConfigured === true ? \"Model not configured\" : (this.props.noDataAvailable === true ? \"Dataset not available\": \"No chart found\")}\n

    \n
    \n )\n }\n}\n\nexport default ThumbnailChartList;","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Select from \"react-select\";\n\nconst CustomSelect = props => {\n if (props.allowSelectAll) {\n let allOption = {\"label\": \"All\", \"value\": \"*\"}\n let options = []\n if(props.name === \"attribute\") {\n options = props.originalAttributeOptions\n }else {\n options = props.options\n }\n\n if (options === undefined || options === null) {\n options = [];\n }\n return (\n 0 ? [props.allOption, ...props.options] : []}\n className=\"qd_nested-multiselect\"\n onChange={(selected, event) => {\n if (selected !== null && selected.length > 0) {\n if (selected[selected.length - 1].value === allOption.value) {\n return props.onChange([props.allOption, ...options]);\n }\n let result = [];\n if (selected.length === options.length) {\n if (selected.includes(props.allOption)) {\n result = selected.filter(\n option => option.value !== props.allOption.value\n );\n\n } else if (event.action === \"select-option\") {\n result = [props.allOption, ...options];\n }\n\n\n return props.onChange(result);\n }\n }\n\n\n\n return props.onChange(selected);\n }}\n />\n );\n }\n\n return ;\n};\n\nCustomSelectNestedCheckbox.propTypes = {\n options: PropTypes.array,\n value: PropTypes.any,\n onChange: PropTypes.func,\n allowSelectAll: PropTypes.bool,\n allOption: PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string\n })\n};\n\nCustomSelectNestedCheckbox.defaultProps = {\n allOption: {\n label: \"All\",\n value: \"*\",\n type: \"*\"\n }\n};\n\nexport default CustomSelectNestedCheckbox;","import React from 'react';\nimport Select from \"react-select\";\nimport BasicPortlet from \"../components/basicPortlet\";\nimport QualdoDataTable from \"../components/bootstrapTable\";\nimport { DISPLAY_DATE_FORMAT, MONITOR_DQP_LIST_VIEW_HEADERS, IS_NONE_CHECK } from \"../utils/constant\";\nimport { getDefaultDateRangeOptions } from \"../utils/common_utils\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendar, faArrowRight, faChartArea, faInfoCircle, faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport moment from \"moment\";\nimport DqpErrorFullScreen from \"./dqpErrorFullScreen\";\nimport { connect } from \"react-redux\";\nimport ThumbnailChartList from \"./components/thumbnailChartList\";\nimport CustomSelect from \"./components/customSelect\";\nimport _ from 'lodash';\nimport Load from '../components/loadAction';\nimport RcTooltip from 'rc-tooltip';\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport Image from '../components/image';\nimport Form from 'react-bootstrap/Form';\nimport { Button } from \"react-bootstrap\";\nimport {\n Option, changeDataSourceAdvanced, handleTime, handleChangeDataset, changeAttribute,\n handleSubmit, handleCheckClick, getPlaceholder\n} from \"./components/filter_common_utils\";\nimport FollowComponent from \"./components/followComponent\"\nimport { addFollowAttributes, addMonitorDQListViewData } from \"../redux/actions\";\n\nimport $ from 'jquery';\nimport ReactDOM from 'react-dom';\nimport AttributeNameComp from \"../components/tableCellComponents/attributeNameComp\";\nimport { normalizeChildDatasetName } from '../utils/attribute_name_utils';\n// import AttributeTreeSelect from \"../components/attributeTreeSelect\"\n\nimport {\n getMonitorListViewData,\n} from \"../utils/monitorEventHandling\";\nimport CustomTreeFilter from './components/customTreeFilter';\nimport { getMetricsOption } from \"./components/filter_common_utils\";\nimport { LIST_VIEW_OPTIONS } from \"../utils/constant\";\n\nlet selected_Group;\n\nclass DqpListViewContent extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n\n this.getDQListTableComponents = this.getDQListTableComponents.bind(this);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.getFilteredData = this.getFilteredData.bind(this);\n this.changeDataSource = this.changeDataSource.bind(this);\n this.handleTime = handleTime.bind(this);\n this.changeAttribute = changeAttribute.bind(this);\n this.handleCheckClick = handleCheckClick.bind(this);\n this.handleSubmit = handleSubmit.bind(this);\n this.handleChangeDataset = handleChangeDataset.bind(this);\n this.changeDataSourceAdvanced = changeDataSourceAdvanced.bind(this);\n this.changeDataset = this.changeDataset.bind(this);\n this.closeFullScreenMode = this.closeFullScreenMode.bind(this);\n this.handleDQListViewTimeFilter = this.handleDQListViewTimeFilter.bind(this);\n this.getCustomClassForActions = this.getCustomClassForActions.bind(this);\n this.getPlaceholder = getPlaceholder.bind(this);\n this.changeGroup = this.changeGroup.bind(this);\n\n this.fetchDataSource = this.fetchDataSource.bind(this)\n this.getMonitorListViewData = getMonitorListViewData.bind(this)\n // New Filter \n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this)\n this.applyDataset = this.applyDataset.bind(this)\n this.applyDateFilter = this.applyDateFilter.bind(this)\n this.toggleFilter = this.toggleFilter.bind(this)\n this.getMetricsOption = getMetricsOption.bind(this);\n this.changePartitions = this.changePartitions.bind(this);\n this.changeGroup = this.changeGroup.bind(this);\n this.updateFollowAttributes = this.updateFollowAttributes.bind(this)\n\n\n // this.onTreeChange = this.onTreeChange.bind(this);\n let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n // eslint-disable-next-line\n const metaDataMapping = this.props.metaData;\n // const monitorDQListViewData = this.state.monitorDQListView;\n // let showLoader = true;\n // if (monitorDQListViewData === undefined || monitorDQListViewData === null) {\n // showLoader = true;\n // } else {\n // showLoader = !monitorDQListViewData.apiFetchOver;\n // }\n\n // let metricsList = this.props.monitorModule.metrics;\n\n\n\n let mappedDatasetInfo = this.props.mappedDatasetInfo\n // eslint-disable-next-line\n // eslint-disable-next-line\n let timelinessData = this.props.timelinessData\n\n this.state = {\n selectedDataSet: [],\n selectedDataSourceID: null,\n isInFullScreenMode: false,\n startDate: startDate,\n endDate: endDate,\n selectedDatasource: null,\n datasets: [],\n selectedGroup: null,\n showAttributes: true,\n attributeOptions: [],\n originalAttributeOptions: [],\n selectedAttributes: [],\n fullScreenClassVal: \"\",\n listViewTableData: [],\n currListViewTableData: [],\n dataFilteredValues: [],\n completeTableData: {},\n defaultDatasourceInside: null,\n defaultDatasetInside:null,\n lastProfilingTimeData: null,\n timeFilterApplied: false,\n fullScreenData: null,\n fullScreenAttributeData: null,\n keyData: 'dqListView_0',\n initial: {\n datasource: \"\",\n dataset: \"\",\n attribute: \"\",\n },\n\n showLoader: true,\n mappedDatasetInfo: mappedDatasetInfo,\n monitorDQListView: {},\n selectedDataSourceName: \"\",\n clearAllFilter: false,\n isFilterMode: true,\n showpartitions: true,\n follow_attributes: this.props.follow_attributes,\n // timelinessData:timelinessData,\n inital_filter_data : [],\n inital_dataset:[],\n inital_attibute:[],\n last_processed_time:null,\n noIntegration: this.props.noIntegration,\n inProgress: null,\n noDataFound: this.props.noDataFound,\n\n }\n }\n\n onTreeChange = (currentAttributeId, isSelected) => {\n let prevSelections = this.state.selectedAttributes;\n\n if (isSelected) {\n // Add current id to selection\n prevSelections.push({ \"label\": currentAttributeId, \"value\": currentAttributeId });\n } else {\n // Remove the current entry from list\n prevSelections = prevSelections.filter(x => x.value !== currentAttributeId);\n }\n\n this.setState({ selectedAttributes: prevSelections });\n };\n\n\n assignObjectPaths = (obj, stack) => {\n Object.keys(obj).forEach(k => {\n const node = obj[k];\n if (typeof node === \"object\") {\n node.path = stack ? `${stack}.${k}` : k;\n this.assignObjectPaths(node, node.path);\n }\n });\n };\n\n setFullScreen(selectedOption) {\n let selectedDatasetlist = this.props.filterData[\"parentDatasets\"].filter((data)=> \n ((parseInt(data.integration_id) === parseInt(this.state.selectedDataSourceID) || data.value !== \"*\") && data.checked === true)\n ) \n\n let id = selectedOption.value\n let level = selectedOption.level\n let datasourceName = selectedOption.dataSourceName\n let datasetName = selectedOption.datasetName\n let dataSourceId = selectedOption.dataSourceId\n\n let lastProfilingTime = selectedOption.lastProfilingTime\n let defaultDatasourceInside = { \"label\": datasourceName, \"value\": dataSourceId }\n let defaultDatasetInside = { \"label\": datasetName, \"value\": id }\n if (level === \"dataset\") {\n let datasetLevelData = this.state.monitorDQListView.dataset_level_data\n let filteredData = datasetLevelData[id.toString()]\n let attributeLevelData = this.state.monitorDQListView.attribute_level_data\n let filteredAttributeData = attributeLevelData[id.toString()]\n let filteredTimeliness = []\n let filteredTimelinessData = this.props.timelinessData.DefaultDataSet[0]\n if (filteredTimelinessData !== undefined) {\n filteredTimeliness = filteredTimelinessData.data.filter(x => x.data_set_id === id)\n }\n let fullScreenData = {}\n fullScreenData[id] = filteredData\n this.setState({\n fullScreenClassKey: \"show\",\n isInFullScreenMode: true,\n isDatasetLevel: true,\n datasetName: datasetName,\n filteredTimeliness: filteredTimeliness,\n lastProfilingTime: lastProfilingTime,\n datasourceName: datasourceName,\n defaultDatasetInside: defaultDatasetInside,\n defaultDatasourceInside: defaultDatasourceInside,\n fullScreenData: fullScreenData,\n fullScreenAttributeData: filteredAttributeData,\n selectedGroup: { \"label\": \"Dataset + Attribute\", \"value\": \"all\" },\n inital_filter_data:this.props.filterData,\n inital_dataset:selectedDatasetlist,\n inital_attibute:this.props.filterData[\"attributesOptions\"]\n \n })\n } else {\n let attributeLevelData = this.state.monitorDQListView.attribute_level_data\n let filteredAttributeData = attributeLevelData[id.toString()]\n let attributeId = selectedOption.attributeId\n let attributeName = selectedOption.attributeName\n let finalFilteredData = { attributeId: filteredAttributeData[attributeId] }\n let defaultAttributeInside = { \"label\": attributeName, \"value\": attributeId }\n this.setState({\n fullScreenClassKey: \"show\",\n isInFullScreenMode: true,\n isDatasetLevel: false,\n datasetName: datasetName,\n datasourceName: datasourceName,\n defaultDatasourceInside: defaultDatasourceInside,\n defaultDatasetInside: defaultDatasetInside,\n defaultAttributeInside: defaultAttributeInside,\n fullScreenAttributeData: finalFilteredData,\n selectedGroup: { \"label\": \"Attribute Only\", \"value\": \"attributes\" },\n inital_filter_data:this.props.filterData,\n inital_dataset:String(JSON.stringify(this.props.filterData[\"parentDatasets\"])),\n inital_attibute:String(JSON.stringify(this.props.filterData[\"attributesOptions\"]))\n })\n }\n\n }\n changePartitions() {\n \n let filteredRows = [];\n for (let rowData of this.state.currListViewTableData) {\n let check = this.props.filterData.parentDatasets.filter((data) =>\n parseInt(data.value) === parseInt(rowData[4].value)\n ).length;\n\n if (this.state.showpartitions) {\n if (check > 0) {\n filteredRows.push(rowData);\n }\n }\n else {\n filteredRows.push(rowData);\n }\n\n }\n this.setState({\n dataFilteredValues: filteredRows,\n showpartitions: !this.state.showpartitions\n });\n // this.setState({showpartitions:!this.state.showpartitions}, function() {\n //});\n }\n clearAllFilterData() {\n this.setState({ filterData: this.props.filterData, clearAllFilter: true })\n }\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n componentDidMount() {\n if(this.props.default_filter_data.datasource!==undefined && this.props.default_filter_data.datasource > 0 ){\n \n this.setState({\n seletedDatasourceId:this.props.default_filter_data.datasource,\n seletedDatasourceName:this.props.default_filter_data.datasourcename,\n startDate: this.props.default_filter_data.start_date !==undefined ? this.props.default_filter_data.start_date : this.state.startDate,\n endDate: this.props.default_filter_data.end_date !==undefined ? this.props.default_filter_data.end_date : this.state.endDate ,\n timeFilterApplied: true\n }, function() {\n this.fetchDataSource(this.props.default_filter_data.datasource, 'dqp_list_view')\n });\n }else {\n this.fetchDataSource(); \n }\n setTimeout(\n () => {\n $(window).scroll(function (e) {\n $('.loading-thumb-graph').each(function () {\n let pos = $(this).offset(),\n wX = $(window).scrollLeft(), wY = $(window).scrollTop(),\n wH = $(window).height(), wW = $(window).width(),\n oH = $(this).outerHeight(), oW = $(this).outerWidth();\n let index = $(this).data(\"value\");\n let loadid = $(this).data(\"id\");\n // check the edges\n if (pos.left >= wX && pos.top >= wY &&\n oW + pos.left <= wX + wW && oH + pos.top <= wY + wH) {\n\n ReactDOM.render(\n , document.getElementById(loadid));\n $(this).removeClass(\"loading-thumb-graph\")\n }\n else\n if (((pos.left <= wX && pos.left + oW > wX) ||\n (pos.left >= wX && pos.left <= wX + wW)) &&\n ((pos.top <= wY && pos.top + oH > wY) ||\n (pos.top >= wY && pos.top <= wY + wH))) {\n const loadidElement = document.getElementById(\"loadid\")\n if (loadidElement) {\n ReactDOM.render(\n , document.getElementById(loadid));\n $(this).removeClass(\"loading-thumb-graph\")\n }\n\n }\n })\n\n });\n },\n 500\n );\n }\n\n changeDataset(selectedDataSet) {\n let filteredRows = [];\n let lastProfilingTimeData = null;\n let initial = this.state.initial\n\n for (let rowData of this.state.currListViewTableData) {\n let filteredDataset = selectedDataSet.filter(x => x.value === rowData[4].value)\n if (filteredDataset.length > 0) {\n initial.dataset = filteredDataset[0].value\n let lastProfilingTime = rowData[1][\"lastProfilingTime\"]\n if (lastProfilingTime !== undefined) {\n lastProfilingTimeData = lastProfilingTime\n }\n filteredRows.push(rowData);\n }\n }\n\n this.setState({\n dataFilteredValues: filteredRows,\n lastProfilingTimeData: lastProfilingTimeData,\n initial: initial\n });\n this.handleChangeDataset(selectedDataSet);\n\n }\n\n fetchDataSource(value = null, tab = null) {\n let teamID = localStorage.getItem('team_id')\n // let tenantData = { \"tenant_id\": teamID };\n let integrationId = value\n if (tab === 'dqp_list_view') {\n if (this.state.selectedDataSourceID !== Number(integrationId)) {\n this.getMonitorListViewData(teamID, this.props.addMonitorDQListViewData, integrationId);\n }\n else{\n this.setState({ showLoader: false })\n }\n }\n else {\n this.getMonitorListViewData(teamID, this.props.addMonitorDQListViewData);\n // this.setState({ showLoader: true })\n }\n }\n\n applyDataset(pm) {\n\n if (this.state.showpartitions === false) {\n let restrictchilddataset = [];\n for(let loop=0; loop\n parseInt(data.value) === parseInt(pm.dataset[loop].value)\n ).length;\n if (check > 0) {\n restrictchilddataset.push(pm.dataset[loop]);\n }\n }\n pm.dataset = restrictchilddataset;\n }\n\n let obj = {\n \"datasource\": pm.datasource,\n \"dataset\": pm.dataset,\n \"attribute\": pm.attribute\n }\n this.setState({ selectedDataSet: pm.dataset, selectedAttributes: pm.attribute }, function () {\n this.handleSubmit(obj);\n });\n }\n\n applyDateFilter(start_date, end_date) {\n let obj = {\n \"datasource\":this.state.selectedDataSourceID,\n \"datasourcename\":this.state.selectedDataSourceName,\n \"start_date\":start_date,\n \"end_date\":end_date,\n }\n this.props.setCustomFilterValues(obj);\n let picker = { startDate: start_date, endDate: end_date };\n let event = \"\";\n this.handleDQListViewTimeFilter(event, picker);\n }\n\n // handleDQListViewTimeFilter(event, picker)\n\n loadDataSourceRender(selectedDataSource) {\n\n /// this.props.filterData = this.props.filterDataInitial\n\n // return;\n let obj = {\n \"datasource\": selectedDataSource.integration_id,\n \"datasourcename\":selectedDataSource.integration_name,\n \"start_date\": this.state.startDate,\n \"end_date\": this.state.endDate,\n }\n this.props.setCustomFilterValues(obj);\n\n let selectedDataSourceobj = { \"label\": selectedDataSource.integration_name, \"value\": selectedDataSource.integration_id }\n this.setState({ showLoader: true, clearAllFilter: false })\n let selectedDataSourceID = selectedDataSource.integration_id;\n let initial = this.state.initial\n initial.datasource = selectedDataSourceID\n let filteredRows = [];\n for (let rowData of this.state.currListViewTableData) {\n if (rowData[4].dataSourceId === selectedDataSourceID) {\n filteredRows.push(rowData);\n }\n }\n let datasets = []\n\n for (const [key, value] of Object.entries(this.props.mappedDatasetInfo[\"idDatasetDetail\"])) {\n if (value[\"dataSourceId\"] === selectedDataSourceID) {\n datasets.push({ \"label\": normalizeChildDatasetName(value[\"datasetName\"]), \"value\": key });\n }\n }\n let lastProfilingTimeData = this.props.dataModule.lastProfilingTime[selectedDataSourceID]\n\n this.setState({\n selectedDatasource: selectedDataSourceobj,\n dataFilteredValues: filteredRows,\n datasets: datasets,\n selectedDataSet: [],\n selectedAttributes: [],\n selectedDataSourceID: selectedDataSource.integration_id,\n selectedDataSourceName: selectedDataSource.integration_name,\n lastProfilingTimeData: lastProfilingTimeData,\n initial: initial\n });\n\n this.fetchDataSource(selectedDataSource.integration_id, 'dqp_list_view')\n this.setState({ loader: true })\n\n }\n\n changeDataSource(selectedDataSource) {\n this.setState({ showLoader: true })\n\n let selectedDataSourceID = selectedDataSource.value;\n let initial = this.state.initial\n initial.datasource = selectedDataSourceID\n let filteredRows = [];\n for (let rowData of this.state.listViewTableData) {\n if (rowData[4].dataSourceId === selectedDataSourceID) {\n filteredRows.push(rowData);\n }\n }\n let datasets = []\n\n for (const [key, value] of Object.entries(this.state.mappedDatasetInfo[\"idDatasetDetail\"])) {\n if (value[\"dataSourceId\"] === selectedDataSourceID) {\n datasets.push({ \"label\": normalizeChildDatasetName(value[\"datasetName\"]), \"value\": key });\n }\n }\n let lastProfilingTimeData = this.props.dataModule.lastProfilingTime[selectedDataSourceID]\n\n this.setState({\n selectedDatasource: selectedDataSource,\n dataFilteredValues: filteredRows,\n datasets: datasets,\n selectedDataSet: [],\n selectedAttributes: [],\n selectedDataSourceID: selectedDataSourceID,\n lastProfilingTimeData: lastProfilingTimeData,\n initial: initial\n });\n // this.props.renderChild(selectedDataSource.value)\n this.fetchDataSource(selectedDataSource.value, 'dqp_list_view')\n this.setState({ loader: true })\n }\n\n getFilteredData(data, startDate, endDate, considerEndAlone = false) {\n let updatedThumbnailCharts = []\n for (let _singleThumbnailData of data) {\n const actChartData = _.cloneDeep(_singleThumbnailData.chartData);\n let timeArr = actChartData.time;\n let valArr = actChartData.values;\n let driftPatterns = actChartData.drift_patterns;\n let versionNames = actChartData.version_name;\n let newValues = []\n let newDrift = []\n let newVersion = []\n if (timeArr === undefined) {\n continue;\n }\n let filteredArr\n if (considerEndAlone) {\n filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(endDate));\n } else {\n filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(endDate) && moment(x).isSameOrAfter(startDate));\n }\n\n const filteredLength = filteredArr.length;\n if (filteredLength === 0) {\n continue;\n }\n let startIndex = timeArr.indexOf(filteredArr[0]);\n let endIndex = timeArr.indexOf(filteredArr[filteredLength - 1]);\n for (let i = startIndex; i <= endIndex; i++) {\n newValues.push(valArr[i])\n if (versionNames !== undefined && versionNames !== null) {\n newVersion.push(versionNames[i])\n }\n if (driftPatterns !== undefined) {\n newDrift.push(driftPatterns[i])\n }\n }\n if (filteredLength === 1) {\n newValues.push(valArr[startIndex])\n if (versionNames !== undefined && versionNames !== null) {\n newVersion.push(versionNames[startIndex])\n }\n if (driftPatterns !== undefined) {\n newDrift.push(driftPatterns[startIndex])\n }\n }\n actChartData.time = filteredArr;\n actChartData.dq_chart_points = newValues;\n actChartData.values = newValues;\n actChartData.drift_patterns = newDrift;\n actChartData.version_name = newVersion;\n _singleThumbnailData.chartData = actChartData;\n updatedThumbnailCharts.push(_singleThumbnailData);\n }\n return updatedThumbnailCharts\n }\n\n handleDQListViewTimeFilter(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n if (this.state.noIntegration === true || this.state.inProgress === true) {\n this.setState({ startDate: startDate, endDate: endDate, timeFilterApplied: true });\n return\n }\n\n let clonedData = _.cloneDeep(this.state.completeTableData);\n let filteredData = [];\n let dataFilteredValues = [];\n for (let rowData of clonedData) {\n let previousTime = null;\n let thumbnailData = rowData.find(x => x.type === \"thumbnailCharts\");\n let datasetName = rowData.find(x => x.type === \"datasetName\");\n let detailedCharts = rowData.find(x => x.type === \"action\")\n let datasetId = detailedCharts.value;\n let dataSourceId = detailedCharts.dataSourceId;\n let attributeId = detailedCharts.attributeId;\n\n if (this.state.showpartitions === false) {\n let check = this.props.filterData.parentDatasets.filter((data) =>\n parseInt(data.value) === parseInt(datasetId)\n ).length;\n if (check === 0) {\n return;\n }\n }\n\n let createdTime = moment(thumbnailData.createdTime).startOf(\"day\").toDate();\n let noDataAvailable = moment(startDate).isBefore(createdTime) && moment(endDate).isBefore(createdTime)\n\n if (noDataAvailable === true) {\n continue;\n }\n\n\n const thumbnailVal = thumbnailData.value;\n\n let issuedAttributes = thumbnailData.issuedAttributes;\n\n for (let _cData of thumbnailVal) {\n let updatedThumbnailCharts = this.getFilteredData(_cData.data, startDate, endDate);\n if (updatedThumbnailCharts.length === 0 || (updatedThumbnailCharts.length === 1 && updatedThumbnailCharts[0][\"name\"] === \"Recency\")) {\n updatedThumbnailCharts = this.getFilteredData(_cData.data, startDate, endDate, true)\n if (issuedAttributes !== undefined) {\n let previousTimeArr = issuedAttributes.filter(x => moment(x.refresh_time).isSameOrBefore(endDate))\n if (previousTimeArr.length > 0) {\n previousTime = previousTimeArr[0][\"refresh_time\"]\n }\n\n }\n\n\n }\n _cData.data = updatedThumbnailCharts;\n }\n\n if (datasetName !== undefined) {\n datasetName[\"previousTime\"] = previousTime\n thumbnailData.noDataAvailable = noDataAvailable;\n }\n\n let filteredDataset = this.state.selectedDataSet.filter(x => Number(x.value) === Number(datasetId))\n\n\n if (filteredDataset.length > 0) {\n if (attributeId !== undefined && this.state.selectedAttributes.length > 0) {\n let filteredAttributes = this.state.selectedAttributes.filter(x => Number(x.value) === Number(attributeId))\n if (filteredAttributes.length > 0) {\n dataFilteredValues.push(rowData);\n }\n } else {\n dataFilteredValues.push(rowData);\n }\n } else if (this.state.selectedDataSet.length === 0 && this.state.selectedDataSourceID !== null && Number(dataSourceId) === Number(this.state.selectedDataSourceID)) {\n dataFilteredValues.push(rowData);\n }\n\n filteredData.push(rowData);\n }\n\n this.setState({\n startDate: startDate,\n endDate: endDate,\n dataFilteredValues: dataFilteredValues,\n timeFilterApplied: true,\n currListViewTableData: filteredData,\n selectedGroup:this.state.selectedGroup === null ? LIST_VIEW_OPTIONS[0] : this.state.selectedGroup\n });\n }\n\n updateFollowAttributes(data){\n this.setState({follow_attributes:data})\n }\n getDQListTableComponents(actionType, headerValue, cell, row, rowIndex) {\n if (headerValue === \"Attribute Name\") {\n return (\n \n \n )\n }\n\n if (headerValue === \"Dataset Name\") {\n if (cell.value === undefined) {\n return \"\"\n }\n return (<>{cell.value} {cell.previousTime !== undefined && cell.previousTime !== null ? \n {cell.previousTime !== undefined && cell.previousTime !== null ? `Previous Refresh Date: ${cell.previousTime}` : \"\"}
    \n \n }\n arrowContent={
    }\n >\n \n \n \n
    : \"\"}
    \n\n

    Latest Refresh Date:

    \n {cell.lastProfilingTime}
    )\n }\n if (headerValue === \"DQ Metrics\") {\n if (cell.value.length > 0) {\n return rowIndex < 4 ?\n (\n )\n :\n (
    );\n\n } else {\n return (
    \n

    \n \n

    \n

    {cell.noDataAvailable === true ? \"No Charts Found\" : \"No Errors Found\"}

    \n
    )\n }\n\n } else if (headerValue === \"Action\") {\n\n if (cell.level === \"attribute\") {\n let follow_attributes = this.state.follow_attributes\n let attributId = cell['attributeId'];\n let datasourceId = cell['dataSourceId'];\n let updatedFollowAttri = follow_attributes[datasourceId][attributId]\n cell.follow_status = updatedFollowAttri;\n }\n\n\n return (\n
    \n\n {cell.level === \"attribute\" ?\n\n \n : \"\"\n }\n
    \n \n \n \n

    Detailed Charts

    \n
    \n
    \n );\n }\n\n\n return cell;\n }\n\n getCustomClassForActions() {\n /**\n * This function returns a \"function\" which will provide the class for entries\n * i.e the cells of the tables\n * */\n\n return (cell, row, rowIndex, colIndex) => {\n if (colIndex === 5) {\n return \"align-middle\";\n }\n\n return \"\";\n };\n }\n\n\n closeFullScreenMode() {\n\n\n // let selectedDatasetlist;\n // for(let loop=0;loop \n // (data.value !==\"*\" && parseInt(data.value) === parseInt(this.props.filterData[\"parentDatasets\"][loop][\"value\"])) && data.checked===true)\n // if(selectedDatasetlist.length > 0){\n // }\n // }\n // }\n\n this.setState({\n isInFullScreenMode: false,\n fullScreenClassKey: \"\",\n fullScreenAttributeData: null,\n lastProfilingTime: null,\n fullScreenData: null\n });\n }\n\n changeGroup(selectedOption) {\n selected_Group = selectedOption.value;\n this.setState({\n selectedGroup: selectedOption\n });\n }\n\n\n reset() {\n this.setState({\n selectedDatasource: null,\n selectedDataSet: [],\n selectedAttributes: [],\n initial: {\n datasource: \"\",\n dataset: \"\",\n attribute: \"\",\n }\n });\n }\n\n// shouldComponentUpdate() {\n// if (this.state.showLoader === false) {\n// return true\n// }\n// return false\n// }\n\n render() {\n let tableData = {\n \"data\": (this.state.dataFilteredValues.length > 0 ? this.state.dataFilteredValues : (this.state.selectedDataSourceID !== null ? this.state.currListViewTableData : this.state.currListViewTableData)),\n \"headers\": MONITOR_DQP_LIST_VIEW_HEADERS,\n \"not_sortable\": true\n };\n let dataSourceOption = [];\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key !== undefined && value !== undefined) {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n }\n\n let ranges = getDefaultDateRangeOptions();\n let dqSchema = yup.object({\n // datasource: yup.string().required(\"Datasource is a required field\"),\n dataset: yup.string().required(\"Dataset is a required field\"),\n });\n\n let noDataFoundMessage = null;\n let lastProfilingTimeDict = this.props.dataModule.lastProfilingTime;\n let lastProfiledTime = lastProfilingTimeDict[this.state.selectedDataSourceID];\n let containsNull = Object.values(lastProfilingTimeDict).filter(x => x !== null)\n if (containsNull.length === 0 || this.state.inProgress === true) {\n noDataFoundMessage = `Data profiling is in-progress`;\n } else if (this.state.selectedDataSourceID && IS_NONE_CHECK.includes(lastProfiledTime) && tableData.data.length === 0) {\n noDataFoundMessage = `Data profiling is in-progress`;\n }\n\n\n // if (this.state.noIntegration === true || this.props.noDataFound) {\n // noDataFoundMessage = null\n // if(this.props.inProgress===true){\n // lastProfilingTimeData = \"Data profiling is in-progress\"\n // }\n // else{\n // lastProfilingTimeData = \"Data profiling is in-progress\"\n\n // } \n \n // }\n // let lastProfilingTimeData = null;\n // if(parseInt(this.state.selectedDataSourceID) > 0){\n // lastProfilingTimeData = this.props.dataModule.lastProfilingTime[this.state.selectedDataSourceID]\n // }\n\n \n let lastProfilingTime = this.state.last_processed_time === null ? \"--\" : `Your data last profiled at ${this.state.last_processed_time}`;\n \n if (this.state.noIntegration === true) {\n noDataFoundMessage = null\n lastProfilingTime = \"No data available\"\n }\n else if(this.state.inProgress === true && this.state.noDataFound === false && this.state.noIntegration === false){\n lastProfilingTime = \"Data profiling is in-progress\"\n noDataFoundMessage = \"Data profiling is in-progress\"\n }\n // else if(this.state.noDataFound === false && this.state.noIntegration === false ){\n // noDataFoundMessage = \"No data found for selected time range\"\n // }\n\n return (\n
    \n
    \n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n label.includes(query)}\n id=\"chooseDatasourceDqError\"\n options={dataSourceOption}\n onChange={this.changeDataSource}\n value={this.state.defaultDatasourceInside}\n // value={this.state.selectedDatasource}\n classNamePrefix='form-control'\n placeholder=\"Choose Datasource\"\n />\n label !== undefined && label.includes(query)}\n id=\"chooseDatasetError\"\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n components={{ Option }}\n allowSelectAll={true}\n value={this.state.selectedDataSet}\n options={this.state.datasets}\n onChange={this.changeDataset}\n controlShouldRenderValue={false}\n classNamePrefix='form-control'\n placeholder={getPlaceholder(\"Choose Dataset\", this.state.selectedDataSet, this.state.datasets)}\n />\n
    \n
    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n \n {({\n values,\n errors,\n touched,\n setValues,\n setFieldValue,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n setErrors\n }) => (<>\n { this.state.showDropDown === true ? this.setState({ showDropDown: false }) : this.setState({ showDropDown: true }) }} id=\"dropdown-autoclose-false\" className=\"btn-light\">\n \n \n \n
    \n
    \n

    Select Date

    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n\n\n {/* Needs to handle this filter while seleting datasource */}\n\n \n Datasource\n {\n handleChange(\"datasource\")(selectedOption.value.toString());\n this.changeDataSourceAdvanced(selectedOption);\n setFieldValue(\"dataset\", \"\")\n }}\n classNamePrefix='select-control'\n value={this.state.defaultDatasourceInside}\n isDisabled={true}\n\n />\n \n \n \n Dataset\n {\n if (selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"dataset\")(selectedOption[0].value.toString());\n } else {\n handleChange(\"dataset\")(\"\");\n }\n this.handleChangeDataset(selectedOption);\n }}\n allowSelectAll={true}\n placeholder={getPlaceholder(\"Choose Dataset\", this.state.selectedDataSet, this.state.datasets)}\n value={this.state.selectedDataSet}\n controlShouldRenderValue={false}\n />\n \n \n \n Attribute\n {\n if (selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"attribute\")(selectedOption[0].value.toString());\n } else {\n handleChange(\"attribute\")(\"\");\n }\n this.changeAttribute(selectedOption);\n }}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n components={{\n Option\n }}\n value={this.state.selectedAttributes}\n allowSelectAll={true}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n />\n {/**/}\n \n\n {/* \n Attribute Tree\n \n \n \n */}\n\n\n {/*\n
    \n \n Show Attributes\n
    \n
    */}\n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n\n \n )}\n \n
    \n
    \n
    \n {this.state.selectedDataSourceID !== \"\" && this.props.filterData !== undefined && this.state.selectedDataSourceID !== null && this.state.isFilterMode === true && this.state.isInFullScreenMode === false && this.state.noIntegration === false?\n : \"\"}\n {this.state.isInFullScreenMode ?\n \n \n :\n \n :\n \n }\n />\n }\n
    );\n\n }\n}\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { addFollowAttributes, addMonitorDQListViewData })(DqpListViewContent);\n","import React from 'react';\nimport Image from '../../components/image';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport Form from 'react-bootstrap/Form';\nimport { Button } from \"react-bootstrap\";\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCalendar,faCheck} from \"@fortawesome/free-solid-svg-icons\";\nimport moment from \"moment\";\nimport {DISPLAY_DATE_FORMAT} from \"../../utils/constant\";\nimport {getDefaultDateRangeOptions} from \"../../utils/common_utils\";\nimport {getPlaceholder,Option, handleTime, getOptions} from \"./filter_common_utils\";\nimport CustomSelectNestedCheckbox from \"./customSelectNestedCheckbox\";\nimport CustomSelect from \"./customSelect\";\nimport _ from 'lodash';\n\nclass AdvancedFilterModel extends React.Component{\n constructor(props, context) {\n super(props, context);\n this.changeModel = this.changeModel.bind(this);\n this.getOptions = getOptions.bind(this);\n this.handleTime = handleTime.bind(this);\n this.changeMetric = this.changeMetric.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.fillDetails = this.fillDetails.bind(this);\n this.getPlaceholder = getPlaceholder.bind(this);\n this.changeAttributes = this.changeAttributes.bind(this);\n this.handleCheckClickErrors = this.handleCheckClickErrors.bind(this);\n let startDate = moment().subtract(9, 'days').set({\"hour\": 0, \"minute\": 0, \"seconds\": 0});\n let endDate = moment().endOf('day').set({\"hour\": 23, \"minute\": 59, \"seconds\": 59});\n this.state = {\n startDate: startDate,\n endDate: endDate,\n selectedModel: [],\n selectedAttributes: [],\n attributeOptions: [],\n showErrorsOnly: true,\n selectedMetrics: [],\n showAttributes: true,\n showDropDown: false,\n initial: {\n model: \"\",\n metric: \"\",\n attributesModel: \"\"\n\n }\n }\n\n }\n\n componentDidMount() {\n this.fillDetails();\n\n }\n\n changeAttributes(selected){\n this.setState({selectedAttributes: selected});\n }\n\n\n\n\n fillDetails(){\n let metricOptions = []\n let initial = this.state.initial\n let selectedMetrics = []\n let selectedModel = []\n if(this.props.underPerformModelIDs !== undefined && this.props.underPerformModelIDs.length > 0) {\n let underPerformModelIDs = this.props.underPerformModelIDs\n initial.model = underPerformModelIDs[0]\n selectedModel = this.props.mlModelOptions.filter(x=>underPerformModelIDs.includes(x.value))\n metricOptions = this.getOptions(selectedModel, this.props.customMetricsOptions);\n selectedMetrics = _.cloneDeep(metricOptions)\n initial.metric = metricOptions[0].value\n selectedMetrics = [{\"label\": \"All\", \"value\": \"*\", \"type\": \"*\"}].concat(selectedMetrics)\n if(selectedModel.length === this.props.mlModelOptions.length) {\n selectedModel = [{\"label\": \"All\", \"value\": \"*\", \"type\": \"*\"}].concat(selectedModel)\n }\n this.setState({initial:initial,\n selectedModel: selectedModel,\n selectedMetrics: selectedMetrics,\n });\n }else if(this.props.selectedMlModel !== null){\n let propsSelectedMlModel = this.props.mlModelOptions.filter(x=>Number(x.value) === Number(this.props.selectedMlModel[0].value))\n\n if (propsSelectedMlModel.length > 0) {\n selectedModel = propsSelectedMlModel\n metricOptions = this.getOptions(selectedModel, this.props.customMetricsOptions);\n selectedMetrics = _.cloneDeep(metricOptions)\n selectedMetrics = [{ \"label\": \"All\", \"value\": \"*\", \"type\": \"*\" }].concat(selectedMetrics)\n initial.model = propsSelectedMlModel[0].value\n initial.metric = metricOptions[0].value\n if (selectedModel.length === this.props.mlModelOptions.length) {\n selectedModel = [{ \"label\": \"All\", \"value\": \"*\", \"type\": \"*\" }].concat(selectedModel)\n }\n this.setState({\n initial: initial,\n selectedModel: selectedModel,\n selectedMetrics: selectedMetrics,\n })\n }\n\n }\n if(this.props.startDate !== undefined && this.props.endDate !== undefined) {\n this.setState({startDate: this.props.startDate, endDate: this.props.endDate})\n }\n if(this.props.type === \"modelError\") {\n let attributeOptions = []\n let propsAttributeOptions = this.props.attributeOptions\n for(let i=0;i[\"type4\", \"type5\"].includes(x.value))\n let showAttributes = filtered.length > 0 ? true : false;\n\n this.setState({showAttributes: showAttributes});\n if(!showAttributes) {\n this.setState({selectedAttributes: []});\n }\n\n }\n }\n\n reset() {\n\n this.setState({\n initial: {\n model: \"\",\n metric: \"\",\n attributesModel: \"\"\n\n },\n selectedMetrics:[],\n selectedAttributes:[],\n selectedDataSet:[],\n selectedModel:[],\n showAttributes: false\n\n });\n }\n handleCheckClickErrors(){\n this.setState({showErrorsOnly: !this.state.showErrorsOnly});\n }\n\n render() {\n let ranges = getDefaultDateRangeOptions();\n let metricLabel = this.props.type === \"modelError\" ? \"Metric\" : \"Performance Metric\";\n let modelSchema = yup.object({\n model: yup.string().required(\"Model is a required field\"),\n metric: yup.string().required(`${metricLabel} is a required field`),\n });\n let metricOptions = this.getOptions(this.state.selectedModel, this.props.customMetricsOptions);\n\n return(\n {({\n values,\n errors,\n touched,\n setFieldValue,\n setValues,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n }) => (<>\n {this.state.showDropDown === true ? this.setState({showDropDown: false}) : this.setState({showDropDown: true})}} id=\"dropdown-autoclose-false\" className=\"btn-light\">\n Filters\n \n \n
    \n
    \n

    Select Date

    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n \n Model\n {\n if(selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"model\")(selectedOption[0].value.toString());\n }else {\n handleChange(\"model\")(\"\");\n }\n this.changeModel(selectedOption);\n }}\n allowSelectAll={true}\n placeholder={this.getPlaceholder(\"Choose Model\", this.state.selectedModel, this.props.mlModelOptions)}\n value={this.state.selectedModel}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n />\n \n \n \n {metricLabel}\n {\n if(selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"metric\")(selectedOption[0].value.toString());\n }else {\n handleChange(\"metric\")(\"\");\n }\n this.changeMetric(selectedOption);\n }}\n allowSelectAll={true}\n placeholder={this.getPlaceholder(`Choose ${metricLabel}`, this.state.selectedMetrics, metricOptions)}\n value={this.state.selectedMetrics}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n />\n \n \n {this.props.type === \"modelError\" && this.state.showAttributes ? \n Attribute\n {\n if(selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"attributesModel\")(selectedOption[0].value.toString());\n }else {\n handleChange(\"attributesModel\")(\"\");\n }\n this.changeAttributes(selectedOption);\n }}\n allowSelectAll={true}\n placeholder={this.getPlaceholder(\"Choose Attributes\", this.state.selectedAttributes, this.state.attributeOptions)}\n value={this.state.selectedAttributes}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n />\n \n : \"\"}\n {this.props.type === \"modelError\" ?\n \n
    \n \n Show Errors Only\n
    \n
    : \"\"}\n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n\n \n )}\n \n\n );\n }\n\n}\n\nexport default AdvancedFilterModel;","import React from \"react\";\nimport BasicPortlet from \"../../components/basicPortlet\";\nimport Load from \"../../components/loadAction\";\nimport { LazyLoadComponent } from \"react-lazy-load-image-component\";\nimport ChartFilterHeader from \"./chartFilterHeader\";\nimport NoErrorComponent from './monitorNoResult';\nimport moment from 'moment';\n\nimport {\n getChartType, convertDecimalDigits,\n getChartFilterData\n} from \"../../utils/common_utils\";\nimport {\n chartTypes, NO_ERROR_CHART_COLORS,\n LIGHT_COLOR_MAP, MAX_DATA_POINTS_FOR_LIST_VIEW\n} from \"../../utils/constant\";\nimport {getDateObject} from \"../../charts/browser_utils\";\n\nclass MonitorChartGroup extends React.Component {\n\n renderModalChart() {\n if (this.props.groupData) {\n if (this.props.loadValue === true) {\n return (\n
    \n }\n />\n
    \n );\n }\n\n let charts = this.props.groupData[\"data\"];\n if (charts.length === 0){\n return (\n \n );\n }\n\n let chartCount = 0;\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let is_same_col = false;\n let j = 0;\n\n return charts.map((chartData, index) => {\n let key = chartData[\"key\"];\n let id = chartData[\"ml_model_id\"];\n let title = chartData[\"chartTitle\"];\n let chartType = chartData[\"chartType\"];\n let idValue = (\"modelPerformanceShowMoreChart\" + chartData[\"data_source_name\"] + \"_\" + chartData[\"name\"]).replace(/ /g,\"_\");\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n chartCount = chartCount + 1;\n let isTimeSeries = (chartData.isNonTimeSeries === undefined || !chartData.isNonTimeSeries);\n if (chartType === 'areaChart' && isTimeSeries){\n chartType = getChartType(chartData, chartCount)\n }\n if (is_same_col === false) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n is_same_col = true;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n\n let filteredData = null;\n let propsStartDate = this.props.startDateInside === null ? this.props.startDate: this.props.startDateInside;\n let propsEndDate = this.props.endDateInside === null ? this.props.endDate : this.props.endDateInside;\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, true, this.props.considerEndDate, MAX_DATA_POINTS_FOR_LIST_VIEW);\n\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n const dateObj = getDateObject(timeVals[0]);\n propsStartDate = moment(dateObj);\n\n // propsEndDate = moment(new Date(timeVals[timeVals.length - 1]));\n }\n }\n let col_size =\"col-md-6\";\n// if(chartType === \"multiLineFeatureChart\"){\n// col_size = \"col-md-12\"\n// }\n\n return (\n }>\n
    \n \n
    \n
    \n );\n });\n }\n }\n\n render() {\n if (this.props.groupData === undefined || this.props.groupData === null){\n return \"\"\n }\n\n return (\n
    \n
    \n

    \n \n {this.props.index}\n \n {this.props.groupData.header}\n

    \n

    \n {this.props.groupData.sub_header}\n

    \n
    \n
    \n
    \n {this.renderModalChart()}\n
    \n
    \n
    \n );\n }\n}\n\nexport default MonitorChartGroup;\n","import React from 'react';\nimport {faArrowRight} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport ChartGrid from './chartGrid';\nimport Image from '../../components/image';\nimport _ from 'lodash';\nimport { connect } from \"react-redux\";\nimport {setModelPerformanceData} from \"../../utils/event_handling\";\nimport {LIGHT_COLOR_MAP, ML_MODEL_WITH_MODEL_EVALUATION_METRICS, MODEL_EVALUATION} from \"../../utils/constant\";\nimport AdvancedFilterModel from \"./advanced_filter_model\";\n\nimport {\n getGroupedDataListView,\n formChartTitleForModelPerformanceChart,\n getChartType,\n convertDecimalDigits,\n capitalize\n} from \"../../utils/common_utils\";\n\nimport MonitorChartGroup from \"./monitorChartGroup\";\nimport NoErrorInPreview from \"./noErrorPreview\";\nimport {addModelPerformance} from \"../../redux/actions\";\n\nclass ModelPerformanceGrid extends React.Component {\n constructor(props) {\n super(props);\n this.changeModel = this.changeModel.bind(this);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.closeFullScreen = this.closeFullScreen.bind(this);\n this.setMlModel = setModelPerformanceData.bind(this);\n this.getGroupedDataListView = getGroupedDataListView.bind(this);\n let completeData = this.props.completeFullscreenData;\n\n let initialSelectedMlModel;\n if(this.props.mlModelOptions !== undefined){\n initialSelectedMlModel = this.props.mlModelOptions.filter(x=>x.value===this.props.currentModelID)\n } else {\n initialSelectedMlModel = [{\"label\": this.props.currentModel, \"value\": this.props.currentModelID}];\n }\n let full_screen_data = this.getGroupedDataListView([], completeData, initialSelectedMlModel)\n this.state = {\n loadValue: true,\n idValue: this.props.currentModel,\n data: this.props.data,\n selectedMetrics: [],\n title: this.props.title,\n chartType: \"areaChart\",\n fullScreen: \"fade\",\n showFullScreen: false,\n updatedKey: false,\n dataLoaded: false,\n variant: this.props.variant,\n modalData: _.cloneDeep(this.props.data),\n selectedMlModel: initialSelectedMlModel,\n fullScreenData: full_screen_data,\n completeData: completeData,\n startDateInside: null,\n endDateInside: null,\n isAdvancedFilterApplied: false,\n initialSelection: full_screen_data\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n let propsChanged = props.data !== state.data;\n let gotUpdatedData = props.monitorModule.modelPerformanceFetchCompleted && !state.dataLoaded;\n\n if (propsChanged && gotUpdatedData) {\n let completeData = this.props.completeFullscreenData;\n\n let initialSelectedMlModel;\n if(props.mlModelOptions !== undefined){\n initialSelectedMlModel = props.mlModelOptions.filter(x=>x.value===props.currentModelID)\n } else {\n initialSelectedMlModel = [{\"label\": props.currentModel, \"value\": props.currentModelID}];\n }\n let groupedData = getGroupedDataListView([],completeData, initialSelectedMlModel);\n return {\n data: props.data,\n fullScreenData: _.cloneDeep(groupedData),\n completeData: completeData,\n updatedKey: state.updatedKey,\n dataLoaded: true\n };\n } else if (propsChanged) {\n return {data: props.data};\n } else if (gotUpdatedData) {\n let completeData = props.completeFullscreenData;\n\n const initialSelectedMlModel = [{\"label\": props.currentModel, \"value\": props.currentModelID}];\n\n let groupedData1 = getGroupedDataListView([], completeData, initialSelectedMlModel);\n return {\n fullScreenData: _.cloneDeep(groupedData1),\n completeData: completeData,\n updatedKey: state.updatedKey,\n dataLoaded: true\n };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.data !== this.state.data) {\n let _modalData = _.cloneDeep(this.props.data);\n this.setState({modalData: _modalData});\n }\n }\n\n closeFullScreen() {\n document.body.classList.remove(\"overflow-hidden\");\n this.setState({fullScreen: '', showFullScreen: false, selectedMetrics: [], startDateInside: null, endDateInside: null, isAdvancedFilterApplied: false, fullScreenData: this.state.initialSelection});\n }\n\n setFullScreen() {\n document.body.classList.add(\"overflow-hidden\");\n this.setState({showFullScreen: true, fullScreen: \"show\"})\n if (this.props.showModelFilter) {\n if (this.props.mlModelOptions !== undefined && this.props.mlModelOptions !== null) {\n if (this.props.mlModelOptions.length > 0) {\n\n if (this.state.fullScreenData === null){\n this.setState({loadValue: true});\n }\n\n }\n }\n }\n }\n\n renderGridItem() {\n if (this.props.data) {\n let chartValues = this.state.modalData[\"data\"];\n if (chartValues.length > 3) {\n chartValues = this.state.modalData[\"data\"].slice(0, 3);\n }\n\n return chartValues.map((chartData, index) => {\n let key = chartData[\"key\"];\n let chartType = chartData[\"chartType\"];\n if (chartType === undefined) {\n chartType = this.state.chartType;\n }\n chartData[\"name\"] = capitalize(chartData[\"name\"]);\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n if(chartData[\"drift1\"] !== undefined){\n chartData[\"drift1\"] = convertDecimalDigits(chartData[\"drift1\"])\n }\n\n let isTimeSeries = (chartData.isNonTimeSeries === undefined || !chartData.isNonTimeSeries);\n if (chartType === 'areaChart' && isTimeSeries){\n chartType = getChartType(chartData, index)\n }\n\n let title = chartData[\"chartTitle\"];\n if (this.props.selectedMlModel !== undefined) {\n title = formChartTitleForModelPerformanceChart(title, this.props.selectedMlModel);\n }\n let idValue = (\"modelPerformancePreviewChart\" + chartData[\"model_name\"] + \"_\" + chartData[\"metric\"]).replace(/ /g,\"_\");\n\n return (\n \n );\n });\n }\n }\n\n formGroupedChart() {\n let selectedMlModel = this.state.selectedMlModel;\n let ml_model_id = 0;\n if (selectedMlModel !== undefined && selectedMlModel !== null ) {\n ml_model_id = selectedMlModel.value;\n }\n\n const groupedData = this.state.fullScreenData;\n let rowCount = 0\n let ModelEvaluationMetrics=selectedMlModel.filter(x=>(x.mlType !== undefined && ML_MODEL_WITH_MODEL_EVALUATION_METRICS.includes(x.mlType)))\n let hasEvaluationMetrics = false;\n if (ModelEvaluationMetrics.length > 0){\n hasEvaluationMetrics=true;\n }\n return Object.keys(groupedData).map((key, index) => {\n let loadValue = !this.props.monitorModule.modelPerformanceFetchCompleted;\n let sectionType = groupedData[key][\"type\"]\n if(key === MODEL_EVALUATION && hasEvaluationMetrics === false){\n return \"\"\n }\n rowCount = rowCount + 1\n if(this.state.selectedMetrics.length > 0){\n let sectionFiltered = this.state.selectedMetrics.filter(x=>x.type === sectionType)\n if(sectionFiltered.length === 0){\n rowCount = rowCount - 1\n return \"\"\n }\n }\n return (\n (\n\n ));\n });\n }\n\n changeModel(selectedModel, selectedMetrics=[], startDate, endDate) {\n this.setState({loadValue: true});\n this.setState({selectedMlModel: selectedModel, idValue: selectedModel.label});\n const updatedData = this.getGroupedDataListView(selectedMetrics, this.state.completeData, selectedModel);\n this.setState({fullScreenData: updatedData});\n this.setState({updatedKey: !this.state.updatedKey});\n this.setState({selectedMetrics: selectedMetrics, loadValue: false, startDateInside: startDate, endDateInside: endDate, isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied});\n // this.setMlModel(event, this.props.id, this.props.title);\n }\n\n render() {\n let message = \"Model performance values are currently not available for the selected model.\";\n let footer = \"Try with a different time period.\";\n if (this.props.isInProgress !== undefined && this.props.isInProgress === true) {\n message = 'Model Profiling is in-progress';\n footer = '';\n }\n if(this.state.data[\"data\"].length === 0){\n message = \"Model performance values are currently not available for the selected model.\";\n footer = \"Try with a different time period.\";\n }\n\n let modelMonitoringData = this.getGroupedDataListView([], this.props.completeFullscreenData, this.state.selectedMlModel)\n modelMonitoringData = modelMonitoringData[\"Model Monitoring\"][\"data\"];\n\n if (this.props.noModelConfigured !== undefined && this.props.noModelConfigured === true) {\n message = 'Model not configured for the selected period.';\n footer = 'Try with a different time period.';\n }\n return (\n (this.state.data[\"data\"].length === 0) ?\n
    \n \n
    \n :\n <>\n
    \n
    \n
    \n {this.renderGridItem()}\n
    \n
    \n
    \n
    \n
    \n \n \n \n

    Show More

    \n
    \n
    \n
    \n
    \n { this.state.fullScreen === 'show' ?
    \n
    \n
    \n
    \n
    \n \n

    {this.props.title}

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n {this.formGroupedChart()}\n
    \n
    \n
    \n
    \n
    \n
    : \"\"}\n \n );\n }\n }\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, addModelPerformance) (ModelPerformanceGrid);","import React from 'react';\nimport MonitorPortlet from '../components/monitorPortlet';\nimport _ from 'lodash';\n\nimport { getApi, setModelPerformanceData } from \"../utils/event_handling\";\nimport {\n // updateChartData,\n getPerformanceChartData,\n filterChartDataForTime,\n getPreviewPerformanceChartData,\n hasValidNumberOfDatasets,\n} from \"../utils/common_utils\";\nimport Load from '../components/loadAction';\nimport ModelPerformanceGrid from \"./components/modelPerformanceGrid\";\nimport { getMonitorTimeStampMessage, applyDefaultTimeFilter } from \"../utils/common_utils\";\nimport { connect } from \"react-redux\";\nimport Select from 'react-select';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport moment from 'moment';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons';\nimport NoModelComponent from \"./components/noModelComponent\";\nimport { DISPLAY_DATE_FORMAT, NO_DATASET_NO_DATA_PROFILE } from \"../utils/constant\";\nimport { getDateObject } from \"../charts/browser_utils\";\nclass ModelPerformance extends React.Component {\n\n constructor(props) {\n super(props);\n /*this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.setGridData = this.setGridData.bind(this);\n this.state = {\n hideLastProfiledTime: false,\n data: this.setGridData(this.props.monitorModule.performancePreview)\n }*/\n this.getApi = getApi.bind(this);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.changeModel = this.changeModel.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.handleModelFilter = this.handleModelFilter.bind(this);\n // this.setAvailableModelsAndChartData = this.setAvailableModelsAndChartData.bind(this);\n // this.setSelectedModelData = this.setSelectedModelData.bind(this);\n this.setModelPerformanceData = setModelPerformanceData.bind(this);\n this.getPerformanceChartData = getPerformanceChartData.bind(this);\n this.getPreviewPerformanceChartData = getPreviewPerformanceChartData.bind(this);\n this.getMonitorTimeStampMessage = getMonitorTimeStampMessage.bind(this);\n this.filterChartDataForTime = filterChartDataForTime.bind(this);\n\n let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n if (props.monitorModule.performancePreview !== null && props.monitorModule.performancePreview !== undefined && props.monitorModule.performancePreview[\"filterStartDate\"] !== null &&\n props.monitorModule.performancePreview[\"filterStartDate\"] !== undefined) {\n\n const filterStartDateStr = props.monitorModule.performancePreview[\"filterStartDate\"];\n const filterEndDateStr = props.monitorModule.performancePreview[\"filterEndDate\"];\n const startDateObj = getDateObject(filterStartDateStr);\n const endDateObj = getDateObject(filterEndDateStr);\n startDate = moment(startDateObj).utc().startOf('day');\n endDate = moment(endDateObj).utc().endOf('day');\n\n\n }\n let groupedChartData = this.getPreviewPerformanceChartData(this.props.monitorModule.performancePreview,\n this.props.monitorModule.mlModelMapping);\n let completeGridData = _.cloneDeep(groupedChartData);\n let newGridData = applyDefaultTimeFilter(groupedChartData, startDate, endDate);\n this.state = {\n startDate: startDate,\n endDate: endDate,\n loadValue: false,\n mlModel: newGridData,\n completeData: completeGridData,\n selectedModel: null,\n closeAction: false,\n lastMonitorTime: null,\n updatedKey: false,\n integrationsMap: this.props.integrationsMap,\n isSuccessMessage: true\n }\n }\n\n\n static getDerivedStateFromProps(props, state) {\n // Update integrations map from the props\n if (props.integrationsMap !== state.integrationsMap) {\n return {\n integrationsMap: props.integrationsMap\n }\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.monitorModule.mlModelMapping !== this.props.monitorModule.mlModelMapping || prevProps.monitorModule.performancePreview !== this.props.monitorModule.performancePreview) {\n let groupedChartData = this.getPreviewPerformanceChartData(this.props.monitorModule.performancePreview,\n this.props.monitorModule.mlModelMapping);\n let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n if (this.props.monitorModule.performancePreview !== null && this.props.monitorModule.performancePreview !== undefined\n && this.props.monitorModule.performancePreview[\"filterStartDate\"] !== null && this.props.monitorModule.performancePreview[\"filterStartDate\"] !== undefined) {\n\n const filterStartDateStr = this.props.monitorModule.performancePreview[\"filterStartDate\"];\n const filterEndDateStr = this.props.monitorModule.performancePreview[\"filterEndDate\"];\n const startDateObj = getDateObject(filterStartDateStr);\n const endDateObj = getDateObject(filterEndDateStr)\n\n startDate = moment(startDateObj).utc().startOf('day');\n endDate = moment(endDateObj).utc().endOf('day');\n }\n let completeGridData = _.cloneDeep(groupedChartData);\n let newGridData = applyDefaultTimeFilter(groupedChartData, startDate, endDate);\n this.setState({\n mlModel: newGridData,\n completeData: completeGridData,\n });\n }\n }\n\n handleModelFilter(selectedModel) {\n let selectedMLID = selectedModel[\"value\"];\n let mlModelData = _.cloneDeep(this.state.completeData);\n let updatedGroup = mlModelData.filter(x => String(x.mlModelID) === String(selectedMLID));\n let allGroups = [];\n for (let g of updatedGroup) {\n let group = _.cloneDeep(g)\n let charts = group.data;\n if (charts === undefined) {\n continue;\n }\n allGroups.push(group);\n let timeFilteredData = [];\n for (let chart of charts) {\n if (chart.time === undefined || chart.isNonTimeSeries === true) {\n //timeFilteredData.push(chart);\n continue;\n }\n let copiedData = _.cloneDeep(chart);\n let result = this.filterChartDataForTime(chart, this.state.startDate, this.state.endDate);\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n copiedData[\"boxPlotData\"] = result.boxPlotData;\n }\n let updatedTime = result.time;\n if ((copiedData.chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false) ||\n (copiedData.chartType !== \"boxPlotZoomable\" && updatedTime.length === 0)) {\n continue;\n }\n copiedData[\"drift_patterns\"] = result.drift_patterns;\n if (result.drift_patterns.length > 0) {\n let latest_drift_index = result.drift_patterns.length - 1;\n copiedData[\"drift_pattern\"] = result.drift_patterns[latest_drift_index];\n }\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift\"] = result.drift;\n timeFilteredData.push(copiedData);\n }\n group[\"data\"] = timeFilteredData;\n }\n\n if (allGroups.length === 0) {\n allGroups = [{\n \"metric\": selectedModel[\"label\"],\n \"data\": []\n }]\n }\n this.setState({ mlModel: allGroups });\n this.setState({ selectedModel: selectedModel });\n }\n\n changeModel(model, stateKey, title, startDate, endDate) {\n this.setState({ loadValue: true });\n this.handleModelFilter(model);\n this.setState({ loadValue: false });\n }\n\n changeTime(model, stateKey, title, startDate, endDate) {\n this.setState({ loadValue: true });\n }\n\n hideContent() {\n this.setState({\n closeAction: true,\n });\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n handleTimeFilter(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n this.setState({ startDate: startDate, endDate: endDate });\n let mlModel = _.cloneDeep(this.state.completeData);\n\n let selectedModelId = null;\n if (this.state.selectedModel !== undefined && this.state.selectedModel !== null) {\n selectedModelId = String(this.state.selectedModel.value);\n }\n\n let allGroups = [];\n for (let group of mlModel) {\n let charts = group.data;\n if (charts === undefined) {\n continue;\n }\n\n if (selectedModelId !== null && String(group.mlModelID) !== selectedModelId) {\n continue;\n }\n\n allGroups.push(group);\n let timeFilteredData = [];\n\n for (let chart of charts) {\n if (chart.time === undefined || chart.isNonTimeSeries === true) {\n timeFilteredData.push(chart);\n continue;\n }\n\n let copiedData = _.cloneDeep(chart);\n let result = this.filterChartDataForTime(chart, startDate, endDate);\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n copiedData[\"boxPlotData\"] = result.boxPlotData;\n }\n let updatedTime = result.time;\n if ((copiedData.chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false) ||\n (copiedData.chartType !== \"boxPlotZoomable\" && updatedTime.length === 0)) {\n continue;\n }\n\n copiedData[\"drift_patterns\"] = result.drift_patterns;\n if (result.drift_patterns.length > 0) {\n let latest_drift_index = result.drift_patterns.length - 1;\n copiedData[\"drift_pattern\"] = result.drift_patterns[latest_drift_index];\n }\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift\"] = result.drift;\n timeFilteredData.push(copiedData);\n }\n\n group[\"data\"] = timeFilteredData;\n }\n\n\n this.setState({ mlModel: allGroups });\n this.setState({ updatedKey: this.state.updatedKey });\n }\n\n\n render() {\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n\n const selectedDataSource = this.props.dataModule.selectedDataSource;\n\n const hasValid = hasValidNumberOfDatasets(this.state.integrationsMap, selectedDataSource);\n\n const lastProfiledTime = this.props.dataModule.lastProfilingTime[selectedDataSource];\n let lastProfilingTime = lastProfiledTime ?\n `Your data last profiled at ${lastProfiledTime}` : \"Data Profiling is In progress ...\";\n\n if (!hasValid) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n }\n\n let modelProcessStatus = {};\n let noModelConfigured = {}\n let lastProfilingTimeDict = this.props.dataModule.lastProfilingTime\n if (Object.keys(lastProfilingTimeDict).length > 0 && this.props.monitorModule.mlModelDetails !== undefined && this.props.monitorModule.mlModelDetails.length > 0) {\n for (let mlModel of this.props.monitorModule.mlModelDetails) {\n let modelCreatedTime = mlModel[\"created_time\"];\n let convertedTime = getDateObject(modelCreatedTime).getTime();\n let integration_profiled_time = this.props.dataModule.lastProfilingTime[mlModel[\"integration_id\"]];\n\n const modelCreatedDateObj = getDateObject(modelCreatedTime);\n const modelCreatedAt = moment(modelCreatedDateObj).utc().startOf('day');\n\n const lptDateObj = getDateObject(integration_profiled_time);\n const lpt = lptDateObj.getTime();\n\n let noModelConfiguredStatus = moment(this.state.startDate).isBefore(modelCreatedAt) && moment(this.state.endDate).isBefore(modelCreatedAt)\n noModelConfigured[mlModel[\"ml_model_id\"]] = noModelConfiguredStatus;\n let status = false;\n if (convertedTime > lpt) {\n status = true;\n }\n modelProcessStatus[mlModel[\"ml_model_id\"]] = status;\n }\n }\n\n if (this.props.monitorModule.mlModelMapping !== undefined && Object.keys(this.props.monitorModule.mlModelMapping).length > 0) {\n for (let mlModel of Object.keys(this.props.monitorModule.mlModelMapping)) {\n if (!(mlModel in modelProcessStatus)) {\n modelProcessStatus[mlModel] = true;\n }\n }\n }\n\n return (\n <>\n { Object.keys(lastProfilingTimeDict).length === 0 ? \"\" :\n
    \n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n
    \n
    \n label.includes(query)}\n id=\"chooseModelForModelPerformance\"\n options={this.props.mlModelOptions}\n onChange={this.changeModel}\n classNamePrefix='form-control'\n placeholder=\"Choose Model\"\n />\n
    \n
    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n
    \n
    \n
    \n }\n\n {\n (this.state.mlModel.length === 0) ?\n \n :\n ''\n }\n {\n this.state.mlModel.length !== 0 && (this.state.loadValue === true || Object.keys(lastProfilingTimeDict).length === 0) ?\n }\n />\n :\n this.state.mlModel.map((groupData, index) => {\n return (}\n />);\n })\n\n }\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(ModelPerformance);","import React from 'react';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faChartArea} from \"@fortawesome/free-solid-svg-icons\";\nimport moment from 'moment';\n\n\nclass CustomListInCell extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.getProfileListComponents = this.getProfileListComponents.bind(this);\n }\n\n getProfileListComponents(listData) {\n return listData.map(x =>\n
    \n
    {x.text}
    \n {x.timeValue !== undefined ?\n
    \n {moment(x.timeValue).utcOffset(0).format('Do MMMM YYYY')}
    \n {moment(x.timeValue).utcOffset(0).format('HH:mm:ss')}
    \n
    \n
    \n :\n
    {x.value}
    \n }\n
    \n );\n }\n\n render() {\n const listData = this.props.listData;\n if (listData === undefined || listData === null) {\n return \"\"\n }\n\n if (listData.length === 0 && this.props.isModel === true) {\n return (\n
    \n

    \n \n

    \n

    {(this.props.inProgress !== undefined && this.props.inProgress === true) ? \"Model Profiling is in-progress\" : this.props.noModelConfigured !== undefined && this.props.noModelConfigured === false ? \"No data found\" : \"Model not configured\"}

    \n
    \n );\n }\n\n return (\n <>\n {this.getProfileListComponents(listData)}\n \n );\n\n }\n}\n\n\nexport default CustomListInCell;","import React from \"react\";\nimport Image from \"../components/image\";\nimport MonitorChartGroup from \"./components/monitorChartGroup\";\nimport {connect} from \"react-redux\";\nimport AdvancedFilterModel from \"./components/advanced_filter_model\";\nimport {ML_MODEL_WITH_MODEL_EVALUATION_METRICS, MODEL_EVALUATION} from \"../utils/constant\";\n\nclass MPListViewFullScreen extends React.Component {\n\n\n constructor(props, context) {\n super(props, context);\n this.formGroupedChart = this.formGroupedChart.bind(this);\n\n this.state = {\n updatedKey: \"k1\",\n fullScreenData: {},\n variant: this.props.variant,\n selectedMlModel: this.props.selectedMlModel\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.selectedMlModel !== state.selectedMlModel) {\n return {\n selectedMlModel: props.selectedMlModel\n }\n }\n\n return null;\n }\n\n formGroupedChart() {\n let selectedMlModel = this.state.selectedMlModel;\n\n let ml_model_id = 0;\n if (selectedMlModel !== undefined && selectedMlModel !== null) {\n ml_model_id = selectedMlModel.value;\n }\n\n const groupedData = this.props.fullScreenData;\n let rowCount = 0\n let ModelEvaluationMetrics=selectedMlModel.filter(x=>(x.mlType !== undefined && ML_MODEL_WITH_MODEL_EVALUATION_METRICS.includes(x.mlType)))\n let hasEvaluationMetrics = false;\n if (ModelEvaluationMetrics.length > 0){\n hasEvaluationMetrics=true;\n }\n return Object.keys(groupedData).map((key, index) => {\n let loadValue = !this.props.monitorModule.modelPerformanceFetchCompleted;\n let sectionType = groupedData[key][\"type\"]\n if(key === MODEL_EVALUATION && hasEvaluationMetrics === false){\n return \"\"\n }\n rowCount = rowCount + 1\n if(this.props.selectedMetrics.length > 0){\n let sectionFiltered = this.props.selectedMetrics.filter(x=>x.type === sectionType)\n if(sectionFiltered.length === 0){\n rowCount = rowCount - 1\n return \"\"\n }\n }\n return (\n (\n\n ));\n });\n }\n\n render() {\n let modelMonitoringData = this.props.fullScreenData[\"Model Monitoring\"][\"data\"]\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    {this.props.title}

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n {this.props.lastProfilingTimeModelInside !== undefined && this.props.lastProfilingTimeModelInside !== null ?
    \n

    \n {`Your data last profiled at ${this.props.lastProfilingTimeModelInside}`}\n \n

    \n
    : \"\" }\n {this.formGroupedChart()}\n
    \n
    \n
    \n
    \n
    \n
    \n )\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MPListViewFullScreen);","/**\n * Represents the Monitor page -> Model performance -> List View tab contents\n * */\n\nimport React from 'react';\nimport { connect } from \"react-redux\";\nimport moment from 'moment';\nimport Load from '../components/loadAction';\nimport {\n filterInfoData_mlModel,\n formModelErrorDataForListView,\n getGroupedDataListView,\n getTimeFilteredData_mlModel,\n setModelPerformanceTimeFilterPreviewPage,\n} from \"../utils/common_utils\";\nimport _ from 'lodash';\nimport { DISPLAY_DATE_FORMAT, MONITOR_MODEL_PERF_LIST_VIEW_HEADERS } from \"../utils/constant\";\nimport BasicPortlet from \"../components/basicPortlet\";\nimport QualdoDataTable from \"../components/bootstrapTable\";\nimport CustomListInCell from \"./components/customListInCell\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowRight, faCalendar } from \"@fortawesome/free-solid-svg-icons\";\nimport ThumbnailChartList from \"./components/thumbnailChartList\";\nimport MPListViewFullScreen from \"./MPListViewFullScreen\";\nimport Select from \"react-select\";\n\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\n\n\nclass MpListView extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.changeModelInFullScreen = this.changeModelInFullScreen.bind(this);\n this.getMPListTableComponents = this.getMPListTableComponents.bind(this);\n this.getCustomClassForActions = this.getCustomClassForActions.bind(this);\n this.closeFullScreenMode = this.closeFullScreenMode.bind(this);\n this.changeModelMPListViewTable = this.changeModelMPListViewTable.bind(this);\n this.filterInfoData_mlModel = filterInfoData_mlModel.bind(this);\n this.getTimeFilteredData_mlModel = getTimeFilteredData_mlModel.bind(this);\n this.getGroupedDataListView = getGroupedDataListView.bind(this);\n\n let tableDataListView = this.props.tableDataListView;\n let completeFullscreenData = this.props.completeFullscreenData;\n let modelDataSourceDetails = this.props.modelDataSourceDetails;\n let mlModelOptions = this.props.mlModelOptions;\n\n let fullModelInfo = this.props.monitorModule.mlModelDetails\n const propsDataModuleInfo = this.props.dataModule.info;\n\n this.state = {\n fullScreenClassKey: '',\n isInFullScreenMode: false,\n selectedMetrics: [],\n propsDataModuleInfo: propsDataModuleInfo,\n completeFullscreenData: completeFullscreenData,\n completeTableData: tableDataListView,\n currentTableData: _.cloneDeep(tableDataListView),\n modelFilteredData: [],\n fullScreenData: {},\n startDateInside: null,\n endDateInside: null,\n selectedModelID: null,\n lastProfilingTimeModel: null,\n lastProfilingTimeModelInside: null,\n selectedModelInFullScreen: null,\n fullModelInfo: fullModelInfo,\n startDate: moment(new Date()),\n tableUpdated: this.props.tableUpdated,\n filterApplied: false,\n timeFilterApplied: false,\n isAdvancedFilterApplied: false,\n mlModelOptions: mlModelOptions,\n modelDataSourceDetails: modelDataSourceDetails,\n selectedDataSource: this.props.selectedDataSource\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n let tableDataListView = props.tableDataListView;\n let completeFullscreenData = props.completeFullscreenData;\n let mlModelOptions = props.mlModelOptions;\n let modelDataSourceDetails = props.modelDataSourceDetails;\n const dataChanged = (state.completeTableData !== tableDataListView ||\n state.completeFullscreenData !== completeFullscreenData ||\n state.mlModelOptions !== mlModelOptions ||\n modelDataSourceDetails !== state.modelDataSourceDetails);\n\n /* Assign the latest updated data from props to the state variable*/\n if (dataChanged) {\n return {\n completeTableData: tableDataListView,\n currentTableData: _.cloneDeep(tableDataListView),\n completeFullscreenData: completeFullscreenData,\n mlModelOptions: mlModelOptions,\n tableUpdated: !state.tableUpdated,\n modelDataSourceDetails: modelDataSourceDetails\n };\n }\n\n return null;\n }\n\n changeModelMPListViewTable(selectedModel) {\n let selectedModelID = selectedModel.value;\n\n let filteredRows = [];\n let integrationId;\n for (let rowData of this.state.currentTableData) {\n // Index 4 has the model id as its value\n if (rowData[4].value === selectedModelID) {\n filteredRows.push(rowData);\n integrationId = rowData[4].integrationId\n }\n }\n let lastProfilingTimeModel = this.props.dataModule.lastProfilingTime[integrationId]\n\n this.setState({\n modelFilteredData: filteredRows,\n lastProfilingTimeModel: lastProfilingTimeModel,\n selectedModelID: selectedModelID,\n selectedDataSource: integrationId\n });\n }\n\n getCustomClassForActions() {\n /**\n * This function returns a \"function\" which will provide the class for entries\n * i.e the cells of the tables\n * */\n\n return (cell, row, rowIndex, colIndex) => {\n // 5 Represents the Column index of the 'Action' column\n // Refer 'MONITOR_MODEL_PERF_LIST_VIEW_HEADERS' variable from constant.js\n if (colIndex === 5) {\n return \"align-middle\";\n }\n\n return \"\";\n };\n }\n\n setFullScreen(selectedModelID, integrationId) {\n const mlModelMapping = this.props.monitorModule.mlModelMapping;\n let selectedModelInFullScreen = [{\n \"label\": mlModelMapping[selectedModelID],\n \"value\": selectedModelID\n }];\n\n // Select the full screen data to be shown inside the Detailed full screen chart\n let fullScreenData = this.getGroupedDataListView([], this.state.completeFullscreenData, selectedModelInFullScreen)\n let lastProfilingTimeModelInside = this.props.dataModule.lastProfilingTime[integrationId]\n\n\n this.setState({\n fullScreenClassKey: \"show\",\n isInFullScreenMode: true,\n fullScreenData: fullScreenData,\n lastProfilingTimeModelInside: lastProfilingTimeModelInside,\n selectedModelInFullScreen: selectedModelInFullScreen\n });\n }\n\n closeFullScreenMode() {\n this.setState({\n fullScreenClassKey: '',\n isInFullScreenMode: false,\n isAdvancedFilterApplied: false,\n startDateInside: null,\n endDateInside: null,\n selectedMetrics: []\n });\n }\n\n changeModelInFullScreen(selectedModels, selectedMetrics = [], startDate, endDate) {\n let fullScreenData = this.getGroupedDataListView(selectedMetrics, this.state.completeFullscreenData, selectedModels)\n this.setState({\n selectedModelInFullScreen: selectedModels, selectedMetrics: selectedMetrics, fullScreenData: fullScreenData,\n startDateInside: startDate, endDateInside: endDate, timeFilterApplied: true, isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied\n });\n }\n\n getMPListTableComponents(actionType, headerValue, cell) {\n\n if (headerValue === \"Performance Metrics\") {\n const listData = cell.value;\n return (\n \n \n );\n } else if ([\"Model Error Summary\", \"Model Summary\"].includes(headerValue)) {\n return \n } else if (headerValue === \"Action\") {\n return (\n
    \n \n \n \n

    Detailed Charts

    \n
    \n );\n }\n\n return cell;\n }\n\n filterModelErrorSummaryData(rowData, selectedDateMoment, noModelConfigured, mlModelId) {\n let modelErrorSummary = rowData.find(x => x.type === \"modelErrorSummary\");\n if (modelErrorSummary === undefined || modelErrorSummary === null) {\n return;\n }\n\n const endDate = selectedDateMoment.endOf(\"day\").toDate();\n const startDate = selectedDateMoment.startOf(\"day\").toDate();\n const propsDataModuleInfo = this.props.dataModule.info;\n\n const errorSummaryData = formModelErrorDataForListView([], this.state.modelDataSourceDetails,\n propsDataModuleInfo, mlModelId, true, startDate, endDate);\n modelErrorSummary.value = errorSummaryData;\n modelErrorSummary.noModelConfigured = noModelConfigured\n }\n\n handleTimeFilter(event, picker) {\n const selectedDate = picker.startDate;\n let clonedData = _.cloneDeep(this.state.completeTableData);\n let filteredRows = [];\n let modelFilteredRows = [];\n for (let rowData of clonedData) {\n let detailedChart = rowData.find(x => x.type === \"detailedChart\");\n let createdTime = moment(detailedChart.createdTime).startOf(\"day\").toDate();\n let mlModelId = parseInt(detailedChart.value);\n let selectedModel = this.state.selectedModelID;\n let modelSummary = rowData.find(x => x.type === \"modelSummary\");\n let modelCreatedDate = modelSummary[\"value\"][3]\n let noModelConfigured = moment(selectedDate).isBefore(createdTime)\n if (modelCreatedDate !== undefined && noModelConfigured === true) {\n modelCreatedDate[\"highlight\"] = true\n\n } else if (modelCreatedDate !== undefined) {\n modelCreatedDate[\"highlight\"] = false\n }\n this.filterModelErrorSummaryData(rowData, selectedDate, noModelConfigured, mlModelId);\n let thumbnailData = rowData.find(x => x.type === \"thumbnailCharts\");\n\n const thumbnailVal = thumbnailData.value;\n let lastProfilingTime = thumbnailData.lastProfilingTime;\n let chartDate = selectedDate.endOf(\"day\").toDate()\n for (let _cData of thumbnailVal.data) {\n let updatedThumbnailCharts = [];\n\n for (let _singleThumbnailData of _cData.data) {\n const actChartData = _singleThumbnailData.chartData;\n if (_singleThumbnailData.name === \"Confusion matrix\") {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n let filteredData = setModelPerformanceTimeFilterPreviewPage(_singleThumbnailData, startDate, endDate);\n if (filteredData === null) {\n continue;\n }\n updatedThumbnailCharts.push(filteredData);\n actChartData.time = lastProfilingTime\n } else if (_singleThumbnailData.name === \"mean_shap_value\") {\n continue\n } else {\n let timeArr = actChartData.time;\n if (timeArr === undefined) {\n continue;\n }\n\n let filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(chartDate));\n const filteredLength = filteredArr.length;\n // If model is not configured on selected time period we don't need to filter the data as there is no data.\n if (filteredLength === 0 || noModelConfigured) {\n continue;\n }\n\n actChartData.time = timeArr.slice(0, filteredLength);\n if (actChartData.values !== undefined) {\n actChartData.values = actChartData.values.slice(0, filteredLength);\n }\n if (actChartData.Y2_Values !== undefined) {\n actChartData.Y2_Values = actChartData.Y2_Values.slice(0, filteredLength);\n }\n\n updatedThumbnailCharts.push(_singleThumbnailData);\n }\n }\n\n _cData.data = updatedThumbnailCharts;\n }\n thumbnailData.noModelConfigured = noModelConfigured\n if (selectedModel !== null && Number(mlModelId) === Number(selectedModel)) {\n modelFilteredRows.push(rowData);\n }\n\n filteredRows.push(rowData);\n }\n\n this.setState({\n currentTableData: filteredRows,\n modelFilteredData: modelFilteredRows,\n filterApplied: !this.state.filterApplied,\n startDate: selectedDate,\n timeFilterApplied: true\n });\n }\n\n render() {\n let tableData = {\n \"data\": (this.state.modelFilteredData.length > 0 ? this.state.modelFilteredData : this.state.currentTableData),\n \"headers\": MONITOR_MODEL_PERF_LIST_VIEW_HEADERS\n };\n\n\n\n const customKey = `${tableData.data.length}_${this.state.tableUpdated}_${this.state.filterApplied}`;\n\n const currSelectedData = this.state.startDate;\n const currentSelectedDateAsTxt = currSelectedData === null ?\n ' ' :\n currSelectedData.format(DISPLAY_DATE_FORMAT);\n const selectedDataSource = this.state.selectedDataSource !== undefined ? this.state.selectedDataSource : this.props.dataModule.selectedDataSource ;\n let lastProfilingTime = this.props.dataModule.lastProfilingTime[selectedDataSource];\n\n return (\n\n <>\n
    \n
    \n
    \n

    \n {lastProfilingTime === null || lastProfilingTime === undefined ? \"--\" : `Your data last profiled at ${lastProfilingTime}`}\n

    \n
    \n
    \n\n
    \n
    \n label.includes(query)}\n id=\"chooseModelMPLV\"\n options={this.state.mlModelOptions}\n onChange={this.changeModelMPListViewTable}\n classNamePrefix='form-control'\n placeholder=\"Choose Model\"\n />\n
    \n
    \n \n \n \n \n \n {currentSelectedDateAsTxt}\n \n \n
    \n
    \n
    \n\n {this.state.isInFullScreenMode ?\n \n\n \n :\n \n :\n \n }\n />\n }\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MpListView);","import React from 'react';\nimport Image from '../../components/image';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport Form from 'react-bootstrap/Form';\nimport {Button} from \"react-bootstrap\";\nimport {Formik, ErrorMessage} from 'formik';\nimport * as yup from 'yup';\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCalendar, faCheck} from \"@fortawesome/free-solid-svg-icons\";\nimport moment from \"moment\";\nimport {DISPLAY_DATE_FORMAT} from \"../../utils/constant\";\nimport {getDefaultDateRangeOptions} from \"../../utils/common_utils\";\nimport {getPlaceholder, Option, handleTime, getOptions} from \"./filter_common_utils\";\nimport CustomSelectNestedCheckbox from \"./customSelectNestedCheckbox\";\nimport CustomSelect from \"./customSelect\";\nimport _ from 'lodash';\n\nclass ABCompareViewAdvFilterModel extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.changeModel = this.changeModel.bind(this);\n this.getOptions = getOptions.bind(this);\n this.handleTime = handleTime.bind(this);\n this.changeMetric = this.changeMetric.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.fillDetails = this.fillDetails.bind(this);\n this.getPlaceholder = getPlaceholder.bind(this);\n this.changeAttributes = this.changeAttributes.bind(this);\n this.handleAndOrFilterSelection = this.handleAndOrFilterSelection.bind(this);\n let startDate = moment().subtract(9, 'days').set({\"hour\": 0, \"minute\": 0, \"seconds\": 0});\n let endDate = moment().endOf('day').set({\"hour\": 23, \"minute\": 59, \"seconds\": 59});\n this.state = {\n startDate: startDate,\n endDate: endDate,\n selectedModel: [],\n selectedAttributes: [],\n attributeOptions: [],\n useAndFilter: true,\n selectedMetrics: [],\n showAttributes: true,\n showDropDown: false,\n initial: {\n model: \"\",\n metric: \"\",\n attributesModel: \"\"\n\n }\n }\n\n }\n\n componentDidMount() {\n this.fillDetails();\n\n }\n\n changeAttributes(selected) {\n this.setState({selectedAttributes: selected});\n }\n\n\n fillDetails() {\n let propsSelectedMlModel = this.props.selectedMlModel;\n let metricOptions = this.getOptions(propsSelectedMlModel);\n let initial = this.state.initial\n let selectedMetrics = _.cloneDeep(metricOptions)\n let selectedModel = []\n selectedMetrics = [{\"label\": \"All\", \"value\": \"*\", \"type\": \"*\"}].concat(selectedMetrics)\n if (this.props.underPerformModelIDs !== undefined && this.props.underPerformModelIDs.length > 0) {\n let underPerformModelIDs = this.props.underPerformModelIDs\n initial.model = underPerformModelIDs[0]\n initial.metric = metricOptions[0].value\n selectedModel = this.props.mlModelOptions.filter(x => underPerformModelIDs.includes(x.value))\n if (selectedModel.length === this.props.mlModelOptions.length) {\n selectedModel = [{\"label\": \"All\", \"value\": \"*\", \"type\": \"*\"}].concat(selectedModel)\n }\n this.setState({\n initial: initial,\n selectedModel: selectedModel,\n selectedMetrics: selectedMetrics,\n });\n } else if (propsSelectedMlModel !== null) {\n selectedModel = propsSelectedMlModel\n initial.model = propsSelectedMlModel[0].value\n initial.metric = metricOptions[0].value\n if (selectedModel.length === this.props.mlModelOptions.length) {\n selectedModel = [{\"label\": \"All\", \"value\": \"*\", \"type\": \"*\"}].concat(selectedModel)\n }\n this.setState({\n initial: initial,\n selectedModel: selectedModel,\n selectedMetrics: selectedMetrics,\n })\n\n\n }\n if (this.props.startDate !== undefined && this.props.endDate !== undefined) {\n this.setState({startDate: this.props.startDate, endDate: this.props.endDate})\n }\n if (this.props.type === \"modelError\") {\n let attributeOptions = []\n let propsAttributeOptions = this.props.attributeOptions\n for (let i = 0; i < selectedModel.length; i++) {\n if (selectedModel[i].label === \"All\") {\n continue\n }\n let modelId = Number(selectedModel[i][\"value\"])\n let selected = propsAttributeOptions[modelId]\n attributeOptions = attributeOptions.concat(selected)\n }\n\n let selectedAttributes = [{\"label\": \"All\", \"value\": \"*\", \"type\": \"*\"}].concat(_.cloneDeep(attributeOptions))\n this.setState({attributeOptions: attributeOptions, selectedAttributes: selectedAttributes});\n }\n }\n\n handleSubmit(event) {\n this.setState({showDropDown: false});\n\n this.props.changeModelInFullScreen(this.state.selectedModel, this.state.selectedMetrics,\n this.state.startDate, this.state.endDate, this.state.useAndFilter);\n\n }\n\n changeModel(event) {\n this.setState({selectedModel: event});\n if (this.props.type === \"modelError\") {\n let attributeOptions = []\n let propsAttributeOptions = this.props.attributeOptions\n for (let i = 0; i < event.length; i++) {\n if (event[i].label === \"All\") {\n continue\n }\n let modelId = Number(event[i][\"value\"])\n let selected = propsAttributeOptions[modelId]\n attributeOptions = attributeOptions.concat(selected)\n }\n\n this.setState({attributeOptions: attributeOptions, selectedAttributes: []});\n }\n\n }\n\n\n changeMetric(event) {\n this.setState({selectedMetrics: event});\n if (this.props.type === \"modelError\") {\n let filtered = event.filter(x => [\"type4\", \"type5\"].includes(x.value))\n let showAttributes = filtered.length > 0 ? true : false;\n\n this.setState({showAttributes: showAttributes});\n if (!showAttributes) {\n this.setState({selectedAttributes: []});\n }\n\n }\n }\n\n reset() {\n\n this.setState({\n initial: {\n model: \"\",\n metric: \"\",\n attributesModel: \"\"\n\n },\n selectedMetrics: [],\n selectedAttributes: [],\n selectedDataSet: [],\n selectedModel: [],\n showAttributes: false\n\n });\n }\n\n handleAndOrFilterSelection() {\n this.setState({useAndFilter: !this.state.useAndFilter});\n }\n\n render() {\n let ranges = getDefaultDateRangeOptions();\n let metricLabel = \"Performance Metric\";\n let modelSchema = yup.object({\n model: yup.string().required(\"Model is a required field\"),\n metric: yup.string().required(`${metricLabel} is a required field`),\n });\n let metricOptions = this.getOptions(this.state.selectedModel);\n\n return (\n {({\n values,\n errors,\n touched,\n setFieldValue,\n setValues,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n }) => (<>\n {\n this.state.showDropDown === true ? this.setState({showDropDown: false}) : this.setState({showDropDown: true})\n }} id=\"dropdown-autoclose-false\" className=\"btn-light\">\n Filters\n \n \n
    \n
    \n

    Select Date

    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n \n Model\n {\n if (selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"model\")(selectedOption[0].value.toString());\n } else {\n handleChange(\"model\")(\"\");\n }\n this.changeModel(selectedOption);\n }}\n allowSelectAll={true}\n placeholder={this.getPlaceholder(\"Choose Model\", this.state.selectedModel, this.props.mlModelOptions)}\n value={this.state.selectedModel}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n />\n \n \n \n {metricLabel}\n {\n if (selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"metric\")(selectedOption[0].value.toString());\n } else {\n handleChange(\"metric\")(\"\");\n }\n this.changeMetric(selectedOption);\n }}\n allowSelectAll={true}\n placeholder={this.getPlaceholder(`Choose ${metricLabel}`, this.state.selectedMetrics, metricOptions)}\n value={this.state.selectedMetrics}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n />\n \n \n\n \n
    \n \n \n Filter using AND\n \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n\n \n )}\n \n\n );\n }\n\n}\n\nexport default ABCompareViewAdvFilterModel;","import React from \"react\";\nimport ChartFilterHeader from \"./chartFilterHeader\";\nimport {CLASS_COLORS, IS_NONE_CHECK} from \"../../utils/constant\";\nimport {performTimeFilterForModelABCombinedCharts} from \"../../utils/common_utils\";\n\nclass MpCVHorizontalSections extends React.Component {\n\n getCombinedChart() {\n const horizontalChartData = this.props.horizontalChartData;\n const combinedChart = horizontalChartData.combinedChart;\n const combinedKey = `dc_${combinedChart.key}`;\n\n return (\n
    \n \n
    )\n }\n\n getSingleChart(chartData, divPart, lineColors) {\n /* Previously used. Not used currently.*/\n\n if (IS_NONE_CHECK.includes(chartData)) {\n // Incoming chart data is undefined or null. So no further processing\n return '';\n }\n\n const isDoubleLineChart = chartData[\"name\"].includes(\" vs \");\n const reqKey = `mp_cv_dcs_${chartData.key}`;\n const areaColor = CLASS_COLORS[lineColors][\"area\"];\n const lineColor = CLASS_COLORS[lineColors][\"line\"];\n\n return (\n
    \n \n
    \n );\n }\n\n getIndividualChartsGroup() {\n /* Previously used. Not used currently.*/\n const horizontalChartData = this.props.horizontalChartData;\n const chartA = horizontalChartData.chart1;\n const chartB = horizontalChartData.chart2;\n const chartC = horizontalChartData.chart3;\n let count = 0;\n if (!IS_NONE_CHECK.includes(chartA)) {\n count = count + 1;\n }\n\n if (!IS_NONE_CHECK.includes(chartB)) {\n count = count + 1;\n }\n\n if (!IS_NONE_CHECK.includes(chartC)) {\n count = count + 1;\n }\n\n if (count === 0) {\n return \"Empty\";\n }\n\n const divPart = 12 / count;\n\n return (\n <>\n {this.getSingleChart(chartA, divPart, \"compare_a\")}\n {this.getSingleChart(chartB, divPart, \"compare_b\")}\n {this.getSingleChart(chartC, divPart, \"compare_c\")}\n \n )\n }\n\n render() {\n\n return (\n <>\n {this.getCombinedChart()}\n {/*{this.getIndividualChartsGroup()}*/}\n \n );\n\n }\n}\n\nexport default MpCVHorizontalSections;\n","import React from \"react\";\nimport {IS_NONE_CHECK} from \"../../utils/constant\";\nimport BasicPortlet from \"../../components/basicPortlet\";\nimport Load from \"../../components/loadAction\";\nimport NoErrorComponent from \"./monitorNoResult\";\nimport {LazyLoadComponent} from \"react-lazy-load-image-component\";\nimport MpCVHorizontalSections from \"./mpCVHorizontalSections\";\n\nclass MpCompareViewChartGroup extends React.Component {\n\n renderModalChart() {\n if (IS_NONE_CHECK.includes(this.props.groupData)) {\n return \"\";\n }\n\n if (this.props.loadValue === true) {\n return (\n
    \n }\n />\n
    \n );\n }\n\n let charts = this.props.groupData[\"data\"];\n if (charts.length === 0) {\n return (\n \n );\n }\n\n return charts.map((horizontalChartData, index) => {\n const combinedChart = horizontalChartData.combinedChart;\n if (IS_NONE_CHECK.includes(combinedChart)) {\n return \"\";\n }\n\n const key = combinedChart.key;\n\n return (\n }>\n\n \n\n \n\n \n );\n });\n\n }\n\n render() {\n return (\n
    \n
    \n

    \n \n {this.props.index}\n \n {this.props.groupData.header}\n

    \n

    \n {this.props.groupData.sub_header}\n

    \n
    \n
    \n
    \n {this.renderModalChart()}\n
    \n
    \n
    \n );\n\n }\n}\n\nexport default MpCompareViewChartGroup;\n","import React from \"react\";\nimport Image from \"../components/image\";\nimport {connect} from \"react-redux\";\nimport ABCompareViewAdvFilterModel from \"./components/adv_filter_mp_compare_view\";\nimport MpCompareViewChartGroup from \"./components/mpCompareViewChartGroup\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\n\nclass MPCompareViewFullScreen extends React.Component {\n\n\n constructor(props, context) {\n super(props, context);\n this.formGroupedChart = this.formGroupedChart.bind(this);\n\n this.state = {\n updatedKey: \"k1\",\n fullScreenData: {},\n variant: this.props.variant,\n selectedMlModel: this.props.selectedMlModel\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.selectedMlModel !== state.selectedMlModel) {\n return {\n selectedMlModel: props.selectedMlModel\n }\n }\n\n return null;\n }\n\n formGroupedChart() {\n\n const groupedData = this.props.fullScreenData;\n\n return Object.keys(groupedData).map((key, index) => {\n let loadValue = !this.props.monitorModule.modelPerformanceFetchCompleted;\n\n return (\n (\n\n ));\n });\n }\n\n render() {\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    {this.props.title}

    \n
    \n\n
    \n \n
    \n\n \n
    \n
    \n
    \n
    \n {!IS_NONE_CHECK.includes(this.props.lastProfilingTimeModelInside) ?\n
    \n

    \n {`Your data last profiled at ${this.props.lastProfilingTimeModelInside}`}\n \n

    \n
    : \"\"\n }\n {this.formGroupedChart()}\n
    \n
    \n
    \n
    \n
    \n
    \n )\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MPCompareViewFullScreen);","import React from \"react\";\n\n\nclass ABModelName extends React.Component {\n\n render() {\n const firstComponent = this.props.nameComponents[0];\n const secondComponent = this.props.nameComponents[1];\n const thirdComponent = this.props.nameComponents[2];\n\n return (\n <>\n\n
    \n \n {firstComponent.text}\n {firstComponent.name}\n
    \n\n
    \n \n {secondComponent.text}\n {secondComponent.name}\n
    \n\n {thirdComponent === undefined ?\n '' :\n
    \n \n {thirdComponent.text}\n {thirdComponent.name}\n
    \n }\n\n )\n }\n}\n\n\nexport default ABModelName;\n","import React from \"react\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faExclamationTriangle} from \"@fortawesome/free-solid-svg-icons\";\nimport RcTooltip from 'rc-tooltip';\n\n\nclass BorderedSummary extends React.Component {\n\n getKeyValuePairs() {\n return this.props.keyValueData.map((x, index) =>\n
    \n
    {x.key}:
    \n
    \n {x.value}\n
    \n
    \n );\n }\n\n render() {\n\n return (\n
    \n \n
    \n
    \n {this.getKeyValuePairs()}\n
    \n\n {this.props.showErrorButton === true ?\n
    \n\n \n {'View Model Errors'}\n \n }\n arrowContent={
    }>\n \n
    \n\n
    \n : ''\n }\n\n
    \n
    \n )\n }\n}\n\n\nexport default BorderedSummary;\n","import React from 'react';\nimport BorderedSummary from \"../../components/tableCellComponents/borderedSummary\";\n\nclass ModelABSummaryList extends React.Component {\n\n render() {\n const firstComponent = this.props.summaries[0];\n const secondComponent = this.props.summaries[1];\n const thirdComponent = this.props.summaries[2];\n\n return (\n <>\n\n \n\n \n\n\n \n\n \n\n {thirdComponent === undefined ?\n '' :\n \n\n \n }\n\n\n \n )\n }\n}\n\nexport default ModelABSummaryList;\n","import React from 'react';\nimport ChartBody from \"../../components/chartBody\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faChartArea} from \"@fortawesome/free-solid-svg-icons\";\nimport {AB_THUMBNAIL_LIMIT} from \"../../utils/constant\";\n\n\nclass ModelABThumbnailChartList extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n\n this.getHorizontalSection = this.getHorizontalSection.bind(this);\n this.renderSingleThumbnailChart = this.renderSingleThumbnailChart.bind(this);\n }\n\n renderSingleThumbnailChart(singleChartData) {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n\n\n
    \n
    \n
    \n );\n }\n\n getHorizontalSection(sectionData) {\n let sectionName = sectionData.name;\n let sectionKey = sectionData.key;\n\n if (sectionData.data.length === 0) {\n return (
    \n
    {sectionName}
    \n
    \n
    \n

    \n \n

    \n {this.props.noModelConfigured === true ?\n \"Model not configured\" :\n \"No Charts Found\"\n }\n
    \n
    \n
    );\n\n }\n\n // Get only 'n' number of charts so that UI will not be crowded\n const currSectionCharts = sectionData.data.slice(Math.max(sectionData.data.length - AB_THUMBNAIL_LIMIT, 0));\n\n return (\n
    \n
    {sectionName}
    \n
    \n \n {\n currSectionCharts.map(_d => this.renderSingleThumbnailChart(_d))\n }\n\n
    \n \n \n );\n }\n\n render() {\n let allHorizontalSections = this.props.listData;\n return (\n allHorizontalSections.length > 0 ? allHorizontalSections.map(x => this.getHorizontalSection(x)) :\n
    \n

    \n \n

    \n

    \n {this.props.noModelConfigured === true ? \"Model not configured\"\n : (this.props.noDataAvailable === true ?\n \"Dataset not available\" :\n \"No chart found\")}\n

    \n
    \n )\n }\n}\n\nexport default ModelABThumbnailChartList;","import React from 'react';\nimport Image from '../components/image';\nimport ChartFilterHeader from './components/chartFilterHeader';\nimport AdvancedFilterModel from \"./components/advanced_filter_model\";\nimport _ from 'lodash';\nimport {\n getChartType,\n convertDecimalDigits,\n sortModelErrorsBasedOnMetrics,\n filterBoxPlotData,\n getRowCountContributionFromData, getChartFilterData, getCustomMetrics\n} from \"../utils/common_utils\";\nimport Load from '../components/loadAction';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport NoErrorComponent from './components/monitorNoResult';\nimport {\n NO_ERROR_CHART_COLORS,\n LIGHT_COLOR_MAP,\n ML_BOX_PLOT_LIST,\n SINGLE_ARROW_CHART_TYPE, GENERIC_CONSTANTS,\n FEATURE_DRIFT_ALIASES, MAX_DATA_POINTS_FOR_LIST_VIEW,\n DRIFT_PATTERN_TYPES, FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT,\n FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT, IS_NONE_CHECK, SECTION_TYPE_MAPPING, CUSTOM_ML_METRIC\n} from \"../utils/constant\";\nimport {typeMappings} from './components/filter_common_utils';\n\nclass ModelErrListFullScreen extends React.Component {\n\n constructor(props) {\n super(props);\n this.changeModel = this.changeModel.bind(this);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.renderGroup = this.renderGroup.bind(this);\n this.renderGroupItems = this.renderGroupItems.bind(this);\n this.getFilteredChartData = this.getFilteredChartData.bind(this);\n this.updateCharts = this.updateCharts.bind(this);\n\n let selectedModel = null;\n\n let showOnlyErrorData = false;\n\n this.state={\n data: this.props.data,\n idValue: this.props.title,\n chartType: \"areaChart\",\n fullScreen: \"fade\",\n showOnlyErrorData: showOnlyErrorData,\n isAdvancedFilterApplied: false,\n showFullScreen: false,\n initialSelection: selectedModel,\n selectedDataSet: null,\n selectedModel: selectedModel,\n advancedModels: [],\n variant: this.props.variant,\n modalData: this.props.modalData,\n showErrorsOnly: true,\n customMetricsOptions: getCustomMetrics(this.props.modalData[\"dataSet\"]),\n aggregateOptions: this.getAggregateOptions(this.props.modalData[\"attribute\"]),\n compareAttributeOptions: this.getAttributeOptions(this.props.modalData[\"attribute\"]),\n compareDatasetOptions: this.getDataSrcOptions(this.props.modalData[\"dataSet\"]),\n completeModalData: _.cloneDeep(this.props.modalData),\n underPerformModelIDs: this.props.underPerformModelIDs,\n selectedMetrics: [],\n startDate: null,\n endDate: null,\n selectedAttributes: []\n }\n }\n\n static getDerivedStateFromProps(props, state){\n if (props.data !== state.data) {\n return {data : props.data};\n } else{\n return null;\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.data !== this.state.data) {\n let _modalData= _.cloneDeep(this.props.data);\n this.setState({modalData:_modalData});\n }\n }\n\n updateCharts(model, metrics, attributeOptions, startDate, endDate, showErrorsOnly) {\n this.setState({showErrorsOnly: showErrorsOnly, advancedModels: model, selectedMetrics: metrics, startDate: startDate, endDate: endDate,\n selectedAttributes: attributeOptions, isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied});\n }\n\n\n setFullScreen() {\n document.body.classList.add(\"overflow-hidden\");\n this.setState({showFullScreen : true, fullScreen: \"show\"});\n\n if (this.state.initialSelection !== undefined && this.state.initialSelection !== null){\n this.changeModel(this.state.initialSelection);\n }\n\n }\n\n\n getDataSrcOptions(dataSetData) {\n let compareDatasetOptions =[];\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(dataSetData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let dataSetChart = chartData[j];\n let dataSetName = (dataSetChart.title.split(\">\")[2]).split(\"-\")[0]\n if (dataSetName !== undefined && dataSetName !== null) {\n compareDatasetOptions.push({\"label\": dataSetName.trim(), \"value\":dataSetChart.data_set_id, \"type\": dataSetChart.name, \"data\": dataSetChart});\n }\n }\n }\n }\n }\n return compareDatasetOptions;\n }\n\n getAttributeOptions(attributeData) {\n let compareAttributeOptions =[];\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(attributeData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let attr = chartData[j];\n let attribute_name = attr.attribute_name;\n if (attribute_name !== undefined && attribute_name !== null) {\n compareAttributeOptions.push({\"label\": attribute_name, \"value\": attribute_name+\"$\"+attr.name,\"data_set_id\":attr.data_set_id,\n \"data\": attr});\n }\n }\n }\n }\n }\n return compareAttributeOptions;\n }\n\n getAggregateOptions(attributeData) {\n let aggregateOptions =[];\n let profileKeys = [\"avg\", \"duplicate\", \"empty\",\"max\",\"min\",\"mode\",\"std\",\"unique\"];\n if (this.props.variant !== \"accuracy\") {\n return [];\n }\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(attributeData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let attr = chartData[j];\n let attribute_name = attr.attribute_name;\n let drift_pattern = attr.type;\n if (profileKeys.includes(attr.name)) {\n if (attribute_name !== undefined && attribute_name !== null) {\n if (drift_pattern !== undefined && drift_pattern !== null) {\n if (drift_pattern === \"NO_DRIFT\" || drift_pattern === \"not_computed\") {\n aggregateOptions.push({\"label\":{attr.name} , \"value\":attr.name,\"attribute_name\":attribute_name,\n \"data\": attr, \"data_set_id\": attr.data_set_id, \"is_error\": false});\n }\n } else {\n aggregateOptions.push({\"label\":{attr.name} Error , \"value\":attr.name,\"attribute_name\":attribute_name,\n \"data\": attr, \"data_set_id\": attr.data_set_id, \"is_error\": true});\n }\n }\n }\n }\n }\n }\n }\n return aggregateOptions;\n }\n\n renderGroup() {\n let attributeLevelGroupedData = this.props.modalData.attribute;\n let datasetLevelGroupedData = this.props.modalData.dataSet;\n datasetLevelGroupedData = this.getFilteredChartData(datasetLevelGroupedData,\n this.props.selectedMlModel);\n attributeLevelGroupedData = this.getFilteredChartData(attributeLevelGroupedData,\n this.props.selectedMlModel);\n let combinedData = [...datasetLevelGroupedData, ...attributeLevelGroupedData];\n\n // Sort the groups based on our requirement\n combinedData.sort(sortModelErrorsBasedOnMetrics);\n\n return this.renderGroupItems(combinedData)\n }\n\n renderGroupItems(combinedData) {\n let dataSetData;\n let rowCount = 0;\n let level\n return combinedData.map((group, groupId) =>{\n level = group.level\n dataSetData = [group]\n if(dataSetData === undefined){\n return \"\"\n }\n return dataSetData.map((groupData, index) => {\n rowCount = rowCount + 1\n let sectionName = groupData.header\n if(this.state.selectedMetrics.length > 0) {\n let filteredMetrics = this.state.selectedMetrics.filter(x=>x.label === sectionName || sectionName === SECTION_TYPE_MAPPING[x.type]);\n if(filteredMetrics.length === 0){\n rowCount = rowCount - 1\n return \"\"\n }\n } else if(groupData.metric === CUSTOM_ML_METRIC && groupData.data.length === 0) {\n rowCount = rowCount-1;\n return \"\"\n }\n\n\n return (\n <>\n
    \n
    \n

    \n \n {rowCount}\n \n {groupData.header}\n

    \n

    \n {groupData.description}\n

    \n\n
    \n
    \n
    \n { this.renderModalChart(level, groupData.data) }\n
    \n
    \n
    \n \n );\n });\n\n });\n }\n\n\n renderModalChart(chartLevel, chartDataList) {\n let profileKeys = [\"avg\", \"duplicate\", \"empty\",\"max\",\"min\",\"mode\",\"std\",\"unique\"];\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n chartDataList = _.reject(chartDataList, function(d) { return (profileKeys.includes(d.name)); });\n if (chartDataList === undefined || chartDataList === null || chartDataList.length === 0){\n return ();\n }\n\n let isMLModel = this.props.showModelFilter;\n\n /*let defaultModel = null;\n if (this.state.selectedMlModel != null ) {\n defaultModel = this.state.selectedMlModel;\n } else if (this.props.selectedMlModel != null ) {\n defaultModel = this.props.selectedMlModel;\n }*/\n let chartCount = 0;\n\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j =1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n const attribute_name = chartData.attribute_name;\n let lastDiv = (chartDataList.length === index+1 && chartCount === 0)\n if (this.state.showErrorsOnly) {\n if (chartData[\"hasDrift\"] === false && lastDiv === true) {\n return ();\n }\n if (chartData[\"hasDrift\"] === false) {\n return \"\";\n }\n }else if(profileKeys.includes(chartData.name)) {\n return \"\";\n }\n let isUnderPerformingGrid = (this.state.underPerformModelIDs !== undefined)\n if (isMLModel && this.state.showOnlyErrorData && this.state.selectedModel === null && isUnderPerformingGrid) {\n const chartHasNoError = chartData[\"hasDrift\"] === false;\n let modelID = String(chartData[\"ml_model_id\"]);\n if (!this.state.underPerformModelIDs.includes(modelID)){\n return \"\";\n }\n\n if (chartHasNoError && lastDiv === true){\n return ();\n } else if(chartHasNoError) {\n return \"\";\n }\n } else if(isMLModel && this.state.showOnlyErrorData && String(this.state.selectedModel[\"value\"]) !== String(chartData[\"ml_model_id\"]) && lastDiv === true)\n {\n return ();\n } else if(isMLModel && this.state.showOnlyErrorData && String(this.state.selectedModel[\"value\"]) !== String(chartData[\"ml_model_id\"])) {\n return \"\"\n }\n\n if ( chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\") ) {\n\n let id = null;\n let compareModelOptions = null;\n let compareMLAttributeOptions = null;\n let aggregateOptions = null;\n if(this.props.showModelFilter) {\n id = chartData[\"ml_model_id\"];\n compareModelOptions = _.reject(this.state.compareModelOptions, function(d) { return (d.label === chartData.data_set_name || d.value !== chartData.name ); });\n } else {\n id = chartData[\"data_set_id\"];\n }\n\n let key = `modal_${chartData.name}_${id}`;\n let title = this.props.title !== undefined ? this.props.title: '';\n let compareDatasetOptions = null\n let compareType =null;\n let compareAttributeOptions = null;\n if (attribute_name !== undefined && attribute_name !== null && this.props.showModelFilter ) {\n key = key + \"_\" + attribute_name;\n compareMLAttributeOptions = _.reject(this.state.compareAttributeOptions, function(d) { return (d.label === attribute_name || d.value !== chartData.name || d.dataSetName !== chartData.data_set_name); });\n }\n\n let idValue = ''\n let showAggregateError = false;\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function(d) { return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== chartData.name ||\n d.data_set_id !== chartData.data_set_id); });\n aggregateOptions = this.state.aggregateOptions.filter(function (d) { return d.attribute_name === attribute_name && d.data_set_id === chartData.data_set_id});\n let isAggregateError = aggregateOptions.filter(function (d) {return d.is_error === true});\n if (isAggregateError.length > 0) {\n showAggregateError = true;\n }\n }\n if (chartLevel === \"Dataset\") {\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function(d) { return (d.value === chartData[\"data_set_id\"] || d.type !== chartData.name) });\n }\n\n title = title.replace(\" \", \"_\");\n\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n if (chartLevel === \"Dataset\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (ML_BOX_PLOT_LIST.includes(chartData[\"name\"]) && chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n chartType = \"boxPlotZoomable\";\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n if (chartData[\"type\"] === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT) {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT;\n } else {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT;\n }\n }\n\n let filteredData = null;\n let propsStartDate = this.state.startDate === null ? this.props.startDate : this.state.startDate;\n let propsEndDate = this.state.endDate === null ? this.props.endDate : this.state.endDate;\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, false, false, MAX_DATA_POINTS_FOR_LIST_VIEW);\n }\n\n return (\n
    \n }>\n \n \n
    \n\n );\n } else if(lastDiv === true) {\n return ();\n }\n return '';\n });\n }\n }\n\n\n getFilteredChartData(data, selectedMLModel){\n let attributeGrouping= _.cloneDeep(data);\n for (let group of attributeGrouping){\n const updatedData = [];\n for (let chartData of group.data){\n if(this.state.advancedModels.length > 0) {\n let filteredModels = this.state.advancedModels.filter(x=>Number(x.value) === Number(chartData.ml_model_id))\n if(filteredModels.length === 0) {\n continue\n }\n let metricName = typeMappings[chartData.name];\n let filteredMetrics = this.state.selectedMetrics.filter(x=>x.label === metricName || x.label === chartData.name);\n if(filteredMetrics.length === 0) {\n continue\n }\n let typeFiltered = filteredMetrics.filter(x=>[\"type4\", \"type5\"].includes(x.type))\n if(typeFiltered.length > 0) {\n let filteredAttributes = this.state.selectedAttributes.filter(x=>x.value === chartData.attribute_id)\n if(filteredAttributes.length === 0) {\n continue\n }\n }\n }else {\n if(selectedMLModel !== null && Number(chartData.ml_model_id) !== Number(selectedMLModel.value)) {\n continue\n }\n }\n\n updatedData.push(chartData);\n }\n group[\"data\"] = updatedData;\n }\n\n return attributeGrouping;\n }\n\n changeModel(event, obj) {\n const selectedModelID = event[\"value\"];\n const attributeGrouping = this.getFilteredChartData(this.state.completeModalData.attribute,\n [String(selectedModelID)]);\n const datasetGrouping = this.getFilteredChartData(this.state.completeModalData.dataSet,\n [String(selectedModelID)]);\n\n this.setState({\n attributeLevelGroupedData: attributeGrouping,\n datasetLevelGroupedData: datasetGrouping,\n selectedModel: event,\n idValue: event[\"label\"],\n title: \"Model Errors Dashboard - \" + event[\"label\"]\n });\n }\n\n\n\n render() {\n let keyPrefix = this.props.customKey;\n if (IS_NONE_CHECK.includes(keyPrefix)) {\n keyPrefix = \"\";\n }\n\n keyPrefix = keyPrefix + \"modelErrFS\";\n\n return (\n
    \n\n
    \n
    \n
    \n
    \n \n

    \n {this.props.title}\n

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n {!IS_NONE_CHECK.includes(this.props.lastProfilingTimeModelInside) ?\n
    \n

    \n \n {`Your data last profiled at ${this.props.lastProfilingTimeModelInside}`}\n \n

    \n
    : \"\"\n }\n { this.renderGroup() }\n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\nexport default ModelErrListFullScreen;\n\n","/**\n * Represents the Monitor page -> Model performance -> Compare View tab contents\n * */\n\nimport React from 'react';\nimport { connect } from \"react-redux\";\nimport moment from 'moment';\nimport Load from '../components/loadAction';\nimport {\n filterBasedOnMetricNames,\n filterInfoData_mlModel,\n getDefaultDateRangeOptions,\n getGroupedDataListView, getModelOptionsAssociatedWithAB,\n getTimeFilteredData_mlModel,\n filterBasedOnModelAB_ID\n} from \"../utils/common_utils\";\nimport _ from 'lodash';\nimport {\n AB_ADVANCE_FILTER_METRIC_NAMES,\n AB_COMPARE_VIEW_TABLE_HEADERS,\n DISPLAY_DATE_FORMAT, IS_NONE_CHECK, MODEL_PERFORMANCE_GROUPS\n} from \"../utils/constant\";\nimport BasicPortlet from \"../components/basicPortlet\";\nimport QualdoDataTable from \"../components/bootstrapTable\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowRight, faCalendar } from \"@fortawesome/free-solid-svg-icons\";\nimport Select from \"react-select\";\n\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport MPCompareViewFullScreen from \"./MPCompareViewFullScreen\";\nimport ABModelName from \"../components/tableCellComponents/abModelName\";\nimport ModelABSummaryList from \"./components/modelABSummaryList\";\nimport ModelABThumbnailChartList from \"./components/modelABThumbnailChartList\";\nimport ModelErrListFullScreen from \"./modelErrListFullScreen\";\n\n\nclass MpCompareView extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.changeModelInFullScreen = this.changeModelInFullScreen.bind(this);\n this.getMPCmpViewTableComponents = this.getMPCmpViewTableComponents.bind(this);\n this.getCustomClassForActions = this.getCustomClassForActions.bind(this);\n this.closeFullScreenMode = this.closeFullScreenMode.bind(this);\n this.modelABCompareViewCustomRowClass = this.modelABCompareViewCustomRowClass.bind(this);\n this.changeModelMPCompareViewTable = this.changeModelMPCompareViewTable.bind(this);\n this.showModelErrorPopupInFullscreen = this.showModelErrorPopupInFullscreen.bind(this);\n this.closeModelErrFullScreenMode = this.closeModelErrFullScreenMode.bind(this);\n this.filterInfoData_mlModel = filterInfoData_mlModel.bind(this);\n this.getTimeFilteredData_mlModel = getTimeFilteredData_mlModel.bind(this);\n this.getGroupedDataListView = getGroupedDataListView.bind(this);\n\n let mpCompareViewTableData = this.props.mpCompareViewTableData;\n if (mpCompareViewTableData === undefined || mpCompareViewTableData === null) {\n mpCompareViewTableData = [];\n }\n \n let modelDataSourceDetails = this.props.modelDataSourceDetails;\n let compareViewDetailedChartData = this.props.mpCompareViewDetailedChartData;\n\n let currABData = this.props.availableModelABData;\n let mlModelOptions = getModelOptionsAssociatedWithAB(currABData, this.props.mlModelOptions);\n\n let fullModelInfo = this.props.monitorModule.mlModelDetails\n const propsDataModuleInfo = this.props.dataModule.info;\n\n let selectedModelABID = null;\n if (!IS_NONE_CHECK.includes(this.props.addOnInfoFromParam)) {\n selectedModelABID = parseInt(this.props.addOnInfoFromParam);\n\n }\n\n let currentTableData;\n if (IS_NONE_CHECK.includes(selectedModelABID)) {\n currentTableData = _.cloneDeep(mpCompareViewTableData);\n } else {\n // User has navigated from Configure page by selecting 'Compare' button in Model AB table.\n // So we will show only the required chart\n currentTableData = filterBasedOnModelAB_ID(mpCompareViewTableData, selectedModelABID)\n }\n\n this.state = {\n fullScreenClassKey: '',\n selectedModelAB_ID: selectedModelABID,\n modelErrFullScreenClassKey: '',\n isInFullScreenMode: false,\n isModelErrFullscreenMode: false,\n selectedModelIDFromSummary: '',\n propsDataModuleInfo: propsDataModuleInfo,\n completeTableData: mpCompareViewTableData,\n currentTableData: currentTableData,\n fullScreenData: {},\n selectedModelID: null,\n modelErrShowMoreData: _.cloneDeep(this.props.modelErrShowMoreData),\n fullModelInfo: fullModelInfo,\n startDate: moment(new Date()).subtract(10, 'days'),\n endDate: moment(new Date()),\n tableUpdated: this.props.tableUpdated,\n filterApplied: false,\n timeFilterApplied: false,\n isAdvancedFilterApplied: false,\n modelIDsForFullScreen: [],\n mlModelOptions: mlModelOptions,\n compareViewDetailedChartData: compareViewDetailedChartData,\n modelDataSourceDetails: modelDataSourceDetails,\n lastProcessedTimeOfSelectedModel: null,\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n let mpCompareViewTableData = props.mpCompareViewTableData;\n if (mpCompareViewTableData === undefined || mpCompareViewTableData === null) {\n mpCompareViewTableData = [];\n }\n\n let mlModelOptions = props.mlModelOptions;\n let modelDataSourceDetails = props.modelDataSourceDetails;\n\n let dataChanged = (state.completeTableData.length !== mpCompareViewTableData.length ||\n modelDataSourceDetails !== state.modelDataSourceDetails);\n\n let currABData = props.availableModelABData;\n let filteredMlModelOptions = getModelOptionsAssociatedWithAB(currABData, mlModelOptions);\n\n if (!dataChanged && filteredMlModelOptions.length !== state.mlModelOptions.length) {\n dataChanged = true;\n }\n\n /* Assign the latest updated data from props to the state variable*/\n if (dataChanged) {\n let currentTableData;\n if (IS_NONE_CHECK.includes(state.selectedModelAB_ID)) {\n // No model AB is selected. So we will show all entries in table\n currentTableData = _.cloneDeep(mpCompareViewTableData);\n } else {\n currentTableData = filterBasedOnModelAB_ID(mpCompareViewTableData, state.selectedModelAB_ID)\n\n }\n\n return {\n completeTableData: mpCompareViewTableData,\n currentTableData: currentTableData,\n mlModelOptions: filteredMlModelOptions,\n tableUpdated: !state.tableUpdated,\n modelDataSourceDetails: modelDataSourceDetails\n };\n }\n\n return null;\n }\n\n changeModelMPCompareViewTable(selectedModel) {\n let selectedModelID = selectedModel.value;\n\n let filteredRows = [];\n for (let rowData of this.state.completeTableData) {\n // Third row contains associated model ids with the current model AB configuration\n const associatedModelIDs = rowData[2].model_ids;\n if (!associatedModelIDs.includes(selectedModelID)) {\n continue;\n }\n\n // Apply time filter, is necessary\n filteredRows.push(_.cloneDeep(rowData));\n }\n\n this.setState({\n currentTableData: filteredRows,\n selectedModelID: selectedModelID\n });\n }\n\n getCustomClassForActions() {\n /**\n * This function returns a \"function\" which will provide the class for entries\n * i.e the cells of the tables\n * */\n\n return (cell, row, rowIndex, colIndex) => {\n // 4 Represents the Column index of the 'Detailed Charts' column\n // Refer 'AB_COMPARE_VIEW_TABLE_HEADERS' variable from constant.js\n if (colIndex === 4) {\n return \"align-middle\";\n }\n\n return \"\";\n };\n }\n\n setFullScreen(selectedModelAB_ID, model_ids) {\n let selectedModelABData = this.state.compareViewDetailedChartData[String(selectedModelAB_ID)];\n\n let requiredFullScreenData = null;\n if (!IS_NONE_CHECK.includes(selectedModelABData)) {\n requiredFullScreenData = selectedModelABData[\"data\"];\n\n // Perform time filter on the charts\n requiredFullScreenData = filterBasedOnMetricNames(requiredFullScreenData, null,\n this.state.startDate, this.state.endDate)\n }\n\n if (IS_NONE_CHECK.includes(requiredFullScreenData)) {\n requiredFullScreenData = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n }\n\n this.setState({\n fullScreenClassKey: \"show\",\n isInFullScreenMode: true,\n modelIDsForFullScreen: model_ids,\n fullScreenData: requiredFullScreenData,\n });\n }\n\n closeFullScreenMode() {\n this.setState({\n fullScreenClassKey: '',\n isInFullScreenMode: false,\n isAdvancedFilterApplied: false,\n });\n }\n\n closeModelErrFullScreenMode() {\n this.setState({\n modelErrFullScreenClassKey: '',\n isModelErrFullscreenMode: false,\n isAdvancedFilterApplied: false,\n });\n }\n\n changeModelInFullScreen(selectedModels, selectedMetrics = [], startDate, endDate, useAndFilter) {\n let requiredFullScreenData = null;\n\n let requiredMetrics = [];\n\n for (let selectedMetric of selectedMetrics) {\n const currMetricName = selectedMetric.value;\n let mappedMetricName = AB_ADVANCE_FILTER_METRIC_NAMES[currMetricName];\n if (IS_NONE_CHECK.includes(mappedMetricName)) {\n mappedMetricName = currMetricName;\n }\n\n requiredMetrics.push(mappedMetricName);\n }\n\n // Get selected model ids\n const selectedModelIDs = [];\n for (let currModel of selectedModels) {\n if (currModel.value === \"*\") {\n continue;\n }\n\n selectedModelIDs.push(currModel.value);\n }\n\n const selectedModelCount = selectedModelIDs.length;\n const matches = [];\n for (let modelAB_Id of Object.keys(this.state.compareViewDetailedChartData)) {\n const modelABData = this.state.compareViewDetailedChartData[String(modelAB_Id)];\n const associatedModelIDs = modelABData.model_ids;\n let canInclude = false;\n if (useAndFilter) {\n const matchCount = selectedModelIDs.filter(x => associatedModelIDs.includes(x)).length;\n canInclude = selectedModelCount === matchCount;\n } else {\n const matchCount = selectedModelIDs.filter(x => associatedModelIDs.includes(x)).length;\n canInclude = matchCount > 0;\n }\n\n if (!canInclude) {\n continue;\n }\n\n if (!IS_NONE_CHECK.includes(modelABData)) {\n requiredFullScreenData = modelABData[\"data\"];\n }\n\n // Perform filter based on metric name\n requiredFullScreenData = filterBasedOnMetricNames(requiredFullScreenData, requiredMetrics,\n startDate, endDate)\n matches.push(requiredFullScreenData);\n }\n\n if (matches.length === 0) {\n requiredFullScreenData = _.cloneDeep(MODEL_PERFORMANCE_GROUPS);\n delete requiredFullScreenData[\"Model Evaluation\"];\n } else if (matches.length === 1) {\n requiredFullScreenData = matches[0];\n } else {\n // Merge all matched results since user has selected multiple models\n requiredFullScreenData = matches[0];\n for (let index = 1; index < matches.length; index++) {\n let currMatch = matches[index];\n for (let currKey of Object.keys(currMatch)) {\n const currSection = currMatch[currKey];\n if (requiredFullScreenData[currKey] === undefined) {\n requiredFullScreenData[currKey] = currSection\n continue;\n }\n\n requiredFullScreenData[currKey].data.push(...currSection.data);\n }\n }\n\n }\n\n this.setState({\n fullScreenData: requiredFullScreenData,\n timeFilterApplied: true,\n isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied\n });\n }\n\n showModelErrorPopupInFullscreen(modelID, lastProcessedTimeOfSelectedModel) {\n this.setState({\n selectedModelIDFromSummary: modelID,\n modelErrFullScreenClassKey: \"show\",\n isModelErrFullscreenMode: true,\n lastProcessedTimeOfSelectedModel: lastProcessedTimeOfSelectedModel\n });\n }\n\n modelABCompareViewCustomRowClass(row, rowIndex) {\n const recentTimeInChart = row[\"Performance Metrics\"].recentTimeValueInChart;\n if (IS_NONE_CHECK.includes(recentTimeInChart) || IS_NONE_CHECK.includes(this.state.startDate)) {\n return \"\";\n }\n\n if (moment(new Date(recentTimeInChart)).isBefore(this.state.startDate)) {\n return \"row-highlight has-above-alert\";\n }\n\n return \"\";\n }\n\n getMPCmpViewTableComponents(actionType, headerValue, cell) {\n if (headerValue === \"Model Name\") {\n return (\n \n );\n }\n\n if (headerValue === \"Model Summary\") {\n return (\n \n );\n }\n\n if (headerValue === \"Performance Metrics\") {\n\n return (\n \n \n );\n }\n\n if (headerValue === \"Action\") {\n return (\n
    \n \n \n \n

    Detailed Charts

    \n
    \n );\n }\n\n return cell;\n }\n\n handleTimeFilter(event, picker) {\n const selectedStartDate = picker.startDate;\n let selectedEndDate = picker.endDate;\n let noModelConfigured = false;\n const selectedModelID = this.state.selectedModelID;\n\n let clonedData = _.cloneDeep(this.state.completeTableData);\n let filteredRows = [];\n for (let rowData of clonedData) {\n let recentTimeValueInChart = null;\n const thumbnailChartColumn = rowData[2];\n const sections = thumbnailChartColumn.sections;\n const associatedModelIDs = thumbnailChartColumn.model_ids;\n\n if (selectedModelID !== null && !associatedModelIDs.includes(selectedModelID)) {\n // User has selected a model using model drop down. The selected model is not\n // associated with current Model AB row, so we will skip it\n continue;\n }\n\n for (let section of sections) {\n const charts = section.data;\n\n let updatedThumbnailCharts = [];\n\n for (let chartData of charts) {\n const timeArr = chartData.time;\n\n if (timeArr === undefined) {\n continue;\n }\n\n let filteredArr = timeArr.filter(x => moment(x).isSameOrAfter(selectedStartDate) &&\n moment(x).isSameOrBefore(selectedEndDate));\n\n let filteredLength = filteredArr.length;\n // If model is not configured on selected time period,\n if (noModelConfigured) {\n continue;\n }\n\n // No filtered data matching the chosen time filter\n if (filteredLength === 0) {\n // If the chart has data point before selected start date,\n // we will show the previous data itself, but with a warning in the top of row\n filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(selectedStartDate));\n filteredLength = filteredArr.length;\n if (filteredLength === 0) {\n continue;\n }\n\n recentTimeValueInChart = filteredArr[filteredLength - 1];\n }\n\n const indexStart = timeArr.indexOf(filteredArr[0]);\n chartData.time = timeArr.slice(indexStart, indexStart + filteredLength);\n if (!IS_NONE_CHECK.includes(chartData.line1)) {\n chartData.line1 = chartData.line1.slice(indexStart, indexStart + filteredLength);\n }\n\n if (!IS_NONE_CHECK.includes(chartData.line2)) {\n chartData.line2 = chartData.line2.slice(indexStart, indexStart + filteredLength);\n }\n\n if (!IS_NONE_CHECK.includes(chartData.line3)) {\n chartData.line3 = chartData.line3.slice(indexStart, indexStart + filteredLength);\n }\n\n updatedThumbnailCharts.push(chartData);\n }\n\n section.data = updatedThumbnailCharts;\n }\n\n thumbnailChartColumn.recentTimeValueInChart = recentTimeValueInChart;\n\n filteredRows.push(rowData);\n }\n\n this.setState({\n currentTableData: filteredRows,\n filterApplied: !this.state.filterApplied,\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n timeFilterApplied: true\n });\n }\n\n render() {\n const ranges = getDefaultDateRangeOptions();\n\n let tableData = {\n \"data\": this.state.currentTableData,\n \"headers\": AB_COMPARE_VIEW_TABLE_HEADERS\n };\n\n\n const customKey = `${tableData.data.length}_${this.state.tableUpdated}_${this.state.filterApplied}`;\n\n const currStartDate = this.state.startDate;\n const currEndDate = this.state.endDate;\n const currentStartDateAsTxt = currStartDate === null ?\n ' ' :\n currStartDate.format(DISPLAY_DATE_FORMAT);\n\n const currentEndDateAsTxt = currEndDate === null ?\n ' ' :\n currEndDate.format(DISPLAY_DATE_FORMAT);\n\n const selectedMlModel = this.props.mlModelOptions.find(x =>\n String(x.value) === String(this.state.selectedModelIDFromSummary));\n\n const selectedDataSource = this.props.dataModule.selectedDataSource;\n let lastProfilingTime = this.props.dataModule.lastProfilingTime[selectedDataSource];\n \n return (\n\n <>\n
    \n
    \n
    \n

    \n {lastProfilingTime === null || lastProfilingTime === undefined ? \"--\" : `Your data last profiled at ${lastProfilingTime}`}\n

    \n
    \n
    \n\n
    \n
    \n label.includes(query)}\n id=\"chooseModelMPCV\"\n options={this.state.mlModelOptions}\n onChange={this.changeModelMPCompareViewTable}\n classNamePrefix='form-control'\n placeholder=\"Choose Model\"\n />\n
    \n
    \n \n \n \n \n \n {currentStartDateAsTxt} - {currentEndDateAsTxt}\n \n \n
    \n
    \n
    \n\n {this.state.isModelErrFullscreenMode ?\n \n : ''\n }\n {this.state.isInFullScreenMode ?\n this.state.modelIDsForFullScreen.includes(x.value))}\n variant={\"mlModelPerformanceCompareView\"}\n changeModelInFullScreen={this.changeModelInFullScreen}\n closeFullScreen={this.closeFullScreenMode}\n isAdvancedFilterApplied={this.state.isAdvancedFilterApplied}\n startDate={moment(this.state.startDate.startOf(\"day\"))}\n endDate={moment(this.state.endDate).endOf(\"day\")}\n\n >\n\n :\n\n this.state.isModelErrFullscreenMode ? '' :\n \n :\n \n }\n />\n }\n\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MpCompareView);","/**\n * Represents the Monitor page -> Model performance tab contents\n * */\n\nimport React from 'react';\nimport {connect} from \"react-redux\";\nimport Tab from \"react-bootstrap/Tab\";\nimport Nav from \"react-bootstrap/Nav\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faChartLine, faList, faCheckDouble} from \"@fortawesome/free-solid-svg-icons\";\nimport ModelPerformance from \"./modelPerformance\";\nimport MpListView from \"./mpListView\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\nimport MpCompareView from \"./mpCompareView\";\n\n\nclass MonitorMPTabs extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.changeTab = this.changeTab.bind(this);\n\n let activeTabKey = \"mp_list_view\";\n if (!IS_NONE_CHECK.includes(this.props.innerTab)){\n activeTabKey = this.props.innerTab;\n }\n\n let addOnInfoFromParam = null;\n if (!IS_NONE_CHECK.includes(this.props.additionalInfoFromParam)) {\n addOnInfoFromParam = this.props.additionalInfoFromParam;\n }\n\n this.state = {\n activeTabKey: activeTabKey,\n addOnInfoFromParam: addOnInfoFromParam,\n }\n }\n\n changeTab(tab) {\n this.setState({activeTabKey: tab});\n }\n\n render() {\n return (\n \n
    \n \n
    \n \n
    \n \n \n {this.state.activeTabKey === \"mp_chart_view\" ?\n\n \n \n \n :\n (this.state.activeTabKey === \"mp_list_view\") ?\n \n \n \n :\n (this.state.activeTabKey === \"mp_compare_view\" ?\n\n \n \n \n :\n \"\"\n )\n \n }\n\n \n \n
    \n \n
    \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MonitorMPTabs);","import React from 'react';\nimport { faArrowRight, faChartArea } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ChartGrid from './chartGrid';\nimport Image from '../../components/image';\nimport AdvancedFilterModel from \"./advanced_filter_model\";\nimport ChartFilterHeader from './chartFilterHeader';\nimport {typeMappings} from './filter_common_utils';\nimport _ from 'lodash';\nimport {\n getChartType,\n replaceNullValues,\n convertDecimalDigits,\n sortModelErrorsBasedOnMetrics,\n filterBoxPlotData,\n getRowCountContributionFromData,\n getChartFilterData,\n getCustomMetrics\n} from \"../../utils/common_utils\";\nimport Load from '../../components/loadAction';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport NoErrorComponent from './monitorNoResult';\nimport NoErrorInPreview from './noErrorPreview';\nimport {\n MIN_MAX_SCALE,\n NO_ERROR_CHART_COLORS,\n LIGHT_COLOR_MAP,\n ML_BOX_PLOT_LIST,\n SINGLE_ARROW_CHART_TYPE, GENERIC_CONSTANTS, FEATURE_DRIFT_ALIASES,\n MAX_DATA_POINTS_FOR_LIST_VIEW,\n DRIFT_PATTERN_TYPES, FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT, FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT,\n SECTION_TYPE_MAPPING, CUSTOM_ML_METRIC\n} from \"../../utils/constant\";\n\nclass Grid extends React.Component {\n\n constructor(props) {\n super(props);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.closeFullScreen = this.closeFullScreen.bind(this);\n this.renderGroup = this.renderGroup.bind(this);\n this.renderGroupItems = this.renderGroupItems.bind(this);\n this.getFilteredChartData = this.getFilteredChartData.bind(this);\n this.updateCharts = this.updateCharts.bind(this);\n\n let selectedModel = null;\n let preSelectedModelID = this.props.selectedMLModelID;\n let gridTitle = \"Model Errors Dashboard - \" + this.props.title\n\n if(this.props.title === undefined) {\n gridTitle = \"Model Errors - Dashboard\"\n }else if (this.props.variant === \"mlModel\" && preSelectedModelID !== undefined && preSelectedModelID !== null) {\n selectedModel = {\"label\": this.props.title, \"value\": preSelectedModelID.toString()};\n }\n let showOnlyErrorData = false;\n\n\n this.state={\n data: this.props.data,\n title: gridTitle,\n idValue: this.props.title,\n chartType: \"areaChart\",\n fullScreen: \"fade\",\n showOnlyErrorData: showOnlyErrorData,\n showErrorsOnly: true,\n showFullScreen: false,\n initialSelection: selectedModel,\n selectedDataSet: null,\n selectedModel: selectedModel,\n variant: this.props.variant,\n modalData: this.props.modalData,\n customMetricsOptions: getCustomMetrics(this.props.modalData[\"dataSet\"]),\n aggregateOptions: this.getAggregateOptions(this.props.modalData[\"attribute\"]),\n compareAttributeOptions: this.getAttributeOptions(this.props.modalData[\"attribute\"]),\n compareDatasetOptions: this.getDataSrcOptions(this.props.modalData[\"dataSet\"]),\n srcOptionList: null,\n selectedDataSrc:null,\n completeModalData: _.cloneDeep(this.props.modalData),\n underPerformModelIDs: this.props.underPerformModelIDs,\n fullScreenData: null,\n advancedModels: [],\n startDate: null,\n endDate: null,\n selectedMetrics: [],\n selectedAttributes: [],\n isAdvancedFilterApplied: false\n\n }\n }\n\n static getDerivedStateFromProps(props, state){\n if (props.data !== state.data) {\n return {data : props.data};\n } else{\n return null;\n }\n }\n\n updateCharts(model, metrics, attributeOptions, startDate, endDate, showErrorsOnly) {\n this.setState({showErrorsOnly: showErrorsOnly, advancedModels: model, selectedMetrics: metrics, startDate: startDate, endDate: endDate,\n selectedAttributes: attributeOptions, isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied});\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.data !== this.state.data) {\n let _modalData= _.cloneDeep(this.props.data);\n this.setState({modalData:_modalData});\n }\n }\n\n closeFullScreen(){\n document.body.classList.remove(\"overflow-hidden\");\n this.setState({\n fullScreen: '',\n showFullScreen: false,\n selectedModel: this.state.initialSelection,\n advancedModels: [],\n selectedMetrics: [],\n selectedDataSet: null\n });\n\n if (this.props.variant === \"mlModel\") {\n let restoreTitle = \"Model Errors - Dashboard\";\n if (this.state.initialSelection !== null){\n restoreTitle = this.state.initialSelection[\"label\"];\n }\n\n this.setState({title: restoreTitle});\n }\n }\n\n setFullScreen() {\n document.body.classList.add(\"overflow-hidden\");\n this.setState({showFullScreen : true, fullScreen: \"show\"});\n }\n\n\n renderGridItem() {\n if (this.props.data) {\n let chartValues = this.props.data;\n let gridType = \"Model\";\n\n if (this.props.isInProgress !== undefined && this.props.isInProgress === true) {\n return (\n \n );\n }\n\n if (this.props.noModelConfigured !== undefined && this.props.noModelConfigured === true) {\n return (\n \n );\n }\n\n if (chartValues.length === 0) {\n return (\n \n );\n }\n\n return chartValues.map((chartData, index) => {\n const attribute_name = chartData.attribute_name;\n const dataSetId = chartData.data_set_id;\n let key = `${chartData.name}_${dataSetId}`;\n if (attribute_name !== undefined && attribute_name !== null) {\n key = key + \"_\" + attribute_name;\n }\n\n const isModelPerformance = chartData.isModelPerformance;\n let scale = undefined;\n if (isModelPerformance !== undefined && isModelPerformance) {\n key = key + \"_preview_\" + chartData.key;\n scale = MIN_MAX_SCALE;\n }\n\n let chartTitle = chartData.title;\n chartData[\"chartTitle\"] = chartTitle;\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n replaceNullValues(chartData);\n let chartType = getChartType(chartData, index);\n let idValue = chartData[\"key\"] +\"_\"+ attribute_name\n if (chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n chartType = \"boxPlotZoomable\";\n }\n else if (chartData[\"chartType\"] === SINGLE_ARROW_CHART_TYPE){\n chartType = SINGLE_ARROW_CHART_TYPE;\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n chartData[\"chartType\"]=chartType\n if (chartData[\"type\"] === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT) {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT;\n } else {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT;\n }\n }\n\n return (\n \n );\n });\n }\n }\n\n getDataSrcOptions(dataSetData) {\n let compareDatasetOptions =[];\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(dataSetData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let dataSetChart = chartData[j];\n let dataSetName = (dataSetChart.title.split(\">\")[2]).split(\"-\")[0]\n if (dataSetName !== undefined && dataSetName !== null) {\n compareDatasetOptions.push({\"label\": dataSetName.trim(), \"value\":dataSetChart.data_set_id, \"type\": dataSetChart.name, \"data\": dataSetChart});\n }\n }\n }\n }\n }\n return compareDatasetOptions;\n }\n\n getAttributeOptions(attributeData) {\n let compareAttributeOptions =[];\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(attributeData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let attr = chartData[j];\n let attribute_name = attr.attribute_name;\n if (attribute_name !== undefined && attribute_name !== null) {\n compareAttributeOptions.push({\"label\": attribute_name, \"value\": attribute_name+\"$\"+attr.name,\"data_set_id\":attr.data_set_id,\n \"data\": attr});\n }\n }\n }\n }\n }\n return compareAttributeOptions;\n }\n\n getAggregateOptions(attributeData) {\n let aggregateOptions =[];\n let profileKeys = [\"avg\", \"duplicate\", \"empty\",\"max\",\"min\",\"mode\",\"std\",\"unique\"];\n if (this.props.variant !== \"accuracy\") {\n return [];\n }\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(attributeData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let attr = chartData[j];\n let attribute_name = attr.attribute_name;\n let drift_pattern = attr.type;\n if (profileKeys.includes(attr.name)) {\n if (attribute_name !== undefined && attribute_name !== null) {\n if (drift_pattern !== undefined && drift_pattern !== null) {\n if (drift_pattern === \"NO_DRIFT\" || drift_pattern === \"not_computed\") {\n aggregateOptions.push({\"label\":{attr.name} , \"value\":attr.name,\"attribute_name\":attribute_name,\n \"data\": attr, \"data_set_id\": attr.data_set_id, \"is_error\": false});\n }\n } else {\n aggregateOptions.push({\"label\":{attr.name} Error , \"value\":attr.name,\"attribute_name\":attribute_name,\n \"data\": attr, \"data_set_id\": attr.data_set_id, \"is_error\": true});\n }\n }\n }\n }\n }\n }\n }\n return aggregateOptions;\n }\n\n renderGroup() {\n let attributeLevelGroupedData = this.props.modalData.attribute;\n let datasetLevelGroupedData = this.props.modalData.dataSet;\n if (this.props.variant === \"mlModel\" && this.props.selectedMLModelID === undefined) {\n attributeLevelGroupedData = this.getFilteredChartData(attributeLevelGroupedData,\n this.props.underPerformModelIDs);\n datasetLevelGroupedData = this.getFilteredChartData(datasetLevelGroupedData,\n this.props.underPerformModelIDs);\n }\n else if (this.props.variant === \"mlModel\") {\n let preSelectedModelID = this.props.selectedMLModelID;\n // In 'Show More' page show only the charts corresponding to the grid's model\n attributeLevelGroupedData = this.getFilteredChartData(attributeLevelGroupedData,\n [String(preSelectedModelID)]);\n\n datasetLevelGroupedData = this.getFilteredChartData(datasetLevelGroupedData,\n [String(preSelectedModelID)]);\n }\n\n\n let combinedData = [...datasetLevelGroupedData, ...attributeLevelGroupedData];\n\n // Sort the groups based on our requirement\n combinedData.sort(sortModelErrorsBasedOnMetrics);\n\n return this.renderGroupItems(combinedData)\n\n }\n\n renderGroupItems(combinedData) {\n let dataSetData;\n let rowCount = 0;\n let level\n return combinedData.map((group, groupId) =>{\n level = group.level\n dataSetData = [group]\n if(dataSetData === undefined){\n return \"\"\n }\n return dataSetData.map((groupData, index) => {\n rowCount = rowCount + 1\n let sectionName = groupData.header\n if(this.state.selectedMetrics.length > 0) {\n let filteredMetrics = this.state.selectedMetrics.filter(x=>x.label === sectionName || sectionName === SECTION_TYPE_MAPPING[x.type]);\n if(filteredMetrics.length === 0){\n rowCount = rowCount - 1\n return \"\"\n }\n } else if(groupData.metric === CUSTOM_ML_METRIC && groupData.data.length === 0) {\n rowCount = rowCount-1;\n return \"\"\n }\n\n\n return (\n <>\n
    \n
    \n

    \n \n {rowCount}\n \n {groupData.header}\n

    \n

    \n {groupData.description}\n

    \n\n
    \n
    \n
    \n { this.renderModalChart(level, groupData.data) }\n
    \n
    \n
    \n \n );\n });\n\n });\n }\n\n\n renderModalChart(chartLevel, chartDataList) {\n let profileKeys = [\"avg\", \"duplicate\", \"empty\",\"max\",\"min\",\"mode\",\"std\",\"unique\"];\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n chartDataList = _.reject(chartDataList, function(d) { return (profileKeys.includes(d.name)); });\n if (chartDataList === undefined || chartDataList === null || chartDataList.length === 0){\n return ();\n }\n\n let isMLModel = this.props.showModelFilter;\n\n\n let chartCount = 0;\n\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j =1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n const attribute_name = chartData.attribute_name;\n let lastDiv = (chartDataList.length === index+1 && chartCount === 0)\n if (this.state.showErrorsOnly) {\n if (chartData[\"hasDrift\"] === false && lastDiv === true) {\n return ();\n }\n if (chartData[\"hasDrift\"] === false) {\n return \"\";\n }\n }else if(profileKeys.includes(chartData.name)) {\n return \"\";\n }\n let isUnderPerformingGrid = (this.state.underPerformModelIDs !== undefined)\n if (isMLModel && this.state.showOnlyErrorData && this.state.selectedModel === null && isUnderPerformingGrid) {\n const chartHasNoError = chartData[\"hasDrift\"] === false;\n let modelID = String(chartData[\"ml_model_id\"]);\n if (!this.state.underPerformModelIDs.includes(modelID)){\n return \"\";\n }\n\n if (chartHasNoError && lastDiv === true){\n return ();\n } else if(chartHasNoError) {\n return \"\";\n }\n } else if(isMLModel && this.state.showOnlyErrorData && String(this.state.selectedModel[\"value\"]) !== String(chartData[\"ml_model_id\"]) && lastDiv === true)\n {\n return ();\n } else if(isMLModel && this.state.showOnlyErrorData && String(this.state.selectedModel[\"value\"]) !== String(chartData[\"ml_model_id\"])) {\n return \"\"\n }\n\n if ( chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\") ) {\n\n let id = null;\n let compareModelOptions = null;\n let compareMLAttributeOptions = null;\n let aggregateOptions = null;\n if(this.props.showModelFilter) {\n id = chartData[\"ml_model_id\"];\n compareModelOptions = _.reject(this.state.compareModelOptions, function(d) { return (d.label === chartData.data_set_name || d.value !== chartData.name ); });\n } else {\n id = chartData[\"data_set_id\"];\n }\n\n let key = `modal_${chartData.name}_${id}`;\n let title = this.props.title !== undefined ? this.props.title: '';\n let compareDatasetOptions = null\n let compareType =null;\n let compareAttributeOptions = null;\n if (attribute_name !== undefined && attribute_name !== null && this.props.showModelFilter ) {\n key = key + \"_\" + attribute_name;\n compareMLAttributeOptions = _.reject(this.state.compareAttributeOptions, function(d) { return (d.label === attribute_name || d.value !== chartData.name || d.dataSetName !== chartData.data_set_name); });\n }\n\n let idValue = ''\n let showAggregateError = false;\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function(d) { return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== chartData.name ||\n d.data_set_id !== chartData.data_set_id); });\n aggregateOptions = this.state.aggregateOptions.filter(function (d) { return d.attribute_name === attribute_name && d.data_set_id === chartData.data_set_id});\n let isAggregateError = aggregateOptions.filter(function (d) {return d.is_error === true});\n if (isAggregateError.length > 0) {\n showAggregateError = true;\n }\n }\n if (chartLevel === \"Dataset\") {\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function(d) { return (d.value === chartData[\"data_set_id\"] || d.type !== chartData.name) });\n }\n\n title = title.replace(\" \", \"_\");\n /*let selectedSource = this.props.selectedIntegration;\n chartData[\"selectedDataSource\"] = selectedSource;\n if (selectedSource === undefined) {\n chartData[\"selectedMlModel\"] = defaultModel;\n }*/\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n if (chartLevel === \"Dataset\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (ML_BOX_PLOT_LIST.includes(chartData[\"name\"]) && chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n chartType = \"boxPlotZoomable\";\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n if (chartData[\"type\"] === DRIFT_PATTERN_TYPES.THRESHOLD_ALERT) {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_SINGLE_ARROW_RED_TEXT;\n } else {\n chartData[\"name\"] = FEATURE_DRIFT_ALIAS_SINGLE_ARROW_GREEN_TEXT;\n }\n }\n\n let filteredData = null;\n let propsStartDate = this.state.startDate === null ? this.props.startDate : this.state.startDate;\n let propsEndDate = this.state.endDate === null ? this.props.endDate : this.state.endDate;\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, false, false, MAX_DATA_POINTS_FOR_LIST_VIEW);\n }\n\n return (\n
    \n }>\n \n \n
    \n\n );\n } else if(lastDiv === true) {\n return ();\n }\n return '';\n });\n }\n }\n\n getFilteredChartData(data, selectedMLModelIDs){\n let attributeGrouping = _.cloneDeep(data);\n for (let group of attributeGrouping){\n const updatedData = [];\n for (let chartData of group.data){\n if(this.state !== undefined && this.state.advancedModels.length > 0) {\n let filteredModels = this.state.advancedModels.filter(x=>Number(x.value) === Number(chartData.ml_model_id))\n if(filteredModels.length === 0) {\n continue\n }\n let metricName = typeMappings[chartData.name];\n let filteredMetrics = this.state.selectedMetrics.filter(x=>x.label === metricName || x.label === chartData.name);\n if(filteredMetrics.length === 0) {\n continue\n }\n let typeFiltered = filteredMetrics.filter(x=>[\"type4\", \"type5\"].includes(x.type))\n if(typeFiltered.length > 0) {\n let filteredAttributes = this.state.selectedAttributes.filter(x=>x.value === chartData.attribute_id)\n if(filteredAttributes.length === 0) {\n continue\n }\n }\n }else if(selectedMLModelIDs !== undefined && !selectedMLModelIDs.includes(String(chartData.ml_model_id))){\n continue;\n }\n\n updatedData.push(chartData);\n }\n group[\"data\"] = updatedData;\n }\n\n return attributeGrouping;\n }\n\n render() {\n let page = this.props.showModelFilter ? \"model\": \"datasource\";\n return (\n (this.props.modalData.length === 0) ?\n <>\n
    \n

    \n

    {`Drift values are currently not available for the selected ${page}.`}

    \n

    Please check after sometime.

    \n
    \n \n :\n <>\n
    \n
    \n
    \n {this.renderGridItem()}\n
    \n
    \n
    \n
    \n {\n this.props.disableShowMore === true ? '' :\n
    \n \n \n \n

    Show More

    \n
    \n }\n\n
    \n
    \n
    \n {this.state.fullScreen === \"show\" ?\n
    \n
    \n
    \n
    \n
    \n \n

    \n {this.state.title}\n

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n { this.renderGroup() }\n
    \n
    \n
    \n
    \n
    \n
    : \"\"}\n \n );\n }\n}\nexport default Grid;\n\n","import React from 'react';\nimport MonitorPortlet from '../components/monitorPortlet';\nimport Grid from './components/grid';\n//import { getApi, setMlModel } from \"../utils/event_handling\";\n//import {updateChartData, getSortedBasedOnError} from \"../utils/common_utils\";\n//import Load from '../components/loadAction';\n//import { getMonitorTimeStampMessage } from \"../utils/common_utils\";\nimport { connect } from \"react-redux\";\nimport Select from 'react-select';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n//import {preFetchMlMonitorPreview} from \"../utils/monitorDataFetch\";\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons';\nimport {\n filterChartDataForTime,\n setGridData,\n convertModelDetails,\n canIncludeMetric,\n getModelErrorsOfPerformanceCharts,\n applyDefaultTimeFilter, hasValidNumberOfDatasets\n} from \"../utils/common_utils\";\nimport NoModelComponent from \"./components/noModelComponent\";\nimport { DISPLAY_DATE_FORMAT, NO_DATASET_NO_DATA_PROFILE } from \"../utils/constant\";\nimport { getDateObject } from \"../charts/browser_utils\";\n\n\nclass ModelError extends React.Component {\n constructor(props) {\n super(props);\n this.changeModel = this.changeModel.bind(this);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.convertModelDetails = convertModelDetails.bind(this);\n this.canIncludeMetric = canIncludeMetric.bind(this);\n this.filterChartDataForTime = filterChartDataForTime.bind(this);\n this.setGridData = setGridData.bind(this);\n this.setMlPreview = this.setMlPreview.bind(this);\n this.getModelErrorsOfPerformanceCharts = getModelErrorsOfPerformanceCharts.bind(this);\n // Error charts obtained based on the model performance threshold errors\n const errorCharts = this.getModelErrorsOfPerformanceCharts(this.props.modelPerformanceData);\n\n let metadataMap = this.props.dataModule.metaData;\n let modelMapping = this.props.monitorModule.mlModelMapping;\n\n let gridData = this.setGridData(this.props.monitorModule.mlPreview, metadataMap,\n modelMapping, errorCharts);\n let completeGridData = _.cloneDeep(gridData);\n let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n if (this.props.monitorModule.mlPreview !== null && this.props.monitorModule.mlPreview !== undefined\n && this.props.monitorModule.mlPreview[\"filterStartDate\"] !== null\n && this.props.monitorModule.mlPreview[\"filterStartDate\"] !== undefined) {\n\n const filterStartDateStr = this.props.monitorModule.mlPreview[\"filterStartDate\"];\n const filterEndDateStr = this.props.monitorModule.mlPreview[\"filterEndDate\"];\n const startDateObj = getDateObject(filterStartDateStr);\n const endDateObj = getDateObject(filterEndDateStr);\n startDate = moment(startDateObj).utc().startOf('day');\n endDate = moment(endDateObj).utc().endOf('day');\n\n }\n let newGridData = applyDefaultTimeFilter(gridData, startDate, endDate);\n\n this.state = {\n startDate: startDate,\n endDate: endDate,\n hideLastProfiledTime: false,\n data: newGridData,\n selectedModel: null,\n modelErrorDataCount: 0,\n modelErrorAttributeCount: 0,\n updatedKey: true,\n mlModelOptions: this.props.mlModelOptions,\n completeGridData: completeGridData,\n showMoreData: _.cloneDeep(this.props.showMoreData),\n modelPerformanceData: this.props.modelPerformanceData,\n errorCharts: errorCharts,\n integrationsMap: this.props.integrationsMap,\n selectedDataSource: this.props.dataModule.selectedDataSource\n }\n\n /*this.getApi = getApi.bind(this);\n this.changeModel = this.changeModel.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.setAvailableModelsAndChartData = this.setAvailableModelsAndChartData.bind(this);\n this.setSelectedModelData = this.setSelectedModelData.bind(this);\n this.setMlModel = setMlModel.bind(this);\n this.getMonitorTimeStampMessage = getMonitorTimeStampMessage.bind(this);\n this.state = {\n mlModel: {loadValue: true},\n mlModelOptions: [],\n closeAction: false,\n lastMonitorTime: null,\n isSuccessMessage: true\n }*/\n }\n\n /*componentDidMount() {\n this.getData();\n }\n\n getData() {\n this.getApi(\"monitor_ml_charts\");\n }\n\n changeModel(model, stateKey, title, startDate, endDate) {\n let details = {...this.state[stateKey]};\n details.loadValue = true;\n this.setState({[stateKey]: details});\n this.setMlModel(model, stateKey, title, startDate, endDate);\n }\n\n changeTime(model,stateKey, title, startDate, endDate) {\n let details = {...this.state[stateKey]};\n details.loadValue = true;\n this.setState({[stateKey]: details});\n this.setMlModel(model, stateKey, title, startDate, endDate);\n }\n\n setAvailableModelsAndChartData(models, mlData, mlModel, startDate, endDate) {\n let availableModelOptions = [];\n if(models !== undefined && models.length > 0) {\n availableModelOptions = models.map(function(row) {\n return {\"value\":row['ml_model_id'], \"label\": row[\"model_name\"]};\n });\n }\n let metrics = mlData[\"metrics\"];\n let mlModelData = {loadValue:false};\n for (let k = 0; k < metrics.length; k++){\n let row = metrics[k];\n if (row[\"name\"] === \"ML Model\") {\n let chartValues = updateChartData(row[\"data\"]);\n chartValues = getSortedBasedOnError(chartValues);\n let data = {data: chartValues, loadValue:false, selectedMlModel: mlModel, startDate: startDate, endDate: endDate};\n mlModelData = data;\n break\n }\n }\n this.setState({mlModelOptions: availableModelOptions, mlModel: mlModelData});\n }\n\n setSelectedModelData(data, key, title, mlModel, startDate, endDate) {\n let metrics = data[\"metrics\"];\n let values = {loadValue: false};\n if (metrics !== undefined && metrics.length > 0) {\n for (let i = 0; i < metrics.length; i++) {\n let row = metrics[i];\n if (row[\"name\"].toLowerCase() === title.toLowerCase()) {\n let chartData = updateChartData(row[\"data\"]);\n chartData = getSortedBasedOnError(chartData);\n values = {data: chartData, loadValue:false, selectedMlModel:mlModel, startDate: startDate, endDate: endDate};\n break;\n }\n }\n }\n this.setState({[key]: values});\n }\n\n hideContent() {\n this.setState({\n closeAction: true,\n });\n }*/\n\n componentDidUpdate(prevProps) {\n if (prevProps.monitorModule.mlModelAttributeInfo !== this.props.monitorModule.mlModelAttributeInfo) {\n const errorCharts = this.getModelErrorsOfPerformanceCharts(this.props.modelPerformanceData);\n\n let metadataMap = this.props.dataModule.metaData;\n let modelMapping = this.props.monitorModule.mlModelMapping;\n\n let gridData = this.setGridData(this.props.monitorModule.mlPreview, metadataMap,\n modelMapping, errorCharts);\n let completeGridData = _.cloneDeep(gridData);\n let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n if (prevProps.showMoreData !== this.props.showMoreData) {\n this.setState({ showMoreData: _.cloneDeep(this.props.showMoreData) });\n }\n if (this.props.monitorModule.mlPreview !== null && this.props.monitorModule.mlPreview !== undefined && this.props.monitorModule.mlPreview[\"filterStartDate\"] !== null\n && this.props.monitorModule.mlPreview[\"filterStartDate\"] !== undefined) {\n\n const filterStartDateStr = this.props.monitorModule.mlPreview[\"filterStartDate\"];\n const filterEndDateStr = this.props.monitorModule.mlPreview[\"filterEndDate\"];\n const startDateObj = getDateObject(filterStartDateStr);\n const endDateObj = getDateObject(filterEndDateStr);\n\n startDate = moment(startDateObj).utc().startOf('day');\n endDate = moment(endDateObj).utc().endOf('day');\n }\n let newGridData = applyDefaultTimeFilter(gridData, startDate, endDate);\n let mlModelOptions = this.props.mlModelOptions\n this.setState({\n data: newGridData,\n startDate: startDate,\n mlModelOptions: mlModelOptions,\n endDate: endDate,\n completeGridData: completeGridData,\n modelPerformanceData: this.props.modelPerformanceData\n });\n }\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n static getDerivedStateFromProps(props, state) {\n let modelErrorDataCount = props.monitorModule.mlModelErrorFetch;\n let modelErrorAttributeCount = props.monitorModule.mlModelErrorAttributeFetch;\n const errorCharts = getModelErrorsOfPerformanceCharts(props.modelPerformanceData);\n\n if (modelErrorDataCount !== state.modelErrorDataCount ||\n modelErrorAttributeCount !== state.modelErrorAttributeCount ||\n state.errorCharts.length !== errorCharts.length) {\n\n\n let mlModelMapping = props.monitorModule.mlModelMapping;\n let metadataMap = props.dataModule.metaData;\n\n let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n if (props.monitorModule.mlPreview !== null && props.monitorModule.mlPreview !== undefined\n && props.monitorModule.mlPreview[\"filterStartDate\"] != null && props.monitorModule.mlPreview[\"filterStartDate\"] !== undefined) {\n\n const filterStartDateStr = props.monitorModule.mlPreview[\"filterStartDate\"];\n const filterEndDateStr = props.monitorModule.mlPreview[\"filterEndDate\"];\n const startDateObj = getDateObject(filterStartDateStr);\n const endDateObj = getDateObject(filterEndDateStr);\n\n startDate = moment(startDateObj).utc().startOf('day');\n endDate = moment(endDateObj).utc().endOf('day');\n }\n\n let gridData = setGridData(props.monitorModule.mlPreview, metadataMap, mlModelMapping, errorCharts);\n let completeGridData = _.cloneDeep(gridData);\n let newGridData = applyDefaultTimeFilter(gridData, startDate, endDate);\n return {\n modelErrorDataCount: modelErrorDataCount,\n modelErrorAttributeCount: modelErrorAttributeCount,\n data: newGridData,\n startDate: startDate,\n endDate: endDate,\n completeGridData: completeGridData,\n updatedKey: !state.updatedKey\n };\n }\n\n if (props.modelPerformanceData.length > state.modelPerformanceData.length) {\n\n return {\n modelPerformanceData: props.modelPerformanceData\n }\n }\n\n // Update integrations map from the props\n if (props.integrationsMap !== state.integrationsMap) {\n return {\n integrationsMap: props.integrationsMap\n }\n }\n\n return null;\n }\n\n changeModel(event, obj) {\n const clonedData = _.cloneDeep(this.state.completeGridData);\n const modelName = event.label;\n const modelID = event.value;\n let gridData = clonedData.filter(x => String(x.ml_model_id) === String(modelID));\n let filteredGridData = [];\n for (let data of gridData) {\n let updatedData = {};\n updatedData[\"title\"] = data.title;\n updatedData[\"data\"] = [];\n updatedData[\"key\"] = data.key;\n updatedData[\"ml_model_id\"] = modelID;\n for (let innerData of data.data) {\n let copiedData = _.cloneDeep(innerData);\n let result = this.filterChartDataForTime(innerData, this.state.startDate, this.state.endDate);\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n copiedData[\"boxPlotData\"] = result.boxPlotData;\n }\n let updatedTime = result.time;\n let yAxis = result.drift;\n if ((copiedData.chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false) ||\n (copiedData.chartType !== \"boxPlotZoomable\" && updatedTime.length === 0)) {\n continue;\n }\n copiedData[\"drift_patterns\"] = result.drift_patterns;\n if (result.drift_patterns.length > 0) {\n let latest_drift_index = result.drift_patterns.length - 1;\n copiedData[\"drift_pattern\"] = result.drift_patterns[latest_drift_index];\n }\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift\"] = yAxis;\n updatedData.data.push(copiedData);\n }\n filteredGridData.push(updatedData);\n }\n if (filteredGridData.length === 0) {\n filteredGridData = [{\n \"title\": `Model Name - ${modelName}`,\n \"data\": [],\n \"key\": modelName,\n \"ml_model_id\": modelID\n }];\n }\n for (let modelDetail of this.props.monitorModule.mlModelDetails) {\n if (Number(modelDetail.ml_model_id) === Number(modelID)) {\n this.setState({ selectedDataSource: modelDetail.integration_id });\n }\n }\n\n this.setState({ data: filteredGridData });\n this.setState({ selectedModel: event });\n }\n\n setMlPreview(mlPreview) {\n if (mlPreview === undefined || mlPreview === null) {\n return;\n }\n let errorCharts = this.getModelErrorsOfPerformanceCharts(this.props.modelPerformanceData);\n let mlModelMapping = this.props.monitorModule.mlModelMapping;\n let metadataMap = this.props.dataModule.metaData;\n let gridData = setGridData(mlPreview, metadataMap, mlModelMapping, errorCharts);\n this.setState({\n data: gridData,\n });\n }\n\n\n handleTimeFilter(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n\n // let exStartDate = moment().subtract(180, 'days');\n const dateFromStr = this.props.monitorModule.mlPreview[\"dataFrom\"];\n const startDateObj = getDateObject(dateFromStr);\n let exStartDate = moment(startDateObj).utc().startOf('day');\n let valuesAvailable = startDate.isSameOrAfter(exStartDate);\n\n let selectedMLModelID = null;\n if (this.state.selectedModel !== undefined && this.state.selectedModel !== null) {\n selectedMLModelID = this.state.selectedModel[\"value\"];\n }\n\n this.setState({ startDate: startDate, endDate: endDate });\n\n let timeFilteredData = [];\n if (valuesAvailable === true) {\n for (let data of this.state.completeGridData) {\n let updatedData = {};\n updatedData[\"title\"] = data.title;\n updatedData[\"key\"] = data.key;\n updatedData[\"ml_model_id\"] = data.ml_model_id;\n updatedData[\"data\"] = [];\n if (selectedMLModelID !== null && String(data.ml_model_id) !== String(selectedMLModelID)) {\n continue;\n }\n\n for (let innerData of data.data) {\n let copiedData = _.cloneDeep(innerData);\n let result = this.filterChartDataForTime(innerData, startDate, endDate);\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n copiedData[\"boxPlotData\"] = result.boxPlotData;\n }\n let updatedTime = result.time;\n let yAxis = result.drift;\n if ((copiedData.chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false) ||\n (copiedData.chartType !== \"boxPlotZoomable\" && updatedTime.length === 0)) {\n continue;\n }\n copiedData[\"drift_patterns\"] = result.drift_patterns;\n if (result.drift_patterns.length > 0) {\n let latest_drift_index = result.drift_patterns.length - 1;\n copiedData[\"drift_pattern\"] = result.drift_patterns[latest_drift_index];\n }\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift\"] = yAxis;\n updatedData.data.push(copiedData);\n }\n timeFilteredData.push(updatedData);\n }\n if (timeFilteredData.length === 0) {\n timeFilteredData = [{\n \"title\": `Model Name - ${this.state.selectedModel[\"label\"]}`,\n \"data\": [],\n \"key\": this.state.selectedModel[\"label\"],\n \"ml_model_id\": selectedMLModelID\n }];\n }\n this.setState({ data: timeFilteredData });\n }\n\n }\n\n render() {\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n\n const selectedDataSource = this.state.selectedDataSource;\n let lastProfiledTimeElement = this.props.dataModule.lastProfilingTime[selectedDataSource];\n const hasValid = hasValidNumberOfDatasets(this.state.integrationsMap, selectedDataSource);\n\n let lastProfilingTime = lastProfiledTimeElement ?\n `Your data last profiled at ${lastProfiledTimeElement}` : \"Data Profiling is In progress ...\";\n if (!hasValid) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n }\n let modelProcessStatus = {};\n let noModelConfigured = {}\n if (this.props.monitorModule.mlModelDetails !== undefined && this.props.monitorModule.mlModelDetails.length > 0) {\n for (let mlModel of this.props.monitorModule.mlModelDetails) {\n let modelCreatedTime = mlModel[\"created_time\"];\n\n const modelCreatedAt = moment(getDateObject(modelCreatedTime)).utc().startOf('day');\n const last_profiled_time = getDateObject(lastProfiledTimeElement).getTime();\n\n let convertedTime = getDateObject(modelCreatedTime).getTime();\n lastProfiledTimeElement = this.props.dataModule.lastProfilingTime[mlModel.integration_id];\n\n let status = false;\n let noModelConfiguredStatus = moment(this.state.startDate).isBefore(modelCreatedAt) && moment(this.state.endDate).isBefore(modelCreatedAt)\n noModelConfigured[mlModel[\"ml_model_id\"]] = noModelConfiguredStatus;\n if (convertedTime > last_profiled_time) {\n status = true;\n }\n modelProcessStatus[mlModel[\"ml_model_id\"]] = status;\n }\n }\n\n if (this.props.monitorModule.mlModelMapping !== undefined && Object.keys(this.props.monitorModule.mlModelMapping).length > 0) {\n for (let mlModel of Object.keys(this.props.monitorModule.mlModelMapping)) {\n if (!(mlModel in modelProcessStatus)) {\n modelProcessStatus[mlModel] = true;\n }\n }\n }\n return (\n <>\n {\n
    \n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n
    \n
    \n label.includes(query)}\n id=\"chooseModelForMlError\"\n options={this.state.mlModelOptions}\n onChange={this.changeModel}\n classNamePrefix='form-control'\n placeholder=\"Choose Model\"\n />\n
    \n
    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n
    \n
    \n
    \n }\n {\n this.state.data.length === 0 ?\n \n :\n this.state.data.map((modelData, index) => {\n if(modelData.data.length > 0){\n modelProcessStatus[modelData.ml_model_id] = false;\n }\n return (\n }\n />\n );\n })\n }\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(ModelError);","import React from 'react';\nimport Button from 'react-bootstrap/Button';\nimport {faInfoCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport RcTooltip from 'rc-tooltip';\n\n\nclass MonitorButton extends React.Component {\n constructor(props) {\n super(props);\n this.handleMore = this.handleMore.bind(this);\n this.state = {\n showMore: false,\n }\n }\n\n handleMore() {\n this.setState({showMore: true})\n }\n\n getFinalComponent(prevRefreshDate,latestRefreshDate,firstRefreshDate ) {\n let finalComponent = []\n if(prevRefreshDate !== undefined) {\n finalComponent.push(<>{`Previous Refresh Date: ${prevRefreshDate}`}
    )\n }\n if(latestRefreshDate !== undefined) {\n finalComponent.push(<>{`Latest Refresh Date: ${latestRefreshDate}`}
    )\n }\n if(firstRefreshDate !== undefined) {\n finalComponent.push(<>{`First Refresh Date: ${firstRefreshDate}`}
    )\n }\n return finalComponent\n\n }\n\n\n render() {\n const children = []\n let cellValue = this.props.cell;\n let length = (cellValue.length > 5 && this.state.showMore === false ? 5 : cellValue.length)\n let datasetName;\n let prevRefreshDate;\n let latestRefreshDate;\n let firstRefreshDate;\n let finalComponent;\n for (let i = 0; i < length; i++) {\n const cellValueElement = cellValue[i];\n if(this.props.columnName === \"dqIssues\") {\n datasetName = cellValueElement[\"data_set_name\"];\n prevRefreshDate = cellValueElement[\"prevRefreshDate\"]\n latestRefreshDate = cellValueElement[\"latestRefreshDate\"]\n firstRefreshDate = cellValueElement[\"firstRefreshDate\"]\n finalComponent = this.getFinalComponent(prevRefreshDate,latestRefreshDate,firstRefreshDate)\n\n }\n const textContent = (this.props.columnName === \"servingFeatureDrifts\") ?\n cellValueElement\n :\n (cellValueElement[\"latestError\"] === \"not refreshed\" ? datasetName : (cellValueElement[\"latestError\"] === undefined ? \"\" : datasetName + \" - \" + cellValueElement[\"latestError\"]));\n\n children.push(\n
    \n \n \n
    \n );\n\n }\n if (cellValue.length > 5 && this.state.showMore === false) {\n children.push(\n )\n }\n return (\n <>\n {children}\n \n );\n\n }\n}\n\nexport default MonitorButton;\n","/**\n * Represents the Monitor page -> Model Error -> List View tab contents\n * */\nimport React from 'react';\nimport { connect } from \"react-redux\";\nimport {\n getGroupedData,\n formModelErrorDataForListView, mapModelToDataSource, convertDataForListView, getChartFilterData\n} from \"../utils/common_utils\";\nimport { DISPLAY_DATE_FORMAT, MAX_DATA_POINTS_FOR_LIST_VIEW } from \"../utils/constant\";\nimport BasicPortlet from \"../components/basicPortlet\";\nimport QualdoDataTable from \"../components/bootstrapTable\";\nimport CustomListInCell from \"./components/customListInCell\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowRight, faCalendar, faChartArea } from \"@fortawesome/free-solid-svg-icons\";\nimport ThumbnailChartList from \"./components/thumbnailChartList\";\nimport MonitorButton from \"./components/monitorButton\";\nimport ModelErrListFullScreen from \"./modelErrListFullScreen\";\nimport _ from 'lodash';\nimport Image from '../components/image';\nimport ChartFilterHeader from './components/chartFilterHeader';\nimport moment from 'moment';\nimport {\n getChartType,\n convertDecimalDigits,\n filterBoxPlotData,\n getRowCountContributionFromData\n} from \"../utils/common_utils\";\nimport Load from '../components/loadAction';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport NoErrorComponent from './components/monitorNoResult';\nimport {\n NO_ERROR_CHART_COLORS,\n LIGHT_COLOR_MAP,\n ML_BOX_PLOT_LIST,\n SINGLE_ARROW_CHART_TYPE, GENERIC_CONSTANTS, FEATURE_DRIFT_ALIASES, MONITOR_MODEL_ERROR_LIST_VIEW_HEADERS\n} from \"../utils/constant\";\nimport Select from \"react-select\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport { getDateObject } from \"../charts/browser_utils\";\n\n\n\nclass ModelErrorListView extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.handleMore = this.handleMore.bind(this);\n this.getModelErrListTableComponents = this.getModelErrListTableComponents.bind(this);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.ShowAttributeModal = this.ShowAttributeModal.bind(this);\n this.closeAttributeModal = this.closeAttributeModal.bind(this);\n this.ShowDatasetModal = this.ShowDatasetModal.bind(this);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.changeModelInFullScreen = this.changeModelInFullScreen.bind(this);\n this.getCustomClassForActions = this.getCustomClassForActions.bind(this);\n this.getGroupedData = getGroupedData.bind(this);\n this.changeModelErrListViewTable = this.changeModelErrListViewTable.bind(this);\n this.closeFullScreenMode = this.closeFullScreenMode.bind(this);\n this.closeDatasetModal = this.closeDatasetModal.bind(this);\n this.state = {\n startDate: moment(new Date()),\n showMore: false,\n selectedModel: null,\n tableUpdated: this.props.tableUpdated,\n selectedModelID: null,\n fullScreenClassKey: '',\n fullScreenClassKeyAttr: '',\n fullScreenClassKeyDataset: '',\n isInFullScreenMode: false,\n timeFilterApplied: false,\n lastProfilingTimeModel: null,\n lastProfilingTimeModelInside: null,\n showAttributeFull: false,\n showDatasetFull: false,\n completeTableData: _.cloneDeep(this.props.tableData),\n currentTableData: _.cloneDeep(this.props.tableData),\n modelFilteredData: [],\n showMoreData: _.cloneDeep(this.props.showMoreData),\n mlModelOptions: this.props.mlModelOptions,\n selectedDataSource: this.props.selectedDataSource\n };\n }\n\n getCustomClassForActions() {\n /**\n * This function returns a \"function\" which will provide the class for entries\n * i.e the cells of the tables\n * */\n\n return (cell, row, rowIndex, colIndex) => {\n if (colIndex === 7 || colIndex === 6) {\n return \"align-middle\";\n }\n\n return \"\";\n };\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.tableData !== this.props.tableData) {\n this.setState({ completeTableData: _.cloneDeep(this.props.tableData), currentTableData: _.cloneDeep(this.props.tableData), tableUpdated: !this.state.tableUpdated })\n }\n if (prevProps.showMoreData !== this.props.showMoreData) {\n this.setState({ showMoreData: _.cloneDeep(this.props.showMoreData) });\n }\n\n if (prevProps.mlModelOptions !== this.props.mlModelOptions) {\n this.setState({\n mlModelOptions: this.props.mlModelOptions\n })\n }\n\n }\n\n handleMore() {\n this.setState({ showMore: true })\n }\n\n ShowAttributeModal(values) {\n let modelId = values.modelId\n this.setState({ showAttributeFull: true, fullScreenClassKeyAttr: \"show\", modelId: modelId, attributeList: values.cell })\n }\n closeAttributeModal() {\n this.setState({ showAttributeFull: false, fullScreenClassKeyAttr: '' })\n }\n ShowDatasetModal(details, datasourceName) {\n let attributeData = details.attributeLevelData\n let datasetData = details.datasetLevelData\n let issuedAttributes = details.issuedAttributes\n let datasetId = details.data_set_id\n let filteredValues = details.filteredValues\n let latestError = details.latestError\n this.setState({\n showDatasetFull: true, latestError: latestError,\n fullScreenClassKeyDataset: \"show\", attributeData: attributeData,\n datasetData: datasetData, datasetName: details.data_set_name,\n datasourceName: datasourceName, issuedAttributes: issuedAttributes,\n datasetId: datasetId, filteredValues: filteredValues, lastProfilingTime: details.lastProfiled\n });\n }\n closeDatasetModal() {\n this.setState({ showDatasetFull: false, fullScreenClassKeyDataset: '' })\n }\n\n\n setFullScreen(selectedModelID, integrationId) {\n const mlModelMapping = this.props.monitorModule.mlModelMapping;\n let selectedModelInFullScreen = {\n \"value\": selectedModelID,\n \"label\": mlModelMapping[selectedModelID]\n };\n let lastProfilingTimeModelInside = this.props.dataModule.lastProfilingTime[integrationId]\n\n\n\n //let fullScreenData = this.getGroupedData(this.state.completeData, selectedModelInFullScreen)\n selectedModelInFullScreen.value = String(selectedModelID);\n\n this.setState({\n fullScreenClassKey: \"show\",\n isInFullScreenMode: true,\n lastProfilingTimeModelInside: lastProfilingTimeModelInside,\n selectedModelInFullScreen: selectedModelInFullScreen\n });\n }\n\n closeFullScreenMode() {\n this.setState({\n fullScreenClassKey: '',\n isInFullScreenMode: false\n });\n }\n\n changeModelInFullScreen(selectedModel) {\n this.setState({ selectedModelInFullScreen: selectedModel });\n }\n\n\n getModelErrListTableComponents(actionType, headerValue, cell) {\n if (headerValue === \"Performance Metrics with Issues\") {\n const listData = cell.value;\n if (cell.value.length > 0 && cell.performanceError === true) {\n return (\n \n \n );\n }\n else {\n return (
    \n

    \n \n

    \n

    {cell.value.length === 0 ? \"No Charts Found\" : \"No Errors Found\"}

    \n
    )\n }\n } else if (headerValue === \"Model Summary\") {\n return \n } else if (headerValue === \"Model Error Summary\") {\n return \n } else if (headerValue === \"Action\") {\n return (\n
    \n \n \n \n

    Detailed Charts

    \n
    \n );\n } else if (headerValue === \"Data Quality Issues\") {\n let finalElement = []\n if (cell === null || cell === undefined) {\n return finalElement;\n }\n let modelDatasets = cell.value\n let inProgress = cell.inProgress;\n if (inProgress === true) {\n return
    \n

    \n \n

    \n

    {\"No data found\"}

    \n
    \n }\n let refreshedDatasets = []\n let notRefreshedDatasets = []\n for (let i = 0; i < modelDatasets.length; i++) {\n if (modelDatasets[i][\"latestError\"] === \"not refreshed\") {\n notRefreshedDatasets.push(modelDatasets[i])\n } else {\n refreshedDatasets.push(modelDatasets[i])\n }\n }\n if (notRefreshedDatasets.length > 0) {\n finalElement.push(\n
    \n \n\n
    \n \n
    \n\n
    \n )\n } if (refreshedDatasets.length > 0) {\n finalElement.push(\n
    \n \n\n
    \n \n
    \n\n
    \n );\n\n }\n return finalElement\n\n } else if (headerValue === \"Serving Features Drifting\") {\n if (cell.value.attributes !== undefined && cell.value.attributes.length !== 0) {\n return (\n
    \n \n
    \n )\n\n } else {\n return (
    \n

    \n \n

    \n

    {cell.noModelConfigured === false ? \"No Drift Found\" : \"Model not configured\"}

    \n
    )\n }\n }\n\n return cell;\n }\n\n filterDqIssues(rowData, selectedDate, noModelConfigured, createdTime) {\n let dqErrorInfo = rowData.find(x => x.type === \"dqErrorInfo\");\n if (dqErrorInfo === undefined || dqErrorInfo === null) {\n\n return;\n }\n let dataSetInfo = dqErrorInfo[\"value\"]\n const endDate = moment(selectedDate).endOf(\"day\").toDate();\n\n dataSetInfo.forEach((dataset) => {\n let isError = false\n let prevRefreshDate;\n let latestRefreshDate;\n let firstRefreshDate;\n let fullErrorInfo = dataset[\"issuedAttributes\"]\n for (let i = 0; i < fullErrorInfo.length; i++) {\n let time = fullErrorInfo[i][\"refresh_time\"]\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(selectedDate))) {\n let latestError = fullErrorInfo[i][\"issued_attributes\"]\n if (latestError !== undefined) {\n dataset[\"latestError\"] = latestError.length\n dataset[\"filteredValues\"] = latestError\n isError = true\n break\n }\n }\n if (moment(time).isSameOrBefore(moment(endDate))) {\n if (prevRefreshDate !== undefined && moment(time).isSameOrAfter(moment(prevRefreshDate))) {\n prevRefreshDate = time\n } else if (prevRefreshDate === undefined) {\n prevRefreshDate = time\n }\n\n }\n if (moment(time).isSameOrAfter(moment(createdTime))) {\n firstRefreshDate = time\n }\n if (moment(time).isSameOrAfter(moment(selectedDate)) && latestRefreshDate === undefined) {\n latestRefreshDate = time\n }\n }\n if (isError === false) {\n dataset[\"latestError\"] = \"not refreshed\"\n dataset[\"prevRefreshDate\"] = prevRefreshDate\n dataset[\"filteredValues\"] = []\n dataset[\"latestRefreshDate\"] = latestRefreshDate\n dataset[\"firstRefreshDate\"] = noModelConfigured === true ? firstRefreshDate : undefined;\n }\n\n dataset[\"lastProfiled\"] = fullErrorInfo[0][\"refresh_time\"]\n\n\n });\n\n\n }\n\n filterModelAttributesData(rowData, selectedDate, noModelConfigured) {\n let selectedFeatureDriftsAttributes = rowData.find(x => x.type === \"servingFeatureDrift\");\n if (selectedFeatureDriftsAttributes === undefined || selectedFeatureDriftsAttributes === null) {\n return;\n }\n let newAttributes = []\n let existedAttributes = selectedFeatureDriftsAttributes[\"value\"][\"attributeInfo\"]\n if (existedAttributes !== undefined) {\n const endDate = moment(selectedDate).endOf(\"day\").toDate();\n for (let i = 0; i < existedAttributes.length; i++) {\n let timeList = existedAttributes[i][\"time\"]\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(selectedDate))) {\n let index = timeList.indexOf(time);\n let selectedDriftPattern = existedAttributes[i][\"drift_patterns\"][index]\n if (!newAttributes.includes(existedAttributes[i][\"attribute_name\"]) && selectedDriftPattern !== \"not_computed\" && selectedDriftPattern !== \"NO_DRIFT\") {\n newAttributes.push(existedAttributes[i][\"attribute_name\"])\n }\n }\n });\n }\n\n }\n selectedFeatureDriftsAttributes.value.attributes = newAttributes;\n selectedFeatureDriftsAttributes.noModelConfigured = noModelConfigured;\n\n }\n\n filterModelErrorSummaryData(rowData, selectedDate, noModelConfigured, mlModelId) {\n let modelErrorSummary = rowData.find(x => x.type === \"errModelSummary\");\n if (modelErrorSummary === undefined || modelErrorSummary === null) {\n return;\n }\n\n const endDate = selectedDate.endOf(\"day\").toDate();\n const startDate = selectedDate.startOf(\"day\").toDate();\n const propsDataModuleInfo = this.props.dataModule.info;\n let fullModelInfo = this.props.monitorModule.mlModelDetails\n const modelDataSourceDetails = mapModelToDataSource(fullModelInfo);\n const errorSummaryData = formModelErrorDataForListView([], modelDataSourceDetails,\n propsDataModuleInfo, mlModelId, true, startDate, endDate);\n modelErrorSummary.value = errorSummaryData;\n modelErrorSummary.noModelConfigured = noModelConfigured\n }\n\n\n handleTimeFilter(event, picker) {\n let selectedDate = picker.startDate;\n let clonedData = _.cloneDeep(this.state.completeTableData);\n let filteredRows = [];\n let modelFilteredRows = [];\n for (let rowData of clonedData) {\n let detailedChart = rowData.find(x => x.type === \"detailedChart\");\n let modelSummary = rowData.find(x => x.type === \"modelSummary\");\n let modelId = detailedChart.value\n let selectedModel = this.state.selectedModelID;\n\n let modelCreatedDate = modelSummary[\"value\"][3]\n let createdTime = moment(detailedChart.createdTime).startOf(\"day\").toDate();\n let noModelConfigured = moment(selectedDate).isBefore(createdTime)\n if (modelCreatedDate !== undefined && noModelConfigured === true) {\n modelCreatedDate[\"highlight\"] = true\n } else if (modelCreatedDate !== undefined) {\n modelCreatedDate[\"highlight\"] = false\n }\n this.filterModelErrorSummaryData(rowData, selectedDate, noModelConfigured, modelId);\n this.filterModelAttributesData(rowData, selectedDate, noModelConfigured);\n this.filterDqIssues(rowData, selectedDate, noModelConfigured, detailedChart.createdTime);\n let thumbnailData = rowData.find(x => x.type === \"thumbnailCharts\");\n\n const thumbnailVal = thumbnailData.value;\n let chartDate = selectedDate.endOf(\"day\").toDate()\n for (let _cData of thumbnailVal) {\n let updatedThumbnailCharts = [];\n for (let _singleThumbnailData of _cData.data) {\n const actChartData = _singleThumbnailData.chartData;\n let timeArr = actChartData.time;\n if (timeArr === undefined) {\n continue;\n }\n let filteredArr = timeArr.filter(x => moment(x).isSameOrBefore(chartDate));\n const filteredLength = filteredArr.length;\n if (filteredLength === 0) {\n continue;\n }\n actChartData.time = timeArr.slice(0, filteredLength);\n actChartData.values = actChartData.values.slice(0, filteredLength);\n if (actChartData.Y2_Values !== undefined) {\n actChartData.Y2_Values = actChartData.Y2_Values.slice(0, filteredLength);\n }\n updatedThumbnailCharts.push(_singleThumbnailData);\n }\n _cData.data = updatedThumbnailCharts;\n }\n thumbnailData.noModelConfigured = noModelConfigured\n if (selectedModel !== null && Number(modelId) === Number(selectedModel)) {\n modelFilteredRows.push(rowData);\n }\n\n filteredRows.push(rowData);\n }\n this.setState({\n currentTableData: filteredRows,\n modelFilteredData: modelFilteredRows,\n tableUpdated: !this.state.tableUpdated,\n startDate: selectedDate,\n timeFilterApplied: true\n });\n }\n\n renderAttributeGroup() {\n if (this.state.attributeData === undefined) {\n return '';\n }\n let attributeData = Object.values(this.state.attributeData)\n let displayNumber = 0\n return attributeData.map((chartData, index) => {\n let convertedData = convertDataForListView(Object.values(chartData), this.state.datasetName, this.state.datasourceName, true, this.state.filteredValues)\n let attributeName = Object.values(chartData)[0].attribute_name\n displayNumber = displayNumber + 1\n return (\n
    \n
    \n {displayNumber === 1 ?\n

    \n\n {\"Attribute Level Charts\"}\n

    \n : \"\"\n }\n

    \n \n {displayNumber}\n \n {attributeName}\n

    \n

    \n {\"\"}\n

    \n\n
    \n
    \n
    \n {this.renderModalChartDq(\"Attribute\", convertedData)}\n
    \n
    \n
    \n );\n\n });\n\n }\n\n renderModalChartDq(chartLevel, chartDataList) {\n //let profileKeys = [\"avg\", \"duplicate\", \"empty\",\"max\",\"min\",\"mode\",\"std\",\"unique\"];\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let chartCount = 0;\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j = 1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n chartDataList = Object.values(chartDataList)\n if (chartDataList.length === 0) {\n return ()\n }\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n const attribute_name = chartData.attribute_name;\n if (chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\")) {\n\n let id = null;\n let aggregateOptions = null;\n\n id = chartData[\"data_set_id\"];\n\n let key = `modal_${chartData.name}_${id}`;\n let title = this.props.title !== undefined ? this.props.title : '';\n let compareDatasetOptions = null\n let compareType = null;\n let compareAttributeOptions = null;\n let idValue = ''\n let showAggregateError = false;\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function (d) {\n return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== chartData.name ||\n d.data_set_id !== chartData.data_set_id);\n });\n // aggregateOptions = this.state.aggregateOptions.filter(function (d) { return d.attribute_name === attribute_name && d.data_set_id === chartData.data_set_id});\n // let isAggregateError = aggregateOptions.filter(function (d) {return d.is_error === true});\n // if (isAggregateError.length > 0) {\n // showAggregateError = true;\n // }\n }\n if (chartLevel === \"Dataset\") {\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function (d) { return (d.value === chartData[\"data_set_id\"] || d.type !== chartData.name) });\n }\n\n title = title.replace(\" \", \"_\");\n /*let selectedSource = this.props.selectedIntegration;\n chartData[\"selectedDataSource\"] = selectedSource;\n if (selectedSource === undefined) {\n chartData[\"selectedMlModel\"] = defaultModel;\n }*/\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n if (chartLevel === \"Dataset\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n }\n if (ML_BOX_PLOT_LIST.includes(chartData[\"name\"]) && chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n chartType = \"boxPlotZoomable\";\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n }\n if (chartData[\"dq_chart_points\"].length === 0) {\n return \"\"\n }\n\n if (chartData[\"name\"] === \"Data Drift\") {\n let isBoxplot = chartData[\"boxplot_data\"].filter(x => x !== \"NA\")\n if (isBoxplot.length > 0) {\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n if (chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartType = \"boxPlotZoomable\";\n }\n }\n\n }\n\n let filteredData = null;\n let startDate = this.state.startDate;\n let endDate = moment(this.state.startDate).endOf(\"day\");\n if (startDate !== null && endDate !== null) {\n filteredData = getChartFilterData(chartData, startDate,\n endDate, chartType, false, true, MAX_DATA_POINTS_FOR_LIST_VIEW);\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n startDate = moment(getDateObject(timeVals[0]));\n // propsEndDate = moment(new Date(timeVals[timeVals.length - 1]));\n }\n }\n\n return (\n
    \n }>\n \n \n
    \n\n );\n }\n return '';\n });\n }\n }\n\n renderDqGroup() {\n if (this.state.datasetData === undefined) {\n return '';\n }\n let convertedData = []\n if (this.state.latestError === \"not refreshed\") {\n let timelinessData = []\n let timelinessShowMore = this.props.timelinessShowMore.DefaultDataSet[0]\n if (timelinessShowMore !== undefined) {\n timelinessData = timelinessShowMore.data;\n }\n convertedData = timelinessData.filter(x => x.data_set_id === this.state.datasetId)\n } else {\n convertedData = convertDataForListView(this.state.datasetData, this.state.datasetName, this.state.datasourceName, true)\n }\n\n return (\n <>{this.state.lastProfilingTime !== undefined && this.state.lastProfilingTime !== null ?
    \n

    \n {`Your data last profiled at ${this.state.lastProfilingTime}`}\n \n

    \n
    : \"\"}\n
    \n
    \n

    \n {\"Dataset Level Charts\"}\n

    \n

    \n \n {1}\n \n {this.state.datasetName}\n

    \n
    \n
    \n
    \n {this.renderModalChartDq(\"Dataset\", convertedData)}\n
    \n
    \n
    \n \n );\n\n }\n\n renderGroup() {\n let initialCount = 0\n let attributeData = this.state.showMoreData.attribute;\n let finalData = attributeData.filter(x => x.metric === \"Model Drift\")\n return finalData.map((groupData, index) => {\n return (\n
    \n
    \n

    \n \n {initialCount + index + 1}\n \n {groupData.header}\n

    \n

    \n {groupData.description}\n

    \n\n
    \n
    \n
    \n {this.renderModalChart(groupData.level, groupData.data)}\n
    \n
    \n
    \n );\n });\n\n }\n\n renderModalChart(chartLevel, chartDataList) {\n let profileKeys = [\"avg\", \"duplicate\", \"empty\", \"max\", \"min\", \"mode\", \"std\", \"unique\"];\n //let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n chartDataList = _.reject(chartDataList, function (d) { return (profileKeys.includes(d.name)); });\n if (chartDataList === undefined || chartDataList === null || chartDataList.length === 0) {\n return ();\n }\n\n let isMLModel = this.props.showModelFilter;\n\n let chartCount = 0;\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n const attribute_name = chartData.attribute_name;\n let lastDiv = (chartDataList.length === index + 1 && chartCount === 0)\n if (chartData[\"ml_model_id\"] !== this.state.modelId || !this.state.attributeList.includes(attribute_name)) {\n return \"\";\n }\n let isUnderPerformingGrid = (this.state.underPerformModelIDs !== undefined)\n if (isMLModel && this.state.showOnlyErrorData && this.state.selectedModel === null && isUnderPerformingGrid) {\n const chartHasNoError = chartData[\"hasDrift\"] === false;\n let modelID = String(chartData[\"ml_model_id\"]);\n if (!this.state.underPerformModelIDs.includes(modelID)) {\n return \"\";\n }\n\n\n\n if (chartHasNoError && lastDiv === true) {\n return ();\n } else if (chartHasNoError) {\n return \"\";\n }\n } else if (isMLModel && this.state.showOnlyErrorData && String(this.state.selectedModel[\"value\"]) !== String(chartData[\"ml_model_id\"]) && lastDiv === true) {\n return ();\n } else if (isMLModel && this.state.showOnlyErrorData && String(this.state.selectedModel[\"value\"]) !== String(chartData[\"ml_model_id\"])) {\n return \"\"\n }\n\n if (chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\")) {\n\n let id = null;\n let compareModelOptions = null;\n let compareMLAttributeOptions = null;\n if (this.props.showModelFilter) {\n id = chartData[\"ml_model_id\"];\n compareModelOptions = _.reject(this.state.compareModelOptions, function (d) { return (d.label === chartData.data_set_name || d.value !== chartData.name); });\n } else {\n id = chartData[\"data_set_id\"];\n }\n\n let key = `modal_${chartData.name}_${id}`;\n let title = this.props.title !== undefined ? this.props.title : '';\n let compareDatasetOptions = null\n let compareType = null;\n let compareAttributeOptions = null;\n if (attribute_name !== undefined && attribute_name !== null && this.props.showModelFilter) {\n key = key + \"_\" + attribute_name;\n compareMLAttributeOptions = _.reject(this.state.compareAttributeOptions, function (d) { return (d.label === attribute_name || d.value !== chartData.name || d.dataSetName !== chartData.data_set_name); });\n }\n\n let idValue = ''\n let showAggregateError = false;\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function (d) {\n return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== chartData.name ||\n d.data_set_id !== chartData.data_set_id);\n });\n\n }\n\n\n title = title.replace(\" \", \"_\");\n\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n if (chartLevel === \"Attribute\") {\n if (chartData[\"type\"] === \"NO_DRIFT\" || chartData[\"type\"] === \"not_computed\") {\n return \"\"\n }\n }\n if (ML_BOX_PLOT_LIST.includes(chartData[\"name\"]) && chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n chartType = \"boxPlotZoomable\";\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n }\n\n let filteredData = null;\n let startDate = this.state.startDate;\n let endDate = moment(this.state.startDate).endOf(\"day\");\n if (startDate !== null && endDate !== null) {\n filteredData = getChartFilterData(chartData, startDate,\n endDate, chartType, false, true, MAX_DATA_POINTS_FOR_LIST_VIEW);\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n startDate = moment(getDateObject(timeVals[0]));\n // propsEndDate = moment(new Date(timeVals[timeVals.length - 1]));\n }\n }\n\n\n\n return (\n
    \n }>\n \n \n
    \n\n );\n } else if (lastDiv === true) {\n return ();\n }\n return '';\n });\n }\n }\n\n changeModelErrListViewTable(selectedModel) {\n let selectedModelID = selectedModel.value;\n\n let filteredRows = [];\n let integrationId;\n for (let rowData of this.state.currentTableData) {\n if (Number(rowData[6].value) === Number(selectedModelID)) {\n integrationId = rowData[6][\"integrationId\"]\n filteredRows.push(rowData);\n }\n }\n let lastProfilingTimeModel = null;\n if (integrationId !== undefined && integrationId !== null) {\n lastProfilingTimeModel = this.props.dataModule.lastProfilingTime[integrationId]\n }\n this.setState({ modelFilteredData: filteredRows, lastProfilingTimeModel: lastProfilingTimeModel, selectedModelID: selectedModelID, selectedModel: selectedModel });\n }\n\n\n render() {\n let tableData = {\n \"data\": (this.state.modelFilteredData.length > 0 ? this.state.modelFilteredData : this.state.currentTableData),\n \"headers\": MONITOR_MODEL_ERROR_LIST_VIEW_HEADERS\n };\n const customKey = `${tableData.data.length}_${this.state.tableUpdated}_${this.state.filterApplied}`;\n\n const currSelectedData = this.state.startDate;\n const currentSelectedDateAsTxt = currSelectedData === null ?\n ' ' :\n currSelectedData.format(DISPLAY_DATE_FORMAT);\n\n let message = null;\n if (this.state.mlModelOptions !== null && this.state.mlModelOptions.length > 0) {\n message = \"in-progress\";\n }\n\n const selectedDataSource = this.props.dataModule.selectedDataSource;\n let lastProfilingTime = this.state.lastProfilingTimeModel !== null ? this.state.lastProfilingTimeModel : this.props.dataModule.lastProfilingTime[selectedDataSource];\n\n return (\n this.state.showAttributeFull ? (\n
    \n
    \n
    \n
    \n
    \n \n

    \n {\"\"}\n

    \n
    \n \n
    \n
    \n
    \n
    \n {this.renderGroup()}\n
    \n
    \n
    \n
    \n
    \n
    \n )\n :\n (this.state.showDatasetFull === true ?\n
    \n
    \n
    \n
    \n
    \n \n

    \n {\"\"}\n

    \n
    \n \n
    \n
    \n
    \n
    \n {this.renderDqGroup()}\n {this.renderAttributeGroup()}\n
    \n
    \n
    \n
    \n
    \n
    \n :\n <>\n
    \n
    \n
    \n

    \n {lastProfilingTime === null || lastProfilingTime === undefined ? \"--\" : `Your data last profiled at ${lastProfilingTime}`}\n

    \n
    \n
    \n
    \n
    \n label.includes(query)}\n id=\"chooseModelME\"\n options={this.state.mlModelOptions}\n onChange={this.changeModelErrListViewTable}\n value={this.state.selectedModel}\n classNamePrefix='form-control'\n placeholder=\"Choose Model\"\n />\n
    \n
    \n \n \n \n \n \n {currentSelectedDateAsTxt}\n \n \n
    \n
    \n
    \n {this.state.isInFullScreenMode ?\n \n \n :\n (\n :\n \n }\n />)\n }\n )\n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(ModelErrorListView);","/**\n * Represents the Monitor page -> Model Errors tab contents\n * */\n\nimport React from 'react';\nimport { connect } from \"react-redux\";\nimport Tab from \"react-bootstrap/Tab\";\nimport Nav from \"react-bootstrap/Nav\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faChartLine, faList } from \"@fortawesome/free-solid-svg-icons\";\nimport ModelError from \"./mlError\";\nimport ModelErrorListView from \"./modelErrorListView\";\n\nclass MonitorERTabs extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.changeTab = this.changeTab.bind(this);\n this.state = {\n activeTabKey: \"me_list_view\",\n }\n }\n\n\n changeTab(tab) {\n this.setState({ activeTabKey: tab });\n }\n\n render() {\n return (\n \n
    \n \n
    \n
    \n \n {this.state.activeTabKey === \"me_chart_view\" ?\n \n
    \n \n
    \n
    \n :\n (this.state.activeTabKey === \"me_list_view\") ?\n \n \n \n : \"\"}\n
    \n
    \n
    \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MonitorERTabs);","import React from 'react';\nimport Image from '../components/image';\nimport ChartFilterHeader from './components/chartFilterHeader';\nimport _ from 'lodash';\n// import AdvancedFilterDqp from './components/advanced_filter_dqp';\nimport {\n getChartType,\n convertDecimalDigits,\n filterBoxPlotData,\n getRowCountContributionFromData, convertDataForListView, getChartFilterData\n} from \"../utils/common_utils\";\nimport Load from '../components/loadAction';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport moment from \"moment\";\nimport {\n NO_ERROR_CHART_COLORS,\n LIGHT_COLOR_MAP,\n SINGLE_ARROW_CHART_TYPE,\n GENERIC_CONSTANTS,\n FEATURE_DRIFT_ALIASES,\n MAX_DATA_POINTS_FOR_LIST_VIEW\n} from \"../utils/constant\";\nimport { normalizeAttributeName, normalizeChildDatasetName } from '../utils/attribute_name_utils';\nimport {faChartArea} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport CustomTreeFilter from './components/customTreeFilter';\nimport { getMetricsOption} from \"./components/filter_common_utils\";\n\n\nclass DqpErrorFullScreen extends React.Component {\n\n constructor(props) {\n super(props);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.renderGroup = this.renderGroup.bind(this);\n this.updateFullScreenData = this.updateFullScreenData.bind(this);\n this.changeGroup = this.changeGroup.bind(this);\n this.fullscreenapplyDataset = this.fullscreenapplyDataset.bind(this);\n this.changeShowErrors = this.changeShowErrors.bind(this);\n this.changePartitions = this.changePartitions.bind(this);\n this.getMetricsOption = getMetricsOption.bind(this);\n this.clearAllFilterData = this.clearAllFilterData.bind(this);\n this.applyDateFilter = this.applyDateFilter.bind(this);\n\n this.state={\n idValue: this.props.title,\n tempFullScreenData: null,\n // tempFullScreenDataAttribute: null,\n fullScreen: \"fade\",\n isAdvancedFilterApplied: false,\n startDateInside: null,\n endDateInside: null,\n showFullScreen: false,\n variant: this.props.variant,\n fullScreenData: null,\n showDatasets:null,\n metrics_data:this.props.metrics_data,\n selectedGroup:this.props.selectedGroup,\n showpartitions:true,\n showerrors:true,\n applied_dataset:[],\n applied_attribute:[],\n applied_metrics:[],\n applied_start_date:'',\n applied_end_date:'',\n applied_dataset_level:this.props.isDatasetLevel,\n tempFullScreenDataAttribute:Object.values(this.props.fullScreenAttributeData),\n clearAllFilter:false,\n intial_datasource:[],\n intial_datset:[],\n intial_attribute:[]\n }\n }\n\n setFullScreen() {\n document.body.classList.add(\"overflow-hidden\");\n this.setState({showFullScreen : true, fullScreen: \"show\"});\n }\n\n\n renderAttributeCharts(attributeData=\"\") {\n attributeData = attributeData === \"\" ? this.state.tempFullScreenDataAttribute : attributeData;\n let displayNumber = 0\n return attributeData.map((chartData, index) => {\n if(chartData === undefined || chartData === null) {\n return \"\"\n }\n let chart_data_value = Object.values(chartData)\n if(chart_data_value.length === 0) {\n return \"\"\n }\n let chartDataValue = chart_data_value[0]\n let datasetName = chartDataValue.datasetName !== undefined ? chartDataValue.datasetName : this.props.datasetName\n let datasourceName = chartDataValue.datasourceName !== undefined ? chartDataValue.datasourceName : this.props.datasourceName\n let convertedData = convertDataForListView(chartData, datasetName, datasourceName)\n let attributeName = chartDataValue.attribute_name\n displayNumber = displayNumber + 1\n return (\n
    \n
    \n {displayNumber === 1 ?\n

    \n\n {\"Attribute Level Charts\"}\n

    \n : \"\"\n }\n

    \n \n {displayNumber}\n \n {normalizeAttributeName(attributeName)}\n

    \n

    \n {\"\"}\n

    \n\n
    \n
    \n
    \n { this.renderModalChart(\"Attribute\", convertedData) }\n
    \n
    \n
    \n );\n \n });\n }\n\n updateFullScreenData(data, attributeData, startDate, endDate,showDatasets){\n this.setState({tempFullScreenData: data,\n tempFullScreenDataAttribute: attributeData,\n isAdvancedFilterApplied: !this.state.isAdvancedFilterApplied,\n startDateInside: startDate,\n endDateInside: endDate,\n showDatasets:showDatasets})\n }\n\n componentDidMount() {\n let selectedDataSet = {label:this.props.defaultDatasetInside[0].label,value:this.props.defaultDatasetInside[0].value}\n let datsetid = [];\n let attribute = [];\n for(let loop=0;loop 0 && this.props.defaultAttributeInside === undefined && this.props.filterData[\"attributesOptions\"][this.props.defaultDatasetInside[0].value] !== undefined){\n for(let loop=0;loop {\n let convertedData;\n let attributeData;\n let datasetName = normalizeChildDatasetName(this.props.datasetName);\n let datasourceName = this.props.datasourceName;\n if(Object.values(chartData) === undefined || Object.values(chartData).length === 0){\n attributeData = [];\n convertedData = [];\n return null;\n }\n else{\n datasetName = Object.values(chartData)[0].datasetName !== undefined ? normalizeChildDatasetName(Object.values(chartData)[0].datasetName) : normalizeChildDatasetName(this.props.datasetName)\n datasourceName = Object.values(chartData)[0].datasourceName !== undefined ? Object.values(chartData)[0].datasourceName : this.props.datasourceName\n convertedData = convertDataForListView(chartData, datasetName, datasourceName)\n attributeData = Object.values(this.props.fullScreenAttributeData)\n if(this.state.tempFullScreenDataAttribute !== null) {\n let datasetId = datasetKeys[index]\n attributeData = Object.values(this.state.tempFullScreenDataAttribute)\n if(attributeData.length > 0) {\n if(this.state.tempFullScreenDataAttribute[datasetId]!==undefined){\n attributeData = Object.values(this.state.tempFullScreenDataAttribute[datasetId])\n } \n }\n }\n }\n\n return (\n <>\n {this.props.lastProfilingTime !== null && this.props.lastProfilingTime !== undefined ?
    \n

    \n {`Your data last profiled at ${this.props.lastProfilingTime}`}\n \n

    \n
    \n :\n \"\"\n }\n {this.state.applied_dataset_level !== null && this.state.applied_dataset_level === false \n ?\n ''\n :\n
    \n
    \n

    \n \n {1}\n \n {\"Dataset Level Charts - \"} {datasetName}\n

    \n

    \n {\"\"}\n

    \n\n
    \n
    \n
    \n { this.renderModalChart(\"Dataset\", convertedData) }\n
    \n
    \n
    \n }\n {\n this.state.selectedGroup.value === \"all\" || this.state.selectedGroup.value === 'attributes' ?\n this.renderAttributeCharts(attributeData) : \"\"\n }\n \n );\n });\n }\n\n renderModalChart(chartLevel, chartDataList) {\n let colorIndex = [\"Purple\", \"Green\", \"Blue\", \"Yellow\"];\n let chartCount = 0;\n\n // To append color for attribute level charts\n let noErrorCount = 0;\n let is_same_col = false;\n let j = 1;\n let attributeList = []\n // To append color for dataset level charts\n let noErrorDatasetCount = 0;\n let is_same_data_col = false;\n let k = 1;\n let datasetList = []\n chartDataList = Object.values(chartDataList)\n if (chartDataList) {\n return chartDataList.map((chartData, index) => {\n let dataSetId = chartData[\"datasetId\"]\n // commenting here, because we combinely fetch recency data along with other metrics\n // if (chartData[\"name\"] === \"Recency\") {\n // let timelinessData = this.props.timelinessData.DefaultDataSet[0]\n // if(timelinessData === undefined || timelinessData.data === undefined) {\n // return \"\";\n // }\n\n // if(dataSetId === undefined) {\n // chartData = this.props.filteredTimeliness[0]\n // } else{\n // let chartDataFiltered = timelinessData.data.filter(x=>Number(x.data_set_id) === Number(dataSetId))\n // if(chartDataFiltered.length > 0) {\n // chartData = chartDataFiltered[0]\n // }\n // }\n // }\n if(chartData === undefined) {\n return \"\"\n }\n chartData[\"drift\"] = convertDecimalDigits(chartData[\"drift\"])\n chartData[\"dq_chart_points\"] = convertDecimalDigits(chartData[\"dq_chart_points\"])\n const attribute_name = chartData.attribute_name;\n if ( chartLevel === \"Dataset\" ||\n (attribute_name !== undefined && attribute_name !== null && chartLevel === \"Attribute\") ) {\n\n let id = null;\n let aggregateOptions = null;\n\n id = chartData[\"data_set_id\"];\n\n let key = `modal_${chartData.name}_${id}`;\n let title = this.props.title !== undefined ? this.props.title: '';\n let compareDatasetOptions = null\n let compareType =null;\n let compareAttributeOptions = null;\n let idValue = ''\n let showAggregateError = false;\n if (chartLevel === \"Attribute\") {\n key = key + \"_\" + attribute_name;\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareAttributeOptions = _.reject(this.state.compareAttributeOptions, function(d) { return ((d.label === attribute_name && d.data_set_id === chartData.data_set_id) || d.value.split(\"$\")[1] !== chartData.name ||\n d.data_set_id !== chartData.data_set_id); });\n }\n if (chartLevel === \"Dataset\") {\n chartData[\"chartLevel\"] = \"Dataset\"\n \n if(chartData[\"name\"] === \"Unique Values\"){\n chartData[\"name\"] = \"Unique Rows\"\n }\n\n idValue = chartData[\"ml_model_id\"] + \"_\" + chartData[\"data_set_id\"] + \"_\" + chartData[\"name\"].replace(/ /g,\"_\");\n compareType = chartLevel;\n compareDatasetOptions = _.reject(this.state.compareDatasetOptions, function(d) { return (d.value === chartData[\"data_set_id\"] || d.type !== chartData.name) });\n }\n\n title = title.replace(\" \", \"_\");\n\n chartCount = chartCount + 1;\n\n let chartType = getChartType(chartData, chartCount);\n const customGridKey = this.props.customKey;\n if (customGridKey !== undefined) {\n key = `${key}_${customGridKey}`;\n }\n\n if (chartData[\"key\"] !== undefined) {\n // Since we are using single complete model data for all Grids\n // related to model error, we will append the existing chart key with\n // current Grid's custom key.\n chartData = _.cloneDeep(chartData);\n\n key = `${key}_${chartData[\"key\"]}`;\n chartData[\"key\"] = key;\n }\n\n\n if (chartLevel === \"Dataset\") {\n if (datasetList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_data_col = true;\n }\n } else {\n if (is_same_data_col === true && datasetList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_data_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[k]];\n if (is_same_data_col === false) {\n is_same_data_col = true;\n } else {\n is_same_data_col = false;\n k = k + 1;\n }\n if (k === 4) {\n k = 0;\n }\n }\n }\n datasetList.push(noErrorDatasetCount);\n noErrorDatasetCount = noErrorDatasetCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n if (chartLevel === \"Attribute\") {\n if (attributeList.length === 0) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n if (chartCount % 2 !== 0) {\n is_same_col = true;\n }\n } else {\n if (is_same_col === true && attributeList.length === 1) {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[0]];\n is_same_col = false;\n } else {\n chartData[\"color\"] = NO_ERROR_CHART_COLORS[colorIndex[j]];\n if (is_same_col === false) {\n is_same_col = true;\n } else {\n is_same_col = false;\n j = j + 1;\n }\n if (j === 4) {\n j = 0;\n }\n }\n }\n attributeList.push(noErrorCount);\n noErrorCount = noErrorCount + 1;\n chartData[\"errorChart\"] = false;\n if (chartType === \"barWithError\") {\n chartType = \"barChart\";\n } else {\n if (chartType === \"areaWithError\") {\n chartType = \"areaChart\";\n }\n }\n }\n\n const rowValue = getRowCountContributionFromData(chartData)\n if (FEATURE_DRIFT_ALIASES.includes(chartData[\"name\"]) && rowValue !== GENERIC_CONSTANTS.NA) {\n chartType = SINGLE_ARROW_CHART_TYPE;\n }\n if(chartData[\"dq_chart_points\"].length === 0) {\n return \"\"\n }\n\n if (chartData[\"name\"] === \"Data Drift\") {\n let isBoxplot = chartData[\"boxplot_data\"].filter(x=>x !== \"NA\")\n if(isBoxplot.length > 0){\n chartData[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n if (chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartType = \"boxPlotZoomable\";\n if (chartData[\"boxPlotData\"][\"statistics\"] !== undefined && chartData[\"boxPlotData\"][\"statistics\"] !== null ) {\n delete chartData[\"boxPlotData\"][\"statistics\"][0][\"drift_patterns\"]\n }\n }\n }\n }\n let filteredData = null;\n let propsStartDate = this.state.startDateInside === null ? this.props.startDate : this.state.startDateInside\n let propsEndDate = this.state.endDateInside === null ? this.props.endDate : this.state.endDateInside\n let timeFilterApplied = true;\n if (propsStartDate !== null && propsEndDate !== null) {\n filteredData = getChartFilterData(chartData, propsStartDate,\n propsEndDate, chartType, false, false, MAX_DATA_POINTS_FOR_LIST_VIEW);\n let timeVals = null;\n if (filteredData !== null) {\n timeVals = filteredData.time;\n }\n if (timeVals !== undefined && timeVals !== null && timeVals.length > 0) {\n propsStartDate = moment(new Date(timeVals[0]));\n }\n }\n\n return (\n
    \n }>\n \n \n
    \n\n );\n }\n return '';\n });\n }\n }\n\n loadDataSourceRender(){\n\n }\n\n \n fullscreenapplyDataset(pm){\n\n this.setState({\"applied_dataset\":pm.dataset,\n \"applied_attribute\":pm.attribute,\n \"applied_metrics\":pm.metrics,\n \"applied_start_date\":pm.startdate,\n \"applied_end_date\": pm.enddate\n })\n\n // if(this.props.type === \"listView\") {\n let datasetLevelData = this.props.allData.dataset_level_data\n let attributeLevelData = this.props.allData.attribute_level_data\n let datasourceName = this.props.seletedDatasourceName;\n let newData = {}\n let newDataAttribute = {}\n let check = 0;\n for (let i=0; i \n parseInt(data.value) === parseInt(datasetId)\n ).length;\n\n if(filteredDataset !== undefined) {\n let metricundfisedcheck = false; \n for (let i=0; i 0 ){\n if(this.state.showpartitions === false){\n if(check > 0 ){\n newData[datasetId] = {}\n }\n }else {\n newData[datasetId] = {}\n }\n for (let i=0; i 0 ){\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n }\n }else {\n newData[datasetId][metricsId] = filteredMetrics\n newData[datasetId][metricsId][\"datasetName\"] = datasetName.toString()\n newData[datasetId][metricsId][\"datasourceName\"] = datasourceName\n newData[datasetId][metricsId][\"datasetId\"] = datasetId\n } \n }\n }\n }\n }\n // if(!this.state.showAttributes) {\n // continue\n // }\n let filteredAttributeData = attributeLevelData[datasetId]\n let filteredAttribute = {}\n if(this.state.showpartitions === false){\n if(check > 0 ){\n newDataAttribute[datasetId] = {}\n }} else {\n newDataAttribute[datasetId] = {}\n } \n for(let i=0;i 0 ){\n newDataAttribute[datasetId][attributeId] = {}\n }}\n else {\n newDataAttribute[datasetId][attributeId] = {}\n }\n for (let i=0; i 0 ){\n newDataAttribute[datasetId][attributeId][metricsId] = filteredMetricsAttributes\n newDataAttribute[datasetId][attributeId][metricsId][\"datasetName\"] = datasetName.toString()\n newDataAttribute[datasetId][attributeId][metricsId][\"datasourceName\"] = datasourceName\n newDataAttribute[datasetId][attributeId][metricsId][\"attributeId\"] = attributeId\n }\n }else {\n newDataAttribute[datasetId][attributeId][metricsId] = filteredMetricsAttributes\n newDataAttribute[datasetId][attributeId][metricsId][\"datasetName\"] = datasetName.toString()\n newDataAttribute[datasetId][attributeId][metricsId][\"datasourceName\"] = datasourceName\n newDataAttribute[datasetId][attributeId][metricsId][\"attributeId\"] = attributeId\n } \n\n }\n }\n }\n }\n }\n }\n }\n }\n this.updateFullScreenData(newData, newDataAttribute, pm.startdate, pm.enddate, this.state.showErrorsOnly,this.state.showDatasets);\n\n }\n \n applyDateFilter(pmStartDate,pmEndDate) {\n this.setState({ applied_start_date:pmStartDate,\n applied_end_date:pmEndDate}, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n }\n this.fullscreenapplyDataset(obj);\n });\n }\n\n clearAllFilterData() {\n\n if(this.props.filterData!==\"\"){\n for (let i = 0; i < this.props.filterData[\"datasetsOptions\"].length; i++) {\n this.props.filterData[\"datasetsOptions\"][i][\"checked\"]=\"\"\n }\n }\n\n let metrics_data;\n if(this.state.metrics_data!==\"\"){\n metrics_data = this.state.metrics_data;\n for (let i = 0; i < metrics_data.length; i++) {\n metrics_data[i][\"checked\"]=\"\"\n }\n }\n\n this.setState({\n metrics_data:metrics_data,\n clearAllFilter:true,\n applied_dataset:[],\n applied_attribute:[],\n applied_metrics:[],\n })\n\n }\n\n changePartitions(){\n this.setState({ showpartitions:!this.state.showpartitions }, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n }\n this.fullscreenapplyDataset(obj);\n });\n }\n\n changeShowErrors(){\n this.setState({\n showerrors: !this.state.showerrors\n });\n }\n\n changeGroup(selectedOption) {\n let dataset_level = this.state.applied_dataset_level;\n if(selectedOption.value===\"attributes\"){\n dataset_level = false\n }else {\n dataset_level = true\n }\n this.setState({ selectedGroup:selectedOption,applied_dataset_level:dataset_level}, function() {\n let obj = {dataset:this.state.applied_dataset,\n attribute:this.state.applied_attribute,\n applied_metrics:this.state.metrics_data,\n startdate:this.state.applied_start_date,\n enddate:this.state.applied_end_date,\n }\n this.fullscreenapplyDataset(obj);\n });\n }\n\n\n render() {\n let attributeData = Object.values(this.props.fullScreenAttributeData)\n\n let selectedMetricsCount = null\n let selectedMetrics = null\n if (this.state.metrics_data !== undefined){\n selectedMetrics = this.state.metrics_data.filter((data) => data.checked === true)\n selectedMetricsCount = selectedMetrics.length\n if (this.state.selectedGroup.label === \"Attribute Only\" && selectedMetrics !== null && selectedMetrics.length !== 0){\n let row_count_recency = selectedMetrics.filter((data) => data.label === 'Row Count' || data.label === 'Recency')\n selectedMetricsCount = selectedMetricsCount-row_count_recency.length\n }\n }\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    \n {this.props.title}\n

    \n
    \n
    \n {/* */}\n \n
    \n
    \n
    \n
    \n
    \n {this.state.intial_datasource_id!==undefined ?\n : \"\" }\n { this.props.isDatasetLevel === true || this.state.tempFullScreenData !== null ? this.renderGroup() : \"\"}\n {this.state.tempFullScreenData === null && this.props.isDatasetLevel === false ? this.renderAttributeCharts(attributeData) : \"\"}\n {this.state.tempFullScreenData !== null ? Object.keys(this.state.tempFullScreenData).length === 0 ?\n

    \n

    No data found for the selected metric

    \n
    \n : \"\" : \"\" }\n {selectedMetricsCount === 0 ?\n

    \n

    Please Select a metric

    \n
    \n : \"\"}\n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\nexport default DqpErrorFullScreen;\n\n","import React from 'react';\nimport {faArrowRight, faChartArea} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport ChartGrid from './chartGrid';\nimport Image from '../../components/image';\n// import AdvancedFilterDqp from './advanced_filter_dqp';\n// import Select from 'react-select';\n// import Form from 'react-bootstrap/Form';\nimport _ from 'lodash';\nimport {\n convertDecimalDigits,\n dqpRenderGroup,\n dqpRenderModalChart,\n getChartType,\n replaceNullValues\n} from \"../../utils/common_utils\";\nimport NoErrorInPreview from './noErrorPreview';\nimport {\n //CONFIGURE_DATA_SOURCE_URL,\n QUALITY_PERF_CHART_VIEW} from \"../../utils/constant\";\nimport {LIGHT_COLOR_MAP} from \"../../utils/constant\";\nimport Load from \"../../components/loadAction\";\nimport CustomTreeFilter from '../components/customTreeFilter';\nimport {getMetricsOption} from \"./filter_common_utils\";\n \nclass DqpGrid extends React.Component {\n\n constructor(props) {\n super(props);\n this.setFullScreen = this.setFullScreen.bind(this);\n this.closeFullScreen = this.closeFullScreen.bind(this);\n this.dqpRenderGroup = dqpRenderGroup.bind(this);\n this.dqpRenderModalChart = dqpRenderModalChart.bind(this);\n this.dqpRenderAllCharts = this.dqpRenderAllCharts.bind(this);\n this.updateCharts = this.updateCharts.bind(this);\n this.fullscreenapplyDataset = this.fullscreenapplyDataset.bind(this)\n this.getMetricsOption = getMetricsOption.bind(this);\n this.applyDateFilter = this.applyDateFilter.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n let gridTitle = this.props.title;\n let showOnlyErrorData = false;\n\n\n this.state={\n data: this.props.data,\n title: gridTitle,\n showAttributes: true,\n chartType: \"areaChart\",\n selectedMetrics: [],\n selectedDatasets: [],\n selectedAttributes: [],\n startDateInside: null,\n endDateInside: null,\n fullScreen: \"fade\",\n showOnlyErrorData: showOnlyErrorData,\n showFullScreen: false,\n variant: this.props.variant,\n modalData: this.props.modalData,\n aggregateOptions: this.getAggregateOptions(this.props.modalData[\"attribute\"]),\n compareAttributeOptions: this.getAttributeOptions(this.props.modalData[\"attribute\"]),\n compareDatasetOptions: this.getDataSrcOptions(this.props.modalData[\"dataSet\"]),\n srcOptionList: null,\n selectedDataSrc:null,\n fullScreenData: null,\n metrics_data:[],\n applied_dataset:[],\n applied_attribute:[],\n applied_metrics:[],\n applied_start_date:'',\n applied_end_date:'',\n\n }\n }\n fullscreenapplyDataset(pm){\n this.setState({\"applied_dataset\":pm.dataset,\n \"applied_attribute\":pm.attribute,\n \"applied_metrics\":pm.metrics,\n \"applied_start_date\":pm.startdate,\n \"applied_end_date\": pm.enddate\n })\n this.updateCharts(pm.startdate,\n pm.enddate, pm.dataset,\n pm.attribute, pm.metrics, true);\n }\n\n applyDateFilter(startdate,enddate){\n this.setState({ applied_start_date:startdate,\n applied_end_date:enddate}, function() {\n this.updateCharts(startdate,\n enddate, this.state.applied_dataset,\n this.state.applied_attribute, this.state.applied_metrics, true);\n });\n }\n\n static getDerivedStateFromProps(props, state){\n if (props.data !== state.data) {\n return {data : props.data};\n }\n else{\n return null;\n }\n }\n componentDidUpdate(prevProps, prevState) {\n if (prevState.data !== this.state.data) {\n let _modalData= _.cloneDeep(this.props.data);\n this.setState({modalData:_modalData});\n }\n }\n\n closeFullScreen(){\n document.body.classList.remove(\"overflow-hidden\");\n this.setState({\n fullscreenviewselect:false,\n fullScreen: '',\n showFullScreen: false,\n selectedDataSets: [],\n startDateInside: null,\n endDateInside: null,\n showAttributes: true,\n selectedAttributes: [],\n selectedMetrics: [],\n isAdvancedFilterApplied: false,\n isFilterChanged: false\n }, function() {\n setTimeout(\n () => this.props.resetfullscreen(), \n 500\n );\n });\n \n\n \n\n // fullscreenviewselect\n }\n\n dqpRenderAllCharts() {\n let data = Object.values(this.props.showMoreData)\n let finalData = data.map((fullScreenData) => {\n return this.dqpRenderGroup(fullScreenData)\n });\n return finalData\n }\n\n\n setFullScreen() {\n document.body.classList.add(\"overflow-hidden\");\n let datsetid = [];\n let attribute = [];\n for(let loop=0;loop \n parseInt(data.integration_id) === parseInt(this.props.selectedDataSource.value) && data.value!== \"*\"\n )\n \n // Need to simplify the logic \n for(let loop=0;loop -1){\n this.props.filterData[\"datasetsOptions\"][datasetindex][\"checked\"] = true;\n }\n this.props.filterData[\"datasetsOptions\"][loop][\"checked\"] = true;\n datsetid.push(\n {label:filterIntegrationData[loop][\"label\"],\n value:dataset_id\n }\n )\n } \n \n\n let defaultmetrics = this.getMetricsOption(filterIntegrationData,1,1);\n let metricsData = defaultmetrics;\n metricsData = metricsData.filter((data)=> \n data.checked===true\n )\n this.setState({\n applied_dataset:datsetid,\n applied_attribute:attribute,\n applied_metrics:metricsData,\n applied_start_date:this.props.startDate,\n applied_end_date:this.props.endDate,\n metrics_data:defaultmetrics,\n showFullScreen : true,\n fullScreen: \"show\"\n })\n\n \n// if (this.state.initialSelection !== undefined && this.state.initialSelection !== null){\n// this.changeModel(this.state.initialSelection);\n// }\n }\n\n updateCharts(startDate, endDate, selectedDatasets, selectedAttributes, selectedMetrics, showAttributes){\n\n this.setState({isAdvancedFilterApplied: true, isFilterChanged: !this.state.isFilterChanged, startDateInside: startDate, endDateInside: endDate,\n selectedDatasets: selectedDatasets, selectedAttributes: selectedAttributes,\n selectedMetrics: selectedMetrics, showAttributes: showAttributes});\n }\n\n renderGridItem() {\n if (this.props.disableShowMore) {\n // Results are not computed yet.\n return (\n \n );\n }\n\n let chartValues = this.props.data;\n if (chartValues === undefined || chartValues === null) {\n return '';\n }\n\n if (chartValues.length === 0) {\n // Results are computed. But there are no error charts to show in the preview page.\n // So just showing that there are no errors message\n return (\n \n );\n }\n\n let colorInfo = QUALITY_PERF_CHART_VIEW[this.props.id][\"colorArray\"];\n return chartValues.map((chartData, index) => {\n const attribute_name = chartData.attribute_name;\n const dataSetId = chartData.data_set_id;\n let key = `${chartData.name}_${dataSetId}`;\n let idValue = \"dqErrorPreview_\" + chartData[\"datasetName\"] + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n if (attribute_name !== undefined && attribute_name !== null) {\n key = key + \"_\" + attribute_name;\n idValue = \"dqErrorPreview_\" + chartData[\"datasetName\"] + \"_\" + attribute_name + \"_\" + chartData[\"name\"].replace(/ /g, \"_\");\n }\n\n let chartTitle = chartData.title;\n chartData[\"chartTitle\"] = chartTitle;\n replaceNullValues(chartData);\n let chartType = getChartType(chartData, index);\n\n if (chartData[\"name\"] === \"Data Drift\" && chartData[\"chartType\"] === \"boxPlotZoomable\") {\n chartType = \"boxPlotZoomable\";\n chartData['color'] = colorInfo[index];\n }\n\n if(chartData[\"name\"] === \"Unique Values\"){\n chartData[\"name\"] = \"Unique Rows\"\n }\n\n if (chartData['name'] === \"Data Drift\"){\n delete chartData[\"drift_pattern\"];\n delete chartData[\"drift_patterns\"];\n delete chartData['boxPlotData']['statistics'][\"drift_patterns\"];\n delete chartData['boxPlotData']['statistics'][\"metric_threshold_error_status\"];\n delete chartData['boxPlotData']['statistics'][\"metric_threshold_error_diff_value\"];\n delete chartData['drift'];\n\n }\n let colorCode = colorInfo[index];\n\n //error type- in toggle not applicable\n chartData[\"dq_chart_points\"] = convertDecimalDigits(chartData[\"dq_chart_points\"])\n return (\n \n );\n });\n }\n\n getDataSrcOptions(dataSetData) {\n let compareDatasetOptions =[];\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(dataSetData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let dataSetChart = chartData[j];\n let title = dataSetChart.title.split(\">\");\n let dataSetName;\n if (title.length > 2) {\n dataSetName = (dataSetChart.title.split(\">\")[2]).split(\"-\")[0]\n } else {\n dataSetName = (dataSetChart.title.split(\">\")[1]).split(\"-\")[0]\n }\n if (dataSetName !== undefined && dataSetName !== null) {\n compareDatasetOptions.push({\"label\": dataSetName.trim(), \"value\": dataSetChart.data_set_id, \"type\": dataSetChart.name, \"data\": dataSetChart});\n }\n }\n }\n }\n }\n return compareDatasetOptions;\n }\n\n getAttributeOptions(attributeData) {\n let compareAttributeOptions =[];\n //eslint-disable-next-line\n for (const [key, value] of Object.entries(attributeData)) {\n for (const [attribute, chartData] of Object.entries(value)) {\n if (attribute === \"data\") {\n for(let j = 0; j < chartData.length; j++) {\n let attr = chartData[j];\n let attribute_name = attr.attribute_name;\n if (attribute_name !== undefined && attribute_name !== null) {\n compareAttributeOptions.push({\"label\": attribute_name, \"value\":attribute_name+\"$\"+attr.name,\"data_set_id\":attr.data_set_id,\n \"data\": attr});\n }\n }\n }\n }\n }\n return compareAttributeOptions;\n }\n\n getAggregateOptions(attributeData) {\n let aggList = [];\n //eslint-disable-next-line\n for (const [key, profileDataObj] of Object.entries(this.props.modalData['profilingData'])) {\n let profileDataList = profileDataObj.data;\n for(let j = 0; j < profileDataList.length; j++) {\n let attr = profileDataList[j];\n let drift_pattern = attr.type;\n if (drift_pattern !== undefined && drift_pattern !== null) {\n if (drift_pattern === \"NO_DRIFT\" || drift_pattern === \"not_computed\") {\n aggList.push({\"label\":{attr.name} , \"value\":attr.name,\"attribute_name\":attr.attribute_name,\n \"data\": attr, \"data_set_id\": attr.data_set_id, \"is_error\": false});\n }\n }\n }\n }\n\n return aggList;\n }\n\n// changeDataSet(event, obj) {\n// this.setState({selectedDataSet: event});\n// }\n\ncomponentDidMount() {\n\n /* let datasetsOptions = this.props.filterData.datasetsOptions;\n let filterIntegrationData = datasetsOptions.filter((data)=> \n parseInt(data.integration_id) === parseInt(this.props.selectedDataSource.value) && data.value!== \"*\"\n )\n let datsetid = [];\n let attribute = [];\n for(let loop=0;loop -1){\n this.props.filterData[\"datasetsOptions\"][datasetindex][\"checked\"] = true;\n }\n datsetid.push(\n {label:filterIntegrationData[loop][\"label\"],\n value:dataset_id\n }\n )\n for(let loopattr=0;loopattr\n
    \n

    \n

    {`Drift values are currently not available for the selected ${page}.`}

    \n

    Please check after sometime.

    \n
    \n \n :\n <>\n
    \n
    \n
    \n {this.props.showLoader ?:this.renderGridItem()}\n
    \n
    \n
    \n
    \n {\n this.props.disableShowMore === true ? '' :\n
    \n \n \n \n

    Show More

    \n
    \n }\n\n
    \n
    \n
    \n { this.state.fullScreen === \"show\" ?
    \n
    \n
    \n
    \n
    \n \n

    \n {this.state.title}\n

    \n
    \n {/*
    \n \n
    */}\n \n
    \n
    \n
    \n
    \n {this.state.metrics_data.length > 0 ? \n \n : \n \"\" }\n {/*
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n
    */}\n { this.state.isAdvancedFilterApplied ? this.dqpRenderAllCharts() : this.dqpRenderGroup(this.props.modalData) }\n
    \n
    \n
    \n
    \n
    \n
    : \"\"}\n \n );\n }\n}\nexport default DqpGrid;\n\n","import React from 'react';\nimport MonitorPortlet from '../components/monitorPortlet';\nimport DqpGrid from './components/dqp_grid';\nimport Load from '../components/loadAction';\nimport { connect } from \"react-redux\";\nimport Select from 'react-select';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport moment from 'moment';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCalendar, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport { addMonitorDQPreview, setDataSource } from \"../redux/actions\";\nimport NoErrorInPreview from './components/noErrorPreview';\nimport { getApi } from \"../utils/event_handling\";\nimport _ from 'lodash';\nimport { Formik, ErrorMessage } from 'formik';\nimport * as yup from 'yup';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport Image from '../components/image';\nimport Form from 'react-bootstrap/Form';\nimport { Option, getPlaceholder } from \"./components/filter_common_utils\";\nimport CustomSelect from \"./components/customSelect\";\nimport { Button } from \"react-bootstrap\";\nimport { getDateObject } from \"../charts/browser_utils\"\nimport {\n filterChartDataForTime,\n canDisableShowMore, hasValidNumberOfDatasets,\n setDQShowMoreDataOnGroupingLevel,\n getAllDQShowMoreCharts\n} from \"../utils/common_utils\";\nimport {\n DISPLAY_DATE_FORMAT,\n NO_DATASET_NO_DATA_PROFILE,\n NO_DATASET_NO_ERROR\n} from \"../utils/constant\";\nimport CustomTreeFilter from './components/customTreeFilter';\n\nclass DqPerformance extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.changeSource = this.changeSource.bind(this);\n this.handleTime = this.handleTime.bind(this);\n this.handleTimeFilter = this.handleTimeFilter.bind(this);\n this.updateGridData = this.updateGridData.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.setGridData = this.setGridData.bind(this);\n this.setDqPreview = this.setDqPreview.bind(this);\n this.filterChartDataForTime = filterChartDataForTime.bind(this);\n this.setShowMoreDataOnGroupingLevel = setDQShowMoreDataOnGroupingLevel.bind(this);\n // let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n // let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n let startDate = this.props.default_filter_data.start_date !==undefined ? this.props.default_filter_data.start_date : moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 })\n let endDate = this.props.default_filter_data.end_date !==undefined ? this.props.default_filter_data.end_date : moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 })\n\n\n this.getApi = getApi.bind(this);\n\n // New Filter \n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this)\n this.applyDataset = this.applyDataset.bind(this)\n this.applyDateFilter = this.applyDateFilter.bind(this)\n this.toggleFilter = this.toggleFilter.bind(this)\n this.resetfullscreen = this.resetfullscreen.bind(this);\n\n\n if (this.props.monitorModuleProps.dqPreview !== null && this.props.monitorModuleProps.dqPreview !== undefined\n && this.props.monitorModuleProps.dqPreview[\"filterStartDate\"] != null && this.props.monitorModuleProps.dqPreview[\"filterStartDate\"] !== undefined) {\n\n let startDateObj = getDateObject(this.props.monitorModuleProps.dqPreview[\"filterStartDate\"]);\n startDate = moment(startDateObj).startOf('day');\n let endDateObj = getDateObject(this.props.monitorModuleProps.dqPreview[\"filterEndDate\"]);\n endDate = moment(endDateObj).endOf('day');\n }\n\n // let propsMonitorModule = this.props.monitorModuleProps;\n // propsMonitorModule['timelinessDataSetInfo'] = this.props.monitorModule.timelinessDataSetInfo\n // propsMonitorModule['timelinessAttributeInfo'] = this.props.monitorModule.timelinessAttributeInfo\n // let propsDataModule = this.props.dataModule;\n // let allDQShowMore = getAllDQShowMoreCharts(propsMonitorModule, propsDataModule, null);\n\n let propsMonitorModule = this.props.monitorModuleProps;\n propsMonitorModule['timelinessDataSetInfo'] = this.props.monitorModule.timelinessDataSetInfo\n propsMonitorModule['timelinessAttributeInfo'] = this.props.monitorModule.timelinessAttributeInfo\n let propsDataModule = {\"metaData\":this.props.metaData};\n\n let allDQShowMore = getAllDQShowMoreCharts(propsMonitorModule, propsDataModule, null);\n let selectedDataSourceID = Object.keys(this.props.integrationMapping)[0]\n if (this.props.selectedDataSrc !== null){\n selectedDataSourceID = this.props.selectedDataSrc.value\n }\n let data = {\"selectedDataSource\":selectedDataSourceID,\n \"integrations\":this.props.integrationMapping}\n allDQShowMore = this.updateTimelinessShowMoreData(allDQShowMore, data);\n \n this.state = {\n startDate: startDate,\n endDate: endDate,\n driftOnly: true,\n metrics: [{ \"label\": \"All\", \"value\": \"*\" },{ \"label\": \"Data Drift\", \"value\": \"drift\" }, { \"label\": \"Data Completeness\", \"value\": \"completeness\" },\n { \"label\": \"Data Timeliness\", \"value\": \"timeliness\" }, { \"label\": \"Data Accuracy\", \"value\": \"accuracy\" },\n { \"label\": \"Data Conformity\", \"value\": \"conformity\" }, { \"label\": \"Data Consistency\", \"value\": \"consistency\" },\n { \"label\": \"Data Uniqueness\", \"value\": \"uniqueness\" }],\n\n initial: { datasource: \"\", metrics: \"\" },\n showDropDown: false,\n selectedDataSrc: this.props.selectedDataSrc!==null?this.props.selectedDataSrc:null,\n timeFilterApplied: false,\n allDQShowMore: allDQShowMore,\n hideLastProfiledTime: false,\n isConsistencyEnabled: null,\n selectedMetrics: [],\n visibility: {\n drift: true,\n completeness: true,\n timeliness: true,\n accuracy: true,\n conformity: true,\n consistency: true,\n uniqueness: true\n },\n integrationsMap: null,\n // Newfilter \n selectedDataSourceID:\"\",\n selectedDataSourceName: \"\",\n clearAllFilter:false,\n filterData:this.props.filterData,\n isFilterMode:true,\n fullscreenselect:false,\n // completeness: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Completeness\"], null, startDate, endDate, false),\n // timeliness: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Timeliness\"], null, startDate, endDate, false),\n // accuracy: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Accuracy\"], null, startDate, endDate, false),\n // conformity: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Conformity\"], null, startDate, endDate, false),\n // consistency: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Consistency\"], null, startDate, endDate, false),\n // drift: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Drift\"], null, startDate, endDate, false),\n // uniqueness: this.setGridData(this.props.monitorModuleProps.dqPreview[\"Data Uniqueness\"], null, startDate, endDate, false),\n\n completeness: this.setGridData(allDQShowMore.completenessShowMore, null, startDate, endDate, false),\n timeliness: this.setGridData(allDQShowMore.timelinessShowMore, null, startDate, endDate, false),\n accuracy: this.setGridData(allDQShowMore.accuracyShowMore, null, startDate, endDate, false),\n drift: this.setGridData(allDQShowMore.driftShowMore, null, startDate, endDate, false),\n conformity: this.setGridData(allDQShowMore.conformityShowMore, null, startDate, endDate, false),\n consistency: this.setGridData(allDQShowMore.consistencyShowMore, null, startDate, endDate, false),\n uniqueness: this.setGridData(allDQShowMore.uniquenessShowMore, null, startDate, endDate, false),\n uniquenessShowMore: allDQShowMore.uniquenessShowMore,\n completenessDataSetList: allDQShowMore.completenessDataSetList,\n uniquenessDataSetList: allDQShowMore.uniquenessDataSetList,\n timelinessDataSetList: allDQShowMore.timelinessDataSetList,\n accuracyDataSetList: allDQShowMore.accuracyDataSetList,\n conformityDataSetList: allDQShowMore.conformityDataSetList,\n consistencyDataSetList: allDQShowMore.consistencyDataSetList,\n driftDataSetList: allDQShowMore.driftDataSetList,\n completenessShowMore: allDQShowMore.completenessShowMore,\n timelinessShowMore: allDQShowMore.timelinessShowMore,\n accuracyShowMore: allDQShowMore.accuracyShowMore,\n conformityShowMore: allDQShowMore.conformityShowMore,\n consistencyShowMore: allDQShowMore.consistencyShowMore,\n driftShowMore: allDQShowMore.driftShowMore,\n\n inProgress:this.props.inProgress,\n noDataFound:this.props.noDataFound,\n noIntegration:this.props.noIntegration,\n }\n\n }\n\n resetfullscreen(){\n this.setState({\n fullscreenselect: false\n })\n }\n\n clearAllFilterData(){\n let cur_data = this.state.metrics;\n for (let i = 0; i < cur_data.length; i++) {\n cur_data[i][\"checked\"] = false;\n }\n this.setState({metrics:cur_data,filterData: this.props.filterData,clearAllFilter:true})\n }\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n applyDataset(pm){\n if(pm.metrics.length > 0){\n this.setState({ selectedMetrics: pm.metrics }, function() {\n this.updateGridData(this.state.selectedDataSrc, true);\n });\n }\n }\n\n applyDateFilter(start_date,end_date){\n let obj = {\n \"datasource\": this.props.default_filter_data.datasource,\n \"datasourcename\":this.props.default_filter_data.datasourcename,\n \"start_date\": start_date,\n \"end_date\": end_date,\n }\n this.props.setCustomFilterValues(obj);\n\n let emptyfilter = this.state.selectedMetrics.length === 0 ? \n this.state.metrics.filter((data)=>\n data.value !==\"*\"\n )\n : this.state.selectedMetrics;\n this.setState({ startDate:start_date,endDate:end_date,selectedMetrics:emptyfilter}, function() {\n this.handleSubmit();\n });\n }\n\n loadDataSourceRender(selectedDataSource) {\n let obj = {\n \"datasource\": selectedDataSource.integration_id,\n \"datasourcename\": selectedDataSource.integration_name,\n \"start_date\": this.state.startDate,\n \"end_date\": this.state.endDate,\n }\n\n\n this.props.setCustomFilterValues(obj);\n let event = { \"label\": selectedDataSource.integration_name, \"value\": selectedDataSource.integration_id }\n let initial = { \"datasource\": selectedDataSource.integration_id, \"metrics\": \"\" };\n\n if (event.value === this.state.selectedDataSourceID) {\n return\n }\n else {\n this.props.fetchDataSourceData(event.value, 'dqp_grid_view')\n\n }\n this.updateGridData(event);\n initial.datasource = event.value;\n this.setState({ selectedDataSrc: event, initial: initial });\n }\n\n componentDidMount() {\n if(this.props.default_filter_data.datasource!==undefined && this.props.default_filter_data.datasource > 0 ){\n this.setState({\n selectedDataSrc:{value:this.props.default_filter_data.datasource\n ,label:this.props.default_filter_data.datasourcename},\n seletedDatasourceId:this.props.default_filter_data.datasource,\n seletedDatasourceName:this.props.default_filter_data.datasourcename,\n startDate: this.props.default_filter_data.start_date !==undefined ? this.props.default_filter_data.start_date : this.state.startDate,\n endDate: this.props.default_filter_data.end_date !==undefined ? this.props.default_filter_data.end_date : this.state.endDate ,\n timeFilterApplied: true\n });\n }\n this.getApi(\"checkConsistency\");\n this.getApi(\"integrations_profile\");\n\n }\n\n componentDidUpdate(prevProps) {\n // Current props monitor module\n let cPMonitorModule = this.props.monitorModuleProps;\n\n // Previous props module\n let pPMonitorModule = prevProps.monitorModuleProps;\n let isDataChanged = pPMonitorModule.driftAttributeInfo !== cPMonitorModule.driftAttributeInfo;\n\n // driftAttributeInfoCount variable will be incremented when the last API call\n // of monitor page is called. [The last API call is Data drift - attribute level]\n isDataChanged = isDataChanged ||\n (pPMonitorModule.driftAttributeInfoCount !== cPMonitorModule.driftAttributeInfoCount)\n if (isDataChanged) {\n let startDate = this.state.startDate;\n let endDate = this.props.endDate;\n if (cPMonitorModule.dqPreview !== undefined && cPMonitorModule.dqPreview !== null &&\n cPMonitorModule.dqPreview[\"filterStartDate\"] != null && cPMonitorModule.dqPreview[\"filterStartDate\"] !== undefined) {\n let startDateObj = getDateObject(cPMonitorModule.dqPreview[\"filterStartDate\"]);\n startDate = moment(startDateObj).startOf('day');\n let endDateObj = getDateObject(cPMonitorModule.dqPreview[\"filterEndDate\"]);\n endDate = moment(endDateObj).endOf('day');\n }\n\n let propsMonitorModule = cPMonitorModule;\n propsMonitorModule['timelinessDataSetInfo'] = this.props.monitorModule.timelinessDataSetInfo\n propsMonitorModule['timelinessAttributeInfo'] = this.props.monitorModule.timelinessAttributeInfo\n let propsDataModule = {\"metaData\":this.props.metaData};\n let allDQShowMore = getAllDQShowMoreCharts(propsMonitorModule, propsDataModule, null);\n allDQShowMore = this.updateTimelinessShowMoreData(allDQShowMore, propsDataModule);\n this.setState({\n completeness: this.setGridData(allDQShowMore.completenessShowMore, null, startDate, endDate, false),\n timeliness: this.setGridData(allDQShowMore.timelinessShowMore, null, startDate, endDate, false),\n accuracy: this.setGridData(allDQShowMore.accuracyShowMore, null, startDate, endDate, false),\n drift: this.setGridData(allDQShowMore.driftShowMore, null, startDate, endDate, false),\n conformity: this.setGridData(allDQShowMore.conformityShowMore, null, startDate, endDate, false),\n consistency: this.setGridData(allDQShowMore.consistencyShowMore, null, startDate, endDate, false),\n uniqueness: this.setGridData(allDQShowMore.uniquenessShowMore, null, startDate, endDate, false),\n uniquenessShowMore: allDQShowMore.uniquenessShowMore,\n uniquenessDataSetList: allDQShowMore.uniquenessDataSetList,\n completenessDataSetList: allDQShowMore.completenessDataSetList,\n timelinessDataSetList: allDQShowMore.timelinessDataSetList,\n accuracyDataSetList: allDQShowMore.accuracyDataSetList,\n conformityDataSetList: allDQShowMore.conformityDataSetList,\n consistencyDataSetList: allDQShowMore.consistencyDataSetList,\n driftDataSetList: allDQShowMore.driftDataSetList,\n completenessShowMore: allDQShowMore.completenessShowMore,\n timelinessShowMore: allDQShowMore.timelinessShowMore,\n accuracyShowMore: allDQShowMore.accuracyShowMore,\n conformityShowMore: allDQShowMore.conformityShowMore,\n consistencyShowMore: allDQShowMore.consistencyShowMore,\n driftShowMore: allDQShowMore.driftShowMore,\n });\n }\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n handleTime(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n setGridData(dataFromProps, dataSource, startDate, endDate, timeFilterApplied) {\n let data = _.cloneDeep(dataFromProps);\n let chartList = [];\n if (data[\"DefaultDataSet\"] !== undefined && data[\"DefaultDataSet\"].length > 0) {\n let defaultDatasetCharts = data[\"DefaultDataSet\"][0][\"data\"];\n chartList = [...chartList, ...defaultDatasetCharts];\n }\n if (chartList.length < 3 && data[\"DefaultAttribute\"] !== undefined && data[\"DefaultAttribute\"].length > 0) {\n let defaultAttributeCharts = data[\"DefaultAttribute\"][0][\"data\"];\n chartList = [...chartList, ...defaultAttributeCharts];\n }\n if (chartList.length < 3 && data[\"CustomDataSet\"] !== undefined && data[\"CustomDataSet\"].length > 0) {\n let customDatasetCharts = data[\"CustomDataSet\"][0][\"data\"];\n chartList = [...chartList, ...customDatasetCharts];\n }\n\n if (chartList.length < 3 && data[\"CustomAttribute\"] !== undefined && data[\"CustomAttribute\"].length > 0) {\n let customAttributeCharts = data[\"CustomAttribute\"][0][\"data\"];\n chartList = [...chartList, ...customAttributeCharts];\n }\n\n let timeFilteredData = [];\n for (let data of chartList) {\n let copiedData = {}\n Object.assign(copiedData, data);\n let result = this.filterChartDataForTime(data, startDate, endDate);\n let boxPlotDataAvailable = false;\n if (result.boxPlotData !== undefined && result.boxPlotData !== null) {\n boxPlotDataAvailable = true;\n let boxPlotData = result.boxPlotData;\n if (boxPlotData[\"statistics\"].length > 0) {\n boxPlotData[\"statistics\"][0][\"drift_patterns\"] = []\n }\n copiedData.boxPlotData = boxPlotData;\n }\n let updatedTime = result.time;\n let yAxis;\n if (result.dq_chart_points !== undefined) {\n yAxis = result.dq_chart_points;\n } else {\n yAxis = result.drift;\n }\n if ((copiedData.chartType === \"boxPlotZoomable\" && boxPlotDataAvailable === false) ||\n (copiedData.chartType !== \"boxPlotZoomable\" && updatedTime.length === 0)) {\n continue;\n }\n if (timeFilterApplied === false && updatedTime.length >= 10) {\n updatedTime = updatedTime.slice(Math.max(updatedTime.length - 10, 0));\n yAxis = yAxis.slice(Math.max(yAxis.length - 10, 0));\n }\n copiedData[\"time\"] = updatedTime;\n copiedData[\"drift\"] = yAxis;\n copiedData[\"dq_chart_points\"] = yAxis;\n copiedData[\"errorChart\"] = false;\n copiedData[\"drift_patterns\"] = []\n copiedData['drift_pattern'] = null\n timeFilteredData.push(copiedData);\n }\n if (timeFilteredData.length > 3) {\n timeFilteredData = timeFilteredData.slice(0, 3);\n }\n return timeFilteredData;\n }\n\n changeSource(event, obj) {\n this.props.fetchDataSourceData(event.value, 'dqp_grid_view')\n this.updateGridData(event);\n let initial = this.state.initial;\n initial.datasource = event.value;\n this.setState({ selectedDataSrc: event, initial: initial });\n\n }\n\n\n\n setDqPreview(dqPreview) {\n if (dqPreview === undefined || dqPreview === null) {\n return;\n }\n this.setState({\n completeness: this.setGridData(dqPreview[\"Data Completeness\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n timeliness: this.setGridData(dqPreview[\"Data Timeliness\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n accuracy: this.setGridData(dqPreview[\"Data Accuracy\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n conformity: this.setGridData(dqPreview[\"Data Conformity\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n consistency: this.setGridData(dqPreview[\"Data Consistency\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n drift: this.setGridData(dqPreview[\"Data Drift\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n uniqueness: this.setGridData(dqPreview[\"Data Uniqueness\"], null, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n });\n }\n\n handleTimeFilter(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n if(this.props.noIntegration === true){\n this.setState({ startDate: startDate, endDate: endDate, timeFilterApplied: true });\n return\n }\n let startDateObj = getDateObject(this.props.monitorModuleProps.dqPreview[\"dataFrom\"]);\n let exStartDate = moment(startDateObj).startOf('day');\n\n // let valuesAvailable = startDate.isSameOrAfter(exStartDate) && endDate.isSameOrBefore(exEndDate);\n let valuesAvailable = startDate.isSameOrAfter(exStartDate);\n\n // API calls not needed as of now for time filter. We can filter based on available data\n //let valuesAvailable =false;\n if (valuesAvailable === true) {\n let grids = ['completeness', 'timeliness', 'accuracy', 'conformity', 'consistency', 'drift', 'uniqueness'];\n let keyNameMapping = {\n \"completeness\": \"completenessShowMore\",\n \"timeliness\": \"timelinessShowMore\",\n \"accuracy\": \"accuracyShowMore\",\n \"consistency\": \"consistencyShowMore\",\n \"conformity\": \"conformityShowMore\",\n \"drift\": \"driftShowMore\",\n \"uniqueness\": \"uniquenessShowMore\"\n }\n for (let grid of grids) {\n let name = keyNameMapping[grid];\n let dataSource = null;\n if (this.state.selectedDataSrc !== undefined && this.state.selectedDataSrc !== null) {\n dataSource = this.state.selectedDataSrc.value;\n }\n let CompleteData = this.setGridData(this.state[name], dataSource, startDate, endDate, true);\n this.setState({ [grid]: CompleteData });\n }\n } else {\n if (this.state.selectedDataSrc !== null && this.state.selectedDataSrc !== undefined) {\n //let dataSourceId = this.state.selectedDataSrc['value'];\n // let tenantData = { \"tenant_id\": teamID,\n // \"integration_ids\": [dataSourceId],\n // \"payload_start_time\": startDate.format('YYYY-MM-DD 00:00:00'),\n // \"payload_end_time\": endDate.format('YYYY-MM-DD 23:59:59') };\n //preFetchDqMonitorPreview(tenantData, this.setDqPreview);\n } else {\n // let tenantData = { \"tenant_id\": teamID,\n // \"payload_start_time\": startDate.format('YYYY-MM-DD 00:00:00'),\n // \"payload_end_time\": endDate.format('YYYY-MM-DD 23:59:59') };\n //preFetchDqMonitorPreview(tenantData, this.setDqPreview);\n }\n }\n this.setState({ startDate: startDate, endDate: endDate, timeFilterApplied: true });\n }\n\n updateTimelinessShowMoreData(allDQShowMore, propsDataModule) {\n let hasChartData = false\n let selectedDataSourceId = propsDataModule.selectedDataSource\n let integrationsDict = propsDataModule.integrations\n let selectedDataSourceName = integrationsDict[selectedDataSourceId]\n if (allDQShowMore.timelinessShowMore.dataSet.length === 0) {\n return allDQShowMore;\n }\n let timelinessShowMoreData = allDQShowMore.timelinessShowMore.dataSet[0].data\n delete allDQShowMore.timelinessShowMore.dataSet[0].data\n let data_source_name = \"\"\n let newTimelinessDatasetList = []\n \n for ( let data =0; data < timelinessShowMoreData.length;data++ ){\n data_source_name = timelinessShowMoreData[data].data_source_name\n if ( selectedDataSourceName === data_source_name) {\n newTimelinessDatasetList.push(timelinessShowMoreData[data])\n hasChartData = true\n }\n }\n allDQShowMore.timelinessShowMore.dataSet[0][\"data\"] = newTimelinessDatasetList\n allDQShowMore.timelinessShowMore[\"hasChartData\"] = hasChartData\n return allDQShowMore\n }\n\n\n updateGridData(event, isMetricsSectionFiltered = false) {\n let dataSourceId = event.value;\n let propsMonitorModule = this.props.monitorModuleProps;\n propsMonitorModule['timelinessDataSetInfo'] = this.props.monitorModule.timelinessDataSetInfo\n propsMonitorModule['timelinessAttributeInfo'] = this.props.monitorModule.timelinessAttributeInfo\n let propsDataModule = {\"metaData\":this.props.metaData};\n let allDQShowMore = getAllDQShowMoreCharts(propsMonitorModule, propsDataModule, null);\n let selectedDataSourceID = this.props.selectedDataSrc.value\n let data = {\"selectedDataSource\":selectedDataSourceID,\n \"integrations\":this.props.integrationMapping}\n allDQShowMore = this.updateTimelinessShowMoreData(allDQShowMore, data);\n if (!isMetricsSectionFiltered) {\n this.setState({\n completeness: this.setGridData(allDQShowMore.completenessShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n timeliness: this.setGridData(allDQShowMore.timelinessShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n accuracy: this.setGridData(allDQShowMore.accuracyShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n conformity: this.setGridData(allDQShowMore.conformityShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n consistency: this.setGridData(allDQShowMore.consistencyShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n drift: this.setGridData(allDQShowMore.driftShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n uniqueness: this.setGridData(allDQShowMore.uniquenessShowMore, dataSourceId, this.state.startDate, this.state.endDate, this.state.timeFilterApplied),\n uniquenessShowMore: allDQShowMore.uniquenessShowMore,\n uniquenessDataSetList: allDQShowMore.uniquenessDataSetList,\n completenessDataSetList: allDQShowMore.completenessDataSetList,\n timelinessDataSetList: allDQShowMore.timelinessDataSetList,\n accuracyDataSetList: allDQShowMore.accuracyDataSetList,\n conformityDataSetList: allDQShowMore.conformityDataSetList,\n consistencyDataSetList: allDQShowMore.consistencyDataSetList,\n driftDataSetList: allDQShowMore.driftDataSetList,\n completenessShowMore: allDQShowMore.completenessShowMore,\n timelinessShowMore: allDQShowMore.timelinessShowMore,\n accuracyShowMore: allDQShowMore.accuracyShowMore,\n conformityShowMore: allDQShowMore.conformityShowMore,\n consistencyShowMore: allDQShowMore.consistencyShowMore,\n driftShowMore: allDQShowMore.driftShowMore,\n });\n } else {\n let data;\n let visibility = this.state.visibility\n this.state.metrics.map((metrics, index) => {\n let selected = this.state.selectedMetrics.filter(x => x.label === metrics.label);\n if (selected.length === 0) {\n visibility[metrics.value] = false\n return 1\n }\n visibility[metrics.value] = true\n let keyNameMapping = {\n \"Data Completeness\": \"completenessShowMore\",\n \"Data Timeliness\": \"timelinessShowMore\",\n \"Data Accuracy\": \"accuracyShowMore\",\n \"Data Consistency\": \"consistencyShowMore\",\n \"Data Conformity\": \"conformityShowMore\",\n \"Data Drift\": \"driftShowMore\",\n \"Data Uniqueness\": \"uniquenessShowMore\"\n }\n let sectionName = keyNameMapping[metrics.label];\n data = this.setGridData(allDQShowMore[sectionName], dataSourceId,\n this.state.startDate, this.state.endDate, this.state.timeFilterApplied)\n switch (metrics.label) {\n case \"Data Completeness\":\n this.setState({\n completeness: data, completenessShowMore: allDQShowMore.completenessShowMore,\n completenessDataSetList: allDQShowMore.completenessDataSetList\n });\n break\n case \"Data Uniqueness\":\n this.setState({\n uniqueness: data, uniquenessShowMore: allDQShowMore.uniquenessShowMore,\n uniquenessDataSetList: allDQShowMore.uniquenessDataSetList\n });\n break\n case \"Data Drift\":\n this.setState({\n drift: data, driftShowMore: allDQShowMore.driftShowMore,\n driftDataSetList: allDQShowMore.driftDataSetList\n });\n break\n case \"Data Timeliness\":\n this.setState({\n timeliness: data, timelinessShowMore: allDQShowMore.timelinessShowMore,\n timelinessDataSetList: allDQShowMore.timelinessDataSetList\n });\n break\n case \"Data Accuracy\":\n this.setState({\n accuracy: data, accuracyShowMore: allDQShowMore.accuracyShowMore,\n accuracyDataSetList: allDQShowMore.accuracyDataSetList\n });\n break\n case \"Data Conformity\":\n this.setState({\n conformity: data, conformityShowMore: allDQShowMore.conformityShowMore,\n conformityDataSetList: allDQShowMore.conformityDataSetList\n });\n break\n case \"Data Consistency\":\n this.setState({\n consistency: data, consistencyShowMore: allDQShowMore.consistencyShowMore,\n consistencyDataSetList: allDQShowMore.consistencyDataSetList\n });\n break\n\n default:\n break\n }\n\n return 1\n\n });\n this.setState({ visibility: visibility });\n }\n\n\n this.props.setDataSource(dataSourceId);\n }\n\n handleSubmit() {\n // this.props.fetchDataSourceData(this.state.selectedDataSrc.value, 'dqp_grid_view')\n this.setState({ showDropDown: false });\n this.updateGridData(this.state.selectedDataSrc, true);\n\n }\n\n reset() {\n this.setState({\n selectedMetrics: [],\n selectedDataSrc: null,\n initial: { datasource: \"\", metrics: \"\" }\n });\n }\n\n render() {\n\n\n\n let allDQShowMore = this.state.allDQShowMore\n let showMoreData = {\n \"completenessShowMore\": allDQShowMore.completenessShowMore,\n \"timelinessShowMore\": allDQShowMore.timelinessShowMore,\n \"accuracyShowMore\": allDQShowMore.accuracyShowMore,\n \"conformityShowMore\": allDQShowMore.conformityShowMore,\n \"consistencyShowMore\": allDQShowMore.consistencyShowMore,\n \"driftShowMore\": allDQShowMore.driftShowMore,\n \"uniquenessShowMore\": allDQShowMore.uniquenessShowMore\n }\n\n // This is the last API to be called in prefetch. If the data drift - attribute API is called,\n // we can say that prefetch calls for monitor are over\n const prefetchCompleted = this.props.monitorModuleProps.driftAttributeInfoCount > 0;\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n\n let dataSourceOption = [];\n for (const [key, value] of Object.entries(this.props.integrationMapping)) {\n if (key !== undefined && value !== undefined) {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n }\n\n let dataSetOptions = [];\n for (const [key, value] of Object.entries(this.props.dataModule.dataSets)) {\n dataSetOptions.push({ \"label\": value, \"value\": key });\n }\n let selectedDataSource = this.props.selectedDataSrc;\n // let lastProfilingTimeDict = this.props.dataModule.lastProfilingTime;\n // let errorsNotYetComputed = Object.keys(this.props.monitorModuleProps.dqPreview).length === 0;\n let lastProfiledTime = this.props.last_processed_time;\n // if (this.state.selectedDataSrc === null && Object.keys(lastProfilingTimeDict).length > 0) {\n // let maxLastProfilingTime = Object.keys(lastProfilingTimeDict).reduce((a, b) => Number(getDateObject(lastProfilingTimeDict[a])) > Number(getDateObject(lastProfilingTimeDict[b])) ? a : b);\n\n // lastProfiledTime = lastProfilingTimeDict[maxLastProfilingTime];\n // }\n // this.props.monitorModuleProps.consistencyDataSetInfo, this.props.monitorModuleProps.consistencyAttributeInfo\n const hasValid = hasValidNumberOfDatasets(this.state.integrationsMap, selectedDataSource);\n\n let lastProfilingTime = lastProfiledTime ?\n `Your data last profiled at ${lastProfiledTime}` : \"Data Profiling is In progress ...\";\n\n if (!hasValid && this.state.selectedDataSrc !== null && this.state.selectedDataSrc !== undefined) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n }\n\n let noDataFoundMessage = `Data profiling is in-progress`;\n if (!hasValid) {\n noDataFoundMessage = NO_DATASET_NO_ERROR;\n } else if (lastProfilingTime !== undefined && lastProfilingTime !== null && lastProfilingTime !== 'Data Profiling is In progress ...') {\n //data profiling completed. But no charts available\n noDataFoundMessage = \"No Data found in the configured Data Source(s)\"\n }\n\n // if(this.props.noIntegration === true || this.props.noDataFound === true){\n // noDataFoundMessage = null\n // if(this.props.inProgress===true && this.props.noDataFound === false && ){\n // lastProfilingTime = \"Data profiling is in-progress\"\n // }\n // }\n\n lastProfilingTime= this.props.last_processed_time === null ? \"--\" : `Your data last profiled at ${this.props.last_processed_time}`;\n if (this.state.noIntegration === true) {\n noDataFoundMessage = null\n lastProfilingTime = \"No data available\"\n }\n else if(this.state.inProgress === true && this.state.noDataFound === false && this.state.noIntegration === false){\n lastProfilingTime = \"Data profiling is in-progress\"\n noDataFoundMessage = \"Data profiling is in-progress\"\n }\n // else if(this.state.noDataFound === false && this.state.noIntegration === false ){\n // noDataFoundMessage = \"No data found for selected time range\"\n // } \n\n\n let dqSchema = yup.object({\n // Monitor optimization\n // datasource: yup.string().required(\"Datasource is a required field\"),\n metrics: yup.string().required(\"Metrics Section is a required field\"),\n });\n return (\n\n <>\n {\n
    \n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n
    \n \n
    \n {/* style={{display:\"none\"}} */}\n
    \n
    \n label.includes(query)}\n options={dataSourceOption}\n onChange={this.changeSource}\n classNamePrefix='form-control'\n placeholder=\"Choose Datasource\"\n value={this.state.selectedDataSrc}\n />\n
    \n
    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n \n {({\n values,\n errors,\n touched,\n setValues,\n setFieldValue,\n handleChange,\n handleBlur,\n handleSubmit,\n setErrors,\n isValid,\n }) => (<>\n { this.state.showDropDown === true ? this.setState({ showDropDown: false }) : this.setState({ showDropDown: true }) }} id=\"dropdown-autoclose-false\" className=\"btn-light\">\n \n \n \n
    \n
    \n

    Select Date

    \n \n \n \n \n \n {this.state.startDate.format(DISPLAY_DATE_FORMAT)} - {this.state.endDate.format(DISPLAY_DATE_FORMAT)}\n \n \n \n Datasource\n {\n handleChange(\"datasource\")(selectedOption.value.toString());\n this.setState({ selectedDataSrc: selectedOption })\n }}\n classNamePrefix='select-control'\n value={this.state.selectedDataSrc}\n isDisabled={true}\n />\n \n \n \n Metrics Section\n {\n if (selectedOption !== null && selectedOption.length !== 0) {\n handleChange(\"metrics\")(selectedOption[0].value.toString());\n } else {\n handleChange(\"metrics\")(\"\");\n }\n this.setState({ selectedMetrics: selectedOption })\n }}\n allowSelectAll={true}\n placeholder={getPlaceholder(\"Choose Metrics Section\", this.state.selectedMetrics, this.state.metrics)}\n value={this.state.selectedMetrics}\n controlShouldRenderValue={false}\n />\n \n \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n\n \n )}\n \n
    \n
    \n
    \n }\n {this.state.selectedDataSrc !== null && this.state.selectedDataSrc !==\"\" && this.props.filterData!== undefined && this.state.isFilterMode === true && this.state.noIntegration === false ?\n \n :\"\" }\n {/*
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    */}\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"drift\"] ? : \n ) :\n // (this.props.showLoader === true ? :\n \n // )\n }\n /> : '')\n : :\n \n }\n />\n }\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"completeness\"] ? :\n ) :\n (this.props.showLoader === true ? :\n \n )\n }\n /> : '')\n : :\n \n }\n />\n }\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"uniqueness\"] ? :\n ) :\n (this.props.showLoader === true ? :\n\n )}\n /> : '')\n : :\n \n }\n />\n }\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"timeliness\"] ? :\n ) :\n (this.props.showLoader === true ? :\n\n \n )\n }\n /> : '')\n : :\n \n }\n />\n }\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"accuracy\"] ? :\n ) :\n (this.props.showLoader === true ? :\n\n \n )\n }\n /> : '')\n : :\n \n }\n />\n }\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"conformity\"] ? :\n ) :\n (this.props.showLoader === true ? :\n\n \n )\n }\n /> : \"\")\n : :\n \n }\n />\n }\n {\n this.props.selectedDataSource !== -1 ?\n (this.state.visibility[\"consistency\"] ? :\n ) :\n (this.props.showLoader === true ? :\n\n \n )\n }\n /> : '')\n : :\n \n }\n />\n }\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps,\n { setDataSource, addMonitorDQPreview }\n\n)(DqPerformance);","import React from 'react';\nimport DqPerformance from \"./dqPerformance\";\nimport {\n getMonitorInfo,\n} from \"../utils/monitorEventHandling\";\nimport {\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n setDataSource,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyPreview,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMonitorPreview,\n prefetchMonitorState,\n} from \"../redux/actions\";\nimport { connect } from \"react-redux\";\n// import { post_api_call_cnt, post_api_call_complete_cnt } from \"../utils/event_handling\"\nimport Load from '../components/loadAction';\n\nclass DqpGridViewContent extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.getMonitorInfo = getMonitorInfo.bind(this)\n this.fetchMonitorInfo = this.fetchMonitorInfo.bind(this)\n this.fetchDataSourceData = this.fetchDataSourceData.bind(this)\n this.pre_load = true\n this.state = {\n activeTabKey: \"dqp_grid_view\",\n render: true,\n monitorModuleProps: {},\n showLoader:true,\n selectedDataSrc:null,\n last_processed_time:null,\n inProgress:this.props.inProgress,\n noIntegration:this.props.noIntegration,\n noDataFound:this.props.noDataFound,\n\n };\n }\n\n fetchMonitorInfo(id=null, tab=null) {\n let teamID = localStorage.getItem('team_id')\n let tenantData = { \"tenant_id\": teamID };\n let integrationId = id\n\n if(integrationId !== null){\n this.setState({showLoader:true})\n this.getMonitorInfo(\n tenantData,this.props.addTimelinessDataSetInfo,\n this.props.addRecencyPreview,integrationId\n );\n }\n else{\n this.setState({showLoader:true})\n this.getMonitorInfo(\n tenantData, this.props.addTimelinessDataSetInfo,\n this.props.addRecencyPreview, \n );\n }\n \n }\n\n componentDidMount() {\n if(this.props.default_filter_data.datasource!==undefined && this.props.default_filter_data.datasource > 0 ){\n this.setState({\n startDate: this.props.default_filter_data.start_date !==undefined ? this.props.default_filter_data.start_date : this.state.startDate,\n endDate: this.props.default_filter_data.end_date !==undefined ? this.props.default_filter_data.end_date : this.state.endDate ,\n timeFilterApplied: true\n }, function() {\n this.fetchMonitorInfo(this.props.default_filter_data.datasource, 'dqp_grid_view')\n });\n }else {\n this.fetchMonitorInfo(); \n }\n }\n \n // shouldComponentUpdate() {\n // if (this.state.showLoader === false) {\n // return true\n // } \n // return true\n\n // // if (post_api_call_cnt === post_api_call_complete_cnt && this.state.pre_load === true) {\n // // this.pre_load = false;\n // // // this.setState({ pre_load: false, showLoader:false })\n // // return true\n // // }\n // // else {\n // // return false;\n // // }\n // }\n\n fetchDataSourceData(id, tab) {\n\n this.fetchMonitorInfo(id, tab);\n }\n\n render() {\n return (\n this.state.showLoader === true ? :\n \n \n );\n }\n}\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps,\n {\n setDataSource,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyPreview,\n addMonitorPreview,\n prefetchMonitorState\n }\n)(DqpGridViewContent);","import React from 'react';\nimport DqpListViewContent from \"./dqpListView\";\nimport DqpGridViewContent from \"./dqpGridView\";\nimport {faChartLine, faList} from \"@fortawesome/free-solid-svg-icons\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {connect} from \"react-redux\";\n\nimport Nav from \"react-bootstrap/Nav\";\nimport Tab from \"react-bootstrap/Tab\";\n\nclass MonitorDQPTabs extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.changeTab = this.changeTab.bind(this);\n let metricsList = this.props.monitorModule.metrics;\n\n this.state = {\n activeTabKey: \"dqp_list_view\",\n metricsList: metricsList,\n };\n }\n\n changeTab(tab) {\n this.setState({activeTabKey: tab});\n }\n\n componentDidUpdate(prevProps){\n if(this.state.activeTabKey !== prevProps.activeTabKey){\n \n }\n }\n \n // shouldComponentUpdate(){\n // if(this.state.showLoader === false){\n // return true\n // }\n // return false\n // }\n\n render() {\n return (\n \n
    \n \n
    \n
    \n \n \n
    \n
    \n {this.state.activeTabKey === 'dqp_grid_view'? \n \n :\n ''\n }\n
    \n
    \n
    \n \n {this.state.activeTabKey === 'dqp_list_view'? \n \n :\n ''\n }\n \n
    \n
    \n
    \n )\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(MonitorDQPTabs);\n","import React from 'react';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport ErrorHandler from '../components/error_500';\nimport * as d3 from 'd3';\n// import { browserHistory } from 'react-router';\nimport { postMixpanel } from '../mixpanel';\nimport {logoutPageRedirect} from \"../utils/common_utils\";\n\nimport {\n getPerformanceChartData,\n getModelErrTableData,\n setShowMoreData,\n convertModelDetails,\n getModelErrorsOfPerformanceCharts,\n getMLModelOptionsForGivenMapping,\n mapModelToDataSource,\n getModelPerfListViewTableData,\n setDQShowMoreData,\n getMonitorCompareViewTableData,\n getFeatureAccess,\n getModelNameMappedCharts, getTotalShowMoreDataPointsCount,\n extractDatasetInfoForMonitorListView,\n // getMonitorTabDQPListViewTableData,\n\n} from \"../utils/common_utils\";\nimport { DQ_MONITOR_SECTIONS, IS_NONE_CHECK, IS_SAAS_EDITION } from \"../utils/constant\";\nimport { connect } from \"react-redux\";\nimport { getApi, postUIlogs} from \"../utils/event_handling\";\nimport MonitorDQTabs from \"./monitorDQTabs\";\nimport MonitorMPTabs from \"./monitorMPTabs\";\nimport MonitorERTabs from \"./monitorERTabs\";\nimport MonitorDQPTabs from \"./monitorDQPTabs\";\nimport _ from \"lodash\";\n\n import store from \"../redux/store\";\nimport Load from '../components/loadAction';\n import {\n preFetchMonitorPreview,\n preFetchMonitorInfo,\n preFetchMonitorModelInfo,\n preFetchModelDetails,\n preFetchMetrics,\n // preFetchFollowAttributes,\n //fromMonitorData,\n getLastProfilingTime,\n preFetchMonitorListViewData\n // preFetchMonitorMetaData\n } from \"../utils/monitorDataFetch\";\n\n import {\n // preFetchRelationshipData,\n // preFetchMetaData,\n // preFetchUserNotifications,\n // prefetchDatasetDetails, prefetchRecencyDetails, prefetchRecentHistory,\n prefetchModelABData,\n // prefetchDataSize,\n // preFetchMetadataDetails\n } from \"../utils/dataFetch\";\n\nimport {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addMLModelMapping,\n setMLModel,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setEndDate,\n setStartDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setAttribute,\n setDataSet,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n addModelPerformance,\n addModelDetails,\n addFollowAttributes,\n addMonitorDQListViewData,\n addMetrics,\n // addUserNotificationToState,\n //addDatasetVersions,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n //addRecencyDetails,\n //addRecentHistory,\n //addDataSize,\n addRecencyPreview,\n prefetchMonitorState,\n noIntegration,\n storeMetadataDetails,\n mappedDatasetInfo,\n listViewTableData,\n setModelABDataToList\n} from \"../redux/actions\";\n\nimport {\n getMetaDatas,\n // getMappedMetadatas,\n // getFollowAttributes\n} from \"../utils/monitorEventHandling\"\n// import { get_api_call_cnt, get_api_call_complete_cnt, post_api_call_cnt, post_api_call_complete_cnt } from \"../utils/event_handling\";\n\nconst dq_chartview_metrics = [{\"label\":\"Data Drift\",\"value\":\"drift\"},{\"label\":\"Data Completeness\",\"value\":\"completeness\"},{\"label\":\"Data Uniqueness\",\"value\":\"uniqueness\"},{\"label\":\"Data Timeliness\",\"value\":\"timeliness\"},{\"label\":\"Data Accuracy\",\"value\":\"accuracy\"},{\"label\":\"Data Conformity\",\"value\":\"conformity\"},{\"label\":\"Data Consistency\",\"value\":\"consistency\"}]\n \nclass Monitor extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.pre_load = true\n let tab = \"modelPerf\";\n let childTab = null;\n let additionalInfoFromParam = null;\n\n // Following line is for removing additional parameters from url\n // browserHistory.replace(\"/monitor\");\n if (this.props.activeTabKey !== undefined) {\n tab = this.props.activeTabKey\n }\n\n if (this.props.innerTab !== undefined) {\n childTab = this.props.innerTab\n }\n localStorage.setItem(\"additionalInfoFromParam\", \"\");\n if (this.props.additionalInfo !== undefined) {\n additionalInfoFromParam = this.props.additionalInfo\n localStorage.setItem(\"additionalInfoFromParam\", additionalInfoFromParam);\n }\n\n\n if (this.props.route !== undefined && this.props.route.activeTabKey !== undefined &&\n this.props.route.activeTabKey !== null) {\n tab = this.props.route.activeTabKey;\n }\n\n let hideMonitorModelTab = true;\n let featureAccess = getFeatureAccess()\n\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const monitorModel = featureAccess[\"models\"];\n hideMonitorModelTab = monitorModel === false;\n }\n tab = hideMonitorModelTab ? \"dqp\" : tab;\n // tab = hideMonitorModelTab ? \"dq\" : tab;\n \n this.hideContent = this.hideContent.bind(this);\n this.getModelErrTableData = getModelErrTableData.bind(this);\n this.getModelErrorsOfPerformanceCharts = getModelErrorsOfPerformanceCharts.bind(this);\n this.setShowMoreData = setShowMoreData.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.changeTab = this.changeTab.bind(this);\n this.getPerformanceChartData = getPerformanceChartData.bind(this);\n this.getData = this.getData.bind(this);\n this.getApi = getApi.bind(this);\n this.convertModelDetails = convertModelDetails.bind(this);\n this.getMetaDatas = getMetaDatas.bind(this);\n this.setCustomFilterValues = this.setCustomFilterValues.bind(this);\n this.preFetchMonitorInfo = preFetchMonitorInfo.bind(this);\n this.preFetchMonitorListViewData = preFetchMonitorListViewData.bind(this);\n // this.getMappedMetadatas = getMappedMetadatas.bind(this);\n // this.getFollowAttributes = getFollowAttributes.bind(this);\n let reduxPerformanceResult = this.props.monitorModule.mlModelPerformanceInfo;\n let resultList = Object.keys(reduxPerformanceResult).map(x => reduxPerformanceResult[x]);\n\n const metaDataMapping = this.props.dataModule.metaData;\n const mappedDatasetInfo = extractDatasetInfoForMonitorListView(metaDataMapping);\n\n\n\n let timelinessShowMore = setDQShowMoreData(this.props.monitorModule.timelinessDataSetInfo,\n this.props.monitorModule.timelinessAttributeInfo, this.props.dataModule,\n null, DQ_MONITOR_SECTIONS.TIMELINESS);\n\n const propsDataModule = this.props.dataModule;\n\n\n let fullModelInfo = []\n\n let modelPerformanceData = []\n let mlModelDetails = []\n let datasetLevelInfo = []\n let attributeLevelInfo = []\n let errorCharts = []\n let showMoreData = []\n let completeFullscreenDataModelPerf = []\n let tableData = []\n let tableDataModelPerfListView = []\n let mlModelMapping = []\n let modelDataSourceDetails = []\n\n // ----- AB testing -> Model Performance Compare View table data preparation begins ----\n\n let modelABData = []\n let modelInfoMap = []\n let mappedChartData = []\n let mpCompareViewData = []\n // eslint-disable-next-line\n let mpCompareViewTableData = []\n // eslint-disable-next-line\n let mpCompareViewDetailedChartData = []\n // ----- AB testing -> Model Performance Compare View table data preparation over ------\n let currDataCount = []\n\n if (hideMonitorModelTab === false) {\n fullModelInfo = this.props.monitorModule.mlModelDetails;\n modelPerformanceData = this.getPerformanceChartData(resultList,\n this.props.monitorModule.mlModelMapping, true, mappedDatasetInfo, fullModelInfo);\n\n for (let chartData of modelPerformanceData) {\n chartData[\"errorChart\"] = true;\n if (chartData[\"drift_patterns\"] === undefined) {\n chartData[\"drift_patterns\"] = [];\n }\n }\n\n mlModelDetails = this.convertModelDetails(fullModelInfo);\n datasetLevelInfo = _.cloneDeep(this.props.monitorModule.mlModelDataSetInfo)\n attributeLevelInfo = _.cloneDeep(this.props.monitorModule.mlModelAttributeInfo)\n errorCharts = this.getModelErrorsOfPerformanceCharts(modelPerformanceData);\n\n showMoreData = this.setShowMoreData(datasetLevelInfo, attributeLevelInfo,\n mlModelDetails, errorCharts);\n\n\n tableData = this.getModelErrTableData(this.props.monitorModule, this.props.dataModule, modelPerformanceData, showMoreData);\n\n completeFullscreenDataModelPerf = getPerformanceChartData(resultList, mlModelMapping, false, mappedDatasetInfo, fullModelInfo);\n\n modelDataSourceDetails = mapModelToDataSource(fullModelInfo);\n\n tableDataModelPerfListView = getModelPerfListViewTableData(completeFullscreenDataModelPerf,\n modelDataSourceDetails,\n propsDataModule,\n mlModelMapping, fullModelInfo);\n\n mlModelMapping = this.props.monitorModule.mlModelMapping;\n\n // ----- AB testing -> Model Performance Compare View table data preparation begins ----\n\n modelABData = this.props.dataModule.modelABData;\n modelInfoMap = this.props.dataModule.modelInfoMap;\n mappedChartData = getModelNameMappedCharts(completeFullscreenDataModelPerf);\n mpCompareViewData = getMonitorCompareViewTableData(modelABData, modelInfoMap,\n mappedChartData, showMoreData);\n mpCompareViewTableData = mpCompareViewData[\"tableRows\"];\n mpCompareViewDetailedChartData = mpCompareViewData[\"abDetailedChartData\"];\n\n // ----- AB testing -> Model Performance Compare View table data preparation over ------\n // eslint-disable-next-line\n currDataCount = getTotalShowMoreDataPointsCount(showMoreData);\n\n }\n\n // const monitorDQListViewData = this.props.monitorModule.monitorDQListView;\n // let showLoader = true;\n // if (monitorDQListViewData === undefined || monitorDQListViewData === null) {\n // showLoader = true;\n // } else {\n // showLoader = !monitorDQListViewData.apiFetchOver;\n // }\n\n this.state = {\n errorOccurred: false,\n // showLoader: false,\n closeAction: false,\n hideMonitorModelTab: hideMonitorModelTab,\n activeTabKey: tab,\n innerTab: childTab,\n mappedDatasetInfo: mappedDatasetInfo,\n additionalInfoFromParam: additionalInfoFromParam,\n modelPerformanceDataModelErr: modelPerformanceData,\n integrationsMap: null,\n showMoreDataCount: currDataCount,\n tableData: tableData[\"finalData\"],\n attributeOptions: tableData[\"attributeOptions\"],\n showMoreData: showMoreData,\n mlModelOptions: getMLModelOptionsForGivenMapping(mlModelDetails),\n tableUpdated: false,\n timelinessShowMore: timelinessShowMore,\n\n /*Following are values are for model performance tab*/\n fullModelInfo: fullModelInfo,\n propsDataModule: propsDataModule,\n completeFullscreenDataModelPerf: completeFullscreenDataModelPerf,\n tableDataModelPerfListView: tableDataModelPerfListView,\n pre_load: true,\n // monitorDQListView:{},\n\n // Advance Filter \n filterData:[],\n showLoader:true,\n metaData:{},\n follow_attributes:{},\n integrationMapping:{},\n default_filter_data:{},\n inProgress: null,\n noDataFound:null,\n\n }\n this.getMetaDatas();\n }\n\n setCustomFilterValues(pmdata) {\n this.setState({default_filter_data:pmdata})\n }\n\n preFetch() {\n let teamID = localStorage.getItem('team_id')\n let tenantData = { \"tenant_id\": teamID };\n\n\n // Alert Prefetch : alert_applicable_metrics\n // used on alert page\n // if (!this.props.monitorModule.preFetchMetadataDetails) {\n // preFetchMetadataDetails(tenantData, storeMetadataDetails, store)\n // }\n\n if (IS_SAAS_EDITION && !this.props.monitorModule.lastProfilingTime){\n getLastProfilingTime(tenantData, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate,);\n }\n\n // Monitor Prefetch\n // Prefetch happens for every Integrations\n // Gets the result and iterate for all integrations\n if (IS_SAAS_EDITION && !this.props.monitorModule.preFetchMonitorListViewData) {\n this.preFetchMonitorListViewData(teamID, this.props.addMonitorDQListViewData);\n }\n\n // this.getMappedMetadatas();\n // this.getFollowAttributes();\n // Monitor Prefetch.\n // Single api call : /model_performance/results/info\n if (IS_SAAS_EDITION && !this.props.monitorModule.preFetchMonitorPreview) {\n preFetchMonitorPreview(tenantData, this.props.addMonitorPreview, this.props.addPerformancePreview,\n this.props.addModelPerformance);\n }\n\n // getLastProfilingTime(tenantData, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate,);\n\n // // Data Prefetch\n // // Single Api call and interating the result to get exact metadata values\n // if (!this.props.dataModule.preFetchMetaData) {\n // preFetchMonitorMetaData(\n // tenantData, this.props.addMetaData, this.props.setDataSet, this.props.setAttribute\n // );\n // }\n // if (!this.props.dataModule.preFetchMetaData) {\n // preFetchMetaData(\n // tenantData, this.props.addMetaData, this.props.addEnvironment,\n // this.props.addEnvironmentDataSourceMapping, this.props.addDataSourceDataSetMapping,\n // this.props.addDataSetAttributeMapping, this.props.setDataSet, this.props.setAttribute,\n // this.props.setDataSource, this.props.setMlDataSource, this.props.addRelationship, this.props.addDataSource,\n // this.props.addInfo, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate, this.props.addDiscoveryStatus,\n // this.props.addProcessingStatus, this.props.noIntegration\n // );\n // }\n // // Monitor Prefetch\n // // Prefetch happens for every Integrations \n // // Gets the result and iterate for all integrations\n// if (!this.props.dataModule.integrations) {\n if (IS_SAAS_EDITION) {\n for (const key of Object.keys(this.props.dataModule.integrations)) {\n if (!(key in this.props.monitorModule.fetchInfo && this.props.monitorModule.fetchInfo[key])) {\n this.preFetchMonitorInfo(\n tenantData, this.props.addCompletenessDataSetInfo, this.props.addCompletenessAttributeInfo,\n this.props.addTimelinessDataSetInfo, this.props.addTimelinessAttributeInfo,\n this.props.addAccuracyDataSetInfo, this.props.addAccuracyAttributeInfo,\n this.props.addConformityDataSetInfo, this.props.addConformityAttributeInfo,\n this.props.addConsistencyDataSetInfo, this.props.addConsistencyAttributeInfo,\n this.props.addDriftDataSetInfo, this.props.addDriftAttributeInfo, this.props.addMLDataSetInfo,\n this.props.addMLAttributeInfo, this.props.addMonitorPreview, this.props.addUniquenessDataSetInfo,\n this.props.addUniquenessAttributeInfo, this.props.addRecencyPreview,\n this.props.prefetchMonitorState, this.props.setDataSource\n );\n }\n }\n }\n // Monitor Prefetch\n // Prefetch happens for every Integrations\n // Gets the result and iterate for all integrations\n // }\n // // Monitor Model Prefetch : model/map\n // // store the value in redux\n if (IS_SAAS_EDITION && !this.props.monitorModule.preFetchMonitorModelInfo) {\n preFetchMonitorModelInfo(\n teamID, this.props.addMLModelMapping,\n this.props.addMLDataSetInfo, this.props.addMLAttributeInfo,\n this.props.addMLModel, this.props.setMLModel\n );\n }\n\n // // ML Monitor prefetch : ml-models \n // // Profile ML filter and ML tab\n if (IS_SAAS_EDITION && !this.props.monitorModule.preFetchModelDetails) {\n preFetchModelDetails(teamID, this.props.addModelDetails);\n }\n\n // custom Metrics Prefetch used in custom metric page\n // Fetch and Store\n if (IS_SAAS_EDITION && this.props.monitorModule.preFetchMetrics) {\n preFetchMetrics(teamID, this.props.addMetrics);\n }\n\n // Notification Prefetch: user_notification/unread\n // Used in navigation header\n // Fetch and store\n // if (!this.props.dataModule.preFetchUserNotifications) {\n // // Fetch first page result of user notifications\n // preFetchUserNotifications(tenantData, addUserNotificationToState, store);\n\n // }\n\n // Data Prefetch: /datasets\n // Used in charts discover, profile\n // Fetch and store\n // if (!this.props.dataModule.prefetchDatasetDetails) {// Fetch dataset version details\n // prefetchDatasetDetails(tenantData, addDatasetVersions, store);\n // }\n\n // Data Prefetch: recency/all \n // Used in Discovery and profile\n // Fetch and store\n // if (!this.props.dataModule.prefetchRecencyDetails) {// Fetch Recency Details\n // prefetchRecencyDetails(tenantData, addRecencyDetails, store);\n // }\n\n // Discover prefetch: recent_search\n // user in discover page \n // fetch and store\n // if (!this.props.dataModule.prefetchRecentHistory) { // Fetch recent search history - discover page\n // prefetchRecentHistory(tenantData, addRecentHistory, store);\n // }\n\n // Fetch and store datasize : /data_size\n // simple prefetch\n // if (!this.props.dataModule.prefetchDataSize) {// Fetch data size - discover page\n // prefetchDataSize(tenantData, addDataSize, store)\n // }\n\n // // Monitor Model Prefetch used in configure and monitor : model_ab_data\n if (IS_SAAS_EDITION && !this.props.dataModule.prefetchModelABData) { // Fetch Model AB configuration list\n prefetchModelABData(tenantData, setModelABDataToList, store);\n }\n\n // Monitor Prefetch: follow_attributes\n // used in monitor page\n // fetch and store\n // if (!this.props.monitorModule.preFetchFollowAttributes) {\n // preFetchFollowAttributes(tenantData, addFollowAttributes, store);\n // }\n\n // Alert Prefetch : alert_applicable_metrics\n // used on alert page\n // if (!this.props.monitorModule.preFetchMetadataDetails) {\n // preFetchMetadataDetails(tenantData, storeMetadataDetails, store)\n // }\n }\n\n // formData() {\n // if (this.props.dataModule.metaData !== undefined) {\n // const metaDataMapping = this.props.dataModule.metaData;\n // const monitorDQListViewData = this.props.monitorModule.monitorDQListView;\n // const timelinessShowMore = setDQShowMoreData(this.props.monitorModule.timelinessDataSetInfo,\n // this.props.monitorModule.timelinessAttributeInfo, this.props.dataModule,\n // null, DQ_MONITOR_SECTIONS.TIMELINESS);\n\n // const mappedDatasetInfos = extractDatasetInfoForMonitorListView(metaDataMapping);\n // const listViewTableDatas = getMonitorTabDQPListViewTableData(mappedDatasetInfos, monitorDQListViewData, this.props.monitorModule, timelinessShowMore);\n // fromMonitorData(this.props.mappedDatasetInfo, this.props.listViewTableData, mappedDatasetInfos, listViewTableDatas, store)\n // this.formDataOnce = 0\n // }\n // }\n\n\n componentDidMount() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n // let prefetch = (Object.keys(this.props.dataModule.environmentDataSourceMapping).length !==\n // Object.keys(this.props.dataModule.environments).length) ||\n // (Object.keys(this.props.dataModule.integrations).length !==\n // Object.keys(this.props.dataModule.relationship).length)\n // let initial_prefetch = Object.keys(this.props.dataModule.environmentDataSourceMapping).length === 0 &&\n // Object.keys(this.props.dataModule.environments).length === 0 &&\n // Object.keys(this.props.dataModule.integrations).length === 0 &&\n // Object.keys(this.props.dataModule.relationship).length === 0\n // // this.preFetch();\n // // var intervalId = setInterval(this.preFetchMonitorGraph, 1000);\n // // store intervalId in the state so it can be accessed later:\n // // this.setState({\n // // intervalId: intervalId\n // // });\n // }\n // else {\n // this.pre_load = false\n // this.setState({ pre_load: false })\n // }\n this.preFetch()\n this.getData();\n }\n\n componentDidUpdate(prevProps) {\n let hideMonitorModelTab = true;\n let featureAccess = getFeatureAccess()\n\n // if (this.state.pre_load === true && get_api_call_cnt === get_api_call_complete_cnt && post_api_call_cnt === post_api_call_complete_cnt) {\n // this.setState({pre_load:false})\n // }\n\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const monitorModel = featureAccess[\"models\"];\n hideMonitorModelTab = monitorModel === false;\n }\n if (hideMonitorModelTab === false) {\n\n if ((this.state.pre_load === false && this.props.dataModule !== prevProps.dataModule) || (this.props.monitorModule !== prevProps.monitorModule)) {\n const mlModelDetails = this.convertModelDetails(this.props.monitorModule.mlModelDetails);\n const datasetLevelInfo = _.cloneDeep(this.props.monitorModule.mlModelDataSetInfo)\n const attributeLevelInfo = _.cloneDeep(this.props.monitorModule.mlModelAttributeInfo)\n let errorCharts = this.getModelErrorsOfPerformanceCharts(this.state.modelPerformanceDataModelErr);\n const showMoreData = this.setShowMoreData(datasetLevelInfo, attributeLevelInfo, mlModelDetails, errorCharts);\n let tableData = getModelErrTableData(this.props.monitorModule, this.props.dataModule, this.state.modelPerformanceDataModelErr, showMoreData);\n\n this.setState({\n tableData: tableData[\"finalData\"],\n attributeOptions: tableData[\"attributeOptions\"],\n tableUpdated: !this.state.tableUpdated,\n mlModelOptions: getMLModelOptionsForGivenMapping(mlModelDetails),\n showMoreData: showMoreData\n })\n }\n }\n }\n\n\n getData() {\n // this.getApi(\"integrations_profile\");\n\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n componentWillUnmount() {\n document.body.classList.remove(\"overflow-hidden\");\n d3.selectAll(\".d3-tip\").remove();\n }\n\n\n static getDerivedStateFromProps(props, state) {\n let prevFullModelInfo = state.fullModelInfo;\n let prevPropsDataModuleInfo = state.propsDataModule;\n const currPropsDataModule = props.dataModule;\n let finalObj = {}\n let hideMonitorModelTab = true;\n let featureAccess = getFeatureAccess()\n\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const monitorModel = featureAccess[\"models\"];\n hideMonitorModelTab = monitorModel === false;\n }\n if (hideMonitorModelTab === false) {\n let reduxPerformanceResult = props.monitorModule.mlModelPerformanceInfo;\n const mlModelMapping = props.monitorModule.mlModelMapping;\n\n let resultList = Object.keys(reduxPerformanceResult).map(x => reduxPerformanceResult[x]);\n let fullModelInfo = props.monitorModule.mlModelDetails;\n let modelPerformanceData = getPerformanceChartData(resultList, mlModelMapping,\n true, state.mappedDatasetInfo, fullModelInfo);\n\n if (modelPerformanceData.length > state.modelPerformanceDataModelErr.length) {\n return {\n modelPerformanceDataModelErr: modelPerformanceData\n }\n }\n\n /* Getting Model performance chart data */\n let completeFullscreenDataModelPerf = getPerformanceChartData(resultList, mlModelMapping, false, state.mappedDatasetInfo, fullModelInfo);\n let fullScreenDataChanged = (completeFullscreenDataModelPerf.length !==\n state.completeFullscreenDataModelPerf.length);\n\n /* Getting Model AB combined chart&table data preparation starts */\n const modelABDataProps = props.dataModule.modelABData;\n\n let modelABDataState = state.modelABData;\n if (modelABDataState === null || modelABDataState === undefined) {\n modelABDataState = [];\n }\n\n const currDataCount = getTotalShowMoreDataPointsCount(state.showMoreData);\n if (currDataCount !== state.showMoreDataCount) {\n fullScreenDataChanged = true;\n }\n\n if ((!IS_NONE_CHECK.includes(modelABDataProps) &&\n modelABDataProps.length !== modelABDataState.length) || fullScreenDataChanged) {\n // We will update this Model AB data when AB data is updated or\n // model performance chart data is changed\n const modelInfoMap = props.dataModule.modelInfoMap;\n const mappedChartData = getModelNameMappedCharts(completeFullscreenDataModelPerf);\n const mpCompareViewData = getMonitorCompareViewTableData(modelABDataProps, modelInfoMap,\n mappedChartData, state.showMoreData);\n\n const mpCompareViewTableData = mpCompareViewData[\"tableRows\"];\n const mpCompareViewDetailedChartData = mpCompareViewData[\"abDetailedChartData\"];\n finalObj = {\n modelABData: modelABDataProps,\n showMoreDataCount: currDataCount,\n mpCompareViewTableData: mpCompareViewTableData,\n mpCompareViewDetailedChartData: mpCompareViewDetailedChartData,\n }\n // Return new values to state\n }\n /* ==== Model AB combined chart&table data preparation ends === */\n\n /* Getting data for Model performance - List view */\n let currFullModelInfo = props.monitorModule.mlModelDetails;\n\n const modelDataSourceDetails = mapModelToDataSource(currFullModelInfo);\n\n const modulePropsChanged = (Object.values(prevPropsDataModuleInfo) !==\n Object.values(currPropsDataModule));\n\n if (fullScreenDataChanged ||\n currFullModelInfo !== prevFullModelInfo ||\n modulePropsChanged || modelDataSourceDetails !== state.modelDataSourceDetails) {\n let tableDataModelPerfListView = getModelPerfListViewTableData(completeFullscreenDataModelPerf, modelDataSourceDetails,\n currPropsDataModule, mlModelMapping, currFullModelInfo);\n const timelinessShowMore = setDQShowMoreData(props.monitorModule.timelinessDataSetInfo,\n props.monitorModule.timelinessAttributeInfo, props.dataModule,\n null, DQ_MONITOR_SECTIONS.TIMELINESS);\n finalObj = {\n ...finalObj, ...{\n fullModelInfo: currFullModelInfo,\n tableDataModelPerfListView: _.cloneDeep(tableDataModelPerfListView),\n propsDataModule: currPropsDataModule,\n completeFullscreenDataModelPerf: completeFullscreenDataModelPerf,\n mlModelOptions: getMLModelOptionsForGivenMapping(currFullModelInfo),\n modelDataSourceDetails: modelDataSourceDetails,\n modelPerfTableUpdated: !state.modelPerfTableUpdated,\n // showLoader: !state.monitorDQListView.apiFetchOver,\n timelinessShowMore: timelinessShowMore\n }\n }\n }\n // else if(this.state.pre_load === false){\n\n // }\n else {\n \n const modulePropsChanged = (Object.values(prevPropsDataModuleInfo) !==\n Object.values(currPropsDataModule));\n \n if (modulePropsChanged ) {\n const timelinessShowMore = setDQShowMoreData(props.monitorModule.timelinessDataSetInfo,\n props.monitorModule.timelinessAttributeInfo, props.dataModule,\n null, DQ_MONITOR_SECTIONS.TIMELINESS);\n finalObj = {\n ...finalObj, ...{\n propsDataModule: currPropsDataModule,\n // showLoader: !state.monitorDQListView.apiFetchOver,\n // showLoader: !state.monitorDQListView.apiFetchOver,\n timelinessShowMore: timelinessShowMore\n }\n }\n }\n \n if (Object.keys(finalObj).length > 0) {\n return finalObj\n }\n }\n if (Object.keys(finalObj).length > 0) {\n return finalObj\n }\n }\n return null;\n }\n\n hideContent() {\n this.setState({\n closeAction: true,\n });\n }\n\n changeTab(tab) {\n postMixpanel(\"Monitor -> \" + tab + \" Tab Page\")\n this.setState({ activeTabKey: tab });\n }\n\n render() {\n \n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n let firstDatasetUp = this.props.dataModule.tenantId === -1\n\n let defaultKey = this.state.hideMonitorModelTab ? \"dqp\" : \"modelPerf\"\n return (\n this.state.errorOccurred ?\n \n :\n <>\n \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {this.state.pre_load === true && this.state.filterData.length === 0 ? :\n \n {this.state.hideMonitorModelTab ? \"\" : <>\n \n \n \n \n }\n \n \n \n \n {this.state.activeTabKey === 'dq' ?\n \n :\n ''\n }\n \n \n }\n\n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps,\n {\n addMetaData,\n addMLModelMapping,\n setMLModel,\n setModelABDataToList,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setDataSet,\n setAttribute,\n setDataSource,\n setMlDataSource,\n addRelationship,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setStartDate,\n setEndDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addMonitorPreview,\n addPerformancePreview,\n addModelPerformance,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyPreview,\n addMLModel,\n addModelDetails,\n addMetrics,\n addMonitorDQListViewData,\n prefetchMonitorState,\n noIntegration,\n mappedDatasetInfo,\n listViewTableData,\n addFollowAttributes,\n storeMetadataDetails\n }\n)(Monitor);\n","import React from 'react';\nimport Image from '../components/image';\nimport Load from '../components/loadAction';\nimport BasicPortlet from '../components/basicPortlet';\nimport EmailForm from './components/EmailForm';\nimport SlackForm from './components/slackForm';\nimport PagerdutyForm from './components/PagerdutyForm';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faBell } from '@fortawesome/free-solid-svg-icons';\nimport Form from 'react-bootstrap/Form';\nimport {postMixpanel} from \"../mixpanel\";\nimport MSTeamsForm from './components/msTeamsForm';\n\nclass Notification extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleButton = this.handleButton.bind(this);\n this.handleRadioButton = this.handleRadioButton.bind(this);\n this.renderNotificationForm = this.renderNotificationForm.bind(this);\n this.state={\n options: [{\"label\": \"Email\", \"value\": \"Email\"}, {\"label\": \"Slack\", \"value\": \"Slack\"},\n {\"label\": \"Pagerduty\", \"value\": \"Pagerduty\"}, {\"label\": \"MicrosoftTeams\", \"value\": \"MicrosoftTeams\"}],\n selectedOption: null,\n option: \"\",\n isClicked: false,\n notificationType: \"email\",\n title: \"Add Email\"\n }\n }\n\n handleCancel() {\n let value = this.state.isClicked ? false : true;\n this.setState ({isClicked: value});\n }\n\n handleRadioButton = e =>{\n this.setState({notificationType:e.target.value});\n if(e.target.value === \"email\") {\n this.setState({title:\"Add Email\"});\n }else{\n this.setState({title:\"Add Slack\"});\n }\n }\n\n handleButton() {\n postMixpanel(\"clicked Add Notification Channel in Alerts-> notification tab\")\n let value = this.state.isClicked ? false : true;\n this.setState ({isClicked: value});\n }\n\n renderNotificationForm(notificationType){\n switch(notificationType){\n case \"email\":\n return(\n \n );\n case \"slack\":\n return(\n \n );\n case \"pagerduty\":\n return(\n \n );\n case \"MicrosoftTeams\":\n return(\n \n );\n default:\n break;\n }\n }\n\n render() {\n let notificationType = this.state.notificationType;\n return (\n <>\n
    \n \n \n \n

    Add a Notification Channel

    \n

    Notification Channels help you to receive Qualdo generated errors and custom metric alerts.

    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n {this.state.isClicked ? \n
    \n
    \n \n Notification :\n
    \n
    \n \n \n Email\n \n
    \n
    \n \n \n Slack\n \n
    \n
    \n \n \n Pagerduty\n \n
    \n
    \n \n \n Microsoft Teams\n \n
    \n
    \n
    \n
    \n {this.renderNotificationForm(notificationType)}\n
    \n
    \n }\n /> : ''\n }\n {this.props.data !== null ? }\n /> : \n }\n />}\n \n );\n }\n}\n\nexport default Notification;","import React from 'react';\nimport Image from '../components/image';\nimport Load from '../components/loadAction';\nimport BasicPortlet from '../components/basicPortlet';\nimport DatabricksForm from './components/DatabricksForm';\nimport WebhookForm from './components/WebhookForm';\nimport AwsLambdaForm from './components/awsLambdaForm';\nimport GCPCloudFunctionForm from './components/gcpCloudFunctions';\nimport AirflowForm from './components/AirflowForm';\nimport AWSSagemakerForm from './components/AWSSagemakerForm';\nimport KubeflowForm from './components/KubeflowForm';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faBolt } from '@fortawesome/free-solid-svg-icons';\nimport Form from 'react-bootstrap/Form';\nimport {postMixpanel} from \"../mixpanel\";\n\n\nclass PipelineTrigger extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleButton = this.handleButton.bind(this);\n this.handleRadioButton = this.handleRadioButton.bind(this);\n this.state={\n // For Alpha Release only webhook and Databricks option is there. Remaining features will be enabled in the future.\n options: [{\"label\": \"Webhook\", \"value\": \"Webhook\"},{\"label\":\"Databricks\",\"value\":\"Databricks\"},{\"label\":\"AWSLambda\",\"value\":\"awsLambda\"}],\n selectedOption: null,\n isClicked: false,\n pipelineType: \"webhook\",\n title: \"Add New Webhook\"\n }\n }\n\n handleCancel() {\n let value = this.state.isClicked ? false : true;\n this.setState ({isClicked: value});\n }\n\n handleRadioButton = e =>{\n this.setState({pipelineType:e.target.value});\n if(e.target.value === \"webhook\") {\n this.setState({title:\"Add New Webhook\"});\n }else if(e.target.value === \"databricks\") {\n this.setState({title:\"Add Databricks\"});\n }else if(e.target.value === \"awsLambda\") {\n this.setState({title:\"Add AWS Lambda\"});\n }else if(e.target.value === \"gcpCloudFunction\") {\n this.setState({title:\"Add GCP Cloud Function\"});\n }else if(e.target.value === \"airflow\") {\n this.setState({title:\"Add Airflow\"});\n }else if(e.target.value === \"awsSagemaker\") {\n this.setState({title:\"Add AWS Sagemaker\"});\n }\n\n }\n\n handleButton() {\n postMixpanel(\"clicked Add Pipeline Channel in Alerts-> pipeline tab\")\n let value = this.state.isClicked ? false : true;\n this.setState ({isClicked: value});\n }\n\n renderPipelineTriggerForm(pipelineType){\n switch(pipelineType){\n case \"webhook\":\n return(\n \n );\n case \"databricks\":\n return(\n \n );\n case \"awsLambda\":\n return(\n \n );\n case \"gcpCloudFunction\":\n return(\n \n );\n case \"airflow\":\n return(\n \n );\n case \"awsSagemaker\":\n return(\n \n );\n case \"kubeflow\":\n return(\n \n );\n default:\n break;\n }\n }\n\n render() {\n \n let pipelineType = this.state.pipelineType;\n return (\n <>\n
    \n \n \n \n

    Add a Pipeline Channel

    \n

    Configure a Pipeline Channel to trigger an external hook for a custom alert on a selected metric.

    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n {this.state.isClicked ?\n \n
    \n
    \n \n Pipeline channels :\n
    \n
    \n \n \n Webhook\n \n
    \n
    \n \n \n Databricks\n \n
    \n
    \n \n \n AWS Lambda\n \n
    \n
    \n \n \n AWS Sagemaker\n \n
    \n
    \n \n \n GCP Cloud Function\n \n
    \n
    \n \n \n Airflow\n \n
    \n
    \n \n \n Kubeflow\n \n
    \n
    \n
    \n
    \n {this.renderPipelineTriggerForm(pipelineType)}\n
    \n
    }\n /> : ''\n }\n {this.props.pipeData !== null ? }\n /> : \n }\n />}\n \n );\n }\n}\n\nexport default PipelineTrigger;","import React from 'react';\nimport Image from '../../components/image';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport Load from '../../components/loadAction';\nimport { getApi } from \"../../utils/event_handling\";\nimport AlertForm from './alertForm';\nimport {postMixpanel} from '../../mixpanel';\n\n\n\nclass ModelAlertTab extends React.Component {\n constructor(props) {\n super(props);\n let check = false;\n let pipelineTriggerName = localStorage.getItem(\"pipelineTriggerName\")\n if(pipelineTriggerName !== null) {\n check = true\n }\n this.handleClick = this.handleClick.bind(this);\n this.getApi = getApi.bind(this);\n this.state={\n tab: \"ml\",\n check: check,\n }\n\n }\n\n handleClick() {\n postMixpanel(\"clicked Add Data Quality Alerts in Alerts-> alerts tab\")\n if (this.state.check === true) {\n this.setState({check:false});\n }else {\n this.setState({check:true});\n }\n }\n\n\n render() {\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    Model Alert

    \n

    Configure alerts on any important conditions for monitoring your model.

    \n
    \n \n
    \n
    \n {this.state.check === false ? \"\" :\n }\n />\n }\n {this.props.alertsDataMl !== null && this.props.details.mlMetrics.length > 0 && this.props.details.data_set !== null && this.props.modelOptions !== null?\n }\n /> :\n \n }\n />\n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default ModelAlertTab;","import React from 'react';\nimport Image from '../../components/image';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport Load from '../../components/loadAction';\nimport AlertForm from './alertForm';\nimport { getApi } from \"../../utils/event_handling\";\nimport {postMixpanel} from '../../mixpanel';\n\n\n\nclass DqAlertTab extends React.Component {\n constructor(props) {\n super(props);\n let check = false;\n let pipelineTriggerName = localStorage.getItem(\"pipelineTriggerName\")\n if(pipelineTriggerName !== null) {\n check = true\n }\n this.handleClick = this.handleClick.bind(this);\n this.getApi = getApi.bind(this);\n this.state={\n tab: \"dq\",\n check: check,\n }\n }\n\n\n handleClick() {\n postMixpanel(\"clicked Add Data Quality Alerts in Alerts-> alerts tab\")\n if (this.state.check === true) {\n this.setState({check:false});\n }else {\n this.setState({check:true});\n }\n }\n\n render() {\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    Data Quality Alert

    \n

    Configure alerts on any important conditions for monitoring your data quality.

    \n
    \n \n
    \n
    \n {this.state.check === false ? \"\" :\n }\n />}\n {this.props.alertsDataDq !== null && this.props.details.dqMetrics.length > 0 && this.props.details.data_set !== null && this.props.integrationOption !== null ?\n }\n /> :\n \n }\n />\n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default DqAlertTab;","import React from 'react';\nimport Nav from 'react-bootstrap/Nav';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faDatabase, faBezierCurve } from '@fortawesome/free-solid-svg-icons';\nimport Tab from 'react-bootstrap/Tab';\nimport ModelAlertTab from './components/modelAlertTab';\nimport DqAlertTab from './components/dqAlertTab';\nimport { getApi } from \"../utils/event_handling\";\n\n\n\nclass Alert extends React.Component {\n constructor(props) {\n super(props);\n let tab = \"dq\"\n if(this.props.tab !== '') {\n tab = this.props.tab;\n }\n this.handleTab = this.handleTab.bind(this);\n this.getApi = getApi.bind(this);\n this.state={\n current_tab:tab,\n activeKey: tab,\n }\n }\n\n handleTab(key) {\n this.setState ({current_tab: key,activeKey: key});\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n \n \n \n \n {this.props.hideModelAlertsTab ? \"\" : \n \n \n }\n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Alert;\n","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport Notification from './Notification';\nimport PipelineTrigger from './PipelineTrigger';\nimport Alert from './Alert';\nimport {CopyRightsFooter} from '../components/copyrights';\nimport { getApi, postUIlogs } from \"../utils/event_handling\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\nimport {toastObj, getFeatureAccess} from \"../utils/common_utils\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ErrorHandler from '../components/error_500';\nimport {postMixpanel} from '../mixpanel';\nimport {logoutPageRedirect} from \"../utils/common_utils\";\n\n\n\nclass Consume extends React.Component {\n\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.state={\n toastStatus: false,\n data: null,\n tab: \"dq\",\n featureAccess: getFeatureAccess(),\n modelOptions: null,\n integration_option: null,\n pipeline_data: null,\n alertsDataDq: null,\n alertsDataMl: null,\n activeKey: \"no\",\n current_tab: \"no\",\n errors: {\n email: '',\n },\n dqmData: \"\",\n mlmData: \"\",\n details: {\n data_set: null,\n dqMetrics: [],\n mlMetrics: []\n }\n }\n }\n\n componentDidMount() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n this.getData();\n\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n getData() {\n this.getApi(\"consume_group\");\n this.getApi(\"get_alerts_for_tenants\");\n this.getApi(\"pipeline_trigger\");\n this.getApi(\"alertDatasets\");\n //this.getApi(\"getMetrics\");\n this.getApi(\"completeMetricInfo\");\n this.getApi(\"models\");\n this.getApi(\"integrationOptions\");\n\n }\n\n closeToast() {\n this.setState({toastStatus:false});\n }\n\n showToast(status, msg, link) {\n this.getData();\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastLink: link,\n toastClass: toastObj[status][\"className\"],\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"],\n });\n }\n\n handleTab(key,tab) {\n postMixpanel(\"Alerts -> \"+ key +\" tab Page\")\n this.setState ({current_tab: key,activeKey: key});\n if(tab === \"dq\" || tab === \"ml\") {\n this.setState({tab:tab});\n }\n }\n\n render() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n let hideModelAlertsTab = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelAlerts = this.state.featureAccess[\"models\"];\n hideModelAlertsTab = modelAlerts === false;\n }\n\n let details = {\"dqMetrics\": this.state.dqmData, \"mlMetrics\": this.state.mlmData, \"data_set\": this.state.details.data_set};\n return (\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default Consume;","import React from 'react';\n\n\nclass SimpleBasicPortlet extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n\n }\n }\n\n render() {\n\n return( <>\n
    \n {this.props.content}\n
    \n \n );\n }\n}\n\nexport default SimpleBasicPortlet;","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport { SimpleHeader } from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport SimpleBasicPortlet from '../components/simpleBasicPortlet';\nimport Image from '../components/image';\nimport AddDataSources from '../configure/dataSources/addDataSources';\nimport { faPlusCircle} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {toastObj,userValidation} from \"../utils/common_utils\";\nimport ErrorHandler from '../components/error_500';\nimport Form from 'react-bootstrap/Form';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api, postUIlogs } from \"../utils/event_handling\";\nimport {ui_service_ip} from \"../utils/ip_details\";\nimport {CopyRightsFooter} from '../components/copyrights';\n\n\n\nclass Setup extends React.Component {\n constructor(props) {\n super(props);\n this.showToast =this.showToast.bind(this);\n this.closeToast= this.closeToast.bind(this);\n this.addEnvironment = this.addEnvironment.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.setAddDS = this.setAddDS.bind(this)\n this.setEnvData = this.setEnvData.bind(this)\n this.state = {\n errorOccurred: false,\n toastStatus: false,\n page: \"add_env\",\n errors: {\n },\n env_id:null,\n diasableAddEnvBtn:false,\n isAddDS: false,\n }\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n addEnvironment(event) {\n this.setState({diasableAddEnvBtn:true})\n let { environment } = event;\n let session = localStorage.getItem(\"sessionToken\");\n const set_env_data = {env_name: environment, tenant_id: localStorage.getItem('team_id')};\n call_post_api(ui_service_ip, 'environment', set_env_data, session).then((response) => {\n if(response.code === 200) {\n this.setState({env_id:response['env_data']['env_id']})\n // localStorage.setItem(\"env_id\", response['env_data']['env_id']);\n // localStorage.getItem('env_id');\n this.showToast(\"alert-success\",\"Environment added successfully\",'')\n } else if(response.code === 403 ) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({diasableAddEnvBtn:false})\n this.showToast(\"alert-danger\",response.message,'')\n }\n });\n }\n\n closeToast() {\n this.setState({toastStatus:false});\n if (this.state.page === \"add_integration\" && this.state.toastClass.includes(\"toast-success\") && this.state.nextPage !== null) {\n window.location = \"/quick-start\";\n } else if(this.state.page === \"add_env\" && this.state.toastClass.includes(\"toast-success\")) {\n this.setState({page:\"add_integration\"});\n } else {\n console.error(\"failure\");\n }\n }\n\n showToast(status, msg, link) {\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n nextPage:link,\n toastIcon:toastObj[status][\"icon\"],\n toastHeading:toastObj[status][\"heading\"]\n });\n }\n\n setEnvData(data){\n this.setState({env_id:data})\n }\n\n setAddDS(value) {\n this.setState ({isAddDS: value});\n }\n\n renderTable() {\n if(this.state.page === \"add_integration\") {\n return
    \n {!this.state.isAddDS ?\n <>\n }\n />\n \n :\n ''\n }\n \n
    \n } else if(this.state.page === \"add_env\") {\n const envSchema = yup.object({\n environment: yup.string().min(1,\"Name must be at least 1 characters\").required(\"Environment is a required field\").test(\n 'environmentName test',\n 'invalid Environment name',\n function test(value) {\n let val = userValidation(value,\"input\");\n return val;\n }\n ),\n });\n return
    \n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n
    \n \n \n \n { errors.environment }\n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n )}\n \n\n
    \n }\n }\n\n render() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n\n return(\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n \n

    Add your first Datasource

    \n

    \n Datasources are the files and datasets either containing the raw data or the model data that need to be monitored. Environment is a grouping of a set of datasources.\n Eg: Production Environment. Add an environment to get started with your first datasource.\n

    \n
    \n {this.renderTable()}\n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default Setup;","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUser, faPencilAlt, faTimes, faBuilding } from '@fortawesome/free-solid-svg-icons';\nimport { handleIAMSubmit, getApi } from \"../../utils/User_handling\";\nimport { toastObj,userValidation } from \"../../utils/common_utils\";\nimport Image from \"../../components/image\";\n\n\n\nclass Account extends React.Component {\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.showToast =this.showToast.bind(this);\n this.closeToast= this.closeToast.bind(this);\n this.handleImage = this.handleImage.bind(this);\n this.state = {\n toastStatus: false,\n first_name:null,\n last_name:null,\n org_name:null,\n user_profile_image:null,\n email:null,\n phoneNo:null,\n disableButton: false,\n firstNameClass:'',\n lastNameClass:'',\n companyNameClass:'',\n };\n this.getData();\n }\n\n\n handleChange(event) {\n const { name, value } = event.target;\n if(name === \"first_name\")\n {\n let result = userValidation(value);\n let lastNameResult = userValidation(this.state.last_name)\n let firstNameClass = result?'':\"is-invalid\"\n\n // let companyNameResult = userValidation(this.state.org_name)\n // let companyNameClass = result?'':\"is-invalid\"\n\n this.setState({disableButton: !result || !lastNameResult,firstNameClass:firstNameClass})\n }\n else if(name === \"last_name\")\n {\n let result = userValidation(value);\n let firstNameResult = userValidation(this.state.first_name)\n let lastNameClass = result?'':\"is-invalid\"\n\n // let companyNameResult = userValidation(this.state.org_name)\n // let companyNameClass = result?'':\"is-invalid\"\n\n this.setState({disableButton: !result || !firstNameResult, lastNameClass:lastNameClass})\n }\n else if(name === \"org_name\")\n {\n let result = userValidation(value);\n let companyNameClass = result? '' : \"is-invalid\";\n\n this.setState({disableButton: !result || !result, companyNameClass:companyNameClass})\n // this.setState({disableButton: !result})\n }\n this.setState({\n [name]: value\n });\n }\n\n handleImage = event => {\n let file = event.target.files[0];\n let reader = new FileReader();\n if(file.size > (3*1024*1024)) {\n this.showToast(\"alert-danger\",\"File is too big! Max file size is 3MB\", \"\");\n } else {\n reader.readAsDataURL(file);\n reader.onloadend = () => {\n this.setState({\n user_profile_image: reader.result\n });\n };\n }\n }\n\n getData() {\n this.getApi(\"user_details\");\n }\n\n\n closeToast() {\n this.form.reset();\n this.setState({toastStatus:false});\n }\n\n showToast(status, msg, link) {\n this.setState({disableButton: false});\n this.getData();\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n\n });\n }\n\n render() {\n return (\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus} delay={3000}\n autohide>\n
    \n {\n this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    { this.state.toastMsg }

    \n
    \n
    \n
    \n
    \n
    \n
    \n

    \n \n \n User Profile\n

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n Edit Profile\n
    \n
    \n
    \n
    this.form = form} method=\"post\" name='update_user_details' onSubmit={handleIAMSubmit.bind(this)} >\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n
    Invalid name
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n
    Invalid name
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    Invalid name
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n }\n}\n\nexport default Account;","import Modal from \"react-bootstrap/Modal\";\nimport Image from \"../image\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faArrowRight} from \"@fortawesome/free-solid-svg-icons\";\nimport React from \"react\";\n\nclass UpgradeComponent extends React.Component {\n\n render() {\n return (\n \n \n
    \n {this.props.title}
    \n

    {this.props.description}

    \n \n \n
    \n )\n }\n}\n\nexport default UpgradeComponent;\n","import React from \"react\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faArrowRight, faBell} from \"@fortawesome/free-solid-svg-icons\";\n\n\nclass PlanHeaderInfo extends React.Component {\n\n render() {\n return (\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    {this.props.title}
    \n

    {this.props.description}

    \n
    \n
    \n
    \n\n {(this.props.buttonLabel !== undefined &&\n this.props.buttonLabel !== null &&\n this.props.buttonAction !== undefined) ?\n\n
    \n \n
    \n :\n ''\n }\n\n
    \n
    \n );\n }\n}\n\nexport default PlanHeaderInfo;\n","import React from \"react\";\nimport Image from \"../../components/image\";\nimport {customDateFormat} from \"../../utils/common_utils\";\n\n\nclass PlanChangeRequest extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n }\n }\n\n render() {\n let change_request_id = this.props.change_request[\"change_request_id\"];\n let change_on = customDateFormat(this.props.change_request[\"change_on\"]);\n let plan_details = this.props.change_request[\"plan_details\"];\n\n return (\n
    \n
    \n
    \n
    \n
    \n Plan Change Request\n
    \n
    \n
    \n
    \n
    \n
    \n
    Request to downgrade the current plan
    \n
    \n
    \n
    \n Starts from\n {change_on}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \"\"\n
    \n
    \n
    ${plan_details[\"price\"]} / {plan_details[\"plan_cycle\"]}
    \n

    Qualdo™ - {plan_details[\"plan_name\"]}

    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default PlanChangeRequest;\n","import React from \"react\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faExclamationTriangle} from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-bootstrap/Modal\";\n\n\nclass PlanChangeNotAllowed extends React.Component {\n\n goToChoosePlan(){\n window.location.href = \"/choose-plan\";\n }\n\n render() {\n let message = \"Change of Plan Not Allowed\";\n let callbackFunc = this.props.hideErrorMsg;\n if(callbackFunc === undefined || callbackFunc === null) { \n callbackFunc = this.goToChoosePlan;\n }\n return(\n \n \n
    \n
    \n
    \n

    {message}

    \n

    {this.props.error_message}

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n )\n }\n}\n\n\nexport default PlanChangeNotAllowed;","import React from 'react';\nimport {findQuantileForProgress } from \"../../utils/User_handling\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPaperPlane, faCheck, faLevelUpAlt, faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';\nimport Load from '../../components/loadAction';\nimport UpgradeComponent from \"../../components/planComponents/upgradeComponent\";\nimport {DATA_LIMIT_EXCEED, BUTTON_NAMES} from \"../../utils/constant\";\nimport PlanHeaderInfo from \"./planHeaderInfo\";\nimport PlanChangeRequest from \"./planChangeRequest\"\nimport {browserHistory} from 'react-router';\nimport {parseDateAsUTC, formatFutureTime, getCurrentUTCDateTime, getQualdoPlanCycle} from \"../../utils/common_utils\";\nimport {deletePlanChangeRequest, getApi, getPaymentDetailsTableData} from \"../../utils/event_handling\";\nimport Modal from \"react-bootstrap/Modal\";\nimport PlanChangeNotAllowed from \"../../components/paymentComponents/planChangeNotAllowed\";\n\n\nconst goToChoosePlan = () => {\n window.location.href = \"/choose-plan\";\n}\n\nclass PlanAndUsage extends React.Component {\n constructor(props){\n super(props);\n this.getApi = getApi.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.setFormState = this.setFormState.bind(this);\n this.showDataLimitExceedModal = this.showDataLimitExceedModal.bind(this);\n this.hideDataLimitExceedModal = this.hideDataLimitExceedModal.bind(this);\n this.increaseDataLimitPlan = this.increaseDataLimitPlan.bind(this);\n this.showCancelPlanChangeRequest = this.showCancelPlanChangeRequest.bind(this);\n this.closeCancelPlanChangeRequest = this.closeCancelPlanChangeRequest.bind(this);\n this.deletePlanChangeRequest = deletePlanChangeRequest.bind(this);\n this.getPaymentDetailsTableData = getPaymentDetailsTableData.bind(this);\n this.getQualdoPlanCycle = getQualdoPlanCycle.bind(this);\n this.changePaymentPageDetails = this.changePaymentPageDetails.bind(this);\n this.state = {\n error_message: null,\n srcIsChoosePlan: false,\n showDataLimitExceedModal: false,\n planDetails: this.props.planDetails,\n cancelPlanChangeRequest: false,\n change_request_id: null,\n };\n }\n\n changePaymentPageDetails(data){\n let planType = data[\"plan_details\"][\"plan_name\"];\n data[\"hideModelInfo\"] = this.props.hideModelInfo\n localStorage.setItem(\"qualdoPlan\", planType);\n browserHistory.push({pathname:'/payment', state: data})\n }\n\n componentDidMount() {\n let usageProgress = document.getElementById('usageProgress');\n let mlModelProgress = document.getElementById('mlModelProgress');\n if( usageProgress !== null && mlModelProgress !== null) {\n let planDetails = this.state.planDetails;\n let progressUsage=findQuantileForProgress(planDetails.progressbar,planDetails.maxDataLimit);\n let progressMlModel=findQuantileForProgress(planDetails.mlModelCount,planDetails.maxMlModelLimit);\n usageProgress.setAttribute('class','progress-bar w-'+progressUsage);\n mlModelProgress.setAttribute('class','progress-bar w-'+progressMlModel);\n }\n }\n\n\n showErrorMessage(message){\n this.setState({\"error_message\": message});\n }\n\n handleChange(event) {\n const { name, value } = event.target;\n this.setState({\n [name]: value\n });\n }\n\n setFormState(value) {\n this.setState ({form: value});\n }\n\n\n getResetTimer(planEndDate) {\n let parsedEndDate = parseDateAsUTC(planEndDate);\n let date = parsedEndDate.getDate();\n\n // We are adding a date because, 'reset on' date will be the next day of current cycle's end date\n parsedEndDate.setDate(date + 1);\n parsedEndDate.setHours(0);\n parsedEndDate.setMinutes(0);\n parsedEndDate.setSeconds(0);\n parsedEndDate.setMilliseconds(0);\n return formatFutureTime(parsedEndDate);\n }\n\n showDataLimitExceedModal() {\n this.setState({showDataLimitExceedModal: true})\n }\n\n redirectToPaymentPage() {\n localStorage.removeItem(\"src_choose_plan\");\n this.getApi(\"get_payment_page_details\");\n //browserHistory.push(\"/payment\");\n }\n\n\n hideDataLimitExceedModal() {\n this.setState({showDataLimitExceedModal: false})\n }\n\n increaseDataLimitPlan() {\n this.props.increaseDataLimit();\n this.hideDataLimitExceedModal();\n }\n\n formattedPlanResetDate(parsedPlanEndDate) {\n /*\n * This function converts the given plan expiry date into user readable format,\n * so that it can be displayed in Plan and Usage section.\n *\n */\n let monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n\n let date = parsedPlanEndDate.getDate();\n let monthName = monthNames[parsedPlanEndDate.getMonth()]\n let year = parsedPlanEndDate.getFullYear()\n return date + \" \" + monthName + \" \" + year\n }\n\n showCancelPlanChangeRequest(change_request_id){\n this.setState({cancelPlanChangeRequest: true, change_request_id: change_request_id});\n }\n\n closeCancelPlanChangeRequest(){\n this.setState({cancelPlanChangeRequest: false, change_request_id: null});\n }\n\n render() {\n let planDetails = this.state.planDetails;\n let usageProgress = document.getElementById('usageProgress');\n let mlModelProgress = document.getElementById('mlModelProgress');\n if( usageProgress !== null && mlModelProgress !== null) {\n let progressUsage=findQuantileForProgress(planDetails.progressbar,planDetails.maxDataLimit);\n let progressMlModel=findQuantileForProgress(planDetails.mlModelCount,planDetails.maxMlModelLimit);\n usageProgress.setAttribute('class','progress-bar w-'+progressUsage);\n mlModelProgress.setAttribute('class','progress-bar w-'+progressMlModel);\n }\n let buttonAction;\n if ( planDetails.comments !== undefined ) {\n let buttonName = planDetails.comments[2];\n if (buttonName === BUTTON_NAMES.PAY_NOW) {\n buttonAction = this.redirectToPaymentPage.bind(this);\n } else if(buttonName === BUTTON_NAMES.CHOOSE_PLAN ) {\n buttonAction = goToChoosePlan\n } else if(buttonName === BUTTON_NAMES.INCREASE_LIMIT) {\n buttonAction = this.showDataLimitExceedModal.bind(this);\n }\n }\n\n let parsedPlanEndDate = parseDateAsUTC(planDetails.cycleEnd);\n let date = parsedPlanEndDate.getDate();\n\n // We are adding a date because, 'reset on' date will be the next day of current cycle's end date\n parsedPlanEndDate.setDate(date + 1);\n parsedPlanEndDate.setHours(0);\n\n const resetDateFormatted = `${this.formattedPlanResetDate(parsedPlanEndDate)}`;\n const currentTime = getCurrentUTCDateTime();\n const timeDifference = (parsedPlanEndDate - currentTime);\n let labelPrefix = \"Usage will be reset on\";\n if (timeDifference < 0) {\n labelPrefix = \"Usage reset paused on\";\n }\n const usage_reset_date_label = `${labelPrefix} ${resetDateFormatted}`;\n let showAdditionalData;\n let showAdditionalMlmodel;\n let existData = planDetails.monthlyLimit[0];\n let existModel = planDetails.monthlyLimit[1];\n let additionalData;\n let additionalMlmodel;\n let additionalDataCost;\n let additionalMlmodelCost;\n if (existData !== undefined && existModel !== undefined)\n {\n existData=Number(existData.match(/\\d+/g));//extract allowed data size according to user choosen plan.\n existModel=Number(existModel.match(/\\d+/g));//extract allowed mlmodel according to user choosen plan.\n additionalData = planDetails.maxDataLimit - existData;\n additionalMlmodel = planDetails.mlModelCount - existModel;\n additionalDataCost = (additionalData*planDetails.addDataCost) / 100;\n additionalMlmodelCost = additionalMlmodel*planDetails.addModelCost;\n showAdditionalData = additionalData > 0 ;\n showAdditionalMlmodel = additionalMlmodel > 0;\n }\n let description = planDetails.comments[1];\n if (description === undefined) {\n description = \"\";\n }\n if(planDetails['paymentStatus'] === 'payment_pending'){\n let replaceStr = 'past-due on ' + planDetails['cycleEndDate']\n description = description.replace(/past-due/g,replaceStr )\n }\n\n return (\n <>\n \n {\n this.state.cancelPlanChangeRequest === true ?\n <>\n \n \n
    \n
    \n
    \n

    Cancel the Request for Plan change?

    \n

    This will remove your request for the plan change.

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n : ''\n }\n {\n this.state.error_message !== null\n &&\n \n }\n
    \n
    \n

    \n \n \n Plan & Usage\n

    \n
    \n
    \n {\n (planDetails.comments !== undefined && planDetails.showInformationBanner) ?\n \n :\n ''\n }\n {/*\n planDetails.requiresDataLimitUpgrade\n ?\n \n :\n ''\n\n */\n }\n\n\n
    \n
    \n
    \n
    \n
    Your plan Details
    \n
    \n
    \n {\n planDetails.cost !== null && planDetails.monthlyLimit !== [] && planDetails.comments !== [] ?
    \n
    \n
    \n
    Plan
    \n

    {planDetails.planName}

    \n
    \n
    \n
    Monthly Limit
    \n
      \n
    • {planDetails.monthlyLimit[0]}
    • \n { this.props.hideModelInfo ? \"\" :
    • {planDetails.monthlyLimit[1]}
    • }\n
    \n
    \n
    \n
    Cost
    \n

    {planDetails.cost}

    \n
    \n
    \n {showAdditionalData || showAdditionalMlmodel ?\n
    \n
    \n
    \n

    \n
    \n
    \n
    Additional Usage
    \n
      \n {showAdditionalData ?
    • {additionalData}GB Data Size
    • :''}\n {showAdditionalMlmodel && !(this.props.hideModelInfo) ?
    • {additionalMlmodel} ML Models
    • :''}\n
    \n
    \n
    \n
    Cost
    \n

      \n {showAdditionalData ?

    • ${additionalDataCost}/Month
    • : ''}\n {showAdditionalMlmodel && !(this.props.hideModelInfo) ?
    • ${additionalMlmodelCost}/Month
    • : ''}\n

      \n
    \n
    \n
    :''}\n
    Plan Benefits
    \n
      \n { this.props.hideModelInfo ? \"\" : <>
    • {planDetails.planBenefits[0]}
    • \n
    • {planDetails.planBenefits[1]}
    • }\n
    • {planDetails.planBenefits[2]}
    • \n
    • {planDetails.planBenefits[3]}
    • \n
    \n\n \n
    :\n \n }\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n Plan Usage\n \n
    \n
    \n
    \n {\n planDetails.size !== null && planDetails.mlModelCount !== null ?\n
    \n
    \n {planDetails.cycleEnd !== undefined ?\n <>\n
    \n {usage_reset_date_label}\n
    \n \n {this.getResetTimer(planDetails.cycleEnd)}\n \n \n :\n \"\"\n }\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n {this.props.hideModelInfo ? \"\" : <>
    \n \n \n
    \n
    \n
    \n
    }\n\n
    \n
    :\n \n }\n
    \n
    \n
    \n
    \n {\n Object.keys(this.props.change_request).length > 0 ?\n \n : ''\n }\n\n
    \n
    \n \n );\n }\n\n}\n\nexport default PlanAndUsage;","import React from 'react';\nimport { hideRequestNotification } from \"../../utils/event_handling\";\nimport {ALERT_NAME_DESC,METRIC_SCALE, ALERT_TYPE, ROW_COUNT_NAME } from \"../../utils/constant\";\nimport {roundOffResult} from \"../../utils/common_utils\"\nimport { browserHistory } from 'react-router';\n\nclass viewNotification extends React.Component {\n \n constructor(props) {\n super(props);\n this.hideRequestNotification = hideRequestNotification.bind(this);\n this.getNotificationFullView = this.getNotificationFullView.bind(this);\n }\n\n gotoTeamRequests() {\n window.location.subpath = \"request\"\n browserHistory.push(\"/teammate\");\n }\n\n goToPlan() {\n window.location.href = \"/choose-plan\"\n }\n\n redirectPlanPage(evt){\n if (evt !== null && evt !== undefined){\n let notificationId = evt.notification_id;\n if (notificationId !== null && notificationId !== undefined){\n this.hideRequestNotification(this.props.selectedView.notification_id);\n }\n }\n this.goToPlan();\n }\n\n updateRequestNotification(evt) {\n if (evt !== null && evt !== undefined){\n let notificationId = evt.notification_id;\n if (notificationId !== null && notificationId !== undefined){\n this.hideRequestNotification(this.props.selectedView.notification_id);\n }\n }\n this.gotoTeamRequests();\n }\n\n getNotificationFullView(selectedViewAdditionalInfo, fullNotificationData){\n const notificationCreatedTime = fullNotificationData.created_time;\n let dataSourceName = selectedViewAdditionalInfo.datasource_name;\n const datasets = selectedViewAdditionalInfo.datasets;\n let associated_models = selectedViewAdditionalInfo.associated_models;\n if (associated_models === undefined || associated_models === null) {\n associated_models = [];\n }\n\n return (\n <>\n
    \n {datasets.map(x => (<>{x}
    ))}\n
    \n {associated_models.length === 0 ?\n ''\n :\n `Models associated with deleted datasets: ` +\n `${associated_models}`\n }\n
    \n Datasource: {dataSourceName}\n
    \n Event Time: {notificationCreatedTime}\n \n );\n }\n\n getNotificationHeaderComponent(){\n let notificationType = this.props.selectedView.notification_type;\n if (notificationType === \"Data Quality Error\"){\n let is_dataset_error = this.props.selectedView.additional_info[\"is_dataset_error\"]\n let attributeLevel= this.props.selectedView.additional_info[\"attribute_name\"]\n let attribute_name = null; \n if (is_dataset_error === false && attributeLevel !== undefined && attributeLevel !== null){\n attribute_name = attributeLevel\n }\n return(\n
    \n {\n attribute_name != null ?\n

    \n Subject: Data quality gate failed for {attribute_name} in\n dataset {this.props.selectedView.additional_info.data_set_name}\n

    \n :\n

    \n Subject: Data quality gate failed for the\n dataset {this.props.selectedView.additional_info.data_set_name}\n

    \n }\n
    \n );\n } else if(notificationType === \"Model Error\"){\n return(\n
    \n

    \n Subject: Model quality gate failed for\n the model {this.props.selectedView.additional_info.model_name}\n

    \n
    \n );\n }\n else if(notificationType === \"Schema Drift\"){\n return(\n
    \n

    \n Subject: Schema Drift detected in dataset -- {this.props.selectedView.additional_info.dataset_id}\n

    \n
    \n );\n }\n else if(notificationType === \"Limit Exceeded Alert\"){\n return(\n
    \n

    \n Subject: Your {this.props.selectedView.additional_info.type} usage exceeded\n for current Plan\n

    \n
    \n );\n }\n else if(notificationType === \"Payment Failure Alert\"){\n return(\n
    \n

    \n Subject: Your payment for\n order #{this.props.selectedView.additional_info.transaction_id} not completed\n

    \n
    \n );\n }\n else if(notificationType === \"Datasource Configuration Alert\"){\n if(this.props.selectedView.additional_info.alert_name === \"Partition Identifier Not Found\") {\n return(\n
    \n

    \n Subject: Missing Partition Identifier in the dataset {this.props.selectedView.additional_info.data_set_name}\n

    \n
    \n );\n }\n else if(this.props.selectedView.additional_info.alert_name === \"Datatype Mismatch Found\") {\n return(\n
    \n

    \n Subject: Datatype mismatch found in Incremental Data Identifier in a configured datasource\n

    \n
    \n );\n }\n else if(this.props.selectedView.additional_info.alert_name === \"Incremental Data Identifier Not Found\") {\n return(\n
    \n

    \n Subject: Missing Incremental Data Identifier in the dataset {this.props.selectedView.additional_info.data_set_name}\n

    \n
    \n );\n }\n else if(this.props.selectedView.additional_info.alert_name === \"Error in Starting Index\") {\n if (this.props.selectedView.additional_info.error_type === \"Datatype Mismatch\") {\n return(\n
    \n

    \n Subject: Incorrect datatype for Starting Index in the dataset {this.props.selectedView.additional_info.data_set_name}\n

    \n
    \n );\n }\n else {\n return(\n
    \n

    \n Subject: Incorrect value for Starting Index in the dataset {this.props.selectedView.additional_info.data_set_name}\n

    \n
    \n );\n }\n }\n else{\n return(\n
    \n

    \n Subject: Incremental data identifier\n missing for the dataset\n {this.props.selectedView.additional_info !== undefined && this.props.selectedView.additional_info !== null? this.props.selectedView.additional_info.data_set_name : \"\"}\n

    \n
    \n );\n }\n }\n else if(notificationType === \"Missing Dataset\"){\n return(\n
    \n

    \n Subject: Your configured datasource does not have the right file version\n

    \n
    \n );\n }else if(notificationType === \"Model Monitoring Metrics Alert\"){\n return(\n
    \n

    \n Subject: Your configured model monitoring dataset\n in the model contains the string type columns\n

    \n
    \n );\n }else if(notificationType === \"Datasets deletion info\"){\n return(\n
    \n

    \n Subject: Some of your datasets are missing\n

    \n
    \n );\n }else if(notificationType === \"Model Dataset Not Refreshed\"){\n return(\n
    \n

    \n Subject: Dataset(s) associated with one of your configured models has not been refreshed\n

    \n
    \n );\n }\n else if(notificationType === \"No dataset found\"){\n return(\n
    \n

    \n Subject: Dataset not found in the configured datasource\n

    \n
    \n );\n }\n else if(notificationType === \"Model dataset has null values\"){\n return(\n
    \n

    \n Subject: Dataset(s) associated with one of your configured models contain(s) missing data\n

    \n
    \n );\n } else if (notificationType === \"Custom\") {\n const selectedViewAdditionalInfo = this.props.selectedView.additional_info;\n let customSubject = selectedViewAdditionalInfo.subject;\n if (customSubject === undefined || customSubject === null) {\n customSubject = \"Data has error\";\n }\n\n return (\n
    \n

    \n Subject: {`${customSubject}`}\n

    \n
    \n )\n } else {\n return '';\n }\n\n }\n\n getNotificationSubheaderComponent() {\n let notificationType = this.props.selectedView.notification_type;\n if (notificationType === \"Data Quality Error\") {\n return (\n
    Notification generated based on the\n configured data quality threshold in the Metrics section of Qualdo.\n
    \n );\n } else if (notificationType === \"Model Error\") {\n return (\n
    Notification generated based on the configured drift threshold\n in the Metrics section of Qualdo.
    \n );\n } else if (notificationType === \"Custom\") {\n const addOnInfo = this.props.selectedView.additional_info;\n let title_1 = addOnInfo.title_1;\n if (title_1 === undefined) {\n title_1 = \"Error information\";\n }\n\n return (\n
    {`${title_1}`}
    \n );\n } else {\n return '';\n }\n }\n\n getModelorDataset(){\n let notificationType = this.props.selectedView.notification_type;\n let return_value ={};\n if (notificationType === \"Data Quality Error\"){\n let dataSetName = this.props.selectedView.additional_info.data_set_name;\n return_value[\"key\"] = \"Dataset\";\n return_value[\"value\"] = dataSetName;\n return return_value\n } else if(notificationType === \"Model Error\"){\n let modelName = this.props.selectedView.additional_info.model_name;\n return_value[\"key\"] = \"Model\";\n return_value[\"value\"] = modelName;\n return return_value;\n }\n\n return return_value;\n }\n\n getAttributeNotification(alert_name, is_dataset_error, is_user_defined, alert_type) {\n let result = this.props.selectedView.additional_info\n let scale = METRIC_SCALE[alert_name];\n if(scale === undefined)\n {\n scale = \"%\";\n } \n let attribute_level_info = result.attribute_level_info;\n if (attribute_level_info === undefined || attribute_level_info === null) {\n return \"\";\n } \n let elements = []\n let attrIndex=0;\n for (let info in attribute_level_info) {\n attrIndex = attrIndex + 1;\n let current_value = attribute_level_info[info]\n elements.push(

    \n {/*\n (this.props.selectedView.notification_type !== \"Model Error\") ?\n <>\n {this.getModelorDataset()[\"key\"]}: {this.getModelorDataset()[\"value\"]}
    \n \n : ''\n */}\n {/* {is_dataset_error === false &&\n <>\n Datasource: {result[\"integration_name\"]}
    \n \n } */}\n Attribute Name: {current_value.attribute_name}
    \n { (is_user_defined === true) ?\n (alert_type === \"drift_value\" || alert_type === \"drift_attribute_level\") ?\n <>\n Current Metric Value: {roundOffResult(current_value.metric_value)} {scale}
    \n Current Drift Value: {roundOffResult(current_value.actual_fill_rate)} {scale}
    \n \n :\n <>\n Current Metric Value: {roundOffResult(current_value.actual_fill_rate)} {scale}
    \n \n :\n <>\n Current Metric Error Value: {roundOffResult(current_value.actual_fill_rate)} {scale}
    \n \n }\n
    )\n }\n return elements\n }\n\n getModelDatasetsNotRefreshed() {\n let result = this.props.selectedView.additional_info.datasets;\n if (result === undefined || result === null) {\n return \"\";\n }\n let elements = []\n for (let info in result) {\n let current_value = result[info]\n elements.push(

    \n Dataset name: {current_value.dataset_name}
    \n
    )\n }\n return elements\n }\n\n render() {\n const selectedNotificationType = this.props.selectedView.notification_type;\n\n\n if (selectedNotificationType === \"request\") {\n return (\n
    \n
    \n
    \n

    Invitation Request\n From {this.props.selectedView.username}

    \n {/* 35 days ago */}\n
    \n
    \n
    \n
    \n

    Hello {localStorage.getItem('user_name')},


    \n You have received a request from {this.props.selectedView.username} ({this.props.selectedView.email}) to join your team on Qualdo.

    \n To add {this.props.selectedView.username} to your team(s), please click on the following link(s):

    \n
    \n
    If you do not recognize this request or prefer not to add {this.props.selectedView.username} to your Qualdo team, you may simply disregard this email.\n

    Best regards, The Qualdo Team\n
    \n {/*
    \n

    Hey there,


    \n {this.props.selectedView.username} ({this.props.selectedView.email}) would like to\n join your team on Qualdo.

    \n Click on the following links to add {this.props.selectedView.username} to the\n appropriate team(s).

    \n {localStorage.getItem('user_name')}

    \n If you do not wish to add this person to your Qualdo team, please disregard this\n email.

    \n To add {this.props.selectedView.username} to your Qualdo team,

    \n \n
    */}\n
    \n
    \n
    \n
    \n );\n } else if (selectedNotificationType === \"request_auto_deleted\") {\n return (\n
    \n
    \n
    \n

    Request Auto Deleted\n From {this.props.selectedView.username}

    \n {/* 35 days ago */}\n
    \n
    \n
    \n
    \n

    Hey there,


    \n {this.props.selectedView.username} ({this.props.selectedView.email}) request to join\n team auto deleted.

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else {\n const selectedViewAdditionalInfo = this.props.selectedView.additional_info;\n\n if (selectedNotificationType === \"Data Quality Error\" || selectedNotificationType === \"Model Error\") {\n let alert_name;\n let attribute_size = 0;\n let is_dataset_error = true;\n let selectedViewAlertName = null;\n if (selectedViewAdditionalInfo !== undefined && selectedViewAdditionalInfo !== null) {\n selectedViewAlertName = selectedViewAdditionalInfo.alert_name;\n }\n\n if (selectedViewAlertName !== undefined && selectedViewAlertName !== null &&\n selectedViewAdditionalInfo !== null) {\n\n alert_name = selectedViewAlertName;\n if (alert_name !== null && alert_name !== undefined && alert_name.includes(\"gate\")) {\n alert_name = alert_name.replace('gate', '').trim();\n if (ALERT_NAME_DESC[alert_name] !== undefined) {\n alert_name = ALERT_NAME_DESC[alert_name];\n }\n }\n let attribute_level_info = selectedViewAdditionalInfo.attribute_level_info;\n if (attribute_level_info !== undefined) {\n attribute_size = attribute_level_info.length\n }\n is_dataset_error = selectedViewAdditionalInfo.is_dataset_error;\n // Identifying dataset error implementation not done before.\n // So, response without is_dataset_error are all dataset errors\n if (is_dataset_error === undefined) {\n is_dataset_error = true;\n }\n }\n\n let configuredQualityGate = \"\";\n if (selectedViewAlertName !== undefined && selectedViewAlertName !== null) {\n configuredQualityGate = selectedViewAlertName.replace('gate', '');\n }\n\n let alertNameToBeShown = \"\"\n if (selectedViewAlertName !== undefined && selectedViewAlertName !== null) {\n alertNameToBeShown = alert_name\n }\n \n let alert_type = \"\"\n if (selectedViewAdditionalInfo !== null && selectedViewAdditionalInfo.alert_computation_type !== null){\n alert_type = selectedViewAdditionalInfo.alert_computation_type;\n }\n\n const is_user_defined = selectedViewAdditionalInfo !== null && selectedViewAdditionalInfo.is_ud_alert !== null ? selectedViewAdditionalInfo.is_ud_alert : \"NA\";\n const configuredMetricName = selectedViewAdditionalInfo !== null && selectedViewAdditionalInfo.metric_name !== null ? selectedViewAdditionalInfo.metric_name : \"NA\";\n let confThresholdToBeShown = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.expected_fill_rate : '';\n let computedMetricResValue = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.actual_fill_rate : '';\n computedMetricResValue = roundOffResult(computedMetricResValue);\n\n let computedDriftResValue = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.actual_metric_value : '';\n computedDriftResValue = roundOffResult(computedDriftResValue);\n\n const configuredCondition = selectedViewAdditionalInfo !== null && selectedViewAdditionalInfo.condition !== null ? selectedViewAdditionalInfo.condition : \"\";\n const eventTimeToShow = selectedViewAdditionalInfo !== null && selectedViewAdditionalInfo.event_time !== null ? selectedViewAdditionalInfo.event_time : \"NA\";\n const currRowCount = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.curr_row_count : '';\n const prevRowCount = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.prev_row_count : '';\n const currIncrement = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.incremental_row_count : '';\n const prevIncrement = selectedViewAdditionalInfo !== undefined ? selectedViewAdditionalInfo.prev_incremental_row_count : '';\n let scale = METRIC_SCALE[alertNameToBeShown];\n\n if(scale === undefined)\n {\n scale = \"%\";\n }\n return (\n
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    \n {this.getNotificationSubheaderComponent()}\n

    \n
    \n { (is_user_defined === true) ?\n <>\n Alert Name: {alertNameToBeShown}
    \n Metric Name: {configuredMetricName}
    \n Alert Type: {ALERT_TYPE[alert_type]}
    \n Configured Threshold: {confThresholdToBeShown} {scale}
    \n Configured Quality Gate: {configuredMetricName}\n {configuredCondition}\n {confThresholdToBeShown} {scale}
    \n Current Metric Value: {computedMetricResValue} {scale}
    \n {/* Current Drift Value: {computedMetricResValue-confThresholdToBeShown} {scale}
    */}\n \n :\n <>\n Environment: {selectedViewAdditionalInfo.env_name}
    \n Datasource: {selectedViewAdditionalInfo.integration_name}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name}

    \n
    \n

    \n {\n
    Metric
    \n }\n

    \n
    \n Metric Name: {alertNameToBeShown}
    \n Configured Threshold: {confThresholdToBeShown} {scale}
    \n Configured Quality Gate: {configuredQualityGate} {configuredCondition} {confThresholdToBeShown} {scale}
    \n \n }\n Event Time: {eventTimeToShow}

    \n {\n (is_dataset_error === true) ?\n <>\n
    \n

    \n {\n
    Dataset Level Error
    \n }\n

    \n
    \n {/* {\n (selectedNotificationType !== \"Model Error\") ?\n <>\n {this.getModelorDataset()[\"key\"]}: {this.getModelorDataset()[\"value\"]}
    \n \n : ''\n } */}\n { (is_user_defined === true)?\n (alert_type === \"drift_value\" || alert_type === \"drift_attribute_level\") ?\n <>\n Current Metric\n Value: {computedMetricResValue} {scale}
    \n Current Drift\n Value: {computedDriftResValue} {scale}
    \n \n :\n <>\n Current Metric Value: {computedMetricResValue} {scale}
    \n \n :\n (alertNameToBeShown === ROW_COUNT_NAME) ?\n <>\n\n Current Metric Value: {computedMetricResValue} {scale}
    \n Total Row Count in Previous Refresh: {prevRowCount} rows
    \n Total Row Count in Current Refresh: {currRowCount} rows
    \n Number of New Rows in Previous Refresh: {prevIncrement} rows
    \n Number of New Rows in Current Refresh: {currIncrement} rows
    \n \n :\n <>\n Current Metric Error\n Value: {computedMetricResValue} {scale}
    \n \n }\n \n : ''\n }\n {\n (attribute_size > 0) ?\n <>\n

    {
    Attribute Level Errors
    }

    \n {this.getAttributeNotification(alert_name, is_dataset_error, is_user_defined, alert_type)}\n \n : ''\n }\n
    \n
    \n
    \n
    \n
    \n\n );\n }\n else if (selectedNotificationType === \"Limit Exceeded Alert\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    Hi {this.props.selectedView.username},

    \n

    \n Your {selectedViewAdditionalInfo.type} limit for current plan has\n exceeded.

    \n Click on the following links to upgrade your plan.

    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"Schema Drift\") {\n let added_items = selectedViewAdditionalInfo.increased_column;\n if (added_items === undefined || added_items === null) {\n added_items = [];\n }\n let deleted_items = selectedViewAdditionalInfo.decreased_column;\n if (deleted_items === undefined || deleted_items === null) {\n deleted_items = [];\n }\n let changed_items = selectedViewAdditionalInfo.datatype_change;\n if (changed_items === undefined || changed_items === null) {\n changed_items = [];\n }\n\n let max_alert_limit=selectedViewAdditionalInfo.max_alert_limit\n let alert_limit_reached_notification_content = \"(The above schema drift has been detected repeatedly in the last \" + max_alert_limit + \" refreshes. This will be considered as an expected change and notifications will not be sent in the future)\"\n\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    Notification generated based on the schema drift detected in -

    \n

    \n
    Environment: {selectedViewAdditionalInfo.env_name}
    \n
    Datasource: {selectedViewAdditionalInfo.integration_name}
    \n
    Dataset: {selectedViewAdditionalInfo.dataset_id}

    \n {selectedViewAdditionalInfo.increased_column.length > 0 ?
    Drift Type: Attribute added

    {added_items.map((x,index) => (
      Attribute: {x.attribute_name}
      Attribute Datatype: {x.attribute_type}
      Identified Time: {selectedViewAdditionalInfo.identified_time}
    ))}
    : ''\n }\n {selectedViewAdditionalInfo.decreased_column.length > 0 ?
    Drift Type: Attribute Deleted

    {deleted_items.map((x,index) => (
      Attribute: {x.attribute_name}
      Attribute Datatype: {x.attribute_type}
      Identified Time: {selectedViewAdditionalInfo.identified_time}
    ))}
    : ''\n }\n {selectedViewAdditionalInfo.datatype_change.length > 0 ?
    Drift Type: Datatype Changed in attributes

    {changed_items.map((x,index) => (
      Attribute: {x.attribute_name}
      Current Datatype: {x.current_data_type}
      Previous Datatype: {x.prev_data_type}
      Identified Time: {selectedViewAdditionalInfo.identified_time}
      {x.alert_limit_reached === true ?

      {alert_limit_reached_notification_content}

      : ''}
    ))}
    : ''\n }\n
    For the attributes that have been identified as having a change in their datatype, the 'Current Datatype' will be considered for Data Quality Profiling.
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"Payment Failure Alert\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    Hi {this.props.selectedView.username},

    \n

    \n Your payment for order #{selectedViewAdditionalInfo.transaction_id} not\n completed due to following reason

    \n Reason for this failure is {selectedViewAdditionalInfo.error_msg}\n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"Datasource Configuration Alert\") {\n if (selectedViewAdditionalInfo.alert_name === \"Partition Identifier Not Found\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    The following datasets in your configured datasource {selectedViewAdditionalInfo.integration_name} have missing partition identifier


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Partition Identifier: {selectedViewAdditionalInfo.column_name !== null ? selectedViewAdditionalInfo.column_name : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    The configured 'Partition Identifier' is not found in the dataset. \n The dataset, as a whole, will be monitored without any logical partitions. \n Please reconfigure the datasource in order to modify the partition identifier.\n

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedViewAdditionalInfo.alert_name === \"Datatype Mismatch Found\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    Datatype mismatch for attribute name {selectedViewAdditionalInfo.attribute_name} configured as \n incremental data identifier in dataset {selectedViewAdditionalInfo.data_set_name}


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Attribute: {selectedViewAdditionalInfo.attribute_name !== null ? selectedViewAdditionalInfo.attribute_name : \"NA\"}
    \n Error: {selectedViewAdditionalInfo.error !== null ? selectedViewAdditionalInfo.error : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    The configured 'Incremental Data Identifier' of the dataset has mismatch in datatype.\n Expected incremental data identifier datatype is 'Timestamp/DateTime'. \n Qualdo will handle the refresh using Qualdo's default way.\n Please reconfigure the datasource in order to modify the incremental data identifier.\n

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedViewAdditionalInfo.alert_name === \"Incremental Data Identifier Not Found\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    The following datasets in your configured datasource {selectedViewAdditionalInfo.integration_name} have missing incremental data identifier


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Error: {selectedViewAdditionalInfo.error !== null ? selectedViewAdditionalInfo.error : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    The configured 'Incremental Data Identifier' is not found in the dataset.\n Qualdo will monitor the data quality and data reliability of the refresh using the default way.\n Please reconfigure the datasource in order to modify the incremental data identifier.\n

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedViewAdditionalInfo.alert_name === \"Error in Starting Index\") {\n if (selectedViewAdditionalInfo.error_type === \"Datatype Mismatch\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    The following dataset has 'Starting Index' which is not a Date or Datetime


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Incremental Data Identifier: {selectedViewAdditionalInfo.column_name !== null ? selectedViewAdditionalInfo.column_name : \"NA\"}
    \n Starting Index: {selectedViewAdditionalInfo.starting_index !== null ? selectedViewAdditionalInfo.starting_index : \"NA\"}
    \n Error: {selectedViewAdditionalInfo.error !== null ? selectedViewAdditionalInfo.error : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    Qualdo will not profile and monitor the data quality and data reliability of the dataset {selectedViewAdditionalInfo.data_set_name}. \n Please reconfigure with the correct Starting Index to profile and monitor the data quality and data reliability of the dataset {selectedViewAdditionalInfo.data_set_name}.\n

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else{\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    No records found for the following dataset configure with 'Starting Index'


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Incremental Data Identifier: {selectedViewAdditionalInfo.column_name !== null ? selectedViewAdditionalInfo.column_name : \"NA\"}
    \n Starting Index: {selectedViewAdditionalInfo.starting_index !== null ? selectedViewAdditionalInfo.starting_index : \"NA\"}
    \n Error: {selectedViewAdditionalInfo.error !== null ? selectedViewAdditionalInfo.error : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    Qualdo will not profile and monitor the data quality and data reliability of the dataset {selectedViewAdditionalInfo.data_set_name}. \n Please reconfigure with the correct Starting Index to profile and monitor the data quality and data reliability of the dataset {selectedViewAdditionalInfo.data_set_name}.\n

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n }\n else { \n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    Datasource: {selectedViewAdditionalInfo ? selectedViewAdditionalInfo.datasource : \"\"}

    \n Dataset: {selectedViewAdditionalInfo ? selectedViewAdditionalInfo.data_set_name : \"\"}

    \n Configured incremental data\n identifier: {selectedViewAdditionalInfo ? selectedViewAdditionalInfo.date_column : \"\"}

    \n Dataset refreshed\n time: {selectedViewAdditionalInfo ? selectedViewAdditionalInfo.refreshed_time : \"\"}

    \n

    \n

    The configured incremental data identifier for the dataset is missing in\n the refresh. We will be handling the refresh using Qualdo's default way\n until the incremental data identifier is not available in the dataset.\n Please reconfigure the datasource in case the incremental data identifier\n is modified.

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n }\n else if (selectedNotificationType === \"Missing Dataset\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    Dataset versions incorrect


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Identified\n on: {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}\n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"Model Monitoring Metrics Alert\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n Datasource: {selectedViewAdditionalInfo.datasource !== null ? selectedViewAdditionalInfo.datasource : \"NA\"}
    \n Dataset: {selectedViewAdditionalInfo.data_set_name !== null ? selectedViewAdditionalInfo.data_set_name : \"NA\"}
    \n Identified string\n columns: {selectedViewAdditionalInfo.error_columns !== null ? selectedViewAdditionalInfo.error_columns.map((data, index)=><>\n {data}{index === selectedViewAdditionalInfo.error_columns.length-1 ? \".\":\", \"}\n ) : \"NA\"}\n
    \n
    \n
    \n
    \n
    \n );\n }else if (selectedNotificationType === \"Datasets deletion info\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n The following datasets are missing\n\n {this.getNotificationFullView(selectedViewAdditionalInfo, this.props.selectedView)}\n
    \n
    \n
    \n
    \n
    \n );\n }else if (selectedNotificationType === \"Model Dataset Not Refreshed\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    We identified that some of the dataset(s) associated with one of your configured models have not been refreshed. The associated charts for those dataset(s) will not be displayed in the Monitor page.


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Model: {selectedViewAdditionalInfo.model_name !== null ? selectedViewAdditionalInfo.model_name : \"NA\"}
    \n Identified on: {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    {
    List of Datasets not refreshed:
    }

    \n {this.getModelDatasetsNotRefreshed()}\n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"No dataset found\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    We identified that there is no dataset found in the configured datasource.


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"Model dataset has null values\") {\n return (
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    We identified that there are empty/null values present in the dataset(s) associated with one of your configured models.The model performance metrics are not computed and hence the associated charts for the model will not be displayed in the Monitor page.


    \n Datasource: {selectedViewAdditionalInfo.integration_name !== null ? selectedViewAdditionalInfo.integration_name : \"NA\"}
    \n Model: {selectedViewAdditionalInfo.model_name !== null ? selectedViewAdditionalInfo.model_name : \"NA\"}
    \n Identified on : {selectedViewAdditionalInfo.identified_time !== null ? selectedViewAdditionalInfo.identified_time : \"NA\"}
    \n

    {
    List of Datasets with Missing Data:
    }

    \n {this.getModelDatasetsNotRefreshed()}\n
    \n
    \n
    \n
    \n
    \n );\n }\n else if (selectedNotificationType === \"Custom\"){\n let items = selectedViewAdditionalInfo.section_1_items;\n if (items === undefined || items === null) {\n items = [];\n }\n\n return (\n
    \n
    \n {this.getNotificationHeaderComponent()}\n
    \n
    \n
    \n

    \n {this.getNotificationSubheaderComponent()}\n

    \n
    \n\n {items.map(x => (<>{x}
    ))}\n\n
    \n
    \n
    \n
    \n
    \n\n );\n }\n else {\n return ''\n }\n }\n\n }\n}\n\nexport default viewNotification;\n","import React from \"react\";\nimport NavigationHeader from \"../../components/navigationHeader\";\nimport BreadCrumb from \"../../components/breadCrumb\";\nimport Load from \"../../components/loadAction\";\nimport {CopyRightsFooter} from \"../../components/copyrights\";\n\nclass NotificationLoader extends React.Component {\n render() {\n return (\n <>\n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n \n );\n }\n}\n\nexport default NotificationLoader;\n","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport NavigationHeader from '../components/navigationHeader';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport { faUserPlus, faUserMinus, faRedoAlt, faServer, faHdd, faExclamationTriangle, faBell, faDollarSign } from '@fortawesome/free-solid-svg-icons';\nimport ViewNotification from './components/viewNotification';\nimport { fetchAllUserNotifications, getApi } from \"../utils/event_handling\";\nimport ListGroup from 'react-bootstrap/ListGroup';\nimport ErrorHandler from '../components/error_500';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport { updateUserNotification, postUIlogs } from \"../utils/event_handling\";\nimport Load from '../components/loadAction';\nimport { connect } from \"react-redux\";\nimport { addUserNotificationToState, markNotificationAsRead, removeNotificationFromList } from \"../redux/actions\";\nimport NotificationLoader from \"./components/notificationLoader\";\nimport { IS_NONE_CHECK } from \"../utils/constant\";\nimport { getFeatureAccess } from \"../utils/common_utils\";\nimport $ from 'jquery';\nimport {logoutPageRedirect} from \"../utils/common_utils\";\n\nconst CustomToggle = React.forwardRef(({ children, onClick }, ref) => (\n {\n e.preventDefault();\n onClick(e);\n }}\n >\n {children}\n \n));\n\n\nclass Notifications extends React.Component {\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.updateUserNotification = updateUserNotification.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.setNotficationState = this.setNotificationState.bind(this);\n let selectedNotificationId = this.getSelectedNotificationId();\n let selectedView = null;\n\n if (selectedNotificationId !== null) {\n const userNotificationDataFromProps = this.props.dataModule.userNotificationData;\n let currentUnreads = userNotificationDataFromProps.unreadNotifications;\n selectedView = currentUnreads.find(x => x[\"notification_id\"] === selectedNotificationId);\n // this.updateUserNotification(selectedNotificationId, selectedView);\n }\n\n this.state = {\n errorOccurred: false,\n alerts: null,\n featureAccess: getFeatureAccess(),\n requests: null,\n invites: null,\n notificationType: null,\n selectedView: selectedView,\n allNotifications: null,\n notificationLoaded: false,\n currentNotifications: null,\n notificationFilter: null,\n unreadNotifications: null,\n selectedNotification: selectedNotificationId,\n }\n }\n\n getSelectedNotificationId() {\n const notification_id = localStorage.getItem(\"selected_notification_id\");\n if (IS_NONE_CHECK.includes(notification_id)) {\n return null;\n }\n\n // Remove the key from local storage\n localStorage.removeItem(\"selected_notification_id\");\n return parseInt(notification_id);\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n setNotificationState(val) {\n this.setState({\n notificationType: val.notification_type,\n selectedView: val\n });\n }\n\n renderNotificationContent(val, defaultActiveKey) {\n\n if (this.state.selectedNotification !== null && this.state.selectedNotification === val.notification_id) {\n if (val.notification_type === \"request\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Invitation Request
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"username\"]} would like to join your team on Qualdo.

    \n
    \n
    \n
    \n );\n }\n else if (val.notification_type === \"request_auto_deleted\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Auto Deleted Request
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}.

    \n
    \n
    \n
    \n );\n }\n else if (val.notification_type === \"Payment Failure Alert\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Payment Failure Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Limit Exceeded Alert\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Limit Exceeded Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"app-notification unread\";\n } else {\n readNotificationClassName = \"app-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    {val[\"notification_type\"]}
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n }\n } else {\n if (val.notification_type === \"request\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n\n return (\n
    \n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Invitation Request
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"username\"]} would like to join your team on Qualdo.

    \n
    \n
    \n
    \n
    \n );\n }\n else if (val.notification_type === \"request_auto_deleted\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n\n return (\n
    \n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Auto Deleted Request
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n
    \n );\n }\n else if (val.notification_type === \"Payment Failure Alert\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Payment Failure Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Datasource Configuration Alert\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Datasource Configuration Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Datasets deletion info\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Dataset deletion
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Model Monitoring Metrics Alert\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Datasource Configuration Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Limit Exceeded Alert\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Limit Exceeded Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"No dataset found\" || val.notification_type === \"Model dataset has null values\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n {val.notification_type === \"No dataset found\" ?\n
    \n
    \n
    No Dataset Identified Alert
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n :\n
    \n
    \n
    Missing Data
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    Dataset(s) associated with one of your configured models has null values

    \n
    \n }\n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Model Error\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"app-notification unread\";\n } else {\n readNotificationClassName = \"app-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    {val[\"notification_type\"]}
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    Model quality gate failed for the\n dataset {val[\"additional_info\"] !== null ? val[\"additional_info\"][\"data_set_name\"] : \"\"}

    \n
    \n
    \n
    \n );\n }\n else if (val.notification_type === \"Missing Dataset\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"app-notification unread\";\n } else {\n readNotificationClassName = \"app-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    {val[\"notification_type\"]}
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    Version mismatch found for the\n dataset {val[\"additional_info\"] !== null ? val[\"additional_info\"][\"data_set_name\"] : \"\"}

    \n
    \n
    \n
    \n );\n } else if (val.notification_type === \"Model Dataset Not Refreshed\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"settings-notification unread\";\n } else {\n readNotificationClassName = \"settings-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    Dataset deletion
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    {val[\"message\"]}

    \n
    \n
    \n
    \n );\n\n }\n else if (val.notification_type === \"Schema Drift\") {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"app-notification unread\";\n } else {\n readNotificationClassName = \"app-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    {val[\"notification_type\"]}
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    Schema Drift detected in dataset

    \n
    \n
    \n
    \n );\n\n }\n else {\n let readNotificationClassName;\n let readStatus = val[\"read_status\"];\n if (readStatus === false) {\n readNotificationClassName = \"app-notification unread\";\n } else {\n readNotificationClassName = \"app-notification\";\n }\n return (\n
    \n {\n this.setView(evt, val.notification_type, val)\n }}>\n
    \n \n \n \n
    \n
    \n
    \n
    {val[\"notification_type\"]}
    \n {this.getNotificationSendTimeInMinutes(val[\"created_time\"])}\n
    \n

    Data quality gate failed for the\n dataset {val[\"additional_info\"] !== null ? val[\"additional_info\"][\"data_set_name\"] : \"\"}

    \n
    \n
    \n
    \n );\n }\n }\n\n }\n\n\n renderContent(defaultActiveKey) {\n if (this.state.currentNotifications === null) {\n return [];\n }\n\n let requests = this.state.currentNotifications.map(val => this.renderNotificationContent(val, defaultActiveKey));\n return requests;\n }\n\n setView(evt, notificationType, selectedView) {\n this.handleSidenavClose();\n let notificationId = selectedView[\"notification_id\"];\n let notificationStatus = selectedView[\"read_status\"];\n\n this.setState({\n // notificationType: notificationType,\n selectedView: selectedView,\n selectedNotification: null\n });\n\n if (!notificationStatus) {\n // Unread notification is clicked by user. So mark it as read notification.\n // Update the change to DB entries so that when user logs in next time, this\n // will not come as unread notification\n this.updateUserNotification(notificationId, selectedView);\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n const userNotificationDataFromProps = props.dataModule.userNotificationData;\n\n if (userNotificationDataFromProps.completeLoadInitiated === false) {\n // User is coming to notification page for the first time. So start fetching\n // all the notifications and assign them to corresponding key in redux store\n fetchAllUserNotifications(props.addUserNotificationToState);\n return null;\n }\n\n if (state.notificationLoaded === false && userNotificationDataFromProps.loaded === true) {\n\n return {\n unreadNotifications: userNotificationDataFromProps.unreadNotifications,\n currentNotifications: userNotificationDataFromProps.allNotifications,\n allNotifications: userNotificationDataFromProps.allNotifications,\n notificationLoaded: true\n };\n }\n\n return null;\n }\n\n setNotificationFilter(event) {\n let current_notifications = [];\n let selectedNotificationType;\n let notifications = this.state.allNotifications;\n if (event !== \"ALL\") {\n if (notifications !== null) {\n notifications.forEach(element => {\n if (element[\"notification_type\"] === event) {\n current_notifications.push(element);\n }\n });\n }\n } else {\n current_notifications = notifications;\n }\n\n\n if (event === \"request\") {\n selectedNotificationType = \"Invitation Request\";\n } else if (event === \"request_auto_deleted\") {\n selectedNotificationType = \"Request Auto-deleted\";\n } else if (event === \"Data Quality Error\") {\n selectedNotificationType = \"Data Quality Error\";\n } else if (event === \"Model Error\") {\n selectedNotificationType = \"Model Error\";\n } else if (event === \"ALL\") {\n selectedNotificationType = \"ALL\";\n } else if (event === \"Limit Exceeded Alert\") {\n selectedNotificationType = \"Limit Exceed Alert\";\n } else if (event === \"Payment Failure Alert\") {\n selectedNotificationType = \"Payment Failure Alert\";\n } else if (event === \"Datasource Configuration Alert\") {\n selectedNotificationType = \"Datasource Configuration Alert\";\n } else if (event === \"Model Monitoring Metrics Alert\") {\n selectedNotificationType = \"Model Monitoring Metrics Alert\";\n } else if (event === \"Datasets deletion info\") {\n selectedNotificationType = \"Datasets deletion info\";\n } else if (event === \"Model Dataset Not Refreshed\") {\n selectedNotificationType = \"Model Dataset Not Refreshed\";\n } else {\n selectedNotificationType = \"Invitation Request\";\n }\n\n this.setState({\n currentNotifications: current_notifications,\n notificationType: selectedNotificationType\n });\n\n }\n\n getErrorIcon(notification_type) {\n if (notification_type === \"Data Quality Error\") {\n return faServer;\n } else if (notification_type === \"Model Error\") {\n return faHdd;\n }\n }\n\n getNotificationSendTimeInMinutes(createdTimeString) {\n let minutes = null;\n let hours = null;\n let days = null;\n var currentTime = new Date();\n var createdTime = new Date(createdTimeString);\n minutes = parseInt((currentTime - createdTime) / (60 * 1000));\n hours = parseInt((currentTime - createdTime) / (3600 * 1000));\n days = parseInt((currentTime - createdTime) / (24 * 3600 * 1000));\n if (minutes != null && minutes <= 60) {\n return minutes + \" Mins ago\";\n\n } else if (hours != null && hours <= 24) {\n return hours + \" Hours ago\";\n\n } else if (hours > 25 && hours < 48) { // Added this condition to increase the day count by 1 if hours range in between 24 to 48.\n return days + 1 + \" days ago\";\n }\n else {\n return days + \" days ago\"\n }\n }\n\n handleSidenav = () => {\n $('#qd-aside').addClass(\"--is-visible\");\n $('body').addClass(\"overflow-hidden\");\n }\n handleSidenavClose = () => {\n $('#qd-aside').removeClass(\"--is-visible\");\n $('body').removeClass(\"overflow-hidden\");\n }\n\n render() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n\n if (this.state.errorOccurred) {\n return ();\n }\n\n if (this.state.notificationLoaded === false || this.state.currentNotifications === null) {\n // Loading for the first time\n return ()\n }\n let hideModelNotificationTab = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelNotification = this.state.featureAccess[\"models\"];\n hideModelNotificationTab = modelNotification === false;\n }\n\n let defaultActiveKey;\n let selectedView = null;\n let notificationType = null;\n const allNotifications = this.state.allNotifications;\n if (allNotifications === undefined || allNotifications === null) {\n return \"\";\n }\n\n if (this.state.selectedView !== null) {\n // User has selected one notification from the notification sidebar. So highlight that notification\n selectedView = this.state.selectedView;\n defaultActiveKey = this.state.selectedView[\"notification_id\"];\n notificationType = this.state.notificationType;\n } else if (this.state.selectedNotification !== null) {\n // User has selected this notification from Bell icon. So highlight that notification details\n defaultActiveKey = this.state.selectedNotification;\n selectedView = this.state.selectedView;\n } else if (allNotifications.length > 0) {\n // User has selected \"View all notifications\" button. So highlight the first notification\n selectedView = allNotifications[0];\n defaultActiveKey = !IS_NONE_CHECK.includes(selectedView) ? selectedView[\"notification_id\"] : \"\";\n notificationType = this.state.notificationType;\n }\n\n return (\n <>\n \n
    \n \n
    \n
    \n
    \n
    \n
      \n
    • \n { this.setNotificationFilter(evt) }}>\n Filter By:\n \n \n {this.state.notificationType !== null ?\n this.state.notificationType : \"ALL\"}\n \n \n \n \n ALL\n {hideModelNotificationTab ? \"\" : Model Error}\n Invitation Request\n Auto Deleted Requests \n Data Quality Error\n {hideModelNotificationTab ? \"\" : Limit Exceeded Alert}\n {hideModelNotificationTab ? \"\" : Payment Failure Alert}\n Datasource Configuration Alert\n {hideModelNotificationTab ? \"\" : Model Monitoring Metrics Alert}\n Datasets deletion info\n {hideModelNotificationTab ? \"\" : Model Dataset Not Refreshed}\n \n \n
    • \n
    \n \n \n \n \n \n \n \n
    \n \n {this.state.currentNotifications.length > 0 ?\n this.renderContent(defaultActiveKey) :\n ''\n }\n \n
    \n
    \n
    \n }\n
    \n
    \n
    \n \n \n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, {\n markNotificationAsRead,\n removeNotificationFromList,\n addUserNotificationToState\n})(Notifications);\n","import React from 'react';\nimport RcTooltip from 'rc-tooltip';\n\nconst TagsInput = props => {\n\tconst [tags, setTags] = React.useState(props.tags);\n\tconst removeTags = indexToRemove => {\n\t\t// Will remove the tag in input box\n\t\tsetTags([...tags.filter((_, index) => index !== indexToRemove)]);\n\n\t\t// will remove the ip state variable\n\t\tprops.selectedTags([...tags.filter((_, index) => index !== indexToRemove)])\n\t};\n\tconst addTags = event => {\n\t\tif (event.target.value !== \"\") {\n\t\t\tlet ip = event.target.value\n\t\t\t// regex to validate ip and cidr range\n\t\t\tif (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\/([0-9]|[1-2][0-9]|3[0-2]))?$/.test(ip)) {\n\t\t\t\tprops.setStateValue(false);\n\t\t\t\tprops.selectedTags([...tags, event.target.value]);\n\t\t\t\tsetTags([...tags, event.target.value])\n\t\t\t\tprops.selectedTags([...tags, event.target.value]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprops.setStateValue(true);\n\t\t\t}\n\t\t\tevent.target.value = \"\";\n\t\t}\n\t};\n\n\tlet hideTextField = props.placeholder === null;\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t{tags.map((tag, index) => (\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{tag}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tdisassociate IP from instance\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tarrowContent={
    }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t removeTags(index)}>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t))}\n\n\n\t\t\t\t{\n\t\t\t\thideTextField ?\n\t\t\t\t'' :\n\t\t\t\t event.key === \"Enter\" ? addTags(event) : null}\n\t\t\t\t\tonBlur={event => addTags(event)}\n\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\tdisabled={hideTextField}\n\t\t\t\t/>\n\t\t\t\t}\n\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default TagsInput;","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUserLock, faEye, faEyeSlash, faChalkboardTeacher, faEdit, faCheck, faExclamationTriangle, faCheckCircle } from '@fortawesome/free-solid-svg-icons';\nimport { getApi, updateWhitelistedIp } from \"../../utils/User_handling\";\nimport Load from \"../../components/loadAction\";\nimport { toastObj } from \"../../utils/common_utils\";\nimport Form from 'react-bootstrap/Form';\nimport RcTooltip from 'rc-tooltip';\nimport TagsInput from \"./TagsInput\"\nimport Button from \"react-bootstrap/Button\";\nimport Image from '../../components/image';\nimport Spinner from 'react-bootstrap/Spinner';\nimport Modal from 'react-bootstrap/Modal';\nimport { setShow } from \"../../utils/event_handling\";\nimport { storeIpData } from \"../../redux/actions\";\nimport { connect } from \"react-redux\";\nimport { GCLOUD, AWS_CLOUD, IS_NONE_SAAS_EDITION, IS_AZURE_DRX} from '../../utils/constant';\n\nclass Preferences extends React.Component {\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.UpdateData = this.UpdateData.bind(this);\n this.showToast = this.showToast.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.clientIdIcon = this.clientIdIcon.bind(this);\n this.clientSecretIcon = this.clientSecretIcon.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.selectedTags = this.selectedTags.bind(this)\n this.setStateValue = this.setStateValue.bind(this)\n this.handleEdit = this.handleEdit.bind(this)\n this.handleupdate = this.handleupdate.bind(this)\n this.handleApprove = this.handleApprove.bind(this)\n this.updateWhitelistedIp = updateWhitelistedIp.bind(this);\n this.checkAndUpdateTopButton = this.checkAndUpdateTopButton.bind(this);\n this.setShow = setShow.bind(this);\n this.handleClose = () => this.setShow(\"show\", false);\n\n this.state = {\n toastStatus: false,\n emailsubscription: [],\n chechkall: false,\n btnchkalltext: \"Unsubscribe All\",\n emailsubscriptioninitalloader: true,\n whitelisted_ip: [],\n old_whitelisted_ip: [],\n client_id: \"\",\n client_secret: \"\",\n clientidNameClass: \"\",\n clientsecretNameClass: \"\",\n clientIdsIcon: faEye,\n clientIdType: \"password\",\n clientSecretsIcon: faEye,\n clientSecretType: \"password\",\n editButton: true,\n disableSave: true,\n disableCancel: false,\n loader: true,\n placeHolder: \"Enter IP Address\",\n renderKey: null,\n show: false,\n required: '',\n updated: null,\n invalidIp: false,\n updateloader: null,\n user_message: \"Please enter valid IP address\",\n close_tag: 'tag-close-icon d-none',\n cloud: null,\n sleepInterval : 1,\n prevSleepInterval : 1,\n sleepIntervalClass : \"d-none\",\n isSleepIntervalErrMsg: \"\",\n modelHeader1: \"Are you sure ? It will take few minutes\",\n modelContent1: \"New ip addresses will take some time to associate with your instance\",\n modelHeader2: \"Associate new ip address with instance?\",\n modelContent2: \"Confirm that you want to associate new ip addresses to your instance\",\n ipData: props.dataModule.ipData\n };\n\n }\n\n componentDidMount() {\n this.getData();\n this.UpdateData();\n }\n\n UpdateData() {\n if (this.state.ipData !== null && this.state.ipData['updated_status']['status'] === true) {\n /**\n * This API call will update updated_status column with null value\n * To avoid the success status after updation of ip this is done\n */\n let data = { 'internal_update': true }\n this.updateWhitelistedIp(data)\n }\n }\n\n getData() {\n this.getApi(\"get_email_subscription\");\n if (IS_NONE_SAAS_EDITION) {\n this.getApi(\"get_whitelisted_ip\");\n }\n\n /**Api call happens until the loader is true\n * once the update is started loader set to true \n * Will set loader to false once the updation is done\n */\n setInterval(() => {\n let ipDataIsNull = this.state.ipData === undefined || this.state.ipData === null;\n if (ipDataIsNull) {\n return;\n };\n\n let updated_status = this.state.ipData['updated_status']['status'];\n\n if (updated_status !== 'initiated' || updated_status === null) {\n this.getApi(\"get_whitelisted_ip\");\n }\n }, 60000);\n }\n\n selectAll() {\n let checkallarr;\n if (this.state.chechkall) {\n\n checkallarr = this.state.emailsubscription;\n checkallarr.map(function (emailsubscriptiondata, i) {\n checkallarr[i].email_user_status = 1;\n // emailsubscriptiondata.email_user_status\n return checkallarr;\n });\n\n this.setState({\n btnchkalltext: \"Unsubscribe All\",\n chechkall: false,\n emailsubscription: checkallarr,\n });\n\n } else {\n checkallarr = this.state.emailsubscription;\n checkallarr.map(function (emailsubscriptiondata, i) {\n\n checkallarr[i].email_user_status = 0;\n return checkallarr;\n });\n\n this.setState({\n btnchkalltext: \"Subscribe All\",\n chechkall: true,\n emailsubscription: checkallarr,\n });\n }\n this.getApi(\"save_email_subscription\");\n }\n\n closeToast() {\n this.setState({ toastStatus: false });\n }\n showToast(status, msg, link) {\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastIcon: toastObj[status][\"icon\"],\n toastheading: toastObj[status][\"heading\"]\n });\n if (link.trim().length > 0) {\n setTimeout(function () {\n window.location.href = link;\n }, 3000);\n }\n }\n\n\n handleChange(event) {\n const { name, value } = event.target;\n this.setState({\n [name]: value\n })\n }\n\n clientIdIcon() {\n let state = this.state.clientIdsIcon;\n if (state.iconName === \"eye\") {\n this.setState({ clientIdsIcon: faEyeSlash });\n this.setState({ clientIdType: \"text\" })\n } else {\n this.setState({ clientIdsIcon: faEye });\n this.setState({ clientIdType: \"password\" })\n }\n\n }\n\n clientSecretIcon() {\n let state = this.state.clientSecretsIcon;\n if (state.iconName === \"eye\") {\n this.setState({ clientSecretsIcon: faEyeSlash });\n this.setState({ clientSecretType: \"text\" })\n } else {\n this.setState({ clientSecretsIcon: faEye });\n this.setState({ clientSecretType: \"password\" })\n }\n\n }\n\n checkAndUpdateTopButton(checkedlist) {\n /**\n * This function will check all subscription values and it will change the top button text\n * */\n let allStatus = checkedlist.map(i => i.email_user_status);\n let uniqueValues = [...new Set(allStatus)];\n\n let allSubscriptionsInOneState = uniqueValues.length === 1;\n\n if (!allSubscriptionsInOneState) {\n return;\n }\n\n let firstVal = uniqueValues[0];\n let btnchkalltext;\n let chechkall;\n\n if (firstVal === 1) {\n btnchkalltext = \"Unsubscribe All\";\n chechkall = false;\n } else {\n btnchkalltext = \"Subscribe All\";\n chechkall = true;\n }\n\n this.setState({\n btnchkalltext: btnchkalltext,\n chechkall: chechkall\n });\n\n }\n\n toggleEmailGroup = (i) => (event) => {\n let checkedlist = this.state.emailsubscription;\n checkedlist[i].email_user_status = (event.target.checked === true ? 1 : 0);\n\n this.checkAndUpdateTopButton(checkedlist);\n\n this.setState({ emailsubscription: checkedlist })\n this.getApi(\"save_email_subscription\");\n }\n\n selectedTags = whitelisted_ip => {\n this.setState({ whitelisted_ip })\n this.setState({ invalid: false })\n this.setState({ close_tag: 'tag-close-icon' })\n\n if (whitelisted_ip.length < 1) {\n this.setState({ disableSave: true, required: true })\n }\n else {\n this.setState({ disableSave: false, required: false })\n }\n };\n\n\n setStateValue(invalid) {\n this.setState({ invalidIp: invalid })\n }\n\n handleEdit(edit) {\n this.setState({ renderKey: 1 + this.state.renderKey })\n\n if (edit === true) {\n /**\n * Once the edit is clicked will add the cross icon to remove/edit ip's\n */\n this.setState({ editButton: false, close_tag: 'tag-close-icon', updated: null })\n }\n\n\n else if (edit === false && this.state.updated !== false) {\n /**\n * update the ip_list with old_list while user click on cancel button\n * During normal cancel action\n */\n this.setState({ editButton: true, whitelisted_ip: this.state.old_whitelisted_ip, updated: null })\n this.setState({ close_tag: 'tag-close-icon d-none' })\n }\n else if (edit === false && this.state.updated === false) {\n /** update the ip_list with old_list while user click on cancel button\n * During update failure scenario : DB update happens here\n */\n this.setState({ editButton: true, close_tag: 'tag-close-icon d-none' })\n let data = {}\n data['whitelisted_ip'] = this.state.old_whitelisted_ip\n data['internal_update'] = true\n this.updateWhitelistedIp(data)\n }\n // Avoid error text when user click cancel\n if (this.state.whitelisted_ip.length > 0 || this.state.old_whitelisted_ip.length > 0) {\n this.setState({ invalidIp: false, required: false })\n }\n }\n\n handleupdate() {\n\n /** Handle submitting same values while updating */\n let new_ip = this.state.whitelisted_ip\n let old_ip = this.state.old_whitelisted_ip\n let result = new_ip.filter(function (o1) {\n return old_ip.some(function (o2) {\n return o1 !== o2; // return the ones with equal id\n });\n });\n if (result.length < 1) {\n return\n }\n // Handle Update whitelisted_ip\n let data = {}\n data[\"whitelisted_ip\"] = this.state.whitelisted_ip\n data[\"client_id\"] = this.state.client_id\n data[\"client_secret\"] = this.state.client_secret\n data['updating_status'] = 'initiated'\n\n this.setState({ close_tag: 'tag-close-icon d-none' })\n\n /**\n * Modal will be applicable for all clouds with different content\n */\n this.setState({ show: true })\n\n }\n\n handleApprove() {\n this.setState({ approved: true, show: false })\n let data = {}\n data[\"whitelisted_ip\"] = this.state.whitelisted_ip\n data[\"client_id\"] = this.state.client_id\n data[\"client_secret\"] = this.state.client_secret\n data['updating_status'] = 'initiated'\n this.updateWhitelistedIp(data)\n }\n\n render() {\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n return (\n <>\n
    \n
    \n

    Preferences

    \n
    \n
    \n
    \n {}\n
    \n
    \n
    \n
    \n
    \n\n {(IS_NONE_SAAS_EDITION && permissionsList.includes('BillingAccess'))\n ?\n <>\n {this.state.loader\n ?\n \n :\n ((IS_NONE_SAAS_EDITION && permissionsList.includes('BillingAccess'))\n ?\n <>\n
    \n
    \n
    \n AUTHORISED NETWORK\n
    \n
    \n
    \n
    \n

    \n You can specify CIDR ranges to allow IP addresses in those range to access your instance.\n

    \n
    \n \n
    \n \n IP Address\n \n {this.state.cloud === AWS_CLOUD\n ?\n '191.168.1.1/24 or 191.168.1.1/32'\n :\n '192.168.1.1 or 191.168.1.1/24'\n }\n }\n arrowContent={
    }\n >\n \n \n
    \n\n {this.state.editButton ?\n \n this.handleEdit(true)\n }\n >\n \n Edit IP Address\n \n :\n ''\n }\n
    \n {this.state.invalidIp ?\n \n \"Please enter valid IP address\"\n
    \n :\n ''\n }\n \n\n\n\n {/* Tag Input Success Message */}\n {this.state.updated === true ?\n \n \n New IP Addresses are updated.\n \n : (this.state.updated === false) ?\n <>\n {/* Tag Input Error Message */}\n \n \n Error Message\n \n \n :\n <>\n {/* Tag Input Loader */}\n \n {/* Loader will starts loading once the update started*/}\n {this.state.updateloader\n ?\n \n \n :\n ''\n }\n New IP addresses will take some time to propagate, please bear the delay.\n \n \n\n }\n\n {this.state.required ?\n \n IP Address is a required field\n
    \n :\n ''\n }\n \n {!this.state.editButton && IS_AZURE_DRX ?\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n \n \n \n
    \n
    \n
    Invalid client ID
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n \n \n \n
    \n
    \n
    Invalid client secret
    \n
    \n
    \n
    : ''}\n {!this.state.editButton ?\n
    \n \n \n \n \n {this.state.updated === false ?\n \"Try again\"\n :\n \"Save Changes\"\n }\n \n \n this.handleEdit(false)\n }\n disabled={this.state.disableCancel}\n >Cancel\n \n
    \n :\n ''}\n
    \n
    \n \n :\n ''\n )\n }\n \n :\n ''\n }\n\n
    \n
    \n
    \n Email Subscriptions\n
    \n
    \n
    \n
    \n

    Qualdo sends different notifications and digests by default. You can enable or disable your email subscriptions here.

    \n \n
    \n
    \n

    Unsubscribe the following Notifications

    \n {/*
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    */}\n {/* onChange={this.handleChange} */}\n\n {this.state.emailsubscription.map(function (emailsubscriptiondata, i) {\n let isChecked = emailsubscriptiondata.email_user_status === 1 ? \"checked\" : \"\";\n let grp_id = emailsubscriptiondata.email_group_id;\n\n return (\n
    \n
    \n \n \n
    \n
    \n
    \n )\n }, this)}\n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n this.closeToast}\n show={this.state.toastStatus}\n delay={5000} autohide>\n
    \n\n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastheading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n {/* Modal Timer Notification */}\n \n \n
    \n \n \n Close\n \n \n {this.state.cloud === GCLOUD\n ?\n
    \n \"\"\n
    \n :\n ''\n }\n\n
    \n

    {this.state.cloud === GCLOUD ? this.state.modelHeader1 : this.state.modelHeader2}

    \n

    {this.state.cloud === GCLOUD ? this.state.modelContent1 : this.state.modelContent2}

    \n
    \n
    \n \n \n Approve\n \n
    \n
    \n
    \n \n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, storeIpData)(Preferences);","import React from 'react';\nimport { toastObj,getFeatureAccess } from \"../../utils/common_utils\";\nimport Toast from 'react-bootstrap/Toast';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUsersCog, faUserFriends, faMailBulk, faUserPlus, faPaperPlane } from '@fortawesome/free-solid-svg-icons';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport { getApi, sendInvite } from \"../../utils/User_handling\";\nimport Nav from 'react-bootstrap/Nav';\nimport Tab from 'react-bootstrap/Tab';\nimport Modal from 'react-bootstrap/Modal';\nimport { setShow } from \"../../utils/event_handling\";\nimport { ReactMultiEmail, isEmail } from 'react-multi-email';\nimport 'react-multi-email/style.css';\nimport Load from '../../components/loadAction';\n\n\n\n\n\n\nclass TeamMate extends React.Component {\n constructor(props) {\n super(props);\n this.sendInvite = sendInvite.bind(this);\n this.setShow = setShow.bind(this);\n this.handleClose = () => this.setShow(\"show\", false);\n this.handleShow = () => this.setShow(\"show\", true);\n this.closeToast = this.closeToast.bind(this);\n this.handleDescription = this.handleDescription.bind(this);\n this.getApi = getApi.bind(this);\n this.showToast = this.showToast.bind(this);\n this.changeTab = this.changeTab.bind(this)\n\n let emailId = localStorage.getItem(\"emailId\");\n let username = localStorage.getItem(\"user_name\");\n let qualdo_txt = null;\n if (process.env.REACT_APP_CUSTOM_BRAND_LOGO === \"logoDrxLight\")\n {\n qualdo_txt = \"Qualdo™-DRX\"\n }else{\n qualdo_txt = \"Qualdo™\"\n }\n\n\n let tab = \"teamMate\"\n\n if(window.location.subpath !== undefined && window.location.subpath !== null){\n tab = window.location.subpath\n window.location.subpath = null\n }\n\n this.state = {\n toastStatus: false,\n hideSubmitButton: false,\n teamMateData: null,\n inviteData: null,\n requestData: null,\n description: username.charAt(0).toUpperCase() + username.slice(1) + \"(\" +\n emailId + \") is inviting you to join the team in \" + qualdo_txt,\n emails: [],\n show: false,\n errorMsg: '',\n descriptionErrorMsg: '',\n featureAccess:getFeatureAccess(),\n qualdo_txt: qualdo_txt,\n activeTabKey:tab,\n };\n this.getData();\n }\n\n getData() {\n this.getApi(\"teamMate\");\n }\n\n handleDescription = (e) => {\n this.setState({ description: e.target.value });\n }\n\n closeToast() {\n this.setState({ toastStatus: false });\n }\n\n disableButton() {\n this.setState({ hideSubmitButton: true });\n }\n\n showToast(status, msg, link) {\n this.getData();\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n });\n }\n\n renderTable(key) {\n if (key === \"team\" && this.state.teamMateData !== null) {\n return (\n );\n } else if (key === \"invitation\" && this.state.inviteData !== null) {\n return ();\n } else if (key === \"team\" && this.state.teamMateData === null) {\n return ();\n } else if (key === \"invitation\" && this.state.inviteData === null) {\n return ();\n } else if (key === \"request\" && this.state.requestData !== null) {\n return ()\n } else if (key === \"request\" && this.state.requestData === null) {\n return ();\n }\n\n\n }\n changeTab(tab) {\n this.setState({activeTabKey: tab});\n }\n \n render() {\n\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n return (\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n\n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n
    \n
    \n

    \n \n \n Manage teammates\n

    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n TEAM MATES\n
    \n
    \n
    \n {this.renderTable(\"team\")}\n
    \n
    \n
    \n \n
    \n
    \n
    \n INVITATIONS\n
    \n
    \n \n
    \n
    \n
    \n \n \n
    Invitations
    \n
    \n \n <>

    \n Please invite others to join your team in {this.state.qualdo_txt}. Please note, when you send an invitation, they will receive an email notification.\n

    \n
    \n \n
    \n {\n this.setState({ emails: _emails });\n }}\n validateEmail={email => {\n return isEmail(email);\n }}\n getLabel={(\n email: string,\n index: number,\n removeEmail: (index: number) => void,\n ) => {\n return (\n
    \n
    \n {email} removeEmail(index)}>×\n \n
    \n
    \n );\n }}\n />\n
    \n {this.state.errorMsg !== '' && this.state.emails.length === 0 ?
    {this.state.errorMsg}
    : To type multiple email addresses, press enter.}\n
    \n
    \n \n
    \n \n \n
    \n {this.state.description === '' && this.state.descriptionErrorMsg !== '' ?
    {this.state.descriptionErrorMsg}
    : ''}\n
    \n \n
    \n \n \n
    \n
    \n
    \n {this.renderTable(\"invitation\")}\n
    \n
    \n
    \n \n
    \n
    \n
    \n REQUESTS\n
    \n
    \n
    \n {this.renderTable(\"request\")}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n }\n\n}\n\nexport default TeamMate;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUserShield } from '@fortawesome/free-solid-svg-icons';\n\n\nclass Security extends React.Component {\n\n\n render() {\n return (\n <>\n
    \n
    \n

    \n \n \n Security\n

    \n
    \n
    \n
    \n
    \n
    \n
    \n COMING SOON\n
    \n
    \n
    \n\n
    \n
    \n \n );\n }\n\n}\nexport default Security;\n\n\n\n","import React from 'react';\nimport Form from \"react-bootstrap/Form\";\nimport Col from \"react-bootstrap/Col\";\nimport Button from \"react-bootstrap/Button\";\nimport Image from \"../../components/image\";\nimport {\n PAYMENT_CARD_TYPES,\n PAYMENT_COMPONENT_STYLES,\n PAYMENT_FIELD_ID_MAP\n} from \"../../utils/constant\";\nimport Load from \"../../components/loadAction\";\nimport {postPaymentNonce} from \"../../utils/event_handling\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck, faInfoCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport Row from \"react-bootstrap/Row\";\n\nlet braintree = require('braintree-web');\n\nclass AddCardComponent extends React.Component {\n constructor(props) {\n super(props);\n this.clientDidCreate = this.clientDidCreate.bind(this);\n this.hostedFieldsDidCreate = this.hostedFieldsDidCreate.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.showPaymentPage = this.showPaymentPage.bind(this);\n this.cardTypeProcessor = this.cardTypeProcessor.bind(this);\n this.postPaymentNonce = postPaymentNonce.bind(this);\n this.getCardTypeImage = this.getCardTypeImage.bind(this);\n this.tokenizeFunction = this.tokenizeFunction.bind(this);\n this.handleCustomerName = this.handleCustomerName.bind(this);\n this.cardComponentsValidator = this.cardComponentsValidator.bind(this);\n this.getComponentClass = this.getComponentClass.bind(this);\n this.makeCurrentAsDefaultPayment = this.makeCurrentAsDefaultPayment.bind(this);\n\n let make_default = false;\n\n this.state = {\n hostedFields: null,\n errorOccurred: false,\n load: true,\n isBraintreeError : false,\n cardType: null,\n customerNameClass: '',\n customerName: '',\n creditCardErrorMsg:\"Credit card number is required\",\n make_default: make_default,\n validation: {\n cvv: {\n is_valid: false,\n is_invalid: false\n },\n expiration_date: {\n is_valid: false,\n is_invalid: false\n },\n card_number: {\n is_valid: false,\n is_invalid: false\n },\n }\n };\n }\n\n getComponentClass(component) {\n let reqClass = \"form-control\";\n let validation = this.state.validation;\n let componentInfo = validation[component];\n\n if (componentInfo === undefined || componentInfo === null) {\n return reqClass;\n }\n\n if (componentInfo.is_valid) {\n reqClass = `${reqClass} is-valid`;\n } else if (componentInfo.is_invalid) {\n reqClass = `${reqClass} is-invalid`;\n }\n\n return reqClass;\n }\n\n componentDidCatch(error, info) {\n this.setState({errorOccurred: true});\n }\n\n\n componentDidMount() {\n this.showPaymentPage();\n }\n\n showPaymentPage() {\n let braintreeAuthorizationToken = this.props.authorizationToken;\n braintree.client.create({\n authorization: braintreeAuthorizationToken\n }, this.clientDidCreate);\n }\n\n\n clientDidCreate(err, client) {\n braintree.hostedFields.create({\n client: client,\n styles: PAYMENT_COMPONENT_STYLES,\n fields: {\n number: {\n selector: '#card_number',\n placeholder: 'Enter your card number'\n },\n cvv: {\n selector: '#cvv',\n type: \"password\"\n },\n expirationDate: {\n selector: '#expiration_date',\n placeholder: 'MM/YY',\n }\n }\n }, this.hostedFieldsDidCreate);\n }\n\n cardTypeProcessor(event) {\n if (event.cards.length === 1) {\n const cardType = event.cards[0].type;\n this.setState({cardType: cardType});\n } else {\n this.setState({cardType: null});\n }\n }\n\n cardComponentsValidator(event) {\n let field = event.fields[event.emittedBy];\n const currentFiledId = field.container.id;\n\n // Remove any previously applied error or warning classes\n let validation = this.state.validation;\n let isValidPrev = validation[currentFiledId].is_valid;\n validation[currentFiledId].is_valid = false;\n validation[currentFiledId].is_invalid = false;\n\n if (field.isValid) {\n validation[currentFiledId].is_valid = true;\n } else if (field.isPotentiallyValid) {\n // skip adding classes if the field is\n // not valid, but is potentially valid\n if (isValidPrev) {\n validation[currentFiledId].is_invalid = true;\n }\n } else {\n validation[currentFiledId].is_invalid = true;\n }\n if(field.isEmpty ===true && currentFiledId === \"card_number\" )\n {\n validation[currentFiledId].is_valid = false;\n validation[currentFiledId].is_invalid = true;\n this.setState({creditCardErrorMsg:\"Credit card number is required\"})\n }\n else \n {\n this.setState({creditCardErrorMsg:\"Card number is invalid\"})\n }\n this.setState({validation: validation});\n }\n\n hostedFieldsDidCreate(err, hostedFields) {\n let submitBtn = document.getElementById('btn-add-card');\n this.setState({hostedFields: hostedFields});\n if (hostedFields === undefined)\n {\n this.setState({isBraintreeError:true});\n this.setState({load: false});\n }\n else\n {\n hostedFields.on('cardTypeChange', this.cardTypeProcessor);\n hostedFields.on('validityChange', this.cardComponentsValidator);\n this.setState({load: false});\n }\n \n submitBtn.addEventListener('click', this.submitHandler);\n submitBtn.removeAttribute('disabled');\n }\n\n tokenizeFunction(err, payload) {\n let submitBtn = document.getElementById('btn-add-card');\n if (err) {\n submitBtn.removeAttribute('disabled');\n console.error(err);\n } else {\n let details = {\n \"nonce\": payload.nonce,\n \"customer_name\": this.state.customerName,\n \"make_default\": this.state.make_default\n };\n\n this.postPaymentNonce(details, this.props.showAlertSection);\n }\n }\n\n submitHandler(event) {\n let submitBtn = document.getElementById('btn-add-card');\n event.preventDefault();\n\n let formIsInvalid = false;\n let retrievedState = this.state.hostedFields.getState();\n // Loop through the Hosted Fields and check\n // for validity, apply the is-invalid class\n // to the field container if invalid\n\n let validation = this.state.validation;\n\n for (let field of Object.keys(retrievedState.fields)) {\n if (!retrievedState.fields[field].isValid) {\n // Mark the error component\n let mappedID = PAYMENT_FIELD_ID_MAP[field];\n if (validation === undefined) {\n continue;\n }\n\n let currentCompValidation = validation[mappedID];\n if (currentCompValidation === undefined || currentCompValidation == null) {\n continue;\n }\n\n currentCompValidation.is_invalid = true;\n formIsInvalid = true;\n }\n }\n\n this.setState({validation: validation});\n\n if (this.state.customerName.trim().length === 0) {\n this.setState({customerNameClass: 'is-invalid'});\n formIsInvalid = true;\n }\n\n if (formIsInvalid) {\n // skip tokenization request if any fields are invalid\n return;\n }\n\n submitBtn.setAttribute('disabled', 'disabled');\n\n this.state.hostedFields.tokenize(this.tokenizeFunction);\n }\n\n getCardTypeImage() {\n return ();\n }\n\n handleCustomerName(event) {\n const customerName = event.target.value;\n this.setState({customerName: customerName});\n if (!customerName.trim()) {\n this.setState({customerNameClass: 'is-invalid'});\n } else {\n this.setState({customerNameClass: 'is-valid'});\n }\n }\n\n makeCurrentAsDefaultPayment(event) {\n this.setState({make_default: !this.state.make_default});\n }\n\n render() {\n return (\n
    \n {this.state.load ? : ''}\n\n
    \n \n \n \n \n \n
    \n
    Qualdo™ accepts major\n credit\n and\n debit cards.
    \n
      \n
    • \n
    • \n
    • \n
    • \n
    • \n
    \n
    \n \n
    \n
    \n\n \n \n \n Name on card *\n \n
    \n Invalid cardholder name\n
    \n
    \n \n\n
    \n\n \n\n \n Credit card number *\n
    \n
    \n {this.state.creditCardErrorMsg}\n
    \n {this.state.cardType === null\n ?\n '' :\n
    {this.getCardTypeImage()}
    \n }\n \n\n \n \n
    \n
    \n Please provide valid expiration date\n
    \n \n\n \n CVV *\n \n
    \n Security code required\n
    \n \n \n\n {\n (this.state.load || this.state.isBraintreeError) ?\n ''\n :\n \n Would you like to make this card your primary payment method?\n \n \n }\n { \n (!this.state.load && this.state.isBraintreeError)?\n <>\n
    \n
    \n Sorry we were unable to load the secure credit card form. Please try reloading the page and contact us through help desk if you are still having problems.\n
    \n
    \n
    \n

    \n Still not working? If you are connecting through a VPN please try temporarily pause the service or switch to different network.\n

    \n
    \n \n\n :\n \n <>\n \n\n \n \n }\n \n );\n }\n}\n\nexport default AddCardComponent;","import React from \"react\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCreditCard} from \"@fortawesome/free-solid-svg-icons\";\nimport Button from \"react-bootstrap/Button\";\n\nclass PaymentCardsList extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.showEditCardsSection = this.showEditCardsSection.bind(this);\n this.makePrimaryCard = this.makePrimaryCard.bind(this);\n }\n\n showEditCardsSection(cardDetail) {\n this.props.showEditSection(cardDetail);\n }\n\n makePrimaryCard(cardDetail) {\n this.props.makeCardAsPrimary(cardDetail);\n }\n\n render() {\n if (this.props.cards === null || this.props.cards.length === 0){\n return '';\n }\n\n return (
    \n
    \n
    \n Saved Cards\n

    You can add your credit card for the future purchase and\n automatically renew.

    \n
    \n
    \n
    \n\n {this.props.cards.map(cardDetail =>\n
    \n \n \n

    Credit or debit card:

    \n
    \n \n
    \n
    {cardDetail.brand}
    \n {/*

    .... ....{\" \"}\n .... {cardDetail.lastFourDigits} (Expires\n {` ${cardDetail.expires}`})

    */}\n

    .... ....{\" \"}\n .... {cardDetail.lastFourDigits} (Expires\n {` ${cardDetail.expires}`})

    \n
    \n
    \n \n \n {\n cardDetail.isPrimary\n ?\n \n :\n ''\n }\n {\n cardDetail.isPrimary ?\n ''\n :\n \n Make Primary\n \n }\n\n \n Edit\n \n \n
    \n\n
    )}\n\n \n
    \n
    );\n }\n}\n\nexport default PaymentCardsList;\n","import React from 'react';\nimport Form from \"react-bootstrap/Form\";\nimport Col from \"react-bootstrap/Col\";\nimport Button from \"react-bootstrap/Button\";\nimport Load from \"../../components/loadAction\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck, faTrash} from \"@fortawesome/free-solid-svg-icons\";\nimport moment from \"moment\";\nimport {deleteCardDetails, updatePaymentCard} from \"../../utils/event_handling\";\nimport RcTooltip from 'rc-tooltip';\n\n\nclass EditCardComponent extends React.Component {\n constructor(props) {\n super(props);\n this.handleCustomerName = this.handleCustomerName.bind(this);\n this.handleExpiryDate = this.handleExpiryDate.bind(this);\n this.setExpiryDateStatus = this.setExpiryDateStatus.bind(this);\n this.getComponentClass = this.getComponentClass.bind(this);\n this.submitEditDetails = this.submitEditDetails.bind(this);\n this.updatePaymentCard = updatePaymentCard.bind(this);\n this.deleteCardDetails = deleteCardDetails.bind(this);\n this.validateExpiryValues = this.validateExpiryValues.bind(this);\n this.removeCardDetails = this.removeCardDetails.bind(this);\n\n let expiryDate = undefined;\n let customerName = '';\n const exCardDetails = this.props.exCardDetails;\n if (exCardDetails !== undefined && exCardDetails !== null) {\n expiryDate = exCardDetails.expires;\n customerName = exCardDetails.customerName;\n }\n\n this.state = {\n errorOccurred: false,\n load: false,\n disableCardButton: false,\n validation: {\n customer_name: {\n is_valid: false,\n is_invalid: false\n },\n expiration_date: {\n is_valid: false,\n is_invalid: false\n }\n },\n customerName: customerName,\n expiryDate: expiryDate,\n expiryMonth: '',\n expiryYear: '',\n exCardDetails: exCardDetails,\n };\n }\n\n componentDidCatch(error, info) {\n this.setState({errorOccurred: true});\n }\n\n getComponentClass(component) {\n let reqClass = \"form-control\";\n let validation = this.state.validation;\n let componentInfo = validation[component];\n\n if (componentInfo === undefined || componentInfo === null) {\n return reqClass;\n }\n\n if (componentInfo.is_valid) {\n reqClass = `${reqClass} is-valid`;\n } else if (componentInfo.is_invalid) {\n reqClass = `${reqClass} is-invalid`;\n }\n\n return reqClass;\n }\n\n componentDidMount() {\n\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.exCardDetails !== state.exCardDetails) {\n return {exCardDetails: props.exCardDetails};\n } else {\n return null;\n }\n }\n\n handleCustomerName(event) {\n const customerName = event.target.value;\n this.setState({customerName: customerName});\n let validation = this.state.validation;\n\n const customerNameStatus = validation.customer_name;\n customerNameStatus.is_valid = false;\n customerNameStatus.is_invalid = false;\n\n if (!customerName.trim()) {\n customerNameStatus.is_invalid = true;\n } else {\n customerNameStatus.is_valid = true;\n }\n\n this.setState({validation: validation});\n }\n\n setExpiryDateStatus(isValid = false, message = \"\") {\n let validation = this.state.validation;\n const expirationDateStatus = validation.expiration_date;\n expirationDateStatus.is_valid = false;\n expirationDateStatus.is_invalid = false;\n\n if (isValid) {\n expirationDateStatus.is_valid = true;\n } else {\n expirationDateStatus.is_invalid = true;\n }\n this.setState({validation: validation});\n }\n\n validateExpiryValues(expiryDate){\n let hasError = !expiryDate.trim();\n if (hasError) {\n this.setExpiryDateStatus();\n return null;\n }\n\n let splits = String(expiryDate).split(\"/\");\n hasError = splits.length !== 2;\n if (hasError) {\n this.setExpiryDateStatus();\n return null;\n }\n\n let monthPart = splits[0].trim();\n let yearPart = splits[1].trim();\n if (monthPart.length === 0 ||\n monthPart.length > 2 ||\n yearPart.length === 0 ||\n yearPart.length > 4) {\n this.setExpiryDateStatus();\n return null;\n }\n\n let monthIndex = parseInt(monthPart);\n let yearIndex = parseInt(yearPart);\n if (isNaN(monthIndex) || isNaN(yearIndex) || monthIndex < 1 || monthIndex > 12) {\n this.setExpiryDateStatus();\n return null;\n }\n\n let currentDate = moment()\n let currentYearStr;\n if (yearPart.length === 4) {\n currentYearStr = currentDate.format('YYYY').toString();\n } else {\n currentYearStr = currentDate.format('YY').toString();\n }\n\n let difference = yearIndex - parseInt(currentYearStr);\n if (difference < 0 || difference > 20) {\n this.setExpiryDateStatus();\n return null;\n }\n\n if (difference === 0 && monthIndex < parseInt(currentDate.format('MM').toString())) {\n this.setExpiryDateStatus();\n return null;\n }\n\n let expiryMonth = monthIndex;\n if (monthIndex < 10) {\n expiryMonth = '0' + monthIndex;\n }\n\n this.setState({\n expiryMonth: expiryMonth,\n expiryYear: yearIndex\n });\n\n this.setExpiryDateStatus(true);\n\n return {\n expiryMonth: expiryMonth,\n expiryYear: yearIndex\n };\n }\n\n handleExpiryDate(event) {\n const expiryDate = event.target.value;\n this.setState({expiryDate: expiryDate});\n this.validateExpiryValues(expiryDate);\n }\n\n removeCardDetails() {\n this.deleteCardDetails(this.props.exCardDetails);\n }\n\n submitEditDetails() {\n this.setState({disableCardButton: true});\n let expiryRes = this.validateExpiryValues(this.state.expiryDate);\n\n if (expiryRes === null){\n return;\n }\n\n let validation = this.state.validation;\n const customerNameStatus = validation.customer_name;\n if (customerNameStatus.is_invalid){\n this.setState({disableCardButton: false});\n return;\n }\n\n let editData = {\n \"expiry_month\": expiryRes.expiryMonth,\n \"expiry_year\": expiryRes.expiryYear,\n \"customer_name\": this.state.customerName,\n \"id\": this.props.exCardDetails.id,\n \"brand\": this.props.exCardDetails.brand,\n \"lastFourDigits\": this.props.exCardDetails.lastFourDigits,\n };\n\n this.updatePaymentCard(editData);\n }\n\n render() {\n return (\n
    \n {this.state.load ? : ''}\n\n {\n this.state.load ?\n '' :\n <>\n

    Payment method

    \n

    \n \n Qualdo™ Pay {this.state.exCardDetails.brand} Credit Card\n \n {\" ending in\"} {this.state.exCardDetails.lastFourDigits}\n

    \n \n }\n\n \n \n \n Name on card *\n \n
    \n Invalid cardholder name\n
    \n
    \n \n\n \n \n Expiration Date *\n \n
    \n Please provide valid expiration date\n
    \n
    \n \n
    \n\n \n\n \n\n {\n this.props.showRemoveCard ?\n\n \n\n :\n\n \n At least one payment method is required for an active Qualdo™\n
    account. Please add a new credit card to remove this card.\n \n }\n arrowContent={
    }\n >\n \n \n \n
    \n }\n\n \n );\n }\n}\n\nexport default EditCardComponent;","import React from \"react\";\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Alert from 'react-bootstrap/Alert';\nimport BasicPortlet from '../../components/basicPortlet';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faReceipt, faCreditCard} from \"@fortawesome/free-solid-svg-icons\";\nimport AddCardComponent from \"./addCardComponent\";\nimport PaymentCardsList from \"./paymentCardsList\";\nimport QualdoDataTable from \"../../components/bootstrapTable\";\nimport {\n getApi,\n getBillingHistoryTableData,getBrainTreeAuthToken,\n getPaymentDetailsTableData,getBillingAddressDetails,\n submitPrimaryCardRequest, updateAutoDebitStatus\n} from \"../../utils/event_handling\";\nimport Load from \"../../components/loadAction\";\nimport EditCardComponent from \"./editCardComponent\";\nimport pdfMake from 'pdfmake';\nimport pdfFonts from 'pdfmake/build/vfs_fonts';\nimport htmlToPdfmake from 'html-to-pdfmake';\nimport {IS_NONE_CHECK} from \"../../utils/constant\";\n\nclass Billing extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.showAddCardSection = this.showAddCardSection.bind(this);\n this.hideAddCardSection = this.hideAddCardSection.bind(this);\n this.updateAlertSection = this.updateAlertSection.bind(this);\n this.showEditSection = this.showEditSection.bind(this);\n this.showAlertSection = this.showAlertSection.bind(this);\n this.makeCardAsPrimary= this.makeCardAsPrimary.bind(this);\n this.getEmptyCardSection= this.getEmptyCardSection.bind(this);\n this.addNewCardDetailToList= this.addNewCardDetailToList.bind(this);\n this.updatePrimaryStatusOfCards= this.updatePrimaryStatusOfCards.bind(this);\n this.updateCardDetailToList= this.updateCardDetailToList.bind(this);\n this.removeCardDetailFromList= this.removeCardDetailFromList.bind(this);\n this.setAutoDebit = this.setAutoDebit.bind(this);\n \n this.pdfdownload = this.pdfdownload.bind(this);\n this.getApi = getApi.bind(this);\n this.updateAutoDebitStatus = updateAutoDebitStatus.bind(this);\n this.getPaymentDetailsTableData = getPaymentDetailsTableData.bind(this);\n this.getBillingHistoryTableData = getBillingHistoryTableData.bind(this);\n this.getBillingAddressDetails = getBillingAddressDetails.bind(this);\n this.submitPrimaryCardRequest = submitPrimaryCardRequest.bind(this);\n this.getBrainTreeAuthToken = getBrainTreeAuthToken.bind(this);\n\n\n this.state = {\n showAddCard: false,\n isEditMode: false,\n showAlert: false,\n exCardDetails: null,\n cardGroupLoading: true,\n alertText: \"\",\n alertStatus: \"Success! \",\n alertClass: \"success\",\n availableCards: null,\n billingHistory: null,\n braintreeAuthorizationToken: '',\n renderCards: false,\n disableAutoDebitToggle: true,\n autoDebit: null,\n billinginitalloader:true,\n }\n }\n \n componentDidMount() {\n\n this.getData();\n const bt_token = this.getBrainTreeAuthToken();\n this.setState({\n cardGroupLoading: false,\n braintreeAuthorizationToken: bt_token\n });\n\n \n }\n getData(){\n this.getApi(\"get_user_payments_and_billing_history\")\n }\n showAddCardSection(event) {\n this.setState({showAddCard: true})\n }\n\n pdfdownload(row) {\n let reqAddressID = row[\"Status\"][\"billingDetails\"][\"billing_address_id\"];\n let pdfinfo = row.Receipt;\n let createddate = pdfinfo.created_time;\n let aordercreated = createddate.split(\" \"); \n let next_payment_date = pdfinfo.next_payment_date;\n let anext_payment_date = next_payment_date.split(\" \"); \n // let companyName = \"Smruti Sagarika\";\n // let addressLine1 = \"56, MSH Layout\";\n // let addressLine2 = \"2nd Stage, 5th Main, Anand Nagar, Hebbal\";\n // let city = \"Bengaluru\";\n // let state = \"Karnataka\";\n // let zipCode = \"560024\";\n // let country = \"India\";\n\n let companyName = \"\";\n let addressLine1 = \"\";\n let addressLine2 = \"\";\n let city = \"\";\n let state = \"\";\n let zipCode = \"\";\n let country = \"\";\n let billing_address = this.state.billing_address\n let matchedBillingAddress = billing_address[reqAddressID];\n if (IS_NONE_CHECK.includes(matchedBillingAddress)) {\n matchedBillingAddress = {};\n }\n\n companyName = matchedBillingAddress.company_name;\n addressLine1 = matchedBillingAddress.address_line_1;\n addressLine2 = matchedBillingAddress.address_line_2 === undefined ? \"\" : matchedBillingAddress.address_line_2;\n city = matchedBillingAddress.city;\n state = matchedBillingAddress.state;\n zipCode = matchedBillingAddress.zip_code;\n country = matchedBillingAddress.country;\n if(country === undefined){\n country = \"\";\n }\n// if(pdfinfo.hasOwnProperty('billing_address')){\n//\n// companyName = billing_address[index].companyName;\n// addressLine1 = billing_address[index].addressLine1;\n// addressLine2 = billing_address[index].addressLine2;\n// city = billing_address[index].city;\n// state = billing_address[index].state;\n// zipCode = billing_address[index].zipCode;\n// country = billing_address[index].country;\n//\n// }\n let pdfsize = 850;\n let percesize = 325;\n var html = htmlToPdfmake(`\n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n

    Invoice

    \n
    Invoice Number - `+pdfinfo.order_id+`
    \n
    \n
    \n \n \n \n \n \n
    \n
    Invoiced To:
    \n

    \n `+companyName+`\n
    `+addressLine1+ ' ' +addressLine2+`,\n
    `+city+', '+state+`, \n
    `+zipCode+`\n
    `+country+`\n

    \n
    \n
    Pay To:
    \n

    \n Saturam Inc\n
    3260 Hillview Avenue,\n
    Palo Alto, CA 94304.\n
    contact@qualdo.ai\n

    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    DescriptionPriceQTYAmount
    \n \n `+aordercreated[2]+` `+aordercreated[1]+` - `+anext_payment_date[2]+` `+anext_payment_date[1]+`, `+anext_payment_date[3]+`\n

    `+pdfinfo.details.plan_title+` `+pdfinfo.details.billing_cycle+`

    \n
    `+pdfinfo.currency_symbol+pdfinfo.amount+`1`+pdfinfo.currency_symbol+pdfinfo.amount+`
    \n Sub Total:\n \n `+pdfinfo.currency_symbol+pdfinfo.amount+`\n
    \n Total:\n \n `+pdfinfo.currency_symbol+pdfinfo.amount+`\n
    \n
    \n
    Payment:
    \n \n

    `+aordercreated[2]+` `+aordercreated[1]+`, `+aordercreated[3]+`

    \n
    \n
    \n
    Note:
    \n

    All amounts in United States Dollars (USD)

    \n
    \n
    \n
    \n

    \n Saturam Inc\n
    355 Bryant Street, Unit 403, San Francisco, CA 94107 | +1 650-308-4857 \n

    \n
    \n
    \n`, {window:window, tableAutoSize:true});\n const documentDefinition = { content: html };\n pdfMake.vfs = pdfFonts.pdfMake.vfs;\n \n pdfMake.createPdf(documentDefinition).open();\n }\n\n setAutoDebit() {\n\n // Disable the toggle button, till the API update is complete to prevent continuous click\n this.setState({disableAutoDebitToggle: true});\n\n // Call the API to update auto debit status in server\n const newAutoDebitStatus = !this.state.autoDebit;\n this.updateAutoDebitStatus(newAutoDebitStatus);\n\n // Enable the toggle button, since API call is over\n this.setState({disableAutoDebitToggle: false});\n }\n\n hideAddCardSection(event) {\n this.setState({\n showAddCard: false,\n isEditMode: false,\n exCardDetails: null\n })\n }\n\n updateAlertSection(status) {\n this.setState({showAlert: status})\n }\n\n showAlertSection(status, alertText, showAddCard, alertClass) {\n this.setState({\n alertStatus: status,\n alertText: alertText,\n showAlert: true,\n showAddCard: showAddCard,\n alertClass: alertClass\n }, ()=>{\n window.setTimeout(()=>{\n this.setState({showAlert:false})\n },8000) });\n }\n\n\n addNewCardDetailToList(cardDetail) {\n let availableCards = this.state.availableCards;\n\n if (availableCards === null) {\n availableCards = [];\n }\n\n const currentCardIsDefault = cardDetail.isPrimary;\n let currentCardDetail = {\n \"brand\": cardDetail.card_type,\n \"customerName\": cardDetail.cardholder_name,\n \"expires\": `${cardDetail.expiration_month}/${cardDetail.expiration_year}`,\n \"lastFourDigits\": cardDetail.last_4,\n \"isPrimary\": currentCardIsDefault,\n \"id\": cardDetail.id\n };\n\n // Make other cards as non primary\n if (currentCardIsDefault) {\n for (let card of availableCards) {\n card[\"isPrimary\"] = false;\n }\n }\n\n availableCards.push(currentCardDetail);\n this.setState({availableCards: availableCards})\n }\n\n removeCardDetailFromList(cardDetailID) {\n let availableCards = this.state.availableCards;\n\n if (availableCards === null) {\n availableCards = [];\n }\n\n let updatedAvailableCards = [];\n for (let card of availableCards) {\n if (card.id === cardDetailID) {\n continue;\n }\n\n updatedAvailableCards.push(card);\n }\n\n this.setState({availableCards: updatedAvailableCards});\n this.setState({renderCards: !this.state.renderCards});\n this.hideAddCardSection();\n }\n\n updateCardDetailToList(cardDetail) {\n let availableCards = this.state.availableCards;\n\n if (availableCards === null) {\n availableCards = [];\n }\n\n for (let card of availableCards) {\n if (card.id !== cardDetail.id) {\n continue;\n }\n\n card.customerName = cardDetail.customer_name;\n card.expires = `${cardDetail.expiry_month}/${cardDetail.expiry_year}`;\n }\n\n this.setState({availableCards: availableCards});\n this.setState({renderCards: !this.state.renderCards});\n this.hideAddCardSection();\n }\n\n showEditSection(exCardDetails) {\n this.setState({\n exCardDetails: exCardDetails,\n showAddCard: true,\n isEditMode: true\n });\n }\n\n makeCardAsPrimary(cardDetail) {\n this.setState({cardGroupLoading: true});\n this.submitPrimaryCardRequest(cardDetail);\n this.setState({cardGroupLoading: false});\n }\n\n getEmptyCardSection() {\n if (this.state.availableCards === null) {\n return ();\n }\n\n if (this.state.availableCards.length === 0 &&\n !this.state.isEditMode &&\n !this.state.showAddCard) {\n\n return (\n

    Hm, looks like you don’t have a credit card on\n file.

    \n \n
    \n }\n />)\n }\n }\n\n updatePrimaryStatusOfCards(cardId) {\n if (this.state.availableCards === null) {\n return;\n }\n\n for (let card of this.state.availableCards) {\n card[\"isPrimary\"] = String(card.id) === String(cardId);\n }\n this.setState({renderCards: !this.state.renderCards});\n }\n\n \n render() {\n\n let availableCards = this.state.availableCards; \n if (availableCards === null) {\n availableCards = [];\n }\n\n \n\n let showRemoveCard = availableCards.length > 1;\n\n return (\n <>\n
    \n
    \n

    \n \n Billing & Payment\n

    \n
    \n
    \n
    \n {}\n
    \n\n
    \n \n \n\n {\n this.state.showAlert\n ?\n this.updateAlertSection(false)}\n isopen={String(this.state.showAlert)}\n dismissible>\n

    \n \n {this.state.alertStatus}\n \n {this.state.alertText}\n

    \n
    \n :\n ''\n }\n\n {\n this.state.showAddCard\n ?\n
    \n
    \n
    \n \n {\n this.state.isEditMode\n ?\n 'Edit credit or debit card' :\n \"Add New Credit Card Details\"\n }\n\n \n

    \n {\n this.state.isEditMode\n ?\n 'You can edit your card details' :\n \"You can add your credit card for the future purchase and \" +\n \"automatically renew\"\n }\n .\n

    \n
    \n
    \n
    \n \n {\n this.state.isEditMode ?\n \n \n :\n \n \n \n }\n \n\n
    \n
    \n :\n ''\n }\n\n {\n this.getEmptyCardSection()\n }\n\n {this.state.cardGroupLoading\n ?\n \n :\n (this.state.isEditMode || this.state.showAddCard) ?\n ''\n :\n \n \n }\n
    \n
    \n
    \n \n Billing Preferences\n \n
    \n
    \n
    \n
    \n
    \n Automatically renew my subscription every month\n
    \n\n \n\n \n
    \n
    \n

    \n Turning off auto renew may result in a discontinuation of service at your\n renewal date\n

    \n
    \n
    \n\n\n \n {this.state.billingHistory === null ?\n }\n />\n :\n \n }\n />\n }\n\n \n \n
    \n
    \n
    \n\n \n );\n }\n}\n\nexport default Billing;\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faKey, faUserLock, faHandPointRight, faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport Toast from 'react-bootstrap/Toast';\nimport {toastObj} from \"../../utils/common_utils\";\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { call_post_api } from \"../../utils/event_handling\";\n\n\nclass ChangePassword extends React.Component {\n constructor(props) {\n super(props);\n this.showToast =this.showToast.bind(this);\n this.closeToast= this.closeToast.bind(this);\n this.changePassword = this.changePassword.bind(this);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.changeConfirmPasswordIcon = this.changeConfirmPasswordIcon.bind(this);\n this.changeOldPasswordIcon = this.changeOldPasswordIcon.bind(this);\n this.reset = this.reset.bind(this);\n this.state = {\n toastStatus: false,\n errorCount: null,\n passwordIcon: faEye,\n passwordType: \"password\",\n confirmPasswordIcon: faEye,\n confirmPasswordType: \"password\",\n oldPasswordType: \"password\",\n oldPasswordIcon: faEye,\n disableButton: false,\n errors: {\n password: '',\n confirmPassword: '',\n }\n };\n }\n closeToast() {\n this.setState({toastStatus:false});\n }\n\n showToast(status, msg, link) {\n this.setState({disableButton: false});\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastIcon: toastObj[status][\"icon\"],\n toastheading: toastObj[status][\"heading\"]\n });\n }\n reset(values,{resetForm}) {\n resetForm({values: ''})\n }\n changePassword(values) {\n this.setState({disableButton: true});\n let session = localStorage.getItem(\"sessionToken\");\n const passwordDataValue = {\"user_id\":localStorage.getItem('user_id'),\n \"current_password\":values.currentPassword,\n \"reset_password\":values.newPassword}\n call_post_api(iam_ip, \"profile/reset-password\", passwordDataValue, session).then(\n (response) => {\n if(response.code === 200) {\n this.showToast(\"alert-success\", response.message, \"\");\n }else if(response.code === 401){\n this.showToast(\"alert-danger\", response.message, \"\");\n }else{\n this.showToast(\"alert-danger\", \"could not change password\", \"\");\n }\n }\n );\n }\n\n changePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({passwordIcon: faEyeSlash});\n this.setState({passwordType: \"text\"})\n } else {\n this.setState({passwordIcon: faEye});\n this.setState({passwordType: \"password\"})\n }\n\n }\n\n changeConfirmPasswordIcon() {\n let state = this.state.confirmPasswordIcon;\n if (state.iconName === \"eye\") {\n this.setState({confirmPasswordIcon: faEyeSlash});\n this.setState({confirmPasswordType: \"text\"});\n } else {\n this.setState({confirmPasswordIcon: faEye});\n this.setState({confirmPasswordType: \"password\"});\n }\n\n }\n\n changeOldPasswordIcon() {\n let state = this.state.oldPasswordIcon;\n if (state.iconName === \"eye\") {\n this.setState({oldPasswordIcon: faEyeSlash});\n this.setState({oldPasswordType: \"text\"});\n } else {\n this.setState({oldPasswordIcon: faEye});\n this.setState({oldPasswordType: \"password\"});\n }\n\n }\n\n\n render() {\n const changePasswordSchema = yup.object({\n currentPassword: yup.string().min(6,\"Current Password must be at least 6 characters\").required(\"Current Password is a required field\"),\n newPassword: yup.string().required(\"New Password is a required field\").matches(/^(?=.*[a-z])(?=.*\\d)(?=.*[@$!%*#?&._-])[A-Za-z\\d@$!%*#?&._-]{8,}$/,\n \"Use at least 8 characters containing at least 1 number, 1 lowercase letter, 1 special character in @$!%*#?&._-\"),\n verifyPassword: yup.string().required(\"Verify Password is a required field\").oneOf([yup.ref('newPassword'), null],'Passwords must match',)\n\n });\n return (\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastheading}\n

    { this.state.toastMsg }

    \n
    \n
    \n
    \n
    \n
    \n
    \n

    \n \n \n Change Password\n

    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n Change Password\n
    \n
    \n
    \n { this.changePassword(values); this.reset(values,{resetForm})}}\n >\n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n resetForm,\n isValid,\n }) => (\n
    \n
    \n \n Current Password * :\n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n \n { touched.currentPassword && errors.currentPassword }\n \n
    \n
    \n
    \n \n New Password * :\n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n \n { touched.newPassword && errors.newPassword }\n \n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n \n { touched.verifyPassword && errors.verifyPassword }\n \n
    \n
    \n
    \n
      \n
    • 8 characters minimum
    • \n
    • 4 unique characters
    • \n
    • One special character\n
    • \n
    • Passwords match
    • \n
    \n
    \n \n
    \n
    \n
    )}\n \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n );\n }\n\n}\nexport default ChangePassword;\n\n\n\n","import React from 'react';\nimport Image from \"../components/image\";\nimport Card from 'react-bootstrap/Card';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport Account from './components/account';\nimport PlanAndUsage from './components/plan_and_usage';\nimport Notifications from \"../notifications/index\";\nimport Preferences from './components/preferences';\nimport TeamMate from './components/teamMate';\nimport Security from './components/security';\nimport Billing from './components/billing';\nimport ChangePassword from './components/changePassword';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faUser,\n faKey,\n faPaperPlane,\n // faHistory,\n faUsersCog,\n faReceipt,\n faChalkboardTeacher\n} from '@fortawesome/free-solid-svg-icons';\nimport Nav from 'react-bootstrap/Nav';\nimport { getApi, increaseDataLimit } from \"../utils/User_handling\";\nimport ErrorHandler from '../components/error_500';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport { postUIlogs } from \"../utils/event_handling\";\nimport {\n IS_NONE_CHECK, PLAN_CARD_CLASS_MAPS,\n PLAN_ICON_MAPS, QualdoPlanVersions,CYCLE,\n CLOUD, LOCAL_STORE_KEY\n} from \"../utils/constant\";\nimport Toast from \"react-bootstrap/Toast\";\nimport { toastObj, getFeatureAccess, decryptForLocalUsage } from \"../utils/common_utils\";\nimport { Col, Row } from 'react-bootstrap';\nimport $ from 'jquery';\nimport {logoutPageRedirect} from \"../utils/common_utils\";\n\nconst goToChoosePlan = () => {\n window.location.href = \"/payment\";\n}\n\nlet EDITION_LOGO = process.env.REACT_APP_CUSTOM_EDITION_LOGO\nclass Settings extends React.Component {\n\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.increaseDataLimit = increaseDataLimit.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeWarningMessage = this.closeWarningMessage.bind(this);\n this.check_access_billing = this.check_access_billing.bind(this);\n\n let navKey = \"account\";\n if (this.props.route !== undefined && this.props.route.navKey !== null && this.props.route.navKey !== undefined) {\n navKey = this.props.route.navKey;\n } else if (this.props.navKey !== null && this.props.navKey !== undefined) {\n navKey = this.props.navKey;\n }\n this.state = {\n toastStatus: false,\n reRenderNavComponent: false,\n errorOccurred: false,\n navKey: navKey,\n featureAccess: getFeatureAccess(),\n routeSelection: navKey,\n sideBarSelected: false,\n first_name: null,\n last_name: null,\n org_name: null,\n user_profile_image: null,\n email: null,\n phoneNo: null,\n edition_details: {},\n cycle_end_data:null,\n next_billing_date: null,\n change_request: {},\n planDetails: {\n size: null,\n showInformationBanner: false,\n mlModelCount: null,\n planName: null,\n planNameKey: null,\n planBenefits: [],\n monthlyLimit: [],\n cost: null,\n maxDataLimit: null,\n maxMlModelLimit: null,\n comments: [],\n modifiedTime: null,\n requiresDataLimitUpgrade: false,\n CycleEndData : null,\n paymentStatus:null,\n }\n }\n this.getData();\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n\n static getDerivedStateFromProps(props, state) {\n if (IS_NONE_CHECK.includes(props) || IS_NONE_CHECK.includes(state)) {\n return null;\n }\n\n let navKey = \"account\";\n if (props.route !== undefined && props.route.navKey !== null && props.route.navKey !== undefined) {\n navKey = props.route.navKey;\n } else if (props.navKey !== null && props.navKey !== undefined) {\n navKey = props.navKey;\n }\n\n // Props and state route will be compared to identify is selection is made/changed from Right-Top\n // Profile drop down menu\n if (navKey !== state.routeSelection) {\n return {\n navKey: navKey,\n routeSelection: navKey\n };\n }\n\n return null;\n }\n\n\n\n getData() {\n this.getApi(\"user_details\");\n this.getApi(\"edition_details\");\n this.getApi(\"usage\");\n this.getApi(\"planChangeRequest\");\n }\n\n closeWarningMessage() {\n // This function is called from increaseDataLimit() in User_Handling.js\n localStorage.removeItem(\"warning_message\");\n\n const reRenderNavComponent = this.state.reRenderNavComponent;\n\n this.setState({\n reRenderNavComponent: !reRenderNavComponent,\n });\n }\n\n navSelect(selectedKey) {\n // Handles left side bar navigation selections\n this.setState({ navKey: selectedKey });\n }\n\n closeToast() {\n this.setState({ toastStatus: false });\n }\n\n showToast(status, msg, link) {\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastLink: link,\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n });\n\n if (link.trim().length > 0) {\n setTimeout(function () {\n window.location.href = link;\n }, 3000);\n }\n\n }\n\n handleSidenav = () => {\n $('#qd-aside').addClass(\"--is-visible\");\n $('body').addClass(\"overflow-hidden\");\n }\n handleSidenavClose = () => {\n $('#qd-aside').removeClass(\"--is-visible\");\n $('body').removeClass(\"overflow-hidden\");\n }\n\n renderNavContent() {\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let isPlanExpired = decrypt_data['isPlanExpired']\n let isInBufferPeriod = decrypt_data['isInBufferPeriod']\n // let isPlanExpired = localStorage.getItem(\"isPlanExpired\")\n // let isInBufferPeriod = localStorage.getItem(\"isInBufferPeriod\")\n \n if (isPlanExpired === true && this.state.navKey !== \"billing\" && isInBufferPeriod === false) {\n return ;\n }\n let hideModelInfo = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelInfo = this.state.featureAccess[\"models\"];\n hideModelInfo = modelInfo === false;\n }\n switch (this.state.navKey) {\n case \"account\":\n return ;\n case \"preferences\":\n return ;\n case \"teammate\":\n return ;\n case \"usage\":\n return ;\n case \"security\":\n return ;\n case \"billing\":\n return ;\n case \"changePassword\":\n return ;\n case \"notification\":\n return ;\n default:\n break;\n }\n }\n\n check_access_billing() {\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n\n return (\n <>\n {\n (this.state.featureAccess[\"usage_payment\"] === false &&\n permissionsList.includes('BillingAccess')) ?\n <>\n {/*
    \n \n \n Plan & Usage\n \n
    */}\n
    \n \n \n Manage Teammates\n \n
    \n \n : permissionsList.includes('BillingAccess') ?\n <>\n
    \n \n \n Plan & Usage\n \n
    \n
    \n \n \n Billing & Payment\n \n
    \n
    \n \n \n Manage Teammates\n \n
    \n \n : ''\n }\n \n );\n }\n\n render() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let isPlanExpired = decrypt_data['isPlanExpired']\n let permissions = localStorage.getItem(\"permissions\");\n let permissionsList = [];\n if (permissions !== undefined && permissions !== null) {\n permissionsList = permissions;\n }\n const planDetails = this.state.planDetails;\n\n const editionDetails = this.state.edition_details;\n const loadingCompleted = Object.keys(editionDetails).length > 0;\n\n let planTitle = '';\n if (loadingCompleted) {\n planTitle = editionDetails.details.title;\n }\n\n\n const currentPlanName = editionDetails[\"plan_name\"];\n let currentPlanCycle = editionDetails[\"plan_cycle\"];\n currentPlanCycle = CYCLE[currentPlanCycle]\n return (\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n\n
    \n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n\n \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    {this.state.first_name}
    \n
    {this.state.org_name}
    \n {\n // This section can be completely removed\n // once this functionality is added in other places such as\n // Plan&Usage or Billing section. (Refer issue 1042- Points 18 & 24)\n (permissionsList.includes('BillingAccess') &&\n planDetails.planNameKey !== null &&\n planDetails.planNameKey !== QualdoPlanVersions.FREE &&\n false\n ) ?\n : ''\n }\n
    \n
    \n
    \n \n {\n this.state.phoneNo !== null ?\n
    \n Phone:\n \n {this.state.phoneNo}\n \n
    \n : ''\n }\n
    \n\n\n
    \n {(loadingCompleted === true && this.state.featureAccess[\"usage_payment\"] === false) ?\n\n \n \n \n \n
    \n \"EDITION\n {/* \"AWS */}\n {/* \"Azure */}\n
    \n
    {editionDetails[\"edition\"]} Edition
    \n {CLOUD[EDITION_LOGO]}\n
    \n
    \n \n \n
    {currentPlanCycle} Cycle
    \n \n \n
    \n
    \n
    \n {(this.state.next_billing_date === undefined || this.state.next_billing_date === null) \n ?\n '' \n :\n <>\n

    Next billing date

    \n {isPlanExpired === true && (this.state.cycle_end_data !== undefined &&\n this.state.cycle_end_data !== null)\n ?\n
    \n {this.state.cycle_end_data}\n
    \n :\n
    \n {this.state.next_billing_date.split(',')[1].slice(0, 12)}\n
    \n }\n \n }\n
    \n
    \n
    \n\n :\n loadingCompleted === true ?\n\n \n {editionDetails[\"edition\"]}\n \n
    \n
    \n
    \n \"ML\n
    \n

    Your Plan

    \n

    {planTitle}

    \n
    \n
    \n
    \n
    \n {(this.state.next_billing_date === undefined || this.state.next_billing_date === null) \n ?\n '' \n :\n <>\n

    Next billing date

    \n {isPlanExpired === true && (this.state.cycle_end_data !== undefined &&\n this.state.cycle_end_data !== null)\n ?\n
    \n {this.state.cycle_end_data}\n
    \n :\n
    \n {this.state.next_billing_date.split(',')[1].slice(0, 12)}\n
    \n }\n \n }\n
    \n
    \n
    \n
    \n\n :\n\n \"\"\n\n }\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n );\n }\n}\n\nexport default Settings;","export const ENV_NAME = \"Environment\";\nexport const DATASOURCE = \"Datasource\";\nexport const DATASET = \"Dataset\";\nexport const ATTRIBUTE = \"Attribute\";\n","import React from 'react';\nimport ChartBody from '../components/chartBody';\nimport NoErrorComponent from '../monitor/components/monitorNoResult';\nimport { DATASOURCE } from \"./discoverConstants\";\n\nclass RelationshipChartView extends React.Component {\n\n\n render() {\n let chartData = this.props.dataModule.relationship[this.props.selectedDataSource];\n let hidePartitions = this.props.sectionName === DATASOURCE;\n if (chartData === undefined) {\n return (\n \n );\n }\n\n return (\n \n );\n }\n\n}\n\nexport default RelationshipChartView;","import React from 'react';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport {METADATA_MAP_VALUE_SEPARATOR, normalizeAttributeName, normalizeChildDatasetName} from '../utils/attribute_name_utils';\nimport AttributeNameComp from \"../components/tableCellComponents/attributeNameComp\";\nimport {SRC_ATTRIBUTE_COLUMN, DEST_ATTRIBUTE_COLUMN} from '../utils/constant';\nimport ProgressBar from 'react-bootstrap/ProgressBar';\n\nconst ATTRIBUTE_NAME_COLUMNS = [SRC_ATTRIBUTE_COLUMN, DEST_ATTRIBUTE_COLUMN];\n\nclass RelationshipListView extends React.Component{\n constructor(props, context) {\n super(props, context);\n this.formTableData = this.formTableData.bind(this);\n this.renderDiscoverTableComponents = this.renderDiscoverTableComponents.bind(this);\n this.state = {\n\n }\n }\n\n renderDiscoverTableComponents(actionType, headerValue, cell) {\n\n if (ATTRIBUTE_NAME_COLUMNS.includes(headerValue)) {\n return (\n \n \n )\n } else if(headerValue === \"Relationship Score\") {\n let percentage = cell.value * 100;\n return (
    \n
    \n \n
    \n
    {`${percentage}%`}
    \n
    );\n }\n\n return cell;\n }\n\n formTableData() {\n let filteredValues = this.props.filteredValues;\n let data = this.props.dataModule.relationship[this.props.selectedDataSource]\n let metaData = this.props.dataModule.metaData\n let relationData = [];\n let finalData = [];\n if(data !== undefined) {\n if (!Array.isArray(data)) {\n data = data.attribute;\n }\n \n relationData = data.filter((item) => item.name.startsWith(filteredValues[0]))\n for (let i=0;i\n );\n }\n\n}\n\nexport default RelationshipListView;","import React, { Component } from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearch, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\n\nclass CardHelpContent extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n }\n }\n\n renderAttributeCard(name){\n switch(name) {\n case \"Unique values\":\n return(<>

    {name}

    \n

    The value on this card represents the count of unique values present in the selected attribute.

    \n \n );\n case \"Duplicate values\":\n return(<>

    {name}

    \n

    The value on this card represents the count of duplicate values present in the selected attribute.

    \n \n );\n case \"Empty values\":\n return(<>

    {name}

    \n

    The value on this card represents the count of empty rows for the selected attribute.

    \n \n );\n case \"Error values\":\n return(<>

    {name}

    \n

    The value on this card represents the number of different types of data quality errors found in the selected attribute.

    \n \n );\n default:\n return '';\n\n }\n }\n\n renderModelContent(name) {\n switch(name) {\n case \"Model Performance\":\n return(<>

    {name}

    \n

    The value on this card represents the model performance (F1 score for classification type of models and RMSE for regression type of models) for the selected model.

    \n \n );\n case \"ML Data Consistency Error\":\n return(<>

    {name}

    \n

    The value on this card represents Data consistency error detected in the serving data in comparison with the training data for the selected model.

    \n \n );\n case \"No of Serving Features Drift\":\n return(<>

    {name}

    \n

    The value on this card is the count of the features that are drifting in the serving data over a period of time for the selected model.

    \n \n );\n case \"No of Serving Features Drift Over Training\":\n return(<>

    {name}

    \n

    The value on this card is the count of the features that are drifting in the serving data in comparison with the training data for the selected model.

    \n \n );\n case \"Accuracy Drift\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n\t

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Feature Drift\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n\t

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n case \"ML Data Consistency\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n\t

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n case \"Model Drift\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n\t

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n case \"Prediction Drift\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n\t

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n case \"Response Drift\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n\t

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n\n default:\n return '';\n\n }\n\n }\n\n renderContent(name) {\n if(this.props.page === \"attribute\") {\n return(this.renderAttributeCard(this.props.name));\n\n }\n switch(name) {\n case \"Data Outliers\":\n return(<>

    {name}

    \n\t

    The value shown on this card is an average of the outliers percentage detected on the attributes in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"No of Numerical Attributes with Outliers\":\n return(<>

    {name}

    \n

    The value shown on this card is the count of attributes with outliers in the selected data source by default or based on the applied filters.

    \n \n );\n case \"No of Numerical Attributes without Outliers\":\n return(<>

    {name}

    \n

    The value shown on this card is the count of attributes without outliers in the selected data source by default or based on the applied filters.

    \n \n );\n\n case \"Data Completeness\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the fill rate of the individual attributes present in the selected data source by default or the individual attributes present as per the applied filters.

    \n \n );\n case \"Data Timeliness\":\n return(<>

    {name}

    \n\t

    The value shown on this card is an average of the recency values of the datasets present in the selected data source by default or the datasets present as per the applied filters.

    \n \n );\n case \"Data Drift\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n\t

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Credit Card Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “credit card” in the selected data source by default or in the attributes present as per the applied filters.

    \n \n );\n case \"Categorical Encoding Errors\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n\t

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Categorical Ordinal Errors\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n\t

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Data Conformity Errors\":\n return(<>

    {name}

    \n\t

    The value shown on this card is an average of the conformity errors detected on the applicable attributes present in the selected data source by default or the applicable attributes present as per the applied filters.

    \n \n );\n case \"Data Accuracy Errors\":\n return(\n <>

    {name}

    \n

    The value shown on this card is an average of the data outliers detected on the attributes present in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Data Consistency Errors\":\n return(\n <>

    {name}

    \n

    The value shown on this card is an average of the consistency errors detected on the applicable attributes present in the selected data source by default or the applicable attributes present as per the applied filters.

    \n \n );\n case \"Categorical Consistency Errors\":\n return(\n <>

    {name}

    \n

    The value shown on this card is the percentage of attributes with categorical consistency errors to the overall attributes qualified as “categorical” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Data Type Consistency Errors\":\n return(\n <>

    {name}

    \n

    The value shown on this card is the percentage of attributes with data type consistency errors (data type mismatch) to the overall attributes in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Normalization Consistency Errors\":\n return(\n <>

    {name}

    \n

    The value shown on this card is the percentage of attributes with normalization consistency errors to the overall attributes qualified as “numerical” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Attribute Fill Rate < 25%\":\n return(<>

    {name}

    \n

    The value shown on this card represents the contribution of attributes with a fill rate of less than or equal to 25% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate 25% to 50%\":\n return(<>

    {name}

    \n\t

    The value shown on this card represents the contribution of attributes with a fill rate greater than 25% but less than or equal to 50% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate 50% to 75%\":\n return(<>

    {name}

    \n

    The value shown on this card represents the contribution of attributes with a fill rate greater than 50% but less than or equal to 75% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate > 75%\":\n return(<>

    {name}

    \n

    The value shown on this card represents the contribution of attributes with a fill rate of greater than 25% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate 25% to 75%\":\n return(<>

    {name}

    \n

    The value shown on this card represents the contribution of attributes with a fill rate greater than 25% but less than or equal to 75% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Total number of Rows\":\n return(<>

    {name}

    \n

    The value shown on this card is the total number of rows present in the datasets of the selected datasource by default or based on the applied filters.

    \n \n );\n case \"Datasets with Recency < One Day\":\n return(<>

    {name}

    \n

    The value shown on this card is a percentage of total datasets having recency less than or equal to one day in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"Datasets with Recency < One Week\":\n return(<>

    {name}

    \n

    The value shown on this card is a percentage of total datasets having recency less than or equal to one week in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"Datasets with Recency < One Month\":\n return(<>

    {name}

    \n

    The value shown on this card is a percentage of total datasets having recency less than or equal to one month in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"Datasets with Recency > One Month\":\n return(<>

    {name}

    \n\t

    The value shown on this card is a percentage of total datasets having recency greater than one month in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"URL Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “URL” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"SSN Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “SSN” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"IP Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “IP” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Http Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected to contain “HTTP response” in the selected data source by default or in the attributes present as per the applied filters.

    \n \n );\n case \"Gender Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “gender” in the selected data source by default or in the attributes present as per the applied filters.

    \n \n );\n case \"Email Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “email” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Date Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “date” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Normalization Consistency\":\n return(<>

    {name}

    \n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n\t

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n case \"No. of Datasets having Duplicate\":\n return(<>

    {name}

    \n

    The value shown on this card is the count of datasets having duplicate rows in the selected data source by default or based on the applied filters.

    \n \n );\n case \"Boolean Conformity Errors\":\n return(<>

    {name}

    \n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “boolean” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Total no of attributes having duplicate values\":\n return(<>

    {name}

    \n

    The value shown on this card is the count of attributes having duplicate values in the selected data source by default or based on the applied filters.

    \n \n );\n case \"Total no of duplicate rows in Datasets\":\n return(<>

    {name}

    \n

    The value shown on this card is the count of rows having duplicate values in the selected data source by default or based on the applied filters.

    \n \n );\n default:\n return ''\n\n }\n\n }\n\n render() {\n\n return (\n \n \n \n

    Help

    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {this.props.page === \"model\" ? this.renderModelContent(this.props.name): this.renderContent(this.props.name)}\n
    \n
    \n {/* \n */}\n
    \n );\n }\n}\n\nexport default CardHelpContent;\n","import React from 'react';\nimport _ from 'lodash';\nimport {\n RELATIONSHIP_METRIC,\n RELATIONSHIP_STATIC_CARD,\n RELATIONSHIP_METRIC_ORDER,\n RELATIONSHIP_METRIC_COLOR,\n} from '../utils/constant';\nimport {getAllMetricRecencyInfo} from '../utils/common_utils';\nimport RcTooltip from 'rc-tooltip';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport CardHelpContent from '../components/cardHelpContent';\nimport { faQuestionCircle, faCloud, faFolderOpen } from '@fortawesome/free-solid-svg-icons';\nimport ChartBody from '../components/chartBody';\nimport moment from 'moment';\nimport NoErrorComponent from '../monitor/components/monitorNoResult';\nimport Col from 'react-bootstrap/Col';\nimport Image from '../components/image';\nimport Load from '../components/loadAction';\nimport Row from 'react-bootstrap/Row';\nimport Card from 'react-bootstrap/Card';\n\nconst renderTooltip = (props) => (\n \n Need Help ?\n \n );\nclass MetricsCards extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.getCardData = this.getCardData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.state={\n showModal: false,\n cardName: \"\"\n }\n }\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = {...updatedInfoData, ...filtered}\n });\n return updatedInfoData;\n }\n\n getCardData(){\n if (this.props.selectedDataSource !== -1) {\n let cardInfo = [];\n let filteredValues = this.props.filteredValues;\n let allMetricRecencyInfo = getAllMetricRecencyInfo(this.props.dataModule.info, this.props.dataModule.recencyDetails)\n let allMetricInfo = _.cloneDeep(allMetricRecencyInfo[this.props.selectedDataSource]);\n if(allMetricInfo === undefined) {\n return cardInfo;\n }\n if (filteredValues.length !== 0) {\n allMetricInfo = this.filterInfoData(filteredValues, allMetricInfo);\n }\n let commonId = 0;\n RELATIONSHIP_METRIC_ORDER.forEach((key) => {\n let attributeMetricList = [];\n //let chartMetricList = [];\n for (const metricInfo in allMetricInfo) {\n let metaData = this.props.dataModule.metaData[metricInfo];\n if (metaData !== undefined || key === 19) {\n if (key !== \"Data Conformity Errors\" && key !== \"Data Consistency Errors\") {\n if (key in allMetricInfo[metricInfo]) {\n attributeMetricList.push(allMetricInfo[metricInfo][key]);\n //chartMetricList.push(allMetricInfo[metricInfo][`${key}_time_value`]);\n }\n } else {\n //eslint-disable-next-line\n RELATIONSHIP_METRIC[key].forEach((subMetricId) => {\n if (subMetricId in allMetricInfo[metricInfo]) {\n attributeMetricList.push(allMetricInfo[metricInfo][subMetricId]);\n //chartMetricList.push(allMetricInfo[metricInfo][`${subMetricId}_time_value`]);\n }\n });\n }\n }\n }\n let tempInfo = {};\n if (key !== \"Data Conformity Errors\" && key !== \"Data Consistency Errors\") {\n tempInfo[\"metric_name\"] = RELATIONSHIP_METRIC[key];\n } else {\n tempInfo[\"metric_name\"] = key;\n }\n tempInfo[\"background\"] = RELATIONSHIP_METRIC_COLOR[key].cardBackground;\n tempInfo[\"textColor\"] = RELATIONSHIP_METRIC_COLOR[key].textColor;\n if (attributeMetricList.length !== 0) {\n if (key === \"6\" || key === \"Data Conformity\") {\n attributeMetricList = attributeMetricList.filter((item) => item !== 0);\n }\n let computedMetricValue = `${(attributeMetricList.reduce((a, b) => a + b, 0) / attributeMetricList.length).toFixed(2)}`;\n if (isNaN(computedMetricValue)) {\n computedMetricValue = 0.00\n }\n tempInfo[\"metric_value\"] = computedMetricValue;\n } else {\n tempInfo[\"metric_value\"] = \"NA\";\n }\n\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"chartData\"] = this.filterTimeData(key);\n tempInfo[\"idValue\"] = `relationship${commonId}`;\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n })\n return cardInfo\n }\n }\n handleClick(data) {\n this.setState({showModal: true, cardName: data.metric_name});\n }\n hideModal = () => {\n this.setState({showModal: false});\n }\n filterTimeData(key) {\n let tempStartDate = moment(this.props.dataModule.startDate).format('YYYY-MM-DD 00:00:00')\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return {\"time\": timeList, \"values\": RELATIONSHIP_STATIC_CARD[key]}\n }\n render() {\n let cardData = this.getCardData();\n if(this.props.sectionName === \"Attribute\") {\n let profileData = this.props.profileData;\n return (profileData === null ? : <>\n \n \n \n \n \n
    \n Errors Found\n

    {this.props.outlier ? this.props.outlier : \"0\"}

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n
    \n Total Space Occupied\n

    {this.props.size ? this.props.size : \"0 KB\"}

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n
    \n Number of Records\n

    {this.props.count ? this.props.count : \"0\"}

    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    Empty values
    \n
    \n
    \n {this.props.profileData.empty.value !== null ? this.props.profileData.empty.value :\"NA\"}\n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    Unique values
    \n
    \n
    \n {this.props.profileData.unique.value !== null ? this.props.profileData.unique.value :\"NA\"}\n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    Duplicate values
    \n
    \n
    \n {this.props.profileData.duplicate.value !== null ? this.props.profileData.duplicate.value : \"NA\"}\n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    Error values
    \n
    \n
    \n {this.props.outlier !== null ? this.props.outlier : 0}\n
    \n \n
    \n
    \n
    )\n }\n return(\n
    \n {\n this.state.showModal ?\n : \"\"\n }\n {cardData.length === 0 ?\n \n :\n cardData.map((data) => {\n let cardBackground = `dashboard-stat ${data.background}`;\n let textColor = `title ${data.textColor}`;\n let suffixText = \"%\";\n if (data.metric_name === \"Data Drift\") {\n suffixText = \"\";\n } else if (data.metric_name === \"Data Timeliness\") {\n suffixText = \"days\";\n }\n return (\n
    \n
    \n
    \n
    \n
    \n {data.metric_name}\n
    \n
    }>\n
    \n
    \n \n
    \n
    \n {data.metric_value}\n {data.metric_value !== \"NA\" ?\n {suffixText} : \"\"}\n
    \n \n
    \n
    \n
    \n );\n })}\n
    );\n }\n\n}\n\nexport default MetricsCards;","import React from 'react';\nimport RcTooltip from 'rc-tooltip';\nimport Load from '../components/loadAction';\nimport {IS_NONE_CHECK} from \"../utils/constant\";\n\nconst renderTooltipSummary = (props) => {\n return (\n \n {props}\n )\n }\n ;\n\nclass Summary extends React.Component{\n constructor(props, context) {\n super(props, context);\n this.state={\n datasourceCount: this.props.datasourceCount,\n datasetCount: this.props.datasetCount,\n attributeCount: this.props.attributeCount,\n sectionName: this.props.sectionName,\n datasetIds: this.props.datasetIds,\n lastRefresh: this.props.lastRefresh,\n datasetRow: this.props.datasetRow,\n recencyData: this.props.recencyData,\n datasetName: this.props.datasetName,\n attributeName: this.props.attributeName,\n dataType: this.props.dataType,\n nativeType: this.props.nativeType,\n duplicateRows: this.props.duplicateRows,\n size: this.props.sizeData,\n profileData: this.props.profileData,\n businessRule: this.props.businessRule\n\n }\n }\n\n componentDidUpdate(prevProps){\n if(prevProps !== this.props) {\n this.setState({sectionName: this.props.sectionName,\n datasetCount: this.props.datasetCount,\n datasetIds: this.props.datasetIds,\n duplicateRows: this.props.duplicateRows,\n attributeCount: this.props.attributeCount,\n lastRefresh: this.props.lastRefresh,\n datasetRow: this.props.datasetRow,\n recencyData: this.props.recencyData,\n datasetName: this.props.datasetName,\n attributeName: this.props.attributeName,\n dataType: this.props.dataType,\n nativeType: this.props.nativeType,\n businessRule: this.props.businessRule,\n size: this.props.sizeData,\n profileData: this.props.profileData,\n datasourceCount: this.props.datasourceCount})\n }\n }\n\n render() {\n let size = this.state.size\n\n let profileData = this.state.profileData;\n\n\n switch(this.state.sectionName) {\n case \"Environment\":\n return(
    \n
    \n {this.state.datasourceCount}\n
    \n
    \n {this.state.datasetCount}\n
    \n
    \n {size}\n
    \n
    \n \n
    \n
    );\n case \"Datasource\":\n return(
    \n
    \n {this.state.datasetCount}\n
    \n
    \n {size}\n
    \n
    \n {this.state.recencyData}\n
    \n
    \n {this.state.duplicateRows}\n
    \n
    );\n case \"Dataset\":\n return(
    \n
    \n {!IS_NONE_CHECK.includes(this.state.datasetName) && this.state.datasetName.toString().length >= 15 ?
    }>\n {this.state.datasetName !== null ? this.state.datasetName : \"NA\"}\n \n :\n {this.state.datasetName !== null ? this.state.datasetName : \"NA\"}\n }\n {/* {this.state.datasetName} */}\n
    \n
    \n {this.state.attributeCount}\n
    \n
    \n {this.state.datasetRow}\n
    \n
    \n {this.state.duplicateRows}\n
    \n
    \n {size}\n
    \n\n
    \n {\n !IS_NONE_CHECK.includes(this.state.lastRefresh) && this.state.lastRefresh.toString().length >= 15 ?\n
    }\n >\n \n {this.state.lastRefresh}\n \n \n :\n \n {this.state.lastRefresh}\n \n }\n
    \n\n
    );\n case \"Attribute\":\n let reqAttributeType = this.state.dataType !== null ? this.state.dataType : \"NA\";\n let nativeType = this.state.nativeType;\n if (nativeType !== undefined && nativeType !== null) {\n reqAttributeType = nativeType;\n }\n\n return(profileData !== null ?
    \n
    \n \n {!IS_NONE_CHECK.includes(this.state.datasetName) && this.state.datasetName.toString().length >=15 ?
    }>\n {this.state.datasetName !== null ?this.state.datasetName : \"NA\"}\n \n :\n {this.state.datasetName !== null ?this.state.datasetName : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(this.state.attributeName) && this.state.attributeName.toString().length >= 15 ?
    }>\n {this.state.attributeName !== null ? this.state.attributeName : \"NA\"}\n \n :\n {this.state.attributeName !== null ? this.state.attributeName : \"NA\"}\n }\n
    \n
    \n \n {\n reqAttributeType.toString().length >= 15 ? \n
    }>\n {reqAttributeType}\n \n : \n {reqAttributeType}\n }\n \n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.empty.value) && profileData.empty.value.toString().length >= 15 ?
    }>\n {profileData.empty.value !== null ? profileData.empty.value : \"NA\"}\n \n :\n {profileData.empty.value !== null ? profileData.empty.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.max.value) && profileData.max.value.toString().length >= 15 ?\n
    }>\n {profileData.max.value !== null ? profileData.max.value : \"NA\"}\n \n :{profileData.max.value !== null ? profileData.max.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.min.value) && profileData.min.value.toString().length >= 15 ?\n
    }>\n {profileData.min.value !== null ? profileData.min.value : \"NA\"}\n \n :\n {profileData.min.value !== null ? profileData.min.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.avg.value) && profileData.avg.value.toString().length >= 15 ?\n
    }>\n {profileData.avg.value !== null? profileData.avg.value : \"NA\"}\n \n :\n {profileData.avg.value !== null? profileData.avg.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.mode.value) && profileData.mode.value.toString().length >= 15 ?\n
    }>\n {profileData.mode.value !== null ? profileData.mode.value : \"NA\"}\n \n :\n {profileData.mode.value !== null ? profileData.mode.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.avg.value) && profileData.avg.value.toString().length >= 15 ?\n
    }>\n {profileData.avg.value !== null ? profileData.avg.value : \"NA\"}\n \n :\n {profileData.avg.value !== null ? profileData.avg.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.std.value) && profileData.std.value.toString().length >= 15 ?\n
    }>\n {profileData.std.value !== null ? profileData.std.value : \"NA\"}\n \n :\n {profileData.std.value !== null ? profileData.std.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.unique.value) && profileData.unique.value.toString().length >= 15 ?\n
    }>\n {profileData.unique.value !==null ? profileData.unique.value : \"NA\" }\n \n :\n {profileData.unique.value !==null ? profileData.unique.value : \"NA\" }\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(profileData.duplicate.value) && profileData.duplicate.value.toString().length >=15 ?\n
    }>\n {profileData.duplicate.value !== null ? profileData.duplicate.value : \"NA\"}\n \n :\n {profileData.duplicate.value !== null ? profileData.duplicate.value : \"NA\"}\n }\n
    \n
    \n \n {!IS_NONE_CHECK.includes(this.state.businessRule) && this.state.businessRule.toString().length >= 15 ?\n
    }>\n {this.state.businessRule !== null ? this.state.businessRule : \"NA\"}\n \n :\n {this.state.businessRule !== null ? this.state.businessRule : \"NA\"}\n }\n
    \n
    : );\n default:\n return ''\n }\n\n }\n}\n\nexport default Summary;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearch, faDatabase, faLayerGroup, faTag,\n faServer, faAsterisk, faChartPie, faList, faChartArea, faFileAlt, faProjectDiagram } from '@fortawesome/free-solid-svg-icons';\nimport Tab from \"react-bootstrap/Tab\";\nimport $ from 'jquery';\nimport Nav from \"react-bootstrap/Nav\";\nimport RelationshipChartView from \"./relationshipChartView\";\nimport RelationshipListView from \"./relationshipListView\";\nimport MetricsCards from \"./metricsCards\";\nimport BasicPortlet from '../components/basicPortlet';\nimport NoErrorComponent from '../monitor/components/monitorNoResult';\nimport ChartFilterHeader from '../monitor/components/chartFilterHeader';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport Load from '../components/loadAction';\nimport {\n convertDataForListView, getConvertedSize,\n getChartFilterData, getChartTypeForMonitorCharts,\n normalizeChartData, filterBoxPlotData,\n getShortTitleForAttribute\n} from \"../utils/common_utils\";\nimport {\n getAttributeData,\n getDiscoverPageDataset\n} from \"../utils/event_handling\";\nimport {\n DQ_CHART_POINTS,\n MIN_MAX_SCALE, REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART, BUTTON_WAIT_TIME, DUPLICATE_METRIC,\n RECENCY_INTERNAL_ID, ROW_COUNT_INTERNAL_ID\n} from \"../utils/constant\";\nimport Image from '../components/image';\nimport Summary from \"./summary\";\nimport moment from \"moment\";\nimport ChartBody from '../components/chartBody';\nimport _ from 'lodash';\nimport { Scrollbars } from 'react-custom-scrollbars';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport RcTooltip from 'rc-tooltip';\nimport {\n METADATA_MAP_VALUE_SEPARATOR,\n FQ_TOOLTIP_PLACEHOLDER, \n datasetNameFromMappedValue,\n normalizeChildDatasetName,\n normalizeAttributeName\n} from \"../utils/attribute_name_utils\";\n\nimport {\n ENV_NAME, DATASET, DATASOURCE, ATTRIBUTE\n} from \"./discoverConstants\";\n\n// import {DUMMY_DATA} from \"./testData\";\n\n\nconst envNodeMap = new Map();\nconst dSrcNodeMap = new Map();\nconst dSetMap = new Map();\nconst attributeNodeMap = new Map();\n\nconst renderAttributeTitleToolTip = (props) => (\n \n {props}\n \n);\n\nconst allNodeMap = new Map();\nallNodeMap.set(ENV_NAME, envNodeMap);\nallNodeMap.set(DATASOURCE, dSrcNodeMap);\nallNodeMap.set(DATASET, dSetMap);\nallNodeMap.set(ATTRIBUTE, attributeNodeMap);\n\nlet activeItem = {\n [ATTRIBUTE]: 'breadcrumb-item',\n [DATASET]: 'breadcrumb-item',\n [DATASOURCE]: 'breadcrumb-item',\n [ENV_NAME]: 'breadcrumb-item',\n\n};\n\ndocument.onkeydown = checkKey;\nfunction checkKey(e) {\n e = e || window.event;\n let downClick = document.getElementById(\"down\")\n if(downClick === null) {\n return\n }\n if (e.keyCode === 38) {\n // up arrow\n //document.getElementById(\"up\").click();\n start(\"up\");\n }\n else if (e.keyCode === 40) {\n // down arrow\n\n start(\"down\");\n //document.getElementById(\"down\").click();\n }\n\n}\n\nlet funCallFlag;\nfunction start(param) {\nif(funCallFlag!==\"undefined\") {\n clearInterval(funCallFlag);\n}\nif(param === \"up\"){\n\n funCallFlag = setInterval(upButtonClick, BUTTON_WAIT_TIME);\n}else{\n funCallFlag = setInterval(downButtonClick, BUTTON_WAIT_TIME);\n}\n\n}\n\nfunction upButtonClick(e){\n document.getElementById(\"up\").click();\n clearInterval(funCallFlag);\n}\n\nfunction downButtonClick(e){\n document.getElementById(\"down\").click();\n clearInterval(funCallFlag);\n}\n\n\nclass DiscoverResults extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.changeTab = this.changeTab.bind(this);\n this.changeSource = this.changeSource.bind(this);\n this.getChartFilterData = getChartFilterData.bind(this);\n this.getDiscoverPageDataset = getDiscoverPageDataset.bind(this);\n this.changeData = this.changeData.bind(this);\n this.convertDataForDiscoverCharts = this.convertDataForDiscoverCharts.bind(this);\n this.breadCrumbEvent = this.breadCrumbEvent.bind(this);\n this.handleLoad = this.handleLoad.bind(this);\n this.handleTreeViewButton = this.handleTreeViewButton.bind(this);\n this.processDatasourceChart = this.processDatasourceChart.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.closeIcon = this.closeIcon.bind(this);\n this.getAttributeData = getAttributeData.bind(this);\n this.getEnvTableData = this.getEnvTableData.bind(this);\n this.applyTimeFilterToChart = this.applyTimeFilterToChart.bind(this);\n this.renderBreadCrumbAttributeContent = this.renderBreadCrumbAttributeContent.bind(this);\n this.reset = this.reset.bind(this);\n let initialSelection = this.props.initialSelection\n let nestedData = this.props.nestedData\n let startDate = moment().subtract(30, 'days');\n let endDate = moment().endOf('day');\n this.state = {\n activeTabKey: \"chartView\",\n businessRule: null,\n sectionName: \"\",\n dataType: null,\n nativeType: null,\n outlier: null,\n envTableData: null,\n recencyData: 0,\n disableDown: false,\n disableUp: true,\n distributionData: null,\n profileData: null,\n datasetIds: [],\n startDate: startDate,\n endDate: endDate,\n newData: {},\n isTreeSearch: false,\n datasetRow: 0,\n duplicateRows: 0,\n isRedirect: this.props.isRedirect,\n isFetched: false,\n filteredData: null,\n datasourceCount: 0,\n data: nestedData,\n filterSearch: \"\",\n subString: this.props.subString,\n lastRefresh: null,\n attributeCount: 0,\n datasetCount: 0,\n isSearchHappened: this.props.isSearchHappened,\n selectedDataSource: null,\n isChartChanged: false,\n driftOnMetricsChart: null,\n selectedData: [],\n isDataChanged: false,\n currentIndex: 0,\n highlightedType: \"\",\n highlightedId: null,\n showTreeView: false,\n metricsOptions: [],\n envName: initialSelection.envName,\n datasourceName: initialSelection.datasourceName,\n datasetName: initialSelection.datasetName,\n attributeName: initialSelection.attributeName,\n filteredValues: [],\n driftOnMetricsKey: null,\n metricsChartData: [],\n currentMetricOnChart: null,\n selectedMasChart: null\n }\n }\n\n changeTab(tab) {\n this.setState({activeTabKey: tab});\n }\n handleLoad(value) {\n this.setState({loadValue:value});\n }\n findAverage(inputArr) {\n if (inputArr !== null && inputArr !== undefined){\n return inputArr.reduce((a, b) => a + b) / inputArr.length;\n } else{\n return 0;\n }\n }\n\n renderBreadCrumbAttributeContent(activeItem) {\n let reqAttributeName = this.state.attributeName;\n\n let shortNameData = getShortTitleForAttribute(reqAttributeName);\n let reqAttrText = shortNameData[\"requiredName\"];\n let fqTooltipContent = shortNameData[\"fqTooltipContent\"];\n\n if (fqTooltipContent === null) {\n // Rendering without tooltip content\n return (\n
  • \n \n {reqAttrText}\n
  • \n )\n }\n\n // Rendering with tooltip content\n return (\n
  • \n\n
  • }>\n \n \n\n }> \n {FQ_TOOLTIP_PLACEHOLDER}\n \n\n {reqAttrText}\n\n \n )\n\n }\n\n getEnvTableData(envData, datasetRes){\n let headers = [\"Datasource Name\", \"Dataset Name\", \"Attribute Count\", \"Dataset Size\", \"Last Refreshed Time\"];\n let finalOp = [];\n let datasourceData = Object.values(envData)\n for (let i = 0; i < datasourceData.length; i++) {\n let datasourceName = datasourceData[i][\"title\"]\n let datasetData = Object.values(datasourceData[i][\"childNodes\"])\n for(let j=0;jx.data_set_id === Number(datasetId))\n let dataSize = 0\n if(sizeData.length > 0) {\n dataSize = getConvertedSize(sizeData[0][\"size\"])\n }\n\n let attributeCount = Object.values(d[\"childNodes\"]).length\n\n row.push({ \"value\": datasourceName, \"type\": \"td\" });\n row.push({ \"value\": datasetName, \"type\": \"td\" });\n row.push({ \"value\": attributeCount, \"type\": \"td\" });\n row.push({ \"value\":dataSize, \"type\": \"td\" });\n row.push({ \"value\":lastRefresh, \"type\": \"td\" });\n finalOp.push(row);\n }\n }\n let tableData = { \"headers\": headers, \"data\": finalOp };\n\n return tableData;\n\n }\n\n applyTimeFilterToChart(currentData, startDate, endDate, chartType, isPatternNotNeeded){\n // this.state.startDate, this.state.endDate\n\n let metricName;\n if (currentData !== null && currentData !== undefined){\n metricName = currentData[\"name\"]\n this.setState({currentMetricOnChart: currentData[\"name\"]})\n }\n else{\n metricName = this.state.currentMetricOnChart\n }\n this.changeSource(metricName, \"\", \"\", startDate, endDate)\n \n }\n\n changeSource(metricName, stateKey, title, startDate=null, endDate=null) {\n let finalData = null\n let filteredData = null\n let isTimeFilter = false\n\n if(startDate === null) {\n startDate = this.state.startDate;\n }\n else{\n isTimeFilter = true\n }\n\n if (endDate === null) {\n endDate = this.state.endDate;\n }\n\n if (this.state.selectedData !== null && [DATASET, ATTRIBUTE].includes(this.state.sectionName)) {\n for(let row of this.state.selectedData) {\n if (row[\"name\"] === metricName) {\n finalData = row;\n finalData['data_source_name'] = this.state.datasourceName;\n finalData[\"datasetName\"] = this.state.datasetName;\n finalData['attribute_name'] = this.state.attributeName;\n finalData['error_percentage'] = this.findAverage().toFixed(2);\n if (finalData[\"name\"] === \"Data Drift\") {\n finalData[\"boxPlotData\"] = filterBoxPlotData(finalData[\"boxPlotData\"])\n }\n\n filteredData = getChartFilterData(finalData, startDate, endDate)\n\n if(filteredData !== undefined && filteredData !== null && filteredData.time.length !== undefined) {\n finalData = filteredData;\n }\n\n if (isTimeFilter === true){\n finalData = filteredData\n }\n\n break;\n }\n }\n }else if(this.state.sectionName === DATASOURCE){\n let reqName = metricName;\n\n if (isTimeFilter) {\n reqName = this.state.selectedMasChart\n } else {\n this.setState({ selectedMasChart: metricName });\n }\n\n let dataFromProps = this.props.datasourceData[this.state.selectedDataSource][reqName]\n let data = _.cloneDeep(dataFromProps);\n let result = this.processDatasourceChart(data, this.state.selectedDataSource,\n startDate, endDate);\n finalData = result[\"finalData\"]\n filteredData = result[\"filteredData\"]\n if (isTimeFilter === true){\n finalData = filteredData\n }\n\n }\n\n let isChartChanged = !this.state.isChartChanged\n const metricKey = \"attribute_\" + metricName + String(isChartChanged);\n \n this.setState({driftOnMetricsChart: finalData, filteredData: filteredData, \n loadValue:false, driftOnMetricsKey: metricKey});\n\n this.setState({isChartChanged: !this.state.isChartChanged});\n }\n componentDidUpdate(prevProps) {\n if(prevProps.nestedData !== this.props.nestedData) {\n let initialSelection = this.props.initialSelection\n let envId = initialSelection.envId\n let datasourceId = initialSelection.datasourceId\n let datasetId = initialSelection.datasetId\n let duplicateRows = 0;\n let attributeId = initialSelection.attributeId\n let filteredValues = [];\n let selectedData = []\n let metricData = []\n let metricsOptions = []\n let chartData = this.props.metricData;\n let sectionName = \"\"\n let driftOnMetricsChart = null\n let filteredData = null\n let driftOnMetricsKey = null\n let highlightedType = \"\"\n let highlightedId = null\n let prefix;\n let datasetIds = []\n let attributeCount = 0\n let datasetCount = 0\n let datasourceCount = 0\n let nestedData = this.props.nestedData\n let lastRefresh;\n let datasetRow = 0;\n let envTableData = null\n let recencyData = 0\n\n\n let keys = [\"apiFetchOver\"]\n let chart_data_keys = JSON.stringify(Object.keys(chartData))\n let keys_ = JSON.stringify(keys)\n\n sectionName = initialSelection.type;\n if (sectionName === ATTRIBUTE) {\n this.setState({isFetched: false});\n this.getAttributeData(datasetId, initialSelection.attributeId);\n }\n\n if (sectionName === DATASET) {\n lastRefresh = this.props.datasetRefreshInfo[Number(datasetId)];\n }\n\n if(Object.keys(initialSelection).length !== 0 && chart_data_keys!==keys_) {\n envId = initialSelection.envId\n datasourceId = initialSelection.datasourceId\n highlightedType = initialSelection.type\n datasetId = initialSelection.datasetId\n attributeId = initialSelection.attributeId\n if(attributeId !== null && attributeId !== undefined) {\n prefix = `${envId}.${datasourceId}.${datasetId}.${attributeId}`\n if (this.state.metricsChartData !== null && this.state.metricsChartData !== undefined){\n metricData = this.state.metricsChartData\n }\n sectionName = ATTRIBUTE\n\n highlightedId = attributeId\n }else if(datasetId !== null && datasetId !== undefined) {\n prefix = `${envId}.${datasourceId}.${datasetId}`;\n if (chartData.dataset_level_data !== undefined && chartData.dataset_level_data[datasetId] !== undefined){\n metricData = Object.values(chartData.dataset_level_data[datasetId])\n }\n sectionName = DATASET;\n datasetIds = [datasetId]\n highlightedId = datasetId\n attributeCount = Object.values(nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"]).length\n let duplicateInfo = this.props.dataModule.info[datasourceId][prefix]\n if(duplicateInfo !== undefined ){\n let duplicateRowsList = duplicateInfo[`${DUPLICATE_METRIC}_duplicate_row`]\n if(duplicateRowsList) {\n duplicateRows = duplicateRowsList[duplicateRowsList.length-1]\n }\n\n let datasetRowsList = duplicateInfo[`${ROW_COUNT_INTERNAL_ID}_time_value`]\n if(datasetRowsList) {\n datasetRow = datasetRowsList[datasetRowsList.length-1]\n }\n\n }\n }else if(datasourceId !== null && datasourceId !== undefined) {\n prefix = `${envId}.${datasourceId}`;\n sectionName = DATASOURCE\n highlightedId = datasourceId\n datasetIds = Object.keys(nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"])\n datasetCount = datasetIds.length\n for(const key of Object.keys(this.props.datasourceData[datasourceId])){\n if(key.includes(\"Data\")){\n metricsOptions.push({\"label\": key, \"value\": key})\n }\n\n }\n if(metricsOptions.length > 0) {\n let currMasName = metricsOptions[0].value;\n this.setState({ selectedMasChart: currMasName });\n let dataFromProps = this.props.datasourceData[datasourceId][currMasName]\n let data = _.cloneDeep(dataFromProps);\n let result = this.processDatasourceChart(data, datasourceId);\n driftOnMetricsChart = result[\"finalData\"]\n filteredData = result[\"filteredData\"]\n }\n\n let recencyInfo = this.props.dataModule.recencyDetails[datasourceId]\n for(let value of Object.values(recencyInfo)){\n let recencyFiltered = value\n let recencyList = recencyFiltered[`${RECENCY_INTERNAL_ID}_time_value`]\n let latestRecency = 0\n if(recencyList) {\n latestRecency = recencyList[recencyList.length-1]\n }\n if(latestRecency > 30){\n recencyData = recencyData + 1\n }\n }\n let duplicateInfo = this.props.dataModule.info[datasourceId]\n for(let value of Object.values(duplicateInfo)){\n let duplicateFiltered = value\n let duplicateRowsList = duplicateFiltered[`${DUPLICATE_METRIC}_duplicate_row`]\n if(duplicateRowsList) {\n duplicateRows = duplicateRowsList[duplicateRowsList.length-1] + duplicateRows\n }\n }\n\n }else {\n prefix = `${envId}`;\n sectionName = ENV_NAME;\n datasetCount = 0\n highlightedId = envId\n let total = nestedData[envId][\"childNodes\"]\n datasourceCount = Object.keys(total).length\n for(const value of Object.values(total)) {\n datasetIds = datasetIds.concat(Object.keys(value[\"childNodes\"]))\n datasetCount = datasetCount + datasetIds.length\n\n }\n envTableData = this.getEnvTableData(nestedData[envId][\"childNodes\"], null)\n }\n metricData = convertDataForListView(metricData, initialSelection.datasetName, initialSelection.datasourceName)\n for(let i=0;i 0) {\n driftOnMetricsChart = selectedData[0]\n filteredData = getChartFilterData(driftOnMetricsChart, this.state.startDate, this.state.endDate)\n driftOnMetricsKey = sectionName + driftOnMetricsChart[\"name\"]\n }\n filteredValues.push(prefix)\n\n }\n\n // ---- Following code is new code. Above code is commented for reference\n if (sectionName === ENV_NAME && nestedData !== undefined && nestedData !== null) {\n prefix = `${envId}`;\n datasetCount = 0;\n highlightedId = envId;\n \n if (nestedData[envId] !== undefined) {\n let total = nestedData[envId][\"childNodes\"]\n datasourceCount = Object.keys(total).length\n for (const value of Object.values(total)) {\n datasetIds = datasetIds.concat(Object.keys(value[\"childNodes\"]))\n datasetCount = datasetCount + datasetIds.length\n }\n \n envTableData = this.getEnvTableData(nestedData[envId][\"childNodes\"], null)\n }\n \n }\n\n if (sectionName === DATASOURCE && nestedData !== undefined && nestedData !== null) {\n prefix = `${envId}.${datasourceId}`;\n highlightedId = datasourceId;\n datasetIds = Object.keys(nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"])\n datasetCount = datasetIds.length\n for(const key of Object.keys(this.props.datasourceData[datasourceId])){\n if(key.includes(\"Data\")){\n metricsOptions.push({\"label\": key, \"value\": key})\n }\n\n }\n if(metricsOptions.length > 0) {\n let currMasName = metricsOptions[0].value;\n this.setState({ selectedMasChart: currMasName });\n let dataFromProps = this.props.datasourceData[datasourceId][currMasName]\n let data = _.cloneDeep(dataFromProps);\n let result = this.processDatasourceChart(data, datasourceId);\n driftOnMetricsChart = result[\"finalData\"]\n filteredData = result[\"filteredData\"]\n }\n\n let recencyInfo = this.props.dataModule.recencyDetails[datasourceId]\n for(let value of Object.values(recencyInfo)){\n let recencyFiltered = value\n let recencyList = recencyFiltered[`${RECENCY_INTERNAL_ID}_time_value`]\n let latestRecency = 0\n if(recencyList) {\n latestRecency = recencyList[recencyList.length-1]\n }\n if(latestRecency > 30){\n recencyData = recencyData + 1\n }\n }\n let duplicateInfo = this.props.dataModule.info[datasourceId]\n for(let value of Object.values(duplicateInfo)){\n let duplicateFiltered = value\n let duplicateRowsList = duplicateFiltered[`${DUPLICATE_METRIC}_duplicate_row`]\n if(duplicateRowsList) {\n duplicateRows = duplicateRowsList[duplicateRowsList.length-1] + duplicateRows\n }\n }\n \n }\n\n if (sectionName === DATASET && nestedData !== undefined && nestedData !== null) {\n prefix = `${envId}.${datasourceId}.${datasetId}`;\n\n this.setState({isFetched: true});\n let fqDatasetName = this.props.metaData[prefix];\n let datasetName = datasetNameFromMappedValue(fqDatasetName)\n this.getDiscoverPageDataset(datasetId, datasetName, sectionName);\n\n datasetIds = [datasetId]\n highlightedId = datasetId\n attributeCount = Object.values(nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"]).length\n let duplicateInfo = this.props.dataModule.info[datasourceId][prefix]\n\n if(duplicateInfo !== undefined ){\n let duplicateRowsList = duplicateInfo[`${DUPLICATE_METRIC}_duplicate_row`]\n if(duplicateRowsList) {\n duplicateRows = duplicateRowsList[duplicateRowsList.length-1]\n }\n\n let datasetRowsList = duplicateInfo[`${ROW_COUNT_INTERNAL_ID}_time_value`]\n if(datasetRowsList) {\n datasetRow = datasetRowsList[datasetRowsList.length-1]\n }\n\n }\n }\n\n\n if (sectionName === ATTRIBUTE && nestedData !== undefined && nestedData !== null) {\n prefix = `${envId}.${datasourceId}.${datasetId}.${attributeId}`\n if (this.state.metricsChartData !== null && this.state.metricsChartData !== undefined){\n metricData = this.state.metricsChartData\n }\n\n highlightedId = attributeId\n }\n filteredValues.push(prefix)\n\n this.setState({\n data: this.props.nestedData,\n envName: initialSelection.envName,\n datasourceName: initialSelection.datasourceName,\n selectedDataSource: datasourceId,\n lastRefresh: lastRefresh,\n datasetRow: datasetRow,\n duplicateRows: duplicateRows,\n recencyData: recencyData,\n subString: this.props.subString,\n selectedData: selectedData,\n driftOnMetricsChart: driftOnMetricsChart,\n filteredData: filteredData,\n sectionName: sectionName,\n driftOnMetricsKey: driftOnMetricsKey,\n metricsOptions: metricsOptions,\n attributeCount: attributeCount,\n datasourceCount: datasourceCount,\n isTreeSearch: false,\n envTableData: envTableData,\n newData: {},\n filterSearch: \"\",\n datasetCount: datasetCount,\n datasetIds: datasetIds,\n highlightedId: highlightedId,\n highlightedType: highlightedType,\n isSearchHappened: this.props.isSearchHappened,\n datasetName: initialSelection.datasetName,\n isRedirect: this.props.isRedirect,\n attributeName: initialSelection.attributeName,\n filteredValues: filteredValues,\n envId:envId,\n datasetId: datasetId,\n attributeId: attributeId,\n isDataChanged: !this.state.isDataChanged})\n }\n }\n getDefaultSelectedMetrics(){\n let selectedMetricOptions = [];\n if (this.state.metricsOptions.length > 0){\n selectedMetricOptions = this.state.metricsOptions[0];\n return selectedMetricOptions;\n } else{\n return selectedMetricOptions;\n }\n }\n\n breadCrumbEvent(e) {\n let type = e.target.id;\n if(this.state.highlightedType === type){\n return\n }\n let envName = this.state.envName\n let datasourceName = this.state.datasourceName\n let datasetName = this.state.datasetName\n let attributeName = this.state.attributeName\n let envId = this.state.envId\n let datasourceId = this.state.selectedDataSource\n let datasetId = this.state.datasetId\n let attributeId = this.state.attributeId\n if(type === ENV_NAME){\n this.changeData(envName, \"\", \"\", \"\", envId, null,\n null, null, envId, type);\n }else if(type === DATASOURCE) {\n this.changeData(envName, datasourceName, \"\", \"\", envId, datasourceId,\n null, null, datasourceId, type);\n }else if(type === DATASET) {\n this.changeData(envName, datasourceName, datasetName, \"\", envId, datasourceId,\n datasetId, null, datasetId, type);\n }else if(type === ATTRIBUTE){\n this.changeData(envName, datasourceName, datasetName, attributeName, envId, datasourceId,\n datasetId, attributeId, attributeId, type);\n }\n\n\n\n\n }\n\n convertDataForDiscoverCharts(metricData, datasetName, sectionName=null){\n\n let driftOnMetricsChart = []\n let filteredValues = [];\n let metricsOptions = []\n let selectedData = []\n let driftOnMetricsKey = null\n let chartData = this.props.metricData;\n let filteredData;\n let prefix;\n let currentIndex;\n if (sectionName === null) {\n sectionName = ATTRIBUTE;\n }\n\n metricData = convertDataForListView(metricData, datasetName, this.state.datasourceName)\n\n for(let i=0;i 0) {\n driftOnMetricsChart = selectedData[0]\n if (driftOnMetricsChart[\"name\"] === \"Data Drift\") {\n driftOnMetricsChart[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n }\n filteredData = getChartFilterData(driftOnMetricsChart, this.state.startDate, this.state.endDate,\"\", false, false, 10)\n driftOnMetricsKey = sectionName + driftOnMetricsChart[\"name\"]\n }\n\n if(this.state.currentIndex === null) {\n let currentData = this.props.filteredData.filter(x=>x.type === ATTRIBUTE && x.id === this.state.attributeId)\n currentIndex = this.props.filteredData.indexOf(currentData[0])\n }\n\n filteredValues.push(prefix)\n\n\n if (sectionName === ATTRIBUTE) {\n this.setState({\n metricsOptions: metricsOptions,\n currentIndex: currentIndex,\n sectionName: sectionName,\n driftOnMetricsChart: driftOnMetricsChart,\n selectedData: selectedData,\n driftOnMetricsKey: driftOnMetricsKey,\n filteredData: filteredData,\n filteredValues: filteredValues})\n return;\n }\n\n this.setState({\n metricsOptions: metricsOptions,\n driftOnMetricsChart: driftOnMetricsChart,\n driftOnMetricsKey: driftOnMetricsKey,\n selectedData: selectedData,\n sectionName: sectionName});\n \n }\n\n changeData(envName, datasourceName, datasetName, attributeName, envId, datasourceId,\n datasetId, attributeId, id, type, currentIndex=null){\n $(\"#zoomlevel\").val(10);\n let filteredValues = [];\n let filteredData;\n let chartData = this.props.metricData;\n let driftOnMetricsChart = null\n let driftOnMetricsKey = null\n let selectedData = []\n let metricData = []\n let metricsOptions = []\n let prefix;\n let attributeCount;\n let datasetCount;\n let datasetIds = [];\n let envTableData = null\n let lastRefresh;\n let duplicateRows = 0;\n let datasetRow = 0;\n let recencyData = 0\n let datasourceCount;\n let sectionName = \"\"\n let originalData = _.cloneDeep(this.props.originalData);\n\n if(attributeId !== null && attributeId !== undefined) {\n prefix = `${envId}.${datasourceId}.${datasetId}.${attributeId}`\n sectionName = ATTRIBUTE\n this.setState({isFetched: false, distributionData: null});\n this.getAttributeData(datasetId, attributeId);\n originalData[envId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"][attributeId][\"isOpen\"] = true\n }else if(datasetId !== null && datasetId !== undefined) {\n originalData[envId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"isShow\"] = true\n\n prefix = `${envId}.${datasourceId}.${datasetId}`;\n\n lastRefresh = this.props.datasetRefreshInfo[Number(datasetId)];\n\n sectionName = DATASET;\n this.setState({isFetched: true});\n let fqDatasetName = this.props.metaData[prefix];\n let datasetName = datasetNameFromMappedValue(fqDatasetName)\n this.getDiscoverPageDataset(datasetId, datasetName, sectionName);\n\n datasetIds = [datasetId]\n let duplicateInfo = this.props.dataModule.info[datasourceId][prefix]\n if(duplicateInfo !== undefined ){\n let duplicateRowsList = duplicateInfo[`${DUPLICATE_METRIC}_duplicate_row`]\n if(duplicateRowsList) {\n duplicateRows = duplicateRowsList[duplicateRowsList.length-1]\n }\n\n let datasetRowsList = duplicateInfo[`${ROW_COUNT_INTERNAL_ID}_time_value`]\n if(datasetRowsList) {\n datasetRow = datasetRowsList[datasetRowsList.length-1]\n }\n\n }\n attributeCount = Object.values(originalData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"]).length\n }else if(datasourceId !== null && datasourceId !== undefined) {\n prefix = `${envId}.${datasourceId}`;\n sectionName = DATASOURCE\n datasetIds = Object.keys(originalData[envId][\"childNodes\"][datasourceId][\"childNodes\"])\n datasetCount = datasetIds.length\n originalData[envId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"isOpen\"] = true\n originalData[envId][\"childNodes\"][datasourceId][\"isShow\"] = true\n\n let reqMetricResult = this.props.datasourceData[datasourceId];\n // reqMetricResult = DUMMY_DATA\n for(const key of Object.keys(reqMetricResult)){\n let value = reqMetricResult[key];\n if (value === undefined || value.constructor !== Object) {\n continue;\n }\n\n if(key.includes(\"Data\")){\n metricsOptions.push({\"label\": key, \"value\": key})\n }\n }\n\n if(metricsOptions.length > 0) {\n let currMasName = metricsOptions[0].value;\n this.setState({ selectedMasChart: currMasName });\n let dataFromProps = reqMetricResult[currMasName]\n let data = _.cloneDeep(dataFromProps);\n let result = this.processDatasourceChart(data, datasourceId);\n driftOnMetricsChart = result[\"finalData\"]\n filteredData = result[\"filteredData\"]\n }\n\n let duplicateInfo = this.props.dataModule.info[datasourceId]\n for(let value of Object.values(duplicateInfo)){\n let duplicateFiltered = value\n let duplicateRowsList = duplicateFiltered[`${DUPLICATE_METRIC}_duplicate_row`]\n if(duplicateRowsList) {\n duplicateRows = duplicateRowsList[duplicateRowsList.length-1] + duplicateRows\n }\n }\n let recencyInfo = this.props.dataModule.recencyDetails[datasourceId];\n\n for(let value of Object.values(recencyInfo)){\n let recencyFiltered = value\n let recencyList = recencyFiltered[`${RECENCY_INTERNAL_ID}_time_value`]\n let latestRecency = 0\n if(recencyList) {\n latestRecency = recencyList[recencyList.length-1]\n }\n if(latestRecency > 30){\n recencyData = recencyData + 1\n }\n }\n\n }else {\n prefix = `${envId}`;\n sectionName = ENV_NAME\n datasetCount = 0\n\n let total = originalData[envId][\"childNodes\"]\n datasourceCount = Object.keys(total).length\n for(const value of Object.values(total)) {\n let currChildNodes = Object.keys(value[\"childNodes\"]);\n datasetIds = datasetIds.concat(currChildNodes)\n datasetCount = datasetCount + currChildNodes.length\n }\n envTableData = this.getEnvTableData(originalData[envId][\"childNodes\"], chartData)\n originalData[envId][\"isShow\"] = true\n originalData[envId][\"isOpen\"] = true\n }\n if([DATASET].includes(sectionName)) {\n metricData = convertDataForListView(metricData, datasetName, datasourceName)\n for(let i=0;i 0) {\n driftOnMetricsChart = selectedData[0]\n if (driftOnMetricsChart[\"name\"] === \"Data Drift\") {\n driftOnMetricsChart[\"boxPlotData\"] = filterBoxPlotData(chartData[\"boxPlotData\"])\n }\n filteredData = getChartFilterData(driftOnMetricsChart, this.state.startDate, this.state.endDate,\"\", false, false, 10)\n driftOnMetricsKey = sectionName + driftOnMetricsChart[\"name\"]\n }\n if(currentIndex === null) {\n let currentData = this.props.filteredData.filter(x=>x.type === type && x.id === id)\n currentIndex = this.props.filteredData.indexOf(currentData[0])\n }\n\n filteredValues.push(prefix)\n if(this.state.isTreeSearch){\n this.setState({isTreeSearch: false, subString: \"\", filterSearch: \"\", newData: originalData, isDataChanged: !this.state.isDataChanged})\n }\n\n\n this.setState({envName: envName,\n envTableData: envTableData,\n selectedDataSource: datasourceId,\n datasetId: datasetId,\n recencyData: recencyData,\n envId:envId,\n duplicateRows: duplicateRows,\n attributeId: attributeId,\n datasetRow: datasetRow,\n lastRefresh: lastRefresh,\n showTreeView: false,\n datasetCount: datasetCount,\n attributeCount: attributeCount,\n datasourceCount: datasourceCount,\n isChartChanged: !this.state.isChartChanged,\n datasourceName: datasourceName,\n datasetName: datasetName,\n highlightedType: type,\n datasetIds: datasetIds,\n highlightedId: id,\n attributeName: attributeName})\n if (sectionName !== ATTRIBUTE){\n this.setState({\n driftOnMetricsChart: driftOnMetricsChart,\n currentIndex: currentIndex,\n sectionName: sectionName,\n selectedData: selectedData,\n filteredData: filteredData,\n metricsOptions: metricsOptions,\n driftOnMetricsKey: driftOnMetricsKey,\n filteredValues: filteredValues,\n })\n\n }\n }\n\n processDatasourceChart(data, datasourceId, startDate=null, endDate=null) {\n if(startDate === undefined || startDate === null) {\n startDate = this.state.startDate;\n }\n\n if (endDate === undefined || endDate === null) {\n endDate = this.state.endDate;\n }\n\n let finalData = null;\n let filteredData = null;\n let attributeName = null;\n let datasetName = null;\n if (data === undefined) {\n let result = { \"finalData\": finalData, \"filteredData\": filteredData }\n return result\n }\n\n for (const [key, value] of Object.entries(data)) {\n for (const [attribute, chartDataValues] of Object.entries(value)) {\n const attributeKeysSplit = attribute.split(\".\");\n if (datasourceId !== null) {\n if (attributeKeysSplit[1] !== datasourceId) {\n continue;\n }\n }\n\n let metaData = this.props.metaData[attribute];\n if (metaData === undefined) {\n metaData = this.props.metaData;\n // const filtered = Object.keys(metaData)\n // .filter(key => key.startsWith(attribute))\n // .reduce((obj, key) => {\n // obj[key] = metaData[key];\n // return obj;\n // }, {});\n metaData = metaData[attribute];\n if (metaData !== undefined) {\n let reqSplitArr = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n metaData = reqSplitArr.slice(0, reqSplitArr.length - 1).join(METADATA_MAP_VALUE_SEPARATOR);\n }\n }\n if (metaData !== undefined) {\n const metadataSplit = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n\n let toolTiptopHeader;\n let keysSplitLength = attributeKeysSplit.length;\n\n // Skip attribute level charts for consistency related metrics\n if (keysSplitLength === 4 && REQUIRES_CONTRIBUTION_INSTEAD_OF_CHART.includes(key)) {\n continue;\n }\n\n if (keysSplitLength === 4) {\n datasetName = metadataSplit[2];\n attributeName = metadataSplit[metadataSplit.length - 1];\n toolTiptopHeader = attributeName;\n } else {\n datasetName = metadataSplit[2];\n toolTiptopHeader = datasetName;\n }\n if (chartDataValues[\"name\"] === \"Data Drift\") {\n let boxPlotData = {}\n let statistics = {}\n let quantile = chartDataValues[\"boxplot_data\"]\n if (quantile !== undefined && quantile !== null) {\n statistics[\"attribute_name\"] = attributeName\n statistics[\"quantile\"] = quantile\n statistics[\"drift_patterns\"] = chartDataValues[\"drift_patterns\"]\n statistics[\"time\"] = chartDataValues[\"time\"]\n if (attributeName !== null) {\n boxPlotData[\"chart_level\"] = \"Attribute\"\n } else {\n boxPlotData[\"chart_level\"] = \"Dataset\"\n }\n boxPlotData[\"statistics\"] = [statistics]\n chartDataValues[\"boxPlotData\"] = boxPlotData\n chartDataValues[\"chartType\"] = \"boxPlotZoomable\"\n }\n }\n if (attributeName !== null) {\n chartDataValues[\"attribute_name\"] = attributeName;\n }\n chartDataValues[\"datasetName\"] = datasetName;\n chartDataValues[\"toolTiptopHeader\"] = toolTiptopHeader;\n chartDataValues[\"data_set_id\"] = attributeKeysSplit[2];\n chartDataValues[\"errorChart\"] = true;\n chartDataValues[\"title\"] = `${metadataSplit.join(\" > \")} - ${chartDataValues.name}`;\n chartDataValues[\"data_source_name\"] = metadataSplit[1];\n chartDataValues[DQ_CHART_POINTS] = chartDataValues[\"value\"];\n\n let chartTypeData = getChartTypeForMonitorCharts(chartDataValues);\n chartDataValues[\"type\"] = chartTypeData.chartPatternType;\n let hasError = chartTypeData.hasError;\n chartDataValues[\"hasDrift\"] = hasError;\n\n // We are changing scale of all charts to min max scale\n // Part of fix for issue 1038\n chartDataValues[\"scale\"] = MIN_MAX_SCALE;\n\n normalizeChartData(chartDataValues, DQ_CHART_POINTS);\n let chartValues = chartDataValues[DQ_CHART_POINTS];\n let drift_len = chartValues.length;\n\n if (drift_len === 0) {\n continue;\n }\n\n if (drift_len > 1) {\n chartDataValues[\"error_percentage\"] = chartValues[(drift_len - 1)].toFixed(2);\n chartDataValues[\"last_error\"] = chartValues[(drift_len - 2)].toFixed(2);\n } else if (drift_len === 1) {\n chartDataValues[\"error_percentage\"] = chartValues[(drift_len - 1)].toFixed(2);\n chartDataValues[\"last_error\"] = chartValues[(drift_len - 1)].toFixed(2);\n } else {\n chartDataValues[\"error_percentage\"] = 0;\n chartDataValues[\"last_error\"] = 0;\n }\n\n\n }\n finalData = chartDataValues\n\n if (finalData !== null) {\n if (finalData[\"name\"] === \"Data Drift\") {\n finalData[\"boxPlotData\"] = filterBoxPlotData(finalData[\"boxPlotData\"])\n }\n filteredData = getChartFilterData(finalData, startDate, endDate)\n this.setState({ chartDatasetName: datasetName, chartAttributeName: attributeName })\n break\n }\n }\n\n\n if (finalData !== null) {\n break\n }\n }\n let result = { \"finalData\": finalData, \"filteredData\": filteredData }\n return result\n }\n\n closeIcon(){\n this.setState({ filterSearch: \"\", newData: {},isDataChanged: !this.state.isDataChanged, isTreeSearch: false, subString: null });\n }\n\n handleChange = event => {\n let filterSearch = event.target.value\n this.setState({ filterSearch: filterSearch });\n\n const lowerCasedFilter = filterSearch.toLowerCase();\n if (lowerCasedFilter.length === 0 || !lowerCasedFilter.trim()) {\n this.setState({\n newData: {},\n isDataChanged: !this.state.isDataChanged,\n isTreeSearch: false,\n subString: null\n });\n return;\n }\n\n if (lowerCasedFilter.length < 2) {\n // We have added this condition to allow search only when we entered one character\n this.setState({\n newData: {},\n isDataChanged: !this.state.isDataChanged,\n isTreeSearch: false,\n subString: null\n });\n return;\n }\n \n let autoCompleteData = this.props.autoCompleteData\n let nestedData = _.cloneDeep(this.props.originalData)\n let newData = {}\n let searchTextFound = false\n for(let i=0;i 0) {\n data = Object.values(this.state.newData)\n }else{\n data = this.state.data !== undefined && this.state.data !== null ? Object.values(this.state.data) : [];\n }\n\n let profileData = this.state.profileData;\n let keys = [\"avg\",\"min\",\"max\",\"std\"]\n if(profileData !== undefined && profileData !== null){\n for(let i=0;i(this.state.datasetIds.includes(x.data_set_id.toString())))\n for(let i=0;i
    \n
    \n
    \n
    \n

    Tree View

    \n \n
    \n {this.state.isRedirect && !(this.state.isTreeSearch) ?\n
    \n
    \n

    { this.props.searchCount} results

    \n
    \n {this.props.filteredData ? <>\n \n \n \n :\n \"\"\n }\n \n
    \n
    \n
    \n :\n
    \n \n \n \n \n \n \n \n
    \n }\n \n
      \n {data.length === 0 || (!this.state.searchTextFound && this.state.isTreeSearch) ?\n
      \n \n

      No matches found for your search

      \n
      \n :\n data.map(({ id, title, childNodes, type, isOpen, isShow }) => (\n \n ))}\n\n
    \n
    \n\n\n
    \n\n
    \n
    \n
    {/* If content gets overflow need to add overflow-hidden css */}\n
    \n
    \n {(!this.props.isNoResult && this.props.isSearchHappened) || (this.state.envName !== \"\" && this.state.envName !== undefined ) ? <>\n {this.state.sectionName === ENV_NAME ? \"\" : }\n {![ATTRIBUTE,ENV_NAME].includes(this.state.sectionName) ? <>
    \n

    \n Relationship\n

    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n

    : \"\"}\n {\n this.state.sectionName === ENV_NAME ?\n <>

    \n Description\n

    \n
    \n
    \n
    \n \n
    \n {this.state.datasourceCount}\n
    \n
    \n
    \n \n
    \n {this.state.datasetCount}\n
    \n
    \n
    \n \n
    \n {sizeData}\n
    \n
    \n
    \n
    : \"\"\n }\n {this.state.sectionName === ATTRIBUTE ? <>
    \n
    \n {this.state.distributionData !== null && this.state.isFetched ?\n }\n />\n :\n \n

    \n

    Data distribution is not available for the selected attribute name

    \n

    Please check after sometime.

    \n
    : }\n />\n }\n
    \n

    : \"\"}\n\n {this.state.sectionName === ENV_NAME ?\n (this.state.envTableData !== null ? <>
    }\n /> : <>
    \n }\n />)\n\n : <>
    \n
    \n }\n />\n
    \n
    \n }>\n 0 ? '' : this.state.datasetIds[0]}\n selectedIntegration={this.props.selectedIntegration}\n metricsOptions={this.state.metricsOptions}\n title=\"Attribute Drifts\"\n id=\"driftOnMetrics\"\n chartType=\"areaChart\"\n page=\"attribute\"\n widgetClass=\"qd-chartWidget m-0 border-0\"\n variant={this.state.variant}\n changeSource={this.changeSource}\n handleLoad={this.handleLoad}\n selectedMetrics={this.getDefaultSelectedMetrics()}\n chartTimeFilter={this.chartTimeFilter}\n dataSetName = {this.state.chartDatasetName !== undefined ? normalizeChildDatasetName(this.state.chartDatasetName) : normalizeChildDatasetName(this.state.datasetName)}\n attributeName = {this.state.chartAttributeName !== undefined ? normalizeAttributeName(this.state.chartAttributeName) : normalizeAttributeName(this.state.attributeName)}\n isAttribute = {true}\n showHeatMap={true}\n showSettingsMenu={false}\n yValue=\"Value\"\n xValue=\"Time\"\n isError={false}\n scale = {MIN_MAX_SCALE}\n hideDistanceFilter = {true}\n showAggregateError = {this.state.showAggregateError}\n showMetricError = {this.state.showMetricError}\n\n />\n \n : \n }\n />\n
    \n
    \n\n
    }\n />}\n :\n
    \n \n

    Search for your favourite thing or find similar results in the area.

    \n
    \n }\n
    \n
    \n
    \n \n \n);\n\n }\n}\n\nexport default DiscoverResults;\n\n\nclass Node extends React.Component {\n constructor(props) {\n super(props);\n let datasourceName = \"\";\n let datasourceId=null;\n let datasetName = \"\";\n let datasetId = null;\n let attributeName = \"\";\n let attributeId = null;\n let envId = null;\n let envName = \"\";\n\n if(props.type === DATASOURCE) {\n datasourceName = props.title;\n datasourceId = props.id;\n }else if(props.type === DATASET) {\n datasetName = props.title;\n datasetId = props.id;\n }else if(props.type === ATTRIBUTE){\n attributeName = props.title;\n attributeId = props.id;\n }else {\n envId = props.id\n envName = props.title\n }\n let highlightedClass = \"\"\n let listClassName = \"\"\n if(this.props.highlightedId === this.props.id && this.props.highlightedType === this.props.type) {\n highlightedClass = \"search-highlight-selected\"\n listClassName = \"active\"\n }\n\n this.state = {\n isOpen: this.props.isOpen && !this.props.isChanged,\n isShow: this.props.isShow,\n envName: envName === \"\" ? this.props.envName : envName,\n datasourceName: datasourceName === \"\" ? this.props.datasourceName : datasourceName,\n datasetName: datasetName === \"\" ? this.props.datasetName : datasetName,\n attributeName: attributeName,\n envId: envId === null ? this.props.envId : envId,\n highlightedId: this.props.highlightedId,\n highlightedType: this.props.highlightedType,\n datasourceId: datasourceId === null ? this.props.datasourceId : datasourceId,\n datasetId: datasetId === null ? this.props.datasetId : datasetId,\n attributeId: attributeId === null ? this.props.attributeId : attributeId,\n isChanged: false,\n listClassName: listClassName,\n highlightedClass: highlightedClass,\n };\n this.getIcon = this.getIcon.bind(this);\n this.renderNodeObject = this.renderNodeObject.bind(this);\n this.renderAttributeName = this.renderAttributeName.bind(this);\n }\n\n\n componentDidUpdate(prevProps){\n if(prevProps.highlightedId !== this.props.highlightedId) {\n this.setState({highlightedType: this.props.highlightedType, highlightedId: this.props.highlightedId});\n if(this.props.highlightedId === this.props.id && this.props.highlightedType === this.props.type) {\n this.setState({highlightedClass: \"search-highlight-selected\", listClassName: \"active\"});\n }else {\n this.setState({highlightedClass: \"\", listClassName: \"\"});\n }\n\n }\n }\n\n toggle = () => {\n let isOpen = this.props.isSearchHappened && !(this.state.isChanged) && [ENV_NAME, DATASOURCE].includes(this.state.type)\n if(isOpen) {\n this.setState({isOpen: false})\n }else{\n this.setState({\n isOpen: !this.state.isOpen,\n });\n }\n\n let isChanged = this.state.isChanged\n if(!isChanged) {\n this.setState({isChanged: true});\n }\n this.props.changeData(this.state.envName, this.state.datasourceName,\n this.state.datasetName, this.state.attributeName,\n this.state.envId, this.state.datasourceId,\n this.state.datasetId, this.state.attributeId, this.props.id, this.props.type)\n };\n\n\n getIcon(type) {\n if(type === ENV_NAME) {\n return faServer;\n }else if(type === DATASOURCE){\n return faDatabase;\n }else if(type === DATASET) {\n return faLayerGroup;\n }else {\n return faTag;\n }\n }\n getUlClassName(type) {\n let className = \"\"\n if(type === ENV_NAME) {\n className = this.state.isOpen || (this.props.isSearchHappened && !(this.state.isChanged)) ? \"nested tree_top-level active\" : \"nested\"\n }else if(type === DATASOURCE) {\n className = this.state.isOpen || (this.props.isSearchHappened && !(this.state.isChanged)) ? \"nested active\" : \"nested\"\n }else if(type === DATASET) {\n className = this.state.isOpen ? \"nested has-no-caret active\" : \"nested has-no-caret\"\n }\n return className;\n }\n getHighlightedText(text, highlight) {\n const parts = text.split(new RegExp(`(${highlight})`, 'gi'));\n return (parts.map((part, i) =>\n \n { part }\n )\n );\n }\n\n renderAttributeName(title, type) {\n let reqAttrText;\n let fqTooltipContent = null;\n if (this.props.subString) {\n reqAttrText = this.getHighlightedText(title, this.props.subString);\n } else {\n let shortNameData = getShortTitleForAttribute(title);\n fqTooltipContent = shortNameData[\"fqTooltipContent\"];\n if (fqTooltipContent === undefined || fqTooltipContent === null) {\n reqAttrText = title;\n } else {\n // Use short name instead of full attribute name\n reqAttrText = shortNameData[\"requiredName\"]\n }\n }\n\n let reqClass = this.state.isShow ? (this.state.highlightedClass !== \"\" ? this.state.highlightedClass : (this.props.subString ? \"\" : \"search-highlight1\")) : \"\"\n\n if (this.props.subString || fqTooltipContent === null) {\n // No need to show tooltip for attribute. \n return (\n \n \n \n {reqAttrText}\n \n );\n }\n\n return (\n <>\n\n \n }>\n \n \n \n \n\n }>\n {FQ_TOOLTIP_PLACEHOLDER}\n \n\n }>\n {reqAttrText}\n \n\n \n \n );\n }\n\n renderNodeObject(id, title, childNodes, type, isOpen, isShow) {\n if (isShow || !this.props.isRedirect || ([ENV_NAME, DATASOURCE].includes(type) && this.props.isSearchHappened && !(this.state.isChanged))) {\n\n let reqNodeMap = allNodeMap.get(type);\n let currNode = reqNodeMap.get(id);\n if (currNode !== undefined && currNode !== null){\n // Currently we will not reach here since setting new node to map is commented\n // reqNodeMap.set in the last line of this function before return statement \n return currNode;\n }\n\n let createdNode = (\n )\n\n // reqNodeMap.set(id, createdNode);\n return createdNode;\n\n }\n }\n\n render() {\n const { title, childNodes, type } = this.props;\n\n let ulClassName = this.getUlClassName(type);\n let childrenLength = childNodes.filter(x=>x.isShow === true)\n let uniqueId = `${this.state.envId}_${this.state.datasourceId}_${this.state.datasetId}_${this.state.attributeId}`;\n uniqueId = uniqueId.replace(undefined, \"_\")\n return (\n
  • \n {type !== ATTRIBUTE ? \n \n \n \n \n {this.props.subString ? \n this.getHighlightedText(title, this.props.subString): title}\n : \n\n this.renderAttributeName(title, type)\n \n }\n {((type !== ATTRIBUTE && (childrenLength.length > 0 || !this.props.isRedirect) && this.state.isOpen) || ([ENV_NAME, DATASOURCE].includes(type) && !(this.state.isChanged) && this.props.isSearchHappened)) && (\n
      \n {childNodes.map(({ id, title, childNodes, type, isOpen, isShow }) => (\n this.renderNodeObject(id, title, childNodes, type, isOpen, isShow)\n\n ))}\n
    \n )}\n
  • \n );\n }\n}\n\n","import React from 'react';\nimport Form from 'react-bootstrap/Form';\nimport Select from 'react-select';\nimport $ from 'jquery';\n\n\nclass DiscoverForm extends React.Component {\n constructor(props) {\n super(props);\n this.changeEnvironment = this.changeEnvironment.bind(this);\n this.changeDataSource = this.changeDataSource.bind(this);\n this.changeDataset = this.changeDataset.bind(this);\n this.changeAttribute = this.changeAttribute.bind(this);\n let environmentOptions = []\n let datasourceOptions = []\n let datasetOptions = []\n let attributeOptions = []\n let preSelectedDatasource = this.props.preSelectedDatasource\n let preSelectedEnv = this.props.preSelectedEnv\n let preSelectedDataset = this.props.preSelectedDataset\n let preSelectedAttribute = this.props.preSelectedAttribute\n let envId;\n let datasourceId;\n let datasetId;\n\n for(let [key, value] of Object.entries(this.props.nestedData)){\n environmentOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n let environment = this.props.envCount\n if(environment === null) {\n let filteredEnvironment = this.props.filterResultData.filter(value => {\n return value.type === \"Environment\";\n });\n environment = filteredEnvironment.length\n }else if(preSelectedEnv){\n envId = preSelectedEnv[\"value\"]\n let dataSources = this.props.nestedData[envId][\"childNodes\"]\n for(let [key, value] of Object.entries(dataSources)){\n datasourceOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n }\n let datasource = this.props.datasourceCount\n if(datasource === null){\n let filterDatasource = this.props.filterResultData.filter(value => {\n return value.type === \"Datasource\";\n });\n datasource = filterDatasource.length\n }else if(preSelectedDatasource) {\n datasourceId = preSelectedDatasource[\"value\"]\n let datasets = this.props.nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"]\n for(let [key, value] of Object.entries(datasets)){\n datasetOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n }\n let dataset = this.props.datasetCount\n if(dataset === null){\n let filteredDataset = this.props.filterResultData.filter(value => {\n return value.type === \"Dataset\";\n });\n dataset = filteredDataset.length\n\n }else if(preSelectedDataset){\n datasetId = preSelectedDataset[\"value\"]\n let attributes = this.props.nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"]\n for(let [key, value] of Object.entries(attributes)){\n attributeOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n }\n let attribute = this.props.attributeCount\n if(attribute === null) {\n let filteredAttribute = this.props.filterResultData.filter(value => {\n return value.type === \"Attribute\";\n });\n attribute = filteredAttribute.length\n }\n\n\n this.state={\n environmentOptions:environmentOptions,\n datasetOptions: datasetOptions,\n datasourceOptions: datasourceOptions,\n attributeOptions: attributeOptions,\n selectedDatasource: preSelectedDatasource,\n selectedDataset: preSelectedDataset,\n selectedAttribute: preSelectedAttribute,\n selectedEnv: preSelectedEnv,\n totalenvironment:environment,\n totaldataset:dataset,\n totaldatasource:datasource,\n totalattibute:attribute\n }\n }\n\n changeEnvironment(event) {\n let envId = event.value;\n let dataSources = this.props.nestedData[envId]\n\n let datasourceOptions = []\n if(dataSources !== undefined){\n dataSources = dataSources[\"childNodes\"]\n for(let [key, value] of Object.entries(dataSources)){\n datasourceOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n this.props.applyFilter(\"Environment\", event);\n\n\n\n let datasource = this.props.filterResultData.filter(value => {\n return value.type === \"Datasource\" && value.envId.toLowerCase().slice(0, envId) === envId;\n });\n let dataset = this.props.filterResultData.filter(value => {\n return value.type === \"Dataset\" && value.envId.toLowerCase().slice(0, envId) === envId;\n });\n let attribute = this.props.filterResultData.filter(value => {\n return value.type === \"Attribute\" && value.envId.toLowerCase().slice(0, envId) === envId;\n });\n this.props.changeCount(1, datasource.length, dataset.length, attribute.length)\n\n this.setState({datasourceOptions: datasourceOptions,\n selectedDatasource: null,\n selectedDataset: null,\n selectedAttribute: null,\n datasetOptions: [],\n attributeOptions: [],\n selectedEnv: event,\n totalenvironment: 1,\n totaldataset:dataset.length,\n totaldatasource:datasource.length,\n totalattibute:attribute.length\n });\n }\n $(\"#filtericon\").hide();\n $(\".filter-count\").html(1);\n $(\".filter-count\").show();\n $(\"#btn-filter\").addClass(\"active\");\n }\n changeDataSource(event) {\n let envId = this.state.selectedEnv.value;\n let datasourceId = event.value;\n let datasetOptions = []\n let datasets = this.props.nestedData[envId][\"childNodes\"][datasourceId]\n if(datasets !== undefined) {\n datasets = datasets[\"childNodes\"]\n for(let [key, value] of Object.entries(datasets)){\n datasetOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n this.props.applyFilter(\"Datasource\", this.state.selectedEnv, event)\n \n let dataset = this.props.filterResultData.filter(value => {\n return value.type === \"Dataset\" && value.datasourceId.toLowerCase().slice(0, datasourceId) === datasourceId;\n });\n let attribute = this.props.filterResultData.filter(value => {\n return value.type === \"Attribute\" && value.datasourceId.toLowerCase().slice(0, datasourceId) === datasourceId;\n });\n\n this.props.changeCount(1, 1, dataset.length, attribute.length)\n this.setState({datasetOptions: datasetOptions,\n selectedDatasource: event,\n selectedDataset: null,\n attributeOptions: [],\n selectedAttribute: null,\n totaldataset:dataset.length,\n totaldatasource: 1,\n totalattibute:attribute.length\n })\n }\n $(\".filter-count\").html(2);\n\n }\n changeDataset(event) {\n \n let envId = this.state.selectedEnv.value;\n let datasourceId = this.state.selectedDatasource.value;\n let datasetId = event.value;\n let attributeOptions = []\n let datasets = this.props.nestedData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId]\n if(datasets !== undefined) {\n datasets = datasets[\"childNodes\"]\n for(let [key, value] of Object.entries(datasets)){\n attributeOptions.push({\"label\": value[\"title\"], \"value\": key});\n }\n this.props.applyFilter(\"Dataset\", this.state.selectedEnv, this.state.selectedDatasource, event)\n\n\n let attribute = this.props.filterResultData.filter(value => {\n return value.type === \"Attribute\" && value.datasetId.toLowerCase().slice(0, datasetId) === datasetId;\n });\n this.props.changeCount(1, 1, 1, attribute.length)\n\n this.setState({attributeOptions: attributeOptions,\n selectedDataset: event,\n selectedAttribute: null,\n totaldataset:1,\n totalattibute:attribute.length\n })\n }\n $(\".filter-count\").html(3);\n\n }\n changeAttribute(event) {\n this.props.applyFilter(\"Attribute\", this.state.selectedEnv, this.state.selectedDatasource, this.state.selectedDataset, event)\n this.setState({selectedAttribute: event, totalattibute:1});\n this.props.changeCount(1, 1, 1, 1)\n $(\".filter-count\").html(4);\n this.props.closeAdvancedFilter();\n }\n\n \n render() {\n return(<>
    \n
    \n

    Advanced search

    \n \n
    \n \n Environment :\n label.includes(query)}\n id=\"datasource\"\n options={this.state.datasourceOptions}\n onChange={this.changeDataSource}\n placeholder=\"Select Datasource\"\n classNamePrefix='select-control'\n value={this.state.selectedDatasource}\n />\n \n \n Dataset :\n label.includes(query)}\n id=\"attribute\"\n onChange={this.changeAttribute}\n options={this.state.attributeOptions}\n placeholder=\"Select Attributes\"\n classNamePrefix='select-control'\n value={this.state.selectedAttribute}\n />\n \n
    \n
    \n
    \n
      \n
    1. {this.state.totalenvironment} Environment
    2. \n
    3. {this.state.totaldatasource} Datasource
    4. \n
    5. {this.state.totaldataset} Dataset
    6. \n
    7. {this.state.totalattibute} Attributes
    8. \n
    \n
    );\n\n\n\n\n }\n}\n\nexport default DiscoverForm;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","import React from 'react';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport {CopyRightsFooter} from '../components/copyrights';\nimport { getApi, postUIlogs, postRecentSearch } from \"../utils/event_handling\";\nimport $ from 'jquery';\nimport ErrorHandler from '../components/error_500';\nimport BasicPortlet from '../components/basicPortlet';\nimport DiscoverResults from './discoverResults';\nimport DiscoverForm from './discoverForm';\nimport {connect} from \"react-redux\";\nimport Autosuggest from 'react-autosuggest';\nimport './react-autosuggest.css';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faClock} from '@fortawesome/free-regular-svg-icons';\nimport { faServer,faDatabase,faTag} from '@fortawesome/free-solid-svg-icons';\nimport { faLayerGroup, faExclamation, faCodeBranch} from '@fortawesome/free-solid-svg-icons';\nimport _ from 'lodash';\nimport {\n addRecentHistory, fetchLastRefreshOfDatasets,\n storeDiscoverPageDataForDataSrc\n} from \"../redux/actions\";\nimport RcTooltip from 'rc-tooltip';\n//import OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport { createBrowserHistory } from \"history\";\nimport { Scrollbars } from 'react-custom-scrollbars';\nimport {getFeatureAccess, checkSessionForRedirection} from \"../utils/common_utils\";\nimport {IS_NONE_CHECK, SKIP_SUGGESTION_RENDER} from \"../utils/constant\";\nimport {\n normalizeAttributeName,\n METADATA_MAP_KEY_SEPARATOR,\n METADATA_MAP_VALUE_SEPARATOR,\n normalizeChildDatasetName\n} from '../utils/attribute_name_utils';\n\n\n\n// Teach Autosuggest how to calculate suggestions for any given input value.\n// const getSuggestions = value => {\n// const inputValue = value.trim().toLowerCase();\n// const inputLength = inputValue.length;\n\n// return inputLength === 0 ? [] : languages.filter(lang =>\n// lang.name.toLowerCase().slice(0, inputLength) === inputValue\n// );\n// };\nvar totalSearchList = 0;\nconst formatMultiSection = (searchStr,data) => {\n\n const inputValue = searchStr.trim().toLowerCase();\n let environment = data.filter(value => {\n return value.type === \"Environment\" && value.name.toLowerCase().includes(inputValue);\n });\n\n let datasource = data.filter(value => {\n return value.type === \"Datasource\" && value.name.toLowerCase().includes(inputValue);\n });\n\n\n\n let dataset = data.filter(value => {\n return value.type === \"Dataset\" && value.name.toLowerCase().includes(inputValue);\n });\n\n let attribute = data.filter(value => {\n return value.type === \"Attribute\" && value.name.toLowerCase().includes(inputValue);\n });\n\n let recentSearch = []\n if(searchStr.trim() === \"\" ) {\n recentSearch = data.filter(value => {\n return value.type === \"Recent\";\n });\n }\n\n\n\nlet envObj = {\n type: \"Environment\",\n results: environment\n};\n\nlet datasourceObj = {\n type: \"Datasource\",\n results: datasource\n};\n\nlet datasetObj = {\n type: \"Dataset\",\n results: dataset\n};\n\nlet attributeObj = {\n type: \"Attribute\",\n results: attribute\n};\n\nlet recentSearchObj = {\n type: \"Recent\",\n results: recentSearch\n};\n\nlet suggestions = [];\n\nif (recentSearchObj.results.length > 0) {\n suggestions.push(recentSearchObj);\n}\n\n//let envlen = envObj.results.length;\n\nif(envObj.results.length > 0) {\n suggestions.push(envObj);\n}\n\nif (datasourceObj.results.length > 0) {\n suggestions.push(datasourceObj);\n}\n\nif (datasetObj.results.length > 0) {\n suggestions.push(datasetObj);\n}\n\nif (attributeObj.results.length > 0) {\n suggestions.push(attributeObj);\n}\n\ntotalSearchList = envObj.results.length+datasourceObj.results.length+datasetObj.results.length+attributeObj.results.length;\n return suggestions;\n};\n\n\n$(\"body\").on(\"click\",\".btn-clear\", function(){\n $(\".qd_search-box\").removeClass(\"has-btn-close\")\n});\n\n$(\"body\").on(\"keyup\",\".react-autosuggest__input\", function(){\n if($(this).val() !== \"\"){\n $(\".qd_search-box\").addClass(\"has-btn-close\")\n\n }else {\n $(\".qd_search-box\").removeClass(\"has-btn-close\")\n //$(\".qd_search-box\").removeClass(\"is-focused\");\n $(\".qd_search-box\").removeClass(\"ad-filter-open\");\n let countId = document.getElementById(\".filter-count\")\n if(!countId){\n $(\"#btn-filter\").removeClass(\"active\");\n }\n }\n $(\".filter-count\").hide();\n $(\"#btn-filter\").removeClass(\"active\");\n $(\".qd_search-box\").removeClass(\"ad-filter-open\");\n $(\".qd_search-box\").addClass(\"is-focused\");\n\n});\n\n$(document).on(\"click\", \".datalink\", function(e) {\n if(document.getElementById($(this).attr(\"data-link\"))!==null){\n document.getElementById($(this).attr(\"data-link\")).scrollIntoView();\n }\n});\n\n\nfunction shouldRenderSuggestions(value, reason) {\n if (SKIP_SUGGESTION_RENDER.includes(reason)) {\n return false;\n }\n\n return value.trim().length > 2;\n}\n\n\nfunction renderSuggestionsContainer({ containerProps, children, query }) {\n if (children === null && query === \"\") {\n return null;\n }\n\n if (children === null && query !== \"\") {\n return (
    \n
    \n
    \n

    Environment

    \n

    No results were found

    \n
    \n
    \n

    Datasource

    \n

    No results were found

    \n
    \n
    \n

    Dataset

    \n

    No results were found

    \n
    \n
    \n

    Attribute

    \n

    No results were found

    \n
    \n
    \n
    )\n }\n\n // Children is not null. Query string is empty\n if (query.trim() === \"\") {\n let checkRecent = children[0].props.children[0].props.section.results.filter(x => x.type === \"Recent\")\n if (checkRecent.length === 0) {\n return \"\"\n }\n }\n\n // Children is not null. Query string is also not empty\n let recentFlag = \"\";\n let environmentFlag = \"\";\n let datasourceFlag = \"\";\n let datasetFlag = \"\";\n let attributeFlag = \"\";\n\n let environmentFlaglen = 0;\n let datasourceFlaglen = 0;\n let datasetFlaglen = 0;\n let attributeFlaglen = 0;\n\n\n children.map((item, i) => {\n\n if (item.props.children[0].props.section.results[0]['type'] === \"Recent\" && query.trim() === \"\") {\n recentFlag = i;\n }\n if (item.props.children[0].props.section.results[0]['type'] === \"Environment\") {\n environmentFlag = i;\n environmentFlaglen = item.props.children[0].props.section.results.length;\n environmentFlaglen = environmentFlaglen > 6 ? 168 : 28 * environmentFlaglen\n }\n if (item.props.children[0].props.section.results[0]['type'] === \"Datasource\") {\n datasourceFlag = i;\n datasourceFlaglen = item.props.children[0].props.section.results.length;\n datasourceFlaglen = datasourceFlaglen > 6 ? 168 : 28 * datasourceFlaglen\n\n }\n if (item.props.children[0].props.section.results[0]['type'] === \"Dataset\") {\n datasetFlag = i;\n datasetFlaglen = item.props.children[0].props.section.results.length;\n datasetFlaglen = datasetFlaglen > 6 ? 168 : 28 * datasetFlaglen\n\n }\n if (item.props.children[0].props.section.results[0]['type'] === \"Attribute\") {\n attributeFlag = i;\n attributeFlaglen = item.props.children[0].props.section.results.length;\n attributeFlaglen = attributeFlaglen > 6 ? 168 : 28 * attributeFlaglen\n\n }\n return 1;\n }\n );\n $(\".qd_search-box\").removeClass(\"ad-filter-open\");\n $(\".qd_search-box\").addClass(\"is-focused\");\n\n\n return (\n
    \n
    \n {recentFlag !== \"\" && query === \"\" ?
    \n

    Recent Searches:

    \n
    {children[recentFlag]}
    \n
    : \"\"}\n {query !== \"\" ? <>
    \n

    Environment

    \n\n {environmentFlag !== \"\" ? (\n \n
    {children[environmentFlag]}
    \n
    \n ) : (\n

    No results were found

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

    Datasource

    \n\n {datasourceFlag !== \"\" ? (\n \n
    {children[datasourceFlag]}
    \n
    \n ) : (\n

    No results were found

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

    Dataset

    \n\n\n {datasetFlag !== \"\" ? (\n \n
    {children[datasetFlag]}
    \n
    \n ) : (\n

    No results were found

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

    Attribute

    \n\n {attributeFlag !== \"\" ? (\n \n
    {children[attributeFlag]}
    \n
    \n ) : (\n

    No results were found

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

    {totalSearchList} Search Results

    \n
    : \"\"}\n
    \n\n
    \n );\n\n}\n\n\n\n//const getSuggestions = (value,autoCompleteData) => {\n// const inputValue = value.trim().toLowerCase();\n// const inputLength = inputValue.length;\n//\n// return inputLength === 0 ? [] : autoCompleteData.filter(lang =>\n// lang.name.toLowerCase().slice(0, inputLength) === inputValue\n// );\n//};\n\n\n\nconst renderSectionTitle = section => {\n // return (\n // //
    \n // //
    \n // //
    \n // // {section.type}\n // //
    \n // //
    \n // //

    {section.type}

    \n // //
    \n // );\n\n};\n\n\n\n// When suggestion is clicked, Autosuggest needs to populate the input\n// based on the clicked suggestion. Teach Autosuggest how to calculate the\n// input value for every given suggestion.\nconst getSuggestionValue = suggestion => suggestion.name;\n\n// Use your imagination to render suggestions.\n//const renderSuggestion1 = suggestion => (\n//
    \n// {suggestion.name}\n//
    \n//);\n\nconst getSectionSuggestions = section => {\n return section.results;\n};\n\nlet openflag = false;\n$(document).on('click', function(e) {\n var container = $(\".qd_search-filter-form\");\n var btnfilter = $(\"#btn-filter\");\n if ((!$(e.target).closest(container).length) && (!$(e.target).closest(btnfilter).length)) {\n $(\".qd_search-filter-rst\").removeClass(\"d-block\")\n $(\".qd_search-box\").removeClass(\"ad-filter-open\");\n var modelView = $(\".react-autosuggest__suggestions-container--open\")\n if(modelView.length === 0){\n $(\".qd_search-box\").removeClass(\"is-focused\");\n }\n if ($('.filter-count').css('display') === 'none') {\n $(\"#btn-filter\").removeClass(\"active\");\n }\n openflag = true;\n }\n});\n\nclass Discover extends React.Component {\n\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.postRecentSearch = postRecentSearch.bind(this);\n this.applyFilter = this.applyFilter.bind(this);\n this.changeCount = this.changeCount.bind(this);\n this.closeAdvancedFilter = this.closeAdvancedFilter.bind(this);\n this.handleSelected = this.handleSelected.bind(this);\n this.renderSuggestionsContainer = renderSuggestionsContainer.bind(this);\n this.onSuggestionsFetchRequested = this.onSuggestionsFetchRequested.bind(this);\n this.onSuggestionsFetchRequested = this.onSuggestionsFetchRequested.bind(this);\n this.renderSuggestion = this.renderSuggestion.bind(this);\n this.handleAdvancedFilter = this.handleAdvancedFilter.bind(this);\n this.convertData = this.convertData.bind(this);\n this.clearSearch = this.clearSearch.bind(this);\n let searchText = \"\"\n if(props.location.state !== undefined) {\n searchText = props.location.state[\"search_text\"]\n const history = createBrowserHistory();\n let state = { ...history.location.state };\n delete state.transaction;\n history.replace({ ...history.location, state });\n }\n\n this.state={\n nestedData: {},\n newData: {},\n showTreeView: false,\n initialSelection: {},\n isSearchHappened: false,\n errorOccurred: false,\n autoCompleteData: [],\n subString: null,\n searchCount: 0,\n fullData: [],\n isFilterOpen: false,\n isNoResult: false,\n searchText: searchText,\n filteredData: [],\n isRedirect: false,\n value: searchText,\n suggestions: [],\n preSelectedEnv: null,\n preSelectedDataset: null,\n preSelectedDatasource: null,\n preSelectedAttribute: null,\n envCount: null,\n datasourceCount: null,\n datasetCount: null,\n attributeCount: null,\n }\n }\n\n closeAdvancedFilter() {\n\n this.setState({isFilterOpen: false})\n // this.setState({value: \"\"});\n // $(\"#filter-count\").hide();\n // $(\".filtericon\").show();\n openflag = false\n if(this.state.envCount === null) {\n $(\"#btn-filter\").removeClass(\"active\");\n }\n\n $(\".qd_search-box\").removeClass(\"ad-filter-open\");\n }\n\n\n\n handleAdvancedFilter(){\n let isFilterOpen = !this.state.isFilterOpen\n if(isFilterOpen || openflag) {\n this.setState({value: \"\"});\n if(openflag){\n $(\".qd_search-filter-rst\").addClass(\"d-block\")\n this.setState({isFilterOpen: true})\n openflag = false\n }else {\n this.setState({isFilterOpen: isFilterOpen})\n }\n $(\"#filter-count\").hide();\n $(\"#btn-filter\").addClass(\"active\");\n $(\".qd_search-box\").addClass(\"ad-filter-open\");\n }else {\n $(\".qd_search-box\").removeClass(\"ad-filter-open\");\n this.setState({isFilterOpen: false});\n\n if(this.state.envCount === null) {\n $(\"#btn-filter\").removeClass(\"active\");\n }\n\n\n }\n }\n\n \n\n // Auto Complete\n onChange = (event, { newValue }) => {\n\n this.setState({\n value: newValue\n });\n };\n\n \n // Autosuggest will call this function every time you need to update suggestions.\n // You already implemented this logic above, so just use it.\n onSuggestionsFetchRequested = ({ value }) => {\n //suggestions: getSuggestions(value,this.state.autoCompleteData)\n this.setState({\n suggestions: formatMultiSection(value,this.state.autoCompleteData)\n });\n\n };\n\n renderSuggestion(suggestion, { query }) {\n this.setState({ isFilterOpen: false })\n const suggestionText = suggestion.name;\n let uniqueKey = `${suggestion.envId}_${suggestion.datasourceId}_${suggestion.datasetId}_${suggestion.attributeId}`\n uniqueKey = uniqueKey.replace(undefined, \"_\")\n let icon = '';\n let connectionIcon = '';\n let path = '';\n switch (suggestion.type) {\n case \"Recent\":\n icon = '';\n break;\n case \"Environment\":\n icon = faServer;\n connectionIcon = '';\n path = suggestion.name;\n break;\n case \"Datasource\":\n icon = faDatabase;\n connectionIcon = suggestion.envName;\n path = suggestion.envName + \"/\" + suggestion.name;\n break;\n case \"Dataset\":\n icon = faLayerGroup;\n connectionIcon = suggestion.datasourceName;\n path = suggestion.envName + \"/\" + suggestion.datasourceName + \"/\" + suggestion.name;\n break;\n case \"Attribute\":\n icon = faTag;\n connectionIcon = suggestion.datasetName;\n path = suggestion.envName + \"/\" + suggestion.datasourceName + \"/\" + suggestion.datasetName + \"/\" + suggestion.name;\n break;\n default:\n icon = '';\n connectionIcon = '';\n break;\n }\n\n // Handle recency section here and return corresponding component\n if (suggestion.type === \"Recent\") {\n return (\n
    \n

    \n  \n {this.getHighlightedText(suggestionText, query)}\n \n

    \n
    \n );\n }\n\n const renderTooltipText = (props) => (\n \n {path}\n \n );\n\n return (\n
    \n\n
    \n
    \n
    }\n >\n
    \n \n {this.getHighlightedText(suggestionText, query)}\n
    \n \n
    \n \n \n {connectionIcon.length > 0\n ?\n
    }\n >\n \n {connectionIcon}\n \n \n : ''\n }\n\n \n\n \n );\n\n }\n \n getHighlightedText(text, highlight) {\n const parts = text.split(new RegExp(`(${highlight})`, 'gi'));\n return( parts.map((part, i) =>\n \n { part.toLowerCase() === highlight.toLowerCase() ? {part} : part }\n )\n );\n }\n\n changeCount(envCount,datasourceCount, datasetCount, attributeCount){\n this.setState({envCount: envCount, datasourceCount:datasourceCount,\n datasetCount: datasetCount, attributeCount:attributeCount})\n openflag = true\n }\n\n\n applyFilter(type, envOption=null, datasourceOption=null, datasetOption=null, attributeOption=null) {\n let nestedData = _.cloneDeep(this.state.nestedData)\n let newData = {}\n let initialSelection = {\"type\": type}\n let envId = null\n let envName = null\n let datasourceId = null\n let datasourceName = null\n let datasetId = null\n let datasetName = null\n let attributeId = null\n let attributeName = null\n if(envOption !== null) {\n envId = envOption.value;\n envName = envOption.label;\n initialSelection[\"envId\"] = envId\n initialSelection[\"envName\"] = envName\n newData[envId] = nestedData[envId]\n if(type === \"Environment\") {\n newData[envId][\"isShow\"] = true\n }\n newData[envId][\"isOpen\"] = true\n }\n if(datasourceOption !== null) {\n datasourceId = datasourceOption.value;\n datasourceName = datasourceOption.label;\n initialSelection[\"datasourceId\"] = datasourceId\n initialSelection[\"datasourceName\"] = datasourceName\n if(type === \"Datasource\") {\n newData[envId][\"childNodes\"][datasourceId][\"isShow\"] = true\n }\n newData[envId][\"childNodes\"][datasourceId][\"isOpen\"] = true\n }\n if(datasetOption !== null) {\n datasetId = datasetOption.value;\n datasetName = datasetOption.label;\n initialSelection[\"datasetId\"] = datasetId\n initialSelection[\"datasetName\"] = datasetName\n if(type === \"Dataset\") {\n newData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"isShow\"] = true\n }\n newData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"isOpen\"] = true\n }\n if(attributeOption !== null) {\n attributeId = attributeOption.value;\n attributeName = attributeOption.label;\n initialSelection[\"attributeId\"] = attributeId\n initialSelection[\"attributeName\"] = attributeName\n newData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"][attributeId][\"isOpen\"] = true\n newData[envId][\"childNodes\"][datasourceId][\"childNodes\"][datasetId][\"childNodes\"][attributeId][\"isShow\"] = true\n }\n\n this.setState({newData: newData,\n initialSelection: initialSelection,\n isSearchHappened: true, searchText: \"\",\n preSelectedAttribute: attributeOption, preSelectedDataset: datasetOption,\n preSelectedDatasource: datasourceOption, preSelectedEnv: envOption});\n }\n handleSelected = (event, data) => {\n let name = data.suggestion.name\n let type = data.suggestion.type\n if(name === \"\") {\n return\n }\n let initialSelection = data.suggestion\n $(\".qd_search-box\").addClass(\"has-btn-close\")\n if(type === \"Recent\"){\n return\n }\n $(\".filter-count\").hide();\n $(\"#filtericon\").show();\n $(\"#btn-filter\").removeClass(\"active\");\n $(\".qd_search-box\").removeClass(\"is-focused\");\n\n this.setState({isRedirect: false, preSelectedEnv: null,preSelectedDatasource: null,\n preSelectedDataset: null, preSelectedAttribute: null, envCount: null,\n datasourceCount: null, datasetCount: null, attributeCount: null, subString: null});\n\n this.setState({value: \"\"});\n $(\".qd_search-box\").removeClass(\"has-btn-close\")\n this.convertData(initialSelection, this.state.fullData, this.state.nestedData, name, false)\n }\n\n convertData(initialSelection, fullData, nestedData, searchText, isRedirect){\n\n let filteredData = [];\n let searchCount = 0;\n let name;\n if(initialSelection === null) {\n filteredData = fullData.filter(x=>(x.name.includes(searchText) && x.type !== \"Recent\"))\n searchCount = filteredData.length\n if(filteredData.length === 0) {\n this.setState({newData: {},\n isSearchHappened: true,\n isRedirect: isRedirect,\n isNoResult: true,\n searchText: searchText});\n return\n }\n initialSelection = filteredData[0]\n name = initialSelection[\"name\"]\n }else {\n if(initialSelection.type === \"Recent\") {\n filteredData = fullData.filter(x=>(x.name === searchText && x.type !== \"Recent\"))\n initialSelection = filteredData[0]\n }else {\n filteredData = fullData.filter(x=>x.name === initialSelection.name && x.id === initialSelection.id && x.type === initialSelection.type)\n }\n name = searchText\n }\n if(initialSelection.type === \"Datasource\") {\n initialSelection[\"datasourceName\"] = name\n }else if(initialSelection.type === \"Dataset\") {\n initialSelection[\"datasetName\"] = name\n }else if(initialSelection.type === \"Attribute\") {\n initialSelection[\"attributeName\"] = name\n }else if(initialSelection.type === \"Environment\") {\n initialSelection[\"envName\"] = name\n }\n let newData = {}\n nestedData = _.cloneDeep(nestedData)\n\n for(let i=0;i {\n\n this.setState({\n suggestions: [],\n });\n };\n // End Auto Complete \n\n componentDidMount() {\n checkSessionForRedirection()\n if(this.props.dataModule.datasetLastProcessInfoOver === false) {\n this.getApi(\"fetchDatasourceChartData\");\n\n // Get Dataset Last processed time from API \n this.getApi(\"fetchDatasetRefreshInfo\");\n }\n\n this.getData();\n\n }\n\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n componentDidUpdate(prevProps){\n if(prevProps.dataModule.metaData !== this.props.dataModule.metaData) {\n this.getData();\n }\n }\n\n getData() {\n let metaData = this.props.dataModule.metaData\n let nestedData = {}\n let fullData = []\n let envId = null\n let datasourceId = null\n let datasetId = null\n let prevEnvId = null\n let prevDatasourceId = null\n let prevDatasetId = null\n let attributeId = null\n let recentSearchData = this.props.dataModule.recentHistory\n for(let i=0;ia.findIndex(t=>(t.name === v.name && t.type===v.type))===i)\n\n this.setState({nestedData: nestedData,\n autoCompleteData: fullData,\n fullData: fullData,\n subString: subString,\n metaData: metaData\n });\n\n }\n\n\n clearSearch() {\n $(\".qd_search-box\").removeClass(\"is-focused\");\n this.setState({newData: {},\n searchText: \"\",\n subString: null, value: \"\",\n isNoResult: false,\n searchCount: 0, isRedirect: false, isSearchHappened: false, initialSelection: {}})\n }\n\n\n\n\n\n\n render() {\n if ([false].includes(this.props.dataModule.datasetLastProcessInfoOver)) {\n return \"\";\n }\n\n let datasourceData = this.props.dataModule.discoverPageDataSource;\n // if (this.props.monitorModule.recencyPreview !== undefined) {\n // datasourceData[\"Data Timeliness\"] = this.props.monitorModule.recencyPreview.data;\n // }\n const { value, suggestions } = this.state;\n\n // Autosuggest will pass through all these props to the input.\n const inputProps = {\n placeholder: 'Search for any thing! Just start typing...',\n value,\n onChange: this.onChange,\n };\n\n const featureAccess = getFeatureAccess();\n let enableDiscoveryTab = false;\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const discoverTab = featureAccess[\"discover\"];\n enableDiscoveryTab = discoverTab === true;\n }\n\n return (\n this.state.errorOccurred ?\n \n :enableDiscoveryTab?\n <>\n \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n {this.state.value.trim() !== \"\" ? : \"\"}\n
    \n or\n
    \n
    \n \n
    \n
    \n\n\n
    \n {this.state.isFilterOpen ? \n : \"\"}\n
    \n
    \n \n }\n />\n
    \n
    \n
    \n
    \n \n \n :<>\n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, {\n addRecentHistory,\n fetchLastRefreshOfDatasets,\n storeDiscoverPageDataForDataSrc\n})(Discover);\n","import React from 'react';\nimport { browserHistory} from 'react-router';\nimport BreadCrumb from '../components/breadCrumb';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Nav from 'react-bootstrap/Nav';\nimport Image from '../components/image';\nimport Tab from 'react-bootstrap/Tab';\nimport { faArrowRight } from '@fortawesome/free-solid-svg-icons';\nimport { SimpleHeader } from './navigationHeader';\nimport {getFeatureAccess} from \"../utils/common_utils\";\nimport {CopyRightsFooter} from './copyrights';\nimport {Mediakind} from \"./mediaKind\"\nimport {CONFIGURE_DATA_SOURCE_URL, CONFIGURE_MODEL_URL, PIPELINE_CHANNEL_URL, MONITOR_MODEL_URL, MONITOR_DATA_URL,\n PROFILE_DATA_URL, PROFILE_MODEL_URL, NOTIFICATION_URL, DATA_QUALITY_URL, MONITOR_MODEL_PERFORMANCE_URL, IS_NONE_CHECK} from \"../utils/constant\";\n\nclass QuickStart extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleTab = this.handleTab.bind(this);\n this.state={\n current_tab:\"quick_start\",\n featureAccess: getFeatureAccess()\n }\n }\n\n\n renderVideoContent(value, DEPLOYED_ENVIRONMENT){\n let quick_start_message=\"Learn how to setup a datasource and a model to start monitoring the performance metrics.\";\n let setup_alert_message=\"Learn how to create custom data quality and model metrics and custom queries for your alert.\";\n if(DEPLOYED_ENVIRONMENT === \"managed_service\"){\n quick_start_message=\"Learn how to setup a datasource to start monitoring the performance metrics.\";\n setup_alert_message=\"Learn how to create custom data quality and custom queries for your alert.\";\n }\n switch(value){\n case \"quick_start\":\n return(\n
    \n

    Quick Start Video Tutorial

    \n

    Watch this short video tutorial to quickly start using Qualdo™

    \n

    {quick_start_message}

    \n
    \n \n
    \n
    \n );\n case \"host_tab\":\n return(\n
    \n

    Configure a Datasource

    \n

    Watch this short video tutorial to configure datasource

    \n

    Learn how to add and organize datasources for Qualdo™ to start monitoring for data quality issues and metrics.

    \n
    \n \n
    \n
    \n );\n case \"dashboard_creation\":\n return (\n
    \n

    Configure a Model

    \n

    Watch this short video tutorial to configure Models

    \n

    Learn how to add and organize models within Qualdo™ to start monitoring for performance issues and metrics.\n View this tutorial to configure training, test and serving data of your model.

    \n
    \n \n
    \n
    \n );\n\n case \"moniter_creation\":\n return (\n
    \n

    Profile a Datasource

    \n

    Watch this short video tutorial to profile datasources and datasets.

    \n

    Learn how to profile different datasources for various data quality metrics.\n View this tutorial to understand data relationships, completeness, accuracy, timeliness, conformity and consistency.

    \n
    \n \n
    \n
    \n );\n\n case \"invite_team_mates\":\n return(\n
    \n

    Profile a Model

    \n

    Watch this short video tutorial to profile the configured models.

    \n

    Learn how to profile multiple models for various performance metrics.\n View this tutorial to quickly understand model drifts and performance metrics.

    \n
    \n \n
    \n
    );\n case \"install_integration\":\n return (\n
    \n

    Monitor DQ Metrics

    \n

    Watch this short video tutorial to monitor data quality issues and metrics.

    \n

    Learn how to monitor data issues, data quality errors and data quality performance of multiple datasources.

    \n
    \n \n
    \n
    );\n\n case \"overview_video\":\n return(\n
    \n

    Monitor Model Metrics

    \n

    Watch this short video tutorial to monitor model issues and metrics.

    \n

    Learn how to monitor model issues, errors and model performance metrics.

    \n
    \n \n
    \n
    );\n case \"model_performance_monitoring\":\n return(\n
    \n

    Monitor Model Performance Metrics

    \n

    Watch this short video tutorial to monitor model performance issues and metrics.

    \n

    Learn how to monitor model performance issues, errors and model performance metrics.

    \n
    \n \n
    \n
    );\n case \"setup_notification\":\n return(\n
    \n

    Setup a notification

    \n

    Watch this short video tutorial to setup notifications from Qualdo™.

    \n

    Learn how to send notifications to email and slack or any other medium of your choice.

    \n
    \n \n
    \n
    );\n case \"pipeline_trigger\":\n return(\n
    \n

    Setup a Pipeline Trigger

    \n

    Watch this short video tutorial to setup triggers from Qualdo™.

    \n

    Learn how to setup triggers for webhooks or a pipeline tech-stack of your choice.

    \n
    \n \n
    \n
    );\n case \"setup_alert\":\n return(\n
    \n

    Setup an Alert

    \n

    Watch this short video tutorial to setup custom metrics and alerts.

    \n

    {setup_alert_message}

    \n
    \n \n
    \n
    );\n default:\n break;\n }\n }\n\n handleTab(key) {\n this.setState ({current_tab: key});\n }\n\n render() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n\n let hideModelInfo = true;\n let skip_setup = false;\n let showMessage = \"Congratulations! You have successfully configured your first datasource. Start monitoring datasources and models.\";\n let buttonIconName = \"Start Monitoring\";\n let redirectLink = \"/setup-monitor\";\n let showLogo = \"success\"\n let topMessage = \"Your setup is complete!\"\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelInfo = this.state.featureAccess[\"models\"];\n skip_setup = this.state.featureAccess[\"skip_setup\"];\n hideModelInfo = modelInfo === false;\n }\n let DEPLOYED_ENVIRONMENT = process.env.REACT_APP_CUSTOM_NODE_ENV;\n if(DEPLOYED_ENVIRONMENT === \"managed_service\"){\n showMessage=\"Datasources are the files and datasets containing the raw data that need to be monitored. Environment is a grouping of a set of datasources. Eg: Production Environment. Add an environment to get started with your first datasource.\";\n buttonIconName=\"Add Datasource\";\n redirectLink=\"/configure\";\n showLogo=\"addLogo\"\n topMessage=\"Add your first Datasource\"\n } \n\n return (\n <>\n \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n

    {topMessage}

    \n
    \n {showMessage}\n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n {this.renderVideoContent(this.state.current_tab, DEPLOYED_ENVIRONMENT)}\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n }\n\nexport default QuickStart;\n","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport Nav from 'react-bootstrap/Nav';\nimport Tab from 'react-bootstrap/Tab';\nimport NavigationHeader from '../components/navigationHeader';\nimport {CopyRightsFooter} from './copyrights';\nimport {\n CONFIGURE_DATA_SOURCE_URL, CONFIGURE_MODEL_URL, PIPELINE_CHANNEL_URL,\n MONITOR_MODEL_URL, MONITOR_DATA_URL,\n PROFILE_DATA_URL, PROFILE_MODEL_URL, NOTIFICATION_URL, DATA_QUALITY_URL,\n MONITOR_MODEL_PERFORMANCE_URL, IS_NONE_CHECK\n} from \"../utils/constant\";\nimport {getFeatureAccess} from \"../utils/common_utils\";\nimport {Mediakind} from \"./mediaKind\"\n\nclass VideoHelp extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleTab = this.handleTab.bind(this);\n this.state={\n current_tab:\"quick_start\",\n featureAccess: getFeatureAccess()\n }\n }\n\n\n renderVideoContent(value){\n let DEPLOYED_ENVIRONMENT = process.env.REACT_APP_CUSTOM_NODE_ENV;\n let quick_start_message=\"Learn how to setup a datasource and a model to start monitoring the performance metrics.\";\n let setup_alert_message=\"Learn how to create custom data quality and model metrics and custom queries for your alert.\";\n if(DEPLOYED_ENVIRONMENT === \"managed_service\"){\n quick_start_message=\"Learn how to setup a datasource to start monitoring the performance metrics.\";\n setup_alert_message=\"Learn how to create custom data quality and custom queries for your alert.\";\n }\n switch(value){\n case \"quick_start\":\n return(\n
    \n

    Quick Start Video Tutorial

    \n

    Watch this short video tutorial to quickly start using Qualdo™

    \n

    {quick_start_message}

    \n
    \n \n
    \n
    \n );\n case \"host_tab\":\n return(\n
    \n

    Configure a Datasource

    \n

    Watch this short video tutorial to configure datasource

    \n

    Learn how to add and organize datasources for Qualdo™ to start monitoring for data quality issues and metrics.

    \n
    \n \n
    \n
    \n );\n case \"dashboard_creation\":\n return (\n
    \n

    Configure a Model

    \n

    Watch this short video tutorial to configure Models

    \n

    Learn how to add and organize models within Qualdo™ to start monitoring for performance issues and metrics.\n View this tutorial to configure training, test and serving data of your model.

    \n
    \n \n
    \n
    \n );\n\n case \"moniter_creation\":\n return (\n
    \n

    Profile a Datasource

    \n

    Watch this short video tutorial to profile datasources and datasets.

    \n

    Learn how to profile different datasources for various data quality metrics.\n View this tutorial to understand data relationships, completeness, accuracy, timeliness, conformity and consistency.

    \n
    \n \n
    \n
    \n );\n\n case \"invite_team_mates\":\n return(\n
    \n

    Profile a Model

    \n

    Watch this short video tutorial to profile the configured models.

    \n

    Learn how to profile multiple models for various performance metrics.\n View this tutorial to quickly understand model drifts and performance metrics.

    \n
    \n \n
    \n
    );\n case \"install_integration\":\n return (\n
    \n

    Monitor DQ Metrics

    \n

    Watch this short video tutorial to monitor data quality issues and metrics.

    \n

    Learn how to monitor data issues, data quality errors and data quality performance of multiple datasources.

    \n
    \n \n
    \n
    );\n\n case \"overview_video\":\n return(\n
    \n

    Monitor Model Metrics

    \n

    Watch this short video tutorial to monitor model issues and metrics.

    \n

    Learn how to monitor model issues, errors and model performance metrics.

    \n
    \n \n
    \n
    );\n case \"model_performance_monitoring\":\n return(\n
    \n

    Monitor Model Performance Metrics

    \n

    Watch this short video tutorial to monitor model performance issues and metrics.

    \n

    Learn how to monitor model performance issues, errors and model performance metrics.

    \n
    \n \n
    \n
    );\n case \"setup_notification\":\n return(\n
    \n

    Setup a notification

    \n

    Watch this short video tutorial to setup notifications from Qualdo™.

    \n

    Learn how to send notifications to email and slack or any other medium of your choice.

    \n
    \n \n
    \n
    );\n case \"pipeline_trigger\":\n return(\n
    \n

    Setup a Pipeline Trigger

    \n

    Watch this short video tutorial to setup triggers from Qualdo™.

    \n

    Learn how to setup triggers for webhooks or a pipeline tech-stack of your choice.

    \n
    \n \n
    \n
    );\n case \"setup_alert\":\n return(\n
    \n

    Setup an Alert

    \n

    Watch this short video tutorial to setup custom metrics and alerts.

    \n

    {setup_alert_message}

    \n
    \n \n
    \n
    );\n default:\n break;\n }\n }\n\n handleTab(key) {\n this.setState ({current_tab: key});\n }\n\n render() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n\n let hideModelInfo = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelInfo = this.state.featureAccess[\"models\"];\n hideModelInfo = modelInfo === false;\n }\n\n\n return (\n <>\n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n \n \n );\n }\n }\n\nexport default VideoHelp;","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport NavigationHeader from '../components/navigationHeader';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport Image from './image';\n\n\nlet BRAND_LOGO = process.env.REACT_APP_CUSTOM_BRAND_LOGO\n\nclass PrivacyPolicy extends React.Component {\n\n render() {\n let sessionToken = localStorage.getItem('sessionToken');\n return (\n <>\n {sessionToken === null ?\n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n : \n }\n
    \n \n
    \n {/*
    \n
    \n

    Privacy Policy

    \n

    \n This Privacy Policy explains how information about you is collected, used and disclosed by Qualdo, Inc.\n (collectively, \"Qualdo,\" \"we\" or \"us\") when you use our website [https://www.qualdo.ai/] (\"Website\"),\n online products and monitoring services (\"Platform\") (collectively, \"Services\"), or when you otherwise\n interact with us. This Privacy Policy also describes your choices regarding use, access and correction of\n personal information collected about you through our Services. Please read this Privacy Policy carefully\n and ensure that you understand it before you start to use our Services.\n

    \n

    \n This Website is owned and operated by, or on behalf of, Qualdo. (\"we\", \"our\" or \"us\"). We are the data\n controller in respect of personal information of our users based in the European Union.\n

    \n

    \n By accessing and using the Services, you acknowledge that you have read and understood the content of this\n Privacy Policy. We reserve the right to update this Privacy Policy from time to time. If we make changes,\n we will notify you by revising the date at the top of the Privacy Policy and, in some cases, we may\n provide you with additional notice (such as adding a statement to our homepage or sending you a\n notification). We encourage you to review the Privacy Policy whenever you access the Services or otherwise\n interact with us to stay informed about our information practices and the ways you can help protect your\n privacy.\n

    \n
    \n
    */}\n
    \n
    \n
    \n

    Privacy Policy

    \n

    The Qualdo™ Privacy Policy was updated on July 23, 2020.

    \n

    \n Qualdo™ is a trademark of Saturam\n Inc.\n

    \n \n

    Our View of the Importance of Privacy

    \n

    \n Saturam, Inc. (\"Saturam\", \"we\", \"our\", or \"us\") is corporately committed to ensuring the\n same high level of respect and protection for the Personal Information we collect that the\n individuals within Saturam desire for their own data. We value individual privacy and\n personal control of Personal Information. We handle your Personal Information in the way we\n would want our Personal Information to be handled by others.\n

    \n
    \n
    \n

    How This Privacy Policy Applies to You

    \n

    \n A person may interact with us by accessing our websites saturam.com, qualdo.ai, or any\n subdomain (\"Website\", \"Websites\") as a visitor (\"Visitor\", \"Visitors\"), or by using any\n version of our software (\"Service\", \"Services\") in the context of registration,\n subscription, or agreement as a user (\"User\", \"Users\").\n

    \n

    \n This privacy policy sets out how we collect, store, process, transfer, share and use data\n that identifies or is associated with you (\"Personal Information\") and information regarding\n our use of cookies and similar technologies, including information that does not personally\n identify you (\"Impersonal Information\"). We will not sell any of your Personal Information.\n

    \n

    \n By accessing and using the Product or Services, you acknowledge that you have read and\n understood the content of this Privacy Policy.\n

    \n

    Changes to this Privacy Policy

    \n

    \n We reserve the right to modify or amend the terms of our Privacy Policy from time to time.\n If we make changes, we will notify you by revising the date at the top of the Privacy\n Policy. We encourage you to review the Privacy Policy whenever you access the Services or\n otherwise interact with us to stay informed about our information practices and the ways you\n can help protect your privacy.\n

    \n

    What We Mean by Personal Information

    \n

    \n Personal Information means information identifiable to any person, including, but not\n limited to, information that relates to a person's name, health, finances, education,\n addresses, telephone numbers, social security numbers, driver license numbers, other\n identifying numbers, and any financial identifiers.\n

    \n

    What We Mean by Impersonal Information

    \n

    \n Impersonal Information includes information that does not personally identify you, but may\n include tracking and usage information about your location, demographics, use of the Website\n and the Internet.\n

    \n

    Children and Minors

    \n

    \n We only collect Personal Information of individuals 18 years of age and older, or have\n otherwise reached the age of \"majority\" where you reside.\n

    \n

    Where Personal Information is Stored

    \n

    \n Saturam is headquartered in the United States and has service providers in other countries.\n Your Personal Information, Impersonal Information, and other information collected through\n the Website and Services may be stored and processed in the United States or any other\n country in which Saturam, its Clients, Affiliates or Service Providers maintain facilities.\n Saturam, its Clients, Affiliates, or Service Providers may transfer information that we\n collect about you, including Personal Information across borders and from your country or\n jurisdiction to other countries or jurisdictions around the world.\n

    \n

    \n If you are located in the United States, or other regions with laws governing data\n collection and use that may differ from US law, please note that we may transfer\n information, including Personal Information, to a country and jurisdiction that does not\n have the same data protection laws as your jurisdiction.\n

    \n

    \n By registering for and using the Website you consent to the use and disclosure of\n information about you as described in this Privacy Policy, and to the transfer of\n information to the US or to any other country in which Saturam, its Clients, Affiliates or\n Service Providers maintain facilities.\n

    \n

    \n In connection with Saturam's processing of Personal Information it receives in the U.S. from\n the European Union (\"EU Data\"), Saturam participates in, and complies with, the EU-U.S.\n Privacy Shield Framework and Swiss-U.S. Privacy Shield Framework (collectively, the\n \"Frameworks\") as set forth by the U.S. Department of Commerce regarding the collection, use,\n and retention of Personal Information transferred from the European Union and Switzerland to\n the United States.\n

    \n

    \n If you have specific geo-location or other requirements for storage or data movement, please\n contact Saturam at privacypolicy@saturam.com to discuss your requirements and potential\n solutions we may have to meet those requirements.\n

    \n\n

    How Personal Information is Used

    \n

    \n We may use your Personal and Impersonal Information in the following ways:\n

    \n
      \n
    • \n We may process your electronic contact details that you have provided to us including,\n but not limited to, your email address and phone number, in order to contact you to\n inform you about our products and services.\n
    • \n
    • \n We use your profile to manage your access to the Websites and/or Services.\n
    • \n
    \n

    How Personal Information is Retained

    \n

    \n We may retain your Personal Information indefinitely in order to maintain the history of our\n relationship, the product or service history, and to keep your profile intact. However, you\n can require that we retain certain Personal Information for no longer than necessary to\n fulfill the purpose of the processing in question, i.e. typically for the duration of our\n contractual relationship. Whenever we process your Personal Information, such Personal\n Information will only be processed for the duration of your consent, which you may revoke or\n restrict at any time. If you do so, we will stop processing your Personal Information\n according to the context of the stated revocation or restriction, with the following\n exceptions.\n

    \n
      \n
    • \n We retain a history of transactions and accounts according to standard accounting\n practices, which does persist.\n\n
    • \n
    \n

    How Personal Information is Shared

    \n

    \n Saturam may disclose your Information to others in the following ways:\n

    \n

    \n Affiliates: We may disclose Information to our\n affiliates subject to this Privacy Policy in order for them to help market, sell, and\n service our Offerings. Saturam maintains agreements compliant with this Privacy Policy\n covering the use of Personal Information within the Saturam family of companies.\n

    \n

    \n Service Providers: We may disclose Information\n to our service providers (e.g., infrastructure as a service, order fulfillment,\n professional/customer/support services), pursuant to written agreements with\n confidentiality, privacy, and security obligations. Saturam maintains a list of its\n sub-processors who process Personal Information as part of the Offerings, which Saturam\n updates as needed.\n

    \n

    \n App Developers: We may disclose Impersonal\n Information about App use and performance with App Developers so that they can improve and\n enhance the performance of their Apps. App Developers will be identified to you when you\n download and use their Apps pursuant to their license terms, including their privacy\n policies.\n

    \n

    \n Partners and Event Sponsors: We may disclose\n contact and account Information to our partners and event sponsors (identified at time of\n registration or event participation) pursuant to written agreements with confidentiality,\n privacy and security obligations. They may use the Information to assess your interest in\n Saturam Offerings, conduct user research and surveys, or send you marketing communications,\n subject to the terms of their privacy policies. We may also share Support Usage Data with\n partners when they manage your Offering for you.\n

    \n

    \n Compliance and Safety: We may disclose\n Information as necessary or appropriate under applicable laws (including laws outside your\n country of residence) to comply with legal process or requirements; to respond to requests\n from public or government authorities (including those outside your country of residence);\n to enforce our terms and conditions; and to protect our operations, rights, and safety, and\n that of you and others, as needed.\n

    \n

    \n Merger, Sale, etc.: We may disclose Personal\n Information in the event of a proposed or actual corporate or financing transaction, such as\n a reorganization, merger, sale, joint venture, assignment, transfer, or disposition of all\n or any portion of Saturam business, assets, or stock (including Information regarding any\n bankruptcy or similar proceedings).\n

    \n

    \n Other Users: We may disclose Impersonal\n Information to other users of the service in aggregate format. This may include \"best\n practices\" tips, KPIs, benchmark data or other such aggregated information useful to the\n user community.\n

    \n

    Requests to Manage or Delete Personal Information

    \n

    \n Saturam Inc. respects your control over your Personal Information and, upon request, we will\n confirm whether we hold or are processing information that we have collected from you. You\n also have the right to amend or update inaccurate or incomplete Personal Information,\n request deletion of your Personal Information, or request that we no longer use it. Under\n certain circumstances we will not be able to fulfill your request, such as if it interferes\n with our regulatory obligations, affects legal matters, we cannot verify your identity, or\n it involves disproportionate cost or effort, but in any event we will respond to your\n request within a reasonable timeframe and provide you an explanation. In order to make such\n a request, please email us at privacypolicy@saturam.com or contact us at 3260 Hillview Avenue,\n Palo Alto, California 94304.\n

    \n

    Personal Information We Collect

    \n

    Cookies

    \n

    Please refer to our Cookie Policy found here.

    \n

    Explanation and Examples

    \n

    \n As a general matter, you can browse the Website without submitting your Personal Information\n to us. However, there are a number of circumstances in which you may supply us or our agents\n with your Personal Information. The following lists the most common ways in which we may\n collect your Personal Information.\n

    \n
      \n
    • When you submit the contact form
    • \n
    • When you download collaterals from our websites.
    • \n
    • When you sign up for a demo.
    • \n
    • When you submit a job application to work at Saturam.
    • \n
    • When you request a call, customer service, support requests or other assistance.
    • \n
    • For website related communications, e.g. account verification; technical notification.\n
    • \n
    • When you register or attend Saturam hosted or sponsored events such as promotional\n events, webcasts, contests, or hackathons.
    • \n
    • Any other place on the Website where you knowingly volunteer Personal Information.
    • \n
    \n

    Other Sources

    \n

    \n As part of our marketplace activity, we collect Information about you from other sources\n such as public databases, joint marketing partners, social media platforms, conference/event\n hosts, and other partners.\n

    \n

    Impersonal Information We Collect

    \n

    \n In addition, when you interact with the Website, we may collect certain information that\n does not identify you individually and our servers may automatically keep an activity log of\n your use of our Website (\"Impersonal Information\"). Generally, we collect and store the\n following categories of Impersonal Information:\n

    \n
      \n
    • Non-identifiable demographic data such as age, gender, and zip code as part of\n collecting Personal Information.
    • \n
    • Device information about your computer, browser, mobile device, or other device that\n you use to access the Website. This information may include IP address, geolocation\n information, unique device identifiers, browser type, browser language, and other\n transactional information.
    • \n
    • Analytics and usage information about your use of the Website.
    • \n
    • Additional \"traffic data\" and log files such as time of access, date of access,\n software crash reports, session identification number, access times, and referring\n website addresses.
    • \n
    • Other information regarding your use of the Website.
    • \n
    • We may also gather and use information about you from publicly available third-party\n sources.
    • \n
    \n

    Social Media Widgets

    \n

    \n Our Service may include social media features, such as Facebook, Twitter, Instagram,\n LinkedIn, YouTube and chatbot widgets. These features may collect your Personal Information\n and track your use of the Service. These social media features are either hosted by a third\n party or hosted directly in the Service. Your interactions with these features are governed\n by the privacy policy of the company providing such functionality.\n

    \n

    LOG-IN FEATURES

    \n

    \n We may support signup and log in using a Google email account. If you sign up using your\n Google email account, Google will ask your permission to share certain information from your\n Google account with us. This may include your first name, last name, gender, general\n location, your time zone and birthday. This information is collected by Google and is\n provided to us under the terms of Google's privacy policy which you can find here:\n

    \n https://policies.google.com/privacy/.\n

    \n You can control the information that we receive from Google using the privacy settings in\n your Google account.\n

    \n

    Unsubscribe

    \n

    \n You may unsubscribe from commercial communications at any time by contacting us at privacypolicy@saturam.com\n or by using the unsubscribe link in our email communication.\n

    \n

    Payment Information

    \n

    \n Any payment card information you use to make a purchase on the Services is collected and\n processed directly by us or our payment processor, Braintree. and we never receive or store\n your full payment card information. Braintree may use your Payment Information in accordance\n with its own Privacy Policy here: \n https://www.braintreepayments.com/legal/braintree-privacy-policy.\n

    \n

    Links to Third Party Sites

    \n

    \n Saturam has no control over third party sites and their use of information that you may\n supply to such third-party sites.\n

    \n

    Contact Us

    \n

    \n If you have any questions about this Privacy Policy or don't see your concerns addressed\n here, please contact us by email at privacypolicy@saturam.com or via mail at 3260 Hillview Avenue, Palo\n Alto, California 94304. Attn: Privacy.\n

    \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default PrivacyPolicy;","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport NavigationHeader from '../components/navigationHeader';\nimport {CopyRightsFooter} from '../components/copyrights';\nimport Image from './image';\n\n\nlet BRAND_LOGO = process.env.REACT_APP_CUSTOM_BRAND_LOGO\nclass FreeTrialAgreement extends React.Component {\n\n render() {\n let sessionToken = localStorage.getItem('sessionToken');\n return (\n <>\n {sessionToken === null ?\n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n : \n }\n
    \n \n
    \n
    \n
    \n
    \n

    \n This Free-Trial Subscription Agreement (this \"Agreement\") contains\n terms and conditions that\n govern your acquisition of subscriptions to, and use of, the Free-Trial Services (as defined\n below), and is a contract between Qualdo™, Inc., a Delaware (USA) corporation (\"Qualdo™\"),\n and you or the entity or organization that you represent.\n

    \n

    \n If you are an individual using the Free-Trial Services for your own purposes: (1) all\n references to \"Customer\" are to you and (2) you\n represent and warrant that you are at least\n 18 years of age, or have otherwise reached the age of \"majority\" where you reside, and that\n you have the right, power and authority to enter into this Agreement.\n

    \n

    \n If you are using the Free-Trial Services on behalf of an entity or organization that you\n represent: (1) all references to \"Customer\" are\n to that entity or organization and (2) you\n represent and warrant that you are at least 18 years of age, or have otherwise reached the\n age of \"majority\" where you reside, and that you have the right, power and authority to\n enter into this Agreement on behalf of Customer.\n

    \n

    This Agreement becomes binding and effective on Customer upon\n the earliest of:\n

    \n
      \n
    • when you access or use the Free-Trial Services.
    • \n
    • when you click an \"I Accept,\" \"Sign up\" or similar button or check box referencing this\n Agreement, or\n
    • \n
    • when you enter into a Free-Trial Order (as defined below) with Qualdo™.\n
    • \n
    \n

    \n Capitalized terms not otherwise defined in this Agreement will have the respective meanings\n assigned to them in Section 24. Qualdo™ may modify this Agreement from time to time, subject\n to the terms in Section 26 below.\n

    \n
      \n
    • Free-Trial Orders
    • \n
    • Access and Use
    • \n
    • Support
    • \n
    • Free-Trial Subscription
    • \n
    • APIs and Tools
    • \n
    • Hosting and Other Provider
    • \n
    • Security and Privacy
    • \n
    • Customer Responsibilities and Restrictions
    • \n
    • Compliance with Applicable Laws
    • \n
    • Ownership
    • \n
    • Confidentiality
    • \n
    • Disclaimers
    • \n
    • Term and Termination
    • \n
    • Indemnification
    • \n
    • Limitations of Liability
    • \n
    • Publicity
    • \n
    • Notices
    • \n
    • Assignment
    • \n
    • U.S. Government Customers
    • \n
    • Independent Parties; No Third-Party Beneficiaries
    • \n
    • Force Majeure
    • \n
    • Governing Law; Venue
    • \n
    • Miscellaneous
    • \n
    • Definitions
    • \n
    • Counterparts
    • \n
    • Changes to this Agreement
    • \n
    \n

    1. Free-Trial Orders.\n

    \n

    \n This Agreement sets forth the terms pursuant to which Customer may access and use the\n Free-Trial Services in connection with one or more Free-Trial Orders. Subject to the terms\n of a Free-Trial Order, the Free-Trial Services will support Customer's collection,\n monitoring, management and analysis of data generated by systems, platforms, services,\n software, devices, sites and/or networks that Customer uses in its own internal business\n operations (collectively, but exclusive of all Free-Trial Services and Paid Services,\n \"Customer's Environment\").\n

    \n

    2. Access and Use.

    \n

    \n 2.1. Subject to the applicable Free-Trial Order and this Agreement, Qualdo hereby grants to\n Customer the right to access and use the Free-Trial Services in accordance with the\n Documentation during the Free-Trial Term for Customer's Environment.\n

    \n

    \n 2.2. As between the Parties, Customer controls Customer's Environment and its individual\n components (each, a \"Customer Component\"),\n whether owned, leased or licensed by Customer,\n located on Customer's premises or cloud-based, used by Customer on a software-as-a-service\n basis or otherwise. Customer will be able to use the Free-Trial Services by establishing\n integrations or other connections to one or more Customer Components (each, a \"Connection\").\n By implementing a Connection to a Customer Component, Customer hereby grants to Qualdo the\n right, and is expressly instructing Qualdo, to access and interoperate with that Customer\n Component during the Free-Trial Term in order to provide and support the Free-Trial\n Services. Customer is responsible for complying with all applicable third-party terms,\n policies and licenses governing its access and use of Customer Components and associated\n data (collectively, \"Third-Party Terms\")\n

    \n

    \n 2.3. Through Customer's configuration and use of Connections and Free-Trial Services,\n Customer has control over the types and amounts of data from Customer's Environment that are\n submitted for Processing by the Services (collectively, \"Customer\n Data\"). By submitting\n Customer Data to the Free-Trial Services, Customer hereby grants to Qualdo the right, and is\n expressly instructing Qualdo, to Process Customer Data during the Free-Trial Term in order\n to provide and support the Free-Trial Services and as otherwise provided in this Agreement.\n

    \n

    \n 2.4. All rights granted by each Party to the other under this Section 2 are limited,\n nonexclusive and, except as otherwise provided in this Agreement, non-transferable.\n

    \n

    3. Support

    \n

    \n Subject to this Agreement, Qualdo may, at its option, make Support to Authorized Users\n through the Services and by email.\n

    \n

    4. Free-Trial Subscription.

    \n

    \n Qualdo will make the Free-Trial Services available to Customer until the earliest of: (a)\n the end of the period specified in the applicable Free-Trial Order; (b) the start date of\n any Paid Order for the applicable Services; (c) termination by Qualdo, at any time, in its\n sole discretion; or (d) termination by Customer pursuant to Section 26. Additional terms and\n conditions, including Supplemental Terms, may apply to Free-Trial Services and Customer\n agrees any such additional terms and conditions are incorporated into this Agreement by\n reference and are legally binding.\n

    \n

    5. APIs and Tools.

    \n

    \n One or more APIs will be available to Customer to assist with Customer's implementation of\n Connections, and Qualdo makes client libraries available to facilitate Customer's coding\n against the API(s). In addition, Authorized Users may install a Qualdo-produced software\n agent on certain Customer Components to support Customer's collection of Customer Data. The\n code for these libraries and agents (collectively, \"Ancillary Tools\")\n are available in\n public repositories at https://github.com/Qualdo and are subject to the applicable open\n source licenses referenced in those repositories. Customer determines and controls what APIs\n and Ancillary Tools (if any) to use in connection with the Free-Trial Services. By using an\n API or Ancillary Tool in connection with the Free-Trial Services, Customer hereby agrees to\n do so in accordance with the Documentation and, in the case of the Ancillary Tool, with the\n applicable open source licenses (provided that if an applicable open source license for an\n Ancillary Tool contradicts rights or restrictions in the Documentation, the license will\n take precedence). The Ancillary Tools are not \"Free-Trial Services\" or\n \"Support\" for\n purposes of this Agreement.\n

    \n

    6. Hosting and Other Providers.

    \n

    \n Qualdo uses third-party hosting providers, other service providers and Qualdo Affiliates to\n support the provision of the Free-Trial Services and Support in the ordinary course of its\n business, i.e., not specifically for Customer (collectively, \"Ordinary Course\n Providers\").\n Qualdo reserves the right to engage and substitute Ordinary Course Providers as it deems\n appropriate, but shall: (a) remain responsible to Customer for the provision of the\n Free-Trial Services and Support and (b) be liable for the actions and omissions of its\n Ordinary Course Providers undertaken in connection with Qualdo's performance of this\n Agreement to the same extent Qualdo would be liable if performing the Free-Trial Services or\n Support directly. In no event shall providers of Customer Components be deemed Ordinary\n Course Providers for any purpose under this Agreement.\n

    \n

    7. Security and Privacy.\n

    \n

    \n 7.1. As discussed in the Documentation, including at https://www.qualdo.ai/, each Party has\n obligations with respect to the security of the Free-Trial Services and Customer Data.\n Taking into account the nature and types of Customer Data, Qualdo will employ\n administrative, physical and technical measures in accordance with applicable industry\n practice to protect the Free-Trial Services and prevent the accidental loss or unauthorized\n access, use, alteration or disclosure of Customer Data under its control during each\n Free-Trial Term.\n

    \n

    \n 7.2. Customer is responsible for properly configuring the Free-Trial Services in accordance\n with the Documentation, enabling single sign-on for Customer's accounts, and securing access\n passwords, keys, tokens or other credentials used by Customer in connection with the\n Free-Trial Services (collectively, \"Customer\n Credentials\"). Customer agrees to use\n reasonable efforts to prevent unauthorized access or use of the Free-Trial Services and to\n promptly notify Qualdo if Customer believes (a) any Customer Credentials have been lost,\n stolen or made available to an unauthorized third party or (b) an unauthorized third party\n has accessed the Free-Trial Services or Customer Data.\n

    \n

    \n 7.3. Except for limited Personal Information in Account Data, Qualdo does not require\n Personal Information for Customer's access and use of the Free-Trial Services. Customer\n shall limit Personal Information in Account Data to only that necessary for the creation and\n administration of its Qualdo accounts. With regard to Customer Data, Customer shall not use\n the Free-Trial Services to Process any Sensitive Information and shall use reasonable\n efforts to restrict the inclusion of other Personal Information in Customer Data. The\n Documentation provides further information on both filtering Personal Information from, and\n masking Personal Information in, data before they are submitted to the Free-Trial Services.\n

    \n

    \n 7.4. Qualdo may Process information about Customer's configuration and use of the Free-Trial\n Services (\"Usage Data\"), Customer Data and Account Data: (a) to manage Customer's account;\n (b) to provide and improve the Free-Trial Services and Support, including to address\n requests for Support and troubleshoot other issues; and (c) to provide Customer and\n Authorized Users insights, service and feature announcements and other reporting. Qualdo may\n also Process Usage Data that has been aggregated and/or anonymized (including, for clarity,\n that does not allow a third party to identify Customer as the source of the information):\n (i) to develop new services and features and (ii) to promote Qualdo's services, including,\n for example, through analyses of patterns and trends. Qualdo's Processing of Usage Data,\n Customer Data and Account Data shall at all times be subject to Qualdo's obligations under\n this Agreement, including those of security under Section 7.1 and confidentiality under\n Section 11; any applicable Supplemental Terms; and, with respect to Account Data, the\n Privacy Policy.\n

    \n

    8. Customer Responsibilities and Restrictions.

    \n

    \n 8.1. Customer will be solely responsible for: (a) Customer's Environment, including as\n necessary to enable Authorized Users' access and use of the Free-Trial Services; (b) Account\n Data, Customer Data and Customer Credentials (including activities conducted with Customer\n Credentials), subject to Qualdo's Processing obligations under this Agreement; (c) providing\n any required notices to, and receiving any required consents and authorizations from,\n Customer Component providers, Authorized Users and persons whose Personal Information may be\n included in Account Data, Customer Data or Customer Credentials; and (d) ensuring use of the\n Free-Trial Services is only for Customer's Environment and in accordance with the AUP,\n Documentation and applicable Third-Party Terms.\n

    \n

    \n 8.2. No provision of this Agreement includes the right to, and Customer shall not, directly\n or indirectly: (a) enable any person or entity other than Authorized Users to access and use\n the Free-Trial Services; (b) attempt to gain unauthorized access to any Free-Trial Service\n or its related systems or networks; (c) use any Free-Trial Service to access Qualdo\n Intellectual Property Rights except as permitted under this Agreement; (d) modify, copy or\n create any derivative work based upon a Free-Trial Service or any portion, feature or\n function of a Free-Trial Service; (e) resell, distribute or otherwise make available any\n Free-Trial Service to any third party, including as part of a managed services offering; (f)\n except to the extent limited by Applicable Law, reverse engineer, disassemble or decompile\n all or any portion of, or attempt to discover or recreate the source code for, the\n Free-Trial Services or access or use the Free-Trial Services or Documentation in order to\n (1) copy ideas, features, functions or graphics, (2) develop competing products or services,\n or (3) perform competitive analyses; (g) remove, obscure or alter any proprietary notice\n related to the Free-Trial Services; (h) send or store Malicious Code; (i) use or permit\n others to use the Free-Trial Services in violation of Applicable Law; or (j) use or permit\n others to use the Free-Trial Services other than as described in the applicable Free-Trial\n Order, Documentation and this Agreement.\n

    \n

    \n 8.3. Qualdo reserves the right to investigate potential violations of the above provisions\n of this Section 8. In the event Qualdo reasonably believes a violation has occurred, in\n addition to any other remedies available at law or in equity, Qualdo will have the right to\n suspend Authorized Users suspected of the violation from accessing the Free-Trial Services\n for so long as is reasonably necessary to address the potential violation. For clarity,\n Qualdo reserves the right, but does not assume any obligation to Customer, to take any of\n the actions described in this Section 8.3.\n

    \n

    9. Compliance with Applicable Laws.

    \n

    \n Customer agrees to comply with all Applicable Laws with respect to its performance of its\n obligations and exercise of its rights under this Agreement. Without limiting the foregoing:\n

    \n

    \n 9.1. Customer shall comply with Applicable Laws concerning the privacy and protection of\n Personal Information. Without limiting Section 8.1, Customer will be solely responsible for\n providing any notices required by Applicable Law to, and receiving any consents and\n authorizations required by Applicable Law from, persons whose Personal Information may be\n included in Account Data, Customer Data or Customer Credentials.\n

    \n

    \n 9.2. Customer shall comply with Applicable Laws concerning anti-bribery and anti-corruption,\n which may include the U.S. Foreign Corrupt Practices Act of 1977 and the UK Bribery Act\n 2010. As of the date of this Agreement and the date of each Free-Trial Order, Customer\n represents that it has neither received nor been offered any illegal or improper bribe,\n kickback, payment, gift or thing of value from any employee, agent or representative of\n Qualdo or its Affiliates in connection with this Agreement. Customer agrees to promptly\n notify Qualdo if it learns of any violation of the foregoing. This representation is not\n intended to include customary and reasonable gifts and entertainment provided in the\n ordinary course of business, to the extent such gifts and entertainment are permitted by\n Applicable Law.\n

    \n

    \n 9.3. Customer shall (a) comply with Applicable Laws administered by the U.S. Commerce Bureau\n of Industry and Security, U.S. Treasury Office of Foreign Assets Control or other\n governmental entity imposing export controls and trade sanctions (\"Export\n Laws\"), including\n designating countries, entities and persons (\"Sanctions Targets\") and\n (b) not directly or\n indirectly export, re-export or otherwise deliver Free-Trial Services to a Sanctions Target,\n or broker, finance or otherwise facilitate any transaction in violation of any Export Laws.\n Customer represents that it is not a Sanctions Target or prohibited from receiving\n Free-Trial Services pursuant to this Agreement under Applicable Laws, including Export Laws.\n

    \n

    10. Ownership.

    \n

    \n As between the Parties: (a) Customer owns all right, title and interest in and to Customer's\n Environment and Customer Data, including in each case all associated Intellectual Property\n Rights, and (b) Qualdo owns all right, title and interest in and to the Paid Services,\n Free-Trial Services, Documentation and Feedback, including in each case all associated\n Intellectual Property Rights. Except for the rights expressly granted by one Party to the\n other in this Agreement, all rights are reserved by the granting Party.\n

    \n

    11. Confidentiality.

    \n

    \n 11.1. As used in this Agreement, \"Confidential\n Information\" means any information disclosed\n by one Party, its Affiliates, business partners or their respective employees, agents or\n contractors (collectively, the \"Discloser\")\n that is designated as confidential, either\n orally or in writing, or that, given the nature of the information or circumstances\n surrounding its disclosure, reasonably should be understood to be confidential. Confidential\n Information includes without limitation: (a) Customer Data; (b) information relating to the\n Discloser's or its Affiliates' technology, customers, business plans, promotional and\n marketing activities, finances and other business affairs; (c) third-party information that\n the Discloser is obligated to keep confidential; and (d) the terms of this Agreement and all\n Free-Trial and Paid Orders. However, Confidential Information does not include any\n information that: (i) was known to the Party that receives any Confidential Information (the\n \"Recipient\") prior to receiving the same from\n the Discloser in connection with this\n Agreement; (ii) is independently developed by the Recipient without reference to or use of\n the Discloser's Confidential Information; (iii) is acquired by the Recipient from another\n source without restriction as to use or disclosure; or (iv) is or becomes publicly available\n through no fault or action of the Recipient.\n

    \n

    \n 11.2. The Recipient shall not (a) use the Discloser's Confidential Information for any\n purpose outside the scope of this Agreement without the Discloser's prior written consent or\n (b) disclose the Discloser's Confidential Information to any person or entity, except to the\n Recipient's employees, agents, contractors and service providers who (i) are bound by\n non-use and non-disclosure obligations at least as protective as those contained in this\n Agreement and (ii) have a need to know the Confidential Information for the Recipient to\n exercise its rights or perform its obligations under this Agreement. Notwithstanding the\n foregoing, the Recipient may disclose the Discloser's Confidential Information to the\n limited extent any use or disclosure is required by Applicable Law or a valid and binding\n order of a governmental body (such as a subpoena or court order), provided that, to the\n extent permitted under Applicable Law, the Recipient uses reasonable efforts to give the\n Discloser reasonable advance notice thereof to afford the Discloser an opportunity to\n intervene and seek an order or other appropriate relief for the protection of its\n Confidential Information. In the event of any breach or threatened breach by the Recipient\n of its obligations under this Section, the Discloser will be entitled to seek injunctive and\n other equitable relief to enforce such obligations.\n

    \n

    12. Disclaimers.

    \n

    12.1. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT, NEITHER\n PARTY MAKES ANY WARRANTY OR GUARANTEE OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY, OR\n OTHERWISE, AND EACH PARTY SPECIFICALLY DISCLAIMS ALL WARRANTIES, WHETHER IMPLIED, EXPRESS,\n OR STATUTORY, INCLUDING ANY IMPLIED WARRANTY OF TITLE, MERCHANTABILITY, FITNESS FOR A\n PARTICULAR PURPOSE, OR NON-INFRINGEMENT, AND ALL WARRANTIES ARISING FROM COURSE OF DEALING,\n USAGE OR TRADE PRACTICE, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.

    \n

    12.2. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT, ALL\n FREE-TRIAL SERVICES, SUPPORT (IF ANY) AND ANY OTHER MATERIAL ARE PROVIDED BY Qualdo ON AN\n \"AS IS\" AND \"AS AVAILABLE\" BASIS. Qualdo MAKES NO REPRESENTATION OR WARRANTY, AND HAS NO\n SUPPORT OBLIGATIONS OR LIABILITY, WITH RESPECT TO ANY CUSTOMER COMPONENT. WITHOUT LIMITING\n THE OTHER PROVISIONS OF THIS SECTION 12, Qualdo MAKES NO WARRANTY OF ANY KIND THAT THE\n FREE-TRIAL SERVICES, DOCUMENTATION, ANCILLARY TOOLS OR ANY OTHER MATERIAL, OR RESULTS OF THE\n USE THEREOF, WILL: (a) MEET CUSTOMER'S OR ANY OTHER PERSON'S REQUIREMENTS; (b) OPERATE\n WITHOUT INTERRUPTION; (c) ACHIEVE ANY INTENDED RESULT; (d) BE ERROR FREE OR (e) BE\n COMPATIBLE, WORK WITH OR CONTINUE TO WORK WITH CUSTOMER COMPONENTS. ANY CHANGES TO CUSTOMER\n COMPONENTS (INCLUDING THEIR UNAVAILABILITY) OR THIRD-PARTY TERMS DURING AN ORDER TERM DO NOT\n AFFECT CUSTOMER'S OBLIGATIONS UNDER THE APPLICABLE ORDER OR THIS AGREEMENT.

    \n

    13. Term and Termination.

    \n

    13.1. The term of this Agreement will continue through the last\n Free-Trial Term to be in effect.

    \n

    \n 13.2. Upon expiration or earlier termination of a Free-Trial Order: (a) subject to Section\n 13.3, all rights granted to Customer with respect to Free-Trial Services under such\n Free-Trial Order will terminate effective as of the effective date of termination and (b)\n subject to Section 13.3, Qualdo will have no obligation to provide Free-Trial Services to\n Customer or Authorized Users after the effective date of the termination.\n

    \n

    \n 13.3. Subject to any applicable shorter Service Plan retention periods, for up to 30 days\n from the effective date of termination of this Agreement, an Authorized User designated by\n Customer will be permitted to continue to access and download Customer Data that was\n accessible to Authorized Users through the Free-Trial Services immediately prior to\n termination. The designated Authorized User's access and use will continue to be subject to\n the terms of this Agreement, provided the Authorized User shall not access or use the\n Free-Trial Services other than to download Customer Data.\n

    \n

    \n 13.4. The provisions set forth in the following Sections, and any other right or obligation\n of the Parties in this Agreement that, by its nature, should survive termination or\n expiration of this Agreement, will survive any expiration or termination of this Agreement:\n 7.4, 8.2, 9 through 15, and 17 through 26.\n

    \n

    14. Indemnification.

    \n

    \n Customer agrees to defend, indemnify and hold harmless Qualdo, its Affiliates and their\n employees, contractors, agents, officers and directors, from and against any and all claims,\n damages, obligations, losses, liabilities, costs or debt, and expenses (including without\n limitation attorneys' fees) arising out of or related to any legal claim, suit, action or\n proceeding by a third party arising out of or relating to any of the following\n (collectively, \"Customer-Controlled Matters\"):\n (i) Customer's Environment, including\n Connections to Customer Components, whether enabled through APIs, Ancillary Tools or\n otherwise; (ii) Account Data, Customer Data or Customer Credentials (including activities\n conducted with Customer Credentials), subject to Qualdo's Processing obligations under this\n Agreement; or (iii) use of the Free-Trial Services by Customer or an Authorized User in a\n manner that breaches a Free-Trial Order, Service Plan or this Agreement.\n

    \n

    15. Limitations of Liability.

    \n

    TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, EXCEPT AS\n OTHERWISE PROVIDED IN THIS SECTION 15: (a) IN NO EVENT SHALL EITHER PARTY, ITS AFFILIATES OR\n THEIR EMPLOYEES, AGENTS, CONTRACTORS, OFFICERS OR DIRECTORS BE LIABLE FOR ANY INDIRECT,\n PUNITIVE, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING WITHOUT\n LIMITATION DAMAGES FOR BUSINESS INTERRUPTION, LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER\n INTANGIBLE LOSSES ARISING OUT OF OR RELATING TO THIS AGREEMENT; AND (b) IN NO EVENT SHALL\n Qualdo'S CUMULATIVE AND AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED TWO HUNDRED U.S.\n DOLLARS. THE EXCLUSIONS AND LIMITATIONS IN THIS SECTION (COLLECTIVELY, THE \"EXCLUSIONS\")\n APPLY WHETHER THE ALLEGED LIABILITY IS BASED ON CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY\n OR ANY OTHER BASIS, EVEN IF THE NON-BREACHING PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE. THE EXCLUSIONS SHALL NOT APPLY TO CUSTOMER'S INDEMNIFICATION OBLIGATIONS UNDER\n SECTION 14 OR BREACH OF SECTION 8.2. THE PROVISIONS OF THIS SECTION 15 ALLOCATE THE RISKS\n UNDER THIS AGREEMENT BETWEEN THE PARTIES, AND THE PARTIES HAVE RELIED ON THE EXCLUSIONS IN\n DETERMINING TO ENTER INTO THIS AGREEMENT.

    \n

    16. Publicity.

    \n

    \n Neither Party shall, except as otherwise required by Applicable Law or stock exchange\n requirements, issue or release any announcement, statement, press release or other publicity\n or marketing materials relating to this Agreement or otherwise use the other Party's marks\n or logos without the prior written consent of the other Party; provided, however, that\n Qualdo may (subject its obligations of non-attribution under Section 7.4) include Customer's\n name and logo in its lists of Qualdo customers, its public website and other promotional\n material. Qualdo agrees to promptly cease such uses of Customer's name and logo following\n Customer's request sent to logos@qualdo.com.\n

    \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default FreeTrialAgreement;","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport NavigationHeader from '../components/navigationHeader';\nimport {CopyRightsFooter} from '../components/copyrights';\nimport Image from './image';\n\n\nlet BRAND_LOGO = process.env.REACT_APP_CUSTOM_BRAND_LOGO\n\nclass CookiePolicy extends React.Component {\n\n render() {\n let sessionToken = localStorage.getItem('sessionToken');\n return (\n <>\n {sessionToken === null ?\n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n : \n }\n
    \n \n
    \n
    \n
    \n

    \n This Cookie Policy (this \"Policy\") describes how and when Qualdo™,\n Inc. (\"Qualdo™\", \"we,\" \"us,\" or \"our\") uses cookies on our website\n located at https://www.Qualdo™hq.com/ (the \"Site\"), as well how you\n can manage the cookie settings in your browser. By continuing to visit the Site or use our services, you\n are agreeing to use of the cookies and similar technologies for the purposes we describe in this Policy.\n

    \n

    What is a Cookie?

    \n

    A cookie is a small text file downloaded to your browser when you visit a website that enables certain\n features and functionality. You can think of cookies as providing a 'memory' for a website, so that it can\n recognize users and user activity over time. For instance, a cookie may be used to record where you have\n paused a video so that you can resume playing it from the same spot later on. Most web pages contain\n elements from multiple web domains, so when you visit the Site your browser may receive cookies from\n several sources. This may include third parties that Qualdo™ has hired to provide services such as site\n analytics or ad targeting. Qualdo™ also uses web beacons, which are electronic images that may be used in\n our services or emails and help deliver cookies, count visits and understand usage and campaign\n effectiveness.\n

    \n

    How Qualdo™ Uses Cookies and Other Tracking Technologies

    \n

    Qualdo™ uses cookies and similar technologies, such as web beacons, to help us understand the profile of\n our visitors, recognize when you are signed in to your account, and provide you with a better user\n experience. We may also use cookies to analyze and track data, determine the popularity of certain\n content, deliver advertising and content targeted to your interests on our services and other websites and\n better understand your online activity.\n

    \n

    Third-Party Use of Cookies

    \n

    Some content or applications on the Site are served by third-parties, including advertisers, ad networks\n and servers, content providers, and application providers. These third parties may use cookies alone or in\n conjunction with web beacons or other tracking technologies to collect information about you when you use\n our website. The information they collect may be associated with your personal information or they may\n collect information, including personal information, about your online activities over time and across\n different websites and other online services. They may use this information to provide you with\n interest-based (behavioral) advertising or other targeted content.\n

    \n

    We do not control these third parties’ tracking technologies or how they may be used. If you have any\n questions about an advertisement or other targeted content, you should contact the responsible provider\n directly.\n

    \n

    What are your Choices Regarding Cookies?

    \n

    Most web browsers are set to accept cookies by default. If you prefer, you can usually choose to set\n your browser to remove or reject browser cookies. Please note that if you choose to remove or reject\n cookies, this could affect the availability and functionality of our services. To learn more about how to\n control cookie settings through your browser:\n

    \n\n

    Where can you find more information about cookies?

    \n

    If you want to learn more about cookies, or how to control, disable or delete them, please visit\n http://www.aboutcookies.org for detailed guidance. In addition, certain third party advertising networks,\n including Google, permit users to opt out of or customize preferences associated with your internet\n browsing. To learn more about this feature from Google, click here.\n

    \n

    You can learn about opting out of third-party targeting cookies on the Digital Advertising Alliance’s\n consumer choice page here or the Network Advertising Initiative’s consumer choice page here or the\n European Interactive Digital Advertising Alliance consumer choice page here.\n

    \n

    Changes to this Policy

    \n

    We may change this Policy from time to time. If we make changes, we will notify you by revising the date\n at the top of the policy. By accessing the Site or using our services, you agree to the latest version of\n this Policy. We encourage you to review this Policy whenever you access the Site or otherwise interact\n with us to stay informed about our practices.\n

    \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default CookiePolicy;","import React from 'react';\nimport { getProgressPercentage } from \"../utils/event_handling\";\nimport ProgressBar from 'react-bootstrap/ProgressBar'\n\n\nclass ProgressStatus extends React.Component {\n constructor(props){\n super(props);\n this.getProgressPercentage = getProgressPercentage.bind(this);\n this.state={\n progressStatus: this.props.progressStatus\n }\n\n }\n\n componentDidMount() {\n // this.getProgressPercentage();\n }\n\n\n render() {\n\n return (\n
    \n
    \n

    \n \n {this.state.progressStatus} %\n Completed

    \n \n

    We are processing your data. Please check back in sometime.

    \n
    \n
    \n );\n\n\n }\n\n}\n\nexport default ProgressStatus;","import BasicPortlet from \"../../components/basicPortlet\";\nimport React from \"react\";\nimport { browserHistory} from 'react-router';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faBezierCurve} from '@fortawesome/free-solid-svg-icons';\nimport Image from \"../../components/image\";\nimport Load from '../../components/loadAction';\n\nclass NoModelComponent extends React.Component {\n constructor(props) {\n super(props);\n this.go_to_configure_page = this.go_to_configure_page.bind(this);\n // setUpBotton this variable for the to show configure datasource if the user have no integration details\n this.state = {setUpBotton: false}\n }\n\n go_to_configure_page() {\n let redirectPage = \"/model\"\n if(this.props.navigatePage !== undefined){\n redirectPage = this.props.navigatePage\n }\n browserHistory.push(redirectPage);\n }\n\n componentDidMount(){\n if (this.props.noIntegration !== null && this.props.noIntegration === true){\n this.setState({setUpBotton:true})\n }\n }\n\n render() {\n let buttonName = \"Setup Model\";\n let noContentSubtext = \"No models configured yet.\";\n if (this.props.customButtonName !== undefined) {\n buttonName = this.props.customButtonName;\n }\n\n if (this.props.noContentSubtext !== undefined) {\n noContentSubtext = this.props.noContentSubtext;\n }\n return (\n <>\n {\n // here we will check the undefined and the setUpBotton status if it is false means we will show the \n // loader if it is true means we will show the configure datasource button\n this.state.setUpBotton?\n \n
    \n \n \n \n {\n (this.props.isInProgress !== undefined && this.props.isInProgress === true) ?\n

    {this.props.message}

    \n :\n <>\n

    \n {noContentSubtext}\n

    \n
    \n \n
    \n \n }\n
    \n \n }\n />\n :\n (this.props.model === true?\n \n
    \n \n \n \n

    {noContentSubtext}

    \n
    \n \n
    \n
    \n \n }\n />\n :\n \n )\n }\n )\n }\n}\n\n\nexport default NoModelComponent;\n","import React from 'react';\nimport AttributeNameComp from \"../../components/tableCellComponents/attributeNameComp\";\n\nexport function renderTableComponents(actionType, headerValue, cell) {\n /**\n * Currently we are using this function for rendering all table components in\n * Profile -> Data page.\n * Example) for table in Relationship tab, Completeness tab and all tabs in that page\n */\n\n if (headerValue === \"Attribute Name\") {\n return (\n \n \n )\n }\n\n return cell;\n}\n\nexport function renderskloader(chart, grid) {\n return (\n <>\n

     

    \n
    Data Relationship Filter
    \n
    \n
    \n
    \n
    \n
    \n
     
    \n
    \n
     
    \n

     

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
     
    \n
    \n
     
    \n

     

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
     
    \n
    \n
     
    \n

     

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
     
    \n
    \n
     
    \n

     

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {chart}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {grid}
    \n
    \n
    \n
    \n
    \n
    \n\n )\n}\n\nexport function renderskloader_(chart, grid) {\n return (\n <>\n

     

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {chart}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {grid}
    \n
    \n
    \n
    \n
    \n
    \n \n )\n}","import React from 'react';\nimport CardHelpContent from '../../components/cardHelpContent';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\n// import RcTooltip from 'rc-tooltip';\nimport Popover from 'react-bootstrap/Popover';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\n\n// const renderTooltip = (props) => (\n// \n// Need Help ?\n// \n// );\n\n\nclass ProfileCardData extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n\n this.state = {\n showModal: false,\n cardName: \"\",\n cardData: [],\n }\n }\n\n componentDidMount() {\n setTimeout(() => {\n this.props.skloader(1)\n }, 3000);\n }\n\n renderContent(name) {\n if(this.props.page === \"attribute\") {\n return(this.renderAttributeCard(this.props.name));\n \n }\n switch(name) {\n case \"Data Outliers\":\n return(<>\n

    The value shown on this card is an average of the outliers percentage detected on the attributes in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"No of Numerical Attributes with Outliers\":\n return(<>\n

    The value shown on this card is the count of attributes with outliers in the selected data source by default or based on the applied filters.

    \n \n );\n case \"No of Numerical Attributes without Outliers\":\n return(<>\n

    The value shown on this card is the count of attributes without outliers in the selected data source by default or based on the applied filters.

    \n \n );\n \n case \"Data Completeness\":\n return(<>\n

    The value shown on this card is an average of the fill rate of the individual attributes present in the selected data source by default or the individual attributes present as per the applied filters.

    \n \n );\n case \"Data Timeliness\":\n return(<>\n

    The value shown on this card is an average of the recency values of the datasets present in the selected data source by default or the datasets present as per the applied filters.

    \n \n );\n case \"Data Drift\":\n return(<>\n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Credit Card Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “credit card” in the selected data source by default or in the attributes present as per the applied filters.

    \n \n );\n case \"Categorical Encoding Errors\":\n return(<>\n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Categorical Ordinal Errors\":\n return(<>\n
    Visualization
    \n

    1. Visualization gives an overview of drop in fill rates of attributes in the data source.

    \n

    2. Attributes are on the circumference and each of the concentric circle represents a fill rate in percentage.

    \n \n );\n case \"Data Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors detected on the applicable attributes present in the selected data source by default or the applicable attributes present as per the applied filters.

    \n \n );\n case \"Data Accuracy Errors\":\n return(\n <>\n

    The value shown on this card is an average of the data outliers detected on the attributes present in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Data Consistency Errors\":\n return(\n <>\n

    The value shown on this card is an average of the consistency errors detected on the applicable attributes present in the selected data source by default or the applicable attributes present as per the applied filters.

    \n \n );\n case \"Categorical Consistency Errors\":\n return(\n <>\n

    The value shown on this card is the percentage of attributes with categorical consistency errors to the overall attributes qualified as “categorical” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Data Type Consistency Errors\":\n return(\n <>\n

    The value shown on this card is the percentage of attributes with data type consistency errors (data type mismatch) to the overall attributes in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Normalization Consistency Errors\":\n return(\n <>\n

    The value shown on this card is the percentage of attributes with normalization consistency errors to the overall attributes qualified as “numerical” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Attribute Fill Rate < 25%\":\n return(<>\n

    The value shown on this card represents the contribution of attributes with a fill rate of less than or equal to 25% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate 25% to 50%\":\n return(<>\n

    The value shown on this card represents the contribution of attributes with a fill rate greater than 25% but less than or equal to 50% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate 50% to 75%\":\n return(<>\n

    The value shown on this card represents the contribution of attributes with a fill rate greater than 50% but less than or equal to 75% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate > 75%\":\n return(<>\n

    The value shown on this card represents the contribution of attributes with a fill rate of greater than 25% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Attribute Fill Rate 25% to 75%\":\n return(<>\n

    The value shown on this card represents the contribution of attributes with a fill rate greater than 25% but less than or equal to 75% to the overall fill rate at a data source level by default or as per the applied filters. If the top filter is selected till attribute, then this card value shows the actual fill rate of the selected attribute if it falls in this category.

    \n \n );\n case \"Total number of Rows\":\n return(<>\n

    The value shown on this card is the total number of rows present in the datasets of the selected datasource by default or based on the applied filters.

    \n \n );\n case \"Datasets with Recency < One Day\":\n return(<>\n

    The value shown on this card is a percentage of total datasets having recency less than or equal to one day in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"Datasets with Recency < One Week\":\n return(<>\n

    The value shown on this card is a percentage of total datasets having recency less than or equal to one week in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"Datasets with Recency < One Month\":\n return(<>\n

    The value shown on this card is a percentage of total datasets having recency less than or equal to one month in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"Datasets with Recency > One Month\":\n return(<>\n

    The value shown on this card is a percentage of total datasets having recency greater than one month in the selected data source by default or based on the applied filters. The card is applicable at a dataset or data source only.

    \n \n );\n case \"URL Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “URL” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"SSN Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “SSN” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"IP Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “IP” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Http Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected to contain “HTTP response” in the selected data source by default or in the attributes present as per the applied filters.

    \n \n );\n case \"Gender Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “gender” in the selected data source by default or in the attributes present as per the applied filters.

    \n \n );\n case \"Email Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “email” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Date Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “date” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Normalization Consistency\":\n return(<>\n
    Visualization
    \n

    1. Visualization captures the different data accuracy issues present across the data source at a glimse.

    \n

    2. Different types of accuracy issues are represented as bigger circles and are surrounded by the attribute names affected by the respective issue.

    \n \n );\n case \"No. of Datasets having Duplicate\":\n return(<>\n

    The value shown on this card is the count of datasets having duplicate rows in the selected data source by default or based on the applied filters.

    \n \n );\n case \"Boolean Conformity Errors\":\n return(<>\n

    The value shown on this card is an average of the conformity errors on the attributes auto-detected as “boolean” in the selected data source by default or the attributes present as per the applied filters.

    \n \n );\n case \"Total no of attributes having duplicate values\":\n return(<>\n

    The value shown on this card is the count of attributes having duplicate values in the selected data source by default or based on the applied filters.

    \n \n );\n case \"Total no of duplicate rows in Datasets\":\n return(<>\n

    The value shown on this card is the count of rows having duplicate values in the selected data source by default or based on the applied filters.

    \n \n );\n default:\n return ''\n }\n }\n\n renderAttributeCard(name){\n switch(name) {\n case \"Unique values\":\n return(<>\n

    The value on this card represents the count of unique values present in the selected attribute.

    \n \n );\n case \"Duplicate values\":\n return(<>\n

    The value on this card represents the count of duplicate values present in the selected attribute.

    \n \n );\n case \"Empty values\":\n return(<>\n

    The value on this card represents the count of empty rows for the selected attribute.

    \n \n );\n case \"Error values\":\n return(<>\n

    The value on this card represents the number of different types of data quality errors found in the selected attribute.

    \n \n );\n default:\n return '';\n \n }\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n showIcon(key) {\n\n\n\n switch (key) {\n case \"Data Consistency Errors\":\n return \n \n \n \n ;\n \n case \"Data Accuracy Errors\":\n // code block\n return \n \n \n \n \n \n \n \n \n \n \n case \"Data Conformity Errors\":\n return \n \n \n \n \n \n case \"Data Timeliness\":\n return \n \n \n \n \n case \"Data Completeness\":\n return \n \n \n \n \n \n \n \n \n case \"Attribute Fill Rate < 25%\":\n return \n \n \n \n \n \n \n case \"Attribute Fill Rate 25% to 75%\":\n return \n \n \n \n \n \n \n case \"Attribute Fill Rate > 75%\":\n return \n \n \n \n \n \n case \"Total number of Rows\":\n return \n \n \n \n \n \n \n case \"Data Outliers\":\n return \n \n \n \n \n \n case \"Datasets with Recency < One Day\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n \n case \"Datasets with Recency < One Week\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n case \"Datasets with Recency < One Month\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n case \"Datasets with Recency > One Month\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n case \"Credit Card Conformity Errors\":\n return \n \n \n \n \n \n \n \n case \"Date Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n case \"Email Conformity Errors\":\n return \n \n \n \n \n \n \n \n case \"Gender Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n case \"Http Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n case \"IP Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n \n case \"SSN Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n case \"URL Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n case \"No. of Datasets having Duplicate\":\n return \n \n \n \n \n \n \n case \"Total no of attributes having duplicate values\":\n return \n \n \n \n \n \n \n \n case \"Total no of duplicate rows in Datasets\":\n return \n \n \n \n \n \n \n \n \n \n \n case \"Categorical Consistency Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n case \"Data Type Consistency Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n \n \n case \"Normalization Consistency Errors\":\n return \n \n \n \n \n \n \n \n \n \n \n \n case \"No of Numerical Attributes with Outliers\":\n return \n \n \n \n \n \n case \"No of Numerical Attributes without Outliers\":\n return \n \n \n \n \n \n \n case \"Boolean Conformity Errors\":\n return \n \n \n \n \n \n \n \n \n default:\n return \n \n \n \n \n \n \n \n \n \n \n // code block\n }\n }\n\n render() {\n return (\n <>\n
    \n {\n this.state.showModal ?\n : \"\"\n }\n {\n this.props.cardData.map((data) => {\n // let cardBackground = `card-flush;\n let cardBackground = `bg-light-${data.background}`.replace(\"dashboard-stat-\", \"\");\n let textColor = `${data.textColor}`;\n // let suffixText = \"%\";\n // if (data.metric_name === \"Data Drift\" || data.metric_name === \"Total number of Rows\") {\n // suffixText = \"\";\n // } else if (data.metric_name === \"Data Timeliness\") {\n // suffixText = \"days\";\n // }\n return (\n
    \n
    \n {/*
    }>\n
    \n */}\n \n {data.metric_name}\n \n {this.renderContent(data.metric_name)}\n \n \n }\n >\n
    \n \n
    \n
    \n
    \n
    \n
    \n {this.showIcon(data.metric_name)}\n
    \n
    \n
    {data.metric_name}
    \n {/*
    {data.metric_name}
    */}\n {this.props.newCardData !== undefined && this.props.newCardData[data.metric_name] !== undefined && this.props.newCardData[data.metric_name] !== null && this.props.newCardData[data.metric_name] !== \"NaN %\" ?\n

    {this.props.newCardData[data.metric_name]}

    \n :\n

    NA

    \n }\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n })\n }\n \n \n );\n }\n}\n\nexport default ProfileCardData;","import { ui_service_ip } from \"./ip_details\";\nimport moment from 'moment';\nimport {\n METRIC_SCALE_MAPPING,\n // metricCategory, \n // metricMapping \n} from \"../utils/constant\"\nimport { call_post_api, call_get_api } from \"./event_handling\"\nimport { normalizeChildDatasetName } from \"../utils/attribute_name_utils\";\nimport {\n FILL_RATE_RANGE_ONE,\n FILL_RATE_RANGE_TWO,\n FILL_RATE_RANGE_THREE,\n ROW_COUNT_METRIC_CARD,\n OUTLIERS_METRIC_CARD,\n WITH_OUTLIERS_METRIC_CARD,\n WITHOUT_OUTLIERS_METRIC_CARD,\n\n RECENCY_METRIC_CARD_ONE,\n RECENCY_METRIC_CARD_TWO,\n RECENCY_METRIC_CARD_THREE,\n RECENCY_METRIC_CARD_FOUR,\n\n CONFORMITY_METRIC_KEYS,\n cardTitlesMap,\n UNIQUENESS_METRIC_CARD_ONE,\n UNIQUENESS_METRIC_CARD_TWO,\n UNIQUENESS_METRIC_CARD_THREE,\n\n CONSISTENCY_MAPPING,\n CONSISTENCY_KEY,\n RELATIONSHIP_METRIC_KEYS,\n} from \"../utils/constant\"\n\nimport {extractDatasetInfoForMonitorListView} from \"./common_utils\"\n\nimport {\n normalizeAttributeName,\n} from \"./attribute_name_utils\";\n\n\nexport function getDateObject(timeStr) {\n if(timeStr === undefined){\n return timeStr\n }\n let dateObj;\n let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (isSafari) {\n dateObj = new Date(timeStr.replace(/\\s/, 'T'));\n if(dateObj === \"Invalid Date\"){\n dateObj = new Date(timeStr);\n }\n } else {\n dateObj = new Date(timeStr);\n }\n return dateObj;\n}\n\n\nlet teamID = localStorage.getItem('team_id')\nlet tenantData = { \"tenant_id\": teamID };\nexport function formDatasetsList(datasets) {\n let childDatasets = []\n let parentDatasets = []\n let child = {}\n let childDatasetMap = []\n parentDatasets.push({ \"integration_id\": \"-1\", \"label\": \"All\", \"value\": \"*\" })\n datasets.map((data) => {\n if (data.is_child_dataset === true) {\n data['label'] = normalizeChildDatasetName(data.label)\n childDatasets.push(data)\n if (child[data.parent_data_set_id] === undefined) {\n child[data.parent_data_set_id] = [{\n \"label\": \"All\", \"value\": \"*\",\n is_child_dataset: true,\n parent_data_set_id: data.parent_data_set_id\n }]\n }\n child[data.parent_data_set_id].push(data)\n if (childDatasetMap[data.parent_data_set_id] === undefined) {\n childDatasetMap[data.parent_data_set_id] = []\n }\n childDatasetMap[data.parent_data_set_id] = child[data.parent_data_set_id].concat(data)\n\n\n }\n else {\n parentDatasets.push(data)\n }\n return data;\n })\n let finalList = []\n parentDatasets.map((data) => {\n if (child[String(data.value)] !== undefined) {\n let partitionsLength = child[String(data.value)].length - 1\n data['label'] = data.label + '( ' + String(partitionsLength) + ' Partitions)'\n data['children'] = child[String(data.value)]\n finalList.push(data)\n }\n else {\n finalList.push(data)\n }\n return data;\n }\n )\n finalList = { \"childDatasetMap\": child, \"parentDatasets\": finalList }\n return finalList\n}\n\nexport function formAttributesDict(attributes) {\n let finalDict = {}\n attributes.map((data) => {\n let id = data.dataset_id === undefined ? data.data_set_id : data.dataset_id\n if (finalDict[id] === undefined) {\n finalDict[id] = []\n // finalDict[id] = [{\n // \"label\": \"All\", \"value\": \"*\",\"data_set_id\":id,\"dataset_id\":id\n // }]\n }\n\n data['dataset_id'] = id\n finalDict[id].push(data)\n return data;\n })\n return finalDict\n}\n\nexport function getMappedMetadatas(){\n\n call_get_api(ui_service_ip, \"metadata/mapping/latest\",{\"tenant_id\":localStorage.getItem('team_id')}).then(\n (result) => {\n let mappedDatasetInfo = extractDatasetInfoForMonitorListView(result.meta_data);\n this.setState({metaData:mappedDatasetInfo, mappedDatasetInfo:mappedDatasetInfo, showLoader: false})\n } \n )\n}\n\nexport function getFollowAttributes() {\n let endPoint = \"follow_attributes\";\n call_get_api(ui_service_ip, endPoint, { \"tenant_id\": localStorage.getItem('team_id') }).then(\n (result) => {\n if (result !== undefined && result !== null) {\n this.setState({follow_attributes:result.follow_attributes})\n }\n }\n );\n }\n\n// export function getMetricsInfo() {\n// const endPoint = \"alert_applicable_metrics\";\n// call_get_api(ui_service_ip, endPoint,{\"tenant_id\":localStorage.getItem('team_id')}).then(\n// (result) => {\n// if (result === undefined || result === null) {\n// // const error = `Unable to fetch metadata details for tenant: ${tenantID}`;\n// // postUIlogs(error);\n// return;\n// }\n// let metadataDetails = result.metadata_details\n// this.setState({metrics_info:metadataDetails})\n// }\n// );\n// }\n\n\nexport function getMetaDatas(tab = null, maxLastProfilingTime = null) {\n let endPoint = \"metadata_mapping\";\n let data = { \"tenant_id\": localStorage.getItem('team_id') }\n\n let api2 = false\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null && result.data !== undefined) {\n let filterData = {}\n filterData[\"environmentOptions\"] = result.data['environments']\n filterData[\"datasourceOptions\"] = result.data['integrations']\n filterData[\"datasetsOptions\"] = result.data['datasets']\n filterData[\"attributesOptions\"] = result.data['attributes']\n let childDatasets = []\n\n // TODO Need to append values in existingList without this iteration\n let existingList = []\n if(result.data !== null && result.data !== undefined){\n result.data['environments'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n result.data['integrations'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n result.data['datasets'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n result.data['attributes'].map((data) =>\n existingList = existingList.concat(data.value)\n )\n\n if(result.data['integrations'].length === 1 && tab === null){\n // Checking the In-progress status for the First Configured Datasource\n const teamId = localStorage.getItem('team_id');\n let data = {\"tenant_id\":teamId, \"integration_id\": result.data['integrations'][0].value}\n let endPoint = \"dataset_progress_info\";\n call_get_api(ui_service_ip, endPoint,data).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response !== null && response.code === 200) {\n api2 = true\n this.setState({progressStatus: response[\"progress_percentage\"]});\n }\n if(response[\"progress_percentage\"] !== 100){\n this.setState({inProgress:true, showLoader:false})\n }\n else{\n this.setState({inProgress:false, showLoader:false})\n }\n });\n }\n else if (result.data['integrations'].length === 0){\n api2=true\n this.setState({noDataFound:true})\n }\n else{\n api2=true\n this.setState({inProgress:false, noDataFound:false})\n }\n }\n \n this.setState({ existingList: existingList })\n // TODO Need to append values in existingList without this iteration\n\n\n let integrationId;\n let preSeletedDataset, preSeletedAttribute;\n\n if (tab === 'attribute') {\n // SetUp Datasource Options for environment\n let mappedDatasources = {}\n filterData['datasourceOptions'].map((data) => {\n if (mappedDatasources[data.env_id] === undefined) {\n mappedDatasources[data.env_id] = []\n }\n mappedDatasources[data.env_id].push(data)\n return data;\n })\n\n // Map datasets for the datasource\n let mappedDatasets = {}\n filterData['datasetsOptions'].map((data) => {\n if (mappedDatasets[data.integration_id] === undefined) {\n mappedDatasets[data.integration_id] = []\n }\n mappedDatasets[data.integration_id].push(data);\n return data;\n })\n // Map Attributes for the datasets\n let mappedAttributes = {}\n filterData['attributesOptions'].map((data) => {\n let id = data.dataset_id === undefined ? data.data_set_id : data.dataset_id\n data['dataset_id'] = id\n if (mappedAttributes[data.dataset_id] === undefined) {\n mappedAttributes[data.dataset_id] = []\n }\n\n if (data.dataset_id !== undefined) {\n mappedAttributes[data.dataset_id].push(data)\n }\n return data;\n })\n\n this.setState({\n environmentOptions: result.data['environments'],\n dataSourceOptions: mappedDatasources,\n dataSetsOptions: mappedDatasets,\n attributesOptions: mappedAttributes,\n })\n this.setState({ processTiming: maxLastProfilingTime })\n\n integrationId = maxLastProfilingTime.integration_id\n // let environment = this.state.environmentOptions\n let datasource = this.state.dataSourceOptions\n let dataset = this.state.dataSetsOptions\n let attribute = this.state.attributesOptions\n let preSelectedEnvironment = []\n result.data['integrations'].map((data) => {\n if (data.value !== null && data.value !== undefined && data.value === Number(integrationId)) {\n preSelectedEnvironment = data\n }\n return data;\n\n })\n\n // let chipData = []\n // eslint-disable-next-line\n this.setState({ preSelectedEnvironment, preSelectedEnvironment })\n let preSelectedDataSource = datasource[preSelectedEnvironment.value]\n // eslint-disable-next-line\n this.setState({ preSelectedDataSource, preSelectedDataSource })\n\n\n preSeletedDataset = dataset[integrationId][0]\n this.setState({ preSelectedDatasets: dataset[integrationId] })\n\n preSeletedAttribute = attribute[preSeletedDataset.value][0]\n }\n\n for (let level in result.data) {\n // eslint-disable-next-line\n result.data[level].filter((data) => {\n if (data.is_child_dataset !== undefined && data.is_child_dataset === true) {\n childDatasets.push(data.value)\n }\n return data;\n })\n }\n let datasets = result.data['datasets']\n\n let formDatasetOption = formDatasetsList(datasets)\n let attributesList = filterData[\"attributesOptions\"]\n let formAttributeOption = formAttributesDict(attributesList)\n\n filterData[\"childDatasets\"] = childDatasets\n filterData[\"childDatasetMap\"] = formDatasetOption['childDatasetMap']\n filterData[\"parentDatasets\"] = formDatasetOption['parentDatasets']\n filterData[\"attributesOptions\"] = formAttributeOption\n\n\n\n if (tab === 'attribute') {\n //Need to add default values\n let datasourceOptions = filterData[\"datasourceOptions\"].filter((data) =>\n data.value === integrationId\n )\n\n let attr_datasource_value;\n let attr_datasource_id;\n\n if (datasourceOptions.length > 0) {\n attr_datasource_value = datasourceOptions[0][\"label\"];\n attr_datasource_id = datasourceOptions[0][\"value\"];\n }\n\n \n let datasetsOptions = filterData[\"datasetsOptions\"].filter((data) =>\n parseInt(data.value) === parseInt(preSeletedDataset.value)\n )\n\n let attr_dataset_value;\n let attr_dataset_id;\n if (datasetsOptions.length > 0) {\n attr_dataset_value = datasetsOptions[0][\"label\"];\n attr_dataset_id = datasetsOptions[0][\"value\"];\n }\n // \n this.attributeProfileFilterSubmit(preSeletedDataset.value, preSeletedAttribute.value)\n\n let attributesOptions = [];\n if (filterData[\"attributesOptions\"][parseInt(preSeletedDataset.value)] !== undefined) {\n attributesOptions = filterData[\"attributesOptions\"][preSeletedDataset.value].filter((data) =>\n data.value === preSeletedAttribute.value\n )\n }\n\n let attr_attribute_value;\n let attr_attribute_id;\n if (attributesOptions.length > 0) {\n attr_attribute_value = attributesOptions[0][\"label\"];\n attr_attribute_id = attributesOptions[0][\"value\"];\n }\n\n\n let dataset_data = filterData[\"datasetsOptions\"].filter((data) =>\n parseInt(data.integration_id) === parseInt(preSeletedDataset.integration_id) || data.integration_id === \"-1\"\n )\n\n\n let attribute_data = filterData[\"attributesOptions\"][parseInt(preSeletedDataset.value)].filter((data) =>\n parseInt(data.dataset_id) === parseInt(preSeletedDataset.value)\n )\n let sortedDatasetsOptions = dataset_data.sort((a, b) => a.value - b.value)\n\n this.setState({\n attr_filter_datset_option: sortedDatasetsOptions,\n attr_filter_attr_option: attribute_data,\n attr_datasource_value: attr_datasource_value,\n attr_datasource_id: attr_datasource_id,\n attr_dataset_value: attr_dataset_value,\n attr_dataset_id: attr_dataset_id,\n attr_attribute_value: attr_attribute_value,\n attr_attribute_id: attr_attribute_id\n });\n\n }\n\n let showLoader = true\n if(api2 === true){\n showLoader = false\n }\n this.setState({\n initialData: { \"value\": filterData, \"label\": \"tempvalue\" }, filterData: filterData, showLoader:showLoader \n })\n }\n }\n );\n}\n\n/*function numAvg(num) {\n var total = 0;\n for (var i = 0; i < num.length; i++) {\n total += num[i];\n }\n return total / num.length;\n}*/\n\n\nfunction getAggregatedTotalData(totalDatas, d, existingList) {\n /*if (existingList !== undefined && existingList !== null && existingList.includes(Number(d.dataset_id))) {\n let metricValue;\n let datasetLevel = totalDatas[d.metric_type][\"dataset_level\"]\n if (datasetLevel === null || datasetLevel === undefined) {\n totalDatas[d.metric_type][\"dataset_level\"] = {}\n }\n let metricData = totalDatas[d.metric_type][\"dataset_level\"][d.dataset_id]\n if (metricData === null || metricData === undefined) {\n d[\"count\"] = 1\n d[\"metric_list\"] = [d[\"metric_value\"]]\n metricValue = d[\"metric_value\"]\n d[\"metrics_threshold_list\"] = [d[\"metrics_threshold\"]]\n totalDatas[d.metric_type][\"dataset_level\"][d.dataset_id] = d\n } else {\n let curr_count = metricData[\"count\"] + 1\n metricData[\"metric_list\"].push(d[\"metric_value\"])\n metricData[\"metrics_threshold_list\"].push(d[\"metrics_threshold\"])\n metricValue = numAvg(metricData[\"metric_list\"])\n metricData[\"metric_value\"] = metricValue\n metricData[\"metrics_threshold\"] = numAvg(metricData[\"metrics_threshold_list\"])\n metricData[\"has_error\"] = d[\"has_error\"]\n metricData[\"count\"] = curr_count\n totalDatas[d.metric_type][\"dataset_level\"][d.dataset_id] = metricData\n }\n }*/\n let datasetLevel = totalDatas[d.metric_type][\"dataset_level\"]\n if (datasetLevel === null || datasetLevel === undefined) {\n totalDatas[d.metric_type][\"dataset_level\"] = {}\n }\n totalDatas[d.metric_type][\"dataset_level\"][d.dataset_id] = d\n return totalDatas\n}\n\nfunction getAttrAggregatedTotalData(totalDatas, d, existingList) {\n /*if (existingList !== undefined && existingList !== null && existingList.includes(Number(d.dataset_id))) {\n let metricValue;\n let datasetLevel = totalDatas[d.metric_type][\"attr_level\"]\n if (datasetLevel === null || datasetLevel === undefined) {\n totalDatas[d.metric_type][\"attr_level\"] = {}\n }\n let metricData = totalDatas[d.metric_type][\"attr_level\"][d.attribute_id]\n if (metricData === null || metricData === undefined) {\n d[\"count\"] = 1\n d[\"metric_list\"] = [d[\"metric_value\"]]\n metricValue = d[\"metric_value\"]\n d[\"metrics_threshold_list\"] = [d[\"metrics_threshold\"]]\n totalDatas[d.metric_type][\"attr_level\"][d.attribute_id] = d\n } else {\n let curr_count = metricData[\"count\"] + 1\n metricData[\"metric_list\"].push(d[\"metric_value\"])\n metricData[\"metrics_threshold_list\"].push(d[\"metrics_threshold\"])\n metricValue = numAvg(metricData[\"metric_list\"])\n metricData[\"metric_value\"] = metricValue\n metricData[\"metrics_threshold\"] = numAvg(metricData[\"metrics_threshold_list\"])\n metricData[\"has_error\"] = d[\"has_error\"]\n metricData[\"count\"] = curr_count\n totalDatas[d.metric_type][\"attr_level\"][d.attribute_id] = metricData\n }\n }*/\n let datasetLevel = totalDatas[d.metric_type][\"attr_level\"]\n if (datasetLevel === null || datasetLevel === undefined) {\n totalDatas[d.metric_type][\"attr_level\"] = {}\n }\n totalDatas[d.metric_type][\"attr_level\"][d.attribute_id] = d\n return totalDatas\n}\n\n\nfunction getAggregatedData(totalDatas) {\n let attrLevelDetails = {}\n let datasetLevelDetails = {}\n let metrics = []\n\n for (const [key, value] of Object.entries(totalDatas)) {\n metrics.push(key)\n let dataset_level = value[\"dataset_level\"];\n let attr_level = value[\"attr_level\"]\n if (dataset_level !== null && dataset_level !== undefined) {\n for (const [dKey, dValue] of Object.entries(dataset_level)) {\n let data = {}\n data[dValue[\"metric_type\"]] = dValue[\"metric_value\"]\n data[\"error\"] = dValue[\"has_error\"]\n if (datasetLevelDetails[dKey] === null || datasetLevelDetails[dKey] === undefined) {\n datasetLevelDetails[dKey] = []\n }\n datasetLevelDetails[dKey].push(data)\n }\n }\n if (attr_level !== null && attr_level !== undefined) {\n for (const [aKey, aValue] of Object.entries(attr_level)) {\n let data = {}\n data[aValue[\"metric_type\"]] = aValue[\"metric_value\"]\n data[\"error\"] = aValue[\"has_error\"]\n if (attrLevelDetails[aKey] === null || attrLevelDetails[aKey] === undefined) {\n attrLevelDetails[aKey] = []\n }\n attrLevelDetails[aKey].push(data)\n }\n }\n }\n return { \"dataset_level\": datasetLevelDetails, \"attr_level\": attrLevelDetails, \"metric_list\" : metrics }\n}\n\nexport function formProfileData(profile_details, existingList = null) {\n let totalDatas = {}\n // let bk = 0\n let allAttributes = []\n let allDatasets = []\n // let overAlldata = []\n for (let i in profile_details) {\n\n let datasetLevel = profile_details[i]['dataset_level']\n let attributeLevel = profile_details[i]['attribute_level']\n for (let d of datasetLevel) {\n if (totalDatas[d.metric_type] === undefined) {\n totalDatas[d.metric_type] = {}\n }\n // allDatasets.push(totalDatas)\n totalDatas = getAggregatedTotalData(totalDatas, d, existingList)\n //totalDatas[d.metric_type][d.dataset_id] = d\n }\n\n for (let key in attributeLevel) {\n if (attributeLevel[key] === null) {\n attributeLevel[key] = {}\n }\n }\n // let atb = {}\n\n // Combined both DatasetLevel and attribute level\n for (let key in attributeLevel) {\n for (let a of attributeLevel[key]) {\n if (totalDatas[a.metric_type] === undefined) {\n totalDatas[a.metric_type] = {}\n }\n // allAttributes.push(a)\n totalDatas = getAttrAggregatedTotalData(totalDatas, a, existingList)\n //totalDatas[a.metric_type][a.attribute_id] = a\n }\n }\n }\n let aggDatas = getAggregatedData(totalDatas)\n let allDatas = {\n 'totalDatas': totalDatas, 'allDatasets': allDatasets, 'allAttributes': allAttributes,\n 'aggDatas': aggDatas\n }\n return allDatas\n}\n\nexport function formTableData(data, tab, filterDatas = null) {\n\n\n let headers = [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"]\n let tableRows = [];\n\n let relationShipTableRows = {\n \"headers\": headers,\n \"data\": tableRows\n };\n\n if (data === undefined || data === null) {\n return data;\n }\n let cardData = {}\n\n\n let totalRows = 0;\n let outlierCount = 0;\n let NonOutlierCount = 0;\n let outlierIndex = 0\n\n let recencyOne = 0;\n let recencyTwo = 0;\n let recencyThree = 0;\n let recencyFour = 0;\n\n\n let datasetWithDuplicates = 0;\n let duplicateAttributeCount = 0;\n let duplicateRows = 0;\n let overAllDatas = []\n for (let metric in data) {\n\n let recencyIndex = 0;\n\n let index = 0;\n\n let rangeOne = 0;\n let rangeTwo = 0;\n let rangeThree = 0;\n\n let rangeOneIndex = 0;\n let rangeTwoIndex = 0;\n let rangeThreeIndex = 0;\n\n if (tab === 2 && metric === \"Fill Rate\") {\n cardData[FILL_RATE_RANGE_ONE] = \"NA\"\n cardData[FILL_RATE_RANGE_TWO] = \"NA\"\n cardData[FILL_RATE_RANGE_THREE] = \"NA\"\n cardData[FILL_RATE_RANGE_THREE] = \"NA\"\n }\n else if (tab === 2 && metric === \"Row Count\") {\n cardData[ROW_COUNT_METRIC_CARD] = \"NA\"\n }\n else if (tab === 3 && metric === \"Data Outlier\") {\n cardData[OUTLIERS_METRIC_CARD] = \"NA\"\n cardData[WITH_OUTLIERS_METRIC_CARD] = \"NA\"\n cardData[WITHOUT_OUTLIERS_METRIC_CARD] = \"NA\"\n }\n else if (tab === 4 && metric === \"Recency\") {\n cardData[RECENCY_METRIC_CARD_ONE] = \"NA\"\n cardData[RECENCY_METRIC_CARD_TWO] = \"NA\"\n cardData[RECENCY_METRIC_CARD_THREE] = \"NA\"\n cardData[RECENCY_METRIC_CARD_FOUR] = \"NA\"\n\n }\n else if (CONFORMITY_METRIC_KEYS.includes(metric)) {\n cardData[cardTitlesMap[metric]] = \"NA\"\n }\n else if (tab === 7 && metric === \"Unique Values\") {\n cardData[UNIQUENESS_METRIC_CARD_ONE] = \"NA\"\n cardData[UNIQUENESS_METRIC_CARD_TWO] = \"NA\"\n cardData[UNIQUENESS_METRIC_CARD_THREE] = \"NA\"\n }\n\n\n\n for (let level in data[metric]) {\n let metricValue = 0;\n\n index = 0\n let totalRangeIndex = 0\n let totalRecencyIndex = 0\n let totalOutliers = 0\n let dataValues = data[metric][level]\n\n /**Filter values under Metric level iteration for card data */\n for (let key in dataValues) {\n if (level === \"dataset_level\") {\n if (filterDatas !== null && filterDatas['fiteredDatseset'] !== undefined) {\n if (filterDatas['fiteredDatseset'].includes(Number(key))) {\n // continue\n }\n else {\n continue\n }\n }\n }\n if (level === \"attr_level\") {\n if (filterDatas !== null && filterDatas['fitlerdAttr'] !== undefined && filterDatas['fitlerdAttr'].length > 0) {\n if (filterDatas['fitlerdAttr'].includes(Number(key))) {\n // continue\n }\n else {\n continue\n }\n }\n }\n }\n\n for (let key in dataValues) {\n let values = dataValues[key]\n\n /** To handle values like -1 will be skipping the iteration */\n\n if (values.metric_value < 0) {\n // This Will Restrict storing NA or -1 Values in Table and attribute/ datasets with this value will be skipped\n continue;\n }\n\n overAllDatas = overAllDatas.concat(values)\n\n if (filterDatas !== null && Object.keys(filterDatas).length > 0) {\n // if (level !== \"filterdDatsource\" && level !== \"fitlerdDate\" && filterDatas[level].length > 0) {\n\n // }\n if (values.dataset_id !== undefined && filterDatas['fiteredDatseset'] !== undefined) {\n /**Applying Filter for Dataset level */\n if (filterDatas['fiteredDatseset'].includes(values.dataset_id)) {\n // continue;\n }\n else {\n // skip if current data is not in filtered value\n continue;\n }\n }\n if (values.attribute_id !== undefined && filterDatas['fitlerdAttr'] !== undefined && filterDatas['fitlerdAttr'].length > 0) {\n /**Applying Filter for Attribute level */\n\n if (filterDatas['fitlerdAttr'].includes(values.attribute_id)) {\n // continue;\n }\n else {\n // skip if current data is not in filtered value\n continue;\n }\n }\n }\n\n // Skip Attribute level computation for Metrics : Timeliness && Recency \n if (values.attribute_id !== undefined && (values.metric_type === \"Data Timeliness\" || values.metric_type === \"Recency\")) {\n continue\n }\n\n let rowData = [];\n let sufix = METRIC_SCALE_MAPPING[metric]\n let metric_value = values.metric_value\n\n\n /** Completeness Tab Cards computation */\n\n /**Fill Rate metrics */\n if (metric === \"Fill Rate\" && tab === 2 && level === \"attr_level\") {\n if (metric_value < 25) {\n rangeOne = rangeOne + metric_value\n rangeOneIndex = rangeOneIndex + 1\n }\n else if (metric_value >= 25 && metric_value <= 75) {\n rangeTwo = rangeTwo + metric_value\n rangeTwoIndex = rangeTwoIndex + 1\n }\n else if (metric_value > 75) {\n rangeThree = rangeThree + metric_value\n rangeThreeIndex = rangeThreeIndex + 1\n }\n totalRangeIndex = totalRangeIndex + 1\n }\n /**Row Count metrics */\n if (metric === \"Row Count\") {\n totalRows = totalRows + metric_value\n }\n /** Completeness Tab Cards computation Ends */\n\n /**Accuracy Card Tab value computation Starts */\n // Totally Compute values for three cards\n\n if (values.metric_type === \"Data Outlier\" && tab === 3 && level === \"attr_level\") {\n outlierIndex = outlierIndex + 1\n if (metric_value === 0) {\n NonOutlierCount = NonOutlierCount + 1\n }\n else if (metric_value > 0) {\n outlierCount = outlierCount + 1\n }\n totalOutliers = totalOutliers + 1\n }\n\n /**Accuracy Card Tab value computation Ends */\n\n\n /** Timeliness Tab Card value computation */\n //Four Cards value computations\n if (values.metric_type === \"Recency\") {\n if (metric_value < 1) {\n recencyOne = recencyOne + 1\n }\n if (metric_value > 0 && metric_value < 7) {\n recencyTwo = recencyTwo + 1\n }\n if (metric_value > 7 && metric_value < 30) {\n recencyThree = recencyThree + 1\n }\n if (metric_value > 30) {\n recencyFour = recencyFour + 1\n }\n totalRecencyIndex = totalRecencyIndex + 1\n }\n\n if (values.metric_type === \"Data Timeliness\" && level === \"dataset_level\") {\n recencyIndex = recencyIndex + 1\n }\n /** Timeliness Tab Card value computation End */\n\n /**Uniqueness Tab Card value computation */\n if (metric === \"Unique Values\") {\n if (values.attribute_id !== undefined && values.metric_value !== values.row_count) {\n if(values.has_duplicates===true){\n duplicateAttributeCount = duplicateAttributeCount + 1\n }\n }\n else if (values.attribute_id === undefined && values.metric_value !== values.row_count) {\n datasetWithDuplicates = datasetWithDuplicates + 1\n if(values.has_duplicates===true){\n duplicateRows = duplicateRows + values.duplicate_rows\n }\n }\n }\n\n if(metric === \"Unique Values\" && values.attribute_id === undefined){\n values['metric_type'] = \"Unique Rows\" \n }\n /**Uniqueness Tab Card value computation End */\n\n\n /** */\n let datasetName = \"-\";\n if (values.attribute_id !== undefined) {\n datasetName = values.dataset_name\n }\n else {\n datasetName = values.name\n }\n\n /**Handling floot value to decimal for whole Number values */\n if (metric_value % 1 !== 0) {\n metric_value = String(metric_value.toFixed(2)) + \" \" + sufix\n }\n else {\n metric_value = String(metric_value) + \" \" + sufix\n }\n\n rowData.push({ \"value\": values.integration_name, \"type\": \"td\" });\n rowData.push({ \"value\": normalizeChildDatasetName(datasetName), \"type\": \"td\" });\n rowData.push({ \"value\": values.attribute_id !== undefined ? normalizeAttributeName(values.name) : \"-\", \"type\": \"td\" });\n rowData.push({ \"value\": values.metric_type, \"type\": \"td\" });\n rowData.push({ \"value\": metric_value, \"type\": \"td\" });\n\n tableRows.push(rowData);\n\n\n // Allowed only for Attribute level and Recency level\n if(level === \"attr_level\" || metric === \"Data Timeliness\" || metric === \"recency\"){\n index = index + 1;\n metricValue = metricValue + values.metric_value\n }\n\n }\n\n if (metric === \"Data Timeliness\") {\n index = recencyIndex\n }\n\n\n /**TODO: Can be added these below conditions into separate function */\n\n /**Total Number of Condition ===> 7 */\n \n /**Card Value computation for Relationship Tab */\n // No of Cards ==> 5\n \n if (RELATIONSHIP_METRIC_KEYS.includes(metric)) {\n if (cardData[metric] !== undefined && metricValue > 0) {\n let current_value = metricValue / index\n cardData[metric] = (current_value + Number(cardData[metric])) / 2\n }\n else {\n if (metricValue >= 0 && index !== 0) {\n let new_value = metricValue / index\n cardData[metric] = new_value\n }\n }\n }\n\n /**Completeness Tab Adding values to the Cards */\n // No of Cards ==> 4\n else if (metric === \"Fill Rate\" && tab === 2 && level === \"attr_level\") {\n cardData[FILL_RATE_RANGE_ONE] = rangeOneIndex / totalRangeIndex * 100\n cardData[FILL_RATE_RANGE_TWO] = rangeTwoIndex / totalRangeIndex * 100\n cardData[FILL_RATE_RANGE_THREE] = rangeThreeIndex / totalRangeIndex * 100\n } \n else if (metric === \"Row Count\") {\n cardData[ROW_COUNT_METRIC_CARD] = totalRows\n }\n /**Completeness Tab Adding values to the Cards Ends */\n\n\n /** Accuracy Tab Adding card values */\n // No of Cards ==> 3\n else if (metric === \"Data Outlier\" && level === \"attr_level\") {\n cardData[OUTLIERS_METRIC_CARD] = metricValue > 0 ? metricValue / index : metricValue //(outlierCount + NonOutlierCount) / totalOutliers\n cardData[WITH_OUTLIERS_METRIC_CARD] = outlierCount\n cardData[WITHOUT_OUTLIERS_METRIC_CARD] = NonOutlierCount\n }\n /** Accuracy Tab Adding card values Ends */\n\n\n /**Timeliness Tab Adding card Values */\n // No of Cards ==> 4\n else if (metric === \"Recency\") {\n // if (metricValue > 0) {\n cardData[RECENCY_METRIC_CARD_ONE] = (recencyOne > 0 ? recencyOne / totalRecencyIndex * 100 : recencyOne)\n cardData[RECENCY_METRIC_CARD_TWO] = (recencyTwo > 0 ? recencyTwo / totalRecencyIndex * 100 : recencyTwo)\n cardData[RECENCY_METRIC_CARD_THREE] = (recencyThree > 0 ? recencyThree / totalRecencyIndex * 100 : recencyThree)\n cardData[RECENCY_METRIC_CARD_FOUR] = (recencyFour > 0 ? recencyFour / totalRecencyIndex * 100 : recencyFour)\n // }\n }\n /**Timeliness Tab Adding card Values Ends */\n\n\n /**Conformity Tabs Adding cards values */\n // No of Cards ==> 9\n else if (CONFORMITY_METRIC_KEYS.includes(metric) && level === \"attr_level\") {\n if (metricValue >= 0 && metricValue !== -1) {\n metricValue = metricValue > 0 ? metricValue / index : metricValue\n cardData[cardTitlesMap[metric]] = metricValue\n }\n }\n /**Conformity Tabs Adding cards values Ends*/\n\n\n /**Uniqueness Tabs Adding cards values */\n // No of Cards ==> 3\n else if (metric === \"Unique Values\" && tab === 7 && level === \"attr_level\") { //&& tab === 7 && level !== \"attr_level\") {\n cardData[UNIQUENESS_METRIC_CARD_ONE] = datasetWithDuplicates\n cardData[UNIQUENESS_METRIC_CARD_TWO] = duplicateAttributeCount\n cardData[UNIQUENESS_METRIC_CARD_THREE] = duplicateRows\n \n }\n /**Accuracy Tabs Adding cards values Ends*/\n\n\n /**Consistency Tabs Adding cards values */\n // No of Cards ==> 3 \n else if (CONSISTENCY_KEY.includes(metric) && tab === 6 && level === \"attr_level\") {\n metricValue = metricValue / index\n cardData[CONSISTENCY_MAPPING[metric]] = metricValue\n }\n /**Consistency Tabs Adding cards values Ends*/\n\n\n else if(level === \"attr_level\") {\n if (cardData[metric] !== undefined && metricValue > 0) {\n let current_value = metricValue / index\n cardData[metric] = (current_value + Number(cardData[metric])) / 2\n }\n else {\n if (metricValue >= 0 && index !== 0) {\n metricValue = metricValue / index\n cardData[metric] = metricValue\n }\n }\n }\n /**TODO: Can be added these Above conditions into separate function */\n\n }\n }\n for (let metric in cardData) {\n let value = cardData[metric]\n /**Add suffix */\n if (value !== \"NA\") {\n if (value % 1 !== 0) {\n value = String(value.toFixed(2)) + \" \" + METRIC_SCALE_MAPPING[metric]\n }\n else {\n value = String(value) + \" \" + METRIC_SCALE_MAPPING[metric]\n }\n cardData[metric] = value\n }\n }\n let relationShipData = { tableData: relationShipTableRows, cardData: cardData, chart_data: overAllDatas }\n return relationShipData;\n}\n\n\n\nexport function getDatasForTab(params, filteredDatas = null, dataFilter = null) {\n let endPoint = \"profile/realtime\";\n params[\"tenant_id\"] = localStorage.getItem('team_id');\n params[\"start_date\"] = moment(params[\"start_date\"]).format(\"Y/MM/D\");\n params[\"end_date\"] = moment(params[\"end_date\"]).format(\"Y/MM/D\");\n \n let data = params\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null && result.response !== undefined) {\n \n let seletedDatasourceId = \"\"\n let seletedDatasourceName = \"\"\n let last_processed_time = \"\"\n\n if (result.integration_id !== undefined && result.integration_id !== null){\n seletedDatasourceId = result.integration_id\n seletedDatasourceName = result.integration_name\n last_processed_time = result.last_processed_time\n } \n \n if (Object.keys(result.response).length === 0 || Object.keys(result.response.profile_details).length === 0) {\n this.setState({\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n newCardData: [],\n relationShipchartData: [],\n\n datasetLevelChart: [],\n attributeLevelChart: [],\n\n chartDatas: [],\n\n showLoader: false,\n startDate: params[\"start_date\"],\n endDate: params[\"end_date\"],\n // filteredValues: {},\n seletedDatasourceId : seletedDatasourceId,\n seletedDatasourceName : seletedDatasourceName,\n last_processed_time : last_processed_time\n })\n return\n }\n\n let profile_details = result.response.profile_details\n\n let existingList = this.state.existingList;\n let profileData = formProfileData(profile_details, existingList);\n let relationShipData = []\n\n if (dataFilter === true) {\n relationShipData = formTableData(profileData['totalDatas'], params[\"tab_type\"], filteredDatas)\n }\n else {\n relationShipData = formTableData(profileData['totalDatas'], params[\"tab_type\"])\n }\n\n let datasetLevelChart = []\n let attributeLevelChart = []\n if (result.response.chart_details !== undefined) {\n result.response.chart_details['dataset_level'].map((data) => {\n if (this.state.existingList.includes(Number(data.dataSetId))) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n return datasetLevelChart\n }\n )\n result.response.chart_details['attribute_level'].map((data) => {\n if (this.state.existingList.includes(Number(data.dataSetId))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n return attributeLevelChart\n }\n )\n }\n\n this.setState({\n tableData: relationShipData['tableData'],\n newCardData: relationShipData['cardData'],\n datasetLevelChart: datasetLevelChart,\n attributeLevelChart: attributeLevelChart,\n chartDatas: relationShipData['chart_data'],\n showLoader: false,\n profileData: profileData,\n seletedDatasourceId: seletedDatasourceId,\n seletedDatasourceName: seletedDatasourceName,\n chartErrors: profileData['aggDatas'],\n // filteredValues: {},\n filteredDatas:filteredDatas,\n startDate: params[\"start_date\"],\n endDate: params[\"end_date\"],\n last_processed_time:last_processed_time\n })\n }\n }\n );\n}\n\nexport function profileTabPrefetch(filteredDatas, tab) {\n let endPoint = \"profile/prefetch\";\n let data = { \"tenant_id\": localStorage.getItem('team_id'), \"tab_type\": tab }\n call_get_api(ui_service_ip, endPoint, data).then(\n (result) => {\n if (result !== undefined && result !== null && result.response !== undefined) {\n let seletedDatasourceId = \"\"\n let seletedDatasourceName = \"\"\n let last_processed_time = \"\"\n\n if (result.integration_id !== undefined && result.integration_id !== null){\n seletedDatasourceId = result.integration_id\n seletedDatasourceName = result.integration_name\n last_processed_time = result.last_processed_time\n } \n\n if (Object.keys(result.response).length === 0 || Object.keys(result.response.profile_details).length === 0) {\n this.setState({\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n newCardData: [],\n relationShipchartData: [],\n datasetLevelChart: [],\n attributeLevelChart: [],\n chartDatas: [],\n showLoader: false,\n seletedDatasourceId: seletedDatasourceId,\n seletedDatasourceName: seletedDatasourceName,\n last_processed_time : last_processed_time\n })\n return\n }\n\n let profile_details = result.response.profile_details\n let existingList = this.state.existingList;\n let profileData = formProfileData(profile_details, existingList);\n let relationShipData = []\n\n if (Object.keys(filteredDatas).length>0) {\n relationShipData = formTableData(profileData['totalDatas'], tab, filteredDatas)\n }\n else {\n relationShipData = formTableData(profileData['totalDatas'], tab)\n }\n let datasetLevelChart = []\n let attributeLevelChart = []\n if (result.response.chart_details !== undefined) {\n result.response.chart_details['dataset_level'].map((data) => {\n if (this.state.existingList.includes(Number(data.dataSetId))) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n return datasetLevelChart\n }\n )\n result.response.chart_details['attribute_level'].map((data) => {\n if (this.state.existingList.includes(Number(data.dataSetId))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n return attributeLevelChart\n }\n )\n }\n this.setState({\n tableData: relationShipData['tableData'],\n newCardData: relationShipData['cardData'],\n datasetLevelChart: datasetLevelChart,\n attributeLevelChart: attributeLevelChart,\n chartDatas: relationShipData['chart_data'],\n showLoader: false,\n seletedDatasourceId: seletedDatasourceId,\n seletedDatasourceName: seletedDatasourceName,\n last_processed_time:last_processed_time,\n startDate: result.response.start_date,\n endDate: result.response.end_date,\n chartErrors: profileData['aggDatas'],\n // filteredValues: {},\n filteredDatas:filteredDatas,\n profileData: profileData,\n\n })\n }\n }\n );\n}\n\n\n\nexport function getInfo() {\n\n let startDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let endDate = moment().format('YYYY-MM-DD 23:59:59');\n\n // let profileRequestData = {\n // \"integrations\": 12,\n // \"tenant_id\": tenantData.tenant_id,\n // \"payload_start_time\": startDate,\n // \"payload_end_time\": endDate\n // }\n let page = 12;\n tenantData[\"page\"] = page;\n\n call_post_api(ui_service_ip, \"profile/data/relationship/latest\", tenantData).then(\n (result) => {\n // let infoData = {};\n if (result !== undefined && result !== null && result.integration !== null) {\n let profileRequestData = {\n \"integrations\": 35,\n \"tenant_id\": tenantData.tenant_id,\n \"payload_start_time\": startDate,\n \"payload_end_time\": endDate\n }\n call_post_api(ui_service_ip, \"profile/info/latest\", profileRequestData).then(\n (profileResult) => {\n // let infoData = {};\n if (profileResult !== undefined && profileResult !== null) {\n }\n }\n );\n }\n }\n );\n}\n\nexport function getLastProcessing(pmtype, integrationid = \"\") {\n const tenantId = localStorage.getItem('team_id');\n\n let endPoint = \"metrics_store_payload_created_time\";\n let data = { \"tenant_id\": tenantId }\n\n call_get_api(ui_service_ip, endPoint, data).then((response) => {\n if (response !== undefined && response.code === 200) {\n let results = response[\"results\"];\n if(results.length === 0 || this.state.inProgress === true){\n return\n }\n this.setState({profiletimeresult: results})\n if (pmtype === \"getonlyprofiletime\") {\n /**While clicking attributes from other tab will get into this if condition will be called */\n let datasourceOptions = response[\"results\"].filter((data) =>\n data.integration_id === integrationid\n )\n this.setState({processTiming: datasourceOptions[0],last_processed_time:datasourceOptions[0] })\n // this.getMetaDatas('attribute', datasourceOptions[0]);\n\n } else {\n /** By default while coming inside the attribute tab will get into this else condition */\n\n // Get integrations with atleast one dataset\n let integrations = []\n this.props.filterData['datasourceOptions'].filter((data)=> data.data_set_ids.length > 0 && integrations.push(data.value)) \n results = results.filter((data)=> integrations.includes(data.integration_id))\n\n //Getting the latest Datasource among the filtered integration\n let maxLastProfilingTime = results.reduce((a, b) => Number(getDateObject(a['last_processed_time'])) > Number(getDateObject(b['last_processed_time'])) ? a : b);\n this.getMetaDatas('attribute', maxLastProfilingTime);\n }\n }\n }\n )\n}\nexport function getIntegrations() {\n const team_id = localStorage.getItem('team_id');\n if (team_id !== undefined && team_id !== null) {\n let data = { tenant_id: team_id }\n call_get_api(ui_service_ip, \"/integrations\", data).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n } else if (response.code === 200) {\n let integrations = response[\"integrations\"];\n let integrationsMap = {};\n for (let integration of integrations) {\n integrationsMap[integration[\"integration_id\"]] = integration;\n }\n this.setState({\n integrationsMap: integrationsMap,\n });\n }\n else if (response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n else {\n this.setState({ errorOccurred: true });\n }\n });\n }\n}\n\nexport function attributeProfileFilterSubmit(dataSetId, attributeId) {\n if (dataSetId !== undefined && attributeId !== undefined) {\n let teamId = localStorage.getItem('team_id');\n let attData = { \"tenant_id\": teamId, \"attribute_id\": attributeId, \"data_set_id\": dataSetId };\n call_get_api(ui_service_ip, \"attributes/dataprofile\", attData).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n } else if (response.code === 200) {\n let apiStatusCode = response.code;\n this.setState({ showLoader: false })\n this.setApiResponse(response, apiStatusCode, true);\n } else {\n this.setState({ errorOccurred: true });\n }\n });\n }\n}","import React from 'react';\nimport DropdownTreeSelect from \"react-dropdown-tree-select\";\nimport $ from 'jquery';\nimport \"./nested-data.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nclass CustomTreeSelectDataset extends React.Component {\n\n constructor(props) {\n super(props);\n this.onFocus = this.onFocus.bind(this);\n this.onChange = this.onChange.bind(this);\n this.loadFilterDataset = this.loadFilterDataset.bind(this)\n this.toggleAll = this.toggleAll.bind(this)\n this.state = {\n id: this.props.id,\n placeholder: this.props.placeholder,\n selected_id: [],\n selected_id_index: [],\n data: this.props.data,\n cur_data: \"\",\n renderDataset: true\n }\n }\n\n loadFilterDataset() {\n let parms\n let filterDatasetId = []\n if (this.props.name === \"data_set\") {\n let cur_data = this.props.data.filter((data) =>\n data.integration_id === this.props.seletedDatasource || data.integration_id === \"-1\"\n )\n\n for (let i = 0; i < cur_data.length; i++) {\n if (cur_data[i].checked === true && cur_data[i].value !== \"*\" && cur_data[i].checked !== undefined) {\n filterDatasetId.push(cur_data[i].value)\n }\n if (cur_data[i][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n if (cur_data[i][\"children\"][j].value !== \"*\" && cur_data[i][\"children\"][j].checked === true) {\n filterDatasetId.push(cur_data[i][\"children\"][j].value);\n }\n }\n }\n }\n\n parms = {\n filterdDatsource: [this.props.seletedDatasource],\n fiteredDatseset: filterDatasetId,\n fitlerdDate: [this.props.startDate.format(\"Y/MM/DD\"), this.props.endDate.format(\"Y/MM/DD\")],\n fitlerdAttr: []\n }\n } else {\n for (let i = 0; i < this.props.data.length; i++) {\n if (this.props.data[i].checked === true && this.this.props.data[i].value !== \"*\") {\n filterDatasetId.push(this.props.data[i].value)\n }\n // for(let j=0;j 0) {\n this.props.loadFilterDataset(parms)\n }\n }\n\n componentDidMount() {\n $('body').click(function () {\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n });\n\n $(document).off('click', '#datasettreeselectapply');\n $(document).on('click', '#datasettreeselectapply', function (e) {\n this.loadFilterDataset();\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n document.body.click()\n }.bind(this));\n\n $(document).off('click', '#datasettreeselectcancel');\n $(document).on('click', '#datasettreeselectcancel', function (e) {\n document.body.click()\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n // eslint-disable-next-line\n }.bind(this));\n this.setState({ \"cur_data\": this.state.data });\n\n let cur_id = this.state.id;\n $(\"#\" + cur_id + \" .search\").keyup(function () {\n if ($(\"span\").hasClass(\"no-matches\")) {\n $(\".custom-dropdown-action\").remove();\n setTimeout(() => {\n $(\".custom-dropdown-action\").remove();\n }, 100);\n } else {\n setTimeout(() => {\n if ($('.custom-dropdown-action').length === 0 && $(\"span\").hasClass(\"no-matches\") === false && this.props.data.length > 1) {\n $(\".dropdown-content\").append(`
    \n \n
    `);\n // $(\"#\"+cur_id).parent().parent().addClass('customselect-active'); \n }\n }, \"100\");\n }\n });\n }\n\n componentDidUpdate() {\n // let cur_id = this.state.id;\n setTimeout(() => {\n if ($('.custom-dropdown-action').length === 0 && $(\"span\").hasClass(\"no-matches\") === false && this.props.data.length > 1) {\n $(\".dropdown-content\").append(`
    \n \n
    `);\n }\n }, \"100\");\n }\n\n onFocus() {\n // While changing datasource need to render the dropdown with latest data\n if (this.props.name === \"data_set\") {\n this.setState({ renderDataset: true, type: \"data_set\" })\n }\n if (this.props.name === \"attributes\") {\n this.setState({ renderDataset: true, type: \"attributes\" })\n }\n let cur_id = this.state.id;\n if (this.state.data.length > 0) {\n setTimeout(() => {\n if ($('.custom-dropdown-action').length === 0 && $(\"span\").hasClass(\"no-matches\") === false && this.props.data.length > 1) {\n $(\".dropdown-content\").append(`
    \n \n
    `);\n $(\"#\" + cur_id).parent().parent().addClass('customselect-active');\n }\n }, \"100\");\n }\n\n }\n\n onChange = (currentNode, selectedNodes) => {\n if(this.props.name===\"data_set\"){\n let cur_data = this.props.data;\n if (currentNode.value === \"*\") {\n this.toggleAll(currentNode);\n } else {\n let selected_id = this.state.selected_id;\n let selected_id_index = this.state.selected_id_index;\n let index = -1;\n if(currentNode.parent_data_set_id===undefined){\n index = cur_data.findIndex(function(item){\n return parseInt(item.value) === parseInt(currentNode[\"value\"]);\n });\n if(index > -1){\n cur_data[index][\"checked\"] = currentNode[\"checked\"]\n }\n if(currentNode[\"_children\"]!==undefined){\n for (let i = 0; i < cur_data.length; i++) {\n if(cur_data[i][\"value\"]===currentNode.value){\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n // eslint-disable-next-line\n if(cur_data[i][\"children\"][j].checked!==undefined){\n // eslint-disable-next-line\n cur_data[i][\"children\"][j].checked = cur_data[i][\"children\"][j].checked;\n }else {\n cur_data[i][\"children\"][j].checked = false;\n }\n }\n \n }\n }\n }\n\n let obj = {\n \"type\":this.props.name,\n \"id\":currentNode[\"value\"],\n \"label\":currentNode[\"label\"],\n \"attribute_ids\":currentNode[\"attribute_ids\"]\n }\n if(currentNode[\"checked\"] === true){\n if(currentNode[\"value\"]!==null){\n selected_id_index.push(currentNode[\"value\"]);\n selected_id.push({'id':currentNode[\"value\"],\"type\":this.props.name,'detail':obj});\n }\n }\n else {\n let temp = [];\n for (var i = 0; i < selected_id.length; i++) {\n if(selected_id[i].id!==currentNode[\"value\"]){\n temp.push({'id':selected_id[i][\"id\"],\n \"type\":selected_id[i][\"type\"],\n 'detail':selected_id[i][\"detail\"]});\n }\n }\n selected_id = temp;\n }\n\n }else {\n let childindex = -1;\n index = cur_data.findIndex(function(item){\n return item.value === currentNode[\"parent_data_set_id\"];\n });\n if(index > -1){\n childindex = cur_data[index][\"children\"].findIndex(function(item){\n return item.value === currentNode[\"value\"];\n });\n }\n if(childindex > -1){\n cur_data[index]['children'][childindex][\"checked\"] = currentNode[\"checked\"]\n }\n } \n this.props.handleSelectedAttributes(cur_data);\n this.setState({renderDataset:false,selected_id:selected_id})\n } \n }\n\n else {\n let cur_data = this.props.data;\n if (currentNode.value === \"*\") {\n this.setState({ renderDataset: false })\n this.toggleAll(currentNode);\n } else {\n // let selected_id = this.state.selected_id;\n // let selected_id_index = this.state.selected_id_index;\n let index = -1;\n if (currentNode.parent_data_set_id === undefined) {\n index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"value\"];\n });\n if (index > -1) {\n cur_data[index]['checked'] = currentNode[\"checked\"]\n }\n }\n\n }\n\n let expanddata = this.props.data;\n this.setState({ cur_data: expanddata });\n\n\n }\n }\n onAction = (node, action) => {\n\n\n }\n\n toggleAll = (node) => {\n\n if (this.props.name === \"data_set\") {\n let data;\n if (this.props.data !== \"\") {\n data = this.props.data.filter((data) =>\n data.integration_id === this.props.seletedDatasource || data.value === \"*\"\n )\n if (node.is_child_dataset === true) {\n for (let i = 0; i < data.length; i++) {\n\n if (data[i][\"value\"] === node.parent_data_set_id || data[i][\"value\"] === \"*\") {\n if (data[i][\"value\"] === \"*\") {\n data[i].checked = node.checked;\n } else {\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n }\n }\n } else {\n for (let i = 0; i < data.length; i++) {\n data[i].checked = node.checked;\n if (data[i][\"children\"] !== undefined) {\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n }\n }\n this.setState({ renderDataset: true, data: data })\n }\n this.props.handleSelectedAttributes(data);\n return data;\n }\n };\n\n onNodeToggle = currentNode => {\n let index = -1;\n if (this.props.name === \"data_set\") {\n let cur_data = this.props.data;\n index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"value\"];\n });\n if (index > -1) {\n cur_data[index][\"expanded\"] = currentNode[\"expanded\"]\n }\n this.setState({ cur_data: cur_data });\n this.props.handleExpand(cur_data);\n } else {\n this.props.data.find(function (item, i) {\n if (item.value === currentNode[\"value\"]) {\n index = i;\n return i;\n }\n return item;\n });\n if (index > -1) {\n this.props.data[index][\"expanded\"] = currentNode[\"expanded\"]\n }\n let expanddata = this.state.data;\n this.setState({ cur_data: expanddata });\n this.props.handleSelectedAttributes(this.state.cur_data);\n\n }\n }\n\n render() {\n let cur_data = [];\n let selectplaceholdercnt = 0;\n\n if(this.props.name===\"data_set\") {\n if(this.props.data!==\"\"){\n\n cur_data = this.props.data.filter((data)=> \n parseInt(data.integration_id) === parseInt(this.props.seletedDatasource) || data.integration_id === \"-1\"\n )\n for (let i = 0; i < cur_data.length; i++) {\n if(cur_data[i].checked === true && cur_data[i].value !==\"*\" ){\n //&& String(cur_data[i].value).includes(\")\") === false\n selectplaceholdercnt++;\n }\n if(cur_data[i][\"children\"]!==undefined){\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n if(cur_data[i][\"children\"][j].checked === true && cur_data[i][\"children\"][j].value !==\"*\" ){\n //&& String(cur_data[i].value).includes(\")\") === false\n selectplaceholdercnt++;\n }\n }\n }\n }\n }\n }\n\n // let checkedAll = cur_data.filter((data) =>data.integration_id !== \"-1\" && data.checked !== true ).length;\n let checkedAll=[];\n cur_data.map((data) =>{\n if(data.integration_id !== \"-1\" && data.checked !== true){\n checkedAll.push(false)\n }\n if(data.children !== undefined){ \n let childAtt = data.children.filter((childData)=> childData.parent_data_set_id === data.value && childData.value !== \"*\" && (childData.checked === undefined || childData.checked !== true))//.length\n if(childAtt.length===0){\n data.children[0].checked = true\n }\n else{\n data.children[0].checked = false\n checkedAll.push(false)\n }\n }\n return null\n }\n )\n\n if(checkedAll.includes(false) ){\n cur_data[0].checked = false\n }\n else{\n cur_data[0].checked = true\n }\n\n\n return (\n
    \n
    \n \n
    \n \n
    \n );\n }\n}\nexport default CustomTreeSelectDataset;","import React from 'react';\nimport DropdownTreeSelect from \"react-dropdown-tree-select\";\nimport $ from 'jquery';\nimport \"./nested-data.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nclass CustomTreeSelectAttribute extends React.Component {\n\n constructor(props) {\n super(props);\n this.onFocus = this.onFocus.bind(this);\n this.onChange = this.onChange.bind(this);\n this.loadFilter = this.loadFilter.bind(this)\n this.toggleAll = this.toggleAll.bind(this)\n this.state = {\n id: this.props.id,\n placeholder: this.props.placeholder,\n selected_id: [],\n selected_id_index: [],\n data: this.props.data,\n cur_data: \"\",\n renderDataset: true\n }\n }\n loadFilter() {\n let filterDatasetId = []\n let filterAttributeId = []\n let cur_data = this.props.data;\n let parms\n let datasetindex;\n if (this.props.name === \"attributes\") {\n for (let i = 0; i < cur_data.length; i++) {\n let datasetid;\n if (cur_data[i].value !== \"*\") {\n if (cur_data[i].dataset_id !== undefined) {\n datasetindex = -1;\n datasetid = cur_data[i][\"dataset_id\"];\n datasetindex = filterDatasetId.findIndex(function (item) {\n return item === datasetid;\n });\n if (datasetindex === -1) {\n filterDatasetId.push(datasetid)\n }\n }\n if (cur_data[i].value > 0 && cur_data[i].checked === true) {\n filterAttributeId.push(cur_data[i].value)\n }\n\n if (cur_data[i][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n let datasetid;\n if (cur_data[i][\"children\"][j].value !== \"*\") {\n datasetindex = -1;\n datasetid = cur_data[i][\"children\"][j][\"dataset_id\"];\n datasetindex = filterDatasetId.findIndex(function (item) {\n return item === datasetid;\n });\n if (datasetindex === -1) {\n filterDatasetId.push(datasetid)\n }\n if (cur_data[i][\"children\"][j].value > 0 && cur_data[i][\"children\"][j][\"checked\"] === true) {\n filterAttributeId.push(cur_data[i][\"children\"][j].value);\n }\n }\n }\n }\n }\n }\n parms = {\n filterdDatsource: [this.props.seletedDatasource],\n fiteredDatseset: filterDatasetId,\n fitlerdDate: [this.props.startDate.format(\"Y/MM/DD\"), this.props.endDate.format(\"Y/MM/DD\")],\n fitlerdAttr: filterAttributeId\n }\n this.props.loadFilter(parms)\n return;\n }\n }\n\n componentDidMount() {\n $('body').click(function () {\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n });\n\n $(document).off('click', '#treeselectapply');\n $(document).on('click', '#treeselectapply', function (e) {\n this.loadFilter();\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n document.body.click()\n }.bind(this));\n\n $(document).off('click', '#treeselectcancel');\n $(document).on('click', '#treeselectcancel', function (e) {\n document.body.click()\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n // eslint-disable-next-line\n }.bind(this));\n this.setState({ \"cur_data\": this.state.data });\n\n let cur_id = this.state.id;\n $(\"#\" + cur_id + \" .search\").keyup(function () {\n if ($(\"span\").hasClass(\"no-matches\")) {\n $(\".custom-dropdown-action\").remove();\n setTimeout(() => {\n $(\".custom-dropdown-action\").remove();\n }, 100);\n } else {\n setTimeout(() => {\n if ($('.custom-dropdown-action').length === 0 && $(\"span\").hasClass(\"no-matches\") === false && this.props !== undefined && this.props.data.length > 1) {\n $(\".dropdown-content\").append(`
    \n \n
    `);\n $(\"#\" + cur_id).parent().parent().addClass('customselect-active');\n }\n }, \"100\");\n }\n });\n }\n\n componentDidUpdate() {\n // let cur_id = this.state.id;\n setTimeout(() => {\n if ($('.custom-dropdown-action').length === 0 && $(\"span\").hasClass(\"no-matches\") === false && this.props.data !== undefined && this.props.data.length > 1) {\n $(\".dropdown-content\").append(`
    \n \n
    `);\n }\n }, \"100\");\n }\n\n onFocus() {\n // While changing datasource need to render the dropdown with latest data\n if (this.props.name === \"data_set\") {\n this.setState({ renderDataset: true, type: \"data_set\" })\n }\n if (this.props.name === \"attributes\") {\n this.setState({ renderDataset: true, type: \"attributes\" })\n }\n let cur_id = this.state.id;\n if (this.state.data.length > 1) {\n setTimeout(() => {\n if ($('.custom-dropdown-action').length === 0 && $(\"span\").hasClass(\"no-matches\") === false && this.props.data !== undefined) {\n if (this.props.data.length > 1) {\n $(\".dropdown-content\").append(`
    \n \n
    `);\n $(\"#\" + cur_id).parent().parent().addClass('customselect-active');\n }\n }\n }, \"100\");\n }\n\n }\n\n onChange = (currentNode, selectedNodes) => {\n if (currentNode.value === \"*\") {\n this.setState({ renderDataset: false })\n this.toggleAll(currentNode);\n } else {\n let cur_data = this.props.data;\n if (currentNode[\"_depth\"] === 0) {\n let index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"value\"] && item.dataset_id === currentNode[\"dataset_id\"];\n });\n if (index > -1) {\n cur_data[index][\"checked\"] = currentNode[\"checked\"]\n if (cur_data[index][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[index][\"children\"].length; j++) {\n cur_data[index][\"children\"][j].checked = currentNode.checked;\n }\n }\n }\n }\n \n else if (currentNode[\"_depth\"] === 1) {\n let index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"dataset_id\"];\n });\n cur_data = cur_data.map((data)=> {\n if(data.value === currentNode.data_set_id && currentNode[\"checked\"] === false){\n let checkAll = false\n data.checked = checkAll\n return data\n }\n\n else if(data.value === currentNode.data_set_id && currentNode[\"checked\"] === true){\n \n let checkedAll = false\n if(data.children !== undefined){\n let childAtt = data.children\n\n let CheckedList = childAtt.filter((childData)=> childData.checked !== false)\n \n \n if(data.children.length === CheckedList.length+1 ){\n /** Length -1 is included because the current data have the selecting attribute value as false\n * As of now handled with -1 login further we can to check the logic\n */\n checkedAll = true\n }\n else {\n }\n }\n data.checked = checkedAll\n return data\n }\n else{\n return data\n }\n })\n\n\n if (cur_data[index][\"children\"] !== undefined) {\n let childindex = -1;\n if (index > -1) {\n childindex = cur_data[index][\"children\"].findIndex(function (item) {\n return item.value === currentNode[\"value\"];\n });\n }\n if (childindex > -1) {\n cur_data[index]['children'][childindex][\"checked\"] = currentNode[\"checked\"]\n }\n }\n }\n\n this.props.handleAttributesSelection(cur_data)\n return;\n\n\n /** Commented the below due to above return to avoid ui warnings */\n // let index = cur_data.findIndex(function(item){\n // return item.value === currentNode[\"value\"] && item.dataset_id === currentNode[\"dataset_id\"];\n // });\n // if(index === -1){\n\n // }\n // if(index > -1){\n // cur_data[index][\"checked\"] = currentNode[\"checked\"]\n // }\n // if(index > -1){\n // if(cur_data[index][\"children\"]!==undefined){\n // let childindex = -1;\n // if(index > -1){\n // childindex = cur_data[index][\"children\"].findIndex(function(item){\n // return item.value === currentNode[\"value\"];\n // });\n // }\n // if(childindex > -1){\n // cur_data[index]['children'][childindex][\"checked\"] = currentNode[\"checked\"]\n // }\n // }\n\n // }\n // this.props.handleAttributesSelection(cur_data)\n }\n\n }\n onAction = (node, action) => {\n\n\n }\n\n toggleAll = (node) => {\n let data = this.props.data;\n if (node.value === \"*\" && node.dataset_id === undefined) {\n for (let i = 0; i < data.length; i++) {\n if (data[i][\"children\"] === undefined) {\n data[i].checked = node.checked;\n } else {\n data[i].checked = node.checked;\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n }\n }\n else if (node.value === \"*\" && node.dataset_id > 0) {\n for (let i = 0; i < data.length; i++) {\n if (data[i][\"children\"] === undefined && parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n if (parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n data[i].checked = node.checked;\n }\n } else {\n if (data[i][\"children\"] !== undefined && parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n data[i].checked = node.checked;\n for (let j = 0; j < data[i][\"children\"].length; j++) {\n data[i][\"children\"][j].checked = node.checked;\n }\n }\n else {\n if (parseInt(data[i][\"dataset_id\"]) === parseInt(node.dataset_id)) {\n data[i].checked = node.checked;\n }\n }\n }\n }\n }\n this.props.handleAttributesSelection(data)\n };\n\n onNodeToggle = currentNode => {\n let index = -1;\n if (this.props.name === \"data_set\") {\n let cur_data = this.props.data;\n index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"value\"];\n });\n if (index > -1) {\n cur_data[index][\"expanded\"] = currentNode[\"expanded\"]\n }\n this.setState({ cur_data: cur_data });\n this.props.handleExpand(cur_data);\n } else {\n let cur_data = this.props.data;\n index = cur_data.findIndex(function (item) {\n return item.value === currentNode[\"value\"];\n });\n if (index > -1) {\n cur_data[index][\"expanded\"] = currentNode[\"expanded\"]\n }\n this.setState({ cur_data: cur_data });\n this.props.handleAttributesSelection(cur_data);\n }\n }\n\n render() {\n let cur_data = [];\n let checkall = 0;\n let selectplaceholdercnt = 0;\n\n if (this.props.data !== undefined) {\n\n cur_data = this.props.data;\n\n for (let i = 0; i < cur_data.length; i++) {\n if (cur_data[i].checked === true && cur_data[i].value !== \"*\" && cur_data[i].value !== undefined && cur_data[i].children === undefined) {\n selectplaceholdercnt++;\n }\n\n /** Handle un-checking of all option under dataset */\n if(cur_data[i].value === \"*\" && cur_data[i].dataset_id !== undefined){\n let data = cur_data.filter((data)=> data.dataset_id === cur_data[i].dataset_id && data.checked !== true)\n if(data.length > 0){\n cur_data[i].checked = false\n } \n if(data.length === 1 && data[0].value === \"*\"){\n cur_data[i].checked = true\n } \n }\n\n if (cur_data[i][\"children\"] !== undefined) {\n for (let j = 0; j < cur_data[i][\"children\"].length; j++) {\n if (cur_data[i][\"children\"][j].value !==\"*\" && cur_data[i][\"children\"][j].checked === true && cur_data[i].value !== \"*\" && cur_data[i].value !== undefined) {\n if(cur_data[i][\"children\"][j].value !==\"*\"){\n selectplaceholdercnt++;\n }\n }\n }\n }\n }\n }\n checkall = cur_data.filter((data) =>data.checked !== true && data.value !== undefined);\n if(cur_data.length !== 1 && checkall.length===1 && checkall[0].value === \"*\"){\n cur_data[0].checked = true\n }\n else{\n cur_data[0].checked = false\n }\n return (\n
    \n
    \n \n
    \n \n
    \n );\n }\n}\nexport default CustomTreeSelectAttribute;","import React from 'react';\nimport { faLayerGroup, faTag, faCalendar, faDatabase } from '@fortawesome/free-solid-svg-icons';\nimport moment from 'moment';\nimport Form from 'react-bootstrap/Form';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\nimport $ from 'jquery';\nimport {\n DISPLAY_DATE_FORMAT,\n TAB_KEY_MAPPING\n} from '../../utils/constant';\nimport Select, {\n components,\n} from 'react-select';\nimport CustomTreeSelectDataset from '../../components/customTreeSelectDataset';\nimport CustomTreeSelectAttribute from '../../components/customTreeSelectAttribute';\nimport {\n normalizeAttributeName,\n} from \"../../utils/attribute_name_utils\";\n\nconst customSelectDatasource = ({ children, ...props }) => (\n \n \n {children}\n \n\n);\n\nclass TreeFilter extends React.Component {\n constructor(props) {\n super(props);\n this.handleDatasourceoptions = this.handleDatasourceoptions.bind(this)\n this.handleDatasetsoptions = this.handleDatasetsoptions.bind(this)\n //this.handleAttributeoptions = this.handleAttributeoptions.bind(this)\n this.handleSelectedAttributes = this.handleSelectedAttributes.bind(this)\n this.handleSelectDate = this.handleSelectDate.bind(this);\n this.handleClearAll = this.handleClearAll.bind(this);\n this.loadFilter = this.loadFilter.bind(this)\n this.handleExpand = this.handleExpand.bind(this);\n this.handleExpandAttributes = this.handleExpandAttributes.bind(this);\n this.handleAttributesSelection = this.handleAttributesSelection.bind(this);\n\n // let startDate = moment().subtract(9, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n // let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n let startDate = moment(this.props.startDate);\n let endDate = moment(this.props.endDate);\n\n this.state = {\n filterData: this.props.data,\n filterDataInitial: this.props.data,\n dateDisplay: startDate.format(DISPLAY_DATE_FORMAT) + ' - ' + endDate.format(DISPLAY_DATE_FORMAT),\n startDate: startDate,\n endDate: endDate,\n attributeOptions: [],\n datasetOptions: [],\n renderDatasetDD: false,\n seletedDatasource: this.props.seletedDatasourceId,\n seletedDatasourceLabel: this.props.seletedDatasourceName,\n filteredDatas: {}\n }\n }\n handleClearAll() {\n this.setState({ filterData: this.state.filterDataInitial });\n }\n handleExpand(pmData) {\n let expand = this.state.filterData;\n expand['parentDatasets'] = pmData;\n this.setState({ filterData: expand });\n this.setState({ filterData: expand });\n }\n\n componentDidMount() {\n\n let data = this.state.filterData;\n if(data!==\"\" && data!==undefined){\n\n let filterIntegrationData = this.state.filterData['datasetsOptions'].filter((data) =>\n (data.integration_id === this.state.seletedDatasource && data.checked === true)\n ||\n (data.children !== undefined && data.integration_id === this.state.seletedDatasource )\n )\n \n this.setState({ attributeOptions: [] })\n let mappedAttributes = this.state.filterData['attributesOptions']\n let finalList; // = this.state.attributeOptions\n let parentAttribute = []\n\n filterIntegrationData.map((selectedList, i) => {\n if (selectedList.checked === true || selectedList.children !== undefined) {\n /** OR condition is included If only child dataset is seleted */\n let splitLable = selectedList.label.split('( ')\n let loopData = []\n if (i === 0) {\n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\" })\n }\n if(mappedAttributes[selectedList.value]!==undefined){\n\n let childAttributes = []\n let parentName = null \n\n if((selectedList.is_child_dataset === undefined || selectedList.is_child_dataset !== true) && selectedList.checked === true){\n parentAttribute.push({ \"label\": splitLable[0], \"disabled\": true })\n let checked = false\n let parentAttributeList = mappedAttributes[selectedList.value]\n parentAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = parentAttributeList.filter((data)=> data.checked === true)\n if(parentAttributeList.length === AllChecked.length){\n /**If all attributes check from parent dataset marked All options as marked on attribute Dropdown */\n checked=true\n } \n \n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\",\"checked\":checked, \"dataset_id\": selectedList.value})\n parentAttribute = parentAttribute.concat(mappedAttributes[selectedList.value]) \n }\n\n if (selectedList.children !== undefined && selectedList.children.length > 0) {\n selectedList.children.map((selectedListchild, j) => {\n if (selectedListchild.checked === true && selectedListchild.value !== \"*\") {\n let checked=false;\n let childAttributeList = mappedAttributes[selectedListchild.value] //.slice(1,mappedAttributes[selectedListchild.value].length)\n childAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = childAttributeList.filter((data)=> data.checked === true)\n if(childAttributeList.length === AllChecked.length){\n /**If all attributes check from child-data set marked child-dataset as marked on attribute Dropdown */\n checked=true\n } \n \n \n\n let expand=false\n if(AllChecked.length > 0){\n /**Expand the dropdown if anyone of the attribute is selected from the child dataset */\n expand = true\n }\n \n childAttributes = [{ \"label\": selectedListchild.label, \"value\": selectedListchild.value,\"expanded\":expand, checked:checked, \"children\": childAttributeList }]\n if(parentName === null ){\n parentName = selectedListchild.label.split('$')\n loopData = [{ \"label\": splitLable[0] + \" - Partitions\", \"disabled\": true }]\n parentAttribute = parentAttribute.concat(loopData) \n }\n parentAttribute = parentAttribute.concat(childAttributes)\n return selectedListchild;\n }\n return selectedListchild;\n })\n } \n }\n\n finalList = parentAttribute\n }\n return selectedList;\n }\n )\n this.setState({ attributeOptions: finalList })\n }\n } \n\n\n handleSelectedAttributes(selectedList, selectedNode=null) {\n let data = selectedList;\n let filterIntegrationData = data.filter((data) =>\n (data.integration_id === this.state.seletedDatasource && data.checked === true) \n \n ||\n /** OR condition is included If only child dataset is seleted */\n (data.children !== undefined && data.integration_id === this.state.seletedDatasource )\n )\n // return;\n this.setState({ attributeOptions: [] })\n let mappedAttributes = this.state.filterData['attributesOptions']\n let finalList; // = this.state.attributeOptions\n let parentAttribute = []\n filterIntegrationData.map((selectedList, i) => {\n if (selectedList.checked === true || selectedList.children !== undefined) {\n /** OR condition is included If only child dataset is seleted */\n\n let splitLable = selectedList.label.split('( ')\n let loopData = []\n if (i === 0) {\n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\" })\n }\n if(mappedAttributes[selectedList.value]!==undefined){\n\n if(selectedList.checked === true){\n parentAttribute.push({ \"label\": splitLable[0], \"disabled\": true })\n let checked = false\n let parentAttributeList = mappedAttributes[selectedList.value]\n parentAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = parentAttributeList.filter((data)=> data.checked === true)\n if(parentAttributeList.length === AllChecked.length){\n /**If all attributes check from parent dataset marked All options as marked on attribute Dropdown */\n checked=true\n } \n \n parentAttribute.push({ \"label\": \"All\", \"value\": \"*\",\"checked\":checked, \"dataset_id\": selectedList.value})\n parentAttribute = parentAttribute.concat(mappedAttributes[selectedList.value]) \n }\n \n let childAttributes = []\n let parentName = null \n if (selectedList.children !== undefined && selectedList.children.length > 0) {\n selectedList.children.map((selectedListchild, j) => {\n if (selectedListchild.checked === true && selectedListchild.value !== \"*\") {\n let checked=false;\n let childAttributeList = mappedAttributes[selectedListchild.value] //.slice(1,mappedAttributes[selectedListchild.value].length)\n childAttributeList.forEach((attributeDetails) => {\n let attribute_name = attributeDetails.label\n let req_attribute_name = normalizeAttributeName(attribute_name)\n attributeDetails['label'] = req_attribute_name\n })\n let AllChecked = childAttributeList.filter((data)=> data.checked === true)\n if(childAttributeList.length === AllChecked.length){\n /**If all attributes check from child-data set marked child-dataset as marked on attribute Dropdown */\n checked=true\n } \n \n childAttributes = [{ \"label\": selectedListchild.label, \"value\": selectedListchild.value, checked:checked, \"children\": childAttributeList }]\n if(parentName === null ){\n parentName = selectedListchild.label.split('$')\n loopData = [{ \"label\": splitLable[0] + \" - Partitions\", \"disabled\": true }]\n parentAttribute = parentAttribute.concat(loopData) \n }\n parentAttribute = parentAttribute.concat(childAttributes)\n return selectedListchild;\n }\n return selectedListchild;\n })\n } \n }\n finalList = parentAttribute\n }\n\n return selectedList;\n }\n )\n\n this.setState({ attributeOptions: finalList })\n }\n\n\n\n\n handleExpandAttributes(pmData) {\n let expand = this.state.filterData;\n expand['parentDatasets'] = pmData;\n this.setState({ filterData: expand });\n }\n\n handleSelectDate(event, picker) {\n let startDate = picker.startDate;\n let endDate = picker.endDate;\n let customlabel = picker.chosenLabel === \"Custom Range\" ? startDate.format(DISPLAY_DATE_FORMAT) + ' - ' + endDate.format(DISPLAY_DATE_FORMAT) : picker.chosenLabel;\n this.setState({ dateDisplay: customlabel, startDate: startDate, endDate: endDate })\n\n\n let loadparams = {\n \"integration_id\": this.state.seletedDatasource,\n \"integration_name\": this.state.seletedDatasourceLabel,\n \"tab_type\": TAB_KEY_MAPPING[this.props.tab],\n \"tab\": TAB_KEY_MAPPING[this.props.tab],\n \"start_date\": startDate,\n \"end_date\": endDate\n }\n\n let filteredDatas = this.state.filteredDatas\n // if(Object.keys(this.state.filteredDatas).length > 0){\n // let filteredDatas = this.state.filteredDatas\n\n // }\n let dateFilter = true\n \n /**Function used to Persist filtered values while applying date filter && switching over tabs*/\n this.props.handleDateFiltered(loadparams, filteredDatas,dateFilter)\n\n /**Function used to Persist filtered values while switching over tabs */\n this.props.loadDataSourceRender(loadparams, filteredDatas, dateFilter)\n }\n\n handleDatasourceoptions(key) {\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n let datasourceID = key.value;\n let datasourceName = key.label;\n\n\n let loadparams = {\n \"integration_id\": datasourceID,\n \"integration_name\": datasourceName,\n \"tab_type\": TAB_KEY_MAPPING[this.props.tab],\n \"tab\": TAB_KEY_MAPPING[this.props.tab],\n \"start_date\": this.props.startDate,\n \"end_date\": this.props.endDate\n }\n this.setState({\n renderDatasetDD: true,\n seletedDatasource: datasourceID, \n seletedDatasourceLabel: key.label,\n filteredDatas:loadparams\n })\n\n /**Function used to Persist filtered values while switching over tabs && switching over tabs*/\n this.props.handleDateFiltered(loadparams, this.state.filteredDatas)\n\n this.props.loadDataSourceRender(loadparams)\n }\n\n handleDatasetsoptions(key) {\n\n }\n\n /*\n handleAttributeoptions(selectedList) {\n\n\n // let data = selectedList;\n // let filterIntegrationData = data.filter((data)=> \n // data.integration_id === this.state.seletedDatasource && data.checked=== true\n // )\n\n let mappedAttributes = this.state.filterData['attributesOptions']\n let finalList = this.state.attributeOptions\n let data=[]\n let splitLable = selectedList.label.split('( ')\n // if (selectedList.value === \"all\") {\n // for(let child in mappedAttributes){\n // childDatasetList = mappedAttributes[selectedList.value].concat(childDatasetList)\n // this.state.filterData['parentDatasets'].map((data) => {\n // if (data.children !== undefined && data.value === selectedList.value) {\n // finalList.push({ \"label\": splitLable[0], \"disabled\": true })\n // data.children.map((child) => {\n // let childAttributes = []\n // childDatasetList.push({ \"label\": child.label, \"disabled\": true })\n // childAttributes = [{ \"label\": child.label, \"value\": selectedList.value, \"children\": mappedAttributes[child.value] }]\n // childDatasetList = childDatasetList.concat(childAttributes)\n // // finalList.push({\"label\":selectedList.label, \"disabled\": true })\n // })\n\n // parentAttribute = mappedAttributes[selectedList.value].concat(childDatasetList)\n // }\n // })\n // }\n // return\n //}\n\n if (selectedList.checked === false) {\n finalList = finalList.filter((data) => data.dataset_id !== selectedList.value && data.label !== splitLable[0] && data.label !== selectedList.label)\n }\n else {\n let childDatasetList = []\n let parentAttribute = mappedAttributes[selectedList.value].concat(childDatasetList)\n // let SelectedDataset = selectedList\n\n if (selectedList._children !== undefined && selectedList._children.length > 0) {\n this.state.filterData['parentDatasets'].map((data) => {\n if (data.children !== undefined && data.value === selectedList.value) {\n finalList.push({ \"label\": splitLable[0], \"disabled\": true })\n data.children.map((child) => {\n let childAttributes = []\n childDatasetList.push({ \"label\": child.label, \"disabled\": true })\n childAttributes = [{ \"label\": child.label, \"value\": selectedList.value, \"children\": mappedAttributes[child.value] }]\n childDatasetList = childDatasetList.concat(childAttributes)\n return child;\n // finalList.push({\"label\":selectedList.label, \"disabled\": true })\n })\n\n parentAttribute = mappedAttributes[selectedList.value].concat(childDatasetList)\n }\n return data;\n })\n }\n data = [{ \"label\": selectedList.label, \"value\": selectedList.value, \"children\": parentAttribute }]\n }\n finalList = finalList.concat(data)\n this.setState({ attributeOptions: finalList })\n }*/\n\n handleAttributesSelection(selectedList) {\n this.setState({ attributeOptions: selectedList })\n }\n\n loadFilter(pm) {\n this.setState({ filteredDatas: pm })\n // this.state.filterData[\"attributesOptions\"] = JSON.parse(JSON.stringify(this.state.filterData[\"attributesOptions\"]).replaceAll(/\"checked\":true/g,'\"checked\":false'));\n this.props.handleFilteredData(pm);\n }\n\n handleFocus() {\n // $(\"#chooseDatasourceForDqError\").parent(\".textfield-outlined\").addClass('customselect-active'); \n }\n\n handleBlur() {\n $(\".textfield-outlined\").removeClass(\"customselect-active\");\n }\n\n render() {\n let ranges = {\n 'Today': [moment(), moment()],\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n };\n\n return (\n
    \n
    \n
    \n
    Data Relationship Filter
    \n \n
    \n
    \n
    \n
    \n Datasource\n \n {/* */}\n
    \n
    \n Datasets \n \n
    \n
    \n Attributes\n \n
    \n \n \n \n \n \n \n {this.state.dateDisplay}\n {/* {this.state.endDate.format(DISPLAY_DATE_FORMAT)+' - '+ this.state.startDate.format(DISPLAY_DATE_FORMAT)} */}\n \n \n \n
    \n \n Include PII\n
    \n \n \n
    \n
    \n
    \n
    \n );\n }\n}\nexport default TreeFilter;\n","import React from 'react';\n// import Filter from '../components/filter';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\n// import Load from '../../components/loadAction';\n// import OverlayTrigger from 'react-bootstrap/OverlayTrigger';\n// import Tooltip from 'react-bootstrap/Tooltip';\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n// import CardHelpContent from '../../components/cardHelpContent';\nimport ProgressStatus from '../../components/progressStatus';\n// import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport NoDataComponent from \"../components/noDataComponent\";\n// import CardGroup from \"../../components/cardGroup\";\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate, mappedDatasetInfo } from \"../../redux/actions\";\nimport {\n RELATIONSHIP_METRIC,\n RELATIONSHIP_STATIC_CARD,\n ENVIRONMENT,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n RELATIONSHIP_METRIC_ORDER,\n RELATIONSHIP_METRIC_COLOR,\n\n} from '../../utils/constant';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport * as d3 from 'd3';\nimport { getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource, getAllMetricRecencyInfo } from '../../utils/common_utils';\n\nimport {\n datasetNameFromMappedValue,\n QUALDO_CHILD_DATASET_SEPARATOR,\n normalizeChildDatasetName\n} from '../../utils/attribute_name_utils';\n\nimport { renderTableComponents, renderskloader } from \"./dq_render_utils\";\nimport ProfileCardData from \"./profileCardData\"\n// import { parseMetaMapping } from '../../utils/common_utils';\nimport \"../css/skloader.css\";\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n// import { faDatabase, faLayerGroup, faTag} from '@fortawesome/free-solid-svg-icons';\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\"\n\nclass Relationship extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = formTableData.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n this.filterOptions = React.createRef();\n this.filterTimeData = this.filterTimeData.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderTableComponents = renderTableComponents.bind(this);\n this.skloader = this.skloader.bind(this);\n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n this.handleFilteredData = this.handleFilteredData.bind(this);\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.relationshipCheck = this.relationshipCheck.bind(this)\n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n showModal: false,\n cardName: \"\",\n cardData: [],\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n selectedDate: [],\n dataset_id: '',\n initial_load: 1,\n hideComponent: 'd-none',\n chartTitle: \"Relationships & Errors within a Datasource\",\n gridTitle: \"Data quality metric values for selected datasets / attributes\",\n startDate: startDate,\n endDate: endDate,\n environmentOptions: [],\n datasourceOptions: [],\n datasetsOptions: [],\n attributesOptions: [],\n showLoader: this.props.showLoader,\n newCardData: null,\n datasetLevelChart: [],\n attributeLevelChart: [],\n filterData: this.props.filterData,\n existingList: this.props.existingList,\n attributeOptions: [],\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n filteredValues: this.props.filteredValues,\n checkedPartition: false,\n checkedAttributes: false,\n chartDatas: [],\n chartErrors: {},\n clearAllFilter: false,\n profileData: {},\n filteredDatas: {},\n showRelationalData:false,\n allowRelationData:false,\n allowRelationsFilter:\"All\",\n inProgress : null\n }\n }\n\n\n relationshipCheck(value){\n if(value===\"All\"){\n this.setState({allowRelationData:false, allowRelationsFilter:\"All\"}) \n }\n else{\n this.setState({allowRelationData:true, allowRelationsFilter:value}) \n\n }\n }\n\n \n allowPartition() {\n this.setState({ checkedPartition: !this.state.checkedPartition })\n }\n\n allowAttributes() {\n this.setState({ checkedAttributes: !this.state.checkedAttributes })\n }\n\n \n loadDataSourceRender(params, filteredDatas = null, dateFilter = null) {\n /**Function used to Persist filtered values while applying date filter */\n\n /**TODO : Need to optimize this condition*/\n if (dateFilter === true) {\n this.setState({ showLoader: true })\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else {\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false,\n allowRelationData:false,\n allowRelationsFilter:\"All\"\n })\n this.getDatasForTab(params, filteredDatas, dateFilter)\n\n }\n else {\n // \n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name,\n checkedAttributes:false,\n checkedPartition:false,\n allowRelationData:false,\n allowRelationsFilter:\"All\"\n })\n this.getDatasForTab(params)\n }\n }\n\n\n clearAllFilterData() {\n this.setState({ filterData: this.props.filterData, clearAllFilter: true })\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 1, data)\n if (filterData !== undefined) {\n this.setState({ newCardData: filterData['cardData'], tableData: filterData['tableData'] })\n }\n }\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 1\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true || this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 1);\n }\n }\n this.formCardData(this.props.dataModule.filteredValues);\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n }\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": RELATIONSHIP_STATIC_CARD[key] }\n }\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] }\n this.props.setFilteredValues([]);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate, dataset_id: dataSourceId });\n this.setChipData(environment, dataSource, -1, -1);\n this.formCardData([], dataSourceId, startDate, endDate);\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues);\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.selectedDataSource !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.props.dataModule.selectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.props.dataModule.selectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.props.dataModule.startDate, endDate = this.props.dataModule.endDate) {\n // if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n // let tableInfo = [];\n // let allMetricInfo;\n // let allMetricRecencyInfo;\n // allMetricRecencyInfo = getAllMetricRecencyInfo(this.props.dataModule.info, this.props.dataModule.recencyDetails)\n // if (changedDataSource === -1) {\n // allMetricInfo = _.cloneDeep(allMetricRecencyInfo[this.props.dataModule.selectedDataSource]);\n // } else {\n // allMetricInfo = _.cloneDeep(allMetricRecencyInfo[changedDataSource]);\n // }\n // // let default_data = allMetricInfo;\n // let restrictchilddata = [];\n // // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // // for (var key in default_data) {\n // // if (default_data.hasOwnProperty(key)) {\n // // let metaData = this.props.dataModule.metaData[key];\n // // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // // restrictchilddata[key] = default_data[key]\n // // }\n // // }\n // // }\n // // }else {\n // // restrictchilddata = default_data;\n // // } \n\n // restrictchilddata = allMetricInfo\n\n // if (filteredValues.length !== 0) {\n // restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n // }\n // let metricKeys = ['4', '8', '9', '12', '13', '14', '21', '22', '2', '3', '17', '7', '11', '19', '6'];\n // for (const [key, value] of Object.entries(restrictchilddata)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if (metaData !== undefined) {\n // let reqSplitArrVals = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n // let dataSource = reqSplitArrVals[1];\n // let dataSet = reqSplitArrVals[2];\n // let attribute = reqSplitArrVals[reqSplitArrVals.length - 1];\n // for (const [metricId, metricValue] of Object.entries(value)) {\n // if (!metricId.endsWith(\"drift\") && !metricId.endsWith(\"time_value\") && metricKeys.includes(metricId)) {\n // let tableData = [];\n // tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n // let reqDatasetName = normalizeChildDatasetName(dataSet)\n // tableData.push({ \"value\": reqDatasetName, \"type\": \"td\" });\n // let normalizedAttributeName = reqSplitArrVals.length === 3 ?'-':normalizeAttributeName(attribute);\n // tableData.push({ \"value\": normalizedAttributeName, \"type\": \"td\" });\n // let metricType = RELATIONSHIP_METRIC[metricId];\n // if (metricType === undefined) {\n // metricType = metricMapping[metricId];\n // }\n // tableData.push({ \"value\": metricType, \"type\": \"td\" });\n // let tempMetricValue = metricValue;\n // if (this.props.dataModule.timeFilterApplied) {\n // let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, key, metricId);\n // if (timeFilteredData.length > 0) {\n // if (key === \"11\") {\n // tempMetricValue = Math.min.apply(null, timeFilteredData);\n // } else {\n // tempMetricValue = Math.max.apply(null, timeFilteredData);\n // }\n // } else {\n // continue;\n // }\n // }\n // let suffixText = \"%\";\n // if (metricType === \"Data Drift\") {\n // suffixText = \"\";\n // } else if (metricType === \"Data Timeliness\") {\n // suffixText = \"days\";\n // }\n // tempMetricValue = `${tempMetricValue} ${suffixText}`;\n // tableData.push({ \"value\": tempMetricValue, \"type\": \"td\" });\n // tableInfo.push(tableData);\n // }\n // }\n // }\n // }\n\n // let tableHeaders = this.state.tableData.headers;\n // // let tableData = { \"headers\": tableHeaders, data: tableInfo };\n // let tableData = this.state.tableData\n\n // this.setState({ tableData: tableData });\n // }\n let tableData = this.state.tableData\n\n this.setState({ tableData: tableData });\n }\n\n\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n return [];\n }\n\n formCardData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n if (this.props.dataModule.selectedDataSource !== -1) {\n let cardInfo = [];\n let allMetricInfo;\n let allMetricRecencyInfo;\n allMetricRecencyInfo = getAllMetricRecencyInfo(this.props.dataModule.info, this.props.dataModule.recencyDetails)\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(allMetricRecencyInfo[this.props.dataModule.selectedDataSource]);\n } else {\n allMetricInfo = _.cloneDeep(allMetricRecencyInfo[changedDataSource]);\n }\n if (filteredValues.length !== 0) {\n allMetricInfo = this.filterInfoData(filteredValues, allMetricInfo);\n }\n let default_data = allMetricInfo;\n let restrictchilddata = {};\n if ((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)) {\n for (var key in default_data) {\n if (default_data.hasOwnProperty(key)) {\n let metaData = this.props.dataModule.metaData[key];\n if (!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR) && datasetNameFromMappedValue(metaData) !== \"\") {\n restrictchilddata[key] = default_data[key]\n }\n }\n }\n } else {\n restrictchilddata = default_data;\n }\n\n restrictchilddata = allMetricInfo\n let commonId = 0;\n RELATIONSHIP_METRIC_ORDER.forEach((key) => {\n let attributeMetricList = [];\n //let chartMetricList = [];\n for (const metricInfo in restrictchilddata) {\n let metaData = this.props.dataModule.metaData[metricInfo];\n\n if (metaData !== undefined || key === 19) {\n if (key !== \"Data Conformity Errors\" && key !== \"Data Consistency Errors\") {\n if (key in restrictchilddata[metricInfo]) {\n if (this.props.dataModule.timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, metricInfo, key);\n if (timeFilteredData.length > 0) {\n if (key === \"11\") {\n attributeMetricList.push(Math.min.apply(null, timeFilteredData));\n } else {\n attributeMetricList.push(Math.max.apply(null, timeFilteredData));\n }\n }\n } else {\n attributeMetricList.push(restrictchilddata[metricInfo][key]);\n }\n //chartMetricList.push(allMetricInfo[metricInfo][`${key}_time_value`]);\n }\n } else {\n //eslint-disable-next-line\n RELATIONSHIP_METRIC[key].forEach((subMetricId) => {\n if (subMetricId in restrictchilddata[metricInfo]) {\n if (this.props.dataModule.timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, metricInfo, subMetricId);\n if (timeFilteredData.length > 0) {\n attributeMetricList.push(Math.max.apply(null, timeFilteredData));\n }\n } else {\n attributeMetricList.push(restrictchilddata[metricInfo][subMetricId]);\n }\n //chartMetricList.push(allMetricInfo[metricInfo][`${subMetricId}_time_value`]);\n }\n });\n }\n }\n }\n let tempInfo = {};\n if (key !== \"Data Conformity Errors\" && key !== \"Data Consistency Errors\") {\n tempInfo[\"metric_name\"] = RELATIONSHIP_METRIC[key];\n } else {\n tempInfo[\"metric_name\"] = key;\n }\n tempInfo[\"background\"] = RELATIONSHIP_METRIC_COLOR[key].cardBackground;\n tempInfo[\"textColor\"] = RELATIONSHIP_METRIC_COLOR[key].textColor;\n if (attributeMetricList.length !== 0) {\n if (key === \"6\" || key === \"Data Conformity\") {\n attributeMetricList = attributeMetricList.filter((item) => item !== 0);\n }\n let computedMetricValue = `${(attributeMetricList.reduce((a, b) => a + b, 0) / attributeMetricList.length).toFixed(2)}`;\n if (isNaN(computedMetricValue)) {\n computedMetricValue = 0.00\n }\n tempInfo[\"metric_value\"] = computedMetricValue;\n } else {\n tempInfo[\"metric_value\"] = \"NA\";\n }\n\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"chartData\"] = this.filterTimeData(key);\n tempInfo[\"idValue\"] = `relationship${commonId}`;\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n })\n\n this.setState({\n cardData: cardInfo\n })\n }\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setAttributeTab(dataSet, attribute)\n // this.props.setDataSet(dataSet);\n // this.props.setAttribute(\"\", attribute);\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n loadFilter(pm) {\n\n }\n\n render() {\n // let dataSourceOption = [];\n // let selectedDataSource = {};\n const lastProfiledTime = this.state.last_processed_time\n let lastProfilingTime = lastProfiledTime ?\n `Your data last profiled at ${lastProfiledTime}` : \"--\";\n\n /** TODO */\n // Below entire chart logic needs to be moved into a function : handleChartData()\n\n let chartData = []\n\n let initialFilteredValues = this.state.filteredValues\n let initialFilteredDatasets = []\n let initialFilteredAttributes = []\n let allowRelationsFilter = false\n\n if (Object.keys(initialFilteredValues).length > 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n\n let datasetLevelError = []\n let attributeLevelError = []\n\n if (Object.keys(this.state.chartErrors).length > 0) {\n datasetLevelError = this.state.chartErrors['dataset_level']\n attributeLevelError = this.state.chartErrors['attr_level']\n }\n\n\n /**Separate Filter Existing Dataset Level Chart Data */\n let datasetLevelChart = []\n\n\n this.state.datasetLevelChart.map((data) => {\n data['name'] = normalizeChildDatasetName(data['name'])\n if(data.imports.length > 0 && data[\"confidence_score\"] === 0){\n data[\"confidence_score\"] = 1\n }\n if (this.state.existingList.includes(Number(data.dataSetId))) {\n let error_metrics = []\n if(initialFilteredDatasets.length > 0){\n if (datasetLevelError[data.dataSetId] !== undefined && initialFilteredDatasets.includes(Number(data.dataSetId))) {\n datasetLevelError[data.dataSetId].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n else if(initialFilteredDatasets.includes(Number(data.dataSetId))){\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n // }\n }\n else{\n if (datasetLevelError[data.dataSetId] !== undefined) {\n datasetLevelError[data.dataSetId].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n\n }\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n \n }\n\n return null;\n })\n\n\n /**Separate Existing Attribute Level Chart Data */\n let attributeLevelChart = []\n this.state.attributeLevelChart.map((data) => {\n data['datasetName'] = normalizeChildDatasetName(data['datasetName'])\n if(data.imports.length > 0 && data[\"confidence_score\"] === 0){\n data[\"confidence_score\"] = 1\n }\n if (this.state.existingList.includes(Number(data.attribute_id))) {\n let error_metrics = []\n if(initialFilteredDatasets.length > 0){\n if(attributeLevelError[data.attribute_id] !== undefined ){\n attributeLevelError[data.attribute_id].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n }\n \n data['metrics'] = error_metrics\n if (initialFilteredDatasets.includes(Number(data.dataSetId)) && initialFilteredAttributes.includes(Number(data.attribute_id))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n // else if(initialFilteredDatasets.includes(Number(data.dataSetId))){\n // attributeLevelChart = attributeLevelChart.concat(data)\n\n // }\n else if(initialFilteredAttributes.length === 0 && initialFilteredDatasets.includes(Number(data.dataSetId))){\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n else{\n if (attributeLevelError[data.attribute_id] !== undefined) {\n attributeLevelError[data.attribute_id].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n }\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n\n return null;\n })\n\n /**Separate Partition and child datasets */\n let parentDatasetIds = []\n let childDatasetIds = []\n\n datasetLevelChart.map((data) => {\n if (this.state.filterData['childDatasets'].includes(Number(data.dataSetId))) {\n childDatasetIds = childDatasetIds.concat(Number(data.dataSetId))\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(Number(data.dataSetId))\n }\n return null\n })\n\n\n /**Separate Partition Dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n\n attributeLevelChart.map((data) => {\n if (parentDatasetIds.includes(Number(data.dataSetId))) {\n parentAttributeIds = parentAttributeIds.concat(data.dataSetId)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n return null\n })\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataSetId))) {\n /*** Skip Pushing Child Dataset initially */\n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return null\n })\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n\n attributeLevelChart.map((data) => {\n if(data.confidence_score !== undefined && data.confidence_score!==null && data.confidence_score > 0){\n allowRelationsFilter = true\n }\n if(this.state.allowRelationData===true && allowRelationsFilter){\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(Number(data.dataSetId))){\n if(data.confidence_score !== undefined && data.confidence_score!==null && data.confidence_score > 0 ){\n chartData = chartData.concat(data) \n }\n }\n }\n else if(childDatasetIds.includes(Number(data.dataSetId))){\n if(data.confidence_score !== undefined && data.confidence_score!==null && data.confidence_score > 0 ){\n chartData = chartData.concat(data) \n }\n }\n else{ \n if(data.confidence_score !== undefined && data.confidence_score!==null && data.confidence_score > 0 ){\n chartData = chartData.concat(data) \n }\n } \n }\n else if(this.state.allowRelationData!==true){\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(Number(data.dataSetId))){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(Number(data.dataSetId))){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n }\n return chartData\n })\n }\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n return (\n this.state.showLoader === false && this.props.inProgress === false\n ?\n (\n
    \n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n\n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n
    \n )\n :\n (\n this.props.inProgress === true && this.state.showLoader === false\n ?\n \n \n \n }\n />\n :\n (this.props.noDataFound === true ? \n \n :\n <>\n {this.state.showLoader === true ? renderskloader(this.state.chartTitle, this.state.gridTitle) : ''}\n \n )\n )\n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate, mappedDatasetInfo })(Relationship);","import React from 'react';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport {\n COMPLETENESS_CARDS,\n STATIC_CARDS,\n ENVIRONMENT,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n COMPLETENESS_METRIC_COLOR,\n NO_DATASET_NO_DATA_PROFILE,\n DATA_PROFILING_FAILED,\n NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE,\n} from '../../utils/constant';\n// import { FilterOptions } from '../components/filterOptions';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate } from \"../../redux/actions\";\nimport moment from 'moment';\nimport * as d3 from 'd3';\n// import CardHelpContent from '../../components/cardHelpContent';\nimport ProgressStatus from '../../components/progressStatus';\nimport NoDataComponent from \"../components/noDataComponent\"\nimport Image from '../../components/image';\n// import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n// import {faTable, faInfoCircle, faSearch, faCheckCircle, faTimesCircle, faExternalLinkAlt, faSitemap,faPencilAlt} from '@fortawesome/free-solid-svg-icons';\nimport { getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource } from '../../utils/common_utils';\nimport {\n // normalizeAttributeName,\n // METADATA_MAP_VALUE_SEPARATOR,\n // QUALDO_CHILD_DATASET_SEPARATOR,\n normalizeChildDatasetName\n} from '../../utils/attribute_name_utils';\nimport { renderTableComponents, renderskloader } from \"./dq_render_utils\";\n//import AdvanceFilter from \"./advancedFilter\"\nimport ProfileCardData from \"./profileCardData\"\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\";\n// import RcTooltip from 'rc-tooltip';\n\n\n// const renderTooltip = (props) => (\n// \n// Need Help ?\n// \n// );\n\n\nclass Completeness extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderTableComponents = renderTableComponents.bind(this);\n this.skloader = this.skloader.bind(this)\n\n \n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.handleFilteredData = this.handleFilteredData.bind(this);\n\n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n cardName: '',\n cardData: [],\n showModal: false,\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n startDate: startDate,\n endDate: endDate,\n selectedDate: [],\n initial_load: 1,\n hideComponent: 'd-none',\n chartTitle: \"Data Completeness Dashboard\",\n gridTitle: \"Data Completeness metric values for selected datasets / attributes\",\n\n environmentOptions: [],\n datasourceOptions: [],\n datasetsOptions: [],\n attributesOptions: [],\n // tableData:{'header':[],'data':[]},\n showLoader: this.props.showLoader,\n newDardData: null,\n chartDatas: [],\n newCardData: [],\n filterData: this.props.filterData,\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n checkedPartition: false,\n checkedAttributes: false,\n datasetLevelChart: [],\n attributeLevelChart: [],\n existingList: this.props.existingList,\n clearAllFilter: false,\n profileData: {},\n filteredDatas: {},\n filteredValues: this.props.filteredValues,\n\n }\n }\n\n allowPartition() {\n this.setState({ checkedPartition: !this.state.checkedPartition })\n }\n\n allowAttributes() {\n this.setState({ checkedAttributes: !this.state.checkedAttributes })\n }\n\n loadDataSourceRender(params, filteredDatas = null, dateFilter = null) {\n if (dateFilter === true) {\n this.setState({ showLoader: true })\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else {\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params,filteredDatas, dateFilter)\n\n\n }\n else{\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params)\n\n }\n }\n\n clearAllFilterData() {\n this.setState({ filterData: this.props.filterData, clearAllFilter: true })\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 2, data)\n if (filterData !== undefined) {\n this.setState({ newCardData: filterData['cardData'], tableData: filterData['tableData'], chartDatas: filterData['chart_data'] })\n }\n }\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n // componentDidUpdate(prevState) {\n // if (this.state.showLoader === false && prevState.tableData.data.length === !this.state.tableData.data.length) {\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // }\n // }\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData();\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n\n return [];\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n };\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 2\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true && this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 2);\n } \n }\n\n this.formCardData();\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.selectedDataSource !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.props.dataModule.selectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.props.dataModule.selectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData();\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] }\n this.props.setFilteredValues([]);\n this.setChipData(environment, dataSource, -1, -1);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n this.formCardData();\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues);\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData();\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n // renderFilter(environmentOption) {\n // let dataSourceOption = [];\n // let dataSetOptions = [];\n // let preSelectedEnvironment = this.state.prefillEnvironment;\n // let preSelectedDataSource = this.state.prefillDataSource;\n // let preSelectedDatasets = -1;\n // let preSelectedAttributes = -1;\n // let attributeOptions = [];\n // if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n // let chipData = this.props.dataModule.chipData;\n // let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n // preSelectedEnvironment = { \"label\": environment[0].value, \"value\": environment[0].key };\n // dataSourceOption = []\n // let dataSourceList = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSourceList.forEach((dataSourceId) => {\n // dataSourceOption.push({ \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] });\n // });\n // let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n // preSelectedDataSource = { \"label\": dataSource[0].value, \"value\": dataSource[0].key };\n // let datasets = chipData.filter((item) => item.type === DATA_SET);\n // preSelectedDatasets = [];\n // datasets.forEach((dataSet) => {\n // preSelectedDatasets.push({ \"label\": dataSet.value, \"value\": dataSet.key })\n // });\n // let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // preSelectedAttributes = [];\n // attributes.forEach((attribute) => {\n // preSelectedAttributes.push({ \"label\": attribute.value, \"value\": attribute.key })\n // });\n\n // preSelectedDatasets.forEach((item) => {\n // let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n // if (attributesList !== undefined) {\n // attributesList.forEach((attributeId) => {\n // attributeOptions.push({\n // \"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n // attributeId, preSelectedEnvironment, preSelectedDataSource)\n // });\n // });\n // }\n // });\n // let datasetIds = [];\n // dataSetOptions = [];\n // let dataSetsList = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSetsList !== undefined) {\n // dataSetsList.forEach((dataSetId) => {\n // if (!datasetIds.includes(dataSetId)) {\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)\n // });\n // }\n // });\n // }\n // }\n // else {\n // let datasetIds = [];\n // if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && this.state.prefillEnvironment !== undefined &&\n // this.state.prefillEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n // let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSources.forEach((dataSourceId) => {\n // if (this.props.dataModule[\"info\"][dataSourceId] === undefined) {\n // dataSourceOption.push({ \"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true });\n // } else {\n // dataSourceOption.push({ \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] });\n // }\n // });\n // let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSets !== undefined) {\n // dataSets.forEach((dataSetId) => {\n // if (!datasetIds.includes(dataSetId)) {\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n // });\n // }\n // })\n // }\n // }\n\n // }\n // return (\n // \n // );\n // }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n getRowcountInfo(filteredValues, infoData) {\n let allValues = [];\n for (let value in filteredValues) {\n let currValue = filteredValues[value];\n currValue = currValue.split(\".\");\n let filterValue = [currValue[0] + \".\" + currValue[1] + \".\" + currValue[2]];\n allValues.push(filterValue);\n }\n return this.filterInfoData(allValues, infoData);\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n // if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n // let tableInfo = [];\n // let allMetricInfo;\n // if (changedDataSource === -1) {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n // } else {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n // }\n\n // // let default_data = allMetricInfo;\n // let restrictchilddata = [];\n // // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // // for (var key in default_data) {\n // // if (default_data.hasOwnProperty(key)) {\n // // let metaData = this.props.dataModule.metaData[key];\n // // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // // restrictchilddata[key] = default_data[key]\n // // }\n // // }\n // // }\n // // }else {\n // // restrictchilddata = default_data;\n // // } \n\n // restrictchilddata = allMetricInfo\n\n // if (filteredValues.length !== 0) {\n // restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n // }\n // for (const [key, value] of Object.entries(restrictchilddata)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if (metaData !== undefined) {\n // let reqSplitVals = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n // let dataSource = reqSplitVals[1];\n // let dataSet = reqSplitVals[2];\n // let attribute = reqSplitVals.length === 3 ?'':reqSplitVals[reqSplitVals.length - 1];\n // for (const [metricId, metricValue] of Object.entries(value)) {\n // if (!metricId.endsWith(\"drift\") && metricId in COMPLETENESS_METRIC) {\n // let tableData = [];\n // tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n // let reqDatasetName = normalizeChildDatasetName(dataSet)\n // tableData.push({ \"value\": reqDatasetName, \"type\": \"td\" });\n // let normalizedAttributeName = reqSplitVals.length === 3 ?'-':normalizeAttributeName(attribute);\n // tableData.push({ \"value\": normalizedAttributeName, \"type\": \"td\" });\n // tableData.push({ \"value\": COMPLETENESS_METRIC[metricId], \"type\": \"td\" });\n // let tempMetricValue = metricValue;\n // if (this.props.dataModule.timeFilterApplied) {\n // let timeFilteredData = this.getTimeFilteredData(allMetricInfo, startDate, endDate, key, metricId);\n // if (timeFilteredData.length > 0) {\n // tempMetricValue = `${Math.min.apply(null, timeFilteredData)}`;\n // } else {\n // continue;\n // }\n // }\n // let metricType = COMPLETENESS_METRIC[metricId];\n\n // let suffixText = \"%\";\n // if (metricType === \"Row Count\") {\n // suffixText = \"\";\n // }\n // tempMetricValue = `${tempMetricValue} ${suffixText}`;\n // tableData.push({ \"value\": tempMetricValue, \"type\": \"td\" });\n // tableInfo.push(tableData);\n // }\n // }\n // }\n\n // }\n // let tableHeaders = this.state.tableData.headers;\n // let tableData = { \"headers\": tableHeaders, data: tableInfo };\n // this.setState({ tableData: tableData });\n // }\n let tableData = this.state.tableData\n\n this.setState({ tableData: tableData });\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": STATIC_CARDS[key] }\n }\n\n formCardData() {\n let cardInfo = []\n let commonId = 0;\n for (const [cardName] of Object.entries(COMPLETENESS_CARDS)) {\n if (cardName !== \"Total number of Rows\") {\n // This condition allows to form card only for Fill Rate (key = 11) \n let tempInfo = {};\n tempInfo[\"metric_name\"] = cardName;\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = COMPLETENESS_METRIC_COLOR[cardName].cardBackground;\n tempInfo[\"textColor\"] = COMPLETENESS_METRIC_COLOR[cardName].textColor;\n tempInfo[\"chartData\"] = this.filterTimeData(commonId);\n tempInfo[\"idValue\"] = `completeness${commonId}`;\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n }\n }\n for (const [cardName] of Object.entries(COMPLETENESS_CARDS)) {\n if (cardName === \"Total number of Rows\") {\n let tempInfo = {};\n tempInfo[\"metric_name\"] = cardName;\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = COMPLETENESS_METRIC_COLOR[cardName].cardBackground;\n tempInfo[\"textColor\"] = COMPLETENESS_METRIC_COLOR[cardName].textColor;\n tempInfo[\"chartData\"] = this.filterTimeData(commonId);\n tempInfo[\"idValue\"] = `rowcount${commonId}`;\n cardInfo.push(tempInfo);\n\n }\n }\n this.setState({\n cardData: cardInfo\n });\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setAttributeTab(dataSet, attribute)\n // this.props.setDataSet(dataSet);\n // this.props.setAttribute(\"\", attribute);\n }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n render() {\n let dataSourceOption = [];\n let environmentOption = [];\n let selectedDataSource = {};\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n\n const lastProfiledTimeElement = this.state.last_processed_time\n let lastProfilingTime = lastProfiledTimeElement ?\n `Your data last profiled at ${lastProfiledTimeElement}` : \"--\";\n\n\n\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (this.props.dataModule[\"info\"][key] === undefined) {\n dataSourceOption.push({ \"label\":
    {value}
    , \"value\": key, \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n if (dmSelectedDataSource !== undefined && key === dmSelectedDataSource.toString()) {\n selectedDataSource = { \"label\": value, \"value\": key };\n }\n\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n\n let isCalculationInProgress = false\n let discoveryStatus;\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n } else if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n }\n\n let checkProgress;\n if (this.props.dataModule.relationship !== undefined && this.props.dataModule.relationship !== \"undefined\") {\n checkProgress = this.props.dataModule.relationship[dmSelectedDataSource]\n if (checkProgress !== undefined) {\n isCalculationInProgress = (Object.keys(this.props.dataModule.relationship[dmSelectedDataSource]).length === 0)\n isCalculationInProgress = isCalculationInProgress && hasValidDatasets && latestProcessingStatus !== DEFAULT_METRICS_RUN_FAILURE;\n if (isCalculationInProgress) {\n this.props.setLoader(true);\n } else {\n this.props.setLoader(false);\n }\n }\n }\n\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (checkProgress === undefined && this.props.dataModule.tenantId !== undefined && this.props.dataModule.tenantId === -1 &&\n dmSelectedDataSource === -1 && sessionToken !== undefined && sessionToken !== null) {\n }\n\n\n\n /** TODO */\n // Below entire chart logic needs to be moved into a function : handleChartData()\n\n let chartData = []\n\n let initialFilteredValues = this.state.filteredValues\n let initialFilteredDatasets = []\n let initialFilteredAttributes = []\n\n if (Object.keys(initialFilteredValues).length > 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n /**Separate Dataset level and attribute level */\n let datasetLevelChart = []\n let attributeLevelChart = []\n\n this.state.chartDatas.map((data) => {\n let id = data.attribute_id === undefined ? data.dataset_id : data.attribute_id;\n if(data.attribute_id === undefined){\n data['name'] = normalizeChildDatasetName(data['name'])\n }\n else{\n data['dataset_name'] = normalizeChildDatasetName(data['dataset_name'])\n }\n if (this.state.existingList.includes(id)) {\n /** Condition to skip deleted metadata if any come in the chart data */\n if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(id))) {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n if (initialFilteredAttributes.length > 0) {\n if (data.attribute_id !== undefined) {\n if (initialFilteredAttributes.includes(Number(data.attribute_id))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(data.dataset_id))) {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n // }\n // else {\n // /** Condition to skip deleted metadata if any come in the chart data */\n }\n return data;\n })\n\n /**Separate Partition and child datasets */\n\n let parentDatasetIds = []\n let childDatasetIds = []\n datasetLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n childDatasetIds = childDatasetIds.concat(data.dataset_id)\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(data.dataset_id)\n }\n }\n return parentDatasetIds\n })\n\n\n /**Separate Partition dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n attributeLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (parentDatasetIds.includes(data.dataset_id)) {\n parentAttributeIds = parentAttributeIds.concat(data.attribute_id)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n }\n return parentAttributeIds\n\n })\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n /*** Skip Pushing Child Dataset initially */\n \n \n // if (data.attribute_id === undefined) {\n \n // }\n\n // if (data.attribute_id === undefined) {\n \n // }\n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return chartData\n })\n\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n attributeLevelChart.map((data) => {\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n return chartData\n })\n }\n\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n\n return (\n this.state.showLoader === false && this.props.inProgress === false \n ?\n (\n
    \n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n
    \n )\n :\n (\n this.props.inProgress === true && this.state.showLoader === false \n ?\n \n \n \n }\n />\n :\n (this.props.noDataFound === true ? \n \n :\n <>\n {this.state.showLoader === true ? renderskloader(this.state.chartTitle, this.state.gridTitle) : ''}\n \n )\n )\n );\n }\n}\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate })(Completeness);","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Select from \"react-select\";\n\nconst CustomSelect = props => {\n if (props.allowSelectAll) {\n let allOption = {\"label\": \"All\", \"value\": \"*\"}\n let options = []\n if(props.name === \"attribute\") {\n options = props.originalAttributeOptions\n }else {\n options = props.options\n }\n\n if (options === undefined || options === null) {\n options = [];\n }\n\n return (\n 0 ? [props.allOption, ...props.options] : []}\n className=\"qd_nested-multiselect\"\n onChange={(selected, event) => {\n if (selected !== null && selected.length > 0) {\n if (selected[selected.length - 1].value === allOption.value) {\n return props.onChange([props.allOption, ...options]);\n }\n let result = [];\n if (selected.length === options.length) {\n if (selected.includes(props.allOption)) {\n result = selected.filter(\n option => option.value !== props.allOption.value\n );\n\n } else if (event.action === \"select-option\") {\n result = [props.allOption, ...options];\n }\n\n\n return props.onChange(result);\n }\n }\n\n\n\n return props.onChange(selected);\n }}\n />\n );\n }\n\n return {\n if (typeof (label) !== String) {\n return true;\n }\n\n return label.includes(query)\n }}\n options={dataSourceOption}\n id={props.id + \"Datasource\"}\n onChange={setSelectedDataSource}\n placeholder=\"Choose Data source\"\n classNamePrefix='select-control'\n value={selectedDataSourceOption === -1 ? '' : selectedDataSourceOption}\n defaultValue={selectedDataSourceOption === -1 ? '' : selectedDataSourceOption}\n />\n {selectedDataSourceOption === -1 && isFilterSubmitted ?\n {\"Please Select a Datasource\"} : \"\"}\n \n {/*
    \n \n label.includes(query)}\n options={attributeOption}\n id={props.id + \"Columns\"}\n onChange={setSelectedAttribute}\n placeholder=\"Choose Attributes\"\n classNamePrefix='select-control'\n value={selectedAttributeOption === -1 ? '' : selectedAttributeOption}\n defaultValue={selectedAttributeOption === -1 ? '' : selectedAttributeOption}\n />\n
    */}\n\n \n Dataset:\n \n {/* */}\n \n\n\n \n Attribute:\n {\n setSelectedAttributeGroup(selectedOption)\n }}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n components={{\n Option\n }}\n value={selectedAttributeOption}\n allowSelectAll={true}\n controlShouldRenderValue={false}\n classNamePrefix='select-control'\n formatGroupLabel={formatGroupLabel}\n />\n {/* */}\n \n
    \n \n \n \n
    \n \n \n \n \n
    \n \n \n
    \n
    \n \n );\n});","import React from 'react';\n// import Filter from '../components/filter';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\n// import RcTooltip from 'rc-tooltip';\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n// import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport {\n UNIQUENESS_METRIC,\n STATIC_CARDS,\n ENVIRONMENT,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n NO_DATASET_NO_DATA_PROFILE,\n DATA_PROFILING_FAILED,\n NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE\n} from '../../utils/constant';\nimport { FilterOptions } from '../components/filterOptions';\nimport _ from 'lodash';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate } from \"../../redux/actions\";\nimport moment from 'moment';\nimport * as d3 from 'd3';\n// import CardHelpContent from '../../components/cardHelpContent';\nimport ProgressStatus from '../../components/progressStatus';\nimport NoDataComponent from \"../components/noDataComponent\"\nimport Image from '../../components/image';\nimport {\n parseMetaMapping, getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource,\n getDatasetsWithDuplicateRows, getNoOfDuplicateRows, getAttributesWithDuplicateRows\n} from '../../utils/common_utils';\n\nimport {\n // normalizeAttributeName,\n METADATA_MAP_KEY_SEPARATOR,\n // METADATA_MAP_VALUE_SEPARATOR,\n normalizeChildDatasetName,\n QUALDO_CHILD_DATASET_SEPARATOR\n} from \"../../utils/attribute_name_utils\";\nimport { renderTableComponents, renderskloader } from \"./dq_render_utils\";\n//import AdvanceFilter from \"./advancedFilter\"\nimport ProfileCardData from \"./profileCardData\"\n\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\"\n\n// const renderTooltip = (props) => (\n// \n// Need Help ?\n// \n// );\n\n\nclass Uniqueness extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.getTimeFilteredCardValues = this.getTimeFilteredCardValues.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderTableComponents = renderTableComponents.bind(this);\n this.skloader = this.skloader.bind(this)\n\n \n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n\n\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.handleFilteredData = this.handleFilteredData.bind(this);\n\n\n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n cardName: '',\n cardData: [],\n showModal: false,\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n startDate: startDate,\n endDate: endDate,\n selectedDate: [],\n initial_load: 1,\n hideComponent: 'd-none',\n chartTitle: \"Data Uniqueness Dashboard\",\n gridTitle: \"Data Uniqueness metric values for selected datasets / attributes\",\n\n environmentOptions: [],\n datasourceOptions: [],\n datasetsOptions: [],\n attributesOptions: [],\n // tableData: { 'header': [], 'data': [] },\n showLoader: this.props.showLoader,\n newDardData: null,\n relationShipchartData: [],\n chartDatas:[],\n filterData: this.props.filterData,\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n checkedPartition:false,\n checkedAttributes:false,\n datasetLevelChart:[],\n attributeLevelChart:[],\n existingList: this.props.existingList,\n clearAllFilter:false,\n profileData:{},\n filteredDatas:{},\n filteredValues: this.props.filteredValues,\n }\n }\n\n\n allowPartition(){\n this.setState({checkedPartition:!this.state.checkedPartition})\n }\n \n allowAttributes(){\n this.setState({checkedAttributes:!this.state.checkedAttributes})\n }\n\n loadDataSourceRender(params, filteredDatas=null, dateFilter=null) {\n if(dateFilter === true){\n this.setState({showLoader:true})\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else{\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params,filteredDatas, dateFilter)\n\n }\n else{\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params)\n\n }\n }\n\n clearAllFilterData(){\n this.setState({ filterData: this.props.filterData,clearAllFilter:true})\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 7, data)\n if(filterData !== undefined){\n this.setState({newCardData:filterData['cardData'], tableData:filterData['tableData']})\n }\n }\n\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n // componentDidUpdate(prevProps) {\n // if (this.state.showLoader === false && this.state.tableData.data.length === 0) {\n // this.formTableData(this.props.dataModule.filteredValues);\n\n\n // }\n // if (prevProps.dataModule.selectedDataSource === -1) {\n // if (prevProps.dataModule.selectedDataSource !== this.props.dataModule.selectedDataSource) {\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // this.setDefaultValuesInFilter();\n // }\n // }\n // if (prevProps.dataModule.filteredValues !== this.props.dataModule.filteredValues) {\n // if (this.props.dataModule.filteredValues.length > 0) {\n // this.setFilteredValues(this.props.dataModule.filteredValues);\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // }\n // }\n // }\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1 && allMetricInfo[metricInfo][`${key}_time_value`] !== undefined) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n\n return [];\n }\n\n\n getTimeFilteredCardValues(allMetricInfo, startDate, endDate, metricInfo, key, level) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1 && allMetricInfo[metricInfo][`${key}_percentage`] !== undefined) {\n if (level === \"attribute\") {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_percentage`].slice(startIndex, endIndex + 1);\n return tempMetricValueList;\n } else if (level === \"dataset\" && allMetricInfo[metricInfo][`${key}_duplicate_row`] !== undefined) {\n let duplicateList = allMetricInfo[metricInfo][`${key}_duplicate_row`].slice(startIndex, endIndex + 1);\n return duplicateList;\n }\n }\n\n return [];\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n };\n\n // renderCards(cardData) {\n // return (\n //
    \n // {\n // this.state.showModal ?\n // : \"\"\n // }\n // {\n // cardData.map((data) => {\n // let cardBackground = `dashboard-stat ${data.background}`;\n // let textColor = `title ${data.textColor}`;\n // return(\n //
    \n //
    \n //
    \n //
    \n //
    \n // {data.metric_name}\n //
    \n //
    \n //
    }>\n //
    \n // \n //
    \n //
    \n //
    \n // {data.metric_value}\n //
    \n // \n //
    \n //
    \n //
    \n // );\n // })\n // }\n // \n // );\n // }\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 7\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true && this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 7);\n } }\n\n\n this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.selectedDataSource !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.props.dataModule.selectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.props.dataModule.selectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] }\n this.props.setFilteredValues([]);\n this.setChipData(environment, dataSource, -1, -1);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n this.formCardData([], dataSourceId, startDate, endDate);\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues);\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n renderFilter(environmentOption) {\n let dataSourceOption = [];\n let dataSetOptions = [];\n let preSelectedEnvironment = this.state.prefillEnvironment;\n let preSelectedDataSource = this.state.prefillDataSource;\n let preSelectedDatasets = -1;\n let preSelectedAttributes = -1;\n let attributeOptions = [];\n if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n let chipData = this.props.dataModule.chipData;\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n preSelectedEnvironment = { \"label\": environment[0].value, \"value\": environment[0].key };\n dataSourceOption = []\n let dataSourceList = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n dataSourceList.forEach((dataSourceId) => {\n dataSourceOption.push({ \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] });\n });\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n preSelectedDataSource = { \"label\": dataSource[0].value, \"value\": dataSource[0].key };\n let datasets = chipData.filter((item) => item.type === DATA_SET);\n preSelectedDatasets = [];\n datasets.forEach((dataSet) => {\n preSelectedDatasets.push({ \"label\": dataSet.value, \"value\": dataSet.key })\n });\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n preSelectedAttributes = [];\n attributes.forEach((attribute) => {\n preSelectedAttributes.push({ \"label\": attribute.value, \"value\": attribute.key })\n });\n\n preSelectedDatasets.forEach((item) => {\n let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n if (attributesList !== undefined) {\n attributesList.forEach((attributeId) => {\n attributeOptions.push({\n \"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n attributeId, preSelectedEnvironment, preSelectedDataSource)\n });\n });\n }\n });\n let datasetIds = [];\n dataSetOptions = [];\n let dataSetsList = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n if (dataSetsList !== undefined) {\n dataSetsList.forEach((dataSetId) => {\n if (!datasetIds.includes(dataSetId)) {\n datasetIds.push(dataSetId);\n dataSetOptions.push({\n \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)\n });\n }\n });\n }\n }\n else {\n let datasetIds = [];\n if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && this.state.prefillEnvironment !== undefined &&\n this.state.prefillEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n dataSources.forEach((dataSourceId) => {\n if (this.props.dataModule[\"info\"][dataSourceId] === undefined) {\n dataSourceOption.push({ \"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] });\n }\n });\n let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n if (dataSets !== undefined) {\n dataSets.forEach((dataSetId) => {\n if (!datasetIds.includes(dataSetId)) {\n datasetIds.push(dataSetId);\n dataSetOptions.push({\n \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n });\n }\n })\n }\n }\n\n }\n return (\n \n );\n }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n let dataset_prefix = (filteredValue.split(\".\").length === 4 ? filteredValue.split(\".\", 3).join(\".\") : null);\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue) || (dataset_prefix !== null && key === dataset_prefix))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n // if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n // let tableInfo = [];\n // let allMetricInfo;\n // if (changedDataSource === -1) {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n // } else {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n // }\n // // let default_data = allMetricInfo;\n // let restrictchilddata = [];\n // // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // // for (var key in default_data) {\n // // if (default_data.hasOwnProperty(key)) {\n // // let metaData = this.props.dataModule.metaData[key];\n // // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // // restrictchilddata[key] = default_data[key]\n // // }\n // // }\n // // }\n // // }else {\n // // restrictchilddata = default_data;\n // // }\n\n // restrictchilddata = allMetricInfo\n\n // if (filteredValues.length !== 0) {\n // restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n // }\n // for (const [key, value] of Object.entries(restrictchilddata)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if (metaData !== undefined) {\n // let reqSplitValues = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n // let dataSource = reqSplitValues[1];\n // let dataSet = reqSplitValues[2];\n // let attribute = reqSplitValues[reqSplitValues.length - 1];\n // for (const [metricId, metricValue] of Object.entries(value)) {\n // if (metricId in UNIQUENESS_METRIC) {\n // let tableData = [];\n // tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n // let reqDatasetName = normalizeChildDatasetName(dataSet)\n // tableData.push({ \"value\": reqDatasetName, \"type\": \"td\" });\n // let reqAttributeName = normalizeAttributeName(attribute)\n // tableData.push({ \"value\": reqAttributeName, \"type\": \"td\" });\n // tableData.push({ \"value\": UNIQUENESS_METRIC[metricId], \"type\": \"td\" });\n // let tempMetricValue = metricValue;\n // if (this.props.dataModule.timeFilterApplied) {\n // let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, key, metricId);\n // if (timeFilteredData.length > 0) {\n // tempMetricValue = `${Math.min.apply(null, timeFilteredData)}`;\n // } else {\n // continue;\n // }\n // }\n // tableData.push({ \"value\": `${tempMetricValue}`, \"type\": \"td\" });\n // tableInfo.push(tableData);\n // }\n // }\n // }\n\n // }\n // let tableHeaders = this.state.tableData.headers;\n // let tableData = { \"headers\": tableHeaders, data: tableInfo };\n // this.setState({ tableData: tableData });\n // }\n let tableData = this.state.tableData\n\n this.setState({ tableData: tableData });\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": STATIC_CARDS[key] }\n }\n\n formCardData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n\n let cardInfo = [];\n let allMetricInfo;\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n } else {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n }\n\n // let default_data = allMetricInfo;\n let restrictchilddata = {};\n // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // for (var key in default_data) {\n // if (default_data.hasOwnProperty(key)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // restrictchilddata[key] = default_data[key]\n // }\n // }\n // }\n // }else {\n // restrictchilddata = default_data;\n // }\n\n restrictchilddata = allMetricInfo\n\n if (filteredValues.length !== 0) {\n restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n }\n let dataSetValueMap = {}\n let dataSetDuplicateValueMap = {}\n for (const [key] of Object.entries(UNIQUENESS_METRIC)) {\n for (const metricInfo in restrictchilddata) {\n let metaData = this.props.dataModule.metaData[metricInfo];\n if (key in restrictchilddata[metricInfo]) {\n let level = 'attribute';\n let duplicate_list = [];\n if (metaData === undefined) {\n level = \"dataset\"\n duplicate_list = restrictchilddata[metricInfo][`${key}_duplicate_row`];\n }\n let _percentage_data_list = restrictchilddata[metricInfo][`${key}_percentage`];\n if (this.props.dataModule.timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredCardValues(restrictchilddata, startDate, endDate, metricInfo, key, level);\n if (timeFilteredData.length === 0) {\n _percentage_data_list = [];\n duplicate_list = [];\n }\n if (timeFilteredData.length > 0 && level === \"attribute\") {\n _percentage_data_list = timeFilteredData\n } else if (timeFilteredData.length > 0 && level === \"dataset\") {\n duplicate_list = timeFilteredData;\n }\n }\n let dataSetId = metricInfo.split(METADATA_MAP_KEY_SEPARATOR)[2];\n if (metaData !== undefined) {\n if (_percentage_data_list !== undefined && _percentage_data_list.length > 0) {\n let _percentage_val = parseFloat(_percentage_data_list[_percentage_data_list.length - 1].toFixed(2))\n if (dataSetValueMap.hasOwnProperty(dataSetId)) {\n dataSetValueMap[dataSetId].push(_percentage_val);\n } else {\n dataSetValueMap[dataSetId] = [_percentage_val];\n }\n }\n } else {\n let duplicate_count = 0;\n if (duplicate_list !== undefined && duplicate_list.length > 0) {\n duplicate_count = duplicate_list[duplicate_list.length - 1];\n }\n\n if (dataSetDuplicateValueMap.hasOwnProperty(dataSetId)) {\n dataSetDuplicateValueMap[dataSetId] = dataSetDuplicateValueMap[dataSetId] + duplicate_count;\n } else {\n dataSetDuplicateValueMap[dataSetId] = duplicate_count;\n }\n }\n }\n }\n }\n let commonId = 0;\n let outInfo = {};\n outInfo[\"metric_name\"] = \"No. of Datasets having Duplicate\"\n outInfo[\"metric_value\"] = getDatasetsWithDuplicateRows(dataSetValueMap);\n outInfo[\"hide_edit\"] = true;\n outInfo[\"cardType\"] = \"chart\";\n outInfo[\"background\"] = \"dashboard-stat-purple\"\n outInfo[\"textColor\"] = \"text-purple\"\n outInfo[\"idValue\"] = `uniqueness${commonId}`;\n outInfo[\"chartData\"] = this.filterTimeData(commonId);\n cardInfo.push(outInfo);\n\n commonId = commonId + 1;\n let outInfo_3 = {};\n outInfo_3[\"metric_name\"] = \"Total no of attributes having duplicate values\"\n outInfo_3[\"metric_value\"] = getAttributesWithDuplicateRows(dataSetValueMap);\n outInfo_3[\"hide_edit\"] = true;\n outInfo_3[\"cardType\"] = \"chart\";\n outInfo_3[\"background\"] = \"dashboard-stat-warning\"\n outInfo_3[\"textColor\"] = \"text-warning\"\n outInfo_3[\"idValue\"] = `uniqueness_${commonId}`;\n outInfo_3[\"chartData\"] = this.filterTimeData(commonId);\n cardInfo.push(outInfo_3);\n\n commonId = commonId + 1;\n let outInfo_2 = {};\n outInfo_2[\"metric_name\"] = \"Total no of duplicate rows in Datasets\"\n outInfo_2[\"metric_value\"] = getNoOfDuplicateRows(dataSetDuplicateValueMap);\n outInfo_2[\"hide_edit\"] = true;\n outInfo_2[\"cardType\"] = \"chart\";\n outInfo_2[\"background\"] = \"dashboard-stat-success\"\n outInfo_2[\"textColor\"] = \"text-success\"\n outInfo_2[\"idValue\"] = `uniqueness_${commonId}`;\n outInfo_2[\"chartData\"] = this.filterTimeData(commonId);\n cardInfo.push(outInfo_2);\n\n this.setState({\n cardData: cardInfo\n });\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setAttributeTab(dataSet, attribute)\n // this.props.setDataSet(dataSet);\n // this.props.setAttribute(\"\", attribute);\n }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n render() {\n\n let dataSourceOption = [];\n let environmentOption = [];\n let selectedDataSource = {};\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n\n const lastProfiledTimeElement = this.state.last_processed_time\n let lastProfilingTime = lastProfiledTimeElement ?\n `Your data last profiled at ${lastProfiledTimeElement}` : \"--\";\n\n\n\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (this.props.dataModule[\"info\"][key] === undefined) {\n dataSourceOption.push({ \"label\":
    {value}
    , \"value\": key, \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n if (dmSelectedDataSource !== undefined && key === dmSelectedDataSource.toString()) {\n selectedDataSource = { \"label\": value, \"value\": key };\n }\n\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n\n let isCalculationInProgress = false\n let discoveryStatus;\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n } else if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n }\n\n let checkProgress;\n if (this.props.dataModule.relationship !== undefined && this.props.dataModule.relationship !== \"undefined\") {\n checkProgress = this.props.dataModule.relationship[dmSelectedDataSource]\n if (checkProgress !== undefined) {\n isCalculationInProgress = (Object.keys(this.props.dataModule.relationship[dmSelectedDataSource]).length === 0)\n isCalculationInProgress = isCalculationInProgress && hasValidDatasets && latestProcessingStatus !== DEFAULT_METRICS_RUN_FAILURE;\n if (isCalculationInProgress) {\n this.props.setLoader(true);\n } else {\n this.props.setLoader(false);\n }\n }\n }\n\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (checkProgress === undefined && this.props.dataModule.tenantId !== undefined && this.props.dataModule.tenantId === -1 &&\n dmSelectedDataSource === -1 && sessionToken !== undefined && sessionToken !== null) {\n }\n\n // let initialChipData = [{\"key\": dmSelectedDataSource,\n // \"value\": this.props.dataModule.integrations[dmSelectedDataSource],\n // \"type\": DATA_SOURCE}];\n // let default_data = this.props.dataModule.relationship[dmSelectedDataSource];\n // let restrictchilddata = [];\n // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // for(let loop=0;loop 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n /**Separate Dataset level and attribute level */\n let datasetLevelChart = []\n let attributeLevelChart = []\n\n this.state.chartDatas.map((data) => {\n let id = data.attribute_id === undefined ? data.dataset_id : data.attribute_id;\n if(data.attribute_id === undefined){\n data['name'] = normalizeChildDatasetName(data['name'])\n }\n else{\n data['dataset_name'] = normalizeChildDatasetName(data['dataset_name'])\n \n }\n if (this.state.existingList.includes(id)) {\n /** Condition to skip deleted metadata if any come in the chart data */\n if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(id))) {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n if (initialFilteredAttributes.length > 0) {\n if (data.attribute_id !== undefined) {\n if (initialFilteredAttributes.includes(Number(data.attribute_id))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(data.dataset_id))) {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n // }\n // else {\n // /** Condition to skip deleted metadata if any come in the chart data */\n }\n return data;\n })\n\n /**Separate Partition and child datasets */\n\n let parentDatasetIds = []\n let childDatasetIds = []\n datasetLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n childDatasetIds = childDatasetIds.concat(data.dataset_id)\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(data.dataset_id)\n }\n }\n return parentDatasetIds\n })\n\n\n /**Separate Partition dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n attributeLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (parentDatasetIds.includes(data.dataset_id)) {\n parentAttributeIds = parentAttributeIds.concat(data.attribute_id)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n }\n return parentAttributeIds\n })\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n /*** Skip Pushing Child Dataset initially */\n \n \n // if (data.attribute_id === undefined) {\n \n // }\n\n // if (data.attribute_id === undefined) {\n \n // }\n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return chartData\n })\n\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n attributeLevelChart.map((data) => {\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n return chartData\n })\n }\n\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n return (\n this.state.showLoader === false && this.props.inProgress === false\n ?\n (\n
    \n {\n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n }\n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n
    \n )\n :\n (\n this.state.showLoader === false && this.props.inProgress === true\n ?\n \n \n \n }\n />\n :\n (this.props.noDataFound === true ?\n \n :\n\n <>\n {this.state.showLoader === true ? renderskloader(this.state.chartTitle, this.state.gridTitle)\n :\n ''\n }\n \n )\n )\n );\n }\n}\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate })(Uniqueness);","import React from 'react';\n// import Filter from '../components/filter';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport RcTooltip from 'rc-tooltip';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport {\n TIMELINESS_METRIC_COLOR,\n TIMELINESS_CARDS,\n ENVIRONMENT,\n STATIC_CARDS,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n DATA_PROFILING_FAILED,\n NO_DATASET_NO_DATA_PROFILE,\n NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE\n} from '../../utils/constant';\nimport { FilterOptions } from '../components/filterOptions';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate } from \"../../redux/actions\";\nimport moment from 'moment';\nimport * as d3 from 'd3';\nimport CardHelpContent from '../../components/cardHelpContent';\nimport ProgressStatus from '../../components/progressStatus';\nimport NoDataComponent from \"../components/noDataComponent\"\nimport Image from '../../components/image';\nimport { parseMetaMapping, getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource } from '../../utils/common_utils';\nimport {\n // METADATA_MAP_VALUE_SEPARATOR, \n normalizeChildDatasetName, \n QUALDO_CHILD_DATASET_SEPARATOR\n} from '../../utils/attribute_name_utils';\n//import AdvanceFilter from \"./advancedFilter\"\nimport ProfileCardData from \"./profileCardData\"\nimport { renderskloader } from \"./dq_render_utils\"\n\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\"\n\n\nconst renderTooltip = (props) => (\n \n Need Help ?\n \n);\n\nclass Timeliness extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.skloader = this.skloader.bind(this)\n\n \n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.handleFilteredData = this.handleFilteredData.bind(this);\n\n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n showModal: false,\n cardName: \"\",\n cardData: [],\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n startDate: startDate,\n endDate: endDate,\n selectedDate: [],\n initial_load: 1,\n hideComponent: 'd-none',\n chartTitle: \"Data Timeliness Dashboard\",\n gridTitle: \"Data Timeliness metric values for all datasets\",\n\n environmentOptions: [],\n datasourceOptions: [],\n datasetsOptions: [],\n attributesOptions: [],\n // tableData:{'header':[],'data':[]},\n showLoader: this.props.showLoader,\n newDardData: null,\n relationShipchartData: [],\n chartDatas: [],\n filterData: this.props.filterData,\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n checkedPartition: false,\n checkedAttributes: false,\n datasetLevelChart: [],\n attributeLevelChart: [],\n existingList: this.props.existingList,\n clearAllFilter:false,\n profileData:{},\n filteredDatas:{},\n filteredValues: this.props.filteredValues,\n }\n }\n\n allowPartition() {\n this.setState({ checkedPartition: !this.state.checkedPartition })\n }\n\n allowAttributes() {\n this.setState({ checkedAttributes: !this.state.checkedAttributes })\n }\n\n loadDataSourceRender(params, filteredDatas=null, dateFilter=null) {\n if(dateFilter === true){\n this.setState({showLoader:true})\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else{\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params,filteredDatas, dateFilter)\n\n }\n else{\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params)\n\n }\n }\n\n clearAllFilterData(){\n this.setState({ filterData: this.props.filterData,clearAllFilter:true})\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 4, data)\n if(filterData !== undefined){\n this.setState({newCardData:filterData['cardData'], tableData:filterData['tableData']})\n }\n }\n\n\n // componentDidUpdate(prevProps) {\n\n // if (this.state.showLoader === false && this.state.tableData.data.length === 0) {\n // this.formTableData(this.props.dataModule.filteredValues);\n\n\n // }\n // if (prevProps.dataModule.selectedDataSource === -1) {\n // if (prevProps.dataModule.selectedDataSource !== this.props.dataModule.selectedDataSource) {\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // this.setDefaultValuesInFilter();\n // }\n // }\n // if (prevProps.dataModule.filteredValues !== this.props.dataModule.filteredValues) {\n // if (this.props.dataModule.filteredValues.length > 0) {\n // this.setFilteredValues(this.props.dataModule.filteredValues);\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // }\n // }\n // }\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData();\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n return [];\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n renderCards(cardData) {\n return (\n
    \n {\n this.state.showModal ?\n : \"\"\n }\n {\n cardData.map((data) => {\n let cardBackground = `dashboard-stat ${data.background}`;\n let textColor = `title ${data.textColor}`;\n return (\n
    \n
    \n
    \n
    \n
    \n {data.metric_name}\n
    \n
    \n
    }\n >\n
    \n \n
    \n
    \n
    \n {data.metric_value}\n {data.metric_name === \"Data Timeliness\" ? \"days\" : \"%\"}\n
    \n \n
    \n
    \n
    \n );\n })\n }\n \n );\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": STATIC_CARDS[key] }\n }\n\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 4\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true && this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 4);\n } }\n this.formCardData();\n // this.formTableData(this.props.dataModule.filteredValues);\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n }\n\n\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.selectedDataSource !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.props.dataModule.selectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.props.dataModule.selectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData();\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] }\n this.props.setFilteredValues([]);\n this.setChipData(environment, dataSource, -1, -1);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate })\n this.formCardData();\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues);\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData();\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n renderFilter(environmentOption) {\n let dataSourceOption = [];\n let dataSetOptions = [];\n let preSelectedEnvironment = this.state.prefillEnvironment;\n let preSelectedDataSource = this.state.prefillDataSource;\n let preSelectedDatasets = -1;\n let preSelectedAttributes = -1;\n let attributeOptions = [];\n if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n let chipData = this.props.dataModule.chipData;\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n preSelectedEnvironment = { \"label\": environment[0].value, \"value\": environment[0].key };\n dataSourceOption = []\n let dataSourceList = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n dataSourceList.forEach((dataSourceId) => {\n dataSourceOption.push({ \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] });\n });\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n preSelectedDataSource = { \"label\": dataSource[0].value, \"value\": dataSource[0].key };\n let datasets = chipData.filter((item) => item.type === DATA_SET);\n preSelectedDatasets = [];\n datasets.forEach((dataSet) => {\n preSelectedDatasets.push({ \"label\": dataSet.value, \"value\": dataSet.key })\n });\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n preSelectedAttributes = [];\n attributes.forEach((attribute) => {\n preSelectedAttributes.push({ \"label\": attribute.value, \"value\": attribute.key })\n });\n\n preSelectedDatasets.forEach((item) => {\n let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n if (attributesList !== undefined) {\n attributesList.forEach((attributeId) => {\n attributeOptions.push({\n \"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n attributeId, preSelectedEnvironment, preSelectedDataSource)\n });\n });\n }\n });\n let datasetIds = [];\n dataSetOptions = [];\n let dataSetsList = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n if (dataSetsList !== undefined) {\n dataSetsList.forEach((dataSetId) => {\n if (!datasetIds.includes(dataSetId)) {\n datasetIds.push(dataSetId);\n dataSetOptions.push({\n \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)\n });\n }\n });\n }\n }\n else {\n let datasetIds = [];\n if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && this.state.prefillEnvironment !== undefined &&\n this.state.prefillEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n dataSources.forEach((dataSourceId) => {\n if (this.props.dataModule[\"recencyDetails\"][dataSourceId] === undefined) {\n dataSourceOption.push({ \"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] });\n }\n });\n let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n if (dataSets !== undefined) {\n dataSets.forEach((dataSetId) => {\n if (!datasetIds.includes(dataSetId)) {\n datasetIds.push(dataSetId);\n dataSetOptions.push({\n \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n });\n }\n })\n }\n }\n\n }\n\n return (\n \n );\n }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n if (infoData !== null && infoData !== undefined) {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n }\n });\n return updatedInfoData;\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n // if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n // let tableInfo = [];\n // let allMetricInfo;\n // if (changedDataSource === -1) {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.recencyDetails[this.props.dataModule.selectedDataSource]);\n // } else {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.recencyDetails[changedDataSource]);\n // }\n\n // // let default_data = allMetricInfo;\n // let restrictchilddata = [];\n // // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // // for (var key in default_data) {\n // // if (default_data.hasOwnProperty(key)) {\n // // let metaData = this.props.dataModule.metaData[key];\n // // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // // restrictchilddata[key] = default_data[key]\n // // }\n // // }\n // // }\n // // }else {\n // // restrictchilddata = default_data;\n // // } \n // // if (filteredValues.length !== 0) {\n // // restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n // // }\n\n // restrictchilddata = allMetricInfo\n\n // if (allMetricInfo !== undefined && restrictchilddata !== null) {\n // for (const [key, value] of Object.entries(restrictchilddata)) {\n // if (key.split(\".\").length === 3) {\n // for (const [attrKey] of Object.entries(this.props.dataModule.metaData)) {\n // if (attrKey.startsWith(key)) {\n // let metaData = this.props.dataModule.metaData[attrKey];\n // if (metaData !== undefined) {\n // let reqSplitArrVals = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n // let dataSource = reqSplitArrVals[1];\n // let dataSet = normalizeChildDatasetName(reqSplitArrVals[2]);\n // for (const [metricId, metricValue] of Object.entries(value)) {\n // if (!metricId.endsWith(\"drift\") && metricId in TIMELINESS_METRIC) {\n // let tableData = [];\n // tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n // tableData.push({ \"value\": dataSet, \"type\": \"td\" });\n // tableData.push({ \"value\": TIMELINESS_METRIC[metricId], \"type\": \"td\" });\n // let tempMetricValue = metricValue;\n // if (this.props.dataModule.timeFilterApplied) {\n // let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, key, metricId);\n // if (timeFilteredData.length > 0) {\n // tempMetricValue = `${Math.min.apply(null, timeFilteredData)}`;\n // } else {\n // continue;\n // }\n // }\n // tableData.push({ \"value\": `${tempMetricValue} days`, \"type\": \"td\" });\n // tableInfo.push(tableData);\n // }\n // }\n // }\n // break;\n // }\n // }\n // }\n // }\n // }\n // let tableHeaders = this.state.tableData.headers;\n // let tableData = { \"headers\": tableHeaders, data: tableInfo };\n // this.setState({ tableData: tableData });\n // }\n let tableData = this.state.tableData\n\n this.setState({ tableData: tableData });\n }\n\n formCardData() {\n\n let cardInfo = [];\n let commonId = 0;\n for (const [cardName] of Object.entries(TIMELINESS_CARDS)) {\n let tempInfo = {};\n tempInfo[\"metric_name\"] = cardName;\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = TIMELINESS_METRIC_COLOR[cardName].cardBackground;\n tempInfo[\"textColor\"] = TIMELINESS_METRIC_COLOR[cardName].textColor;\n tempInfo[\"chartData\"] = this.filterTimeData(commonId);\n tempInfo[\"idValue\"] = `completeness${commonId}`;\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n }\n this.setState({\n cardData: cardInfo\n });\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setAttributeTab(dataSet, attribute)\n // this.props.setDataSet(dataSet);\n // this.props.setAttribute(\"\", attribute);\n }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n render() {\n let dataSourceOption = [];\n let environmentOption = [];\n let selectedDataSource = {};\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n\n const lastProfilingTimeElement = this.state.last_processed_time\n let lastProfilingTime = lastProfilingTimeElement ?\n `Your data last profiled at ${lastProfilingTimeElement}` : \"--\";\n\n\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (this.props.dataModule[\"recencyDetails\"][key] === undefined) {\n dataSourceOption.push({ \"label\":
    {value}
    , \"value\": key, \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n if (dmSelectedDataSource !== undefined && key === dmSelectedDataSource.toString()) {\n selectedDataSource = { \"label\": value, \"value\": key };\n }\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n let isCalculationInProgress = false\n let discoveryStatus;\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n } else if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n }\n\n let checkProgress;\n if (this.props.dataModule.relationship !== undefined && this.props.dataModule.relationship !== \"undefined\") {\n checkProgress = this.props.dataModule.relationship[dmSelectedDataSource]\n if (checkProgress !== undefined) {\n isCalculationInProgress = (Object.keys(this.props.dataModule.relationship[dmSelectedDataSource]).length === 0)\n isCalculationInProgress = isCalculationInProgress && hasValidDatasets && latestProcessingStatus !== DEFAULT_METRICS_RUN_FAILURE;\n\n if (isCalculationInProgress) {\n this.props.setLoader(true);\n } else {\n this.props.setLoader(false);\n }\n }\n }\n\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (checkProgress === undefined && this.props.dataModule.tenantId !== undefined &&\n this.props.dataModule.tenantId === -1 &&\n dmSelectedDataSource === -1 && sessionToken !== null && sessionToken !== undefined) {\n }\n\n // let initialChipData = [{\n // \"key\": dmSelectedDataSource,\n // \"value\": this.props.dataModule.integrations[dmSelectedDataSource],\n // \"type\": DATA_SOURCE\n // }];\n let default_data = this.props.dataModule.relationship[dmSelectedDataSource];\n let restrictchilddata = [];\n if ((default_data !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) || (default_data !== undefined && this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)) {\n for (let loop = 0; loop < default_data.length; loop++) {\n let metaData = this.props.dataModule.metaData[default_data[loop][\"name\"]];\n if (metaData !== undefined && metaData !== null && metaData.includes(QUALDO_CHILD_DATASET_SEPARATOR)) {\n continue\n }\n restrictchilddata.push(default_data[loop])\n }\n } else {\n restrictchilddata = default_data;\n }\n\n\n\n\n/** TODO */\n // Below entire chart logic needs to be moved into a function : handleChartData()\n\n let chartData = []\n\n let initialFilteredValues = this.state.filteredValues\n let initialFilteredDatasets = []\n let initialFilteredAttributes = []\n\n if (Object.keys(initialFilteredValues).length > 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n /**Separate Dataset level and attribute level */\n let datasetLevelChart = []\n let attributeLevelChart = []\n\n this.state.chartDatas.map((data) => {\n let id = data.attribute_id === undefined ? data.dataset_id : data.attribute_id;\n if(data.attribute_id === undefined){\n data['name'] = normalizeChildDatasetName(data['name'])\n }\n else{\n data['dataset_name'] = normalizeChildDatasetName(data['dataset_name'])\n }\n if (this.state.existingList.includes(id)) {\n /** Condition to skip deleted metadata if any come in the chart data */\n if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(id))) {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n if (initialFilteredAttributes.length > 0) {\n if (data.attribute_id !== undefined) {\n if (initialFilteredAttributes.includes(Number(data.attribute_id))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(data.dataset_id))) {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n // }\n // else {\n // /** Condition to skip deleted metadata if any come in the chart data */\n }\n return data;\n })\n\n /**Separate Partition and child datasets */\n\n let parentDatasetIds = []\n let childDatasetIds = []\n datasetLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n childDatasetIds = childDatasetIds.concat(data.dataset_id)\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(data.dataset_id)\n }\n }\n return parentDatasetIds\n })\n\n\n /**Separate Partition dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n attributeLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (parentDatasetIds.includes(data.dataset_id)) {\n parentAttributeIds = parentAttributeIds.concat(data.attribute_id)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n }\n return parentAttributeIds\n })\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n /*** Skip Pushing Child Dataset initially */\n \n \n // if (data.attribute_id === undefined) {\n \n // }\n\n // if (data.attribute_id === undefined) {\n \n // }\n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return chartData\n })\n\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n attributeLevelChart.map((data) => {\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n return chartData\n })\n }\n\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n return (\n this.state.showLoader === false && this.props.inProgress === false\n ?\n (\n
    \n {\n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n }\n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n
    \n )\n :\n (\n this.state.showLoader === false && this.props.inProgress === true\n ?\n \n \n \n }\n />\n :\n (this.props.noDataFound === true ? \n \n :\n <>\n {this.state.showLoader === true ? renderskloader(this.state.chartTitle, this.state.gridTitle) : ''}\n \n )\n )\n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate })(Timeliness);","import React from 'react';\n// import Filter from '../components/filter';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\n// import CardHelpContent from '../../components/cardHelpContent';\n// import RcTooltip from 'rc-tooltip';\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n// import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport {\n ACCURACY_METRIC,\n ENVIRONMENT,\n STATIC_CARDS,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n ACCURACY_METRIC_COLOR,\n NO_DATASET_NO_DATA_PROFILE,\n DATA_PROFILING_FAILED,\n NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE\n} from '../../utils/constant';\n// import { FilterOptions } from '../components/filterOptions';\n// import _ from 'lodash';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setFilteredValues, setChipData, setTimeFilter, setStartDate, setEndDate } from \"../../redux/actions\";\nimport moment from 'moment';\nimport * as d3 from 'd3';\nimport ProgressStatus from '../../components/progressStatus';\nimport NoDataComponent from \"../components/noDataComponent\"\nimport Image from '../../components/image';\nimport { getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource } from '../../utils/common_utils';\nimport {\n // normalizeAttributeName,\n // METADATA_MAP_VALUE_SEPARATOR,\n QUALDO_CHILD_DATASET_SEPARATOR,\n normalizeChildDatasetName\n} from '../../utils/attribute_name_utils';\nimport { renderTableComponents, renderskloader } from \"./dq_render_utils\";\n//import AdvanceFilter from \"./advancedFilter\"\nimport ProfileCardData from \"./profileCardData\"\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\"\n\n\n// const renderTooltip = (props) => (\n// \n// Need Help ?\n// \n// );\n\n\nclass Accuracy extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderTableComponents = renderTableComponents.bind(this);\n this.skloader = this.skloader.bind(this)\n\n \n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.handleFilteredData = this.handleFilteredData.bind(this);\n\n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n showModal: false,\n cardName: \"\",\n cardData: [],\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n startDate: startDate,\n endDate: endDate,\n selectedDate: [],\n initial_load: 1,\n hideComponent: 'd-none',\n chartTitle:\"Data Accuracy Dashboard\",\n gridTitle:\"Data Accuracy metric values for selected datasets / attributes\",\n\n\n environmentOptions:[],\n datasourceOptions:[],\n datasetsOptions:[],\n attributesOptions:[],\n // tableData:{'header':[],'data':[]},\n showLoader: this.props.showLoader,\n newDardData:null,\n relationShipchartData:[],\n newCardData:[],\n chartDatas:[],\n filterData: this.props.filterData,\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n checkedPartition:false,\n checkedAttributes:false,\n datasetLevelChart:[],\n attributeLevelChart:[],\n existingList: this.props.existingList,\n clearAllFilter:false,\n profileData:{},\n filteredDatas:{},\n filteredValues: this.props.filteredValues,\n }\n }\n\n allowPartition(){\n this.setState({checkedPartition:!this.state.checkedPartition})\n }\n \n allowAttributes(){\n this.setState({checkedAttributes:!this.state.checkedAttributes})\n }\n\n loadDataSourceRender(params, filteredDatas=null, dateFilter=null) {\n if(dateFilter === true){\n this.setState({showLoader:true})\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else{\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params,filteredDatas, dateFilter)\n\n }\n else{\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params)\n }\n }\n\n clearAllFilterData(){\n this.setState({ filterData: this.props.filterData,clearAllFilter:true})\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 3, data)\n if(filterData !== undefined){\n this.setState({newCardData:filterData['cardData'], tableData:filterData['tableData']})\n }\n }\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n // componentDidUpdate(prevProps) {\n // if(this.state.showLoader === false && this.state.tableData.data.length === 0){\n // this.formTableData(this.props.dataModule.filteredValues);\n\n\n // }\n // if (prevProps.dataModule.selectedDataSource === -1) {\n // if (prevProps.dataModule.selectedDataSource !== this.props.dataModule.selectedDataSource) {\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // this.setDefaultValuesInFilter();\n // }\n // }\n // if (prevProps.dataModule.filteredValues !== this.props.dataModule.filteredValues) {\n // if (this.props.dataModule.filteredValues.length > 0) {\n // this.setFilteredValues(this.props.dataModule.filteredValues);\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // }\n // }\n // }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n return [];\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n\n }\n\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 3\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true && this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 3);\n } \n }\n\n this.formCardData(this.props.dataModule.filteredValues);\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.selectedDataSource !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.props.dataModule.selectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.props.dataModule.selectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] };\n this.props.setFilteredValues([]);\n this.setChipData(environment, dataSource, -1, -1);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n this.formCardData([], dataSourceId, startDate, endDate);\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues)\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n // renderFilter(environmentOption) {\n // let dataSourceOption = [];\n // let dataSetOptions = [];\n // let preSelectedEnvironment = this.state.prefillEnvironment;\n // let preSelectedDataSource = this.state.prefillDataSource;\n // let preSelectedDatasets = -1;\n // let preSelectedAttributes = -1;\n // let attributeOptions = [];\n // if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n // let chipData = this.props.dataModule.chipData;\n // let environment= chipData.filter((item) => item.type === ENVIRONMENT);\n // preSelectedEnvironment = {\"label\": environment[0].value, \"value\": environment[0].key};\n // dataSourceOption = []\n // let dataSourceList = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSourceList.forEach((dataSourceId) => {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // });\n // let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n // preSelectedDataSource = {\"label\": dataSource[0].value, \"value\": dataSource[0].key};\n // let datasets = chipData.filter((item) => item.type === DATA_SET);\n // preSelectedDatasets = [];\n // datasets.forEach((dataSet) => {\n // preSelectedDatasets.push({\"label\": dataSet.value, \"value\": dataSet.key})\n // });\n // let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // preSelectedAttributes = [];\n // attributes.forEach((attribute) => {\n // preSelectedAttributes.push({\"label\": attribute.value, \"value\": attribute.key})\n // });\n\n // preSelectedDatasets.forEach((item) => {\n // let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n // if(attributesList!==undefined){\n // attributesList.forEach((attributeId) => {\n // attributeOptions.push({\"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n // attributeId, preSelectedEnvironment, preSelectedDataSource)});\n // });\n // }\n // });\n // let datasetIds = [];\n // dataSetOptions = [];\n // let dataSetsList = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSetsList !== undefined){\n // dataSetsList.forEach((dataSetId) => {\n // if(!datasetIds.includes(dataSetId)){\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)\n // });\n // }\n // });\n // }\n // }\n // else {\n // let datasetIds = [];\n // if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && this.state.prefillEnvironment !== undefined &&\n // this.state.prefillEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n // let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSources.forEach((dataSourceId) => {\n // if(this.props.dataModule[\"info\"][dataSourceId] === undefined) {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true});\n // }else {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // }\n // });\n // let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSets !== undefined) {\n // dataSets.forEach((dataSetId) => {\n // if (!datasetIds.includes(dataSetId)) {\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n // });\n // }\n // })\n // }\n // }\n\n // }\n // return (\n // \n // );\n // }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n // if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n // let tableInfo = [];\n // let allMetricInfo;\n // if (changedDataSource === -1) {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n // } else {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n // }\n\n // // let default_data = allMetricInfo;\n // let restrictchilddata = [];\n // // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // // for (var key in default_data) {\n // // if (default_data.hasOwnProperty(key)) {\n // // let metaData = this.props.dataModule.metaData[key];\n // // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // // restrictchilddata[key] = default_data[key]\n // // }\n // // }\n // // }\n // // }else {\n // // restrictchilddata = default_data;\n // // }\n\n // restrictchilddata = allMetricInfo\n\n // if (filteredValues.length !== 0) {\n // restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n // }\n // for (const [key, value] of Object.entries(restrictchilddata)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if (metaData !== undefined) {\n // let reqSplitVal = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n // let dataSource = reqSplitVal[1];\n // let dataSet = reqSplitVal[2];\n // let attribute = reqSplitVal[reqSplitVal.length - 1];\n // for (const [metricId, metricValue] of Object.entries(value)) {\n // if (!metricId.endsWith(\"drift\") && metricId in ACCURACY_METRIC) {\n // let tableData = [];\n // tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n // let reqDatasetName = normalizeChildDatasetName(dataSet)\n // tableData.push({ \"value\": reqDatasetName, \"type\": \"td\" });\n // let normalizedAttributeName = normalizeAttributeName(attribute);\n // tableData.push({ \"value\": normalizedAttributeName, \"type\": \"td\" });\n // tableData.push({ \"value\": ACCURACY_METRIC[metricId], \"type\": \"td\" });\n // let tempMetricValue = metricValue;\n // if (this.props.dataModule.timeFilterApplied) {\n // let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, key, metricId);\n // if (timeFilteredData.length > 0) {\n // tempMetricValue = `${Math.max.apply(null, timeFilteredData)}`;\n // } else {\n // continue;\n // }\n // }\n // tableData.push({ \"value\": `${tempMetricValue} %`, \"type\": \"td\" });\n // tableInfo.push(tableData);\n // }\n // }\n // }\n\n // }\n // let tableHeaders = this.state.tableData.headers;\n // let tableData = { \"headers\": tableHeaders, data: tableInfo };\n // this.setState({ tableData: tableData });\n // }\n let tableData = this.state.tableData\n this.setState({ tableData: tableData });\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": STATIC_CARDS[key] }\n }\n\n formCardData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n\n let cardInfo = [];\n for (const [key] of Object.entries(ACCURACY_METRIC)) {\n let commonId = 0;\n let tempInfo = {};\n tempInfo[\"metric_name\"] = ACCURACY_METRIC[key];\n tempInfo[\"metric_value\"] = ''\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = ACCURACY_METRIC_COLOR[key].cardBackground;\n tempInfo[\"textColor\"] = ACCURACY_METRIC_COLOR[key].textColor;\n tempInfo[\"idValue\"] = `accuracy${commonId}`;\n tempInfo[\"chartData\"] = this.filterTimeData(commonId);\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n\n let outInfo = {};\n outInfo[\"metric_name\"] = \"No of Numerical Attributes with Outliers\";\n outInfo[\"metric_value\"] = '';\n outInfo[\"hide_edit\"] = true;\n outInfo[\"cardType\"] = \"chart\";\n outInfo[\"background\"] = \"dashboard-stat-gray\"\n outInfo[\"textColor\"] = \"text-gray\"\n outInfo[\"idValue\"] = `accuracy${commonId}`;\n outInfo[\"chartData\"] = this.filterTimeData(commonId);\n commonId = commonId + 1;\n cardInfo.push(outInfo);\n let nonOutInfo = {};\n nonOutInfo[\"metric_name\"] = \"No of Numerical Attributes without Outliers\";\n nonOutInfo[\"metric_value\"] = '';\n nonOutInfo[\"hide_edit\"] = true;\n nonOutInfo[\"cardType\"] = \"chart\";\n nonOutInfo[\"background\"] = \"dashboard-stat-purple\"\n nonOutInfo[\"textColor\"] = \"text-purple\"\n nonOutInfo[\"idValue\"] = `accuracy${commonId}`;\n nonOutInfo[\"chartData\"] = this.filterTimeData(commonId);\n commonId = commonId + 1;\n cardInfo.push(nonOutInfo);\n }\n this.setState({\n cardData: cardInfo\n });\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setAttributeTab(dataSet, attribute)\n\n // this.props.setDataSet(dataSet);\n // this.props.setAttribute(\"\", attribute);\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n\n // renderCards(cardData) {\n // return (\n //
    \n // {\n // this.state.showModal ?\n // : \"\"\n // }\n // {\n // cardData.map((data) => {\n // let cardBackground = `dashboard-stat ${data.background}`;\n // let textColor = `title ${data.textColor}`;\n // return(\n //
    \n //
    \n //
    \n //
    \n //
    \n // {data.metric_name}\n //
    \n //
    \n //
    }>\n //
    \n // \n //
    \n //
    \n //
    \n // {data.metric_value}\n // {data.metric_name === \"Data Outliers\" ? \"%\" : \"\"}\n //
    \n // \n //
    \n //
    \n //
    \n // );\n // })\n // }\n // \n // );\n // }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n\n render() {\n let dataSourceOption = [];\n let environmentOption = [];\n let selectedDataSource = {};\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n\n const lastProfiledTime = this.state.last_processed_time\n let lastProfilingTime = lastProfiledTime ?\n `Your data last profiled at ${lastProfiledTime}` : \"--\";\n\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (this.props.dataModule[\"info\"][key] === undefined) {\n dataSourceOption.push({ \"label\":
    {value}
    , \"value\": key, \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n if (dmSelectedDataSource !== undefined && key === dmSelectedDataSource.toString()) {\n selectedDataSource = { \"label\": value, \"value\": key };\n }\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n let isCalculationInProgress = false\n let discoveryStatus;\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n } else if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n }\n\n let checkProgress;\n if (this.props.dataModule.relationship !== undefined && this.props.dataModule.relationship !== \"undefined\") {\n checkProgress = this.props.dataModule.relationship[dmSelectedDataSource]\n if (checkProgress !== undefined) {\n isCalculationInProgress = (Object.keys(this.props.dataModule.relationship[dmSelectedDataSource]).length === 0)\n isCalculationInProgress = isCalculationInProgress && hasValidDatasets && latestProcessingStatus !== DEFAULT_METRICS_RUN_FAILURE;\n if (isCalculationInProgress) {\n this.props.setLoader(true);\n } else {\n this.props.setLoader(false);\n }\n }\n }\n\n\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (checkProgress === undefined && this.props.dataModule.tenantId !== undefined &&\n this.props.dataModule.tenantId === -1 && dmSelectedDataSource === -1 && sessionToken !== null && sessionToken !== undefined) {\n }\n\n // let initialChipData = [{\n // \"key\": dmSelectedDataSource,\n // \"value\": this.props.dataModule.integrations[dmSelectedDataSource],\n // \"type\": DATA_SOURCE\n // }];\n\n let default_data = this.props.dataModule.relationship[dmSelectedDataSource];\n let restrictchilddata = [];\n if((default_data !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) || (default_data !== undefined && this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n for(let loop=0;loop 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n /**Separate Dataset level and attribute level */\n let datasetLevelChart = []\n let attributeLevelChart = []\n\n this.state.chartDatas.map((data) => {\n let id = data.attribute_id === undefined ? data.dataset_id : data.attribute_id;\n if(data.attribute_id === undefined){\n data['name'] = normalizeChildDatasetName(data['name'])\n }\n else{\n data['dataset_name'] = normalizeChildDatasetName(data['dataset_name'])\n }\n if (this.state.existingList.includes(id)) {\n /** Condition to skip deleted metadata if any come in the chart data */\n if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(id))) {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n if (initialFilteredAttributes.length > 0) {\n if (data.attribute_id !== undefined) {\n if (initialFilteredAttributes.includes(Number(data.attribute_id))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(data.dataset_id))) {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n // }\n // else {\n // /** Condition to skip deleted metadata if any come in the chart data */\n }\n return data;\n })\n\n /**Separate Partition and child datasets */\n\n let parentDatasetIds = []\n let childDatasetIds = []\n datasetLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n childDatasetIds = childDatasetIds.concat(data.dataset_id)\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(data.dataset_id)\n }\n }\n return parentDatasetIds\n })\n\n\n /**Separate Partition dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n attributeLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (parentDatasetIds.includes(data.dataset_id)) {\n parentAttributeIds = parentAttributeIds.concat(data.attribute_id)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n }\n return parentAttributeIds\n })\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n /*** Skip Pushing Child Dataset initially */\n \n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return chartData\n })\n\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n attributeLevelChart.map((data) => {\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n return chartData\n })\n }\n\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n return (\n this.state.showLoader === false && this.props.inProgress === false \n ?\n (\n <>\n
    \n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n
    \n \n ) \n :\n (\n this.props.inProgress === true && this.state.showLoader === false \n ?\n \n \n \n }\n />\n :\n (this.props.noDataFound === true ? \n \n : \n <>\n {this.state.showLoader === true ? renderskloader(this.state.chartTitle, this.state.gridTitle) : ''}\n \n )\n )\n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setFilteredValues, setChipData, setTimeFilter, setStartDate, setEndDate })(Accuracy);","import React from 'react';\n// import Filter from '../components/filter';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n// import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport {\n CONFORMITY_METRIC,\n ENVIRONMENT,\n STATIC_CARDS,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n DATA_PROFILING_FAILED,\n CONFORMITY_METRIC_COLOR,\n NO_DATASET_NO_DATA_PROFILE,\n NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE\n} from '../../utils/constant';\n// import { FilterOptions } from '../components/filterOptions';\nimport _ from 'lodash';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate } from \"../../redux/actions\";\nimport moment from 'moment';\nimport * as d3 from 'd3';\n// import CardHelpContent from '../../components/cardHelpContent';\nimport ProgressStatus from '../../components/progressStatus';\nimport NoDataComponent from \"../components/noDataComponent\"\nimport Image from '../../components/image';\nimport { getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource } from '../../utils/common_utils';\nimport {\n // normalizeAttributeName,\n // METADATA_MAP_VALUE_SEPARATOR,\n normalizeChildDatasetName,\n QUALDO_CHILD_DATASET_SEPARATOR\n} from \"../../utils/attribute_name_utils\";\nimport { renderTableComponents, renderskloader } from \"./dq_render_utils\";\n//import AdvanceFilter from \"./advancedFilter\"\nimport ProfileCardData from \"./profileCardData\"\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\";\n// import RcTooltip from 'rc-tooltip';\n\n\n// const renderTooltip = (props) => (\n// \n// Need Help ?\n// \n// );\n\nclass Conformity extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderTableComponents = renderTableComponents.bind(this);\n this.skloader = this.skloader.bind(this)\n \n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.handleFilteredData = this.handleFilteredData.bind(this);\n \n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n showModal: false,\n cardName: \"\",\n cardData: [],\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n startDate: startDate,\n endDate: endDate,\n selectedDate: [],\n initial_load: 1,\n hideComponent: 'd-none',\n chartTitle:\"Data Conformity Dashboard\",\n gridTitle:\"Data Conformity metric values for selected datasets / attributes\",\n\n environmentOptions:[],\n datasourceOptions:[],\n datasetsOptions:[],\n attributesOptions:[],\n // tableData:{'header':[],'data':[]},\n showLoader:this.props.showLoader,\n newDardData:null,\n relationShipchartData:[],\n filterData: this.props.filterData,\n chartDatas:[],\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n checkedPartition:false,\n checkedAttributes:false,\n datasetLevelChart:[],\n attributeLevelChart:[],\n existingList: this.props.existingList,\n clearAllFilter:false,\n profileData:{},\n filteredDatas:{},\n filteredValues: this.props.filteredValues,\n\n }\n }\n\n\n allowPartition(){\n this.setState({checkedPartition:!this.state.checkedPartition})\n }\n \n allowAttributes(){\n this.setState({checkedAttributes:!this.state.checkedAttributes})\n }\n\n loadDataSourceRender(params, filteredDatas=null, dateFilter=null) {\n if(dateFilter === true){\n this.setState({showLoader:true})\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else if(Object.keys(this.state.filteredValues).length > 0){\n filteredDatas = this.state.filteredValues\n }\n else{\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params,filteredDatas, dateFilter)\n\n }\n else{\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params)\n\n }\n }\n\n clearAllFilterData(){\n this.setState({ filterData: this.props.filterData,clearAllFilter:true})\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 5, data)\n if(filterData !== undefined){\n this.setState({newCardData:filterData['cardData'], tableData:filterData['tableData']})\n }\n }\n\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n return [];\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n\n }\n\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 5\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true && this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 5);\n } }\n\n this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n }\n\n // componentDidUpdate(prevProps) {\n\n // if(this.state.showLoader === false && this.state.tableData.data.length === 0){\n // this.formTableData(this.props.dataModule.filteredValues);\n\n\n // }\n // if (prevProps.dataModule.selectedDataSource === -1) {\n // if (prevProps.dataModule.selectedDataSource !== this.props.dataModule.selectedDataSource) {\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // this.setDefaultValuesInFilter();\n // }\n // }\n // if (prevProps.dataModule.filteredValues !== this.props.dataModule.filteredValues) {\n // if (this.props.dataModule.filteredValues.length > 0) {\n // this.setFilteredValues(this.props.dataModule.filteredValues);\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // }\n // }\n // }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n const currSelectedDataSource = this.props.dataModule.selectedDataSource;\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (currSelectedDataSource !== undefined && currSelectedDataSource !== null &&\n key === currSelectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (currSelectedDataSource !== undefined && currSelectedDataSource !== null &&\n value.includes(currSelectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": STATIC_CARDS[key] }\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n // renderCards(cardData) {\n // return (\n //
    \n // {\n // this.state.showModal ?\n // : \"\"\n // }\n // {\n // cardData.map((data) => {\n // let cardBackground = `dashboard-stat ${data.background}`;\n // let textColor = `title ${data.textColor}`;\n // return(\n //
    \n //
    \n //
    \n //
    \n //
    \n // {data.metric_name}\n //
    \n //
    \n //
    }>\n //
    \n // \n //
    \n //
    \n //
    \n // {data.metric_value}\n // {data.metric_value !== \"NA\" ? % : \"\"}\n //
    \n // \n //
    \n //
    \n //
    \n // );\n // })\n // }\n // \n // );\n // }\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] }\n this.props.setFilteredValues([]);\n this.setChipData(environment, dataSource, -1, -1);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n this.formCardData([], dataSourceId, startDate, endDate);\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.attributeName ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues);\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n // renderFilter(environmentOption) {\n // let dataSourceOption = [];\n // let dataSetOptions = [];\n // let preSelectedEnvironment = this.state.prefillEnvironment;\n // let preSelectedDataSource = this.state.prefillDataSource;\n // let preSelectedDatasets = -1;\n // let preSelectedAttributes = -1;\n // let attributeOptions = [];\n // if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n // let chipData = this.props.dataModule.chipData;\n // let environment= chipData.filter((item) => item.type === ENVIRONMENT);\n // preSelectedEnvironment = {\"label\": environment[0].value, \"value\": environment[0].key};\n // dataSourceOption = []\n // let dataSourceList = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSourceList.forEach((dataSourceId) => {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // });\n // let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n // preSelectedDataSource = {\"label\": dataSource[0].value, \"value\": dataSource[0].key};\n // let datasets = chipData.filter((item) => item.type === DATA_SET);\n // preSelectedDatasets = [];\n // datasets.forEach((dataSet) => {\n // preSelectedDatasets.push({\"label\": dataSet.value, \"value\": dataSet.key})\n // });\n // let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // preSelectedAttributes = [];\n // attributes.forEach((attribute) => {\n // preSelectedAttributes.push({\"label\": attribute.value, \"value\": attribute.key})\n // });\n\n // preSelectedDatasets.forEach((item) => {\n // let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n // if(attributesList!==undefined){\n // attributesList.forEach((attributeId) => {\n // attributeOptions.push({\"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n // attributeId, preSelectedEnvironment, preSelectedDataSource)});\n // });\n // }\n // });\n // let datasetIds = [];\n // dataSetOptions = [];\n // let dataSetsList = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSetsList !== undefined){\n // dataSetsList.forEach((dataSetId) => {\n // if(!datasetIds.includes(dataSetId)){\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)\n // });\n // }\n // });\n // }\n // }\n // else {\n // let datasetIds = [];\n // if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && this.state.prefillEnvironment !== undefined &&\n // this.state.prefillEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n // let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSources.forEach((dataSourceId) => {\n // if(this.props.dataModule[\"info\"][dataSourceId] === undefined) {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true});\n // }else {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // }\n // });\n // let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSets !== undefined) {\n // dataSets.forEach((dataSetId) => {\n // if (!datasetIds.includes(dataSetId)) {\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n // });\n // }\n // })\n // }\n // }\n\n // }\n // return (\n // \n // );\n // }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n // if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n // let tableInfo = [];\n // let allMetricInfo;\n // if (changedDataSource === -1) {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n // } else {\n // allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n // }\n\n // // let default_data = allMetricInfo;\n // let restrictchilddata = [];\n // // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // // for (var key in default_data) {\n // // if (default_data.hasOwnProperty(key)) {\n // // let metaData = this.props.dataModule.metaData[key];\n // // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // // restrictchilddata[key] = default_data[key]\n // // }\n // // }\n // // }\n // // }else {\n // // restrictchilddata = default_data;\n // // }\n\n // restrictchilddata = allMetricInfo\n\n // if (filteredValues.length !== 0) {\n // restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n // }\n // for (const [key, value] of Object.entries(restrictchilddata)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if (metaData !== undefined) {\n // let reqSplitVals = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n // let dataSource = reqSplitVals[1];\n // let dataSet = reqSplitVals[2];\n // let attribute = reqSplitVals[reqSplitVals.length - 1];\n // for (const [metricId, metricValue] of Object.entries(value)) {\n // if (!metricId.endsWith(\"drift\") && metricId in CONFORMITY_METRIC) {\n // let tableData = [];\n // tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n // let reqDatasetName = normalizeChildDatasetName(dataSet)\n // tableData.push({ \"value\": reqDatasetName, \"type\": \"td\" });\n // let normalizedAttributeName = normalizeAttributeName(attribute);\n // tableData.push({ \"value\": normalizedAttributeName, \"type\": \"td\" });\n // tableData.push({ \"value\": CONFORMITY_METRIC[metricId], \"type\": \"td\" });\n // let tempMetricValue = metricValue;\n // if (this.props.dataModule.timeFilterApplied) {\n // let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, key, metricId);\n // if (timeFilteredData.length > 0) {\n // tempMetricValue = `${Math.max.apply(null, timeFilteredData)}`;\n // } else {\n // continue;\n // }\n // }\n // tableData.push({ \"value\": `${tempMetricValue} %`, \"type\": \"td\" });\n // tableInfo.push(tableData);\n // }\n // }\n // }\n\n // }\n // let tableHeaders = this.state.tableData.headers;\n // let tableData = { \"headers\": tableHeaders, data: tableInfo };\n // this.setState({ tableData: tableData });\n // }\n let tableData = this.state.tableData\n this.setState({ tableData: tableData });\n }\n\n formCardData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n\n let cardInfo = [];\n let allMetricInfo;\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n } else {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n }\n // let default_data = allMetricInfo;\n let restrictchilddata = {};\n // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // for (var key in default_data) {\n // if (default_data.hasOwnProperty(key)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR) && datasetNameFromMappedValue(metaData)!==\"\"){\n // restrictchilddata[key] = default_data[key]\n // }\n // }\n // }\n // }else {\n // restrictchilddata = default_data;\n // }\n\n restrictchilddata = allMetricInfo\n\n if (filteredValues.length !== 0) {\n restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n }\n let commonId = 0;\n for (const [key] of Object.entries(CONFORMITY_METRIC)) {\n let attributeMetricList = [];\n for (const metricInfo in restrictchilddata) {\n let metaData = this.props.dataModule.metaData[metricInfo];\n if (metaData !== undefined) {\n if (key in restrictchilddata[metricInfo]) {\n if (this.props.dataModule.timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData(restrictchilddata, startDate, endDate, metricInfo, key);\n if (timeFilteredData.length > 0) {\n attributeMetricList.push(Math.max.apply(null, timeFilteredData));\n }\n } else {\n attributeMetricList.push(restrictchilddata[metricInfo][key]);\n }\n }\n }\n }\n let tempInfo = {};\n tempInfo[\"metric_name\"] = CONFORMITY_METRIC[key];\n if (attributeMetricList.length !== 0) {\n tempInfo[\"metric_value\"] = `${(attributeMetricList.reduce((a, b) => a + b) / attributeMetricList.length).toFixed(2)}`;\n } else {\n tempInfo[\"metric_value\"] = \"NA\";\n }\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = CONFORMITY_METRIC_COLOR[key].cardBackground;\n tempInfo[\"textColor\"] = CONFORMITY_METRIC_COLOR[key].textColor;\n tempInfo[\"idValue\"] = `conformity${commonId}`;\n tempInfo[\"chartData\"] = this.filterTimeData(commonId);\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n\n }\n this.setState({\n cardData: cardInfo\n });\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setAttributeTab(dataSet, attribute)\n // this.props.setDataSet(dataSet);\n // this.props.setAttribute(\"\", attribute);\n }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n render() {\n\n let dataSourceOption = [];\n let environmentOption = [];\n let selectedDataSource = {};\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n\n const lastProfilingTimeElement = this.state.last_processed_time\n let lastProfilingTime = lastProfilingTimeElement ?\n `Your data last profiled at ${lastProfilingTimeElement}` : \"--\";\n\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (this.props.dataModule[\"info\"][key] === undefined) {\n dataSourceOption.push({ \"label\":
    {value}
    , \"value\": key, \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n if (dmSelectedDataSource !== undefined && key === dmSelectedDataSource.toString()) {\n selectedDataSource = { \"label\": value, \"value\": key };\n }\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n let isCalculationInProgress = false\n let discoveryStatus;\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n } else if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n }\n\n let checkProgress;\n if (this.props.dataModule.relationship !== undefined && this.props.dataModule.relationship !== \"undefined\") {\n checkProgress = this.props.dataModule.relationship[dmSelectedDataSource]\n if (checkProgress !== undefined) {\n isCalculationInProgress = (Object.keys(this.props.dataModule.relationship[dmSelectedDataSource]).length === 0)\n isCalculationInProgress = isCalculationInProgress && hasValidDatasets && latestProcessingStatus !== DEFAULT_METRICS_RUN_FAILURE;\n if (isCalculationInProgress) {\n this.props.setLoader(true);\n } else {\n this.props.setLoader(false);\n }\n }\n }\n\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (checkProgress === undefined && this.props.dataModule.tenantId !== undefined && this.props.dataModule.tenantId === -1 &&\n dmSelectedDataSource === -1 && sessionToken !== null && sessionToken !== undefined) {\n }\n // let initialChipData = [{\n // \"key\": dmSelectedDataSource,\n // \"value\": this.props.dataModule.integrations[dmSelectedDataSource],\n // \"type\": DATA_SOURCE\n // }];\n\n let default_data = this.props.dataModule.relationship[dmSelectedDataSource];\n let restrictchilddata = [];\n if((default_data !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) || (default_data !== undefined && this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n for(let loop=0;loop 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n /**Separate Dataset level and attribute level */\n let datasetLevelChart = []\n let attributeLevelChart = []\n\n this.state.chartDatas.map((data) => {\n let id = data.attribute_id === undefined ? data.dataset_id : data.attribute_id;\n if(data.attribute_id === undefined){\n data['name'] = normalizeChildDatasetName(data['name'])\n }\n else{\n data['dataset_name'] = normalizeChildDatasetName(data['dataset_name'])\n }\n if (this.state.existingList.includes(id)) {\n /** Condition to skip deleted metadata if any come in the chart data */\n if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(id))) {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id === undefined) {\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n }\n if (initialFilteredAttributes.length > 0) {\n if (data.attribute_id !== undefined) {\n if (initialFilteredAttributes.includes(Number(data.attribute_id))) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else if (initialFilteredDatasets.length > 0) {\n if (initialFilteredDatasets.includes(Number(data.dataset_id))) {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n }\n else {\n if (data.attribute_id !== undefined) {\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n // }\n // else {\n // /** Condition to skip deleted metadata if any come in the chart data */\n }\n return data;\n })\n\n /**Separate Partition and child datasets */\n\n let parentDatasetIds = []\n let childDatasetIds = []\n datasetLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n childDatasetIds = childDatasetIds.concat(data.dataset_id)\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(data.dataset_id)\n }\n }\n return parentDatasetIds\n })\n\n\n /**Separate Partition dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n attributeLevelChart.map((data) => {\n if(data.metric_type !== \"Row Count\"){\n if (parentDatasetIds.includes(data.dataset_id)) {\n parentAttributeIds = parentAttributeIds.concat(data.attribute_id)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n }\n return parentAttributeIds\n })\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataset_id))) {\n /*** Skip Pushing Child Dataset initially */\n \n \n // if (data.attribute_id === undefined) {\n \n // }\n\n // if (data.attribute_id === undefined) {\n \n // }\n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return chartData\n })\n\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n attributeLevelChart.map((data) => {\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(data.dataset_id)){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n return chartData\n })\n }\n\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n return (\n this.state.showLoader === false && this.props.inProgress === false \n ?\n (\n
    \n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n
    \n )\n :\n (\n this.state.showLoader === false && this.props.inProgress === true \n ?\n \n \n \n }\n />\n :\n (this.props.noDataFound === true ? \n \n :\n <>\n {this.state.showLoader === true ? renderskloader(this.state.chartTitle, this.state.gridTitle) : ''}\n \n )\n )\n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate })(Conformity);","import React from 'react';\nimport { faChartArea} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\n\nclass EmptyAPIResponse extends React.Component {\n\n getAttributeResponse(content){\n return (\n
    \n

    \n

    {content}

    \n
    \n );\n }\n\n render(){\n let page = this.props.page;\n let content = this.props.content;\n if (page === \"attribute\"){\n return this.getAttributeResponse(content);\n }\n }\n}\n\nexport default EmptyAPIResponse;\n\n\n\n","import React from 'react';\nimport Image from '../../components/image';\nimport BasicPortlet from '../../components/basicPortlet';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport ChartBody from '../../components/chartBody';\nimport Card from 'react-bootstrap/Card';\nimport { getApi, attributeProfileFilterSubmit } from \"../../utils/event_handling\";\nimport Load from '../../components/loadAction';\nimport EmptyAPIResponse from '../../components/emptyResponse';\nimport { getChartFilterData, filterBoxPlotData } from \"../../utils/common_utils\";\n// import Filter from '../components/attributeFilter';\nimport {\n ENVIRONMENT,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n MIN_MAX_SCALE,\n NO_DATASET_NO_DATA_PROFILE,\n NO_DATA_SET_FOUND_TEXT,\n DATA_PROFILING_FAILED,\n BOX_PLOT_METRICS,\n DEFAULT_METRICS_RUN_FAILURE,\n NON_NUMERIC_COLUMNS,\n IS_NONE_CHECK,\n DATA_TYPE_MAPPING,\n NO_DATASET_NO_ERROR\n // CONFIGURE_DATA_SOURCE_URL\n} from '../../utils/constant';\nimport { faChartArea, faFolderOpen, faCloud } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute } from \"../../redux/actions\";\n// import { FilterOptions } from '../components/attributeFilterOptions';\nimport NoErrorComponent from '../../monitor/components/monitorNoResult';\nimport ChartFilterHeader from '../../monitor/components/chartFilterHeader';\nimport { LazyLoadComponent } from 'react-lazy-load-image-component';\nimport NoDataComponent from \"../components/noDataComponent\"\nimport CardHelpContent from '../../components/cardHelpContent';\nimport ProgressStatus from '../../components/progressStatus';\nimport RcTooltip from 'rc-tooltip';\nimport {\n // parseMetaMapping, \n convertDecimalDigits,\n getShortTitleForAttribute\n} from '../../utils/common_utils';\nimport {\n normalizeAttributeName,\n METADATA_MAP_KEY_SEPARATOR,\n METADATA_MAP_VALUE_SEPARATOR, FQ_TOOLTIP_PLACEHOLDER,\n normalizeChildDatasetName\n} from \"../../utils/attribute_name_utils\";\n\nimport { getLastProcessing, getMetaDatas } from \"../../utils/dataProfileEventHandling\"\n// import { profileTabPrefetch } from \"../../utils/dataProfileEventHandling\"\n// import TreeFilter from \"../data/treeFilter\"\nimport moment from 'moment';\nimport Select, {\n components,\n} from 'react-select';\nimport Form from 'react-bootstrap/Form';\nimport { faLayerGroup, faTag, faDatabase } from '@fortawesome/free-solid-svg-icons';\n\nconst customSelectDatasource = ({ children, ...props }) => (\n \n \n {children}\n \n\n);\n\nconst customSelectDataset = ({ children, ...props }) => (\n \n \n {children}\n \n\n);\n\n\nconst customSelectAttribute = ({ children, ...props }) => (\n \n \n {children}\n \n\n);\n\nconst renderTooltipSummary = (props) => (\n \n {props}\n \n);\n\nclass Attribute extends React.Component {\n\n constructor(props) {\n super(props);\n this.getApi = getApi.bind(this);\n this.setApiResponse = this.setApiResponse.bind(this);\n this.changeSource = this.changeSource.bind(this);\n this.handleLoad = this.handleLoad.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.handleClick = this.handleClick.bind(this);\n this.getMetaDatas = getMetaDatas.bind(this);\n\n this.getLastProcessing = getLastProcessing.bind(this);\n this.handleApplyDatasource = this.handleApplyDatasource.bind(this);\n this.handleApplyDataset = this.handleApplyDataset.bind(this);\n this.handleApplyAttribute = this.handleApplyAttribute.bind(this);\n this.clearAllFilterData = this.clearAllFilterData.bind(this);\n this.attributeProfileFilterSubmit = attributeProfileFilterSubmit.bind(this)\n this.applyTimeFilterToChart = this.applyTimeFilterToChart.bind(this);\n\n\n this.state = {\n chipData: [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"value\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }],\n dataSourceId: this.props.dataModule.selectedDataSource,\n isFilterMode: true,\n filteredValues: [],\n cardName: '',\n showModal: false,\n hideLastProfiledTime: false,\n last_processed_time: \"\",\n dataSetId: this.props.seletedDatasetID,\n attributeName: this.props.seletedAttribute,\n // attributeID: props.dataModule.selectedAttributeID,\n dataSetName: \"\",\n datasetName: \"\",\n\n dataType: props.dataType,\n nativeType: props.nativeType,\n profileData: props.profileData,\n metricsData: props.metricsData,\n loadValue: props.loadValue,\n statisticsData: props.statisticsData,\n metricsOptions: props.metricsOptions,\n attributeProfileOptions: props.attributeProfileOptions,\n driftOnMetricsChart: props.driftOnMetricsChart,\n asterPlotChart: props.asterPlotChart,\n dataDistribution: props.dataDistribution,\n distributionData: props.distributionData,\n outlier: props.outlier,\n size: props.size,\n apiStatusCode: null,\n driftOnMetricsKey: null,\n showAggregateError: false,\n showMetricError: false,\n businessRule: null,\n tableCount: 13,\n expand: false,\n environmentOptions: [],\n dataSourceOptions: [],\n dataSetsOptions: [],\n attributesOptions: [],\n // filterData:[],\n filterData: this.props.filterData,\n showLoader: this.props.showLoader,\n preSelectedEnvironment: [],\n preSelectedDataSource: [],\n preSelectedDatasets: [],\n preSelectedAttributes: [],\n integrationsMap: [],\n processTiming: '',\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n startDate: moment(this.props.dataModule.startDate).format('YYYY-MM-DD 00:00:00'),\n endDate: moment(this.props.dataModule.endDate).format('YYYY-MM-DD 23:59:59'),\n attr_datasource_id: \"\",\n attr_datasource_value: \"\",\n attr_dataset_id: \"\",\n attr_dataset_value: \"\",\n attr_attribute_id: \"\",\n attr_attribute_value: \"\",\n attr_filter_datset_option: [],\n attr_filter_attr_option: [],\n clearAllFilter: false,\n profiletimeresult: [],\n inProgress:this.props.inProgress,\n noDataFound:this.props.noDataFound,\n progressStatus:this.props.progressStatus,\n }\n }\n\n clearAllFilterData() {\n this.setState({\n clearAllFilter: true,\n attr_datasource_id: \"\",\n attr_datasource_value: \"\",\n attr_dataset_id: \"\",\n attr_dataset_value: \"\",\n attr_attribute_id: \"\",\n attr_attribute_value: \"\",\n attr_filter_datset_option: [],\n attr_filter_attr_option: []\n });\n }\n\n\n componentDidMount() {\n if (\n this.state.attributeName !== \"\" && this.state.attributeName !== undefined &&\n this.state.dataSourceId !== \"\" && this.state.dataSourceId !== undefined &&\n this.state.dataSetId !== \"\" && this.state.dataSetId !== undefined\n ) {\n /**While clicking attributes from other tab will get into this if condition*/\n\n let datasourceOptions = this.props.filterData[\"datasourceOptions\"]\n let attr_datasource_value;\n let attr_datasource_id;\n datasourceOptions.map((data) => {\n if (data.data_set_ids !== undefined && data.data_set_ids.length > 0 && data.data_set_ids.includes(Number(this.state.dataSetId))) {\n attr_datasource_value = data.label;\n attr_datasource_id = data.value;\n }\n return null\n })\n\n let datasetsOptions = this.props.filterData[\"datasetsOptions\"].filter((data) =>\n parseInt(data.value) === parseInt(this.state.dataSetId)\n )\n\n let attr_dataset_value;\n let attr_dataset_id;\n if (datasetsOptions.length > 0) {\n attr_dataset_value = datasetsOptions[0][\"label\"];\n attr_dataset_id = datasetsOptions[0][\"value\"];\n }\n\n let attributesOptions;\n if (this.props.filterData[\"attributesOptions\"][parseInt(this.state.dataSetId)] !== undefined) {\n attributesOptions = this.props.filterData[\"attributesOptions\"][parseInt(this.state.dataSetId)].filter((data) =>\n data.label === this.state.attributeName\n )\n }\n\n let attr_attribute_value;\n let attr_attribute_id;\n if (attributesOptions.length > 0) {\n attr_attribute_value = attributesOptions[0][\"label\"];\n attr_attribute_id = attributesOptions[0][\"value\"];\n }\n\n\n let dataset_data = this.props.filterData[\"datasetsOptions\"].filter((data) =>\n parseInt(data.integration_id) === parseInt(attr_datasource_id) || data.integration_id === \"-1\"\n )\n\n let attribute_data = this.props.filterData[\"attributesOptions\"][parseInt(this.state.dataSetId)].filter((data) =>\n parseInt(data.data_set_id) === parseInt(this.state.dataSetId)\n )\n\n let sortedDatasetsOptions = dataset_data.sort((a, b) => a.value - b.value)\n\n this.setState({\n attr_filter_datset_option: sortedDatasetsOptions,\n attr_filter_attr_option: attribute_data,\n attr_datasource_value: attr_datasource_value,\n attr_datasource_id: attr_datasource_id,\n attr_dataset_value: attr_dataset_value,\n attr_dataset_id: attr_dataset_id,\n attr_attribute_value: attr_attribute_value,\n attr_attribute_id: attr_attribute_id\n });\n this.attributeProfileFilterSubmit(\n this.state.dataSetId,\n attr_attribute_id\n );\n this.getLastProcessing(\"getonlyprofiletime\", this.state.dataSourceId)\n }\n else {\n /** By default while coming inside the attribute tab will get into this else condition */\n this.getLastProcessing(\"\");\n }\n }\n\n handleApplyDatasource(key) {\n let cur_data = this.props.filterData[\"datasetsOptions\"].filter((data) =>\n data.integration_id === key.value || data.integration_id === \"-1\"\n )\n let sortedDatasetsOptions = cur_data.sort((a, b) => a.value - b.value)\n\n if(cur_data.length === 0){\n this.setState({noDataComponent:true, attr_datasource_value: key.label})\n this.setState({\n attr_filter_datset_option: sortedDatasetsOptions,\n attr_datasource_value: key.label,\n attr_datasource_id: key.value,\n attr_filter_attr_option: [],\n attr_dataset_value: \"\",\n attr_dataset_id: \"\",\n attr_attribute_value: \"\",\n attr_attribute_id: \"\"\n }); \n return\n }\n\n\n sortedDatasetsOptions = sortedDatasetsOptions.map((data) => {\n let splitLable = data.label.split('( ')\n data['label'] = splitLable[0]\n return data\n })\n\n let profiletimeresult = this.state.profiletimeresult.filter((data) =>\n data.integration_id === key.value\n )\n if (profiletimeresult.length > 0) {\n this.setState({ processTiming: profiletimeresult[0] })\n }\n\n this.setState({\n attr_filter_datset_option: sortedDatasetsOptions,\n attr_datasource_value: key.label,\n attr_datasource_id: key.value,\n attr_filter_attr_option: [],\n attr_dataset_value: \"\",\n attr_dataset_id: \"\",\n attr_attribute_value: \"\",\n attr_attribute_id: \"\"\n });\n }\n\n handleApplyDataset(key) {\n\n let attr_filter_attr_option = this.props.filterData[\"attributesOptions\"][key.value];\n this.setState({\n attr_filter_attr_option: attr_filter_attr_option,\n attr_dataset_value: key.label,\n attr_dataset_id: key.value,\n attr_attribute_value: \"\",\n attr_attribute_id: \"\"\n });\n }\n\n handleApplyAttribute(key) {\n this.setState({\n attr_attribute_value: key.label,\n attr_attribute_id: key.value,\n });\n this.attributeProfileFilterSubmit(this.state.attr_dataset_id, key.value);\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n handleLoad(value) {\n this.setState({ loadValue: value });\n }\n\n setFilteredValues(filteredValues, attributeName, attributeId) {\n let dataSetId = filteredValues[0].split(\".\")[2];\n this.setState({\n filteredValues: filteredValues,\n attributeName: attributeName,\n attributeID: attributeId,\n dataSetId: dataSetId\n })\n this.attributeProfileFilterSubmit(dataSetId, attributeId);\n }\n\n\n setApiResponse(data, apiStatusCode, isFilterApplied) {\n let sourceId = this.state.dataSourceId;\n let sourceName = \"\"\n let dataSetId = this.state.dataSetId === -1 ? this.props.dataModule.selectedDataSetId : this.state.dataSetId;\n Object.keys(this.props.dataModule.metaData).forEach(key => {\n let reqSplitArr = key.split(METADATA_MAP_KEY_SEPARATOR);\n if (reqSplitArr[2] === dataSetId) {\n sourceId = reqSplitArr[1];\n let reqMappedValues = this.props.dataModule.metaData[key];\n sourceName = reqMappedValues.split(METADATA_MAP_VALUE_SEPARATOR)[1];\n if (isFilterApplied === false) {\n this.setChipData(-1, { \"value\": sourceId, \"label\": sourceName }, -1, -1);\n }\n return sourceId;\n }\n });\n this.setState({ dataSourceId: sourceId });\n\n let stringDriftOnMetricsFilter = [\"empty\", \"unique\", \"duplicate\"];\n let attributeDataType = data[\"data_type\"];\n let businessRule = data[\"business_rule\"]\n let profileData = (data[\"data_profile\"] !== null && data[\"data_profile\"] !== undefined && data[\"data_profile\"].length > 0) ? data[\"data_profile\"][0] : null;\n let statisticsData = (data[\"statistics\"] !== null && data[\"statistics\"] !== undefined && data[\"statistics\"].length > 0) ? data[\"statistics\"][0] : null;\n let distributionData = (data[\"data_distribution\"] !== null && data[\"data_distribution\"] !== undefined && data[\"data_distribution\"].length > 0) ? data[\"data_distribution\"] : null;\n\n let metricsOptions = [];\n let attributeProfileOptions = [];\n //let colors = [\"#F14357\", \"#7F3C8D\",\"#11A579\",\"#53A2E3\", \"#F4AD49\", \"#6757E2\", \"#69DE92\", \"#E7654D\", \"#F04576\", \"#52C7EB\"];\n let metricsChartData = null;\n let asterPlotChartData = [];\n let metricsData = [];\n let datasetName = data.data_set_name;\n let versionName = data.version_name;\n\n if (data[\"metrics\"] !== null && data[\"metrics\"] !== undefined) {\n for (let i = 0; i < data[\"metrics\"].length; i++) {\n let obj = data[\"metrics\"][i];\n let metrics = Array.isArray(obj);\n if (metrics) {\n for (let k = 0; k < obj.length; k++) {\n let row = obj[k];\n if (row[\"name\"] === \"Data Drift\" && NON_NUMERIC_COLUMNS.includes(attributeDataType)) {\n continue\n }\n row.datasetName = datasetName;\n row.version_name = versionName;\n metricsData.push(row);\n let latest_drift;\n let drift_patterns = row[\"drift_patterns\"];\n if (drift_patterns === undefined) {\n drift_patterns = [];\n }\n if (BOX_PLOT_METRICS.includes(row[\"name\"])) {\n let boxPlotData = {}\n let statistics = {}\n let quantile = row[\"boxplot_data\"]\n if (quantile !== undefined && quantile !== null) {\n let isBoxplot = quantile.filter(x => x !== \"NA\")\n if (isBoxplot.length > 0) {\n statistics[\"attribute_name\"] = row[\"attributeName\"]\n statistics[\"quantile\"] = quantile\n statistics[\"drift_patterns\"] = row[\"drift_patterns\"]\n statistics[\"time\"] = row[\"time\"]\n boxPlotData[\"chart_level\"] = \"Attribute\"\n boxPlotData[\"statistics\"] = [statistics]\n row[\"boxPlotData\"] = boxPlotData\n row[\"chartType\"] = \"boxPlotZoomable\"\n }\n } else {\n boxPlotData[\"statistics\"] = [statistics]\n row[\"boxPlotData\"] = boxPlotData\n }\n }\n if (drift_patterns.length > 0) {\n latest_drift = row[\"drift_patterns\"][drift_patterns.length - 1]\n }\n if (latest_drift !== undefined && latest_drift !== null) {\n if (latest_drift === \"NO_DRIFT\" || latest_drift === \"not_computed\") {\n metricsOptions.push({\n \"value\": row['name'],\n \"label\": {row[\"name\"]}\n });\n } else {\n this.setState({ showMetricError: true });\n metricsOptions.push({\n \"value\": row['name'],\n \"label\": {row[\"name\"]}\n Error\n });\n }\n }\n if (metricsChartData === null) {\n metricsChartData = row;\n }\n //let colorIndex = (asterPlotChartData.length % 10)+1;\n //if (row[\"latest_value\"] > 0 ) {\n // asterPlotChartData.push({\"id\": row[\"name\"], \"order\": i, \"color\": colors[colorIndex],\n // \"weight\": 1, \"score\": row[\"latest_value\"], \"width\": 1, \"label\": row[\"name\"]});\n //}\n asterPlotChartData.push([row[\"name\"], convertDecimalDigits(row[\"latest_value\"])]);\n }\n } else {\n // eslint-disable-next-line\n if (obj !== null && obj !== undefined) {\n // eslint-disable-next-line\n Object.keys(obj).forEach(function (key) {\n let row = obj[key];\n metricsData.push(row);\n let latest_drift;\n let drift_patterns = row[\"drift_patterns\"]\n if (drift_patterns !== undefined) {\n if (drift_patterns.length > 0) {\n latest_drift = row[\"drift_patterns\"][drift_patterns.length - 1]\n }\n }\n if (attributeDataType === \"string\") {\n if (stringDriftOnMetricsFilter.includes(row['name'])) {\n if (latest_drift !== undefined && latest_drift !== null) {\n if (latest_drift === \"NO_DRIFT\" || latest_drift === \"not_computed\") {\n attributeProfileOptions.push({ \"value\": row['name'], \"label\": {row[\"name\"]} });\n } else {\n this.setState({ showAggregateError: true });\n attributeProfileOptions.push({ \"value\": row['name'], \"label\": {row[\"name\"]} Error });\n }\n } else {\n attributeProfileOptions.push({ \"value\": row['name'], \"label\": {row[\"name\"]} });\n }\n }\n } else {\n if (latest_drift !== undefined && latest_drift !== null) {\n if (latest_drift === \"NO_DRIFT\" || latest_drift === \"not_computed\") {\n attributeProfileOptions.push({ \"value\": row['name'], \"label\": {row[\"name\"]} });\n } else {\n this.setState({ showAggregateError: true });\n attributeProfileOptions.push({ \"value\": row['name'], \"label\": {row[\"name\"]} Error });\n }\n } else {\n attributeProfileOptions.push({ \"value\": row['name'], \"label\": {row[\"name\"]} });\n }\n }\n if (metricsChartData === null) {\n metricsChartData = row;\n }\n });\n }\n\n }\n }\n }\n\n if (metricsChartData !== null) {\n metricsChartData['datasetName'] = datasetName;\n metricsChartData['version_name'] = versionName;\n metricsChartData['data_source_name'] = sourceName;\n metricsChartData['attribute_name'] = data[\"attribute_name\"];\n // TODO assiging avg drift value as error percentage need to confirm\n metricsChartData['error_percentage'] = this.findAverage(metricsChartData[\"drift\"]).toFixed(2);\n }\n\n if (distributionData !== null) {\n distributionData['data_source_name'] = sourceName;\n distributionData['attribute_name'] = data[\"attribute_name\"];\n distributionData['datasetName'] = data[\"data_set_name\"];\n }\n\n if (asterPlotChartData !== null) {\n asterPlotChartData['data_source_name'] = sourceName;\n asterPlotChartData['attribute_name'] = data[\"attribute_name\"];\n asterPlotChartData['datasetName'] = data[\"data_set_name\"];\n }\n\n if (metricsChartData === null) {\n metricsChartData = undefined;\n }\n\n let _chartName = '';\n if (metricsChartData !== undefined) {\n _chartName = metricsChartData.name;\n }\n\n let size = data[\"size\"]\n if (size === undefined) {\n size = 0;\n }\n\n let digits_size = size.toString().length;\n if (digits_size <= 5) {\n size = (size / 1000).toFixed(2) + \" KB\"\n } else {\n size = (size / 1000000).toFixed(2) + \" MB\"\n }\n\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.integrations !== undefined) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.state.dataSourceId.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.state.dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n if (environment !== -1) {\n this.setState({ prefillEnvironment: environment });\n }\n if (dataSource !== -1) {\n this.setState({ prefillDataSource: dataSource });\n }\n\n this.setState({\n dataSetName: data[\"data_set_name\"],\n datasetName: data[\"data_set_name\"],\n attributeName: data[\"attribute_name\"],\n dataType: data[\"data_type\"],\n nativeType: data[\"native_type\"],\n count: data[\"count\"],\n outlier: data[\"outlier\"],\n businessRule: businessRule,\n size: size,\n profileData: profileData,\n metricsData: metricsData,\n distributionData: distributionData,\n statisticsData: { \"attribute_name\": data[\"attribute_name\"], statistics: statisticsData },\n metricsOptions: metricsOptions,\n attributeProfileOptions: attributeProfileOptions,\n driftOnMetricsChart: metricsChartData,\n asterPlotChart: asterPlotChartData,\n apiStatusCode: apiStatusCode,\n driftOnMetricsKey: \"attribute_\" + data[\"attribute_name\"] + _chartName,\n showLoader: false,\n noDataComponent:false\n });\n }\n\n getData() {\n // this.getApi(\"attributePage\");\n }\n\n changeSource(metricName, stateKey, title, expand, startDate = null, endDate = null) {\n let finalData = null\n let filteredData = null\n let isTimeFilter = false\n\n if (startDate === null) {\n startDate = this.state.startDate;\n }\n else {\n isTimeFilter = true\n this.setState({ startDate: startDate })\n }\n\n if (endDate === null) {\n endDate = this.state.endDate;\n }\n else {\n this.setState({ endDate: endDate })\n }\n if (this.state.metricsData !== null) {\n for (let row of this.state.metricsData) {\n if (row[\"name\"] === metricName) {\n finalData = row;\n finalData['data_source_name'] = this.state.datasourceName;\n finalData[\"datasetName\"] = this.state.datasetName;\n finalData['attribute_name'] = this.state.attributeName;\n finalData['error_percentage'] = this.findAverage().toFixed(2);\n if (finalData[\"name\"] === \"Data Drift\") {\n finalData[\"boxPlotData\"] = filterBoxPlotData(finalData[\"boxPlotData\"])\n }\n\n filteredData = getChartFilterData(finalData, startDate, endDate)\n if (filteredData !== undefined && filteredData !== null && filteredData.time.length !== undefined) {\n finalData = filteredData;\n }\n\n if (isTimeFilter === true) {\n finalData = filteredData\n }\n\n break;\n }\n }\n }\n\n let isChartChanged = !this.state.isChartChanged\n const metricKey = \"attribute_\" + metricName + String(isChartChanged);\n\n this.setState({\n driftOnMetricsChart: finalData, filteredData: filteredData,\n loadValue: false, driftOnMetricsKey: metricKey, expand: expand\n });\n\n this.setState({ isChartChanged: !this.state.isChartChanged });\n }\n\n\n\n\n findAverage(inputArr) {\n if (inputArr !== null && inputArr !== undefined) {\n return inputArr.reduce((a, b) => a + b) / inputArr.length;\n } else {\n return 0;\n }\n }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n applyTimeFilterToChart(currentData, startDate, endDate, chartType, isPatternNotNeeded) {\n let metricName;\n if (currentData !== null && currentData !== undefined) {\n metricName = currentData[\"name\"]\n this.setState({ currentMetricOnChart: currentData[\"name\"] })\n }\n else {\n metricName = this.state.currentMetricOnChart\n }\n let expand = this.state.expand\n this.changeSource(metricName, \"\", \"\", expand, startDate, endDate)\n }\n\n setChipData(environment, dataSource, dataSet, attribute) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"value\": environment.label, \"type\": ENVIRONMENT });\n this.setState({ prefillEnvironment: environment })\n }\n let dataSourceId = this.props.dataModule.selectedDataSource;\n if (dataSource !== -1) {\n dataSourceId = dataSource.value;\n chipData.push({ \"key\": dataSource.value, \"value\": dataSource.label, \"type\": DATA_SOURCE });\n }\n if (dataSet !== -1) {\n chipData.push({ \"key\": dataSet.value, \"value\": dataSet.label, \"type\": DATA_SET });\n this.props.setDataSet(dataSet.value);\n }\n if (attribute !== -1) {\n chipData.push({ \"key\": attribute.value, \"value\": attribute.label, \"type\": ATTRIBUTE });\n this.props.setAttribute(attribute.value, attribute.label);\n }\n\n this.setState({\n chipData: chipData,\n dataSourceId: dataSourceId,\n prefillDataSource: dataSource\n });\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.dataModule.selectedAttributeID === \"\" && this.props.dataModule.selectedAttributeID !== \"\") {\n this.getApi(\"attributePage\");\n }\n\n }\n\n removeChipData(key) {\n let chipData = this.state.chipData;\n chipData = chipData.filter((item) => item.key !== key);\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.state.dataSourceId,\n \"value\": this.props.dataModule.integrations[this.state.dataSourceId],\n \"type\": DATA_SOURCE\n }];\n this.filterOptions.current.setDefaultValuesFromParent(-1, -1, -1, -1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (attributes.length !== 0) {\n attributes.forEach((attribute) => {\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n });\n } else {\n filteredValues.push(`${prefix}.${dataSet.key}`);\n this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n });\n } else {\n filteredValues.push(prefix);\n this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.setState({\n chipData: chipData,\n filteredValues: filteredValues\n });\n }\n\n chooseLoadingComponent(emptyContentMessage) {\n if (this.state.profileData === null || this.state.profileData === undefined) {\n let returnClass;\n let apiStatus = this.state.apiStatusCode;\n if (apiStatus === 200) {\n returnClass = ;\n } else {\n returnClass = ;\n }\n return returnClass;\n }\n\n }\n\n getDefaultSelectedMetrics() {\n let selectedMetricOptions = [];\n if (this.state.metricsOptions !== null) {\n selectedMetricOptions = this.state.metricsOptions[0];\n return selectedMetricOptions;\n } else {\n return selectedMetricOptions;\n }\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n\n /*renderFilter(environmentOption) {\n // let maxLastProfilingTime = results.reduce((a, b) => Number(getDateObject(results[a])) > Number(getDateObject(results[b])) ? a : b);\n \n // let dataSourceOption = [];\n // let dataSetOptions = [];\n let preSelectedEnvironment = this.state.prefillEnvironment;\n let preSelectedDataSource = this.state.prefillDataSource;\n let preSelectedDatasets = this.state.preSelectedDatasets;\n let preSelectedAttributes = this.state.preSelectedAttributes;\n // let attributeOptions = [];\n // let datasetIds = [];\n \n // if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && preSelectedEnvironment !== undefined &&\n // preSelectedEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n // let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSources.forEach((dataSourceId) => {\n // if(this.props.dataModule[\"info\"][dataSourceId] === undefined && this.props.dataModule.integrations[dataSourceId] !== undefined) {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true});\n // }else if(this.props.dataModule.integrations[dataSourceId] !== undefined) {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // }\n // });\n // let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSets !== undefined) {\n // dataSets.forEach((dataSetId) => {\n // if (!datasetIds.includes(dataSetId)) {\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n // });\n // }\n // if(dataSetId === this.props.dataModule.selectedDataSetId) {\n // let currDatasetName = parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource);\n // currDatasetName = normalizeChildDatasetName(currDatasetName);\n // preSelectedDatasets = {\"label\": currDatasetName, \"value\": dataSetId }\n // }\n // })\n\n // }\n // if(preSelectedDatasets !== -1) {\n // let attributes = this.props.dataModule.dataSetAttributeMapping[preSelectedDatasets.value];\n // attributes.forEach((attributeId) => {\n // let attributeNameValue = parseMetaMapping(this.props, ATTRIBUTE, preSelectedDatasets.value,\n // attributeId, preSelectedEnvironment, preSelectedDataSource)\n // attributeNameValue = normalizeAttributeName(attributeNameValue);\n // attributeOptions.push({\"value\": attributeId, \"label\": attributeNameValue});\n // if(attributeNameValue === normalizeAttributeName(this.props.dataModule.selectedAttributeName)) {\n // preSelectedAttributes = {\"label\": attributeNameValue, \"value\": attributeId}\n // }\n // });\n\n // }\n // }\n\n // dataSourceOption = this.state.dataSourceOptions[this.state.prefillEnvironment.value]\n\n return (\n \n );\n }*/\n\n\n selectedDataSource() {\n let integrationId = this.state.dataSourceId;\n let integrationName = this.props.dataModule.integrations[integrationId];\n return integrationName\n }\n\n\n convertDecimal(drifts) {\n for (let i = 0; i < drifts.length && drifts[i] !== null && drifts[i] !== \"Null\"; i++) {\n drifts[i] = parseFloat((drifts[i]).toFixed(4))\n }\n return drifts\n }\n\n handleClick(name) {\n this.setState({ showModal: true, cardName: name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n removeStringValuesFromChart(driftOnMetricsChart) {\n let indexes = driftOnMetricsChart[\"drift\"].length;\n for (let i = 0; i < indexes; i++) {\n if ((typeof (driftOnMetricsChart[\"drift\"][i]) === 'string' && driftOnMetricsChart[\"drift\"][i] !== \"Null\") ||\n ((typeof (driftOnMetricsChart[\"value\"][i]) === 'string') && driftOnMetricsChart[\"value\"][i] !== \"Null\")) {\n // remove values\n driftOnMetricsChart[\"drift\"].splice(i, 1);\n driftOnMetricsChart[\"value\"].splice(i, 1);\n driftOnMetricsChart[\"drift_pattern\"].splice(i, 1);\n driftOnMetricsChart[\"time\"].splice(i, 1);\n i-- // decrement index;\n }\n }\n return driftOnMetricsChart;\n }\n\n renderFilter() {\n return
    \n
    \n
    \n
    Data Relationship Filter
    \n \n
    \n
    \n
    \n
    \n Datasource\n \n
    \n
    \n Datasets\n \n
    \n
    \n Attributes\n \n
    \n {/* */}\n \n \n
    \n
    \n
    \n
    \n }\n\n render() {\n\n let driftOnMetricsChart = this.state.driftOnMetricsChart\n if (driftOnMetricsChart !== undefined && driftOnMetricsChart !== null) {\n const has_string = (element) => typeof (element) === 'string' && element !== \"Null\";\n if (driftOnMetricsChart[\"drift\"].some(has_string) || driftOnMetricsChart[\"value\"].some(has_string)) {\n driftOnMetricsChart = this.removeStringValuesFromChart(driftOnMetricsChart)\n }\n driftOnMetricsChart[\"drift\"] = this.convertDecimal(driftOnMetricsChart[\"drift\"])\n driftOnMetricsChart[\"value\"] = this.convertDecimal(driftOnMetricsChart[\"value\"])\n driftOnMetricsChart[\"drift\"] = driftOnMetricsChart[\"value\"]\n driftOnMetricsChart[\"errorChart\"] = true;\n }\n\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n const lastProfilingTimeElement = this.state.last_processed_time\n let lastProfilingTime = lastProfilingTimeElement ?\n `Your data last profiled at ${lastProfilingTimeElement}` : \"--\";\n\n\n let discoveryStatus;\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n }\n\n let environmentOption = [];\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n\n\n let profileData = this.state.profileData;\n let keys = [\"avg\", \"min\", \"max\", \"std\"]\n if (profileData !== undefined && profileData !== null) {\n for (let i = 0; i < keys.length; i++) {\n if (typeof (profileData[keys[i]][\"drift\"]) === \"number\") {\n profileData[keys[i]][\"drift\"] = parseFloat(profileData[keys[i]][\"drift\"].toFixed(4))\n }\n if (typeof (profileData[keys[i]][\"value\"]) === \"number\") {\n profileData[keys[i]][\"value\"] = parseFloat(profileData[keys[i]][\"value\"].toFixed(4))\n }\n }\n }\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n let emptyContentMessage = \"Profiling overview is not yet available for the selected attribute. Kindly check after some time.\";\n if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n emptyContentMessage = \"Data profiling failed for selected datasource.\";\n this.props.setLoader(false);\n } \n else {\n emptyContentMessage = \"No data to profile. Kindly check the configure datasource.\";\n this.props.setLoader(false);\n }\n\n\n let attributeDataType = this.state.dataType !== null ? this.state.dataType : \"NA\";\n if (this.state.nativeType !== undefined && this.state.nativeType != null) {\n attributeDataType = this.state.nativeType;\n }\n\n let currAttributeName = this.state.attributeName !== null ? this.state.attributeName : \"NA\";\n currAttributeName = normalizeAttributeName(currAttributeName);\n let currDatasetName = this.state.dataSetName !== null ? this.state.dataSetName : \"NA\";\n currDatasetName = normalizeChildDatasetName(currDatasetName);\n \n lastProfilingTime = this.state.processTiming['last_processed_time']\n lastProfilingTime = lastProfilingTime === undefined || lastProfilingTime === \"\" ? \"--\" : \"Your data last profiled \" + lastProfilingTime\n \n if(this.state.noDataComponent === true){\n lastProfilingTime = NO_DATASET_NO_ERROR\n }\n return (\n\n this.props.noDataFound === true ?\n <>\n \n :\n this.props.inProgress === true && this.state.showLoader === false ?\n <>\n {/* {this.state.isFilterMode ? this.renderFilter(environmentOption) : \"\"}\n {\n this.state.showModal ?\n : \"\"\n }\n {\n this.state.hideLastProfiledTime === false ?\n

     

    \n : \"\"\n } */}\n \n \n \n }\n />\n \n :\n <>\n {\n this.state.showModal ?\n : \"\"\n }\n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n \n {lastProfilingTime}\n \n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n {\n this.state.profileData && this.state.showLoader === false && this.state.noDataComponent !== true ?\n <>\n {this.state.isFilterMode === true ?\n this.renderFilter()\n : \"\"}\n \n \n \n \n \n \n
    \n Errors Found\n

    {this.state.outlier ? this.state.outlier : \"0\"}

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n
    \n Total Space Occupied\n

    {this.state.size ? this.state.size : \"0 KB\"}

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n
    \n Number of Records\n

    {this.state.count ? this.state.count : \"0\"}

    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n
    \n
    Empty values
    \n
    \n
    \n {this.state.profileData.empty.value !== null ? this.state.profileData.empty.value : \"NA\"}\n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    Unique values
    \n
    \n
    \n {this.state.profileData.unique.value !== null ? this.state.profileData.unique.value : \"NA\"}\n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    Duplicate values
    \n
    \n
    \n {this.state.profileData.duplicate.value !== null ? this.state.profileData.duplicate.value : \"NA\"}\n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    Error values
    \n
    \n
    \n {this.state.outlier !== null ? this.state.outlier : 0}\n
    \n \n
    \n
    \n \n
    \n }\n />\n \n \n \n \n \n
    \n \n {this.state.dataSetName !== null && this.state.dataSetName.toString().length >= 15 ?
    }>\n {this.state.dataSetName !== null ? currDatasetName : \"NA\"}\n \n :\n {this.state.dataSetName !== null ? currDatasetName : \"NA\"}\n }\n \n
    \n \n {currAttributeName.toString().length >= 15 ?\n
    }\n >\n {currAttributeName}\n \n :\n {currAttributeName}\n }\n \n
    \n \n {attributeDataType.toString().length >= 3 ?\n
    }\n >\n {attributeDataType}\n \n :\n {attributeDataType}\n }\n\n\n \n
    \n \n {profileData.empty.value !== null && profileData.empty.value.toString().length >= 15 ?
    }>\n {profileData.empty.value !== null ? profileData.empty.value : \"NA\"}\n \n :\n {profileData.empty.value !== null ? profileData.empty.value : \"NA\"}\n }\n \n
    \n \n {profileData.max.value !== null && profileData.max.value.toString().length >= 15 ?\n
    }\n >\n {profileData.max.value !== null ? profileData.max.value : \"NA\"}\n \n : {profileData.max.value !== null ? profileData.max.value : \"NA\"}\n }\n \n
    \n \n {profileData.min.value !== null && profileData.min.value.toString().length >= 15 ?\n
    }\n >\n {profileData.min.value !== null ? profileData.min.value : \"NA\"}\n \n :\n {profileData.min.value !== null ? profileData.min.value : \"NA\"}\n }\n \n
    \n \n {profileData.avg.value !== null && profileData.avg.value.toString().length >= 15 ?\n
    }\n >\n {profileData.avg.value !== null ? profileData.avg.value : \"NA\"}\n \n :\n {profileData.avg.value !== null ? profileData.avg.value : \"NA\"}\n }\n \n
    \n \n {profileData.mode.value !== null && profileData.mode.value.toString().length >= 15 ?\n
    }\n >\n {profileData.mode.value !== null ? profileData.mode.value : \"NA\"}\n \n :\n {profileData.mode.value !== null ? profileData.mode.value : \"NA\"}\n }\n \n
    \n \n {profileData.avg.value !== null && profileData.avg.value.toString().length >= 15 ?\n
    }\n >\n {profileData.avg.value !== null ? profileData.avg.value : \"NA\"}\n \n :\n {profileData.avg.value !== null ? profileData.avg.value : \"NA\"}\n }\n \n
    \n \n {profileData.std.value !== null && profileData.std.value.toString().length >= 15 ?\n
    }\n >\n {profileData.std.value !== null ? profileData.std.value : \"NA\"}\n \n :\n {profileData.std.value !== null ? profileData.std.value : \"NA\"}\n }\n \n
    \n \n {profileData.unique.value !== null && profileData.unique.value.toString().length >= 15 ?\n
    }\n >\n {profileData.unique.value !== null ? profileData.unique.value : \"NA\"}\n \n :\n {profileData.unique.value !== null ? profileData.unique.value : \"NA\"}\n }\n \n
    \n \n {profileData.duplicate.value !== null && profileData.duplicate.value.toString().length >= 15 ?\n
    }\n >\n {profileData.duplicate.value !== null ? profileData.duplicate.value : \"NA\"}\n \n :\n {profileData.duplicate.value !== null ? profileData.duplicate.value : \"NA\"}\n }\n \n
    \n \n {!IS_NONE_CHECK.includes(this.state.businessRule) && this.state.businessRule.toString().length >= 15 ?\n
    }\n >\n {this.state.businessRule !== null ? this.state.businessRule : \"NA\"}\n \n :\n {this.state.businessRule !== null ? this.state.businessRule : \"NA\"}\n }\n \n {/* This empty form-group is add to resolve issue QPS-2189, \n Add +1 whenever the new table value is added\n into Attribute summary\n */}\n {this.state.tableCount % 2 === 0\n ?\n ''\n :\n
    \n
    \n }\n \n }\n />\n \n \n \n \n }>\n \n \n : \n }\n />\n \n \n \n
    \n \n \n \n \n {this.state.distributionData !== null ?\n }\n />\n :\n \n

    \n

    Data distribution is not available for the selected attribute name

    \n

    Please check after sometime.

    \n }\n />\n }\n \n
    \n \n \n {this.state.asterPlotChart !== null && this.state.asterPlotChart.length > 0 ?\n }\n />\n :\n \n

    \n

    Metrics View is not available for the selected attribute name

    \n

    Please check after sometime.

    \n }\n />\n }\n \n
    \n \n \n\n\n {\n /**\n * Condition details:\n * Check for non numberic cloumns\n * Can't show statistic view for empty(Null) numberic columns\n * Additional check made for NA in numeric columns\n * If possible we can modify the NA check.\n */\n (!NON_NUMERIC_COLUMNS.includes(this.state.dataType)) ?\n <>\n {\n (this.state.statisticsData !== undefined && this.state.statisticsData.statistics[0].latest_quantile.q1_min !== \"NA\") ?\n }\n />\n :\n \n

    \n

    Statistics results are not available for the selected attribute name

    \n

    Please check after sometime.

    \n }\n />\n }\n \n :\n \n

    \n

    Statistics results are not applicable for {DATA_TYPE_MAPPING[this.state.dataType] !== undefined ? DATA_TYPE_MAPPING[this.state.dataType] : this.state.dataType} types

    \n

    Choose numeric attribute name to get the statistics results.

    \n }\n />\n }\n \n
    \n \n :\n (\n this.state.noDataComponent === true \n ? \n <>\n {\n this.state.isFilterMode === true \n ?\n this.renderFilter()\n : \n \"\"\n }\n
    \n
    \n

    \n

    {NO_DATASET_NO_ERROR}

    \n
    \n
    \n
    \n
    \n \n :\n <>\n {this.chooseLoadingComponent(emptyContentMessage)}\n \n )\n }\n \n );\n\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute })(Attribute);","import React from 'react';\n// import Filter from '../components/filter';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport Load from '../../components/loadAction';\nimport {\n CONSISTENCY_METRIC,\n ENVIRONMENT,\n DATA_SOURCE,\n DATA_SET,\n ATTRIBUTE,\n CONSISTENCY_METRIC_COLOR,\n STATIC_CARDS,\n NO_DATASET_NO_DATA_PROFILE,\n DATA_PROFILING_FAILED,\n NO_DATA_SET_FOUND_TEXT,\n DEFAULT_METRICS_RUN_FAILURE\n} from '../../utils/constant';\n// import { FilterOptions } from '../components/filterOptions';\nimport _ from 'lodash';\nimport { connect } from \"react-redux\";\nimport { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate } from \"../../redux/actions\";\nimport moment from 'moment';\nimport * as d3 from 'd3';\n// import CardHelpContent from '../../components/cardHelpContent';\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n// import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\n// import RcTooltip from 'rc-tooltip';\nimport ProgressStatus from '../../components/progressStatus';\nimport { getApi } from \"../../utils/event_handling\";\nimport Image from '../../components/image';\nimport EnableConsistency from '../../components/enableConsistency';\nimport { getDatsetIdForSelectedDatasource, getAttributeNameIdForSelectedDatasource } from '../../utils/common_utils';\nimport {\n normalizeAttributeName,\n METADATA_MAP_VALUE_SEPARATOR,\n normalizeChildDatasetName,\n QUALDO_CHILD_DATASET_SEPARATOR\n} from '../../utils/attribute_name_utils';\nimport { renderTableComponents } from \"./dq_render_utils\";\n//import AdvanceFilter from \"./advancedFilter\"\nimport ProfileCardData from \"./profileCardData\"\nimport { getDatasForTab } from \"../../utils/dataProfileEventHandling\"\nimport { profileTabPrefetch, formTableData } from \"../../utils/dataProfileEventHandling\"\nimport TreeFilter from \"../data/treeFilter\"\n\n\n// const renderTooltip = (props) => (\n// \n// Need Help ?\n// \n// );\n\n\nclass Standardisation extends React.Component {\n\n constructor(props) {\n super(props);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData = this.filterInfoData.bind(this);\n this.filterOptions = React.createRef();\n this.setDataSetAndAttribute = this.setDataSetAndAttribute.bind(this);\n // this.renderCards = this.renderCards.bind(this);\n this.filterTimeData = this.filterTimeData.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData = this.getTimeFilteredData.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.getApi = getApi.bind(this);\n this.renderTableComponents = renderTableComponents.bind(this);\n this.skloader = this.skloader.bind(this)\n \n this.profileTabPrefetch = profileTabPrefetch.bind(this);\n\n\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n\n this.allowPartition = this.allowPartition.bind(this)\n this.allowAttributes = this.allowAttributes.bind(this)\n this.clearAllFilterData = this.clearAllFilterData.bind(this)\n this.handleFilteredData = this.handleFilteredData.bind(this);\n\n let startDate = moment().subtract(30, 'days').set({ \"hour\": 0, \"minute\": 0, \"seconds\": 0 });\n let endDate = moment().endOf('day').set({ \"hour\": 23, \"minute\": 59, \"seconds\": 59 });\n\n startDate = moment(startDate).format(\"Y/MM/D\");\n endDate = moment(endDate).format(\"Y/MM/D\");\n\n this.state = {\n hideLastProfiledTime: false,\n last_processed_time:\"\",\n isFilterMode: true,\n dqmData: \"\",\n showModal: false,\n cardName: \"\",\n cardData: [],\n tableData: {\n \"headers\": [\"DataSource\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\": []\n },\n startDate: startDate,\n endDate: endDate,\n selectedDate: [],\n initial_load: 1,\n hideComponent: 'd-none',\n isConsistencyEnabled: null,\n chartTitle:\"Data Consistency Dashboard\",\n gridTitle:\"Data Consistency metric values for selected datasets / attributes\",\n\n environmentOptions:[],\n datasourceOptions:[],\n datasetsOptions:[],\n attributesOptions:[],\n showLoader:this.props.showLoader,\n relationShipchartData:[],\n newCardData:[],\n chartDatas:[],\n filterData: this.props.filterData,\n seletedDatasourceId: \"\",\n seletedDatasourceName: \"\",\n checkedPartition:false,\n checkedAttributes:false,\n datasetLevelChart:[],\n attributeLevelChart:[],\n existingList: this.props.existingList,\n chartErrors:{},\n clearAllFilter:false,\n profileData:{},\n filteredDatas:{},\n filteredValues: this.props.filteredValues,\n }\n }\n\n\n allowPartition(){\n this.setState({checkedPartition:!this.state.checkedPartition})\n }\n \n allowAttributes(){\n this.setState({checkedAttributes:!this.state.checkedAttributes})\n }\n loadDataSourceRender(params, filteredDatas=null, dateFilter=null) {\n if(dateFilter === true){\n this.setState({showLoader:true})\n if(Object.keys(this.state.filteredValues).length > 0){\n this.setState({filteredDatas:this.state.filteredValues})\n filteredDatas = this.state.filteredValues\n }\n else{\n filteredDatas = this.state.filteredDatas\n }\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params,filteredDatas, dateFilter)\n\n }\n else{\n this.setState({ clearAllFilter: false, \n showLoader: true, \n seletedDatasourceId: params.integration_id, \n seletedDatasourceName: params.integration_name ,\n checkedAttributes:false,\n checkedPartition:false\n })\n this.getDatasForTab(params)\n\n }\n }\n\n clearAllFilterData(){\n this.setState({ filterData: this.props.filterData,clearAllFilter:true})\n }\n\n handleFilteredData(data) {\n this.props.handleFilteredData(data)\n this.setState({ filteredValues: data,checkedAttributes:false,checkedPartition:false,allowRelationData:false,allowRelationsFilter:\"All\" })\n let filterData = formTableData(this.state.profileData['totalDatas'], 6, data)\n if(filterData !== undefined){\n this.setState({newCardData:filterData['cardData'], tableData:filterData['tableData']})\n }\n }\n\n\n componentDidMount() {\n if(this.props.startDate !== null){\n let loadparams = this.props.loadparams\n loadparams['tab_type'] = 6\n this.setState({showLoader:true})\n this.getDatasForTab(loadparams,this.state.filteredValues, true)\n }\n else{\n if(this.props.noDataFound !== true && this.props.inProgress !== true){\n this.setState({showLoader:true})\n this.profileTabPrefetch(this.state.filteredValues, 6);\n } }\n\n this.formCardData(this.props.dataModule.filteredValues);\n this.formTableData(this.props.dataModule.filteredValues);\n this.getSelectedTime();\n this.setDefaultValuesInFilter();\n this.getData();\n\n }\n\n getData() {\n this.getApi(\"checkConsistency\");\n }\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while (moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({ selectedDate: timeList });\n\n }\n\n\n\n // componentDidUpdate(prevProps) {\n // // if(this.state.showLoader === false && this.state.tableData.data.length === 0){\n // // this.formTableData(this.props.dataModule.filteredValues);\n // // }\n // if (prevProps.dataModule.selectedDataSource === -1) {\n // if (prevProps.dataModule.selectedDataSource !== this.props.dataModule.selectedDataSource) {\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // this.setDefaultValuesInFilter();\n // }\n // }\n // if (prevProps.dataModule.filteredValues !== this.props.dataModule.filteredValues) {\n // if (this.props.dataModule.filteredValues.length > 0) {\n // this.setFilteredValues(this.props.dataModule.filteredValues);\n // this.formCardData(this.props.dataModule.filteredValues);\n // this.formTableData(this.props.dataModule.filteredValues);\n // }\n // }\n // }\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n\n setDefaultValuesInFilter() {\n let environment = -1;\n let dataSource = -1;\n if (this.props.dataModule !== undefined && this.props.dataModule.selectedDataSource !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) {\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (key === this.props.dataModule.selectedDataSource.toString()) {\n dataSource = { \"label\": value, \"value\": key };\n }\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(this.props.dataModule.selectedDataSource.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n }\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n changeTime(selectedValue, startDate, endDate) {\n this.props.setTimeFilter(true);\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.formTableData(this.props.dataModule.filteredValues, -1, startDate, endDate);\n this.setState({ startDate: startDate, endDate: endDate });\n }\n\n getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key) {\n let timeList = allMetricInfo[metricInfo][`${key}_created_time`];\n let startIndex = -1;\n let endIndex = -1;\n timeList.forEach((time) => {\n if (moment(time).isSameOrBefore(moment(endDate)) && moment(time).isSameOrAfter(moment(startDate))) {\n let index = timeList.indexOf(time);\n if (startIndex === -1 || startIndex > index) {\n startIndex = index;\n }\n if (endIndex === -1 || endIndex < index) {\n endIndex = index;\n }\n }\n })\n if (startIndex !== -1 && endIndex !== -1) {\n let tempMetricValueList = allMetricInfo[metricInfo][`${key}_time_value`].slice(startIndex, endIndex + 1);\n tempMetricValueList = tempMetricValueList.filter(x => x !== \"NA\");\n return tempMetricValueList;\n }\n return [];\n }\n\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({ \"key\": environment.value, \"name\": environment.label, \"type\": ENVIRONMENT, \"value\": environment.value, \"label\": environment.label });\n }\n if (dataSource !== -1) {\n chipData.push({ \"key\": dataSource.value, \"name\": dataSource.label, \"type\": DATA_SOURCE, \"value\": dataSource.value, \"label\": dataSource.label });\n }\n if (dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({ \"key\": dataSet.value, \"name\": dataSet.label, \"type\": DATA_SET, \"value\": dataSet.value, \"label\": dataSet.label });\n });\n }\n if (attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({ \"key\": attribute.value, \"name\": attribute.label, \"type\": ATTRIBUTE, \"value\": attribute.value, \"label\": attribute.label });\n });\n }\n this.props.setChipData(chipData);\n this.setState({ prefillEnvironment: environment, prefillDataSource: dataSource });\n }\n\n removeChipData(key) {\n // Chipdata will have list of all the environment, datasource, dataset and attribute level key, value and type\n // [{ key: \"2270\", value: \"postgres check\", type: 1 }]\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n // Initially the selected key will be romoved from the chipData\n // Then in furter will reomve the keys with depends on the removing key\n // ex : if user remove dataset here will remove the dataset key alone in futher will remove the dependent attribute key for that dataset \n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n // this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${dataSource[0].key}`;\n\n // \n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // After removing keys from chipData\n // Will form lables and store list of values in filteredValues\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (dataSet.key !== '*') {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n\n // chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[dataSet.key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n // for(let i of chipDataAttribute){\n // // Here will exclude the attribute from chipData \n // chipData = chipData.filter((item)=> item.key === i.key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || item.type === ATTRIBUTE));\n // }\n\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else if (attributes.key === '*') {\n // To handle the All option in Attribute field inside the filter \n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, null, -1);\n }\n }\n else if (dataSets.length > 1 && dataSet.key === '*') {\n chipData = chipData.filter((item) => item.key !== dataSet.key && item.key !== \"*\");\n filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n else if (dataSets.length === 1 && dataSet.key === '*') {\n // To handle the All option in Dataset field inside the filter\n // All option will be remove by excluding the * from the chipData list\n chipData = chipData.filter((item) => item.type !== DATA_SET && item.key !== \"*\");\n filteredValues.push(`${prefix}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n // else{\n // // To handle the All option in Dataset field inside the filter\n // // All option will be remove by excluding the * from the chipData list\n // chipData = chipData.filter((item)=> item.type !== DATA_SET && item.key !==\"*\");\n // // filteredValues.push(prefix);\n // filteredValues.push(`${prefix}.${dataSet.key}`);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n // }\n });\n } else {\n // Will Removing the environment or datasource level key \n // We'll clear all datasource and attribute keys from the chipData\n chipData = chipData.filter((item) => item.type !== ATTRIBUTE && item.type !== DATA_SET);\n filteredValues.push(prefix);\n // this.filterOptions.current.setDefaultValuesFromParent(null, null, -1, null);\n }\n }\n this.props.setFilteredValues(filteredValues);\n this.props.setChipData(chipData);\n this.formCardData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, this.props.dataModule.selectedDataSource, this.state.startDate, this.state.endDate);\n }\n\n\n\n setDataSource(dataSourceId) {\n let startDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 00:00:00');\n let endDate = moment(this.props.dataModule.lastProfilingTime[dataSourceId]).format('YYYY-MM-DD 23:59:59');\n let datasetId = getDatsetIdForSelectedDatasource(this.props.dataModule, dataSourceId);\n let attributeData = getAttributeNameIdForSelectedDatasource(this.props.dataModule, dataSourceId, datasetId);\n let attributeName = attributeData.attributeName;\n let attributeId = attributeData.attributeId;\n this.props.setDataSource(dataSourceId);\n this.props.setAttribute(attributeId, attributeName);\n this.props.setDataSet(datasetId);\n let environment = -1;\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n environment = { \"label\": this.props.dataModule.environments[key], \"value\": key };\n }\n }\n let dataSource = { \"value\": dataSourceId, \"label\": this.props.dataModule.integrations[dataSourceId] };\n this.props.setFilteredValues([]);\n this.setChipData(environment, dataSource, -1, -1);\n this.props.setStartDate(startDate);\n this.props.setEndDate(endDate);\n this.setState({ startDate: startDate, endDate: endDate })\n this.formCardData([], dataSourceId, startDate, endDate);\n this.formTableData([], dataSourceId, startDate, endDate);\n }\n\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n resetFilter() {\n this.setState({ formResetFlag: 1 });\n }\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues) {\n this.props.setFilteredValues(filteredValues);\n let dataSourceId = filteredValues[0].split(\".\")[1];\n this.formCardData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.formTableData(filteredValues, dataSourceId, this.state.startDate, this.state.endDate);\n this.props.setDataSource(dataSourceId);\n }\n\n setDataSetAndAttribute(dataSet, attribute) {\n this.props.setDataSet(dataSet);\n this.props.setAttribute(\"\", attribute);\n }\n\n // renderFilter(environmentOption) {\n // let dataSourceOption = [];\n // let dataSetOptions = [];\n // let preSelectedEnvironment = this.state.prefillEnvironment;\n // let preSelectedDataSource = this.state.prefillDataSource;\n // let preSelectedDatasets = -1;\n // let preSelectedAttributes = -1;\n // let attributeOptions = [];\n // if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n // let chipData = this.props.dataModule.chipData;\n // let environment= chipData.filter((item) => item.type === ENVIRONMENT);\n // preSelectedEnvironment = {\"label\": environment[0].value, \"value\": environment[0].key};\n // dataSourceOption = []\n // let dataSourceList = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSourceList.forEach((dataSourceId) => {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // });\n // let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n // preSelectedDataSource = {\"label\": dataSource[0].value, \"value\": dataSource[0].key};\n // let datasets = chipData.filter((item) => item.type === DATA_SET);\n // preSelectedDatasets = [];\n // datasets.forEach((dataSet) => {\n // preSelectedDatasets.push({\"label\": dataSet.value, \"value\": dataSet.key})\n // });\n // let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n // preSelectedAttributes = [];\n // attributes.forEach((attribute) => {\n // preSelectedAttributes.push({\"label\": attribute.value, \"value\": attribute.key})\n // });\n\n // preSelectedDatasets.forEach((item) => {\n // let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n // if(attributesList!==undefined){\n // attributesList.forEach((attributeId) => {\n // attributeOptions.push({\"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n // attributeId, preSelectedEnvironment, preSelectedDataSource)});\n // });\n // }\n // });\n // let datasetIds = [];\n // dataSetOptions = [];\n // let dataSetsList = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSetsList !== undefined){\n // dataSetsList.forEach((dataSetId) => {\n // if(!datasetIds.includes(dataSetId)){\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)\n // });\n // }\n // });\n // }\n // }\n // else {\n // let datasetIds = [];\n // if (this.props.dataModule !== undefined && preSelectedDataSource !== undefined && this.state.prefillEnvironment !== undefined &&\n // this.state.prefillEnvironment !== -1 && this.props.dataModule.dataSourceDataSetMapping !== undefined) {\n // let dataSources = this.props.dataModule.environmentDataSourceMapping[preSelectedEnvironment.value];\n // dataSources.forEach((dataSourceId) => {\n // if(this.props.dataModule[\"info\"][dataSourceId] === undefined) {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":
    {this.props.dataModule.integrations[dataSourceId]}
    , \"isDisabled\": true});\n // }else {\n // dataSourceOption.push({\"value\": dataSourceId, \"label\":this.props.dataModule.integrations[dataSourceId]});\n // }\n // });\n // let dataSets = this.props.dataModule.dataSourceDataSetMapping[preSelectedDataSource.value];\n // if (dataSets !== undefined) {\n // dataSets.forEach((dataSetId) => {\n // if (!datasetIds.includes(dataSetId)) {\n // datasetIds.push(dataSetId);\n // dataSetOptions.push({\n // \"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n // preSelectedDataSource.value, dataSetId, this.state.prefillEnvironment, preSelectedDataSource)\n // });\n // }\n // })\n // }\n // }\n\n // }\n // return (\n // \n // );\n // }\n\n\n filterInfoData(filteredValues, infoData) {\n let updatedInfoData = {}\n filteredValues.forEach((filteredValue) => {\n const filtered = Object.keys(infoData)\n .filter(key => key.startsWith(filteredValue))\n .reduce((obj, key) => {\n obj[key] = infoData[key];\n return obj;\n }, {});\n updatedInfoData = { ...updatedInfoData, ...filtered }\n });\n return updatedInfoData;\n }\n\n formTableData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n if (this.props.dataModule.selectedDataSource !== -1 && this.props.dataModule.selectedDataSource !== undefined) {\n let tableInfo = [];\n let allMetricInfo;\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n } else {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n }\n let default_data = allMetricInfo;\n let restrictchilddata = [];\n // if((this.props.dataModule.filteredValues.length === 0) || (this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n // for (var key in default_data) {\n // if (default_data.hasOwnProperty(key)) {\n // let metaData = this.props.dataModule.metaData[key];\n // if(!datasetNameFromMappedValue(metaData).includes(QUALDO_CHILD_DATASET_SEPARATOR)){\n // restrictchilddata[key] = default_data[key]\n // }\n // }\n // }\n // }else {\n // restrictchilddata = default_data;\n // } \n restrictchilddata = default_data;\n if (filteredValues.length !== 0) {\n restrictchilddata = this.filterInfoData(filteredValues, restrictchilddata);\n }\n for (const [key, value] of Object.entries(restrictchilddata)) {\n let metaData = this.props.dataModule.metaData[key];\n if (metaData !== undefined) {\n let reqSplitArrVals = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n let dataSource = reqSplitArrVals[1];\n let dataSet = reqSplitArrVals[2];\n let attribute = reqSplitArrVals[reqSplitArrVals.length - 1];\n for (const [metricId, metricValue] of Object.entries(value)) {\n if (!metricId.endsWith(\"drift\") && metricId in CONSISTENCY_METRIC) {\n let tableData = [];\n tableData.push({ \"value\": dataSource, \"type\": \"td\" });\n let reqDatasetName = normalizeChildDatasetName(dataSet)\n tableData.push({ \"value\": reqDatasetName, \"type\": \"td\" });\n let normalizedAttributeName = normalizeAttributeName(attribute);\n tableData.push({ \"value\": normalizedAttributeName, \"type\": \"td\" });\n tableData.push({ \"value\": CONSISTENCY_METRIC[metricId], \"type\": \"td\" });\n let tempMetricValue = metricValue;\n if (this.props.dataModule.timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData(allMetricInfo, startDate, endDate, key, metricId);\n if (timeFilteredData.length > 0) {\n tempMetricValue = `${Math.max.apply(null, timeFilteredData)}`;\n } else {\n continue;\n }\n }\n tableData.push({ \"value\": `${tempMetricValue} %`, \"type\": \"td\" });\n tableInfo.push(tableData);\n }\n }\n }\n\n }\n let tableHeaders = this.state.tableData.headers;\n let tableData = { \"headers\": tableHeaders, data: tableInfo };\n this.setState({ tableData: tableData });\n }\n // let tableData = this.state.tableData\n\n // this.setState({ tableData: tableData });\n }\n\n filterTimeData(key) {\n let tempStartDate = this.state.startDate;\n let timeList = [];\n for (let i = 0; i < 8; i++) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n\n return { \"time\": timeList, \"values\": STATIC_CARDS[key] }\n }\n\n formCardData(filteredValues, changedDataSource = -1, startDate = this.state.startDate, endDate = this.state.endDate) {\n\n let cardInfo = [];\n let allMetricInfo;\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[this.props.dataModule.selectedDataSource]);\n } else {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n }\n\n if (filteredValues.length !== 0) {\n allMetricInfo = this.filterInfoData(filteredValues, allMetricInfo);\n }\n let commonId = 0;\n for (const [key] of Object.entries(CONSISTENCY_METRIC)) {\n let attributeMetricList = [];\n for (const metricInfo in allMetricInfo) {\n let metaData = this.props.dataModule.metaData[metricInfo];\n if (metaData !== undefined) {\n if (key in allMetricInfo[metricInfo]) {\n if (this.props.dataModule.timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData(allMetricInfo, startDate, endDate, metricInfo, key);\n if (timeFilteredData.length > 0) {\n attributeMetricList.push(Math.max.apply(null, timeFilteredData));\n }\n } else {\n attributeMetricList.push(allMetricInfo[metricInfo][key]);\n }\n }\n }\n }\n let tempInfo = {};\n tempInfo[\"metric_name\"] = CONSISTENCY_METRIC[key];\n if (attributeMetricList.length !== 0) {\n tempInfo[\"metric_value\"] = `${(attributeMetricList.reduce((a, b) => a + b) / attributeMetricList.length).toFixed(2)}`;\n } else {\n tempInfo[\"metric_value\"] = \"NA\";\n }\n tempInfo[\"hide_edit\"] = true;\n tempInfo[\"cardType\"] = \"chart\";\n tempInfo[\"background\"] = CONSISTENCY_METRIC_COLOR[key].cardBackground;\n tempInfo[\"textColor\"] = CONSISTENCY_METRIC_COLOR[key].textColor;\n tempInfo[\"idValue\"] = `conformity${commonId}`;\n tempInfo[\"chartData\"] = this.filterTimeData(commonId);\n commonId = commonId + 1;\n cardInfo.push(tempInfo);\n\n }\n this.setState({\n cardData: cardInfo\n });\n }\n\n handleClick(data) {\n this.setState({ showModal: true, cardName: data.metric_name });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n // renderCards(cardData) {\n // return (\n //
    \n // {\n // this.state.showModal ?\n // : \"\"\n // }\n // {\n // cardData.map((data) => {\n // let cardBackground = `dashboard-stat ${data.background}`;\n // let textColor = `title ${data.textColor}`;\n // return (\n //
    \n //
    \n //
    \n //
    \n //
    \n // {data.metric_name}\n //
    \n // \n //
    }>\n //
    \n // \n // \n //
    \n //
    \n // {data.metric_value}\n // {data.metric_value !== \"NA\" ? % : \"\"}\n //
    \n // \n //
    \n //
    \n //
    \n // );\n // })\n // }\n // \n // );\n // }\n\n skloader(key) {\n let count = this.state.initial_load + key\n this.setState({ initial_load: count })\n }\n\n render() {\n\n let dataSourceOption = [];\n let environmentOption = [];\n let selectedDataSource = {};\n const dmSelectedDataSource = this.props.dataModule.selectedDataSource;\n\n const lastProfilingTimeElement = this.state.last_processed_time\n let lastProfilingTime = lastProfilingTimeElement ?\n `Your data last profiled at ${lastProfilingTimeElement}` : \"--\";\n\n\n\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (this.props.dataModule[\"info\"][key] === undefined) {\n dataSourceOption.push({ \"label\":
    {value}
    , \"value\": key, \"isDisabled\": true });\n } else {\n dataSourceOption.push({ \"label\": value, \"value\": key });\n }\n if (dmSelectedDataSource !== undefined && key === dmSelectedDataSource.toString()) {\n selectedDataSource = { \"label\": value, \"value\": key };\n }\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({ \"label\": value, \"value\": key });\n }\n\n let isCalculationInProgress = false\n let discoveryStatus;\n let latestProcessingStatus = this.props.dataModule.processingStatus[dmSelectedDataSource];\n if (this.props.dataModule.discoveryStatus !== undefined) {\n discoveryStatus = this.props.dataModule.discoveryStatus[dmSelectedDataSource];\n }\n let hasValidDatasets = discoveryStatus !== undefined && discoveryStatus !== NO_DATA_SET_FOUND_TEXT;\n if (!hasValidDatasets) {\n lastProfilingTime = NO_DATASET_NO_DATA_PROFILE;\n } else if (latestProcessingStatus === DEFAULT_METRICS_RUN_FAILURE) {\n lastProfilingTime = DATA_PROFILING_FAILED;\n }\n\n\n let checkProgress;\n if (this.props.dataModule.relationship !== undefined && this.props.dataModule.relationship !== \"undefined\") {\n checkProgress = this.props.dataModule.relationship[dmSelectedDataSource]\n if (checkProgress !== undefined) {\n isCalculationInProgress = (Object.keys(this.props.dataModule.relationship[dmSelectedDataSource]).length === 0)\n isCalculationInProgress = isCalculationInProgress && hasValidDatasets && latestProcessingStatus !== DEFAULT_METRICS_RUN_FAILURE;\n if (isCalculationInProgress) {\n this.props.setLoader(true);\n } else {\n this.props.setLoader(false);\n }\n }\n }\n\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (checkProgress === undefined && this.props.dataModule.tenantId !== undefined && this.props.dataModule.tenantId === -1 &&\n dmSelectedDataSource === -1 && sessionToken !== null && sessionToken !== undefined) {\n }\n // let initialChipData = [{\n // \"key\": dmSelectedDataSource,\n // \"value\": this.props.dataModule.integrations[dmSelectedDataSource],\n // \"type\": DATA_SOURCE\n // }];\n let default_data = this.props.dataModule.relationship[dmSelectedDataSource];\n let restrictchilddata = [];\n if((default_data !== undefined && this.props.dataModule.filteredValues !== undefined && this.props.dataModule.filteredValues.length === 0) || (default_data !== undefined && this.props.dataModule.filteredValues.length === 1 && this.props.dataModule.filteredValues[0].split(\".\").length === 2)){\n for(let loop=0;loop 0 && initialFilteredValues['fiteredDatseset'].length > 0) {\n initialFilteredDatasets = initialFilteredValues['fiteredDatseset']\n initialFilteredAttributes = initialFilteredValues['fitlerdAttr']\n }\n\n\n\n let datasetLevelError = []\n let attributeLevelError = []\n\n if (Object.keys(this.state.chartErrors).length > 0) {\n datasetLevelError = this.state.chartErrors['dataset_level']\n attributeLevelError = this.state.chartErrors['attr_level']\n }\n\n\n /**Separate Filter Existing Dataset Level Chart Data */\n let datasetLevelChart = []\n\n this.state.datasetLevelChart.map((data) => {\n data['name'] = normalizeChildDatasetName(data['name'])\n if (this.state.existingList.includes(Number(data.dataSetId))) {\n let error_metrics = []\n if(initialFilteredDatasets.length > 0){\n if (datasetLevelError[data.dataSetId] !== undefined && initialFilteredDatasets.includes(Number(data.dataSetId))) {\n datasetLevelError[data.dataSetId].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n else if(initialFilteredDatasets.includes(Number(data.dataSetId))){\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n // }\n }\n else{\n if (datasetLevelError[data.dataSetId] !== undefined) {\n datasetLevelError[data.dataSetId].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n\n }\n\n datasetLevelChart = datasetLevelChart.concat(data)\n }\n \n }\n\n return null;\n })\n\n\n /**Separate Existing Attribute Level Chart Data */\n let attributeLevelChart = []\n\n this.state.attributeLevelChart.map((data) => {\n if (this.state.existingList.includes(Number(data.attribute_id))) {\n let error_metrics = []\n if(initialFilteredDatasets.length > 0){\n if (attributeLevelError[data.attribute_id] !== undefined && initialFilteredDatasets.includes(Number(data.dataSetId))) {\n attributeLevelError[data.attribute_id].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n attributeLevelChart = attributeLevelChart.concat(data)\n\n }\n else if(initialFilteredAttributes.includes(Number(data.attribute_id))){\n attributeLevelChart = attributeLevelChart.concat(data)\n\n }\n else if(initialFilteredAttributes.length === 0 && initialFilteredDatasets.includes(Number(data.dataSetId))){\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n else{\n if (attributeLevelError[data.attribute_id] !== undefined) {\n attributeLevelError[data.attribute_id].map((data) => {\n if (data.error === true) {\n error_metrics = error_metrics.concat(data)\n }\n return null\n })\n data['metrics'] = error_metrics\n }\n attributeLevelChart = attributeLevelChart.concat(data)\n }\n }\n\n return null;\n })\n\n\n /**Separate Partition and child datasets */\n let parentDatasetIds = []\n let childDatasetIds = []\n\n datasetLevelChart.map((data) => {\n if (this.state.filterData['childDatasets'].includes(Number(data.dataSetId))) {\n childDatasetIds = childDatasetIds.concat(Number(data.dataSetId))\n }\n else {\n parentDatasetIds = parentDatasetIds.concat(Number(data.dataSetId))\n }\n return null\n })\n\n\n\n /**Separate Partition Dataset Attributes and Child Dataset Attributes */\n let parentAttributeIds = []\n let childAttributeIds = []\n\n attributeLevelChart.map((data) => {\n if (parentDatasetIds.includes(Number(data.dataSetId))) {\n parentAttributeIds = parentAttributeIds.concat(data.dataSetId)\n }\n else {\n childAttributeIds = childAttributeIds.concat(data.attribute_id)\n }\n return null\n })\n\n\n\n /**Handle Dataset level chart Data based on the chart check box filter */\n let attributeList = []\n\n datasetLevelChart.map((data) => {\n if (this.state.checkedPartition) {\n chartData = chartData.concat(data)\n attributeList = childAttributeIds.concat(parentAttributeIds)\n }\n else if (this.state.filterData['childDatasets'].includes(Number(data.dataSetId))) {\n /*** Skip Pushing Child Dataset initially */\n }\n else {\n attributeList = parentAttributeIds\n chartData = chartData.concat(data)\n }\n return null\n })\n\n /**Handle Attribute level chart Data based on the chart check box filter */\n if (this.state.checkedAttributes) {\n chartData = []\n attributeLevelChart.map((data) => {\n if(this.state.checkedPartition === false){\n if(parentDatasetIds.includes(Number(data.dataSetId))){\n chartData = chartData.concat(data) \n }\n }\n else if(childDatasetIds.includes(Number(data.dataSetId))){\n chartData = chartData.concat(data) \n }\n else{\n chartData = chartData.concat(data) \n }\n return chartData\n })\n }\n // if(this.state.checkedAttributes === true){\n // chartData=[]\n // attributeLevelChart.map((data) => {\n // chartData = chartData.concat(data)\n // return null\n // })\n // }\n\n /** TODO */\n // Above entire chart logic needs to be moved into a function : handleChartData()\n\n\n return (\n (\n this.state.isConsistencyEnabled !== null ?\n (\n this.state.isConsistencyEnabled === false ?\n \n :\n <>\n {\n this.state.showLoader === false && this.props.inProgress === false \n ?\n (\n <>\n
    \n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    \n

    \n {lastProfilingTime}\n

    \n
    \n
    \n : \"\"\n }\n
    \n \n
    \n
    \n {this.state.isFilterMode === true &&\n \n }\n \n \n }\n />\n \n }\n />\n \n )\n :\n (\n this.state.showLoader === false && this.props.inProgress === true \n ?\n \n \n \n }\n />\n :\n }\n />\n )\n }\n \n )\n :\n }\n />\n )\n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setDataSource, setDataSet, setAttribute, setChipData, setFilteredValues, setTimeFilter, setStartDate, setEndDate })(Standardisation);","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport NavigationHeader from '../../components/navigationHeader';\nimport BreadCrumb from '../../components/breadCrumb';\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport Relationship from './relationship';\nimport Completeness from './completeness';\nimport Uniqueness from './uniqueness';\nimport Timeliness from './timeliness';\nimport Accuracy from './accuracy';\nimport Conformity from './conformity';\nimport Attribute from './attribute';\nimport Standardisation from './standardisation';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ErrorHandler from '../../components/error_500';\nimport { CopyRightsFooter } from '../../components/copyrights';\nimport * as d3 from 'd3';\nimport { postUIlogs, get_api_call_cnt, get_api_call_complete_cnt } from \"../../utils/event_handling\";\nimport Image from '../../components/image';\nimport { postMixpanel } from \"../../mixpanel\";\nimport { renderskloader } from \"./dq_render_utils\";\nimport { connect } from \"react-redux\";\nimport {\n // preFetchRelationshipData,\n preFetchMetaData,\n // preFetchUserNotifications, \n prefetchDatasetDetails, prefetchRecencyDetails, prefetchRecentHistory,\n prefetchModelABData, prefetchDataSize, preFetchMetadataDetails\n} from \"../../utils/dataFetch\";\n\n// import {\n// // preFetchMonitorPreview,\n// // preFetchMonitorInfo,\n// // preFetchMonitorModelInfo,\n// // preFetchModelDetails,\n// // preFetchMonitorListViewData,\n// // preFetchMetrics,\n// // preFetchFollowAttributes,\n// // fromMonitorData\n// } from \"../../utils/monitorDataFetch\";\n\nimport {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setEndDate,\n setStartDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setAttribute,\n setDataSet,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n addModelPerformance,\n addModelDetails,\n // addFollowAttributes,\n addMonitorDQListViewData,\n addMetrics,\n // addUserNotificationToState,\n addDatasetVersions,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyDetails,\n addRecentHistory,\n addDataSize,\n addRecencyPreview,\n prefetchMonitorState,\n noIntegration,\n storeMetadataDetails,\n mappedDatasetInfo,\n // listViewTableData,\n // setDataSource, \n // setDataSet, \n // setAttribute, \n setChipData,\n setFilteredValues,\n setTimeFilter,\n // setStartDate, \n // setEndDate,\n addMLModelMapping,\n setMLModel,\n setModelABDataToList\n} from \"../../redux/actions\";\nimport store from \"../../redux/store\";\nimport {\n extractDatasetInfoForMonitorListView,\n} from \"../../utils/common_utils\";\nimport {formData} from \"../../utils/dataFetch\";\nimport { getMetaDatas,getDatasForTab} from \"../../utils/dataProfileEventHandling\"\nimport {logoutPageRedirect} from \"../../utils/common_utils\";\n\nclass DataProfile extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.pre_load = true;\n this.changeTab = this.changeTab.bind(this);\n this.postUIlogs = postUIlogs.bind(this);\n this.setLoader = this.setLoader.bind(this);\n this.setAttributeLoader = this.setAttributeLoader.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.getMetaDatas = getMetaDatas.bind(this);\n this.getDatasForTab = getDatasForTab.bind(this);\n this.loadDataSourceRender = this.loadDataSourceRender.bind(this);\n this.setAttributeTab = this.setAttributeTab.bind(this);\n this.handleFilteredData = this.handleFilteredData.bind(this);\n this.handleDateFiltered = this.handleDateFiltered.bind(this);\n\n this.state = {\n errorOccurred: false,\n toastStatus: false,\n closeLastProfiledTime: false,\n activeTabKey: \"relationship\",\n showSpinner: false,\n showAttributeSpinner: false,\n isConsistencyEnabled: null,\n\n chartTitle: \"Relationships & Errors within a Datasource\",\n gridTitle: \"Data quality metric values for selected datasets / attributes\",\n showLoader: true,\n environmentOptions: [],\n datasourceOptions: [],\n datasetsOptions: [],\n attributesOptions: [],\n childDatasets: [],\n parentDatasets: [],\n filterData:[],\n existingList:[],\n seletedDatasetID:\"\",\n seletedAttribute:\"\",\n filteredValues:[],\n \n filterStartDate:null,\n filterEndDate:null,\n filteredDatas:null,\n loadparams:null,\n \n noDataFound:null,\n inProgress:null,\n }\n }\n\n formData() {\n if (this.props.dataModule.metaData !== undefined) {\n const metaDataMapping = this.props.dataModule.metaData;\n const mappedDatasetInfos = extractDatasetInfoForMonitorListView(metaDataMapping);\n formData(this.props.mappedDatasetInfo, mappedDatasetInfos, store)\n this.pre_load = false;\n\n }\n }\n\n handleFilteredData(data){\n this.setState({filteredValues:data})\n }\n\n /**Function used to Persist filtered values while switching over tabs */\n // Below values needs to be Persist\n handleDateFiltered(loadparams, filteredDatas){\n this.setState({\n filterStartDate:loadparams['start_date'],\n filterEndDate:loadparams['end_date'],\n filteredDatas:filteredDatas,\n loadparams:loadparams\n })\n }\n\n componentDidMount() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n let prefetch = (Object.keys(this.props.dataModule.environmentDataSourceMapping).length !==\n Object.keys(this.props.dataModule.environments).length) ||\n (Object.keys(this.props.dataModule.integrations).length !==\n Object.keys(this.props.dataModule.relationship).length)\n let initial_prefetch = Object.keys(this.props.dataModule.environmentDataSourceMapping).length === 0 &&\n Object.keys(this.props.dataModule.environments).length === 0 &&\n Object.keys(this.props.dataModule.integrations).length === 0 &&\n Object.keys(this.props.dataModule.relationship).length === 0\n if (prefetch === true || initial_prefetch === true) {\n this.preFetch();\n }\n else {\n this.pre_load = false\n this.setState({ pre_load: false })\n }\n this.getMetaDatas();\n // this.getData(); \n }\n\n componentDidUpdate() {\n if (get_api_call_cnt === get_api_call_complete_cnt && this.state.pre_load === true) {\n // this.formData();\n this.pre_load = false;\n this.setState({ pre_load: false })\n }\n }\n loadDataSourceRender(params) {\n this.setState({showLoader:true})\n this.getDatasForTab(params)\n }\n changeTab(tab) {\n postMixpanel(\"Profile -> Data -> \" + tab)\n this.setState({ activeTabKey: tab });\n }\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n closeToast() {\n this.setState({ toastStatus: false });\n }\n\n componentWillUnmount() {\n d3.selectAll(\".d3-tip\").remove();\n }\n setLoader(value) {\n this.setState({ showSpinner: value });\n }\n setAttributeLoader(value) {\n this.setState({ showAttributeSpinner: value });\n }\n\n preFetch() {\n let teamID = localStorage.getItem('team_id')\n let tenantData = { \"tenant_id\": teamID };\n\n // Monitor Prefetch.\n // Single api call : /model_performance/results/info\n // if (!this.props.monitorModule.preFetchMonitorPreview) {\n // preFetchMonitorPreview(tenantData, this.props.addMonitorPreview, this.props.addPerformancePreview,\n // this.props.addModelPerformance);\n // }\n\n\n // // Data Prefetch\n // // Single Api call and interating the result to get exact metadata values\n if (!this.props.dataModule.preFetchMetaData) {\n preFetchMetaData(\n tenantData, this.props.addMetaData, this.props.addEnvironment,\n this.props.addEnvironmentDataSourceMapping, this.props.addDataSourceDataSetMapping,\n this.props.addDataSetAttributeMapping, this.props.setDataSet, this.props.setAttribute,\n this.props.setDataSource, this.props.setMlDataSource, this.props.addRelationship, this.props.addDataSource,\n this.props.addInfo, this.props.addLastProfilingTime, this.props.setStartDate, this.props.setEndDate, this.props.addDiscoveryStatus,\n this.props.addProcessingStatus, this.props.noIntegration\n );\n }\n\n // // Monitor Prefetch\n // // Prefetch happens for every Integrations \n // // Gets the result and iterate for all integrations\n // if (!this.props.dataModule.integrations) {\n // for (const key of Object.keys(this.props.dataModule.integrations)) {\n // if (!(key in this.props.monitorModule.fetchInfo && this.props.monitorModule.fetchInfo[key])) {\n // preFetchMonitorInfo(\n // tenantData, this.props.addCompletenessDataSetInfo, this.props.addCompletenessAttributeInfo,\n // this.props.addTimelinessDataSetInfo, this.props.addTimelinessAttributeInfo,\n // this.props.addAccuracyDataSetInfo, this.props.addAccuracyAttributeInfo,\n // this.props.addConformityDataSetInfo, this.props.addConformityAttributeInfo,\n // this.props.addConsistencyDataSetInfo, this.props.addConsistencyAttributeInfo,\n // this.props.addDriftDataSetInfo, this.props.addDriftAttributeInfo, this.props.addMLDataSetInfo,\n // this.props.addMLAttributeInfo, this.props.addMonitorPreview, this.props.addUniquenessDataSetInfo,\n // this.props.addUniquenessAttributeInfo, this.props.addRecencyPreview,\n // this.props.prefetchMonitorState\n // );\n // }\n // }\n // }\n\n // // Monitor Model Prefetch : model/map\n // // store the value in redux\n // if (!this.props.monitorModule.preFetchMonitorModelInfo) {\n // preFetchMonitorModelInfo(\n // teamID, this.props.addMLModelMapping,\n // this.props.addMLDataSetInfo, this.props.addMLAttributeInfo,\n // this.props.addMLModel, this.props.setMLModel\n // );\n // }\n\n // // ML Monitor prefetch : ml-models \n // // Profile ML filter and ML tab\n // if (!this.props.monitorModule.preFetchModelDetails) {\n // preFetchModelDetails(teamID, this.props.addModelDetails);\n // }\n\n // custom Metrics Prefetch used in custom metric page\n // Fetch and Store\n // if (!this.props.monitorModule.preFetchMetrics) {\n // preFetchMetrics(teamID, this.props.addMetrics);\n // }\n\n\n // Monitor Prefetch\n // Prefetch happens for every Integrations \n // Gets the result and iterate for all integrations\n // if (!this.props.monitorModule.preFetchMonitorListViewData) {\n // preFetchMonitorListViewData(teamID, this.props.addMonitorDQListViewData);\n // }\n\n // Notification Prefetch: user_notification/unread\n // Used in navigation header\n // Fetch and store\n // if (!this.props.dataModule.preFetchUserNotifications) {\n // // Fetch first page result of user notifications\n // preFetchUserNotifications(tenantData, addUserNotificationToState, store);\n\n // }\n\n // Data Prefetch: /datasets\n // Used in charts discover, profile\n // Fetch and store\n if (!this.props.dataModule.prefetchDatasetDetails) {// Fetch dataset version details\n prefetchDatasetDetails(tenantData, addDatasetVersions, store);\n }\n\n // Data Prefetch: recency/all \n // Used in Discovery and profile\n // Fetch and store\n if (!this.props.dataModule.prefetchRecencyDetails) {// Fetch Recency Details\n prefetchRecencyDetails(tenantData, addRecencyDetails, store);\n }\n\n // Discover prefetch: recent_search\n // user in discover page \n // fetch and store\n if (!this.props.dataModule.prefetchRecentHistory) { // Fetch recent search history - discover page\n prefetchRecentHistory(tenantData, addRecentHistory, store);\n }\n\n // Fetch and store datasize : /data_size\n // simple prefetch\n if (!this.props.dataModule.prefetchDataSize) {// Fetch data size - discover page\n prefetchDataSize(tenantData, addDataSize, store)\n }\n\n // Monitor Model Prefetch used in configure and monitor : model_ab_data\n if (!this.props.dataModule.prefetchModelABData) { // Fetch Model AB configuration list\n prefetchModelABData(tenantData, setModelABDataToList, store);\n }\n\n // Monitor Prefetch: follow_attributes\n // used in monitor page\n // fetch and store\n // if (!this.props.monitorModule.preFetchFollowAttributes) {\n // preFetchFollowAttributes(tenantData, addFollowAttributes, store);\n // }\n\n // Alert Prefetch : alert_applicable_metrics\n // used on alert page\n if (!this.props.monitorModule.preFetchMetadataDetails) {\n preFetchMetadataDetails(tenantData, storeMetadataDetails, store)\n }\n }\n\n setAttributeTab(dataset, attribute){\n this.setState({seletedDatasetID:dataset})\n this.setState({seletedAttribute:attribute}) \n }\n \n render() {\n let logoutPage = logoutPageRedirect()\n if (logoutPage) {\n return ''\n }\n return (\n\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()} show={this.state.toastStatus} delay={3000} autohide>\n
    \n \n {this.state.toastIcon ?\n :\n \"\"\n }\n \n \n {this.state.toastHeading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n \n
    \n \n \n\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n {this.state.showLoader === false ?\n \n \n \n :\n renderskloader(this.state.chartTitle, this.state.gridTitle)\n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n );\n\n }\n\n}\n\n// export default DataProfile;\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\n\nexport default connect(\n mapStateToProps, {\n addMetaData,\n addMLModelMapping,\n setMLModel,\n setModelABDataToList,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setDataSet,\n // setAttribute,\n setDataSource,\n setMlDataSource,\n addRelationship,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setStartDate,\n setEndDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addMonitorPreview,\n addPerformancePreview,\n addModelPerformance,\n addCompletenessDataSetInfo,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyPreview,\n addMLModel,\n addModelDetails,\n addMetrics,\n addMonitorDQListViewData,\n prefetchMonitorState,\n noIntegration,\n mappedDatasetInfo,\n // listViewTableDatasetDataSource, \n // setDataSet,\n setAttribute,\n setChipData,\n setFilteredValues,\n setTimeFilter,\n // setStartDate,\n // setEndDate\n})(DataProfile);","import React, {useState, forwardRef, useImperativeHandle} from 'react';\nimport Select from 'react-select';\nimport Modal from \"react-bootstrap/Modal\";\nimport { DATA_SET, ATTRIBUTE } from \"../../utils/constant\";\nimport _ from 'lodash';\nimport {\n datasetNameFromMappedValue,\n attributeNameFromMappedValue,\n METADATA_MAP_KEY_SEPARATOR\n} from \"../../utils/attribute_name_utils\";\n\nexport const MlFilterOptions = forwardRef((props, ref) => {\n let [ mlModelOption, setMlModelOption ] = useState(props.mlModelOption);\n let [ dataSetOption, setDataSetOption ] = useState(props.dataSetOptions);\n let [ attributeOption, setAttributeOption ] = useState(props.attributeOptions);\n let [ selectedEnvironmentOption, setSelectedEnvironmentOption ] = useState(props.preSelectedEnvironment);\n let [ selectedDataSourceOption, setSelectedDataSourceOption ] = useState(props.preSelectedDataSource);\n let [ selectedMlModelOption, setSelectedMlModelOption ] = useState(props.preSelectedMlModel);\n let [ selectedDataSetOption, setSelectedDataSetOption ] = useState(props.preSelectedDatasets);\n let [ selectedAttributeOption, setSelectedAttributeOption ] = useState(props.preSelectedAttributes);\n let [ isFilterSubmitted, setFilterSubmitted ] = useState(false);\n let [ isformResetFlag, setFormResetFlag ] = useState(props.formResetFlag);\n\n useImperativeHandle(ref, () => ({\n setDefaultValuesFromParent(environment, mlModel, dataSet, attribute) {\n if (environment !== null) {\n setSelectedEnvironmentOption(environment);\n }\n if (mlModel !== null) {\n setSelectedMlModelOption(mlModel);\n }\n if (dataSet !== null) {\n setSelectedDataSetOption(dataSet);\n }\n if (attribute !== null) {\n setSelectedAttributeOption(attribute);\n }\n\n }\n }));\n\n React.useEffect(() => {\n setSelectedEnvironmentOption(props.preSelectedEnvironment);\n }, [props.preSelectedEnvironment])\n\n React.useEffect(() => {\n setSelectedMlModelOption(props.preSelectedMlModel);\n }, [props.preSelectedMlModel])\n\n React.useEffect(() => {\n setSelectedDataSetOption(props.preSelectedDatasets);\n }, [props.preSelectedDatasets])\n\n React.useEffect(() => {\n setSelectedAttributeOption(props.preSelectedAttributes);\n }, [props.preSelectedAttributes])\n\n React.useEffect(() => {\n setSelectedDataSourceOption(props.preSelectedDataSource);\n }, [props.preSelectedDataSource])\n\n React.useEffect(() => {\n setMlModelOption(props.mlModelOption);\n }, [props.mlModelOption])\n\n React.useEffect(() => {\n setDataSetOption(props.dataSetOptions);\n }, [props.dataSetOptions])\n\n React.useEffect(() => {\n setFormResetFlag(props.formResetFlag);\n }, [props.formResetFlag])\n\n\n if(isformResetFlag===1){\n setFormResetFlag(0);\n setMlModelOption([]);\n setDataSetOption([]);\n setAttributeOption([]);\n setSelectedDataSetOption(-1);\n setSelectedMlModelOption(-1);\n setSelectedAttributeOption(-1);\n setSelectedEnvironmentOption(-1)\n }\n\n\n function parseMetaMapping(type, parentId, id) {\n let metaMapping = _.cloneDeep(props.dataModule.metaData);\n let prefix;\n switch (type) {\n case DATA_SET: {\n prefix = `${selectedEnvironmentOption.value}.${parentId}.${id}`;\n // const filtered = Object.keys(metaMapping)\n // .filter( key => key.startsWith(prefix))\n // .reduce((obj, key) => {\n // obj[key] = metaMapping[key];\n // return obj;\n // }, {});\n let dataSetName = metaMapping[prefix];\n return datasetNameFromMappedValue(dataSetName)\n }\n case ATTRIBUTE: {\n prefix = `${selectedEnvironmentOption.value}.${selectedDataSourceOption.value}.${parentId}.${id}`;\n // const filtered = Object.keys(metaMapping)\n // .filter(key => key === prefix)\n // .reduce((obj, key) => {\n // obj[key] = metaMapping[key];\n // return obj;\n // }, {});\n let attributeMappedVal = metaMapping[prefix];\n let attributeName = attributeNameFromMappedValue(attributeMappedVal);\n return attributeName;\n }\n default:\n return \"NA\";\n }\n }\n\n\n function setSelectedEnvironment(event) {\n let option = [];\n// let selectedEnvironment = event.value;\n// let dataSources = props.dataModule.environmentDataSourceMapping[selectedEnvironment];\n// dataSources.forEach((dataSourceId) => {\n// option.push({\"value\": dataSourceId, \"label\":props.dataModule.integrations[dataSourceId]});\n// });\n let mlModels = props.monitorModule.mlModelDetails;\n mlModels.forEach((mlModel) => {\n if (mlModel.env_id.toString() === event.value ){\n option.push({\"value\": mlModel.ml_model_id, \"label\": mlModel.model_name,\n \"dataSrcName\": mlModel.integration_name,\n \"dataSourceId\": mlModel.integration_id});\n }\n });\n setMlModelOption(option);\n setSelectedEnvironmentOption(event);\n }\n\n\n function setSelectedMlModel(event) {\n let option = [];\n let datasetIds = [];\n// let selectedMlModel = event.value;\n// let mlDatasetDetails = props.monitorModule.mlModelDataSetInfo[selectedMlModel];\n// if (mlDatasetDetails !== undefined && mlDatasetDetails !== null) {\n//// dataSets.forEach((dataSetId) => {\n//// option.push({\"value\": dataSetId, \"label\": parseMetaMapping(DATA_SET, selectedDataSource, dataSetId)});\n//// })\n//\n// for (let metricValues of Object.values(mlDatasetDetails)){\n// Object.keys(metricValues).forEach((modelPrefix) => {\n// let dataSetId=modelPrefix.split(\".\")[2];\n// if (!datasetIds.includes(dataSetId)){\n// datasetIds.push(dataSetId);\n// option.push({\"value\": dataSetId, \"label\": parseMetaMapping(DATA_SET,\n// event.dataSourceId, dataSetId)});\n// }\n// })\n// }\n// }\n let chartDataV1 = props.dataModule.relationship[event.dataSourceId];\n if (props.dataModule !== undefined && chartDataV1.length !== 0) {\n for (let i in chartDataV1){\n let attributeName= chartDataV1[i].name;\n let dataSetId=attributeName.split(METADATA_MAP_KEY_SEPARATOR)[2];\n if (!datasetIds.includes(dataSetId)){\n datasetIds.push(dataSetId);\n option.push({\"value\": dataSetId, \"label\": parseMetaMapping(DATA_SET,event.dataSourceId, dataSetId)});\n }\n }\n }\n setDataSetOption(option);\n let dataSrc = {\"value\": event.dataSourceId ,\"label\": event.dataSrcName}\n setSelectedDataSourceOption(dataSrc);\n setSelectedMlModelOption(event);\n setSelectedDataSetOption(-1);\n setSelectedAttributeOption(-1);\n }\n\n\n function setSelectedDataSet(event) {\n let option = [];\n let selectedDataSet = [];\n if (event !== null ) {\n event.forEach((item) => {\n selectedDataSet.push(item.value);\n let attributes = props.dataModule.dataSetAttributeMapping[item.value];\n attributes.forEach((attributeId) => {\n option.push({\"value\": attributeId, \"label\": parseMetaMapping(ATTRIBUTE, item.value, attributeId)});\n });\n });\n setSelectedDataSetOption(event);\n } else {\n setSelectedDataSetOption(-1);\n setSelectedAttributeOption(-1);\n }\n setAttributeOption(option);\n setSelectedAttributeOption(-1);\n\n }\n\n function setSelectedAttribute(event) {\n let selectedAttribute = [];\n if (event !== null ) {\n event.forEach((item) => {\n selectedAttribute.push(item.value);\n });\n setSelectedAttributeOption(event);\n } else {\n setSelectedAttributeOption(-1);\n }\n }\n\n\n function handleFilterClose(){\n setSelectedAttributeOption(props.preSelectedAttributes);\n setSelectedDataSourceOption(props.preSelectedDataSource);\n setSelectedDataSetOption(props.preSelectedDatasets);\n setSelectedEnvironmentOption(props.preSelectedEnvironment);\n props.closeFilterModal();\n }\n\n function handleReset(){\n setFormResetFlag(1);\n }\n \n function setFilteredValues() {\n setFilterSubmitted(true);\n let filteredValues = [];\n let prefix;\n if (selectedEnvironmentOption !== -1 && selectedMlModelOption !== -1) {\n prefix = `${selectedEnvironmentOption.value}.${selectedDataSourceOption.value}-${selectedMlModelOption.value}`;\n if (selectedDataSetOption!==undefined && selectedDataSetOption !== null && selectedDataSetOption !== -1) {\n selectedDataSetOption.forEach((dataSet) => {\n if(selectedAttributeOption !== null && selectedAttributeOption !== -1) {\n selectedAttributeOption.forEach((attribute) => {\n filteredValues.push(`${prefix}.${dataSet.value}.${attribute.value}`);\n });\n } else {\n filteredValues.push(`${prefix}.${dataSet.value}`);\n }\n });\n } else {\n filteredValues.push(prefix);\n }\n props.setFilteredValues(filteredValues)\n props.closeFilterModal();\n setFilterSubmitted(false);\n props.setChipData(selectedEnvironmentOption, selectedMlModelOption, selectedDataSetOption, selectedAttributeOption);\n }\n\n }\n\n return (\n \n \n
    \n {props.filterTitle}\n
    \n
    \n \n
    \n \n label.includes(query)}\n id={props.id + \"Environment\"}\n onChange={setSelectedEnvironment}\n options={props.environments}\n placeholder=\"Choose Environment\"\n classNamePrefix='select-control'\n value={selectedEnvironmentOption === -1 ? '' : selectedEnvironmentOption}\n defaultValue={selectedEnvironmentOption === -1 ? '' : selectedEnvironmentOption}\n />\n { selectedEnvironmentOption === -1 && isFilterSubmitted ?\n {\"Please Select an Environment\"} : \"\"}\n
    \n
    \n \n label.includes(query)}\n id={props.id + \"Schemas\"}\n onChange={setSelectedDataSet}\n placeholder=\"Choose Dataset\"\n classNamePrefix='select-control'\n value = {selectedDataSetOption === -1 ? '' : selectedDataSetOption}\n defaultValue={selectedDataSetOption === -1 ? '' : selectedDataSetOption}\n />\n\n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n
    \n \n \n
    \n
    \n
    \n );\n});","import React from 'react';\nimport { ENVIRONMENT, DATA_SOURCE, DATA_SET, ATTRIBUTE } from '../../utils/constant';\nimport { getShortTitleForAttribute } from '../../utils/common_utils';\nimport { FQ_TOOLTIP_PLACEHOLDER } from '../../utils/attribute_name_utils';\nimport RcTooltip from 'rc-tooltip';\n\nconst renderTitleToolTip = (props) => (\n \n {props}\n \n );\n\nclass Filter extends React.Component {\n constructor(props) {\n super(props);\n this.renderFilterChips = this.renderFilterChips.bind(this);\n this.addChipsToFilter = this.addChipsToFilter.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n }\n\n removeElement(event, key) {\n this.props.removeFilterElements(event, key);\n }\n\n addChipsToFilter(id, value, type) {\n if (id === undefined) {\n return '';\n }\n\n let requiredTooltip = null;\n let tooltipHolder = null;\n let shortName = null;\n\n let chipClass = \"chip\";\n let keySuffix = \"\";\n if (type === ENVIRONMENT) {\n chipClass = \"chip chip-red\";\n keySuffix = \"env\";\n } else if (type === DATA_SOURCE) {\n chipClass = \"chip chip-green\";\n keySuffix = \"datasource\";\n } else if (type === DATA_SET) {\n chipClass = \"chip chip-yellow\";\n keySuffix = \"dataset\";\n } else if (type === ATTRIBUTE) {\n chipClass = \"chip chip-blue\";\n keySuffix = \"attribute\";\n let shortenedData = getShortTitleForAttribute(value);\n shortName = shortenedData[\"requiredName\"];\n requiredTooltip = shortenedData[\"fqTooltipContent\"];\n if (requiredTooltip !== null) {\n tooltipHolder = FQ_TOOLTIP_PLACEHOLDER;\n }\n }\n\n let keyVal = String(id) + value + keySuffix;\n \n if (tooltipHolder === null) {\n return (\n
    \n {value}\n {type === 1 ? \"\" : }\n
    \n );\n }\n\n // We need to show tooltip and shortened name\n return (\n
    \n
    }\n >\n {tooltipHolder}\n \n {shortName}\n {type === 1 ? \"\" : }\n \n );\n }\n\n removeChipData(key) {\n this.props.removeChipData(key)\n }\n\n renderFilterChips() {\n let divItems = [];\n this.props.dataModule.chipData.filter((chipInfo)=> chipInfo.key!==\"*\" && divItems.push(this.addChipsToFilter(chipInfo.key, chipInfo.value, chipInfo.type)))\n return divItems;\n }\n\n render() {\n return (\n <>\n
    \n
    \n
    \n {this.renderFilterChips()}\n {/*
    \n

    \n {this.props.lastProfilingTime}\n

    \n
    */}\n
    \n
    \n \n
    \n
    \n
    \n \n );\n }\n}\n\nexport default Filter;","import React from 'react';\nimport ChartBody from '../../components/chartBody';\nimport BasicPortlet from '../../components/basicPortlet';\nimport QualdoDataTable from '../../components/bootstrapTable';\nimport Load from '../../components/loadAction';\nimport { ENVIRONMENT, DATA_SOURCE, DATA_SET, ATTRIBUTE, ML_METRIC_2 } from '../../utils/constant';\nimport { MlFilterOptions } from '../components/mlFilterOptions';\nimport _ from 'lodash';\nimport Filter from '../components/filter';\nimport { connect } from \"react-redux\";\nimport { setMlDataSource, setMLModel, setChipData, setFilteredValues} from \"../../redux/actions\";\nimport moment from 'moment';\nimport CardHelpContent from '../../components/cardHelpContent';\nimport RcTooltip from 'rc-tooltip';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faQuestionCircle, faBezierCurve } from '@fortawesome/free-solid-svg-icons';\nimport ProgressStatus from '../../components/progressStatus';\nimport {\n filterInfoData_mlModel, parseMetaMapping,\n getTimeFilteredData_mlModel, formCardData_mlModel\n} from '../../utils/common_utils';\nimport {\n METADATA_MAP_KEY_SEPARATOR, METADATA_MAP_VALUE_SEPARATOR\n} from '../../utils/attribute_name_utils';\n// import TreeFilter from \"../data/treeFilter\"\n\n\nconst renderTooltip = (props) => (\n \n Need Help ?\n \n );\n\n\n\nclass MlModel extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.setDataSource = this.setDataSource.bind(this);\n this.formCardData = this.formCardData.bind(this);\n this.setDefaultValuesInFilter = this.setDefaultValuesInFilter.bind(this);\n this.changeFilterValues = this.changeFilterValues.bind(this);\n this.formTableData = this.formTableData.bind(this);\n this.closeLastProfiledTime = this.closeLastProfiledTime.bind(this);\n this.toggleFilter = this.toggleFilter.bind(this);\n this.resetFilter = this.resetFilter.bind(this);\n this.setFilteredValues = this.setFilteredValues.bind(this);\n this.setChipData = this.setChipData.bind(this);\n this.removeChipData = this.removeChipData.bind(this);\n this.filterInfoData_mlModel = filterInfoData_mlModel.bind(this);\n this.filterOptions = React.createRef();\n this.renderCards = this.renderCards.bind(this);\n this.changeTime = this.changeTime.bind(this);\n this.getTimeFilteredData_mlModel = getTimeFilteredData_mlModel.bind(this);\n this.formCardData_mlModel = formCardData_mlModel.bind(this);\n this.mapModelToDataSource = this.mapModelToDataSource.bind(this);\n this.state = {\n hideLastProfiledTime: false,\n isFilterMode: false,\n filteredValues:[],\n showModal: false,\n cardName: \"\",\n// chipData:[{\n// \"key\": this.props.dataModule.selectedMLModel,\n// \"value\": this.props.monitorModule.mlModelMapping[this.props.dataModule.selectedMLModel],\n// \"type\": DATA_SOURCE\n// }],\n cardData:[],\n tableData: {\n \"headers\":[\"DataSource\",\"ML Model\", \"DataSet\", \"Attribute Name\", \"Metric\", \"Metric Value\"],\n \"data\":[]\n },\n startDate: moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00'),\n endDate: moment().format('YYYY-MM-DD 23:59:59'),\n selectedDate: [],\n timeFilterApplied: false,\n modelDataSourceDetails: this.mapModelToDataSource(),\n selectedMLModel:null\n }\n }\n\n componentDidMount() {\n this.formCardData([],-1, this.props.dataModule.selectedMLModel);\n this.formTableData([],-1, this.props.dataModule.selectedMLModel);\n this.setDefaultValuesInFilter();\n this.getSelectedTime();\n// this.props.setMlChipData([]);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.dataModule.info !== this.props.dataModule.info) {\n this.formCardData([],-1, this.props.dataModule.selectedMLModel);\n this.formTableData([],-1, this.props.dataModule.selectedMLModel);\n this.setDefaultValuesInFilter();\n // this.props.setMlChipData([]);\n }\n }\n\n setDefaultValuesInFilter(){\n let environment = -1;\n let mlModel = -1;\n let dataSourceId;\n if(this.props.monitorModule.mlModelMapping !== undefined && this.props.dataModule.selectedMLModel !== undefined ){\n for (const [key, value] of Object.entries(this.props.monitorModule.mlModelMapping)) {\n if (key === this.props.dataModule.selectedMLModel.toString()) {\n mlModel = {\"label\": value, \"value\": key};\n dataSourceId = this.state.modelDataSourceDetails[key];\n }\n }\n }\n if (this.props.dataModule.environmentDataSourceMapping !== undefined) {\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (dataSourceId !== undefined && value.includes(dataSourceId.toString())) {\n environment = {\"label\": this.props.dataModule.environments[key], \"value\": key};\n }\n }\n }\n this.setChipData(environment, mlModel)\n\n this.setState({prefillEnvironment:environment, prefillMlModel:mlModel});\n }\n\n\n mapModelToDataSource() {\n let modelDetails = this.props.monitorModule.mlModelDetails;\n let modelToDataSource = {};\n modelDetails.forEach((modelDetail) => {\n modelToDataSource[modelDetail.ml_model_id] = modelDetail.integration_id;\n })\n if (modelToDataSource[this.props.dataModule.selectedMLModel] !== undefined){\n this.props.setMlDataSource(modelToDataSource[this.props.dataModule.selectedMLModel]);\n }\n return modelToDataSource;\n }\n\n changeTime(selectedValue, startDate, endDate) {\n endDate = moment(endDate).format('YYYY-MM-DD 23:59:59');\n this.formCardData(this.state.filteredValues, -1, this.props.dataModule.selectedMLModel, true, startDate, endDate);\n this.formTableData(this.state.filteredValues, -1, this.props.dataModule.selectedMLModel, true, startDate, endDate);\n this.setState({startDate:startDate, endDate:endDate, timeFilterApplied: true});\n }\n\n getSelectedTime() {\n let timeList = [];\n let tempStartDate = moment().subtract(29, 'days').format('YYYY-MM-DD 00:00:00');\n let tempEndDate = moment().format('YYYY-MM-DD 00:00:00');\n while(moment(tempStartDate).isSameOrBefore(moment(tempEndDate))) {\n timeList.push(tempStartDate);\n tempStartDate = moment(tempStartDate).add(1, 'days').format('YYYY-MM-DD 00:00:00');\n }\n this.setState({selectedDate: timeList});\n\n }\n\n\n setChipData(environment, dataSource, dataSets, attributes) {\n let chipData = [];\n if (environment !== -1) {\n chipData.push({\"key\": environment.value, \"value\": environment.label, \"type\": ENVIRONMENT});\n }\n if (dataSource !== -1) {\n chipData.push({\"key\": dataSource.value, \"value\": dataSource.label, \"type\": DATA_SOURCE});\n }\n if (dataSets !== undefined && dataSets !== -1) {\n dataSets.forEach((dataSet) => {\n chipData.push({\"key\": dataSet.value, \"value\": dataSet.label, \"type\": DATA_SET});\n });\n }\n if (attributes !== undefined && attributes !== -1) {\n attributes.forEach((attribute) => {\n chipData.push({\"key\": attribute.value, \"value\": attribute.label, \"type\": ATTRIBUTE});\n });\n }\n this.props.setChipData(chipData);\n }\n\n removeChipData(key) {\n let chipData = this.props.dataModule.chipData;\n let chipDataAttribute;\n let checkdataSetAttributeMapping = this.props.dataModule.dataSetAttributeMapping;\n\n chipData = chipData.filter((item) => item.key !== key && (item.type === ENVIRONMENT || item.type === DATA_SOURCE || item.type === DATA_SET || (item.type === ATTRIBUTE && item.key !== \"*\")));\n\n if (checkdataSetAttributeMapping[key] !== undefined) {\n // While removing the dataset level key we have to remove the corresponding attributes key\n // Filtering the attribute keys for the particular dataset \n chipDataAttribute = chipData.filter((item) => checkdataSetAttributeMapping[key].indexOf(item.key) > -1 && item.type === ATTRIBUTE);\n for (let i of chipDataAttribute) {\n // Here will exclude the attribute from chipData \n chipData = chipData.filter((item) => item.key !== i.key);\n }\n }\n let filteredValues = [];\n let environment = chipData.filter((item) => item.type === ENVIRONMENT);\n let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n if (environment.length === 0 || dataSource.length === 0) {\n chipData = [{\n \"key\": this.props.dataModule.selectedDataSource,\n \"name\": this.props.dataModule.integrations[this.props.dataModule.selectedDataSource],\n \"type\": DATA_SOURCE\n }];\n this.filterOptions.current.setDefaultValuesFromParent(this.state.prefillEnvironment,this.state.prefillDataSource,-1,-1);\n } else {\n let prefix = `${environment[0].key}.${this.props.dataModule.selectedDataSource}`;\n let dataSets = chipData.filter((item) => item.type === DATA_SET);\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n if (dataSets.length !== 0) {\n dataSets.forEach((dataSet) => {\n if (attributes.length !== 0) {\n if (attributes.length !== 0 && attributes.key !== \"*\") {\n attributes.forEach((attribute) => {\n if (checkdataSetAttributeMapping[dataSet.key].filter((item) => item.key !== attribute.key)) {\n filteredValues.push(`${prefix}.${dataSet.key}.${attribute.key}`);\n } else {\n\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } \n }\n else{\n filteredValues.push(`${prefix}.${dataSet.key}`);\n }\n });\n } else {\n filteredValues.push(prefix);\n }\n }\n let selectedMLModelId = dataSource[0].key\n this.setFilteredValues(filteredValues,selectedMLModelId);\n this.props.setChipData(chipData);\n }\n\n changeFilterValues(mlModelId, dataSourceId){\n let mlModel = -1;\n let environment = -1;\n if (this.props.monitorModule.mlModelMapping !== undefined){\n mlModel = {\"label\": this.props.monitorModule.mlModelMapping[mlModelId], \"value\": mlModelId};\n }\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (dataSourceId !== undefined && value.includes(dataSourceId.toString())) {\n environment = {\"label\": this.props.dataModule.environments[key], \"value\": key};\n }\n }\n this.setState({prefillEnvironment:environment, prefillMlModel:mlModel});\n }\n\n setDataSource(mlModelId, changeSource) {\n if(mlModelId===undefined){\n return\n }\n\n let dataSourceId = this.state.modelDataSourceDetails[mlModelId];\n this.props.setMlDataSource(dataSourceId);\n let envId = null;\n let filteredValues =[];\n for (const [key, value] of Object.entries(this.props.dataModule.environmentDataSourceMapping)) {\n if (value.includes(dataSourceId.toString())) {\n envId = key;\n }\n }\n if (envId !== null){\n let arr = [envId, dataSourceId]\n filteredValues = [arr.join(\".\").toString()];\n }\n let environment= this.props.dataModule.chipData.filter((item) => item.type === ENVIRONMENT);\n environment = {\"label\": environment[0].value, \"value\": environment[0].key};\n\n if (filteredValues.length > 0){\n let chipData = [{\n \"key\": mlModelId,\n \"value\": this.props.monitorModule.mlModelMapping[mlModelId],\n \"type\": DATA_SOURCE\n }];\n this.setState({\n chipData: chipData,\n filteredValues: filteredValues,\n });\n\n if(changeSource){\n let selectedModel = {\n \"value\": mlModelId,\n \"label\": this.props.monitorModule.mlModelMapping[mlModelId],\n \"type\": DATA_SOURCE\n }\n this.setState({selectedMLModel:selectedModel})\n this.setChipData(environment, selectedModel,-1,-1)\n this.formCardData(filteredValues, dataSourceId, mlModelId);\n this.formTableData(filteredValues, dataSourceId, mlModelId);\n }\n \n }\n// let mlDataSetInfo = this.props.monitorModule.mlModelDataSetInfo;\n// if (mlDataSetInfo !== undefined) {\n// let mlDetails = mlDataSetInfo[mlModelId];\n// let filteredValues =[];\n// if (mlDetails !== undefined) {\n// for (let metricValues of Object.values(mlDetails)){\n// Object.keys(metricValues).forEach((modelPrefix) => {\n// if (!filteredValues.includes(modelPrefix)){\n// filteredValues.push(modelPrefix);\n// }\n// });\n// }\n// let chipData = [{\n// \"key\": mlModelId,\n// \"value\": this.props.monitorModule.mlModelMapping[mlModelId],\n// \"type\": DATA_SOURCE\n// }];\n// this.setState({\n// chipData: chipData,\n// filteredValues: filteredValues\n// });\n// this.formCardData(filteredValues, dataSourceId, mlModelId);\n// this.formTableData(filteredValues, dataSourceId, mlModelId);\n// }\n// }\n if (mlModelId !== -1) {\n this.changeFilterValues(mlModelId, dataSourceId);\n }\n }\n\n handleClick(data) {\n this.setState({showModal:true,cardName:data.metric_name});\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n }\n\n renderCards(cardData) {\n return (\n
    \n {\n this.state.showModal ?\n : \"\"\n }\n {\n cardData.map((data) => {\n let cardBackground = `dashboard-stat ${data.background}`;\n let textColor = `title ${data.textColor}`;\n return(\n
    \n
    \n
    \n
    \n
    \n {data.metric_name}\n
    \n \n
    }\n >\n
    \n \n \n
    \n
    \n {data.metric_value}\n\n
    \n \n
    \n
    \n
    \n );\n })\n }\n \n );\n }\n\n closeLastProfiledTime() {\n this.setState({\n hideLastProfiledTime: true,\n });\n }\n\n toggleFilter() {\n let filterMode = this.state.isFilterMode ? false : true;\n this.setState({\n isFilterMode: filterMode\n })\n }\n\n\n resetFilter() {\n this.setState({formResetFlag:1});\n }\n\n\n toggleMainFilterApplied() {\n let isMainFilterApplied = this.state.isMainFilterApplied ? false : true;\n this.setState({\n isMainFilterApplied: isMainFilterApplied\n })\n }\n\n setFilteredValues(filteredValues,selectedMLModelId=null) {\n if(filteredValues.length === 0){\n return\n }\n let filterValuesUpdated = [];\n let dataSourceId;\n let mlModelId;\n filteredValues.forEach((filterVal) => {\n let filteredArr = filterVal.split(\".\")\n let dataSrcMlIds = filteredArr[1].split(\"-\");\n dataSourceId = dataSrcMlIds[0];\n mlModelId = dataSrcMlIds[1];\n filteredArr[1]= dataSourceId;\n filteredArr = filteredArr.join(\".\").toString();\n filterValuesUpdated.push(filteredArr);\n });\n let filterResult = _.cloneDeep(filterValuesUpdated);\n this.formCardData(filterResult, dataSourceId, mlModelId);\n this.formTableData(filterResult, dataSourceId, mlModelId);\n this.props.setMlDataSource(dataSourceId);\n this.setDataSource(mlModelId);\n \n let selectedModel = {\n \"value\": mlModelId,\n \"label\": this.props.monitorModule.mlModelMapping[mlModelId],\n \"type\": DATA_SOURCE\n }\n if(selectedMLModelId!==null){\n selectedModel = {\n \"value\": selectedMLModelId,\n \"label\": this.props.monitorModule.mlModelMapping[selectedMLModelId],\n \"type\": DATA_SOURCE\n } \n }\n if ((filterValuesUpdated.length > 1) || (filterValuesUpdated.length === 1 && filterValuesUpdated[0].split(\".\").length > 1)) {\n this.setState({\n filteredValues: filterValuesUpdated,\n selectedMLModel:selectedModel\n })\n }\n //this.props.setDataSource(dataSourceId);\n }\n\n renderFilter(environmentOption, mlModelOption, dataSetOptions, preSelectedDataSource) {\n let preSelectedEnvironment = this.state.prefillEnvironment;\n let preSelectedMlModel = this.state.prefillMlModel;\n let preSelectedDatasets = this.state.preSelectedDatasets;\n let preSelectedAttributes = this.state.preSelectedAttributes;\n let attributeOptions = [];\n if (this.props.dataModule.chipData !== undefined && this.props.dataModule.chipData.length > 1) {\n let chipData = this.props.dataModule.chipData;\n let environment= chipData.filter((item) => item.type === ENVIRONMENT);\n preSelectedEnvironment = {\"label\": environment[0].value, \"value\": environment[0].key};\n\n// let dataSource = chipData.filter((item) => item.type === DATA_SOURCE);\n// preSelectedDataSource = {\"label\": dataSource[0].value, \"value\": dataSource[0].key};\n\n let mlModel = chipData.filter((item) => item.type === DATA_SOURCE);\n preSelectedMlModel = {\"label\": mlModel[0].value, \"value\": mlModel[0].key};\n\n let datasets = chipData.filter((item) => item.type === DATA_SET);\n preSelectedDatasets = [];\n datasets.forEach((dataSet) => {\n preSelectedDatasets.push({\"label\": dataSet.value, \"value\": dataSet.key})\n });\n let attributes = chipData.filter((item) => item.type === ATTRIBUTE);\n preSelectedAttributes = [];\n attributes.forEach((attribute) => {\n preSelectedAttributes.push({\"label\": attribute.value, \"value\": attribute.key})\n });\n\n preSelectedDatasets.forEach((item) => {\n let attributesList = this.props.dataModule.dataSetAttributeMapping[item.value];\n if(attributesList!==undefined){\n attributesList.forEach((attributeId) => {\n attributeOptions.push({\"value\": attributeId, \"label\": parseMetaMapping(this.props, ATTRIBUTE, item.value,\n attributeId, preSelectedEnvironment, preSelectedDataSource)});\n });\n }\n });\n\n// let mlDatasetDetails = this.props.monitorModule.mlModelDataSetInfo[preSelectedMlModel.value];\n// for (let metricValues of Object.values(mlDatasetDetails)){\n// Object.keys(metricValues).forEach((modelPrefix) => {\n// let dataSetId=modelPrefix.split(\".\")[2];\n// if (!datasetIds.includes(dataSetId)){\n// datasetIds.push(dataSetId);\n// dataSetOptions.push({\"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n// preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)});\n// }\n// })\n// }\n let datasetIds =[];\n let chartDataV1 = this.props.dataModule.relationship[this.state.modelDataSourceDetails[mlModel[0].key]];\n for (let i in chartDataV1){\n let attributeName= chartDataV1[i].name;\n let dataSetId=attributeName.split(METADATA_MAP_KEY_SEPARATOR)[2];\n if (!datasetIds.includes(dataSetId)){\n datasetIds.push(dataSetId);\n dataSetOptions.push({\"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n preSelectedDataSource.value, dataSetId, preSelectedEnvironment, preSelectedDataSource)});\n }\n }\n }\n return (\n \n );\n }\n\n\n formTableData(filteredValues, changedDataSource=-1, mlModelId, timeFilterApplied=false, startDate=null, endDate=null) {\n let tableInfo = [];\n let allMetricInfo;\n let dataSourceId = this.state.modelDataSourceDetails[mlModelId];\n\n if (changedDataSource === -1) {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[dataSourceId]);\n } else {\n allMetricInfo = _.cloneDeep(this.props.dataModule.info[changedDataSource]);\n }\n\n if (filteredValues.length !== 0) {\n allMetricInfo = this.filterInfoData_mlModel(filteredValues, allMetricInfo);\n }\n\n if (allMetricInfo === undefined || allMetricInfo == null) {\n allMetricInfo = {};\n }\n\n for (const [key, value] of Object.entries(allMetricInfo)) {\n let metaData = this.props.dataModule.metaData[key];\n if (metaData !== undefined) {\n let reqMappedVal = metaData.split(METADATA_MAP_VALUE_SEPARATOR);\n let dataSource = reqMappedVal[1];\n let dataSet = reqMappedVal[2];\n let attribute = reqMappedVal[reqMappedVal.length - 1];\n for (const [metricId, metricValue] of Object.entries(value)) {\n let tableData = [];\n if (!metricId.endsWith(\"drift\") && metricId in ML_METRIC_2 ) {\n tableData.push({\"value\": dataSource, \"type\": \"td\"});\n tableData.push({\"value\": this.props.monitorModule.mlModelMapping[mlModelId], \"type\": \"td\"});\n tableData.push({\"value\": dataSet, \"type\": \"td\"});\n tableData.push({\"value\": attribute, \"type\": \"td\"});\n tableData.push({\"value\": ML_METRIC_2[metricId], \"type\": \"td\"});\n let tempMetricValue = metricValue;\n if (timeFilterApplied) {\n let timeFilteredData = this.getTimeFilteredData_mlModel(allMetricInfo, startDate,\n endDate, key, metricId);\n if (timeFilteredData !== null && timeFilteredData.length > 0) {\n tempMetricValue = `${Math.max.apply(null, timeFilteredData)}`;\n } else {\n continue;\n }\n }\n tableData.push({\"value\": tempMetricValue, \"type\": \"td\"});\n tableInfo.push(tableData);\n }\n }\n }\n\n }\n let tableHeaders = this.state.tableData.headers;\n let tableData = {\"headers\": tableHeaders, data: tableInfo};\n this.setState({tableData: tableData});\n\n\n }\n\n formCardData(filteredValues, changedDataSource = -1, mlModelId,\n timeFilterApplied = false, startDate = null, endDate = null) {\n const cardInfo = this.formCardData_mlModel(filteredValues, changedDataSource, mlModelId,\n timeFilterApplied, startDate, endDate);\n this.setState({\n cardData: cardInfo\n });\n }\n\n\n render() {\n let isCalculationInProgress = this.props.dataModule.relationship[this.state.modelDataSourceDetails[this.props.dataModule.selectedMLModel]];\n\n let mlModelOption = [];\n let environmentOption = [];\n let selectedMLModel = {};\n let selectedDataSource = {};\n let lastProfilingTime = this.props.dataModule.lastProfilingTime[this.props.dataModule.selectedMlDataSource] ?\n `Your data last profiled at ${this.props.dataModule.lastProfilingTime[this.props.dataModule.selectedMlDataSource]}` : \"--\";\n\n\n if (this.props.dataModule.selectedMLModel !== undefined && this.props.dataModule.selectedMLModel !== \"undefined\") {\n let dataSourceId = this.state.modelDataSourceDetails[this.props.dataModule.selectedMLModel.toString()];\n for (const [key, value] of Object.entries(this.props.dataModule.integrations)) {\n if (dataSourceId !== undefined && key === dataSourceId.toString()) {\n selectedDataSource = {\"label\": value, \"value\": key};\n }\n }\n }\n for (const [key, value] of Object.entries(this.props.monitorModule.mlModelMapping)) {\n mlModelOption.push({\"label\": value, \"value\": key, \"dataSourceId\": this.state.modelDataSourceDetails[key],\n \"dataSrcName\": this.props.dataModule.integrations[this.state.modelDataSourceDetails[key]]});\n if (key === this.props.dataModule.selectedMLModel.toString()) {\n selectedMLModel = {\"label\": value, \"value\": key};\n }\n }\n\n for (const [key, value] of Object.entries(this.props.dataModule.environments)) {\n environmentOption.push({\"label\": value, \"value\": key});\n }\n let dataSetOptions = [];\n let mlDatasetDetails = this.props.monitorModule.mlModelDataSetInfo[selectedMLModel.value];\n let datasetIds =[];\n// if (this.props.dataModule !== undefined && Object.keys(selectedDataSource).length !== 0 && this.state.prefillEnvironment !== undefined && this.state.prefillEnvironment !== -1 && mlDatasetDetails !== undefined ) {\n// for (let metricValues of Object.values(mlDatasetDetails)){\n// Object.keys(metricValues).forEach((modelPrefix) => {\n// let dataSetId=modelPrefix.split(\".\")[2];\n// if (!datasetIds.includes(dataSetId)){\n// datasetIds.push(dataSetId);\n// dataSetOptions.push({\"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n// selectedDataSource.value, dataSetId, this.state.prefillEnvironment, selectedDataSource)});\n// }\n// })\n// }\n// }\n\n let isAfterDataSetUp = (this.props.dataModule.tenantId === -1)\n let chartDataV1 = this.props.dataModule.relationship[this.state.modelDataSourceDetails[this.props.dataModule.selectedMLModel]];\n if (this.props.dataModule !== undefined && Object.keys(selectedDataSource).length !== 0 && this.state.prefillEnvironment !== undefined && this.state.prefillEnvironment !== -1 && mlDatasetDetails !== undefined ) {\n for (let i in chartDataV1){\n let attributeName= chartDataV1[i].name;\n let dataSetId=attributeName.split(METADATA_MAP_KEY_SEPARATOR)[2];\n if (!datasetIds.includes(dataSetId)){\n datasetIds.push(dataSetId);\n dataSetOptions.push({\"value\": dataSetId, \"label\": parseMetaMapping(this.props, DATA_SET,\n selectedDataSource.value, dataSetId, this.state.prefillEnvironment, selectedDataSource)});\n }\n }\n }\n let isInProgress = false;\n if (this.props.monitorModule.mlModelMapping !== undefined && Object.keys(this.props.monitorModule.mlModelMapping).length > 0 &&\n (this.props.monitorModule.mlModelDetails.length === 0 || isCalculationInProgress === undefined)){\n isInProgress = true;\n }\n let initialChipData = [{\n \"key\": this.props.dataModule.selectedMLModel,\n \"value\": this.props.monitorModule.mlModelMapping[this.props.dataModule.selectedMLModel],\n \"type\": DATA_SOURCE\n }];\n\n if(this.state.selectedMLModel!=null){\n selectedMLModel = this.state.selectedMLModel\n }\n return (\n isCalculationInProgress !== undefined ? (\n <>\n { this.renderFilter(environmentOption, mlModelOption, dataSetOptions, selectedDataSource) }\n {\n this.state.hideLastProfiledTime === false ?\n
    \n
    : \"\"\n }\n \n {/* {this.state.isFilterMode === true ? */}\n {/* */}\n {/* : \"\"} */}\n\n {\n this.props.dataModule.selectedMlDataSource !== -1 ?\n <>\n {this.renderCards(this.state.cardData)}\n \n \n : \n }\n />\n \n }\n />\n \n : <>\n }\n />\n }\n />\n \n }\n ) :(\n isInProgress === true ?\n \n
    \n

    \n

    Model profiling is in progress

    \n
    \n \n }\n />\n :\n this.props.dataModule.selectedMLModel === undefined || this.props.dataModule.selectedMLModel === -1 || isAfterDataSetUp ?\n \n
    \n

    \n

    No models configured yet.

    \n

    Please go here and setup your first model.

    \n
    \n \n }\n />\n :\n <>\n }\n />\n \n )\n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, { setMlDataSource, setMLModel,setChipData, setFilteredValues }) (MlModel);","import {call_get_api} from \"./event_handling\";\nimport { ui_service_ip } from \"./ip_details\";\n\nexport function preFetchModelDetails(tenantData, addMLModelMapping, addMLDataSet, addMLAttribute, addMLModel, setMLModel,addModelDetails, store,retries=3) {\n let data ={\"tenant_id\": tenantData}\n \n call_get_api(ui_service_ip, \"model/map\", data).then(\n (result) => {\n\n if (result !== undefined && result !== null) {\n if (store !== undefined){\n store.dispatch(addMLModelMapping(result.model_map));\n store.dispatch(setMLModel(Object.keys(result.model_map)[0]));\n } else {\n addMLModelMapping(result.model_map);\n setMLModel(Object.keys(result.model_map)[0]);\n }\n\n\n let data ={tenant_id: tenantData,isDataset:1}\n call_get_api(ui_service_ip, \"ml-models\",data).then(\n (result) => {\n if (result !== undefined && result !== null) {\n if (store !== undefined) {\n store.dispatch(addModelDetails(result.ml_model));\n } else {\n addModelDetails(result.ml_model)\n }\n this.setState({showLoader:false})\n }\n else {\n if (retries > 0) {\n preFetchModelDetails(tenantData, addMLModelMapping, addMLDataSet, addMLAttribute, addMLModel, setMLModel, store,retries-1)\n }\n }\n \n }\n );\n\n }\n else {\n if (retries > 0) {\n preFetchModelDetails(tenantData, addMLModelMapping, addMLDataSet, addMLAttribute, addMLModel, setMLModel, store,retries-1)\n }\n }\n }\n );\n}\n","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport NavigationHeader from '../../components/navigationHeader';\nimport BreadCrumb from '../../components/breadCrumb';\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport MlModel from './ml_model'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ErrorHandler from '../../components/error_500';\nimport {CopyRightsFooter} from '../../components/copyrights';\nimport { postUIlogs } from \"../../utils/event_handling\";\n\n\nimport { connect } from \"react-redux\";\n\nimport {\n preFetchModelDetails\n} from \"../../utils/modelFetch\";\n\nimport Load from '../../components/loadAction';\n\nimport {\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n setMLModel,\n addModelDetails\n} from \"../../redux/actions\";\n\n\nclass MLProfile extends React.Component {\n\n constructor(props) {\n super(props);\n this.postUIlogs = postUIlogs.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.preFetch = this.preFetch.bind(this)\n this.preFetchModelDetails = preFetchModelDetails.bind(this)\n this.state = {\n errorOccurred: false,\n toastStatus: false,\n closeLastProfiledTime: false,\n showLoader:true,\n }\n }\n\n\n componentDidMount(){\n this.preFetch();\n }\n\n preFetch() {\n let teamID = localStorage.getItem('team_id') \n // // Monitor Model Prefetch : model/map\n // // store the value in redux\n if (!this.props.monitorModule.preFetchModelDetails) {\n this.preFetchModelDetails(\n teamID, this.props.addMLModelMapping,\n this.props.addMLDataSetInfo, this.props.addMLAttributeInfo,\n this.props.addMLModel, this.props.setMLModel, this.props.addModelDetails\n );\n }\n else{\n this.setState({showLoader:false})\n }\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n this.postUIlogs(error, info);\n }\n\n closeToast() {\n this.setState({toastStatus: false});\n }\n\n\n\n render() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n return (\n this.state.errorOccurred ?\n \n :\n <>\n
    \n this.closeToast()} show={this.state.toastStatus} delay={3000} autohide>\n
    \n \n { this.state.toastIcon ?\n :\n \"\"\n }\n \n \n {this.state.toastHeading}\n

    { this.state.toastMsg }

    \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n {this.state.showLoader === true ? : }\n \n \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n\n}\n\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(\n mapStateToProps, {\n addMLModelMapping,\n setMLModel,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n addModelDetails,\n}\n)(MLProfile);","import React from \"react\";\nimport Image from \"../image\";\nimport Table from \"react-bootstrap/Table\";\nimport ListGroup from 'react-bootstrap/ListGroup'\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck} from \"@fortawesome/free-solid-svg-icons\";\nimport {QualdoPlanCycle, QualdoPlanVersions, QUALDO_PAYMENT_STATUS, PAID_PLANS} from \"../../utils/constant\";\nimport {submitUsersPayment} from \"../../utils/event_handling\";\nimport {isUserOnBasicPlan, setBasicPlanInLocalStorage, getCurrentPlanDetailOfUser} from \"../../utils/common_utils\";\n\n\nclass QualdoPlanComponent extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.subscribeToFreePlan = this.subscribeToFreePlan.bind(this);\n this.submitUsersPayment = submitUsersPayment.bind(this);\n\n this.state = {\n free: this.props.details.free,\n starter: this.props.details.starter,\n professional: this.props.details.professional,\n }\n }\n\n\n subscribeToFreePlan(planType) {\n let email = localStorage.getItem(\"emailId\");\n let userName = localStorage.getItem('user_name');\n\n let finalData = {\n \"billing_cycle\": QualdoPlanCycle.MONTHLY,\n \"plan_type\": planType,\n \"email\": email,\n \"user_name\": userName\n }\n\n this.submitUsersPayment(finalData, this.props.setPaymentStatus, this.props.showToast);\n setBasicPlanInLocalStorage();\n }\n\n render() {\n let planDetails = getCurrentPlanDetailOfUser();\n let paymentDue = false;\n let freePlan = true;\n let starterPlan = true;\n let professionalPlan = true;\n let hidePlanCount = 0; \n let freeClass = 'default';\n let starterClass = '';\n let professionalClass = '';\n let planClass = ''\n if (planDetails !== undefined && planDetails !== null) {\n if (planDetails[\"payment_status\"] === QUALDO_PAYMENT_STATUS.PAYMENT_PENDING){\n paymentDue = true;\n }\n }\n\n if (this.state.free === undefined) {\n freePlan = false; \n starterClass = 'default'\n hidePlanCount = hidePlanCount + 1;\n }\n if (this.state.starter === undefined) {\n starterPlan = false;\n professionalClass = 'default'\n hidePlanCount = hidePlanCount + 1;\n\n }\n if (this.state.professional === undefined) {\n professionalPlan = false; \n hidePlanCount = hidePlanCount + 1;\n }\n\n if (hidePlanCount === 1){\n planClass = 'compare-col-price'; \n }\n if (hidePlanCount === 2){\n planClass = 'single-col-price';\n }\n \n\n let paidPlan = false;\n if (PAID_PLANS.includes(planDetails[\"plan_name\"])) {\n paidPlan = true;\n }\n\n let basicPlanUser = isUserOnBasicPlan();\n\n let freePlanTitle = \"Monitoring ML-Model Performance\";\n if (basicPlanUser) {\n freePlanTitle = \"Already in Basic Plan\";\n }\n\n return (\n
    \n {/*
      \n
    • \n
      \n \"Machine\n
      {`${this.state.free.title}`}
      \n
      \n
    • \n
    • \n
      \n \"Machine\n
      {`${this.state.starter.title}`}
      \n
      \n
    • \n
    • \n
      \n \"ML\n
      {`${this.state.professional.title}`}
      \n
      \n
    • \n
    */}\n\n\n \n {freePlan && hidePlanCount !==2?\n \n
    \n \"Machine\n
    {`${this.state.free.title}`}
    \n
    \n
    \n :''}\n {starterPlan && hidePlanCount !==2?\n \n
    \n \"Machine\n
    {`${this.state.starter.title}`}
    \n
    \n
    \n :''}\n {professionalPlan && hidePlanCount !==2?\n \n
    \n \"ML\n
    {`${this.state.professional.title}`}
    \n
    \n
    \n :''}\n
    \n\n \n \n \n \n : ''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''} \n \n \n \n : ''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n {freePlan?\n \n : ''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n {this.props.hideModelInfo ? \"\" : \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n }\n {this.props.hideModelInfo ?\n \n \n {freePlan? \n \n :''}\n {professionalPlan?\n \n :''}\n \n :\n \n \n {freePlan? \n \n :''}\n {professionalPlan?\n \n :''}\n }\n {this.props.hideModelInfo ? \"\" : \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n }\n \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n {/*\n \n \n \n */}\n \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n {freePlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n {freePlan?\n \n \n \n {freePlan?\n \n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n {freePlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n \n :freePlan?\n \n :''\n }\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n \n \n
    \n {freePlan?\n \n
    \n \"Machine\n
    {`${this.state.free.title}`}
    \n
    \n
    \n
    \n \"Machine\n
    {`${this.state.starter.title}`}
    \n
    \n
    \n
    \n \"ML\n
    {`${this.state.professional.title}`}
    \n
    \n
    \n {freePlan?\n \n
    \n {`${this.state.free.details.currency}${this.state.free.price}`}/ mo\n
    \n
    \n
    \n {`${this.state.starter.details.currency}${this.state.starter.price}`}/ mo\n
    \n
    \n
    \n {`${this.state.professional.details.currency}${this.state.professional.price}`}/ mo\n
    \n
    Data Size\n Upto {`${this.state.free.details.data_size}`} GB\n \n Upto {`${this.state.starter.details.data_size}`} GB\n \n Upto {`${this.state.professional.details.data_size}`} GB\n
    \n ML Models\n \n Includes {`${this.state.free.details.ml_models_size}`}\n \n Includes {`${this.state.starter.details.ml_models_size}`}\n \n Includes {`${this.state.professional.details.ml_models_size}`}\n
    Additional data\n :''}\n {starterPlan?\n $52 per 100GB $52 per 100GB
    Additional Models &
    Additional data
    \n :''}\n {starterPlan?\n $9 per model,
    $52 per 100GB
    $9 per model,
    $52 per 100GB
    ML Monitoring Metrics\n \n \n \n \n \n
    DQ Metrics\n \n \n \n \n \n
    Alerts\n \n \n \n \n \n
    Notifications\n \n \n \n \n \n
    APIs\n \n \n \n \n
    Visualizations\n \n \n \n \n \n
    Custom Metrics\n :''}\n {starterPlan?\n \n \n \n \n
    Service & Support\n :''}\n {starterPlan?\n \n :''}\n {professionalPlan?\n \n :''}\n
    Email\n \n \n \n \n \n
    Chat\n :''}\n {starterPlan?\n \n \n \n \n
    \n {\n paymentDue === false && paidPlan === false && freePlan === true?\n \n \n \n \n \n \n \n \n
    \n
    );\n }\n}\n\nexport default QualdoPlanComponent;\n","import React from \"react\";\nimport Image from \"../image\";\n\nclass PaymentSuccess extends React.Component {\n\n render() {\n return (\n
    \n
    \n \"Payment\n

    Your purchase was a success!

    \n

    Your Qualdo™ account has been updated.\n If you need an invoice, visit your payment history.

    \n \n
    \n
    \n );\n }\n}\n\n\nexport default PaymentSuccess;","import React from \"react\";\nimport Image from \"../image\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowRight, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport Modal from \"react-bootstrap/Modal\";\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport {submitPlanChangeRequest } from \"../../utils/event_handling\";\nimport {customDateFormat, capitalizeFirstLetter} from \"../../utils/common_utils\";\nimport {PLAN_ICON_MAPS} from \"../../utils/constant\";\n\nclass PlanDowngradeModal extends React.Component {\n constructor(props) {\n super(props);\n this.handleTab = this.handleTab.bind(this);\n this.goToPreviousScreen = this.goToPreviousScreen.bind(this);\n this.goToNextScreen = this.goToNextScreen.bind(this);\n this.changeActiveClass = this.changeActiveClass.bind(this);\n this.submitData = this.submitData.bind(this);\n this.submitPlanChangeRequest = submitPlanChangeRequest.bind(this);\n this.goToChoosePlan = this.goToChoosePlan.bind(this);\n let mlModels = this.setMlModels();\n this.state = {\n current_tab: \"tab_1\",\n selectedModels: mlModels,\n has_done_1: null,\n has_done_2: null,\n has_done_3: null\n }\n }\n\n setMlModels(){\n let data = {}\n for (var i = 0; i < this.props.data[\"model_list\"].length; i++) {\n let ml_model_id = this.props.data[\"model_list\"][i][\"ml_model_id\"];\n data[ml_model_id] = false;\n }\n return data\n }\n\n submitData(){\n let ml_models_to_be_saved = Object.fromEntries(Object.entries(this.state.selectedModels).filter(([k,v]) => v === true));\n let save_models = [];\n if(Object.keys(ml_models_to_be_saved).length > 0) {\n save_models = Object.keys(ml_models_to_be_saved);\n }\n let current_plan_id = this.props.data[\"current_plan\"][\"qualdo_plan_id\"];\n let requested_plan_id = this.props.data[\"requested_plan\"][\"qualdo_plan_id\"];\n let data = {\"tenant_id\":localStorage.getItem('team_id'),\n \"ml_models_to_be_saved\": save_models,\n \"current_plan_id\": current_plan_id , \"requested_plan_id\": requested_plan_id}\n this.submitPlanChangeRequest(data, this.props.showToast);\n }\n\n handleTab(key) {\n if (key === \"tab_3\"){\n let allowed_models = this.props.data[\"no_of_models_to_select\"];\n let selectedModels = Object.fromEntries(Object.entries(this.state.selectedModels).filter(([k,v]) => v === true));\n if (Object.keys(selectedModels).length > allowed_models){\n this.setState({error_message: true})\n return\n }\n }\n this.setState ({current_tab: key, error_message: false});\n }\n\n goToChoosePlan(){\n this.props.closeDowngradePopup();\n // window.location.href = \"/choose-plan\";\n }\n\n goToPreviousScreen(){\n let current_tab = Number(this.state.current_tab.replace(\"tab_\", ''));\n let has_done_var = \"has_done_\"+current_tab;\n let previous_tab = (current_tab > 1 ? (current_tab - 1) :(current_tab));\n this.setState({current_tab: \"tab_\"+previous_tab, [has_done_var]: null});\n }\n\n goToNextScreen() {\n let current_tab = Number(this.state.current_tab.replace(\"tab_\", ''));\n let has_done_var = \"has_done_\"+current_tab;\n let next_tab = (current_tab < 3 ? (current_tab + 1) :(current_tab));\n if (next_tab === 3){\n let allowed_models = this.props.data[\"no_of_models_to_select\"];\n let selectedModels = Object.fromEntries(Object.entries(this.state.selectedModels).filter(([k,v]) => v === true));\n if (Object.keys(selectedModels).length > allowed_models){\n this.setState({error_message: true});\n return\n }\n }\n this.setState({current_tab: \"tab_\"+next_tab, error_message: false, [has_done_var]: \"has-done\"});\n }\n\n\n changeActiveClass(ml_model_id) {\n this.setState(state => ({\n selectedModels: { ...state.selectedModels, [ml_model_id]: !state.selectedModels[ml_model_id] }\n }))\n }\n\n renderModels() {\n let models = [];\n for (var i = 0; i < this.props.data[\"model_list\"].length; i++) {\n let ml_model_id = this.props.data[\"model_list\"][i][\"ml_model_id\"];\n let is_selected = this.state.selectedModels[ml_model_id];\n let class_name = \"custom-tag\";\n if (is_selected === true){\n class_name = class_name +\" active\";\n }\n const handleClick = () => this.changeActiveClass(ml_model_id);\n models.push(
    {this.props.data[\"model_list\"][i][\"model_name\"]}
    );\n }\n return models;\n }\n\n\n render() {\n let current_plan_details = this.props.data[\"current_plan\"];\n let requested_plan = this.props.data[\"requested_plan\"];\n\n let no_of_models = 0;\n\n let selectedModels = Object.fromEntries(Object.entries(this.state.selectedModels).filter(([k,v]) => v === true));\n\n if( this.props.data[\"model_list\"] !== undefined && this.props.data[\"model_list\"].length > 0){\n no_of_models = this.props.data[\"model_list\"].length;\n }\n let button_name = \"Next\"\n if (this.state.current_tab === \"tab_3\"){\n button_name = \"Submit\";\n }\n let model_not_selected = Object.keys(selectedModels).length === 0;\n\n let error_message = false;\n if (Object.keys(selectedModels).length > this.props.data[\"no_of_models_to_select\"]){\n error_message = true;\n }\n let current_plan_icon = PLAN_ICON_MAPS[current_plan_details[\"plan_name\"]];\n let requested_plan_icon = PLAN_ICON_MAPS[requested_plan[\"plan_name\"]];\n\n let customMetricAlert = false;\n if (requested_plan[\"plan_name\"] === \"free\"){\n customMetricAlert = true;\n }\n\n let current_plan_end_date = customDateFormat(this.props.data[\"current_plan_cycle_end\"])\n let next_billing_date = customDateFormat(this.props.data[\"next_billing_date\"])\n\n return (\n \n \n \n

    Downgrade Subscription

    \n \n
    \n \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \"\"/\n
    \n

    Current plan

    \n

    {capitalizeFirstLetter(current_plan_details[\"plan_name\"])}

    \n
    \n
    \n

    Upto {current_plan_details[\"allowed_datasize\"]} GB Data Size
    Upto {current_plan_details[\"allowed_models\"]} Models

    \n
    Until {current_plan_end_date}
    \n
    \n
    \n
    \n \"\"\n
    \n
    \n
    \n
    \"\"/\n
    \n

    New plan

    \n

    {capitalizeFirstLetter(requested_plan[\"plan_name\"])}

    \n
    \n
    \n

    Upto {requested_plan[\"allowed_datasize\"]} GB Data Size
    Upto {requested_plan[\"allowed_models\"]} Models

    \n
    Starting from {next_billing_date}
    \n
    \n
    \n
    \n
    \n

    Starting from {next_billing_date}

    \n

    {capitalizeFirstLetter(requested_plan[\"plan_name\"])} Plan ({requested_plan[\"plan_cycle\"]})

    \n
    \n
    \n
    Your plan downgrade request will be effective from the next billing cycle.
    \n

    Your account will be switched to the new plan automatically from the next billing cycle.

    \n
    \n
    \n \n {\n no_of_models > 0\n ?\n <>\n

    Configured ML Models

    \n

    You have configured {this.props.data[\"model_list\"].length} models in your Qualdo™ account.\n Up to {requested_plan[\"allowed_models\"]} models can be monitored in your new plan. Please select the models you wish to continue monitoring in the new plan.

    \n \n Please select the models by clicking the [+] plus symbol \n
    \n you wish to continue monitoring in the new plan
    \n\n
    \n {this.renderModels(this.props.data[\"model_list\"])}\n
    \n \n :\n
    \n
    \n \"\"/\n
    \n

    No ML Models configured

    \n

    You have not configured any ML Model in your Qualdo™ account.

    \n
    \n }\n
    \n \n
    \n
    \n \"\"/\n
    \n

    You are requesting to downgrade your Qualdo™ plan

    \n { (no_of_models > 0 || customMetricAlert ===true) &&\n
    \n \n
    \n {\n no_of_models > 0 &&\n

    You have selected {Object.keys(selectedModels).length} model(s) for monitoring in the new plan. Other models with their associated charts and details will be deleted. Model(s) once deleted cannot be recovered.

    \n }\n {\n customMetricAlert === true &&\n

    Custom metrics will be deleted on downgrading the plan.

    \n }\n
    \n
    \n }\n

    The change which you are requesting will be applicable from {next_billing_date}

    \n
    \n
    \n
    \n
    \n
    \n {\n no_of_models > 0 && model_not_selected === true && this.state.current_tab === \"tab_2\"\n ?\n \n

    You have not selected any models for the new plan. Continue Anyway without selecting any existing model.

    \n \n
    \n :\n error_message === true && this.state.current_tab === \"tab_2\"?\n \n

    You have to select only {this.props.data[\"no_of_models_to_select\"]} ML Models based on the new plan.

    \n \n \n
    \n :\n \n \n {\n button_name === \"Next\" ?\n \n :\n \n }\n \n }\n
    \n
    \n );\n }\n}\n\n\nexport default PlanDowngradeModal;\n\n","import React from \"react\";\nimport Tab from \"react-bootstrap/Tab\";\nimport Nav from \"react-bootstrap/Nav\";\nimport BreadCrumb from \"../components/breadCrumb\";\nimport NavigationHeader from \"../components/navigationHeader\";\nimport Image from \"./image\";\nimport {CopyRightsFooter} from \"./copyrights\";\nimport QualdoPlanComponent from \"./planComponents/qualdoPlanComponent\";\nimport {IS_NONE_CHECK, QualdoEditions, QualdoPlanCycle, LOCAL_STORE_KEY} from \"../utils/constant\";\nimport {getApi, getPaymentDetailsTableData} from \"../utils/event_handling\";\nimport Load from \"./loadAction\";\nimport Toast from \"react-bootstrap/Toast\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {getQualdoPlanCycle, isUserOnFreeTrial, toastObj, getFeatureAccess, decryptForLocalUsage, encryptForLocalUsage} from \"../utils/common_utils\";\nimport PaymentSuccess from \"./paymentComponents/payment_success\";\nimport $ from \"jquery\";\nimport PlanDowngradeModal from \"./paymentComponents/planDowngradeModal\";\nimport PlanChangeNotAllowed from \"./paymentComponents/planChangeNotAllowed\";\n\n\nlet BRAND_LOGO = process.env.REACT_APP_CUSTOM_BRAND_LOGO\n\nclass ChoosePlan extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.handlePlanTabChange = this.handlePlanTabChange.bind(this);\n this.setQualdoPlans = this.setQualdoPlans.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.setPaymentStatus = this.setPaymentStatus.bind(this);\n this.getApi = getApi.bind(this);\n this.getQualdoPlanCycle = getQualdoPlanCycle.bind(this);\n this.navigateToPaymentPage = this.navigateToPaymentPage.bind(this);\n let selectedPlanCycle = this.getQualdoPlanCycle();\n this.getQualdoPlanCycle = getQualdoPlanCycle.bind(this);\n this.changePaymentPageDetails = this.changePaymentPageDetails.bind(this);\n this.showErrorMessage = this.showErrorMessage.bind(this);\n this.showDowngradePopup = this.showDowngradePopup.bind(this);\n this.closeDowngradePopup = this.closeDowngradePopup.bind(this);\n this.getPaymentDetailsTableData = getPaymentDetailsTableData.bind(this);\n this.hideErrorMsg = this.hideErrorMsg.bind(this);\n let hideModelInfo = true\n let featureAccess = getFeatureAccess()\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const modelInfo = featureAccess[\"models\"];\n hideModelInfo = modelInfo === false;\n }\n\n\n this.state = {\n srcIsChoosePlan: true,\n hideModelInfo: hideModelInfo,\n error_message: null,\n showDowngradePopup: false,\n downgradePopupData: null,\n toastStatus: false,\n planDetails: null,\n reRenderNavComponent: false,\n paymentSuccess: false,\n qualdoPlanCycle: selectedPlanCycle\n }\n\n }\n\n changePaymentPageDetails(data){\n data[\"hideModelInfo\"] = this.state.hideModelInfo\n this.props.route.history.push({pathname:'/payment', state: data});\n }\n\n setPaymentStatus(paymentSuccess) {\n let reRenderNavComponent = this.state.reRenderNavComponent;\n\n if(paymentSuccess) {\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let warning_message = decrypt_data['warning_message']\n // let warning_message = localStorage.getItem(\"warning_message\");\n \n if (!IS_NONE_CHECK.includes(warning_message) && !['', 'undefined'].includes(warning_message)) {\n /**\n * Setting warning_message as null and encrypting the data\n * Storing in localStorage with updated value\n */\n decrypt_data['warning_message'] = null\n let encrypt_data = encryptForLocalUsage(decrypt_data)\n localStorage.setItem(LOCAL_STORE_KEY,encrypt_data)\n // localStorage.removeItem(\"warning_message\");\n reRenderNavComponent = !reRenderNavComponent;\n }\n }\n\n this.setState({\n paymentSuccess: paymentSuccess,\n reRenderNavComponent: reRenderNavComponent\n });\n }\n\n navigateToPaymentPage(planType) {\n localStorage.setItem(\"src_choose_plan\", \"true\");\n localStorage.setItem(\"qualdoPlan\", planType);\n this.getApi(\"get_payment_page_details\");\n //window.location.href = \"/payment\";\n }\n\n showDowngradePopup(data) {\n this.setState({\"showDowngradePopup\": true, downgradePopupData: data});\n }\n\n closeDowngradePopup(){\n this.setState({\"showDowngradePopup\": false, downgradePopupData: null});\n }\n\n showErrorMessage(message){\n this.setState({\"error_message\": message});\n }\n\n showToast(status, msg, link) {\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastLink: link,\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n });\n\n if (link.trim().length > 0) {\n setTimeout(function () {\n window.location.href = link;\n }, 3000);\n }\n }\n\n closeToast() {\n this.setState({toastStatus: false}, this.getData);\n }\n\n componentDidMount() {\n let edition = localStorage.getItem(\"qualdoEdition\");\n if (edition === undefined || edition === null) {\n edition = QualdoEditions.ML_EDITION;\n }\n\n this.getApi(\"fetchQualdoPlans\", {\"edition\": edition});\n\n \n \n \n \n\n }\n hideErrorMsg() {\n this.setState({error_message: null})\n }\n\n setQualdoPlans(planInfo) {\n this.setState({planDetails: planInfo});\n localStorage.setItem(\"qualdoPlanDetails\", JSON.stringify(planInfo));\n }\n\n handlePlanTabChange(key) {\n this.setState({qualdoPlanCycle: key});\n localStorage.setItem('qualdoPlanCycle', key);\n }\n\n render() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n\n $( document ).ready(function() {\n /* Pricing sections responsive tab active */\n $( \".pricing-table ul\" ).on( \"click\", \"li\", function() {\n var pos = $(this).index()+2;\n $(\"tr\").find('td:not(:eq(0))').hide();\n $('td:nth-child('+pos+')').css('display','table-cell');\n $(\"tr\").find('th:not(:eq(0))').hide();\n $('li').removeClass('active');\n $(this).addClass('active');\n });\n });\n\n let planDetails = this.state.planDetails;\n let freeTrialUser = isUserOnFreeTrial();\n\n\n\n return (\n <>\n {sessionToken === null ? (\n \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n ) : (\n \n )}\n
    \n
    \n this.closeToast()}\n show={this.state.toastStatus} delay={5000} autohide>\n
    \n\n {\n this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastHeading}\n

    {this.state.toastMsg}

    \n
    \n
    \n
    \n
    \n
    \n {\n this.state.showDowngradePopup === true && this.state.downgradePopupData !== null\n &&\n \n }\n\n {\n this.state.error_message !== null\n &&\n \n }\n
    \n \n
    \n
    \n {this.state.paymentSuccess ?\n \n :\n <>\n
    \n

    \n Choose your plan\n

    \n\n {\n freeTrialUser ?\n

    \n You free trail has expired, please subscribe\n
    \n to one of the plans below to continue.\n

    \n :\n ''\n }\n\n\n
    \n\n \n
    \n \n
    \n
    \n \n \n\n {(planDetails === undefined ||\n planDetails === null) ?\n :\n \n }\n\n \n \n\n {(planDetails === undefined ||\n planDetails === null) ?\n :\n \n }\n\n \n \n
    \n
    \n \n }\n\n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default ChoosePlan;\n","import React from \"react\";\n\n\nclass OrderRow extends React.Component {\n\n render() {\n return (\n
    \n {this.props.labelContent}\n
    \n \n {this.props.valueContent}\n \n
    \n
    \n )\n }\n}\n\nexport default OrderRow;\n","import React from \"react\";\nimport Card from \"react-bootstrap/Card\";\nimport OrderRow from \"./orderRow\";\nimport Load from \"../loadAction\";\nimport {QualdoPlanCycle, TERMS_CONDITIONS_LINK} from \"../../utils/constant\";\n\n\nclass OrderDetails extends React.Component {\n\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n disableSubmitBtn: this.props.disableSubmitBtn\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.disableSubmitBtn !== state.disableSubmitBtn) {\n return {\n disableSubmitBtn: props.disableSubmitBtn\n }\n }\n return null;\n }\n\n render() {\n let addOnCostForData = this.props.addOnCostForData;\n // let unitCostForData = this.props.unitCostForData;\n let addOnCostForModel = this.props.addOnCostForModel;\n // let unitCostForModel = this.props.unitCostForModel;\n // let addOnCycles = this.props.addOnCycles;\n\n let planSubscriptionAmount = this.props.totalAmount;\n let totalAmount = planSubscriptionAmount;\n if (addOnCostForData > 0) {\n totalAmount = totalAmount + addOnCostForData;\n }\n if (addOnCostForModel > 0) {\n totalAmount = totalAmount + addOnCostForModel;\n }\n\n if (this.props.remainingAmountFromCurrentPlan > 0){\n totalAmount = totalAmount - this.props.remainingAmountFromCurrentPlan;\n totalAmount = Math.ceil(totalAmount);\n }\n\n let orderSummaryTitle = \"Order Summary\";\n const orderID = this.props.orderID;\n if (orderID !== undefined && orderID !== null) {\n orderSummaryTitle = `${orderSummaryTitle} - #${orderID}`;\n }\n\n let planCostValue = this.props.currencySymbol + this.props.planCost;\n if (this.props.selectedBillingCycle === QualdoPlanCycle.YEARLY) {\n planCostValue = `${planSubscriptionAmount} (${this.props.planCost} x 12)`;\n }\n\n return (\n \n \n

    {orderSummaryTitle}

    \n
    \n\n {\n this.props.loading ?\n \n :\n \n
    \n\n \n\n {\n this.props.planCost > 0 ?\n \n :\n ''\n }\n\n {addOnCostForData > 0 ?\n \n :\n ''\n }\n\n {addOnCostForModel > 0 ?\n \n :\n ''\n }\n\n \n\n \n\n {\n this.props.remainingAmountFromCurrentPlan !== undefined && this.props.remainingAmountFromCurrentPlan > 0 ?\n \n : ''\n }\n
    \n\n
    \n\n
    \n Total amount\n {this.props.currencySymbol}{totalAmount}\n
    \n\n
    \n \n

    \n By confirming this payment, you agree to the\n
    \n Qualdo Terms Service\n

    \n
    \n\n
    \n }\n\n
    \n );\n }\n}\n\nexport default OrderDetails;\n","import React from \"react\";\nimport Card from \"react-bootstrap/Card\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCheck} from \"@fortawesome/free-solid-svg-icons\";\n\n\nclass SubscribedPlan extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {}\n }\n\n render() {\n return (\n \n \n \n \n
    Plan
    \n

    {this.props.planName}

    \n \n \n
    Monthly Limit
    \n
      \n
    • \n upto {`${this.props.dataSize} `} GB Data Size\n
    • \n {this.props.hideModelInfo ? \"\" :
    • \n upto {`${this.props.mlModels}`} Models\n
    • }\n
    \n \n
    \n
    Plan Benefits
    \n
      \n {\n this.props.planBenefits.map((x, index) =>\n (x.name.toLowerCase().includes(\"model\") && this.props.hideModelInfo ? \"\" :
    • \n {\" \"}{x.name}\n
    • )\n )\n }\n
    \n
    \n
    \n );\n }\n}\n\nexport default SubscribedPlan;\n","import React from \"react\";\nimport Card from \"react-bootstrap/Card\";\nimport {QualdoPlanCycle} from \"../../utils/constant\";\n\n\nclass BillingCycle extends React.Component {\n\n render() {\n let srcIsChoosePlan = this.props.srcIsChoosePlan;\n let disableButton = true;\n if (srcIsChoosePlan) {\n disableButton = false;\n }\n return (\n \n \n
    \n
    \n
    \n\n this.props.radioHandler(QualdoPlanCycle.YEARLY)}\n />\n\n \n\n {\n this.props.savedPercentage === null || isNaN(this.props.savedPercentage) ?\n '' :\n \n {`You’re saving ${this.props.savedPercentage}%!`}\n \n }\n\n
    \n\n
    \n this.props.radioHandler(QualdoPlanCycle.MONTHLY)}\n className=\"custom-control-input\"/>\n \n
    \n\n
    \n\n
    \n

    \n {\n this.props.absoluteAmount === null ?\n '' :\n \n \n {`${this.props.currencySymbol}${this.props.absoluteAmount}`}\n \n \n }\n {this.props.currencySymbol}{this.props.totalAmount}\n

    \n \n Total {this.props.cycle === QualdoPlanCycle.YEARLY\n ?\n 'annual'\n :\n QualdoPlanCycle.MONTHLY\n } Bill\n \n
    \n\n\n
    \n
    \n
    \n
    \n Automatically renew my subscription\n
    \n\n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default BillingCycle;\n","import React from \"react\";\n\nclass PaymentSectionHeader extends React.Component {\n\n render() {\n return (\n
    \n

    \n \n {this.props.sectionIndex}\n \n {this.props.sectionTitle}\n

    \n
    \n )\n }\n}\n\nexport default PaymentSectionHeader;\n","import React from \"react\";\nimport Card from \"react-bootstrap/Card\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Form from \"react-bootstrap/Form\";\nimport Image from \"../image\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCreditCard} from \"@fortawesome/free-solid-svg-icons\";\nimport Load from \"../loadAction\";\nimport PaymentSectionHeader from \"./paymentSectionHeader\";\n\n\nclass PaymentDetails extends React.Component {\n\n\n constructor(props, context) {\n super(props, context);\n this.getPaymentCardsAsRadioButtons = this.getPaymentCardsAsRadioButtons.bind(this);\n }\n\n getPaymentCardsAsRadioButtons() {\n return (\n this.props.availableCards.map((card, index) =>\n
    \n\n this.props.radioHandler(card.id)}\n className=\"custom-control-input\"/>\n\n \n
    )\n )\n }\n\n render() {\n if (this.props.availableCards === null) {\n return ();\n }\n\n let hasNoCardDetails = this.props.availableCards.length === 0;\n if (hasNoCardDetails) {\n return (\n <>\n \n\n
    \n \n \n \n \n
    \n \n \n \n
    \n \n \n
    \n \n \n \n
    \n \n \n \n\n \n \n \n Name on Card\n \n \n \n \n\n \n \n \n Card Number\n \n \n \n \n \n Expiration Date\n \n \n \n \n \n CVV Code\n \n \n \n \n\n \n Would you like to make this card your primary payment\n method?\n \n \n \n \n \n\n \n \n \n \n );\n }\n\n\n return (\n <>\n \n\n
    \n \n \n
    \n {this.getPaymentCardsAsRadioButtons()}\n \n
    \n
    \n
    \n
    \n \n )\n }\n}\n\nexport default PaymentDetails;\n","export const ZIP_DATA = {\n \"undefined\":/^\\d{4}$/,\n \"Afghanistan\":/^\\d{4}$/,\n \"Åland Islands\":/^\\d{5}$/,\n \"Albania\":/^\\d{4}$/,\n \"Algeria\":/^\\d{5}$/,\n \"American Samoa\":/^\\d{5}(-{1}\\d{4,6})$/,\n \"Andorra\":/^[Aa][Dd]\\d{3}$/,\n \"Angola\":'None',\n \"Anguilla\":/^[Aa][I][-][2][6][4][0]$/,\n \"Antigua and Barbuda\":'None',\n \"Argentina\":/^\\d{4}|[A-Za-z]\\d{4}[a-zA-Z]{3}$/,\n \"Armenia\":/^\\d{4}$/,\n \"Aruba\":'None',\n \"Ascension island\":/^[Aa][Ss][Cc][Nn]\\s{0,1}[1][Zz][Zz]$/,\n \"Australia\":/^\\d{4}$/,\n \"Austria\":/^\\d{4}$/,\n \"Azerbaijan\":/^[Aa][Zz]\\d{4}$/,\n \"Bahamas\":'None',\n \"Bahrain\":/^\\d{3,4}$/,\n \"Bangladesh\":/^\\d{4}$/,\n \"Barbados\":/^[Aa][Zz]\\d{5}$/,\n \"Belarus\":/^\\d{6}$/,\n \"Belgium\":/^\\\\d{4}$/,\n \"Belize\":'None',\n \"Benin\":'None',\n \"Bermuda\":/^[A-Za-z]{2}\\s([A-Za-z]{2}|\\d{2})$/,\n \"Bhutan\":/^\\d{5}$/,\n \"Bolivia\":/^\\d{4}$/,\n \"Bonaire, Sint Eustatius and Saba\":'None',\n \"Bosnia and Herzegovina\":/^\\d{5}$/,\n \"Botswana\":'None',\n \"Brazil\":/^\\d{5}-\\d{3}$/,\n \"British Antarctic Territory\":/^[Bb][Ii][Qq]{2}\\s{0,1}[1][Zz]{2}$/,\n \"British Indian Ocean Territory\":/^[Bb]{2}[Nn][Dd]\\s{0,1}[1][Zz]{2}$/,\n \"British Virgin Islands\":/^[Vv][Gg]\\d{4}$/,\n \"Brunei\":/^[A-Za-z]{2}\\d{4}$/,\n \"Bulgaria\":/^\\d{4}$/,\n \"Burkina Faso\":'None',\n \"Burundi\":'None',\n \"Cambodia\":/^\\d{5}$/,\n \"Cameroon\":'None',\n \"Canada\":/^(?=[^DdFfIiOoQqUu\\d\\s])[A-Za-z]\\d(?=[^DdFfIiOoQqUu\\d\\s])[A-Za-z]\\s{0,1}\\d(?=[^DdFfIiOoQqUu\\d\\s])[A-Za-z]\\d$/,\n \"Cape Verde\":/^\\d{4}$/,\n \"Cayman Islands\":/^[Kk][Yy]\\d[-\\s]{0,1}\\d{4}$/,\n \"Central African Republic\":'None',\n \"Chad\":/^\\d{5}$/,\n \"Chile\":/^\\d{7}\\s(\\d{3}-\\d{4})$/,\n \"China\":/^\\d{6}$/,\n \"Christmas Island\":/^\\d{4}$/,\n \"Cocos (Keeling) Island\":/^\\d{4}$/,\n \"Colombia\":/^\\d{6}$/,\n \"Comoros\":'None',\n \"Congo (Brazzaville)\":'None',\n \"Congo, Democratic Republic\":/^[Cc][Dd]$/,\n \"Cook Islands\":'None',\n \"Costa Rica\":/^\\d{4,5}$/,\n \"Côte d'Ivoire (Ivory Coast)\":'None',\n \"Croatia\":/^\\d{5}$/,\n \"Cuba\":/^\\d{5}$/,\n \"Curaçao\":'None',\n \"Cyprus\":/^\\d{4}$/,\n \"Czech Republic\":/^\\d{5}\\s(\\d{3}\\s\\d{2})$/,\n \"Denmark\":/^\\d{4}$/,\n \"Djibouti\":'None',\n \"Dominica\":'None',\n \"Dominican Republic\":/^\\d{5}$/,\n \"East Timor\":'None',\n \"Ecuador\":/^\\d{6}$/,\n \"El Salvador\":/^1101$/,\n \"Egypt\":/^\\d{5}$/,\n \"Equatorial Guinea\":'None',\n \"Eritrea\":'None',\n \"Estonia\":/^\\d{5}$/,\n \"Ethiopia\":/^\\d{4}$/,\n \"Falkland Islands\":/^[Ff][Ii][Qq]{2}\\s{0,1}[1][Zz]{2}$/,\n \"Faroe Islands\":/^\\d{3}$/,\n \"Fiji\":'None',\n \"Finland\":/^\\d{5}$/,\n \"France\":/^\\d{5}$/,\n \"French Guiana\":/^973\\d{2}$/,\n \"French Polynesia\":/^987\\d{2}$/,\n \"French Southern and Antarctic Territories\":'None',\n \"Gabon\":/^\\\\d{2}\\\\s[a-zA-Z-_ ]\\s\\d{2}$/,\n \"Gambia\":'None',\n \"Georgia\":/^\\d{4}$/,\n \"Germany\":/^\\d{5}$/,\n \"Ghana\":'None',\n \"Gibraltar\":/^[Gg][Xx][1]{2}\\s{0,1}[1][Aa]{2}$/,\n \"Greece\":/^\\d{3}\\s{0,1}\\d{2}$/,\n \"Greenland\":/^\\d{4}$/,\n \"Grenada\": 'None',\n \"Guadeloupe\":/^971\\d{2}$/,\n \"Guam\":/^\\d{5}$/,\n \"Guatemala\":/^\\d{5}$/,\n \"Guernsey\":/^[A-Za-z]{2}\\d\\s{0,1}\\d[A-Za-z]{2}$/,\n \"Guinea\":\"None\",\n \"Guinea Bissau\":/^\\d{4}$/,\n \"Guyana\":'None',\n \"Haiti\":/^\\d{4}$/,\n \"Heard and McDonald Islands\":/^\\d{4}$/,\n \"Honduras\":/^\\d{5}$/,\n \"Hong Kong\":'None',\n \"Hungary\":/^\\d{4}$/,\n \"Iceland\":/^\\d{3}$/,\n \"India\":/^\\d{6}$/,\n \"Indonesia\":/^\\d{5}$/,\n \"Iran\":/^\\d{5}-\\d{5}$/,\n \"Iraq\":/^\\d{5}$/,\n \"Ireland\":'None',\n \"Isle of Man\":/^[Ii[Mm]\\d{1,2}\\s\\d\\[A-Z]{2}$/,\n \"Israel\":/^\\b\\d{5}(\\d{2})?$/,\n \"Italy\":/^\\d{5}$/,\n \"Jamaica\":/^\\d{2}$/,\n \"Japan\":/^\\d{7}\\s(\\d{3}-\\d{4})$/,\n \"Jersey\":/^[Jj][Ee]\\d\\s{0,1}\\d[A-Za-z]{2}$/,\n \"Jordan\":/^\\d{5}$/,\n \"Kazakhstan\":/^\\d{6}$/,\n \"Kenya\":/^\\d{5}$/,\n \"Kiribati\":'None',\n \"Korea, North\":'None',\n \"Korea, South\":/^\\d{6}\\s(\\d{3}-\\d{3})$/,\n \"Kosovo\":/^\\d{5}$/,\n \"Kuwait\":/^\\d{5}$/,\n \"Kyrgyzstan\":/^\\d{6}$/,\n \"Latvia\":/^[Ll][Vv][- ]{0,1}\\d{4}$/,\n \"Laos\":/^\\d{5}$/,\n \"Lebanon\":/^\\d{4}\\s{0,1}\\d{4}$/,\n \"Lesotho\":/^\\d{3}$/,\n \"Liberia\":/^\\d{4}$/,\n \"Libya\":/^\\d{5}$/,\n \"Liechtenstein\":/^\\d{4}$/,\n \"Lithuania\":/^[Ll][Tt][- ]{0,1}\\d{5}$/,\n \"Luxembourg\":/^\\d{4}$/,\n \"Macau\":'None',\n \"Macedonia\":/^\\d{4}$/,\n \"Madagascar\":/^\\d{3}$/,\n \"Malawi\":'None',\n \"Maldives\":/^\\d{4,5}$/,\n \"Malaysia\":/^\\\\d{5}$/,\n \"Mali\":'None',\n \"Malta\":/^[A-Za-z]{3}\\s{0,1}\\d{4}$/,\n \"Marshall Islands\":/^\\d{5}$/,\n \"Mauritania\":'None',\n \"Mauritius\":'None',\n \"Martinique\":/^972\\d{2}$/,\n \"Mayotte\":/^976\\d{2}$/,\n \"Micronesia\":/^\\\\d{5}$/,\n \"Mexico\":/^\\d{5}$/,\n \"Moldova\":/^[Mm][Dd][- ]{0,1}\\d{4}$/,\n \"Monaco\":/^980\\d{2}$/,\n \"Mongolia\":/^\\d{5}$/,\n \"Montenegro\":/^\\d{5}$/,\n \"Montserrat\":/^[Mm][Ss][Rr]\\s{0,1}\\d{4}$/,\n \"Morocco\":/^\\d{5}$/,\n \"Mozambique\":/^\\d{4}$/,\n \"Myanmar\":/^\\d{5}$/,\n \"Namibia\":/^\\d{5}$/,\n \"Nauru\":'None',\n \"Nepal\":/^\\d{5}$/,\n \"Netherlands\":/^\\d{4}\\s{0,1}[A-Za-z]{2}$/,\n \"New Caledonia\":/^988\\d{2}$/,\n \"New Zealand\":/^\\d{4}$/,\n \"Nicaragua\":/^\\d{5}$/,\n \"Niger\":/^\\d{4}$/,\n \"Nigeria\":/^\\d{6}$/,\n \"Niue\":'None',\n \"Norfolk Island\":/^\\d{4}$/,\n \"Northern Mariana Islands\":/^\\d{5}$/,\n \"Norway\":/^\\d{4}$/,\n \"Oman\":/^\\d{3}$/,\n \"Pakistan\":/^\\d{5}$/,\n \"Palau\":/^\\d{5}$/,\n \"Panama\":/^\\d{6}$/,\n \"Papua New Guinea\":/^\\d{3}$/,\n \"Paraguay\":/^\\d{4}$/,\n \"Peru\":/^\\d{5}$/,\n \"Philippines\":/^\\d{4}$/,\n \"Pitcairn Islands\":/^[Pp][Cc][Rr][Nn]\\s{0,1}[1][Zz]{2}$/,\n \"Poland\":/^\\d{2}[- ]{0,1}\\d{3}$/,\n \"Portugal\":/^\\d{4}[- ]{0,1}\\d{3}$/,\n \"Puerto Rico\":/^\\d{5}$/,\n \"Qatar\":'None',\n \"Réunion\":/^974\\d{2}$/,\n \"Romania\":/^\\d{6}$/,\n \"Russia\":/^\\d{6}$/,\n \"Saint Barthélemy\":/^97133$/,\n \"Saint Helena\":/^[Ss][Tt][Hh][Ll]\\s{0,1}[1][Zz]{2}$/,\n \"Saint Kitts and Nevis\":'None',\n \"Saint Lucia\":'None',\n \"Saint Martin\":/^97150$/,\n \"Saint Pierre and Miquelon\":/^97500$/,\n \"Saint Vincent and the Grenadines\":/^[Vv][Cc]\\d{4}$/,\n \"San Marino\":/^4789\\d$/,\n \"Sao Tome and Principe\":'None',\n \"Saudi Arabia\":/^\\d{5}(-{1}\\d{4})?$/,\n \"Senegal\":/^\\d{5}$/,\n \"Serbia\":/^\\d{5}$/,\n \"Seychelles\":'None',\n \"Sint Maarten\":'None',\n \"Sierra Leone\":'None',\n \"Singapore\":/^\\d{6}$/,\n \"Slovakia\":/^\\d{5}\\s(\\d{3}\\s\\d{2})$/,\n \"Slovenia\":/^([Ss][Ii][- ]{0,1}){0,1}\\d{4}$/,\n \"Solomon Islands\":'None',\n \"Somalia\":'None',\n \"South Africa\":/^\\d{4}$/,\n \"South Georgia and the South Sandwich Islands\":/^[Ss][Ii][Qq]{2}\\s{0,1}[1][Zz]{2}$/,\n \"South Korea\":/^\\d{6}\\s(\\d{3}-\\d{3})$/,\n \"Spain\":/^\\d{5}$/,\n \"Sri Lanka\":/^\\d{5}$/,\n \"Sudan\":/^\\d{5}$/,\n \"Suriname\":'None',\n \"Swaziland\":/^[A-Za-z]\\d{3}$/,\n \"Sweden\":/^\\d{3}\\s*\\d{2}$/,\n \"Switzerland\":/^\\d{4}$/,\n \"Svalbard and Jan Mayen\":/^\\d{4}$/,\n \"Syria\":'None',\n \"Taiwan\":/^\\d{5}$/,\n \"Tajikistan\":/^\\d{6}$/,\n \"Tanzania\":'None',\n \"Thailand\":/^\\d{5}$/,\n \"Togo\":'None',\n \"Tokelau\":'None',\n \"Tonga\":'None',\n \"Trinidad and Tobago\":/^\\d{6}$/,\n \"Tristan da Cunha\":/^[Tt][Dd][Cc][Uu]\\s{0,1}[1][Zz]{2}$/,\n \"Tunisia\":/^\\d{4}$/,\n \"Turkey\":/^\\d{5}$/,\n \"Turkmenistan\":/^\\d{6}$/,\n \"Turks and Caicos Islands\":/^[Tt][Kk][Cc][Aa]\\s{0,1}[1][Zz]{2}$/,\n \"Tuvalu\":'None',\n \"Uganda\":'None',\n \"Ukraine\":/^\\d{5}$/,\n \"United Arab Emirates\":'None',\n \"United Kingdom\":/^[A-Z]{1,2}[0-9R][0-9A-Z]?\\s*[0-9][A-Z-[CIKMOV]]{2}/,\n \"United States\":/^\\b\\d{5}\\b(?:[- ]{1}\\d{4})?$/,\n \"Uruguay\":/^\\d{5}$/,\n \"U.S. Virgin Islands\":/^\\d{5}$/,\n \"Uzbekistan\":/^\\d{3} \\d{3}$/,\n \"Vanuatu\":'None',\n \"Vatican\":/^120$/,\n \"Venezuela\":/^\\d{4}(\\s[a-zA-Z]{1})?$/,\n \"Vietnam\":/^\\d{6}$/,\n \"Wallis and Futuna\":/^986\\d{2}$/,\n \"Yemen\":'None',\n \"Zambia\":/^\\d{5}$/,\n \"Zimbabwe\":'None'\n }\n\n export const COUNTRY = [\n { label:'Afghanistan',value:'Afghanistan' },\n { label:'Åland Islands',value:'Åland Islands' },\n { label:'Albania',value:'Albania' },\n { label:'Algeria',value:'Algeria' },\n { label:'American Samoa',value:'American Samoa' },\n { label:'Andorra',value:'Andorra' },\n { label:'Angola',value:'Angola' },\n { label:'Anguilla',value:'Anguilla' },\n { label:'Antigua and Barbuda',value:'Antigua and Barbuda' },\n { label:'Argentina',value:'Argentina' },\n { label:'Armenia',value:'Armenia' },\n { label:'Aruba',value:'Aruba' },\n { label:'Ascension island',value:'Ascension island' },\n { label:'Australia',value:'Australia' },\n { label:'Austria',value:'Austria' },\n { label:'Azerbaijan',value:'Azerbaijan' },\n { label:'Bahamas',value:'Bahamas' },\n { label:'Bahrain',value:'Bahrain' },\n { label:'Bangladesh',value:'Bangladesh' },\n { label:'Barbados',value:'Barbados' },\n { label:'Belarus',value:'Belarus' },\n { label:'Belgium',value:'Belgium' },\n { label:'Belize',value:'Belize' },\n { label:'Benin',value:'Benin' },\n { label:'Bermuda',value:'Bermuda' },\n { label:'Bhutan',value:'Bhutan' },\n { label:'Bolivia',value:'Bolivia' },\n { label:'Bonaire, Sint Eustatius and Saba',value:'Bonaire, Sint Eustatius and Saba' },\n { label:'Bosnia and Herzegovina',value:'Bosnia and Herzegovina' },\n { label:'Botswana',value:'Botswana' },\n { label:'Brazil',value:'Brazil' },\n { label:'British Antarctic Territory',value:'British Antarctic Territory' },\n { label:'British Indian Ocean Territory',value:'British Indian Ocean Territory' },\n { label:'British Virgin Islands',value:'British Virgin Islands' },\n { label:'Brunei',value:'Brunei' },\n { label:'Bulgaria',value:'Bulgaria' },\n { label:'Burkina Faso',value:'Burkina Faso' },\n { label:'Burundi',value:'Burundi' },\n { label:'Cambodia',value:'Cambodia' },\n { label:'Cameroon',value:'Cameroon' },\n { label:'Canada',value:'Canada' },\n { label:'Cape Verde',value:'Cape Verde' },\n { label:'Cayman Islands',value:'Cayman Islands' },\n { label:'Central African Republic',value:'Central African Republic' },\n { label:'Chad',value:'Chad' },\n { label:'Chile',value:'Chile' },\n { label:'China',value:'China' },\n { label:'Christmas Island',value:'Christmas Island' },\n { label:'Cocos (Keeling) Island',value:'Cocos (Keeling) Island' },\n { label:'Colombia',value:'Colombia' },\n { label:'Comoros',value:'Comoros' },\n { label:'Congo (Brazzaville)',value:'Congo (Brazzaville)' },\n { label:'Congo, Democratic Republic',value:'Congo, Democratic Republic' },\n { label:'Cook Islands',value:'Cook Islands' },\n { label:'Costa Rica',value:'Costa Rica' },\n { label:'Croatia',value:'Croatia' },\n { label:'Cuba',value:'Cuba' },\n { label:'Curaçao',value:'Curaçao' },\n { label:'Cyprus',value:'Cyprus' },\n { label:'Czech Republic',value:'Czech Republic' },\n { label:'Denmark',value:'Denmark' },\n { label:'Djibouti',value:'Djibouti' },\n { label:'Dominica',value:'Dominica' },\n { label:'Dominican Republic',value:'Dominican Republic' },\n { label:'East Timor',value:'East Timor' },\n { label:'Ecuador',value:'Ecuador' },\n { label:'El Salvador',value:'El Salvador' },\n { label:'Egypt',value:'Egypt' },\n { label:'Equatorial Guinea',value:'Equatorial Guinea' },\n { label:'Eritrea',value:'Eritrea' },\n { label:'Estonia',value:'Estonia' },\n { label:'Ethiopia',value:'Ethiopia' },\n { label:'Falkland Islands',value:'Falkland Islands' },\n { label:'Faroe Islands',value:'Faroe Islands' },\n { label:'Fiji',value:'Fiji' },\n { label:'Finland',value:'Finland' },\n { label:'France',value:'France' },\n { label:'French Guiana',value:'French Guiana' },\n { label:'French Polynesia',value:'French Polynesia' },\n { label:'French Southern and Antarctic Territories',value:'French Southern and Antarctic Territories' },\n { label:'Gabon',value:'Gabon' },\n { label:'Gambia',value:'Gambia' },\n { label:'Georgia',value:'Georgia' },\n { label:'Germany',value:'Germany' },\n { label:'Germany',value:'Germany' },\n { label:'Germany',value:'Germany' },\n { label:'Ghana',value:'Ghana' },\n { label:'Gibraltar',value:'Gibraltar' },\n { label:'Greece',value:'Greece' },\n { label:'Greenland',value:'Greenland' },\n { label:'Grenada',value:'Grenada' },\n { label:'Guadeloupe',value:'Guadeloupe' },\n { label:'Guam',value:'Guam' },\n { label:'Guatemala',value:'Guatemala' },\n { label:'Guernsey',value:'Guernsey' },\n { label:'Guinea',value:'Guinea' },\n { label:'Guinea Bissau',value:'Guinea Bissau' },\n { label:'Guyana',value:'Guyana' },\n { label:'Haiti',value:'Haiti' },\n { label:'Heard and McDonald Islands',value:'Heard and McDonald Islands' },\n { label:'Honduras',value:'Honduras' },\n { label:'Hong Kong',value:'Hong Kong' },\n { label:'Hungary',value:'Hungary' },\n { label:'Iceland',value:'Iceland' },\n { label:'India',value:'India' },\n { label:'Indonesia',value:'Indonesia' },\n { label:'Iran',value:'Iran' },\n { label:'Iraq',value:'Iraq' },\n { label:'Ireland',value:'Ireland' },\n { label:'Isle of Man',value:'Isle of Man' },\n { label:'Israel',value:'Israel' },\n { label:'Italy',value:'Italy' },\n { label:'Jamaica',value:'Jamaica' },\n { label:'Japan',value:'Japan' },\n { label:'Jersey',value:'Jersey' },\n { label:'Jordan',value:'Jordan' },\n { label:'Kazakhstan',value:'Kazakhstan' },\n { label:'Kenya',value:'Kenya' },\n { label:'Kiribati',value:'Kiribati' },\n { label:'Korea, North',value:'Korea, North' },\n { label:'Korea, South',value:'Korea, South' },\n { label:'Kosovo',value:'Kosovo' },\n { label:'Kuwait',value:'Kuwait' },\n { label:'Kyrgyzstan',value:'Kyrgyzstan' },\n { label:'Latvia',value:'Latvia' },\n { label:'Laos',value:'Laos' },\n { label:'Lebanon',value:'Lebanon' },\n { label:'Lesotho',value:'Lesotho' },\n { label:'Liberia',value:'Liberia' },\n { label:'Libya',value:'Libya' },\n { label:'Liechtenstein',value:'Liechtenstein' },\n { label:'Lithuania',value:'Lithuania' },\n { label:'Luxembourg',value:'Luxembourg' },\n { label:'Macau',value:'Macau' },\n { label:'Macedonia',value:'Macedonia' },\n { label:'Madagascar',value:'Madagascar' },\n { label:'Malawi',value:'Malawi' },\n { label:'Maldives',value:'Maldives' },\n { label:'Malaysia',value:'Malaysia' },\n { label:'Mali',value:'Mali' },\n { label:'Malta',value:'Malta' },\n { label:'Marshall Islands',value:'Marshall Islands' },\n { label:'Mauritania',value:'Mauritania' },\n { label:'Mauritius',value:'Mauritius' },\n { label:'Martinique',value:'Martinique' },\n { label:'Mayotte',value:'Mayotte' },\n { label:'Micronesia',value:'Micronesia' },\n { label:'Mexico',value:'Mexico' },\n { label:'Micronesia',value:'Micronesia' },\n { label:'Moldova',value:'Moldova' },\n { label:'Monaco',value:'Monaco' },\n { label:'Mongolia',value:'Mongolia' },\n { label:'Montenegro',value:'Montenegro' },\n { label:'Montserrat',value:'Montserrat' },\n { label:'Morocco',value:'Morocco' },\n { label:'Mozambique',value:'Mozambique' },\n { label:'Myanmar',value:'Myanmar' },\n { label:'Namibia',value:'Namibia' },\n { label:'Nauru',value:'Nauru' },\n { label:'Nepal',value:'Nepal' },\n { label:'Netherlands',value:'Netherlands' },\n { label:'New Caledonia',value:'New Caledonia' },\n { label:'New Zealand',value:'New Zealand' },\n { label:'Nicaragua',value:'Nicaragua' },\n { label:'Niger',value:'Niger' },\n { label:'Nigeria',value:'Nigeria' },\n { label:'Niue',value:'Niue' },\n { label:'Norfolk Island',value:'Norfolk Island' },\n { label:'Northern Mariana Islands',value:'Northern Mariana Islands' },\n { label:'Norway',value:'Norway' },\n { label:'Oman',value:'Oman' },\n { label:'Pakistan',value:'Pakistan' },\n { label:'Palau',value:'Palau' },\n { label:'Panama',value:'Panama' },\n { label:'Papua New Guinea',value:'Papua New Guinea' },\n { label:'Paraguay',value:'Paraguay' },\n { label:'Peru',value:'Peru' },\n { label:'Philippines',value:'Philippines' },\n { label:'Pitcairn Islands',value:'Pitcairn Islands' },\n { label:'Poland',value:'Poland' },\n { label:'Portugal',value:'Portugal' },\n { label:'Portugal',value:'Portugal' },\n { label:'Puerto Rico',value:'Puerto Rico' },\n { label:'Qatar',value:'Qatar' },\n { label:'Réunion',value:'Réunion' },\n { label:'Romania',value:'Romania' },\n { label:'Russia',value:'Russia' },\n { label:'Saint Barthélemy',value:'Saint Barthélemy' },\n { label:'Saint Helena',value:'Saint Helena' },\n { label:'Saint Kitts and Nevis',value:'Saint Kitts and Nevis' },\n { label:'Saint Lucia',value:'Saint Lucia' },\n { label:'Saint Martin',value:'Saint Martin' },\n { label:'Saint Pierre and Miquelon',value:'Saint Pierre and Miquelon' },\n { label:'Saint Vincent and the Grenadines',value:'Saint Vincent and the Grenadines' },\n { label:'San Marino',value:'San Marino' },\n { label:'Sao Tome and Principe',value:'Sao Tome and Principe' },\n { label:'Saudi Arabia',value:'Saudi Arabia' },\n { label:'Senegal',value:'Senegal' },\n { label:'Serbia',value:'Serbia' },\n { label:'Serbia',value:'Serbia' },\n { label:'Seychelles',value:'Seychelles' },\n { label:'Sint Maarten',value:'Sint Maarten' },\n { label:'Sierra Leone',value:'Sierra Leone' },\n { label:'Singapore',value:'Singapore' },\n { label:'Singapore',value:'Singapore' },\n { label:'Singapore',value:'Singapore' },\n { label:'Slovakia',value:'Slovakia' },\n { label:'Slovenia',value:'Slovenia' },\n { label:'Solomon Islands',value:'Solomon Islands' },\n { label:'Somalia',value:'Somalia' },\n { label:'South Africa',value:'South Africa' },\n { label:'South Georgia and the South Sandwich Islands',value:'South Georgia and the South Sandwich Islands' },\n { label:'South Korea',value:'South Korea' },\n { label:'Spain',value:'Spain' },\n { label:'Sri Lanka',value:'Sri Lanka' },\n { label:'Sudan',value:'Sudan' },\n { label:'Suriname',value:'Suriname' },\n { label:'Swaziland',value:'Swaziland' },\n { label:'Sweden',value:'Sweden' },\n { label:'Switzerland',value:'Switzerland' },\n { label:'Svalbard and Jan Mayen',value:'Svalbard and Jan Mayen' },\n { label:'Syria',value:'Syria' },\n { label:'Taiwan',value:'Taiwan' },\n { label:'Tajikistan',value:'Tajikistan' },\n { label:'Tanzania',value:'Tanzania' },\n { label:'Thailand',value:'Thailand' },\n { label:'Togo',value:'Togo' },\n { label:'Tokelau',value:'Tokelau' },\n { label:'Tonga',value:'Tonga' },\n { label:'Trinidad and Tobago',value:'Trinidad and Tobago' },\n { label:'Tristan da Cunha',value:'Tristan da Cunha' },\n { label:'Tunisia',value:'Tunisia' },\n { label:'Turkey',value:'Turkey' },\n { label:'Turkmenistan',value:'Turkmenistan' },\n { label:'Turks and Caicos Islands',value:'Turks and Caicos Islands' },\n { label:'Tuvalu',value:'Tuvalu' },\n { label:'Uganda',value:'Uganda' },\n { label:'Ukraine',value:'Ukraine' },\n { label:'United Arab Emirates',value:'United Arab Emirates' },\n { label:'United Kingdom',value:'United Kingdom' },\n { label:'United States',value:'United States' },\n { label:'Uruguay',value:'Uruguay' },\n { label:'U.S. Virgin Islands',value:'U.S. Virgin Islands' },\n { label:'Uzbekistan',value:'Uzbekistan' },\n { label:'Vanuatu',value:'Vanuatu' },\n { label:'Vatican',value:'Vatican' },\n { label:'Venezuela',value:'Venezuela' },\n { label:'Vietnam',value:'Vietnam' },\n { label:'Wallis and Futuna',value:'Wallis and Futuna' },\n { label:'Yemen',value:'Yemen' },\n { label:'Zambia',value:'Zambia' },\n { label:'Zimbabwe',value:'Zimbabwe' }];\n\n","import React from \"react\";\nimport Card from \"react-bootstrap/Card\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Form from \"react-bootstrap/Form\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faAddressCard,faCheck} from \"@fortawesome/free-solid-svg-icons\";\nimport Button from \"react-bootstrap/Button\";\nimport { Formik,ErrorMessage} from 'formik';\nimport * as yup from 'yup';\nimport PaymentSectionHeader from \"./paymentSectionHeader\";\nimport { ZIP_DATA, COUNTRY } from \"../../utils/billingAddressConstant\";\nimport Select from 'react-select';\n\nclass BillingAddress extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n companyName: '', \n addressLine1:'',\n addressLine2: '',\n country: '', \n zipCode: '',\n state:'',\n city: '',\n sectionTitle: \"Personal + Business Contact Details\",\n optionscountry:COUNTRY,\n\n }\n \n this.getAddressRadioButtons = this.getAddressRadioButtons.bind(this);\n }\n\n onSubmit(){\n\n }\n\n getAddressRadioButtons() {\n return (\n this.props.billingAddresses.map((address) =>\n \n this.props.addressSelectionHandler(address.billing_address_id)}\n />\n \n )\n );\n }\n\n\n render() {\n if (this.props.canShowAddBillingAddress) {\n let initialValues=this.state;\n let addressSchema = yup.object({\n companyName: yup.string().min(3,\"Company must be at least 3 characters\").required(\"Company is a required field\"),\n addressLine1: yup.string().min(3,\"Address Line must be at least 3 characters\").required(\"Address Line is a required field\"),\n city: yup.string().required(\"City is a required field\").matches(/^[A-Za-z ]+$/,\"City should contains letters only\").min(3,\"City must be at least 3 characters\"),\n state: yup.string().required(\"State is a required field\").matches(/^[A-Za-z ]+$/,\"State should contains letters only\").min(3,\"State must be at least 3 characters\"),\n country: yup.string().required(\"Country is a required field\"),\n zipCode: yup.string().required(\"Zip Code is a required field\")\n .test(\n \"Invalid Zipcode\",\n function test(value){\n let country = this.parent.country\n if(country === undefined || country === 'Select Country'){\n const message = \"Select a country\";\n return this.createError({ message: message});\n }\n let regex = ZIP_DATA[country]\n return regex.test(value)\n } \n ),\n });\n return (\n <>\n \n
    \n \n \n \n \n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n
    \n \n \n \n Company Name *\n {\n handleChange(\"companyName\")(value);\n this.props.saveNewAddress(\"company_name\", value.target.value, isValid);\n }}\n value={values.companyName}\n onBlur={handleBlur}\n isInvalid={errors.companyName && touched.companyName}\n placeholder=\"Abc Company\"/>\n \n { touched.companyName && errors.companyName }\n \n \n \n \n\n \n \n \n Address line 1 *\n {\n handleChange(\"addressLine1\")(value);\n this.props.saveNewAddress(\"address_line_1\", value.target.value, isValid);\n }}\n onBlur={handleBlur}\n isInvalid={errors.addressLine1 && touched.addressLine1}\n placeholder=\"123 Abc Street\"/>\n \n { touched.addressLine1 && errors.addressLine1 }\n \n \n \n \n \n Address line 2 (optional)\n {\n handleChange(\"addressLine2\")(value);\n this.props.saveNewAddress(\"address_line_2\", value.target.value);\n }}\n name=\"addressLine2\"\n placeholder=\"#1\"/>\n \n \n \n\n \n \n \n City *\n {\n handleChange(\"city\")(value);\n this.props.saveNewAddress(\"city\",value.target.value, isValid);\n }}\n isInvalid={errors.city && touched.city}\n name=\"city\"\n placeholder=\"Columbus\"/>\n \n { touched.city && errors.city }\n \n \n \n \n \n State/Province/Region *\n {\n handleChange(\"state\")(value);\n this.props.saveNewAddress(\"state\", value.target.value, isValid);\n }}\n name=\"state\"\n placeholder=\"Kentucky\"/>\n \n { touched.state && errors.state }\n \n \n \n \n\n \n\n \n \n Country * \n */}\n
    \n \n
    \n
    \n

    Email me the following Notifications

    \n {this.state.emailsubscription.map(function (emailsubscriptiondata, i) {\n return (\n
    \n
    \n \n \n
    \n
    \n
    \n )\n }, this)}\n
    \n\n

    \n by submitting this form you agree  \n Privacy Policy -\n Cookie Policy\n

    \n\n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n \n \n \n

    You have been successfully unsubscribed!

    \n

    Thank you. Your Subscription preferance have been updated.

    \n
    \n
    \n
    \n \n \n \n \n \n\n \n );\n }\n}\n\nexport default Unsubscribe;","import {powerbi_service_ip,console_ip} from \"../utils/ip_details\";\nimport {getProtocol,toastObj} from \"../utils/common_utils\";\nimport {browserHistory} from 'react-router';\n//removeLocalStorageKeys\nimport $ from \"jquery\";\nfunction pbi_mapping_dataset_table(input_data){\n let headers=[\"Dataset Name\", \"Created Date\", \"Refreshed Date\",\"Actions\"];\n let final_op=[];\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n const pipeline_data = input_data[i];\n row.push({\"value\": pipeline_data[\"name\"], \"type\": \"td\"})\n row.push({ \"value\": pipeline_data['created_date'].substring(4), \"type\": \"td\" });\n row.push({ \"value\": pipeline_data['refreshed_date'].substring(4), \"type\": \"td\" });\n // row.push({ \"value\": pipeline_data['actions'], \"type\": \"td\" });\n pipeline_data[\"index\"] = i;\n row.push({\"pbimapping\": pipeline_data, \"type\": \"component\"})\n final_op.push(row)\n }\n let table_data ={\"headers\": headers, \"data\": final_op}\n return table_data;\n} \n\nfunction pbi_error_dashboard_table(input_data){\n\n let headers=[\"Name\",\"Errors\", \"Quality Check Status\",\"Refreshed in DRX\", \"Last QC Time\", \"Actions\"];\n let final_op=[];\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n const pipeline_data = input_data[i];\n row.push({\"value\": pipeline_data[\"name\"], \"type\": \"td\"})\n row.push({ \"value\": pipeline_data['quality_status'], \"type\": \"td\" });\n // row.push({\"value\": pipeline_data[\"type\"], \"type\": \"td\"})\n row.push({ \"value\": pipeline_data['processing_status'], \"type\": \"td\" });\n // row.push({ \"value\": pipeline_data['owner'], \"type\": \"td\" });\n row.push({ \"value\": pipeline_data['refresh_time'].substring(4), \"type\": \"td\" });\n row.push({ \"value\": pipeline_data['processedtime'].substring(4), \"type\": \"td\" });\n // row.push({ \"value\": pipeline_data['actions'], \"type\": \"td\" });\n pipeline_data[\"index\"] = i;\n row.push({\"pbierrordashboard\": pipeline_data, \"type\": \"component\"})\n final_op.push(row)\n }\n let table_data ={\"headers\": headers, \"data\": final_op}\n\n return table_data;\n}\n\n\nfunction pbi_error_dataset_table(input_data){\n\n let headers=[\"Dataset Name\", \"Dataset Summary\",\"Quality Status\",\"Reports & Dashboards\"];\n let final_op=[];\n for(let i=0; i < input_data.length; i++) {\n let row=[];\n const pipeline_data = input_data[i];\n row.push({\"value\": pipeline_data[\"name\"], \"type\": \"td\"})\n // row.push({\"value\": pipeline_data[\"type\"], \"type\": \"td\"})\n row.push({ \"value\": pipeline_data['quality_status'], \"type\": \"td\" });\n row.push({ \"value\": pipeline_data['processedtime'], \"type\": \"td\" });\n row.push({\"pbierrordataset\": pipeline_data, \"type\": \"component\"})\n final_op.push(row)\n }\n let table_data ={\"headers\": headers, \"data\": final_op}\n return table_data;\n}\n\n// function call_Update_api(ip, end_point,data, token=\"\") {\n// let user_id = localStorage.getItem('user_id');\n// let team_id = localStorage.getItem('team_id');\n// if (token !== \"\" && token !== null) {\n// const item = JSON.parse(token);\n// const now = new Date();\n// if (now.getTime() > item.expiry) {\n// removeLocalStorageKeys();\n// window.location = '/';\n// }\n// token = item.value;\n// }\n// let protocol = getProtocol(ip);\n// return fetch(protocol+'//'+ip+'/'+end_point, {\n// method: 'PUT',\n// body: JSON.stringify(data),\n// headers:{ 'Content-Type': 'application/json', 'authToken':token, 'userId':user_id, 'teamId':team_id}\n// }).then((response) => response.json()).then((responseData) => {\n// return responseData;\n// }).catch( error => console.log(end_point, \"- failed\"));\n// }\n\nfunction call_post_api(ip, end_point,data) {\n let session = localStorage.getItem('sessionToken');\n //let session;\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (session !== \"\" && session !== null) {\n const item = JSON.parse(session);\n session = item.value;\n }\n // session = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NTI4ODQ4MjIsImV4cCI6MTY1Mjg5MzgyMiwiaXNzIjoic2F0dXJhbTppYW0iLCJlbWFpbCI6ImJlMGY3MTgzMjcxYTVlYjA2MzUyOGE3ZjU3MWRhZWI5NDYwYWM3YmU3MGQ0ZWRhOCIsInVzZXJfaWQiOjkyNiwidGVhbV9pZCI6MTIxOH0.kAV7qIgwWka6R-LL0MAWM0SsS51BXbRcA_PUTRjxqWs';\n\n // session = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NjA3Mjc3MjMsImV4cCI6MTY2MDczNjcyMywiaXNzIjoic2F0dXJhbTppYW0iLCJlbWFpbCI6InByb2R1Y3RfZGV2QHNhdHVyYW0uY29tIiwidXNlcl9pZCI6MSwidGVhbV9pZCI6MX0.y2obyGRkmt-GQNjwS1Mg9JRY10iRMJ0XlfpzpoqFgvs';\n\n // data = { \n // \"tenantId\": 1,\n // \"userId\":1\n // };\n\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'POST',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'authToken':session, \"api-type\": \"qualdo_db_auth\", 'userId':user_id, 'teamId':team_id }\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.log(end_point, \"- failed\"));\n}\n\n\nfunction call_get_api(ip, end_point,data) {\n let session = localStorage.getItem('sessionToken');\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n if (session !== \"\" && session !== null) {\n const item = JSON.parse(session);\n // const now = new Date();\n // if (now.getTime() > item.expiry) {\n // localStorage.removeItem(\"sessionToken\");\n // window.location = '/';\n // }\n session = item.value;\n }\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'GET',\n mode: 'cors',\n headers:{ 'data':JSON.stringify(data), 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':session, \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.log(end_point, \"- failed\"));\n}\n\nexport function showToast(status, msg, link) {\n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastLink: link,\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n });\n}\n\nexport function closeToast() {\n this.setState({toastStatus: false}, \"\");\n}\n\n\n// function call_iam_get_api(ip, end_point,data, token=\"\") {\n// let session = localStorage.getItem('sessionToken');\n// let user_id = localStorage.getItem('user_id');\n// let team_id = localStorage.getItem('team_id');\n// if (session !== \"\" && session !== null) {\n// const item = JSON.parse(session);\n// const now = new Date();\n// // if (now.getTime() > item.expiry) {\n// // localStorage.removeItem(\"sessionToken\");\n// // window.location = '/';\n// // }\n// session = item.value;\n// }\n// let protocol = getProtocol(ip);\n// return fetch(protocol+'//'+ip+'/'+end_point, {\n// method: 'GET',\n// headers:{ 'data':JSON.stringify(data), 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':session, \"userId\": user_id, \"teamId\": team_id}\n// }).then((response) => response.json()).then((responseData) => {\n// return responseData;\n// }).catch( error => console.log(end_point, \"- failed\"));\n// }\n\nfunction call_update_api(ip, end_point,data) {\n let session = localStorage.getItem('sessionToken');\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n let token;\n if (session !== \"\" && session !== null) {\n const item = JSON.parse(session);\n // const now = new Date();\n // if (now.getTime() > item.expiry) {\n // removeLocalStorageKeys();\n // window.location = '/';\n // }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n return fetch(protocol+'//'+ip+'/'+end_point, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers:{ 'Content-Type': 'application/json', 'api-type':'qualdo_db_auth', 'authToken':token,\n \"userId\": user_id, \"teamId\": team_id}\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch( error => console.log(end_point, \"- failed\"));\n}\n\nexport function CallAPI(api_name,data={}) {\n let session = localStorage.getItem(\"sessionToken\");\n if (session !== \"\" && session !== null) {\n const item = JSON.parse(session);\n session = item.value;\n }\n switch(api_name) {\n case \"powerbi_status_update\":\n call_post_api(powerbi_service_ip, 'integration_mapping', data, session).then((response) => {\n if (response.code === 200) {\n return true;\n } \n });\n break;\n case \"token\":\n let powerbi_error_dashboard_data = {};\n powerbi_error_dashboard_data.user_qualdo_auth_token = session;\n powerbi_error_dashboard_data.email = localStorage.getItem(\"emailId\")\n call_get_api(powerbi_service_ip, \"powerbi_token\", powerbi_error_dashboard_data).then((response) =>{\n localStorage.setItem(\"pb_auth_token\",response.token) \n })\n break;\n case \"save_mapping\":\n call_post_api(powerbi_service_ip, 'powerbi_mapping',data, session).then((response) => {\n if (response.code === 200) {\n return true;\n } \n });\n break;\n case \"power_user_check\":\n call_post_api(powerbi_service_ip, 'power_user_check', this.state.login_track_data, session).then((response) => {\n if (response.code === 200) {\n return true;\n } \n });\n break;\n case \"DRXMappingDataset\":\n // let d = {\"tenantId\":1218, \"userId\":926, \"storage_details\":false}\n let d = {\"tenantId\":localStorage.getItem('team_id'), \"userId\":localStorage.getItem('user_id'), \"storage_details\":false}\n call_post_api(console_ip, \"power_bi_dataset_info\", d , session).then((response) => {\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n\n this.setState({\"drx_dataset\": response.qualdo_response});\n \n if(this.state.drx_dataset !== null) {\n var envcheck = [];\n let env = this.state.drx_dataset;\n let envoptions = []; \n var newArray = env.filter(function (el) {\n if(envcheck.indexOf(el.env_id) === -1) {\n envcheck.push(el.env_id);\n let envselectobj = {};\n envselectobj.value = el.env_id;\n envselectobj.label = el.env_name;\n envoptions.push(envselectobj);\n return el;\n }\n return el;\n });\n console.log(newArray);\n \n this.setState({mapping_env_options:envoptions});\n }\n\n \n }\n })\n break;\n case \"savedashboard\":\n if(this.state.pbiuserselectedlist!==null){\n \n const saveSetupData = { \n \"user_qualdo_auth_token\": session,\n \"dashboard\":this.state.pbiuserselectedlist\n }\n call_post_api(powerbi_service_ip, 'powerbi_setup', saveSetupData, session).then((response) => {\n if (response.code === 200) {\n localStorage.setItem('setupmessage',1);\n browserHistory.push(\"/pbi-report\"); \n // this.props.showToast(\"alert-success\", \"Environment added successfully\", '')\n // let tenant_id = localStorage.getItem('team_id')\n // let key = `environments_${tenant_id}`\n // sessionStorage.removeItem(key);\n // let env_data = response.env_data;\n // this.setState({showButton: false});\n // this.props.updateEnvironmentList(env_data);\n } else {\n //this.props.showToast(\"alert-danger\", response.message, '')\n }\n });\n } \n break;\n case \"getMappingDataset\":\n\n // var map_data = {\"code\":200,\"datasets\":[{\"created_date\":\"Thu, 19 May 2022 07:47:18 GMT\",\"id\":3,\"name\":\"test\",\"refreshed_date\":\"Thu, 19 May 2022 07:47:18 GMT\",\"status\":1},{\"created_date\":\"Thu, 19 May 2022 07:47:18 GMT\",\"id\":3,\"name\":\"test\",\"refreshed_date\":\"Thu, 19 May 2022 07:47:18 GMT\",\"status\":0}]}\n // let powerbidataset_data_table_data = pbi_mapping_dataset_table(map_data.datasets);\n // this.setState({mapping_dataset:powerbidataset_data_table_data}) \n // return;;\n\n let powerbi_error_dashboard_get_data = {};\n powerbi_error_dashboard_get_data.user_qualdo_auth_token = session;\n call_get_api(powerbi_service_ip, \"powerbi_mapping_dataset\", powerbi_error_dashboard_get_data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let powerbidataset_data_table_data = pbi_mapping_dataset_table(response.datasets);\n this.setState({mapping_dataset:powerbidataset_data_table_data}) \n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n }) \n break;\n case \"savedashboardstatus\":\n const inputData = { \"id\":this.state.powerbiactionid,\n \"actions\": this.state.powerbiactionflag,\n \"user_qualdo_auth_token\":session\n }\n call_update_api(powerbi_service_ip, \"powerbi_error_dashboard\", inputData, session).then((response) => {\n if (response === undefined) {\n this.setState({powerbistausupdatetoast: \"failed\"});\n this.showToast(\"alert-success\", \"Dashboard Action Status Not Updated\", \"\");\n } else if (response.code === 200) {\n this.setState({powerbistausupdatetoast: \"sucess\"});\n this.showToast(\"alert-success\", \"Dashboard Action Status Updated\", \"\");\n } else {\n this.setState({powerbistausupdatetoast: \"failed\"});\n this.showToast(\"alert-success\", \"Dashboard Action Status Not Updated\", \"\");\n }\n });\n break;\n case \"powerbierrordashboardsetup\":\n let powerbierrordashboardsetupdata = {\n \"user_qualdo_auth_token\":session \n }\n // let json1 = {\"code\":200,\"error_report\":[{\"actions\":\"1\",\"embed_url\":\"https://app.powerbi.com/reportEmbed?reportId=046955d1-6b2e-44c7-81a3-f16a86d0c667&appId=7200c4ae-1949-4818-ac6d-d57d46ddd9d7&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwidXNhZ2VNZXRyaWNzVk5leHQiOnRydWV9fQ%3d%3d\",\"error_count\":null,\"id\":215,\"name\":\"data_prediction\",\"powerbi_dashboard_id\":\"a0cee5bc-05d7-4808-8f98-2f2c169c1c76\",\"processedtime\":\"Tue, 06 Sep 2022 10:16:43 GMT\",\"processing_status\":\"in-progress\",\"quality_status\":null,\"redirection\":null,\"refresh_time\":\"Tue, 06 Sep 2022 10:19:25 GMT\",\"type\":\"Report\"}],\"message\":\"Sucess\"}\n // let json = {\"code\":200,\"error_report\":[],\"message\":\"Sucess\"}\n // let adashboardissue = [];\n // $.each(json1.error_report, function(i, item) {\n // adashboardissue.push(item.powerbi_dashboard_id);\n // });\n // // this.setState({alreadyselecteditems:adashboardissue});\n // this.setState({setupdata:json,alreadyselecteditems:[\"a0cee5bc-05d7-4808-8f98-2f2c169c1c76\"]});\n // return;\n\n call_get_api(powerbi_service_ip, \"powerbi_error_dashboard\", powerbierrordashboardsetupdata).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let adashboardissue = [];\n $.each(response.error_report, function(i, item) {\n adashboardissue.push(item.powerbi_dashboard_id);\n });\n this.setState({alreadyselecteditems:adashboardissue});\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n break;\n case \"powerbierrconnector\":\n let getpowerbiconnectorsdataerr = { \n \"tenantId\": localStorage.getItem('team_id'),\n \"userId\":localStorage.getItem('user_id'),\n \"email\":localStorage.getItem(\"emailId\")\n };\n call_post_api(console_ip, \"power_bi_connector_details\", getpowerbiconnectorsdataerr).then((response) =>{\n // call_get_api(\"pbi-qualdo.eastus.cloudapp.azure.com/\", \"ui-api-service/powerbi_token\", getpowerbiconnectorsdata).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n console.error(\"Unable to reach console server\");\n } else if (response.code === 200) {\n\n let newArrayall = response.datasources.filter(function (el) {\n return el.added > 0 || el.added === 0 \n });\n\n let newArray = response.datasources.filter(function (el) {\n return el.added > 0 \n });\n if(newArray.length === 0 && newArrayall.length === 0){\n $(\"#powerbi_setup_flow\").removeClass(\"d-none\");\n $(\"#powerbi_error_flow\").addClass(\"d-none\");\n $(\"#btn_powerbi_configure\").removeClass(\"d-none\");\n $(\"#btn_powerbi_setup\").addClass(\"d-none\");\n $(\"#powerbi_err_heading\").html(\"No Power BI connection\"); \n $(\"#powerbi_err_desc\").html(\"The PowerBI connection does not exist. Using the configure button, set up your Power BI connection to Qualdo™.\");\n }\n else if(newArray.length === 0 && newArrayall.length > 0){\n $(\"#powerbi_setup_flow\").removeClass(\"d-none\");\n $(\"#powerbi_error_flow\").addClass(\"d-none\");\n $(\"#btn_powerbi_configure\").addClass(\"d-none\");\n $(\"#btn_powerbi_setup\").removeClass(\"d-none\");\n $(\"#powerbi_err_heading\").html(\"Setup Power BI connection\"); \n $(\"#powerbi_err_desc\").html(\"Set up your Power BI connection to Monitoring Status.\");\n }\n else {\n $(\"#powerbi_error_flow\").removeClass(\"d-none\");\n $(\"#powerbi_setup_flow\").addClass(\"d-none\");\n }\n } \n });\n break; \n case \"powerbierrordashboard\":\n// let powerbidataset_data = [\n// {\n// \"id\": \"1\",\n// \"powerbi_id\":\"345483c0-2cf7-4f88-8f26-27dd95ea418f\",\n// \"name\": \"star_prediction\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"Error\",\n// \"processingstatus\": \"Completed\",\n// \"refreshtime\": \"01/04/2022 09:00 GMT\",\n// \"processedtime\": \"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=345483c0-2cf7-4f88-8f26-27dd95ea418f&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\":3,\n// \"redirection\":{\"datasource\":{\"value\":\"1340\",\"label\":\"Error\"},\"datasource_name\":\"Error\",\"dataset\":[{\"value\":\"27613\",\"label\":\"star_prediction\"}],\"attribute\":[{\"value\":\"58839\",\"label\":\"prediction\",\"datasetName\": \"star_prediction\"}]},\n// \"actions\":1\n// },\n// {\n// \"id\": \"2\",\n// \"powerbi_id\":\"f570af22-e820-4a5d-aaaa-3eaf2ac72b44\",\n// \"name\": \"star_response\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"Error\",\n// \"processingstatus\": \"Completed\",\n// \"refreshtime\": \"01/04/2022 10:00 GMT\",\n// \"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=f570af22-e820-4a5d-aaaa-3eaf2ac72b44&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\":3,\n// \"redirection\":{\"datasource\":{\"value\":\"1340\",\"label\":\"Error\"},\"datasource_name\":\"Error\",\"dataset\":[{\"value\":\"27614\",\"label\":\"star_response\"}],\"attribute\":[{\"value\":\"58844\",\"label\":\"id\",\"datasetName\": \"star_response\"}]},\n// \"actions\":1\n\n// },\n// {\n// \"id\": \"3\",\n// \"powerbi_id\":\"b737d562-3edc-4cd8-91f6-27f4790c6caf\",\n// \"name\": \"star_serving\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"Error\",\n// \"processingstatus\": \"Completed\",\n// \"refreshtime\": \"01/04/2022 10:00 GMT\",\n// \"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=b737d562-3edc-4cd8-91f6-27f4790c6caf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\":1,\n// \"redirection\":{\"datasource\":{\"value\":\"1340\",\"label\":\"Error\"},\"datasource_name\":\"Error\",\"dataset\":[{\"value\":\"27615\",\"label\":\"star_serving_data\"}],\"attribute\":[{\"value\":\"58848\",\"label\":\"url\",\"datasetName\": \"star_serving_data\"},{\"value\":\"58849\",\"label\":\"probability\",\"datasetName\": \"star_serving_data\"}]},\n// \"actions\":1\n// },\n// {\n// \"id\": \"4\",\n// \"powerbi_id\":\"85c95e51-5f48-4ac2-b31f-c784f778c7cf\",\n// \"name\": \"star_training\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"No Error\",\n// \"processingstatus\": \"Completed\",\n// \"refreshtime\": \"01/04/2022 10:00 GMT\",\n// \"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=85c95e51-5f48-4ac2-b31f-c784f778c7cf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\":1,\n// \"redirection\":{\"datasource\":{\"value\":\"1340\",\"label\":\"Error\"},\"datasource_name\":\"Error\",\"dataset\":[{label: \"star_training_data\", value: \"27616\"}],\"attribute\":[]},\n// \"actions\":1\n// },\n// {\n// \"id\": \"5\",\n// \"powerbi_id\":\"0958dd9f-d193-49e2-a519-b5d0c6db1dc6\",\n// \"name\": \"firstbbreport\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"No Error\",\n// \"processingstatus\": \"Mapping Not Found\",\n// \"refreshtime\": \"01/04/2022 10:00 GMT\",\n// \"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=0958dd9f-d193-49e2-a519-b5d0c6db1dc6&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\":1,\n// \"redirection\":{\"datasource\":{\"value\":\"1340\",\"label\":\"Error\"},\"datasource_name\":\"Error\",\"dataset\":[{label: \"star_training_data\", value: \"27616\"}],\"attribute\":[]},\n// \"actions\":1\n// }\n// ,\n// {\n// \"id\": \"6\",\n// \"powerbi_id\":\"2d398b69-4310-4c84-9db4-2be1aca1245a\",\n// \"name\": \"order_report_icon\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"No Error\",\n// \"processingstatus\": \"In Progress\",\n// \"refreshtime\": \"01/04/2022 10:00 GMT\",\n// \"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=2d398b69-4310-4c84-9db4-2be1aca1245a&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\", \"error_count\":1,\n// \"redirection\":{\"datasource_id\":\"\",\"datasource_name\":\"\",\"dataset\":[{\"id\":\"test\",\"label\":\"test\"}],\"attribute\":[{\"id\":\"test\",\"label\":\"test\"}]},\n// \"actions\":1\n// }\n// ,\n// {\n// \"id\": \"6\",\n// \"powerbi_id\":\"85c95e51-5f48-4ac2-b31f-c784f778c7cf\",\n// \"name\": \"Sales & Returns Sample v201912.pbix\",\n// \"type\": \"Report\",\n// \"owner\": \"rajan\",\n// \"qualitystatus\": \"No Error\",\n// \"processingstatus\": \"Failed Authentication\",\n// \"refreshtime\": \"01/04/2022 10:00 GMT\",\n// \"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=85c95e51-5f48-4ac2-b31f-c784f778c7cf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"actions\":1\n// }\n// ]; \n// let json = {\"code\":200,\"error_report\":[{\"id\":291,\"powerbi_dashboard_id\":\"3a1cca32-65fd-48df-971d-d541f2414454\",\"name\":\"CustomerProfitabilitySample\",\"type\":\"Report\",\"quality_status\":\"Error\",\"processing_status\":\"Completed\",\"processedtime\":\"2022-09-1909:55:27\",\"embed_url\":\"https://app.powerbi.com/reportEmbed?reportId=3a1cca32-65fd-48df-971d-d541f2414454&appId=9eaf0f85-7676-4cf9-97c8-203db0db2215&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwidXNhZ2VNZXRyaWNzVk5leHQiOnRydWUsInNraXBRdWVyeURhdGFTYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFQYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFFeHBvcnRUbyI6dHJ1ZX19\",\"refresh_time\":\"2022-09-1909:57:52\",\"actions\":1,\"error_count\":\"\",\"redirection\":1,\"integration_name\":\"Power_Bi_connectors\",\"workspace_name\":\"tempname\"},{\"id\":291,\"powerbi_dashboard_id\":\"3a1cca32-65fd-48df-971d-d541f2414454\",\"name\":\"CustomerProfitabilitySample\",\"type\":\"Report\",\"quality_status\":\"error\",\"processing_status\":\"in-progress\",\"processedtime\":\"2022-09-1909:55:27\",\"embed_url\":\"https://app.powerbi.com/reportEmbed?reportId=3a1cca32-65fd-48df-971d-d541f2414454&appId=9eaf0f85-7676-4cf9-97c8-203db0db2215&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwidXNhZ2VNZXRyaWNzVk5leHQiOnRydWUsInNraXBRdWVyeURhdGFTYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFQYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFFeHBvcnRUbyI6dHJ1ZX19\",\"refresh_time\":\"2022-09-1909:57:52\",\"actions\":1,\"error_count\":\"1\",\"redirection\":1,\"integration_name\":\"Power_Bi_connectors\",\"workspace\":\"tempname\"}],\"message\":\"Sucess\"}\n// // let json = {\"code\":200,\"error_report\":[],\"message\":\"Sucess\"}\n// let powerbidashboard_data_table_data = pbi_error_dashboard_table(json.error_report);\n// this.setState({powerbidashboard_data:powerbidashboard_data_table_data})\n\n// if(json.error_report.length === 0){\n// $(\"#powerbi_setup_flow\").removeClass(\"d-none\");\n// $(\"#powerbi_error_flow\").addClass(\"d-none\");\n// $(\"#btn_powerbi_configure\").hide();\n// $(\"#btn_powerbi_setup\").show();\n// $(\"#powerbi_err_heading\").html(\"Setup Power BI connection\"); \n// $(\"#powerbi_err_desc\").html(\"Set up your Power BI connection to Monitoring Status.\");\n// }\n\n// return;\n\n let powerbi_error_dashboard_data2 = {\n \"user_qualdo_auth_token\":session \n }\n call_get_api(powerbi_service_ip, \"powerbi_error_dashboard\", powerbi_error_dashboard_data2).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let powerbidashboard_data_table_data = pbi_error_dashboard_table(response.error_report);\n if(response.error_report.length === 0){\n $(\"#powerbi_setup_flow\").removeClass(\"d-none\");\n $(\"#powerbi_error_flow\").addClass(\"d-none\");\n $(\"#btn_powerbi_configure\").hide();\n $(\"#btn_powerbi_setup\").show();\n $(\"#powerbi_err_heading\").html(\"Setup Power BI connection\"); \n $(\"#powerbi_err_desc\").html(\"Set up your Power BI connection to Monitoring Status.\");\n }\n this.setState({powerbidashboard_data:powerbidashboard_data_table_data})\n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n break; \n case \"powerbierrordataset\":\n // call_get_api(ui_service_ip, \"pipeline_trigger\", data).then((response) =>{\n // if (response === undefined) {\n // this.setState({errorOccurred: true});\n // } else if (response.code === 200) {\n // let res=pbi_error_dashboard_table(response.pipeline_trigger);\n // this.setState({pipeline_data:res})\n // this.setState({pipeline_title:\"AVAILABLE PIPELINE TRIGGERS\"})\n // } else if(response.code === 403) {\n // localStorage.removeItem(\"sessionToken\");\n // window.location = '/';\n // } else {\n // this.setState({errorOccurred: true});\n // }\n // })\n\n// let powerbidashboard_data = [\n// {\n// \t\t\"id\": \"1\",\n// \"powerbi_id\":\"345483c0-2cf7-4f88-8f26-27dd95ea418f\",\n// \t\t\"name\": \"star_prediction\",\n// \t\t\"type\": \"csv\",\n// \t\t\"owner\": \"rajan\",\n// \t\t\"qualitystatus\": \"Error\",\n// \t\t\"processingstatus\": \"Completed\",\n// \t\t\"refreshed_date\": \"01/04/2022 09:00 GMT\",\n// \t\t\"processedtime\": \"01/04/2022 10:00 GMT\",\n// \t\t\"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=345483c0-2cf7-4f88-8f26-27dd95ea418f&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\": 3,\n// \"redirection\": {\n// \t\t\t\"datasource\": {\n// \t\t\t\t\"value\": \"1340\",\n// \t\t\t\t\"label\": \"Error\"\n// \t\t\t},\n// \t\t\t\"datasource_name\": \"Error\",\n// \t\t\t\"dataset\": [{\n// \t\t\t\t\"value\": \"27613\",\n// \t\t\t\t\"label\": \"star_prediction\"\n// \t\t\t}],\n// \t\t\t\"attribute\": [{\n// \t\t\t\t\"value\": \"58839\",\n// \t\t\t\t\"label\": \"prediction\",\n// \t\t\t\t\"datasetName\": \"star_prediction\"\n// \t\t\t}]\n// \t\t} \n// },\n// \t{\n// \t\t\"id\": \"2\",\n// \t\t\"name\": \"star_response\",\n// \"powerbi_id\":\"f570af22-e820-4a5d-aaaa-3eaf2ac72b44\",\n// \t\t\"type\": \"json\",\n// \t\t\"owner\": \"rajan\",\n// \t\t\"qualitystatus\": \"Error\",\n// \t\t\"processingstatus\": \"Not yet started\",\n// \t\t\"refreshed_date\": \"01/04/2022 10:00 GMT\",\n// \t\t\"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=f570af22-e820-4a5d-aaaa-3eaf2ac72b44&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \t\t\"error_count\": 3,\n// \t\t\"redirection\": {\n// \t\t\t\"datasource\": {\n// \t\t\t\t\"value\": \"1340\",\n// \t\t\t\t\"label\": \"Error\"\n// \t\t\t},\n// \t\t\t\"datasource_name\": \"Error\",\n// \t\t\t\"dataset\": [{\n// \t\t\t\t\"value\": \"27614\",\n// \t\t\t\t\"label\": \"star_response\"\n// \t\t\t}],\n// \t\t\t\"attribute\": [{\n// \t\t\t\t\"value\": \"58844\",\n// \t\t\t\t\"label\": \"id\",\n// \t\t\t\t\"datasetName\": \"star_response\"\n// \t\t\t}]\n// \t\t}\n// \t},\n// {\n// \t\t\"id\": \"3\",\n// \t\t\"name\": \"star_serving\",\n// \"powerbi_id\":\"b737d562-3edc-4cd8-91f6-27f4790c6caf\",\n// \t\t\"type\": \"csv\",\n// \t\t\"owner\": \"rajan\",\n// \t\t\"qualitystatus\": \"Error\",\n// \t\t\"processingstatus\": \"In Progress\",\n// \t\t\"refreshed_date\": \"01/04/2022 10:00 GMT\",\n// \t\t\"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=b737d562-3edc-4cd8-91f6-27f4790c6caf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \t\t\"error_count\": 1,\n// \t\t\"redirection\": {\n// \t\t\t\"datasource\": {\n// \t\t\t\t\"value\": \"1340\",\n// \t\t\t\t\"label\": \"Error\"\n// \t\t\t},\n// \t\t\t\"datasource_name\": \"Error\",\n// \t\t\t\"dataset\": [{\n// \t\t\t\t\"value\": \"27615\",\n// \t\t\t\t\"label\": \"star_serving_data\"\n// \t\t\t}],\n// \t\t\t\"attribute\": [{\n// \t\t\t\t\"value\": \"58848\",\n// \t\t\t\t\"label\": \"url\",\n// \t\t\t\t\"datasetName\": \"star_serving_data\"\n// \t\t\t}, {\n// \t\t\t\t\"value\": \"58849\",\n// \t\t\t\t\"label\": \"probability\",\n// \t\t\t\t\"datasetName\": \"star_serving_data\"\n// \t\t\t}]\n// \t\t}\n// },\n// {\n// \t\t\"id\": \"4\",\n// \"powerbi_id\":\"85c95e51-5f48-4ac2-b31f-c784f778c7cf\",\n// \t\t\"name\": \"star_training\",\n// \t\t\"type\": \"json\",\n// \t\t\"owner\": \"rajan\",\n// \t\t\"qualitystatus\": \"No Error\",\n// \t\t\"processingstatus\": \"Failed Authentication\",\n// \t\t\"refreshed_date\": \"01/04/2022 10:00 GMT\",\n// \t\t\"processedtime\":\"01/04/2022 10:00 GMT\",\n// \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=85c95e51-5f48-4ac2-b31f-c784f778c7cf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n// \"error_count\":1,\n// \"redirection\":{\"datasource\":{\"value\":\"1340\",\"label\":\"Error\"},\"datasource_name\":\"Error\",\"dataset\":[{label: \"star_training_data\", value: \"27616\"}],\"attribute\":[]}\t}\n// ];\n// // let powerbidashboard_data = [];\n// let powerbidataset_data_table_data1 = pbi_error_dataset_table(powerbidashboard_data);\n// this.setState({powerbidataset_data:powerbidataset_data_table_data1}) \n// return; \n\n \n// let response3 = {\n// \"code\": 200,\n// \"datasets\": [\n// {\n// \"embed_url\": \"https://app.powerbi.com/reportEmbed?reportId=e4f6ea5f-4b6e-40e1-bcb4-43ec905dbb5a&groupId=49def082-8ae7-4477-ae3c-360a87716cbf&w=2&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwidXNhZ2VNZXRyaWNzVk5leHQiOnRydWUsInNraXBRdWVyeURhdGFTYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFQYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFFeHBvcnRUbyI6dHJ1ZX19\",\n// \"id\": 29,\n// \"name\": \"serving_dataset_a\",\n// \"processedtime\": \"Thu, 29 Sep 2022 09:16:15 GMT\",\n// \"quality_status\": \"No Error\",\n// \"redirection\": {'tests':'tsetstes'},\n// \"refreshed_date\": \"Wed, 18 May 2022 06:16:29 GMT\",\n// \"powerbi_dashboard_id\":\"12589dde-d290-4c14-8181-ef888908ccd5\"\n// }\n// ]\n// };\n// let powerbidataset_data_table_data3 = pbi_error_dataset_table(response3.datasets);\n// this.setState({powerbidataset_data:powerbidataset_data_table_data3}) \n// return;\n\n\n\n\n let powerbi_error_dataser_data = {};\n powerbi_error_dataser_data.user_qualdo_auth_token = session;\n call_get_api(powerbi_service_ip, \"powerbi_error_dataset\", powerbi_error_dataser_data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n let powerbidataset_data_table_data = pbi_error_dataset_table(response.datasets);\n this.setState({powerbidataset_data:powerbidataset_data_table_data}) \n } else if(response.code === 403) {\n localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n } else {\n this.setState({errorOccurred: true});\n }\n })\n break;\n\n case \"getpowerbiconnectors\":\n let getpowerbiconnectorsdata = { \n \"tenantId\": localStorage.getItem('team_id'),\n \"userId\":localStorage.getItem('user_id'),\n \"email\":localStorage.getItem(\"emailId\")\n };\n call_post_api(console_ip, \"power_bi_connector_details\", getpowerbiconnectorsdata).then((response) =>{\n // call_get_api(\"pbi-qualdo.eastus.cloudapp.azure.com/\", \"ui-api-service/powerbi_token\", getpowerbiconnectorsdata).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n console.error(\"Unable to reach console server\");\n } else if (response.code === 200) {\n\n let newArray = response.datasources.filter(function (el) {\n return el.added > 0 \n });\n $(\"#step1\").hide();\n if(newArray.length===0){\n $('#step0next').attr('disabled', 'disabled'); \n }\n\n // let res = {\n // \"code\": 200,\n // \"datasources\": [{\n // \"integration_id\": 1434,\n // \"integration_name\": \"testing_pbi1\",\n // \"workspace_name\": \"All workspace\",\n // \"added\": 1,\n // \"environment_name\": \"dq_reports\"\n // },\n // {\n // \"integration_id\": 1434,\n // \"integration_name\": \"testing_pbi1\",\n // \"workspace_name\": \"All workspace\",\n // \"added\": 0,\n // \"environment_name\": \"dq_reports\"\n // },\n // {\n // \"integration_id\": 1434,\n // \"integration_name\": \"testing_pbi1\",\n // \"workspace_name\": \"All workspace\",\n // \"added\": 0,\n // \"environment_name\": \"dq_reports\"\n // }\n // ],\n // \"datasources_others\": [{\n // \"integration_id\": 1434,\n // \"integration_name\": \"testing_pbi1\",\n // \"workspace_name\": \"All workspace\",\n // \"added\": 1,\n // \"environment_name\": \"dq_reports\"\n // },\n // {\n // \"integration_id\": 1434,\n // \"integration_name\": \"testing_pbi1\",\n // \"workspace_name\": \"All workspace\",\n // \"added\": 1,\n // \"environment_name\": \"dq_reports\"\n // },\n // {\n // \"integration_id\": 1434,\n // \"integration_name\": \"testing_pbi1\",\n // \"workspace_name\": \"All workspace\",\n // \"added\": 1,\n // \"environment_name\": \"dq_reports\"\n // }\n // ],\n // \"message\": \"Successfully fetched\",\n // \"tenant_id\": \"1020\"\n // }\n\n this.setState({\n setupdata: response\n // setupdata: res\n });\n\n\n } \n });\n break; \n case \"powerbisetup\":\n // let inputDatapowerbidashboard = { \"id\":1,\n // \"user_qualdo_auth_token\":session,\n // \"user_pb_auth_token\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyIsImtpZCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyJ9.eyJhdWQiOiJodHRwczovL2FuYWx5c2lzLndpbmRvd3MubmV0L3Bvd2VyYmkvYXBpIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvMmIxMjdjN2QtMWEwYi00ZTk4LThlOWUtZDMzM2EyYzc4YmE3LyIsImlhdCI6MTY0OTI0NzIxNSwibmJmIjoxNjQ5MjQ3MjE1LCJleHAiOjE2NDkyNTI4NjgsImFjY3QiOjAsImFjciI6IjEiLCJhaW8iOiJFMlpnWUhENW9QYWhVVGhVVVZqNG1zdWIwZ3ZhTDY5bEZmNU5McnB4MDFCRlB1VzhZeXdBIiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjdmNTlhNzczLTJlYWYtNDI5Yy1hMDU5LTUwZmM1YmIyOGI0NCIsImFwcGlkYWNyIjoiMiIsImZhbWlseV9uYW1lIjoiUiIsImdpdmVuX25hbWUiOiJSYWphbiIsImlwYWRkciI6IjEyMi4xODYuMjQ3LjUwIiwibmFtZSI6IlJhamFuIiwib2lkIjoiOWQ2NjkwZTUtYmZiYy00NzBkLWFjYjYtNGQyMDJjMzU5ZGYyIiwicHVpZCI6IjEwMDMyMDAxMDU0QjJGQjgiLCJyaCI6IjAuQVNvQWZYd1NLd3NhbUU2T250TXpvc2VMcHdrQUFBQUFBQUFBd0FBQUFBQUFBQUFxQUhjLiIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6IkVtYlZUQ3ppQkJIOHRVYzBycWpkUlFDZUxXdVhjcnpvY0hlSGd5MndtTnMiLCJ0aWQiOiIyYjEyN2M3ZC0xYTBiLTRlOTgtOGU5ZS1kMzMzYTJjNzhiYTciLCJ1bmlxdWVfbmFtZSI6InJhamFuLmN0QHNhdHVyYW0uY29tIiwidXBuIjoicmFqYW4uY3RAc2F0dXJhbS5jb20iLCJ1dGkiOiJjYU93ZmthNnBrLU1mV2J4b3ozTEFBIiwidmVyIjoiMS4wIiwid2lkcyI6WyJiNzlmYmY0ZC0zZWY5LTQ2ODktODE0My03NmIxOTRlODU1MDkiXX0.UJxwCUfk0ILlhsfZmYldPU6qQgraXEKFwx8vxkFjmOJLomLmsL9pZsBHrQ0qOstYnMKCJbMnX5H_AdDgxzzuqZYHJUjAfM6zpMjPa326xaMSJM3JiC9Eexrltjs25gNbFEqeD2Gu0Av6pas_428SvF21ye8IUnDHWzdAiySxEdKbKxcUaavk1Fts-o8LmXT31ag0A2yL8qGSN3a3JeADFbFGUxWT2NaxT753bvAXA2hcMT8Cd59vBXYX51Eawp2y2AfDx2-lrXDt4PWoF3kmlNglp4d3hMHMkQMo8Oj4OEYx6AKJWuoTqPnVzQHbhNNqcQH7m0Zg62bg6y-8-NGIJQ\"\n // };\n let selectedIntegrtion = []; \n $('.datasourceselecction').each(function() {\n let obj = {}\n obj.integration_id = $(this).attr(\"data-integrationid\"); \n obj.integration_name = $(this).attr(\"data-integration_name\");\n obj.workspace_name = $(this).attr(\"data-workspace_name\");\n selectedIntegrtion.push(obj);\n });\n\n\n let inputDatapowerbidashboard = { \n \"tenantId\":localStorage.getItem('user_id'),\n \"userId\":localStorage.getItem('team_id'),\n \"id\":localStorage.getItem('user_id'),\n \"user_qualdo_auth_token\":session,\n \"user_pb_auth_token\":session,\n \"integrations_list\":selectedIntegrtion,\n \"email\":localStorage.getItem(\"emailId\")\n };\n\n// var response = {\n// \t\"code\": 200,\n// \"dashboard\": [],\n// \t\"report\": [{\n// \t\t\t\"datasetId\": \"f1e9d6df-736f-48a7-8628-288b0a3c1cf4\",\n// \t\t\t\"datasetWorkspaceId\": \"49def082-8ae7-4477-ae3c-360a87716cbf\",\n// \t\t\t\"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=4b00bf4d-815f-45ce-b29f-77f8a1788aeb&groupId=49def082-8ae7-4477-ae3c-360a87716cbf&w=2&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwidXNhZ2VNZXRyaWNzVk5leHQiOnRydWUsInNraXBRdWVyeURhdGFTYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFQYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFFeHBvcnRUbyI6dHJ1ZX19\",\n// \t\t\t\"id\": \"4b00bf4d-815f-45ce-b29f-77f8a1788aeb\",\n// \t\t\t\"integration_id\": \"1\",\n// \t\t\t\"integration_name\": \"test1\",\n// \t\t\t\"isFromPbix\": true,\n// \t\t\t\"isOwnedByMe\": true,\n// \t\t\t\"name\": \"serving_dataset\",\n// \t\t\t\"reportType\": \"PowerBIReport\",\n// \t\t\t\"subscriptions\": [],\n// \t\t\t\"users\": [],\n// \t\t\t\"webUrl\": \"https://app.powerbi.com/groups/49def082-8ae7-4477-ae3c-360a87716cbf/reports/4b00bf4d-815f-45ce-b29f-77f8a1788aeb\",\n// \t\t\t\"workspace\": \"pbiconnector\"\n// \t\t},\n// \t\t{\n// \t\t\t\"datasetId\": \"9b1bc983-42b0-4dfb-8f69-3118fbea85eb\",\n// \t\t\t\"datasetWorkspaceId\": \"49def082-8ae7-4477-ae3c-360a87716cbf\",\n// \t\t\t\"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=e4f6ea5f-4b6e-40e1-bcb4-43ec905dbb5a&groupId=49def082-8ae7-4477-ae3c-360a87716cbf&w=2&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwidXNhZ2VNZXRyaWNzVk5leHQiOnRydWUsInNraXBRdWVyeURhdGFTYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFQYWFTRW1iZWQiOnRydWUsInNraXBRdWVyeURhdGFFeHBvcnRUbyI6dHJ1ZX19\",\n// \t\t\t\"id\": \"e4f6ea5f-4b6e-40e1-bcb4-43ec905dbb5a\",\n// \t\t\t\"integration_id\": \"1\",\n// \t\t\t\"integration_name\": \"test1\",\n// \t\t\t\"isFromPbix\": true,\n// \t\t\t\"isOwnedByMe\": true,\n// \t\t\t\"name\": \"serving_dataset_a\",\n// \t\t\t\"reportType\": \"PowerBIReport\",\n// \t\t\t\"subscriptions\": [],\n// \t\t\t\"users\": [],\n// \t\t\t\"webUrl\": \"https://app.powerbi.com/groups/49def082-8ae7-4477-ae3c-360a87716cbf/reports/e4f6ea5f-4b6e-40e1-bcb4-43ec905dbb5a\",\n// \t\t\t\"workspace\": \"pbiconnector\"\n// \t\t}\n// \t]\n// }\n// var powerbidashboardata = response;\n// var objectdashboard = [];\n// var objectdreport = [];\n// let setuppagecheckall = '';\n// if(!powerbidashboardata.dashboard.hasOwnProperty('error')){\n\n\n// for(let i=0; i < powerbidashboardata.dashboard.length; i++){\n// let newobjDashboard = {};\n// newobjDashboard.id = powerbidashboardata.dashboard[i][\"id\"]; \n// newobjDashboard.name = powerbidashboardata.dashboard[i][\"displayName\"]; \n// newobjDashboard.embed_url = powerbidashboardata.report[i][\"embedUrl\"]; \n// newobjDashboard.type = \"Dashboard\"; \n// newobjDashboard.workspace = powerbidashboardata.report[i][\"workspace\"];\n// newobj.integration_id = powerbidashboardata.report[i][\"integration_id\"]; \n// newobj.integration_name = powerbidashboardata.report[i][\"integration_name\"]; \n\n \n// if(this.state.alreadyselecteditems.length > 0 && this.state.alreadyselecteditems!==null) {\n// setuppagecheckall = 1;\n// if(this.state.alreadyselecteditems.indexOf(powerbidashboardata.dashboard[i][\"id\"]) === -1) {\n// newobjDashboard.checkedstatus = false; \n// }\n// else {\n// newobjDashboard.checkedstatus = true; \n// }\n// }\n// else {\n// newobjDashboard.checkedstatus = true; \n// }\n// objectdashboard.push(newobjDashboard);\n// }\n// }\n\n// if(!powerbidashboardata.report.hasOwnProperty('error')){\n// for(var i=0; i < powerbidashboardata.report.length; i++){\n// var newobj = {};\n// newobj.id = powerbidashboardata.report[i][\"id\"]; \n// newobj.name = powerbidashboardata.report[i][\"name\"]; \n// newobj.embed_url = powerbidashboardata.report[i][\"embedUrl\"]; \n// newobj.workspace = powerbidashboardata.report[i][\"workspace\"]; \n// newobj.integration_id = powerbidashboardata.report[i][\"integration_id\"]; \n// newobj.integration_name = powerbidashboardata.report[i][\"integration_name\"]; \n\n\n// if(this.state.alreadyselecteditems.length > 0 && this.state.alreadyselecteditems!==null) {\n// if(this.state.alreadyselecteditems.indexOf(powerbidashboardata.report[i][\"id\"]) === -1) {\n// setuppagecheckall = 1;\n// newobj.checkedstatus = false; \n// }\n// else {\n// newobj.checkedstatus = true; \n// }\n// }\n// else {\n// newobj.checkedstatus = true; \n// } newobj.type = \"Report\"; \n// objectdreport.push(newobj);\n// }\n// }\n// this.setState({\n// powerbidashboard: objectdashboard,\n// powerbireport:objectdreport,\n// checkall : setuppagecheckall === 1 ? false : true\n// });\n// return;\n \n\n call_get_api(powerbi_service_ip, \"powerbi_setup\", inputDatapowerbidashboard).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n console.error(\"Unable to reach console server\");\n } else if (response.code === 200) {\n\n\n var powerbidashboardata = response;\n var objectdashboard = [];\n var objectdreport = [];\n let setuppagecheckall = '';\n\n if(!powerbidashboardata.dashboard.hasOwnProperty('error')){\n\n\nfor(let i=0; i < powerbidashboardata.dashboard.length; i++){\n let newobjDashboard = {};\n newobjDashboard.id = powerbidashboardata.dashboard[i][\"id\"]; \n newobjDashboard.name = powerbidashboardata.dashboard[i][\"displayName\"]; \n newobjDashboard.embed_url = powerbidashboardata.report[i][\"embedUrl\"]; \n newobjDashboard.type = \"Dashboard\"; \n newobjDashboard.workspace = powerbidashboardata.report[i][\"workspace\"]; \n if(this.state.alreadyselecteditems.length > 0 && this.state.alreadyselecteditems!==null) {\n setuppagecheckall = 1;\n if(this.state.alreadyselecteditems.indexOf(powerbidashboardata.dashboard[i][\"id\"]) === -1) {\n newobjDashboard.checkedstatus = false; \n }\n else {\n newobjDashboard.checkedstatus = true; \n }\n }\n else {\n newobjDashboard.checkedstatus = true; \n }\n objectdashboard.push(newobjDashboard);\n}\n\n}\n\nif(!powerbidashboardata.report.hasOwnProperty('error')){\n\nfor(var i=0; i < powerbidashboardata.report.length; i++){\n var newobj = {};\n newobj.id = powerbidashboardata.report[i][\"id\"]; \n newobj.name = powerbidashboardata.report[i][\"name\"]; \n newobj.embed_url = powerbidashboardata.report[i][\"embedUrl\"]; \n newobj.workspace = powerbidashboardata.report[i][\"workspace\"]; \n newobj.integration_id = powerbidashboardata.report[i][\"integration_id\"]; \n newobj.integration_name = powerbidashboardata.report[i][\"integration_name\"]; \n \n if(this.state.alreadyselecteditems.length > 0 && this.state.alreadyselecteditems!==null) {\n if(this.state.alreadyselecteditems.indexOf(powerbidashboardata.report[i][\"id\"]) === -1) {\n setuppagecheckall = 1;\n newobj.checkedstatus = false; \n }\n else {\n newobj.checkedstatus = true; \n }\n }\n else {\n newobj.checkedstatus = true; \n }\n newobj.type = \"Report\"; \n objectdreport.push(newobj);\n}\n}\nthis.setState({\n powerbidashboard: objectdashboard,\n powerbireport:objectdreport,\n checkall : setuppagecheckall === 1 ? false : true\n });\n\n} else {\n console.error(\"Unable to update data limit\")\n }\n });\n break;\n\n\n /*\n \n let powerbidashboardata = {\n \"dashboard\":{\n \"@odata.context\": \"http://wabi-india-central-a-primary-redirect.analysis.windows.net/v1.0/myorg/$metadata#dashboards\",\n \"value\": [\n {\n \"id\": \"a5e6bfb1-ed2c-446b-99dc-0e22a990e95f\",\n \"displayName\": \"Sales & Returns Sample v201912.pbix\",\n \"isReadOnly\": false,\n \"webUrl\": \"https://app.powerbi.com/groups/me/dashboards/a5e6bfb1-ed2c-446b-99dc-0e22a990e95f\",\n \"embedUrl\": \"https://app.powerbi.com/dashboardEmbed?dashboardId=a5e6bfb1-ed2c-446b-99dc-0e22a990e95f&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6ZmFsc2V9fQ%3d%3d\",\n \"users\": [],\n \"subscriptions\": []\n }\n ]\n },\n \"report\":\n {\n \"@odata.context\": \"http://wabi-india-central-a-primary-redirect.analysis.windows.net/v1.0/myorg/$metadata#reports\",\n \"value\": [\n {\n \"id\": \"345483c0-2cf7-4f88-8f26-27dd95ea418f\",\n \"reportType\": \"PowerBIReport\",\n \"name\": \"star_prediction\",\n \"webUrl\": \"https://app.powerbi.com/groups/me/reports/345483c0-2cf7-4f88-8f26-27dd95ea418f\",\n \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=345483c0-2cf7-4f88-8f26-27dd95ea418f&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n \"isOwnedByMe\": true,\n \"datasetId\": \"61f55457-a3c3-4379-b373-5d12653584a4\",\n \"users\": [],\n \"subscriptions\": []\n },\n {\n \"id\": \"f570af22-e820-4a5d-aaaa-3eaf2ac72b44\",\n \"reportType\": \"PowerBIReport\",\n \"name\": \"star_response\",\n \"webUrl\": \"https://app.powerbi.com/groups/me/reports/f570af22-e820-4a5d-aaaa-3eaf2ac72b44\",\n \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=f570af22-e820-4a5d-aaaa-3eaf2ac72b44&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n \"isOwnedByMe\": true,\n \"datasetId\": \"61f55457-a3c3-4379-b373-5d12653584a4\",\n \"users\": [],\n \"subscriptions\": []\n },\n {\n \"id\": \"b737d562-3edc-4cd8-91f6-27f4790c6caf\",\n \"reportType\": \"PowerBIReport\",\n \"name\": \"star_serving\",\n \"webUrl\": \"https://app.powerbi.com/groups/me/reports/b737d562-3edc-4cd8-91f6-27f4790c6caf\",\n \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=b737d562-3edc-4cd8-91f6-27f4790c6caf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n \"isOwnedByMe\": true,\n \"datasetId\": \"61f55457-a3c3-4379-b373-5d12653584a4\",\n \"users\": [],\n \"subscriptions\": []\n },\n {\n \"id\": \"85c95e51-5f48-4ac2-b31f-c784f778c7cf\",\n \"reportType\": \"PowerBIReport\",\n \"name\": \"star_training\",\n \"webUrl\": \"https://app.powerbi.com/groups/me/reports/85c95e51-5f48-4ac2-b31f-c784f778c7cf\",\n \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=85c95e51-5f48-4ac2-b31f-c784f778c7cf&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n \"isOwnedByMe\": true,\n \"datasetId\": \"61f55457-a3c3-4379-b373-5d12653584a4\",\n \"users\": [],\n \"subscriptions\": []\n },\n {\n \"id\": \"2d398b69-4310-4c84-9db4-2be1aca1245a\",\n \"reportType\": \"PowerBIReport\",\n \"name\": \"order-report-icon\",\n \"webUrl\": \"https://app.powerbi.com/groups/me/reports/2d398b69-4310-4c84-9db4-2be1aca1245a\",\n \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=2d398b69-4310-4c84-9db4-2be1aca1245a&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n \"isOwnedByMe\": true,\n \"datasetId\": \"5c37ee0d-99d0-4b41-ae6c-003587efcce1\",\n \"users\": [],\n \"subscriptions\": []\n },\n {\n \"id\": \"0958dd9f-d193-49e2-a519-b5d0c6db1dc6\",\n \"reportType\": \"PowerBIReport\",\n \"name\": \"firstbbreport\",\n \"webUrl\": \"https://app.powerbi.com/groups/me/reports/0958dd9f-d193-49e2-a519-b5d0c6db1dc6\",\n \"embedUrl\": \"https://app.powerbi.com/reportEmbed?reportId=0958dd9f-d193-49e2-a519-b5d0c6db1dc6&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d\",\n \"isOwnedByMe\": true,\n \"datasetId\": \"2d2d1f8e-79ce-4b6b-beb5-40e29b0bf231\",\n \"users\": [],\n \"subscriptions\": []\n }\n ]\n }\n };\n\nvar objectdashboard = new Array();\nfor(var i=0; i < powerbidashboardata.dashboard.value.length; i++){\n var newobj = new Object();\n newobj.id = powerbidashboardata.dashboard.value[i][\"id\"]; \n newobj.name = powerbidashboardata.dashboard.value[i][\"displayName\"]; \n newobj.checkedstatus = true; \n objectdashboard.push(newobj);\n}\n\nvar objectdreport = new Array();\nfor(var i=0; i < powerbidashboardata.report.value.length; i++){\n var newobj = new Object();\n newobj.id = powerbidashboardata.report.value[i][\"id\"]; \n newobj.name = powerbidashboardata.report.value[i][\"name\"]; \n newobj.workspace = powerbidashboardata.value[i][\"workspace\"]; \n newobj.integration_id = powerbidashboardata.value[i][\"integration_id\"]; \n newobj.integration_name = powerbidashboardata.value[i][\"integration_name\"]; \n\n newobj.checkedstatus = true; \n objectdreport.push(newobj);\n}\nthis.setState({\n powerbidashboard: objectdashboard,\n powerbireport:objectdreport\n });\n break;\n\n */\n case \"getpowerbidatasetmapping\":\n let powerbi_get_dataser_data = {};\n powerbi_get_dataser_data.user_qualdo_auth_token = session;\n powerbi_get_dataser_data.id = data;\n call_get_api(powerbi_service_ip, \"getpowerbidatasetmapping\", powerbi_get_dataser_data).then((response) =>{\n if (response === undefined) {\n this.setState({errorOccurred: true});\n } else if (response.code === 200) {\n\n\n let editenv = {};\n let editdatasource = {};\n let editdataset = {};\n \n\n editenv.value = response.datsetlevelmapping[0][\"env_id\"];\n editenv.label = response.datsetlevelmapping[0][\"env_name\"];\n\n editdatasource.value = response.datsetlevelmapping[0][\"datasource_id\"];\n editdatasource.label = response.datsetlevelmapping[0][\"datasource_name\"];\n\n editdataset.value = response.datsetlevelmapping[0][\"dataset_id\"];\n editdataset.label = response.datsetlevelmapping[0][\"dataset_name\"];\n\n\n var envcheck = [];\n let env = this.state.drx_dataset;\n let envoptions = []; \n \n env.filter(function (el) {\n if(envcheck.indexOf(el.datasource_id) === -1 && el.env_id===response.datsetlevelmapping[0][\"env_id\"]) {\n \n envcheck.push(el.datasource_id);\n var envselectobj = {};\n envselectobj.value = el.datasource_id;\n envselectobj.label = el.datasource_name;\n envoptions.push(envselectobj);\n return el;\n \n }\n return el;\n });\n\n envcheck = [];\n let datasetoptions = []; \n env.filter(function (el) {\n if(envcheck.indexOf(el.dataset_id) === -1 && el.datasource_id===response.datsetlevelmapping[0][\"datasource_id\"]) {\n envcheck.push(el.dataset_id);\n var envselectobj = {};\n envselectobj.value = el.dataset_id;\n envselectobj.label = el.dataset_name;\n datasetoptions.push(envselectobj);\n return el;\n }\n return el;\n });\n\n let coloptions = [];\n for (let i=0; i\n

    Quick Start Video Tutorial

    \n

    Watch this short video tutorial to quickly start using Qualdo™

    \n

    Learn how to setup a datasource and a model to start monitoring the performance metrics.

    \n
    \n \n
    \n \n );\n case \"host_tab\":\n return(\n
    \n

    Configure a Datasource

    \n

    Watch this short video tutorial to configure datasource

    \n

    Learn how to add and organize datasources for Qualdo™ to start monitoring for data quality issues and metrics.

    \n
    \n \n
    \n
    \n );\n case \"dashboard_creation\":\n return (\n
    \n

    Configure a Model

    \n

    Watch this short video tutorial to configure Models

    \n

    Learn how to add and organize models within Qualdo™ to start monitoring for performance issues and metrics.\n View this tutorial to configure training, test and serving data of your model.

    \n
    \n \n
    \n
    \n );\n\n case \"moniter_creation\":\n return (\n
    \n

    Profile a Datasource

    \n

    Watch this short video tutorial to profile datasources and datasets.

    \n

    Learn how to profile different datasources for various data quality metrics.\n View this tutorial to understand data relationships, completeness, accuracy, timeliness, conformity and consistency.

    \n
    \n \n
    \n
    \n );\n\n case \"invite_team_mates\":\n return(\n
    \n

    Profile a Model

    \n

    Watch this short video tutorial to profile the configured models.

    \n

    Learn how to profile multiple models for various performance metrics.\n View this tutorial to quickly understand model drifts and performance metrics.

    \n
    \n \n
    \n
    );\n case \"install_integration\":\n return (\n
    \n

    Monitor DQ Metrics

    \n

    Watch this short video tutorial to monitor data quality issues and metrics.

    \n

    Learn how to monitor data issues, data quality errors and data quality performance of multiple datasources.

    \n
    \n \n
    \n
    );\n\n case \"overview_video\":\n return(\n
    \n

    Monitor Model Metrics

    \n

    Watch this short video tutorial to monitor model issues and metrics.

    \n

    Learn how to monitor model issues, errors and model performance metrics.

    \n
    \n \n
    \n
    );\n case \"model_performance_monitoring\":\n return(\n
    \n

    Monitor Model Performance Metrics

    \n

    Watch this short video tutorial to monitor model performance issues and metrics.

    \n

    Learn how to monitor model performance issues, errors and model performance metrics.

    \n
    \n \n
    \n
    );\n case \"setup_notification\":\n return(\n
    \n

    Setup a notification

    \n

    Watch this short video tutorial to setup notifications from Qualdo™.

    \n

    Learn how to send notifications to email and slack or any other medium of your choice.

    \n
    \n \n
    \n
    );\n case \"pipeline_trigger\":\n return(\n
    \n

    Setup a Pipeline Trigger

    \n

    Watch this short video tutorial to setup triggers from Qualdo™.

    \n

    Learn how to setup triggers for webhooks or a pipeline tech-stack of your choice.

    \n
    \n \n
    \n
    );\n case \"setup_alert\":\n return(\n
    \n

    Setup an Alert

    \n

    Watch this short video tutorial to setup custom metrics and alerts.

    \n

    Learn how to create custom data quality and model metrics and custom queries for your alert.

    \n
    \n \n
    \n
    );\n default:\n break;\n }\n }\n\n handleTab(key) {\n this.setState ({current_tab: key});\n }\n\n render() {\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n\n let hideModelInfo = true;\n\n if (!IS_NONE_CHECK.includes(this.state.featureAccess)) {\n const modelInfo = this.state.featureAccess[\"models\"];\n hideModelInfo = modelInfo === false;\n }\n\n\n\n return (\n <>\n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n {this.renderVideoContent(this.state.current_tab)}\n \n \n
    \n
    \n
    \n
    \n
    \n \n \n );\n }\n }\n\nexport default QuickStart;\n","import React from 'react';\nimport NavigationHeader from '../components/navigationHeader';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport { Table } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowRight, faCog, faTachometerAlt, faSitemap, faCheck, faCheckCircle, faLongArrowAltRight, faDatabase, faWindowRestore,faTrashAlt } from '@fortawesome/free-solid-svg-icons';\nimport { faFileAlt, faTimesCircle } from '@fortawesome/free-regular-svg-icons';\nimport Form from 'react-bootstrap/Form';\nimport {CallAPI} from \"./pbihandling\";\nimport {browserHistory} from 'react-router';\nimport $ from \"jquery\";\nimport Load from '../components/loadAction';\nimport {getFeatureAccess} from \"../utils/common_utils\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\nimport Image from \"../components/image\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Popover from 'react-bootstrap/Popover';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport QuickStart from './quick_start'\n\n\nclass PowerBISetup extends React.Component {\n\n constructor(props) {\n super(props);\n this.CallAPI = CallAPI.bind(this);\n this.step1 = this.step1.bind(this);\n this.step2 = this.step2.bind(this);\n this.step3 = this.step2.bind(this);\n this.step0 = this.step0.bind(this);\n this.step0back = this.step0back.bind(this);\n this.prepareReport = this.prepareReport.bind(this);\n this.showAllDashboard = this.showAllDashboard.bind(this);\n this.gotoconfiguration = this.gotoconfiguration.bind(this)\n this.checkalreadyselecteditems = this.checkalreadyselecteditems.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.connectorsadd = this.connectorsadd.bind(this)\n this.connectorsremovecancel = this.connectorsremovecancel.bind(this)\n this.connectorsremove = this.connectorsremove.bind(this)\n\n\n this.state = {\n setqualdourlLink: false,\n powerbidashboard: null,\n powerbireport: null,\n checkall: false,\n step1: false,\n step2: false,\n step0: true,\n showmoreflag: false,\n alldashboard: '',\n fourdashboard: '',\n selecteddashboard: 0,\n pbiuserselectedlist: null,\n configureconfirmchecked:'yes',\n setupdata:null,\n connectionnext:'',\n alreadyselecteditems:[],\n deletesetup:false,\n conntorremove:''\n };\n }\n\n\n\n changestatus() {\n\n // this.setState({checkall:false});\n\n } \n\n gotoconfiguration() {\n browserHistory.push(\"/configure\");\n }\n\n handleCheckChieldElement = event => {\n\n let powerbidashboard = this.state.powerbidashboard;\n powerbidashboard.forEach(fruite => {\n\n if (fruite.id === event.target.value){\n fruite.checkedstatus = event.target.checked;\n }\n\n });\n let powerbireport = this.state.powerbireport;\n powerbireport.forEach(fruite => {\n if (fruite.id === event.target.value)\n fruite.checkedstatus = event.target.checked;\n });\n this.setState({ powerbidashboard: powerbidashboard,powerbireport:powerbireport});\n };\n\n \n step0() {\n if($(\".is-checked\").length > 0) {\n $(\"#step0\").hide();\n $(\"#step1\").show();\n this.setState({step1:true,step0:false});\n this.getpowerbidashboard();\n }\n }\n\n step0back() {\n this.setState({step0:true,step1:false,step2:false});\n $(\"#step0\").show();\n $(\"#step1\").hide();\n }\n\n handleDelete() {\n\n\n }\n\n step2() {\n\n let powerbidashboard = this.state.powerbidashboard;\n let powerbireport = this.state.powerbireport;\n let firstfourdashboard = '';\n let alldashboard = '';\n let firstfourcounter = 0;\n let selectedstatus = false;\n\n \n let newArray = powerbireport.filter(function (el) {\n return el.checkedstatus === true \n });\n\n if(newArray.length > 0){\n \n\n\n powerbidashboard.forEach(fruite => {\n if(fruite.checkedstatus){\n selectedstatus = true;\n if(firstfourcounter < 4){\n firstfourdashboard += `
    `+fruite.name+`
    `;\n }\n alldashboard += `
    `+fruite.name+`
    `;\n firstfourcounter++;\n }\n \n })\n\n powerbireport.forEach(fruite => {\n if(fruite.checkedstatus){\n selectedstatus = true;\n if(firstfourcounter < 4){\n firstfourdashboard += `
    `+fruite.name+`
    `;\n }\n alldashboard += `
    `+fruite.name+`
    `;\n firstfourcounter++;\n }\n \n })\n\n $(\"#step0\").hide();\n $(\"#step1\").show();\n this.setState({step2:true,step0:false,step1:false});\n \n if(selectedstatus){\n this.setState({step1:false,step2:true,selecteddashboard:firstfourcounter,alldashboard:alldashboard,fourdashboard:firstfourdashboard});\n if(firstfourcounter < 5){\n $(\"#showmore\").hide();\n }else {\n let moredashboardcnt = firstfourcounter-4;\n $(\"#showmore\").html(`+ `+moredashboardcnt+` more dashboards`);\n $(\"#showmore\").show();\n }\n $(\".dashboard-content\").html(firstfourdashboard);\n }\n\n\n\n\n // if(selectedstatus){\n // this.setState({selecteddashboard:firstfourcounter,alldashboard:alldashboard,fourdashboard:firstfourdashboard});\n // this.prepareReport();\n // } \n\n // let powerbidashboard = this.state.powerbidashboard;\n // let powerbireport = this.state.powerbireport;\n \n // let firstfourdashboard = '';\n // let alldashboard = '';\n // let firstfourcounter = 0;\n // let selectedstatus = false;\n\n // powerbidashboard.forEach(fruite => {\n // if(fruite.checkedstatus){\n // selectedstatus = true;\n // if(firstfourcounter < 4){\n // firstfourdashboard += `
    `+fruite.name+`
    `;\n // }\n // alldashboard += `
    `+fruite.name+`
    `;\n // firstfourcounter++;\n // }\n \n // })\n\n // powerbireport.forEach(fruite => {\n // if(fruite.checkedstatus){\n // selectedstatus = true;\n // if(firstfourcounter < 4){\n // firstfourdashboard += `
    `+fruite.name+`
    `;\n // }\n // alldashboard += `
    `+fruite.name+`
    `;\n // firstfourcounter++;\n // }\n \n // })\n\n // if(selectedstatus){\n\n // this.setState({step1:false,step2:true,selecteddashboard:firstfourcounter,alldashboard:alldashboard,fourdashboard:firstfourdashboard});\n // $(\"#showmore\").html(`+ `+firstfourcounter+` more dashboards`);\n // if(firstfourcounter < 5){\n // $(\"#showmore\").hide();\n // }else {\n // $(\"#showmore\").show();\n // }\n // $(\".dashboard-content\").html(firstfourdashboard);\n // }\n }\n }\n\n prepareReport() {\n // this.setState({checkall:value,powerbidashboard: powerbidashboard,powerbireport:powerbireport});\n\n \n var selected_dashboard_list = [];\n let powerbidashboard = this.state.powerbidashboard;\n powerbidashboard.forEach(fruite => {\n if(fruite.checkedstatus){\n var pbiselectedobj = {};\n pbiselectedobj.powerbi_dashboard_id =fruite.id;\n pbiselectedobj.name = fruite.name;\n pbiselectedobj.type = fruite.type;\n pbiselectedobj.embed_url = fruite.embed_url;\n selected_dashboard_list.push(pbiselectedobj);\n }\n });\n\n let powerbireport = this.state.powerbireport;\n powerbireport.forEach(fruite => {\n if(fruite.checkedstatus){\n let pbiselectedobj = {};\n pbiselectedobj.powerbi_dashboard_id =fruite.id;\n pbiselectedobj.name = fruite.name;\n pbiselectedobj.type = fruite.type;\n pbiselectedobj.embed_url = fruite.embed_url;\n pbiselectedobj.workspace = fruite.workspace;\n pbiselectedobj.integration_id = fruite.integration_id;\n pbiselectedobj.integration_name = fruite.integration_name;\n selected_dashboard_list.push(pbiselectedobj);\n }\n });\n\n this.setState({\n pbiuserselectedlist:selected_dashboard_list \n },() => {\n this.CallAPI(\"savedashboard\");\n });\n\n // let powerbireport = this.state.powerbireport;\n // powerbireport.forEach(fruite => {\n // fruite.checkedstatus = value;\n // });\n // browserHistory.push(\"/report\"); \n // {\n // \"user_qualdo_auth_token\":\"\",\n // \"dashboard\":[{\n // \"powerbi_dashboard_id\": \"a5e6bfb1-ed2c-446b-99dc-0e22a990e95f\",\n // \"name\": \"Sales & Returns Sample v201912.pbix\",\n // \"type\": \"report\",\n // \"embed_url\": \"https://app.powerbi.com/dashboardEmbed?dashboardId=a5e6bfb1-ed2c-446b-99dc-0e22a990e95f&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6ZmFsc2V9fQ%3d%3d\"\n // }]\n // }\n }\n step1() {\n this.setState({step1:true,step2:false,showmoreflag:false});\n }\n\n goback() {\n browserHistory.push(\"/\"); \n } \n\n deselectall = (event) => {\n \n const input = event.target;\n const value = input.type === 'checkbox' ? input.checked : input.value;\n\n\n if(input.type === 'checkbox'){\n let powerbidashboard = this.state.powerbidashboard;\n powerbidashboard.forEach(fruite => {\n // this.checkalreadyselecteditems(fruite.id)\n if(this.state.alreadyselecteditems.indexOf(fruite.id) === -1) {\n fruite.checkedstatus = value;\n }else{\n fruite.checkedstatus = true;\n }\n\n });\n \n let powerbireport = this.state.powerbireport;\n powerbireport.forEach(fruite => {\n // this.checkalreadyselecteditems(fruite.id)\n if(this.state.alreadyselecteditems.indexOf(fruite.id) === -1) {\n fruite.checkedstatus = value;\n }else{\n fruite.checkedstatus = true;\n }\n });\n this.setState({checkall:value,powerbidashboard: powerbidashboard,powerbireport:powerbireport});\n }\n }\n getpowerbidashboard(){\n this.CallAPI('powerbisetup');\n }\n componentDidMount() {\n this.CallAPI('getpowerbiconnectors');\n this.CallAPI('powerbierrordashboardsetup');\n // let json = {\"code\":200,\"datasources\":[],\"datasources_others\":[],\"message\":\"Successfully fetched\",\"tenant_id\":\"1\"}\n // let json = {\"code\":200,\"datasources\":[{\"added\":1,\"environment_name\":\"Test\",\"integration_id\":1,\"integration_name\":\"Sample Admin\",\"workspace_name\":\"ALL \"},{\"added\":0,\"environment_name\":\"Test\",\"integration_id\":1,\"integration_name\":\"Sample Admin\",\"workspace_name\":\"pbiconnector\"}],\"datasources_others\":[{\n\t// \t\"added\": 0,\n\t// \t\"environment_name\": \"Test\",\n\t// \t\"integration_id\": 1,\n\t// \t\"integration_name\": \"Sample Admin\",\n\t// \t\"workspace_name\": \"pbiconnector\"\n\t// }],\"message\":\"Successfully fetched\",\"tenant_id\":\"1\"}\n\n // this.setState({setupdata:json});\n // let newArray = json.datasources.filter(function (el) {\n // return el.added > 0 \n // });\n // $(\"#step1\").hide();\n // if(newArray.length===0){\n // $('#step0next').attr('disabled', 'disabled'); \n // }\n }\n\n showAllDashboard() {\n let flag = this.state.showmoreflag === true ? false : true;\n this.setState({showmoreflag:flag});\n if(flag){\n $(\".dashboard-content\").html(this.state.alldashboard);\n $(\"#showmore\").hide();\n }else {\n $(\".dashboard-content\").html(this.state.fourdashboard);\n }\n }\n\n // confireCheck(event) {\n // console.log(event.target.checked.value);\n // }\n\n confireCheck = e => {\n // const { name, value } = e.target;\n if(e.target.checked) {\n this.setState({ configureconfirmchecked: e.target.value });\n }\n };\n\n checkalreadyselecteditems(id){\n if(this.state.alreadyselecteditems.length > 0 && this.state.alreadyselecteditems!== null){\n if(this.state.alreadyselecteditems.indexOf(id) === -1) {\n return \"0\"; // Readonly State\n }else {\n return \"2\"; // Unselected State\n }\n }else{\n return \"1\"; // All Checked \n }\n } \n \n \n\n connectorsremove(){\n\n\n\n let addflag = 0;\n if($(\"#\"+this.state.conntorremove).hasClass(\"is-checked\")) {\n addflag = 0;\n $(\"#\"+this.state.conntorremove).removeClass(\"is-checked\").addClass(\"btn-grey\").html(`\n \n \n \n Add`)\n }\n\n let obj = {\n \"email\":localStorage.getItem(\"emailId\"),\n \"added\": addflag,\n \"integration_id\": $(\"#\"+this.state.conntorremove).attr(\"data-integrationid\"),\n \"integration_name\": $(\"#\"+this.state.conntorremove).attr(\"data-integration_name\")\n }\n this.CallAPI(\"powerbi_status_update\",obj);\n this.setState({deletesetup:false,conntorremove:''});\n\n setTimeout(function() {\n if($(\".is-checked\").length > 0) {\n $(\"#step0next\").removeAttr(\"disabled\");\n }else {\n $('#step0next').attr('disabled', 'disabled'); \n }\n }, 100);\n }\n\n\n\n connectorsremovecancel(){\n this.setState({deletesetup:false});\n }\n\n connectorsadd(pm){\n let addflag = 0;\n if($(\"#\"+pm).hasClass(\"is-checked\")) {\n let integration_name = $(\"#\"+pm).attr(\"data-integration_name\");\n this.setState({deletesetup:true,conntorremove:pm},() => {\n $(\"#delete_message_setup\").html(\"Are you sure you want delete \"+integration_name+\"?\")\n });\n return;\n \n // addflag = 0;\n // $(\"#\"+pm).removeClass(\"is-checked\").addClass(\"btn-grey\").html(`\n // \n // \n // \n // Add`)\n\n }else {\n addflag =1;\n $(\"#\"+pm).removeClass(\"btn-grey\").addClass(\"is-checked\").html(`\n \n \n \n \n \n Added`)\n }\n let obj = {\n \"email\":localStorage.getItem(\"emailId\"),\n \"added\": addflag,\n \"integration_id\": $(\"#\"+pm).attr(\"data-integrationid\"),\n \"integration_name\": $(\"#\"+pm).attr(\"data-integration_name\")\n }\n this.CallAPI(\"powerbi_status_update\",obj);\n setTimeout(function() {\n if($(\".is-checked\").length > 0) {\n $(\"#step0next\").removeAttr(\"disabled\");\n }else {\n $('#step0next').attr('disabled', 'disabled'); \n }\n }, 100);\n }\n\n render() {\n\n const featureAccess = getFeatureAccess();\n let enablePowerBiTab = false;\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const powerbiTab = featureAccess[\"powerbi\"];\n enablePowerBiTab = powerbiTab === true;\n }\n // enablePowerBiTab = true;\n let powerbidashboard = this.state.powerbidashboard\n let powerbireport = this.state.powerbireport\n // let step0next = 0;\n\n return (\n\n enablePowerBiTab ? \n <>\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n { \n this.state.setupdata !== null ? \n (this.state.setupdata.datasources.length === 0 && this.state.setupdata.datasources_others.length === 0) ? \n
    \n
    \n
    \n \n \n \n

    No Power BI connection {this.state.setupdata.datasources.hasOwnProperty('integration_id')}

    \n

    The PowerBI connection does not exist. Using the configure button, set up your Power BI connection to Qualdo™.

    \n
    \n
    \n
    \n \n
    \n : \"\"\n : \n }\n
    0 || this.state.setupdata.datasources_others.length > 0) ? '' : 'd-none'\n }\n >\n
    \n

    \n
    \n

    Configure dashboards/reports to Qualdo™

    \n

    Choose your Power BI dashboards/repots with Qualdo™ to monitor the Datasource and Datasets.

    \n
    \n
    \n
    \n

    \n
    \n

    Choose your configured environment with Power BI

    \n

    Choose your Power BI dashboard with Qualdo™ to monitor the Datasource and Datasets.

    \n
    \n
    \n
    \n
    \n { \n this.state.setupdata !== null ? \n (this.state.setupdata.datasources.length > 0) ? \n
    \n
    \n

    Your Power BI connectors

    \n
    \n \n
    \n
    \n
    \n
    \n \n { this.state.setupdata.datasources.map((d, i) => (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    {d.environment_name}
    \n

    \n \n {d.integration_name}\n

    \n

    \n \n {d.workspace_name}\n

    \n
    \n
    \n {/* */}\n {d.added === 1 ? \n \n :\n \n }\n \n
    \n
    \n
    \n
    \n
    \n
    \n ))}\n
    \n
    \n
    : \"\"\n :\"\"\n }\n\n { \n (this.state.setupdata !== null && (this.state.setupdata.datasources_others.length > 0)) ? \n
    \n
    \n

    Others

    \n
    \n
    \n
    \n { this.state.setupdata.datasources_others.map(d => (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    {d.environment_name}
    \n

    \n \n {d.integration_name}\n

    \n

    \n \n {d.workspace_name}\n

    \n
    \n
    \n \n \n {localStorage.getItem(\"emailId\")} email id is out of the scope to connect with Power BI\n \n \n }>\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n ))}\n\n \n
    \n
    \n
    : \"\"\n } \n
    \n
    \n {\n (this.state.powerbidashboard === null) ? \n : \n
    \n \n \n \n \n \n \n \n \n \n \n \n {powerbidashboard.map((item, i) => ( \n item.workspace !== \"QUALDO_POWERBI_WORKSPACE\" ? \n \n \n \n \n \n : \"\" \n ))}\n\n {powerbireport.map((item, i) => ( \n item.workspace !== \"QUALDO_POWERBI_WORKSPACE\" ? \n \n \n \n \n \n : \"\" \n ))}\n \n
    NameWorkspaceDatasource Name
    \n {\n this.checkalreadyselecteditems(item.id) === \"1\" ? \n \n : this.checkalreadyselecteditems(item.id) === \"2\" ?\n \n :\n \n \n } \n \n
    \n
    {item.name}{item.checkedstatus}{item.workspace}
    \n\n {\n this.checkalreadyselecteditems(item.id) === \"1\" ? \n \n : this.checkalreadyselecteditems(item.id) === \"2\" ?\n \n :\n \n \n }\n\n {/* {\n this.checkalreadyselecteditems(item.id) === \"1\" ? \n \n : this.checkalreadyselecteditems(item.id) === \"2\" ?\n \n : (item.checkedstatus === true) ?\n \n :\n \n } */}\n \n
    \n
    {item.name}{item.checkedstatus}{item.workspace}{item.integration_name}
    \n
    \n }\n\n{/*
    */}\n {/*
    \n
    \n \n \n
    \n
    */}\n {/*
    \n
    \n \n \n
    \n
    */}\n {/*
    */}\n
    \n\n
    \n \n \n \n

    Well Done!

    \n

    Following dashboards and reports will be monitored for data issues

    \n
    \n
    \n {/*
    \n
    \n \n
    \n
    Star Dashboard
    \n
    \n
    \n
    \n \n
    \n
    BB
    \n
    \n
    \n
    \n \n
    \n
    ZeeNetwork
    \n
    \n
    \n
    \n \n
    \n
    Piperr Dashboard
    \n
    */}\n
    \n \n
    \n

    Qualdo generated report issue will be ready in a few moments.

    \n
    \n Qualdo will create a default workspace named \"QUALDO_PBI_WORKSPACE\"\n
    \n
    \n
    \n\n
    \n {/* */}\n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n\n
    \n
    \n
    \n
    \n
    \n
    \n Monitoring Dashboard\n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    S.No\n \n \n \n \n \n \n \n \n Dashboard Name\n \n \n \n \n \n \n \n \n Type\n \n \n \n \n \n \n \n \n Owner\n \n \n \n \n \n \n \n \n Refreshed\n \n \n \n \n \n \n \n \n Quality Status\n \n \n \n \n \n \n \n \n Processing Status\n \n \n \n \n \n \n \n \n Last Processing Time\n \n \n \n \n \n \n \n \n Action\n \n \n \n \n \n \n \n \n
    1Star DashboardDashboardJai PriyaWed, 17 Jun 2020 11:48:32 GMT--Not yet startedWed, 17 Jun 2020 11:48:32 GMT\n \n
    \n \n \n
    \n
    2BBReportShagulTue, 15 Feb 2022 12:04:32 GMT No ErrorsCompletedTue, 15 Feb 2022 12:04:32 GMT\n \n
    \n \n \n
    \n
    3ZeeNetworkReportSasikumarMon, 12 Jan 2022 11:11:10 GMT--In ProgressMon, 12 Jan 2022 11:11:10 GMT\n \n
    \n \n \n
    \n
    4Piperr DashboardDashboardRakeshTue, 15 Feb 2022 12:04:32 GMT ErrorCompletedTue, 15 Feb 2022 12:04:32 GMT\n \n
    \n \n \n
    \n
    5BBReportShagulTue, 15 Feb 2022 12:04:32 GMT--Failed AuthenticationTue, 15 Feb 2022 12:04:32 GMT\n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n \n \n \n
    \n
    \n \n
    \n
    \n

    Power BI configuration has been Done!

    \n

    Your Power BI configuration (Power BI_Envi)
    has been created.

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n\n \n \n
    \n
    \n \n \n \n
    \n
    \n

    Are sure want to remove powerbi connector?

    \n

    This will delete your qualdo power bi reports

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n\n\n\n : <>\n );\n }\n}\n\nexport default PowerBISetup;","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport NavigationHeader from '../components/navigationHeader';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faLayerGroup, faFont, faLink } from '@fortawesome/free-solid-svg-icons';\nimport { faFileAlt } from '@fortawesome/free-regular-svg-icons';\nimport Modal from 'react-bootstrap/Modal';\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport {faDatabase,faBezierCurve} from \"@fortawesome/free-solid-svg-icons\";\nimport {CallAPI} from \"./pbihandling\";\nimport BasicPortlet from '../components/basicPortlet';\nimport Load from '../components/loadAction';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport $ from \"jquery\";\nimport Select from 'react-select'\nimport {getFeatureAccess} from \"../utils/common_utils\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\n\nclass AttributeReport extends React.Component {\n constructor (props) {\n super(props);\n this.state = {isToggleOn: false,authfailmodal:false,mapping_dataset:null,drx_dataset:null,\n mapping_env_options:[],\n mapping_datasource_options:[],\n mapping_dataset_options:[],\n selected_env:null,\n selected_datasource:null,\n selected_dataset:null,\n selected_cols:[],\n model_fotter_button_step:1,\n err_env:0,\n err_datset:0,\n err_datasource:0,\n save_mapping_data:null,\n editdatsetlevelmappingid:'',\n editdatasetid:'',\n };\n\n this.openModal = this.openModal.bind(this)\n this.handleclose = this.handleclose.bind(this)\n this.CallAPI = CallAPI.bind(this);\n this.selectDatasource = this.selectDatasource.bind(this)\n this.selectEnv = this.selectEnv.bind(this)\n this.selectDataset = this.selectDataset.bind(this)\n this.saveMapping = this.saveMapping.bind(this)\n this.handleTab = this.handleTab.bind(this)\n this.mappingNext = this.mappingNext.bind(this)\n }\n\n openModal(id,status) {\n\n if(document.querySelectorAll(\"#page-nav-tabs > div:nth-child(1) > a:nth-child(1)\")[0] !== undefined){\n document.querySelectorAll(\"#page-nav-tabs > div:nth-child(1) > a:nth-child(1)\")[0].click();\n }\n\n if(status === null) {\n\n this.setState({\n err_env:0,\n err_datset:0,\n editdatsetlevelmappingid:'',\n err_datasource:0,\n authfailmodal:true,\n selected_env:null,\n selected_datasource:null,\n selected_dataset:null,\n model_fotter_button_step:1\n });\n }\n else {\n this.CallAPI(\"getpowerbidatasetmapping\",id);\n }\n }\n\n\n handleTab(pm) {\n if(this.state.selected_dataset === null){\n setTimeout(function() { \n if(document.querySelectorAll(\"#page-nav-tabs > div:nth-child(1) > a:nth-child(1)\")[0] !== undefined){\n document.querySelectorAll(\"#page-nav-tabs > div:nth-child(1) > a:nth-child(1)\")[0].click();\n }\n }, 50); \n\n let envflag = 0,err_datset=0,err_datasource;\n if(this.state.selected_env===null){\n envflag = 1;\n }\n if(this.state.selected_datasource===null){\n err_datasource = 1;\n }\n if(this.state.selected_dataset===null){\n err_datset = 1;\n }\n \n if(err_datset === 0){\n \n } \n \n this.setState({\n err_env:envflag,\n err_datset:err_datset,\n err_datasource:err_datasource,\n });\n } \n if(this.state.selected_dataset!==null)\n {\n let selected = pm === \"ml\" ? 2 : 1;\n this.setState({model_fotter_button_step:selected})\n }\n }\n\n mappingNext() {\n\n let envflag = 0,err_datset=0,err_datasource;\n if(this.state.selected_env===null){\n envflag = 1;\n }\n if(this.state.selected_datasource===null){\n err_datasource = 1;\n }\n if(this.state.selected_dataset===null){\n err_datset = 1;\n }\n\n if(err_datset === 0){\n document.querySelectorAll(\"#page-nav-tabs > div:nth-child(2) > a:nth-child(1)\")[0].click();\n } \n\n this.setState({\n err_env:envflag,\n err_datset:err_datset,\n err_datasource:err_datasource,\n });\n\n }\n\n saveMapping() {\n\n let powerbi_columns = [];\n let qualdo_columns = [];\n let selecteddatasetid = this.state.selected_dataset.value;\n var envcheck = [];\n let env = this.state.drx_dataset;\n let envoptions = []; \n env.filter(function (el) {\n if(envcheck.indexOf(el.dataset_id) === -1 && el.dataset_id===selecteddatasetid) {\n envcheck.push(el.dataset_id);\n envoptions.push(el);\n return el;\n }\n return el;\n });\n if(envoptions.length === 0){\n return;\n }\n \n console.log(\"=============\");\n console.log(envoptions);\n console.log(\"=============\");\n\n $('.qualdo_columns').each(function(){\n qualdo_columns.push($(this).val());\n });\n\n $(\".powerbi_columns\").removeAttr(\"style\");\n\n let errorflag = 0;\n $('.powerbi_columns').each(function(){\n if($(this).val()){\n powerbi_columns.push($(this).val());\n }else {\n $(this).css('border', '1px solid red');\n $(this).focus(); \n errorflag = 1;\n }\n return;\n });\n\n\n if(errorflag===1)\n {\n return;\n }\n\n let selected_arribute = [];\n\n \n\n for(let loop=0;loop < qualdo_columns.length;loop++){\n let selected_arributeobj = {}\n selected_arributeobj[\"powerbi_column_name\"] = powerbi_columns[loop]; \n selected_arributeobj[\"qualdo_column_name\"] = qualdo_columns[loop];\n selected_arribute.push(selected_arributeobj);\n }\n\n // console.log(selected_arribute);\n\n let obj = {}\n\n let dataset_level_mapping_obj = {}\n\n dataset_level_mapping_obj.id = this.state.editdatsetlevelmappingid;\n dataset_level_mapping_obj.env_name = envoptions[0][\"env_name\"];\n dataset_level_mapping_obj.env_id = envoptions[0][\"env_id\"];\n dataset_level_mapping_obj.datasource_name = envoptions[0][\"datasource_name\"];\n dataset_level_mapping_obj.datasource_id = envoptions[0][\"datasource_id\"];\n dataset_level_mapping_obj.dataset_name = envoptions[0][\"dataset_name\"];\n dataset_level_mapping_obj.dataset_id = envoptions[0][\"dataset_id\"];\n dataset_level_mapping_obj.file_type = envoptions[0][\"file_type\"];\n dataset_level_mapping_obj.file_path = envoptions[0][\"file_path\"];\n dataset_level_mapping_obj.bucket_name = envoptions[0][\"bucket_name\"];\n dataset_level_mapping_obj.container_name = envoptions[0][\"storage_name\"];\n obj.id = this.state.editdatasetid;\n obj.dataset_level_mapping = dataset_level_mapping_obj;\n obj.attribute_level_mapping = selected_arribute;\n console.log(obj);\n this.setState({save_mapping_data:obj})\n this.CallAPI(\"save_mapping\",obj);\n /*\n\n{ \"id\":\"\"\n \"dataset_level_mapping\": {\n \"id\":\"\"\n \"env_name\": \"\",\n \"env_id\": \"\",\n \"datasource_name\": \"\",\n \"datasource_id\": \"\",\n \"dataset_name\": \"\",\n \"dataset_id\": \"\",\n \"file_type\": \"\",\n \"file_path\": \"\",\n \"bucket_name\": \"\",\n \"container_name\": \"\"\n },\n \"attribute_level_mapping\": [{\n \"powerbi_column_name\": \"\",\n \"qualdo_column_name\": \"\"\n },\n {\n \"powerbi_column_name\": \"\",\n \"qualdo_column_name\": \"\"\n }\n ]\n}\n\n*/\n }\n\n handleclose() {\n let flag = false;\n this.setState({authfailmodal:flag});\n }\n\n getData() {\n this.CallAPI(\"getMappingDataset\");\n this.CallAPI(\"DRXMappingDataset\");\n }\n\n componentDidMount() {\n this.getData();\n }\n\ncomponentDidUpdate() {\n\n}\n\n\nhandleNavSelect (pm) {\n\n}\n\n\nselectEnv(e) {\n\n var envcheck = [];\n let env = this.state.drx_dataset;\n let envoptions = []; \n env.filter(function (el) {\n if(envcheck.indexOf(el.datasource_id) === -1 && el.env_id===e.value) {\n\n envcheck.push(el.datasource_id);\n var envselectobj = {};\n envselectobj.value = el.datasource_id;\n envselectobj.label = el.datasource_name;\n envoptions.push(envselectobj);\n return el;\n\n }\n return el;\n });\n this.setState({mapping_datasource_options:envoptions,selected_env:e,selected_datasource:null});\n}\n\nselectDataset(e){\n let env = this.state.drx_dataset;\n let envoptions,coloptions=[]; \n env.filter(function (el) {\n if(el.dataset_id===e.value) {\n envoptions = el.col_details;\n\n for (let i=0; i {\n const attribute = event.target.getAttribute('name')\n this.setState({ [attribute]: event.target.value.trim() })\n}\n\n\nAvoidSpace(event) {\n var k = event ? event.which : window.event.keyCode;\n if (k === 32) return false;\n}\n\n\n render() {\n \n\n const featureAccess = getFeatureAccess();\n let enablePowerBiTab = false;\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const powerbiTab = featureAccess[\"powerbi\"];\n enablePowerBiTab = powerbiTab === true;\n }\n // let envoptions = this.state.mapping_env_options;\n let cols = this.state.selected_cols;\n\n return (\n enablePowerBiTab ? \n <>\n \n \n
    \n
    \n\n : \n \n }\n />\n
    \n
    \n\n\n\n \n
    \n Mapping\n
    \n
    \n \n\n\n\n
    \n
    \n \n
    \n \n
    \n
    \n \n \n\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n label.includes(query)}\n className=\"select-control\"\n classNamePrefix='select-control'\n options={this.state.mapping_env_options}\n placeholder=\"Choose Metrics\"\n onChange={this.selectEnv}\n />\n \n\n { this.state.err_env === 1 ?\n {\"Please Select an Environment\"} : \"\"}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n\n label.includes(query)}\n className=\"select-control\"\n classNamePrefix='select-control'\n options={this.state.mapping_datasource_options}\n placeholder=\"Choose Datasource\"\n onChange={this.selectDatasource}\n />\n\n{ this.state.err_datasource === 1 ?\n {\"Please Select a Datasource\"} : \"\"}\n \n\n \n
    \n
    \n
    \n\n\n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n\n label.includes(query)}\n className=\"select-control\"\n classNamePrefix='select-control'\n options={this.state.mapping_dataset_options}\n placeholder=\"Choose Dataset\"\n onChange={this.selectDataset}\n />\n\n{ this.state.err_datset === 1 ?\n {\"Please Select a Dataset\"} : \"\"}\n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n \n\n
    \n

    Source: customer_data

    \n

    Destination: qualdo-customer_data

    \n
    \n \n
    \n
    \n
    \n
    \n
    DRX Dataset Attributes
    \n
    \n
    \n
    Power BI Dataset Attributes
    \n
    \n
    \n
    \n\n
    \n {\n Object.keys(cols).map((col, i) => (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n ))}\n \n
    \n\n\n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n {this.state.model_fotter_button_step===1 ? \n \n
    \n \n
    \n\n :\n
    \n \n \n
    \n }\n
    \n
    \n\n\n : <>\n );\n }\n}\n\nexport default AttributeReport;","import React from \"react\";\nimport Image from \"../components/image\";\nimport {connect} from \"react-redux\";\n\nclass PBIDashbordViewFullScreen extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n updatedKey: \"k1\",\n fullScreenData: {},\n variant: this.props.variant,\n isModelErrFullscreenMode: this.props.isModelErrFullscreenMode,\n prowerbireporturl:this.props.prowerbireporturl,\n powerbititle:this.props.powerbititle\n\n\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.isModelErrFullscreenMode !== state.isModelErrFullscreenMode) {\n return {\n isModelErrFullscreenMode: props.isModelErrFullscreenMode\n }\n }\n\n if (props.powerbititle !== state.powerbititle) {\n return {\n powerbititle: props.powerbititle\n }\n }\n\n if (props.prowerbireporturl !== state.prowerbireporturl) {\n return {\n prowerbireporturl: props.prowerbireporturl\n }\n }\n return null;\n }\n\n \n \n\n componentDidMount() {\n\n var powerbi = window.powerbi;\n var embedConfiguration = {\n type: 'report',\n id:this.props.prowerbireportid,\n embedUrl:this.props.prowerbireporturl,\n accessToken: localStorage.getItem(\"pb_auth_token\"),\n // accessToken:this.props.prowerbireporturl, \n // id:'dcfa9065-d35a-47ee-9f12-826da976c18c',\n // embedUrl:'https://app.powerbi.com/reportEmbed?reportId=dcfa9065-d35a-47ee-9f12-826da976c18c&groupId=cbbe7bb1-aaac-4a73-ac84-2dc66c236597&w=2&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUlORElBLUNFTlRSQUwtQS1QUklNQVJZLXJlZGlyZWN0LmFuYWx5c2lzLndpbmRvd3MubmV0IiwiZW1iZWRGZWF0dXJlcyI6eyJtb2Rlcm5FbWJlZCI6dHJ1ZSwiYW5ndWxhck9ubHlSZXBvcnRFbWJlZCI6dHJ1ZSwiY2VydGlmaWVkVGVsZW1ldHJ5RW1iZWQiOnRydWUsInVzYWdlTWV0cmljc1ZOZXh0Ijp0cnVlLCJza2lwWm9uZVBhdGNoIjp0cnVlfX0%3d',\n // accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyIsImtpZCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyJ9.eyJhdWQiOiJodHRwczovL2FuYWx5c2lzLndpbmRvd3MubmV0L3Bvd2VyYmkvYXBpIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvMmIxMjdjN2QtMWEwYi00ZTk4LThlOWUtZDMzM2EyYzc4YmE3LyIsImlhdCI6MTY1MzM1ODQzOCwibmJmIjoxNjUzMzU4NDM4LCJleHAiOjE2NTMzNjI2ODAsImFjY3QiOjAsImFjciI6IjEiLCJhaW8iOiJFMlpnWUdBdlAvMm1jdTIwRTl1T3h0V0pwaFMyWFAyVlpLZklYS084UmVGdlNieEJtamtBIiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjNhNTM2MjEwLWU0M2QtNGZlNy04ZTdjLWQ4OGQ2YTg0NzkyNiIsImFwcGlkYWNyIjoiMCIsImlwYWRkciI6IjI3LjUuODkuMTA1IiwibmFtZSI6InByb2R1Y3RfZGV2Iiwib2lkIjoiY2Q1ZTYzZTAtOGE5Ni00OTQ2LThhOTQtZWRmNzdhODI0NzU1IiwicHVpZCI6IjEwMDMyMDAxRUZDMzYwOTgiLCJyaCI6IjAuQVNvQWZYd1NLd3NhbUU2T250TXpvc2VMcHdrQUFBQUFBQUFBd0FBQUFBQUFBQUFxQURrLiIsInNjcCI6IkFwcC5SZWFkLkFsbCBDYXBhY2l0eS5SZWFkLkFsbCBDYXBhY2l0eS5SZWFkV3JpdGUuQWxsIENvbnRlbnQuQ3JlYXRlIERhc2hib2FyZC5SZWFkLkFsbCBEYXNoYm9hcmQuUmVhZFdyaXRlLkFsbCBEYXRhZmxvdy5SZWFkLkFsbCBEYXRhZmxvdy5SZWFkV3JpdGUuQWxsIERhdGFzZXQuUmVhZC5BbGwgRGF0YXNldC5SZWFkV3JpdGUuQWxsIEdhdGV3YXkuUmVhZC5BbGwgR2F0ZXdheS5SZWFkV3JpdGUuQWxsIFJlcG9ydC5SZWFkLkFsbCBSZXBvcnQuUmVhZFdyaXRlLkFsbCBTdG9yYWdlQWNjb3VudC5SZWFkLkFsbCBTdG9yYWdlQWNjb3VudC5SZWFkV3JpdGUuQWxsIFdvcmtzcGFjZS5SZWFkLkFsbCBXb3Jrc3BhY2UuUmVhZFdyaXRlLkFsbCIsInN1YiI6Ims3NkNEcmlPX2hWbHlkM0ZIb1dNdWhnTmRCUTh5ZS1WRHRiYl9ockhJN2siLCJ0aWQiOiIyYjEyN2M3ZC0xYTBiLTRlOTgtOGU5ZS1kMzMzYTJjNzhiYTciLCJ1bmlxdWVfbmFtZSI6InByb2R1Y3RfZGV2QHNhdHVyYW0uY29tIiwidXBuIjoicHJvZHVjdF9kZXZAc2F0dXJhbS5jb20iLCJ1dGkiOiJMeF90VlFNZjZrcXBtblcxOWpzTEFBIiwidmVyIjoiMS4wIiwid2lkcyI6WyJiNzlmYmY0ZC0zZWY5LTQ2ODktODE0My03NmIxOTRlODU1MDkiXX0.ThvIQGdXKHnctqAWwO-atURfUzQtCckuD4TWizfG6qQwkIs2adwesNE_ig4gXPjhLRosO5P9m21bWvp_a6XfF5--kruJzLB39weq4_l6WFGcBYi8mpC8ll8A4ZcakSMAcVw3bCWOA_KTHKVdabhSCHYCVBxjHjCDq7KPMV5WAk_P5TgqVP6J0slI63kad_HA099kjglDpi1Q-G4NqZyHvSIo2jDgMY-WrOFZSHJ1Wbz6G2lFOTU1LN2hNI20tIwx7VjhknCDhPy16PAQGhYg9539_hDcxgj9ylAbt7AkDP28TYV0jYfV4BsvuSkvqdKJ7yI9g6TvsAowTNe3_BSH_w',\n settings: {\n }\n };\n powerbi.embed(document.getElementById(\"dashboardContainer\"), embedConfiguration);\n }\n\n render() {\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n

    {this.props.powerbititle}

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n )\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(PBIDashbordViewFullScreen);","import React from 'react';\nimport BreadCrumb from '../components/breadCrumb';\nimport NavigationHeader from '../components/navigationHeader';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport Image from '../components/image';\nimport { Table, Col } from 'react-bootstrap';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTimesCircle,faArrowRight } from '@fortawesome/free-solid-svg-icons';\nimport Modal from \"react-bootstrap/Modal\";\nimport PBIDashbordViewFullScreen from \"./pbireport\";\nimport BasicPortlet from '../components/basicPortlet';\nimport {CallAPI} from \"./pbihandling\";\nimport Load from '../components/loadAction';\nimport { Link } from 'react-router';\nimport {toastObj} from \"../utils/common_utils\";\nimport Toast from \"react-bootstrap/Toast\";\nimport Tab from 'react-bootstrap/Tab';\nimport Nav from 'react-bootstrap/Nav';\nimport {getFeatureAccess} from \"../utils/common_utils\";\nimport {IS_NONE_CHECK} from \"../utils/constant\";\nimport {browserHistory} from 'react-router';\n// import $ from \"jquery\";\n\nclass Report extends React.Component {\n constructor (props) {\n super(props);\n\n this.state = {\n isToggleOn: false,\n isModelErrFullscreenMode:false,\n powerbidashboard_data:null,\n powerbidataset_data:null,\n pbi_selected_name:null,\n prowerbireportid:null,\n prowerbireporturl:null,\n powerbistausupdatetoast:'',\n powerbiactionid:null,\n powerbiactionflag:null,\n toastStatus : false\n };\n\n this.openModal = this.openModal.bind(this)\n this.handleclose = this.handleclose.bind(this)\n this.pireportfullscreen = this.pireportfullscreen.bind(this)\n this.closepireportfullscreen = this.closepireportfullscreen.bind(this)\n this.pireportdatasetfullscreen = this.pireportdatasetfullscreen.bind(this)\n this.pbistatus = this.pbistatus.bind(this)\n this.CallAPI = CallAPI.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeToast = this.closeToast.bind(this);\n }\n\n showToast(status, msg, link) {\n \n this.setState({\n toastStatus: true,\n toastMsg: msg,\n toastClass: toastObj[status][\"className\"],\n toastLink: link,\n toastIcon: toastObj[status][\"icon\"],\n toastHeading: toastObj[status][\"heading\"]\n });\n\n if (link.trim().length > 0) {\n setTimeout(function () {\n window.location.href = link;\n }, 3000);\n }\n }\n\n closeToast() {\n this.setState({toastStatus: false}, this.getData);\n }\n\n componentDidUpdate(){\n // if(this.state.powerbistausupdatetoast!==\"\"){\n // this.showToast(\"alert-success\", \"Email Subscriptions Sucessfully Updated\", \"\");\n // }\n }\n\n getData() {\n\n // let json = {\"code\":200,\"datasources\":[{\"added\":1,\"environment_name\":\"Test\",\"integration_id\":1,\"integration_name\":\"Sample Admin\",\"workspace_name\":\"ALL \"},{\"added\":0,\"environment_name\":\"Test\",\"integration_id\":1,\"integration_name\":\"Sample Admin\",\"workspace_name\":\"pbiconnector\"}],\"datasources_others\":[{\n // \"added\": 0,\n // \"environment_name\": \"Test\",\n // \"integration_id\": 1,\n // \"integration_name\": \"Sample Admin\",\n // \"workspace_name\": \"pbiconnector\"\n // }],\"message\":\"Successfully fetched\",\"tenant_id\":\"1\"}\n // // let json = {\"code\":200,\"datasources\":[],\"datasources_others\":[],\"message\":\"Successfully fetched\",\"tenant_id\":\"1\"}\n // this.setState({setupdata:json});\n \n // let newArrayall = json.datasources.filter(function (el) {\n // return el.added > 0 || el.added === 0 \n // });\n \n // let newArray = json.datasources.filter(function (el) {\n // return el.added > 0 \n // });\n // if(newArray.length === 0 && newArrayall.length === 0){\n // $(\"#powerbi_setup_flow\").removeClass(\"d-none\");\n // $(\"#powerbi_error_flow\").addClass(\"d-none\");\n // $(\"#btn_powerbi_configure\").show();\n // $(\"#btn_powerbi_setup\").hide();\n // $(\"#powerbi_err_heading\").html(\"No Power BI connection\"); \n // $(\"#powerbi_err_desc\").html(\"The PowerBI connection does not exist. Using the configure button, set up your Power BI connection to Qualdo™.\");\n // }\n // else if(newArray.length === 0 && newArrayall.length > 0){\n // $(\"#powerbi_setup_flow\").removeClass(\"d-none\");\n // $(\"#powerbi_error_flow\").addClass(\"d-none\");\n // $(\"#btn_powerbi_configure\").hide();\n // $(\"#btn_powerbi_setup\").show();\n // $(\"#powerbi_err_heading\").html(\"Setup Power BI connection\"); \n // $(\"#powerbi_err_desc\").html(\"Set up your Power BI connection to Monitoring Status.\");\n // }\n // else {\n // $(\"#powerbi_error_flow\").removeClass(\"d-none\");\n // $(\"#powerbi_setup_flow\").addClass(\"d-none\");\n // // this.CallAPI(\"powerbierrordashboard\");\n // // this.CallAPI(\"powerbierrordataset\");\n // // this.CallAPI(\"token\");\n // }\n this.CallAPI(\"powerbierrconnector\");\n this.CallAPI(\"powerbierrordashboard\");\n this.CallAPI(\"powerbierrordataset\");\n this.CallAPI(\"token\");\n }\n\n componentDidMount() {\n if(localStorage.getItem('setupmessage') === \"1\"){\n localStorage.setItem('setupmessage',\"\");\n this.showToast(\"alert-success\", 'Qualdo will create the default workspace name called \"QUALDO_PBI_WORKSPACE\"', \"\");\n }\n this.getData();\n // $(\"#btn_powerbi_configure\").hide();\n // $(\"#btn_powerbi_setup\").hide();\n }\n\n openModal() {\n this.setState({isToggleOn:true});\n }\n\n handleclose() {\n this.setState({isToggleOn:false});\n }\n\n pireportfullscreen(row){\n document.body.classList.add(\"overflow-hidden\");\n this.setState({\n isModelErrFullscreenMode:true,\n modelErrFullScreenClassKey:\"show\",\n pbi_selected_name:row[\"Name\"],\n prowerbireportid:row[\"Actions\"][\"pbierrordashboard\"][\"powerbi_dashboard_id\"],\n prowerbireporturl:row[\"Actions\"][\"pbierrordashboard\"][\"embed_url\"]\n });\n }\n\n pireportdatasetfullscreen(row){\n document.body.classList.add(\"overflow-hidden\");\n this.setState({\n isModelErrFullscreenMode:true,\n modelErrFullScreenClassKey:\"show\",\n pbi_selected_name:row[\"Dataset Name\"],\n prowerbireportid:row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"powerbi_id\"],\n prowerbireporturl:row[\"Reports & Dashboards\"][\"pbierrordataset\"][\"embedUrl\"]\n });\n }\n\n closepireportfullscreen(){\n document.body.classList.remove(\"overflow-hidden\");\n this.setState({isModelErrFullscreenMode:false,modelErrFullScreenClassKey:\"\"});\n }\n\n pbistatus(e){\n let tabledata = this.state.powerbidashboard_data;\n tabledata.data[e.target.id][6][\"pbierrordashboard\"][\"actions\"] = e.currentTarget.checked === true ? \"1\" : \"0\";\n this.setState({ powerbidashboard_data:tabledata,\n powerbiactionid:tabledata.data[e.target.id][6][\"pbierrordashboard\"][\"id\"],\n powerbiactionflag:tabledata.data[e.target.id][6][\"pbierrordashboard\"][\"actions\"] }, () => { \n this.CallAPI(\"savedashboardstatus\");\n })\n }\n gotoconfiguration() {\n browserHistory.push(\"/configure\");\n }\n\n gotosetup() {\n browserHistory.push(\"/pbi-setup\");\n }\n\n render() {\n const featureAccess = getFeatureAccess();\n let enablePowerBiTab = false;\n if (!IS_NONE_CHECK.includes(featureAccess)) {\n const powerbiTab = featureAccess[\"powerbi\"];\n enablePowerBiTab = powerbiTab === true;\n }\n // enablePowerBiTab = true;\n return (\n enablePowerBiTab?\n <>\n\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n

     

    \n

     

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n \n \n\n
    \n\n \n
    \n\n \n\n\n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n{/* \n\n \n \n \n

    Configure your first dataset

    \n

    Configure your first dataset with Qualdo to identify Dashboard/Reporter’s issue.

    \n
    \n \n Configure Now\n \n
    \n */}\n\n \n : \n \n }\n />\n \n
    \n \n\n {/* \n \n \n \n

    Configure your first dataset

    \n

    Configure your first dataset with Qualdo to identify Dashboard/Reporter’s issue.

    \n
    \n \n Configure Now\n \n
    \n */}\n \n
    Data Profiling is In progress ...
    : \n \n }\n />\n\n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n
    \n \n \n \n \n

    Configure your first dataset

    \n

    Configure your first dataset with Qualdo to identify Dashboard/Reporter’s issue.

    \n
    \n {/* */}\n Configure Now\n \n
    \n \n \n <>\n : \n \n }\n />\n\n : \n \n }\n />\n \n \n
    \n
    \n
    \n
    \n Monitoring Dashboard\n
    \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n Show\n \n items\n
    \n
    \n
    \n
    \n Search:\n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    S.No\n \n \n \n \n \n \n \n \n Dashboard Name\n \n \n \n \n \n \n \n \n Quality Status\n \n \n \n \n \n \n \n \n Type\n \n \n \n \n \n \n \n \n Owner\n \n \n \n \n \n \n \n \n Refreshed\n \n \n \n \n \n \n \n \n Processing Status\n \n \n \n \n \n \n \n \n Last Processing Time\n \n \n \n \n \n \n \n \n Action\n \n \n \n \n \n \n \n \n
    1Star Dashboard-Qualdo--Namequaldo Wed, 17 Jun 2020 11:48:32 GMTNot yet startedWed, 17 Jun 2020 11:48:32 GMT\n
    \n \n \n
    \n
    2BB-Qualdo--Reportqualdo Tue, 15 Feb 2022 12:04:32 GMT No ErrorsCompletedTue, 15 Feb 2022 12:04:32 GMT\n
    \n \n \n
    \n
    3star_training_data-Qualdo--Reportqualdo Mon, 12 Jan 2022 11:11:10 GMTIn ProgressMon, 12 Jan 2022 11:11:10 GMT\n
    \n \n \n
    \n
    4order-report-icon ErrorDashboardqualdo Tue, 15 Feb 2022 12:04:32 GMTCompletedTue, 15 Feb 2022 12:04:32 GMT\n
    \n \n \n
    \n
    5Customer Profitability Sample-Qualdo--Dashboardqualdo Tue, 15 Feb 2022 12:04:32 GMTFailed AuthenticationTue, 15 Feb 2022 12:04:32 GMT\n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n\n\n {this.state.isModelErrFullscreenMode ?\n \n : ''\n }\n\n\n\n
    \n this.closeToast()}\n show={this.state.toastStatus}\n delay={3000} autohide>\n
    \n\n {this.state.toastStatus ?\n \n \n \n :\n ''\n }\n\n \n {this.state.toastheading}\n

    { this.state.toastMsg }

    \n
    \n
    \n
    \n
    \n\n\n\n\n \n
    \n Mapping\n
    \n
    \n \n\n \n \n \n
    \n\n : \n <> \n );\n }\n}\n\nexport default Report;","import React from 'react';\nimport { call_get_api } from \"../utils/event_handling\";\nimport Image from '../components/image';\nimport { iam_ip, APP_BASE_URL } from \"../utils/ip_details\";\n\n\nimport { connect } from \"react-redux\";\n//import { Link } from 'react-router';\n\nimport {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setEndDate,\n setStartDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setTenantId,\n setInitialValues,\n setAttribute,\n setDataSet,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n setMonitorInitialValues,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n setMLModel,\n addMLModel,\n addModelPerformance, addModelDetails,\n addMonitorDQListViewData, addMetrics, addDatasetVersions,\n addUniquenessDataSetInfo, addUniquenessAttributeInfo, addRecencyDetails,\n addRecentHistory, addDataSize, addRecencyPreview, prefetchMonitorState, noIntegration\n\n} from \"../redux/actions\";\nimport { getProtocol, getCompleteEndpoint } from \"../utils/common_utils\";\nimport { LOGIN_SOURCE } from \"../utils/constant\"\nimport {perform_login_initial_setup} from \"../login/login_initial_steps\";\n\nclass MSILogin extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {\n errors:null\n };\n this.login = this.login.bind(this);\n this.perform_login_initial_setup = perform_login_initial_setup.bind(this);\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n }\n\n login() {\n call_get_api(iam_ip, \"msi/user_details\").then((response) => {\n // Following function performs required prefetches and initial setups\n this.perform_login_initial_setup(LOGIN_SOURCE.MSI_LOGIN_SRC,\n response, {});\n });\n\n }\n\n componentDidMount() {\n this.getData();\n }\n\n getData() {\n this.login()\n }\n getUrl() { \n let protocol = getProtocol(APP_BASE_URL);\n let reqEndPoint = getCompleteEndpoint(protocol, APP_BASE_URL, \n \"login?error_message=\" + this.state.errors);\n window.location.href = reqEndPoint \n }\n\n render() {\n return (\n <>\n {!this.state.errors ?\n
    \n
    \n
    \n Loading...\n
    \n
    \n :this.getUrl()\n }\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(\n mapStateToProps, {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setStartDate,\n setEndDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setTenantId,\n setInitialValues,\n setDataSet,\n setAttribute,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n setMonitorInitialValues,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n setMLModel,\n addModelPerformance,\n addModelDetails,\n addMonitorDQListViewData,\n addMetrics,\n addDatasetVersions,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyDetails,\n addRecencyPreview,\n addRecentHistory,\n addDataSize,\n prefetchMonitorState,\n noIntegration\n}\n)(MSILogin);","import React from 'react';\nimport Image from '../components/image';\nimport { iam_ip, APP_BASE_URL } from \"../utils/ip_details\";\n\nimport { connect } from \"react-redux\";\n//import { Link } from 'react-router';\n\nimport {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setEndDate,\n setStartDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setTenantId,\n setInitialValues,\n setAttribute,\n setDataSet,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n setMonitorInitialValues,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n setMLModel,\n addMLModel,\n addModelPerformance, addModelDetails,\n addMonitorDQListViewData, addMetrics, addDatasetVersions,\n addUniquenessDataSetInfo, addUniquenessAttributeInfo, addRecencyDetails,\n addRecentHistory, addDataSize, addRecencyPreview,\n prefetchMonitorState, noIntegration\n\n} from \"../redux/actions\";\nimport {\n getProtocol,\n getCompleteEndpoint\n} from \"../utils/common_utils\";\nimport { call_post_api } from \"../utils/event_handling\";\nimport { LOGIN_SOURCE } from \"../utils/constant\"\nimport { perform_login_initial_setup } from \"./login_initial_steps\";\n\nclass GoogleLoginLoader extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {\n errors: null\n };\n this.getLoginData = this.getLoginData.bind(this);\n this.perform_login_initial_setup = perform_login_initial_setup.bind(this);\n }\n\n componentDidCatch(error, info) {\n this.setState({ errorOccurred: true });\n }\n\n getLoginData() {\n let user_id = localStorage.getItem('user_id');\n let team_id = localStorage.getItem('team_id');\n let data = { \"user_id\": user_id, \"team_id\": team_id };\n\n call_post_api(iam_ip, \"google_login/user_details\", data).then((response) => {\n\n // Following function performs required prefetches and initial setups\n this.perform_login_initial_setup(LOGIN_SOURCE.GOOGLE_LOGIN_SRC,\n response, {});\n });\n }\n\n componentDidMount() {\n this.getData();\n }\n\n getData() {\n this.getLoginData()\n }\n getUrl() {\n let protocol = getProtocol(APP_BASE_URL);\n let reqEndPoint = getCompleteEndpoint(protocol, APP_BASE_URL, \"login?error_message=\" + this.state.errors);\n window.location.href = reqEndPoint\n }\n\n render() {\n return (\n <>\n { this.state.errors === null ?\n
    \n
    \n
    \n Loading...\n
    \n
    \n : this.getUrl()\n }\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(\n mapStateToProps, {\n setDataSource,\n setMlDataSource,\n addRelationship,\n addMetaData,\n addDataSource,\n addInfo,\n addLastProfilingTime,\n setStartDate,\n setEndDate,\n addDiscoveryStatus,\n addProcessingStatus,\n addEnvironment,\n addEnvironmentDataSourceMapping,\n addDataSourceDataSetMapping,\n addDataSetAttributeMapping,\n setTenantId,\n setInitialValues,\n setDataSet,\n setAttribute,\n addMonitorPreview,\n addPerformancePreview,\n addCompletenessDataSetInfo,\n setMonitorInitialValues,\n addCompletenessAttributeInfo,\n addTimelinessDataSetInfo,\n addTimelinessAttributeInfo,\n addConformityDataSetInfo,\n addConformityAttributeInfo,\n addAccuracyDataSetInfo,\n addAccuracyAttributeInfo,\n addDriftDataSetInfo,\n addDriftAttributeInfo,\n addConsistencyDataSetInfo,\n addConsistencyAttributeInfo,\n addMLModelMapping,\n addMLDataSetInfo,\n addMLAttributeInfo,\n addMLModel,\n setMLModel,\n addModelPerformance,\n addModelDetails,\n addMonitorDQListViewData,\n addMetrics,\n addDatasetVersions,\n addUniquenessDataSetInfo,\n addUniquenessAttributeInfo,\n addRecencyDetails,\n addRecencyPreview,\n addRecentHistory,\n addDataSize,\n prefetchMonitorState,\n noIntegration\n}\n)(GoogleLoginLoader);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport CopyRights from '../../components/copyrights';\nimport { faEnvelope, faArrowLeft } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport EmailNotification from '../../signup/components/email';\nimport { iam_ip } from \"../../utils/ip_details\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { call_post_api } from \"../../utils/event_handling\";\nimport Image from '../../components/image';\nimport Banner from '../../components/banner';\nimport { IS_SAAS_EDITION } from \"../../utils/constant\"\n\n\nclass ForgotPassword extends React.Component {\n constructor(props) {\n super(props);\n this.forgotPassword = this.forgotPassword.bind(this);\n this.hideAlert = this.hideAlert.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.state = {\n formValid: false,\n errorCount: null,\n hideSubmitButton: false,\n errors: {\n email: '',\n },\n email:'',\n responseText:'',\n isRedirectToThankYou : false\n };\n }\n\n hideAlert() {\n let errors = this.state.errors;\n errors.email = '';\n this.setState({errors:errors,hideSubmitButton: false})\n }\n\n disableButton() {\n this.setState({hideSubmitButton: true});\n }\n\n\n forgotPassword(event) {\n this.disableButton();\n let { email } = event;\n this.setState({email:email})\n let errors = this.state.errors;\n const forgot_data= {email: email};\n call_post_api(iam_ip, \"forgot-password\", forgot_data).then((response) => {\n errors.email = response.message;\n this.setState({errors:errors,hideSubmitButton: false});\n if (response.code === 200) {\n this.setState({responseText:response.message})\n this.setState({isRedirectToThankYou :true})\n }\n\n });\n }\n\n render() {\n const forgotPasswordSchema = yup.object({\n email: yup.string().email(\"Email must be a valid email\").required(\"Email is a required field\"),\n });\n const {errors} = this.state;\n return (\n\n
    \n
    \n
    \n
    \n {\n IS_SAAS_EDITION?\n \n :\n \n } \n {this.state.isRedirectToThankYou === false ?\n
    \n

    To Reset Password,

    \n

    Enter your username or email below, and we’ll send you an email with a link that will allow you to reset your password.

    \n {\n IS_SAAS_EDITION ? \n

    Note: You can’t recover a Google Accounts password through this form. For those accounts, visit Google Accounts.

    \n :\n ''\n }\n \n
    \n { errors.email !== '' ?\n
    \n {errors.email}\n \n
    : \"\"\n }\n \n {({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n handleSubmit,\n isSubmitting,\n isValid,\n }) => (\n \n \n Email Address *\n \n \n \n \n { touched.email && errors.email }\n \n \n \n
    \n Back\n \n
    \n \n )}\n \n \n
    \n
    \n : \n \n\n }\n
    \n
    \n \n
    \n
    \n \n );\n }\n\n}\n\nexport default ForgotPassword;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Route, Router, browserHistory, Redirect} from 'react-router';\nimport Home from './login/index';\nimport Signup from './signup/index';\nimport DefaultHome from './home/index';\nimport resetPasswordForm from './reset_password/index';\nimport setPasswordForm from './set_password/index';\nimport InitiateSetPassword from './set_password/components/initiateSetPassword';\nimport Configure from './configure/index';\nimport Metrics from './metrics/index';\nimport Monitor from './monitor/index';\nimport Consume from './consume/index';\nimport Setup from './setup/index';\nimport Settings from './settings/index';\nimport Discover from './discover/index';\nimport QuickStart from './components/quick_start';\nimport VideoHelp from './components/video_help';\nimport PrivacyPolicy from './components/privacyPolicy';\nimport FreeTrialAgreement from './components/freeTrialAgreement';\nimport CookiePolicy from './components/cookiePolicy';\nimport Notifications from './notifications/index';\nimport DataProfile from './profile/data/index';\nimport MLProfile from './profile/ml/index';\nimport ChoosePlan from './components/choose_plan';\nimport Payment from './components/payment';\nimport showUserStatus from './settings/components/userDisabledMessage'\nimport EmailNotification from './signup/components/email';\nimport Unsubscribe from './components/unsubscribe';\nimport PBISetup from './pbi/pbisetup';\nimport PBIMapping from './pbi/pbimapping';\nimport PBIErrors from './pbi/pbierrors';\nimport MSILogin from './msi_login/index'\nimport GoogleLoginLoader from './login/google_login_loader'\n\n\nimport * as serviceWorker from './serviceWorker';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'react-bootstrap-table/dist/react-bootstrap-table.min.css';\nimport '@fortawesome/fontawesome-svg-core/styles.css';\nimport './sass/main.scss';\nimport {\n // preFetchMetaData,\n // preFetchUserNotifications,\n // prefetchDatasetDetails,\n // prefetchRecencyDetails,\n // prefetchModelABData,\n // prefetchRecentHistory, prefetchDataSize,\n} from \"./utils/dataFetch\";\n\n\n// import {\n// preFetchMonitorPreview,\n// preFetchMonitorInfo,\n// preFetchMonitorModelInfo,\n// preFetchModelDetails,\n// preFetchMonitorListViewData,\n// preFetchMetrics,\n// preFetchFollowAttributes\n// } from \"./utils/monitorDataFetch\";\n\nimport { PersistGate } from 'redux-persist/integration/react';\nimport { Provider } from 'react-redux';\nimport { persistStore } from 'redux-persist';\nimport store from \"./redux/store\";\n\n// import {\n// setDataSource,\n// setMlDataSource,\n// addRelationship,\n// addMetaData,\n// addDataSource,\n// addInfo,\n// addLastProfilingTime,\n// setStartDate,\n// setEndDate,\n// addDiscoveryStatus,\n// addProcessingStatus,\n// addEnvironment,\n// addEnvironmentDataSourceMapping,\n// addDataSourceDataSetMapping,\n// addDataSetAttributeMapping,\n// setTenantId,\n// setInitialValues,\n// setAttribute,\n// setDataSet,\n// addMonitorPreview,\n// addPerformancePreview,\n// addCompletenessDataSetInfo,\n// setMonitorInitialValues,\n// addCompletenessAttributeInfo,\n// addTimelinessDataSetInfo,\n// addTimelinessAttributeInfo,\n// addConformityDataSetInfo,\n// addConformityAttributeInfo,\n// addAccuracyDataSetInfo,\n// addAccuracyAttributeInfo,\n// addDriftDataSetInfo,\n// addDriftAttributeInfo,\n// addConsistencyDataSetInfo,\n// addConsistencyAttributeInfo,\n// addMLModelMapping,\n// addMLDataSetInfo,\n// addMLAttributeInfo,\n// setMLModel,\n// addMLModel, addModelPerformance, addModelDetails,\n// addMonitorDQListViewData,\n// addMetrics,\n// addUserNotificationToState, addDatasetVersions,\n// addUniquenessDataSetInfo,\n// addUniquenessAttributeInfo, addRecencyDetails, addRecentHistory, addDataSize, setModelABDataToList,\n// addRecencyPreview,prefetchMonitorState,\n// addFollowAttributes, noIntegration\n// } from \"./redux/actions\";\n\nimport {\n setTenantId,\n setInitialValues,\n setMonitorInitialValues\n} from \"./redux/actions\";\n\nimport {ACCOUNT_FREE_URLS, IS_NONE_CHECK, MANDATE_RESET_PASSWORD, QualdoEditionMapping} from \"./utils/constant\";\nimport {QualdoPlanCycle, QualdoPlanVersions, LOCAL_STORE_KEY,IS_SAAS_EDITION} from \"./utils/constant\";\nimport {getRedirectionLinkToExpiredPlan, getRedirectionLinkToChangePassword, isDataLimitExceeded,\n removeLocalStorageKeys, decryptMsg, encryptForLocalUsage, checkExpiryPowerBI, decryptForLocalUsage } from \"./utils/common_utils\";\nimport {call_get_api} from \"./utils/event_handling\";\nimport {ui_service_ip} from \"./utils/ip_details\";\nimport {postMixpanel} from './mixpanel';\nimport ForgotPassword from './login/components/forgotPassword';\n\nimport {\n GTM_INTEGRATION_TOKEN, GTM_ID,\n GTM_PREVIEW, GTM_EVENTS\n} from \"./utils/constant\";\nimport TagManager from 'react-gtm-module'\n\nlet persistor = persistStore(store);\n\nconst PrivateRoute = ({\n component: Component,\n ...rest }) => {\n let search = window.location.search;\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let isPlanExpired = decrypt_data['isPlanExpired']\n let isInBufferPeriod = decrypt_data['isInBufferPeriod']\n // let isPlanExpired = localStorage.getItem(\"isPlanExpired\");\n // let isInBufferPeriod = localStorage.getItem(\"isInBufferPeriod\");\n let reset_password = localStorage.getItem(MANDATE_RESET_PASSWORD.Reset_Password)\n\n if(isPlanExpired === true && isInBufferPeriod=== false && window.location.pathname !== \"/\" && window.location.pathname !== \"/payment\" && window.location.pathname !== \"/choose-plan\") {\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n browserHistory.push(redirectionLink);\n }\n if(reset_password === MANDATE_RESET_PASSWORD.One && window.location.pathname !== \"/\") {\n let redirectionLink = getRedirectionLinkToChangePassword();\n browserHistory.push(redirectionLink);\n return;\n }\n\n\n if (window.location.pathname === \"/\") {\n let sessionToken = localStorage.getItem('sessionToken');\n if (sessionToken !== undefined && sessionToken !== null) {\n const item = JSON.parse(sessionToken);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n }\n } else if(isPlanExpired === true && isInBufferPeriod=== false){\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n browserHistory.push(redirectionLink);\n } else if (reset_password === MANDATE_RESET_PASSWORD.One) {\n let redirectionLink = getRedirectionLinkToChangePassword();\n this.props.router.push(redirectionLink);\n } else {\n window.location.href = \"/configure\";\n }\n } else {\n localStorage.removeItem(\"sessionToken\");\n }\n } else if(search.length > 0) {\n let params = new URLSearchParams(search);\n window.history.replaceState({}, document.title, window.location.pathname);\n if(window.location.pathname === \"/setup\") {\n localStorage.setItem(\"DataSetupStatus\", false);\n }\n let token = params.get('auth_token');\n let team_id = params.get('team_id');\n let user_name = params.get('user_name');\n let user_id = params.get('user_id');\n let org_id = params.get(\"org_id\");\n let msi_login = params.get('msi_login');\n let google_login = params.get('google_login');\n\n let req_key = \"msi_data\";\n if (google_login === \"True\") {\n req_key = \"user_data\";\n }\n\n if (msi_login === \"True\" || google_login === \"True\") {\n let decryptMsgData = params.get(req_key);\n decryptMsgData = decryptMsg(decryptMsgData);\n token = decryptMsgData['auth_token']\n team_id = decryptMsgData['team_id']\n user_id = decryptMsgData['user_id']\n }\n\n let name = params.get('name');\n let email = params.get('email');\n let resetPwdToken = params.get('token');\n let currentStatus = params.get(\"current_status\");\n if (currentStatus !== undefined && currentStatus !== null && currentStatus === \"disabled\") {\n window.location = '/user_status';\n }\n\n localStorage.setItem('msi_login', msi_login);\n let permissions = params.get(\"permissions\");\n if (permissions !== undefined && permissions !== null) {\n localStorage.setItem('permissions', permissions);\n }\n if (resetPwdToken !== null && resetPwdToken !== \"undefined\") {\n localStorage.setItem('resetPwdToken', resetPwdToken);\n }\n\n if (email !== \"undefined\" && email != null) {\n // Keys emailId and user_name are used predominantly\n localStorage.setItem('emailId', email);\n localStorage.setItem('user_name', name);\n }\n if (token !==\"undefined\" && token != null) {\n const now = new Date();\n const item = {\n value: token,\n expiry: now.getTime() + 90*60000\n };\n localStorage.setItem('sessionToken', JSON.stringify(item));\n localStorage.setItem('user_name', user_name);\n localStorage.setItem(\"user_id\", user_id);\n localStorage.setItem(\"org_id\", org_id);\n\n }\n if (team_id !==\"undefined\" && token !=null) {\n localStorage.setItem('team_id',team_id)\n }\n\n }\n let DataSetupStatus = localStorage.getItem(\"DataSetupStatus\");\n if(window.location.pathname !== \"/quick-start\" && window.location.pathname !== \"/setup\" && DataSetupStatus === \"false\") {\n window.location.href = \"/setup\";\n }\n const isAuth = localStorage.getItem('sessionToken');\n return (\n \n isAuth ? (\n \n ) : (\n \n )\n }\n />\n );\n }\n\nconst onBeforeLift = () => {\n let search = window.location.search;\n if(localStorage.getItem(LOCAL_STORE_KEY) === null || localStorage.getItem(LOCAL_STORE_KEY).length === 0){\n /**\n * If user tries to change value for this key\n * While reload oy moving to another page, We'll direct the user to login page\n */\n removeLocalStorageKeys();\n let data = {'isPlanExpire':false,'isBufferPeriod':false,'warning_message':false}\n let encrypt_data = encryptForLocalUsage(data)\n localStorage.setItem(LOCAL_STORE_KEY,encrypt_data)\n }\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n let isPlanExpired = decrypt_data['isPlanExpired']\n let isInBufferPeriod = decrypt_data['isInBufferPeriod']\n let reset_password = localStorage.getItem(MANDATE_RESET_PASSWORD.Reset_Password);\n const windowPathName = window.location.pathname;\n if(isPlanExpired === true && isInBufferPeriod=== false && windowPathName !== \"/\" && windowPathName !== \"/payment\" && windowPathName !== \"/choose-plan\") {\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n browserHistory.push(redirectionLink);\n }\n\n if(reset_password === MANDATE_RESET_PASSWORD.One && window.location.pathname !== \"/\") {\n let redirectionLink = getRedirectionLinkToChangePassword();\n browserHistory.push(redirectionLink);\n return;\n }\n\n let logged_in_status = false;\n let sessionToken = localStorage.getItem('sessionToken');\n let isPlanDetailAvailable = localStorage.getItem('isPlanDetailAvailable');\n if (sessionToken !== undefined && sessionToken !== null) {\n const item = JSON.parse(sessionToken);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n if(checkExpiryPowerBI()===false){\n removeLocalStorageKeys();\n }\n } else {\n logged_in_status = true;\n }\n } else {\n if (isPlanDetailAvailable === undefined || isPlanDetailAvailable === null) {\n removeLocalStorageKeys();\n }\n }\n\n\n // Some URLs will be allowed only when user is NOT LOGGED IN.\n // If user tries to access them while logged in, we will redirect them to other pages\n if (logged_in_status === true && ACCOUNT_FREE_URLS.includes(windowPathName)){\n if(isPlanExpired === true && isInBufferPeriod === false) {\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n browserHistory.push(redirectionLink);\n } else if (reset_password === MANDATE_RESET_PASSWORD.One) {\n let redirectionLink = getRedirectionLinkToChangePassword();\n if (this === undefined) {\n browserHistory.push(redirectionLink);\n }else {\n this.props.router.push(redirectionLink);\n }\n\n } else {\n browserHistory.push(\"/configure\");\n }\n } else if(search.length > 0) {\n let params = new URLSearchParams(search);\n\n window.history.replaceState({}, document.title, windowPathName);\n if(windowPathName === \"/setup\") {\n localStorage.setItem(\"DataSetupStatus\", false);\n }\n let error_message = params.get(\"error_message\");\n localStorage.setItem(\"error_message\", error_message);\n let msi_login = params.get('msi_login');\n let token = params.get('auth_token');\n let team_id = params.get('team_id');\n let user_name = params.get('user_name');\n let user_id = params.get('user_id');\n let org_id = params.get(\"org_id\");\n let google_login = params.get('google_login');\n\n let req_key = \"msi_data\";\n if (google_login === \"True\") {\n req_key = \"user_data\";\n }\n\n if (msi_login === \"True\" || google_login === \"True\") {\n let decryptMsgData = params.get(req_key);\n decryptMsgData = decryptMsg(decryptMsgData);\n token = decryptMsgData['auth_token']\n team_id = decryptMsgData['team_id']\n user_id = decryptMsgData['user_id']\n }\n\n let name = params.get('name');\n let email = params.get('email');\n let resetPwdToken = params.get('token');\n let currentStatus = params.get(\"current_status\");\n let user_signup_type = params.get(\"user_signup_type\");\n // let tenantData = {\"tenant_id\": team_id};\n\n if (currentStatus !== undefined && currentStatus !== \"None\" && currentStatus === \"disabled\") {\n browserHistory.push(\"/user_status\");\n }\n\n let notification_id = params.get(\"notification_id\");\n if (!IS_NONE_CHECK.includes(notification_id)) {\n localStorage.setItem(\"selected_notification_id\", notification_id);\n }\n\n localStorage.setItem('msi_login', msi_login);\n let isPlanExpired;\n let isInBufferPeriod;\n if (params.get(\"account_features\") !== null && params.get(\"account_features\") !== undefined) {\n let features = params.get(\"account_features\");\n let account_features = decryptMsg(features);\n let plan_details = account_features[\"plan_details\"];\n plan_details[\"payment_status\"] = account_features[\"payment_status\"];\n \n /**\n * Get data from response and encrypt the data\n * storing encrypted data in localStorage\n * then decrypt the data for update and after update\n * again encrypt and storing in localStorage\n */\n let encrypt_data = encryptForLocalUsage(plan_details)\n localStorage.setItem(LOCAL_STORE_KEY, encrypt_data)\n let decrypt_data = decryptForLocalUsage(localStorage.getItem(LOCAL_STORE_KEY))\n \n isPlanExpired = plan_details[\"is_plan_expired\"];\n isInBufferPeriod = plan_details[\"is_in_buffer_period\"];\n decrypt_data['isPlanExpired'] = isPlanExpired\n decrypt_data['isInBufferPeriod'] = isInBufferPeriod\n decrypt_data['warning_message'] = account_features[\"warning_message\"]\n encrypt_data = encryptForLocalUsage(decrypt_data)\n localStorage.setItem(LOCAL_STORE_KEY, encrypt_data)\n\n // localStorage.setItem(\"isPlanExpired\",isPlanExpired);\n // localStorage.setItem(\"isInBufferPeriod\", isInBufferPeriod);\n // localStorage.setItem(\"warning_message\", account_features[\"warning_message\"]);\n \n localStorage.setItem(\"plan_details\", JSON.stringify(plan_details));\n // These keys used only for new user when redirected from web page\n localStorage.removeItem(\"isPlanDetailAvailable\");\n localStorage.removeItem(\"qualdoPlan\");\n localStorage.removeItem(\"qualdoPlanCycle\");\n localStorage.removeItem(\"qualdoEdition\");\n }\n let feature_access = params.get(\"feature_access\")\n if(feature_access){\n feature_access = JSON.parse(feature_access);\n const encryptedFA = encryptForLocalUsage(feature_access);\n localStorage.setItem('featureAccess', encryptedFA);\n }\n\n let permissions = params.get(\"permissions\");\n if (permissions !== undefined && permissions !== null) {\n permissions = decryptMsg(permissions);\n localStorage.setItem('permissions', permissions);\n }\n if (resetPwdToken !== null && resetPwdToken !== \"undefined\") {\n localStorage.setItem('resetPwdToken', resetPwdToken);\n }\n\n if (email !== \"undefined\" && email != null) {\n localStorage.setItem('emailId', email);\n localStorage.setItem('user_name', name);\n }\n if (token !==\"undefined\" && token != null) {\n const now = new Date();\n const item = {\n value: token,\n user_id : user_id,\n team_id: team_id,\n expiry: now.getTime() + 150*60000\n };\n setTimeout(() => browserHistory.push('/'), 9000000);\n localStorage.setItem('sessionToken', JSON.stringify(item));\n localStorage.setItem('user_name', user_name);\n localStorage.setItem(\"user_id\", user_id);\n localStorage.setItem(\"org_id\", org_id);\n localStorage.setItem('user_signup_type', user_signup_type);\n }\n if (team_id !==\"undefined\" && team_id !== null && token !=null) {\n localStorage.setItem('team_id',team_id)\n }\n\n// call_get_api(ui_service_ip, \"account/features?tenant_id=\"+team_id).then((res_1) => {\n// if (res_1.code === 200) {\n// localStorage.setItem(\"plan_details\", JSON.stringify(res_1[\"plan_details\"]));\n// } else {\n// localStorage.setItem(\"plan_details\", null);\n// }\n// });\n//\n\n let isPlanDetailAvailable = localStorage.getItem('isPlanDetailAvailable');\n if ((isPlanDetailAvailable !== undefined && isPlanDetailAvailable !== null) || isPlanDetailAvailable === true) {\n localStorage.removeItem(\"isPlanDetailAvailable\");\n } else {\n let qualdoPlan = params.get(\"plan\");\n let qualdoPlanCycle = params.get(\"cycle\");\n let qualdoEdition = params.get(\"edition\");\n if ((qualdoPlan === \"undefined\" || qualdoPlan === null) &&\n (qualdoPlanCycle === \"undefined\" || qualdoPlanCycle === null) &&\n (qualdoEdition === \"undefined\" || qualdoEdition === null)){\n // plan, cycle, edition details are not present in url. so assign free trail plan\n qualdoPlan = QualdoPlanVersions.FREE;\n qualdoEdition = QualdoEditionMapping[\"MME\"];\n qualdoPlanCycle = QualdoPlanCycle.TRIAL_14_DAYS;\n localStorage.setItem('qualdoPlan', qualdoPlan);\n localStorage.setItem('qualdoPlanCycle', qualdoPlanCycle);\n localStorage.setItem('qualdoEdition', qualdoEdition);\n }else if(qualdoPlan !== \"undefined\" && qualdoPlanCycle !== \"undefined\" && qualdoEdition !== \"undefined\")\n {\n // plan, cycle, edition details(all 3) are available. check plan is valid\n let url = \"plan/active\";\n let planData = {\"plan\":qualdoPlan,\"cycle\":qualdoPlanCycle,\"edition\":qualdoEdition}\n call_get_api(ui_service_ip, url, planData).then((res_1) => {\n if (res_1.code === 200) {\n // plan details are valid.\n localStorage.setItem('isPlanDetailAvailable', true);\n localStorage.setItem('qualdoPlan', qualdoPlan);\n localStorage.setItem('qualdoPlanCycle', qualdoPlanCycle);\n localStorage.setItem('qualdoEdition', qualdoEdition);\n }else{\n browserHistory.push(\"/invalid-request\");\n }\n });\n } else {\n //some details(plan, cycle, edition) are missing in url params\n browserHistory.push(\"/invalid-request\");\n }\n }\n\n let dataLimitReached = isDataLimitExceeded();\n if ((isPlanExpired === true || isPlanExpired === \"true\") && (isInBufferPeriod === \"false\" || isInBufferPeriod === false)) {\n let redirectionLink = getRedirectionLinkToExpiredPlan();\n browserHistory.push(redirectionLink);\n } else if (dataLimitReached) {\n browserHistory.push(\"/plan\");\n } else if (reset_password === MANDATE_RESET_PASSWORD.One) {\n let redirectionLink = getRedirectionLinkToChangePassword();\n this.props.router.push(redirectionLink);\n }\n\n if (team_id !== undefined && team_id !== null) {\n store.dispatch(setInitialValues())\n store.dispatch(setTenantId(team_id))\n store.dispatch(setMonitorInitialValues())\n\n /* ## \n preFetchMonitorPreview(tenantData, addMonitorPreview,\n addPerformancePreview, addModelPerformance, store); */\n /*preFetchRelationshipData(\n tenantData, setDataSource, addRelationship,\n addDataSource, addInfo, addLastProfilingTime, store\n );*/\n /* ## preFetchMetaData(\n tenantData, addMetaData, addEnvironment,\n addEnvironmentDataSourceMapping, addDataSourceDataSetMapping,\n addDataSetAttributeMapping, setDataSet, setAttribute,\n setDataSource, setMlDataSource, addRelationship, addDataSource, addInfo,\n addLastProfilingTime, setStartDate, setEndDate, addDiscoveryStatus, addProcessingStatus, noIntegration, store\n ); */\n /* ## \n preFetchMonitorInfo(\n tenantData, addCompletenessDataSetInfo, addCompletenessAttributeInfo,\n addTimelinessDataSetInfo, addTimelinessAttributeInfo,\n addAccuracyDataSetInfo, addAccuracyAttributeInfo,\n addConformityDataSetInfo, addConformityAttributeInfo,\n addConsistencyDataSetInfo, addConsistencyAttributeInfo,\n addDriftDataSetInfo, addDriftAttributeInfo,addMLDataSetInfo,\n addMLAttributeInfo,addMonitorPreview,addUniquenessDataSetInfo, addUniquenessAttributeInfo,\n addRecencyPreview, prefetchMonitorState, store\n );\n\n preFetchMonitorModelInfo(\n team_id, addMLModelMapping,\n addMLDataSetInfo, addMLAttributeInfo,\n addMLModel, setMLModel, store\n );\n\n// preFetchModelPerformanceInfo(\n// team_id, addModelPerformance, store\n// );\n\n preFetchModelDetails(team_id, addModelDetails, store);\n\n preFetchMetrics(team_id, addMetrics, store);\n\n preFetchMonitorListViewData(team_id, addMonitorDQListViewData, store);\n\n // Fetch first page result of user notifications\n preFetchUserNotifications(tenantData, addUserNotificationToState, store);\n\n // Fetch dataset version details\n prefetchDatasetDetails(tenantData, addDatasetVersions, store);\n\n // Fetch Recency Details\n prefetchRecencyDetails(tenantData, addRecencyDetails, store);\n // Fetch recent history - discover page\n prefetchRecentHistory(tenantData, addRecentHistory, store);\n prefetchDataSize(tenantData, addDataSize, store);\n\n // Fetch Model AB configuration list\n prefetchModelABData(tenantData, setModelABDataToList, store);\n preFetchFollowAttributes(tenantData, addFollowAttributes, store)\n\n */\n }\n\n }\n\n // User is trying to view /quick_start page by modifying the URL.\n // We will prevent them since data setup status is not complete yet\n let DataSetupStatus = localStorage.getItem(\"DataSetupStatus\");\n let feature_access = localStorage.getItem(\"featureAccess\")\n if(windowPathName === \"/quick-start\" && DataSetupStatus === \"false\" && feature_access[\"skip_setup\"] === true ) {\n browserHistory.push(\"/quick-start\");\n }\n else if(windowPathName === \"/quick-start\" && DataSetupStatus === \"false\" ) {\n browserHistory.push(\"/setup\");\n }\n\n if(windowPathName !== \"/quick-start\" && windowPathName !== \"/setup\" && DataSetupStatus === \"false\" && feature_access[\"skip_setup\"] === true) {\n browserHistory.push(\"/quick-start\");\n }\n else if(windowPathName !== \"/quick-start\" && windowPathName !== \"/setup\" && DataSetupStatus === \"false\") {\n browserHistory.push(\"/quick-start\");\n }\n}\n\nlet DEPLOYED_ENVIRONMENT = process.env.REACT_APP_CUSTOM_NODE_ENV\n\nconst routing = (\n \n \n \n
    \n \n \n {(DEPLOYED_ENVIRONMENT === \"managed_service\") ?\n <>\n \n \n \n :\n <>\n \n \n \n }\n \n \n \n \n \n \n { IS_SAAS_EDITION &&\n <>\n \n \n {\n postMixpanel(\"Billing and Payments Page\");\n return ();\n }\n }/>\n {\n postMixpanel(\"Plan and Usage Page\");\n return ();\n }\n }/>\n {\n postMixpanel(\"Profile -> Model Page\");\n return ();\n }\n }/>\n \n }\n \n \n \n {\n const propsParams = props.params;\n const parentTab = propsParams.parentTab;\n if (parentTab === undefined) {\n return ();\n }\n\n const innerTab = propsParams.innerTab;\n if (innerTab === undefined) {\n return ();\n }\n\n const additionalInfo = propsParams.additional_info;\n if (additionalInfo === undefined) {\n return ();\n }\n\n return ();\n }\n }/>\n \n \n \n \n {\n postMixpanel(\"Profile Page\");\n return ();\n }\n }/>\n \n\n \n\n \n \n \n {\n postMixpanel(\"Teammate Page\");\n return ();\n }\n }/>\n {\n postMixpanel(\"Profile -> Data Page\");\n return ();\n }\n }/>\n \n \n \n \n \n {/* Power BI */}\n \n \n \n \n \n
    \n
    \n
    \n
    \n)\n\nif(IS_SAAS_EDITION === true && GTM_ID.length > 0){\n \n const tagManagerArgs = {\n gtmId: GTM_ID,\n auth: GTM_INTEGRATION_TOKEN,\n events: GTM_EVENTS,\n preview: GTM_PREVIEW\n }\n \n TagManager.initialize(tagManagerArgs)\n \n}\n\nReactDOM.render(routing, document.getElementById('root'));\nserviceWorker.unregister();\n","import {\n ADD_METADATA,\n ADD_RELATIONSHIP,\n ADD_INFO,\n SET_DATA_SOURCE,\n SET_ML_DATA_SOURCE,\n ADD_DATA_SOURCE,\n ADD_LAST_PROFILING_TIME,\n ADD_DISCOVERY_STATUS,\n ADD_PROCESSING_STATUS,\n ADD_ENVIRONMENT,\n SET_ENVIRONMENT,\n SET_DATA_SET,\n SET_CHIP_DATA,\n SET_ML_CHIP_DATA,\n SET_ATTRIBUTE,\n SET_FILTERED_DATA,\n ADD_ENVIRONMENT_DATA_SOURCE_MAPPING,\n ADD_DATA_SOURCE_DATA_SET_MAPPING,\n ADD_DATA_SET_ATTRIBUTE_MAPPING,\n SET_TENANT_ID,\n SET_INITIAL_VALUES,\n ADD_MONITOR_PREVIEW,\n ADD_DQ_MONITOR_PREVIEW,\n ADD_PERFORMANCE_PREVIEW,\n ADD_COMPLETENESS_INFO,\n SET_MONITOR_INITIAL_VALUES,\n ADD_COMPLETENESS_ATTRIBUTE_INFO,\n ADD_TIMELINESS_INFO,\n SET_END_DATE,\n SET_START_DATE,\n SET_TIME_FILTER,\n ADD_TIMELINESS_ATTRIBUTE_INFO,\n ADD_ACCURACY_INFO,\n ADD_ACCURACY_ATTRIBUTE_INFO,\n ADD_DRIFT_INFO,\n ADD_DRIFT_ATTRIBUTE_INFO,\n ADD_CONFORMITY_INFO,\n ADD_CONFORMITY_ATTRIBUTE_INFO,\n ADD_CONSISTENCY_INFO,\n ADD_CONSISTENCY_ATTRIBUTE_INFO,\n ADD_ML_MODEL_MAPPING,\n ADD_ML_MODEL_INFO,\n ADD_ML_MODEL_ATTRIBUTE_INFO,\n ADD_ML_RELATIONSHIP,\n SET_ML_MODEL,\n ADD_ML_MODEL_PERFORMANCE,\n ADD_ML_MODEL_DETAILS,\n ADD_MONITOR_DQ_LIST_VIEW,\n ADD_METRICS,\n USER_NOTIFICATIONS, MARK_NOTIFICATION_AS_READ,\n REMOVE_NOTIFICATION_FROM_LIST,\n ADD_DATASET_VERSIONS,\n ADD_UNIQUENESS_INFO,\n ADD_UNIQUENESS_ATTRIBUTE_INFO,\n ADD_RECENCY_DETAILS,\n ADD_RECENT_HISTORY,\n ADD_FOLLOW_ATTRIBUTES,\n ADD_DATA_SIZE, SET_MODEL_AB_LIST,\n ADD_RECENCY_PREVIEW,\n PREFETCH_MONITOR_STATE,\n STORE_IP_DATA,\n ADD_METADATA_DETAILS,\n NO_INTEGRATION,\n FORM_DATASET_INFO,\n FORM_LISTVIEW_TABLE_DATA,\n ADD_DATASET_LAST_REFRESH,\n ADD_DATASOURCE_DISCOVER_PAGE\n} from \"./actionTypes\";\n\n\n\nexport const addMetaData = content => ({\n type: ADD_METADATA,\n payload: {\n content\n }\n});\n\nexport const addRelationship = (dataSource, data) => ({\n type: ADD_RELATIONSHIP,\n payload: {\n dataSource: dataSource,\n data: data\n }\n});\n\nexport const setDataSource = dataSource => ({\n type: SET_DATA_SOURCE,\n payload: { dataSource }\n});\n\nexport const setMlDataSource = mlDataSource => ({\n type: SET_ML_DATA_SOURCE,\n payload: { mlDataSource }\n});\n\nexport const addMLModel = (mlModel, data) => ({\n type: ADD_ML_RELATIONSHIP,\n payload: {\n mlModel: mlModel,\n data: data\n }\n});\n\nexport const setMLModel = mlModel => ({\n type: SET_ML_MODEL,\n payload: { mlModel }\n});\n\nexport const setDataSet = dataSet => ({\n type: SET_DATA_SET,\n payload: { dataSet }\n});\n\nexport const setChipData = chipData => ({\n type: SET_CHIP_DATA,\n payload: { chipData }\n});\n\nexport const setMlChipData = mlChipData => ({\n type: SET_ML_CHIP_DATA,\n payload: { mlChipData }\n});\n\nexport const setFilteredValues = filteredValues => ({\n type: SET_FILTERED_DATA,\n payload: { filteredValues }\n});\n\n\nexport const setAttribute = (attributeId, attributeName) => ({\n type: SET_ATTRIBUTE,\n payload: {\n attributeId: attributeId,\n attributeName: attributeName\n }\n});\n\nexport const setInitialValues = () => ({\n type: SET_INITIAL_VALUES\n});\n\nexport const setMonitorInitialValues = () => ({\n type: SET_MONITOR_INITIAL_VALUES\n});\n\nexport const setTenantId = tenantId => ({\n type: SET_TENANT_ID,\n payload: { tenantId }\n});\n\nexport const setStartDate = startDate => ({\n type: SET_START_DATE,\n payload: { startDate }\n});\n\nexport const setEndDate = endDate => ({\n type: SET_END_DATE,\n payload: { endDate }\n});\n\nexport const setTimeFilter = timeFilterApplied => ({\n type: SET_TIME_FILTER,\n payload: { timeFilterApplied }\n});\n\nexport const addDataSource = (dataSourceId, dataSourceName) => ({\n type: ADD_DATA_SOURCE,\n payload: {\n dataSourceId: dataSourceId,\n dataSourceName: dataSourceName\n }\n});\nexport const addDiscoveryStatus = (dataSourceId, discoveryStatus) => ({\n type: ADD_DISCOVERY_STATUS,\n payload: {\n dataSourceId: dataSourceId,\n discoveryStatus: discoveryStatus\n }\n});\n\nexport const addProcessingStatus = (dataSourceId, processingStatus) => ({\n type: ADD_PROCESSING_STATUS,\n payload: {\n dataSourceId: dataSourceId,\n processingStatus: processingStatus\n }\n});\n\nexport const addLastProfilingTime = (dataSourceId, lastProfilingTime) => ({\n type: ADD_LAST_PROFILING_TIME,\n payload: {\n dataSourceId: dataSourceId,\n lastProfilingTime: lastProfilingTime\n }\n});\n\n//export const addMonitorPreview = (dqPreview, mlPreview) => ({\nexport const addMonitorPreview = (mlPreview) => ({\n type: ADD_MONITOR_PREVIEW,\n payload: {\n// dqPreview: dqPreview,\n mlPreview: mlPreview\n }\n});\n\nexport const addMonitorDQPreview = (dqPreview) => ({\n type: ADD_DQ_MONITOR_PREVIEW,\n payload: {\n dqPreview: dqPreview,\n }\n});\n\n\nexport const addPerformancePreview = (performancePreview) => ({\n type: ADD_PERFORMANCE_PREVIEW,\n payload: {\n performancePreview\n }\n});\n\nexport const addInfo = (data) => ({\n type: ADD_INFO,\n payload: { data }\n});\n\nexport const addEnvironment = (data) => ({\n type: ADD_ENVIRONMENT,\n payload: { data }\n});\n\nexport const setEnvironment = environment => ({\n type: SET_ENVIRONMENT,\n payload: { environment }\n});\n\nexport const addEnvironmentDataSourceMapping = mapping => ({\n type: ADD_ENVIRONMENT_DATA_SOURCE_MAPPING,\n payload: { mapping }\n});\n\nexport const addDataSourceDataSetMapping = mapping => ({\n type: ADD_DATA_SOURCE_DATA_SET_MAPPING,\n payload: { mapping }\n});\n\nexport const addDataSetAttributeMapping = mapping => ({\n type: ADD_DATA_SET_ATTRIBUTE_MAPPING,\n payload: { mapping }\n});\n\nexport const addCompletenessDataSetInfo = completenessDataSetInfo => ({\n type: ADD_COMPLETENESS_INFO,\n payload: { completenessDataSetInfo }\n});\n\nexport const addCompletenessAttributeInfo = completenessAttributeInfo => ({\n type: ADD_COMPLETENESS_ATTRIBUTE_INFO,\n payload: { completenessAttributeInfo }\n});\n\nexport const addTimelinessDataSetInfo = timelinessDataSetInfo => ({\n type: ADD_TIMELINESS_INFO,\n payload: { timelinessDataSetInfo }\n});\n\nexport const addTimelinessAttributeInfo = timelinessAttributeInfo => ({\n type: ADD_TIMELINESS_ATTRIBUTE_INFO,\n payload: { timelinessAttributeInfo }\n});\n\nexport const addConformityDataSetInfo = conformityDataSetInfo => ({\n type: ADD_CONFORMITY_INFO,\n payload: { conformityDataSetInfo }\n});\n\nexport const addConformityAttributeInfo = conformityAttributeInfo => ({\n type: ADD_CONFORMITY_ATTRIBUTE_INFO,\n payload: { conformityAttributeInfo }\n});\n\nexport const addAccuracyDataSetInfo = accuracyDataSetInfo => ({\n type: ADD_ACCURACY_INFO,\n payload: { accuracyDataSetInfo }\n});\n\nexport const addAccuracyAttributeInfo = accuracyAttributeInfo => ({\n type: ADD_ACCURACY_ATTRIBUTE_INFO,\n payload: { accuracyAttributeInfo }\n});\n\nexport const addUniquenessDataSetInfo = uniquenessDataSetInfo => ({\n type: ADD_UNIQUENESS_INFO,\n payload: { uniquenessDataSetInfo }\n});\n\nexport const addUniquenessAttributeInfo = uniquenessAttributeInfo => ({\n type: ADD_UNIQUENESS_ATTRIBUTE_INFO,\n payload: { uniquenessAttributeInfo }\n});\n\n\nexport const addDriftDataSetInfo = driftDataSetInfo => ({\n type: ADD_DRIFT_INFO,\n payload: { driftDataSetInfo }\n});\n\nexport const addDriftAttributeInfo = driftAttributeInfo => ({\n type: ADD_DRIFT_ATTRIBUTE_INFO,\n payload: { driftAttributeInfo }\n});\n\n\nexport const addConsistencyDataSetInfo = consistencyDataSetInfo => ({\n type: ADD_CONSISTENCY_INFO,\n payload: { consistencyDataSetInfo }\n});\n\nexport const addConsistencyAttributeInfo = consistencyAttributeInfo => ({\n type: ADD_CONSISTENCY_ATTRIBUTE_INFO,\n payload: { consistencyAttributeInfo }\n});\n\nexport const addMLModelMapping = mlModelMapping => ({\n type: ADD_ML_MODEL_MAPPING,\n payload: { mlModelMapping }\n});\n\nexport const addMonitorDQListViewData = monitorDQListView => ({\n type: ADD_MONITOR_DQ_LIST_VIEW,\n payload: { monitorDQListView }\n});\n\nexport const addMetrics = metrics => ({\n type: ADD_METRICS,\n payload: { metrics }\n});\n\nexport const addFollowAttributes = follow_attributes => ({\n type: ADD_FOLLOW_ATTRIBUTES,\n payload: { follow_attributes }\n})\n\nexport const addMLDataSetInfo = mlModelDataSetInfo => ({\n type: ADD_ML_MODEL_INFO,\n payload: { mlModelDataSetInfo }\n});\n\nexport const addMLAttributeInfo = mlModelAttributeInfo => ({\n type: ADD_ML_MODEL_ATTRIBUTE_INFO,\n payload: { mlModelAttributeInfo }\n});\n\nexport const addModelPerformance = mlModelPerformanceInfo => ({\n type: ADD_ML_MODEL_PERFORMANCE,\n payload: { mlModelPerformanceInfo }\n});\n\n\nexport const addModelDetails = mlModelDetails => ({\n type: ADD_ML_MODEL_DETAILS,\n payload: { mlModelDetails }\n});\n\n\nexport const addUserNotificationToState = userNotificationData => ({\n type: USER_NOTIFICATIONS,\n payload: { userNotificationData }\n});\n\n\nexport const markNotificationAsRead = notificationID => ({\n type: MARK_NOTIFICATION_AS_READ,\n payload: { notificationID }\n});\n\nexport const removeNotificationFromList = notificationID => ({\n type: REMOVE_NOTIFICATION_FROM_LIST,\n payload: { notificationID }\n});\n\n\nexport const addDatasetVersions = datasetVersion => ({\n type: ADD_DATASET_VERSIONS,\n payload: {\n datasetVersion\n }\n});\n\n\nexport const addRecencyDetails = recencyDetails => ({\n type: ADD_RECENCY_DETAILS,\n payload: {\n recencyDetails\n }\n});\n\nexport const addRecentHistory = recentHistory => ({\n type: ADD_RECENT_HISTORY,\n payload: {\n recentHistory\n }\n});\n\nexport const addDataSize = dataSize => ({\n type: ADD_DATA_SIZE,\n payload: {\n dataSize\n }\n});\n\nexport const setModelABDataToList = (modelABList, model_info_map) => ({\n type: SET_MODEL_AB_LIST,\n payload: {\n modelABList, model_info_map\n }\n});\n\nexport const addRecencyPreview = recencyPreview => ({\n type: ADD_RECENCY_PREVIEW,\n payload: {\n recencyPreview\n }\n});\n\n\nexport const prefetchMonitorState = fetchState => ({\n type: PREFETCH_MONITOR_STATE,\n payload: {\n fetchState\n }\n});\n\nexport const storeIpData = ipData => ({\n type: STORE_IP_DATA,\n payload: { ipData }\n});\n\nexport const storeMetadataDetails = metadataDetails => ({\n type: ADD_METADATA_DETAILS,\n payload: {\n metadataDetails\n }\n});\nexport const noIntegration = data => ({\n type: NO_INTEGRATION,\n payload: { data }\n});\n\nexport const mappedDatasetInfo = data => ({\n type: FORM_DATASET_INFO,\n payload: { data }\n});\n\nexport const listViewTableData = data => ({\n type: FORM_LISTVIEW_TABLE_DATA,\n payload: { data }\n});\n\n\nexport const fetchLastRefreshOfDatasets = (lastRefreshOfDatasets) => ({\n type: ADD_DATASET_LAST_REFRESH,\n payload: {\n lastRefreshOfDatasets\n }\n});\n\n\nexport const storeDiscoverPageDataForDataSrc = (discoverPageData) => ({\n type: ADD_DATASOURCE_DISCOVER_PAGE,\n payload: {\n discoverPageData\n }\n});\n"],"sourceRoot":""}