You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7 lines
73 KiB
7 lines
73 KiB
!function(e){function webpackJsonpCallback(t){for(var s,i,l=t[0],n=t[1],c=t[2],d=0,u=[];d<l.length;d++)i=l[d],Object.prototype.hasOwnProperty.call(a,i)&&a[i]&&u.push(a[i][0]),a[i]=0;for(s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s]);for(o&&o(t);u.length;)u.shift()();return r.push.apply(r,c||[]),checkDeferredModules()}function checkDeferredModules(){for(var e,t=0;t<r.length;t++){for(var s=r[t],i=!0,l=1;l<s.length;l++){var o=s[l];0!==a[o]&&(i=!1)}i&&(r.splice(t--,1),e=__webpack_require__(__webpack_require__.s=s[0]))}return e}var t={},a={25:0},r=[];function __webpack_require__(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,__webpack_require__),r.l=!0,r.exports}__webpack_require__.e=function requireEnsure(){return Promise.resolve()},__webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,a){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(__webpack_require__.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)__webpack_require__.d(a,r,function(t){return e[t]}.bind(null,r));return a},__webpack_require__.n=function(e){var t=e&&e.__esModule?function getDefault(){return e.default}:function getModuleExports(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="";var s=window.webpackJsonp=window.webpackJsonp||[],i=s.push.bind(s);s.push=webpackJsonpCallback,s=s.slice();for(var l=0;l<s.length;l++)webpackJsonpCallback(s[l]);var o=i;r.push([7626,1,0]),checkDeferredModules()}({1052:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.retrieveMLToolkitApp=t.mlModelsURL=t.mlModelsBaseURL=t.getSeverityColorFromColorRangeTable=void 0;var r=a(265),s=a(264),i=a(107),l=a(52),o=t.mlModelsURL="app/".concat(r.SPLUNKBASE_APPS.Machine_Learning_Toolkit.name,"/models");t.mlModelsBaseURL=(0,l.createITSIURL)(o);t.retrieveMLToolkitApp=()=>(0,s.retrieveApp)(r.SPLUNKBASE_APPS.Machine_Learning_Toolkit.name);t.getSeverityColorFromColorRangeTable=function getSeverityColorFromColorRangeTable(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[(0,i.getSeverityColor)(6),(0,i.getSeverityColor)(5),(0,i.getSeverityColor)(4),(0,i.getSeverityColor)(3),(0,i.getSeverityColor)(2)],a=t.length-1,r=100/t.length,s=Math.floor(e/r);return 100===e?t[a]:s>a||s<0?(0,i.getSeverityColor)(-1):t[s]}},1838:function(e,t,a){"use strict";var r=a(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,i,l,o=r(a(16)),n=r(a(17)),c=r(a(21)),d=r(a(19)),u=r(a(20)),S=r(a(8)),p=r(a(7)),h=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=_getRequireWildcardCache(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=s?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r}(a(0)),f=r(a(3)),g=r(a(2)),_=r(a(64)),E=a(4),R=a(107),v=a(78),m=a(434);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?a:t})(e)}function _callSuper(e,t,a){return t=(0,d.default)(t),(0,c.default)(e,function _isNativeReflectConstruct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function _isNativeReflectConstruct(){return!!e}()}()?Reflect.construct(t,a||[],(0,d.default)(e).constructor):t.apply(e,a))}a(28);var A=(0,g.default)(_.default)(s||(s=(0,p.default)(["\n\tfont-size: 55px;\n\tmax-width: 300px;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\ttext-align: center;\n\tfont-weight: bold;\n\tmargin: auto;\n\tcolor: ",";\n"])),e=>e.color),T=g.default.div(i||(i=(0,p.default)(["\n\tbackground: ",";\n\tpadding: 84px 50px;\n"])),e=>e.background),I=g.default.div(l||(l=(0,p.default)(["\n\tmargin: 0px auto;\n"]))),O=function(e){function PredictiveAnalyticsWidget(e){var t;(0,o.default)(this,PredictiveAnalyticsWidget);for(var a=arguments.length,r=new Array(a>1?a-1:0),s=1;s<a;s++)r[s-1]=arguments[s];return(t=_callSuper(this,PredictiveAnalyticsWidget,[e,...r])).state={},t}return(0,u.default)(PredictiveAnalyticsWidget,e),(0,n.default)(PredictiveAnalyticsWidget,[{key:"render",value:function render(){var{color:e,widgetSeverity:t}=this.props,a="<div></div>",r=this.props.data;switch(r&&!isNaN(r)&&(r=parseFloat(this.props.data).toFixed(2)),this.props.searchProgress){case v.SEARCH_PROGRESS.NOT_STARTED:a=this.props.initialWidgetContent?m.SEARCH_PROGRESS_ELEMENTS.getSearchInfoElement(this.props.initialWidgetContent):m.SEARCH_PROGRESS_ELEMENTS.getSearchInfoElement();break;case v.SEARCH_PROGRESS.IN_PROGRESS:a=m.SEARCH_PROGRESS_ELEMENTS.getSearchInProgressElement();break;case v.SEARCH_PROGRESS.ERROR:a=h.default.createElement(I,null,m.SEARCH_PROGRESS_ELEMENTS.getErrorMessageElement(this.props.errorMessage));break;case v.SEARCH_PROGRESS.NO_RESULTS:a=m.SEARCH_PROGRESS_ELEMENTS.getNoResultsElement((0,E.gettext)("No results found."));break;case v.SEARCH_PROGRESS.COMPLETED:a=h.default.createElement(T,{background:t},h.default.createElement(A,{"data-test-itsi":"pa-widget-heading",level:4,color:e},String(r)))}return a}}])}(h.Component);(0,S.default)(O,"propTypes",{widgetSeverity:f.default.string,color:f.default.string,data:f.default.oneOfType([f.default.string,f.default.number]),searchProgress:f.default.number.isRequired,errorMessage:f.default.string,initialWidgetContent:f.default.string}),(0,S.default)(O,"defaultProps",{widgetSeverity:(0,R.getSeverityColor)(6),color:"#FFFFFF",data:"",errorMessage:"",initialWidgetContent:""});t.default=O;e.exports=t.default},434:function(e,t,a){"use strict";var r=a(1);Object.defineProperty(t,"__esModule",{value:!0}),t.VIZ_COLORS=t.TRAIN_TEST_WORKFLOW_STEP=t.TEST_DATA_SPLIT_MESSAGES=t.SERVICE_CONFIGURATION_TEXT=t.SEARCH_TYPE=t.SEARCH_PROGRESS_ELEMENTS=t.SEARCHES=t.RANK_IGNORED=t.PREDICTIVE_ANALYTICS_ALGORITHM_TYPE=t.PREDICTIVE_ANALYTICS_ALGORITHM_NAMES=t.PREDICTIVE_ANALYTICS_ALGORITHMS=t.PREDICTED_HEALTH_STATE_TOOLTIP=t.PREDICTED_HEALTH_SCORE_TOOLTIP=t.PLOTLINE_VIZ_COLOR=t.PANEL_TYPE=t.PANELS=t.NUM_ROOT_CAUSE_KPI=t.MODEL_MISSING_MESSAGES=t.MODEL_MISSING_MESSAGE=t.MATH_UTILS=t.LOOKUP_FILE_TYPES=t.LOAD_STATE=t.KPI_MODEL_TTL=t.KPI_FORECAST_TYPE=t.DEFAULT_SPLUNK_SEARCH_ERROR_MESSAGE=t.CLASSIFICATION_STATES=t.ALGO_TYPES=t.ALERT_ERROR_MESSAGES=void 0,t.classificationAlgorithmCategoryColor=function classificationAlgorithmCategoryColor(e){var t=(0,m.getSeverityColor)(6),a=N.filter(t=>t.type===e);(0,u.default)(a)||(t=a[0].color);return t},t.confirmationModalBody=function confirmationModalBody(){return n.default.createElement(f.default.Body,null,n.default.createElement(h.default,{"data-test-itsi":"cs-create-success-message",type:"success"},n.default.createElement("div",null,(0,_.gettext)("Correlation search successfully created. To view the search, go to the")+" ",n.default.createElement(p.default,{"data-test-itsi":"correlation-searches-lister-link",to:A.uiListerURL,openInNewContext:!0},(0,_.gettext)("Correlation Searches lister page.")))))},t.formatMissingModels=function formatMissingModels(e,t){return H.filter(t=>t.value in e).map((e,a)=>a===t-1?n.default.createElement("span",{key:e.value},n.default.createElement("b",null,e.label)," "+(0,_.gettext)("model")):a===t-2?n.default.createElement("span",{key:e.value},n.default.createElement("b",null,e.label)," "+(0,_.gettext)("model, and")+" "):n.default.createElement("span",{key:e.value},n.default.createElement("b",null,e.label)," "+(0,_.gettext)("model")+", "))},t.getAlgorithmLabelLabel=function getAlgorithmLabelLabel(e){switch(e){case D.LINEAR_REGRESSION.key:return D.LINEAR_REGRESSION.name;case D.RANDOM_FOREST.key:return D.RANDOM_FOREST.name;case D.GRADIENT_BOOSTING.key:return D.GRADIENT_BOOSTING.name;case D.LOGISTIC_REGRESSION.key:return D.LOGISTIC_REGRESSION.name;default:return(0,_.gettext)(e)}},t.getAlgorithmTypeFromModelId=getAlgorithmTypeFromModelId,t.getAvailableModelSet=function getAvailableModelSet(e){var t=new Set;return(0,d.default)(e.filter(e=>1===parseInt(e.avg)&&1===parseInt(e.ss)&&1===parseInt(e.worst)),e=>{t.add(e.name)}),t},t.getKpiIdFromFieldName=function getKpiIdFromFieldName(e){var t={rank:B,kpiId:""};if(!e.length)return t;var a=e.trim(),r=a.split("_");return a.startsWith(K.ACTUAL)||a.startsWith(K.PREDICTED)?{rank:r[1],kpiId:r.slice(2).join("_")}:t},t.getPredictionActualLabel=function getPredictionActualLabel(e){return(0,_.gettext)(e)},t.getPredictionErrorMessage=function getPredictionErrorMessage(e){if(e.includes("Model does not exist"))return G.PANEL;return e},t.getSavedAlgorithmModel=function getSavedAlgorithmModel(e,t){var a="";if(!e||!t)return a;var r=e.get("algorithms");if(r){var s=r.get(t);a=s.get("modelId")}return a},t.isValidAlgorithmModel=function isValidAlgorithmModel(e,t){var a=!1;if(!e||!t)return a;if(e&&t.length){t.filter(t=>t.detail.modelId===e).length&&(a=!0)}return a},t.isValidTimePeriod=function isValidTimePeriod(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"0",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"0"===e&&""===t||(""===e&&"0"!==t&&""!==t||("0"!==e&&""!==e&&""===t||!!e&&!!t))},t.loadMissingMLTKElement=function loadMissingMLTKElement(){return n.default.createElement(y,null,n.default.createElement(h.default,{"data-test-itsi":"install-mltk-error-message",type:"error"},n.default.createElement("div",null,(0,_.gettext)("You must install Splunk Machine Learning Toolkit to use Predictive Analytics. Download the MLTK")+" ",n.default.createElement(p.default,{"data-test-itsi":"pa-mltk-app-link",to:(0,R.getSplunkBaseDetailsURL)(E.SPLUNKBASE_APPS.Machine_Learning_Toolkit.id),openInNewContext:!0},(0,_.gettext)("here")))))},t.openInSearch=function openInSearch(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0",a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(!e)return;var r={q:e,earliest:t,latest:a},s=(0,I.uiEditURL)(r);window.open(s,"_blank")},t.outputCategoryColor=function outputCategoryColor(e){var t=[(0,m.getSeverityColor)(6),(0,m.getSeverityColor)(6),(0,m.getSeverityColor)(5),(0,m.getSeverityColor)(2)];return e>1||e<0?t[0]:(0,T.getSeverityColorFromColorRangeTable)(100*e,t)};var s,i,l,o=r(a(7)),n=r(a(0)),c=r(a(2)),d=r(a(321)),u=r(a(33)),S=r(a(344)),p=r(a(34)),h=r(a(24)),f=r(a(100)),g=r(a(75)),_=a(4),E=a(265),R=a(264),v=a(29),m=a(107),A=a(428),T=a(1052),I=a(137);a(28);var O=(0,c.default)(h.default)(s||(s=(0,o.default)(["\n\tmargin: 0 auto;\n\tposition: relative;\n"]))),P=(0,c.default)(g.default)(i||(i=(0,o.default)(["\n\tdisplay: inline-block;\n"]))),y=c.default.div(l||(l=(0,o.default)(["\n\tpadding: 10px 20px;\n"]))),C={width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},b={paddingLeft:"10px",display:"inline-block"},M={width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},L={},k={width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},w={},x=(t.VIZ_COLORS=["#000000","#006d9c","#4fa484","#ec9960","#5a4575","#b6c75a"],t.PLOTLINE_VIZ_COLOR="#a8a8a8",t.ALGO_TYPES={REGRESSION:1,CLASSIFICATION:2}),N=(t.LOOKUP_FILE_TYPES={CSV:".csv",MLMODEL:".mlmodel"},t.CLASSIFICATION_STATES=[{type:"Critical",label:(0,_.gettext)("Critical"),color:(0,m.getSeverityColor)(6)},{type:"Medium",label:(0,_.gettext)("Medium"),color:(0,m.getSeverityColor)(5)},{type:"Normal",label:(0,_.gettext)("Normal"),color:(0,m.getSeverityColor)(2)}]),F=(t.LOAD_STATE={FIRST_LOAD:0,NORMAL:1,MISSING:2,LOADING_MODELS:3},t.SEARCH_TYPE={HEALTHSCORE_SEARCH:"healthScore",KPI_OVER_TIME_SEARCH:"kpiOverTime"},t.DEFAULT_SPLUNK_SEARCH_ERROR_MESSAGE=(0,_.gettext)("An error occurred while executing the search. Refer to the Splunk logs for more information."),t.PANEL_TYPE={R2:1,RMSE:2,HEALTHSCORE_COMPARISON:3,RESIDUAL_ERROR:4,AVG_HEALTHSCORE:5,WORST_HEALTHSCORE:6,PRECISION:7,RECALL:8,ACCURACY:9,F1:10,CONFUSION:11,WORST_SEVERITY:12,AVG_SEVERITY:13}),D=(t.TRAIN_TEST_WORKFLOW_STEP={TRAIN_TO_TEST:0,TEST:1,IN_TRAIN:2},t.PREDICTIVE_ANALYTICS_ALGORITHM_TYPE=[{name:"Regression",value:x.REGRESSION,label:(0,_.gettext)("Regression"),labelLowerCase:(0,_.gettext)("regression")},{name:"Classification",value:x.CLASSIFICATION,label:(0,_.gettext)("Classification"),labelLowerCase:(0,_.gettext)("classification")}],t.PREDICTIVE_ANALYTICS_ALGORITHM_NAMES={LINEAR_REGRESSION:{key:"LinearRegression",name:(0,_.gettext)("Linear Regression")},RANDOM_FOREST:{key:"RandomForestRegressor",name:(0,_.gettext)("Random Forest Regressor")},GRADIENT_BOOSTING:{key:"GradientBoostingRegressor",name:(0,_.gettext)("Gradient Boosting Regressor")},LOGISTIC_REGRESSION:{key:"LogisticRegression",name:(0,_.gettext)("Logistic Regression")}}),H=t.PREDICTIVE_ANALYTICS_ALGORITHMS=[{value:D.LINEAR_REGRESSION.key,label:D.LINEAR_REGRESSION.name,type:x.REGRESSION},{value:D.RANDOM_FOREST.key,label:D.RANDOM_FOREST.name,type:x.REGRESSION},{value:D.GRADIENT_BOOSTING.key,label:D.GRADIENT_BOOSTING.name,type:x.REGRESSION},{value:D.LOGISTIC_REGRESSION.key,label:D.LOGISTIC_REGRESSION.name,type:x.CLASSIFICATION}],G=(t.ALERT_ERROR_MESSAGES={NEGATIVE:(0,_.gettext)("Input value cannot be less than 0."),MIN_ERROR:(0,_.gettext)("Minimum range cannot be greater than maximum value."),MAX_ERROR:(0,_.gettext)("Maximum range cannot be less than minimum value."),INTEGER:(0,_.gettext)("Input value must be a positive integer."),HUNDRED:(0,_.gettext)("Input value cannot be greater than 100."),ERROR_SAVING:(0,_.gettext)("Could not save correlation search."),EMPTY:(0,_.gettext)("Input value is required."),SEARCH_NAME:(0,_.gettext)("Search name is required."),EMPTY_TITLE:(0,_.gettext)("Notable event title is required.")},t.TEST_DATA_SPLIT_MESSAGES={TEST_ALL_DATA:(0,_.gettext)("All data within the selected time period will be used for testing."),TEST_NO_DATA:(0,_.gettext)("Do not change the time range while a model is being trained.")},t.MODEL_MISSING_MESSAGES={CREATION_DASHBOARD:" "+(0,_.gettext)("of this type has been deleted. If it was deleted by accident, retrain it above."),CREATION_DASHBOARD_PLURAL:" "+(0,_.gettext)("of this type have been deleted. If they were deleted by accident, retrain them above."),USAGE_DASHBOARD:" "+(0,_.gettext)("of this type has been deleted. If it was deleted by accident, retrain it in")+" ",USAGE_DASHBOARD_PLURAL:" "+(0,_.gettext)("of this type have been deleted. If they were deleted by accident, retrain them in")+" ",PANEL:(0,_.gettext)("One or more models in use has been deleted. If they were deleted by accident, retrain them again.")}),K=t.KPI_FORECAST_TYPE={ACTUAL:"actual_",PREDICTED:"predicted_"},U=t.PREDICTED_HEALTH_SCORE_TOOLTIP=(0,_.gettext)("Predicted health score in 20-30 minutes"),W=t.PREDICTED_HEALTH_STATE_TOOLTIP=(0,_.gettext)("Predicted health state in 20-30 minutes"),q=(t.MODEL_MISSING_MESSAGE=(0,_.gettext)("This model has been deleted. If it was deleted by accident,")+" ",t.SERVICE_CONFIGURATION_TEXT=(0,_.gettext)("Service Configuration"),t.PANELS=[{value:F.R2,label:"R^2",subtitle:"",description:(0,_.gettext)("R^2 is a measure of how well the model approximates the real data points. This value ranges from 0 to 1. In general, the higher the R^2, the better the prediction.")},{value:F.RMSE,label:"RMSE",subtitle:"",description:(0,_.gettext)("RMSE (Root Mean Squared Error) is a measure of the average difference between the predicted and observed service health scores. This value depends on the output distribution of the created model, but in general a smaller value is better.")},{value:F.HEALTHSCORE_COMPARISON,label:(0,_.gettext)("Actual vs. Predicted Service Health Score"),subtitle:"",description:(0,_.gettext)("A scatterplot of the actual versus predicted results. The dots represent the actual values graphed against the predicted values. If a predicted value equals the actual value, the dot will fall exactly on the line. The greater the distance from the line, the farther off the prediction. It is best if there are more dots closer to the line.")},{value:F.RESIDUAL_ERROR,label:(0,_.gettext)("Residual Error Histogram"),subtitle:"",description:(0,_.gettext)("A histogram of the residual error of each service health score during the test period. The residual error is the difference between the observed service health score and the estimated score predicted by the model. It is better if this graph has a normal (bell-shaped) distribution with values closer to 0.")},{value:F.AVG_HEALTHSCORE,label:(0,_.gettext)("Predicted Average Case Service Health Score"),subtitle:U,description:(0,_.gettext)("The average predicted health score within the prediction window.")},{value:F.WORST_HEALTHSCORE,label:(0,_.gettext)("Predicted Worst Case Service Health Score"),subtitle:U,description:(0,_.gettext)("The lowest possible predicted health score value within the prediction window.")},{value:F.WORST_SEVERITY,label:(0,_.gettext)("Predicted Worst Case Severity"),subtitle:W,description:(0,_.gettext)("The worst case predicted severity within the prediction window.")},{value:F.AVG_SEVERITY,label:(0,_.gettext)("Predicted Average Case Severity"),subtitle:W,description:(0,_.gettext)("The average predicted severity within the prediction window.")},{value:F.PRECISION,label:(0,_.gettext)("Precision"),subtitle:"",description:(0,_.gettext)("The percentage of time a model identifies only the relevant data points.")},{value:F.RECALL,label:(0,_.gettext)("Recall"),subtitle:"",description:(0,_.gettext)("The percentage of time the correct severity is predicted.")},{value:F.ACCURACY,label:(0,_.gettext)("Accuracy"),subtitle:"",description:(0,_.gettext)("The overall percentage of correct predictions.")},{value:F.F1,label:(0,_.gettext)("F1"),subtitle:"",description:(0,_.gettext)("The weighted average of precision and recall, based on a scale from zero to one. The closer the statistic is to one, the better the fit of the model.")},{value:F.CONFUSION,label:(0,_.gettext)("Classification Results (Confusion Matrix)"),subtitle:"",description:(0,_.gettext)("The number of actual results against predicted results. The diagonal numbers should be closer to 100%, while the other numbers should be closer to 0.")}],t.KPI_MODEL_TTL=864e6,t.NUM_ROOT_CAUSE_KPI=5),B=t.RANK_IGNORED=999;t.MATH_UTILS={isEvenNumber:function isEvenNumber(e){return e%2==0},isOddNumber:function isOddNumber(e){return e%2==1}},t.SEARCHES={currentModelName:"",getCreateModelSearch:function getCreateModelSearch(e,t,a,r){if(!(e&&t&&a&&(0,S.default)(r).length))return"";var s=t.split(/(?=[A-Z])/).join("_").toLowerCase();return"`train_and_test("+e+","+(a===x.REGRESSION?"health_score":"health_score_level")+","+s+",app:"+this.getAlgorithmModelName(e,t)+","+r+")`"},getSampleCreateModelSearch:function getSampleCreateModelSearch(e,t,a,r){if(!(e&&t&&a&&(0,S.default)(r).length))return"";var s="itsi_predict_sample_model_"+t,i="",l="";switch(t){case D.LINEAR_REGRESSION.key:l="| fit "+(i=t+" fit_intercept=true")+' next30m_avg_hs from\n"SS_*" "this_date_*" last30m_avg_hs now_avg_hs into '+s+"_avg\n| fit "+i+' next30m_min_hs from\n"SS_*" "this_date_*" last30m_min_hs now_min_hs into '+s+"_worst";break;case D.RANDOM_FOREST.key:case D.GRADIENT_BOOSTING.key:l="| fit "+(i=t)+' next30m_avg_hs from\n "SS_*" "this_date_*" last30m_avg_hs now_avg_hs into '+s+"_avg\n | fit "+i+' next30m_min_hs from\n "SS_*" "this_date_*" last30m_min_hs now_min_hs into '+s+"_worst";break;case D.LOGISTIC_REGRESSION.key:l="| fit "+(i=t+" fit_intercept=true")+' next30m_avg_hsl from\n"SS_*" "this_date_*" last30m_avg_hsl now_avg_hsl into '+s+"_avg\n| fit "+i+' next30m_max_hsl from\n"SS_*" "this_date_*" last30m_max_hsl now_max_hsl into '+s+"_worst"}return"`itsi_summary_with_dependence("+e+')`\n| timechart limit=0 span=5m avg(alert_value) as value_avg\nmin(alert_value) as value_min\nmax(alert_value) as value_max\navg(alert_value) as value_avg\nstdev(alert_value) as value_std\navg(alert_level) as level_avg\nmax(alert_level) as level_max\navg(eval(if(is_service_max_severity_event=1, alert_value, null))) as value_ms_avg\nmin(eval(if(is_service_max_severity_event=1, alert_value, null))) as value_ms_min\nmax(eval(if(is_service_max_severity_event=1, alert_value, null))) as value_ms_max by kpiid\n| rename "value_avg: SHKPI-'+e+'" as now_avg_hs,\n"value_min: SHKPI-'+e+'" as now_min_hs,\n"level_avg: SHKPI-'+e+'" as now_avg_hsl,\n"level_max: SHKPI-'+e+'" as now_max_hsl\n| search now_avg_hs=*\n| eval now_avg_hsl=case(now_avg_hsl>=5, "Critical", now_avg_hsl>=3, "Medium", true(), "Normal"),\nnow_max_hsl=case(now_max_hsl>=5, "Critical", now_max_hsl>=3, "Medium", true(), "Normal")\n| eval this_date_day = strftime(_time, "%w"),\nthis_date_hour = strftime(_time, "%H")\n| filldown\n| streamstats window=6 current=f\nfirst("now_avg_hs") as last30m_avg_hs,\nfirst("now_min_hs") as last30m_min_hs,\nfirst("now_avg_hsl") as last30m_avg_hsl,\nfirst("now_min_hsl") as last30m_min_hsl\n| reverse\n| streamstats window=6 current=f\nfirst("now_avg_hs") as next30m_avg_hs,\nfirst("now_min_hs") as next30m_min_hs,\nfirst("now_avg_hsl") as next30m_avg_hsl,\nfirst("now_max_hsl") as next30m_max_hsl\n| where _time < now() - 300\n| fit StandardScaler "value_*" with_mean=true with_std=true into '+s+'_ss\n| sample seed=1001 partitions=100 fieldname="pn"\n| search pn<'+r+"\n"+l},getMLTKModelLookFileNames:function getMLTKModelLookFileNames(e,t,a){var r="__mlspl_"+this.getAlgorithmModelName(e,t);return{avg:r+"_avg"+a,worst:r+"_worst"+a,ss:r+"_ss"+a}},getAlgorithmModelName:function getAlgorithmModelName(e,t){return void 0!==this.currentModelName&&""!==this.currentModelName||(this.currentModelName="itsi_predict_"+e.replace(/-/g,"_")+"_"+t+"_"+(0,v.generateUUID)()+"_"+(new Date).getTime()),this.currentModelName},resetModelName:function resetModelName(){this.currentModelName=""},getHealthScoreSearch:function getHealthScoreSearch(e){return"`health_score_histogram("+e+")`"},getKpiOverTimeSearch:function getKpiOverTimeSearch(e){return"`kpi_values_over_time("+e+")`"},getModelSearch:function getModelSearch(e){return"| `listmodels_by_type("+("itsi_predict_"+e.toLowerCase().split("-").join("_"))+")`"},getPredictHealthScoreSearch:function getPredictHealthScoreSearch(e,t,a){var r=getAlgorithmTypeFromModelId(t),s=a?"itsi_predict_one_number":"itsi_predict";return r.type===x.REGRESSION?"`"+s+"("+e+",health_score,app:"+t+")`":r.type===x.CLASSIFICATION?"`"+s+"("+e+",health_score_level,app:"+t+")`":""},getComparisonSearch:function getComparisonSearch(e,t,a){return"`predict_actual_vs_predicted("+e+", app:"+t+", "+a+")`"},getResidualSearch:function getResidualSearch(e,t,a){return"`predict_residual_error("+e+", app:"+t+", "+a+")`"},getWorstHealthScoreSearch:function getWorstHealthScoreSearch(e,t){return"`only_health_score_prediction_output("+e+", app:"+t+")`"},getWorstHealthSeveritySearch:function getWorstHealthSeveritySearch(e,t){return"`only_health_score_level_prediction_output("+e+", app:"+t+")`"},getConfusionMatrixSearch:function getConfusionMatrixSearch(e,t){return"`apply_model("+e+", app:"+t+')` | rename "next30m_avg_hsl" as actual_hsl, "predicted(next30m_avg_hsl)" as predict_hsl, next30m_worst_hsl as actual_mhsl "predicted(next30m_worst_hsl)" as predict_mhsl| fields actual_hsl, predict_hsl, actual_mhsl, predict_mhsl| appendpipe [fields actual_mhsl, predict_mhsl | rename actual_mhsl as actual_hsl, predict_mhsl as predict_hsl]| search actual_hsl!="" AND predict_hsl!="" | `itsi_confusionmatrix(actual_hsl,predict_hsl)`'},getKpiForecastsSearch:function getKpiForecastsSearch(e,t){return""===t&&(t=e.toLowerCase().split("-").join("_")),"`root_cause_analysis("+e+","+t+","+q+")`"},getKpiForecastsR2Search:function getKpiForecastsR2Search(e){return"| `r2_for_kpi_trends("+e+")`"},getKpiModelsCountsSearch:function getKpiModelsCountsSearch(e){var t=e.toLowerCase().split("-").join("_");return"| `itsi_check_model_count("+e+","+t+")`"},getTrainKpiTrendsSearchData:function getTrainKpiTrendsSearchData(e){var t=e.toLowerCase().split("-").join("_")+"_"+(0,v.generateUUID)()+"_"+(new Date).getTime(),a={};return a.search="`train_kpi_trends("+e+","+t+")`",a.suffix=t,a}};t.SEARCH_PROGRESS_ELEMENTS={getSearchInfoElement:function getSearchInfoElement(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,_.gettext)("Select a time range");return n.default.createElement(O,{"data-test-itsi":"pa-search-info-message",type:"info"},e)},getSearchInProgressElement:function getSearchInProgressElement(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,_.gettext)("Waiting for results..."),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:C,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b;return n.default.createElement("div",{style:t},n.default.createElement(P,{"data-test-itsi":"pa-utils-wait-spinner"}),n.default.createElement("div",{style:a},e))},getNoResultsElement:function getNoResultsElement(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,_.gettext)("No results found."),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:M,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:L;return n.default.createElement("div",{style:t},n.default.createElement(h.default,{"data-test-itsi":"pa-no-results-warning-message",type:"warning",style:a},e))},getErrorMessageElement:function getErrorMessageElement(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:k,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:w;return e||(e=(0,_.gettext)("An error occurred during the execution of the search.")),n.default.createElement("div",{style:t},n.default.createElement(h.default,{"data-test-itsi":"pa-error-message",type:"error",style:a},e))},getCancelledMessageElement:function getCancelledMessageElement(e){return e||(e=(0,_.gettext)("The search was cancelled.")),n.default.createElement(h.default,{"data-test-itsi":"pa-search-cancelled-message",type:"info"},e)}};function getAlgorithmTypeFromModelId(e){var t=H.filter(t=>e.includes(t.value));return 1===t.length?t[0]:{}}},7626:function(e,t,a){a.p=function getPath(){function getConfigValue(e,t){if(window.$C&&window.$C.hasOwnProperty(e))return window.$C[e];if(void 0!==t)return t;throw new Error("getConfigValue - "+e+" not set, no default provided")}return function make_url(){for(var e,t,a="",r=0,s=arguments.length;r<s;r++)(t=(e=arguments[r].toString()).length)>1&&"/"==e.charAt(t-1)&&(e=e.substring(0,t-1)),"/"!=e.charAt(0)?a+="/"+e:a+=e;if("/"!=a){var i=a.split("/"),l=i[1];if("static"==l||"modules"==l){var o=a.substring(l.length+2,a.length);a="/"+l,window.$C.BUILD_NUMBER&&(a+="/@"+window.$C.BUILD_NUMBER),window.$C.BUILD_PUSH_NUMBER&&(a+="."+window.$C.BUILD_PUSH_NUMBER),"app"==i[2]&&(a+=":"+getConfigValue("APP_BUILD",0)),a+="/"+o}}var n=getConfigValue("MRSPARKLE_ROOT_PATH","/"),c=getConfigValue("LOCALE","en-US"),d="/"+c+a;return""==n||"/"==n?d:n+d}("/static/app/itsi/build/pages")+"/"}();var r=a(1);a(653),a(825),a(830);var s=r(a(0)),i=a(4),l=a(334),o=a(52),n=r(a(47)),c=r(a(7627));a(241),(0,l.createLayout)(s.default.createElement(n.default,null,s.default.createElement(c.default,{id:"app-main-layout"})),{pageTitle:(0,o.buildPageTitle)((0,i.gettext)("Predictive Analytics"))})},7627:function(e,t,a){"use strict";var r=a(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,i,l,o,n,c,d,u,S,p,h,f,g,_,E=r(a(16)),R=r(a(17)),v=r(a(21)),m=r(a(19)),A=r(a(20)),T=r(a(8)),I=r(a(7)),O=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=_getRequireWildcardCache(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=s?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r}(a(0)),P=r(a(3)),y=r(a(486)),C=r(a(37)),b=r(a(217)),M=r(a(321)),L=r(a(802)),k=r(a(63)),w=r(a(132)),x=r(a(2)),N=r(a(624)),F=r(a(429)),D=r(a(44)),H=r(a(64)),G=r(a(34)),K=r(a(24)),U=r(a(66)),W=r(a(89)),q=r(a(91)),B=a(22),j=a(14),V=a(4),Y=a(73),J=a(29),$=a(108),z=a(136),X=a(87),Z=a(78),Q=a(67),ee=a(52),te=a(7628),ae=a(1052),re=a(57),se=a(109),ie=a(145),le=r(a(977)),oe=r(a(1744)),ne=r(a(288)),ce=r(a(7629)),de=r(a(7630)),ue=r(a(7631)),Se=a(434);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?a:t})(e)}function _callSuper(e,t,a){return t=(0,m.default)(t),(0,v.default)(e,function _isNativeReflectConstruct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function _isNativeReflectConstruct(){return!!e}()}()?Reflect.construct(t,a||[],(0,m.default)(e).constructor):t.apply(e,a))}a(28);var pe=(0,x.default)(F.default)(s||(s=(0,I.default)(["\n\tpadding-left: 0;\n\tpadding-right: 0;\n"]))),he=(0,x.default)(N.default)(i||(i=(0,I.default)(["\n\tcolor: ",";\n"])),B.variables.infoColor),fe=x.default.div(l||(l=(0,I.default)(["\n\tmargin: 0;\n\tpadding: 0;\n"]))),ge=x.default.div(o||(o=(0,I.default)(["\n\tpadding: 0 20px;\n"]))),_e=(0,x.default)(D.default)(n||(n=(0,I.default)(['\n\tbutton[data-test="clickable"] {\n\t\tmargin-bottom: 5px;\n\t}\n\tdisplay: inline-block;\n\tmargin-left: 20px;\n']))),Ee=(0,x.default)(D.default)(c||(c=(0,I.default)(['\n\tbutton[data-test="clickable"] {\n\t\tmargin-bottom: 5px;\n\t}\n\tdisplay: inline-block;\n']))),Re=(0,x.default)(U.default)(d||(d=(0,I.default)(["\n\tmax-width: 250px;\n"]))),ve=(0,x.default)(W.default)(u||(u=(0,I.default)(["\n\tpadding-left: 8px;\n"]))),me=(0,x.default)(G.default)(S||(S=(0,I.default)(["\n padding-left: 5px;\n"]))),Ae=(0,x.default)(H.default)(p||(p=(0,I.default)(["\n\tpadding: 20px 20px 10px 20px;\n\tmargin: 0;\n\tline-height: 24px;\n"]))),Te=x.default.div(h||(h=(0,I.default)(["\n\tpadding: 0 20px 10px 20px;\n\tmargin-bottom: 0;\n"]))),Ie=x.default.div(f||(f=(0,I.default)(["\n\tfont-size: 22px;\n"]))),Oe=(0,x.default)(K.default)(g||(g=(0,I.default)(["\n\tdisplay: inline-flex;\n\tmargin-left: 20px;\n\tvertical-align: bottom;\n"]))),Pe={width:350,maxWidth:350},ye={maxWidth:"250px"},Ce=x.default.span(_||(_=(0,I.default)(["\n\tdisplay: block;\n\twidth: 450px;\n"]))),be=O.default.createElement(Ce,null,(0,V.gettext)("The predictions and forecasts displayed in this dashboard are based on the underlying data that was passed to the algorithms for training purposes. Because historical accuracy is not a guarantee of future accuracy, the predictions might not always be 100% accurate. Make sure that a human validates the accuracy of the predictions before acting on them.")),Me={HEALTH_SCORE:{id:1,title:(0,V.gettext)("Predicted Service Health Score in 30 Minutes"),subtitle:"",tooltip:""},KPI_LIST:{id:2,title:(0,V.gettext)("Predicted Top 5 Contributing KPIs"),subtitle:"",tooltip:(0,V.gettext)("The top 5 KPIs possibly contributing to the service's predicted health score.")},KPI_FORECASTS:{id:3,title:(0,V.gettext)("KPI Predictions"),subtitle:"",tooltip:(0,V.gettext)("Shows the predicted top 5 contributing KPI values over the last 6 hours, and a forecast of how they are likely to change in the next 30 minutes.")}},Le=1,ke=2,we=3,xe="-2h@h",Ne="now",Fe="-6h@h",De="now",He=function(e){function PredictiveAnalyticsUsageMain(e){var t;return(0,E.default)(this,PredictiveAnalyticsUsageMain),t=_callSuper(this,PredictiveAnalyticsUsageMain,[e]),(0,T.default)(t,"preSetupComponentState",()=>{if(t.urlParams){var e=t.urlParams.service_id||"",a=t.urlParams.model_id||"",r={};a&&(r=(0,Se.getAlgorithmTypeFromModelId)(a));var s=(0,J.normalizeBoolean)(t.urlParams.auto_load),i=!!(0,L.default)(s)&&s;e&&(t.setState({serviceId:e,modelId:a,algorithm:r,autoLoad:i}),t.handleServiceFetch(e,a))}}),(0,T.default)(t,"getUrlParams",(e,a,r)=>e?{service_id:e,model_id:a,auto_load:r}:{service_id:t.state.serviceId,model_id:t.state.modelId,auto_load:t.state.autoLoad}),(0,T.default)(t,"updateUrlParams",(e,a,r)=>{var s=t.getUrlParams(e,a,r);(0,ee.updateURL)((0,te.uiEditURL)(s.service_id,s.model_id,s.auto_load))}),(0,T.default)(t,"handleOpenInSearch",e=>{switch(e){case Me.HEALTH_SCORE.id:(0,Se.openInSearch)(Se.SEARCHES.getPredictHealthScoreSearch(t.state.serviceId,t.state.modelId,!0),xe,Ne)}}),(0,T.default)(t,"getServiceDefinitionPredictiveAnalyticsUrl",()=>(0,se.uiEditURL)(t.state.serviceId,re.SERVICE_DEFINITION_TABS.PREDICTIVE_ANALYTICS)),(0,T.default)(t,"handleServiceFetch",(e,a)=>{var r=new ne.default({_key:e});t.setState({fetchingServiceDetails:!0}),r.fetch({wait:!0,success:()=>{var s=r.get("algorithms");t.setState({serviceTitle:r.get("title"),serviceModel:r,fetchingServiceDetails:!1,serviceErrorMessage:"",modelWarningMessage:"",modelErrorMessage:"",kpiModelSuffix:s.get("kpiModelSuffix")||""}),t.setupAlgorithmModelsFromServiceModel(e,r,a)},error:(a,r)=>{t.onServiceFetchError(e,r)}}),t.setState({predictiveAnalyticsLoadState:Se.LOAD_STATE.LOADING_MODELS})}),(0,T.default)(t,"onServiceFetchError",(e,a)=>{var r=(0,j.sprintf)((0,V.gettext)('Could not fetch the service with ID "%(objectID)s": %(errorStatus)s %(errorText)s'),{objectID:e,errorStatus:a.status,errorText:a.statusText});t.setState({fetchingService:!1,serviceErrorMessage:r,predictiveAnalyticsLoadState:Se.LOAD_STATE.NORMAL,serviceTitle:"",serviceModel:null,fetchingServiceDetails:!1,modelWarningMessage:""})}),(0,T.default)(t,"setupServiceSelectionMessageState",()=>{if(t.state.serviceErrorMessage)return O.default.createElement(K.default,{"data-test-itsi":"service-error-message",type:"error"},t.state.serviceErrorMessage)}),(0,T.default)(t,"onServiceSelection",e=>{e&&(t.cleanAllUsageSearchesJobSubscriptions(),t.setState({serviceId:e,modelId:"",algorithm:{},autoLoad:!1,serviceErrorMessage:"",modelWarningMessage:"",modelErrorMessage:"",availableModelData:null,showKpiListPanel:!1,showKpiForecastsPanel:!1}),t.updateUrlParams(e,"",!1),t.handleServiceFetch(e,""))}),(0,T.default)(t,"generateServiceSelectionControl",()=>{var e={},a=!0,r=(0,V.gettext)("Select a service"),s=O.default.createElement("div",null);return t.state.serviceId?t.state.fetchingServiceDetails?(a=!1,r=(0,V.gettext)("Populating services..."),s=t.generateServiceSelector(a,r,e)):(e={title:t.state.serviceTitle,_key:t.state.serviceId},s=t.generateServiceSelector(a,r,e)):s=t.generateServiceSelector(a,r,e),s}),(0,T.default)(t,"generateServiceSelector",(e,a,r)=>O.default.createElement(le.default,{initialValue:r,retrieveObjects:se.retrieveServices,disabled:!e,placeholder:a,handleSelectorChange:t.onServiceSelection,selectStyle:ye,selectMenuStyle:Pe,retrieveFullCount:se.retrieveServicesCount,dataTestItsi:"predictive-analytics-usage-fetching-selector-select"})),(0,T.default)(t,"generateModelSelectionControl",()=>{var e=!(!t.state.serviceId||!t.state.availableModelData),a=(0,V.gettext)("Select a model");return t.generateModelSelector(e,a)}),(0,T.default)(t,"generateModelSelector",(e,a)=>{var r=t.generateModelSelectionOptions(),s=!t.state.serviceId||!e;return O.default.createElement(Re,{"data-test-itsi":"pa-usage-main-select",disabled:s,placeholder:a,menuStyle:Pe,value:t.state.modelId,onChange:t.onModelSelection,filter:!0},r)}),(0,T.default)(t,"generateModelSelectionOptions",()=>{var e=t.generateAlgorithmsOptions(Se.ALGO_TYPES.REGRESSION),a=t.generateAlgorithmsOptions(Se.ALGO_TYPES.CLASSIFICATION);return(0,y.default)(e,a)}),(0,T.default)(t,"generateAlgorithmsOptions",e=>{var a=t.state.availableModelData,r=[];if(a){var s="algo-type-"+e,i="";e===Se.ALGO_TYPES.REGRESSION?i=(0,V.gettext)("REGRESSION"):e===Se.ALGO_TYPES.CLASSIFICATION&&(i=(0,V.gettext)("CLASSIFICATION"));var l=[O.default.createElement(U.default.Heading,{key:s},i)],o=Se.PREDICTIVE_ANALYTICS_ALGORITHMS.filter(t=>t.type===e).map(e=>e.value),n=(a=a.filter(e=>o.indexOf(e.type)>-1)).map(e=>t.createSelectControlOption(e));r=(0,y.default)(l,n)}return r}),(0,T.default)(t,"createSelectControlOption",e=>{var t=e.detail.recommended?(0,V.gettext)("Recommended"):"";return O.default.createElement(U.default.Option,{"data-test-itsi":"pa-usage-main-select-option",description:t,descriptionPosition:"right",label:e.type,value:e.detail.modelId,key:e.detail.modelId})}),(0,T.default)(t,"setupAlgorithmModelsFromServiceModel",(e,a,r)=>{var s=(0,V.gettext)("No models found for this service. Train and create a model in")+" ",i=(0,V.gettext)("Re-train existing models and/or create new models in")+" ",l=a.get("algorithms").toJSON(),o=[],n=[];(0,Z.cleanSearchJobSubscriptions)(t.listModelSearchJob,t.listModelResultSubscription),t.listModelSearchJob=q.default.create({id:(0,Z.createUniqueSearchId)("pa-usage-main-algo-models-search"),search:Se.SEARCHES.getModelSearch(e)},{app:(0,Y.getShortAppName)(!0)}),t.listModelResultSubscription=t.listModelSearchJob.getResults({offset:0,count:0}).subscribe({next:e=>{var a=(0,Se.getAvailableModelSet)(e.results);l&&(0,C.default)(l,(e,t)=>{if(e instanceof oe.default){var r=e.toJSON();r.modelId&&(a.has(r.modelId)?o.push({type:t,detail:r}):n[t]=!0)}});var i=Object.keys(n).length;o.length?(t.setState({availableModelData:o,modelWarningMessage:""}),r&&(0,Se.isValidAlgorithmModel)(r,o)&&(t.executeHealthScoreSearch(r),t.state.autoLoad&&t.showKpiListAndKpiForecastsPanels())):t.setState({modelWarningMessage:s}),i>0&&t.setState({modelWarningMessage:[(0,Se.formatMissingModels)(n,i),1===i?Se.MODEL_MISSING_MESSAGES.USAGE_DASHBOARD:Se.MODEL_MISSING_MESSAGES.USAGE_DASHBOARD_PLURAL]})},error:e=>{t.setState({modelErrorMessage:e.message,predictiveAnalyticsLoadState:Se.LOAD_STATE.NORMAL})},complete:()=>{t.setState({predictiveAnalyticsLoadState:Se.LOAD_STATE.NORMAL})}}),o.length?(t.setState({availableModelData:o,modelWarningMessage:i}),r&&(0,Se.isValidAlgorithmModel)(r,o)&&(t.executeHealthScoreSearch(r),t.state.autoLoad&&t.showKpiListAndKpiForecastsPanels())):t.setState({modelWarningMessage:s})}),(0,T.default)(t,"setupModelsSelectionMessageState",()=>{var e="",a="",r="";if(t.state.modelErrorMessage)e="error",a=t.state.modelErrorMessage,r=O.default.createElement(G.default,{"data-test-itsi":"pa-service-configurations-link",to:t.getServiceDefinitionPredictiveAnalyticsUrl(),openInNewContext:!0},(0,V.gettext)("Service Configurations"));else{if(!t.state.modelWarningMessage)return"";e=t.state.availableModelData?"info":"warning",a=t.state.modelWarningMessage,r=O.default.createElement(G.default,{"data-test-itsi":"pa-service-configuration-link",to:t.getServiceDefinitionPredictiveAnalyticsUrl(),openInNewContext:!0},Se.SERVICE_CONFIGURATION_TEXT)}return O.default.createElement(Oe,{"data-test-itsi":"pa-usage-main-message",type:e},a,r)}),(0,T.default)(t,"setupModelsMessageState",()=>t.state.predictiveAnalyticsLoadState===Se.LOAD_STATE.NORMAL&&t.state.showModelSelectionControl?t.setupModelsSelectionMessageState():t.state.predictiveAnalyticsLoadState===Se.LOAD_STATE.LOADING_MODELS?Se.SEARCH_PROGRESS_ELEMENTS.getSearchInProgressElement((0,V.gettext)("Loading models ..."),{display:"inline-block",marginLeft:"20px",verticalAlign:"center"}):""),(0,T.default)(t,"onModelSelection",(e,a)=>{var{value:r}=a,s=r;if(s&&s!==t.state.modelId){var i=(0,Se.getAlgorithmTypeFromModelId)(s);t.cleanAllUsageSearchesJobSubscriptions(),t.setState({modelId:s,algorithm:i,autoLoad:!1,showKpiListPanel:!1,showKpiForecastsPanel:!1}),t.updateUrlParams(t.state.serviceId,s,!1),t.executeHealthScoreSearch(s)}}),(0,T.default)(t,"panelShouldRender",e=>{var a=!1;switch(e){case Me.HEALTH_SCORE.id:a=t.state.showHealthScorePanel;break;case Me.KPI_LIST.id:a=t.state.showKpiListPanel&&t.state.serviceId&&t.state.modelId;break;case Me.KPI_FORECASTS.id:a=t.state.showKpiForecastsPanel&&t.state.serviceId&&t.state.modelId}return a}),(0,T.default)(t,"cleanUsageSearchJobSubscriptions",e=>{var a={};switch(e){case Le:t.healthScoreSearchJob&&t.healthScoreSearchResultSubscription&&((0,Z.cleanSearchJobSubscriptions)(t.healthScoreSearchJob,t.healthScoreSearchResultSubscription),t.healthScoreSearchJob=null,t.healthScoreSearchResultSubscription=null,(0,w.default)(a,{healthScoreSearchProgress:Z.SEARCH_PROGRESS.NOT_STARTED,healthScoreSearchResults:"",healthScoreSearchErrorMessage:""}));break;case ke:t.kpiForecastsSearchJob&&t.kpiForecastsSearchResultSubscription&&((0,Z.cleanSearchJobSubscriptions)(t.kpiForecastsSearchJob,t.kpiForecastsSearchResultSubscription),t.kpiForecastsSearchJob=null,t.kpiForecastsSearchResultSubscription=null,(0,w.default)(a,{kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.NOT_STARTED,kpiForecastsSearchResults:null,kpiForecastsSearchErrorMessage:""}));break;case we:t.kpiForecastsR2SearchJob&&t.kpiForecastsR2SearchResultSubscription&&((0,Z.cleanSearchJobSubscriptions)(t.kpiForecastsR2SearchJob,t.kpiForecastsR2SearchResultSubscription),t.kpiForecastsR2SearchJob=null,t.kpiForecastsR2SearchResultSubscription=null,(0,w.default)(a,{kpiForecastsR2SearchProgress:Z.SEARCH_PROGRESS.NOT_STARTED,kpiForecastsR2SearchResults:null,kpiForecastsR2SearchErrorMessage:""}))}(0,k.default)(a).length&&t.setState(a)}),(0,T.default)(t,"cleanAllUsageSearchesJobSubscriptions",()=>{t.cleanUsageSearchJobSubscriptions(Le),t.cleanUsageSearchJobSubscriptions(ke),t.cleanUsageSearchJobSubscriptions(we)}),(0,T.default)(t,"containsRequiredResults",(e,t)=>{var a=!1;if(!t)return a;if(t.results&&t.results.length){var r=t.results[0];(e===Se.ALGO_TYPES.REGRESSION&&r.health_score||e===Se.ALGO_TYPES.CLASSIFICATION&&r.health_score_level)&&(a=!0)}return a}),(0,T.default)(t,"formattedHealthScoreSearchResults",e=>{var a="",r=e.results[0];return t.state.algorithm.type===Se.ALGO_TYPES.REGRESSION?a=parseFloat(r.health_score):t.state.algorithm.type===Se.ALGO_TYPES.CLASSIFICATION&&(a=(0,z.getSeverityLabel)(r.health_score_level)),a}),(0,T.default)(t,"getSearchErrorMessage",e=>e.toLowerCase().includes("model does not exist")?O.default.createElement("div",null,Se.MODEL_MISSING_MESSAGES.USAGE_DASHBOARD,O.default.createElement(G.default,{"data-test-itsi":"pa-service-configuration-link",to:t.getServiceDefinitionPredictiveAnalyticsUrl(),openInNewContext:!0},Se.SERVICE_CONFIGURATION_TEXT)):e),(0,T.default)(t,"executeHealthScoreSearch",e=>{t.cleanUsageSearchJobSubscriptions(Le),t.healthScoreSearchJob=q.default.create({id:(0,Z.createUniqueSearchId)("pa-usage-main-execute-health-score-search"),search:Se.SEARCHES.getPredictHealthScoreSearch(t.state.serviceId,e,!0),earliest_time:xe,latest_time:Ne},{app:(0,Y.getShortAppName)(!0)}),t.healthScoreSearchResultSubscription=t.healthScoreSearchJob.getResults({offset:0,count:0}).subscribe({next:e=>{e.fields&&t.containsRequiredResults(t.state.algorithm.type,e)?t.setState({healthScoreSearchProgress:Z.SEARCH_PROGRESS.COMPLETED,healthScoreSearchResults:t.formattedHealthScoreSearchResults(e)}):t.setState({healthScoreSearchProgress:Z.SEARCH_PROGRESS.NO_RESULTS})},error:e=>{t.setState({healthScoreSearchProgress:Z.SEARCH_PROGRESS.ERROR,healthScoreSearchErrorMessage:t.getSearchErrorMessage(e.message)})},complete:()=>{}}),t.setState({healthScoreSearchProgress:Z.SEARCH_PROGRESS.IN_PROGRESS})}),(0,T.default)(t,"getFilteredKpiList",(e,a)=>{var r=[],s=t.state.serviceModel.get("kpis").map(e=>({_key:e.get("_key"),type:e.get("type"),title:e.get("title"),serviceId:e.get("service_id")||t.state.serviceId,serviceTitle:e.get("service_title")||t.state.serviceTitle}));r=a&&a.length?(0,y.default)(s,a):s;var i={},l=e.filter(e=>"_time"!==e.name).map(e=>(0,Se.getKpiIdFromFieldName)(e.name));return(0,M.default)(l,e=>{e.kpiId in i||(i[e.kpiId]=parseInt(e.rank))}),{rankLookup:i,filteredKpiList:r.filter(e=>e._key in i).sort((e,t)=>i[e._key]-i[t._key])}}),(0,T.default)(t,"formattedKpiForecastsSearchResults",(e,a)=>{var r={fields:e.fields,results:e.results,formattedKpisWithData:[],futureTimestampStartValue:null};if(e.results&&e.results.length){var s=e.fields,i=e.results,l=t.getFilteredKpiList(s,a);r.formattedKpisWithData=l.filteredKpiList.map(e=>{var t=e._key;return{_key:t,type:e.type,title:e.title,serviceId:e.serviceId,serviceTitle:e.serviceTitle,timeField:"_time",forecastFields:{actual:"".concat(Se.KPI_FORECAST_TYPE.ACTUAL).concat(l.rankLookup[t],"_").concat(t),predicted:"".concat(Se.KPI_FORECAST_TYPE.PREDICTED).concat(l.rankLookup[t],"_").concat(t)},forecastData:{actual:[],predicted:[]}}});var o=new Set;(0,M.default)(i,e=>{var t=1e3*(0,Q.convertIsoStringToEpoch)(e._time,!0);(0,M.default)(r.formattedKpisWithData,a=>{if(a.forecastFields.actual in e&&e[a.forecastFields.actual]&&!isNaN(e[a.forecastFields.actual])){var s=parseFloat(e[a.forecastFields.actual]);if(a.forecastData.actual.push([t,s]),r.futureTimestampStartValue||(r.futureTimestampStartValue=t),!o.has(a.forecastFields.actual)){var i=parseFloat(e[a.forecastFields.predicted]);a.forecastData.predicted.push([t,i]),o.add(a.forecastFields.actual)}a.forecastData.predicted.push([t,null])}else if(a.forecastData.actual.push([t,null]),a.forecastFields.predicted in e){var l=parseFloat(e[a.forecastFields.predicted]);a.forecastData.predicted.push([t,l])}else a.forecastData.predicted.push([t,null])})})}return r}),(0,T.default)(t,"filteredKpiListSearchResults",(e,a)=>{var r=[],s=t.state.serviceModel.get("kpis").map(e=>({_key:e.get("_key"),type:e.get("type"),title:e.get("title"),serviceId:e.get("service_id")||t.state.serviceId,serviceTitle:e.get("service_title")||t.state.serviceTitle}));return e.results&&e.results.length&&(r=t.getFilteredKpiList(e.fields,a).filteredKpiList.concat(s.filter(e=>(0,ie.isServiceHealthScoreKpiId)(e._key))).map(e=>({_key:e._key,type:e.type,title:e.title,serviceId:e.serviceId,serviceTitle:e.serviceTitle}))),r}),(0,T.default)(t,"handleKpiForecastsSearchResults",e=>{var a=t.filteredKpiListSearchResults(e),r=t.state.serviceModel.get("services_depends_on"),s=[];if(a.length<6&&r.length){var i=r.map(e=>e.serviceid),l={count:0,offset:0,fields:"_key,title,kpis._key,kpis.type,kpis.title",filter:(0,X.createFilterString)("_key",i,"$or")};(0,se.retrieveServices)(l).then(e=>e.data).then(a=>{a&&a.length&&(s=(0,b.default)(a.map(e=>e.kpis.map(t=>({_key:t._key,type:t.type,title:t.title,serviceId:e._key,serviceTitle:e.title}))))),t.setState({kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.COMPLETED,kpiForecastsSearchResults:t.formattedKpiForecastsSearchResults(e,s),searchResultsForKpiList:t.filteredKpiListSearchResults(e,s),serviceErrorMessage:""})}).catch(a=>{var r=(0,j.sprintf)((0,V.gettext)("Failed to fetch dependent services for the selected service with error message: %(errorStatus)s %(errorText)s"),{errorStatus:a.status,errorText:a.statusText});t.setState({kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.COMPLETED,kpiForecastsSearchResults:t.formattedKpiForecastsSearchResults(e,s),searchResultsForKpiList:t.filteredKpiListSearchResults(e,s),serviceErrorMessage:r})})}else t.setState({kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.COMPLETED,kpiForecastsSearchResults:t.formattedKpiForecastsSearchResults(e,s),searchResultsForKpiList:a})}),(0,T.default)(t,"executeKpiForecastsSearch",()=>{t.cleanUsageSearchJobSubscriptions(ke),t.kpiForecastsSearchJob=q.default.create({id:(0,Z.createUniqueSearchId)("pa-usage-main-kpi-forecasts-search"),search:Se.SEARCHES.getKpiForecastsSearch(t.state.serviceId,t.state.kpiModelSuffix),earliest_time:Fe,latest_time:De},{app:(0,Y.getShortAppName)(!0)}),t.kpiForecastsSearchResultSubscription=t.kpiForecastsSearchJob.getResults({offset:0,count:0}).subscribe({next:e=>{e.fields?t.handleKpiForecastsSearchResults(e):t.setState({kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.NO_RESULTS})},error:e=>{var a=e.message;a.includes("No valid fields to fit or apply model to")?a=(0,V.gettext)("Error while analyzing data. The service does not have enough data or valid machine learning models for prediction. Try retraining the model."):a.includes("Error in 'map':")&&(a=(0,V.gettext)("Error while predicting KPI trends. Try again, or check the logs for details.")),t.setState({kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.ERROR,kpiForecastsSearchErrorMessage:a})},complete:()=>{t.executeKpiForecastsR2Search()}}),t.setState({kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.IN_PROGRESS})}),(0,T.default)(t,"executeKpiForecastsR2Search",()=>{t.cleanUsageSearchJobSubscriptions(we),t.kpiForecastsR2SearchJob=q.default.create({id:(0,Z.createUniqueSearchId)("pa-usage-main-kpi-forecasts-r2-search"),search:Se.SEARCHES.getKpiForecastsR2Search(t.state.kpiModelSuffix),earliest_time:Fe,latest_time:De},{app:(0,Y.getShortAppName)(!0)}),t.kpiForecastsR2SearchResultSubscription=t.kpiForecastsR2SearchJob.getResults({offset:0,count:0}).subscribe({next:e=>{e.fields?t.setState({kpiForecastsR2SearchProgress:Z.SEARCH_PROGRESS.COMPLETED,kpiForecastsR2SearchResults:e.results}):t.setState({kpiForecastsR2SearchProgress:Z.SEARCH_PROGRESS.NO_RESULTS})},error:e=>{t.setState({kpiForecastsR2SearchProgress:Z.SEARCH_PROGRESS.ERROR,kpiForecastsR2SearchErrorMessage:e.message})},complete:()=>{}}),t.setState({kpiForecastsR2SearchProgress:Z.SEARCH_PROGRESS.IN_PROGRESS})}),(0,T.default)(t,"showKpiListAndKpiForecastsPanels",()=>{t.executeKpiForecastsSearch(),t.setState({showKpiListPanel:!0,showKpiForecastsPanel:!0})}),(0,T.default)(t,"generateServiceHealthScorePanel",()=>{if(t.panelShouldRender(Me.HEALTH_SCORE.id))return O.default.createElement(ce.default,{panelInfo:Me.HEALTH_SCORE,selectedAlgorithm:t.state.algorithm,searchProgress:t.state.healthScoreSearchProgress,searchResults:t.state.healthScoreSearchResults,searchErrorMessage:t.state.healthScoreSearchErrorMessage,openInSearch:t.handleOpenInSearch,causeAnalysisClickHandler:t.showKpiListAndKpiForecastsPanels,kpiListPanelIsVisible:t.state.showKpiListPanel,kpiForecastsPanelIsVisible:t.state.showKpiForecastsPanel,fillCard:!0})}),(0,T.default)(t,"generateServiceKpiListPanel",()=>{if(t.panelShouldRender(Me.KPI_LIST.id))return O.default.createElement(de.default,{panelInfo:Me.KPI_LIST,serviceId:t.state.serviceId,serviceTitle:t.state.serviceTitle,searchProgress:t.state.kpiForecastsSearchProgress,searchResults:t.state.searchResultsForKpiList,searchErrorMessage:t.state.kpiForecastsSearchErrorMessage})}),(0,T.default)(t,"generateServiceKpiForecastsPanel",()=>{if(t.panelShouldRender(Me.KPI_FORECASTS.id))return O.default.createElement(ue.default,{panelInfo:Me.KPI_FORECASTS,serviceId:t.state.serviceId,serviceTitle:t.state.serviceTitle,kpiForecastsSearchProgress:t.state.kpiForecastsSearchProgress,kpiForecastsSearchResults:t.state.kpiForecastsSearchResults,kpiForecastsSearchErrorMessage:t.state.kpiForecastsSearchErrorMessage,R2SearchProgress:t.state.kpiForecastsR2SearchProgress,R2SearchResults:t.state.kpiForecastsR2SearchResults,R2SearchErrorMessage:t.state.kpiForecastsR2SearchErrorMessage})}),(0,T.default)(t,"renderUsageState",()=>{var e=O.default.createElement("div",null);switch(t.state.predictiveAnalyticsLoadState){case Se.LOAD_STATE.FIRST_LOAD:break;case Se.LOAD_STATE.NORMAL:case Se.LOAD_STATE.LOADING_MODELS:e=O.default.createElement(ge,{"data-test-itsi":"usage-dashboard-content"},t.state.showServiceSelectionControl&&O.default.createElement(Ee,{"data-test-itsi":"predictive-analytics-service-health-score",label:(0,V.gettext)("Service"),tooltip:(0,V.gettext)("The service you want to predict a health score for."),labelPosition:"top"},t.generateServiceSelectionControl()),t.state.showModelSelectionControl&&O.default.createElement(_e,{"data-test-itsi":"predictive-analytics-model-health-score",label:(0,V.gettext)("Model"),tooltip:(0,V.gettext)("The model you want to use to predict a service health score."),labelPosition:"top"},t.generateModelSelectionControl()),t.state.showServiceSelectionControl&&t.setupServiceSelectionMessageState(),t.setupModelsMessageState(),(t.state.showHealthScorePanel||t.state.showKpiListPanel)&&O.default.createElement(pe,{"data-test-itsi":"pa-usage-main-health-score-card-layout"},t.generateServiceHealthScorePanel(),t.generateServiceKpiListPanel()),t.state.showKpiForecastsPanel&&O.default.createElement(pe,{"data-test-itsi":"pa-usage-main-kpi-forecast-card-layout"},t.generateServiceKpiForecastsPanel()));break;case Se.LOAD_STATE.MISSING:e=(0,Se.loadMissingMLTKElement)()}return e}),t.checkMLTKPromise=(0,ae.retrieveMLToolkitApp)(),t.state={autoLoad:!1,serviceId:"",serviceTitle:"",serviceModel:null,fetchingServiceDetails:!1,serviceErrorMessage:"",modelId:"",modelWarningMessage:"",modelErrorMessage:"",availableModelData:null,algorithm:{},showServiceSelectionControl:!0,showModelSelectionControl:!0,showHealthScorePanel:!0,healthScoreSearchProgress:Z.SEARCH_PROGRESS.NOT_STARTED,healthScoreSearchErrorMessage:"",healthScoreSearchResults:"",showKpiListPanel:!1,searchResultsForKpiList:null,showKpiForecastsPanel:!1,kpiForecastsSearchProgress:Z.SEARCH_PROGRESS.NOT_STARTED,kpiForecastsSearchErrorMessage:"",kpiForecastsSearchResults:null,kpiForecastsR2SearchProgress:Z.SEARCH_PROGRESS.NOT_STARTED,kpiForecastsR2SearchErrorMessage:"",kpiForecastsR2SearchResults:null,predictiveAnalyticsLoadState:Se.LOAD_STATE.FIRST_LOAD,kpiModelSuffix:""},t.urlParams=(0,ee.queryStringToProp)(),t.healthScoreSearchJob=null,t.healthScoreSearchResultSubscription=null,t.kpiForecastsSearchJob=null,t.kpiForecastsSearchResultSubscription=null,t.kpiForecastsR2SearchJob=null,t.kpiForecastsR2SearchResultSubscription=null,t}return(0,A.default)(PredictiveAnalyticsUsageMain,e),(0,R.default)(PredictiveAnalyticsUsageMain,[{key:"componentWillUnmount",value:function componentWillUnmount(){this.urlParams=null,this.cleanAllUsageSearchesJobSubscriptions()}},{key:"componentDidMount",value:function componentDidMount(){this.checkMLTKPromise.then(()=>{this.state.predictiveAnalyticsLoadState!==Se.LOAD_STATE.LOADING_MODELS&&this.setState({predictiveAnalyticsLoadState:Se.LOAD_STATE.NORMAL})}).catch(()=>{this.setState({predictiveAnalyticsLoadState:Se.LOAD_STATE.MISSING})}),this.preSetupComponentState()}},{key:"render",value:function render(){return O.default.createElement("div",{id:this.props.id},O.default.createElement(fe,{"data-test-itsi":"usage-dashboard-header"},O.default.createElement(Ae,{"data-test-itsi":"usage-dashboard-heading",level:1},(0,V.gettext)("Predictive Analytics")),O.default.createElement(Te,{"data-test-itsi":"usage-dashboard-description"},(0,V.gettext)("ITSI Predictive Analytics uses machine learning to predict the health score value of a selected service. The models use historical KPI and service health score data to approximate what a service's health might look like in 30 minutes."),O.default.createElement(ve,{"data-test-itsi":"pa-usage-main-tooltip",content:be},O.default.createElement(Ie,null,O.default.createElement(he,null))),O.default.createElement(me,{"data-test-itsi":"predictive-analytics-learn-more-link",openInNewContext:!0,to:(0,$.makeDocsURL)($.DOCS_PAGES.ITSI_PA)},(0,V.gettext)("Learn more")))),this.renderUsageState())}}])}(O.PureComponent);(0,T.default)(He,"propTypes",{id:P.default.string.isRequired}),(0,T.default)(He,"defaultProps",{});t.default=He;e.exports=t.default},7628:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uiURL=t.uiEditURL=void 0;var r=a(52),s=t.uiURL="app/itsi/predictive_analytics_usage";t.uiEditURL=(e,t,a)=>{var i={auto_load:a,model_id:t,service_id:e};return(0,r.createITSIURL)(s,i)}},7629:function(e,t,a){"use strict";var r=a(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,i,l,o,n=r(a(16)),c=r(a(17)),d=r(a(21)),u=r(a(19)),S=r(a(20)),p=r(a(8)),h=r(a(7)),f=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=_getRequireWildcardCache(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=s?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r}(a(0)),g=r(a(3)),_=r(a(2)),E=r(a(27)),R=r(a(272)),v=r(a(634)),m=r(a(89)),A=a(4),T=a(61),I=a(136),O=a(78),P=a(1052),y=a(434),C=r(a(1838));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?a:t})(e)}function _callSuper(e,t,a){return t=(0,u.default)(t),(0,d.default)(e,function _isNativeReflectConstruct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function _isNativeReflectConstruct(){return!!e}()}()?Reflect.construct(t,a||[],(0,u.default)(e).constructor):t.apply(e,a))}a(28);var b=(0,_.default)(E.default)(s||(s=(0,h.default)(["\n\tpadding: 0;\n"]))),M=_.default.div(i||(i=(0,h.default)(["\n\twidth: 100%;\n\theight: 100%;\n"]))),L=_.default.span(l||(l=(0,h.default)(["\n\twhite-space: nowrap;\n"]))),k=(0,_.default)(m.default)(o||(o=(0,h.default)(["\n\tfloat: right;\n"]))),w=f.default.createElement(L,null,(0,A.gettext)("Open in Search")),x=f.default.createElement(v.default,{screenReaderText:(0,A.gettext)("Open in Search"),height:"16",width:"16"}),N=function(e){function PredictiveAnalyticsServiceHealthScore(){var e;(0,n.default)(this,PredictiveAnalyticsServiceHealthScore);for(var t=arguments.length,a=new Array(t),r=0;r<t;r++)a[r]=arguments[r];return e=_callSuper(this,PredictiveAnalyticsServiceHealthScore,[...a]),(0,p.default)(e,"handleOpenInSearch",()=>{e.props.openInSearch(e.props.panelInfo.id)}),(0,p.default)(e,"handleCauseAnalysisClick",()=>{e.props.causeAnalysisClickHandler()}),(0,p.default)(e,"getCardHeader",()=>{var t=!(e.props.searchProgress===O.SEARCH_PROGRESS.COMPLETED||e.props.searchProgress===O.SEARCH_PROGRESS.NO_RESULTS);return f.default.createElement(R.default.Header,{title:e.props.panelInfo.title,subtitle:e.props.panelInfo.subtitle},e.props.searchProgress!==O.SEARCH_PROGRESS.NOT_STARTED&&f.default.createElement("div",null,f.default.createElement(k,{"data-test-itsi":"service-health-score-open-in-search-tooltip",content:w},f.default.createElement(b,{"aria-label":(0,A.gettext)("Open in Search"),"data-test-itsi":"pa-service-health-score-open-in-search-button",disabled:t,onClick:e.handleOpenInSearch,appearance:"pill",icon:x}))))}),(0,p.default)(e,"getCardBody",()=>{var t={};e.props.fillCard&&e.props.searchProgress!==O.SEARCH_PROGRESS.NOT_STARTED&&(t={padding:"0"});var a="",r="";e.props.selectedAlgorithm.type===y.ALGO_TYPES.REGRESSION?(a=(0,P.getSeverityColorFromColorRangeTable)(e.props.searchResults),r=e.props.searchResults):e.props.selectedAlgorithm.type===y.ALGO_TYPES.CLASSIFICATION&&(a=(0,y.classificationAlgorithmCategoryColor)(e.props.searchResults),r=(0,I.getSeverityLabel)(e.props.searchResults));var s=(0,T.getContrastingColor)(a);return f.default.createElement(R.default.Body,{style:t},f.default.createElement(M,{className:"predictive-analytics-usage-service-health-score"},f.default.createElement(C.default,{widgetSeverity:a,color:s,data:r,searchProgress:e.props.searchProgress,errorMessage:e.props.searchErrorMessage,initialWidgetContent:(0,A.gettext)("Select a service and a model to see the predicted health score.")})))}),(0,p.default)(e,"getCardFooter",()=>{var t=e.props.searchResults.toString().length>0,a=e.props.searchProgress!==O.SEARCH_PROGRESS.COMPLETED||e.props.kpiListPanelIsVisible&&e.props.kpiForecastsPanelIsVisible;return f.default.createElement(R.default.Footer,{showBorder:!1},t&&f.default.createElement(E.default,{"data-test-itsi":"pa-service-health-score-cause-analysis-button",label:(0,A.gettext)("Cause Analysis"),disabled:a,onClick:e.handleCauseAnalysisClick}))}),e}return(0,S.default)(PredictiveAnalyticsServiceHealthScore,e),(0,c.default)(PredictiveAnalyticsServiceHealthScore,[{key:"render",value:function render(){var e=this.getCardHeader(),t=this.getCardBody(),a=this.getCardFooter();return f.default.createElement(R.default,{"data-test-itsi":"pa-service-health-score-card"},e,t,a)}}])}(f.PureComponent);(0,p.default)(N,"propTypes",{panelInfo:g.default.object.isRequired,selectedAlgorithm:g.default.object.isRequired,searchProgress:g.default.number.isRequired,searchResults:g.default.oneOfType([g.default.string,g.default.number]),searchErrorMessage:g.default.string,openInSearch:g.default.func.isRequired,causeAnalysisClickHandler:g.default.func.isRequired,kpiListPanelIsVisible:g.default.bool.isRequired,kpiForecastsPanelIsVisible:g.default.bool.isRequired,fillCard:g.default.bool}),(0,p.default)(N,"defaultProps",{searchResults:"",searchErrorMessage:"",fillCard:!1});t.default=N;e.exports=t.default},7630:function(e,t,a){"use strict";var r=a(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,i,l,o=r(a(16)),n=r(a(17)),c=r(a(21)),d=r(a(19)),u=r(a(20)),S=r(a(8)),p=r(a(7)),h=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=_getRequireWildcardCache(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=s?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r}(a(0)),f=r(a(3)),g=r(a(33)),_=r(a(2)),E=r(a(27)),R=r(a(272)),v=r(a(93)),m=r(a(89)),A=a(14),T=a(4),I=a(78),O=a(527),P=a(57),y=a(434);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?a:t})(e)}function _callSuper(e,t,a){return t=(0,d.default)(t),(0,c.default)(e,function _isNativeReflectConstruct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function _isNativeReflectConstruct(){return!!e}()}()?Reflect.construct(t,a||[],(0,d.default)(e).constructor):t.apply(e,a))}a(28);var C="0",b="now",M=(0,_.default)(R.default)(s||(s=(0,p.default)(["\n\tmargin-left: 10px;\n"]))),L=_.default.div(i||(i=(0,p.default)(["\n\tdisplay: block;\n\twidth: 350px;\n"]))),k=_.default.div(l||(l=(0,p.default)(["\n\twidth: 100%;\n\theight: 100%;\n"]))),w=function(e){function PredictiveAnalyticsServiceKpiList(){var e;(0,o.default)(this,PredictiveAnalyticsServiceKpiList);for(var t=arguments.length,a=new Array(t),r=0;r<t;r++)a[r]=arguments[r];return e=_callSuper(this,PredictiveAnalyticsServiceKpiList,[...a]),(0,S.default)(e,"getTableRows",()=>{var t=e.props.searchResults,a=e.props.serviceId;return t.length?t.filter(e=>e.type!==P.KPI_TYPES.SERVICE_HEALTH||e.type===P.KPI_TYPES.SERVICE_HEALTH&&e.serviceId!==a).map(e=>{var t=e.title;return e.type===P.KPI_TYPES.SERVICE_HEALTH&&(t=(0,A.sprintf)((0,T.gettext)("%(serviceTitle)s Service Health Score"),{serviceTitle:e.serviceTitle})),h.default.createElement(v.default.Row,{key:e._key,data:e,"data-test-itsi":"pa-service-kpis-table-row"},h.default.createElement(v.default.Cell,{"data-test-itsi":"pa-service-kpis-table-cell"},t))}):h.default.createElement(v.default.Row,{"data-test-itsi":"pa-service-kpis-table-no-kpis-row",key:"no-kpis-found"},h.default.createElement(v.default.Cell,null,(0,T.gettext)("No KPIs found.")))}),(0,S.default)(e,"openInDeepDive",()=>{var t=e.props.searchResults.map(e=>({kpiId:e._key,serviceId:e.serviceId,kpiName:e.title,serviceName:e.serviceTitle}));(0,O.openInDeepDive)(!0,t,C,b,!1,!0)}),(0,S.default)(e,"getTooltipContent",e=>h.default.createElement(L,null,e)),(0,S.default)(e,"getCardHeader",()=>h.default.createElement(R.default.Header,{title:e.props.panelInfo.title,subtitle:e.props.panelInfo.subtitle},h.default.createElement(m.default,{"data-test-itsi":"pa-service-kpi-list-tooltip",content:e.getTooltipContent(e.props.panelInfo.tooltip)}))),(0,S.default)(e,"getCardBody",()=>{var t=h.default.createElement("div",null);switch(e.props.searchProgress){case I.SEARCH_PROGRESS.IN_PROGRESS:t=y.SEARCH_PROGRESS_ELEMENTS.getSearchInProgressElement();break;case I.SEARCH_PROGRESS.ERROR:t=y.SEARCH_PROGRESS_ELEMENTS.getErrorMessageElement(e.props.searchErrorMessage);break;case I.SEARCH_PROGRESS.NO_RESULTS:t=y.SEARCH_PROGRESS_ELEMENTS.getNoResultsElement();break;case I.SEARCH_PROGRESS.COMPLETED:var a=e.getTableRows();t=h.default.createElement(k,{className:"predictive-analytics-usage-service-kpi-list"},h.default.createElement(v.default,{"data-test-itsi":"pa-service-kpis-table",stripeRows:!0},h.default.createElement(v.default.Head,null,h.default.createElement(v.default.HeadCell,{"data-test-itsi":"pa-service-kpis-table-head-cell"},(0,T.gettext)("KPI"))),h.default.createElement(v.default.Body,null,a)))}return h.default.createElement(R.default.Body,null,t)}),(0,S.default)(e,"getCardFooter",()=>{var t=e.props.searchProgress===I.SEARCH_PROGRESS.COMPLETED&&e.props.searchResults&&e.props.searchResults.length>0,a=e.props.searchProgress!==I.SEARCH_PROGRESS.COMPLETED||(0,g.default)(e.props.searchResults);return h.default.createElement(R.default.Footer,{showBorder:!1},t&&h.default.createElement(E.default,{"data-test-itsi":"analyze-in-deep-dive",disabled:a,onClick:e.openInDeepDive,openInNewContext:!0,appearance:"primary",label:(0,T.gettext)("Analyze in Deep Dive")}))}),e}return(0,u.default)(PredictiveAnalyticsServiceKpiList,e),(0,n.default)(PredictiveAnalyticsServiceKpiList,[{key:"render",value:function render(){var e=this.getCardHeader(),t=this.getCardBody(),a=this.getCardFooter();return h.default.createElement(M,{"data-test-itsi":"pa-service-kpi-list-card"},e,t,a)}}])}(h.PureComponent);(0,S.default)(w,"propTypes",{panelInfo:f.default.object.isRequired,serviceId:f.default.string.isRequired,serviceTitle:f.default.string.isRequired,searchProgress:f.default.number.isRequired,searchResults:f.default.array,searchErrorMessage:f.default.string}),(0,S.default)(w,"defaultProps",{searchResults:[],searchErrorMessage:""});t.default=w;e.exports=t.default},7631:function(e,t,a){"use strict";var r=a(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,i,l=r(a(16)),o=r(a(17)),n=r(a(21)),c=r(a(19)),d=r(a(20)),u=r(a(8)),S=r(a(7)),p=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=_getRequireWildcardCache(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=s?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r}(a(0)),h=r(a(3)),f=r(a(33)),g=r(a(2)),_=r(a(272)),E=r(a(24)),R=r(a(89)),v=a(14),m=a(78),A=r(a(7632)),T=a(434);function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?a:t})(e)}function _callSuper(e,t,a){return t=(0,c.default)(t),(0,n.default)(e,function _isNativeReflectConstruct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function _isNativeReflectConstruct(){return!!e}()}()?Reflect.construct(t,a||[],(0,c.default)(e).constructor):t.apply(e,a))}a(28);var I=g.default.div(s||(s=(0,S.default)(["\n\tdisplay: block;\n\twidth: 400px;\n"]))),O=g.default.div(i||(i=(0,S.default)(["\n\twidth: 100%;\n\theight: 100%;\n"]))),P=function(e){function PredictiveAnalyticsServiceKpiForecasts(){var e;(0,l.default)(this,PredictiveAnalyticsServiceKpiForecasts);for(var t=arguments.length,a=new Array(t),r=0;r<t;r++)a[r]=arguments[r];return e=_callSuper(this,PredictiveAnalyticsServiceKpiForecasts,[...a]),(0,u.default)(e,"getCardHeader",()=>p.default.createElement(_.default.Header,{title:e.props.panelInfo.title,subtitle:e.props.panelInfo.subtitle},p.default.createElement(R.default,{"data-test-itsi":"pa-kpi-forecast-tooltip",content:e.getTooltipContent(e.props.panelInfo.tooltip)}))),(0,u.default)(e,"getCardBody",()=>{var t=p.default.createElement("div",null);if(e.props.kpiForecastsSearchProgress===m.SEARCH_PROGRESS.IN_PROGRESS||e.props.R2SearchProgress===m.SEARCH_PROGRESS.IN_PROGRESS)t=T.SEARCH_PROGRESS_ELEMENTS.getSearchInProgressElement();else if(e.props.kpiForecastsSearchProgress!==m.SEARCH_PROGRESS.ERROR||e.props.R2SearchProgress!==m.SEARCH_PROGRESS.ERROR&&e.props.R2SearchProgress!==m.SEARCH_PROGRESS.NOT_STARTED)t=e.props.kpiForecastsSearchProgress===m.SEARCH_PROGRESS.NO_RESULTS&&e.props.R2SearchProgress===m.SEARCH_PROGRESS.NO_RESULTS?T.SEARCH_PROGRESS_ELEMENTS.getNoResultsElement():e.props.kpiForecastsSearchProgress===m.SEARCH_PROGRESS.COMPLETED?p.default.createElement(O,{className:"predictive-analytics-usage-service-kpi-forecasts"},p.default.createElement(A.default,{kpiForecastsSearchResults:e.props.kpiForecastsSearchResults,r2SearchResults:e.props.R2SearchResults})):p.default.createElement(E.default,{"data-test-itsi":"pa-splunk-search-error-message",type:"error"},T.DEFAULT_SPLUNK_SEARCH_ERROR_MESSAGE);else{var a="";e.props.R2SearchErrorMessage&&(a=(0,v.sprintf)("%s ",e.props.R2SearchErrorMessage)),e.props.kpiForecastsSearchErrorMessage&&(a=(0,f.default)(a)?e.props.kpiForecastsSearchErrorMessage:(0,v.sprintf)("%s %s",a,e.props.kpiForecastsSearchErrorMessage)),(0,f.default)(a)&&(a=T.DEFAULT_SPLUNK_SEARCH_ERROR_MESSAGE),t=T.SEARCH_PROGRESS_ELEMENTS.getErrorMessageElement(a)}return p.default.createElement(_.default.Body,null,t)}),(0,u.default)(e,"getCardFooter",()=>p.default.createElement(_.default.Footer,{showBorder:!1})),e}return(0,d.default)(PredictiveAnalyticsServiceKpiForecasts,e),(0,o.default)(PredictiveAnalyticsServiceKpiForecasts,[{key:"getTooltipContent",value:function getTooltipContent(e){return p.default.createElement(I,null,e)}},{key:"render",value:function render(){var e=this.getCardHeader(),t=this.getCardBody(),a=this.getCardFooter();return p.default.createElement(_.default,{"data-test-itsi":"pa-service-kpi-forecast-card"},e,t,a)}}])}(p.PureComponent);(0,u.default)(P,"propTypes",{panelInfo:h.default.object.isRequired,kpiForecastsSearchProgress:h.default.number.isRequired,kpiForecastsSearchResults:h.default.object,kpiForecastsSearchErrorMessage:h.default.string,R2SearchProgress:h.default.number.isRequired,R2SearchResults:h.default.array,R2SearchErrorMessage:h.default.string}),(0,u.default)(P,"defaultProps",{kpiForecastsSearchResults:{},kpiForecastsSearchErrorMessage:"",R2SearchResults:[],R2SearchErrorMessage:""});t.default=P;e.exports=t.default},7632:function(e,t,a){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.cellData=t.columnsData=void 0;const s=r(a(0)),i=r(a(321)),l=r(a(1593)),o=r(a(76)),n=r(a(2)),c=r(a(24)),d=r(a(93)),u=r(a(89)),S=a(14),p=a(4),h=r(a(1149)),f=a(107),g=a(67),_=a(57),E=(0,n.default)(d.default.HeadCell)`
|
|
min-width: ${e=>e.minWidth+"px"};
|
|
`,R=(0,n.default)(d.default.Cell)`
|
|
vertical-align: middle;
|
|
`,v=(0,n.default)(u.default)`
|
|
padding-left: 10px;
|
|
`;t.columnsData=[{dataTestItsi:"pa-forecast-table-kpi-column-header",content:(0,p.gettext)("KPI"),minWidth:250},{dataTestItsi:"pa-forecast-table-accuracy-column-header",content:s.default.createElement(s.default.Fragment,null,(0,p.gettext)("Accuracy of Prediction - R2"),s.default.createElement(v,{"data-test-itsi":"accuracy-prediction-tooltip",content:(0,S.sprintf)((0,p.gettext)("High - %s to %s, Medium - %s to %s, Low - less than %s"),.75,1,.5,.75,.5)})),minWidth:250},{dataTestItsi:"pa-forecast-table-past-vs-predicted-column-header",content:(0,p.gettext)("Past Versus Predicted KPI Values"),minWidth:400}],t.cellData=[{dataTestItsi:"pa-forecast-table-kpi-cell"},{dataTestItsi:"pa-forecast-table-accuracy-cell"},{dataTestItsi:"pa-forecast-table-past-vs-predicted-cell"}],t.default=function PredictiveAnalyticsForecastTable({kpiForecastsSearchResults:e,r2SearchResults:a}){return e&&e.formattedKpisWithData&&e.formattedKpisWithData.length>0?s.default.createElement(d.default,{"data-test-itsi":"pa-forecast-table",stripeRows:!0},s.default.createElement(d.default.Head,{"data-test-itsi":"pa-forecast-table-head"},t.columnsData.map(e=>s.default.createElement(E,{"data-test-itsi":e.dataTestItsi,key:e.dataTestItsi,minWidth:e.minWidth},e.content))),s.default.createElement(d.default.Body,null,e.formattedKpisWithData.map((r,n)=>{const c=parseInt(r.forecastFields.actual.split("_")[1],10),u=(e=>{let t="N/A";const a=e?e.rSquared:t;if((0,o.default)(a)&&"n/a"===a.toLowerCase()||Number.isNaN(Number(a)))return t;const r=parseFloat(a.toString());return r<.5?t=(0,S.sprintf)((0,p.gettext)("Low: %s"),r.toFixed(2)):r>=.5&&r<.75?t=(0,S.sprintf)((0,p.gettext)("Medium: %s"),r.toFixed(2)):r>=.75&&(t=(0,S.sprintf)((0,p.gettext)("High: %s"),r.toFixed(2))),t})(a&&a[c-1]);let E=r.title;r.type===_.KPI_TYPES.SERVICE_HEALTH&&(E=(0,S.sprintf)((0,p.gettext)("%(serviceTitle)s Service Health Score"),{serviceTitle:r.serviceTitle}));const v=(t=>{const a=t===e.formattedKpisWithData.length-1;return{annotationX:"> annotation|seriesByIndex(0)",annotationLabel:"> annotation|seriesByIndex(1)",annotationColor:"> annotation|seriesByIndex(2)",backgroundColor:"rgba(0, 0, 0, 0)",legendDisplay:"off",lineDashStylesByField:{Actual:"solid",Predicted:"shortDot"},seriesColors:[(0,f.getSeverityColor)(t+1),(0,f.getSeverityColor)(t+1)],showYMajorGridLines:!1,xAxisMajorTickVisibility:a?"show":"hide",xAxisLabelVisibility:a?"show":"hide",xAxisTitleVisibility:"hide",yAxisLabelVisibility:"hide",yAxisTitleVisibility:"hide"}})(n),m=(t=>{const a=(0,l.default)(t.predicted,t.actual,(e,t)=>e[0]===t[0]),r=[],s=[],o=[];return(0,i.default)(t.actual,e=>{r.unshift((0,g.convertEpochToDate)(Math.floor(e[0]/1e3)).toISOString()),s.unshift(e[1])}),a.map(e=>o.unshift(e[1])),{primary:{data:{fields:[{name:"_time"},{name:"Actual"},{name:"Predicted"}],columns:[r,s,o]}},annotation:{data:{fields:[{name:"_time",groupby_rank:"0"},{name:"annotation_label"},{name:"annotation_color"}],columns:[[(0,g.convertEpochToDate)(Math.floor(e.futureTimestampStartValue/1e3)).toISOString()],["Now"],["#a8a8a8"]]}}}})(r.forecastData);return s.default.createElement(d.default.Row,{"data-test-itsi":"pa-forecast-table-body-row",key:r._key},s.default.createElement(R,{"data-test-itsi":t.cellData[0].dataTestItsi,key:r._key+"-kpi"},E),s.default.createElement(R,{"data-test-itsi":t.cellData[1].dataTestItsi,key:r._key+"-accuracy"},u),s.default.createElement(d.default.Cell,{"data-test-itsi":t.cellData[2].dataTestItsi,key:r._key+"-past-vs-predicted"},s.default.createElement(h.default,{options:v,dataSources:m,height:120})))}))):s.default.createElement(c.default,{"data-test-itsi":"pa-forecast-table-no-kpis-message"},(0,p.gettext)("No prediction data available"))}}}); |