{"version":3,"sources":["assets/img/pricing-icon_professional.svg","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","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/account_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_play.svg","assets/img/icons/qualdo_brandmark.svg","assets/img/icons/azure_brandmark.svg","assets/img/icons/gcp_brandmark.svg","assets/img/icons/aws_brandmark.svg","assets/img/icons/icon_dollar.svg","assets/img/icons/icon_renew.svg","assets/img/icons/icon_renew-disable.svg","assets/img/icons/icon_trash-failed.svg","assets/img/icons/icon_trash-success.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","assets/img/icon_paycard-error.svg","components/image.js","components/banner.js","utils/constant.js","components/copyrights.js","utils/ip_details.js","utils/common_utils.js","mixpanel.js","utils/event_handling.js","login/components/login.js","components/error_500.js","login/index.js","components/help.js","components/offlineComponent.js","components/navigationHeader.js","components/breadCrumb.js","deploy/components/paymentcomponents/paymentSectionHeader.js","utils/billingAddressConstant.js","deploy/components/paymentcomponents/billingAddress.js","deploy/components/paymentcomponents/paymentOptions.js","components/loadAction.js","deploy/components/cardHelpContent.js","deploy/TagsInput.js","utils/mediaKind.js","deploy/index.js","redux/actions.js","redux/actionTypes.js","signup/components/banner.js","signup/components/signup.js","signup/components/email.js","signup/index.js","components/videoContent.js","components/basicPortlet.js","components/bootstrapTable.js","settings/components/tableActions.js","dashboard/components/videoContent.js","dashboard/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","login/components/forgotPassword.js","serviceWorker.js","redux/reducers/dataModule.js","redux/reducers/index.js","redux/store.js","utils/User_handling.js","settings/components/account.js","settings/components/changePassword.js","settings/components/addCardComponent.js","settings/components/paymentCardsList.js","settings/components/editCardComponent.js","components/customSelect.js","settings/components/paymentprofile.js","settings/components/usagepayment.js","settings/components/billinghistory.js","settings/index.js","components/paymentComponents/orderRow.js","components/paymentComponents/orderDetails.js","components/paymentComponents/billingCycle.js","components/paymentComponents/paymentSectionHeader.js","components/paymentComponents/paymentDetails.js","components/paymentComponents/billingAddress.js","components/paymentComponents/payment_success.js","components/paymentComponents/paymentOptions.js","components/payment.js","components/renew.js","index.js"],"names":["module","exports","Image","images","oopsHuman","oopsGlobe","logo","googleLogo","dataEngLogo","dataStewLogo","dataSciLogo","dataDevLogo","logoLight","dataQualityLogo","urlLink","notificationLogo","addLogo","blob","pipelineTrigger","success","incremental","timeSeries","alert","email","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","icon_paycard_error","icon_play","qualdo_brandMark","azure_brandMark","gcp_brandMark","aws_brandMark","icon_dollar","accountProfile","icon_renew","icon_renew_disable","icon_trash_failed","icon_trash_success","width","this","props","height","className","src","style","styles","alt","React","Component","Banner","LIST_VIEW_OPTIONS","PRIVACY_POLICY_LINK","COOKIE_POLICY_LINK","TERMS_CONDITIONS_LINK","SERVING_DATA_DRIFT","FEATURE_DRIFT_TEMPORAL","FEATURE_DRIFT","PAYMENT_CARD_TYPES","QualdoPlanCycle","DateParts","QualdoEditions","QualdoPlanVersions","SUBSCRIPTION_PLANS","REFERENCE_TYPE_COLUMN_NAME","Date","getTime","CONSISTENCY_CONTRIBUTION_HEADERS","CONSISTENCY_CONTRIBUTION_HEADERS_ML","VALID_QUALDO_PLANS","PAYMENT_FIELD_ID_MAP","number","cvv","expirationDate","PAYMENT_COMPONENT_STYLES","QUALDO_PAYMENT_STATUS","BUTTON_NAMES","EXCLUDED_COMPONENTS","CONFIGURE_DATA_SOURCE_URL","PROFILE_DATA_URL","IS_NONE_CHECK","undefined","NOT_SORTABLE","DOCUMENT_LINK_MAPPING","ABOVE_ALERT_SUPPORTED_TABLES","GCP_REGIONS","MANDATE_RESET_PASSWORD","SUBSCRIPTION_DOC","CYCLE","DEPLOYMENT_DATA","PRIVATE_CLOUD","DEPLOYMENT_FAILURE","PERMISION_DENIED","INSUFFICIENT_QUATO","ACCOUNT_MISMATCH","REQUIRED_QUOTAS","REQUIRED_PERMISSIONS","year","getFullYear","CopyRights","classDetails","text","href","rel","target","showCopyRight","CopyRightsFooter","iam_ip","window","location","hostname","ui_service_ip","addTime","inputDate","quantity","part","month","getMonth","day","getDate","result","getCurrencySymbol","currentPlan","getCurrentPlanDetailOfUser","details","currency","getQualdoPlanCycle","selectedPlanCycle","localStorage","getItem","details_json","planDetails","String","trim","length","JSON","parse","removeQualdoPlanCycle","removeItem","toastObj","faCheckCircle","faTimesCircle","decryptForLocalUsage","incomingString","decryptedRes","CryptoJS","AES","decrypt","process","toString","enc","Utf8","encryptForLocalUsage","incomingJSON","encrypt","stringify","get_document_link","page","doc_link","token","document_link","item","now","expiry","removeLocalStorageKeys","value","data","ec","authDetails","replace","url","sections","split","section","userValidation","type","urlRegex","RegExp","test","userNameRegex","userInput","getProtocol","ipAddress","includes","getCompleteEndpoint","protocol","ip","end_point","_separator","startsWith","isPlanChanged","selectedPlan","selectedCycle","currentUserPlan","currentPlanCycle","plan_cycle","plan_name","postMixpanel","event_name","mixpanel","track","init","debug","call_post_api","user_id","team_id","reqEndPoint","fetch","method","body","headers","then","response","json","responseData","catch","error","console","log","call_update_api","call_delete_api","call_get_api","session","deployment_id","postUIlogs","info","postError","res","getPaymentDetailsTableData","cardData","allPaymentDetails","card","cardDetail","requiredCardData","cardholder_name","is_default","payment_detail_id","card_type","expiration_month","expiration_year","last_4","push","getBillingAddressDetailsTableData","addressDetails","prime","filter","stu","isPrimary","getBillingAddressDetails","reqAddressDetails","billingAddress","billing_address_id","getpendingPaymentTableData","billingHistory","billingHistoryTableRows","requiredData","billingTableData","deployment","payment_status","rowData","reqData","billingDetails","billing_history","billing","order_id","deployment_name","edition","cloud","amount","validity_date","auto_debit_status","billing_cycle","renew","getupcomingPaymentTableData","is_active","status","getBillingHistoryTableData","billingData","billingTableRows","billingDetail","splitName","created_time","coupon_code","currency_symbol","consume_group_table","input_data","final_op","i","row","consume_data","getApi","api_name","setState","errorOccurred","code","consume_group","notification_title","res_1","accPlanDetails","plan_details","mlLimitExceed","ml_usage_exceeded","maxModel","max_ml_model_limit","planName","dataLimitExceed","usage_exceeded","paymentDetails","payment_details","deployment_details","billing_address","nextPaymentDates","map","next_payment_date","upcomingPayment","pendingPayment","allDetails","billingAddressTableData","billingHistoryTableData","active_deployment","pending_payment_deployment","pendingDeploymentDetails","upcomingPaymentData","pendingPaymentData","availableCards","autoDebit","disableAutoDebitToggle","billinginitalloader","billingAddresses","receiptData","setItem","cardGroupLoading","plans","setQualdoPlans","getPaymentDetailsEndPoint","planData","srcIsChoosePlan","planType","qualdoPlanCycle","planChanged","showErrorMessage","showDowngradePopup","available_cards","changePaymentPageDetails","getBrainTreeAuthToken","submitUsersPayment","paymentData","teamId","deploymentId","$","addClass","removeClass","disabled","setTimeout","browserHistory","showModal","failure_message","handleClick","event","name","rememailId","rememberMe","clear","submitPrimaryCardRequest","paymentID","id","last4","lastFourDigits","cardType","brand","teamID","successMsg","showAlertSection","updatePrimaryStatusOfCards","deleteCardDetails","cardDetails","cardID","last4Digits","removeCardDetailFromList","message","updatePaymentCard","updateCardDetailToList","disableCardButton","postPaymentNonce","cardDataToPost","detail","addNewCardDetailToList","document","getElementById","removeAttribute","updateAutoDebitStatus","showToast","updateDeployment","admin_email","endPoint","triggerDeployment","getAllDeployment","allDeployments","in_progressDeployment","tableData","inputData","d","deployment_updates_table","newDeploymentData","deployments","pathname","getDeployment","deploymentDetails","progressTime","cycle","cloud_support","region","account_id","service_account","subnet","deployment_config","json_file","subscription","progressStatus","time","html","errorType","statusText","prerequesties","whitelisted","restricted_network","public_network","whitelisted_ip","price","plan_price","updateCustomerAddress","userId","adminEmail","updatedAddress","updateautoDebit","getDeploymentPlanDetails","cycleCost","billingCycle","getuserrenewal","Number","submitUsersRenew","setPaymentStatus","handleDeleteForDeployment","state","password","deleteButtonDisabled","errors","closeDeletepopup","toLowerCase","validateCoupon","couponClass","promo_form","promo_success_text","validCoupon","final_price","discount","currentStatus","Login","context","handleChange","input","checked","bind","rempassword","remcheckbox","errorMsg","passwordIcon","faEye","passwordType","setPasswordLink","showAlert","hideAlert","disableButton","changePasswordIcon","login","hideSubmitButton","iconName","faEyeSlash","deployStatus","buildNumber","identify","people","set","$email","loginSchema","yup","required","isFirstTimeLogin","Alert","display","variant","dismissible","onClose","Heading","icon","faUserCheck","role","show","onClick","data-dismiss","aria-label","validationSchema","onSubmit","initialValues","values","touched","handleSubmit","Form","noValidate","Group","controlId","Label","InputGroup","bsPrefix","faEnvelope","Control","placeholder","autoFocus","onChange","isInvalid","Feedback","faLock","Check","custom","label","to","onlyActiveOnIndex","ErrorHandler","goToLogin","classList","add","remove","Home","router","route","setting","color","theme","launcherText","widgetTitle","launcher","chatLabel","contactForm","fields","prefill","HelpZendesk","zendeskKey","OfflineComponent","userToggle","forwardRef","ref","children","e","preventDefault","faUser","activeItems","NavigationHeader","handleHelp","newDeployment","zendeskShow","active","header","shrinkIt","scroll","scrollTop","click","hasClass","zE","activate","hideOnClose","secondDeployment","Object","entries","key","Navbar","expand","Brand","Toggle","aria-controls","Collapse","Nav","Item","Link","handleDashboard","faQuestion","Dropdown","alignRight","as","Menu","onItemClick","activeClassName","faUserCog","faAddressCard","faPaperPlane","faReceipt","faHeadset","faBook","faSignOutAlt","polling","connect","faIconMapping","faCog","faCube","faHourglassHalf","faChartArea","faPlusCircle","faUserCircle","faRocket","faBell","faDatabase","faHandshake","faUserFriends","faSearchengin","faBox","BreadCrumb","title","separator","separatorData","PaymentSectionHeader","sectionIndex","sectionTitle","ZIP_DATA","COUNTRY","BillingAddress","companyName","addressLine1","addressLine2","country","zipCode","city","optionscountry","agreeCheck2","addressSchema","min","matches","parent","divRef","Card","Body","Row","Col","md","handleBlur","isValid","isSubmitting","saveNewAddress","onBlur","classNamePrefix","options","selectedOption","component","makeDefaultBillingAddress","Button","hideAddBillingSection","faCheck","agreementRef","agreeCheck","PaymentOptions","defaultChecked","htmlFor","Load","CardHelpContent","Modal","onHide","dialogClassName","size","Header","closeButton","Title","faQuestionCircle","faSearch","renderModelContent","renderContent","TagsInput","useState","tags","setTags","addTags","selectedTags","tag","index","OverlayTrigger","placement","overlay","Tooltip","indexToRemove","_","onKeyDown","keyCode","Mediakind","vContainerRef","useRef","player","playerConfig","ui","playback","muted","autoplay","preferredTech","streaming","sourceConfig","hls","drm","clearkey","LA_URL","useEffect","load","a","MKPlayerSDK","unload","current","play","braintree","require","step","currentStep","renderTooltip","closeTooltip","steps","stepName","handleUpload","fileReader","FileReader","readAsText","files","onload","hideModal","deploymentNameRef","createRef","cloudRef","settingRef","authorizednwRef","isValidated","onValueChange","closeToast","promoCodeHandler","promoRepeatHandler","promoSuccessHandler","handlevalidate","editSubnet","compute_config","requiredQualdoCloud","toastStatus","toastMsg","toastClass","toastLink","toastIcon","toastHeading","coupon","annualCoupon","montlyCoupon","helpSection","post","validate","enableEdit","errorClass","promo_text","disableCycle","placeHolder","agreeCheck1","aggreeCheck2","checkBoxWarn","each","trigger","next","reDeployData","scrollTo","top","left","behavior","offsetTop","planprice","plantitle","promoCodeHandlerRemove","msg","link","getData","onClickHandler","onscroll","ev","innerHeight","scrollY","offsetHeight","on","fileName","toggleClass","initial_values","validateschema","nullable","Toast","delay","autohide","data-toggle","data-target","FormGroup","inline","Prepend","Text","FormControl","aria-describedby","class","for","data-browse","faEdit","DRX_DOCUMENT_BASE_LINK","warn","lenght","faStar","wizardData","stepIcon","cardDetailsRef","billingDetailsRef","submitHandler","clientDidCreate","hostedFieldsDidCreate","showPaymentPage","cardTypeProcessor","cardValidator","getCardTypeImage","tokenizeFunction","handleCustomerName","getComponentClass","makeCurrentAsDefaultPayment","validateAddress","addressSelectionHandler","hasValidCardParts","createPaymentDataForUser","showAddBillingDetailsSection","hideAddBillingDetailsSection","addressUpdateHandler","getSelectedPlan","setAutoDebitStatus","handlePay","handleReturn","promoCodeSuccess","closeModal","nextBillingMonth","nextBillingYear","DeploymentData","customStep","secondStep","error_message","showNotAllowedPopup","reRenderNavComponent","addNewCard","canShowAddBillingAddress","hostedFields","orderID","unitCostForData","addOnCostForData","unitCostForModel","addOnCostForModel","nextBillingDate","addOnCycles","paymentPageLoading","customerNameClass","enableSubmitButton","braintreeAuthorizationToken","customerName","make_default","isEdit","previousExpiryDate","previousCardNumber","previousCvv","selectedPayment","selectedAddress","disableSubmitBtn","newBillingAddress","paymentSuccess","braintreeLoading","validation","is_valid","is_invalid","expiration_date","card_number","cardHolderName","previousStats","currentState","hide","bt_token","newCard","finalData","paymentDetailElement","x","parseInt","newAddress","customer_name","formIsInvalid","retrievedState","getState","keys","field","mappedID","currentCompValidation","scrollToCardDetails","scrollToBillingDetails","scrollToAgreement","tokenize","client","create","authorization","err","selector","cards","fieldName","emittedBy","currentFieldId","container","isValidPreviously","isPotentiallyValid","payload","nonce","cycleData","updateplancycle","address","reqClass","componentInfo","cardHolderDetail","currentKey","currentValue","zip","setInterval","centered","faLongArrowAltLeft","xs","defaultValue","sm","bscustomprefix","showAddBillingSection","faArrowLeft","faArrowRight","aria-hidden","thirdStep","deploymentRetry","redeployDeployment","handleErrorCollapse","previousState","timer","timeOut","clearInterval","deployemntStatus","ProgressBar","animated","span","offset","Deployment","finishButtonClick","allStates","sessionToken","isLoginPage","firstStep","xl","navSteps","navstep","description","headerTextCenter","stateVal","progressbar","lg","setDeploymentData","deploymentData","SignupForm","company","username","phone","setEmail","distinct_id","$first_name","$last_name","userName","Boolean","firstName","lastName","join","user_signup_type","first_name","last_name","phone_number","redirect_to_login","setEmailPage","formValid","errorCount","confirmPassword","confirmPasswordIcon","confirmPasswordType","changeConfirmPasswordIcon","max","oneOf","phoneUtil","PhoneNumberUtil","getInstance","val","isValidNumber","invalidRequest","showInvalidRequestModal","Footer","goToQualdoWebsite","isJoinTeamButton","setFieldValue","faBuilding","faPhoneAlt","EmailNotification","isPasswordThankYou","signupType","pageTypes","Signup","setSignupPage","setTeamPage","setGooglePage","pageType","userDetails","responseText","setPage","renderPage","VideoContent","getVideo","getVideoUrl","modelName","video_url","controls","BasicPortlet","searchText","bodyClassName","content","QualdoDataTable","paginationSize","onPageChange","component_name","handleSearchOperation","handleDeleteOperation","handleSeeMore","hideSizePerPage","isDelete","tempData","selectedGroup","isSeeMore","isSeeMoreId","Math","random","prevClassFlag","before","headerKeys","forEach","headerValue","fullData","cloneDeep","rowItems","obj","k","items","pageLimit","pageList","totalSize","sizePerPageList","sizePerPage","pageStartIndex","prePage","nextPage","firstPage","lastPage","paginationPosition","pageLimitCustom","pageOptions","actionType","cell","pdfdownload","customGetActionComponent","prevProps","curobj","find","v","hasData","lengthLimit","getDefaultPaginationOptions","getCustomPaginationOptions","from","pages","p","renderRow","onSizePerPageChange","currSizePerPage","option","handlePageChange","n","backgroundColor","align","rowClasses","rowIndex","customRowHighlighter","Actions","integration_data","connection_status","addClassFailure","classFuncForCols","getCustomClassForColumns","colIndex","is_table_not_sortable","not_sortable","columns","convertData","tableIDFormatter","afterSearch","newResult","BindedCustomSearchBar","clearSearch","onClear","navigateFirstPage","onSearch","contentTable","paginationProps","paginationTableProps","minWidth","isOptionDisabled","changeGroup","keyField","search","toolkitprops","classNameForTable","searchProps","bootstrap4","bordered","responsive","baseProps","wrapperClasses","classes","tableHeaderClass","tableBodyClass","faArrowAltCircleRight","pagination","paginationFactory","faTable","rd","renewDisabled","payDisabled","TableAction","handleRenewOptions","deletePopup","pay","delete","remainingData","showPopup","convertDateFormate","toGMTString","currentDate","Rd","floor","abs","closest","handlerenew","toastBulk","faSync","eventKey","faTrash","autoComplete","faExclamationTriangle","descriptionDatas","HomeDashboard","paymentTableComponent","handleconfirm","handleRenewConfirmation","confirmpopup","closeRenewpopup","current_tab","showAutoRenew","confirm","auto_debit","updateData","renewal","confirmRenewal","renewId","deploymentName","tableProps","faExternalLinkAlt","faInfoCircle","xmlns","viewBox","data-name","fill","transform","descriptionData","paymenttableData","newDeployStatus","Tab","Container","defaultActiveKey","Content","Pane","deploymentTableComponent","environment","updateTable","createDeployment","ResetForm","resetPassword","resetSchema","resetPwdToken","URLSearchParams","get","reset_password_token","setPassword","successMessage","passwordData","setSchema","gotoLogin","setPasswordForm","InitiateSetPassword","emailSent","ForgotPassword","forgotPassword","isRedirectToThankYou","forgotPasswordSchema","match","initialState","combineReducers","dataModule","action","persistConfig","storage","localforage","persistedReducer","persistReducer","rootReducer","createStore","call_iam_get_api","tenant_id","edition_details","next_billing_date","user_details","org_name","phoneNo","user_profile_image","handleUserSubmit","FormData","passwordDataValue","profile_data","Account","handleImage","file","reader","readAsDataURL","onloadend","firstNameClass","lastNameClass","companyNameClass","lastNameResult","firstNameResult","form","reset","ChangePassword","changePassword","changeOldPasswordIcon","oldPasswordType","oldPasswordIcon","toastheading","resetForm","currentPassword","newPassword","changePasswordSchema","verifyPassword","faKey","faUserLock","faHandPointRight","AddCardComponent","cardComponentsValidator","isBraintreeError","creditCardErrorMsg","authorizationToken","currentFiledId","isValidPrev","isEmpty","submitBtn","addEventListener","setAttribute","hideAddCardSection","PaymentCardsList","showEditCardsSection","makePrimaryCard","showEditSection","makeCardAsPrimary","faCreditCard","expires","showAddCardSection","EditCardComponent","handleExpiryDate","setExpiryDateStatus","submitEditDetails","validateExpiryValues","removeCardDetails","expiryDate","exCardDetails","expiryMonth","expiryYear","customerNameStatus","expirationDateStatus","hasError","splits","monthPart","yearPart","monthIndex","yearIndex","isNaN","currentYearStr","moment","format","difference","expiryRes","editData","showRemoveCard","CustomSelect","allowSelectAll","allOption","originalAttributeOptions","selected","defaultProps","PaymentProfile","toggleEmailGroup","checkedlist","emailsubscription","email_user_status","updateAlertSection","getEmptyCardSection","setAutoDebit","updateAddress","submitUpdate","chechkall","btnchkalltext","emailsubscriptioninitalloader","changeAddress","showAddCard","isEditMode","alertText","alertStatus","alertClass","renderCards","AutoDebitToggle","showChangeAddress","newAutoDebitStatus","currentCardIsDefault","currentCardDetail","cardDetailID","updatedAvailableCards","expiry_month","expiry_year","cardId","checkallarr","emailsubscriptiondata","addDetails","createError","visibility","isopen","faIdCard","faFlag","company_name","address_line_1","zip_code","faPencilAlt","UsageAndPayment","addExpandClass1","addExpandClass2","addExpandClass3","addActiveClass","handlepay","secondopen","firstopen","thirdopen","alertData","Accordion","faChevronRight","BillingHistory","pdfinfo","couponPrice","actualPrice","aordercreated","anext_payment_date","matchedBillingAddress","address_line_2","documentDefinition","htmlToPdfmake","tableAutoSize","pdfMake","vfs","pdfFonts","createPdf","open","faChalkboardTeacher","Settings","closeWarningMessage","navKey","routeSelection","sideBarSelected","change_request","showInformationBanner","mlModelCount","planNameKey","planBenefits","monthlyLimit","cost","maxDataLimit","maxMlModelLimit","comments","modifiedTime","requiresDataLimitUpgrade","selectedKey","onSelect","navSelect","renderNavContent","OrderRow","labelContent","valueContent","OrderDetails","totalAmount","remainingAmountFromCurrentPlan","ceil","orderSummaryTitle","planCostValue","currencySymbol","planCost","loading","nextBilling","parseFloat","toFixed","BillingCycle","radioHandler","savedPercentage","autoDebitSelection","PaymentDetails","getPaymentCardsAsRadioButtons","toggleNewCardSection","getAddressRadioButtons","PaymentSuccess","Payment","paymentSelectionHandler","setPaymentPageDetails","srcPage","newState","storedDetails","hideModelInfo","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","planInfo","planCycleDetail","currentDetail","dateArray","toDateString","shift","absoluteAmount","selectedBillingCycle","Renew","currentPlanDetail","persistor","persistStore","store","PrivateRoute","routing","onBeforeLift","reset_password","history","exact","path","resetPasswordForm","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"uGAAAA,EAAOC,QAAU,IAA0B,uD,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,kBCA3CD,EAAOC,QAAU,kzG,oBCAjBD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,sD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,iD,kBCA3CD,EAAOC,QAAU,8gE,kBCAjBD,EAAOC,QAAU,k1O,kBCAjBD,EAAOC,QAAU,k+O,kBCAjBD,EAAOC,QAAU,0+N,kBCAjBD,EAAOC,QAAU,08O,kBCAjBD,EAAOC,QAAU,8rT,kBCAjBD,EAAOC,QAAU,s0S,kBCAjBD,EAAOC,QAAU,81T,kBCAjBD,EAAOC,QAAU,kwT,oBCAjBD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,0D,kBCA3CD,EAAOC,QAAU,slH,oBCAjBD,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B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","file":"static/js/main.a731dbeb.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/pricing-icon_professional.5985beae.svg\";","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,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMjBUMjM6MTA6MTcrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTIwVDIzOjExOjU3KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTIwVDIzOjExOjU3KzA1OjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU1ZmNhYmYxLTczNzYt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\"","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.2eee1737.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_master.a64f6d05.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_amex.bb054f24.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_discover.bdfc6f0d.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_jcb.1f1a8c50.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit-card_paypal.f6f6e09a.svg\";","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.ea66b90e.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/account_profile.ad1f83a7.png\";","module.exports = __webpack_public_path__ + \"static/media/icon_empty-data.7b6f2b1f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_unique-data.51d6ec01.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_duplicate-data.240d789e.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_error-data.ff02ebc1.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_play.62e9dec3.svg\";","module.exports = __webpack_public_path__ + \"static/media/qualdo_brandmark.3e364845.svg\";","module.exports = __webpack_public_path__ + \"static/media/azure_brandmark.2e706e77.svg\";","module.exports = __webpack_public_path__ + \"static/media/gcp_brandmark.ff0ffb9c.svg\";","module.exports = __webpack_public_path__ + \"static/media/aws_brandmark.acf6dd33.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_dollar.f0266a28.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_renew.bf30555b.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_renew-disable.05a09959.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_trash-failed.11ca6b62.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_trash-success.6c42ece0.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_attribute.49b5f9af.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_datasource.e686d50b.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_dataset.20a0b1a3.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_environment.91c8857c.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_exclamation-gray.7fb8ad0a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_paycard-error.6ccea58f.svg\";","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 accountProfile from '../assets/img/account_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_play from '../assets/img/icons/icon_play.svg';\nimport qualdo_brandMark from '../assets/img/icons/qualdo_brandmark.svg';\nimport azure_brandMark from '../assets/img/icons/azure_brandmark.svg';\nimport gcp_brandMark from '../assets/img/icons/gcp_brandmark.svg';\nimport aws_brandMark from '../assets/img/icons/aws_brandmark.svg';\nimport icon_dollar from '../assets/img/icons/icon_dollar.svg';\nimport icon_renew from '../assets/img/icons/icon_renew.svg';\nimport icon_renew_disable from '../assets/img/icons/icon_renew-disable.svg';\nimport icon_trash_failed from '../assets/img/icons/icon_trash-failed.svg';\nimport icon_trash_success from '../assets/img/icons/icon_trash-success.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\"\nimport icon_paycard_error from \"../assets/img/icon_paycard-error.svg\"\nclass Image extends React.Component {\n constructor() {\n super();\n this.images = {\n 'oopsHuman': oopsHuman,\n 'oopsGlobe': oopsGlobe,\n 'logo': logo,\n 'googleLogo': googleLogo,\n 'dataEngLogo': dataEngLogo,\n 'dataStewLogo': dataStewLogo,\n 'dataSciLogo': dataSciLogo,\n 'dataDevLogo': dataDevLogo,\n 'logoLight': logoLight,\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 'icon_paycard_error': icon_paycard_error,\n 'icon_play': icon_play,\n 'qualdo_brandMark': qualdo_brandMark,\n 'azure_brandMark': azure_brandMark,\n 'gcp_brandMark': gcp_brandMark,\n 'aws_brandMark': aws_brandMark,\n 'icon_dollar': icon_dollar,\n 'accountProfile': accountProfile,\n 'icon_renew': icon_renew,\n 'icon_renew_disable': icon_renew_disable,\n 'icon_trash_failed':icon_trash_failed,\n 'icon_trash_success':icon_trash_success,\n };\n }\n\n render() {\n return (\n \n );\n }\n}\n\nexport default Image;","import React from 'react';\n\nclass Banner extends React.Component {\n\n render() {\n return (\n
\n
\n
\n
\n

Eliminate high-stake\n
data quality & reliability\n
issues in minutes\n

\n

Use Qualdo™ to identify, monitor and troubleshoot data issues and errors in your favourite modern\n databases. Detect data drifts and outliers in cloud data warehouses.

\n
\n
\n
\n
\n );\n }\n}\n\nexport default Banner;","export const CHART_TITLE_SEPARATOR = \" > \";\nexport const CHART_TITLE_METRIC_SEPARATOR = \" - drift in \";\n// export const PROTOCOL = window.location.protocol;\nexport const PROTOCOL = \"https:\";\nexport const HTTPS = \"https://\"\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\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\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}\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}\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\n\nexport const cardTitlesMap = {\n \"Normalization Consistency\": \"Normalisation Errors (in %)\",\n \"Categorical Ordinal\": \"Categorical Ordinal Errors (in %)\",\n \"Categorical Encode\": \"Categorical Encoding Errors (in %)\",\n \"Data Type Consistency\": \"Data Type Errors (in %)\",\n \"Fill Rate\": \"Average Fill Rate (in %)\",\n \"Row Count\": \"Row Count\",\n \"Unique Values\": \"Unique Values\",\n \"Recency\": \"Average Recency (in days)\",\n \"URL Conformity\": \"URL Conformity Errors (in %)\",\n \"Credit Card Conformity\": \"Credit Card Conformity Errors (in %)\",\n \"Gender Conformity\": \"Gender Conformity Errors (in %)\",\n \"IP Conformity\": \"IP Conformity Errors (in %)\",\n \"Http Conformity\": \"HTTP Conformity Errors (in %)\",\n \"Date Conformity\": \"Date Conformity Errors (in %)\",\n \"Email Conformity\": \"Email Conformity Errors (in %)\",\n \"SSN Conformity\": \"SSN Conformity Errors (in %)\",\n \"Boolean Conformity\": \"Boolean Conformity Errors (in %)\",\n \"Data Outlier\": \"Data Outlier Errors (in %)\",\n}\n\nexport const chartDataCombinations = [{\"combinations\": [modelPerformance.PRECISION, modelPerformance.RECALL]}]\n\nexport const metricCategory = {\n DQM: \"dqm\",\n MLM: \"mlm\"\n}\n\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 \"Row Count\": \"rows.\",\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\nexport const PROFILE_SEPARATOR = \".\";\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 COMPLETENESS_CARDS = {\n \"Attribute Fill Rate < 25%\": 25, \"Attribute Fill Rate 25% to 75%\": 75, \"Attribute Fill Rate > 75%\": 100, \"Total number of Rows\": 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\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 = [\"Row Count\", \"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 MODEL_PERFORMANCE_THRESHOLDS = {\n RECALL: 0.6,\n PRECISION: 0.6,\n F1_SCORE: 0.6,\n ACCURACY: 0.6,\n RMSE: 50,\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\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\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\", \"Recency\",\n \"Gender Conformity\", \"URL Conformity\", \"IP Conformity\",\n \"SSN Conformity\", \"Credit Card Conformity\", \"Http Conformity\",\n \"Email Conformity\", \"Date Conformity\", \"Row Count\", \"Unique Values\", \"Boolean Conformity\"],\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 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}\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;\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\" ]\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}\n\nexport const NON_ERROR_DRIFT_PATTERNS = [DRIFT_PATTERN_TYPES.NO_DRIFT, DRIFT_PATTERN_TYPES.NOT_COMPUTED];\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\": \"Mean Shap Value\"\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\"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}\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 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\nexport const 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)\";\nexport const CONFIGURE_MODEL_URL = \"https://videos.qualdo.ai/94c4245a-fdbc-40b6-bc02-fce622569628/Configure_Model_V2.ism/manifest\";\nexport const PIPELINE_CHANNEL_URL = \"https://videos.qualdo.ai/c96e8628-659a-4a78-a26e-8e96c2b77f74/pipeline_channel.ism/manifest\";\nexport const MONITOR_MODEL_URL = \"https://videos.qualdo.ai/a7638360-a5d8-43f7-84a0-54c581a93860/Model_Monitor_Errors_V4.ism/manifest\";\nexport const MONITOR_DATA_URL = \"https://videos.qualdo.ai/5bfcef99-100f-4c6f-a819-929eda03fc80/Data_Quality_Errors_V3.ism/manifest\";\nexport const PROFILE_DATA_URL = \"https://videos.qualdo.ai/d7b81a87-7c81-47a1-9342-c7c873b6fd52/Profile_Data.ism/manifest\";\nexport const PROFILE_MODEL_URL = \"https://videos.qualdo.ai/c562ebc8-b6e1-4129-94df-08e426586d3f/Profile_Model.ism/manifest\";\nexport const NOTIFICATION_URL = \"https://videos.qualdo.ai/ed9ffb62-63a4-4964-91da-cf48cd05c74e/notification_channel.ism/manifest\";\nexport const DATA_QUALITY_URL = \"https://videos.qualdo.ai/43ac9b88-bcb0-4c06-bce1-623894ffb547/Dataquality_Alert_V2.ism/manifest\";\nexport const MONITOR_MODEL_PERFORMANCE_URL = \"https://videos.qualdo.ai/de3ae8b8-c047-4b5d-b21e-c3f81dbc605c/Model_Monitor_Performance_V3.ism/manifest\";\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\nexport const SQL_QUERY_DUMMY_PLACE_HOLDER = \"select count(*) from $dataset$ where `attribute1` = 1\";\n\nexport const SQL_QUERY_NOTE = \"In the query, use $dataset$ instead of dataset name. \" +\n \"Enclose attributes name with (`). Don’t use semicolon(;) at the end.\";\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 = 200;\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\": \"Mean Absolute Error\",\n \"root mean squared error\": \"Root Mean Squared Error\",\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 it the 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 \"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 }\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\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/\";\n// DRX Documentation\nexport const DRX_DOCUMENT_BASE_LINK = \"https://drx-docs.gcp-qualdo.ai/\";\nexport const DOCUMENT_LINK_MAPPING = {\n \"index\": \"index.html\",\n \"data_source\": \"tutorials/datasources.html\",\n \"profile_data\": \"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-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 \"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 \"deployment\":\"tutorials/deployments.html\",\n \"dashboard\":\"tutorials/dashboard.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\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 SQLServer', \"value\": 'azure_sql'}],\n \"label\": \"Azure Connectors\"\n },\n {\n \"options\": [{\"label\": \"AWS S3\", \"value\": 's3'}],\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\": 'Snowflake', \"value\": 'snowflake'},\n {\"label\": \"Postgres\", \"value\": 'postgresql'},\n {\"label\": \"MySQL\", \"value\": 'mysql'}],\n \"label\": \"Database Connectors\"\n }\n ];\n\nexport const GCP_CLOUD_PREFERENCE = [{\"label\": \"GCP\", \"value\": \"gcp\"}];\n\nexport const GCP_EDITIONS =[{\"label\": \"Data Quality Edition\", \"value\": \"data_quality_edition\"},\n{\"label\":\"Model Monitoring Edition\",\"value\": \"Model Monitoring Edition\"}]\n\n// REGION LIST GOT FROM https://www.parkmycloud.com/blog/google-cloud-regions/\nexport const GCP_REGIONS = [{\"label\": \"Taiwan (asia-east1)\", \"value\": \"asia-east1\"},\n{\"label\": \"Hong Kong (asia-east2)\", \"value\": \"asia-east2\"},\n{\"label\": \"Tokyo (asia-northeast1) \", \"value\": \"asia-northeast1\"},\n{\"label\": \"Osaka (asia-northeast1) \", \"value\": \"asia-northeast1\"},\n{\"label\": \"Seoul (asia-northeast3) \", \"value\": \"asia-northeast3\"},\n{\"label\": \"Mumbai (asia-south1) \", \"value\": \"asia-south1\"},\n{\"label\": \"Singapore (asia-southeast1) \", \"value\": \"asia-southeast1\"},\n{\"label\": \"Sydney (australia-southeast1) \", \"value\": \"australia-southeast1\"},\n{\"label\": \"Finland (europe-north1) \", \"value\": \"europe-north1\"},\n{\"label\": \"Belgium (europe-west1) \", \"value\": \"europe-west1\"},\n{\"label\": \"London (europe-west2) \", \"value\": \"europe-west2\"},\n{\"label\": \"Frankfurt (europe-west3) \", \"value\": \"europe-west3\"},\n{\"label\": \"Netherlands (europe-west4) \", \"value\": \"\"},\n{\"label\": \"Zürich (europe-west6) \", \"value\": \"europe-west6\"},\n{\"label\": \"Montréal (northamerica-northeast1) \", \"value\": \"northamerica-northeast1\"},\n{\"label\": \"Sao Paulo (southamerica-east1) \", \"value\": \"southamerica-east1\"},\n{\"label\": \"Iowa (us-central1) \", \"value\": \"us-central1\"},\n{\"label\": \"South Carolina (us-east1) \", \"value\": \"us-east1\"},\n{\"label\": \"Northern Virginia (us-east4) \", \"value\": \"us-east4\"},\n{\"label\": \"Oregon (us-west1) \", \"value\": \"us-west1\"},\n{\"label\": \"Los Angeles (us-west2) \", \"value\": \"us-west2\"},\n{\"label\": \"Salt Lake City (us-west3) \", \"value\": \"us-west3\"},]\n\nexport const COMPUTE_PROFILE = [\n {\"label\": \"Dummy\", \"value\": \"dummy\"},\n {\"label\": \"Profile 1\", \"value\": \"cp1\"},\n {\"label\": \"Profile 2\", \"value\": \"cp2\"},\n {\"label\": \"Profile 3\", \"value\": \"cp3\"},\n ]\n\n\nexport const MANDATE_RESET_PASSWORD = {\n \"Reset_Password\": \"cmVzZXRQYXNzd29yZAo=\",\n \"One\": \"b25lCg==\",\n \"Zero\": \"emVybwo=\"\n}\nexport const SUBSCRIPTION_DOC= \"https://docs-subscription.gcp-qualdo.ai/\"\n\nexport const LEGAL_AGREEMENT_LINK = \"https://www.qualdo.ai/legal-agreement/\"\n\nexport const DEFAULT_SUBNET_RANGE = '10.101.0.0/16';\n\nexport const CYCLE ={\n 'annually':\"Annually\",\n 'monthly': \"Monthly\",\n}\n\nexport const DEPLOYMENT_DATA = {\n \"cloud\":\"Google Cloud\",\n \"edition\": \"DRX\",\n \"compute_config\": \"Standard\",\n \"cloud_support\": \"Qualdo's Private Cloud\",\n \"subscription\": \"professional\",\n \"cycle\": \"annually\",\n \"status\": \"initiated\",\n \"whitelisted_ip\":['0.0.0.0/0']\n}\n\nexport const QUALDO_CLOUD = \"Qualdo's Private Cloud\"\n\nexport const PRIVATE_CLOUD = \"My Enterprise Private Cloud\"\n\nexport const DEPLOYMENT_FAILURE = [\n \"Unable to create the Deployment\",\n \"Please check the given details else click on Try again to redeploy\"\n]\n\nexport const PERMISION_DENIED = [\n \"Insufficient permission(s) to satisfy the request.\",\n \"Please make sure the necessary permissions are enabled.\"\n]\n\nexport const INSUFFICIENT_QUATO = [\n \"Insufficient regional quota(s) to satisfy request.\",\n \"Please make sure the required resources quotas are available.\"\n]\n\nexport const ACCOUNT_MISMATCH = [\n \"The given account name does not match the account name in the service account key file.\",\n \"Please check the uploaded json key file.\"\n]\n\nexport const REQUIRED_QUOTAS = [\n \"CPUS - 72\",\n \"DISKS_TOTAL_GB - 4096\",\n \"STATIC_ADDRESSES - 4\",\n \"IN_USE_ADDRESSES - 18\",\n \"SSD_TOTAL_GB - 3000\",\n \"LOCAL_SSD_TOTAL_GB - 6000\"\n]\n\nexport const REQUIRED_PERMISSIONS=[\n \"Cloud SQL Admin\",\n \"Cloud SQL Client\",\n \"Dataproc Editor\",\n \"GKE Hub Service Agent\",\n \"Kubernetes Engine Service Agent\",\n \"Secret Manager Admin\",\n \"Service Networking Admin\",\n \"Storage Admin\",\n]\nexport const LOCAL_STORE_KEY = \"yek_odlauq\"","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 \n render() {\n\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"," export const iam_ip = window.location.hostname+\"/centralconsole\"\n export const iam_google_signup = window.location.hostname+\"/centralconsole\"\n export const ui_service_ip = window.location.hostname+\"/centralconsole\"\n\n\n// export const iam_ip = \"subscriptions.gcp-qualdo.ai/centralconsole\"\n// export const iam_google_signup=\"subscriptions.gcp-qualdo.ai/centralconsole\"\n// export const ui_service_ip = \"subscriptions.gcp-qualdo.ai/centralconsole\"\n\n\n// export const iam_ip = \"localhost:8096\"\n// export const iam_google_signup=\"localhost:8091\"\n// export const ui_service_ip = \"localhost:3007\"\n// export const console_ip = \"localhost:3000\"\n","import {iam_ip} from \"./ip_details\";\nimport CryptoJS from 'crypto-js';\nimport {faCheckCircle, faTimesCircle} from '@fortawesome/free-solid-svg-icons';\nimport {\n DateParts,\n DEFAULT_CURRENCY_SYMBOL,\n IS_NONE_CHECK,\n PROTOCOL,\n QualdoPlanCycle,\n IAM_SECRET_KEY,\n DRX_DOCUMENT_BASE_LINK, DOCUMENT_LINK_MAPPING,\n } from './constant';\n\nconst cachedLocalData = {};\nexport function getRedirectionLinkToChangePassword() {\n return \"/password-reset\"\n}\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\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\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 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 removeQualdoPlanCycle() {\n localStorage.removeItem(\"qualdoPlanCycle\");\n localStorage.removeItem(\"src_choose_plan\")\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 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 encryptForLocalUsage(incomingJSON) {\n const ciphertext = CryptoJS.AES.encrypt(JSON.stringify(incomingJSON), IAM_SECRET_KEY);\n return ciphertext.toString();\n}\n\nexport function get_document_link(page=\"index\",doc_link){\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 let ec = encryptForLocalUsage(data)\n data = ec.replace(/\\+/g, 'qua111111d000');\n // let authDetails = \"?user_id=\"+localStorage.getItem(\"user_id\")+\n // \"&team_id=\"+localStorage.getItem(\"team_id\")+\"&auth_token=\"+token+\"&iam_ip=\"+iam_ip\n let authDetails = \"?data=\"+data\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 if(doc_link !== undefined){\n document_link = doc_link+ url+authDetails\n }\n else{\n document_link = DRX_DOCUMENT_BASE_LINK+ url+authDetails\n }\n \n\n// document_link = \"https://docs.qualdo.ai/index.html?user_id=\"+localStorage.getItem(\"user_id\")+\n// \"&team_id=\"+localStorage.getItem(\"team_id\")+\"&auth_token=\"+token+\"&iam_ip=\"+iam_ip\n\n }\n return document_link\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('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}\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 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 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 getProtocol(ipAddress) {\n if (ipAddress.includes(\"localhost\")){\n return \"http:\";\n }\n\n return PROTOCOL;\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\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}","import mixpanel from 'mixpanel-browser';\nmixpanel.init('155c019784ab639716eb7828d60964e2', {debug: true});\n\nexport function postMixpanel(event_name){\n mixpanel.track(event_name, { });\n}","import $ from \"jquery\";\nimport { browserHistory } from 'react-router';\nimport { iam_ip, ui_service_ip } from \"./ip_details\";\nimport {\n BRAIN_TREE_AUTH_TOKEN,\n SUBSCRIPTION_PLANS,\n VALID_QUALDO_PLANS,\n QualdoPlanVersions,\n PERMISION_DENIED,\n INSUFFICIENT_QUATO,\n ACCOUNT_MISMATCH,\n REQUIRED_QUOTAS,\n REQUIRED_PERMISSIONS, \n DEPLOYMENT_DATA,\n DEPLOYMENT_FAILURE,\n} from \"./constant\";\nimport {\n getCompleteEndpoint, getProtocol,\n isPlanChanged, removeLocalStorageKeys\n} from \"./common_utils\";\nimport { postMixpanel } from '../mixpanel';\n\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\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 removeLocalStorageKeys();\n window.location = '/';\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: '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 return responseData;\n }).catch(error => console.log(end_point, \"- failed\"));\n}\n\nexport function 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 removeLocalStorageKeys();\n window.location = '/';\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: {\n 'Content-Type': 'application/json', 'api-type': 'qualdo_db_auth', 'authToken': token,\n \"userId\": user_id, \"teamId\": team_id\n }\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch(error => console.log(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 removeLocalStorageKeys();\n window.location = '/';\n }\n token = item.value;\n }\n let protocol = getProtocol(ip);\n const reqEndPoint = getCompleteEndpoint(protocol, ip, end_point);\n\n return fetch(reqEndPoint, {\n method: 'DELETE',\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 return responseData;\n }).catch(error => console.log(end_point, \"- failed\"));\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 let deployment_id = localStorage.getItem('deployment_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 localStorage.removeItem(\"sessionToken\");\n window.location = '/';\n }\n session = item.value;\n }\n\n let protocol = getProtocol(ip);\n const reqEndPoint = getCompleteEndpoint(protocol, ip, end_point);\n return fetch(reqEndPoint, {\n method: 'GET',\n // 'user_plan': 'professional', 'plan_cycle': 'annually'\n headers: { \"data\": JSON.stringify(data), 'Content-Type': 'application/json', 'api-type': 'qualdo_db_auth', 'authToken': session, \"userId\": user_id, \"teamId\": team_id, 'deployment_id': deployment_id }\n }).then((response) => response.json()).then((responseData) => {\n return responseData;\n }).catch((error) => {\n console.log(reqEndPoint, JSON.stringify(error));\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 console.log(res)\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 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 getBillingAddressDetailsTableData(addressDetails) {\n let reqAddressDetails = [];\n\n if (addressDetails === undefined || addressDetails === null) {\n return reqAddressDetails;\n }\n let prime = addressDetails.filter(stu => stu.details.isPrimary === true);\n\n if (prime.length === 0) {\n prime = addressDetails.filter(stu => stu.details.isPrimary !== true);\n prime[0]['details']['billing_address_id'] = prime[0]['billing_address_id']\n prime = prime[0]\n }\n else {\n prime[0]['details']['billing_address_id'] = prime[0]['billing_address_id']\n prime = prime[0]\n }\n\n return prime;\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\n// \n\nexport function getpendingPaymentTableData(billingHistory) {\n let headers = [\"Order ID\", \"Deployment Name\", \"Edition\",\n \"Cloud\", \"Amount\", \"Validity Period\", \"Auto Renewal\", \"Actions\"];\n let billingHistoryTableRows = [];\n let requiredData = []\n let billingTableData = {\n \"headers\": headers,\n \"data\": billingHistoryTableRows,\n \"requiredData\": requiredData,\n };\n\n if (billingHistory === undefined || billingHistory === null) {\n return billingTableData;\n }\n let index = 0;\n for (let deployment of billingHistory) {\n if (deployment.payment_status ===0) {\n let rowData = [];\n let reqData = {};\n let billingDetails = deployment.billing_history\n for (let billing of billingDetails) {\n\n\n rowData.push({ \"value\": billing.order_id, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.deployment_name, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.edition, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.cloud, \"type\": \"td\" });\n rowData.push({ \"value\": billing.amount, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.validity_date, \"type\": \"td\" });\n if (deployment.auto_debit_status === 0) {\n rowData.push({ \"value\": 'No', \"type\": \"td\" });\n }\n else {\n rowData.push({ \"value\": billing.details.billing_cycle, \"type\": \"td\" });\n }\n reqData['renew'] = deployment.renew\n reqData['payment_status'] = deployment.payment_status\n reqData['deployment_id'] = deployment.deployment_id\n rowData.push({\"value\": reqData, \"type\": \"td\"});\n requiredData.push(reqData);\n }\n billingHistoryTableRows.push(rowData);\n index = index + 1;\n }\n\n }\n return billingTableData;\n}\n\nexport function getupcomingPaymentTableData(billingHistory) {\n let headers = [\"Order ID\", \"Deployment Name\", \"Edition\",\n \"Cloud\", \"Amount\", \"Validity Period\", \"Auto Renewal\", \"Actions\"];\n let billingHistoryTableRows = [];\n let requiredData = []\n let billingTableData = {\n \"headers\": headers,\n \"data\": billingHistoryTableRows,\n \"requiredData\": requiredData,\n };\n\n if (billingHistory === undefined || billingHistory === null) {\n return billingTableData;\n }\n let index = 0;\n for (let deployment of billingHistory) {\n if (deployment.is_active === 1 && (deployment.status === 'deployed' || deployment.status === 'deletion initiated' || deployment.status === 'deleted' || deployment.status === 'active' || deployment.status === 'deletion failed' )) {\n let rowData = [];\n let reqData = {};\n let billingDetails = deployment.billing_history\n for (let billing of billingDetails) {\n rowData.push({ \"value\": billing.order_id, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.deployment_name, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.edition, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.cloud, \"type\": \"td\" });\n rowData.push({ \"value\": billing.amount, \"type\": \"td\" });\n rowData.push({ \"value\": deployment.validity_date, \"type\": \"td\" });\n if (deployment.auto_debit_status === 0) {\n rowData.push({ \"value\": 'No', \"type\": \"td\" });\n }\n else {\n rowData.push({ \"value\": billing.details.billing_cycle, \"type\": \"td\" });\n }\n reqData['renew'] = deployment.renew\n reqData['payment_status'] = deployment.payment_status\n reqData['deployment_id'] = deployment.deployment_id\n rowData.push({\"value\": reqData, \"type\": \"td\"});\n requiredData.push(reqData);\n }\n billingHistoryTableRows.push(rowData);\n index = index + 1;\n }\n\n }\n return billingTableData;\n}\n\nexport function getBillingHistoryTableData(billingData) {\n let headers = [\"Order ID\", \"Deployment Name\", \"Edition\",\n \"Cloud\", \"Billing Date\", \"Card Number\",\"Coupon\", \"Amount\", \"Status\", \"Pdf\"];\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.billing_history\n\n /**\n * Replace the deleted deployment name\n * deleted deployement name is modified in backend\n */\n if(billing.is_active === 0){\n let name = billing.deployment_name\n const splitName = name.split(\"__1__\");\n billing.deployment_name = splitName[0]\n }\n for (let details of billingDetail) {\n rowData.push({ \"value\": details.order_id, \"type\": \"td\" });\n rowData.push({ \"value\": billing.deployment_name, \"type\": \"td\" });\n rowData.push({ \"value\": billing.edition, \"type\": \"td\" });\n rowData.push({ \"value\": billing.cloud, \"type\": \"td\" });\n\n rowData.push({ \"value\": `${details.created_time}`, \"type\": \"td\" });\n rowData.push({ \"value\": `**** ${details.details.last_4}`, \"type\": \"td\" });\n rowData.push({ \"value\": `${details.coupon_code}`, \"type\": \"td\" });\n rowData.push({ \"value\": `${details.currency_symbol}${details.amount}`, \"type\": \"td\" });\n if (details.payment_status === 1) {\n rowData.push({ \"value\": \"Paid\", \"type\": \"td\" });\n }\n else {\n rowData.push({ \"value\": \"Unpaid\", \"type\": \"td\" });\n\n }\n rowData.push({ \"value\": billing, \"type\": \"td\" });\n }\n billingTableRows.push(rowData);\n index = index + 1;\n }\n\n return billingTableData;\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\nexport function getApi(api_name, details = {}) {\n const team_id = localStorage.getItem('team_id');\n const user_id = localStorage.getItem('user_id');\n let data = { \"tenant_id\": team_id }\n switch (api_name) {\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 \"accountDetails\":\n call_get_api(ui_service_ip, \"account/features\", data).then((res_1) => {\n if (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 \"get_user_payments_and_billing_history\":\n // data['deployment_id'] = localStorage.getItem('deployment_id')\n data['user_id'] = localStorage.getItem('user_id');\n call_get_api(iam_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.deployment_details;\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 let nextPaymentDates = billingHistory.map((billingHistory) => billingHistory.next_payment_date);\n let upcomingPayment = getupcomingPaymentTableData(billingHistory)\n let pendingPayment = getpendingPaymentTableData(billingHistory)\n let allDetails = getPaymentDetailsTableData(paymentDetails);\n billingAddress = getBillingAddressDetails(billingAddress);\n let billingAddressTableData = getBillingAddressDetailsTableData(data.billing_address)\n let billingHistoryTableData = getBillingHistoryTableData(billingHistory);\n let active_deployment = [];\n let pending_payment_deployment = [];\n for (let deployment of billingHistory) {\n if (deployment.is_active === 1 && (deployment.status === 'deployed' || deployment.status === 'deletion initiated' || deployment.status === 'deleted' || deployment.status === 'active' || (deployment.is_active === 0 && deployment.status === 'deletion failed'))) {\n active_deployment.push(deployment)\n }\n }\n for (let deployment of billingHistory) {\n if (deployment.payment_status === 0 && deployment.is_active === 1) {\n pending_payment_deployment.push(deployment)\n }\n }\n this.setState({\n deployment_details: active_deployment,\n pendingDeploymentDetails:pending_payment_deployment,\n upcomingPaymentData: upcomingPayment,\n pendingPaymentData: pendingPayment,\n next_payment_date: nextPaymentDates,\n availableCards: allDetails,\n billingHistory: billingHistoryTableData,\n autoDebit: auto_debit_status,\n disableAutoDebitToggle: false,\n billinginitalloader: false,\n billing_address: billingAddressTableData,\n billingAddresses: billingAddress,\n receiptData: billingHistory,\n\n });\n if (billingHistory.length !== 0) {\n localStorage.setItem('firstPayment', false)\n }\n\n } else {\n this.setState({ errorOccurred: true });\n }\n\n this.setState({ cardGroupLoading: false });\n });\n break;\n case \"fetchQualdoPlans\":\n let plans = SUBSCRIPTION_PLANS;\n this.setQualdoPlans(plans);\n break;\n case \"get_payment_page_details\":\n let getPaymentDetailsEndPoint = \"customer/payment_page\";\n let planData = { \"tenant_id\": team_id }\n planData['user_id'] = user_id\n planData['deployment_id'] = localStorage.getItem(\"deployment_id\");\n let srcIsChoosePlan = this.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 call_get_api(iam_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 = 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 default:\n break;\n }\n}\n\nexport function getBrainTreeAuthToken() {\n return BRAIN_TREE_AUTH_TOKEN;\n}\n\nexport function submitUsersPayment(paymentData) {\n /**\n * this function is used by both deployment(Wizard) and payment page for payment process\n */\n const teamId = localStorage.getItem('team_id');\n let user_id = localStorage.getItem('user_id');\n const deploymentId = localStorage.getItem('deployment_id');\n const session = localStorage.getItem(\"sessionToken\");\n let endPoint = \"customer/payment_page\";\n paymentData[\"tenant_id\"] = teamId;\n paymentData[\"user_id\"] = user_id;\n paymentData[\"deployment_id\"] = deploymentId;\n call_post_api(iam_ip, endPoint, paymentData, session).then((response) => {\n $(\"#icon-arrow\").addClass(\"d-none\");\n $(\".spinner-border\").addClass(\"d-inline-block\")\n if (response === undefined) {\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n $(\"#icon-arrow\").removeClass(\"d-none\");\n this.setState({ errorOccurred: true });\n this.setState({ disabled: false });\n }\n else if (response.code === 200) {\n $(\"#check-circle\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: true });\n this.setState({ errorOccurred: false });\n if((localStorage.getItem('pay') !== null || localStorage.getItem('pay') !== 'null') && localStorage.getItem('pay') === 'true' ){\n /**\n * Condition to handle payment page flow\n */\n browserHistory.push('/dashboard')\n localStorage.removeItem('pay')\n }\n else if (localStorage.getItem('currentStatus') === 'step2'){\n setTimeout(()=>{\n let status = { 'status': 'payment success' }\n let endPoint = \"/deployments/\" + deploymentId\n call_update_api(iam_ip, endPoint, status).then((response) => {\n if (response !== null && response.code === 200) {\n localStorage.setItem(\"deployment_id\", response['deployment_id']);\n localStorage.setItem(\"currentStatus\", \"step3\");\n localStorage.removeItem('firstPayment')\n }\n });\n },3000)\n }\n }\n else {\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n $(\"#icon-arrow\").removeClass(\"d-none\");\n this.setState({ errorOccurred: true,\n disabled: false,\n showModal:true,\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 let rememailId = localStorage.getItem('rememailId')\n let rememberMe = localStorage.getItem('rememberMe')\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 /**\n * Clearing all local storage varibale expect Remember Me local variables\n */\n localStorage.clear();\n localStorage.setItem('rememailId',rememailId)\n localStorage.setItem('rememberMe',rememberMe)\n window.location = '/';\n }\n });\n postMixpanel('User logged out');\n\n break;\n default:\n break\n }\n}\n\nexport function setShow(key, value) {\n this.setState({ [key]: value })\n}\n\n\nexport function handleSubmit(event) {\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 }\n switch (name) {\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\n default:\n break;\n }\n}\n\nexport function submitPrimaryCardRequest(cardDetail) {\n let user_id = localStorage.getItem('user_id');\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, 'user_id': user_id }\n let end_point = \"customer/payment/primary\";\n\n call_get_api(iam_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}\n\nexport function deleteCardDetails(cardDetails) {\n let session = localStorage.getItem(\"sessionToken\");\n let teamID = localStorage.getItem('team_id');\n let user_id = localStorage.getItem('user_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, 'user_id': user_id };\n call_delete_api(iam_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 user_id = localStorage.getItem('user_id');\n cardDetails[\"user_id\"] = user_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(iam_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 user_id = localStorage.getItem('user_id');\n cardDataToPost[\"user_id\"] = user_id;\n let end_point = \"customer/payment\";\n cardDataToPost[\"tenant_id\"] = teamID;\n call_post_api(iam_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\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 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 postDeployment(data) {\n const teamId = localStorage.getItem('team_id');\n const admin_email = localStorage.getItem('emailId');\n data['admin_email'] = admin_email\n data['tenant_id'] = teamId\n this.setState({ currentStep: 'step1' })\n let endPoint = \"deployments/teams/\" + data['teamId'];\n localStorage.setItem(\"deployment_name\", data['deployment_name']);\n let id = localStorage.getItem('deployment_id')\n if (id === null) {\n call_post_api(iam_ip, endPoint, data).then((response) => {\n if (response.code === 401) {\n this.showToast(\"alert-danger\", response.message, \"\")\n this.setState({ errorOccurred: true })\n return false\n } else if (response.code === 200) {\n this.setState({ post: false })\n this.setState({ errorOccurred: false })\n localStorage.setItem('currentStatus', 'step2')\n this.setState({ currentStep: 'step2' })\n localStorage.setItem('validate', false)\n localStorage.setItem(\"deployment_id\", response['deployment_id']);\n localStorage.setItem(\"currentId\", response['deployment_id']);\n return true\n }\n });\n }\n}\n\nexport function updateDeployment(data) {\n const teamId = localStorage.getItem('team_id');\n const admin_email = localStorage.getItem('emailId');\n data['admin_email'] = admin_email\n data['tenant_id'] = teamId\n const deploymentId = localStorage.getItem('deployment_id');\n let endPoint = \"/deployments/\" + deploymentId\n localStorage.setItem(\"deployment_name\", data['deployment_name']);\n call_update_api(iam_ip, endPoint, data).then((response) => {\n if (response.code !== 200) {\n } else if (response !== null && response.code === 200) {\n localStorage.setItem(\"deployment_id\", response['deployment_id']);\n }\n });\n}\n\nexport function triggerDeployment() {\n const deploymentId = localStorage.getItem('deployment_id');\n let endPoint = \"/deployments/\" + deploymentId + \"/trigger\";\n call_post_api(iam_ip, endPoint).then((response) => {\n if (response === undefined) {\n } else if (response !== null && response.code === 200) {\n this.setState({status: 'deployment initiated'});\n }\n });\n\n}\n\n\nexport function getAllDeployment(data) {\n const teamId = localStorage.getItem('team_id');\n let endPoint = \"/deployments/teams/\" + teamId\n call_get_api(iam_ip, endPoint).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n } else if (response !== null && response.code === 200) {\n let allDeployments=[]\n let in_progressDeployment = []\n for (let deployment of response['deployments']) {\n if (deployment.status === 'active' || deployment.status === 'deployed' || deployment.status === 'deletion initiated' || deployment.status === 'deleted' || deployment.status === 'deletion failed') {\n allDeployments.push(deployment)\n }\n if(deployment.status === 'initiated' || deployment.status === 'payment success' || deployment.status === 'deployment initiated' || deployment.status === 'active' || deployment.status === 'failed'){\n in_progressDeployment.push(deployment)\n }\n }\n let tableData = deployment_updates_table(allDeployments)\n this.setState({ tableData: tableData });\n if(in_progressDeployment.length > 0){\n this.setState({ newDeploymentData: in_progressDeployment });\n this.setState({ status: in_progressDeployment[0]['status'] });\n }\n let deployments = response['deployments']\n if ((window.location.pathname === '/dashboard' || window.location.pathname === '/settings') && deployments.length >= 1) {\n for (let deployment of deployments) {\n if (deployment['status'] === 'deployed' || deployment['status'] === 'deleted' || deployment['status'] === 'deletion initiated' || deployment.status === 'deletion failed') {\n localStorage.setItem(\"deploymentStatus\", 'deployed')\n localStorage.setItem(\"currentStatus\", 'deployed')\n localStorage.setItem(\"secondDeployment\",true)\n }\n }\n }\n this.setState({loader:false})\n }\n });\n}\n\n\nfunction deployment_updates_table(inputData) {\n let headers = [\"Deployment\", \"Edition\", \"Status\", \"Cloud\", \"Deployed In\", \"Region\", \"Deployed On\", \"Actions\"];\n let final_op = [];\n for (let i = 0; i < inputData.length; i++) {\n let row = [];\n let d = inputData[i];\n row.push({ \"value\": { \"name\": d[\"deployment_name\"], \"url\": d[\"qualdo_url\"] }, \"type\": \"td\" });\n row.push({ \"value\": d[\"edition\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"status\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"cloud\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"cloud_support\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"region\"], \"type\": \"td\" });\n row.push({ \"value\": d[\"created_on\"], \"type\": \"td\" });\n row.push({ \"value\": d, \"type\": \"td\" });\n final_op.push(row);\n }\n let table_data = { \"headers\": headers, \"data\": final_op };\n return table_data;\n}\n\n\n\nexport function getDeployment() {\n let currentId = localStorage.getItem('currentId')\n let deploymentId = ''\n if (currentId !== null) {\n deploymentId = localStorage.getItem('currentId');\n }\n else {\n deploymentId = localStorage.getItem('deployment_id');\n }\n let endPoint = \"/deployments/\" + deploymentId\n\n if (deploymentId !== null) {\n call_get_api(iam_ip, endPoint).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n } else if (response !== null && response.code === 200) {\n this.setState({ \n deploymentDetails: response['deployment'] , \n loader : false});\n localStorage.setItem(\"deployment_id\", response['deployment']['deployment_id'])\n localStorage.setItem(\"currentState\", response['deployment']['status']);\n let progressTime = 5\n if(response['deployment']['pipeline_status'] !== undefined || response['deployment']['pipeline_status'] !== null){\n progressTime = response['deployment']['pipeline_status']\n }\n this.setState({ \n deployment_name: response['deployment']['deployment_name'],\n cycle: response['deployment']['cycle'],\n cloud: response['deployment']['cloud'],\n cloud_support: response['deployment']['cloud_support'],\n region: response['deployment']['region'],\n account_id: response['deployment']['account_id'],\n edition: response['deployment']['edition'],\n service_account: response['deployment']['service_account'],\n subnet: response['deployment']['subnet'],\n deployment_config:response['deployment']['deployment_config'],\n json_file: response['deployment']['json_file'],\n subscription: response['deployment']['subscription'],\n status: response['deployment']['status'],\n progressStatus: response['deployment']['status'],\n time: progressTime,\n // elastic_search_key: response['deployment']['elastic_search_key'],\n \n });\n $('.custom-file-label').addClass(\"selected\").html(response['deployment']['json_file']);\n let errorType = response['deployment']['pipeline_status_text']\n if(errorType !== null){\n if(errorType.includes(\"Insufficient regional quota\")){\n this.setState({\n statusText:INSUFFICIENT_QUATO,\n prerequesties:REQUIRED_QUOTAS\n })\n }\n else if(errorType.includes(\"Permission denied\")){\n this.setState({\n statusText:PERMISION_DENIED,\n prerequesties:REQUIRED_PERMISSIONS,\n })\n }\n else if(errorType.includes(\"Service-Account name does not match\")){\n this.setState({\n statusText:ACCOUNT_MISMATCH,\n })\n }\n else{\n this.setState({\n statusText:DEPLOYMENT_FAILURE,\n })\n }\n }\n\n //Get, check and set network radio button\n let whitelisted = response['deployment']['whitelisted_ip']\n if(whitelisted.length === 1 && whitelisted[0] === DEPLOYMENT_DATA['whitelisted_ip'][0]){\n this.setState({\n restricted_network : false,\n public_network : true,\n whitelisted_ip:[]\n })\n }\n else{\n this.setState({\n restricted_network : true,\n public_network : false,\n whitelisted_ip:response['deployment']['whitelisted_ip']\n })\n }\n // if(response['deployment']['elastic_search_key'] !== null){\n // this.setState({\n // elasticSearch : true, \n // elastic_search_key: response['deployment']['elastic_search_key'],\n // })\n // }\n }\n });\n }\n}\n\nexport function planDetails() {\n let endPoint = \"/all_plan_details\"\n call_get_api(iam_ip, endPoint).then((response) => {\n if (response === undefined) {\n this.setState({ errorOccurred: true });\n } else if (response !== null && response.code === 200) {\n // this.setState({planDetails: response['plan_details']});\n let data = response['plan_details']\n this.setState({loader:false})\n for (let price of data) {\n if (price.cloud === \"Qualdo's Private Cloud\") {\n if(price.plan_cycle === 'annually'){\n this.setState({ plan_price: price.price })\n localStorage.setItem(\"qualdoannualplantitle\", price.plan_name);\n localStorage.setItem(\"qualdoannualplanprice\", price.price);\n }\n else{\n this.setState({ plan_price: price.price })\n localStorage.setItem(\"qualdomonthlyplantitle\", price.plan_name);\n localStorage.setItem(\"qualdomonthlyplanprice\", price.price);\n }\n }\n else if (price.cloud === \"My Enterprise Private Cloud\") {\n if(price.plan_cycle === 'annually'){\n this.setState({ plan_price: price.price })\n localStorage.setItem(\"annualplantitle\", price.plan_name);\n localStorage.setItem(\"annualplanprice\", price.price);\n }\n else{\n this.setState({ plan_price: price.price })\n localStorage.setItem(\"monthlyplantitle\", price.plan_name);\n localStorage.setItem(\"monthlyplanprice\", price.price);\n }\n }\n }\n return response\n }\n });\n}\n\n\nexport function updateCustomerAddress(data) {\n const teamId = localStorage.getItem('team_id');\n const userId = localStorage.getItem('user_id');\n const adminEmail = localStorage.getItem('emailId');\n let endPoint = \"/customer/address\"\n data['admin_email'] = adminEmail\n data['tenant_id'] = teamId\n data['user_id'] = userId\n call_update_api(iam_ip, endPoint, data).then((response) => {\n if (response === undefined) {\n\n } else if (response !== null && response.code === 200) {\n this.setState({ updatedAddress: true })\n\n }\n });\n\n}\n\nexport function updateautoDebit(data) {\n const teamId = localStorage.getItem('team_id');\n const deploymentId = data['deployment_id'];\n let endPoint = \"/payment/autodebit\"\n data['tenant_id'] = teamId\n data['deployment_id'] = deploymentId\n call_update_api(iam_ip, endPoint, data).then((response) => {\n if (response === undefined) {\n\n } else if (response !== null && response.code === 200) {\n // this.setState({updatedAddress:true})\n // localStorage.setItem(\"deployment_id\", response['deployment_id']);\n\n }\n });\n\n}\n\nexport function getDeploymentPlanDetails() {\n const userId = localStorage.getItem('user_id');\n const teamId = localStorage.getItem('team_id');\n let deploymentId = localStorage.getItem('deployment_id');;\n let data = [];\n let endPoint = \"/plan_details/deployments/\" + deploymentId\n data['deployment_id'] = deploymentId\n data['user_id'] = userId\n data['team_id'] = teamId\n if(deploymentId !== null){\n call_get_api(iam_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({ \n cycleCost: response['plan_details']['price'], \n plan_price: response['plan_details']['price'],\n cycle: response['plan_details']['plan_cycle'],\n billingCycle: response['plan_details']['plan_cycle']\n })\n localStorage.setItem('selectedplanprice', response['plan_details']['price'])\n localStorage.setItem('selectedPlan', response['plan_details']['plan_cycle'])\n localStorage.setItem('qualdoPlanCycle', response['plan_details']['plan_cycle'])\n localStorage.setItem('qualdoPlan', response['plan_details']['plan_name'])\n localStorage.setItem('plan_details', JSON.stringify(response['plan_details']))\n }\n });\n }\n\n}\n\nexport function getuserrenewal(id) {\n const userId = localStorage.getItem('user_id');\n const teamId = localStorage.getItem('team_id');\n let deploymentId = id;\n let data = {};\n let endPoint = \"/renew/\" + deploymentId\n data['user_id'] = Number(userId)\n data['team_id'] = Number(teamId)\n\n call_update_api(iam_ip, endPoint, data).then((response) => {\n if (response === undefined) {\n } else if (response !== null && response.code === 200) {\n }\n });\n}\n\n\nexport function updateplancycle(data) {\n const teamId = localStorage.getItem('team_id');\n const deploymentId = localStorage.getItem('deployment_id');\n let endPoint = \"/deployments/\" + deploymentId + \"/updateplancycle\"\n data['tenant_id'] = teamId\n localStorage.setItem(\"deployment_name\", data['deployment_name']);\n call_update_api(iam_ip, endPoint, data).then((response) => {\n if (response !== 200) {\n\n } else if (response !== null && response.code === 200) {\n\n }\n });\n\n}\n\nexport function submitUsersRenew(paymentData, setPaymentStatus) {\n const teamId = localStorage.getItem('team_id');\n let user_id = localStorage.getItem('user_id');\n const deploymentId = localStorage.getItem('deployment_id');\n const session = localStorage.getItem(\"sessionToken\");\n let endPoint = \"renew/\" + deploymentId;\n paymentData[\"tenant_id\"] = teamId;\n paymentData[\"user_id\"] = Number(user_id)\n paymentData[\"deployment_id\"] = deploymentId;\n call_update_api(iam_ip, endPoint, paymentData, session).then((response) => {\n $(\"#icon-arrow\").addClass(\"d-none\");\n $(\".spinner-border\").addClass(\"d-inline-block\")\n if (response === undefined) {\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n $(\"#icon-arrow\").removeClass(\"d-none\");\n this.setState({ errorOccurred: true });\n this.setState({ disabled: false });\n }\n else if (response.code === 200) {\n this.setState({ disabled: true });\n this.setState({ errorOccurred: false });\n setPaymentStatus(true);\n browserHistory.push('/dashboard')\n localStorage.removeItem('renew')\n }\n else {\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n $(\"#icon-arrow\").removeClass(\"d-none\");\n this.setState({ errorOccurred: true });\n this.setState({ disabled: false });\n setPaymentStatus(false);\n this.showToast(\"alert-danger\", response.message, \"\");\n }\n });\n}\n\nexport function handleDeleteForDeployment() {\n let data = {}\n const userId = localStorage.getItem('user_id');\n const deploymentId = localStorage.getItem('deployment_id');\n let endPoint = \"/validate_password\";\n data['password'] = this.state.password\n data['user_id'] = userId\n data['deployment_id'] = deploymentId\n localStorage.setItem(\"deployment_name\", data['deployment_name']);\n call_post_api(iam_ip, endPoint, data).then((response) => {\n if (response.code === 401) {\n this.setState({ errorOccurred: true,\n deleteButtonDisabled: false,\n errors: response['message']\n })\n } else if (response.code === 200) {\n this.setState({ errorOccurred: false })\n localStorage.setItem(\"deployment_id\", response['deployment_id']);\n localStorage.setItem(\"currentId\", response['deployment_id']);\n let session = localStorage.getItem(\"sessionToken\");\n endPoint = \"/deployments/\" + deploymentId + \"/trigger\";\n let context = 'Deployment';\n call_delete_api(iam_ip, endPoint, session).then((response) => {\n if (response.code === 200) {\n this.setState({ deleteButtonDisabled: true });\n this.closeDeletepopup()\n this.props.showToast(\"alert-success\", `${context} deletion initiated`,\n '', '', false);\n } else {\n this.closeDeletepopup()\n this.setState({deleteButtonDisabled:false})\n this.props.showToast(\"alert-danger\", `Could not delete ${context.toLowerCase()}`,\n '', '', false);\n }\n });\n }\n else{\n this.setState({ deleteButtonDisabled: false ,\n errorOccurred: true\n });\n }\n return response\n });\n}\n\nexport function validateCoupon(data) {\n let endPoint = '/coupon/validate'\n call_post_api(iam_ip, endPoint, data).then((response) => {\n if (response.code === 200) {\n // Remove the Is-invalid class in coupon input field\n this.setState({ couponClass: '' })\n\n\n this.setState({promo_form:'Hidden'})\n this.setState({promo_success_text : 'Show'})\n // $('.promocode-form').removeClass('show');\n // $('.promocode-success-text').addClass('d-block');\n localStorage.setItem(\"validCoupon\", true)\n localStorage.setItem('coupon_code', data['coupon_code'])\n this.setState({ validCoupon: true })\n this.setState({ final_price: response['coupon_data']['final_price'] })\n this.setState({ discount: response['coupon_data']['discount'] })\n this.setState({ plan_price: response['coupon_data']['final_price'] })\n if (data['cycle'] === 'annually') {\n this.setState({ 'annualCoupon': true })\n this.setState({ 'montlyCoupon': false })\n\n }\n else {\n this.setState({ 'montlyCoupon': true })\n this.setState({ 'annualCoupon': false })\n }\n }\n else {\n // setting coupon input field as invalid once the coupon is invalid\n this.setState({ couponClass: 'is-invalid' })\n this.setState({ validCoupon: false })\n this.setState({coupon_code:null})\n $('.promo-code').removeClass('d-none')\n }\n\n });\n}","import React from 'react';\nimport {browserHistory} from 'react-router';\nimport CopyRights from '../../components/copyrights';\nimport { call_post_api, getAllDeployment,planDetails } from \"../../utils/event_handling\";\nimport { faUserCheck } from '@fortawesome/free-solid-svg-icons';\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 { Link } from 'react-router';\nimport Alert from 'react-bootstrap/Alert'\nimport {encryptForLocalUsage} from \"../../utils/common_utils\";\n\nimport mixpanel from 'mixpanel-browser';\n// mixpanel.init('155c019784ab639716eb7828d60964e2', {debug: true});\n\nlet currentStatus = \"\";\nclass Login extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.getAllDeployment = getAllDeployment.bind(this);\n this.planDetails = planDetails.bind(this)\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 planDetails : {'code':'','message':'','plan_details':''},\n tableData :{\"headers\": [], \"data\": []},\n passwordIcon: faEye,\n passwordType: \"password\",\n errors: errors,\n setPasswordLink: false,\n rememailId:rememailId,\n rempassword:rempassword,\n remcheckbox:remcheckbox,\n showAlert:true,\n };\n\n\n\n this.hideAlert = this.hideAlert.bind(this);\n this.disableButton = this.disableButton.bind(this);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.login = this.login.bind(this);\n }\n componentDidMount() {\n\n }\n hideAlert() {\n this.setState({\n errors: null,\n hideSubmitButton: false\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 localStorage.clear();\n this.disableButton();\n let { email, password} = event;\n const {rememberMe } = this.state;\n const data = {email: email, password: password};\n localStorage.setItem('emailId', email);\n call_post_api(iam_ip, \"login\", data).then((response) => {\n if (response === undefined) {\n this.setState({errors:\"Could not login\"});\n } else if (response.code === 200) {\n this.planDetails()\n if(rememberMe===true){\n localStorage.setItem(\"rememailId\", email);\n localStorage.setItem(\"rempassword\", password);\n localStorage.setItem(\"rememberMe\", rememberMe);\n\n }else {\n\n localStorage.setItem(\"rememailId\", \"\");\n localStorage.setItem(\"rempassword\", \"\");\n localStorage.setItem(\"rememberMe\",\"\");\n }\n\n const now = new Date();\n const responseData = response['response'];\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 setTimeout(() => browserHistory.push('/'), 9000000);\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 localStorage.setItem('sessionToken', JSON.stringify(item));\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 if(response['response']['deployments'].length === 0 ){\n currentStatus = 'step1'\n localStorage.setItem('validate',true)\n localStorage.setItem('deployment_name',\"\")\n localStorage.setItem('currentStatus', currentStatus);\n localStorage.setItem('selectedPlan', 'annually');\n localStorage.setItem('selectedplanprice', 1999);\n browserHistory.push(\"/deployment\");\n\n }\n \n if(response['response']['deployments'].length === 1 ){\n localStorage.setItem('validate',false)\n let deployStatus = response['response']['deployments'][0]['status']\n let buildNumber = response['response']['deployments'][0]['build_number']\n let deployment_id = response['response']['deployments'][0]['deployment_id']\n let cycle = response['response']['deployments'][0]['cycle']\n localStorage.setItem('cached_product', JSON.stringify(deployment_id));\n if(cycle === 'monthly'){\n localStorage.setItem('selectedPlan', cycle);\n localStorage.setItem('selectedplanprice', 200);\n }\n else{\n localStorage.setItem('selectedPlan', cycle);\n localStorage.setItem('selectedplanprice', 1999);\n }\n localStorage.setItem('deployment_id', deployment_id);\n localStorage.setItem('currentId', deployment_id);\n localStorage.setItem('deployment_name', response[\"response\"][\"deployments\"][0]['deployment_name']);\n if(deployStatus ===\"initiated\" || deployStatus === \"payment success\" || deployStatus === \"deployment initiated\" || deployStatus ==='failed' || deployStatus === \"active\"){\n if(deployStatus === \"payment success\" && (buildNumber === 0 || buildNumber === null || buildNumber === undefined)){\n currentStatus = 'step3'\n localStorage.setItem('currentStatus', currentStatus);\n browserHistory.push(\"/deployment\");\n }\n else if (deployStatus === \"initiated\"){\n currentStatus = 'step2'\n\n localStorage.setItem(\"DeploymentDetails\", JSON.stringify(response[\"response\"][\"deployments\"][0]));\n localStorage.setItem('currentStatus', currentStatus);\n localStorage.setItem('deployment_name', response[\"response\"][\"deployments\"][0]['deployment_name']);\n setTimeout(()=>\n browserHistory.push(\"/deployment\"),1000)\n\n }\n else if((buildNumber !== null || buildNumber !== undefined) && buildNumber !== 0 && (deployStatus === \"deployment initiated\" || deployStatus === \"active\" || deployStatus ===\"failed\")){\n currentStatus = 'step4'\n localStorage.setItem('currentStatus', currentStatus);\n localStorage.setItem('wizardStage', currentStatus);\n browserHistory.push(\"/deployment\");\n }\n else{\n currentStatus = 'step1'\n localStorage.setItem('selectedPlan','annually')\n localStorage.setItem('deployment_name',\"\")\n localStorage.setItem('currentStatus', currentStatus);\n browserHistory.push(\"/deployment\");\n }\n\n }\n else if(deployStatus==='deployed' || deployStatus===\"deletion initiated\" || deployStatus==='deleted' || deployStatus ==='deletion failed'){\n localStorage.setItem(\"deploymentStatus\", 'deployed');\n browserHistory.push(\"/dashboard\");\n }\n\n }\n else if(response['response']['deployments'].length > 1)\n {\n localStorage.setItem(\"deploymentStatus\", 'deployed');\n browserHistory.push(\"/dashboard\");\n }\n\n } else {\n let errorMsg = response.message;\n if (errorMsg === \"Bad request\") {\n errorMsg = \"An unexpected error occurred. Please try logging in again.\";\n }\n let setPasswordLink = this.state.setPasswordLink;\n if (errorMsg === \"Please set password or you can login using google!.\") {\n localStorage.setItem(\"setPassword\", true);\n setPasswordLink = true;\n } else {\n setPasswordLink = false;\n }\n this.setState({errors:errorMsg, hideSubmitButton: false, setPasswordLink: setPasswordLink});\n }\n });\n mixpanel.identify(email);\n mixpanel.track('Users logged in', { });\n mixpanel.people.set({\n $email: email\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 return (\n
\n { this.props.isFirstTimeLogin && this.state.showAlert ?\n this.setState({showAlert:false})}\n >\n Email Verified!\n

