UNPKG

xtutils

Version:

Thuku's assorted general purpose typescript/javascript library.

104 lines 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ElapsedTime = void 0; const _datetime_1 = require("../utils/_datetime"); const _number_1 = require("../utils/_number"); class ElapsedTime { //props start_time; stop_time; _ms; /** * New instance */ constructor() { this.start_time = new Date(); this.stop_time = undefined; this._ms = undefined; } /** * Start time tracking (sets start_time to now and resets other properties) */ start() { const _now = new Date(); this.start_time = (0, _datetime_1._isDate)(this.start_time) ? this.start_time : _now; this.stop_time = undefined; this._ms = undefined; return this; } /** * Track current time (sets this._ms to time difference between last start and now) * * @param updateStart Set start to now */ now(updateStart = false) { const _now = new Date(); const _start = (0, _datetime_1._isDate)(this.start_time) ? this.start_time : this.start_time = _now; this._ms = _now.getTime() - _start.getTime(); if (updateStart) this.start_time = _now; return this; } /** * Stop time tracking (sets this._ms to time difference between last start and last stop) * If last stop is less than start time, stop time is updated to now. */ stop() { const _now = new Date(); const _start = (0, _datetime_1._isDate)(this.start_time) ? this.start_time : _now, t = _start.getTime(); const _stop_time = this.stop_time; const _stop = (0, _datetime_1._isDate)(_stop_time) && _stop_time.getTime() >= t ? _stop_time : this.stop_time = _now; this._ms = _stop.getTime() - t; return this; } /** * Whether time tracking was started */ started() { return (0, _datetime_1._isDate)(this.start_time); } /** * Whether time tracking was stopped */ stopped() { return (0, _datetime_1._isDate)(this.stop_time); } /** * Get tracked elapsed time in milliseconds * * @returns milliseconds */ ms() { return parseInt(this._ms); } /** * Get tracked elapsed time in seconds * * @param decimalPlaces * @returns seconds */ sec(decimalPlaces = 3) { return (0, _number_1._round)(this.ms() / 1000, decimalPlaces); } /** * Get tracked elapsed time in minutes * * @param decimalPlaces * @returns minutes */ min(decimalPlaces = 3) { return (0, _number_1._round)(this.ms() / 60000, decimalPlaces); } /** * Get tracking data (this will stop tracking) */ data() { this.stop(); const start_time = (0, _datetime_1._isDate)(this.start_time) ? this.start_time : undefined; const stop_time = (0, _datetime_1._isDate)(this.stop_time) ? this.stop_time : undefined; const elapsed_ms = this.ms(); return { start_time, stop_time, elapsed_ms }; } } exports.ElapsedTime = ElapsedTime; //# sourceMappingURL=_ElapsedTime.js.map