From 416f5294e6d146f5e14eaeac353912b3f64eea8e Mon Sep 17 00:00:00 2001 From: Axel <1597611+axeloz@users.noreply.github.com> Date: Tue, 21 Dec 2021 19:44:56 +0100 Subject: [PATCH] Full rewrite Laravel style --- app/Console/Commands/RunMonitoring.php | 145 +++++++++++++++++------- app/Console/Commands/SyncCustomers.php | 2 +- app/Http/Controllers/ApiController.php | 79 +++++++------ app/Jobs/ExampleJob.php | 26 ----- app/Models/Contact.php | 22 ++++ app/Models/Group.php | 24 ++++ app/Models/Notification.php | 40 +++++++ app/Models/Task.php | 40 +++++++ app/Models/TaskContact.php | 22 ++++ app/Models/TaskHistory.php | 29 +++++ bootstrap/app.php | 4 +- database/schema/mysql-schema.dump | 67 +++++++---- public/js/app.js | 4 +- resources/views/components/tasklist.vue | 4 +- sql/create.sql | 104 ----------------- 15 files changed, 375 insertions(+), 237 deletions(-) delete mode 100644 app/Jobs/ExampleJob.php create mode 100644 app/Models/Contact.php create mode 100644 app/Models/Group.php create mode 100644 app/Models/Notification.php create mode 100644 app/Models/Task.php create mode 100644 app/Models/TaskContact.php create mode 100644 app/Models/TaskHistory.php delete mode 100644 sql/create.sql diff --git a/app/Console/Commands/RunMonitoring.php b/app/Console/Commands/RunMonitoring.php index 619e99c..4e1c161 100644 --- a/app/Console/Commands/RunMonitoring.php +++ b/app/Console/Commands/RunMonitoring.php @@ -2,21 +2,29 @@ namespace App\Console\Commands; +use \Exception; +use App\Models\Task; +use App\Models\TaskHistory; +use App\Models\Notification; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; -use \Exception; -use Illuminate\Queue\Console\MonitorCommand; +use Illuminate\Support\Facades\Queue; class RunMonitoring extends Command { private $rounds = 50; + private $max_tries = 3; /** * The name and signature of the console command. * * @var string */ - protected $signature = 'monitolite:monitoring:run {rounds?}'; + protected $signature = 'monitolite:monitoring:run + {--rounds=50 : the number of tasks to handle in one run} + {--task= : the ID of an individual task to handle} + {--force : handles tasks even if they are pending} + '; /** * The console command description. @@ -48,20 +56,47 @@ class RunMonitoring extends Command public function handle() { $count = 0; - $rounds = $this->argument('rounds') ?? $this->rounds; + $rounds = $this->option('rounds') ?? $this->rounds; + $this->max_tries = env('NB_TRIES', $this->max_tries); + + // If a force has been asked via command line + $force = false; + if (! empty($this->option('force'))) { + if (empty($this->option('task'))) { + if ($this->confirm('You asked me to force the execution (--force) but you did not specify a particular task ID (--task). I might have to handle a large amount of tasks. Are you sure?')) { + $force = true; + } + } + else { + $force = true; + } + } // Getting pending tasks - $tasks = DB::table('tasks') - ->where(function($query) { - $query->whereRaw('DATE_SUB(NOW(), INTERVAL frequency SECOND) > last_execution'); - $query->orWhereNull('last_execution'); + $tasks = Task::where(function($query) use ($force) { + $query->whereRaw('DATE_SUB(NOW(), INTERVAL frequency SECOND) > executed_at'); + $query->orWhereBetween('attempts', [1, ($this->max_tries - 1)]); + $query->orWhereNull('executed_at'); + + if ($force === true) { + $query->orWhere('id', '>', 0); + } }) ->where('active', 1) - ->orderBy('last_execution', 'ASC') + ->orderBy('attempts', 'DESC') + ->orderBy('executed_at', 'ASC') ->take($rounds) - ->get() ; + + // If a particular task has been set via the command line + if (! empty($this->option('task'))) { + $tasks = $tasks->where('id', '=', $this->option('task')); + } + + // Now getting tasks + $tasks = $tasks->get(); + if (is_null($tasks) || count($tasks) == 0) { $this->info('No task to process, going back to sleep'); return true; @@ -74,19 +109,10 @@ class RunMonitoring extends Command $bar->start(); foreach ($tasks as $task) { - $last_status = $new_status = $output = null; $bar->advance(); // Getting current task last status - $query = DB::table('tasks_history') - ->select('status') - ->where('task_id', $task->id) - ->orderBy('datetime', 'DESC') - ->first() - ; - if ($query !== false && ! is_null($query)) { - $last_status = $query->status; - } + $previous_status = $task->status; try { switch ($task->type) { @@ -103,13 +129,43 @@ class RunMonitoring extends Command continue 2; } - $this->saveHistory($task, true); + $history = $this->saveHistory($task, true); } catch(MonitoringException $e) { - $this->saveHistory($task, false, $e->getMessage()); + $history = $this->saveHistory($task, false, $e->getMessage()); } catch(Exception $e) { - $this->saveHistory($task, false, $e->getMessage()); + $history = $this->saveHistory($task, false, $e->getMessage()); + } + finally { + // Changing task timestamps and status + $task->executed_at = $history->created_at; # Using the same timestamp as the task history + $task->attempts = $history->status == 1 ? 0 : $task->attempts + 1; # when success, resetting counter + /** + * We don't want to change the primary status in the task table + * as long as failed tasks have reached the max tries limit + * In the cast of a success, we can change the status straight away + */ + if ($history->status == 0 && $task->attempts >= $this->max_tries) { + $task->status = 0; + } + else if ($history->status === 1) { + $task->status = 1; + } + + if (! $task->save()) { + throw new Exception('Cannot save task details'); + } + + + // Task status has changed + // But not from null (new task) + if (! is_null($previous_status) && $task->status != $previous_status) { + // If host is up, no double-check + if ($task->status == 1 || ($task->status == 0 && $task->attempts == $this->max_tries)) { + Notification::addNotificationTask($history); + } + } } } $bar->finish(); @@ -117,42 +173,39 @@ class RunMonitoring extends Command if (!empty($this->results)) { $this->table( - ['Host', 'Result', 'Message'], + ['ID', 'Host', 'Type', 'Result', 'Attempts', 'Message'], $this->results ); } } - final private function saveHistory($task, $status, $output = null) { + final private function saveHistory(Task $task, $status, $output = null) { $date = date('Y-m-d H:i:s'); + // Inserting new history + $insert = new TaskHistory; + $insert->status = $status === true ? 1 : 0; + $insert->created_at = $date; + $insert->output = $output ?? ''; + $insert->task_id = $task->id; + if (! $insert->save()) { + throw new Exception('Cannot insert history for task #'.$task->id); + } + $this->results[] = [ + 'id' => $task->id, 'host' => $task->host, + 'type' => $task->type, 'result' => $status === true ? 'OK' : 'FAILED', + 'attempts' => $task->attempts, 'message' => $output ]; - $insert = DB::table('tasks_history') - ->insert([ - 'status' => $status === true ? 1 : 0, - 'datetime' => $date, - 'output' => $output ?? '', - 'task_id' => $task->id - ] - ); - if (false !== $insert) { - DB::table('tasks') - ->where('id', $task->id) - ->update([ - 'last_execution' => $date - ]) - ; - return true; - } + return $insert; } - final private function checkPing($task) { + final private function checkPing(Task $task) { if (! function_exists('exec') || ! is_callable('exec')) { throw new MonitoringException('The "exec" command is required'); } @@ -196,7 +249,11 @@ class RunMonitoring extends Command return true; } - final private function checkHttp($task) { + final private function checkHttp(Task $task) { + if (app()->environment() == 'local') { + //throw new MonitoringException('Forcing error for testing'); + } + // Preparing cURL $opts = [ CURLOPT_HTTPGET => true, diff --git a/app/Console/Commands/SyncCustomers.php b/app/Console/Commands/SyncCustomers.php index 418afc6..e3a2595 100644 --- a/app/Console/Commands/SyncCustomers.php +++ b/app/Console/Commands/SyncCustomers.php @@ -125,7 +125,7 @@ class SyncCustomers extends Command // Inserting contacts foreach ($contacts as $c) { - app('db')->insert('INSERT INTO notifications (`task_id`, `contact_id`) VALUES (:task_id, :contact_id)', [ + app('db')->insert('INSERT INTO contact_task (`task_id`, `contact_id`) VALUES (:task_id, :contact_id)', [ 'task_id' => $task_id, 'contact_id' => $c->id ]); diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index c2844a2..288e317 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use Exception; +use App\Models\Task; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -22,14 +23,23 @@ class ApiController extends Controller public function getTasks() { $tasks = []; - $query = DB::select(' - SELECT DISTINCT t.id, t.host, t.type, t.params, t.frequency, t.creation_date, t.last_execution, t.active, t.group_id, h.status, h.output, g.name as group_name - FROM `tasks` as t - LEFT JOIN `tasks_history` as h ON (h.task_id = t.id) - LEFT JOIN `groups` as g ON (g.id = t.group_id) - WHERE (t.last_execution IS NULL OR h.datetime = t.last_execution) - ORDER BY group_name ASC - '); + $query = Task + ::leftJoin('groups', 'groups.id', 'tasks.group_id') + ->leftJoinSub( + DB::table('task_history') + ->select('id', DB::raw('MAX(created_at) as created_at'), 'output', 'status', 'task_id') + ->groupBy('id') + , 'task_history', function($join) { + $join + ->on('task_history.task_id', '=', 'tasks.id') + ; + }) + ->select( + 'tasks.id', 'tasks.host', 'tasks.status', 'tasks.type', 'tasks.params', 'tasks.frequency', 'tasks.created_at', 'tasks.executed_at', 'tasks.active', 'tasks.group_id', + 'task_history.output', + 'groups.name as group_name') + ->get() + ; foreach ($query as $t) { if (is_null($t->group_id)) { @@ -56,41 +66,42 @@ class ApiController extends Controller public function getTaskDetails($id) { - $query = DB::select(' - SELECT t.id, t.host, t.type, t.params, t.frequency, t.creation_date, t.last_execution, t.active, t.group_id, h.status, h.output, g.name as group_name - FROM `tasks` as t - LEFT JOIN `tasks_history` as h ON (h.task_id = t.id) - LEFT JOIN `groups` as g ON (g.id = t.group_id) - WHERE (t.last_execution IS NULL OR h.datetime = t.last_execution) AND t.id = :task_id - LIMIT 1 - ', [ - 'task_id' => $id - ]); - if ($query) { - foreach ($query as $q) { - return response()->json($q); - } + $task = Task + ::leftJoin('groups', 'groups.id', 'tasks.group_id') + ->leftJoinSub( + DB::table('task_history') + ->select('id', DB::raw('MAX(created_at) as created_at'), 'output', 'status', 'task_id') + ->groupBy('id') + , 'task_history', function($join) { + $join + ->on('task_history.task_id', '=', 'tasks.id') + ; + }) + ->select( + 'tasks.id', 'tasks.host', 'tasks.status', 'tasks.type', 'tasks.params', 'tasks.frequency', 'tasks.created_at', 'tasks.executed_at', 'tasks.active', 'tasks.group_id', + 'task_history.output', + 'groups.name as group_name') + ->findOrFail($id) + ; + + if (! is_null($task)) { + return response()->json($task); } } public function toggleTaskStatus(Request $request, $id) { - if($active = $request->input('active')) { - //throw new ApiException('Invalid parameters'); - } + $active = $request->input('active', null); + if (is_null($active)) { + throw new ApiException('Invalid parameters'); + } $active = intval($active); - $query = DB::update(' - UPDATE tasks - SET active = :active - WHERE id = :id - ', [ - 'active' => $active, - 'id' => $id - ]); + $task = Task::findOrFail($id); + $task->active = $active; - if ($query !== false) { + if ($task->save()) { return $this->getTaskDetails($id); } else { diff --git a/app/Jobs/ExampleJob.php b/app/Jobs/ExampleJob.php deleted file mode 100644 index 7b65bb4..0000000 --- a/app/Jobs/ExampleJob.php +++ /dev/null @@ -1,26 +0,0 @@ -hasMany('App\Models\Task'); + } + +} diff --git a/app/Models/Notification.php b/app/Models/Notification.php new file mode 100644 index 0000000..f1db056 --- /dev/null +++ b/app/Models/Notification.php @@ -0,0 +1,40 @@ +belongsTo('App\Models\Contact'); + } + + public function task_history() { + return $this->belongsTo('App\Models\TaskHistory'); + } + + public static function addNotificationTask(TaskHistory $history) { + $contacts = $history->task->contacts()->get(); + if (! is_null($contacts)) { + foreach ($contacts as $c) { + $notification = new Notification; + $notification->contact_id = $c->id; + $notification->task_history_id = $history->id; + $notification->status = 'pending'; + $notification->save(); + } + } + } + +} diff --git a/app/Models/Task.php b/app/Models/Task.php new file mode 100644 index 0000000..91e5225 --- /dev/null +++ b/app/Models/Task.php @@ -0,0 +1,40 @@ +belongsTo('App\Models\Group'); + } + + public function notifications() { + return $this->hasMany('App\Models\Notification'); + } + + public function contacts() { + return $this->belongsToMany('App\Models\Contact'); + } + + public function history() { + return $this->hasMany('App\Models\TaskHistory'); + } +} diff --git a/app/Models/TaskContact.php b/app/Models/TaskContact.php new file mode 100644 index 0000000..a7fdce5 --- /dev/null +++ b/app/Models/TaskContact.php @@ -0,0 +1,22 @@ +hasMany('App\Models\Notification'); + } + + public function task() { + return $this->belongsTo('App\Models\Task'); + } + +} diff --git a/bootstrap/app.php b/bootstrap/app.php index 58549d9..76e64d4 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -25,7 +25,7 @@ $app = new Laravel\Lumen\Application( $app->withFacades(); -// $app->withEloquent(); +$app->withEloquent(); /* |-------------------------------------------------------------------------- @@ -71,7 +71,7 @@ function setDbTimezone() { $app->configure('app'); $app->configure('database'); - +$app->configure('queue'); /* |-------------------------------------------------------------------------- diff --git a/database/schema/mysql-schema.dump b/database/schema/mysql-schema.dump index a1edf92..1900204 100644 --- a/database/schema/mysql-schema.dump +++ b/database/schema/mysql-schema.dump @@ -4,6 +4,18 @@ /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +DROP TABLE IF EXISTS `contact_task`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `contact_task` ( + `task_id` int unsigned NOT NULL, + `contact_id` int unsigned NOT NULL, + PRIMARY KEY (`task_id`,`contact_id`), + KEY `contact_id` (`contact_id`), + CONSTRAINT `contact_task_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`) ON DELETE CASCADE, + CONSTRAINT `contact_task_ibfk_2` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `contacts`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -32,7 +44,7 @@ DROP TABLE IF EXISTS `migrations`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `migrations` ( `id` int unsigned NOT NULL AUTO_INCREMENT, - `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `migration` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `batch` int NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; @@ -41,12 +53,32 @@ DROP TABLE IF EXISTS `notifications`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `notifications` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `contact_id` int unsigned NOT NULL DEFAULT '0', + `task_history_id` int unsigned NOT NULL DEFAULT '0', + `status` enum('pending','sent','error') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'pending', + `created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:01', + `updated_at` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `contact_id_frgn` (`contact_id`), + KEY `task_history_id_frgn` (`task_history_id`), + CONSTRAINT `contact_id_frgn` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE, + CONSTRAINT `task_history_id_frgn` FOREIGN KEY (`task_history_id`) REFERENCES `task_history` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `task_history`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `task_history` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `status` int unsigned NOT NULL, + `output` text CHARACTER SET utf8 COLLATE utf8_general_ci, `task_id` int unsigned NOT NULL, - `contact_id` int unsigned NOT NULL, - PRIMARY KEY (`task_id`,`contact_id`), - KEY `contact_id` (`contact_id`), - CONSTRAINT `notifications_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`) ON DELETE CASCADE, - CONSTRAINT `notifications_ibfk_2` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE + `created_at` datetime NOT NULL, + `updated_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:01', + PRIMARY KEY (`id`), + KEY `task_id` (`task_id`), + CONSTRAINT `task_history_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `tasks`; @@ -57,11 +89,14 @@ CREATE TABLE `tasks` ( `host` varchar(255) NOT NULL, `type` enum('ping','http') NOT NULL, `params` varchar(255) NOT NULL, - `creation_date` datetime NOT NULL, `frequency` int unsigned NOT NULL, - `last_execution` datetime DEFAULT NULL, + `attempts` int unsigned NOT NULL DEFAULT '0', `active` int NOT NULL DEFAULT '0', + `status` int unsigned DEFAULT NULL, `group_id` int unsigned DEFAULT NULL, + `created_at` datetime NOT NULL, + `updated_at` datetime DEFAULT NULL, + `executed_at` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `host` (`host`,`type`), KEY `group_id_frgn` (`group_id`), @@ -79,20 +114,6 @@ CREATE TABLE `tasks_archives` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -DROP TABLE IF EXISTS `tasks_history`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tasks_history` ( - `id` int unsigned NOT NULL AUTO_INCREMENT, - `status` int unsigned NOT NULL, - `datetime` datetime NOT NULL, - `output` text CHARACTER SET utf8 COLLATE utf8_general_ci, - `task_id` int unsigned NOT NULL, - PRIMARY KEY (`id`), - KEY `task_id` (`task_id`), - CONSTRAINT `tasks_history_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; -/*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -100,3 +121,5 @@ CREATE TABLE `tasks_history` ( /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +INSERT INTO `migrations` VALUES (1,'2021_12_21_101954_create_jobs_table',1); +INSERT INTO `migrations` VALUES (2,'2021_12_21_102355_create_failed_jobs_table',2); diff --git a/public/js/app.js b/public/js/app.js index 9112a48..c26039a 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -355,7 +355,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/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {},\n computed: {\n tasks: function tasks() {\n return this.$store.state.tasks;\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 disableTask: function disableTask(task_id, current_status) {\n var _this = this;\n\n this.$http.patch('/api/toggleTaskStatus/' + task_id, {\n active: +!current_status\n }).then(function (response) {\n return _this.$store.commit('updateTask', response.data);\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01WzBdLnJ1bGVzWzBdLnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL3ZpZXdzL2NvbXBvbmVudHMvdGFza2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErRUE7QUFDQSxnQkFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEEsR0FIQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQVJBO0FBVUEsS0FaQTtBQWFBO0FBQUE7O0FBQ0E7QUFDQTtBQURBLFNBR0EsSUFIQSxDQUdBO0FBQUE7QUFBQSxPQUhBO0FBSUE7QUFsQkE7QUFSQSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvdmlld3MvY29tcG9uZW50cy90YXNrbGlzdC52dWU/YmJmNCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJ0YXNrc1wiPlxuXHRcdDxkaXZcblx0XHRcdHYtZm9yPVwiZ3JvdXAgaW4gdGFza3NcIlxuXHRcdFx0di1iaW5kOmtleT1cImdyb3VwLmlkXCJcblx0XHRcdGNsYXNzPVwidGFza1wiXG5cdFx0PlxuXHRcdFx0PGEgOm5hbWU9XCInZ3JvdXAtJytncm91cC5pZFwiPjwvYT5cblx0XHRcdDxoMz5cblx0XHRcdFx0VGFza3MgZm9yIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+e3sgZ3JvdXAubmFtZSB9fSA8c21hbGw+KCN7eyBncm91cC5pZCB9fSk8L3NtYWxsPjwvc3Bhbj5cblx0XHRcdFx0PCEtLSA8cCBjbGFzcz1cImNvbnRleHQtbWVudVwiPjxpbWcgc3JjPVwiL2ltZy9tZW51LnN2Z1wiIHdpZHRoPVwiNDBcIiAvPjwvcD4gLS0+XG5cdFx0XHQ8L2gzPlxuXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYmxvY2stY29udGVudFwiPlxuXHRcdFx0XHQ8dGFibGUgaWQ9XCJ0YXNrc190YmxcIj5cblx0XHRcdFx0XHQ8dGhlYWQ+XG5cdFx0XHRcdFx0XHQ8dHI+XG5cdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjUlXCI+VXA/PC90aD5cblx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiKlwiPkhvc3Q8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCI1JVwiPlR5cGU8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIyMCVcIj5MYXN0IGNoZWNrZWQ8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIxMyVcIj5GcmVxdWVuY3kgKG1pbik8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCI1JVwiPkFjdGl2ZTwvdGg+XG5cdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjUlXCI+QWN0aW9uczwvdGg+XG5cdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdDwvdGhlYWQ+XG5cdFx0XHRcdFx0PHRib2R5PlxuXHRcdFx0XHRcdFx0PHRyXG5cdFx0XHRcdFx0XHRcdHYtZm9yPVwidGFzayBpbiBncm91cC50YXNrc1wiXG5cdFx0XHRcdFx0XHRcdHYtYmluZDprZXk9XCJ0YXNrLmlkXCJcblx0XHRcdFx0XHRcdFx0OmNsYXNzPVwidGFzay5hY3RpdmUgPT0gMCA/ICdpbmFjdGl2ZScgOiAnJ1wiXG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDx0ZCA6Y2xhc3M9XCJzdGF0dXNUZXh0KHRhc2suc3RhdHVzKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWcgOnNyYz1cIicvaW1nLycrc3RhdHVzVGV4dCh0YXNrLnN0YXR1cykrJy5zdmcnXCIgd2lkdGg9XCIxNlwiIGFsdD1cIlN0YXR1c1wiIC8+XG5cdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHRcdDx0ZD5cblx0XHRcdFx0XHRcdFx0XHQ8aW1nIHNyYz1cIi9pbWcvZXh0ZXJuYWwuc3ZnXCIgYWx0PVwiVmlldyBob3N0XCIgd2lkdGg9XCIxNlwiPlxuXHRcdFx0XHRcdFx0XHRcdDxhIDpocmVmPVwidGFzay5ob3N0XCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgdGFzay5ob3N0IH19PC9hPlxuXHRcdFx0XHRcdFx0XHQ8L3RkPlxuXHRcdFx0XHRcdFx0XHQ8dGQ+XG5cdFx0XHRcdFx0XHRcdFx0PGltZyA6c3JjPVwidGFzay50eXBlID09ICdodHRwJyA/ICcvaW1nL2h0dHAuc3ZnJyA6ICcvaW1nL3Bpbmcuc3ZnJ1wiIHdpZHRoPVwiMTZcIiBhbHQ9XCJUeXBlIG9mIGNoZWNrXCIgOnRpdGxlPVwiJ1R5cGU6ICcrdGFzay50eXBlXCIgLz5cblx0XHRcdFx0XHRcdFx0PC90ZD5cblx0XHRcdFx0XHRcdFx0PHRkPlxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWlmPVwidGFzay5sYXN0X2V4ZWN1dGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgbW9tZW50KHRhc2subGFzdF9leGVjdXRpb24pLmZyb21Ob3coKSB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCIvaW1nL2luZm8uc3ZnXCIgYWx0PVwiSW5mb3NcIiB3aWR0aD1cIjE2XCIgOnRpdGxlPVwiJ1Jlc3VsdDogJyt0YXNrLm91dHB1dFwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWVsc2Vcblx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHROZXZlclxuXHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PHRkPnt7IHRhc2suZnJlcXVlbmN5IC8gNjAgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHQ8dGQgOmNsYXNzPVwidGFzay5hY3RpdmUgPT0gMCA/ICdpbmFjdGl2ZScgOiAnJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxhXG5cdFx0XHRcdFx0XHRcdFx0XHR2LW9uOmNsaWNrLnByZXZlbnQ9XCJkaXNhYmxlVGFzayh0YXNrLmlkLCB0YXNrLmFjdGl2ZSlcIlxuXHRcdFx0XHRcdFx0XHRcdFx0aHJlZj1cIiNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0OnRpdGxlPVwidGFzay5hY3RpdmUgPT0gMSA/ICdEaXNhYmxlIHRhc2snIDogJ0VuYWJsZSB0YXNrJ1wiXG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0PGltZyA6c3JjPVwidGFzay5hY3RpdmUgPT0gMSA/ICcvaW1nL29uLnN2ZycgOiAnL2ltZy9vZmYuc3ZnJ1wiIGFsdD1cIkRpc2FibGVcIiB3aWR0aD1cIjI0XCIgLz5cblx0XHRcdFx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHRcdDx0ZD5cblx0XHRcdFx0XHRcdFx0XHQ8cm91dGVyLWxpbmsgOnRvPVwieyBuYW1lOiAndGFza2RldGFpbHMnLCBwYXJhbXM6IHsgaWQ6IHRhc2suaWQgfX1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiL2ltZy9zZWUuc3ZnXCIgYWx0PVwiRGV0YWlsc1wiIHdpZHRoPVwiMjBcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdDwvcm91dGVyLWxpbms+XG5cdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdDwvdGJvZHk+XG5cdFx0XHRcdDwvdGFibGU+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNvbXBvbmVudHM6IHtcblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHR0YXNrczogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUudGFza3Ncblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRzdGF0dXNUZXh0OiBmdW5jdGlvbiAoc3RhdHVzKSB7XG5cdFx0XHRzd2l0Y2ggKHN0YXR1cykge1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0cmV0dXJuICd1cCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0cmV0dXJuICdkb3duJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0cmV0dXJuICd1bmtub3duJztcblx0XHRcdH1cblx0XHR9LFxuXHRcdGRpc2FibGVUYXNrOiBmdW5jdGlvbih0YXNrX2lkLCBjdXJyZW50X3N0YXR1cykge1xuXHRcdFx0dGhpcy4kaHR0cC5wYXRjaCgnL2FwaS90b2dnbGVUYXNrU3RhdHVzLycrdGFza19pZCwge1xuXHRcdFx0XHRhY3RpdmU6ICsgIWN1cnJlbnRfc3RhdHVzXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4ocmVzcG9uc2UgPT4gdGhpcy4kc3RvcmUuY29tbWl0KCd1cGRhdGVUYXNrJywgcmVzcG9uc2UuZGF0YSkpXG5cdFx0fVxuXHR9XG59XG48L3NjcmlwdD5cblxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\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/components/tasklist.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/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {},\n computed: {\n tasks: function tasks() {\n return this.$store.state.tasks;\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 disableTask: function disableTask(task_id, current_status) {\n var _this = this;\n\n this.$http.patch('/api/toggleTaskStatus/' + task_id, {\n active: +!current_status\n }).then(function (response) {\n return _this.$store.commit('updateTask', response.data);\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01WzBdLnJ1bGVzWzBdLnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL3ZpZXdzL2NvbXBvbmVudHMvdGFza2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErRUE7QUFDQSxnQkFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEEsR0FIQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQVJBO0FBVUEsS0FaQTtBQWFBO0FBQUE7O0FBQ0E7QUFDQTtBQURBLFNBR0EsSUFIQSxDQUdBO0FBQUE7QUFBQSxPQUhBO0FBSUE7QUFsQkE7QUFSQSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvdmlld3MvY29tcG9uZW50cy90YXNrbGlzdC52dWU/YmJmNCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJ0YXNrc1wiPlxuXHRcdDxkaXZcblx0XHRcdHYtZm9yPVwiZ3JvdXAgaW4gdGFza3NcIlxuXHRcdFx0di1iaW5kOmtleT1cImdyb3VwLmlkXCJcblx0XHRcdGNsYXNzPVwidGFza1wiXG5cdFx0PlxuXHRcdFx0PGEgOm5hbWU9XCInZ3JvdXAtJytncm91cC5pZFwiPjwvYT5cblx0XHRcdDxoMz5cblx0XHRcdFx0VGFza3MgZm9yIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+e3sgZ3JvdXAubmFtZSB9fSA8c21hbGw+KCN7eyBncm91cC5pZCB9fSk8L3NtYWxsPjwvc3Bhbj5cblx0XHRcdFx0PCEtLSA8cCBjbGFzcz1cImNvbnRleHQtbWVudVwiPjxpbWcgc3JjPVwiL2ltZy9tZW51LnN2Z1wiIHdpZHRoPVwiNDBcIiAvPjwvcD4gLS0+XG5cdFx0XHQ8L2gzPlxuXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYmxvY2stY29udGVudFwiPlxuXHRcdFx0XHQ8dGFibGUgaWQ9XCJ0YXNrc190YmxcIj5cblx0XHRcdFx0XHQ8dGhlYWQ+XG5cdFx0XHRcdFx0XHQ8dHI+XG5cdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjUlXCI+VXA/PC90aD5cblx0XHRcdFx0XHRcdFx0PHRoIHdpZHRoPVwiKlwiPkhvc3Q8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCI1JVwiPlR5cGU8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIyMCVcIj5MYXN0IGNoZWNrZWQ8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCIxMyVcIj5GcmVxdWVuY3kgKG1pbik8L3RoPlxuXHRcdFx0XHRcdFx0XHQ8dGggd2lkdGg9XCI1JVwiPkFjdGl2ZTwvdGg+XG5cdFx0XHRcdFx0XHRcdDx0aCB3aWR0aD1cIjUlXCI+QWN0aW9uczwvdGg+XG5cdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdDwvdGhlYWQ+XG5cdFx0XHRcdFx0PHRib2R5PlxuXHRcdFx0XHRcdFx0PHRyXG5cdFx0XHRcdFx0XHRcdHYtZm9yPVwidGFzayBpbiBncm91cC50YXNrc1wiXG5cdFx0XHRcdFx0XHRcdHYtYmluZDprZXk9XCJ0YXNrLmlkXCJcblx0XHRcdFx0XHRcdFx0OmNsYXNzPVwidGFzay5hY3RpdmUgPT0gMCA/ICdpbmFjdGl2ZScgOiAnJ1wiXG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDx0ZCA6Y2xhc3M9XCJzdGF0dXNUZXh0KHRhc2suc3RhdHVzKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWcgOnNyYz1cIicvaW1nLycrc3RhdHVzVGV4dCh0YXNrLnN0YXR1cykrJy5zdmcnXCIgd2lkdGg9XCIxNlwiIGFsdD1cIlN0YXR1c1wiIC8+XG5cdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHRcdDx0ZD5cblx0XHRcdFx0XHRcdFx0XHQ8aW1nIHNyYz1cIi9pbWcvZXh0ZXJuYWwuc3ZnXCIgYWx0PVwiVmlldyBob3N0XCIgd2lkdGg9XCIxNlwiPlxuXHRcdFx0XHRcdFx0XHRcdDxhIDpocmVmPVwidGFzay5ob3N0XCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgdGFzay5ob3N0IH19PC9hPlxuXHRcdFx0XHRcdFx0XHQ8L3RkPlxuXHRcdFx0XHRcdFx0XHQ8dGQ+XG5cdFx0XHRcdFx0XHRcdFx0PGltZyA6c3JjPVwidGFzay50eXBlID09ICdodHRwJyA/ICcvaW1nL2h0dHAuc3ZnJyA6ICcvaW1nL3Bpbmcuc3ZnJ1wiIHdpZHRoPVwiMTZcIiBhbHQ9XCJUeXBlIG9mIGNoZWNrXCIgOnRpdGxlPVwiJ1R5cGU6ICcrdGFzay50eXBlXCIgLz5cblx0XHRcdFx0XHRcdFx0PC90ZD5cblx0XHRcdFx0XHRcdFx0PHRkPlxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWlmPVwidGFzay5leGVjdXRlZF9hdFwiXG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgbW9tZW50KHRhc2suZXhlY3V0ZWRfYXQpLmZyb21Ob3coKSB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCIvaW1nL2luZm8uc3ZnXCIgYWx0PVwiSW5mb3NcIiB3aWR0aD1cIjE2XCIgOnRpdGxlPVwiJ1Jlc3VsdDogJyt0YXNrLm91dHB1dFwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWVsc2Vcblx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHROZXZlclxuXHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PHRkPnt7IHRhc2suZnJlcXVlbmN5IC8gNjAgfX08L3RkPlxuXHRcdFx0XHRcdFx0XHQ8dGQgOmNsYXNzPVwidGFzay5hY3RpdmUgPT0gMCA/ICdpbmFjdGl2ZScgOiAnJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxhXG5cdFx0XHRcdFx0XHRcdFx0XHR2LW9uOmNsaWNrLnByZXZlbnQ9XCJkaXNhYmxlVGFzayh0YXNrLmlkLCB0YXNrLmFjdGl2ZSlcIlxuXHRcdFx0XHRcdFx0XHRcdFx0aHJlZj1cIiNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0OnRpdGxlPVwidGFzay5hY3RpdmUgPT0gMSA/ICdEaXNhYmxlIHRhc2snIDogJ0VuYWJsZSB0YXNrJ1wiXG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0PGltZyA6c3JjPVwidGFzay5hY3RpdmUgPT0gMSA/ICcvaW1nL29uLnN2ZycgOiAnL2ltZy9vZmYuc3ZnJ1wiIGFsdD1cIkRpc2FibGVcIiB3aWR0aD1cIjI0XCIgLz5cblx0XHRcdFx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHRcdDx0ZD5cblx0XHRcdFx0XHRcdFx0XHQ8cm91dGVyLWxpbmsgOnRvPVwieyBuYW1lOiAndGFza2RldGFpbHMnLCBwYXJhbXM6IHsgaWQ6IHRhc2suaWQgfX1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiL2ltZy9zZWUuc3ZnXCIgYWx0PVwiRGV0YWlsc1wiIHdpZHRoPVwiMjBcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdDwvcm91dGVyLWxpbms+XG5cdFx0XHRcdFx0XHRcdDwvdGQ+XG5cdFx0XHRcdFx0XHQ8L3RyPlxuXHRcdFx0XHRcdDwvdGJvZHk+XG5cdFx0XHRcdDwvdGFibGU+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNvbXBvbmVudHM6IHtcblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHR0YXNrczogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUudGFza3Ncblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRzdGF0dXNUZXh0OiBmdW5jdGlvbiAoc3RhdHVzKSB7XG5cdFx0XHRzd2l0Y2ggKHN0YXR1cykge1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0cmV0dXJuICd1cCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0cmV0dXJuICdkb3duJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0cmV0dXJuICd1bmtub3duJztcblx0XHRcdH1cblx0XHR9LFxuXHRcdGRpc2FibGVUYXNrOiBmdW5jdGlvbih0YXNrX2lkLCBjdXJyZW50X3N0YXR1cykge1xuXHRcdFx0dGhpcy4kaHR0cC5wYXRjaCgnL2FwaS90b2dnbGVUYXNrU3RhdHVzLycrdGFza19pZCwge1xuXHRcdFx0XHRhY3RpdmU6ICsgIWN1cnJlbnRfc3RhdHVzXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4ocmVzcG9uc2UgPT4gdGhpcy4kc3RvcmUuY29tbWl0KCd1cGRhdGVUYXNrJywgcmVzcG9uc2UuZGF0YSkpXG5cdFx0fVxuXHR9XG59XG48L3NjcmlwdD5cblxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\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/components/tasklist.vue?vue&type=script&lang=js&\n"); /***/ }), @@ -2248,7 +2248,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(\n \"div\",\n { staticClass: \"tasks\" },\n _vm._l(_vm.tasks, function (group) {\n return _c(\"div\", { key: group.id, staticClass: \"task\" }, [\n _c(\"a\", { attrs: { name: \"group-\" + group.id } }),\n _vm._v(\" \"),\n _c(\"h3\", [\n _vm._v(\"\\n\\t\\t\\tTasks for \"),\n _c(\"span\", { staticClass: \"highlight\" }, [\n _vm._v(_vm._s(group.name) + \" \"),\n _c(\"small\", [_vm._v(\"(#\" + _vm._s(group.id) + \")\")]),\n ]),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"block-content\" }, [\n _c(\"table\", { attrs: { id: \"tasks_tbl\" } }, [\n _vm._m(0, true),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(group.tasks, function (task) {\n return _c(\n \"tr\",\n { key: task.id, class: task.active == 0 ? \"inactive\" : \"\" },\n [\n _c(\"td\", { class: _vm.statusText(task.status) }, [\n _c(\"img\", {\n attrs: {\n src: \"/img/\" + _vm.statusText(task.status) + \".svg\",\n width: \"16\",\n alt: \"Status\",\n },\n }),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _c(\"img\", {\n attrs: {\n src: \"/img/external.svg\",\n alt: \"View host\",\n width: \"16\",\n },\n }),\n _vm._v(\" \"),\n _c(\n \"a\",\n { attrs: { href: task.host, target: \"_blank\" } },\n [_vm._v(_vm._s(task.host))]\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _c(\"img\", {\n attrs: {\n src:\n task.type == \"http\"\n ? \"/img/http.svg\"\n : \"/img/ping.svg\",\n width: \"16\",\n alt: \"Type of check\",\n title: \"Type: \" + task.type,\n },\n }),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n task.last_execution\n ? _c(\"span\", [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\" +\n _vm._s(\n _vm.moment(task.last_execution).fromNow()\n ) +\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n ),\n _c(\"img\", {\n attrs: {\n src: \"/img/info.svg\",\n alt: \"Infos\",\n width: \"16\",\n title: \"Result: \" + task.output,\n },\n }),\n ])\n : _c(\"span\", [\n _vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\tNever\\n\\t\\t\\t\\t\\t\\t\\t\"),\n ]),\n ]),\n _c(\"td\", [_vm._v(_vm._s(task.frequency / 60))]),\n _vm._v(\" \"),\n _c(\"td\", { class: task.active == 0 ? \"inactive\" : \"\" }, [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n title:\n task.active == 1 ? \"Disable task\" : \"Enable task\",\n },\n on: {\n click: function ($event) {\n $event.preventDefault()\n return _vm.disableTask(task.id, task.active)\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src:\n task.active == 1\n ? \"/img/on.svg\"\n : \"/img/off.svg\",\n alt: \"Disable\",\n width: \"24\",\n },\n }),\n ]\n ),\n ]),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"router-link\",\n {\n attrs: {\n to: {\n name: \"taskdetails\",\n params: { id: task.id },\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src: \"/img/see.svg\",\n alt: \"Details\",\n width: \"20\",\n },\n }),\n ]\n ),\n ],\n 1\n ),\n ]\n )\n }),\n 0\n ),\n ]),\n ]),\n ])\n }),\n 0\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(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Up?\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"*\" } }, [_vm._v(\"Host\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Type\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"20%\" } }, [_vm._v(\"Last checked\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"13%\" } }, [_vm._v(\"Frequency (min)\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Active\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Actions\")]),\n ]),\n ])\n },\n]\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvdmlld3MvY29tcG9uZW50cy90YXNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDVkMjRmNTMmLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzQkFBc0I7QUFDNUI7QUFDQSx5QkFBeUIsb0NBQW9DO0FBQzdELGtCQUFrQixTQUFTLDZCQUE2QjtBQUN4RDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMEJBQTBCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsOEJBQThCO0FBQ2xELHdCQUF3QixTQUFTLG1CQUFtQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5REFBeUQ7QUFDN0U7QUFDQSwrQkFBK0Isb0NBQW9DO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixTQUFTLHFDQUFxQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDJDQUEyQztBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0IseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RCwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxlQUFlO0FBQzNDO0FBQ0EsbUJBQW1CLFNBQVMsY0FBYztBQUMxQztBQUNBLG1CQUFtQixTQUFTLGVBQWU7QUFDM0M7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxnQkFBZ0I7QUFDNUM7QUFDQSxtQkFBbUIsU0FBUyxlQUFlO0FBQzNDO0FBQ0EsbUJBQW1CLFNBQVMsZUFBZTtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvdmlld3MvY29tcG9uZW50cy90YXNrbGlzdC52dWU/Mjk4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwidGFza3NcIiB9LFxuICAgIF92bS5fbChfdm0udGFza3MsIGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgcmV0dXJuIF9jKFwiZGl2XCIsIHsga2V5OiBncm91cC5pZCwgc3RhdGljQ2xhc3M6IFwidGFza1wiIH0sIFtcbiAgICAgICAgX2MoXCJhXCIsIHsgYXR0cnM6IHsgbmFtZTogXCJncm91cC1cIiArIGdyb3VwLmlkIH0gfSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiaDNcIiwgW1xuICAgICAgICAgIF92bS5fdihcIlxcblxcdFxcdFxcdFRhc2tzIGZvciBcIiksXG4gICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwiaGlnaGxpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhncm91cC5uYW1lKSArIFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwic21hbGxcIiwgW192bS5fdihcIigjXCIgKyBfdm0uX3MoZ3JvdXAuaWQpICsgXCIpXCIpXSksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImJsb2NrLWNvbnRlbnRcIiB9LCBbXG4gICAgICAgICAgX2MoXCJ0YWJsZVwiLCB7IGF0dHJzOiB7IGlkOiBcInRhc2tzX3RibFwiIH0gfSwgW1xuICAgICAgICAgICAgX3ZtLl9tKDAsIHRydWUpLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcInRib2R5XCIsXG4gICAgICAgICAgICAgIF92bS5fbChncm91cC50YXNrcywgZnVuY3Rpb24gKHRhc2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICBcInRyXCIsXG4gICAgICAgICAgICAgICAgICB7IGtleTogdGFzay5pZCwgY2xhc3M6IHRhc2suYWN0aXZlID09IDAgPyBcImluYWN0aXZlXCIgOiBcIlwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgeyBjbGFzczogX3ZtLnN0YXR1c1RleHQodGFzay5zdGF0dXMpIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IFwiL2ltZy9cIiArIF92bS5zdGF0dXNUZXh0KHRhc2suc3RhdHVzKSArIFwiLnN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxNlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IFwiU3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBcIi9pbWcvZXh0ZXJuYWwuc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJWaWV3IGhvc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBocmVmOiB0YXNrLmhvc3QsIHRhcmdldDogXCJfYmxhbmtcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyh0YXNrLmhvc3QpKV1cbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sudHlwZSA9PSBcImh0dHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIi9pbWcvaHR0cC5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIi9pbWcvcGluZy5zdmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBcIlR5cGUgb2YgY2hlY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiVHlwZTogXCIgKyB0YXNrLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgdGFzay5sYXN0X2V4ZWN1dGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1vbWVudCh0YXNrLmxhc3RfZXhlY3V0aW9uKS5mcm9tTm93KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogXCIvaW1nL2luZm8uc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJJbmZvc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxNlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJSZXN1bHQ6IFwiICsgdGFzay5vdXRwdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdE5ldmVyXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3ModGFzay5mcmVxdWVuY3kgLyA2MCkpXSksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgeyBjbGFzczogdGFzay5hY3RpdmUgPT0gMCA/IFwiaW5hY3RpdmVcIiA6IFwiXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogXCIjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLmFjdGl2ZSA9PSAxID8gXCJEaXNhYmxlIHRhc2tcIiA6IFwiRW5hYmxlIHRhc2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZGlzYWJsZVRhc2sodGFzay5pZCwgdGFzay5hY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLmFjdGl2ZSA9PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIi9pbWcvb24uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiL2ltZy9vZmYuc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IFwiRGlzYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInJvdXRlci1saW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ0YXNrZGV0YWlsc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgaWQ6IHRhc2suaWQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogXCIvaW1nL3NlZS5zdmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBcIkRldGFpbHNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMjBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgICBdKVxuICAgIH0pLFxuICAgIDBcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzXG4gICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gICAgcmV0dXJuIF9jKFwidGhlYWRcIiwgW1xuICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCI1JVwiIH0gfSwgW192bS5fdihcIlVwP1wiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiKlwiIH0gfSwgW192bS5fdihcIkhvc3RcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjUlXCIgfSB9LCBbX3ZtLl92KFwiVHlwZVwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiMjAlXCIgfSB9LCBbX3ZtLl92KFwiTGFzdCBjaGVja2VkXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCIxMyVcIiB9IH0sIFtfdm0uX3YoXCJGcmVxdWVuY3kgKG1pbilcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjUlXCIgfSB9LCBbX3ZtLl92KFwiQWN0aXZlXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCI1JVwiIH0gfSwgW192bS5fdihcIkFjdGlvbnNcIildKSxcbiAgICAgIF0pLFxuICAgIF0pXG4gIH0sXG5dXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\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/components/tasklist.vue?vue&type=template&id=45d24f53&\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(\n \"div\",\n { staticClass: \"tasks\" },\n _vm._l(_vm.tasks, function (group) {\n return _c(\"div\", { key: group.id, staticClass: \"task\" }, [\n _c(\"a\", { attrs: { name: \"group-\" + group.id } }),\n _vm._v(\" \"),\n _c(\"h3\", [\n _vm._v(\"\\n\\t\\t\\tTasks for \"),\n _c(\"span\", { staticClass: \"highlight\" }, [\n _vm._v(_vm._s(group.name) + \" \"),\n _c(\"small\", [_vm._v(\"(#\" + _vm._s(group.id) + \")\")]),\n ]),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"block-content\" }, [\n _c(\"table\", { attrs: { id: \"tasks_tbl\" } }, [\n _vm._m(0, true),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(group.tasks, function (task) {\n return _c(\n \"tr\",\n { key: task.id, class: task.active == 0 ? \"inactive\" : \"\" },\n [\n _c(\"td\", { class: _vm.statusText(task.status) }, [\n _c(\"img\", {\n attrs: {\n src: \"/img/\" + _vm.statusText(task.status) + \".svg\",\n width: \"16\",\n alt: \"Status\",\n },\n }),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _c(\"img\", {\n attrs: {\n src: \"/img/external.svg\",\n alt: \"View host\",\n width: \"16\",\n },\n }),\n _vm._v(\" \"),\n _c(\n \"a\",\n { attrs: { href: task.host, target: \"_blank\" } },\n [_vm._v(_vm._s(task.host))]\n ),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n _c(\"img\", {\n attrs: {\n src:\n task.type == \"http\"\n ? \"/img/http.svg\"\n : \"/img/ping.svg\",\n width: \"16\",\n alt: \"Type of check\",\n title: \"Type: \" + task.type,\n },\n }),\n ]),\n _vm._v(\" \"),\n _c(\"td\", [\n task.executed_at\n ? _c(\"span\", [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\" +\n _vm._s(_vm.moment(task.executed_at).fromNow()) +\n \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n ),\n _c(\"img\", {\n attrs: {\n src: \"/img/info.svg\",\n alt: \"Infos\",\n width: \"16\",\n title: \"Result: \" + task.output,\n },\n }),\n ])\n : _c(\"span\", [\n _vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\tNever\\n\\t\\t\\t\\t\\t\\t\\t\"),\n ]),\n ]),\n _c(\"td\", [_vm._v(_vm._s(task.frequency / 60))]),\n _vm._v(\" \"),\n _c(\"td\", { class: task.active == 0 ? \"inactive\" : \"\" }, [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n title:\n task.active == 1 ? \"Disable task\" : \"Enable task\",\n },\n on: {\n click: function ($event) {\n $event.preventDefault()\n return _vm.disableTask(task.id, task.active)\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src:\n task.active == 1\n ? \"/img/on.svg\"\n : \"/img/off.svg\",\n alt: \"Disable\",\n width: \"24\",\n },\n }),\n ]\n ),\n ]),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"router-link\",\n {\n attrs: {\n to: {\n name: \"taskdetails\",\n params: { id: task.id },\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src: \"/img/see.svg\",\n alt: \"Details\",\n width: \"20\",\n },\n }),\n ]\n ),\n ],\n 1\n ),\n ]\n )\n }),\n 0\n ),\n ]),\n ]),\n ])\n }),\n 0\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(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Up?\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"*\" } }, [_vm._v(\"Host\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Type\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"20%\" } }, [_vm._v(\"Last checked\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"13%\" } }, [_vm._v(\"Frequency (min)\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Active\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"5%\" } }, [_vm._v(\"Actions\")]),\n ]),\n ])\n },\n]\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvdmlld3MvY29tcG9uZW50cy90YXNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDVkMjRmNTMmLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzQkFBc0I7QUFDNUI7QUFDQSx5QkFBeUIsb0NBQW9DO0FBQzdELGtCQUFrQixTQUFTLDZCQUE2QjtBQUN4RDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMEJBQTBCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsOEJBQThCO0FBQ2xELHdCQUF3QixTQUFTLG1CQUFtQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5REFBeUQ7QUFDN0U7QUFDQSwrQkFBK0Isb0NBQW9DO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixTQUFTLHFDQUFxQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkNBQTJDO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLDJCQUEyQjtBQUMzQix5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxhQUFhO0FBQ3ZELCtCQUErQjtBQUMvQiw2QkFBNkI7QUFDN0IsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTLGVBQWU7QUFDM0M7QUFDQSxtQkFBbUIsU0FBUyxjQUFjO0FBQzFDO0FBQ0EsbUJBQW1CLFNBQVMsZUFBZTtBQUMzQztBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGdCQUFnQjtBQUM1QztBQUNBLG1CQUFtQixTQUFTLGVBQWU7QUFDM0M7QUFDQSxtQkFBbUIsU0FBUyxlQUFlO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy92aWV3cy9jb21wb25lbnRzL3Rhc2tsaXN0LnZ1ZT8yOTg2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJ0YXNrc1wiIH0sXG4gICAgX3ZtLl9sKF92bS50YXNrcywgZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICByZXR1cm4gX2MoXCJkaXZcIiwgeyBrZXk6IGdyb3VwLmlkLCBzdGF0aWNDbGFzczogXCJ0YXNrXCIgfSwgW1xuICAgICAgICBfYyhcImFcIiwgeyBhdHRyczogeyBuYW1lOiBcImdyb3VwLVwiICsgZ3JvdXAuaWQgfSB9KSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJoM1wiLCBbXG4gICAgICAgICAgX3ZtLl92KFwiXFxuXFx0XFx0XFx0VGFza3MgZm9yIFwiKSxcbiAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJoaWdobGlnaHRcIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKGdyb3VwLm5hbWUpICsgXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJzbWFsbFwiLCBbX3ZtLl92KFwiKCNcIiArIF92bS5fcyhncm91cC5pZCkgKyBcIilcIildKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYmxvY2stY29udGVudFwiIH0sIFtcbiAgICAgICAgICBfYyhcInRhYmxlXCIsIHsgYXR0cnM6IHsgaWQ6IFwidGFza3NfdGJsXCIgfSB9LCBbXG4gICAgICAgICAgICBfdm0uX20oMCwgdHJ1ZSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwidGJvZHlcIixcbiAgICAgICAgICAgICAgX3ZtLl9sKGdyb3VwLnRhc2tzLCBmdW5jdGlvbiAodGFzaykge1xuICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgIFwidHJcIixcbiAgICAgICAgICAgICAgICAgIHsga2V5OiB0YXNrLmlkLCBjbGFzczogdGFzay5hY3RpdmUgPT0gMCA/IFwiaW5hY3RpdmVcIiA6IFwiXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCB7IGNsYXNzOiBfdm0uc3RhdHVzVGV4dCh0YXNrLnN0YXR1cykgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogXCIvaW1nL1wiICsgX3ZtLnN0YXR1c1RleHQodGFzay5zdGF0dXMpICsgXCIuc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJTdGF0dXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IFwiL2ltZy9leHRlcm5hbC5zdmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBcIlZpZXcgaG9zdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxNlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IGhyZWY6IHRhc2suaG9zdCwgdGFyZ2V0OiBcIl9ibGFua1wiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKHRhc2suaG9zdCkpXVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay50eXBlID09IFwiaHR0cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiL2ltZy9odHRwLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiL2ltZy9waW5nLnN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxNlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IFwiVHlwZSBvZiBjaGVja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJUeXBlOiBcIiArIHRhc2sudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICB0YXNrLmV4ZWN1dGVkX2F0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0ubW9tZW50KHRhc2suZXhlY3V0ZWRfYXQpLmZyb21Ob3coKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IFwiL2ltZy9pbmZvLnN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IFwiSW5mb3NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiUmVzdWx0OiBcIiArIHRhc2sub3V0cHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHROZXZlclxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIFtfdm0uX3YoX3ZtLl9zKHRhc2suZnJlcXVlbmN5IC8gNjApKV0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInRkXCIsIHsgY2xhc3M6IHRhc2suYWN0aXZlID09IDAgPyBcImluYWN0aXZlXCIgOiBcIlwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IFwiI1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5hY3RpdmUgPT0gMSA/IFwiRGlzYWJsZSB0YXNrXCIgOiBcIkVuYWJsZSB0YXNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRpc2FibGVUYXNrKHRhc2suaWQsIHRhc2suYWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5hY3RpdmUgPT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCIvaW1nL29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIi9pbWcvb2ZmLnN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBcIkRpc2FibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyb3V0ZXItbGlua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwidGFza2RldGFpbHNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkOiB0YXNrLmlkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IFwiL2ltZy9zZWUuc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogXCJEZXRhaWxzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pLFxuICAgICAgXSlcbiAgICB9KSxcbiAgICAwXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXG4gIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3ZtID0gdGhpc1xuICAgIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICAgIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICAgIHJldHVybiBfYyhcInRoZWFkXCIsIFtcbiAgICAgIF9jKFwidHJcIiwgW1xuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiNSVcIiB9IH0sIFtfdm0uX3YoXCJVcD9cIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIipcIiB9IH0sIFtfdm0uX3YoXCJIb3N0XCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCI1JVwiIH0gfSwgW192bS5fdihcIlR5cGVcIildKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHdpZHRoOiBcIjIwJVwiIH0gfSwgW192bS5fdihcIkxhc3QgY2hlY2tlZFwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiMTMlXCIgfSB9LCBbX3ZtLl92KFwiRnJlcXVlbmN5IChtaW4pXCIpXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyB3aWR0aDogXCI1JVwiIH0gfSwgW192bS5fdihcIkFjdGl2ZVwiKV0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgd2lkdGg6IFwiNSVcIiB9IH0sIFtfdm0uX3YoXCJBY3Rpb25zXCIpXSksXG4gICAgICBdKSxcbiAgICBdKVxuICB9LFxuXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\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/components/tasklist.vue?vue&type=template&id=45d24f53&\n"); /***/ }), diff --git a/resources/views/components/tasklist.vue b/resources/views/components/tasklist.vue index d27e62a..170ccf2 100644 --- a/resources/views/components/tasklist.vue +++ b/resources/views/components/tasklist.vue @@ -42,9 +42,9 @@