You have successfully verified your email!

\n
\n :

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 handleSubmit,\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 Forgot Password?\n
\n
\n Sign Up\n \n \n {this.state.hideSubmitButton ? : \"\"}\n
\n
\n )}\n \n \n
\n
\n );\n }\n\n}\nexport default Login;","import React from 'react';\nimport Image from './image';\nimport {removeLocalStorageKeys} 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 browserHistory.push('/');\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 { postUIlogs } from \"../utils/event_handling\";\n\n\n\nclass Home extends React.Component {\n constructor(props, context) {\n super(props, context);\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 Home;","import React from \"react\";\nimport Zendesk from \"react-zendesk\";\nconst ZENDESK_KEY = \"ff0db28a-1f4a-484b-a6a0-99a1d659e725\";\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 Dropdown from 'react-bootstrap/Dropdown';\nimport { handleClick, getAllDeployment } 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';\nimport {\n faPaperPlane,\n faUser, faReceipt, faAddressCard,\n faUserCog, faSignOutAlt,\n faHeadset, faBook,faQuestion\n} from '@fortawesome/free-solid-svg-icons';\nimport $ from \"jquery\";\nimport { Link } from 'react-router';\nimport OfflineComponent from './offlineComponent'\nimport { Offline } from \"react-detect-offline\";\nimport { get_document_link } from \"../utils/common_utils\";\nimport { SUBSCRIPTION_DOC } from \"../utils/constant\";\n\nconst userToggle = React.forwardRef(({ children, onClick }, ref) => (\n {\n e.preventDefault();\n onClick(e);\n }}\n >\n \n {children}\n \n));\n\n// const customLink = React.forwardRef(({link, tab, children, onClick}, ref) => (\n// \n// {children}\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};\n\nclass NavigationHeader extends React.Component {\n constructor(props) {\n super(props);\n this.getAllDeployment = getAllDeployment.bind(this);\n this.handleHelp = this.handleHelp.bind(this);\n this.newDeployment = this.newDeployment.bind(this)\n this.state = {\n zendeskShow: false,\n active: '',\n newDeploymentData: null,\n status: null,\n loader:true,\n }\n this.getAllDeployment(true);\n }\n\n\n componentDidUpdate(){\n if (window.location.pathname === '/deployment') {\n // Make deployment button active when it's inside the deployment screen\n $('.new-deployment').addClass('active');\n $('.dashboard').removeClass('active');\n }\n if (window.location.pathname === '/dashboard') {\n\n // Make Dashboard button active when it's inside the deployment screen\n $('.dashboard').addClass('active');\n }\n }\n\n componentDidMount() {\n $('body').addClass('theme-orange')\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\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 newDeployment() {\n // localStorage.removeItem('deployment_id');\n localStorage.removeItem('wizardStage');\n localStorage.removeItem('currentId');\n localStorage.removeItem('deploymentStatus');\n localStorage.setItem('currentStatus', 'step1')\n localStorage.setItem('validate', 'true')\n\n // NewDeployment will be true when user click create new deployment in dashboard screen\n\n if (this.props.secondDeployment === true && this.state.newDeploymentData != null && this.state.newDeploymentData.length < 1) {\n let currentStatus = 'step1'\n localStorage.setItem('validate', true)\n localStorage.setItem('deployment_name', \"\")\n localStorage.setItem('currentStatus', currentStatus);\n localStorage.setItem('selectedPlan', 'annually');\n browserHistory.push(\"/deployment\");\n }\n else if (this.state.newDeploymentData != null && this.state.newDeploymentData.length > 0) {\n\n // newDeploymentData will be fetch using getAllDeployment()\n let currentStatus = this.state.newDeploymentData[0]['status']\n localStorage.setItem('deployment_id', this.state.newDeploymentData[0]['deployment_id']);\n localStorage.setItem('currentId', this.state.newDeploymentData[0]['deployment_id']);\n // Direct to wizard 2nd step\n if (this.state.newDeploymentData[0]['status'] === 'initiated') {\n localStorage.setItem(\"DeploymentDetails\", JSON.stringify(this.state.newDeploymentData[0]));\n currentStatus = 'step2'\n localStorage.setItem('currentStatus', currentStatus);\n localStorage.setItem('deployment_name', this.state.newDeploymentData[0]['deployment_name']);\n setTimeout(() =>\n browserHistory.push(\"/deployment\"), 1000)\n }\n // Direct to wizard 3rd step\n else if (this.state.newDeploymentData[0]['status'] === \"payment success\") {\n currentStatus = 'step3'\n localStorage.setItem('currentStatus', currentStatus);\n browserHistory.push(\"/deployment\");\n }\n // Direct to wizard 4th step\n else if (this.state.newDeploymentData[0]['status'] === \"deployment initiated\" || this.state.newDeploymentData[0]['status'] === \"active\" || this.props.data[0]['status'] === \"failed\") {\n currentStatus = 'step4'\n localStorage.setItem('currentStatus', currentStatus);\n localStorage.setItem('wizardStage', currentStatus);\n browserHistory.push(\"/deployment\");\n }\n // No condition satisfied direct to 1st step\n else {\n setTimeout(() =>\n browserHistory.push('/deployment'))\n }\n }\n else (\n setTimeout(() =>\n browserHistory.push('/deployment'))\n )\n\n\n }\n\n // Dashboard button call\n handleDashboard() {\n localStorage.setItem('deploymentStatus','deployed')\n browserHistory.push('/dashboard')\n }\n\n render() {\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 status = localStorage.getItem('deploymentStatus')\n let href = '/deployment'\n if(window.location.pathname !== '/deployment' && status === 'deployed'){\n href = '/dashboard'\n }\n return (\n <>\n
{\"Subscription Management\"}
\n
\n\n
\n \n \n
\n \n\n
\n
\n \n \n \n
\n
\n
\n \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 Profile\n {((window.location.pathname !== '/deployment' && status === 'deployed') || localStorage.getItem('secondDeployment') === 'true') ?\n <>\n \n \n Payment Profile\n \n\n \n \n Upcoming Payment\n \n \n \n Billing History\n \n : ' '\n }\n \n \n Help Desk & Support\n \n\n \n \n Help Document\n \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\nconst mapStateToProps = state => {\n return state;\n}\n\nexport default connect(mapStateToProps, null)(NavigationHeader);\n\nexport function SimpleHeader() {\n\n return (\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 Help document\n \n \n \n Log Out\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, \n faChartArea, faPlusCircle, faUserCircle, faBell, faUserFriends, faBox } 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 'fabox': faBox,\n};\n\nclass BreadCrumb extends React.Component {\n\n render() {\n let icon = faIconMapping[this.props.icon];\n return (\n
\n
\n
\n \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\";\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","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","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 {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';\nimport {LEGAL_AGREEMENT_LINK} from \"../../../utils/constant\"\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 agreeCheck2:false,\n\n }\n \n }\n\n onSubmit(){\n }\n\n render() {\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.number().required(\"Zip Code is a required field\")\n .test(\n \"Invalid Zipcode\",\n function test(value){\n let country = this.parent.country\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 {this.props.page === \"model\" ? this.renderModelContent(this.props.name) : this.renderContent(this.props.name)}\n
\n \n \n );\n }\n}\n\nexport default CardHelpContent;\n","import React from 'react';\nimport $ from 'jquery';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport Tooltip from 'react-bootstrap/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\t$(\"#ip-address\").removeClass(\"input-group\")\n\t\t\t\tsetTags([...tags,event.target.value])\n\t\t\t\tprops.selectedTags([...tags, event.target.value]);\n\t\t\t\t// props.seletedip([...tags,])\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$(\"#ip-address\").addClass(\"input-group\")\n\t\t\t\t$(\".whitelisted-ip\").addClass('d-none')\n\n\t\t\t}\n\t\t\tevent.target.value = \"\";\n\t\t}\n\t};\n\n\tconst keyPress=e =>{\n\t\tif(e.keyCode === 188 || e.key ===\"Enter\"){\n\t\t addTags(e);\n\t\t e.preventDefault()\n\t\t}\n\t }\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\tRemove ?\n\t\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\t\t\t\t event.key ===\"Enter\" ? addTags(event) : null}\n\t\t\t\t\tonKeyDown={keyPress}\n\t\t\t\t\tonBlur={event => addTags(event)}\n\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\tdisabled={props.placeholder === null ? true : false}\n\t\t\t\t/>\n\t\t\t
\n\t\t
\n\t);\n};\n\nexport default TagsInput;","import * as MKPlayerSDK from \"@mediakind/mkplayer\"\nimport React from 'react'\nimport \"./mkplayer-ui.css\"\nimport {decryptForLocalUsage} from \"./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,\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 React from 'react';\nimport { browserHistory } from 'react-router';\nimport Image from '../components/image';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport ReactWizard from \"react-bootstrap-wizard\";\nimport { Row, Col, Button, FormControl, FormGroup } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowRight, faStar, faLongArrowAltLeft, faArrowLeft, faCheckCircle, faTimesCircle, faEdit } from '@fortawesome/free-solid-svg-icons';\nimport { faQuestionCircle } from '@fortawesome/free-regular-svg-icons';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Tooltip from 'react-bootstrap/Tooltip';\nimport Select from 'react-select';\nimport ProgressBar from 'react-bootstrap/ProgressBar'\nimport Form from 'react-bootstrap/Form';\nimport $ from 'jquery';\nimport NavigationHeader from '../components/navigationHeader';\nimport BreadCrumb from '../components/breadCrumb';\nimport * as yup from 'yup';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons';\nimport { Formik, ErrorMessage } from 'formik';\nimport {\n toastObj\n} from \"../utils/common_utils\";\nimport BillingAddress from \"../deploy/components/paymentcomponents/billingAddress.js\";\n\nimport {\n CONFIGURE_DATA_SOURCE_URL, PAYMENT_CARD_TYPES, PAYMENT_COMPONENT_STYLES,\n PAYMENT_FIELD_ID_MAP,\n QualdoPlanCycle, DEFAULT_SUBNET_RANGE, DEPLOYMENT_DATA, PRIVATE_CLOUD, \n // QUALDO_CLOUD,\n DRX_DOCUMENT_BASE_LINK, GCP_REGIONS\n} from \"../utils/constant\";\nimport Card from \"react-bootstrap/Card\";\nimport {\n getApi, planDetails, getBrainTreeAuthToken, getPaymentDetailsTableData,\n updateDeployment, triggerDeployment, submitUsersPayment, getDeployment,\n updateplancycle, validateCoupon, getDeploymentPlanDetails, call_post_api, call_update_api\n} from \"../utils/event_handling\";\nimport { iam_ip } from \"../utils/ip_details\";\nimport Toast from \"react-bootstrap/Toast\";\nimport PaymentOptions from \"../deploy/components/paymentcomponents/paymentOptions\";\nimport PaymentSectionHeader from \"../deploy/components/paymentcomponents/paymentSectionHeader\";\nimport { ZIP_DATA } from \"../utils/billingAddressConstant\";\nimport Load from '../components/loadAction';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport CardHelpContent from './components/cardHelpContent'\nimport { setDeploymentData } from \"../redux/actions\";\nimport { connect } from \"react-redux\";\nimport TagsInput from \"./TagsInput\"\nimport Modal from 'react-bootstrap/Modal';\nimport {Mediakind} from \"./../utils/mediaKind\"\n\nlet braintree = require('braintree-web');\n\nlet step = 1\nif (localStorage.getItem('deployStatus') === 'deployed') {\n localStorage.setItem('deployStatus', 'initiated')\n}\nlet currentStep = ''\n\nconst renderTooltip = (props) => (\n \n Need Help ?\n \n);\n\nconst closeTooltip = (props) => (\n \n Remove to change plan\n {/* Promo Code ? */}\n \n);\n\nclass FirstStep extends React.Component {\n constructor(props) {\n super(props);\n this.deploymentNameRef = React.createRef();\n this.cloudRef = React.createRef();\n this.settingRef = React.createRef();\n this.authorizednwRef = React.createRef();\n this.isValidated = this.isValidated.bind(this);\n this.onValueChange = this.onValueChange.bind(this);\n this.handleUpload = this.handleUpload.bind(this);\n this.getDeployment = getDeployment.bind(this);\n this.getDeploymentPlanDetails = getDeploymentPlanDetails.bind(this);\n this.planDetails = planDetails.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.promoCodeHandler = this.promoCodeHandler.bind(this);\n this.promoRepeatHandler = this.promoRepeatHandler.bind(this);\n this.promoSuccessHandler = this.promoSuccessHandler.bind(this);\n this.validateCoupon = validateCoupon.bind(this);\n this.handlevalidate = this.handlevalidate.bind(this);\n this.editSubnet = this.editSubnet.bind(this);\n this.updateDeployment = updateDeployment.bind(this)\n this.triggerDeployment = triggerDeployment.bind(this);\n // this.removeTags = this.removeTags.bind(this)\n // this.addTags = this.addTags.bind(this)\n // Iniitial value for Wizard Step-1.\n this.state = {\n deploymentDetails: null,\n deployment_name: '',\n compute_config: DEPLOYMENT_DATA['compute_config'],\n cloud_support: PRIVATE_CLOUD,\n requiredQualdoCloud:false,\n subscription: DEPLOYMENT_DATA['subscription'],\n cycle: DEPLOYMENT_DATA['cycle'],\n status: DEPLOYMENT_DATA['status'],\n subnet: DEFAULT_SUBNET_RANGE,\n account_id: '',\n service_account: '',\n region: '',\n // whitelisted_ip: '', // Intially whitelisted_ip is set to false for wizard validation \n // While sending data to backend it'll be set to null\n public_network: true,\n restricted_network: false,\n cloud: DEPLOYMENT_DATA['cloud'],\n edition: DEPLOYMENT_DATA['edition'],\n deployment_config: '',\n plan_price: null,\n toastStatus: false,\n toastMsg: null,\n toastClass: '',\n toastLink: null,\n toastIcon: null,\n toastHeading: null,\n errorOccurred: null,\n json_file: null,\n validCoupon: null,\n coupon: null,\n couponClass: 'null',\n discount: null,\n final_price: null,\n annualCoupon: null,\n montlyCoupon: null,\n showModal: false,\n helpSection: null,\n post: null,\n validate: null,\n enableEdit: false,\n loader: true,\n whitelisted_ip: [],\n errorClass: '',\n promo_form: 'Hidden',\n promo_text: 'Show',\n promo_success_text: 'Hidden',\n disableCycle: false,\n // elastic_search_key: \"\",\n // elasticSearch: false,\n placeHolder: \"Enter IP Address\",\n agreeCheck1: false,\n aggreeCheck2: false,\n checkBoxWarn: false,\n };\n\n\n // Restrict the user to move deployment screen without using Create new deployment button\n // create New Deployment ---> deployment screen.\n if (localStorage.getItem('currentStatus') === 'deployed') {\n browserHistory.push('/dashboard')\n }\n\n // Prefetch values using getDeployment when user toggle from wizard Step-1 -> Step-2\n this.planDetails();\n setTimeout(() =>\n this.getDeployment(), 100\n );\n setTimeout(() =>\n this.getDeploymentPlanDetails(), 200\n );\n this.getDeploymentPlanDetails();\n this.setState({ cycle: this.state.cycle })\n }\n\n // To handle the changes(Coupon code changes) done in wizard step-2 --> wizard Step-1 using getDerivedStateFromProps()\n static getDerivedStateFromProps(props, state) {\n if (props.wizardData !== undefined) {\n if (props.wizardData['Billing Details'] !== state.deploymentDetails) {\n if (props.wizardData['Billing Details'] !== undefined) {\n if (props.wizardData['Billing Details']['deployment_config'] !== null) {\n return {\n discount: props.wizardData['Billing Details']['discount'],\n deploymentDetails: props.wizardData['Billing Details'],\n validCoupon: props.wizardData['Billing Details']['validCoupon'],\n coupon: props.wizardData['Billing Details']['coupon'],\n couponClass: props.wizardData['Billing Details']['couponClass'],\n final_price: props.wizardData['Billing Details']['final_price'],\n plan_price: props.wizardData['Billing Details']['plan_price'],\n annualCoupon: props.wizardData['Billing Details']['annualCoupon'],\n cycle: props.wizardData['Billing Details']['cycle'],\n montlyCoupon: props.wizardData['Billing Details']['montlyCoupon'],\n promo_form: props.wizardData['Billing Details']['promo_form'],\n promo_text: props.wizardData['Billing Details']['promo_text'],\n promo_success_text: props.wizardData['Billing Details']['promo_success_text'],\n disableCycle: props.wizardData['Billing Details']['disableCycle'],\n }\n }\n }\n }\n }\n\n return null;\n }\n\n componentDidUpdate() {\n $('.nav-pills li a').each(function (i) {\n if ($(this).hasClass(\"checked\") === true) {\n if ($(this).hasClass(\"active\") === false) {\n $(this).addClass('is-done');\n $(this).removeClass('checked');\n }\n }\n });\n currentStep = localStorage.getItem('currentStatus')\n if (currentStep !== \"step1\") {\n $(\".btn-next\").trigger(\"click\");\n }\n let next = \"Next\"\n let Retry = localStorage.getItem(\"Retry\")\n if (Retry === 'true' ) {\n next = \"Deploy Now\"\n }\n $(\".btn-previous\").html(` Previous`);\n $(\".btn-next\").html(next + ` `);\n $(\".btn-finish\").html(` Finish`);\n // Will have loader until the page gets data from the\n if (this.state.loader === true) {\n $(\".btn-next\").addClass('d-none')\n }\n else {\n $(\".btn-next\").removeClass('d-none')\n }\n }\n\n isValidated() {\n if (this.state.validCoupon !== true) {\n this.setState({ validCoupon: null })\n this.setState({ couponClass: null })\n this.setState({ coupon: null })\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n }\n\n // Re-deploy process\n if (this.state.status === 'failed') {\n let reDeployData = {}\n if ( this.state.cloud_support === PRIVATE_CLOUD && this.state['deployment_name'] && this.state['edition'] && this.state['region'] && this.state.status &&\n this.state['account_id'] && this.state['service_account'] && this.state.deployment_config !== null) {\n reDeployData['deployment_name'] = this.state.deployment_name\n reDeployData['region'] = this.state.region\n reDeployData['account_id'] = this.state.account_id\n reDeployData['service_account'] = this.state.service_account\n reDeployData['whitelisted_ip'] = this.state.whitelisted_ip\n reDeployData['deployment_config'] = this.state.deployment_config\n reDeployData['subnet'] = this.state.subnet\n // reDeployData['elastic_search_key'] = this.state.elastic_search_key\n reDeployData['status'] = 'deployment initiated'\n reDeployData['json_file'] = localStorage.getItem('json_file')\n this.updateDeployment(reDeployData)\n /**\n * After updating the deployment\n * Will call the trigger deployment function\n */\n this.triggerDeployment()\n $('.deployment-failed').text('Deployment In-Progress')\n $('.nav-icon__error').addClass('d-none')\n $('.new-deployment').addClass('animated-striped-progress')\n localStorage.setItem('currentStatus', 'step4')\n localStorage.setItem('wizardStage', 'step4')\n localStorage.setItem('Retry', 'false')\n return true\n }\n // else if(this.state.cloud_support === QUALDO_CLOUD){\n // reDeployData['deployment_name'] = this.state.deployment_name\n // reDeployData['whitelisted_ip'] = this.state.whitelisted_ip\n // // reDeployData['subnet'] = this.state.subnet\n // // reDeployData['elastic_search_key'] = this.state.elastic_search_key\n // reDeployData['status'] = 'deployment initiated'\n // this.updateDeployment(reDeployData)\n // $('.deployment-failed').text('Deployment In-Progress')\n // $('.nav-icon__error').addClass('d-none')\n // $('.new-deployment').addClass('animated-striped-progress')\n // localStorage.setItem('currentStatus', 'step4')\n // localStorage.setItem('wizardStage', 'step4')\n // localStorage.setItem('Retry', 'false')\n // }\n else {\n return false\n }\n\n }\n if (this.state.restricted_network === true && this.state.whitelisted_ip.length < 1) {\n $(\".whitelisted-ip\").removeClass('d-none')\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n return false\n }\n\n // To handle scroll in Wizard-step2\n localStorage.setItem(\"Scroll\", true)\n\n if (this.state.final_price !== null) {\n this.setState({ plan_price: this.state.final_price })\n\n }\n this.setState({ post: null })\n\n // Avoid validation when user get back to update deployment details \n let validate = localStorage.getItem('validate');\n if (validate === 'true' || validate === true) {\n $(\"#deploy_validation\").trigger(\"click\");\n }\n this.setState({ json_file: localStorage.getItem('json_file') })\n step = 2\n // return true\n if (currentStep !== 'step1') {\n return true\n }\n let data = {}\n const teamId = localStorage.getItem('team_id');\n const admin_email = localStorage.getItem('emailId');\n data['admin_email'] = admin_email\n data['tenant_id'] = teamId\n data['status'] = this.state.status\n\n // Set whitelisted_ip to default value\n if (this.state.public_network === true) {\n data['whitelisted_ip'] = DEPLOYMENT_DATA['whitelisted_ip']\n }\n else {\n data['whitelisted_ip'] = this.state.whitelisted_ip\n }\n\n /**\n * Scroll the user to unfilled field\n */\n if(this.state.deployment_name.length < 1){\n window.scrollTo(0, this.deploymentNameRef.current.offsetTop)\n return false\n\n }\n\n if(this.state.cloud_support === PRIVATE_CLOUD){\n if(this.state.account_id.length < 1 || this.state.service_account.length < 1){\n window.scrollTo(0, this.cloudRef.current.offsetTop)\n return false\n \n }\n else if(this.state.region.length < 1){\n window.scrollTo(0, this.settingRef.current.offsetTop)\n return false\n }\n \n if(this.state.agreeCheck1 === false){\n this.setState({checkBoxWarn:true})\n window.scrollTo(0, this.settingRef.current.offsetTop)\n return false\n }\n }\n\n if (this.state.cloud_support === PRIVATE_CLOUD \n && this.state['deployment_name'] \n && this.state['edition'] \n && this.state['region'] \n && this.state.status \n && this.state['account_id'] \n && this.state['service_account'] \n && this.state.deployment_config !== null \n && ((this.state.restricted_network === true && this.state['whitelisted_ip'].length > 0) \n || (this.state.public_network === true)) && this.state.agreeCheck1 === true\n // &&\n // ((this.state.elasticSearch === true && this.state.elastic_search_key.length > 0) \n // || (this.state.elasticSearch === false))\n ) {\n data['deployment_name'] = this.state.deployment_name\n data['cloud_support'] = this.state.cloud_support\n data['cloud'] = this.state.cloud\n data['edition'] = this.state.edition\n data['compute_config'] = this.state.compute_config\n data['region'] = this.state.region\n data['subscription'] = this.state.subscription\n data['cycle'] = this.state.cycle\n data['account_id'] = this.state.account_id\n data['service_account'] = this.state.service_account\n data['deployment_config'] = this.state.deployment_config\n data['subnet'] = this.state.subnet\n // data['elastic_search_key'] = this.state.elastic_search_key\n data['json_file'] = localStorage.getItem('json_file')\n data['whitelisted_ip'] = this.state.whitelisted_ip\n if(data['whitelisted_ip'].length < 1){\n data['whitelisted_ip'] = DEPLOYMENT_DATA['whitelisted_ip']\n }\n this.setState({ json_file: data['json_file'] })\n if (localStorage.getItem('deployment_id') === null || localStorage.getItem('deployment_id') === undefined) {\n this.setState({ currentStep: 'step1' })\n let endPoint = \"deployments/teams/\" + teamId;\n localStorage.setItem(\"deployment_name\", data['deployment_name']);\n let id = localStorage.getItem('deployment_id')\n if (id === null) {\n call_post_api(iam_ip, endPoint, data).then((response) => {\n if (response.code === 401) {\n this.showToast(\"alert-danger\", response.message, \"\")\n this.setState({ errorOccurred: true })\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n return false\n } else if (response.code === 200) {\n localStorage.setItem('currentStatus', 'step2')\n this.setState({ \n post: false,\n errorOccurred: false,\n currentStep: 'step2',\n })\n localStorage.setItem('validate', false)\n localStorage.setItem(\"deployment_id\", response['deployment_id']);\n localStorage.setItem(\"currentId\", response['deployment_id']);\n step = 2\n return true\n }\n });\n }\n }\n else {\n const deploymentId = localStorage.getItem('deployment_id');\n let endPoint = \"/deployments/update/\" + deploymentId\n localStorage.setItem(\"deployment_name\", data['deployment_name']);\n call_update_api(iam_ip, endPoint, data).then((response) => {\n if (response.code !== 200) {\n this.showToast(\"alert-danger\", response.message, \"\")\n this.setState({ errorOccurred: true,\n });\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n return false\n } else if (response !== null && response.code === 200) {\n localStorage.setItem('currentStatus', 'step2')\n this.setState({ currentStep: 'step2',\n errorOccurred: false,\n })\n localStorage.setItem('validate', false)\n localStorage.setItem(\"deployment_id\", response['deployment_id']);\n step = 2\n return true\n }\n });\n }\n }\n // else if(this.state.cloud_support === QUALDO_CLOUD && \n // this.state['deployment_name'].length > 0 &&\n // ((this.state.restricted_network === true && this.state['whitelisted_ip'].length > 0) ||\n // (this.state.public_network === true)))\n // { \n // data['deployment_name'] = this.state.deployment_name\n // data['cloud_support'] = this.state.cloud_support\n // data['cloud'] = this.state.cloud\n // data['edition'] = this.state.edition\n // data['compute_config'] = this.state.compute_config\n // data['subscription'] = this.state.subscription\n // data['cycle'] = this.state.cycle\n // data['region'] = this.state.region\n // data['account_id'] = this.state.account_id\n // data['service_account'] = this.state.service_account\n // data['subnet'] = DEFAULT_SUBNET_RANGE\n // data['whitelisted_ip'] = this.state.whitelisted_ip\n // if(data['whitelisted_ip'].length < 1){\n // data['whitelisted_ip'] = DEPLOYMENT_DATA['whitelisted_ip']\n // }\n // if (localStorage.getItem('deployment_id') === null || localStorage.getItem('deployment_id') === undefined) {\n // this.setState({ currentStep: 'step1' })\n // let endPoint = \"deployments/teams/\" + teamId;\n // localStorage.setItem(\"deployment_name\", data['deployment_name']);\n // let id = localStorage.getItem('deployment_id')\n // if (id === null) {\n // call_post_api(iam_ip, endPoint, data).then((response) => {\n // if (response.code === 401) {\n // this.showToast(\"alert-danger\", response.message, \"\")\n // this.setState({ errorOccurred: true })\n // window.scrollTo({\n // top: 0,\n // left: 0,\n // behavior: 'smooth'\n // });\n // return false\n // } else if (response.code === 200) {\n // localStorage.setItem('currentStatus', 'step2')\n // this.setState({ post: false,\n // errorOccurred: false,\n // currentStep: 'step2',\n // })\n // localStorage.setItem('validate', false)\n // localStorage.setItem(\"deployment_id\", response['deployment_id']);\n // localStorage.setItem(\"currentId\", response['deployment_id']);\n // step = 2\n // return true\n // }\n // });\n // }\n // }\n // else {\n // const deploymentId = localStorage.getItem('deployment_id');\n // let endPoint = \"/deployments/update/\" + deploymentId\n // localStorage.setItem(\"deployment_name\", data['deployment_name']);\n // call_update_api(iam_ip, endPoint, data).then((response) => {\n // if (response.code !== 200) {\n // this.showToast(\"alert-danger\", response.message, \"\")\n // this.setState({ errorOccurred: true });\n // window.scrollTo({\n // top: 0,\n // left: 0,\n // behavior: 'smooth'\n // });\n // return false\n // } else if (response !== null && response.code === 200) {\n // localStorage.setItem('currentStatus', 'step2')\n // this.setState({ currentStep: 'step2',\n // errorOccurred: false,\n\n // })\n // localStorage.setItem('validate', false)\n // localStorage.setItem(\"deployment_id\", response['deployment_id']);\n // step = 2\n // return true\n // }\n // });\n // }\n // }\n else {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n return false\n }\n }\n\n onValueChange(event) {\n this.setState({\n cloud_support: event.target.value\n });\n // if(this.state.cloud_support === QUALDO_CLOUD){\n // this.setState({\n // restricted_network:false,\n // public_network:true,\n // // elasticSearch: false,\n // account_id: '',\n // service_account:'',\n // deployment_config:'',\n // region:'',\n // deploymentDetails:null,\n // // elastic_search_key:'',\n // })\n // }\n }\n\n handleUpload = e => {\n const fileReader = new FileReader();\n fileReader.readAsText(e.target.files[0], \"UTF-8\");\n fileReader.onload = e => {\n this.setState({ deployment_config: e.target.result });\n };\n };\n\n onClickHandler(e) {\n localStorage.setItem(\"selectedPlan\", e);\n let selectedPlan = localStorage.getItem('selectedPlan');;\n this.setState({ selectedPlan: selectedPlan })\n let planprice = localStorage.getItem('annualplanprice');\n let plantitle = localStorage.getItem('annualplantitle');\n if (this.state.discount === null) {\n this.setState({ plan_price: planprice })\n }\n this.setState({ subscription: plantitle })\n\n if (e === 'annually') {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n this.setState({ couponClass: null })\n this.setState({ 'montlyCoupon': null })\n this.setState({ 'annualCoupon': null })\n this.setState({ 'validCoupon': null })\n this.setState({ 'coupon': null })\n this.setState({ 'final_price': null })\n this.promoCodeHandlerRemove()\n if (this.state.annualCoupon === false || this.state.annualCoupon === null) {\n this.setState({ plan_price: localStorage.getItem('annualplanprice') })\n localStorage.setItem(\"selectedplanprice\", localStorage.getItem('annualplanprice'))\n localStorage.setItem('selectedPlan', e);\n }\n else {\n this.setState({ plan_price: localStorage.getItem('annualplanprice') })\n localStorage.setItem(\"selectedplanprice\", this.state.plan_price)\n localStorage.setItem('selectedPlan', e);\n }\n\n }\n else {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n this.setState({ couponClass: null })\n this.setState({ 'annualCoupon': null })\n this.setState({ 'montlyCoupon': null })\n this.setState({ 'validCoupon': null })\n this.setState({ 'coupon': null })\n this.setState({ 'final_price': null })\n this.promoCodeHandlerRemove()\n if (this.state.montlyCoupon === false || this.state.montlyCoupon === null) {\n this.setState({ plan_price: localStorage.getItem('monthlyplanprice') })\n localStorage.setItem(\"selectedplanprice\", localStorage.getItem('monthlyplanprice'))\n localStorage.setItem('selectedPlan', e);\n }\n else {\n this.setState({ plan_price: localStorage.getItem('monthlyplanprice') })\n localStorage.setItem(\"selectedplanprice\", this.state.plan_price)\n localStorage.setItem('selectedPlan', e);\n }\n\n }\n this.setState({ cycle: e })\n\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 }, 10000);\n }\n }\n\n closeToast() {\n this.setState({ toastStatus: false }, this.getData);\n }\n\n promoCodeHandler() {\n this.setState({ promo_form: 'Show' })\n this.setState({ promo_text: 'Hidden' })\n }\n promoCodeHandlerRemove() {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n this.setState({ disableCycle: false })\n }\n promoSuccessHandler() {\n // /coupon/validate\n let data = {\n 'coupon_code': this.state.coupon,\n 'user_id': localStorage.getItem('user_id'),\n 'edition': this.state.edition,\n 'cloud': this.state.cloud,\n 'cycle': this.state.cycle\n }\n\n this.validateCoupon(data);\n setTimeout(() => {\n if (this.state.validCoupon === true) {\n this.setState({ disableCycle: true })\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_success_text: 'Show' })\n\n }\n }, 1000)\n\n }\n\n promoRepeatHandler() {\n this.setState({ validCoupon: null })\n this.onClickHandler(this.state.cycle)\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_success_text: 'Hidden' })\n\n }\n\n handlevalidate(event) {\n this.setState({ couponClass: '' })\n const { name, value } = event.target;\n $('.promo-code').addClass('d-none')\n this.setState({\n [name]: value\n });\n }\n\n\n handleClick(data) {\n this.setState({ showModal: true, helpSection: data });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n };\n\n editSubnet() {\n this.setState({ enableEdit: true })\n }\n\n\n selectedTags = whitelisted_ip => {\n whitelisted_ip.map((ip) => {\n this.setState({ whitelisted_ip: ip })\n return null;\n })\n this.setState({ whitelisted_ip })\n $(\"#ip-address\").removeClass(\"input-group\")\n if (whitelisted_ip.length < 1) {\n $(\".whitelisted-ip\").removeClass('d-none')\n }\n else {\n $(\".whitelisted-ip\").addClass('d-none')\n }\n };\n\n render() {\n if (step === 1) {\n $(\".card-footer\").show();\n }\n // payment footer sticky\n window.onscroll = function (ev) {\n if ($(window).width() > 576) {\n if ((window.innerHeight + window.scrollY + 200) >= document.body.offsetHeight) {\n $(\".billing-payment-card\").removeClass(\"sticky-payment-card\")\n }\n else {\n $(\".billing-payment-card\").addClass(\"sticky-payment-card\")\n }\n } else {\n if ((window.innerHeight + window.scrollY + 260) >= document.body.offsetHeight) {\n $(\".billing-payment-card\").removeClass(\"sticky-payment-card\")\n }\n else {\n $(\".billing-payment-card\").addClass(\"sticky-payment-card\")\n }\n }\n\n };\n\n\n $('.custom-file-input').on('change', function () {\n var fileName = document.getElementById(\"customFileLangHTML\").files[0].name;\n $(this).next('.custom-file-label').addClass(\"selected\").html(fileName);\n localStorage.setItem(\"json_file\", fileName)\n });\n\n $('.btn-next').on('click', function () {\n $('#payment-summary').toggleClass('d-none');\n // $('.col-lg-8').removeClass('offset-lg-2');\n });\n let initial_values = this.state;\n let validateschema = null;\n\n validateschema = yup.object({\n deployment_name: yup.string().required(\"Deployment Name is a required field\"),\n region: yup.string().nullable(true).required(\"Cloud Region is a required field\"),\n deployment_config: yup.string().required(\"Compute Profile is a required field\"),\n account_id: yup.string().required(\"Project Id is a required field\"),\n service_account: yup.string().required(\"Account Name is a required field\"),\n });\n\n if(this.state.cloud_support === PRIVATE_CLOUD){\n // if (this.state.restricted_network === true && this.state.elasticSearch === true) {\n // validateschema = yup.object({\n // deployment_name: yup.string().required(\"Deployment Name is a required field\"),\n // coupon: yup.string().required(\"Required Coupon\"),\n // region: yup.string().required(\"Cloud Region is a required field\"),\n // edition: yup.string().required(\"Edition is a required field\"),\n // deployment_config: yup.string().required(\"Compute Profile is a required field\"),\n // account_id: yup.string().required(\"Project Id is a required field\"),\n // service_account: yup.string().required(\"Account Name is a required field\"),\n // whitelisted_ip: yup.array().required(\"IP Address is a required field\"),\n // elastic_search_key: yup.string().required(\"Elastics search key is a required field\"),\n // });\n // }\n if(this.state.restricted_network === true){\n validateschema = yup.object({\n deployment_name: yup.string().required(\"Deployment Name is a required field\"),\n region: yup.string().required(\"Cloud Region is a required field\"),\n deployment_config: yup.string().required(\"Compute Profile is a required field\"),\n account_id: yup.string().required(\"Project Id is a required field\"),\n service_account: yup.string().required(\"Account Name is a required field\"),\n whitelisted_ip: yup.array().required(\"IP Address is a required field\"),\n });\n }\n if(this.state.restricted_network !== true){\n validateschema = yup.object({\n deployment_name: yup.string().required(\"Deployment Name is a required field\"),\n region: yup.string().required(\"Cloud Region is a required field\"),\n deployment_config: yup.string().required(\"Compute Profile is a required field\"),\n account_id: yup.string().required(\"Project Id is a required field\"),\n service_account: yup.string().required(\"Account Name is a required field\"),\n });\n }\n }\n // else if(this.state.cloud_support === QUALDO_CLOUD){\n // if(this.state.restricted_network === true){\n // validateschema = yup.object({\n // deployment_name: yup.string().required(\"Deployment Name is a required field\"),\n // whitelisted_ip: yup.array().required(\"IP Address is a required field\"),\n // });\n // }\n // else if(this.state.restricted_network === false){\n // validateschema = yup.object({\n // deployment_name: yup.string().required(\"Deployment Name is a required field\"),\n // });\n // }\n // }\n\n\n // let validate = localStorage.getItem('validate');\n // if(validate === 'true'){\n // validateschema = null\n // }\n // /**\n // * While handling of submit if these variables are not null we're making validate to null\n // * To avoid the error message during submit of coupon code\n // * \n // */\n\n // let dataList = [this.state.deployment_name, this.state.account_id, this.state.service_account, this.state.deployment_config]\n // if(this.state.cloud_support === QUALDO_CLOUD){\n // dataList = [this.state.deployment_name]\n // }\n // for (let value of dataList) {\n // if (value.length > 0) {\n // validateschema = null;\n // }\n // }\n return (\n <>\n {this.state.loader ? \n :\n <>\n
\n this.closeToast()}\n show={this.state.toastStatus} 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 {\n this.state.showModal ?\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 Let's get started with Qualdo™-DRX configuration details\n

Please provide cloud details for Qualdo deployment

\n

Configuration details include enterprise cloud settings and subscription plan.

\n
\n
\n
\n \n

Name This Deployment

\n
\n
\n \n {\n handleChange(\"deployment_name\")(e.target.value);\n this.setState({ deployment_name: e.target.value });\n }}\n onBlur={handleBlur}\n isInvalid={errors.deployment_name && touched.deployment_name}\n />\n \n {touched.deployment_name && errors.deployment_name}\n \n \n
\n\n\n
\n \n

Cloud Service\n \n \n \n \n

\n\n
\n
\n \n {/* { this.state.requiredQualdoCloud \n &&\n \n } */}\n \n\n \n {this.state.cloud_support === PRIVATE_CLOUD?\n <>\n \n \n \n Cloud Preference\n \n \n \n \n \n \n \n Google Cloud Project ID\n \n \n {\n handleChange(\"account_id\")(e.target.value);\n this.setState({ account_id: e.target.value });\n }}\n onBlur={handleBlur}\n isInvalid={errors.account_id && touched.account_id}\n />\n \n {touched.account_id && errors.account_id}\n \n \n\n \n \n \n Service Account Name\n \n \n {\n handleChange(\"service_account\")(e.target.value);\n this.setState({ service_account: e.target.value });\n }}\n onBlur={handleBlur}\n isInvalid={errors.service_account && touched.service_account}\n />\n \n {touched.service_account && errors.service_account}\n \n \n
\n \n \n
\n \n :\n ''\n }\n
\n {this.state.cloud_support === PRIVATE_CLOUD\n ?\n <>\n
\n \n

Settings\n \n \n \n \n

\n
\n
\n \n \n \n Subnet\n \n \n {\n handleChange(\"subnet\")(e.target.value);\n this.setState({ subnet: e.target.value });\n }}\n onBlur={handleBlur}\n isInvalid={errors.subnet && touched.subnet}\n placeholder=\"Enter Subnet CIDR (10.101.0.0/16)\"\n />\n
\n \n\n Edit Subnet Mask\n }\n >\n \n \n \n \n
\n \n {touched.subnet && errors.subnet}\n \n
\n \n \n \n Region\n \n \n 1\n ?\n GCP_REGIONS.map((e) =>\n (\n e['value'] === this.state.region\n ?\n e\n :\n ''\n )\n )\n :\n ''\n }\n onChange={selectedOption => {\n handleChange(\"region\")(selectedOption.value);\n this.setState({ region: selectedOption.value });\n }}\n onBlur={handleBlur}\n placeholder='Select Region'\n isInvalid={errors.region && touched.region}\n />\n \n \n {touched.region && errors.region}\n \n \n \n I have read & understood the \n resource requirements \n for Qualdo™-DRX and I confirm the availability of the required resources exclusively for Qualdo™-DRX\n \n }\n onChange={e => {\n handleChange(\"agreeCheck1\")(e.target.value);\n this.setState({ \n agreeCheck1: !this.state.agreeCheck1 \n \n });\n let warn = this.state.agreeCheck1 === false?true:false\n this.setState({checkBoxWarn:!warn})\n }}\n \n />\n {\n this.state.checkBoxWarn === true ?\n \n Please agree to the resource requirements.\n
\n :\n ''\n }\n \n
\n\n \n\n {/* Component for Elastic search field */}\n {/*
\n \n

Elastic Search Api Key\n \n \n \n \n

\n
\n\n
\n <>\n \n {\n handleChange(\"elasticSearch\")(e.target.value);\n this.setState({ elasticSearch: true });\n }\n }\n id=\"elastic-search-yes\"\n />\n {\n handleChange(\"elasticSearch\")(e.target.value);\n this.setState({ elasticSearch: false, elastic_search_key: null });\n }\n }\n id=\"elastic-search-no\"\n />\n \n {this.state.elasticSearch === true\n ?\n \n \n \n API Key \n // If you have own elastic search account provide api key to create deployment else leave it blank}>\n // \n // \n // \n // \n // \n // \n // \n // \n // \n \n \n \n {\n handleChange(\"elastic_search_key\")(e.target.value);\n this.setState({ elastic_search_key: e.target.value });\n }}\n onBlur={handleBlur}\n isInvalid={errors.elastic_search_key && touched.elastic_search_key}\n />\n \n {touched.elastic_search_key && errors.elastic_search_key}\n \n \n :\n ''\n }\n \n
\n */}\n \n :\n ''\n }\n\n\n\n <>\n
\n \n

Authorized Network\n \n \n \n \n

\n
\n
\n <>\n \n\n {\n handleChange(\"public_network\")(e.target.value);\n this.setState({ public_network: !this.state.public_network });\n this.setState({ restricted_network: !this.state.restricted_network });\n }\n }\n id=\"public-network-access\"\n />\n\n {\n handleChange(\"restricted_network\")(e.target.value);\n this.setState({ restricted_network: !this.state.restricted_network });\n this.setState({ public_network: !this.state.public_network });\n }\n }\n id=\"restricted-network-access\"\n />\n \n {this.state.restricted_network === true\n ?\n <>\n \n \n IP Address\n \n 192.168.1.1 or 191.168.1.1/24.\n Hint: hit \"Enter\" for each IP.\n\n }\n >\n \n \n \n \n Please enter valid IP address\n
\n 1 ? '' : this.state.placeHolder}\n />\n \n IP Address is a required field\n \n \n \n \n :\n ''\n }\n \n\n\n {\n (localStorage.getItem('Retry') === 'true')\n ?\n ''\n :\n <>\n
\n \n \n Price Estimation \n
\n
\n
\n this.onClickHandler(e.target.value)}\n\n />\n {this.state.cycle === 'annually' && this.state.annualCoupon === true ?\n \n :\n \n\n }\n\n\n
\n\n
\n this.onClickHandler(e.target.value)}\n className=\"custom-control-input\" />\n\n {this.state.cycle === 'monthly' && this.state.montlyCoupon === true ?\n \n :\n \n\n }\n
\n\n
\n
\n

\n <>\n {(this.state.cycle === 'annually' && this.state.annualCoupon === true) ?\n

\n ${localStorage.getItem('annualplanprice')} ${this.state.plan_price}\n

\n : (this.state.cycle === 'monthly' && this.state.montlyCoupon === true) ?\n

\n ${localStorage.getItem('monthlyplanprice')} ${this.state.plan_price}\n

\n :\n

\n ${this.state.plan_price}\n

\n\n }\n\n \n \n \n per {this.state.cycle === QualdoPlanCycle.YEARLY\n ?\n 'annum'\n :\n 'month'\n }\n \n
\n
\n
\n \n \n
\n {this.state.validCoupon === true ?\n {this.state.coupon} is applied!!\n \n \n \n \n :\n ''\n }\n\n {this.state.promo_text === 'Show' ?\n Have a Promo Code ?\n\n :\n ''\n }\n {this.state.promo_form === 'Show' ?\n \n
\n
\n \n \n
\n
\n
\n :\n ''\n }\n {this.state.validCoupon !== false ? '' :\n \n The promocode is invalid\n
\n }\n
\n\n \n \n
\n
\n\n
    \n
  1. This Subscription Fee has to be paid now: ${this.state.plan_price}
  2. \n
  3. Cloud usage cost will be billed monthly in your cloud account.
  4. \n \n {/* {this.state.cloud_support === QUALDO_CLOUD\n ? \n ''\n :\n
  5. Cloud usage cost will be billed monthly in your cloud account.
  6. \n } */}\n
\n\n \n \n \n \n }\n\n \n \n\n \n \n Update\n \n \n )}\n \n \n }\n \n );\n }\n}\n\n\n\nclass SecondStep extends React.Component {\n constructor(props) {\n super(props);\n this.planDetails = planDetails.bind(this);\n this.isValidated = this.isValidated.bind(this);\n this.cardDetailsRef = React.createRef();\n this.billingDetailsRef = React.createRef()\n this.agreementRef = React.createRef()\n this.saveNewAddress = this.saveNewAddress.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.clientDidCreate = this.clientDidCreate.bind(this);\n this.hostedFieldsDidCreate = this.hostedFieldsDidCreate.bind(this);\n this.showPaymentPage = this.showPaymentPage.bind(this);\n this.cardTypeProcessor = this.cardTypeProcessor.bind(this);\n this.cardValidator = this.cardValidator.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.getComponentClass = this.getComponentClass.bind(this);\n this.makeCurrentAsDefaultPayment = this.makeCurrentAsDefaultPayment.bind(this);\n this.validateAddress = this.validateAddress.bind(this)\n this.addressSelectionHandler = this.addressSelectionHandler.bind(this);\n this.hasValidCardParts = this.hasValidCardParts.bind(this);\n this.createPaymentDataForUser = this.createPaymentDataForUser.bind(this);\n this.showAddBillingDetailsSection = this.showAddBillingDetailsSection.bind(this);\n this.hideAddBillingDetailsSection = this.hideAddBillingDetailsSection.bind(this);\n this.addressUpdateHandler = this.addressUpdateHandler.bind(this);\n this.makeDefaultBillingAddress = this.makeDefaultBillingAddress.bind(this);\n this.getSelectedPlan = this.getSelectedPlan.bind(this);\n this.getPaymentDetailsTableData = getPaymentDetailsTableData.bind(this);\n this.setAutoDebitStatus = this.setAutoDebitStatus.bind(this);\n this.getApi = getApi.bind(this);\n this.getBrainTreeAuthToken = getBrainTreeAuthToken.bind(this);\n this.submitUsersPayment = submitUsersPayment.bind(this);\n this.handlePay = this.handlePay.bind(this);\n this.handleReturn = this.handleReturn.bind(this);\n this.getDeployment = getDeployment.bind(this);\n this.getDeploymentPlanDetails = getDeploymentPlanDetails.bind(this);\n\n // Promo_code Functions\n this.promoCodeHandler = this.promoCodeHandler.bind(this);\n this.promoRepeatHandler = this.promoRepeatHandler.bind(this);\n this.promoSuccessHandler = this.promoSuccessHandler.bind(this);\n this.validateCoupon = validateCoupon.bind(this);\n this.handlevalidate = this.handlevalidate.bind(this);\n this.promoCodeSuccess = this.promoCodeSuccess.bind(this)\n this.agreeCheck = this.agreeCheck.bind(this)\n this.closeModal = this.closeModal.bind(this)\n var month = new Date(),\n nextBillingMonth = month.getDate() + '-' + (month.getMonth() + 1 + 1) + '-' + month.getFullYear();\n\n var year = new Date(),\n nextBillingYear = year.getDate() + '-' + (year.getMonth() + 1) + '-' + (year.getFullYear() + 1);\n this.state = {\n deploymentDetails: \"\",\n disabled: false,\n payment_details: '',\n plan_price: null,\n nextBillingMonth: nextBillingMonth,\n nextBillingYear: nextBillingYear,\n DeploymentData: '',\n customStep: 2,\n secondStep: \"second step here\",\n error_message: null,\n showNotAllowedPopup: false,\n reRenderNavComponent: false,\n planDetails: {},\n addNewCard: true,\n canShowAddBillingAddress: true,\n hostedFields: null,\n orderID: null,\n toastStatus: false,\n toastMsg: \"\",\n toastClass: \"\",\n toastLink: \"\",\n toastIcon: \"\",\n toastHeading: \"\",\n errorOccurred: true,\n unitCostForData: 52,\n addOnCostForData: 0,\n unitCostForModel: 9,\n addOnCostForModel: 0,\n nextBillingDate: null,\n cycleCost: 0,\n addOnCycles: [],\n paymentPageLoading: true,\n cardType: null,\n customerNameClass: '',\n enableSubmitButton: true,\n braintreeAuthorizationToken: null,\n customerName: \"\",\n coupon_code: null,\n make_default: true,\n isEdit: false,\n previousExpiryDate: \"\",\n previousCardNumber: \"\",\n previousCvv: \"\",\n availableCards: null,\n billingAddresses: [],\n selectedPayment: null,\n selectedAddress: null,\n disableSubmitBtn: false,\n newBillingAddress: { \"isPrimary\": false },\n paymentSuccess: false,\n braintreeLoading: false,\n autoDebit: false,\n selectedPlan: '',\n \"sectionTitle\": \"Personal + Business Contact Details\",\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 cardHolderName: {\n is_valid: false,\n is_invalid: false\n },\n },\n validCoupon: null,\n coupon: null,\n couponClass: '',\n discount: null,\n final_price: null,\n annualCoupon: null,\n montlyCoupon: null,\n loader: false,\n deployment_name: '',\n compute_config: DEPLOYMENT_DATA['compute_config'],\n cloud_support: PRIVATE_CLOUD,\n subscription: DEPLOYMENT_DATA['subscription'],\n cycle: DEPLOYMENT_DATA['cycle'],\n status: DEPLOYMENT_DATA['status'],\n subnet: DEFAULT_SUBNET_RANGE,\n account_id: '',\n service_account: '',\n region: '',\n cloud: DEPLOYMENT_DATA['cloud'],\n promo_form: 'Hidden',\n promo_text: 'Show',\n promo_success_text: 'Hidden',\n disableCycle: false,\n showModal: false,\n failure_message: null,\n agreeCheck2:false\n }\n localStorage.setItem('firstPayment', true)\n this.planDetails()\n setTimeout(() => {\n this.getDeployment()\n }, 100);\n setTimeout(() =>\n this.getDeploymentPlanDetails(), 200\n );\n if (localStorage.getItem('coupon_code') !== null || localStorage.getItem('coupon_code') !== undefined) {\n this.setState({ 'annualCoupon': localStorage.getItem('annualCoupon') })\n this.setState({ 'montlyCoupon': localStorage.getItem('montlyCoupon') })\n this.setState({ 'final_price': localStorage.getItem('selectedplanprice') })\n this.setState({ 'discount': localStorage.getItem('discount') })\n }\n if (localStorage.getItem('validCoupon') === true) {\n this.promoCodeSuccess();\n }\n }\n\n\n componentDidMount() {\n $('#root').addClass('theme-orange')\n }\n\n componentDidUpdate(previousStats, currentState) {\n let scroll = 1\n if (currentState['braintreeAuthorizationToken'] === null && scroll === 1) {\n scroll += scroll\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n if (this.state.validCoupon !== null) {\n if (this.state.validCoupon === false) {\n $('.promocode-form').addClass('show');\n }\n }\n\n if (localStorage.getItem('currentStatus') !== \"step1\") {\n $(\".card-footer\").hide();\n }\n\n if (this.state.coupon !== null) {\n $('.promocode-success-text').addClass('d-block');\n }\n\n if (step === 2) {\n step = 3\n // Render the Payment section \n const bt_token = this.getBrainTreeAuthToken();\n this.setState({ braintreeAuthorizationToken: bt_token });\n this.showPaymentPage();\n }\n\n // When user click retry need to avoid intermediate steps\n if (step === 1) {\n setTimeout(function () {\n $(\".btn-previous\").trigger(\"click\");\n }, 1);\n }\n if (this.state.status === 'deployment initiated') {\n setTimeout(function () {\n $(\".btn-next\").trigger(\"click\");\n }, 1);\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.wizardData['Cloud Details'] !== undefined) {\n if (props.wizardData['Cloud Details'] !== state.deploymentDetails) {\n // if (props.wizardData['Cloud Details']['deployment_config'].length > 0 || \"deployment_config\" in props.wizardData['Cloud Details'] ) {\n if (\"deployment_config\" in props.wizardData['Cloud Details']) {\n if (state.plan_price === null || state.plan_price === undefined) {\n return {\n state: props.wizardData[\"Cloud Details\"],\n discount: props.wizardData['Cloud Details']['discount'],\n deploymentDetails: props.wizardData['Cloud Details'],\n validCoupon: props.wizardData['Cloud Details']['validCoupon'],\n coupon: props.wizardData['Cloud Details']['coupon'],\n couponClass: props.wizardData['Cloud Details']['couponClass'],\n final_price: props.wizardData['Cloud Details']['final_price'],\n plan_price: props.wizardData['Cloud Details']['plan_price'],\n annualCoupon: props.wizardData['Cloud Details']['annualCoupon'],\n cycle: props.wizardData['Cloud Details']['cycle'],\n montlyCoupon: props.wizardData['Cloud Details']['montlyCoupon'],\n deployment_name: props.wizardData['Cloud Details']['deployment_name'],\n account_id: props.wizardData['Cloud Details']['account_id'],\n service_account: props.wizardData['Cloud Details']['service_account'],\n region: props.wizardData['Cloud Details']['region'],\n edition: props.wizardData['Cloud Details']['edition'],\n promo_form: props.wizardData['Cloud Details']['promo_form'],\n promo_text: props.wizardData['Cloud Details']['promo_text'],\n promo_success_text: props.wizardData['Cloud Details']['promo_success_text'],\n disableCycle: props.wizardData['Cloud Details']['disableCycle'],\n }\n }\n else if (props.wizardData['Cloud Details']['plan_price'] != null) {\n return {\n state: props.wizardData[\"Cloud Details\"],\n discount: props.wizardData['Cloud Details']['discount'],\n deploymentDetails: props.wizardData['Cloud Details'],\n validCoupon: props.wizardData['Cloud Details']['validCoupon'],\n coupon: props.wizardData['Cloud Details']['coupon'],\n couponClass: props.wizardData['Cloud Details']['couponClass'],\n final_price: props.wizardData['Cloud Details']['final_price'],\n plan_price: props.wizardData['Cloud Details']['plan_price'],\n annualCoupon: props.wizardData['Cloud Details']['annualCoupon'],\n cycle: props.wizardData['Cloud Details']['cycle'],\n montlyCoupon: props.wizardData['Cloud Details']['montlyCoupon'],\n deployment_name: props.wizardData['Cloud Details']['deployment_name'],\n account_id: props.wizardData['Cloud Details']['account_id'],\n service_account: props.wizardData['Cloud Details']['service_account'],\n region: props.wizardData['Cloud Details']['region'],\n edition: props.wizardData['Cloud Details']['edition'],\n promo_form: props.wizardData['Cloud Details']['promo_form'],\n promo_text: props.wizardData['Cloud Details']['promo_text'],\n promo_success_text: props.wizardData['Cloud Details']['promo_success_text'],\n disableCycle: props.wizardData['Cloud Details']['disableCycle'],\n }\n }\n }\n }\n }\n return null;\n }\n setAutoDebitStatus() {\n this.setState({ autoDebit: !this.state.autoDebit })\n }\n\n showAddBillingDetailsSection() {\n this.setState({ canShowAddBillingAddress: true })\n }\n\n hideAddBillingDetailsSection() {\n this.setState({ canShowAddBillingAddress: false, newBillingAddress: { \"isPrimary\": false } })\n }\n\n hasValidCardParts() {\n const validation = this.state.validation;\n return (validation.card_number.is_valid &&\n validation.cvv.is_valid &&\n validation.expiration_date.is_valid &&\n validation.cardHolderName.is_valid\n );\n }\n\n scrollToCardDetails() {\n window.scrollTo(0, this.cardDetailsRef.current.offsetTop)\n }\n\n scrollToBillingDetails() {\n window.scrollTo(10, this.billingDetailsRef.current.offsetTop)\n }\n\n scrollToAgreement(){\n window.scrollTo(10, this.agreementRef.current.offsetTop)\n\n }\n\n addressSelectionHandler(status) {\n this.setState({ selectedAddress: status });\n }\n\n createPaymentDataForUser(details) {\n let newCard = this.state.addNewCard;\n\n let finalData = {\n \"billing_cycle\": localStorage.getItem('selectedPlan'),\n \"order_id\": this.state.orderID,\n \"auto_debit\": this.state.autoDebit,\n \"plan_type\": this.getSelectedPlan(),\n\n }\n if (this.state.coupon !== null) {\n finalData['coupon_code'] = this.state.coupon\n }\n\n if (newCard) {\n finalData[\"nonce\"] = details[\"nonce\"];\n finalData[\"customer_name\"] = details[\"customer_name\"];\n finalData[\"make_default\"] = details[\"make_default\"];\n } else {\n let paymentDetail = this.state.availableCards.filter(x => (\n String(x.id) === String(this.state.selectedPayment)))\n let paymentDetailElement = paymentDetail[0];\n finalData[\"payment_id\"] = parseInt(String(paymentDetailElement.id));\n finalData[\"customer_name\"] = paymentDetailElement.customerName;\n }\n\n let hasNewAddress = this.state.canShowAddBillingAddress;\n if (hasNewAddress) {\n let newAddress = this.state.newBillingAddress;\n newAddress[\"customer_name\"] = finalData.customer_name;\n finalData[\"billing_address\"] = newAddress\n } else {\n finalData[\"billing_address_id\"] = parseInt(String(this.state.selectedAddress));\n }\n\n return finalData;\n }\n\n submitHandler(event) {\n // If user is adding new card detail, validate that all\n // corresponding values are filled correctly\n $(\"#billing_address_id\").trigger(\"click\");\n if (this.state.addNewCard) {\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 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 if (this.state.customerName.trim().length === 0) {\n this.setState({ customerNameClass: 'is-invalid' });\n validation.cardHolderName.is_invalid = true;\n formIsInvalid = true;\n }\n\n this.setState({ validation: validation });\n\n if (formIsInvalid) {\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n // skip tokenization request if any fields are invalid\n this.scrollToCardDetails();\n return;\n }\n }\n\n // If user is adding new billing address, validate that all\n // corresponding values are filled correctly\n if (this.state.canShowAddBillingAddress) {\n let isValidAddress = this.validateAddress();\n if (!isValidAddress) {\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: false })\n this.scrollToBillingDetails();\n return;\n }\n }\n if(this.state.agreeCheck2 === false){\n $(\"#agreeCheck_id\").removeClass(\"d-none\");\n this.scrollToAgreement();\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: false })\n return \n }\n else{\n $(\"#agreeCheck_id\").addClass(\"d-none\");\n }\n // This case will happen, when user is adding new card detail\n // We will tokenize the user's card detail and then we will\n // use the tokenized card value along with the\n // newly added billing address or the chosen billing address which was already added\n this.state.hostedFields.tokenize(this.tokenizeFunction);\n }\n\n showPaymentPage() {\n // This function which will render the braintree's payment components such as\n // Card number, CVV, expiration date fields will be rendered by braintree components\n let braintreeAuthorizationToken = this.getBrainTreeAuthToken();\n braintree.client.create({\n authorization: braintreeAuthorizationToken\n }, this.clientDidCreate);\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 type: \"text\",\n placeholder: 'Enter your card number',\n prefill: this.state.previousCardNumber\n\n },\n cvv: {\n selector: '#cvv',\n type: \"password\",\n placeholder: 'cvv',\n prefill: this.state.previousCvv\n\n },\n expirationDate: {\n selector: '#expiration_date',\n placeholder: 'MM/YY',\n type: \"text\",\n prefill: this.state.previousExpiryDate\n }\n }\n },\n this.hostedFieldsDidCreate);\n\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 cardValidator(event) {\n const fieldName = event.emittedBy;\n let field = event.fields[fieldName];\n const currentFieldId = field.container.id;\n // Remove any previously applied error or warning classes\n let validation = this.state.validation;\n let isValidPreviously = validation[currentFieldId].is_valid;\n validation[currentFieldId].is_valid = false;\n validation[currentFieldId].is_invalid = false;\n\n if (field.isValid) {\n validation[currentFieldId].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 (isValidPreviously) {\n validation[currentFieldId].is_invalid = true;\n }\n } else {\n validation[currentFieldId].is_invalid = true;\n }\n\n this.setState({ validation: validation });\n }\n\n hostedFieldsDidCreate(err, hostedFields) {\n if (err === null) {\n this.setState({ hostedFields: hostedFields });\n }\n if (hostedFields !== undefined) {\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: false })\n hostedFields.on('cardTypeChange', this.cardTypeProcessor);\n hostedFields.on('validityChange', this.cardValidator);\n }\n this.setState({ braintreeLoading: false });\n }\n\n tokenizeFunction(err, payload) {\n if (err) {\n this.props.enableSubmitButton(true);\n } else {\n let details = {\n \"nonce\": payload.nonce,\n \"customer_name\": this.state.customerName,\n \"make_default\": this.state.make_default\n };\n let finalData = this.createPaymentDataForUser(details);\n this.setState({ disableSubmitBtn: true });\n finalData['billing_cycle'] = this.state.cycle\n finalData['coupon_code'] = this.state.coupon\n this.setState({ payment_details: finalData });\n let cycleData = {}\n if (finalData['billing_cycle'] === 'monthly') {\n cycleData['billing_cycle'] = finalData['billing_cycle']\n }\n this.submitUsersPayment(this.state.payment_details);\n setTimeout(() =>\n updateplancycle(cycleData), 4000\n );\n }\n }\n\n addressUpdateHandler(event) {\n let address = this.state.newBillingAddress;\n address[event.target.name] = event.target.value;\n this.setState({ newBillingAddress: address });\n }\n\n makeDefaultBillingAddress(event) {\n let address = this.state.newBillingAddress;\n address[event.target.name] = !address.isPrimary;\n this.setState({ newBillingAddress: address });\n }\n\n getCardTypeImage() {\n return ();\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 handleCustomerName(event) {\n const customerName = event.target.value;\n this.setState({ customerName: customerName });\n let validation = this.state.validation;\n let cardHolderDetail = validation[\"cardHolderName\"];\n\n cardHolderDetail.is_valid = false;\n cardHolderDetail.is_invalid = false;\n\n if (!customerName.trim()) {\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: false })\n cardHolderDetail.is_invalid = true;\n } else {\n cardHolderDetail.is_valid = true;\n }\n\n this.setState({ validation: validation });\n }\n\n makeCurrentAsDefaultPayment(event) {\n this.setState({ make_default: !this.state.make_default });\n }\n\n validateAddress() {\n let newAddress = this.state.newBillingAddress;\n let keys = [\"company_name\", \"address_line_1\", \"city\", \"state\", \"zip_code\", \"country\"];\n\n for (let i = 0; i <= (keys.length - 1); i++) {\n const currentKey = keys[i];\n const currentValue = newAddress[currentKey];\n if (currentValue === undefined || currentValue.length < 3) {\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: false })\n return false\n }\n let country = newAddress['country'];\n let zip = newAddress['zip_code']\n if (currentKey === \"country\") {\n if (country !== undefined) {\n let regex = ZIP_DATA[country]\n return regex.test(zip)\n }\n }\n\n }\n return true\n }\n\n saveNewAddress(name, value, isValid) {\n let newBillingAddress = this.state.newBillingAddress;\n newBillingAddress[name] = value\n this.setState({ newBillingAddress: newBillingAddress });\n }\n\n agreeCheck(status){\n this.setState({agreeCheck2:status}) \n }\n\n\n getSelectedPlan() {\n let planType = 'professional'\n return planType;\n }\n\n isValidated() {\n let currentStatus = localStorage.getItem('currentStatus')\n if (currentStatus !== 'step2') {\n return true;\n }\n }\n\n handlePay() {\n $(\"#icon-arrow\").addClass(\"d-none\");\n $(\".spinner-border\").addClass(\"d-inline-block\")\n this.setState({ disabled: true })\n this.submitHandler()\n\n setInterval(() => {\n if (this.state.errorOccurred === false) {\n $(\".btn-next\").trigger(\"click\")\n step = step + 1\n localStorage.setItem(\"currentStatus\", 'step3')\n }\n }, 10);\n\n let validation = this.state.validation;\n if (validation['cardHolderName'].is_valid === false || validation['card_number'].is_valid === false ||\n validation['cvv'].is_valid === false || validation['expiration_date'].is_valid === false) {\n $(\"#icon-arrow\").removeClass(\"d-none\");\n $(\".spinner-border\").removeClass(\"d-inline-block\")\n this.setState({ disabled: false })\n }\n }\n\n handleReturn() {\n\n // Handle invalid and null coupon while handling go-back functionality\n // If the coupon is valid then it will refrect in step-1,\n // Else if the coupon is invalid will set state variable with initial values\n if (this.state.validCoupon !== true) {\n this.setState({ validCoupon: null })\n this.setState({ couponClass: null })\n this.setState({ coupon: null })\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n }\n\n this.setState({ braintreeAuthorizationToken: null })\n $('.nav-pills li a').each(function (i) {\n if ($(this).hasClass(\"checked\") === true) {\n if ($(this).hasClass(\"active\") === false) {\n $(this).remove('is-done');\n }\n }\n });\n\n // Avoid validation when user get back to update deployment details \n localStorage.setItem('validate', false)\n\n localStorage.setItem(\"currentStatus\", 'step1')\n this.getDeployment()\n let validation = this.state.validation;\n validation['expiration_date'].is_valid = false;\n validation['cvv'].is_valid = false;\n validation['card_number'].is_valid = false;\n validation['cardHolderName'].is_valid = false;\n\n // this.showPaymentPage();\n step = step - 2\n let braintree = this.state.braintreeLoading\n this.setState({ braintreeLoading: braintree })\n braintree = this.state.braintreeLoading\n\n setTimeout(() => {\n $(\".btn-previous\").trigger(\"click\");\n }, 500)\n\n setTimeout(function () {\n $('.nav-pills li a').each(function () {\n $(this).removeClass('is-done');\n });\n }, 100);\n\n }\n\n onClickHandler(e) {\n localStorage.setItem(\"selectedPlan\", e);\n let selectedPlan = localStorage.getItem('selectedPlan');;\n this.setState({ selectedPlan: selectedPlan })\n let planprice = localStorage.getItem('annualplanprice');\n let plantitle = localStorage.getItem('annualplantitle');\n if (this.state.discount === null) {\n this.setState({ plan_price: planprice })\n }\n this.setState({ subscription: plantitle })\n\n if (e === 'annually') {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n this.setState({ couponClass: null })\n this.setState({ 'montlyCoupon': null })\n this.setState({ 'annualCoupon': null })\n this.setState({ 'validCoupon': null })\n this.setState({ 'coupon': null })\n this.promoCodeHandlerRemove()\n localStorage.setItem('validCoupon', null)\n if (this.state.annualCoupon === false || this.state.annualCoupon === null) {\n this.setState({ plan_price: localStorage.getItem('annualplanprice') })\n localStorage.setItem(\"selectedplanprice\", localStorage.getItem('annualplanprice'))\n localStorage.setItem('selectedPlan', e);\n }\n else {\n this.setState({ plan_price: localStorage.getItem('annualplanprice') })\n localStorage.setItem(\"selectedplanprice\", this.state.plan_price)\n localStorage.setItem('selectedPlan', e);\n }\n\n }\n else {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n this.setState({ couponClass: null })\n localStorage.setItem('validCoupon', null)\n this.setState({ 'montlyCoupon': null })\n this.setState({ 'annualCoupon': null })\n this.setState({ 'validCoupon': null })\n this.setState({ 'coupon': null })\n this.promoCodeHandlerRemove()\n if (this.state.montlyCoupon === false || this.state.montlyCoupon === null) {\n this.setState({ plan_price: localStorage.getItem('monthlyplanprice') })\n localStorage.setItem(\"selectedplanprice\", localStorage.getItem('monthlyplanprice'))\n localStorage.setItem('selectedPlan', e);\n }\n else {\n this.setState({ plan_price: localStorage.getItem('monthlyplanprice') })\n localStorage.setItem(\"selectedplanprice\", this.state.plan_price)\n localStorage.setItem('selectedPlan', e);\n }\n\n }\n this.setState({ cycle: e })\n }\n\n promoCodeHandler() {\n this.setState({ promo_form: 'Show' })\n this.setState({ promo_text: 'Hidden' })\n }\n promoCodeHandlerRemove() {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_text: 'Show' })\n this.setState({ disableCycle: false })\n }\n promoSuccessHandler() {\n // /coupon/validate\n let data = {\n 'coupon_code': this.state.coupon,\n 'user_id': localStorage.getItem('user_id'),\n 'edition': this.state.edition,\n 'cloud': this.state.cloud,\n 'cycle': this.state.cycle\n }\n this.validateCoupon(data);\n setTimeout(() => {\n if (this.state.validCoupon === true) {\n this.setState({ disableCycle: true })\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_success_text: 'Show' })\n\n }\n }, 1000)\n\n }\n\n promoRepeatHandler() {\n this.setState({ validCoupon: null })\n this.onClickHandler(this.state.cycle)\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_success_text: 'Hidden' })\n\n }\n\n handlevalidate(event) {\n this.setState({ couponClass: '' })\n const { name, value } = event.target;\n $('.promo-code').addClass('d-none')\n this.setState({\n [name]: value\n });\n }\n\n promoCodeSuccess() {\n this.setState({ promo_form: 'Hidden' })\n this.setState({ promo_success_text: 'Show' })\n }\n\n closeModal() {\n this.setState({ showModal: false })\n }\n\n render() {\n if (step >= 2) {\n if (localStorage.getItem('currentStatus') !== 'step1') {\n $(\".card-footer\").hide();\n }\n }\n return (\n <>\n \n \n \n
\n
\n \n
\n
\n

Your transaction got failed !!

\n

{this.state.failure_message}

\n
\n
\n \n Dismiss\n \n
\n
\n
\n
\n\n {this.state.loader ?\n \n :\n <>\n {(this.state.deploymentDetails !== undefined && step >= 2) ?\n
\n\n
\n
\n

Review & Pay to Get Started.

\n

Please carefully review the details and pay now to begin deployment

\n
\n
\n
\n

\n \n 1\n \n Cloud Configuration Details\n

\n \n \n \n Change Details\n
\n
\n \n \n \n \n
Cloud Settings
\n

{this.state.deployment_name}

\n \n \n
Edition
\n
    \n
  • {this.state.edition}\n
  • \n
\n \n \n
Cloud
\n
\n
\n \n
\n
\n
{this.state.cloud}
\n

{this.state.cloud_support}

\n
\n
\n \n \n
Benefits
\n
    \n
  • Data Reliablity Monitoring
  • \n
  • Alerts
  • \n
  • Notifications
  • \n
  • Data Quality Metrics
  • \n
\n \n
\n \n
\n
Cloud Details
\n
\n \n \n {this.state.cloud_support}\n \n
\n {/* {this.state.cloud_support === QUALDO_CLOUD?''\n : */}\n <>\n
\n \n \n {this.state.account_id}\n \n
\n
\n \n \n {this.state.service_account}\n \n
\n
\n \n \n {this.state.cloud} - {this.state.region}\n \n
\n \n {/* } */}\n \n
\n \n
\n
\n
\n
\n
\n
\n \n\n
\n \n \n
\n
\n
\n\n this.onClickHandler(e.target.value)}\n\n />\n {this.state.cycle === 'annually' && this.state.annualCoupon === true ?\n \n :\n \n\n }\n\n
\n\n
\n this.onClickHandler(e.target.value)}\n className=\"custom-control-input\" />\n\n {this.state.cycle === 'monthly' && this.state.montlyCoupon === true ?\n \n :\n \n\n }\n\n
\n\n
\n
\n

\n <>\n {(this.state.cycle === 'annually' && this.state.annualCoupon === true) ?\n

\n ${localStorage.getItem('annualplanprice')} ${this.state.plan_price}\n

\n : (this.state.cycle === 'monthly' && this.state.montlyCoupon === true) ?\n

\n ${localStorage.getItem('monthlyplanprice')} ${this.state.plan_price}\n

\n :\n

\n ${this.state.plan_price}\n

\n }\n \n \n \n per {this.state.cycle === QualdoPlanCycle.YEARLY\n ?\n 'annum'\n :\n 'month'\n }\n \n
\n
\n \n \n
\n {this.state.validCoupon === true ?\n {this.state.coupon} is applied!!\n \n \n \n \n :\n ''\n }\n {this.state.promo_text === 'Show' ?\n Have a Promo Code ?\n :\n ''\n }\n {this.state.promo_form === 'Show' ?\n
\n \n\n \n
\n :\n ''\n }\n\n {this.state.validCoupon !== null && this.state.validCoupon === false ?\n
The promocode is invalid
\n :\n ''}\n\n
\n \n
\n
\n
\n
\n Automatically renew my subscription\n
\n
\n \n
\n
\n
\n
    \n
  1. This Subscription Fee has to be paid now: ${this.state.plan_price}
  2. \n
  3. Cloud usage cost will be billed monthly in your cloud account.
  4. \n {/* {this.state.cloud_support === QUALDO_CLOUD\n ? \n ''\n :\n
  5. Cloud usage cost will be billed monthly in your cloud account.
  6. \n } */}\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n \n \n \n \n
\n \n {\n this.state.braintreeLoading ?\n : ''\n }\n \n \n \n Name\n on\n card *\n \n \n Invalid\n cardholder\n name\n
\n \n \n \n\n \n \n Credit\n card\n number *\n \n \n Credit\n card\n number\n is\n required\n
\n {this.state.cardType === null\n ?\n '' :\n \n {this.getCardTypeImage()}\n
\n }\n \n\n \n Expiry *\n \n \n Please\n provide\n valid\n expiration\n date\n
\n \n\n \n CVV *\n \n \n Security\n code\n required\n \n \n \n\n \n Would\n you like\n to\n make this\n card your\n primary\n payment\n method?\n \n \n \n \n \n\n \n \n \n \n
\n \n
\n
\n
\n
\n \n
\n
\n
{this.state.deploymentDetails['cloud']}
\n
{this.state.deploymentDetails['cloud_support']} | {this.state.deploymentDetails['edition']}
\n
\n {this.state.cycle === 'annually' ?\n

Billing cycle Annual

\n\n :\n

Billing cycle Month

\n\n }\n {this.state.cycle === 'annually' ?\n

Next billing date {this.state.nextBillingYear}

\n\n :\n

Next billing date {this.state.nextBillingMonth}

\n }\n
\n
\n
\n
\n {\n this.state.cycle === 'annually' ?\n <>\n

\n ${this.state.plan_price}\n

\n

Total Annual Bill

\n \n :\n <>\n

\n ${this.state.plan_price}\n\n

\n

Total Monthly Bill

\n \n }\n
\n
\n \n Pay Now to Deploy \n \n \n \n
\n
\n
\n \n \n :\n ''\n }\n \n }\n \n );\n }\n}\nclass ThirdStep extends React.Component {\n constructor(props) {\n super(props);\n this.isValidated = this.isValidated.bind(this);\n this.triggerDeployment = triggerDeployment.bind(this);\n this.getDeployment = getDeployment.bind(this)\n this.handleSubmit = this.handleSubmit.bind(this);\n this.state = {\n customStep: 3,\n thirdStep: \"third step here\",\n disabled: false,\n currentStep: '',\n loader: true,\n status: ''\n };\n setTimeout(() => {\n this.setState({ loader: false })\n }, 500)\n }\n componentDidMount() {\n this.getDeployment();\n }\n componentDidUpdate() {\n if (localStorage.getItem('currentStatus') !== 'step1') {\n $(\".card-footer\").hide();\n }\n // When user click retry need to avoid intermediate steps(step2 and step3)\n if (step === 1) {\n setTimeout(function () {\n $(\".btn-previous\").trigger(\"click\");\n }, 1);\n }\n\n if (this.state.status === 'deployment initiated') {\n setTimeout(function () {\n $(\".btn-next\").trigger(\"click\");\n }, 1);\n }\n }\n\n isValidated() {\n\n if (localStorage.getItem(\"wizardStage\") === 'step4') {\n return true\n }\n if (localStorage.getItem('deploymentStatus') === 'deployed') {\n return true;\n }\n else {\n return false\n }\n }\n\n handleSubmit() {\n this.setState({ disabled: true })\n this.triggerDeployment()\n localStorage.setItem('currentStatus', 'step4')\n localStorage.setItem('wizardStage', 'step4')\n $(\".btn-next\").trigger(\"click\");\n }\n\n render() {\n return (\n <>\n {this.state.loader\n ?\n \n :\n <>\n {(step === '3' || localStorage.getItem(\"currentStatus\") === \"step3\") ?\n
\n
\n \"Payment\n

Your Payment was Successful

\n

Click below to get started on Qualdo™ deployment.

\n \n
\n
\n\n :\n this.isValidated()\n }\n }\n \n )\n\n }\n}\n\nclass ForthStep extends React.Component {\n constructor(props) {\n super(props);\n this.isValidated = this.isValidated.bind(this);\n this.getDeployment = getDeployment.bind(this);\n this.deploymentRetry = this.deploymentRetry.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.triggerDeployment = triggerDeployment.bind(this);\n this.redeployDeployment = this.redeployDeployment.bind(this);\n this.handleErrorCollapse = this.handleErrorCollapse.bind(this);\n this.state = {\n customStep: 4,\n thirdStep: \"third step here\",\n progressStatus: 'deployment initiated',\n time: 5,\n statusText: null,\n currentStep: '',\n errorOccurred: '',\n loader: true,\n showModal: false,\n status: '',\n prerequesties: null\n\n };\n }\n componentDidMount() {\n setTimeout(() =>\n this.getDeployment()\n , 500)\n }\n componentDidUpdate(previousState, currentState) {\n if (this.state.progressStatus === 'initiated' || this.state.progressStatus === null || this.state.progressStatus === 'payment success' ||\n (this.state.progressStatus === 'deployment initiated' && localStorage.getItem('wizardStage') !== 'step4') ||\n (localStorage.getItem('wizardStage') === 'step1' && this.state.progressStatus === 'failed')) {\n $('#help_video').addClass('d-none')\n }\n if ((this.state.progressStatus === 'deployment initiated' && localStorage.getItem('wizardStage') === 'step4') || this.state.progressStatus === 'active' ||\n (localStorage.getItem('wizardStage') === 'step4' && this.state.progressStatus === 'failed') ||\n (localStorage.getItem('wizardStage') === 'step4')) {\n $('#help_video').removeClass('d-none')\n }\n if (localStorage.getItem('currentStatus') !== 'step1') {\n $(\".card-footer\").hide();\n }\n let timeOut = 1\n let timer;\n let currentStatus = localStorage.getItem('currentStatus')\n if (this.state.progressStatus !== 'active' && timeOut < 360000 && currentStatus === 'step4') {\n timer = setInterval(() => {\n this.getDeployment()\n }, 120000);\n timeOut = 120000 + timeOut\n }\n else if (timeOut > 360000 && (this.state.progressStatus !== 'active' || this.state.progressStatus !== 'failed')) {\n timer = setInterval(() => {\n this.getDeployment()\n }, 240000);\n }\n else {\n clearInterval(timer)\n }\n }\n\n isValidated() {\n return true\n }\n\n handleSubmit() {\n localStorage.setItem(\"currentStatus\", 'step4');\n localStorage.setItem(\"deploymentStatus\", 'deployed');\n let currentStep = localStorage.getItem('currentStatus')\n let status = { 'status': 'deployed' }\n let deployemntStatus = localStorage.getItem('currentState')\n if (deployemntStatus !== 'deleted' && currentStep === 'step4') {\n updateDeployment(status)\n setTimeout(() => browserHistory.push('/dashboard'), 1000);\n }\n else if(deployemntStatus === 'deleted'){\n setTimeout(() => browserHistory.push('/dashboard'), 1000);\n }\n }\n\n deploymentRetry() {\n localStorage.setItem(\"currentStatus\", 'step1')\n localStorage.setItem(\"wizardStage\", 'step1')\n localStorage.setItem(\"Retry\", 'true')\n step = step - 2\n this.setState({ progressStatus: 'initiated' })\n setTimeout(function () {\n $(\".btn-previous\").trigger(\"click\");\n }, 1);\n $(\"#deployment-nav-header\").addClass(\"status\")\n }\n\n redeployDeployment() {\n $('.deployment-failed').text('Deployment In-Progress')\n $('.nav-icon__error').addClass('d-none')\n $('.new-deployment').addClass('animated-striped-progress')\n this.setState({ progressStatus: 'deployment initiated' })\n this.setState({ time: 5 })\n this.triggerDeployment()\n\n }\n handleClick(data) {\n this.setState({ showModal: true, helpSection: data });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n };\n\n handleErrorCollapse() {\n $(\".collapse-content\").addClass(\"show\");\n $(\"#see-more\").addClass(\"d-none\");\n }\n\n render() {\n return (\n <>\n {\n this.state.showModal ?\n : \"\"\n }\n {this.state.loader\n ?\n \n :\n <>\n {(localStorage.getItem('wizardStage') === 'step4' && this.state.progressStatus !== 'failed' &&\n this.state.progressStatus !== 'active') || this.state.progressStatus === 'deployment initiated' ?\n <>\n
\n
\n
\n
\n Creating your deployment\n

Your Deployment is in progress

\n\n {this.state.time < 100 ?\n \n // variant=\"danger\"\n :\n\n \n }\n \n Qualdo infrastructure will be brought up from scratch (takes about 30 mins).\n

Kindly wait or come back later.

\n
\n
\n
\n
\n\n
\n
\n \n :\n (this.state.progressStatus === 'failed') ?\n <>\n
\n
\n
\n
\n Creating your deployment\n

Your Deployment is in progress

\n

Deployment Failed!

\n {this.state.time < 100 ?\n \n\n :\n\n \n }\n\n
\n
\n \n \n \n Please wait...\n \n
\n
\n
\n
\n
Deployment failed details:
\n\n {this.state.statusText !== null ?\n
    \n {(this.state.statusText.map(row =>\n
  • {row}
  • \n ))}\n
\n :\n ''\n }\n\n
\n
\n {this.state.prerequesties !== null\n ?\n <>\n {(this.state.prerequesties.map(row =>\n
\n                                                                            \n                                                                                {row}\n                                                                            \n                                                                        
\n ))}\n \n :\n ''\n }\n
\n
\n {this.state.prerequesties !== null ?\n \n :\n ''\n }\n
\n
\n \n \n \n \n Edit Cloud Details\n \n \n Try Again\n \n \n \n \n
\n
\n
\n
\n \n : (this.state.progressStatus === 'active') ?\n <>\n
\n \n \n
\n \n

Your deployment is ready!

\n
\n
\n \n
\n
\n \n :(this.state.progressStatus === 'deleted')?\n <>\n
\n \n \n
\n \n

Your deployment is Deleted!

\n
\n
\n \n
\n
\n \n :''\n }\n \n }\n \n )\n\n }\n}\n\nvar steps = [\n // this step hasn't got a isValidated() function, so it will be considered to be true\n { stepName: \"Cloud Details\", component: FirstStep, stepIcon: \"qd-wizard_circle\" },\n // this step will be validated to false\n { stepName: \"Billing Details\", component: SecondStep, stepIcon: \"qd-wizard_circle\" },\n // this step will never be reachable because of the seconds isValidated() steps function that will always return false\n { stepName: \"Payment Confirmation\", component: ThirdStep, stepIcon: \"qd-wizard_circle\" },\n { stepName: \"Deployment\", component: ForthStep, stepIcon: \"qd-wizard_circle\" }\n\n]\n\nclass Deployment extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.finishButtonClick = this.finishButtonClick.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.planDetails = planDetails.bind(this)\n this.getDeployment = getDeployment.bind(this)\n\n // if(localStorage.getItem('deploymentStatus') === null || localStorage.getItem('deploymentStatus') === undefined){\n // window.location.href = \"/\";\n // }\n let sessionToken = localStorage.getItem(\"sessionToken\");\n if (sessionToken === \"undefined\" || sessionToken === \"null\" || sessionToken === null || sessionToken === undefined) {\n window.location = '/';\n return;\n }\n this.state = {\n isLoginPage: true,\n errorOccurred: false,\n firstStep: \"first step here\",\n password: \"\",\n data: \"\",\n status: \"initiated\",\n };\n this.getDeployment()\n }\n\n finishButtonClick = (allStates) => {\n };\n\n componentDidMount() {\n $('#root').addClass('theme-orange')\n this.planDetails()\n\n }\n componentDidUpdate() {\n }\n submitHandler() {\n }\n\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 \n \n
\n
\n\n {this.state.status !== 'active'\n ?\n

While you're waiting

\n : ''\n }\n

Discover what you can do with Qualdo™

\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, { setDeploymentData })(Deployment);","import {\n DEPLOYMENT_DATA,\n} from \"./actionTypes\";\n\nexport const setDeploymentData = deploymentData =>({\n type: DEPLOYMENT_DATA,\n payload: {\n deploymentData\n }\n});","export const DEPLOYMENT_DATA = \"DEPLOYMENT_DATA\";","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 { faEnvelope, faLock, faEye, faEyeSlash, faUser, faBuilding, faPhoneAlt, faArrowRight } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { 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';\nimport mixpanel from 'mixpanel-browser';\nmixpanel.init('155c019784ab639716eb7828d60964e2', {debug: true});\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 }\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 mixpanel.track('New user signup', {\n distinct_id: email\n });\n mixpanel.identify(email);\n mixpanel.people.set({\n $first_name: username,\n $last_name: company,\n $email: email\n });\n\n const splitName = (name = '') => {\n const [firstName, ...lastName] = name.split(' ').filter(Boolean);\n return {\n firstName: firstName,\n lastName: lastName.join(' ')\n }\n } \n let userName = splitName(username) \n const data = {\n user_signup_type: \"qualdo_db_auth\", company: company, email: email,\n first_name: userName.firstName, last_name: userName.lastName, username: username, password: password,\n phone_number: phone\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.log(\"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 }\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 mixpanel.track('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().max(16,\"Max Length of the password should be 16\").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.log(error)\n return false\n }\n }\n )\n\n });\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 {\n this.state.error ?\n
\n {this.state.error}\n
: \"\"\n }\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 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 Image from '../../components/image';\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 return (\n
\n
\n \n \n \n

