UNPKG

@uiowa/uiowa-mfk-material

Version:

mfk, uiowa-mfk

176 lines 14 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Uiowa MFK Type * * class type contains 10 required MFK fields and 1 optional BFR field. * there are also several common methods ready to use. */ export class Mfk { /** * Uiowa MFK. constructor takes a MFK string. * * Non-numeric characters will be stripped out automatically. * * Example usages: * ```typescript * let m1 = new Mfk(); * const m2 = new Mfk('010-11-1010-00000-00000000-6218-000-00000-00-1111'); * const m3 = new Mfk('0201210120100100000000621900000111123555'); * ``` * @param {?=} mfkString */ constructor(mfkString = null) { this.FUND = ''; this.ORG = ''; this.DEPT = ''; this.SUBDEPT = ''; this.GRANTPGM = ''; this.IACT = ''; this.OACT = ''; this.DACT = ''; this.FN = ''; this.CCTR = ''; this.BRF = ''; if (mfkString) { this.parseString(mfkString); } } /** * cast an object to type of MFK * * --> plain JSON object doesn't have type at run time. * @param {?} obj * @return {?} */ static cast(obj) { /** @type {?} */ const mfk = new Mfk(); Object.keys(obj).forEach((/** * @param {?} key * @return {?} */ key => (mfk[key.toUpperCase()] = obj[key]))); return mfk; } /** * Compare values of all 10 fields * * @param {?} mfk An MFK * @return {?} */ equals(mfk) { return (this.FUND === mfk.FUND && this.ORG === mfk.ORG && this.DEPT === mfk.DEPT && this.SUBDEPT === mfk.SUBDEPT && this.GRANTPGM === mfk.GRANTPGM && this.IACT === mfk.IACT && this.DACT === mfk.DACT && this.OACT === mfk.OACT && this.FN === mfk.FN && this.CCTR === mfk.CCTR); } /** * convert MFK to a 40 digit string. * @param {?=} separator (Optional) the separator between MFK parts. Default: "". * @return {?} MFK string */ to40String(separator = '') { return Object.keys(this) .filter((/** * @param {?} k * @return {?} */ (k) => k !== 'BRF')) .map((/** * @param {?} k * @return {?} */ k => this[k])) .join(separator); } /** * Get MFK format validation message. It checkes this MFK's first 10 fields are numeric strings or not. * @return {?} */ validateFormat() { /** @type {?} */ const mfkString = this.to40String(); if (mfkString.length !== 40) { return `MFK is not 40 digits long.`; } if (isNaN(Number(mfkString))) { return `MFK [${mfkString}] should be all numbers.`; } return null; } /** * check if this MFK is in an array of Favorite MFKs. * * @param {?} favoriteMfks an array of Favorite MFKs. * @return {?} boolean */ isIn(favoriteMfks) { if (!favoriteMfks || favoriteMfks.length < 1) { return false; } return favoriteMfks.some((/** * @param {?} x * @return {?} */ x => x.matches(this))); } /** * MFK module internal method. * @param {?} input * @return {?} */ parseString(input) { /** @type {?} */ const s = input.replace(/\D/g, ''); if (!s || s.length < 40) { return; } this.FUND = s.substring(0, 3); this.ORG = s.substring(3, 5); this.DEPT = s.substring(5, 9); this.SUBDEPT = s.substring(9, 14); this.GRANTPGM = s.substring(14, 22); this.IACT = s.substring(22, 26); this.OACT = s.substring(26, 29); this.DACT = s.substring(29, 34); this.FN = s.substring(34, 36); this.CCTR = s.substring(36, 40); if (s.length >= 42) { this.BRF = s.substring(40, 42); } } } if (false) { /** @type {?} */ Mfk.prototype.FUND; /** @type {?} */ Mfk.prototype.ORG; /** @type {?} */ Mfk.prototype.DEPT; /** @type {?} */ Mfk.prototype.SUBDEPT; /** @type {?} */ Mfk.prototype.GRANTPGM; /** @type {?} */ Mfk.prototype.IACT; /** @type {?} */ Mfk.prototype.OACT; /** @type {?} */ Mfk.prototype.DACT; /** @type {?} */ Mfk.prototype.FN; /** @type {?} */ Mfk.prototype.CCTR; /** @type {?} */ Mfk.prototype.BRF; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZrLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVpb3dhL3Vpb3dhLW1may1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvbWZrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFTQSxNQUFNLE9BQU8sR0FBRzs7Ozs7Ozs7Ozs7Ozs7SUF5QmQsWUFBWSxZQUFvQixJQUFJO1FBeEJwQyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQWVQLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7Ozs7Ozs7O0lBT0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFROztjQUNaLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRTtRQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU87Ozs7UUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUM7UUFDckUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzs7Ozs7O0lBT0QsTUFBTSxDQUFDLEdBQVE7UUFDYixPQUFPLENBQ0wsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSTtZQUN0QixJQUFJLENBQUMsR0FBRyxL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QUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0NBQ0Y7OztJQTFIQyxtQkFBVTs7SUFDVixrQkFBUzs7SUFDVCxtQkFBVTs7SUFDVixzQkFBYTs7SUFDYix1QkFBYzs7SUFDZCxtQkFBVTs7SUFDVixtQkFBVTs7SUFDVixtQkFBVTs7SUFDVixpQkFBUTs7SUFDUixtQkFBVTs7SUFDVixrQkFBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhdm9yaXRlTWZrIH0gZnJvbSAnLi9mYXZvcml0ZS1tZmsnO1xyXG5pbXBvcnQgeyBJTWZrIH0gZnJvbSAnLi9tZmsuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBVaW93YSBNRksgVHlwZVxyXG4gKlxyXG4gKiBjbGFzcyB0eXBlIGNvbnRhaW5zIDEwIHJlcXVpcmVkIE1GSyBmaWVsZHMgYW5kIDEgb3B0aW9uYWwgQkZSIGZpZWxkLlxyXG4gKiB0aGVyZSBhcmUgYWxzbyBzZXZlcmFsIGNvbW1vbiBtZXRob2RzIHJlYWR5IHRvIHVzZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBNZmsgaW1wbGVtZW50cyBJTWZrIHtcclxuICBGVU5EID0gJyc7XHJcbiAgT1JHID0gJyc7XHJcbiAgREVQVCA9ICcnO1xyXG4gIFNVQkRFUFQgPSAnJztcclxuICBHUkFOVFBHTSA9ICcnO1xyXG4gIElBQ1QgPSAnJztcclxuICBPQUNUID0gJyc7XHJcbiAgREFDVCA9ICcnO1xyXG4gIEZOID0gJyc7XHJcbiAgQ0NUUiA9ICcnO1xyXG4gIEJSRiA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBVaW93YSBNRksuIGNvbnN0cnVjdG9yIHRha2VzIGEgTUZLIHN0cmluZy5cclxuICAgKlxyXG4gICAqIE5vbi1udW1lcmljIGNoYXJhY3RlcnMgd2lsbCBiZSBzdHJpcHBlZCBvdXQgYXV0b21hdGljYWxseS5cclxuICAgKlxyXG4gICAqIEV4YW1wbGUgdXNhZ2VzOlxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBsZXQgbTEgPSBuZXcgTWZrKCk7XHJcbiAgICogY29uc3QgbTIgPSBuZXcgTWZrKCcwMTAtMTEtMTAxMC0wMDAwMC0wMDAwMDAwMC02MjE4LTAwMC0wMDAwMC0wMC0xMTExJyk7XHJcbiAgICogY29uc3QgbTMgPSBuZXcgTWZrKCcwMjAxMjEwMTIwMTAwMTAwMDAwMDAwNjIxOTAwMDAwMTExMTIzNTU1Jyk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IobWZrU3RyaW5nOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBpZiAobWZrU3RyaW5nKSB7XHJcbiAgICAgIHRoaXMucGFyc2VTdHJpbmcobWZrU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNhc3QgYW4gb2JqZWN0IHRvIHR5cGUgb2YgTUZLXHJcbiAgICpcclxuICAgKiAtLT4gcGxhaW4gSlNPTiBvYmplY3QgZG9lc24ndCBoYXZlIHR5cGUgYXQgcnVuIHRpbWUuXHJcbiAgICovXHJcbiAgc3RhdGljIGNhc3Qob2JqOiBhbnkpOiBNZmsge1xyXG4gICAgY29uc3QgbWZrID0gbmV3IE1maygpO1xyXG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGtleSA9PiAobWZrW2tleS50b1VwcGVyQ2FzZSgpXSA9IG9ialtrZXldKSk7XHJcbiAgICByZXR1cm4gbWZrO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyZSB2YWx1ZXMgb2YgYWxsIDEwIGZpZWxkc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIG1mayBBbiBNRktcclxuICAgKi9cclxuICBlcXVhbHMobWZrOiBNZmspOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuRlVORCA9PT0gbWZrLkZVTkQgJiZcclxuICAgICAgdGhpcy5PUkcgPT09IG1may5PUkcgJiZcclxuICAgICAgdGhpcy5ERVBUID09PSBtZmsuREVQVCAmJlxyXG4gICAgICB0aGlzLlNVQkRFUFQgPT09IG1may5TVUJERVBUICYmXHJcbiAgICAgIHRoaXMuR1JBTlRQR00gPT09IG1may5HUkFOVFBHTSAmJlxyXG4gICAgICB0aGlzLklBQ1QgPT09IG1may5JQUNUICYmXHJcbiAgICAgIHRoaXMuREFDVCA9PT0gbWZrLkRBQ1QgJiZcclxuICAgICAgdGhpcy5PQUNUID09PSBtZmsuT0FDVCAmJlxyXG4gICAgICB0aGlzLkZOID09PSBtZmsuRk4gJiZcclxuICAgICAgdGhpcy5DQ1RSID09PSBtZmsuQ0NUUlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNvbnZlcnQgTUZLIHRvIGEgNDAgZGlnaXQgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSAgIHNlcGFyYXRvciAgIChPcHRpb25hbCkgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIE1GSyBwYXJ0cy4gRGVmYXVsdDogXCJcIi5cclxuICAgKiBAcmV0dXJucyBNRksgc3RyaW5nXHJcbiAgICovXHJcbiAgdG80MFN0cmluZyhzZXBhcmF0b3I6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzKVxyXG4gICAgICAuZmlsdGVyKChrOiBrZXlvZiBJTWZrKSA9PiBrICE9PSAnQlJGJylcclxuICAgICAgLm1hcChrID0+IHRoaXNba10pXHJcbiAgICAgIC5qb2luKHNlcGFyYXRvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgTUZLIGZvcm1hdCB2YWxpZGF0aW9uIG1lc3NhZ2UuIEl0IGNoZWNrZXMgdGhpcyBNRksncyBmaXJzdCAxMCBmaWVsZHMgYXJlIG51bWVyaWMgc3RyaW5ncyBvciBub3QuXHJcbiAgICovXHJcbiAgdmFsaWRhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1ma1N0cmluZyA9IHRoaXMudG80MFN0cmluZygpO1xyXG4gICAgaWYgKG1ma1N0cmluZy5sZW5ndGggIT09IDQwKSB7XHJcbiAgICAgIHJldHVybiBgTUZLIGlzIG5vdCA0MCBkaWdpdHMgbG9uZy5gO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzTmFOKE51bWJlcihtZmtTdHJpbmcpKSkge1xyXG4gICAgICByZXR1cm4gYE1GSyBbJHttZmtTdHJpbmd9XSBzaG91bGQgYmUgYWxsIG51bWJlcnMuYDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgaWYgdGhpcyBNRksgaXMgaW4gYW4gYXJyYXkgb2YgRmF2b3JpdGUgTUZLcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSAgIGZhdm9yaXRlTWZrcyAgIGFuIGFycmF5IG9mIEZhdm9yaXRlIE1GS3MuXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGlzSW4oZmF2b3JpdGVNZmtzOiBGYXZvcml0ZU1ma1tdKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWZhdm9yaXRlTWZrcyB8fCBmYXZvcml0ZU1ma3MubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmF2b3JpdGVNZmtzLnNvbWUoeCA9PiB4Lm1hdGNoZXModGhpcykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTUZLIG1vZHVsZSBpbnRlcm5hbCBtZXRob2QuXHJcbiAgICovXHJcbiAgcGFyc2VTdHJpbmcoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcyA9IGlucHV0LnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICBpZiAoIXMgfHwgcy5sZW5ndGggPCA0MCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkZVTkQgPSBzLnN1YnN0cmluZygwLCAzKTtcclxuICAgIHRoaXMuT1JHID0gcy5zdWJzdHJpbmcoMywgNSk7XHJcbiAgICB0aGlzLkRFUFQgPSBzLnN1YnN0cmluZyg1LCA5KTtcclxuICAgIHRoaXMuU1VCREVQVCA9IHMuc3Vic3RyaW5nKDksIDE0KTtcclxuICAgIHRoaXMuR1JBTlRQR00gPSBzLnN1YnN0cmluZygxNCwgMjIpO1xyXG4gICAgdGhpcy5JQUNUID0gcy5zdWJzdHJpbmcoMjIsIDI2KTtcclxuICAgIHRoaXMuT0FDVCA9IHMuc3Vic3RyaW5nKDI2LCAyOSk7XHJcbiAgICB0aGlzLkRBQ1QgPSBzLnN1YnN0cmluZygyOSwgMzQpO1xyXG4gICAgdGhpcy5GTiA9IHMuc3Vic3RyaW5nKDM0LCAzNik7XHJcbiAgICB0aGlzLkNDVFIgPSBzLnN1YnN0cmluZygzNiwgNDApO1xyXG4gICAgaWYgKHMubGVuZ3RoID49IDQyKSB7XHJcbiAgICAgIHRoaXMuQlJGID0gcy5zdWJzdHJpbmcoNDAsIDQyKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19