Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 1x 1x 1x 1x 1x 3x 3x 3x 1x 3x 14x 3x 3x 3x 3x 3x 1x 3x 3x 3x 1x 1x 1x 1x 1x 1x 3x 1x 1x | import {
format,
differenceInHours,
differenceInMinutes,
addHours
} from "date-fns";
import chalk from "chalk";
import Formatter from "../formatter";
import { isNumber } from "util";
class Calculator {
format = new Formatter();
constructor() {}
/**
* Calculates the number of hours worked so far from right now.
*
* @param startTime The time you started working.
* @param newTime The time right now to measure against. Defaults to now.
* @returns the number of hours worked so far.
*/
hoursWorkedSoFar(startTime: Date, InowTime: Date = new Date()): number {
const minutesWorked = differenceInMinutes(startTime, nowTime);
return minutesWorked / 60;
}
estimateEndTime(hours: number, comparison: number) {
let difference: number = Number(hours - comparison) * -1;
return format(addHours(new Date(), difference), "hh:mma");
}
/**
* Converts a simple time string to a JavaScript date.
*
* @param time A simple time layout.
* @returns A converted time in the date format.
*/
convertTimeToDate(time: string, Idate: Date = new Date()): Date {
const splitTime = time.split("").filter(i => !isNaN(i as any));
if (splitTime.length === 3) splitTime.unshift("0");
const hour = Number(`${splitTime[0]}${splitTime[1]}`);
const minutes = Number(`${splitTime[2]}${splitTime[3]}`);
date.setHours(hour, minutes);
return date;
}
/**
* Finds the number of hours left against a compared amount.
*
* @param hours Number of hours worked
* @param comparison Number of hours to compare with hours.
* @returns the difference of the compared time in colored hours.
*/
difference(hours: number, comparison: number): string {
let difference: number = Number((hours - comparison).toFixed(2));
let differenceOut: string = "";
switch (true) {
case difference > 0:
differenceOut = chalk.green(`+${this.format.hours(difference)}`);
break;
case difference == 0:
differenceOut = chalk.yellow(` ${this.format.hours(0)}`);
break;
case difference < 0:
differenceOut = chalk.red(
`-${this.format.hours(Math.abs(difference))}`
);
default:
difference;
}
return differenceOut;
}
}
export default Calculator;
|