Thank you!

\n

Check your Email!

\n

We have sent a verification email to {this.props.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\nexport default EmailNotification;\n","import React from 'react';\nimport Image from '../components/image';\nimport Banner from './components/banner';\nimport SignupForm from './components/signup';\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.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, { 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 { AzureMP } from \"react-azure-mp\"\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\";\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 Overview\":\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 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 case \"Discover\":\n return (<>

{name}

);\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 VideoContent from './videoContent';\n\nclass BasicPortlet extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showModal: false\n }\n }\n\n render() {\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.props.title}\n }\n
\n
\n {\n this.state.showModal ?\n : \"\"\n }\n
\n
\n
\n {this.props.content}\n
\n
\n );\n }\n}\n\nexport default BasicPortlet;","import React from 'react';\nimport ToolkitProvider from 'react-bootstrap-table2-toolkit';\nimport $ from \"jquery\";\nimport paginationFactory, {\n PaginationListStandalone,\n PaginationProvider,\n PaginationTotalStandalone,\n SizePerPageDropdownStandalone\n} from 'react-bootstrap-table2-paginator';\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 { faArrowAltCircleRight} from '@fortawesome/free-regular-svg-icons';\nimport {\n NO_DATA_SET_FOUND_TEXT, ROW_WARN_CLASS, EXCLUDED_COMPONENTS,\n NOT_SORTABLE, ABOVE_ALERT_SUPPORTED_TABLES, LIST_VIEW_OPTIONS,SUBSCRIPTION_DOC\n} from \"../utils/constant\";\nimport {get_document_link} from \"../utils/common_utils\";\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 onPageChange() {\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 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 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 fullData = this.state.tableData.data;\n fullData = _.cloneDeep(fullData)\n for (let i = 0; i < fullData.length; i++) {\n let rowItems = fullData[i];\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 }\n else {\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: 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 pageList.push({text: \"All\" , value: this.state.tableData.data.length});\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 pageList.push({text: \"All\" , value: this.state.tableData.data.length});\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) {\n if (headerValue === \"Pdf\") {\n return \n // return \n \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,row);\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 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.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 curobj.toggleClass(\"active\");\n }\n\n render() {\n const 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 lengthLimit = 5;\n }\n else {\n\n 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 }\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
\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 return this.props.customRowHighlighter === undefined ?\n addClassFailure(row, rowIndex) : this.props.customRowHighlighter(row, rowIndex);\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 switch (this.props.component_name) {\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 columns = [{\n 'dataField': \"ID\",\n 'text': \"ID\",\n 'sort': true,\n 'classes': classFuncForCols\n }, ...columns];\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\n const contentTable = ({paginationProps, paginationTableProps}) => (\n <>\n {this.props.component_name === \"dqErrorListViewTable\" && data.length < 5 ?
\n
\n
\n
\n {this.props.component_name === \"dqErrorListViewTable\" ?
\n
\n \n
\n
\n option.disabled}\n onChange={this.props.changeGroup}\n />\n
\n
: \"\"\n }\n
\n
\n
\n
: \"\"}\n {\n hasData && (this.state.tableData.data.length > lengthLimit )\n ?\n \n :\n ''\n }\n\n {hasData ? <>\n {\n toolkitprops => {\n let classNameForTable = \"\";\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\n if (hasData) {\n return (\n <>\n \n {contentTable}\n \n \n );\n\n }\n\n else if(this.props.component_name === \"dashboard\"){\n return (
\n

\n

No data available for the deployment

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

\n

No data available

\n

For help, check out the Help Document

\n
\n );\n }\n }\n}\n\nexport default QualdoDataTable;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport { browserHistory } from 'react-router';\nimport { getApi, getuserrenewal, getDeploymentPlanDetails, planDetails } from '../../utils/event_handling';\nimport $ from 'jquery';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport { faTrash, faSync, faUser, faLock, faExclamationTriangle, faEye, faEyeSlash, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport Image from '../../components/image';\nimport Modal from 'react-bootstrap/Modal';\nimport { handleDeleteForDeployment, getAllDeployment } from \"../../utils/event_handling\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport { toastObj } from \"../../utils/common_utils\";\nimport Toast from 'react-bootstrap/Toast';\nlet rd = 31;\nlet renewDisabled = false;\nlet payDisabled = false;\nclass TableAction extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.getApi = getApi.bind(this);\n this.planDetails = planDetails.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renew = this.renew.bind(this);\n this.pay = this.pay.bind(this);\n this.getuserrenewal = getuserrenewal.bind(this);\n this.getDeploymentPlanDetails = getDeploymentPlanDetails.bind(this);\n this.deletePopup = this.deletePopup.bind(this);\n this.closeDeletepopup = this.closeDeletepopup.bind(this);\n this.handleDeleteForDeployment = handleDeleteForDeployment.bind(this);\n this.changePasswordIcon = this.changePasswordIcon.bind(this);\n this.delete = this.delete.bind(this);\n this.showToast = this.showToast.bind(this);\n this.getAllDeployment = getAllDeployment.bind(this);\n this.state = {\n props,\n remainingData: '',\n showPopup: false,\n deleteButtonDisabled: false,\n passwordType: \"password\",\n passwordIcon: faEye,\n errors: null,\n password: '',\n errorOccurred: null,\n toastStatus: false,\n closeToast: false,\n }\n\n\n if (this.props.cell !== null && this.props.header === 'Validity Period') {\n const current = new Date();\n var convertDateFormate = current.toGMTString();\n var currentDate = new Date(convertDateFormate);\n var nextBillingDate = new Date(this.props.nextBillingDate);\n let Rd = Math.floor((Math.abs(nextBillingDate - currentDate)) / (1000 * 60 * 60 * 24))\n this.setState({ remainingData: Rd });\n rd = Rd\n if (currentDate > nextBillingDate) {\n rd = 0\n }\n localStorage.setItem('rd', Rd)\n\n }\n\n }\n\n componentDidUpdate(){\n /**\n * Updating the class for the dropdown using onclick button\n * Fix for issue QPS_2252\n */\n $( \"button\" ).click(function() {\n $(\"td\").closest(\"td\").removeClass(\"z-index-1\");\n $(this).closest(\"td\").addClass(\"z-index-1\");\n });\n }\n\n handleClick = (e) => {\n if (this.props.header === 'Actions' && this.props.cell === 'No') {\n let data = { 'deployment_id': this.props.id, 'auto_debit': true, 'renewal': this.props.cell }\n this.props.handleRenewOptions(data, this.props.data);\n this.props.handleChange();\n }\n else if (this.props.header === 'Actions' && this.props.cell !== 'No') {\n let data = { 'deployment_id': this.props.id, 'auto_debit': false, 'renewal': this.props.cell }\n this.props.handleRenewOptions(data, this.props.data);\n this.props.handleChange();\n\n }\n else if (this.props.header === 'DeleteAction') {\n let deploymentId = this.props.reqData['deployment_id']\n if(this.props.reqData['status'] === 'deletion failed'){\n const splitName = this.props.reqData['deployment_name'].split(\"__1__\");\n this.props.reqData['deployment_name'] = splitName[0]\n }\n localStorage.setItem('deployment_id', deploymentId)\n this.deletePopup();\n }\n }\n\n pay() {\n localStorage.setItem(\"deployment_id\", this.props.id)\n localStorage.setItem(\"pay\", true)\n browserHistory.push('/payment')\n this.planDetails()\n this.getDeploymentPlanDetails(this.props.id);\n setTimeout(() =>\n browserHistory.push('/payment'), 700\n );\n }\n\n renew() {\n let data = { 'deployment_id': this.props.id, 'deployment_name': this.props.data['Deployment Name'] }\n this.props.handlerenew(data);\n this.getApi(\"get_user_payments_and_billing_history\");\n\n }\n\n deletePopup() {\n this.setState({ showPopup: true })\n }\n\n closeDeletepopup() {\n this.setState({\n showPopup: false,\n errors: false,\n password: ''\n })\n }\n\n changePasswordIcon() {\n let state = this.state.passwordIcon;\n if (state.iconName === \"eye\") {\n this.setState({\n passwordIcon: faEyeSlash,\n passwordType: \"text\"\n });\n } else {\n this.setState({\n passwordIcon: faEye,\n passwordType: \"password\"\n });\n }\n }\n delete() {\n this.setState({ deleteButtonDisabled: true });\n if (this.state.password.length !== 0) {\n this.handleDeleteForDeployment();\n }\n else {\n this.setState({ errors: \"Please Enter Your Password\" });\n this.setState({ deleteButtonDisabled: false });\n }\n\n }\n\n hideAlert() {\n this.setState({\n errors: null,\n hideSubmitButton: false\n });\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 showPopup: false\n });\n\n if (link.trim().length > 0) {\n setTimeout(function () {\n window.location.href = link;\n }, 3000);\n }\n setTimeout(() => {\n this.getAllDeployment()\n }, 1000\n );\n }\n\n closeToast() {\n this.setState({ toastStatus: false });\n }\n\n\n render() {\n $(\"#payment_id\").removeClass();\n // $('#btn btn-blue mr-1').removeClass('btn btn-blue mr-1');\n if (rd < 1) {\n renewDisabled = false;\n }\n if (rd < 1) {\n payDisabled = false\n\n }\n if (this.props.cell !== null && this.props.header === 'Validity Period') {\n const current = new Date();\n var convertDateFormate = current.toGMTString();\n var currentDate = new Date(convertDateFormate);\n var nextBillingDate = new Date(this.props.nextBillingDate);\n let Rd = Math.floor((Math.abs(nextBillingDate - currentDate)) / (1000 * 60 * 60 * 24))\n rd = Rd + 1\n if (currentDate > nextBillingDate) {\n rd = 0\n }\n\n }\n\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\n return (\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 {(this.props.reqData !== undefined || this.props.reqData !== null) ?\n <>\n {\n (this.props.cell !== null && this.props.header === 'Deployment Name') ?\n\n
\n
{this.props.cell}
\n
My Enterprise Private Cloud
\n
\n\n :\n\n ''\n }\n {this.props.header === 'Actions' ?\n\n <>\n {(this.props.reqData['payment_status'] === 0 && (this.props.reqData['renew'] === true || this.props.reqData['renew'] === false)) ?\n <>\n \n \n \n \n Pay\n \n \n More\n \n Enable Auto Renewal\n \n \n\n \n :\n\n ''\n }\n {(this.props.reqData['payment_status'] === 1 && this.props.reqData['renew'] === false) ?\n <>\n \n \n \n \n Renew\n \n {\n this.props.cell !== 'No' ?\n \n More\n \n Disable Auto Renewal\n \n \n\n :\n\n\n \n More\n \n Enable Auto Renewal\n \n \n }\n \n : this.props.reqData['renew'] === true ?\n\n <>\n \n \n \n \n Renew\n \n {\n this.props.cell !== 'No' ?\n \n More\n \n Disable Auto Renewal\n \n \n\n :\n\n\n \n More\n \n Enable Auto Renewal\n \n \n }\n \n :\n ''\n\n }\n \n\n : (this.props.header === 'DeleteAction') ?\n <>\n \n \n \n \n Delete\n \n \n :\n ''\n\n }\n\n\n {(this.props.cell !== null && this.props.header === 'Validity Period') ?\n <>\n {this.props.reqData['payment_status'] !== 0 ?\n\n <>\n {rd < 10 ?\n
\n
{rd} Days
\n
{this.props.cell}
\n
\n\n :\n
\n
{rd} Days
\n
{this.props.cell}
\n
\n }\n\n \n\n :\n\n
\n
0 Days
\n
{'Validity Period End'}
\n
\n\n }\n\n \n\n :\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 {/* Modal Delete Confirmation */}\n \n \n
\n
\n \n
\n
\n

Delete Deployment

\n

Please provide your credentials to delete the Deployment : {this.props.reqData !== undefined ? this.props.reqData['deployment_name']: ''}\n {/* created on 20 Jan 2022 */}\n

\n
\n
\n \n \n \n \n \n \n \n \n {this.state.errors ?\n
\n {this.state.errors}\n
: \"\"\n }\n \n \n \n \n \n {\n handleChange(\"password\")(value);\n this.setState({ password: value.target.value });\n }}\n />\n\n \n \n \n
\n \n \n \n Deleting this instance will not be restored, and will delete all instance resources.Kindly make sure all resource are not in use(eg.DB).\n
\n
\n \n Cancel\n \n \n \n Confirm\n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n \n \n );\n }\n}\n\nexport default TableAction;","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,\n PROFILE_DATA_URL} from \"../../utils/constant\";\nimport {Mediakind} from \"./../../utils/mediaKind\"\n\n\nclass VideoContent extends Component {\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 default:\n return \"\"\n }\n }\n switch(name) {\n case \"Discover\":\n return (<>

