From fd306e6104d9b0ffb271ff0f1ea38dba582f286f Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 17 Sep 2017 19:27:47 +0300 Subject: [PATCH] Working on time tracker --- .../Controllers/TimeTrackerController.php | 4 + resources/views/time_tracker.blade.php | 170 ++++++++++++++++-- 2 files changed, 164 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/TimeTrackerController.php b/app/Http/Controllers/TimeTrackerController.php index 98c3a2649a1b..154c3a37b5f8 100644 --- a/app/Http/Controllers/TimeTrackerController.php +++ b/app/Http/Controllers/TimeTrackerController.php @@ -11,9 +11,13 @@ class TimeTrackerController extends Controller { public function index() { + $user = auth()->user(); + $account = $user->account; + $data = [ 'title' => trans('texts.time_tracker'), 'tasks' => Task::scope()->get(), + 'account' => $account, ]; return view('time_tracker', $data); diff --git a/resources/views/time_tracker.blade.php b/resources/views/time_tracker.blade.php index bff2b0b82403..4dd3692801fd 100644 --- a/resources/views/time_tracker.blade.php +++ b/resources/views/time_tracker.blade.php @@ -27,18 +27,20 @@
@@ -46,7 +48,7 @@
-
+
{!! Former::select('client')->addOption('', '')->addGroupClass('client-select') !!} @@ -63,10 +65,10 @@
- 14 +
-

... +

@@ -81,15 +83,24 @@ self.tasks = ko.observableArray(); self.filter = ko.observable(''); self.selectedTask = ko.observable(false); + self.clock = ko.observable(0); self.onFilterChanged = function(data) { self.selectedTask(false); } + self.onFilterKeyPress = function(data, event) { + if (event.which == 13) { + self.onStartClick(); + } + return true; + } + self.onStartClick = function() { if (self.selectedTask()) { - + console.log('start w/selected...'); } else { + console.log('start w/o selected...'); var task = new TaskModel(); task.description(self.filter()); self.addTask(task); @@ -98,14 +109,50 @@ } } + self.tock = function(startTime) { + console.log('tock..'); + self.clock(self.clock() + 1); + setTimeout(function() { + model.tock(); + }, 1000); + } + + self.startIcon = ko.computed(function() { + if (self.selectedTask()) { + if (self.selectedTask().isRunning()) { + return 'glyphicon glyphicon-stop'; + } else { + return 'glyphicon glyphicon-play'; + } + } else { + return 'glyphicon glyphicon-play'; + } + }); + self.startLabel = ko.computed(function() { if (self.selectedTask()) { - return "{{ trans('texts.resume') }}"; + if (self.selectedTask().isRunning()) { + return "{{ trans('texts.stop') }}"; + } else { + return "{{ trans('texts.resume') }}"; + } } else { return "{{ trans('texts.start') }}"; } }); + self.startClass = ko.computed(function() { + if (self.selectedTask()) { + if (self.selectedTask().isRunning()) { + return 'btn-danger'; + } else { + return 'btn-success'; + } + } else { + return 'btn-success'; + } + }); + self.placeholder = ko.computed(function() { if (self.selectedTask() && self.selectedTask().description) { return self.selectedTask().description(); @@ -140,10 +187,112 @@ function TaskModel(data) { var self = this; self.description = ko.observable('test'); + self.time_log = ko.observableArray(); if (data) { ko.mapping.fromJS(data, {}, this); + self.time_log = ko.observableArray(); + data = JSON.parse(data.time_log); + for (var i=0; i