mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Working on time tracker
This commit is contained in:
parent
3347f14392
commit
27813567b2
@ -154,6 +154,14 @@ class TaskRepository extends BaseRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
if ($count = count($timeLog)) {
|
||||||
|
$lastTime = $timeLog[$count - 1];
|
||||||
|
$task->is_running = count($lastTime) == 2 && $lastTime[1];
|
||||||
|
\Log::info('is running: ' . $task->is_running);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
$task->time_log = json_encode($timeLog);
|
$task->time_log = json_encode($timeLog);
|
||||||
$task->save();
|
$task->save();
|
||||||
|
|
||||||
|
@ -95,13 +95,15 @@
|
|||||||
|
|
||||||
<div style="height:74px"></div>
|
<div style="height:74px"></div>
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
Client: <span data-bind="text: ko.toJSON(model.selectedClient().public_id)"></span>
|
||||||
|
Project: <span data-bind="text: ko.toJSON(model.selectedProject().public_id)"></span>
|
||||||
|
|
||||||
<div data-bind="text: ko.toJSON(model.selectedTask().client_id)"></div>
|
<div data-bind="text: ko.toJSON(model.selectedTask().client_id)"></div>
|
||||||
<div data-bind="text: ko.toJSON(model.selectedTask().client)"></div>
|
<div data-bind="text: ko.toJSON(model.selectedTask().client)"></div>
|
||||||
<div data-bind="text: ko.toJSON(model.selectedTask().project_id)"></div>
|
<div data-bind="text: ko.toJSON(model.selectedTask().project_id)"></div>
|
||||||
<div data-bind="text: ko.toJSON(model.selectedTask().project)"></div>
|
<div data-bind="text: ko.toJSON(model.selectedTask().project)"></div>
|
||||||
<div data-bind="text: ko.toJSON(model.selectedClient().public_id)"></div>
|
|
||||||
<div data-bind="text: ko.toJSON(model.selectedProject().public_id)"></div>
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<div class="container" style="margin: 0 auto;width: 100%;">
|
<div class="container" style="margin: 0 auto;width: 100%;">
|
||||||
|
@ -15,38 +15,10 @@
|
|||||||
if (! model.selectedTask() || ! model.formChanged()) {
|
if (! model.selectedTask() || ! model.formChanged()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var data = $('#taskForm').serialize();
|
|
||||||
var task = model.selectedTask();
|
var task = model.selectedTask();
|
||||||
|
var data = $('#taskForm').serialize();
|
||||||
data += '&time_log=' + JSON.stringify(task.times());
|
data += '&time_log=' + JSON.stringify(task.times());
|
||||||
var url = '{{ url('/tasks') }}';
|
task.save(data, true);
|
||||||
var method = 'post';
|
|
||||||
if (task.public_id()) {
|
|
||||||
method = 'put';
|
|
||||||
url += '/' + task.public_id();
|
|
||||||
}
|
|
||||||
$.ajax({
|
|
||||||
dataType: 'json',
|
|
||||||
type: method,
|
|
||||||
data: data,
|
|
||||||
url: url,
|
|
||||||
accepts: {
|
|
||||||
json: 'application/json'
|
|
||||||
},
|
|
||||||
success: function(response) {
|
|
||||||
console.log(response);
|
|
||||||
var task = self.selectedTask();
|
|
||||||
var projectId = $('input[name=project_id]').val();
|
|
||||||
if (projectId == -1) {
|
|
||||||
var project = response.project;
|
|
||||||
project.client = response.client;
|
|
||||||
projects.push(project);
|
|
||||||
addProjectToMaps(project);
|
|
||||||
refreshProjectList();
|
|
||||||
}
|
|
||||||
task.update(response);
|
|
||||||
self.formChanged(false);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.submitBulkAction = function(action, task) {
|
self.submitBulkAction = function(action, task) {
|
||||||
@ -144,12 +116,14 @@
|
|||||||
|
|
||||||
self.viewClient = function(task) {
|
self.viewClient = function(task) {
|
||||||
self.filter(task.client().displayName());
|
self.filter(task.client().displayName());
|
||||||
|
self.selectedProject(false);
|
||||||
self.selectedClient(task.client());
|
self.selectedClient(task.client());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.viewProject = function(task) {
|
self.viewProject = function(task) {
|
||||||
self.filter(task.project().name());
|
self.filter(task.project().name());
|
||||||
|
self.selectedClient(false);
|
||||||
self.selectedProject(task.project());
|
self.selectedProject(task.project());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -348,6 +322,39 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.save = function(data, isSelected) {
|
||||||
|
var url = '{{ url('/tasks') }}';
|
||||||
|
var method = 'post';
|
||||||
|
if (self.public_id()) {
|
||||||
|
method = 'put';
|
||||||
|
url += '/' + self.public_id();
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
dataType: 'json',
|
||||||
|
type: method,
|
||||||
|
data: data,
|
||||||
|
url: url,
|
||||||
|
accepts: {
|
||||||
|
json: 'application/json'
|
||||||
|
},
|
||||||
|
success: function(response) {
|
||||||
|
console.log(response);
|
||||||
|
if (isSelected) {
|
||||||
|
var projectId = $('input[name=project_id]').val();
|
||||||
|
if (projectId == -1) {
|
||||||
|
var project = response.project;
|
||||||
|
project.client = response.client;
|
||||||
|
projects.push(project);
|
||||||
|
addProjectToMaps(project);
|
||||||
|
refreshProjectList();
|
||||||
|
}
|
||||||
|
self.update(response);
|
||||||
|
model.formChanged(false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
self.update = function(data) {
|
self.update = function(data) {
|
||||||
self.data = data;
|
self.data = data;
|
||||||
var times = JSON.parse(data.time_log);
|
var times = JSON.parse(data.time_log);
|
||||||
@ -431,6 +438,7 @@
|
|||||||
time.startTime(moment().unix());
|
time.startTime(moment().unix());
|
||||||
self.addTime(time);
|
self.addTime(time);
|
||||||
}
|
}
|
||||||
|
self.save('time_log=' + JSON.stringify(self.times()));
|
||||||
}
|
}
|
||||||
|
|
||||||
self.listItemState = ko.computed(function() {
|
self.listItemState = ko.computed(function() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user