{name}

);\n default:\n return \"\"\n }\n }\n\n getVideo() {\n switch(this.props.name) {\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_data\":\n return PROFILE_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 BreadCrumb from '../components/breadCrumb';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Image from '../components/image';\nimport NavigationHeader from '../components/navigationHeader';\nimport { CopyRightsFooter } from '../components/copyrights';\nimport { Row, Col } from 'react-bootstrap';\nimport { faArrowRight, faCheck, faExternalLinkAlt,faInfoCircle,faPlusCircle,} from '@fortawesome/free-solid-svg-icons';\nimport Card from 'react-bootstrap/Card';\nimport $ from 'jquery';\nimport Nav from 'react-bootstrap/Nav';\nimport Tab from 'react-bootstrap/Tab';\nimport { getApi, getAllDeployment, updateautoDebit } from \"../utils/event_handling\";\nimport BasicPortlet from '../components/basicPortlet';\nimport QualdoDataTable from '../components/bootstrapTable';\nimport { toastObj, get_document_link } from \"../utils/common_utils\";\nimport Toast from 'react-bootstrap/Toast';\nimport Load from \"../components/loadAction\";\nimport TableAction from '../settings/components/tableActions';\nimport { browserHistory } from 'react-router';\nimport Modal from 'react-bootstrap/Modal';\nimport VideoContent from './components/videoContent'\nimport { HTTPS, DRX_DOCUMENT_BASE_LINK } from '../utils/constant';\n\n\nlet descriptionDatas = {};\n\nclass HomeDashboard extends React.Component {\n \n constructor(props, context) {\n super(props, context);\n let tab = \"dashboard\"\n this.getAllDeployment = getAllDeployment.bind(this);\n this.showToast = this.showToast.bind(this);\n this.closeToast = this.closeToast.bind(this);\n this.paymentTableComponent = this.paymentTableComponent.bind(this);\n this.getApi = getApi.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handlerenew = this.handlerenew.bind(this);\n this.handleRenewOptions = this.handleRenewOptions.bind(this);\n this.handleconfirm = this.handleconfirm.bind(this);\n this.handleRenewConfirmation = this.handleRenewConfirmation.bind(this);\n this.confirmpopup = this.confirmpopup.bind(this);\n this.closeRenewpopup = this.closeRenewpopup.bind(this);\n this.updateautoDebit = updateautoDebit.bind(this);\n\n if(localStorage.getItem('deploymentStatus') ===null || localStorage.getItem('deploymentStatus') === undefined){\n window.location.href = \"/\";\n }\n else if(localStorage.getItem('deploymentStatus') !== 'deployed'){\n window.location.href = \"/deployment\";\n }\n\n this.state = {\n isLoginPage: true,\n errorOccurred: false,\n current_tab: tab,\n data: \"\",\n tableData: { \"headers\": [], \"data\": [] },\n newDeploymentData : null,\n toastStatus: false,\n closeToast: false,\n upcomingPaymentData: { \"headers\": [], \"data\": [] },\n showAutoRenew: false,\n confirm: false,\n auto_debit: null,\n id: null,\n updateData: { 'deployment_id': '', 'auto_debit': '' },\n renewal: null,\n confirmRenewal: false,\n renewId: '',\n deploymentName:'',\n showModal: false,\n helpSection: '',\n post: null,\n };\n\n this.getData();\n }\n\n getData() {\n this.getApi(\"get_user_payments_and_billing_history\");\n }\n componentDidMount() {\n $('body').addClass('theme-orange')\n localStorage.removeItem('deployment_id')\n localStorage.removeItem('deployment_name')\n this.getAllDeployment()\n }\n\n // To set Dashboard button as active.\n componentDidUpdate(){\n $('.dashboard').addClass('active');\n }\n\n showToast(status, msg, link) {\n this.getAllDeployment()\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 showPopup: false\n });\n\n if (link.trim().length > 0) {\n setTimeout(function () {\n window.location.href = link;\n }, 3000);\n }\n\n }\n\n deploymentTableComponent(actionType, headerValue, cell, tableProps, row) {\n\n /**\n * Replace the deleted deployment name\n * deleted deployement name is modified in backend\n */\n if((row['Status'] === 'deleted' || row['Status'] === 'deletion initiated' || row['Status'] === 'deletion failed') && cell.name !== undefined){\n let name = cell.name\n const splitName = name.split(\"__1__\");\n cell['name'] = splitName[0]\n }\n if (headerValue === \"Deployment\") {\n return (\n
\n
\n \n
\n {((cell.url !== undefined && row['Status'] === 'deployed') || (cell.url !== undefined && row['Status'] === 'active')) \n ?\n
\n {cell.name}\n

Click the above link to goto Qualdo-DRX

\n
\n :\n <>\n {(row['Status'] === 'deleted') ?\n
\n

{cell.name}

\n

Deployment deleted

\n
\n :\n (row['Status'] === 'deletion initiated') ?\n
\n

{cell.name}

\n

Deployment deletion initiated

\n
\n :\n (row['Status'] === 'deletion failed') ?\n
\n

{cell.name}

\n

Deployment deletion failed

\n
\n :\n
\n

{cell.name}

\n

Deployment has issues

\n
\n }\n \n }\n
\n );\n }\n\n if (headerValue === \"Status\") {\n if (cell === 'deployed' || cell === 'active') {\n return (\n
{\"Healthy\"}
\n\n );\n }\n else if (cell === 'deleted') {\n return (\n
{\"Deleted\"}
\n\n );\n }\n else if (cell === 'deletion initiated') {\n return (\n
\n \n \n \n \n \n {\"Deletion Initiated\"}
\n\n );\n }\n else if (cell === 'deletion failed') {\n return (\n
\n \n \n \n \n \n \n \n {\"Deletion Failed\"}
\n\n );\n }\n else if (cell === 'failed') {\n return (\n
{\"Deployment Failed\"}
\n\n );\n }\n // else if (cell === 'deletion initiated') {\n // return (\n //
{\"Deletion Initiated\"}
\n\n // );\n // }\n }\n\n if (headerValue === \"Actions\") {\n let disabled;\n if (cell['status'] === 'deleted' || cell['status'] === 'deletion initiated') {\n disabled = true\n }\n return (\n <>\n \n\n \n );\n }\n\n return cell;\n }\n\n paymentTableComponent(actionType, headerValue, cell, tableProps, row) {\n if (headerValue === \"Order Id\") {\n return (\n
\n {cell}\n
\n\n );\n }\n\n if (headerValue === \"Validity Period\") {\n return (\n \n\n );\n }\n\n if (headerValue === \"Amount\") {\n return (\n ${cell}\n );\n }\n\n if (headerValue === \"Deployment Name\") {\n return (\n \n\n\n );\n }\n\n if (headerValue === \"Auto Renewal\") {\n if (row['Auto Renewal'] === \"No\") {\n return (\n
\n \n None\n
\n );\n }\n else if (cell === 'annually') {\n return (\n 1 annum(s)\n );\n }\n else if (cell === 'monthly') {\n return (\n 1 month(s)\n );\n }\n }\n\n if (headerValue === \"Actions\") {\n if (row['Auto Renewal'] === \"monthly\" || row['Auto Renewal'] === \"annually\") {\n return (\n \n\n );\n }\n else {\n localStorage.setItem('currentId', cell)\n return (\n\n \n\n );\n }\n\n }\n\n return cell;\n }\n\n handleChange() {\n this.getApi(\"get_user_payments_and_billing_history\");\n }\n\n handleRenewOptions(data, descriptionData) {\n descriptionDatas = descriptionData\n this.setState({ id: data['deployment_id'] })\n this.setState({ auto_debit: data['auto_debit'] })\n this.setState({ renewal: data['renewal'] })\n this.setState({ confirm: false })\n this.setState({ showAutoRenew: true })\n // this.setState({closeToast:!this.state.closeToast})\n\n }\n\n handleconfirm() {\n let data = { 'deployment_id': this.state.id, 'auto_debit': this.state.auto_debit }\n updateautoDebit(data)\n this.setState({ showAutoRenew: false })\n setTimeout(() => {\n this.getApi(\"get_user_payments_and_billing_history\");\n }, 500);\n\n }\n\n handlerenew(data) {\n this.setState({ renewId: data['deployment_id'] })\n this.setState({ deploymentName: data['deployment_name'] })\n this.setState({ confirmRenewal: true })\n\n }\n\n handleRenewConfirmation() {\n localStorage.setItem('deployment_id', this.state.renewId)\n localStorage.setItem('renew', true)\n browserHistory.push('/renew')\n this.setState({ confirmRenewal: false })\n setTimeout(() => {\n this.getApi(\"get_user_payments_and_billing_history\");\n }, 500);\n\n }\n\n closeToast() {\n this.setState({ toastStatus: false });\n }\n\n closeRenewpopup() {\n this.setState({ confirmRenewal: false })\n }\n\n confirmpopup() {\n this.setState({ showAutoRenew: false });\n }\n\n createDeployment() {\n localStorage.removeItem('deployment_id');\n localStorage.removeItem('wizardStage');\n localStorage.removeItem('currentId');\n localStorage.removeItem('deploymentStatus');\n localStorage.setItem('currentStatus', 'step1')\n localStorage.setItem('validate', 'true')\n setTimeout(() =>\n browserHistory.push('/deployment'))\n }\n\n handleClick(data) {\n this.setState({ showModal: true, helpSection: data });\n }\n\n hideModal = () => {\n this.setState({ showModal: false });\n };\n\n render() {\n let tableData = this.state.tableData\n let paymenttableData = this.state.upcomingPaymentData;\n if (this.state.upcomingPaymentData !== null && this.state.upcomingPaymentData !== undefined) {\n paymenttableData = this.state.upcomingPaymentData\n }\n let newDeployStatus = \"\"\n if(this.state.newDeploymentData !== null && this.state.newDeploymentData.lenght > 0){\n newDeployStatus = this.state.newDeploymentData[0]['status']\n }\n return (\n <>\n {\n this.state.showModal \n ?\n \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
\n
\n
\n
\n Upcoming Payment\n
\n
\n
\n
\n\n {(paymenttableData !== null && paymenttableData !== undefined) ?\n : ''}\n
\n
\n \n \n
\n
\n
\n
\n Help\n
\n
\n
\n
\n \n
\n \n
\n Quick Start - Video Tutorial \n
\n \n
\n \n
\n Qualdo’s documentation! \n
\n
\n
\n \n
\n \n \n {/* \n {/* */}\n\n \n\n \n
\n
\n
\n \n \n \n \n
\n
\n \n
\n
\n

Renew Qualdo-DRX Edition

\n

Are you sure you want to renew {this.state.deploymentName} Qualdo-DRX Edition?

\n
\n
\n \n \n
\n
\n
\n
\n \n \n {this.state.renewal === 'No' ?\n\n <>\n \n
\n
\n \n
\n
\n

Are you sure you want to Enable auto-renewal?

\n\n {/* \"Your deployment 'My-Deploy (Qualdo DRX Edition, GCP)' will be automatically renewed.\" */}\n

Your deployment \"{(descriptionDatas['Deployment Name'])}\" {\"Qualdo DRX Edition - GCP\"} will be automatically renewed.

\n
\n
\n \n
\n
\n \n\n :\n\n <>\n \n
\n
\n \n
\n
\n

Are you sure you want to disable auto-renewal?

\n

Your deployment \"{descriptionDatas['Deployment Name']}\" {\"Qualdo DRX Edition - GCP\"} will NOT be automatically renewed.

\n
\n
\n \n
\n
\n \n\n }\n\n
\n
\n \n \n \n
\n
\n \n
\n
\n

Deployment deletion failed!

\n

testing-drx/DRX Edition - asia-south1 region deletion failed

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

Deployment deleted successfully

\n

testing-drx/DRX Edition - asia-south1 region has been deleted successfully

\n
\n
\n \n
\n
\n
\n
\n \n \n );\n\n }\n}\n\nexport default HomeDashboard;","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\";\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 const passwordData = {password:password};\n call_post_api(iam_ip, 'reset-confirm?token='+token, passwordData).then((response) => {\n localStorage.removeItem(\"resetPwdToken\");\n console.log(\"Response\",response)\n if (response.code === 200) {\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().max(16,\"Max Length of the password should be 16\").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\";\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 search = window.location.search;\n if(search.length > 0){\n let params = new URLSearchParams(search);\n let resetPwdToken = params.get('token');\n if(resetPwdToken !== undefined || resetPwdToken !== null){\n localStorage.setItem('resetPwdToken', resetPwdToken);\n }\n }\n let reset_password_token = localStorage.getItem(\"resetPwdToken\");\n if (reset_password_token === undefined || reset_password_token === \"undefined\" || reset_password_token === null) {\n window.location = '/';\n return;\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().max(16,\"Max Length of the password should be 16\").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\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 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';\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 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 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({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 {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 { 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","// 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 {\n DEPLOYMENT_DATA,\n} from \"../actionTypes\";\n\n\nconst initialState = {\n deploymentData:{\n currentState:\"asd\",\n }\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case DEPLOYMENT_DATA: {\n\n return {\n ...state,\n deploymentData: {...state.deploymentData, ...action.payload.deploymentData},\n }\n }\n\n default:\n return state;\n }\n}\n","import { combineReducers } from \"redux\";\nimport dataModule from \"./dataModule\";\n\nexport default combineReducers({ dataModule });","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 {ui_service_ip, iam_ip} from \"./ip_details\";\n\nimport { getProtocol, removeLocalStorageKeys } from \"./common_utils\";\n\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 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\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 removeLocalStorageKeys();\n window.location = '/';\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.log(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.log(end_point, \"- failed\"));\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 \"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 default:\n break;\n }\n}\n\nexport function handleUserSubmit(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 \"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 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[\"org_id\"] = localStorage.getItem(\"org_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 default:\n break;\n }\n }","import React from 'react';\nimport Toast from 'react-bootstrap/Toast';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUser } from '@fortawesome/free-solid-svg-icons';\nimport { handleUserSubmit, getApi } from \"../../utils/User_handling\";\nimport { toastObj, userValidation } from \"../../utils/common_utils\";\nimport Image from \"../../components/image\";\nimport $ from 'jquery';\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 let result = userValidation(value);\n let lastNameResult = userValidation(this.state.last_name)\n let firstNameClass = result ? '' : \"is-invalid\"\n\n\n this.setState({ disableButton: !result || !lastNameResult, firstNameClass: firstNameClass })\n }\n else if (name === \"last_name\") {\n let result = userValidation(value);\n let firstNameResult = userValidation(this.state.first_name)\n let lastNameClass = result ? '' : \"is-invalid\"\n\n\n this.setState({ disableButton: !result || !firstNameResult, lastNameClass: lastNameClass })\n }\n else if (name === \"org_name\") {\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 componentDidMount() {\n $('body').addClass('theme-orange')\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 Account\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={handleUserSubmit.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
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
\n \n
Invalid name
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n }\n}\n\nexport default Account;","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().max(16,\"Max Length of the password should be 16\").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 { 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 { 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 { 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 }\n\n}\nexport default ChangePassword;\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

\n Please add your credit card details here to subscribe\n

\n {/*

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

*/}\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 OverlayTrigger from \"react-bootstrap/OverlayTrigger\";\nimport Tooltip from \"react-bootstrap/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\n
required for an active Qualdo™\n
account. Please add a new credit\n
card to remove this card.\n \n }>\n \n \n \n
\n }\n\n \n );\n }\n}\n\nexport default EditCardComponent;","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 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}\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 \"../../components/image\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faCreditCard} from \"@fortawesome/free-solid-svg-icons\";\nimport Load from \"../../components/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 = 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","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} from \"@fortawesome/free-solid-svg-icons\";\nimport Button from \"react-bootstrap/Button\";\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport PaymentSectionHeader from \"./paymentSectionHeader\";\nimport { ZIP_DATA, COUNTRY } from \"../../utils/billingAddressConstant\";\nimport CustomSelect from \"../customSelect\"\n\nclass BillingAddress extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n \"companyName\": '', \"addressLine1\":'',\"addressLine2\": '',\n \"country\": '', \"zipCode\": '',\"state\":'',\"city\": '',\n \"sectionTitle\": \"Personal + Business Contact Details\",\n optionscountry:COUNTRY,\n\n }\n \n this.getAddressRadioButtons = this.getAddressRadioButtons.bind(this);\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 handleChange(\"country\")(selectedOption.value); \n this.props.saveNewAddress(\"country\", selectedOption.value, isValid); \n }} \n onBlur={handleBlur} \n isInvalid={errors.country && touched.country} \n placeholder=\"Select a country\" \n />\n \n { touched.country && errors.country }\n \n \n \n\n \n \n ZIP code *\n {\n handleChange(\"zipCode\")(value);\n this.props.saveNewAddress(\"zip_code\", value.target.value, isValid);\n }}\n onBlur={handleBlur}\n isInvalid={errors.zipCode && touched.zipCode}\n placeholder=\"12345\"/>\n\n \n { touched.zipCode && errors.zipCode }\n \n \n \n \n \n\n \n Would you like to make this address as default address?\n \n \n {\n (this.props.billingAddresses.length > 0)\n ?\n \n Choose from existing billing addresses\n \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.getAddressRadioButtons()}\n\n \n
\n
\n
\n
\n \n );\n }\n}\n\nexport default BillingAddress;\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 Col from \"react-bootstrap/Col\";\nimport Form from \"react-bootstrap/Form\";\nimport Image from \"../image\";\n\nclass PaymentOptions 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
\n \n \n\n
\n \n
\n );\n }\n}\n\nexport default PaymentOptions;\n","import React from 'react';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport BreadCrumb from '../components/breadCrumb';\nimport NavigationHeader from '../components/navigationHeader';\nimport Image from './image';\nimport OrderDetails from \"./paymentComponents/orderDetails\";\nimport BillingCycle from \"./paymentComponents/billingCycle\";\nimport PaymentDetails from \"./paymentComponents/paymentDetails\";\nimport BillingAddress from \"./paymentComponents/billingAddress\";\nimport Form from \"react-bootstrap/Form\";\nimport Load from \"./loadAction\";\nimport Button from \"react-bootstrap/Button\";\nimport { browserHistory } from 'react-router';\nimport { CopyRightsFooter } from '../components/copyrights';\n\nimport {\n DateParts, PAYMENT_CARD_TYPES, PAYMENT_COMPONENT_STYLES, PAYMENT_FIELD_ID_MAP, QualdoEditions,\n QualdoPlanCycle, QualdoPlanVersions\n} from \"../utils/constant\";\nimport Card from \"react-bootstrap/Card\";\n\nimport {\n addTime, getCurrencySymbol,\n getQualdoPlanCycle,\n removeQualdoPlanCycle,\n toastObj,\n} from \"../utils/common_utils\";\nimport { getApi, getDeploymentPlanDetails, planDetails, getBrainTreeAuthToken, getPaymentDetailsTableData, submitUsersPayment } from \"../utils/event_handling\";\nimport Toast from \"react-bootstrap/Toast\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport PaymentSuccess from \"./paymentComponents/payment_success\";\nimport PaymentOptions from \"./paymentComponents/paymentOptions\";\nimport PaymentSectionHeader from \"./paymentComponents/paymentSectionHeader\";\nimport {faCheck } from '@fortawesome/free-solid-svg-icons';\n\nlet braintree = require('braintree-web');\n\nclass Payment extends React.Component {\n constructor(props) {\n super(props);\n this.cardDetailsRef = React.createRef();\n this.billingDetailsRef = React.createRef()\n // this.billingCycleHandler = this.billingCycleHandler.bind(this);\n this.saveNewAddress = this.saveNewAddress.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.clientDidCreate = this.clientDidCreate.bind(this);\n this.hostedFieldsDidCreate = this.hostedFieldsDidCreate.bind(this);\n this.showPaymentPage = this.showPaymentPage.bind(this);\n this.cardTypeProcessor = this.cardTypeProcessor.bind(this);\n this.cardValidator = this.cardValidator.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.getComponentClass = this.getComponentClass.bind(this);\n this.makeCurrentAsDefaultPayment = this.makeCurrentAsDefaultPayment.bind(this);\n this.toggleNewCardSection = this.toggleNewCardSection.bind(this);\n this.paymentSelectionHandler = this.paymentSelectionHandler.bind(this);\n this.addressSelectionHandler = this.addressSelectionHandler.bind(this);\n this.hasValidCardParts = this.hasValidCardParts.bind(this);\n // this.canEnableSubmitButton = this.canEnableSubmitButton.bind(this);\n this.setQualdoPlans = this.setQualdoPlans.bind(this);\n this.setPaymentPageDetails = this.setPaymentPageDetails.bind(this);\n this.createPaymentDataForUser = this.createPaymentDataForUser.bind(this);\n this.showAddBillingDetailsSection = this.showAddBillingDetailsSection.bind(this);\n this.hideAddBillingDetailsSection = this.hideAddBillingDetailsSection.bind(this);\n this.addressUpdateHandler = this.addressUpdateHandler.bind(this);\n this.makeDefaultBillingAddress = this.makeDefaultBillingAddress.bind(this);\n this.getSelectedPlan = this.getSelectedPlan.bind(this);\n this.getPaymentDetailsTableData = getPaymentDetailsTableData.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.setAutoDebitStatus = this.setAutoDebitStatus.bind(this);\n this.getApi = getApi.bind(this);\n this.getDeploymentPlanDetails = getDeploymentPlanDetails.bind(this);\n this.planDetails = planDetails.bind(this);\n this.getBrainTreeAuthToken = getBrainTreeAuthToken.bind(this);\n this.getQualdoPlanCycle = getQualdoPlanCycle.bind(this);\n this.submitUsersPayment = submitUsersPayment.bind(this);\n this.changePaymentPageDetails = this.changePaymentPageDetails.bind(this);\n this.onClickHandler = this.onClickHandler.bind(this);\n\n if(localStorage.getItem('deploymentStatus') ===null || localStorage.getItem('deploymentStatus') === undefined){\n window.location.href = \"/\";\n }\n else if(localStorage.getItem('pay') !== 'true'){\n window.location.href = \"/dashboard\";\n }\n else if(localStorage.getItem('deploymentStatus') !== 'deployed' && localStorage.getItem('pay') !== 'true'){\n window.location.href = \"/deployment\";\n }\n localStorage.setItem(\"src_choose_plan\", \"true\");\n this.getApi(\"get_payment_page_details\");\n\n const srcPage = localStorage.getItem(\"src_choose_plan\");\n let srcIsChoosePlan = (srcPage !== undefined && srcPage !== null);\n\n // localStorage.removeItem(\"src_choose_plan\");\n let expiryDate = undefined;\n let customerName = '';\n let make_default = false;\n const exCardDetails = this.props.exCardDetails;\n if (exCardDetails !== undefined && exCardDetails !== null) {\n expiryDate = exCardDetails.expires;\n customerName = exCardDetails.customerName;\n make_default = exCardDetails.make_default === 1;\n }\n\n this.state = {\n price: '',\n cycle: 'annually',\n deployment_details: null,\n error_message: null,\n showNotAllowedPopup: false,\n reRenderNavComponent: false,\n billingCycle: '',\n planDetails: {},\n addNewCard: false,\n canShowAddBillingAddress: false,\n hostedFields: null,\n orderID: null,\n toastStatus: false,\n errorOccurred: false,\n unitCostForData: 52,\n addOnCostForData: 0,\n unitCostForModel: 9,\n addOnCostForModel: 0,\n nextBillingDate: null,\n cycleCost: 0,\n addOnCycles: [],\n paymentPageLoading: true,\n cardType: null,\n customerNameClass: '',\n enableSubmitButton: true,\n braintreeAuthorizationToken: '',\n customerName: customerName,\n make_default: make_default,\n isEdit: this.props.isEdit !== undefined ? this.props.isEdit : false,\n previousExpiryDate: expiryDate,\n availableCards: null,\n billingAddresses: [],\n selectedPayment: null,\n selectedAddress: null,\n disableSubmitBtn: false,\n newBillingAddress: { \"isPrimary\": false },\n paymentSuccess: false,\n braintreeLoading: true,\n autoDebit: false,\n srcIsChoosePlan: srcIsChoosePlan,\n disableButton: false,\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 cardHolderName: {\n is_valid: false,\n is_invalid: false\n },\n }\n }\n this.getApi(\"get_user_payments_and_billing_history\")\n this.getDeploymentPlanDetails()\n // this.planDetails()\n this.getApi(\"get_payment_page_details\");\n\n }\n\n setAutoDebitStatus() {\n this.setState({ autoDebit: !this.state.autoDebit })\n }\n\n setPaymentStatus(paymentSuccess) {\n let reRenderNavComponent = this.state.reRenderNavComponent;\n\n if (paymentSuccess) {\n // Since payment is successful, we can remove qualdo plan cycle from local storage\n removeQualdoPlanCycle();\n }\n\n this.setState({\n paymentSuccess: paymentSuccess,\n reRenderNavComponent: reRenderNavComponent,\n disableSubmitBtn: false\n });\n }\n\n\n showAddBillingDetailsSection() {\n this.setState({ canShowAddBillingAddress: true })\n }\n\n hideAddBillingDetailsSection() {\n\n this.setState({ canShowAddBillingAddress: false, newBillingAddress: { \"isPrimary\": false } })\n }\n\n closeToast() {\n this.setState({ toastStatus: false }, this.getData);\n }\n\n hasValidCardParts() {\n const validation = this.state.validation;\n return (validation.card_number.is_valid &&\n validation.cvv.is_valid &&\n validation.expiration_date.is_valid &&\n validation.cardHolderName.is_valid\n );\n }\n\n scrollToCardDetails() {\n window.scrollTo(0, this.cardDetailsRef.current.offsetTop)\n }\n\n scrollToBillingDetails() {\n window.scrollTo(10, this.billingDetailsRef.current.offsetTop)\n }\n\n toggleNewCardSection() {\n const newState = !this.state.addNewCard;\n this.setState({ addNewCard: newState });\n if (newState) {\n this.setState({ braintreeLoading: true });\n this.showPaymentPage();\n } else {\n let availableCards = this.state.availableCards;\n if (availableCards === null) {\n availableCards = [];\n }\n\n this.setState({ enableSubmitButton: availableCards.length > 0 });\n }\n }\n\n paymentSelectionHandler(status) {\n this.setState({ selectedPayment: status });\n }\n\n addressSelectionHandler(status) {\n this.setState({ selectedAddress: status });\n }\n\n createPaymentDataForUser(details) {\n let newCard = this.state.addNewCard;\n\n let finalData = {\n \"billing_cycle\": this.state.billingCycle,\n \"order_id\": this.state.orderID,\n \"auto_debit\": this.state.autoDebit,\n \"plan_type\": this.getSelectedPlan(),\n }\n\n if (newCard) {\n finalData[\"nonce\"] = details[\"nonce\"];\n finalData[\"customer_name\"] = details[\"customer_name\"];\n finalData[\"make_default\"] = details[\"make_default\"];\n } else {\n\n let paymentDetail = this.state.availableCards.filter(x => (\n String(x.id) === String(this.state.selectedPayment)))\n let paymentDetailElement = paymentDetail[0];\n finalData[\"payment_id\"] = parseInt(String(paymentDetailElement.id));\n finalData[\"customer_name\"] = paymentDetailElement.customerName;\n }\n\n let hasNewAddress = this.state.canShowAddBillingAddress;\n if (hasNewAddress) {\n let newAddress = this.state.newBillingAddress;\n newAddress[\"customer_name\"] = finalData.customer_name;\n finalData[\"billing_address\"] = newAddress\n } else {\n finalData[\"billing_address_id\"] = parseInt(String(this.state.selectedAddress));\n }\n\n return finalData;\n }\n\n submitHandler(event) {\n event.preventDefault();\n\n // If user has chosen to pay from \"existing card\"\n // and \"existing billing address\",\n // so we can directly submit both payment and billing address id information to server\n if (!this.state.addNewCard && !this.state.canShowAddBillingAddress) {\n let paymentData = this.createPaymentDataForUser({});\n this.setState({ disableSubmitBtn: true });\n this.submitUsersPayment(paymentData, this.setPaymentStatus);\n return;\n }\n\n // If user is adding new card detail, validate that all\n // corresponding values are filled correctly\n if (this.state.addNewCard) {\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 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 if (this.state.customerName.trim().length === 0) {\n this.setState({ customerNameClass: 'is-invalid' });\n validation.cardHolderName.is_invalid = true;\n formIsInvalid = true;\n }\n\n this.setState({ validation: validation });\n\n if (formIsInvalid) {\n // skip tokenization request if any fields are invalid\n this.scrollToCardDetails();\n return;\n }\n }\n\n // If user is adding new billing address, validate that all\n // corresponding values are filled correctly\n if (this.state.canShowAddBillingAddress) {\n let isValidAddress = this.validateAddress();\n if (!isValidAddress) {\n this.scrollToBillingDetails();\n return;\n }\n }\n\n // If user has chosen to pay from \"existing card\",\n // but they are adding new billing address now\n // So we can directly submit the payment id information to server\n // but take the billing address details from the form filled by user\n if (!this.state.addNewCard && this.state.canShowAddBillingAddress) {\n let paymentData = this.createPaymentDataForUser({});\n this.setState({ disableSubmitBtn: true });\n this.submitUsersPayment(paymentData, this.setPaymentStatus);\n return;\n }\n\n // This case will happen, when user is adding new card detail\n // We will tokenize the user's card detail and then we will\n // use the tokenized card value along with the\n // newly added billing address or the chosen billing address which was already added\n this.state.hostedFields.tokenize(this.tokenizeFunction);\n }\n\n componentDidMount() {\n // Get plan details\n const bt_token = this.getBrainTreeAuthToken();\n this.setState({ braintreeAuthorizationToken: bt_token });\n\n let storedDetails = localStorage.getItem(\"qualdoPlanDetails\");\n if (this.props.location.state !== undefined) {\n let show_payment_details = this.props.location.state[\"show_payment_details\"];\n if (show_payment_details === true) {\n this.setPaymentPageDetails(this.props.location.state);\n }\n }\n\n if (storedDetails === undefined || storedDetails === null) {\n // Fetch available plan details from API\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 } else {\n this.setState({ planDetails: JSON.parse(storedDetails) })\n }\n setTimeout(() => {\n if (this.props.location.state !== undefined) {\n let show_payment_details = this.props.location.state[\"show_payment_details\"];\n if (show_payment_details === true) {\n this.setPaymentPageDetails(this.props.location.state);\n }\n }\n\n if (storedDetails === undefined || storedDetails === null) {\n // Fetch available plan details from API\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 } else {\n this.setState({ planDetails: JSON.parse(storedDetails) })\n }\n\n\n }, 500);\n\n this.getApi(\"get_payment_page_details\");\n this.showPaymentPage();\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\n setPaymentPageDetails(paymentPageDetail) {\n let currPlanDetails = paymentPageDetail.plan_details;\n if (currPlanDetails === undefined) {\n currPlanDetails = {};\n }\n let hideModelInfo = paymentPageDetail.hideModelInfo\n\n let auto_debit_status = currPlanDetails.auto_debit_status === 1;\n\n let availableCards = paymentPageDetail.available_cards;\n // let paymentCompletedForCycle = paymentPageDetail.payment_completed_for_cycle;\n let hasNoCardDetails = availableCards.length === 0;\n let billingAddresses = paymentPageDetail.billing_addresses;\n\n let nextBillingDate = '';\n let unitCostForData = paymentPageDetail.unit_cost_for_data;\n let addOnCostForData = paymentPageDetail.addon_data_usage_cost;\n let unitCostForModel = paymentPageDetail.unit_cost_for_model;\n let addOnCostForModel = paymentPageDetail.addon_model_cost;\n let cycleCost = paymentPageDetail.cycle_cost;\n let orderID = paymentPageDetail.order_id;\n let addOnCycles = paymentPageDetail.add_on_cycles;\n let remainingAmountFromCurrentPlan = paymentPageDetail.remaining_amount_from_current_plan;\n\n let hasNoBillingAddress = billingAddresses === undefined || billingAddresses.length === 0;\n this.setState({\n addNewCard: hasNoCardDetails,\n unitCostForData: unitCostForData,\n addOnCostForData: addOnCostForData,\n unitCostForModel: unitCostForModel,\n addOnCostForModel: addOnCostForModel,\n cycleCost: cycleCost,\n addOnCycles: addOnCycles,\n orderID: orderID,\n hideModelInfo: hideModelInfo,\n nextBillingDate: nextBillingDate,\n paymentPageLoading: false,\n autoDebit: auto_debit_status,\n remainingAmountFromCurrentPlan: remainingAmountFromCurrentPlan\n });\n\n if (hasNoCardDetails) {\n this.showPaymentPage();\n } else {\n let match = availableCards.filter(x => x.isPrimary);\n if (match.length === 1) {\n match = match[0];\n } else {\n match = availableCards[0];\n }\n this.setState({ selectedPayment: match.id });\n }\n\n if (!hasNoBillingAddress) {\n let match = billingAddresses.filter(x => x.isPrimary);\n if (match.length === 1) {\n match = match[0];\n } else {\n match = billingAddresses[0];\n }\n this.setState({ selectedAddress: match.billing_address_id });\n }\n\n this.setState({ availableCards: availableCards });\n this.setState({ billingAddresses: billingAddresses });\n this.setState({ canShowAddBillingAddress: hasNoBillingAddress });\n this.setState({ load: false });\n }\n\n setQualdoPlans(planInfo) {\n this.setState({ planDetails: planInfo })\n }\n\n showPaymentPage() {\n // This function which will render the braintree's payment components such as\n // Card number, CVV, expiration date fields will be rendered by braintree components\n let braintreeAuthorizationToken = this.getBrainTreeAuthToken();\n braintree.client.create({\n authorization: braintreeAuthorizationToken\n }, this.clientDidCreate);\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 prefill: this.state.previousExpiryDate\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 cardValidator(event) {\n const fieldName = event.emittedBy;\n let field = event.fields[fieldName];\n const currentFieldId = field.container.id;\n\n // Remove any previously applied error or warning classes\n let validation = this.state.validation;\n let isValidPreviously = validation[currentFieldId].is_valid;\n validation[currentFieldId].is_valid = false;\n validation[currentFieldId].is_invalid = false;\n\n if (field.isValid) {\n validation[currentFieldId].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 (isValidPreviously) {\n validation[currentFieldId].is_invalid = true;\n }\n } else {\n validation[currentFieldId].is_invalid = true;\n }\n\n this.setState({ validation: validation });\n }\n\n hostedFieldsDidCreate(err, hostedFields) {\n this.setState({ hostedFields: hostedFields });\n if (hostedFields !== undefined) {\n hostedFields.on('cardTypeChange', this.cardTypeProcessor);\n hostedFields.on('validityChange', this.cardValidator);\n }\n\n this.setState({ braintreeLoading: false });\n }\n\n tokenizeFunction(err, payload) {\n if (err) {\n this.props.enableSubmitButton(true);\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 let finalData = this.createPaymentDataForUser(details);\n this.setState({ disableSubmitBtn: true });\n this.submitUsersPayment(finalData, this.setPaymentStatus);\n }\n }\n\n addressUpdateHandler(event) {\n let address = this.state.newBillingAddress;\n address[event.target.name] = event.target.value;\n this.setState({ newBillingAddress: address });\n }\n\n makeDefaultBillingAddress(event) {\n let address = this.state.newBillingAddress;\n address[event.target.name] = !address.isPrimary;\n this.setState({ newBillingAddress: address });\n }\n\n getCardTypeImage() {\n return ();\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 handleCustomerName(event) {\n const customerName = event.target.value;\n this.setState({ customerName: customerName });\n let validation = this.state.validation;\n let cardHolderDetail = validation[\"cardHolderName\"];\n\n cardHolderDetail.is_valid = false;\n cardHolderDetail.is_invalid = false;\n\n if (!customerName.trim()) {\n cardHolderDetail.is_invalid = true;\n } else {\n cardHolderDetail.is_valid = true;\n }\n\n this.setState({ validation: validation });\n }\n\n makeCurrentAsDefaultPayment(event) {\n this.setState({ make_default: !this.state.make_default });\n }\n\n validateAddress() {\n let newAddress = this.state.newBillingAddress;\n let keys = [\"company_name\", \"address_line_1\", \"city\", \"state\", \"zip_code\", \"country\"];\n\n for (let i = 0; i <= (keys.length - 1); i++) {\n const currentKey = keys[i];\n const currentValue = newAddress[currentKey];\n if (currentValue === undefined || currentValue.length < 3) {\n return false\n }\n if (currentKey === \"zip_code\") {\n return RegExp(/^[0-9]{6}(?:-[0-9]{5})?$/).test(currentValue);\n }\n }\n return true\n }\n\n canEnableSubmitButton() {\n let enableSubmitButton = this.state.enableSubmitButton;\n\n if (!this.state.addNewCard && !this.state.canShowAddBillingAddress) {\n return enableSubmitButton;\n }\n if (this.state.addNewCard) {\n enableSubmitButton = this.hasValidCardParts();\n }\n\n if (this.state.canShowAddBillingAddress) {\n enableSubmitButton = this.validateAddress();\n }\n\n return enableSubmitButton;\n }\n\n saveNewAddress(name, value, isValid) {\n let newBillingAddress = this.state.newBillingAddress;\n newBillingAddress[name] = value\n this.setState({ newBillingAddress: newBillingAddress });\n }\n\n\n getSelectedPlan() {\n let planType = localStorage.getItem(\"qualdoPlan\");\n if (planType === undefined || planType === null) {\n planType = QualdoPlanVersions.STARTER;\n }\n return planType;\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 onClickHandler(e) {\n // localStorage.setItem(\"selectedPlan\", e);\n let selectedPlan = localStorage.getItem('selectedPlan');;\n this.setState({ selectedPlan: selectedPlan })\n let planprice = localStorage.getItem('annualplanprice');\n let plantitle = localStorage.getItem('annualplantitle');\n this.setState({ subscription: plantitle })\n this.setState({ plan_price: planprice })\n if (e === 'annually') {\n this.setState({ plan_price: localStorage.getItem('annualplanprice') })\n localStorage.setItem(\"selectedplanprice\", localStorage.getItem('annualplanprice'))\n localStorage.setItem('selectedPlan', e);\n\n }\n else {\n this.setState({ plan_price: localStorage.getItem('monthlyplanprice') })\n localStorage.setItem(\"selectedplanprice\", localStorage.getItem('monthlyplanprice'))\n localStorage.setItem('selectedPlan', e);\n }\n this.setState({ cycle: e , cycleCost:localStorage.getItem('selectedplanprice'),billingCycle:e})\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 planDetails = this.state.planDetails;\n let planType = this.getSelectedPlan();\n\n if (planDetails === undefined || planDetails == null) {\n return ();\n }\n let planCycleDetail = planDetails[this.state.billingCycle];\n if (planCycleDetail === undefined || planCycleDetail === null) {\n return ();\n }\n\n let currentDetail = planCycleDetail[planType];\n\n\n let nextBilling;\n let nextBillingDate;\n\n let cycle = this.state.billingCycle === QualdoPlanCycle.YEARLY ? DateParts.YEAR : DateParts.MONTH;\n nextBillingDate = addTime(new Date(), 1, cycle);\n\n const dateArray = nextBillingDate.toDateString().split(\" \");\n\n // Remove first part which represents weekday\n dateArray.shift();\n nextBilling = dateArray.join(\" \");\n\n let planName = `Qualdo ${currentDetail.title}`;\n\n const currencySymbol = getCurrencySymbol();\n\n\n\n\n return (\n <>\n {sessionToken === null ?\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 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 this.state.paymentSuccess\n ?\n \n :\n
\n
\n

