{"version":3,"sources":["detail.js"],"names":["firstIndex","lastIndex","serializeComment","node","isLastNode","console","log","hasOwnProperty","type","name","content","children","map","child","join","lastChild","length","endsWithEmptyText","text","loadMore","logTableHtml","logs","$","addClass","removeClass","slicedLogs","slice","each","i","logLabel","trans","logDescription","logIcon","verb","label","replace","duration","class","parsedCommentNodes","JSON","parse","comment","serializedComment","index","authorName","time","reason","detail","short","code","undefined","full","dateGMT","window","timeZone","append","step","callMonitorDetail","callLog","ajax","url","pspApiPath","dataType","cache","retryLimit","success","data","downCount","statistics","counts","down","upCount","up","pausedCount","paused","totalCount","total","playAlertSound","timezone","monitor","title","statusClass","html","toLowerCase","monitorType","charAt","toUpperCase","checkInterval","monitorURLhref","startsWith","montiorUrl","bars","days","reverse","dailyData","dailyRatios","w","innerWidth","barLimit","svgW","compact","svgH","barGap","barW","startI","daily","notMonitored","d","Date","getTime","dataDisplayDay","ratio","createdAt","fillColor","fillOpacity","monitorHtml","pageUrl","DOMPurify","sanitize","location","href","search","attr","monitorName","lastRecordDate","nLog","date","ctxLabels","ctxDataWithMeta","ctxData","rtObj","responseTimes","rt","push","datetime","meta","value","high","Math","round","max","highestRT","lowestRT","min","Chartist","Line","labels","series","showArea","fullWidth","showLabel","chartPadding","top","left","bottom","right","axisX","showGrid","axisY","FixedScaleAxis","labelInterpolationFnc","offset","position","onlyInteger","labelOffset","x","y","low","ticks","lineSmooth","Interpolation","cardinal","tension","fillHoles","plugins","tooltip","anchorToPoint","on","context","element","width","animate","begin","dur","from","path","clone","scale","translate","chartRect","height","stringify","to","easing","Svg","Easing","easeOutQuint","hide","avgRT","reduce","acc","val","toFixed","hash","scrollTop","error","setInterval","countdown","toLocaleTimeString"],"mappings":"AACA,IAAIA,WAAa,EACbC,UAAY,EAGhB,SAASC,iBAAiBC,EAAMC,GAAa,GAGzC,GAFAC,QAAQC,IAAIH,GAERA,EAAKI,eAAe,QAAS,CAC7B,GAAkB,YAAdJ,EAAKK,KACL,UAAWL,EAAKM,OAEpB,GAAkB,cAAdN,EAAKK,KAAsB,CAC3B,MAAME,EAAUP,EAAKQ,SAASC,IAAIC,GAASX,iBAAiBW,IAAQC,KAAK,IACnEC,EAAYZ,EAAKQ,SAASR,EAAKQ,SAASK,OAAS,GACjDC,IAAsBF,EAAUR,eAAe,SAA8B,SAAnBQ,EAAUP,OAAuC,KAAnBO,EAAUG,KAExG,MAAiB,KAAZR,IAAkBO,GAAuBb,EAGvCM,EAFIA,EAAU,SAK7B,OAAKP,EAAKI,eAAe,SAAyB,SAAdJ,EAAKK,KAGlC,GAFIL,EAAKe,KAOpB,SAASC,WAEL,IAAIC,EAAe,GACfnB,UAAYoB,KAAKL,SACjBM,EAAE,0BAA0BC,SAAS,aACrCD,EAAE,uBAAuBE,YAAY,cAGzCC,WAAaJ,KAAKK,MAAM1B,WAAYC,WAEpCqB,EAAEK,KAAKF,WAAY,SAAUG,EAAGtB,GAC5B,IAAIuB,EAAWC,MAAM,wBACjBC,EAAiB,KACjBC,EAAU,uBACVC,EAAOH,MAAM,cAMjB,GAJS,GAALF,GAAwB,GAAd5B,aACViC,EAAOH,MAAM,cAGA,QAAbxB,EAAI4B,MACJL,EAAWC,MAAM,mBAAmBK,QAAQ,KAAM7B,EAAI8B,UACtDJ,EAAU,8BACP,GAAiB,UAAb1B,EAAI4B,MACXL,EAAWC,MAAM,yBAAyBK,QAAQ,KAAMF,GACxDD,EAAU,yBACP,GAAiB,WAAb1B,EAAI4B,MACXL,EAAWC,MAAM,0BACjBE,EAAU,wBACP,GAAkB,YAAd1B,EAAI+B,MAAqB,CAChC,MAAMC,EAAqBC,KAAKC,MAAMlC,EAAImC,SACpCC,EAAoBJ,EAAmB1B,IAAI,CAACT,EAAMwC,IAAUzC,iBAAiBC,EAAMwC,IAAUL,EAAmBtB,OAAS,IAAIF,KAAK,IAExIe,gBAAyBvB,EAAIsC,aAC7Bb,EAAiBW,EACjBV,EAAU,eAKdZ,GAAgB,0CAFmB,GAAdpB,WAAkB,gCAAkC,IAEG,cAAgBM,EAAIuC,KAAO,sCACrF,YAAdvC,EAAI+B,MACJjB,GAAgB,izBAMXA,GAAgB,0CAA4CY,EAAU,qDAAuDA,EAAU,iBAEhJZ,GAAgB,iCAChBA,GAAgB,wCAA0CS,EAAW,QAE9C,OAAnBE,IACAX,iCAA8CW,SAGjC,QAAbzB,EAAI4B,OAAwC,MAArB5B,EAAIwC,OAAOC,SAClC3B,GAAgB,0CAA4Ca,EAAO,aAAe3B,EAAIwC,OAAOC,OAAOC,MAAQ,aACxG1C,EAAIwC,OAAOG,KAAKjC,QAAU,IAC1BI,GAAgB,4CAA8Cd,EAAIwC,OAAOG,KAAO,aAEpF7B,GAAgB,YACe8B,IAA3B5C,EAAIwC,OAAOC,OAAOI,OAClB/B,GAAgB,4DAA8DU,MAAM,kBAAoB,aAAexB,EAAIwC,OAAOC,OAAOI,KAAM,SAGvJ/B,GAAgB,8DAAgEd,EAAI8C,QAAU,SAAW9C,EAAI8C,QAAU,QAAUC,OAAOC,SAAW,OACnJlC,GAAgB,aAChBA,GAAgB,iBAGpBE,EAAE,wBAAwBiC,OAAOnC,GAEjCoC,KAAOvD,UAAYD,WACnBA,WAAaC,UACbA,WAAwBuD,KAgB5B,SAASC,kBAAkBC,GACvBpC,EAAEqC,MACEnD,KAAM,MACNoD,IAAKP,OAAOQ,WACZC,SAAU,OACVC,OAAO,EACPC,WAAY,EACZC,QAAS,SAAUC,GAEf,IAAIC,EAAYD,EAAKE,WAAWC,OAAOC,KACnCC,EAAUL,EAAKE,WAAWC,OAAOG,GACjCC,EAAcP,EAAKE,WAAWC,OAAOK,OACrCC,EAAaT,EAAKE,WAAWC,OAAOO,MAExCtD,EAAE,eAAeJ,KAAKyD,GACtBrD,EAAE,YAAYJ,KAAKqD,GACnBjD,EAAE,cAAcJ,KAAKiD,GACrB7C,EAAE,gBAAgBJ,KAAKuD,GAEvBnD,EAAE,wBAAwBE,YAAY,oBAEvB,GAAX+C,GAA+B,GAAfE,EAChBnD,EAAE,wBAAwBC,SAAS,YACf,GAAb4C,GACP7C,EAAE,wBAAwBC,SAAS,cACnCsD,kBACOJ,GAAeE,GACtBrD,EAAE,wBAAwBC,SAAS,WAGvC8B,OAAOC,SAAWY,EAAKY,SAEvBxD,EAAE,SAASJ,KAAKgD,EAAKa,QAAQtE,KAAO,MAAQyD,EAAKc,OAEjD1D,EAAE,8CAA8CE,YAAY,oBAE5B,WAA5B0C,EAAKa,QAAQE,YACb3D,EAAE,oBAAoB4D,KAAK,0FAA4FhB,EAAKa,QAAQtE,KAAO,kBAAoBqB,MAAM,aAAe,kCAAoCA,MAAM,sBAAsBqD,cAAgB,WACjO,UAA5BjB,EAAKa,QAAQE,aACpB3D,EAAE,8CAA8CC,SAAS,YACzDD,EAAE,oBAAoB4D,KAAKhB,EAAKa,QAAQtE,KAAO,IAAMqB,MAAM,aAAe,iCAAmCA,MAAM,eAAeqD,cAAgB,WAClJN,mBAEAvD,EAAE,8CAA8CC,SAAS,WACzDD,EAAE,oBAAoB4D,KAAKhB,EAAKa,QAAQtE,KAAO,IAAMqB,MAAM,aAAe,gCAAkCA,MAAM,wBAA0B,YAGhJ,IAAIsD,EAAclB,EAAKa,QAAQvE,KAAK6E,OAAO,GAAGC,cAAgBpB,EAAKa,QAAQvE,KAAKkB,MAAM,GAGtF,GAAyB,OAArBwC,EAAKa,QAAQnB,IACbtC,EAAE,yBAAyBJ,KAAKgD,EAAKa,QAAQQ,mBAC1C,CACH,IAAIC,EAAiBtB,EAAKa,QAAQnB,IAE7BM,EAAKa,QAAQnB,IAAI6B,WAAW,UAC7BD,EAAiB,UAAYA,GAGjC,IAAIE,EAAkC,OAArBxB,EAAKa,QAAQnB,IAAe,GAAK,iBAAmB4B,EAAiB,6DAA+DtB,EAAKa,QAAQnB,IAAM,KAAOM,EAAKa,QAAQnB,IAAM,OAElMtC,EAAE,yBAAyB4D,KAAKE,EAAc,cAAgBM,EAAa,KAAOxB,EAAKa,QAAQQ,cAAcJ,gBAQ7GjB,EAAKa,QAAQE,YAAc,WAC+EnD,MAAM,uBACzGoC,EAAKa,QAAQE,YAAc,UACgFnD,MAAM,eAERA,MAAM,iBAG1H,IAAI6D,EAAO,GACPC,EAAO1B,EAAK0B,KAAKC,UACjBC,EAAY5B,EAAKa,QAAQgB,YAAYF,UAErCG,EAAI3C,OAAO4C,WAEXC,EAAW,GACXC,EAAO9C,OAAO+C,QAAU,IAAM,IAC9BC,EAAOhD,OAAO+C,QAAU,GAAK,GAC7BE,EAASjD,OAAO+C,QAAU,MAAQ,IAClCG,EAAO,EAEPP,GAAK,MACLE,EAAW,GACXI,EAAS,KACTC,EAAO,GACPJ,EAAO,IACPE,EAAOhD,OAAO+C,QAAU,GAAK,IAMjC,IAHA,IAAII,EAAS,GAAKN,EAGTtE,EAAI4E,EAAQ5E,EAAI,GAAIA,IAAK,CAC9B,IAAI6E,EAAQX,EAAUlE,GAClB8E,GAAe,EACfC,EAAI,IAAIC,KAAKhB,EAAKhE,IAAIiF,UAAY,IAClCC,EAAiBL,EAAMM,MAAQ,IAE/BJ,EAAIzC,EAAKa,QAAQiC,UAAY,QAC7BN,GAAe,GAInB,IAAIO,EAAY,UACZC,EAAc,IAEE,GAAhBR,GAAuC,SAAfD,EAAMvE,OAC9B+E,EAAY,UACZH,EAAiBhF,MAAM,sBAEnB2E,EAAMM,MAAQ,KAAON,EAAMM,OAAS,IACpCE,EAAY,UACZC,EAAc,OACPT,EAAMM,MAAQ,IAAMN,EAAMM,OAAS,GAC1CE,EAAY,UACLR,EAAMM,MAAQ,KACrBE,EAAY,WAIpBtB,GAAQ,iBAAmBU,EAAO,YAAcE,EAAO,SAAW3E,EAAI4E,GAAUF,EAAS,iBAAmBW,EAAY,mBAAqBC,EAAc,SAAWX,EAAO,EAAI,SAAWA,EAAO,EAAI,sDAAwDX,EAAKhE,GAAK,6BACjQkF,EAAiB,OAI7B,IAAIK,EAAc,yQAIiCjD,EAAKa,QAAQ,YAAmB,MAAI,qEACrCb,EAAKa,QAAQ,YAAmB,MAAI,wMAKlDoB,EAAO,aAAeE,EAAO,mEAAqEF,EAAO,IAAME,EAAO,qCAClIV,EAAO,mIAM/BrE,EAAE,qBAAqB4D,KAAKiC,GAE5B,IAAIC,EAAUC,UAAUC,SAASjE,OAAOkE,SAASC,KAAKrF,QAAQoF,SAASE,OAAQ,IAAItF,QAAQ,MAAO,KAClGb,EAAE,sBAAsBoG,KAAK,OAAQN,EAAU,aAEtB,aAArBlD,EAAKa,QAAQvE,MACbc,EAAE,eAAeE,YAAY,aAGjC,IAAImG,EAAczD,EAAKa,QAAQtE,KAY/B,GATAa,EAAE,uCAAuCJ,KAAKgD,EAAKa,QAAQ,WAAWgC,MAAQ,KAC9EzF,EAAE,uCAAuCJ,KAAKgD,EAAKa,QAAQ,WAAWgC,MAAQ,KAC9EzF,EAAE,uCAAuCJ,KAAKgD,EAAKa,QAAQ,YAAYgC,MAAQ,KAC/EzF,EAAE,uCAAuCJ,KAAKgD,EAAKa,QAAQ,YAAYgC,MAAQ,KAI/E1F,KAAO6C,EAAKa,QAAQ1D,KAEhBqC,EAEAvC,eACG,CAEH,IAAIC,EACAwG,EAAiBtG,EAAE,0CAA0C4C,KAAK,MAElE0D,GACIA,EAAiBvG,KAAK,GAAGwB,OACzBvB,EAAEK,KAAKN,KAAM,SAAUO,EAAGiG,GACtB,IAAIhG,EAAWC,MAAM,wBACjBE,EAAU,uBAEI,QAAd6F,EAAK3F,OACLL,EAAW8F,EAAc,gBAAkBE,EAAKzF,SAChDJ,EAAU,0BACW,UAAd6F,EAAK3F,OACZL,EAAWC,MAAM,yBACjBE,EAAU,qBACW,WAAd6F,EAAK3F,OACZL,EAAWC,MAAM,0BACjBE,EAAU,oBACH6F,EAAK3F,MAIZ2F,EAAKhF,KAAO+E,IACZxG,GAAgB,oDAAsDyG,EAAKhF,KAAO,0BAClFzB,GAAgB,oBAAsBY,EAAU,qDAAuDA,EAAU,iBACjHZ,GAAgB,iCAChBA,GAAgB,wCAA0CS,EAAW,QACrET,GAAgB,mDAAqDyG,EAAKzE,QAAU,SAAWyE,EAAKC,KAAO,QAAUzE,OAAOC,SAAW,SACrH,QAAduE,EAAK3F,OAAyC,MAAtB2F,EAAK/E,OAAOC,SACpC3B,GAAgB,6CAA+CU,MAAM,qBAAuB,YAAc+F,EAAK/E,OAAOC,OAAOC,MAAQ,sDAAwD6E,EAAK/E,OAAOG,KAAO,qBAChLC,IAA5B2E,EAAK/E,OAAOC,OAAOI,OACnB/B,GAAgB,wGAA0GyG,EAAK/E,OAAOC,OAAOI,KAAO,cAG5J/B,GAAgB,aAChBA,GAAgB,kBAGxBE,EAAE,wBAAwBiC,OAAOnC,IAQ7C,GAAyB,aAArB8C,EAAKa,QAAQvE,KAAqB,CAClC,IAAIuH,KACAC,KACAC,KAEAC,EAAQhE,EAAKa,QAAQoD,cAEzB,GAAID,EAAMlH,OAAS,EAAG,CAElBM,EAAEK,KAAKuG,EAAO,SAAUtG,EAAGwG,GACvBL,EAAUM,KAAKD,EAAGE,UAClBN,EAAgBK,MAAOE,KAAMH,EAAGE,SAAUE,MAAOJ,EAAGI,QACnC,OAAbJ,EAAGI,OACHP,EAAQI,KAAKD,EAAGI,SAGxB,IAAIC,EAAgD,IAAzCC,KAAKC,MAAMD,KAAKE,OAAOX,GAAW,KACzCY,EAAYH,KAAKE,OAAOX,GACxBa,EAAWJ,KAAKK,OAAOd,GAE3B,GAAIC,EAAMlH,OAAS,EACH,IAAIgI,SAASC,KAAK,oBAC1BC,OAAQnB,EACRoB,QACInB,KAGJoB,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,cACIC,IAAK,GACLC,KAAM,EACNC,OAAQ,EACRC,MAAO,GAEXC,OACIN,WAAW,EACXO,UAAU,GAEdC,OACItJ,KAAMwI,SAASe,eACfC,sBAAuB,SAAUxB,GAC7B,OAAOA,EAAQ,MAEnByB,OAAQ,EACRC,SAAU,QACVC,aAAa,EACbC,aACIC,EAAG,EACHC,EAAG,IAEPC,IAAK,EACLC,MAAAA,OAAQ/B,EAAO,IAEnBgC,WAAYzB,SAAS0B,cAAcC,UAC/BC,QAAS,EACTC,WAAW,IAEfC,SACI9B,SAAS8B,QAAQC,SACbC,eAAe,EACflD,MAAM,OAKZmD,GAAG,OAAQ,SAAUC,GACF,UAAjBA,EAAQ1K,MACR0K,EAAQC,QAAQzD,MACZ0D,MAAO,SAGM,SAAjBF,EAAQ1K,MAAoC,SAAjB0K,EAAQ1K,MACnC0K,EAAQC,QAAQE,SACZ1E,GACI2E,MAAO,IAAOJ,EAAQvI,MACtB4I,IAAK,IACLC,KAAMN,EAAQO,KAAKC,QAAQC,MAAM,EAAG,GAAGC,UAAU,EAAGV,EAAQW,UAAUC,UAAUC,YAChFC,GAAId,EAAQO,KAAKC,QAAQK,YACzBE,OAAQjD,SAASkD,IAAIC,OAAOC,gBAIxC9K,EAAE,yCAAyC+K,cAI/C/K,EAAE,oBAAoB4D,KAAK,wDAA0DpD,MAAM,qBAAuB,gBAItHR,EAAE,oBAAoB4D,KAAK,wDAA0DpD,MAAM,sBAG/F,IAAIwK,EAAQrE,EAAQsE,OAAO,SAAUC,EAAKC,GAAO,OAAOD,EAAMC,GAAQ,GAAKxE,EAAQjH,OACnFM,EAAE,WAAWJ,UAAegC,IAAVoJ,EAAsB,MAAQA,EAAMI,QAAQ,GAAK,MACnEpL,EAAE,SAASJ,UAAmBgC,IAAd2F,EAA0B,MAAQA,EAAU6D,QAAQ,GAAK,MACzEpL,EAAE,SAASJ,UAAkBgC,IAAb4F,EAAyB,MAAQA,EAAS4D,QAAQ,GAAK,MAI/C,SAAxBrJ,OAAOkE,SAASoF,MAA8B,GAAXjJ,GACnCpC,EAAE,cAAc+J,SACZuB,UAAWtL,EAAE,SAAS2I,SAAST,IAAM,IACtC,MAIXqD,MAAO,SAAUA,GACbxM,QAAQC,IAAIuM,MAzVxBvL,EAAE,WAGawL,YAAYC,UAAW,KAClCzL,EAAE,iBAAiBJ,MAAK,IAAI0F,MAAOoG,sBACnCvJ,mBAAkB,GAGlBnC,EAAE,0BAA0B2J,GAAG,QAAS,WACpC9J,SAASG,EAAE,0BAA0B4C,KAAK","file":"detail.min.js","sourcesContent":["// Detail page variables for log events paging\nvar firstIndex = 0;\nvar lastIndex = 5;\n\n\nfunction serializeComment(node, isLastNode = false) {\n console.log(node)\n /* NOTE: This serializer is AI generated. */\n if (node.hasOwnProperty('type')) {\n if (node.type === 'mention') {\n return `@${node.name}`;\n }\n if (node.type === 'paragraph') {\n const content = node.children.map(child => serializeComment(child)).join('');\n const lastChild = node.children[node.children.length - 1];\n const endsWithEmptyText = (!lastChild.hasOwnProperty('type') || lastChild.type === 'text') && lastChild.text === '';\n // Add br if paragraph is empty or ends with empty text, but not if it's the last node\n if ((content === '' || endsWithEmptyText) && !isLastNode) {\n return content + '
';\n }\n return content;\n }\n }\n if (!node.hasOwnProperty('type') || node.type === 'text') {\n return node.text\n }\n return '';\n};\n\n\n\nfunction loadMore() {\n\n var logTableHtml = \"\";\n if (lastIndex > logs.length) {\n $('#load-more-logs-button').addClass('uk-hidden');\n $('#load-more-logs-end').removeClass('uk-hidden');\n }\n\n slicedLogs = logs.slice(firstIndex, lastIndex);\n\n $.each(slicedLogs, function (i, log) {\n let logLabel = trans('status.running_again');\n let logDescription = null;\n let logIcon = \"icon-arrow-up-circle\";\n let verb = trans('common.was');\n\n if (i == 0 && firstIndex == 0) {\n verb = trans('common.is');\n }\n\n if (log.label == \"down\") {\n logLabel = trans('status.down_for').replace('%s', log.duration);\n logIcon = \"icon-arrow-down-circle\";\n } else if (log.label == \"paused\") {\n logLabel = trans('status.monitor_paused').replace('%s', verb);\n logIcon = \"icon-pause-circle\";\n } else if (log.label == \"started\") {\n logLabel = trans('status.monitor_started');\n logIcon = \"icon-play-circle\";\n } else if (log.class === 'comment') {\n const parsedCommentNodes = JSON.parse(log.comment);\n const serializedComment = parsedCommentNodes.map((node, index) => serializeComment(node, index === parsedCommentNodes.length - 1)).join('');\n\n logLabel = `Comment by ${log.authorName}`;\n logDescription = serializedComment\n logIcon = \"icon-comment\";\n }\n\n var animationClass = firstIndex != 0 ? ' uk-animation-slide-top-small' : '';\n\n logTableHtml += '
';\n if (log.class === 'comment') {\n logTableHtml += `\n \n \n \n \n `\n } else { logTableHtml += ''; }\n\n logTableHtml += '
';\n logTableHtml += '

' + logLabel + '

';\n\n if (logDescription !== null) {\n logTableHtml += `

${logDescription}

`;\n }\n\n if (log.label == \"down\" && log.reason.detail != null) {\n logTableHtml += '

The reason ' + verb + ' ' + log.reason.detail.short + '.';\n if (log.reason.code.length <= 3) {\n logTableHtml += '' + log.reason.code + '';\n }\n logTableHtml += '

';\n if (log.reason.detail.full !== undefined) {\n logTableHtml += '

' + trans('status.details') + ':' + log.reason.detail.full +'

';\n }\n }\n logTableHtml += '

' + log.dateGMT + ' GMT ' + window.timeZone + '

';\n logTableHtml += '
';\n logTableHtml += '
';\n });\n\n $('.event-table-wrapper').append(logTableHtml);\n\n step = lastIndex - firstIndex;\n firstIndex = lastIndex;\n lastIndex = lastIndex + step;\n}\n\n$(function () {\n\n /* Main script init */\n var cInt = setInterval(countdown, 1000);\n $('.last-updated').text(new Date().toLocaleTimeString());\n callMonitorDetail(true);\n /* END Main script init */\n\n $('#load-more-logs-button').on('click', function () {\n loadMore($('#load-more-logs-button').data('monitor-name'));\n });\n});\n\nfunction callMonitorDetail(callLog) {\n $.ajax({\n type: \"GET\",\n url: window.pspApiPath,\n dataType: \"json\",\n cache: false,\n retryLimit: 2,\n success: function (data) {\n\n var downCount = data.statistics.counts.down;\n var upCount = data.statistics.counts.up;\n var pausedCount = data.statistics.counts.paused;\n var totalCount = data.statistics.counts.total;\n\n $('#totalCount').text(totalCount);\n $('#upCount').text(upCount);\n $('#downCount').text(downCount);\n $('#pausedCount').text(pausedCount);\n\n $(\".psp-main-status-dot\").removeClass('is-grey is-error');\n\n if (upCount == 0 && pausedCount == 0) {\n $(\".psp-main-status-dot\").addClass('is-error');\n } else if (downCount != 0) {\n $(\".psp-main-status-dot\").addClass('is-warning');\n playAlertSound();\n } else if (pausedCount == totalCount) {\n $(\".psp-main-status-dot\").addClass('is-grey');\n }\n\n window.timeZone = data.timezone;\n\n $('title').text(data.monitor.name + ' - ' + data.title);\n\n $(\".psp-main-status-wrap .psp-main-status-dot\").removeClass('is-grey is-error');\n\n if (data.monitor.statusClass == \"success\") {\n $('.psp-main-status').html('' + data.monitor.name + ' ' + trans('common.is') + ' ' + trans('common.operational').toLowerCase() + '');\n } else if (data.monitor.statusClass == \"danger\") {\n $(\".psp-main-status-wrap .psp-main-status-dot\").addClass('is-error');\n $('.psp-main-status').html(data.monitor.name + ' ' + trans('common.is') + ' ' + trans('common.down').toLowerCase() + '');\n playAlertSound();\n } else {\n $('.psp-main-status-wrap .psp-main-status-dot').addClass('is-grey');\n $('.psp-main-status').html(data.monitor.name + ' ' + trans('common.is') + ' ' + trans('common.not_monitored') + '');\n }\n\n var monitorType = data.monitor.type.charAt(0).toUpperCase() + data.monitor.type.slice(1);\n\n\n if (data.monitor.url === null) {\n $('.psp-monitor-interval').text(data.monitor.checkInterval);\n } else {\n var monitorURLhref = data.monitor.url;\n\n if (!data.monitor.url.startsWith('http')) {\n monitorURLhref = \"http://\" + monitorURLhref;\n }\n\n var montiorUrl = data.monitor.url === null ? '' : ' for ' + data.monitor.url + '';\n\n $('.psp-monitor-interval').html(monitorType + ' monitoring' + montiorUrl + ', ' + data.monitor.checkInterval.toLowerCase());\n }\n\n\n\n // Generate status dot for monitor\n\n var statusDot = '';\n if (data.monitor.statusClass = \"success\") {\n statusDot = '
' + trans('common.operational') + '
';\n } else if (data.monitor.statusClass = \"danger\") {\n statusDot = '
' + trans('common.down') + '
';\n } else {\n statusDot = '
' + trans('common.paused') + '
';\n }\n\n var bars = '';\n var days = data.days.reverse();\n var dailyData = data.monitor.dailyRatios.reverse();\n\n var w = window.innerWidth;\n\n var barLimit = 90;\n var svgW = window.compact ? 920 : 880;\n var svgH = window.compact ? 20 : 30;\n var barGap = window.compact ? 10.25 : 9.8;\n var barW = 6;\n\n if (w <= 768) {\n barLimit = 30;\n barGap = 19.8;\n barW = 12;\n svgW = 588;\n svgH = window.compact ? 30 : 60;\n }\n\n var startI = 90 - barLimit;\n\n // Generate bars for monitor\n for (var i = startI; i < 90; i++) {\n var daily = dailyData[i];\n var notMonitored = false;\n var d = new Date(days[i]).getTime() / 1000;\n var dataDisplayDay = daily.ratio + '%';\n\n if (d < data.monitor.createdAt - 86400) {\n notMonitored = true;\n }\n\n /* set up a bar color based on value */\n var fillColor = \"#3bd671\"; // green color\n var fillOpacity = '1';\n\n if (notMonitored == true || daily.label == \"black\") {\n fillColor = \"#687790\";\n dataDisplayDay = trans('common.no_records');\n } else {\n if (daily.ratio < 100 && daily.ratio >= 99) {\n fillColor = \"#3bd671\"; // orange color\n fillOpacity = '0.5';\n } else if (daily.ratio < 99 && daily.ratio >= 95) {\n fillColor = '#f29030'; // orange color\n } else if (daily.ratio < 95) {\n fillColor = '#df484a'; // red color\n }\n }\n\n bars += '' + days[i] + '\\\n ' + dataDisplayDay + '\" />';\n }\n\n // Generate HTML for monitor row\n var monitorHtml = '\\\n
\\\n
\\\n
\\\n ' + data.monitor['90dRatio']['ratio'] + '%\\\n ' + data.monitor['30dRatio']['ratio'] + '%\\\n
\\\n
\\\n
\\\n
\\\n \\\n ' + bars + '\\\n \\\n
\\\n
\\\n
';\n\n $('.psp-uptime-chart').html(monitorHtml);\n\n var pageUrl = DOMPurify.sanitize(window.location.href.replace(location.search, '').replace(/\\/$/, ''));\n $('.psp-calendar-link').attr('href', pageUrl + '/calendar');\n\n if (data.monitor.type != \"Heartbeat\") {\n $('.rt-section').removeClass('uk-hidden');\n }\n\n var monitorName = data.monitor.name;\n\n // Fill overall statistic\n $('#overall-uptime div:nth-child(1) h3').text(data.monitor['1dRatio'].ratio + '%');\n $('#overall-uptime div:nth-child(2) h3').text(data.monitor['7dRatio'].ratio + '%');\n $('#overall-uptime div:nth-child(3) h3').text(data.monitor['30dRatio'].ratio + '%');\n $('#overall-uptime div:nth-child(4) h3').text(data.monitor['90dRatio'].ratio + '%');\n\n // Events\n\n logs = data.monitor.logs;\n\n if (callLog) {\n // This is called on detail page initial load\n loadMore();\n } else {\n // This will add new alert when some is added on refresh\n var logTableHtml;\n var lastRecordDate = $('.event-table-wrapper > div:first-child').data('ts');\n\n if (lastRecordDate) {\n if (lastRecordDate < logs[0].time) {\n $.each(logs, function (i, nLog) {\n var logLabel = trans('status.running_again');\n var logIcon = \"icon-arrow-up-circle\";\n\n if (nLog.label == \"down\") {\n logLabel = monitorName + \" is down for \" + nLog.duration;\n logIcon = \"icon-arrow-down-circle\";\n } else if (nLog.label == \"paused\") {\n logLabel = trans('status.monitor_paused');\n logIcon = \"icon-pause-circle\";\n } else if (nLog.label == \"started\") {\n logLabel = trans('status.monitor_started');\n logIcon = \"icon-play-circle\";\n } else if (nLog.label == \"up\") {\n }\n\n\n if (nLog.time > lastRecordDate) {\n logTableHtml += '
';\n logTableHtml += '';\n logTableHtml += '
';\n logTableHtml += '

' + logLabel + '

';\n logTableHtml += '
' + nLog.date + ' GMT ' + window.timeZone + '
';\n if (nLog.label == \"down\" && nLog.reason.detail != null) {\n logTableHtml += '

' + trans('status.log_reason') + ' ' + nLog.reason.detail.short + ' ' + nLog.reason.code + '

';\n if (nLog.reason.detail.full !== undefined) {\n logTableHtml += '

Details: ' + nLog.reason.detail.full + '

';\n }\n }\n logTableHtml += '
';\n logTableHtml += '
';\n }\n });\n $('.event-table-wrapper').append(logTableHtml);\n }\n }\n }\n\n\n // Monitor detail RT chart\n\n if (data.monitor.type != \"Heartbeat\") {\n var ctxLabels = [];\n var ctxDataWithMeta = [];\n var ctxData = [];\n\n var rtObj = data.monitor.responseTimes;\n\n if (rtObj.length > 0) {\n\n $.each(rtObj, function (i, rt) {\n ctxLabels.push(rt.datetime);\n ctxDataWithMeta.push({ meta: rt.datetime, value: rt.value });\n if (rt.value !== null)\n ctxData.push(rt.value);\n });\n\n var high = Math.round(Math.max(...ctxData) / 100) * 100;\n var highestRT = Math.max(...ctxData);\n var lowestRT = Math.min(...ctxData);\n\n if (rtObj.length > 1) {\n var chart = new Chartist.Line('#chart-container', {\n labels: ctxLabels,\n series: [\n ctxDataWithMeta\n ]\n }, {\n showArea: true,\n fullWidth: true,\n showLabel: false,\n chartPadding: {\n top: 10,\n left: 0,\n bottom: 0,\n right: 0\n },\n axisX: {\n showLabel: false,\n showGrid: false,\n },\n axisY: {\n type: Chartist.FixedScaleAxis,\n labelInterpolationFnc: function (value) {\n return value + 'ms';\n },\n offset: 0,\n position: 'start',\n onlyInteger: true,\n labelOffset: {\n x: 0,\n y: 38\n },\n low: 0,\n ticks =[high / 2]\n },\n lineSmooth: Chartist.Interpolation.cardinal({\n tension: 5,\n fillHoles: false\n }),\n plugins: [\n Chartist.plugins.tooltip({\n anchorToPoint: true,\n date: true\n })\n ],\n });\n\n chart.on('draw', function (context) {\n if (context.type === 'label') {\n context.element.attr({\n width: '50px'\n });\n }\n if (context.type === 'line' || context.type === 'area') {\n context.element.animate({\n d: {\n begin: 1000 * context.index,\n dur: 1000,\n from: context.path.clone().scale(1, 0).translate(0, context.chartRect.height()).stringify(),\n to: context.path.clone().stringify(),\n easing: Chartist.Svg.Easing.easeOutQuint\n }\n });\n }\n $('#chart-container [class*=\"psp-fake-\"]').hide();\n });\n\n } else {\n $('#chart-container').html('
' + trans('common.no_history') + '.
');\n }\n\n } else {\n $('#chart-container').html('
' + trans('common.no_history'));\n }\n\n var avgRT = ctxData.reduce(function (acc, val) { return acc + val; }, 0) / ctxData.length;\n $('#avg-rt').text(avgRT === undefined ? 'N/A' : avgRT.toFixed(2) + 'ms');\n $('#h-rt').text(highestRT === undefined ? 'N/A' : highestRT.toFixed(2) + 'ms');\n $('#l-rt').text(lowestRT === undefined ? 'N/A' : lowestRT.toFixed(2) + 'ms');\n }\n\n\n if (window.location.hash == \"#logs\" && callLog == true) {\n $('html, body').animate({\n scrollTop: $(\"#logs\").offset().top - 50\n }, 400);\n }\n\n },\n error: function (error) {\n console.log(error);\n /*\n if (this.retryLimit > 0) {\n //try again\n $.ajax(this);\n return;\n } else {\n //UIkit.modal('#error-modal').show();\n return;\n }\n \n this.tryCount--;*/\n }\n });\n}\n"]}