ng-time-past-pipe
Version:
Reactive textual representation of the time that has been passed between a given date and now in your Angular App.
41 lines • 4.56 kB
JavaScript
import { inject, InjectFlags, InjectionToken } from '@angular/core';
/**
* Custom `UpdateIntervalGenerator` Injection Token
*
* @public
* @api
*/
export const CUSTOM_UPDATE_INTERVAL_GENERATOR = new InjectionToken('Custom Update Interval Generator');
/**
* Determinate the point of time on when the output should be checked for a update
*
* @param diff The time diff object
* @return A point of time in future in seconds
* @public
* @api
*/
export const defaultUpdateIntervalGenerator = (diff) => {
if (diff.seconds < 60) { // less than 1 min, update every second
return 1;
}
else if (diff.seconds < 3600) { // less than an hour, update every 30 secs
return 30;
}
else if (diff.seconds < 86400) { // less than a day, update every 5 min
return 300;
}
// update every hour
return 3600;
};
/**
* Provides the `UpdateIntervalGenerator` preferring a custom provider for internal usage
*
* @internal
*/
export const UPDATE_INTERVAL_GENERATOR = new InjectionToken('Update Interval Generator', {
factory: () => {
const customGenerator = inject(CUSTOM_UPDATE_INTERVAL_GENERATOR, InjectFlags.Optional);
return customGenerator ?? defaultUpdateIntervalGenerator;
},
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnRlcnZhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRpbWUtcGFzdC1waXBlL3NyYy9saWIvdGltZS1pbnRlcnZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVcEU7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBMEIsa0NBQWtDLENBQUMsQ0FBQztBQUVoSTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQTRCLENBQUMsSUFBYyxFQUFVLEVBQUU7SUFDaEcsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLHVDQUF1QztRQUM5RCxPQUFPLENBQUMsQ0FBQztLQUNWO1NBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxFQUFFLDBDQUEwQztRQUMxRSxPQUFPLEVBQUUsQ0FBQztLQUNYO1NBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxFQUFFLHNDQUFzQztRQUN2RSxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0Qsb0JBQW9CO0lBQ3BCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUEwQiwyQkFBMkIsRUFBRTtJQUNoSCxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1osTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGdDQUFnQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RixPQUFPLGVBQWUsSUFBSSw4QkFBOEIsQ0FBQztJQUMzRCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZURpZmYgfSBmcm9tICcuL3RpbWUtZGlmZic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdEZsYWdzLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEZ1bmN0aW9uIFR5cGUgZm9yIHRoZSBgVXBkYXRlSW50ZXJ2YWxHZW5lcmF0b3JgXG4gKlxuICogQHB1YmxpY1xuICogQGFwaVxuICovXG5leHBvcnQgdHlwZSBVcGRhdGVJbnRlcnZhbEdlbmVyYXRvciA9IChkaWZmOiBUaW1lRGlmZikgPT4gbnVtYmVyO1xuXG4vKipcbiAqIEN1c3RvbSBgVXBkYXRlSW50ZXJ2YWxHZW5lcmF0b3JgIEluamVjdGlvbiBUb2tlblxuICpcbiAqIEBwdWJsaWNcbiAqIEBhcGlcbiAqL1xuZXhwb3J0IGNvbnN0IENVU1RPTV9VUERBVEVfSU5URVJWQUxfR0VORVJBVE9SID0gbmV3IEluamVjdGlvblRva2VuPFVwZGF0ZUludGVydmFsR2VuZXJhdG9yPignQ3VzdG9tIFVwZGF0ZSBJbnRlcnZhbCBHZW5lcmF0b3InKTtcblxuLyoqXG4gKiBEZXRlcm1pbmF0ZSB0aGUgcG9pbnQgb2YgdGltZSBvbiB3aGVuIHRoZSBvdXRwdXQgc2hvdWxkIGJlIGNoZWNrZWQgZm9yIGEgdXBkYXRlXG4gKlxuICogQHBhcmFtIGRpZmYgVGhlIHRpbWUgZGlmZiBvYmplY3RcbiAqIEByZXR1cm4gQSBwb2ludCBvZiB0aW1lIGluIGZ1dHVyZSBpbiBzZWNvbmRzXG4gKiBAcHVibGljXG4gKiBAYXBpXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0VXBkYXRlSW50ZXJ2YWxHZW5lcmF0b3I6IFVwZGF0ZUludGVydmFsR2VuZXJhdG9yID0gKGRpZmY6IFRpbWVEaWZmKTogbnVtYmVyID0+IHtcbiAgaWYgKGRpZmYuc2Vjb25kcyA8IDYwKSB7IC8vIGxlc3MgdGhhbiAxIG1pbiwgdXBkYXRlIGV2ZXJ5IHNlY29uZFxuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKGRpZmYuc2Vjb25kcyA8IDM2MDApIHsgLy8gbGVzcyB0aGFuIGFuIGhvdXIsIHVwZGF0ZSBldmVyeSAzMCBzZWNzXG4gICAgcmV0dXJuIDMwO1xuICB9IGVsc2UgaWYgKGRpZmYuc2Vjb25kcyA8IDg2NDAwKSB7IC8vIGxlc3MgdGhhbiBhIGRheSwgdXBkYXRlIGV2ZXJ5IDUgbWluXG4gICAgcmV0dXJuIDMwMDtcbiAgfVxuICAvLyB1cGRhdGUgZXZlcnkgaG91clxuICByZXR1cm4gMzYwMDtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIGBVcGRhdGVJbnRlcnZhbEdlbmVyYXRvcmAgcHJlZmVycmluZyBhIGN1c3RvbSBwcm92aWRlciBmb3IgaW50ZXJuYWwgdXNhZ2VcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFVQREFURV9JTlRFUlZBTF9HRU5FUkFUT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48VXBkYXRlSW50ZXJ2YWxHZW5lcmF0b3I+KCdVcGRhdGUgSW50ZXJ2YWwgR2VuZXJhdG9yJywge1xuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tR2VuZXJhdG9yID0gaW5qZWN0KENVU1RPTV9VUERBVEVfSU5URVJWQUxfR0VORVJBVE9SLCBJbmplY3RGbGFncy5PcHRpb25hbCk7XG4gICAgcmV0dXJuIGN1c3RvbUdlbmVyYXRvciA/PyBkZWZhdWx0VXBkYXRlSW50ZXJ2YWxHZW5lcmF0b3I7XG4gIH0sXG59KTtcbiJdfQ==