You're almost there

\n

Engage More Leads with our {planName} Plan

\n
\n\n {this.state.deployment_details !== null ?\n\n
\n \n \n\n
\n
\n

\n \n 1\n \n Cloud Configuration Details\n

\n
\n
\n \n \n \n \n
Cloud Settings
\n

{this.state.deployment_details[0]['deployment_name']}

\n \n \n
Edition
\n
    \n
  • {this.state.deployment_details[0]['edition']}\n {/* Edition */}\n
  • \n
\n \n \n
Cloud
\n
\n
\n \n
\n
\n
{this.state.deployment_details[0]['cloud']}
\n

{this.state.deployment_details[0]['cloud_support']}

\n
\n
\n \n \n
Benefits
\n
    \n
  • Data Reliablity Monitoring
  • \n
  • Alerts
  • \n
  • Notifications
  • \n
  • Data Quality Metrics
  • \n
\n \n
\n
\n
\n
\n
\n\n
\n \n
\n \n
\n\n
\n\n
\n {\n this.state.addNewCard ?\n <>\n \n\n\n
\n \n \n \n \n
\n \n\n {\n this.state.braintreeLoading ?\n : ''\n }\n\n\n \n \n \n Name\n on\n card *\n \n \n Invalid\n cardholder\n name\n
\n \n \n \n\n \n \n Credit\n card\n number *\n \n \n Credit\n card\n number\n is\n required\n
\n {this.state.cardType === null\n ?\n '' :\n \n {this.getCardTypeImage()}\n
\n }\n \n\n \n Expiry *\n \n \n Please\n provide\n valid\n expiration\n date\n
\n \n\n \n CVV *\n \n \n Security\n code\n required\n
\n \n \n\n \n Would\n you like\n to\n make this\n card your\n primary\n payment\n method?\n \n \n {\n (this.state.availableCards !== null &&\n this.state.availableCards.length > 0)\n ?\n \n Choose\n from\n existing\n payment\n \n :\n ''\n }\n \n \n \n\n \n \n
\n\n\n \n :\n \n }\n\n \n\n
\n \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 Payment;","import React from 'react';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport BreadCrumb from './breadCrumb';\nimport NavigationHeader from './navigationHeader';\nimport Image from './image';\nimport OrderDetails from \"./paymentComponents/orderDetails\";\nimport PaymentDetails from \"./paymentComponents/paymentDetails\";\nimport BillingAddress from \"./paymentComponents/billingAddress\";\nimport Form from \"react-bootstrap/Form\";\nimport Load from \"./loadAction\";\nimport Button from \"react-bootstrap/Button\";\nimport { browserHistory } from 'react-router';\nimport { CopyRightsFooter } from './copyrights';\n\nimport {\n DateParts, PAYMENT_CARD_TYPES, PAYMENT_COMPONENT_STYLES, PAYMENT_FIELD_ID_MAP, QualdoEditions,\n QualdoPlanCycle, QualdoPlanVersions\n} from \"../utils/constant\";\nimport Card from \"react-bootstrap/Card\";\n\nimport {\n addTime, getCurrencySymbol,\n getCurrentPlanDetailOfUser,\n getQualdoPlanCycle,\n removeQualdoPlanCycle,\n toastObj,\n} from \"../utils/common_utils\";\nimport { getApi, getDeploymentPlanDetails, planDetails, getBrainTreeAuthToken, getPaymentDetailsTableData, submitUsersRenew } from \"../utils/event_handling\";\nimport Toast from \"react-bootstrap/Toast\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport PaymentSuccess from \"./paymentComponents/payment_success\";\nimport PaymentOptions from \"./paymentComponents/paymentOptions\";\nimport PaymentSectionHeader from \"./paymentComponents/paymentSectionHeader\";\nimport {faCheck } from '@fortawesome/free-solid-svg-icons';\n\nlet braintree = require('braintree-web');\n\nclass Renew extends React.Component {\n constructor(props) {\n super(props);\n this.cardDetailsRef = React.createRef();\n this.billingDetailsRef = React.createRef()\n // this.billingCycleHandler = this.billingCycleHandler.bind(this);\n this.saveNewAddress = this.saveNewAddress.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.clientDidCreate = this.clientDidCreate.bind(this);\n this.hostedFieldsDidCreate = this.hostedFieldsDidCreate.bind(this);\n this.showPaymentPage = this.showPaymentPage.bind(this);\n this.cardTypeProcessor = this.cardTypeProcessor.bind(this);\n this.cardValidator = this.cardValidator.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.getComponentClass = this.getComponentClass.bind(this);\n this.makeCurrentAsDefaultPayment = this.makeCurrentAsDefaultPayment.bind(this);\n this.toggleNewCardSection = this.toggleNewCardSection.bind(this);\n this.paymentSelectionHandler = this.paymentSelectionHandler.bind(this);\n this.addressSelectionHandler = this.addressSelectionHandler.bind(this);\n this.hasValidCardParts = this.hasValidCardParts.bind(this);\n // this.canEnableSubmitButton = this.canEnableSubmitButton.bind(this);\n this.setQualdoPlans = this.setQualdoPlans.bind(this);\n this.setPaymentPageDetails = this.setPaymentPageDetails.bind(this);\n this.createPaymentDataForUser = this.createPaymentDataForUser.bind(this);\n this.showAddBillingDetailsSection = this.showAddBillingDetailsSection.bind(this);\n this.hideAddBillingDetailsSection = this.hideAddBillingDetailsSection.bind(this);\n this.addressUpdateHandler = this.addressUpdateHandler.bind(this);\n this.makeDefaultBillingAddress = this.makeDefaultBillingAddress.bind(this);\n this.getSelectedPlan = this.getSelectedPlan.bind(this);\n this.getPaymentDetailsTableData = getPaymentDetailsTableData.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.setAutoDebitStatus = this.setAutoDebitStatus.bind(this);\n this.getApi = getApi.bind(this);\n this.getDeploymentPlanDetails = getDeploymentPlanDetails.bind(this);\n this.planDetails = planDetails.bind(this);\n this.getBrainTreeAuthToken = getBrainTreeAuthToken.bind(this);\n this.getQualdoPlanCycle = getQualdoPlanCycle.bind(this);\n this.submitUsersRenew = submitUsersRenew.bind(this);\n this.changePaymentPageDetails = this.changePaymentPageDetails.bind(this);\n \n if(localStorage.getItem('deploymentStatus') ===null || localStorage.getItem('deploymentStatus') === undefined){\n window.location.href = \"/\";\n }\n else if(localStorage.getItem('renew') !== 'true'){\n window.location.href = \"/dashboard\";\n }\n else if(localStorage.getItem('deploymentStatus') !== 'deployed' && localStorage.getItem('renew') !== 'true'){\n window.location.href = \"/deployment\";\n }\n\n localStorage.setItem(\"src_choose_plan\", \"true\");\n this.getApi(\"get_payment_page_details\");\n\n const srcPage = localStorage.getItem(\"src_choose_plan\");\n let srcIsChoosePlan = (srcPage !== undefined && srcPage !== null);\n let billingCycle;\n if (srcIsChoosePlan) {\n // Get plan cycle from local storage. This is chosen by user in choose plan page\n // We will use the cycle they have chosen in previous page\n billingCycle = this.getQualdoPlanCycle();\n } else {\n // User came to this page by clicking 'Pay Now' button.\n // So we will try to get the plan cycle from the user's plan detail\n let currentPlanDetail = getCurrentPlanDetailOfUser();\n\n if (currentPlanDetail !== null) {\n billingCycle = currentPlanDetail.plan_cycle;\n } else {\n // This case will not happen. We are adding it to prevent any error\n billingCycle = this.getQualdoPlanCycle();\n }\n }\n\n if (billingCycle === QualdoPlanCycle.TRIAL_14_DAYS) {\n billingCycle = QualdoPlanCycle.MONTHLY;\n }\n\n // localStorage.removeItem(\"src_choose_plan\");\n let expiryDate = undefined;\n let customerName = '';\n let make_default = false;\n const exCardDetails = this.props.exCardDetails;\n if (exCardDetails !== undefined && exCardDetails !== null) {\n expiryDate = exCardDetails.expires;\n customerName = exCardDetails.customerName;\n make_default = exCardDetails.make_default === 1;\n }\n\n this.state = {\n price: '',\n cycle: 'annually',\n deployment_details: null,\n error_message: null,\n showNotAllowedPopup: false,\n reRenderNavComponent: true,\n billingCycle: null,\n planDetails: {},\n addNewCard: false,\n canShowAddBillingAddress: false,\n hostedFields: null,\n orderID: null,\n toastStatus: false,\n errorOccurred: false,\n unitCostForData: 52,\n addOnCostForData: 0,\n unitCostForModel: 9,\n addOnCostForModel: 0,\n nextBillingDate: null,\n cycleCost: 0,\n addOnCycles: [],\n paymentPageLoading: false,\n cardType: null,\n customerNameClass: '',\n enableSubmitButton: true,\n braintreeAuthorizationToken: '',\n customerName: customerName,\n make_default: make_default,\n isEdit: this.props.isEdit !== undefined ? this.props.isEdit : false,\n previousExpiryDate: expiryDate,\n availableCards: null,\n billingAddresses: [],\n selectedPayment: null,\n selectedAddress: null,\n disableSubmitBtn: false,\n newBillingAddress: { \"isPrimary\": false },\n paymentSuccess: false,\n braintreeLoading: true,\n autoDebit: false,\n srcIsChoosePlan: srcIsChoosePlan,\n disableButton: false,\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 cardHolderName: {\n is_valid: false,\n is_invalid: false\n },\n }\n }\n this.getApi(\"get_user_payments_and_billing_history\")\n this.getDeploymentPlanDetails()\n // this.planDetails()\n this.getApi(\"get_payment_page_details\");\n }\n\n setAutoDebitStatus() {\n this.setState({ autoDebit: !this.state.autoDebit })\n }\n\n setPaymentStatus(paymentSuccess) {\n let reRenderNavComponent = this.state.reRenderNavComponent;\n\n if (paymentSuccess) {\n // Since payment is successful, we can remove qualdo plan cycle from local storage\n removeQualdoPlanCycle();\n }\n\n this.setState({\n paymentSuccess: paymentSuccess,\n reRenderNavComponent: reRenderNavComponent,\n disableSubmitBtn: false\n });\n }\n\n componentDidUpdate() {\n\n }\n\n showAddBillingDetailsSection() {\n this.setState({ canShowAddBillingAddress: true })\n }\n\n hideAddBillingDetailsSection() {\n\n this.setState({ canShowAddBillingAddress: false, newBillingAddress: { \"isPrimary\": false } })\n }\n\n closeToast() {\n this.setState({ toastStatus: false }, this.getData);\n }\n\n hasValidCardParts() {\n const validation = this.state.validation;\n return (validation.card_number.is_valid &&\n validation.cvv.is_valid &&\n validation.expiration_date.is_valid &&\n validation.cardHolderName.is_valid\n );\n }\n\n\n scrollToCardDetails() {\n window.scrollTo(0, this.cardDetailsRef.current.offsetTop)\n }\n\n scrollToBillingDetails() {\n window.scrollTo(10, this.billingDetailsRef.current.offsetTop)\n }\n\n toggleNewCardSection() {\n const newState = !this.state.addNewCard;\n this.setState({ addNewCard: newState });\n if (newState) {\n this.setState({ braintreeLoading: true });\n this.showPaymentPage();\n } else {\n let availableCards = this.state.availableCards;\n if (availableCards === null) {\n availableCards = [];\n }\n\n this.setState({ enableSubmitButton: availableCards.length > 0 });\n }\n }\n\n paymentSelectionHandler(status) {\n this.setState({ selectedPayment: status });\n }\n\n addressSelectionHandler(status) {\n this.setState({ selectedAddress: status });\n }\n\n createPaymentDataForUser(details) {\n let newCard = this.state.addNewCard;\n\n let finalData = {\n \"billing_cycle\": this.state.billingCycle,\n \"order_id\": this.state.orderID,\n \"auto_debit\": this.state.autoDebit,\n \"plan_type\": this.getSelectedPlan(),\n }\n\n if (newCard) {\n finalData[\"nonce\"] = details[\"nonce\"];\n finalData[\"customer_name\"] = details[\"customer_name\"];\n finalData[\"make_default\"] = details[\"make_default\"];\n } else {\n\n let paymentDetail = this.state.availableCards.filter(x => (\n String(x.id) === String(this.state.selectedPayment)))\n let paymentDetailElement = paymentDetail[0];\n finalData[\"payment_id\"] = parseInt(String(paymentDetailElement.id));\n finalData[\"customer_name\"] = paymentDetailElement.customerName;\n }\n\n let hasNewAddress = this.state.canShowAddBillingAddress;\n if (hasNewAddress) {\n let newAddress = this.state.newBillingAddress;\n newAddress[\"customer_name\"] = finalData.customer_name;\n finalData[\"billing_address\"] = newAddress\n } else {\n finalData[\"billing_address_id\"] = parseInt(String(this.state.selectedAddress));\n }\n\n return finalData;\n }\n\n submitHandler(event) {\n event.preventDefault();\n\n // If user has chosen to pay from \"existing card\"\n // and \"existing billing address\",\n // so we can directly submit both payment and billing address id information to server\n if (!this.state.addNewCard && !this.state.canShowAddBillingAddress) {\n let paymentData = this.createPaymentDataForUser({});\n this.setState({ disableSubmitBtn: true });\n this.submitUsersRenew(paymentData, this.setPaymentStatus);\n return;\n }\n\n // If user is adding new card detail, validate that all\n // corresponding values are filled correctly\n if (this.state.addNewCard) {\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 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 if (this.state.customerName.trim().length === 0) {\n this.setState({ customerNameClass: 'is-invalid' });\n validation.cardHolderName.is_invalid = true;\n formIsInvalid = true;\n }\n\n this.setState({ validation: validation });\n\n if (formIsInvalid) {\n // skip tokenization request if any fields are invalid\n this.scrollToCardDetails();\n return;\n }\n }\n\n // If user is adding new billing address, validate that all\n // corresponding values are filled correctly\n if (this.state.canShowAddBillingAddress) {\n let isValidAddress = this.validateAddress();\n if (!isValidAddress) {\n this.scrollToBillingDetails();\n return;\n }\n }\n\n // If user has chosen to pay from \"existing card\",\n // but they are adding new billing address now\n // So we can directly submit the payment id information to server\n // but take the billing address details from the form filled by user\n if (!this.state.addNewCard && this.state.canShowAddBillingAddress) {\n let paymentData = this.createPaymentDataForUser({});\n this.setState({ disableSubmitBtn: true });\n this.submitUsersRenew(paymentData, this.setPaymentStatus);\n return;\n }\n\n // This case will happen, when user is adding new card detail\n // We will tokenize the user's card detail and then we will\n // use the tokenized card value along with the\n // newly added billing address or the chosen billing address which was already added\n this.state.hostedFields.tokenize(this.tokenizeFunction);\n }\n\n componentDidMount() {\n // Get plan details\n const bt_token = this.getBrainTreeAuthToken();\n this.setState({ braintreeAuthorizationToken: bt_token });\n\n let storedDetails = localStorage.getItem(\"qualdoPlanDetails\");\n if (this.props.location.state !== undefined) {\n let show_payment_details = this.props.location.state[\"show_payment_details\"];\n if (show_payment_details === true) {\n this.setPaymentPageDetails(this.props.location.state);\n }\n }\n\n if (storedDetails === undefined || storedDetails === null) {\n // Fetch available plan details from API\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 } else {\n this.setState({ planDetails: JSON.parse(storedDetails) })\n }\n setTimeout(() => {\n if (this.props.location.state !== undefined) {\n let show_payment_details = this.props.location.state[\"show_payment_details\"];\n if (show_payment_details === true) {\n this.setPaymentPageDetails(this.props.location.state);\n }\n }\n\n if (storedDetails === undefined || storedDetails === null) {\n // Fetch available plan details from API\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 } else {\n this.setState({ planDetails: JSON.parse(storedDetails) })\n }\n\n\n }, 500);\n\n this.getApi(\"get_payment_page_details\");\n this.showPaymentPage();\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: '/renew', state: data })\n }\n\n\n setPaymentPageDetails(paymentPageDetail) {\n let currPlanDetails = paymentPageDetail.plan_details;\n if (currPlanDetails === undefined) {\n currPlanDetails = {};\n }\n let hideModelInfo = paymentPageDetail.hideModelInfo\n\n let auto_debit_status = currPlanDetails.auto_debit_status === 1;\n\n let availableCards = paymentPageDetail.available_cards;\n // let paymentCompletedForCycle = paymentPageDetail.payment_completed_for_cycle;\n let hasNoCardDetails = availableCards.length === 0;\n let billingAddresses = paymentPageDetail.billing_addresses;\n\n let nextBillingDate = '';\n let unitCostForData = paymentPageDetail.unit_cost_for_data;\n let addOnCostForData = paymentPageDetail.addon_data_usage_cost;\n let unitCostForModel = paymentPageDetail.unit_cost_for_model;\n let addOnCostForModel = paymentPageDetail.addon_model_cost;\n // let cycleCost = paymentPageDetail.cycle_cost;\n let orderID = paymentPageDetail.order_id;\n let addOnCycles = paymentPageDetail.add_on_cycles;\n let remainingAmountFromCurrentPlan = paymentPageDetail.remaining_amount_from_current_plan;\n\n let hasNoBillingAddress = billingAddresses === undefined || billingAddresses.length === 0;\n this.setState({\n addNewCard: hasNoCardDetails,\n unitCostForData: unitCostForData,\n addOnCostForData: addOnCostForData,\n unitCostForModel: unitCostForModel,\n addOnCostForModel: addOnCostForModel,\n // cycleCost: cycleCost,\n addOnCycles: addOnCycles,\n orderID: orderID,\n hideModelInfo: hideModelInfo,\n nextBillingDate: nextBillingDate,\n paymentPageLoading: false,\n autoDebit: auto_debit_status,\n remainingAmountFromCurrentPlan: remainingAmountFromCurrentPlan\n });\n\n if (hasNoCardDetails) {\n this.showPaymentPage();\n } else {\n let match = availableCards.filter(x => x.isPrimary);\n if (match.length === 1) {\n match = match[0];\n } else {\n match = availableCards[0];\n }\n this.setState({ selectedPayment: match.id });\n }\n\n if (!hasNoBillingAddress) {\n let match = billingAddresses.filter(x => x.isPrimary);\n if (match.length === 1) {\n match = match[0];\n } else {\n match = billingAddresses[0];\n }\n this.setState({ selectedAddress: match.billing_address_id });\n }\n\n this.setState({ availableCards: availableCards });\n this.setState({ billingAddresses: billingAddresses });\n this.setState({ canShowAddBillingAddress: hasNoBillingAddress });\n this.setState({ load: false });\n }\n\n setQualdoPlans(planInfo) {\n this.setState({ planDetails: planInfo })\n }\n\n showPaymentPage() {\n // This function which will render the braintree's payment components such as\n // Card number, CVV, expiration date fields will be rendered by braintree components\n let braintreeAuthorizationToken = this.getBrainTreeAuthToken();\n braintree.client.create({\n authorization: braintreeAuthorizationToken\n }, this.clientDidCreate);\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 prefill: this.state.previousExpiryDate\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 cardValidator(event) {\n const fieldName = event.emittedBy;\n let field = event.fields[fieldName];\n const currentFieldId = field.container.id;\n\n // Remove any previously applied error or warning classes\n let validation = this.state.validation;\n let isValidPreviously = validation[currentFieldId].is_valid;\n validation[currentFieldId].is_valid = false;\n validation[currentFieldId].is_invalid = false;\n\n if (field.isValid) {\n validation[currentFieldId].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 (isValidPreviously) {\n validation[currentFieldId].is_invalid = true;\n }\n } else {\n validation[currentFieldId].is_invalid = true;\n }\n\n this.setState({ validation: validation });\n }\n\n hostedFieldsDidCreate(err, hostedFields) {\n this.setState({ hostedFields: hostedFields });\n if (hostedFields !== undefined) {\n hostedFields.on('cardTypeChange', this.cardTypeProcessor);\n hostedFields.on('validityChange', this.cardValidator);\n }\n\n this.setState({ braintreeLoading: false });\n }\n\n tokenizeFunction(err, payload) {\n if (err) {\n this.props.enableSubmitButton(true);\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 let finalData = this.createPaymentDataForUser(details);\n this.setState({ disableSubmitBtn: true });\n\n this.submitUsersRenew(finalData, this.setPaymentStatus);\n }\n }\n\n addressUpdateHandler(event) {\n let address = this.state.newBillingAddress;\n address[event.target.name] = event.target.value;\n this.setState({ newBillingAddress: address });\n }\n\n makeDefaultBillingAddress(event) {\n let address = this.state.newBillingAddress;\n address[event.target.name] = !address.isPrimary;\n this.setState({ newBillingAddress: address });\n }\n\n getCardTypeImage() {\n return ();\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 handleCustomerName(event) {\n const customerName = event.target.value;\n this.setState({ customerName: customerName });\n let validation = this.state.validation;\n let cardHolderDetail = validation[\"cardHolderName\"];\n\n cardHolderDetail.is_valid = false;\n cardHolderDetail.is_invalid = false;\n\n if (!customerName.trim()) {\n cardHolderDetail.is_invalid = true;\n } else {\n cardHolderDetail.is_valid = true;\n }\n\n this.setState({ validation: validation });\n }\n\n makeCurrentAsDefaultPayment(event) {\n this.setState({ make_default: !this.state.make_default });\n }\n\n validateAddress() {\n let newAddress = this.state.newBillingAddress;\n let keys = [\"company_name\", \"address_line_1\", \"city\", \"state\", \"zip_code\", \"country\"];\n\n for (let i = 0; i <= (keys.length - 1); i++) {\n const currentKey = keys[i];\n const currentValue = newAddress[currentKey];\n if (currentValue === undefined || currentValue.length < 3) {\n return false\n }\n if (currentKey === \"zip_code\") {\n return RegExp(/^[0-9]{6}(?:-[0-9]{5})?$/).test(currentValue);\n }\n }\n return true\n }\n\n canEnableSubmitButton() {\n let enableSubmitButton = this.state.enableSubmitButton;\n\n if (!this.state.addNewCard && !this.state.canShowAddBillingAddress) {\n return enableSubmitButton;\n }\n if (this.state.addNewCard) {\n enableSubmitButton = this.hasValidCardParts();\n }\n\n if (this.state.canShowAddBillingAddress) {\n enableSubmitButton = this.validateAddress();\n }\n\n return enableSubmitButton;\n }\n\n saveNewAddress(name, value, isValid) {\n let newBillingAddress = this.state.newBillingAddress;\n newBillingAddress[name] = value\n this.setState({ newBillingAddress: newBillingAddress });\n }\n\n\n getSelectedPlan() {\n let planType = localStorage.getItem(\"qualdoPlan\");\n if (planType === undefined || planType === null) {\n planType = QualdoPlanVersions.STARTER;\n }\n return planType;\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 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 planDetails = this.state.planDetails;\n let planType = this.getSelectedPlan();\n\n if (planDetails === undefined || planDetails == null) {\n return ();\n }\n let planCycleDetail = planDetails[this.state.billingCycle];\n if (planCycleDetail === undefined || planCycleDetail === null) {\n return ();\n }\n\n let currentDetail = planCycleDetail[planType];\n let totalAmount;\n if (this.state.billingCycle === QualdoPlanCycle.YEARLY) {\n totalAmount = parseFloat(String(this.state.cycleCost));\n } else {\n totalAmount = parseFloat(String(this.state.cycleCost));\n }\n\n\n let nextBilling;\n let nextBillingDate;\n\n\n let cycle = this.state.billingCycle === QualdoPlanCycle.YEARLY ? DateParts.YEAR : DateParts.MONTH;\n nextBillingDate = addTime(new Date(), 1, cycle);\n\n const dateArray = nextBillingDate.toDateString().split(\" \");\n\n // Remove first part which represents weekday\n dateArray.shift();\n nextBilling = dateArray.join(\" \");\n\n let planName = `Qualdo ${currentDetail.title}`;\n\n const currencySymbol = getCurrencySymbol();\n\n return (\n <>\n {sessionToken === null ?\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 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 this.state.paymentSuccess\n ?\n \n :\n
\n
\n

You're almost there

\n

Engage More Leads with our {planName} Plan

\n
\n\n {this.state.deployment_details !== null ?\n\n
\n \n \n\n
\n
\n

\n \n 1\n \n Cloud Configuration Details\n

\n
\n
\n \n \n \n \n
Cloud Settings
\n

{this.state.deployment_details[0]['deployment_name']}

\n \n \n
Edition
\n
    \n
  • {this.state.deployment_details[0]['edition']}\n {/* Edition */}\n
  • \n
\n \n \n
Cloud
\n
\n
\n \n
\n
\n
{this.state.deployment_details[0]['cloud']}
\n

{this.state.deployment_details[0]['cloud_support']}

\n
\n
\n \n \n
Benefits
\n
    \n
  • Data Monitoring
  • \n
  • Alerts
  • \n
  • Notifications
  • \n
  • Visualizations
  • \n
\n \n
\n
\n
\n
\n
\n\n \n
\n {\n this.state.addNewCard ?\n <>\n \n\n\n
\n \n \n \n \n
\n \n\n {\n this.state.braintreeLoading ?\n : ''\n }\n\n\n \n \n \n Name\n on\n card *\n \n \n Invalid\n cardholder\n name\n
\n \n \n \n\n \n \n Credit\n card\n number *\n \n \n Credit\n card\n number\n is\n required\n
\n {this.state.cardType === null\n ?\n '' :\n \n {this.getCardTypeImage()}\n
\n }\n \n\n \n Expiry *\n \n \n Please\n provide\n valid\n expiration\n date\n
\n \n\n \n CVV *\n \n \n Security\n code\n required\n
\n \n \n\n \n Would\n you like\n to\n make this\n card your\n primary\n payment\n method?\n \n \n {\n (this.state.availableCards !== null &&\n this.state.availableCards.length > 0)\n ?\n \n Choose\n from\n existing\n payment\n \n :\n ''\n }\n \n \n \n\n \n \n
\n\n\n \n :\n \n }\n\n \n\n
\n \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 Renew;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Route, Router, browserHistory} from 'react-router';\nimport Home from './login/index';\nimport Deployment from './deploy/index';\nimport Signup from './signup/index';\nimport HomeDashboard from './dashboard/index'\nimport resetPasswordForm from './reset_password/index';\nimport setPasswordForm from './set_password/index';\nimport InitiateSetPassword from './set_password/components/initiateSetPassword';\nimport ForgotPassword from './login/components/forgotPassword';\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';\n\nimport { PersistGate } from 'redux-persist/integration/react';\nimport { Provider } from 'react-redux';\nimport { persistStore } from 'redux-persist';\nimport store from \"./redux/store\";\nimport { postMixpanel } from './mixpanel';\nimport Settings from './settings/index';\nimport Payment from \"./components/payment\"\nimport Renew from \"./components/renew\"\nimport { getRedirectionLinkToChangePassword } from \"./utils/common_utils\";\nimport { MANDATE_RESET_PASSWORD } from \"./utils/constant\";\nlet persistor = persistStore(store);\n\nconst PrivateRoute = ({\n component: Component,\n ...rest }) => {\n let search = window.location.search;\n if(search.length > 0){\n let params = new URLSearchParams(search);\n let resetPwdToken = params.get('token');\n localStorage.setItem('resetPwdToken', resetPwdToken);\n }\n \n let reset_password = localStorage.getItem(MANDATE_RESET_PASSWORD.Reset_Password)\n if(reset_password === MANDATE_RESET_PASSWORD.One && window.location.pathname !== \"/\") {\n let redirectionLink = getRedirectionLinkToChangePassword();\n browserHistory.push(redirectionLink);\n return;\n }\n }\n\nconst onBeforeLift = () => {\n let reset_password = localStorage.getItem(MANDATE_RESET_PASSWORD.Reset_Password);\n if(reset_password === MANDATE_RESET_PASSWORD.One && window.location.pathname !== \"/\") {\n let redirectionLink = getRedirectionLinkToChangePassword();\n browserHistory.push(redirectionLink);\n return;\n }\n if (reset_password === MANDATE_RESET_PASSWORD.One) {\n let redirectionLink = getRedirectionLinkToChangePassword();\n this.props.router.push(redirectionLink);\n }\n}\n\nconst routing = ( \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n {\n postMixpanel(\"Profile Page\");\n return ();\n }\n } navKey={\"account\"}/>\n \n \n \n \n \n
\n
\n
\n
\n)\nReactDOM.render(routing, document.getElementById('root'));\nserviceWorker.unregister();\n"],"sourceRoot":""}