diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index 9fc7a3f..2872997 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -67,21 +67,21 @@ class ApiController extends Controller if (! is_null($task)) { // First, we get the first date of the stats // In this case, one month ago - $last_days = Carbon::now()->subDays($days); + $first_day = Carbon::now()->startOfDay()->subDays($days); // Then we get all history for the past month $history = $task ->history() ->orderBy('created_at', 'desc') - ->where('created_at', '>', $last_days->toDateString()) + ->where('created_at', '>', $first_day->toDateString()) ->selectRaw('id, date(created_at) as date, created_at, status, duration, output') ->get() ; // Then we start building an array for the entire month - $stats = []; + $stats = $times = []; $tmpdate = Carbon::now()->subDays($days); do { - $stats[$tmpdate->toDateString()] = [ + $stats['uptime'][$tmpdate->toDateString()] = [ 'up' => 0, 'down' => 0 ]; @@ -90,42 +90,46 @@ class ApiController extends Controller while ($tmpdate->lt(Carbon::now())); // Then we populate the stats data + $prev = null; if (! is_null($history)) { - foreach ($history as $r) { - if (empty($stats[$r->date])) { - $stats[$r->date] = [ + foreach ($history as $k => $r) { + if (empty($stats['uptime'][$r->date])) { + $stats['uptime'][$r->date] = [ 'up' => 0, 'down' => 0 ]; } + // Populating the stats if ($r->status == 1) { - ++$stats[$r->date]['up']; + ++$stats['uptime'][$r->date]['up']; } else { - ++$stats[$r->date]['down']; + ++$stats['uptime'][$r->date]['down']; } - } - } - // Then we populate the history data - if (! is_null($history)) { - $prev = null; + // Populating the response times + if ($r->status == 1) { + array_push($times, [ + 'date' => $r->created_at->toDateTimeString(), + 'duration' => $r->duration ?? 0 + ]); + } - foreach ($history as $k => $h) { // We only take tasks when status has changed between them - if (! is_null($prev) && $h->status == $prev) { + if (! is_null($prev) && $r->status == $prev) { unset($history[$k]); } - $prev = $h->status; + $prev = $r->status; } } + $stats['times'] = array_reverse($times); // Getting the notifications sent $notifications = $task ->notifications() ->with('contact') - ->where('notifications.created_at', '>', $last_days->toDateString()) + ->where('notifications.created_at', '>', $first_day->toDateString()) ->orderBy('notifications.created_at', 'desc') ->get() ; @@ -134,7 +138,8 @@ class ApiController extends Controller 'task' => $task, 'stats' => $stats, 'history' => $history, - 'notifications' => $notifications + 'notifications' => $notifications, + 'first_day' => $first_day->toDateTimeString() ]); } } diff --git a/public/js/app.js b/public/js/app.js index b0b31f4..76530d1 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -376,7 +376,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n task: {\n id: null\n },\n history: null,\n notifications: null,\n refresh: null,\n loader: null,\n chart: {\n render: false,\n days: 15\n },\n series: [{\n data: []\n }],\n noData: {\n text: 'Loading...'\n },\n chartOptions: {\n responsive: [{\n breakpoint: 480,\n options: {\n legend: {\n position: 'bottom',\n offsetX: -10,\n offsetY: 0\n }\n }\n }],\n xaxis: {\n categories: []\n },\n fill: {\n opacity: .9\n }\n }\n };\n },\n methods: {\n statusText: function statusText(status) {\n switch (status) {\n case 1:\n return 'up';\n break;\n\n case 0:\n return 'down';\n break;\n\n default:\n return 'unknown';\n }\n },\n refreshTask: function refreshTask(callback) {\n var _this = this;\n\n this.$http.post('/api/getTask/' + this.task.id, {\n days: this.chart.days\n }).then(function (response) {\n _this.task = response.data.task;\n _this.history = response.data.history;\n _this.notifications = response.data.notifications;\n\n _this.refreshGraph(response.data.stats);\n\n _this.loader.hide();\n }).then(function () {\n if (_this.refresh == null) {\n _this.refresh = window.setInterval(function () {\n _this.refreshTask();\n }, 10000);\n }\n }).then(function () {\n _this.loader.hide();\n });\n },\n refreshGraph: function refreshGraph(stats) {\n var xaxis = [];\n var new_data_a = [];\n var new_data_b = [];\n\n for (var date in stats) {\n xaxis.push(date);\n new_data_a.push(stats[date]['up']);\n new_data_b.push(stats[date]['down']);\n }\n\n this.chartOptions = {\n xaxis: {\n categories: xaxis,\n labels: {\n show: true,\n rotate: -45,\n rotateAlways: true\n }\n },\n chart: {\n type: 'bar',\n height: 350,\n stacked: true,\n stackType: '100%'\n },\n legend: {\n position: 'right',\n offsetX: 0,\n offsetY: 50\n }\n };\n this.series = [{\n name: 'UP',\n data: new_data_a,\n color: '#00955c'\n }, {\n name: 'DOWN',\n data: new_data_b,\n color: '#ef3232'\n }];\n this.chart.render = true;\n }\n },\n mounted: function mounted() {\n var _this$$route$params$i;\n\n this.loader = this.$loading.show();\n this.task.id = (_this$$route$params$i = this.$route.params.id) !== null && _this$$route$params$i !== void 0 ? _this$$route$params$i : null;\n\n if (this.task.id != null) {\n this.refreshTask();\n }\n },\n beforeRouteLeave: function beforeRouteLeave(to, from, next) {\n clearTimeout(this.refresh);\n next();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01WzBdLnJ1bGVzWzBdLnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL3ZpZXdzL3Rhc2tkZXRhaWxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREEsT0FEQTtBQUlBLG1CQUpBO0FBS0EseUJBTEE7QUFNQSxtQkFOQTtBQU9BLGtCQVBBO0FBU0E7QUFDQSxxQkFEQTtBQUVBO0FBRkEsT0FUQTtBQWNBO0FBQ0E7QUFEQSxRQWRBO0FBaUJBO0FBQ0E7QUFEQSxPQWpCQTtBQW9CQTtBQUNBO0FBQ0EseUJBREE7QUFFQTtBQUNBO0FBQ0EsZ0NBREE7QUFFQSwwQkFGQTtBQUdBO0FBSEE7QUFEQTtBQUZBLFVBREE7QUFXQTtBQUNBO0FBREEsU0FYQTtBQWNBO0FBQ0E7QUFEQTtBQWRBO0FBcEJBO0FBdUNBLEdBekNBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQVJBO0FBVUEsS0FaQTtBQWFBO0FBQUE7O0FBQ0E7QUFDQTtBQURBLFNBR0EsSUFIQSxDQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOztBQUNBO0FBQ0EsT0FUQSxFQVVBLElBVkEsQ0FVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBRkEsRUFFQSxLQUZBO0FBR0E7QUFDQSxPQWhCQSxFQWlCQSxJQWpCQSxDQWlCQTtBQUNBO0FBQ0EsT0FuQkE7QUFvQkEsS0FsQ0E7QUFtQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBREE7QUFFQTtBQUNBLHNCQURBO0FBRUEsdUJBRkE7QUFHQTtBQUhBO0FBRkEsU0FEQTtBQVNBO0FBQ0EscUJBREE7QUFFQSxxQkFGQTtBQUdBLHVCQUhBO0FBSUE7QUFKQSxTQVRBO0FBZUE7QUFDQSwyQkFEQTtBQUVBLG9CQUZBO0FBR0E7QUFIQTtBQWZBO0FBcUJBO0FBQ0Esa0JBREE7QUFFQSx3QkFGQTtBQUdBO0FBSEEsU0FLQTtBQUNBLG9CQURBO0FBRUEsd0JBRkE7QUFHQTtBQUhBLE9BTEE7QUFXQTtBQUNBO0FBL0VBLEdBMUNBO0FBMkhBO0FBQUE7O0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQWxJQTtBQW1JQSxrQkFuSUEsNEJBbUlBLEVBbklBLEVBbUlBLElBbklBLEVBbUlBLElBbklBLEVBbUlBO0FBQ0E7QUFDQTtBQUNBO0FBdElBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy92aWV3cy90YXNrZGV0YWlscy52dWU/NzNhNCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDxkaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbnRhaW5lclwiXG5cdFx0XHR2LWlmPVwidGFzay5pZCAhPSBudWxsXCJcblx0XHQ+XG5cdFx0XHQ8aDE+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+e3sgdGFzay50eXBlIH19PC9zcGFuPiBmb3IgaG9zdCA8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPnt7IHRhc2suaG9zdCB9fTwvc3Bhbj5cblx0XHRcdFx0PCEtLSA8cCBjbGFzcz1cImNvbnRleHQtbWVudVwiPjxpbWcgc3JjPVwiL2ltZy9tZW51LnN2Z1wiIHdpZHRoPVwiNDBcIiAvPjwvcD4gLS0+XG5cdFx0XHQ8L2gxPlxuXG5cdFx0XHRTaG93OlxuXHRcdFx0PHNlbGVjdFxuXHRcdFx0XHR2LW1vZGVsPVwiY2hhcnQuZGF5c1wiXG5cdFx0XHRcdEBjaGFuZ2U9XCJyZWZyZXNoVGFza1wiXG5cdFx0XHQ+XG5cdFx0XHRcdDxvcHRpb24gdmFsdWU9XCI3XCI+NyBkYXlzPC9vcHRpb24+XG5cdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIxNVwiPjE1IGRheXM8L29wdGlvbj5cblx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjMwXCI+MzAgZGF5czwvb3B0aW9uPlxuXHRcdFx0PC9zZWxlY3Q+XG5cblx0XHRcdDwhLS0gQ2hhcnQgYmxvY2sgLS0+XG5cdFx0XHQ8ZGl2IGlkPVwiY2hhcnRcIiBjbGFzcz1cInJvdW5kXCI+XG5cdFx0XHRcdDxoMz5VcHRpbWU6IHBhc3Qge3sgY2hhcnQuZGF5cyB9fSBkYXlzPC9oMz5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImJsb2NrLWNvbnRlbnRcIj5cblx0XHRcdFx0XHQ8YXBleGNoYXJ0IGNsYXNzPVwiZ3JhcGhcIiB2LWlmPVwiY2hhcnQucmVuZGVyXCIgdHlwZT1cImJhclwiIGhlaWdodD1cIjM1MFwiIDpvcHRpb25zPVwiY2hhcnRPcHRpb25zXCIgOnNlcmllcz1cInNlcmllc1wiPjwvYXBleGNoYXJ0PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXG5cdFx0XHQ8IS0tIEhpc3RvcnkgYmFja2xvZyAtLT5cblx0XHRcdDxkaXYgY2xhc3M9XCJyb3VuZFwiPlxuXHRcdFx0XHQ8aDM+TGFzdCB7eyBjaGFydC5kYXlzIH19IGRheXMgaGlzdG9yeSBsb2c8L2gzPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYmxvY2stY29udGVudFwiIHYtaWY9XCJoaXN0b3J5XCI+XG5cdFx0XHRcdFx0PHA+PGk+U2hvd2luZyBvbmx5IHJlY29yZHMgd2hlcmUgc3RhdHVzIGhhcyBjaGFuZ2VkPC9pPjwvcD5cblx0XHRcdFx0XHQ8dGFibGUgaWQ9XCJ0YXNrc190YmxcIj5cblx0XHRcdFx0XHRcdDx0aGVhZD5cblx0XHRcdFx0XHRcdFx0PHRyPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjEwJVwiPkRhdGU8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjEwJVwiPlRpbWU8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIipcIj5PdXRwdXQ8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjEwJVwiPkR1cmF0aW9uPC90aD5cblx0XHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIxMCVcIj5TdGF0dXM8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdFx0PC90aGVhZD5cblx0XHRcdFx0XHRcdDx0Ym9keT5cblx0XHRcdFx0XHRcdFx0PHRyXG5cdFx0XHRcdFx0XHRcdFx0di1mb3I9XCJoIGluIGhpc3RvcnlcIlxuXHRcdFx0XHRcdFx0XHRcdHYtYmluZDprZXk9XCJoLmlkXCJcblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdDx0ZD57eyBtb21lbnQoaC5jcmVhdGVkX2F0KS5mb3JtYXQoJ1lZWVktTU0tREQnKSB9fTwvdGQ+XG5cdFx0XHRcdFx0XHRcdFx0PHRkPnt7IG1vbWVudChoLmNyZWF0ZWRfYXQpLmZvcm1hdCgnSEg6bW06c3MnKSB9fTwvdGQ+XG5cdFx0XHRcdFx0XHRcdFx0PHRkPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gdi1pZj1cImgub3V0cHV0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGgub3V0cHV0IH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiB2LWVsc2U+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpPk5vIG91dHB1dDwvaT5cblx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHQ8L3RkPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZD5cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIHYtaWY9XCJoLmR1cmF0aW9uICE9IG51bGxcIj57eyBoLmR1cmF0aW9uKydzJyB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIHYtZWxzZT48aT5ObyBkdXJhdGlvbjwvaT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQgOmNsYXNzPVwic3RhdHVzVGV4dChoLnN0YXR1cylcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbWcgOnNyYz1cIicvaW1nLycrc3RhdHVzVGV4dChoLnN0YXR1cykrJy5zdmcnXCIgd2lkdGg9XCIxNlwiIGFsdD1cIlN0YXR1c1wiIC8+XG5cdFx0XHRcdFx0XHRcdFx0PC90ZD5cblx0XHRcdFx0XHRcdFx0PC90cj5cblx0XHRcdFx0XHRcdDwvdGJvZHk+XG5cdFx0XHRcdFx0PC90YWJsZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxwIHYtZWxzZT48Y2VudGVyPk5vIGhpc3RvcnkgdG8gZGlzcGxheSBoZXJlPC9jZW50ZXI+PC9wPlxuXHRcdFx0PC9kaXY+XG5cblx0XHRcdDwhLS0gTm90aWZpY2F0aW9ucyBibG9jayAtLT5cblx0XHRcdDxkaXYgY2xhc3M9XCJyb3VuZFwiPlxuXHRcdFx0XHQ8aDM+TGFzdCB7eyBjaGFydC5kYXlzIH19IGRheXMgbm90aWZpY2F0aW9ucyBsb2c8L2gzPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYmxvY2stY29udGVudFwiIHYtaWY9XCJub3RpZmljYXRpb25zXCI+XG5cdFx0XHRcdFx0PHRhYmxlIGlkPVwidGFza3NfdGJsXCI+XG5cdFx0XHRcdFx0XHQ8dGhlYWQ+XG5cdFx0XHRcdFx0XHRcdDx0cj5cblx0XHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIyMCVcIj5EYXRlPC90aD5cblx0XHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIyMCVcIj5UaW1lPC90aD5cblx0XHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIqXCI+Rmlyc3RuYW1lPC90aD5cblx0XHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIxMCVcIj5MYXN0bmFtZTwvdGg+XG5cdFx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiMTAlXCI+RW1haWw8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjEwJVwiPlN0YXR1czwvdGg+XG5cdFx0XHRcdFx0XHRcdDwvdHI+XG5cdFx0XHRcdFx0XHQ8L3RoZWFkPlxuXHRcdFx0XHRcdFx0PHRib2R5PlxuXHRcdFx0XHRcdFx0XHQ8dHJcblx0XHRcdFx0XHRcdFx0XHR2LWZvcj1cIm4gaW4gbm90aWZpY2F0aW9uc1wiXG5cdFx0XHRcdFx0XHRcdFx0di1iaW5kOmtleT1cIm4uaWRcIlxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0PHRkPnt7IG1vbWVudChuLmNyZWF0ZWRfYXQpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbW9tZW50KG4uY3JlYXRlZF9hdCkuZm9ybWF0KCdISDptbTpzcycpIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbi5jb250YWN0LmZpcnN0bmFtZSB9fTwvdGQ+XG5cdFx0XHRcdFx0XHRcdFx0PHRkPnt7IG4uY29udGFjdC5zdXJuYW1lIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbi5jb250YWN0LmVtYWlsIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbi5zdGF0dXMgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdFx0PC90Ym9keT5cblx0XHRcdFx0XHQ8L3RhYmxlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PHAgdi1lbHNlPjxjZW50ZXI+Tm8gbm90aWZpY2F0aW9uIHRvIGRpc3BsYXkgaGVyZTwvY2VudGVyPjwvcD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cbiAgICBleHBvcnQgZGVmYXVsdHtcblx0XHRkYXRhOiBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRhc2s6IHtcblx0XHRcdFx0XHRpZDogbnVsbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRoaXN0b3J5OiBudWxsLFxuXHRcdFx0XHRub3RpZmljYXRpb25zOiBudWxsLFxuXHRcdFx0XHRyZWZyZXNoOiBudWxsLFxuXHRcdFx0XHRsb2FkZXI6IG51bGwsXG5cblx0XHRcdFx0Y2hhcnQ6IHtcblx0XHRcdFx0XHRyZW5kZXI6IGZhbHNlLFxuXHRcdFx0XHRcdGRheXM6IDE1XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0c2VyaWVzOiBbe1xuXHRcdFx0XHRcdGRhdGE6IFtdXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRub0RhdGE6IHtcblx0XHRcdFx0XHR0ZXh0OiAnTG9hZGluZy4uLidcblx0XHRcdFx0fSxcblx0XHRcdFx0Y2hhcnRPcHRpb25zOiB7XG5cdFx0XHRcdFx0cmVzcG9uc2l2ZTogW3tcblx0XHRcdFx0XHRcdGJyZWFrcG9pbnQ6IDQ4MCxcblx0XHRcdFx0XHRcdG9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdFx0bGVnZW5kOiB7XG5cdFx0XHRcdFx0XHRcdFx0cG9zaXRpb246ICdib3R0b20nLFxuXHRcdFx0XHRcdFx0XHRcdG9mZnNldFg6IC0xMCxcblx0XHRcdFx0XHRcdFx0XHRvZmZzZXRZOiAwXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHR4YXhpczoge1xuXHRcdFx0XHRcdFx0Y2F0ZWdvcmllczogW10sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmaWxsOiB7XG5cdFx0XHRcdFx0XHRvcGFjaXR5OiAuOVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XG5cdFx0XHRzdGF0dXNUZXh0OiBmdW5jdGlvbiAoc3RhdHVzKSB7XG5cdFx0XHRcdHN3aXRjaCAoc3RhdHVzKSB7XG5cdFx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdFx0cmV0dXJuICd1cCc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0cmV0dXJuICdkb3duJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0cmV0dXJuICd1bmtub3duJztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJlZnJlc2hUYXNrOiBmdW5jdGlvbihjYWxsYmFjaykge1xuXHRcdFx0XHR0aGlzLiRodHRwLnBvc3QoJy9hcGkvZ2V0VGFzay8nK3RoaXMudGFzay5pZCwge1xuXHRcdFx0XHRcdGRheXM6IHRoaXMuY2hhcnQuZGF5c1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbihyZXNwb25zZSA9PiB7XG5cdFx0XHRcdFx0dGhpcy50YXNrIFx0XHRcdD0gcmVzcG9uc2UuZGF0YS50YXNrXG5cdFx0XHRcdFx0dGhpcy5oaXN0b3J5IFx0XHQ9IHJlc3BvbnNlLmRhdGEuaGlzdG9yeVxuXHRcdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uc1x0PSByZXNwb25zZS5kYXRhLm5vdGlmaWNhdGlvbnNcblx0XHRcdFx0XHR0aGlzLnJlZnJlc2hHcmFwaChyZXNwb25zZS5kYXRhLnN0YXRzKVxuXHRcdFx0XHRcdHRoaXMubG9hZGVyLmhpZGUoKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucmVmcmVzaCA9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlZnJlc2ggPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnJlZnJlc2hUYXNrKClcblx0XHRcdFx0XHRcdH0sIDEwMDAwKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9hZGVyLmhpZGUoKVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdHJlZnJlc2hHcmFwaDogZnVuY3Rpb24oc3RhdHMpIHtcblx0XHRcdFx0bGV0IHhheGlzID0gW107XG5cdFx0XHRcdGxldCBuZXdfZGF0YV9hID0gW107XG5cdFx0XHRcdGxldCBuZXdfZGF0YV9iID0gW107XG5cblx0XHRcdFx0Zm9yIChsZXQgZGF0ZSBpbiBzdGF0cykge1xuXHRcdFx0XHRcdHhheGlzLnB1c2goZGF0ZSlcblx0XHRcdFx0XHRuZXdfZGF0YV9hLnB1c2goc3RhdHNbZGF0ZV1bJ3VwJ10pXG5cdFx0XHRcdFx0bmV3X2RhdGFfYi5wdXNoKHN0YXRzW2RhdGVdWydkb3duJ10pXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmNoYXJ0T3B0aW9ucyA9IHtcblx0XHRcdFx0XHR4YXhpczoge1xuXHRcdFx0XHRcdFx0Y2F0ZWdvcmllczogeGF4aXMsXG5cdFx0XHRcdFx0XHRsYWJlbHM6IHtcblx0XHRcdFx0XHRcdFx0c2hvdzogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0cm90YXRlOiAtNDUsXG5cdFx0XHRcdFx0XHRcdHJvdGF0ZUFsd2F5czogdHJ1ZSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGNoYXJ0OiB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYmFyJyxcblx0XHRcdFx0XHRcdGhlaWdodDogMzUwLFxuXHRcdFx0XHRcdFx0c3RhY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0YWNrVHlwZTogJzEwMCUnXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRsZWdlbmQ6IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiAncmlnaHQnLFxuXHRcdFx0XHRcdFx0b2Zmc2V0WDogMCxcblx0XHRcdFx0XHRcdG9mZnNldFk6IDUwXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnNlcmllcyA9IFt7XG5cdFx0XHRcdFx0bmFtZTogJ1VQJyxcblx0XHRcdFx0XHRkYXRhOiBuZXdfZGF0YV9hLFxuXHRcdFx0XHRcdGNvbG9yOiAnIzAwOTU1Yydcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdET1dOJyxcblx0XHRcdFx0XHRkYXRhOiBuZXdfZGF0YV9iLFxuXHRcdFx0XHRcdGNvbG9yOiAnI2VmMzIzMidcblx0XHRcdFx0fV1cblxuXHRcdFx0XHR0aGlzLmNoYXJ0LnJlbmRlciA9IHRydWVcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRtb3VudGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMubG9hZGVyID0gdGhpcy4kbG9hZGluZy5zaG93KClcblx0XHRcdHRoaXMudGFzay5pZCA9IHRoaXMuJHJvdXRlLnBhcmFtcy5pZCA/PyBudWxsXG5cblx0XHRcdGlmICh0aGlzLnRhc2suaWQgIT0gbnVsbCkge1xuXHRcdFx0XHR0aGlzLnJlZnJlc2hUYXNrKClcblx0XHRcdH1cblx0XHR9LFxuXHRcdGJlZm9yZVJvdXRlTGVhdmUodG8sIGZyb20sIG5leHQpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2gpO1xuXHRcdFx0bmV4dCgpO1xuXHRcdH0sXG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG5cbjwvc3R5bGU+XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/views/taskdetails.vue?vue&type=script&lang=js&\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n task: {\n id: null\n },\n history: null,\n notifications: null,\n refresh: null,\n loader: null,\n days: 15,\n first_day: null,\n charts: {\n uptime: {\n render: false,\n series: [{\n data: []\n }],\n noData: {\n text: 'Loading...'\n },\n options: {\n responsive: [{\n breakpoint: 480,\n options: {\n legend: {\n position: 'bottom',\n offsetX: -10,\n offsetY: 0\n }\n }\n }],\n xaxis: {\n categories: []\n },\n fill: {\n opacity: .9\n }\n }\n },\n response: {\n render: true,\n series: [{\n data: [10, 20, 30]\n }],\n noData: {\n text: 'Loading...'\n },\n options: {\n responsive: [{\n breakpoint: 480,\n options: {\n legend: {\n position: 'bottom',\n offsetX: -10,\n offsetY: 0\n }\n }\n }],\n xaxis: {\n categories: ['oct', 'nov', 'dev']\n },\n fill: {\n opacity: .9\n }\n }\n }\n }\n };\n },\n methods: {\n statusText: function statusText(status) {\n switch (status) {\n case 1:\n return 'up';\n break;\n\n case 0:\n return 'down';\n break;\n\n default:\n return 'unknown';\n }\n },\n refreshTask: function refreshTask(callback) {\n var _this = this;\n\n this.$http.post('/api/getTask/' + this.task.id, {\n days: this.days\n }).then(function (response) {\n _this.task = response.data.task;\n _this.history = response.data.history;\n _this.first_day = new Date(response.data.first_day).getTime();\n _this.notifications = response.data.notifications;\n\n _this.refreshUptimeGraph(response.data.stats.uptime);\n\n _this.refreshResponseTimeGraph(response.data.stats.times);\n\n _this.loader.hide();\n }).then(function () {\n if (_this.refresh == null) {\n _this.refresh = window.setInterval(function () {\n _this.refreshTask();\n }, 10000);\n }\n }).then(function () {\n _this.loader.hide();\n });\n },\n refreshResponseTimeGraph: function refreshResponseTimeGraph(stats) {\n var data = [];\n var xaxis = [];\n\n for (var i in stats) {\n xaxis.push(stats[i]['date']);\n data.push(stats[i]['duration']);\n }\n\n console.log(xaxis);\n this.charts.response.options = {\n xaxis: {\n //type: 'datetime',\n //min: this.first_day,\n categories: xaxis,\n //tickAmount: 6,\n labels: {\n show: true,\n rotate: -45 //rotateAlways: true,\n\n }\n },\n tooltip: {\n x: {\n format: \"dd MMM yyyy\"\n }\n },\n chart: {\n type: 'line',\n height: 350,\n stacked: false\n },\n legend: {\n position: 'right',\n offsetX: 0,\n offsetY: 50\n },\n fill: {\n colors: [function (_ref) {\n var value = _ref.value,\n seriesIndex = _ref.seriesIndex,\n w = _ref.w;\n\n if (value < 1) {\n return '#2acdc7';\n } else if (value >= 1 && value < 3) {\n return '#e97a39';\n } else {\n return '#e93949';\n }\n }],\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 100]\n }\n }\n };\n this.charts.response.series = [{\n name: 'Response time',\n data: data\n }];\n },\n refreshUptimeGraph: function refreshUptimeGraph(stats) {\n var xaxis = [];\n var new_data_a = [];\n var new_data_b = [];\n\n for (var date in stats) {\n xaxis.push(new Date(date).getTime());\n new_data_a.push(stats[date]['up']);\n new_data_b.push(stats[date]['down']);\n }\n\n this.charts.uptime.options = {\n xaxis: {\n type: 'datetime',\n min: this.first_day,\n categories: xaxis,\n tickAmount: 6,\n labels: {\n show: true,\n rotate: -45 //rotateAlways: true,\n\n }\n },\n tooltip: {\n x: {\n format: \"yyyy MMM dd\"\n }\n },\n chart: {\n type: 'bar',\n height: 350,\n stacked: true,\n stackType: '100%'\n },\n legend: {\n position: 'right',\n offsetX: 0,\n offsetY: 50\n }\n };\n this.charts.uptime.series = [{\n name: 'UP',\n data: new_data_a,\n color: '#00955c'\n }, {\n name: 'DOWN',\n data: new_data_b,\n color: '#ef3232'\n }];\n this.charts.uptime.render = true;\n }\n },\n mounted: function mounted() {\n var _this$$route$params$i;\n\n //this.loader = this.$loading.show()\n this.task.id = (_this$$route$params$i = this.$route.params.id) !== null && _this$$route$params$i !== void 0 ? _this$$route$params$i : null;\n\n if (this.task.id != null) {\n this.refreshTask();\n }\n },\n beforeRouteLeave: function beforeRouteLeave(to, from, next) {\n clearTimeout(this.refresh);\n next();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01WzBdLnJ1bGVzWzBdLnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL3ZpZXdzL3Rhc2tkZXRhaWxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBLE9BREE7QUFJQSxtQkFKQTtBQUtBLHlCQUxBO0FBTUEsbUJBTkE7QUFPQSxrQkFQQTtBQVFBLGNBUkE7QUFTQSxxQkFUQTtBQVdBO0FBQ0E7QUFDQSx1QkFEQTtBQUVBO0FBQ0E7QUFEQSxZQUZBO0FBS0E7QUFDQTtBQURBLFdBTEE7QUFRQTtBQUNBO0FBQ0EsNkJBREE7QUFFQTtBQUNBO0FBQ0Esb0NBREE7QUFFQSw4QkFGQTtBQUdBO0FBSEE7QUFEQTtBQUZBLGNBREE7QUFXQTtBQUNBO0FBREEsYUFYQTtBQWNBO0FBQ0E7QUFEQTtBQWRBO0FBUkEsU0FEQTtBQTRCQTtBQUNBLHNCQURBO0FBRUE7QUFDQTtBQURBLFlBRkE7QUFLQTtBQUNBO0FBREEsV0FMQTtBQVFBO0FBQ0E7QUFDQSw2QkFEQTtBQUVBO0FBQ0E7QUFDQSxvQ0FEQTtBQUVBLDhCQUZBO0FBR0E7QUFIQTtBQURBO0FBRkEsY0FEQTtBQVdBO0FBQ0EsMkJBQ0EsS0FEQSxFQUNBLEtBREEsRUFDQSxLQURBO0FBREEsYUFYQTtBQWdCQTtBQUNBO0FBREE7QUFoQkE7QUFSQTtBQTVCQTtBQVhBO0FBdUVBLEdBekVBO0FBMEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQVJBO0FBVUEsS0FaQTtBQWFBO0FBQUE7O0FBQ0E7QUFDQTtBQURBLFNBR0EsSUFIQSxDQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7QUFDQSxPQVhBLEVBWUEsSUFaQSxDQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FGQSxFQUVBLEtBRkE7QUFHQTtBQUNBLE9BbEJBLEVBbUJBLElBbkJBLENBbUJBO0FBQ0E7QUFDQSxPQXJCQTtBQXNCQSxLQXBDQTtBQXFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUhBO0FBSUE7QUFDQTtBQUNBLHNCQURBO0FBRUEsdUJBRkEsQ0FHQTs7QUFIQTtBQUxBLFNBREE7QUFZQTtBQUNBO0FBQ0E7QUFEQTtBQURBLFNBWkE7QUFpQkE7QUFDQSxzQkFEQTtBQUVBLHFCQUZBO0FBR0E7QUFIQSxTQWpCQTtBQXNCQTtBQUNBLDJCQURBO0FBRUEsb0JBRkE7QUFHQTtBQUhBLFNBdEJBO0FBMkJBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBLGFBRkEsTUFHQTtBQUNBO0FBQ0EsYUFGQSxNQUdBO0FBQ0E7QUFDQTtBQUNBLFdBVkEsQ0FEQTtBQVlBLDBCQVpBO0FBYUE7QUFDQSw2QkFEQTtBQUVBLDRCQUZBO0FBR0EsMEJBSEE7QUFJQTtBQUpBO0FBYkE7QUEzQkE7QUFnREE7QUFDQSw2QkFEQTtBQUVBO0FBRkE7QUFJQSxLQW5HQTtBQW9HQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQkFEQTtBQUVBLDZCQUZBO0FBR0EsMkJBSEE7QUFJQSx1QkFKQTtBQUtBO0FBQ0Esc0JBREE7QUFFQSx1QkFGQSxDQUdBOztBQUhBO0FBTEEsU0FEQTtBQVlBO0FBQ0E7QUFDQTtBQURBO0FBREEsU0FaQTtBQWlCQTtBQUNBLHFCQURBO0FBRUEscUJBRkE7QUFHQSx1QkFIQTtBQUlBO0FBSkEsU0FqQkE7QUF1QkE7QUFDQSwyQkFEQTtBQUVBLG9CQUZBO0FBR0E7QUFIQTtBQXZCQTtBQTZCQTtBQUNBLGtCQURBO0FBRUEsd0JBRkE7QUFHQTtBQUhBLFNBS0E7QUFDQSxvQkFEQTtBQUVBLHdCQUZBO0FBR0E7QUFIQSxPQUxBO0FBV0E7QUFDQTtBQXhKQSxHQTFFQTtBQW9PQTtBQUFBOztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0EzT0E7QUE0T0Esa0JBNU9BLDRCQTRPQSxFQTVPQSxFQTRPQSxJQTVPQSxFQTRPQSxJQTVPQSxFQTRPQTtBQUNBO0FBQ0E7QUFDQTtBQS9PQSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvdmlld3MvdGFza2RldGFpbHMudnVlPzczYTQiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIlxuXHRcdFx0di1pZj1cInRhc2suaWQgIT0gbnVsbFwiXG5cdFx0PlxuXHRcdFx0PGgxPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPnt7IHRhc2sudHlwZSB9fTwvc3Bhbj4gZm9yIGhvc3QgPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj57eyB0YXNrLmhvc3QgfX08L3NwYW4+XG5cdFx0XHRcdDwhLS0gPHAgY2xhc3M9XCJjb250ZXh0LW1lbnVcIj48aW1nIHNyYz1cIi9pbWcvbWVudS5zdmdcIiB3aWR0aD1cIjQwXCIgLz48L3A+IC0tPlxuXHRcdFx0PC9oMT5cblxuXHRcdFx0U2hvdzpcblx0XHRcdDxzZWxlY3Rcblx0XHRcdFx0di1tb2RlbD1cImRheXNcIlxuXHRcdFx0XHRAY2hhbmdlPVwicmVmcmVzaFRhc2tcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiN1wiPjcgZGF5czwvb3B0aW9uPlxuXHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTVcIj4xNSBkYXlzPC9vcHRpb24+XG5cdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIzMFwiPjMwIGRheXM8L29wdGlvbj5cblx0XHRcdDwvc2VsZWN0PlxuXG5cdFx0XHQ8IS0tIFVwdGltZSBjaGFydCBibG9jayAtLT5cblx0XHRcdDxkaXYgaWQ9XCJjaGFydFwiIGNsYXNzPVwicm91bmRcIj5cblx0XHRcdFx0PGgzPkxhc3Qge3sgZGF5cyB9fSBkYXlzIHVwdGltZTwvaDM+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJibG9jay1jb250ZW50XCI+XG5cdFx0XHRcdFx0PGFwZXhjaGFydCBjbGFzcz1cImdyYXBoXCIgdi1pZj1cImNoYXJ0cy51cHRpbWUucmVuZGVyXCIgdHlwZT1cImJhclwiIGhlaWdodD1cIjM1MFwiIDpvcHRpb25zPVwiY2hhcnRzLnVwdGltZS5vcHRpb25zXCIgOnNlcmllcz1cImNoYXJ0cy51cHRpbWUuc2VyaWVzXCI+PC9hcGV4Y2hhcnQ+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cblx0XHRcdDwhLS0gUmVzcG9uc2UgdGltZSBjaGFydCBibG9jayAtLT5cblx0XHRcdDxkaXYgaWQ9XCJjaGFydFwiIGNsYXNzPVwicm91bmRcIj5cblx0XHRcdFx0PGgzPkxhc3Qge3sgZGF5cyB9fSBkYXlzIHJlc3BvbnNlIHRpbWU8L2gzPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYmxvY2stY29udGVudFwiPlxuXHRcdFx0XHRcdDxhcGV4Y2hhcnQgY2xhc3M9XCJncmFwaFwiIHYtaWY9XCJjaGFydHMucmVzcG9uc2UucmVuZGVyXCIgdHlwZT1cImFyZWFcIiBoZWlnaHQ9XCIzNTBcIiA6b3B0aW9ucz1cImNoYXJ0cy5yZXNwb25zZS5vcHRpb25zXCIgOnNlcmllcz1cImNoYXJ0cy5yZXNwb25zZS5zZXJpZXNcIj48L2FwZXhjaGFydD5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblxuXG5cblx0XHRcdDwhLS0gSGlzdG9yeSBiYWNrbG9nIC0tPlxuXHRcdFx0PGRpdiBjbGFzcz1cInJvdW5kXCI+XG5cdFx0XHRcdDxoMz5MYXN0IHt7IGRheXMgfX0gZGF5cyBoaXN0b3J5IGxvZzwvaDM+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJibG9jay1jb250ZW50XCIgdi1pZj1cImhpc3RvcnlcIj5cblx0XHRcdFx0XHQ8cD48aT5TaG93aW5nIG9ubHkgcmVjb3JkcyB3aGVyZSBzdGF0dXMgaGFzIGNoYW5nZWQ8L2k+PC9wPlxuXHRcdFx0XHRcdDx0YWJsZSBpZD1cInRhc2tzX3RibFwiPlxuXHRcdFx0XHRcdFx0PHRoZWFkPlxuXHRcdFx0XHRcdFx0XHQ8dHI+XG5cdFx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiMTAlXCI+RGF0ZTwvdGg+XG5cdFx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiMTAlXCI+VGltZTwvdGg+XG5cdFx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiKlwiPk91dHB1dDwvdGg+XG5cdFx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiMTAlXCI+RHVyYXRpb248L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjEwJVwiPlN0YXR1czwvdGg+XG5cdFx0XHRcdFx0XHRcdDwvdHI+XG5cdFx0XHRcdFx0XHQ8L3RoZWFkPlxuXHRcdFx0XHRcdFx0PHRib2R5PlxuXHRcdFx0XHRcdFx0XHQ8dHJcblx0XHRcdFx0XHRcdFx0XHR2LWZvcj1cImggaW4gaGlzdG9yeVwiXG5cdFx0XHRcdFx0XHRcdFx0di1iaW5kOmtleT1cImguaWRcIlxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0PHRkPnt7IG1vbWVudChoLmNyZWF0ZWRfYXQpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbW9tZW50KGguY3JlYXRlZF9hdCkuZm9ybWF0KCdISDptbTpzcycpIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiB2LWlmPVwiaC5vdXRwdXRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgaC5vdXRwdXQgfX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIHYtZWxzZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGk+Tm8gb3V0cHV0PC9pPlxuXHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHRcdFx0PHRkPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gdi1pZj1cImguZHVyYXRpb24gIT0gbnVsbFwiPnt7IGguZHVyYXRpb24rJ3MnIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gdi1lbHNlPjxpPk5vIGR1cmF0aW9uPC9pPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHQ8L3RkPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZCA6Y2xhc3M9XCJzdGF0dXNUZXh0KGguc3RhdHVzKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGltZyA6c3JjPVwiJy9pbWcvJytzdGF0dXNUZXh0KGguc3RhdHVzKSsnLnN2ZydcIiB3aWR0aD1cIjE2XCIgYWx0PVwiU3RhdHVzXCIgLz5cblx0XHRcdFx0XHRcdFx0XHQ8L3RkPlxuXHRcdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdFx0PC90Ym9keT5cblx0XHRcdFx0XHQ8L3RhYmxlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PHAgdi1lbHNlPjxjZW50ZXI+Tm8gaGlzdG9yeSB0byBkaXNwbGF5IGhlcmU8L2NlbnRlcj48L3A+XG5cdFx0XHQ8L2Rpdj5cblxuXHRcdFx0PCEtLSBOb3RpZmljYXRpb25zIGJsb2NrIC0tPlxuXHRcdFx0PGRpdiBjbGFzcz1cInJvdW5kXCI+XG5cdFx0XHRcdDxoMz5MYXN0IHt7IGRheXMgfX0gZGF5cyBub3RpZmljYXRpb25zIGxvZzwvaDM+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJibG9jay1jb250ZW50XCIgdi1pZj1cIm5vdGlmaWNhdGlvbnNcIj5cblx0XHRcdFx0XHQ8dGFibGUgaWQ9XCJ0YXNrc190YmxcIj5cblx0XHRcdFx0XHRcdDx0aGVhZD5cblx0XHRcdFx0XHRcdFx0PHRyPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjIwJVwiPkRhdGU8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjIwJVwiPlRpbWU8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIipcIj5GaXJzdG5hbWU8L3RoPlxuXHRcdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjEwJVwiPkxhc3RuYW1lPC90aD5cblx0XHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIxMCVcIj5FbWFpbDwvdGg+XG5cdFx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiMTAlXCI+U3RhdHVzPC90aD5cblx0XHRcdFx0XHRcdFx0PC90cj5cblx0XHRcdFx0XHRcdDwvdGhlYWQ+XG5cdFx0XHRcdFx0XHQ8dGJvZHk+XG5cdFx0XHRcdFx0XHRcdDx0clxuXHRcdFx0XHRcdFx0XHRcdHYtZm9yPVwibiBpbiBub3RpZmljYXRpb25zXCJcblx0XHRcdFx0XHRcdFx0XHR2LWJpbmQ6a2V5PVwibi5pZFwiXG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbW9tZW50KG4uY3JlYXRlZF9hdCkuZm9ybWF0KCdZWVlZLU1NLUREJykgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZD57eyBtb21lbnQobi5jcmVhdGVkX2F0KS5mb3JtYXQoJ0hIOm1tOnNzJykgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZD57eyBuLmNvbnRhY3QuZmlyc3RuYW1lIH19PC90ZD5cblx0XHRcdFx0XHRcdFx0XHQ8dGQ+e3sgbi5jb250YWN0LnN1cm5hbWUgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZD57eyBuLmNvbnRhY3QuZW1haWwgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZD57eyBuLnN0YXR1cyB9fTwvdGQ+XG5cdFx0XHRcdFx0XHRcdDwvdHI+XG5cdFx0XHRcdFx0XHQ8L3Rib2R5PlxuXHRcdFx0XHRcdDwvdGFibGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8cCB2LWVsc2U+PGNlbnRlcj5ObyBub3RpZmljYXRpb24gdG8gZGlzcGxheSBoZXJlPC9jZW50ZXI+PC9wPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cblxuICAgIGV4cG9ydCBkZWZhdWx0e1xuXHRcdGRhdGE6IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGFzazoge1xuXHRcdFx0XHRcdGlkOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGhpc3Rvcnk6IG51bGwsXG5cdFx0XHRcdG5vdGlmaWNhdGlvbnM6IG51bGwsXG5cdFx0XHRcdHJlZnJlc2g6IG51bGwsXG5cdFx0XHRcdGxvYWRlcjogbnVsbCxcblx0XHRcdFx0ZGF5czogMTUsXG5cdFx0XHRcdGZpcnN0X2RheTogbnVsbCxcblxuXHRcdFx0XHRjaGFydHM6IHtcblx0XHRcdFx0XHR1cHRpbWU6IHtcblx0XHRcdFx0XHRcdHJlbmRlcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRzZXJpZXM6IFt7XG5cdFx0XHRcdFx0XHRcdGRhdGE6IFtdXG5cdFx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRcdG5vRGF0YToge1xuXHRcdFx0XHRcdFx0XHR0ZXh0OiAnTG9hZGluZy4uLidcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNpdmU6IFt7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWtwb2ludDogNDgwLFxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGxlZ2VuZDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogJ2JvdHRvbScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9mZnNldFg6IC0xMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0b2Zmc2V0WTogMFxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fV0sXG5cdFx0XHRcdFx0XHRcdHhheGlzOiB7XG5cdFx0XHRcdFx0XHRcdFx0Y2F0ZWdvcmllczogW10sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGZpbGw6IHtcblx0XHRcdFx0XHRcdFx0XHRvcGFjaXR5OiAuOVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHJlc3BvbnNlOiB7XG5cdFx0XHRcdFx0XHRyZW5kZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRzZXJpZXM6IFt7XG5cdFx0XHRcdFx0XHRcdGRhdGE6IFsxMCwgMjAsIDMwXVxuXHRcdFx0XHRcdFx0fV0sXG5cdFx0XHRcdFx0XHRub0RhdGE6IHtcblx0XHRcdFx0XHRcdFx0dGV4dDogJ0xvYWRpbmcuLi4nXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b3B0aW9uczoge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zaXZlOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrcG9pbnQ6IDQ4MCxcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZWdlbmQ6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cG9zaXRpb246ICdib3R0b20nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvZmZzZXRYOiAtMTAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9mZnNldFk6IDBcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdFx0XHR4YXhpczoge1xuXHRcdFx0XHRcdFx0XHRcdGNhdGVnb3JpZXM6IFtcblx0XHRcdFx0XHRcdFx0XHRcdCdvY3QnLCAnbm92JywgJ2Rldidcblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmaWxsOiB7XG5cdFx0XHRcdFx0XHRcdFx0b3BhY2l0eTogLjlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0c3RhdHVzVGV4dDogZnVuY3Rpb24gKHN0YXR1cykge1xuXHRcdFx0XHRzd2l0Y2ggKHN0YXR1cykge1xuXHRcdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRcdHJldHVybiAndXAnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdHJldHVybiAnZG93bic7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHJldHVybiAndW5rbm93bic7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyZWZyZXNoVGFzazogZnVuY3Rpb24oY2FsbGJhY2spIHtcblx0XHRcdFx0dGhpcy4kaHR0cC5wb3N0KCcvYXBpL2dldFRhc2svJyt0aGlzLnRhc2suaWQsIHtcblx0XHRcdFx0XHRkYXlzOiB0aGlzLmRheXNcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4ocmVzcG9uc2UgPT4ge1xuXHRcdFx0XHRcdHRoaXMudGFzayBcdFx0XHQ9IHJlc3BvbnNlLmRhdGEudGFza1xuXHRcdFx0XHRcdHRoaXMuaGlzdG9yeSBcdFx0PSByZXNwb25zZS5kYXRhLmhpc3Rvcnlcblx0XHRcdFx0XHR0aGlzLmZpcnN0X2RheVx0XHQ9IG5ldyBEYXRlKHJlc3BvbnNlLmRhdGEuZmlyc3RfZGF5KS5nZXRUaW1lKCk7XG5cdFx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb25zXHQ9IHJlc3BvbnNlLmRhdGEubm90aWZpY2F0aW9uc1xuXHRcdFx0XHRcdHRoaXMucmVmcmVzaFVwdGltZUdyYXBoKHJlc3BvbnNlLmRhdGEuc3RhdHMudXB0aW1lKVxuXHRcdFx0XHRcdHRoaXMucmVmcmVzaFJlc3BvbnNlVGltZUdyYXBoKHJlc3BvbnNlLmRhdGEuc3RhdHMudGltZXMpXG5cdFx0XHRcdFx0dGhpcy5sb2FkZXIuaGlkZSgpXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5yZWZyZXNoID09IG51bGwpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVmcmVzaCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucmVmcmVzaFRhc2soKVxuXHRcdFx0XHRcdFx0fSwgMTAwMDApXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5sb2FkZXIuaGlkZSgpXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0cmVmcmVzaFJlc3BvbnNlVGltZUdyYXBoOiBmdW5jdGlvbihzdGF0cykge1xuXHRcdFx0XHRsZXQgZGF0YSA9IFtdO1xuXHRcdFx0XHRsZXQgeGF4aXMgPSBbXTtcblxuXHRcdFx0XHRmb3IgKGxldCBpIGluIHN0YXRzKSB7XG5cdFx0XHRcdFx0eGF4aXMucHVzaChzdGF0c1tpXVsnZGF0ZSddKVxuXHRcdFx0XHRcdGRhdGEucHVzaChzdGF0c1tpXVsnZHVyYXRpb24nXSlcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zb2xlLmxvZyh4YXhpcylcblxuXHRcdFx0XHR0aGlzLmNoYXJ0cy5yZXNwb25zZS5vcHRpb25zID0ge1xuXHRcdFx0XHRcdHhheGlzOiB7XG5cdFx0XHRcdFx0XHQvL3R5cGU6ICdkYXRldGltZScsXG5cdFx0XHRcdFx0XHQvL21pbjogdGhpcy5maXJzdF9kYXksXG5cdFx0XHRcdFx0XHRjYXRlZ29yaWVzOiB4YXhpcyxcblx0XHRcdFx0XHRcdC8vdGlja0Ftb3VudDogNixcblx0XHRcdFx0XHRcdGxhYmVsczoge1xuXHRcdFx0XHRcdFx0XHRzaG93OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRyb3RhdGU6IC00NSxcblx0XHRcdFx0XHRcdFx0Ly9yb3RhdGVBbHdheXM6IHRydWUsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0b29sdGlwOiB7XG5cdFx0XHRcdFx0XHR4OiB7XG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogXCJkZCBNTU0geXl5eVwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjaGFydDoge1xuXHRcdFx0XHRcdFx0dHlwZTogJ2xpbmUnLFxuXHRcdFx0XHRcdFx0aGVpZ2h0OiAzNTAsXG5cdFx0XHRcdFx0XHRzdGFja2VkOiBmYWxzZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bGVnZW5kOiB7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRcdG9mZnNldFg6IDAsXG5cdFx0XHRcdFx0XHRvZmZzZXRZOiA1MFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmlsbDoge1xuXHRcdFx0XHRcdFx0Y29sb3JzOiBbZnVuY3Rpb24oeyB2YWx1ZSwgc2VyaWVzSW5kZXgsIHcgfSkge1xuXHRcdFx0XHRcdFx0XHRpZih2YWx1ZSA8IDEpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJyMyYWNkYzcnXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAodmFsdWUgPj0gMSAmJiB2YWx1ZSA8IDMpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJyNlOTdhMzknXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICcjZTkzOTQ5J1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRcdHR5cGU6IFwiZ3JhZGllbnRcIixcblx0XHRcdFx0XHRcdGdyYWRpZW50OiB7XG5cdFx0XHRcdFx0XHRcdHNoYWRlSW50ZW5zaXR5OiAxLFxuXHRcdFx0XHRcdFx0XHRvcGFjaXR5RnJvbTogMC43LFxuXHRcdFx0XHRcdFx0XHRvcGFjaXR5VG86IDAuOSxcblx0XHRcdFx0XHRcdFx0c3RvcHM6IFswLCAxMDBdXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuY2hhcnRzLnJlc3BvbnNlLnNlcmllcyA9IFt7XG5cdFx0XHRcdFx0bmFtZTogJ1Jlc3BvbnNlIHRpbWUnLFxuXHRcdFx0XHRcdGRhdGE6IGRhdGFcblx0XHRcdFx0fV1cblx0XHRcdH0sXG5cdFx0XHRyZWZyZXNoVXB0aW1lR3JhcGg6IGZ1bmN0aW9uKHN0YXRzKSB7XG5cdFx0XHRcdGxldCB4YXhpcyA9IFtdO1xuXHRcdFx0XHRsZXQgbmV3X2RhdGFfYSA9IFtdO1xuXHRcdFx0XHRsZXQgbmV3X2RhdGFfYiA9IFtdO1xuXG5cdFx0XHRcdGZvciAobGV0IGRhdGUgaW4gc3RhdHMpIHtcblx0XHRcdFx0XHR4YXhpcy5wdXNoKG5ldyBEYXRlKGRhdGUpLmdldFRpbWUoKSlcblx0XHRcdFx0XHRuZXdfZGF0YV9hLnB1c2goc3RhdHNbZGF0ZV1bJ3VwJ10pXG5cdFx0XHRcdFx0bmV3X2RhdGFfYi5wdXNoKHN0YXRzW2RhdGVdWydkb3duJ10pXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmNoYXJ0cy51cHRpbWUub3B0aW9ucyA9IHtcblx0XHRcdFx0XHR4YXhpczoge1xuXHRcdFx0XHRcdFx0dHlwZTogJ2RhdGV0aW1lJyxcblx0XHRcdFx0XHRcdG1pbjogdGhpcy5maXJzdF9kYXksXG5cdFx0XHRcdFx0XHRjYXRlZ29yaWVzOiB4YXhpcyxcblx0XHRcdFx0XHRcdHRpY2tBbW91bnQ6IDYsXG5cdFx0XHRcdFx0XHRsYWJlbHM6IHtcblx0XHRcdFx0XHRcdFx0c2hvdzogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0cm90YXRlOiAtNDUsXG5cdFx0XHRcdFx0XHRcdC8vcm90YXRlQWx3YXlzOiB0cnVlLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dG9vbHRpcDoge1xuXHRcdFx0XHRcdFx0eDoge1xuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6IFwieXl5eSBNTU0gZGRcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Y2hhcnQ6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICdiYXInLFxuXHRcdFx0XHRcdFx0aGVpZ2h0OiAzNTAsXG5cdFx0XHRcdFx0XHRzdGFja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0c3RhY2tUeXBlOiAnMTAwJSdcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGxlZ2VuZDoge1xuXHRcdFx0XHRcdFx0cG9zaXRpb246ICdyaWdodCcsXG5cdFx0XHRcdFx0XHRvZmZzZXRYOiAwLFxuXHRcdFx0XHRcdFx0b2Zmc2V0WTogNTBcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuY2hhcnRzLnVwdGltZS5zZXJpZXMgPSBbe1xuXHRcdFx0XHRcdG5hbWU6ICdVUCcsXG5cdFx0XHRcdFx0ZGF0YTogbmV3X2RhdGFfYSxcblx0XHRcdFx0XHRjb2xvcjogJyMwMDk1NWMnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnRE9XTicsXG5cdFx0XHRcdFx0ZGF0YTogbmV3X2RhdGFfYixcblx0XHRcdFx0XHRjb2xvcjogJyNlZjMyMzInXG5cdFx0XHRcdH1dXG5cblx0XHRcdFx0dGhpcy5jaGFydHMudXB0aW1lLnJlbmRlciA9IHRydWVcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRtb3VudGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdC8vdGhpcy5sb2FkZXIgPSB0aGlzLiRsb2FkaW5nLnNob3coKVxuXHRcdFx0dGhpcy50YXNrLmlkID0gdGhpcy4kcm91dGUucGFyYW1zLmlkID8/IG51bGxcblxuXHRcdFx0aWYgKHRoaXMudGFzay5pZCAhPSBudWxsKSB7XG5cdFx0XHRcdHRoaXMucmVmcmVzaFRhc2soKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0YmVmb3JlUm91dGVMZWF2ZSh0bywgZnJvbSwgbmV4dCkge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaCk7XG5cdFx0XHRuZXh0KCk7XG5cdFx0fSxcbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cblxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/views/taskdetails.vue?vue&type=script&lang=js&\n"); /***/ }), @@ -2334,7 +2334,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [\n _vm.task.id != null\n ? _c(\"div\", { staticClass: \"container\" }, [\n _c(\"h1\", [\n _c(\"span\", { staticClass: \"highlight\" }, [\n _vm._v(_vm._s(_vm.task.type)),\n ]),\n _vm._v(\" for host \"),\n _c(\"span\", { staticClass: \"highlight\" }, [\n _vm._v(_vm._s(_vm.task.host)),\n ]),\n ]),\n _vm._v(\"\\n\\n\\t\\tShow:\\n\\t\\t\"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.chart.days,\n expression: \"chart.days\",\n },\n ],\n on: {\n change: [\n function ($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function (o) {\n return o.selected\n })\n .map(function (o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.chart,\n \"days\",\n $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n )\n },\n _vm.refreshTask,\n ],\n },\n },\n [\n _c(\"option\", { attrs: { value: \"7\" } }, [_vm._v(\"7 days\")]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"15\" } }, [_vm._v(\"15 days\")]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"30\" } }, [_vm._v(\"30 days\")]),\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\", attrs: { id: \"chart\" } }, [\n _c(\"h3\", [\n _vm._v(\"Uptime: past \" + _vm._s(_vm.chart.days) + \" days\"),\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"block-content\" },\n [\n _vm.chart.render\n ? _c(\"apexchart\", {\n staticClass: \"graph\",\n attrs: {\n type: \"bar\",\n height: \"350\",\n options: _vm.chartOptions,\n series: _vm.series,\n },\n })\n : _vm._e(),\n ],\n 1\n ),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\" }, [\n _c(\"h3\", [\n _vm._v(\"Last \" + _vm._s(_vm.chart.days) + \" days history log\"),\n ]),\n _vm._v(\" \"),\n _vm.history\n ? _c(\"div\", { staticClass: \"block-content\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"table\", { attrs: { id: \"tasks_tbl\" } }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.history, function (h) {\n return _c(\"tr\", { key: h.id }, [\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(h.created_at).format(\"YYYY-MM-DD\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(h.created_at).format(\"HH:mm:ss\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n h.output\n ? _c(\"span\", [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\" +\n _vm._s(h.output) +\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n ),\n ])\n : _c(\"span\", [_c(\"i\", [_vm._v(\"No output\")])]),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n h.duration != null\n ? _c(\"span\", [_vm._v(_vm._s(h.duration + \"s\"))])\n : _c(\"span\", [_c(\"i\", [_vm._v(\"No duration\")])]),\n ]),\n _vm._v(\" \"),\n _c(\"td\", { class: _vm.statusText(h.status) }, [\n _c(\"img\", {\n attrs: {\n src:\n \"/img/\" + _vm.statusText(h.status) + \".svg\",\n width: \"16\",\n alt: \"Status\",\n },\n }),\n ]),\n ])\n }),\n 0\n ),\n ]),\n ])\n : _c(\n \"p\",\n [_c(\"center\", [_vm._v(\"No history to display here\")])],\n 1\n ),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\" }, [\n _c(\"h3\", [\n _vm._v(\n \"Last \" + _vm._s(_vm.chart.days) + \" days notifications log\"\n ),\n ]),\n _vm._v(\" \"),\n _vm.notifications\n ? _c(\"div\", { staticClass: \"block-content\" }, [\n _c(\"table\", { attrs: { id: \"tasks_tbl\" } }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.notifications, function (n) {\n return _c(\"tr\", { key: n.id }, [\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(n.created_at).format(\"YYYY-MM-DD\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(n.created_at).format(\"HH:mm:ss\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.contact.firstname))]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.contact.surname))]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.contact.email))]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.status))]),\n ])\n }),\n 0\n ),\n ]),\n ])\n : _c(\n \"p\",\n [_c(\"center\", [_vm._v(\"No notification to display here\")])],\n 1\n ),\n ]),\n ])\n : _vm._e(),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _c(\"i\", [_vm._v(\"Showing only records where status has changed\")]),\n ])\n },\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Date\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Time\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"*\" } }, [_vm._v(\"Output\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Duration\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Status\")]),\n ]),\n ])\n },\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { width: \"20%\" } }, [_vm._v(\"Date\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"20%\" } }, [_vm._v(\"Time\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"*\" } }, [_vm._v(\"Firstname\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Lastname\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Email\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Status\")]),\n ]),\n ])\n },\n]\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvdmlld3MvdGFza2RldGFpbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWEzNzhiZjE4JnNjb3BlZD10cnVlJi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwwQkFBMEI7QUFDOUM7QUFDQSx5QkFBeUIsMEJBQTBCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwwQkFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLGVBQWU7QUFDZixhQUFhO0FBQ2I7QUFDQSw2QkFBNkIsU0FBUyxjQUFjO0FBQ3BEO0FBQ0EsNkJBQTZCLFNBQVMsZUFBZTtBQUNyRDtBQUNBLDZCQUE2QixTQUFTLGVBQWU7QUFDckQ7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLCtCQUErQixlQUFlO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4QkFBOEI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0JBQXNCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsOEJBQThCO0FBQzFEO0FBQ0E7QUFDQSxnQ0FBZ0MsU0FBUyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxXQUFXO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGlDQUFpQztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzQkFBc0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsOEJBQThCO0FBQzFELGdDQUFnQyxTQUFTLG1CQUFtQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLFdBQVc7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGNBQWM7QUFDMUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxjQUFjO0FBQzFDO0FBQ0EsbUJBQW1CLFNBQVMsZ0JBQWdCO0FBQzVDO0FBQ0EsbUJBQW1CLFNBQVMsZ0JBQWdCO0FBQzVDO0FBQ0EsbUJBQW1CLFNBQVMsZ0JBQWdCO0FBQzVDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy92aWV3cy90YXNrZGV0YWlscy52dWU/NjU2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCBbXG4gICAgX3ZtLnRhc2suaWQgIT0gbnVsbFxuICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNvbnRhaW5lclwiIH0sIFtcbiAgICAgICAgICBfYyhcImgxXCIsIFtcbiAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImhpZ2hsaWdodFwiIH0sIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udGFzay50eXBlKSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBmb3IgaG9zdCBcIiksXG4gICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJoaWdobGlnaHRcIiB9LCBbXG4gICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnRhc2suaG9zdCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiXFxuXFxuXFx0XFx0U2hvdzpcXG5cXHRcXHRcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmNoYXJ0LmRheXMsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImNoYXJ0LmRheXNcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGNoYW5nZTogW1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsIGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5zZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5jaGFydCxcbiAgICAgICAgICAgICAgICAgICAgICBcImRheXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF92bS5yZWZyZXNoVGFzayxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJvcHRpb25cIiwgeyBhdHRyczogeyB2YWx1ZTogXCI3XCIgfSB9LCBbX3ZtLl92KFwiNyBkYXlzXCIpXSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwib3B0aW9uXCIsIHsgYXR0cnM6IHsgdmFsdWU6IFwiMTVcIiB9IH0sIFtfdm0uX3YoXCIxNSBkYXlzXCIpXSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwib3B0aW9uXCIsIHsgYXR0cnM6IHsgdmFsdWU6IFwiMzBcIiB9IH0sIFtfdm0uX3YoXCIzMCBkYXlzXCIpXSksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwicm91bmRcIiwgYXR0cnM6IHsgaWQ6IFwiY2hhcnRcIiB9IH0sIFtcbiAgICAgICAgICAgIF9jKFwiaDNcIiwgW1xuICAgICAgICAgICAgICBfdm0uX3YoXCJVcHRpbWU6IHBhc3QgXCIgKyBfdm0uX3MoX3ZtLmNoYXJ0LmRheXMpICsgXCIgZGF5c1wiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImJsb2NrLWNvbnRlbnRcIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX3ZtLmNoYXJ0LnJlbmRlclxuICAgICAgICAgICAgICAgICAgPyBfYyhcImFwZXhjaGFydFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZ3JhcGhcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJiYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIzNTBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5jaGFydE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IF92bS5zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvdW5kXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJoM1wiLCBbXG4gICAgICAgICAgICAgIF92bS5fdihcIkxhc3QgXCIgKyBfdm0uX3MoX3ZtLmNoYXJ0LmRheXMpICsgXCIgZGF5cyBoaXN0b3J5IGxvZ1wiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF92bS5oaXN0b3J5XG4gICAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJibG9jay1jb250ZW50XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl9tKDApLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidGFibGVcIiwgeyBhdHRyczogeyBpZDogXCJ0YXNrc190YmxcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9tKDEpLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInRib2R5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5oaXN0b3J5LCBmdW5jdGlvbiAoaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwidHJcIiwgeyBrZXk6IGguaWQgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5tb21lbnQoaC5jcmVhdGVkX2F0KS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1vbWVudChoLmNyZWF0ZWRfYXQpLmZvcm1hdChcIkhIOm1tOnNzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgub3V0cHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhoLm91dHB1dCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2MoXCJzcGFuXCIsIFtfYyhcImlcIiwgW192bS5fdihcIk5vIG91dHB1dFwiKV0pXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmR1cmF0aW9uICE9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtfdm0uX3YoX3ZtLl9zKGguZHVyYXRpb24gKyBcInNcIikpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2MoXCJzcGFuXCIsIFtfYyhcImlcIiwgW192bS5fdihcIk5vIGR1cmF0aW9uXCIpXSldKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgeyBjbGFzczogX3ZtLnN0YXR1c1RleHQoaC5zdGF0dXMpIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIvaW1nL1wiICsgX3ZtLnN0YXR1c1RleHQoaC5zdGF0dXMpICsgXCIuc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJTdGF0dXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF9jKFxuICAgICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgICBbX2MoXCJjZW50ZXJcIiwgW192bS5fdihcIk5vIGhpc3RvcnkgdG8gZGlzcGxheSBoZXJlXCIpXSldLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvdW5kXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJoM1wiLCBbXG4gICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICBcIkxhc3QgXCIgKyBfdm0uX3MoX3ZtLmNoYXJ0LmRheXMpICsgXCIgZGF5cyBub3RpZmljYXRpb25zIGxvZ1wiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfdm0ubm90aWZpY2F0aW9uc1xuICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYmxvY2stY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidGFibGVcIiwgeyBhdHRyczogeyBpZDogXCJ0YXNrc190YmxcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9tKDIpLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInRib2R5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5ub3RpZmljYXRpb25zLCBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwidHJcIiwgeyBrZXk6IG4uaWQgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5tb21lbnQobi5jcmVhdGVkX2F0KS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1vbWVudChuLmNyZWF0ZWRfYXQpLmZvcm1hdChcIkhIOm1tOnNzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3Mobi5jb250YWN0LmZpcnN0bmFtZSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3Mobi5jb250YWN0LnN1cm5hbWUpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtfdm0uX3YoX3ZtLl9zKG4uY29udGFjdC5lbWFpbCkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3Mobi5zdGF0dXMpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF9jKFxuICAgICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgICBbX2MoXCJjZW50ZXJcIiwgW192bS5fdihcIk5vIG5vdGlmaWNhdGlvbiB0byBkaXNwbGF5IGhlcmVcIildKV0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSlcbiAgICAgIDogX3ZtLl9lKCksXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW1xuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXNcbiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgICByZXR1cm4gX2MoXCJwXCIsIFtcbiAgICAgIF9jKFwiaVwiLCBbX3ZtLl92KFwiU2hvd2luZyBvbmx5IHJlY29yZHMgd2hlcmUgc3RhdHVzIGhhcyBjaGFuZ2VkXCIpXSksXG4gICAgXSlcbiAgfSxcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzXG4gICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gICAgcmV0dXJuIF9jKFwidGhlYWRcIiwgW1xuICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJEYXRlXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJUaW1lXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIqXCIgfSB9LCBbX3ZtLl92KFwiT3V0cHV0XCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJEdXJhdGlvblwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiMTAlXCIgfSB9LCBbX3ZtLl92KFwiU3RhdHVzXCIpXSksXG4gICAgICBdKSxcbiAgICBdKVxuICB9LFxuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXNcbiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgICByZXR1cm4gX2MoXCJ0aGVhZFwiLCBbXG4gICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjIwJVwiIH0gfSwgW192bS5fdihcIkRhdGVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjIwJVwiIH0gfSwgW192bS5fdihcIlRpbWVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIipcIiB9IH0sIFtfdm0uX3YoXCJGaXJzdG5hbWVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjEwJVwiIH0gfSwgW192bS5fdihcIkxhc3RuYW1lXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJFbWFpbFwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiMTAlXCIgfSB9LCBbX3ZtLl92KFwiU3RhdHVzXCIpXSksXG4gICAgICBdKSxcbiAgICBdKVxuICB9LFxuXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/views/taskdetails.vue?vue&type=template&id=a378bf18&scoped=true&\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [\n _vm.task.id != null\n ? _c(\"div\", { staticClass: \"container\" }, [\n _c(\"h1\", [\n _c(\"span\", { staticClass: \"highlight\" }, [\n _vm._v(_vm._s(_vm.task.type)),\n ]),\n _vm._v(\" for host \"),\n _c(\"span\", { staticClass: \"highlight\" }, [\n _vm._v(_vm._s(_vm.task.host)),\n ]),\n ]),\n _vm._v(\"\\n\\n\\t\\tShow:\\n\\t\\t\"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.days,\n expression: \"days\",\n },\n ],\n on: {\n change: [\n function ($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function (o) {\n return o.selected\n })\n .map(function (o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.days = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n },\n _vm.refreshTask,\n ],\n },\n },\n [\n _c(\"option\", { attrs: { value: \"7\" } }, [_vm._v(\"7 days\")]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"15\" } }, [_vm._v(\"15 days\")]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"30\" } }, [_vm._v(\"30 days\")]),\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\", attrs: { id: \"chart\" } }, [\n _c(\"h3\", [_vm._v(\"Last \" + _vm._s(_vm.days) + \" days uptime\")]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"block-content\" },\n [\n _vm.charts.uptime.render\n ? _c(\"apexchart\", {\n staticClass: \"graph\",\n attrs: {\n type: \"bar\",\n height: \"350\",\n options: _vm.charts.uptime.options,\n series: _vm.charts.uptime.series,\n },\n })\n : _vm._e(),\n ],\n 1\n ),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\", attrs: { id: \"chart\" } }, [\n _c(\"h3\", [\n _vm._v(\"Last \" + _vm._s(_vm.days) + \" days response time\"),\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"block-content\" },\n [\n _vm.charts.response.render\n ? _c(\"apexchart\", {\n staticClass: \"graph\",\n attrs: {\n type: \"area\",\n height: \"350\",\n options: _vm.charts.response.options,\n series: _vm.charts.response.series,\n },\n })\n : _vm._e(),\n ],\n 1\n ),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\" }, [\n _c(\"h3\", [\n _vm._v(\"Last \" + _vm._s(_vm.days) + \" days history log\"),\n ]),\n _vm._v(\" \"),\n _vm.history\n ? _c(\"div\", { staticClass: \"block-content\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"table\", { attrs: { id: \"tasks_tbl\" } }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.history, function (h) {\n return _c(\"tr\", { key: h.id }, [\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(h.created_at).format(\"YYYY-MM-DD\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(h.created_at).format(\"HH:mm:ss\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n h.output\n ? _c(\"span\", [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\" +\n _vm._s(h.output) +\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n ),\n ])\n : _c(\"span\", [_c(\"i\", [_vm._v(\"No output\")])]),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n h.duration != null\n ? _c(\"span\", [_vm._v(_vm._s(h.duration + \"s\"))])\n : _c(\"span\", [_c(\"i\", [_vm._v(\"No duration\")])]),\n ]),\n _vm._v(\" \"),\n _c(\"td\", { class: _vm.statusText(h.status) }, [\n _c(\"img\", {\n attrs: {\n src:\n \"/img/\" + _vm.statusText(h.status) + \".svg\",\n width: \"16\",\n alt: \"Status\",\n },\n }),\n ]),\n ])\n }),\n 0\n ),\n ]),\n ])\n : _c(\n \"p\",\n [_c(\"center\", [_vm._v(\"No history to display here\")])],\n 1\n ),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"round\" }, [\n _c(\"h3\", [\n _vm._v(\"Last \" + _vm._s(_vm.days) + \" days notifications log\"),\n ]),\n _vm._v(\" \"),\n _vm.notifications\n ? _c(\"div\", { staticClass: \"block-content\" }, [\n _c(\"table\", { attrs: { id: \"tasks_tbl\" } }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.notifications, function (n) {\n return _c(\"tr\", { key: n.id }, [\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(n.created_at).format(\"YYYY-MM-DD\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\n _vm._s(\n _vm.moment(n.created_at).format(\"HH:mm:ss\")\n )\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.contact.firstname))]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.contact.surname))]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.contact.email))]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(n.status))]),\n ])\n }),\n 0\n ),\n ]),\n ])\n : _c(\n \"p\",\n [_c(\"center\", [_vm._v(\"No notification to display here\")])],\n 1\n ),\n ]),\n ])\n : _vm._e(),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _c(\"i\", [_vm._v(\"Showing only records where status has changed\")]),\n ])\n },\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Date\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Time\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"*\" } }, [_vm._v(\"Output\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Duration\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Status\")]),\n ]),\n ])\n },\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { width: \"20%\" } }, [_vm._v(\"Date\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"20%\" } }, [_vm._v(\"Time\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"*\" } }, [_vm._v(\"Firstname\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Lastname\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Email\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"10%\" } }, [_vm._v(\"Status\")]),\n ]),\n ])\n },\n]\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvdmlld3MvdGFza2RldGFpbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWEzNzhiZjE4JnNjb3BlZD10cnVlJi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwwQkFBMEI7QUFDOUM7QUFDQSx5QkFBeUIsMEJBQTBCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwwQkFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBLDZCQUE2QixTQUFTLGNBQWM7QUFDcEQ7QUFDQSw2QkFBNkIsU0FBUyxlQUFlO0FBQ3JEO0FBQ0EsNkJBQTZCLFNBQVMsZUFBZTtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0JBQStCLGVBQWU7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOEJBQThCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLCtCQUErQixlQUFlO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4QkFBOEI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0JBQXNCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsOEJBQThCO0FBQzFEO0FBQ0E7QUFDQSxnQ0FBZ0MsU0FBUyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxXQUFXO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGlDQUFpQztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzQkFBc0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw4QkFBOEI7QUFDMUQsZ0NBQWdDLFNBQVMsbUJBQW1CO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsV0FBVztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsZ0JBQWdCO0FBQzVDO0FBQ0EsbUJBQW1CLFNBQVMsZ0JBQWdCO0FBQzVDO0FBQ0EsbUJBQW1CLFNBQVMsY0FBYztBQUMxQztBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGNBQWM7QUFDMUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL3ZpZXdzL3Rhc2tkZXRhaWxzLnZ1ZT82NTY5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIFtcbiAgICBfdm0udGFzay5pZCAhPSBudWxsXG4gICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29udGFpbmVyXCIgfSwgW1xuICAgICAgICAgIF9jKFwiaDFcIiwgW1xuICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwiaGlnaGxpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50YXNrLnR5cGUpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIGZvciBob3N0IFwiKSxcbiAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImhpZ2hsaWdodFwiIH0sIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udGFzay5ob3N0KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCJcXG5cXG5cXHRcXHRTaG93OlxcblxcdFxcdFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwic2VsZWN0XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZGF5cyxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZGF5c1wiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlOiBbXG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkJHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucywgZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gXCJfdmFsdWVcIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmRheXMgPSAkZXZlbnQudGFyZ2V0Lm11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgPyAkJHNlbGVjdGVkVmFsXG4gICAgICAgICAgICAgICAgICAgICAgOiAkJHNlbGVjdGVkVmFsWzBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgX3ZtLnJlZnJlc2hUYXNrLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIm9wdGlvblwiLCB7IGF0dHJzOiB7IHZhbHVlOiBcIjdcIiB9IH0sIFtfdm0uX3YoXCI3IGRheXNcIildKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJvcHRpb25cIiwgeyBhdHRyczogeyB2YWx1ZTogXCIxNVwiIH0gfSwgW192bS5fdihcIjE1IGRheXNcIildKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJvcHRpb25cIiwgeyBhdHRyczogeyB2YWx1ZTogXCIzMFwiIH0gfSwgW192bS5fdihcIjMwIGRheXNcIildKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3VuZFwiLCBhdHRyczogeyBpZDogXCJjaGFydFwiIH0gfSwgW1xuICAgICAgICAgICAgX2MoXCJoM1wiLCBbX3ZtLl92KFwiTGFzdCBcIiArIF92bS5fcyhfdm0uZGF5cykgKyBcIiBkYXlzIHVwdGltZVwiKV0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImJsb2NrLWNvbnRlbnRcIiB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX3ZtLmNoYXJ0cy51cHRpbWUucmVuZGVyXG4gICAgICAgICAgICAgICAgICA/IF9jKFwiYXBleGNoYXJ0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJncmFwaFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjM1MFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmNoYXJ0cy51cHRpbWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogX3ZtLmNoYXJ0cy51cHRpbWUuc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3VuZFwiLCBhdHRyczogeyBpZDogXCJjaGFydFwiIH0gfSwgW1xuICAgICAgICAgICAgX2MoXCJoM1wiLCBbXG4gICAgICAgICAgICAgIF92bS5fdihcIkxhc3QgXCIgKyBfdm0uX3MoX3ZtLmRheXMpICsgXCIgZGF5cyByZXNwb25zZSB0aW1lXCIpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiYmxvY2stY29udGVudFwiIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfdm0uY2hhcnRzLnJlc3BvbnNlLnJlbmRlclxuICAgICAgICAgICAgICAgICAgPyBfYyhcImFwZXhjaGFydFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZ3JhcGhcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhcmVhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMzUwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uY2hhcnRzLnJlc3BvbnNlLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IF92bS5jaGFydHMucmVzcG9uc2Uuc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3VuZFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaDNcIiwgW1xuICAgICAgICAgICAgICBfdm0uX3YoXCJMYXN0IFwiICsgX3ZtLl9zKF92bS5kYXlzKSArIFwiIGRheXMgaGlzdG9yeSBsb2dcIiksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfdm0uaGlzdG9yeVxuICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYmxvY2stY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fbSgwKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInRhYmxlXCIsIHsgYXR0cnM6IHsgaWQ6IFwidGFza3NfdGJsXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbSgxKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0Ym9keVwiLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uaGlzdG9yeSwgZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcInRyXCIsIHsga2V5OiBoLmlkIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ubW9tZW50KGguY3JlYXRlZF9hdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5tb21lbnQoaC5jcmVhdGVkX2F0KS5mb3JtYXQoXCJISDptbTpzc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLm91dHB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoaC5vdXRwdXQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9jKFwic3BhblwiLCBbX2MoXCJpXCIsIFtfdm0uX3YoXCJObyBvdXRwdXRcIildKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5kdXJhdGlvbiAhPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhoLmR1cmF0aW9uICsgXCJzXCIpKV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9jKFwic3BhblwiLCBbX2MoXCJpXCIsIFtfdm0uX3YoXCJObyBkdXJhdGlvblwiKV0pXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIHsgY2xhc3M6IF92bS5zdGF0dXNUZXh0KGguc3RhdHVzKSB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiL2ltZy9cIiArIF92bS5zdGF0dXNUZXh0KGguc3RhdHVzKSArIFwiLnN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxNlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IFwiU3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiBfYyhcbiAgICAgICAgICAgICAgICAgIFwicFwiLFxuICAgICAgICAgICAgICAgICAgW19jKFwiY2VudGVyXCIsIFtfdm0uX3YoXCJObyBoaXN0b3J5IHRvIGRpc3BsYXkgaGVyZVwiKV0pXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3VuZFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaDNcIiwgW1xuICAgICAgICAgICAgICBfdm0uX3YoXCJMYXN0IFwiICsgX3ZtLl9zKF92bS5kYXlzKSArIFwiIGRheXMgbm90aWZpY2F0aW9ucyBsb2dcIiksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfdm0ubm90aWZpY2F0aW9uc1xuICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYmxvY2stY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidGFibGVcIiwgeyBhdHRyczogeyBpZDogXCJ0YXNrc190YmxcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9tKDIpLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInRib2R5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5ub3RpZmljYXRpb25zLCBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwidHJcIiwgeyBrZXk6IG4uaWQgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5tb21lbnQobi5jcmVhdGVkX2F0KS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1vbWVudChuLmNyZWF0ZWRfYXQpLmZvcm1hdChcIkhIOm1tOnNzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3Mobi5jb250YWN0LmZpcnN0bmFtZSkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3Mobi5jb250YWN0LnN1cm5hbWUpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtfdm0uX3YoX3ZtLl9zKG4uY29udGFjdC5lbWFpbCkpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3Mobi5zdGF0dXMpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF9jKFxuICAgICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgICBbX2MoXCJjZW50ZXJcIiwgW192bS5fdihcIk5vIG5vdGlmaWNhdGlvbiB0byBkaXNwbGF5IGhlcmVcIildKV0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSlcbiAgICAgIDogX3ZtLl9lKCksXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW1xuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXNcbiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgICByZXR1cm4gX2MoXCJwXCIsIFtcbiAgICAgIF9jKFwiaVwiLCBbX3ZtLl92KFwiU2hvd2luZyBvbmx5IHJlY29yZHMgd2hlcmUgc3RhdHVzIGhhcyBjaGFuZ2VkXCIpXSksXG4gICAgXSlcbiAgfSxcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzXG4gICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gICAgcmV0dXJuIF9jKFwidGhlYWRcIiwgW1xuICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJEYXRlXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJUaW1lXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIqXCIgfSB9LCBbX3ZtLl92KFwiT3V0cHV0XCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJEdXJhdGlvblwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiMTAlXCIgfSB9LCBbX3ZtLl92KFwiU3RhdHVzXCIpXSksXG4gICAgICBdKSxcbiAgICBdKVxuICB9LFxuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXNcbiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgICByZXR1cm4gX2MoXCJ0aGVhZFwiLCBbXG4gICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjIwJVwiIH0gfSwgW192bS5fdihcIkRhdGVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjIwJVwiIH0gfSwgW192bS5fdihcIlRpbWVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIipcIiB9IH0sIFtfdm0uX3YoXCJGaXJzdG5hbWVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjEwJVwiIH0gfSwgW192bS5fdihcIkxhc3RuYW1lXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMCVcIiB9IH0sIFtfdm0uX3YoXCJFbWFpbFwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiMTAlXCIgfSB9LCBbX3ZtLl92KFwiU3RhdHVzXCIpXSksXG4gICAgICBdKSxcbiAgICBdKVxuICB9LFxuXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/views/taskdetails.vue?vue&type=template&id=a378bf18&scoped=true&\n"); /***/ }), diff --git a/resources/views/taskdetails.vue b/resources/views/taskdetails.vue index baffe7b..1a5cb4d 100644 --- a/resources/views/taskdetails.vue +++ b/resources/views/taskdetails.vue @@ -10,7 +10,7 @@ Show: - +
-

Uptime: past {{ chart.days }} days

+

Last {{ days }} days uptime

- +
+ +
+

Last {{ days }} days response time

+
+ +
+
+ + +
-

Last {{ chart.days }} days history log

+

Last {{ days }} days history log

Showing only records where status has changed

@@ -72,7 +82,7 @@
-

Last {{ chart.days }} days notifications log

+

Last {{ days }} days notifications log

@@ -118,36 +128,68 @@ notifications: null, refresh: null, loader: null, + days: 15, + first_day: null, - chart: { - render: false, - days: 15 - }, - - series: [{ - data: [] - }], - noData: { - text: 'Loading...' - }, - chartOptions: { - responsive: [{ - breakpoint: 480, + charts: { + uptime: { + render: false, + series: [{ + data: [] + }], + noData: { + text: 'Loading...' + }, options: { - legend: { - position: 'bottom', - offsetX: -10, - offsetY: 0 - } + responsive: [{ + breakpoint: 480, + options: { + legend: { + position: 'bottom', + offsetX: -10, + offsetY: 0 + } + } + }], + xaxis: { + categories: [], + }, + fill: { + opacity: .9 + }, + }, + }, + response: { + render: true, + series: [{ + data: [10, 20, 30] + }], + noData: { + text: 'Loading...' + }, + options: { + responsive: [{ + breakpoint: 480, + options: { + legend: { + position: 'bottom', + offsetX: -10, + offsetY: 0 + } + } + }], + xaxis: { + categories: [ + 'oct', 'nov', 'dev' + ], + }, + fill: { + opacity: .9 + }, } - }], - xaxis: { - categories: [], - }, - fill: { - opacity: .9 - }, - }, + } + } + } }, methods: { @@ -165,13 +207,15 @@ }, refreshTask: function(callback) { this.$http.post('/api/getTask/'+this.task.id, { - days: this.chart.days + days: this.days }) .then(response => { this.task = response.data.task this.history = response.data.history + this.first_day = new Date(response.data.first_day).getTime(); this.notifications = response.data.notifications - this.refreshGraph(response.data.stats) + this.refreshUptimeGraph(response.data.stats.uptime) + this.refreshResponseTimeGraph(response.data.stats.times) this.loader.hide() }) .then(() => { @@ -185,24 +229,95 @@ this.loader.hide() }) }, - refreshGraph: function(stats) { + refreshResponseTimeGraph: function(stats) { + let data = []; + let xaxis = []; + + for (let i in stats) { + xaxis.push(stats[i]['date']) + data.push(stats[i]['duration']) + } + console.log(xaxis) + + this.charts.response.options = { + xaxis: { + //type: 'datetime', + //min: this.first_day, + categories: xaxis, + //tickAmount: 6, + labels: { + show: true, + rotate: -45, + //rotateAlways: true, + } + }, + tooltip: { + x: { + format: "dd MMM yyyy" + } + }, + chart: { + type: 'line', + height: 350, + stacked: false + }, + legend: { + position: 'right', + offsetX: 0, + offsetY: 50 + }, + fill: { + colors: [function({ value, seriesIndex, w }) { + if(value < 1) { + return '#2acdc7' + } + else if (value >= 1 && value < 3) { + return '#e97a39' + } + else { + return '#e93949' + } + }], + type: "gradient", + gradient: { + shadeIntensity: 1, + opacityFrom: 0.7, + opacityTo: 0.9, + stops: [0, 100] + } + } + } + this.charts.response.series = [{ + name: 'Response time', + data: data + }] + }, + refreshUptimeGraph: function(stats) { let xaxis = []; let new_data_a = []; let new_data_b = []; for (let date in stats) { - xaxis.push(date) + xaxis.push(new Date(date).getTime()) new_data_a.push(stats[date]['up']) new_data_b.push(stats[date]['down']) } - this.chartOptions = { + this.charts.uptime.options = { xaxis: { + type: 'datetime', + min: this.first_day, categories: xaxis, + tickAmount: 6, labels: { show: true, rotate: -45, - rotateAlways: true, + //rotateAlways: true, + } + }, + tooltip: { + x: { + format: "yyyy MMM dd" } }, chart: { @@ -217,7 +332,7 @@ offsetY: 50 }, } - this.series = [{ + this.charts.uptime.series = [{ name: 'UP', data: new_data_a, color: '#00955c' @@ -228,11 +343,11 @@ color: '#ef3232' }] - this.chart.render = true + this.charts.uptime.render = true }, }, mounted: function() { - this.loader = this.$loading.show() + //this.loader = this.$loading.show() this.task.id = this.$route.params.id ?? null if (this.task.id != null) {