work-time-calculator/src/output.ts

41 lines
1.7 KiB
TypeScript

import chalk from 'chalk';
import { formatDuration, formatTimestamp, getHoursRoundedStr } from './format';
import { WtcPromptResult } from './types/WtcPromptResult';
import { MessageKey, message } from './i18n.js';
import WtcConfig from './types/WtcConfig';
const { log } = console;
const output = (result: WtcPromptResult, config: WtcConfig) => {
const msg = message(config.language);
const fmtDuration = formatDuration(config.language);
const hoursRounded = getHoursRoundedStr(config.language);
const { startedAt, stoppedAt, stoppedWorking, worked, unLogged, workLeft, workedOvertime } = result;
log();
log(msg(MessageKey.startedWorking), formatTimestamp(startedAt));
log(
(stoppedWorking ? msg(MessageKey.stoppedWorking) : msg(MessageKey.hoursCalculated)) +
` ${msg(MessageKey.klo)}:`,
formatTimestamp(stoppedAt),
);
log(msg(MessageKey.workedToday), chalk.green(fmtDuration(worked)), chalk.yellow(hoursRounded(worked)));
const unLoggedMinutes = unLogged.asMinutes();
if (unLoggedMinutes >= 0) {
log(
msg(MessageKey.unloggedToday),
unLoggedMinutes === 0 ? chalk.green(msg(MessageKey.none)) : chalk.red(fmtDuration(unLogged)),
unLoggedMinutes === 0 ? '' : chalk.yellow(hoursRounded(unLogged)),
);
} else if (unLoggedMinutes < 0) {
log(chalk.red(msg(MessageKey.loggedOver, fmtDuration(unLogged))), chalk.yellow(hoursRounded(unLogged)));
}
if (workLeft.asMinutes() > 0) {
log(msg(MessageKey.workLeft, chalk.green(fmtDuration(workLeft))));
} else if (workedOvertime) {
log(msg(MessageKey.workedOvertime, chalk.green(fmtDuration(workedOvertime))));
}
};
export default output;