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
JavaScript
/**
* @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=