UNPKG

moh-common-lib

Version:

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

177 lines 12.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Router } from '@angular/router'; import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; /** * Interface for used when checking completeness of item * @record */ export function PageListInterface() { } if (false) { /** @type {?} */ PageListInterface.prototype.route; /** @type {?} */ PageListInterface.prototype.isComplete; /* Skipping unhandled member: [key: string]: any;*/ } /** * Extend this class when creating a service to create your custom Route Guard * logic. This class should work as-is for simple use-cases. For Route Guard * setup \@see RouteGuardService. * * @see RouteGuardService */ export class CheckCompleteBaseService { /** * @param {?} router */ constructor(router) { this.router = router; this.pageCheckList = []; this._startUrl = ''; this._bypassGuards = false; } /** * @param {?} url * @return {?} */ set startUrl(url) { this._startUrl = url; } /** * @param {?} bypass * @return {?} */ set bypassGuards(bypass) { this._bypassGuards = bypass; } /** * @return {?} */ canBypassGuards() { return this._bypassGuards; } /** * @return {?} */ getStartUrl() { return this._startUrl; } /** * Any prerequisites that need list of pages * @return {?} */ isPrerequisiteComplete() { return !this.isPageListEmpty(); } /** * Sets page to not be completed, so applicants cannot complete application out of sequence * @return {?} */ setPageIncomplete() { /** @type {?} */ const idx = this.getUrlIndex(this.router.url); if (!this.isPageListEmpty()) { // Check guards could be turned off in dev environment this.pageCheckList = this.pageCheckList.map((/** * @param {?} item * @param {?} index * @return {?} */ (item, index) => { if (index >= idx) { item.isComplete = false; } return item; })); } } /** * Sets the page to completed, allowing applicant to proceed to next page. * @return {?} */ setPageComplete() { /** @type {?} */ const idx = this.getUrlIndex(this.router.url); if (!this.isPageListEmpty()) { // Check guards could be turned in dev environment this.pageCheckList[idx].isComplete = true; } } /** * Indicates whether page has been completed or not. * @param {?} url * @return {?} */ isPageComplete(url) { /** @type {?} */ const idx = this.getUrlIndex(url); // returns previous items isComplete value return (idx - 1 >= 0) ? this.pageCheckList[idx - 1].isComplete : true; } /** * Check for incomplete pages * @return {?} */ isComplete() { /** @type {?} */ const incompletePages = this.pageCheckList.filter((/** * @param {?} x * @return {?} */ x => x.isComplete !== true)); return (incompletePages.length !== 0 ? false : true); } /** * Index of URL in the items list, -1 if not exist * @protected * @param {?} url * @return {?} */ getUrlIndex(url) { return this.pageCheckList.findIndex((/** * @param {?} x * @return {?} */ x => url.includes(x.route))); } /** * @protected * @return {?} */ isPageListEmpty() { return (this.pageCheckList.length === 0); } } CheckCompleteBaseService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ CheckCompleteBaseService.ctorParameters = () => [ { type: Router } ]; /** @nocollapse */ CheckCompleteBaseService.ngInjectableDef = i0.defineInjectable({ factory: function CheckCompleteBaseService_Factory() { return new CheckCompleteBaseService(i0.inject(i1.Router)); }, token: CheckCompleteBaseService, providedIn: "root" }); if (false) { /** @type {?} */ CheckCompleteBaseService.prototype.pageCheckList; /** * @type {?} * @private */ CheckCompleteBaseService.prototype._startUrl; /** * @type {?} * @private */ CheckCompleteBaseService.prototype._bypassGuards; /** * @type {?} * @protected */ CheckCompleteBaseService.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stY29tcGxldGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvY2hlY2stY29tcGxldGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVczQyx1Q0FJQzs7O0lBSEMsa0NBQWM7O0lBQ2QsdUNBQW9COzs7Ozs7Ozs7O0FBY3RCLE1BQU0sT0FBTyx3QkFBd0I7Ozs7SUFPbkMsWUFBdUIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFMOUIsa0JBQWEsR0FBeUIsRUFBRSxDQUFDO1FBRXhDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFFRSxDQUFDOzs7OztJQUUxQyxJQUFJLFFBQVEsQ0FBRSxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7Ozs7O0lBRUQsSUFBSSxZQUFZLENBQUUsTUFBZTtRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUM5QixDQUFDOzs7O0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQzs7OztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBR00sc0JBQXNCO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7Ozs7SUFLTSxpQkFBaUI7O2NBQ2hCLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFFO1FBQy9DLElBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUcsRUFBRSxzREFBc0Q7WUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUc7Ozs7O1lBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFELElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7aUJBQ3pCO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxFQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7O0lBS00sZUFBZTs7Y0FDZCxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBRTtRQUMvQyxJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFHLEVBQUUsa0RBQWtEO1lBQ2pGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUMzQztJQUNILENBQUM7Ozs7OztJQUtNLGNBQWMsQ0FBRSxHQUFXOztjQUUxQixHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxHQUFHLENBQUU7UUFFbkMsMENBQTBDO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RSxDQUFDOzs7OztJQUtNLFVBQVU7O2NBQ1QsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTs7OztRQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7UUFDL0UsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBRSxDQUFDO0lBQ3hELENBQUM7Ozs7Ozs7SUFLUyxXQUFXLENBQUUsR0FBVztRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUzs7OztRQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsS0FBSyxDQUFFLEVBQUUsQ0FBQztJQUN0RSxDQUFDOzs7OztJQUVTLGVBQWU7UUFDdkIsT0FBTyxDQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBRSxDQUFDO0lBQzdDLENBQUM7OztZQXRGRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUE1QlEsTUFBTTs7Ozs7SUErQmIsaURBQWdEOzs7OztJQUVoRCw2Q0FBK0I7Ozs7O0lBQy9CLGlEQUF1Qzs7Ozs7SUFFMUIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtcGctY2hlY2suc2VydmljZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qIFRPRE86IFJldmlzZSAtIGRvZXMgbm90IHdvcmsgcXVpdGUgY29ycmVjdCB3aGVuIHRoZXJlIGlzIG5vIGxhbmRpbmcgcGFnZS5cclxuICogQGRlcHJlY2lhdGVkXHJcbiAqL1xyXG5cclxuXHJcblxyXG4vKipcclxuICogSW50ZXJmYWNlIGZvciB1c2VkIHdoZW4gY2hlY2tpbmcgY29tcGxldGVuZXNzIG9mIGl0ZW1cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUxpc3RJbnRlcmZhY2Uge1xyXG4gIHJvdXRlOiBzdHJpbmc7XHJcbiAgaXNDb21wbGV0ZTogYm9vbGVhbjtcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRlbmQgdGhpcyBjbGFzcyB3aGVuIGNyZWF0aW5nIGEgc2VydmljZSB0byBjcmVhdGUgeW91ciBjdXN0b20gUm91dGUgR3VhcmRcclxuICogbG9naWMuICBUaGlzIGNsYXNzIHNob3VsZCB3b3JrIGFzLWlzIGZvciBzaW1wbGUgdXNlLWNhc2VzLiAgRm9yIFJvdXRlIEd1YXJkXHJcbiAqIHNldHVwIEBzZWUgUm91dGVHdWFyZFNlcnZpY2UuXHJcbiAqXHJcbiAqIEBzZWUgUm91dGVHdWFyZFNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrQ29tcGxldGVCYXNlU2VydmljZSBpbXBsZW1lbnRzIEFic3RyYWN0UGdDaGVja1NlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgcGFnZUNoZWNrTGlzdDogUGFnZUxpc3RJbnRlcmZhY2UgW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RhcnRVcmw6IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgX2J5cGFzc0d1YXJkczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvciggcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyICkge31cclxuXHJcbiAgc2V0IHN0YXJ0VXJsKCB1cmw6IHN0cmluZyApIHtcclxuICAgIHRoaXMuX3N0YXJ0VXJsID0gdXJsO1xyXG4gIH1cclxuXHJcbiAgc2V0IGJ5cGFzc0d1YXJkcyggYnlwYXNzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9ieXBhc3NHdWFyZHMgPSBieXBhc3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQnlwYXNzR3VhcmRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J5cGFzc0d1YXJkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdGFydFVybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0VXJsO1xyXG4gIH1cclxuXHJcbiAgLyoqIEFueSBwcmVyZXF1aXNpdGVzIHRoYXQgbmVlZCBsaXN0IG9mIHBhZ2VzICovXHJcbiAgcHVibGljIGlzUHJlcmVxdWlzaXRlQ29tcGxldGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaXNQYWdlTGlzdEVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAgU2V0cyBwYWdlIHRvIG5vdCBiZSBjb21wbGV0ZWQsIHNvIGFwcGxpY2FudHMgY2Fubm90IGNvbXBsZXRlIGFwcGxpY2F0aW9uIG91dCBvZiBzZXF1ZW5jZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQYWdlSW5jb21wbGV0ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkeCA9IHRoaXMuZ2V0VXJsSW5kZXgoIHRoaXMucm91dGVyLnVybCApO1xyXG4gICAgaWYgKCAhdGhpcy5pc1BhZ2VMaXN0RW1wdHkoKSApIHsgLy8gQ2hlY2sgZ3VhcmRzIGNvdWxkIGJlIHR1cm5lZCBvZmYgaW4gZGV2IGVudmlyb25tZW50XHJcbiAgICAgIHRoaXMucGFnZUNoZWNrTGlzdCA9IHRoaXMucGFnZUNoZWNrTGlzdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGluZGV4ID49IGlkeCkge1xyXG4gICAgICAgICAgaXRlbS5pc0NvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHBhZ2UgdG8gY29tcGxldGVkLCBhbGxvd2luZyBhcHBsaWNhbnQgdG8gcHJvY2VlZCB0byBuZXh0IHBhZ2UuXHJcbiAgICovXHJcbiAgcHVibGljIHNldFBhZ2VDb21wbGV0ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkeCA9IHRoaXMuZ2V0VXJsSW5kZXgoIHRoaXMucm91dGVyLnVybCApO1xyXG4gICAgaWYgKCAhdGhpcy5pc1BhZ2VMaXN0RW1wdHkoKSApIHsgLy8gQ2hlY2sgZ3VhcmRzIGNvdWxkIGJlIHR1cm5lZCBpbiBkZXYgZW52aXJvbm1lbnRcclxuICAgICAgdGhpcy5wYWdlQ2hlY2tMaXN0W2lkeF0uaXNDb21wbGV0ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBwYWdlIGhhcyBiZWVuIGNvbXBsZXRlZCBvciBub3QuXHJcbiAgICovXHJcbiAgcHVibGljIGlzUGFnZUNvbXBsZXRlKCB1cmw6IHN0cmluZyApOiBib29sZWFuIHtcclxuXHJcbiAgICBjb25zdCBpZHggPSB0aGlzLmdldFVybEluZGV4KCB1cmwgKTtcclxuXHJcbiAgICAvLyByZXR1cm5zIHByZXZpb3VzIGl0ZW1zIGlzQ29tcGxldGUgdmFsdWVcclxuICAgIHJldHVybiAoaWR4IC0gMSA+PSAwKSA/IHRoaXMucGFnZUNoZWNrTGlzdFtpZHggLSAxXS5pc0NvbXBsZXRlIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGZvciBpbmNvbXBsZXRlIHBhZ2VzXHJcbiAgICovXHJcbiAgcHVibGljIGlzQ29tcGxldGUoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpbmNvbXBsZXRlUGFnZXMgPSB0aGlzLnBhZ2VDaGVja0xpc3QuZmlsdGVyKCB4ID0+IHguaXNDb21wbGV0ZSAhPT0gdHJ1ZSApO1xyXG4gICAgcmV0dXJuIChpbmNvbXBsZXRlUGFnZXMubGVuZ3RoICE9PSAwID8gZmFsc2UgOiB0cnVlICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRleCBvZiBVUkwgaW4gdGhlIGl0ZW1zIGxpc3QsIC0xIGlmIG5vdCBleGlzdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRVcmxJbmRleCggdXJsOiBzdHJpbmcgKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VDaGVja0xpc3QuZmluZEluZGV4KCB4ID0+IHVybC5pbmNsdWRlcyggeC5yb3V0ZSApICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXNQYWdlTGlzdEVtcHR5KCkge1xyXG4gICAgcmV0dXJuICggdGhpcy5wYWdlQ2hlY2tMaXN0Lmxlbmd0aCA9PT0gMCApO1xyXG4gIH1cclxufVxyXG4iXX0=