From 4a2ee7d2286af660eba9f39dc34f65b8b895542d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 18 Sep 2017 00:11:58 +0300 Subject: [PATCH] Working on time tracker --- .../Controllers/TimeTrackerController.php | 2 +- resources/views/time_tracker.blade.php | 58 ++++++++++++++++--- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/TimeTrackerController.php b/app/Http/Controllers/TimeTrackerController.php index 154c3a37b5f8..cc456f612419 100644 --- a/app/Http/Controllers/TimeTrackerController.php +++ b/app/Http/Controllers/TimeTrackerController.php @@ -16,7 +16,7 @@ class TimeTrackerController extends Controller $data = [ 'title' => trans('texts.time_tracker'), - 'tasks' => Task::scope()->get(), + 'tasks' => Task::scope()->with('project', 'client.contacts')->get(), 'account' => $account, ]; diff --git a/resources/views/time_tracker.blade.php b/resources/views/time_tracker.blade.php index 78d185fe878e..44a3eabb13ba 100644 --- a/resources/views/time_tracker.blade.php +++ b/resources/views/time_tracker.blade.php @@ -9,6 +9,16 @@ outline: none; } + span.link { + cursor:pointer; + color:#0000EE; + text-decoration:none; + } + + span.link:hover { + text-decoration:underline; + } + .no-gutter > [class*='col-'] { padding-right:0; padding-left:0; @@ -87,9 +97,10 @@ -
+

- ... + +

@@ -125,6 +136,12 @@ return true; } + self.viewProject = function(task) { + console.log('view project'); + self.filter(task.project.name()); + return false; + } + self.onStartClick = function() { if (self.selectedTask()) { console.log('start w/selected...'); @@ -198,15 +215,13 @@ return self.tasks(); } else { var filtered = ko.utils.arrayFilter(self.tasks(), function(task) { - var description = task.description().toLowerCase(); - return description.indexOf(self.filter().toLowerCase()) >= 0; + return task.matchesFilter(self.filter()); }); return filtered.length == 0 ? self.tasks() : filtered; } }); self.addTask = function(task) { - console.log(task); self.tasks.push(task); } @@ -221,8 +236,17 @@ self.description = ko.observable('test'); self.time_log = ko.observableArray(); + self.mapping = { + 'project': { + create: function(data) { + console.log(data.data); + return new ProjectModel(data.data); + } + }, + } + if (data) { - ko.mapping.fromJS(data, {}, this); + ko.mapping.fromJS(data, self.mapping, this); self.time_log = ko.observableArray(); data = JSON.parse(data.time_log); for (var i=0; i= 0) { + return true; + } + if (self.project && self.project.name().toLowerCase().indexOf(filter) >= 0) { + return true; + } + return false; + } + self.isRunning = ko.computed(function() { if (! self.time_log().length) { return false; @@ -266,9 +300,17 @@ }); } + function ProjectModel(data) { + var self = this; + self.name = ko.observable(''); + + if (data) { + ko.mapping.fromJS(data, {}, this); + } + } + function TimeModel(data) { var self = this; - self.startTime = ko.observable(0); self.endTime = ko.observable(0); self.duration = ko.observable(0);