153 lines
3.1 KiB
JavaScript
153 lines
3.1 KiB
JavaScript
import { apiService } from "@/services/api.service";
|
|
import { helperService } from "@/services/helper.service";
|
|
|
|
/**
|
|
* A collection of functions to retreive and send all user-specific data.
|
|
*/
|
|
export const jugglService = {
|
|
/**
|
|
* Fetches the user from the API.
|
|
*
|
|
* @returns A promise
|
|
*/
|
|
getUser() {
|
|
return apiService.post("/getUser.php").then(r => {
|
|
return {
|
|
data: r.data,
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
getProjects() {
|
|
return apiService.post("/getProjects.php").then(r => {
|
|
return {
|
|
data: r.data,
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
getRecord(recordId) {
|
|
return apiService
|
|
.post("/getRecord.php", {
|
|
record_id: recordId
|
|
})
|
|
.then(r => {
|
|
return {
|
|
data: processRecords(r.data),
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
removeRecord(recordId) {
|
|
return apiService
|
|
.post("/removeRecord.php", {
|
|
record_id: recordId
|
|
})
|
|
.then(r => {
|
|
return {
|
|
data: r.data,
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
getRecords(options = {}) {
|
|
var payload = {};
|
|
|
|
if (options.limit !== undefined && options.limit > 0) {
|
|
payload.limit = options.limit;
|
|
}
|
|
if (options.finished !== undefined) {
|
|
payload.finished = options.finished;
|
|
}
|
|
|
|
return apiService.post("/getRecords.php", payload).then(r => {
|
|
return {
|
|
data: processRecords(r.data),
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
updateRecord(record) {
|
|
var payload = {
|
|
record: record
|
|
};
|
|
|
|
return apiService.post("/updateRecord.php", payload).then(r => {
|
|
return {
|
|
data: processRecords(r.data),
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
getRunningRecords() {
|
|
return apiService.post("/getRunningRecords.php").then(r => {
|
|
return {
|
|
data: processRecords(r.data),
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
addProject(name, startDate = null) {
|
|
if (startDate == null) startDate = new Date().toISOString();
|
|
return apiService
|
|
.post("/addProject.php", {
|
|
name: name,
|
|
start_date: startDate
|
|
})
|
|
.then(r => {
|
|
return {
|
|
data: r.data,
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
startRecord(projectId, startTime = null) {
|
|
if (startTime == null) startTime = new Date();
|
|
return apiService
|
|
.post("/startRecord.php", {
|
|
project_id: projectId,
|
|
start_time: helperService.dateToString(startTime)
|
|
})
|
|
.then(r => {
|
|
return {
|
|
data: processRecords(r.data),
|
|
msg: ""
|
|
};
|
|
});
|
|
},
|
|
|
|
endRecord(recordId, endTime = null) {
|
|
if (endTime == null) endTime = new Date();
|
|
return apiService
|
|
.post("/endRecord.php", {
|
|
record_id: recordId,
|
|
end_time: helperService.dateToString(endTime)
|
|
})
|
|
.then(r => {
|
|
return {
|
|
data: processRecords(r.data),
|
|
msg: ""
|
|
};
|
|
});
|
|
}
|
|
};
|
|
|
|
function processRecords(data) {
|
|
Object.values(data.records).forEach(rec => {
|
|
rec.running = rec.end_time === null;
|
|
|
|
if (rec.running) {
|
|
rec.duration =
|
|
(new Date().getTime() - new Date(rec.start_time).getTime()) / 1000;
|
|
}
|
|
});
|
|
return data;
|
|
}
|