From 4b27192ed8d765c0cc95ad8bf61874b177224e3f Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 20 Dec 2017 10:41:40 +0200 Subject: [PATCH] Working on kanban --- app/Http/Controllers/TimeTrackerController.php | 4 +++- resources/views/tasks/time_tracker.blade.php | 13 +++++++++++-- .../views/tasks/time_tracker_knockout.blade.php | 15 +++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/TimeTrackerController.php b/app/Http/Controllers/TimeTrackerController.php index 77cb951c304a..30d32600f695 100644 --- a/app/Http/Controllers/TimeTrackerController.php +++ b/app/Http/Controllers/TimeTrackerController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Models\Task; +use App\Models\TaskStatus; use App\Models\Client; use App\Models\Project; @@ -21,9 +22,10 @@ class TimeTrackerController extends Controller $data = [ 'title' => trans('texts.time_tracker'), - 'tasks' => Task::scope()->with('project', 'client.contacts')->whereNull('invoice_id')->get(), + 'tasks' => Task::scope()->with('project', 'client.contacts', 'task_status')->whereNull('invoice_id')->get(), 'clients' => Client::scope()->with('contacts')->orderBy('name')->get(), 'projects' => Project::scope()->with('client.contacts')->orderBy('name')->get(), + 'statuses' => TaskStatus::scope()->orderBy('sort_order')->get(), 'account' => $account, ]; diff --git a/resources/views/tasks/time_tracker.blade.php b/resources/views/tasks/time_tracker.blade.php index 47dcc74a5961..a8f0e57e0af9 100644 --- a/resources/views/tasks/time_tracker.blade.php +++ b/resources/views/tasks/time_tracker.blade.php @@ -165,7 +165,7 @@
- + @@ -307,7 +307,16 @@
-
+ @if ($statuses->count()) +
+ {!! Former::select('filter_status') + ->label('status') + ->addOption(trans('texts.all'), '') + ->fromQuery($statuses, 'name', 'public_id') + ->data_bind('value: filterStatusId') !!} +
+ @endif +
{!! Former::select('filter_state') ->label('filter') ->addOption(trans('texts.all'), 'all') diff --git a/resources/views/tasks/time_tracker_knockout.blade.php b/resources/views/tasks/time_tracker_knockout.blade.php index ca29b3244276..ae278aa82513 100644 --- a/resources/views/tasks/time_tracker_knockout.blade.php +++ b/resources/views/tasks/time_tracker_knockout.blade.php @@ -187,6 +187,7 @@ } self.filterState = ko.observable('all'); + self.filterStatusId = ko.observable(false); self.sortField = ko.observable(defaultSortField); self.sortDirection = ko.observable(defaultSortDirection); @@ -519,7 +520,7 @@ var tasks = self.tasks(); var filtered = ko.utils.arrayFilter(tasks, function(task) { - return task.matchesFilter(self.filter(), self.filterState()); + return task.matchesFilter(self.filter(), self.filterState(), self.filterStatusId()); }); if (! self.filter() || filtered.length > 0) { @@ -602,6 +603,7 @@ self.project = ko.observable(); self.isHovered = ko.observable(false); self.created_at = ko.observable(moment.utc().format('YYYY-MM-DD HH:mm:ss')); + self.task_status_id = ko.observable(); self.mapping = { 'client': { @@ -768,6 +770,9 @@ if (! self.isRunning()) { self.addTime(); } + if (data.task_status) { + self.task_status_id(data.task_status.public_id); + } // Trigger isChanged to update self.client_id.valueHasMutated(); @@ -928,7 +933,7 @@ return times; } - self.matchesFilter = function(filter, filterState) { + self.matchesFilter = function(filter, filterState, filterStatusId) { if (filter) { filter = model.filter().toLowerCase(); var parts = filter.split(' '); @@ -964,6 +969,12 @@ return false; } + if (filterStatusId) { + if (self.task_status_id() != filterStatusId) { + return false; + } + } + return true; }