UNPKG

time-track

Version:

Time is money, right? A few things that aims to help tracking your time. So here is a time tracking commandline app.

95 lines (75 loc) 3.06 kB
var TimeTrackDateValue = require("./time-track-date-value.js"); var colors = require("colors/safe"); var Reporter = function(timeTracker) { this.timeTracker = timeTracker; return this; }; Reporter.prototype.computeToday = function() { var tt = this.timeTracker; var date = tt.date.toString(); tt.log(colors.bold.cyan("Project \"" + tt.system.configuration.activeProjectName + "\"") , colors.yellow.underline("(" + tt.configFile + ")")); var result = tt.sum(date); var restSecondsToWorkThisDay = tt.getAvailableSecondsPerDay(date.split(".")[1],date.split(".")[2]); var time = new tt.Moment("00:00:00", "HH:mm:ss").add(result, "seconds"); var color = colors.green; if (result >= restSecondsToWorkThisDay){ color = colors.cyan; if (restSecondsToWorkThisDay > 0 && result > 0){ tt.log(color("Time elapsed:"), color(date), color("-"), color(time.format("HH:mm:ss")), color("You are done for this day ;O)")); } else { tt.log(color("Time elapsed:"), color(date), color("-"), color(time.format("HH:mm:ss"))); } } else { var canWorkUntil = new tt.Moment(date + " " + tt.time.toString(), "DD.MM.YYYY HH:mm:ss").add(restSecondsToWorkThisDay - result, "seconds"); tt.log(colors.bold.yellow("Elapsed time on " + date + ": ") + colors.cyan(time.format("HH:mm:ss"))); tt.log(colors.bold.yellow("Expected end-time: ") + colors.cyan(canWorkUntil.format("dddd, MMMM Do YYYY, HH:mm:ss"))); } return result; }; Reporter.prototype.compute = function() { var tt = this.timeTracker; if(tt.program.timerange && tt.program.timerange !== true){ tt.openConfiguration(new TimeTrackDateValue(tt.program.timerange)); } var date = tt.date; var logtext = ""; var error = false; logtext += ("DocumentDate;WorkingDays;WorkedDays;WorkingHours;WorkedHours;;Date;StartTime;StopTime;Total\n"); logtext += ( new tt.Moment().format("dddd, MMMM Do YYYY, h:mm:ss a") + ";" + tt.getWorkingDaysThisMonth() + ";" + tt.getWorkedDaysThisMonth(date.month, date.year) + ";" + tt.getWorkingSecondsThisMonth() / 60 / 60 + ";" + Math.round(tt.sumMonth(date.month, date.year) / 60 / 60 * 100) / 100 + ";;;;;\n" ); var result = 0; var self = this; var logData = function(data, key) { for (var i = 0; i < data.length; i++) { var item = data[i]; var sum = ""; if ( i === data.length-1 ){ sum = self.timeTracker.sum(key); result += sum; sum = new self.timeTracker.Moment("00:00:00", "HH:mm:ss").add(sum, "seconds").format("HH:mm:ss"); } if (!item[1]){ tt.log( colors.bgRed.white.bold("ERROR : Missing tracker stop time for " + key + "!") ); error = true; } logtext += (";;;;;;" + key + ";" + item[0] + ";" + (item[1] || (new self.timeTracker.Moment()).format("HH:mm:ss")) + ";" + sum + "\n"); } }; for (var d = 1; d < 32; d++) { var key = new TimeTrackDateValue(d + "." + date.month + "." + date.year).toString(); if (tt.config[key]){ var data = tt.config[key]; logData(data, key); } } if(!error){ tt.log(logtext); } return result; }; module.exports = Reporter;