UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

122 lines 10.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Base } from './base'; import { format, startOfToday, differenceInYears } from 'date-fns'; /** * Person, each project can extend this person class * NPM package dependencies: * a) moment */ export class Person extends Base { constructor() { super(...arguments); /** * Format to display birthdate */ this.dobFormat = 'yyyy/MM/dd'; this.apiDobFormat = 'yyyyMMdd'; } /** * Returns DoB in YYYYMMDD format, used by API. * @return {?} */ get dateOfBirthShort() { return this.dateOfBirth ? format(this.dateOfBirth, this.apiDobFormat) : null; } /** * Returns DoB in dobFormat (default: YYYY/MM/DD), for display purposes * @return {?} */ get formatDateOfBirth() { return this.dateOfBirth ? format(this.dateOfBirth, this.dobFormat) : null; } /** * Concatenates the first and last name together * @return {?} */ get name() { /** @type {?} */ let _name = null; if (this.firstName) { _name = this.firstName; } if (this.lastName) { _name = _name ? _name.concat(' ' + this.lastName) : this.lastName; } return _name; } /** * Sets the full name for the person (first, middle and last names) * NOTE: Just for development with dummy data and unit tests * @param {?} fullName * @return {?} */ set name(fullName) { /** @type {?} */ const names = fullName.split(' '); this.firstName = names[0]; if (names.length === 2) { this.lastName = names[1]; } else if (names.length === 3) { this.middleName = names[1]; this.lastName = names[2]; } } /** * Returns the person's full name - first middle last name concatenated together * @return {?} */ get fullname() { /** @type {?} */ let _name = null; if (this.firstName) { _name = this.firstName; } if (this.middleName) { _name = _name ? _name.concat(' ' + this.middleName) : this.middleName; } if (this.lastName) { _name = _name ? _name.concat(' ' + this.lastName) : this.lastName; } return _name; } /** * Calculates the age from date of birth * @return {?} */ getAge() { return differenceInYears(this.dateOfBirth, startOfToday()); } /* Copy function */ /** * @param {?} object * @return {?} */ copy(object) { this.firstName = object.firstName; this.middleName = object.middleName; this.lastName = object.lastName; this.dateOfBirth = object.dateOfBirth; } } if (false) { /** @type {?} */ Person.prototype.firstName; /** @type {?} */ Person.prototype.middleName; /** @type {?} */ Person.prototype.lastName; /** * Format to display birthdate * @type {?} */ Person.prototype.dobFormat; /** @type {?} */ Person.prototype.apiDobFormat; /** @type {?} */ Person.prototype.dateOfBirth; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL3BlcnNvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBT25FLE1BQU0sT0FBTyxNQUFPLFNBQVEsSUFBSTtJQUFoQzs7Ozs7UUFRUyxjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsVUFBVSxDQUFDO0lBOEVuQyxDQUFDOzs7OztJQXhFQyxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pGLENBQUM7Ozs7O0lBR0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5RSxDQUFDOzs7OztJQUdELElBQUksSUFBSTs7WUFDRixLQUFLLEdBQUcsSUFBSTtRQUVoQixJQUFLLElBQUksQ0FBQyxTQUFTLEVBQUc7WUFDcEIsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDeEI7UUFFRCxJQUFLLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3JFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7O0lBTUQsSUFBSSxJQUFJLENBQUUsUUFBZ0I7O2NBRWxCLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxQixJQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO2FBQU0sSUFBSyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7Ozs7O0lBR0QsSUFBSSxRQUFROztZQUNOLEtBQUssR0FBRyxJQUFJO1FBRWhCLElBQUssSUFBSSxDQUFDLFNBQVMsRUFBRztZQUNwQixLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4QjtRQUVELElBQUssSUFBSSxDQUFDLFVBQVUsRUFBRztZQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekU7UUFFRCxJQUFLLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3JFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7OztJQUdELE1BQU07UUFDSixPQUFPLGlCQUFpQixDQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUUsQ0FBQztJQUMvRCxDQUFDOzs7Ozs7SUFHRCxJQUFJLENBQUUsTUFBYztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztDQUNGOzs7SUFwRkMsMkJBQXlCOztJQUN6Qiw0QkFBMEI7O0lBQzFCLDBCQUF3Qjs7Ozs7SUFHeEIsMkJBQWdDOztJQUNoQyw4QkFBaUM7O0lBR2pDLDZCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcclxuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mVG9kYXksIGRpZmZlcmVuY2VJblllYXJzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuLyoqXHJcbiAqIFBlcnNvbiwgZWFjaCBwcm9qZWN0IGNhbiBleHRlbmQgdGhpcyBwZXJzb24gY2xhc3NcclxuICogTlBNIHBhY2thZ2UgZGVwZW5kZW5jaWVzOlxyXG4gKiAgYSkgbW9tZW50XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGVyc29uIGV4dGVuZHMgQmFzZSB7XHJcblxyXG4gIC8vIFBhcnRzIG9mIGEgcGVyc29uJ3MgbmFtZVxyXG4gIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgbWlkZGxlTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBsYXN0TmFtZTogc3RyaW5nO1xyXG5cclxuICAvKiogRm9ybWF0IHRvIGRpc3BsYXkgYmlydGhkYXRlICovXHJcbiAgcHVibGljIGRvYkZvcm1hdCA9ICd5eXl5L01NL2RkJztcclxuICBwdWJsaWMgYXBpRG9iRm9ybWF0ID0gJ3l5eXlNTWRkJztcclxuXHJcbiAgLy8gSW5pdGlhbGl6ZSBkb2IgdG8gbnVsbHMgLSBUbyBiZSByZW1vdmVkXHJcbiAgcHVibGljIGRhdGVPZkJpcnRoOiBEYXRlO1xyXG5cclxuICAvKiogUmV0dXJucyBEb0IgaW4gWVlZWU1NREQgZm9ybWF0LCB1c2VkIGJ5IEFQSS4gKi9cclxuICBnZXQgZGF0ZU9mQmlydGhTaG9ydCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZU9mQmlydGggPyBmb3JtYXQoIHRoaXMuZGF0ZU9mQmlydGgsIHRoaXMuYXBpRG9iRm9ybWF0ICkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgRG9CIGluIGRvYkZvcm1hdCAoZGVmYXVsdDogWVlZWS9NTS9ERCksIGZvciBkaXNwbGF5IHB1cnBvc2VzICovXHJcbiAgZ2V0IGZvcm1hdERhdGVPZkJpcnRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlT2ZCaXJ0aCA/IGZvcm1hdCggdGhpcy5kYXRlT2ZCaXJ0aCwgdGhpcy5kb2JGb3JtYXQgKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKiogQ29uY2F0ZW5hdGVzIHRoZSBmaXJzdCBhbmQgbGFzdCBuYW1lIHRvZ2V0aGVyICovXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIGxldCBfbmFtZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKCB0aGlzLmZpcnN0TmFtZSApIHtcclxuICAgICAgX25hbWUgPSB0aGlzLmZpcnN0TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIHRoaXMubGFzdE5hbWUgKSB7XHJcbiAgICAgIF9uYW1lID0gX25hbWUgPyBfbmFtZS5jb25jYXQoICcgJyArIHRoaXMubGFzdE5hbWUgKSA6IHRoaXMubGFzdE5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIF9uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZnVsbCBuYW1lIGZvciB0aGUgcGVyc29uIChmaXJzdCwgbWlkZGxlIGFuZCBsYXN0IG5hbWVzKVxyXG4gICAqIE5PVEU6IEp1c3QgZm9yIGRldmVsb3BtZW50IHdpdGggZHVtbXkgZGF0YSBhbmQgdW5pdCB0ZXN0c1xyXG4gICAqL1xyXG4gIHNldCBuYW1lKCBmdWxsTmFtZTogc3RyaW5nICkge1xyXG5cclxuICAgIGNvbnN0IG5hbWVzID0gZnVsbE5hbWUuc3BsaXQoICcgJykgO1xyXG4gICAgdGhpcy5maXJzdE5hbWUgPSBuYW1lc1swXTtcclxuXHJcbiAgICBpZiAoIG5hbWVzLmxlbmd0aCA9PT0gMiApIHtcclxuICAgICAgdGhpcy5sYXN0TmFtZSA9IG5hbWVzWzFdO1xyXG4gICAgfSBlbHNlIGlmICggbmFtZXMubGVuZ3RoID09PSAzICkge1xyXG4gICAgICB0aGlzLm1pZGRsZU5hbWUgPSBuYW1lc1sxXTtcclxuICAgICAgdGhpcy5sYXN0TmFtZSA9IG5hbWVzWzJdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIHBlcnNvbidzIGZ1bGwgbmFtZSAtIGZpcnN0IG1pZGRsZSBsYXN0IG5hbWUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyICovXHJcbiAgZ2V0IGZ1bGxuYW1lKCkge1xyXG4gICAgbGV0IF9uYW1lID0gbnVsbDtcclxuXHJcbiAgICBpZiAoIHRoaXMuZmlyc3ROYW1lICkge1xyXG4gICAgICBfbmFtZSA9IHRoaXMuZmlyc3ROYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICggdGhpcy5taWRkbGVOYW1lICkge1xyXG4gICAgICBfbmFtZSA9IF9uYW1lID8gX25hbWUuY29uY2F0KCAnICcgKyB0aGlzLm1pZGRsZU5hbWUgKSA6IHRoaXMubWlkZGxlTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIHRoaXMubGFzdE5hbWUgKSB7XHJcbiAgICAgIF9uYW1lID0gX25hbWUgPyBfbmFtZS5jb25jYXQoICcgJyArIHRoaXMubGFzdE5hbWUgKSA6IHRoaXMubGFzdE5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIF9uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqIENhbGN1bGF0ZXMgdGhlIGFnZSBmcm9tIGRhdGUgb2YgYmlydGggKi9cclxuICBnZXRBZ2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkaWZmZXJlbmNlSW5ZZWFycyggdGhpcy5kYXRlT2ZCaXJ0aCwgc3RhcnRPZlRvZGF5KCkgKTtcclxuICB9XHJcblxyXG4gIC8qIENvcHkgZnVuY3Rpb24gKi9cclxuICBjb3B5KCBvYmplY3Q6IFBlcnNvbiApIHtcclxuICAgIHRoaXMuZmlyc3ROYW1lID0gb2JqZWN0LmZpcnN0TmFtZTtcclxuICAgIHRoaXMubWlkZGxlTmFtZSA9IG9iamVjdC5taWRkbGVOYW1lO1xyXG4gICAgdGhpcy5sYXN0TmFtZSA9IG9iamVjdC5sYXN0TmFtZTtcclxuICAgIHRoaXMuZGF0ZU9mQmlydGggPSBvYmplY3QuZGF0ZU9mQmlydGg7XHJcbiAgfVxyXG59XHJcbiJdfQ==