Working on time tracker app

This commit is contained in:
Hillel Coren 2017-09-17 16:17:34 +03:00
parent 2c5e7f2506
commit 1997973093
3 changed files with 39 additions and 5 deletions

View File

@ -12,6 +12,7 @@ class TimeTrackerController extends Controller
public function index() public function index()
{ {
$data = [ $data = [
'title' => trans('texts.time_tracker'),
'tasks' => Task::scope()->get(), 'tasks' => Task::scope()->get(),
]; ];

View File

@ -2449,6 +2449,7 @@ $LANG = array(
'pro_plan_calendar' => ':link to enable the calendar by joining the Pro Plan', 'pro_plan_calendar' => ':link to enable the calendar by joining the Pro Plan',
'what_are_you_working_on' => 'What are you working on?', 'what_are_you_working_on' => 'What are you working on?',
'time_tracker' => 'Time Tracker',
); );

View File

@ -33,8 +33,8 @@
<form> <form>
<div class="input-group input-group-lg"> <div class="input-group input-group-lg">
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-time"></span></span> <span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-time"></span></span>
<input type="text" class="form-control" <input type="text" class="form-control search" data-bind="value: filter, valueUpdate: 'afterkeydown', attr: {placeholder: placeholder}"
placeholder="{{ trans('texts.what_are_you_working_on') }}" autocomplete="off" autofocus="autofocus"> autocomplete="off" autofocus="autofocus">
</div> </div>
</form> </form>
</div> </div>
@ -43,8 +43,13 @@
<div style="height:74px"></div> <div style="height:74px"></div>
<div class="list-group" data-bind="foreach: tasks"> <div class="well">
<a href="#" class="list-group-item list-group-item-type1"> <div data-bind="text: selectedTask().description"></div>
</div>
<div class="list-group" data-bind="foreach: filteredTasks">
<a href="#" data-bind="click: $parent.selectTask" class="list-group-item list-group-item-type1">
<span class="pull-right"> <span class="pull-right">
14 14
</span> </span>
@ -62,10 +67,38 @@
function ViewModel() { function ViewModel() {
var self = this; var self = this;
self.tasks = ko.observableArray(); self.tasks = ko.observableArray();
self.filter = ko.observable('');
self.selectedTask = ko.observable(new TaskModel());
self.placeholder = ko.computed(function() {
if (self.selectedTask() && self.selectedTask().description) {
return self.selectedTask().description();
} else {
return "{{ trans('texts.what_are_you_working_on') }}";
}
});
self.filteredTasks = ko.computed(function() {
if(! self.filter()) {
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 filtered.length == 0 ? self.tasks() : filtered;
}
});
self.addTask = function(task) { self.addTask = function(task) {
console.log(task);
self.tasks.push(task); self.tasks.push(task);
} }
self.selectTask = function(task) {
self.filter('');
self.selectedTask(task);
}
} }
function TaskModel(data) { function TaskModel(data) {
@ -81,7 +114,6 @@
window.model = new ViewModel(); window.model = new ViewModel();
for (var i=0; i<tasks.length; i++) { for (var i=0; i<tasks.length; i++) {
var task = tasks[i]; var task = tasks[i];
console.log(task);
var taskModel = new TaskModel(task); var taskModel = new TaskModel(task);
model.addTask(taskModel); model.addTask(taskModel);
} }