@csmart/ngc-smart-core 0.7.95 → 1.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/csmart-ngc-smart-core.d.ts +1 -5
- package/esm2020/csmart-ngc-smart-core.mjs +5 -0
- package/esm2020/lib/ngc-smart-core.module.mjs +97 -0
- package/esm2020/lib/smart-auth/smart-access-control-config.mjs +12 -0
- package/esm2020/lib/smart-auth/smart-access-control.directive.mjs +40 -0
- package/esm2020/lib/smart-auth/smart-auth.service.mjs +479 -0
- package/esm2020/lib/smart-auth/smart-authorization-guard.service.mjs +35 -0
- package/esm2020/lib/smart-auth/smart-error.component.mjs +37 -0
- package/esm2020/lib/smart-auth/smart-login-staff-resolver.service.mjs +59 -0
- package/esm2020/lib/smart-auth/smart-selected-offender-resolver.service.mjs +49 -0
- package/esm2020/lib/smart-navbar/smart-navbar-config.mjs +2 -0
- package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +132 -0
- package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +63 -0
- package/esm2020/lib/smart-offender-header/smart-offender-header.component.mjs +151 -0
- package/esm2020/lib/smart-offender-header/smart-offender-header.service.mjs +41 -0
- package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.mjs +25 -0
- package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.component.mjs +78 -0
- package/esm2020/lib/smart-staff-offender-options/smart-staff-offender-options.service.mjs +134 -0
- package/esm2020/lib/smart-storage/smart-storage-model.mjs +30 -0
- package/esm2020/lib/smart-storage/xdm.service.mjs +158 -0
- package/esm2020/public-api.mjs +20 -0
- package/fesm2015/csmart-ngc-smart-core.mjs +1529 -0
- package/fesm2015/csmart-ngc-smart-core.mjs.map +1 -0
- package/fesm2020/csmart-ngc-smart-core.mjs +1514 -0
- package/fesm2020/csmart-ngc-smart-core.mjs.map +1 -0
- package/lib/ngc-smart-core.module.d.ts +18 -0
- package/lib/smart-auth/smart-access-control.directive.d.ts +3 -0
- package/lib/smart-auth/smart-auth.service.d.ts +4 -0
- package/lib/smart-auth/smart-authorization-guard.service.d.ts +3 -0
- package/lib/smart-auth/smart-error.component.d.ts +3 -0
- package/lib/smart-auth/smart-login-staff-resolver.service.d.ts +3 -0
- package/lib/smart-auth/smart-selected-offender-resolver.service.d.ts +3 -0
- package/lib/smart-navbar/smart-navbar.component.d.ts +6 -3
- package/lib/smart-navbar/smart-navbar.service.d.ts +3 -0
- package/lib/smart-offender-header/smart-offender-header.component.d.ts +4 -1
- package/lib/smart-offender-header/smart-offender-header.service.d.ts +3 -0
- package/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.d.ts +3 -0
- package/lib/smart-staff-offender-options/smart-staff-offender-options.component.d.ts +3 -0
- package/lib/smart-staff-offender-options/smart-staff-offender-options.service.d.ts +6 -3
- package/lib/smart-storage/xdm.service.d.ts +3 -0
- package/package.json +25 -14
- package/public-api.d.ts +3 -0
- package/bundles/csmart-ngc-smart-core.umd.js +0 -2620
- package/bundles/csmart-ngc-smart-core.umd.js.map +0 -1
- package/bundles/csmart-ngc-smart-core.umd.min.js +0 -2
- package/bundles/csmart-ngc-smart-core.umd.min.js.map +0 -1
- package/csmart-ngc-smart-core.metadata.json +0 -1
- package/esm2015/csmart-ngc-smart-core.js +0 -15
- package/esm2015/lib/ngc-smart-core.module.js +0 -59
- package/esm2015/lib/smart-auth/smart-access-control-config.js +0 -32
- package/esm2015/lib/smart-auth/smart-access-control.directive.js +0 -70
- package/esm2015/lib/smart-auth/smart-auth.service.js +0 -693
- package/esm2015/lib/smart-auth/smart-authorization-guard.service.js +0 -63
- package/esm2015/lib/smart-auth/smart-error.component.js +0 -77
- package/esm2015/lib/smart-auth/smart-login-staff-resolver.service.js +0 -94
- package/esm2015/lib/smart-auth/smart-selected-offender-resolver.service.js +0 -101
- package/esm2015/lib/smart-navbar/smart-navbar-config.js +0 -22
- package/esm2015/lib/smart-navbar/smart-navbar.component.js +0 -224
- package/esm2015/lib/smart-navbar/smart-navbar.service.js +0 -89
- package/esm2015/lib/smart-offender-header/smart-offender-header.component.js +0 -253
- package/esm2015/lib/smart-offender-header/smart-offender-header.service.js +0 -85
- package/esm2015/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.js +0 -49
- package/esm2015/lib/smart-staff-offender-options/smart-staff-offender-options.component.js +0 -151
- package/esm2015/lib/smart-staff-offender-options/smart-staff-offender-options.service.js +0 -222
- package/esm2015/lib/smart-storage/smart-storage-model.js +0 -131
- package/esm2015/lib/smart-storage/xdm.service.js +0 -317
- package/esm2015/public-api.js +0 -22
- package/esm5/csmart-ngc-smart-core.js +0 -15
- package/esm5/lib/ngc-smart-core.module.js +0 -63
- package/esm5/lib/smart-auth/smart-access-control-config.js +0 -32
- package/esm5/lib/smart-auth/smart-access-control.directive.js +0 -74
- package/esm5/lib/smart-auth/smart-auth.service.js +0 -762
- package/esm5/lib/smart-auth/smart-authorization-guard.service.js +0 -67
- package/esm5/lib/smart-auth/smart-error.component.js +0 -83
- package/esm5/lib/smart-auth/smart-login-staff-resolver.service.js +0 -98
- package/esm5/lib/smart-auth/smart-selected-offender-resolver.service.js +0 -108
- package/esm5/lib/smart-navbar/smart-navbar-config.js +0 -22
- package/esm5/lib/smart-navbar/smart-navbar.component.js +0 -251
- package/esm5/lib/smart-navbar/smart-navbar.service.js +0 -114
- package/esm5/lib/smart-offender-header/smart-offender-header.component.js +0 -283
- package/esm5/lib/smart-offender-header/smart-offender-header.service.js +0 -76
- package/esm5/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.js +0 -52
- package/esm5/lib/smart-staff-offender-options/smart-staff-offender-options.component.js +0 -165
- package/esm5/lib/smart-staff-offender-options/smart-staff-offender-options.service.js +0 -232
- package/esm5/lib/smart-storage/smart-storage-model.js +0 -155
- package/esm5/lib/smart-storage/xdm.service.js +0 -389
- package/esm5/public-api.js +0 -22
- package/fesm2015/csmart-ngc-smart-core.js +0 -2231
- package/fesm2015/csmart-ngc-smart-core.js.map +0 -1
- package/fesm5/csmart-ngc-smart-core.js +0 -2502
- package/fesm5/csmart-ngc-smart-core.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@csmart/ngc-smart-core/lib/smart-storage/smart-storage-model.ts","ng://@csmart/ngc-smart-core/lib/smart-storage/xdm.service.ts","ng://@csmart/ngc-smart-core/lib/smart-offender-header/smart-offender-header.service.ts","ng://@csmart/ngc-smart-core/lib/smart-offender-header/smart-offender-header.component.ts","ng://@csmart/ngc-smart-core/lib/smart-navbar/smart-navbar.service.ts","ng://@csmart/ngc-smart-core/lib/smart-navbar/smart-navbar.component.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-error.component.ts","ng://@csmart/ngc-smart-core/lib/smart-staff-offender-options/smart-staff-offender-options.service.ts","ng://@csmart/ngc-smart-core/lib/smart-staff-offender-options/smart-staff-offender-options.component.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-auth.service.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-access-control.directive.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-authorization-guard.service.ts","ng://@csmart/ngc-smart-core/lib/ngc-smart-core.module.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-login-staff-resolver.service.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-selected-offender-resolver.service.ts","ng://@csmart/ngc-smart-core/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.ts","ng://@csmart/ngc-smart-core/lib/smart-auth/smart-access-control-config.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","adopt","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__read","o","m","r","i","ar","error","Permission","selectedRole","intakeFlag","StorageKey","selectedOffender","loginStaff","offenderQuery","SMART_WEB_STORAGE_LISTENER_URL","InjectionToken","SMART_WEB_PORTAL_URL","SMART_DATA_SERVICE_URL","SMART_DOMAIN_FORMAT","XdmService","prototype","init","frame","document","createElement","src","smartStorageListenerUrl","id","name","Math","random","toString","onload","style","visibility","appendChild","connection","connectToChild","iframe","debug","getStaffOffenderListOptions","staffId","queryString","httpClient","post","smartDataServiceUrl","query","pipe","map","_a","data","findvStaffOffenderListOptions","clearAll","_this","promise","child","offenderSubject","staffSubject","setSelectedOffender","getSelectedOffender","clearSelectedOffender","getOffenderUpdate","asObservable","setLoginStaff","getLoginStaff","clearLoginStaff","getStaffUpdate","refreshLoginStaffOptions","oldLoginStaff","subscribe","optionData","console","log","options","setOffenderQuery","offenderQuerySubject","getOffenderQuery","clearOffenderQuery","getOffenderQueryUpdate","Injectable","args","providedIn","Inject","DOCUMENT","HttpClient","Subject","isDevMode","SmartOffenderHeaderService","getStaffOffenders","http","filterOffenderList","SmartOffenderHeaderComponent","ngOnInit","isAuthenticated","authnService","getAccount","xdmService","offenderId","subscription","setSelectedOffenderControl","offenderQueryList","offenders","offenderQuerySubscription","offenderList","__spread","arguments","concat","selectedOffenderControl$","valueChanges","onOffenderSelected","router","routeReuseStrategy","shouldReuseRoute","ngOnDestroy","unsubscribe","offender","reloadCurrentRoute","find","x","setValue","emitEvent","urlTree","parseUrl","url","root","segments","navigate","path","children","primary","navigateByUrl","hasIntakeRole","roles","findIndex","isIntakeRole","role","roleId","Component","selector","template","MsalService","Router","smartOffenderHeaderService","FormControl","SmartNavbarService","getNavbarConfigs","serviceApiUrl","findAppModules","SmartNavbarComponent","ngOnChanges","offenderSubscription","staffSubscription","navbarConfigService","configs","navbarConfigs","sort","a","b","displayOrder","logout","getAppModuleUrl","config","appModuleId","hasAppModulePermission","permissions","p","Object","defineProperty","isExternalRole","encapsulation","ViewEncapsulation","None","Input","ViewChild","SmartErrorComponent","type","route","snapshot","queryParamMap","get","message","portal","window","location","href","smartWebPortalUrl","ActivatedRoute","SmartStaffOffenderOptionsService","showMessage","matSnackBar","open","duration","convertEmptyToNull","jsonObject","Array","forEach","obj","keys","key","trim","getGraphQueryData","queryName","getOffenderListOptions","findStaffOffenderListOptions","saveStaffOffenderListOptionsData","dataToSave","convertToString","eObj","isNaN","substring","MatSnackBar","SmartStaffOffenderOptionsComponent","routData","offenderListOptions","selectedOffenderResolverService","frmGroup","createForm","offenderService","fillForm","offenderListOptionsFg_1","element","offenderListOptionId","offenderListOptionsFg","FormGroup","dt","addControl","onSave","modifiedBy","offenderListOptionsVal","rtrDatea","SmartAuthService","of","userName","getStaff","from","switchMap","storedResult","staffName","indexOf","getTeamUrl","app","afterHash","smartDomainFormatUrl","replace","isSameHost","redirectToTeam","origin","getStaffOffenderRelation","toPromise","relation","assignmentStaffRelationId","setPermission","_c","resource","_b","elements","querySelectorAll","pattern","hide","disable","classList","c","results","match","roleId_1","toUpperCase","right","permission","readFlag","createFlag","updateFlag","deleteFlag","assignFlag","closeFlag","expungeFlag","reopenFlag","nodeName","hideHtmlElement","disableHtmlElement","checkPermission","accessControlConfig","selData","accessType","canAppFeatureActivate","feature","hasAppFeaturePermission","setAttribute","take","findvStaffs","catchError","findvStaffOffenderRelations","getRolePermissions","findvRolePermissionPivots","totalCount","throwError","SmartAccessControlDirective","checkAccess","elementRef","nativeElement","display","auth","Directive","ElementRef","SmartAuthorizationGuard","canActivate","mergeMap","routeConfig","split","isFeatureValid","NgcSmartCoreModule","NgModule","declarations","imports","CommonModule","HttpClientModule","MatButtonModule","MatMenuModule","MatTabsModule","MatSelectModule","MatCardModule","MatCheckboxModule","ReactiveFormsModule","exports","providers","LoginStaffResolverService","state","queryParams","EMPTY","SelectedOffenderResolverService","service","retryWhen","errors","delay","NgZone","zone","SmartStaffOffenderOptionsResolverService","READ","CREATE","UPDATE","DELETE","EXPUNGE","ASSIGN","REOPEN","CLOSE"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport class Permission {\r\n roleId: string;\r\n appModuleId: string;\r\n resource: string;\r\n assignmentStaffRelationId: string;\r\n readFlag: boolean;\r\n createFlag: boolean;\r\n updateFlag: boolean;\r\n deleteFlag: boolean;\r\n assignFlag: boolean;\r\n reopenFlag: boolean;\r\n closeFlag: boolean;\r\n expungeFlag: boolean;\r\n}\r\n\r\nexport class Role {\r\n roleId: string;\r\n role: string;\r\n}\r\n\r\nexport class Option {\r\n offenderOptionListId: string;\r\n name: string;\r\n serviceApiFieldName: string;\r\n selectedFlag: boolean;\r\n}\r\n\r\nexport class LoginStaff {\r\n staffId: number;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n phone: string;\r\n email: string;\r\n selectedRole: string = '*';\r\n roles?: Role[];\r\n permissions?: Permission[];\r\n options?: Option[];\r\n}\r\n\r\nexport class SelectedOffender {\r\n offenderId: number;\r\n name: string;\r\n pdId: string;\r\n birthDate: Date;\r\n gender: string;\r\n assignmentStaffRelationId?: string;\r\n intakeFlag?: boolean = false;\r\n}\r\n\r\nexport class OffenderQuery {\r\n offenders: SelectedOffender[];\r\n}\r\n\r\nexport class StorageKey {\r\n static selectedOffender = 'smart-selected-offender';\r\n static loginStaff = 'smart-login-staff';\r\n static offenderQuery = 'smart-offender-query';\r\n}\r\n\r\nexport const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken<string>(\r\n 'SMART Web Storage Listener URL',\r\n);\r\nexport const SMART_WEB_PORTAL_URL = new InjectionToken<string>(\r\n 'SMART Web Portal URL',\r\n);\r\nexport const SMART_DATA_SERVICE_URL = new InjectionToken<string>(\r\n 'SMART Data Service URL',\r\n);\r\n\r\n//exception for redirection\r\nexport const SMART_DOMAIN_FORMAT = new InjectionToken<string>(\r\n 'SMART Domain Format URL',\r\n);\r\n\r\n","import { Injectable, Inject, isDevMode } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n SelectedOffender,\r\n LoginStaff,\r\n OffenderQuery,\r\n StorageKey,\r\n SMART_WEB_STORAGE_LISTENER_URL,\r\n SMART_DATA_SERVICE_URL,\r\n Option,\r\n} from './smart-storage-model';\r\n\r\n// import connectToChild from \"penpal/lib/connectToChild\";\r\nimport { connectToChild } from 'penpal';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class XdmService {\r\n private offenderSubject = new Subject<SelectedOffender>();\r\n private staffSubject = new Subject<LoginStaff>();\r\n private offenderQuerySubject = new Subject<OffenderQuery>();\r\n private connection: any;\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n @Inject(SMART_WEB_STORAGE_LISTENER_URL)\r\n private smartStorageListenerUrl: string,\r\n private httpClient: HttpClient,\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n ) {\r\n if (isDevMode) {\r\n console.log('SmartStorage XdmService (Client) - constructor()');\r\n }\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n const frame = this.document.createElement('iframe');\r\n frame.src = this.smartStorageListenerUrl;\r\n frame.id = 'childframe';\r\n frame.name = Math.random().toString();\r\n frame.onload = null;\r\n frame.style.visibility = 'hidden';\r\n this.document.body.appendChild(frame);\r\n\r\n this.connection = connectToChild({\r\n iframe: frame,\r\n debug: false,\r\n });\r\n }\r\n\r\n private getStaffOffenderListOptions(\r\n staffId: number,\r\n ): Observable<Array<Option>> {\r\n const queryString = `{findvStaffOffenderListOptions(input:{\r\n where:{\r\n staffId: ${staffId}\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n selectedFlag\r\n }\r\n } }`;\r\n return this.httpClient\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n data.findvStaffOffenderListOptions.data['offenderOptionListId'] =\r\n data.findvStaffOffenderListOptions.data['offenderListOptionId'];\r\n return data.findvStaffOffenderListOptions.data;\r\n }),\r\n );\r\n /*return of([\r\n { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/\r\n }\r\n\r\n public clearAll(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearAll();\r\n this.offenderSubject.next();\r\n this.staffSubject.next();\r\n });\r\n }\r\n\r\n /*************************************\r\n * Offender\r\n **************************************/\r\n public setSelectedOffender(selectedOffender: SelectedOffender): void {\r\n this.connection.promise.then((child) => {\r\n child.setSelectedOffender(selectedOffender);\r\n this.offenderSubject.next(selectedOffender);\r\n });\r\n }\r\n\r\n public getSelectedOffender(): Promise<SelectedOffender> {\r\n return this.connection.promise.then((child) =>\r\n child.getSelectedOffender(StorageKey.selectedOffender),\r\n );\r\n }\r\n\r\n public clearSelectedOffender(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearSelectedOffender();\r\n this.offenderSubject.next();\r\n });\r\n }\r\n\r\n public getOffenderUpdate(): Observable<SelectedOffender> {\r\n return this.offenderSubject.asObservable();\r\n }\r\n\r\n /************************************************************************\r\n * Staff\r\n ************************************************************************/\r\n public setLoginStaff(loginStaff: LoginStaff) {\r\n this.connection.promise.then((child) => {\r\n child.setLoginStaff(loginStaff);\r\n this.staffSubject.next(loginStaff);\r\n });\r\n }\r\n\r\n public getLoginStaff(): Promise<LoginStaff> {\r\n return this.connection.promise.then((child) =>\r\n child.getLoginStaff(StorageKey.loginStaff),\r\n );\r\n }\r\n\r\n public clearLoginStaff(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearLoginStaff();\r\n this.staffSubject.next();\r\n });\r\n }\r\n\r\n public getStaffUpdate(): Observable<LoginStaff> {\r\n return this.staffSubject.asObservable();\r\n }\r\n\r\n public refreshLoginStaffOptions() {\r\n this.getLoginStaff().then((oldLoginStaff) => {\r\n this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe(\r\n (optionData) => {\r\n console.log(optionData);\r\n oldLoginStaff.options = optionData;\r\n this.setLoginStaff(oldLoginStaff);\r\n },\r\n );\r\n });\r\n }\r\n\r\n /************************************************************************\r\n * Offender Query\r\n ************************************************************************/\r\n public setOffenderQuery(offenderQuery: OffenderQuery) {\r\n this.connection.promise.then((child) => {\r\n child.setOffenderQuery(offenderQuery);\r\n this.offenderQuerySubject.next(offenderQuery);\r\n });\r\n }\r\n\r\n public getOffenderQuery(): Promise<OffenderQuery> {\r\n return this.connection.promise.then((child) =>\r\n child.getOffenderQuery(StorageKey.offenderQuery),\r\n );\r\n }\r\n\r\n public clearOffenderQuery(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearOffenderQuery();\r\n this.offenderQuerySubject.next();\r\n });\r\n }\r\n\r\n public getOffenderQueryUpdate(): Observable<OffenderQuery> {\r\n return this.offenderQuerySubject.asObservable();\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n SMART_DATA_SERVICE_URL,\r\n} from '../smart-storage/smart-storage-model';\r\n\r\n\r\n@Injectable()\r\nexport class SmartOffenderHeaderService {\r\n constructor(\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n private http: HttpClient,\r\n ) {}\r\n\r\n getStaffOffenders(staffId: number): Observable<AssignedOffender[]> {\r\n const queryString = `\r\n query getStaffOffenderList{\r\n filterOffenderList(input: {staffId: ${staffId}}) {\r\n data {\r\n offenderId\r\n offenderName\r\n pdId\r\n birthDate\r\n gender\r\n }\r\n }\r\n }\r\n `;\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n return data.filterOffenderList.data;\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport interface AssignedOffender {\r\n offenderId: number;\r\n offenderName: string;\r\n pdId: string;\r\n birthDate: Date;\r\n gender: string;\r\n}\r\n","import { Component, OnInit, OnDestroy, NgZone, Output, EventEmitter } from '@angular/core';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport { SelectedOffender, LoginStaff, Role, OffenderQuery } from '../smart-storage/smart-storage-model';\r\nimport { Subscription, Observable, from, of } from 'rxjs';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { FormControl } from '@angular/forms';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { SmartOffenderHeaderService, AssignedOffender } from './smart-offender-header.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-smart-offender-header',\r\n templateUrl: './smart-offender-header.component.html',\r\n styleUrls: ['./smart-offender-header.component.css'],\r\n})\r\nexport class SmartOffenderHeaderComponent implements OnInit, OnDestroy {\r\n public selectedOffender: SelectedOffender;\r\n loginStaff: LoginStaff;\r\n subscription: Subscription;\r\n selectedOffenderControl$ = new FormControl();\r\n // assignedOffenders: AssignedOffender[];\r\n offenderQueryList: SelectedOffender[];\r\n offenderQuerySubscription: Subscription;\r\n public isAuthenticated: boolean;\r\n\r\n constructor(\r\n private xdmService: XdmService,\r\n private authnService: MsalService,\r\n private smartOffenderHeaderService: SmartOffenderHeaderService,\r\n private router: Router,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.isAuthenticated = this.authnService.getAccount() ? true : false;\r\n this.xdmService.getLoginStaff().then((loginStaff) => {\r\n this.loginStaff = loginStaff ? loginStaff : null;\r\n });\r\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\r\n this.selectedOffender =\r\n selectedOffender && selectedOffender.offenderId\r\n ? selectedOffender\r\n : null;\r\n });\r\n\r\n this.subscription = this.xdmService\r\n .getOffenderUpdate()\r\n .subscribe((selectedOffender) => {\r\n this.selectedOffender = selectedOffender;\r\n this.setSelectedOffenderControl();\r\n });\r\n\r\n this.xdmService.getOffenderQuery().then((offenderQuery: OffenderQuery) => {\r\n if (offenderQuery) {\r\n this.offenderQueryList = offenderQuery.offenders;\r\n this.setSelectedOffenderControl();\r\n }\r\n });\r\n\r\n this.offenderQuerySubscription = this.xdmService.getOffenderQueryUpdate()\r\n .subscribe((offenderList) => {\r\n if (offenderList && offenderList.offenders) {\r\n this.offenderQueryList = [...offenderList.offenders];\r\n }\r\n });\r\n\r\n\r\n this.selectedOffenderControl$.valueChanges.subscribe((o) =>\r\n this.onOffenderSelected(o),\r\n );\r\n\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => {\r\n return false;\r\n };\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private onOffenderSelected(offender): void {\r\n if (offender) {\r\n // const o = offender.offenderName.split(',');\r\n // if (o.length === 2) {\r\n // const offenderName = `${o[1]} ${o[0]}`;\r\n // this.selectedOffender = {\r\n // offenderId: offender.offenderId,\r\n // name: offenderName,\r\n // pdId: offender.pdId,\r\n // birthDate: offender.birthDate,\r\n // gender: offender.genderCode,\r\n // assignmentStaffRelationId: '',\r\n // intakeFlag: this.loginStaff\r\n // ? this.hasIntakeRole(this.loginStaff.roles)\r\n // : false,\r\n // } as SelectedOffender;\r\n this.selectedOffender = offender;\r\n this.xdmService.setSelectedOffender(this.selectedOffender);\r\n this.reloadCurrentRoute();\r\n }\r\n }\r\n\r\n private setSelectedOffenderControl() {\r\n if (\r\n this.selectedOffender &&\r\n this.offenderQueryList &&\r\n this.offenderQueryList.length > 0\r\n ) {\r\n const o = this.offenderQueryList.find(\r\n (x) => x.offenderId === this.selectedOffender.offenderId,\r\n );\r\n if (o) {\r\n this.selectedOffenderControl$.setValue(o, { emitEvent: false });\r\n }\r\n\r\n if (!o && this.offenderQueryList.length > 0) {\r\n this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {\r\n emitEvent: false,\r\n });\r\n }\r\n }\r\n }\r\n\r\n private reloadCurrentRoute() {\r\n try {\r\n const urlTree = this.router.parseUrl(this.router.url);\r\n if (urlTree\r\n && urlTree.root\r\n && urlTree.root.segments\r\n && urlTree.root.segments.length > 1) {\r\n this.router.navigate([urlTree.root.segments[0].path]);\r\n } else if (urlTree\r\n && urlTree.root\r\n && urlTree.root.children\r\n && urlTree.root.children.primary\r\n && urlTree.root.children.primary.segments\r\n && urlTree.root.children.primary.segments.length > 1) {\r\n this.router.navigate([urlTree.root.children.primary.segments[0].path]);\r\n } else {\r\n this.router.navigate([this.router.url]);\r\n }\r\n } catch {\r\n this.router.navigateByUrl('/');\r\n }\r\n }\r\n\r\n private hasIntakeRole(roles: Role[]) {\r\n if (roles && roles.length > 0) {\r\n return roles.findIndex(this.isIntakeRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isIntakeRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'OPA':\r\n case 'OPS':\r\n case 'SOPS':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Injectable, isDevMode } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { SmartNavbarConfig } from './smart-navbar-config';\r\n\r\n@Injectable()\r\nexport class SmartNavbarService {\r\n configs: SmartNavbarConfig[];\r\n constructor(private http: HttpClient) {}\r\n\r\n /*\r\n public getNavbarConfigs(): SmartNavbarConfig[] {\r\n this.configs = [\r\n {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },\r\n {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },\r\n {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },\r\n ];\r\n\r\n return this.configs;\r\n }\r\n */\r\n /*\r\n public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {\r\n return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');\r\n }\r\n */\r\n\r\n public getNavbarConfigs(\r\n serviceApiUrl: string,\r\n ): Observable<SmartNavbarConfig[]> {\r\n const queryString = `\r\n {\r\n findAppModules {\r\n data {\r\n appModuleId\r\n name\r\n url\r\n offenderSpecificFlag\r\n displayOrder\r\n }\r\n }\r\n }`;\r\n\r\n /*\r\n const httpHeaders = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n });\r\n const options = {\r\n headers: httpHeaders\r\n };\r\n */\r\n\r\n return this.http\r\n .post<any>(serviceApiUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n if (isDevMode()) {\r\n console.log(data);\r\n }\r\n return data.findAppModules.data;\r\n }),\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy,\r\n Input,\r\n NgZone,\r\n ViewChild,\r\n isDevMode,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MatTabGroup } from '@angular/material';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { SmartNavbarConfig } from './smart-navbar-config';\r\nimport { SmartNavbarService } from './smart-navbar.service';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport {\r\n SelectedOffender,\r\n LoginStaff,\r\n Role,\r\n} from '../smart-storage/smart-storage-model';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-smart-navbar',\r\n templateUrl: './smart-navbar.component.html',\r\n styleUrls: ['./smart-navbar.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SmartNavbarComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() serviceApiUrl: string;\r\n @Input() appModuleId = 'SMART';\r\n @ViewChild('tabs') tabGroup: MatTabGroup;\r\n selectedOffender: SelectedOffender;\r\n loginStaff: LoginStaff;\r\n offenderSubscription: Subscription;\r\n staffSubscription: Subscription;\r\n isAuthenticated = false;\r\n\r\n navbarConfigs: SmartNavbarConfig[];\r\n\r\n constructor(\r\n private navbarConfigService: SmartNavbarService,\r\n private xdmService: XdmService,\r\n // private zone: NgZone,\r\n private authnService: MsalService,\r\n ) {}\r\n\r\n ngOnChanges() {\r\n /*\r\n console.log(this.selectedTab);\r\n setTimeout(() => {\r\n this.tabGroup.selectedIndex = this.selectedTab;\r\n }, 1000);\r\n */\r\n }\r\n\r\n ngOnInit() {\r\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\r\n this.selectedOffender =\r\n selectedOffender && selectedOffender.offenderId\r\n ? selectedOffender\r\n : null;\r\n });\r\n\r\n this.xdmService.getLoginStaff().then((loginStaff) => {\r\n // this.zone.run(() => {\r\n this.loginStaff = loginStaff ? loginStaff : null;\r\n // });\r\n });\r\n\r\n this.offenderSubscription = this.xdmService\r\n .getOffenderUpdate()\r\n .subscribe((selectedOffender) => {\r\n // this.zone.run(() => {\r\n this.selectedOffender = selectedOffender;\r\n // });\r\n });\r\n\r\n this.staffSubscription = this.xdmService\r\n .getStaffUpdate()\r\n .subscribe((loginStaff) => {\r\n // this.zone.run(() => {\r\n this.loginStaff = loginStaff;\r\n // });\r\n });\r\n\r\n this.navbarConfigService\r\n .getNavbarConfigs(this.serviceApiUrl)\r\n .subscribe((configs) => {\r\n this.navbarConfigs = configs.sort((a, b) => {\r\n if (a.displayOrder < b.displayOrder) {\r\n return -1;\r\n } else if (a.displayOrder > b.displayOrder) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n });\r\n\r\n this.isAuthenticated = this.authnService.getAccount() ? true : false;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.offenderSubscription.unsubscribe();\r\n this.staffSubscription.unsubscribe();\r\n }\r\n\r\n public logout(): void {\r\n this.xdmService.clearAll();\r\n this.authnService.logout();\r\n }\r\n\r\n public getAppModuleUrl(config: SmartNavbarConfig) {\r\n return (config && this.selectedOffender && config.appModuleId === 'PPMAS') ?\r\n `${config.url}?skipAppMetadata=true&OffenderId=${this.selectedOffender.offenderId}` : config.url;\r\n }\r\n\r\n public hasAppModulePermission(appModuleId) {\r\n if (this.loginStaff && this.loginStaff.permissions && this.loginStaff.permissions.length > 0) {\r\n return this.loginStaff.permissions.findIndex(p => p.appModuleId === appModuleId) > -1;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public get hasExternalUserRole() {\r\n if (this.loginStaff && this.loginStaff.roles && this.loginStaff.roles.length > 0) {\r\n return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isExternalRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'EUDTL':\r\n case 'EUDUSM':\r\n case 'EUJDG':\r\n case 'EUMPD':\r\n case 'EUSOTV':\r\n case 'EUUSA2':\r\n case 'EUUSAO':\r\n case 'EUUSPC':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n// EUDTL\r\n// EUDUSM\r\n// EUJDG\r\n\r\n// EUMPD\r\n// EUSOTV\r\n// EUUSA2\r\n\r\n// EUUSAO\r\n// EUUSPC\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\n// import { SmartAuthService } from './smart-auth.service';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SMART_WEB_PORTAL_URL } from '../smart-storage/smart-storage-model';\r\n\r\n@Component({\r\n selector: 'app-smart-error',\r\n templateUrl: './smart-error.component.html',\r\n styleUrls: ['./smart-error.component.css'],\r\n})\r\nexport class SmartErrorComponent implements OnInit {\r\n type: string;\r\n message: string;\r\n\r\n constructor(\r\n private authnService: MsalService,\r\n private route: ActivatedRoute,\r\n @Inject(SMART_WEB_PORTAL_URL) private smartWebPortalUrl: string,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';\r\n this.message =\r\n this.route.snapshot.queryParamMap.get('message') || 'Error occured.';\r\n }\r\n\r\n logout() {\r\n this.authnService.logout();\r\n }\r\n\r\n portal() {\r\n window.location.href = this.smartWebPortalUrl;\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport {\r\n SMART_DATA_SERVICE_URL,\r\n} from '../smart-storage/smart-storage-model';\r\n\r\n@Injectable()\r\nexport class SmartStaffOffenderOptionsService {\r\n constructor(\r\n @Inject(SMART_DATA_SERVICE_URL) private serviceApiUrl,\r\n private http: HttpClient, private matSnackBar: MatSnackBar\r\n ) { }\r\n\r\n public showMessage(message) {\r\n this.matSnackBar.open(message, null, {\r\n duration: 2000,\r\n });\r\n }\r\n\r\n private convertEmptyToNull(jsonObject: JSON) {\r\n if (!jsonObject) {\r\n return;\r\n }\r\n\r\n if (jsonObject instanceof Array) {\r\n jsonObject.forEach(obj => {\r\n this.convertEmptyToNull(obj);\r\n });\r\n }\r\n\r\n const keys = Object.keys(jsonObject);\r\n keys.forEach(key => {\r\n if (typeof jsonObject[key] === 'object') {\r\n this.convertEmptyToNull(jsonObject[key]);\r\n } else if (typeof jsonObject[key] === 'string' && jsonObject[key].trim() === '') {\r\n jsonObject[key] = null;\r\n }\r\n });\r\n }\r\n\r\n private getGraphQueryData(queryName: string, queryString: string): Observable<any> {\r\n return this.http\r\n .post<any>(this.serviceApiUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n return data[queryName];\r\n }));\r\n }\r\n \r\n getOffenderListOptions(): Observable<any> {\r\n const queryName = 'findOffenderListOptions';\r\n const queryString = `{\r\n ${queryName} {\r\n data {\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n }\r\n message\r\n }\r\n }`;\r\n\r\n return this.getGraphQueryData(queryName, queryString);\r\n }\r\n\r\n public getStaffOffenderListOptions(\r\n staffId: number,\r\n ): Observable<Array<any>> {\r\n const queryString = `{findStaffOffenderListOptions(input:{\r\n where:{\r\n staffId: ${staffId}\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n }\r\n } }`;\r\n return this.http\r\n .post<any>(this.serviceApiUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n return data.findStaffOffenderListOptions.data;\r\n }),\r\n );\r\n }\r\n\r\n saveStaffOffenderListOptionsData(dataToSave: any) { //}: Observable<any> {\r\n\r\n // this.convertEmptyToNull(dataToSave);\r\n const queryName = 'upsertStaffOffenderListOption';\r\n const query = `mutation {\r\n upsertStaffOffenderListOption(input: ${this.convertToString(dataToSave)}) {\r\n message\r\n }\r\n }`;\r\n\r\n;\r\n return this.http\r\n .post<any>(this.serviceApiUrl, { query });\r\n /*.pipe(\r\n map(({ data }) => {\r\n return data[queryName];\r\n }));*/\r\n\r\n\r\n }\r\n\r\n convertToString(obj): string {\r\n let result = '';\r\n\r\n if (!obj) {\r\n return result;\r\n }\r\n\r\n if (obj instanceof Array) {\r\n result += ' [';\r\n obj.forEach(eObj => {\r\n result += this.convertToString(eObj);\r\n });\r\n result += '],';\r\n } else {\r\n result += '{';\r\n const keys = Object.keys(obj);\r\n keys.forEach((key) => {\r\n if (typeof obj[key] === 'object') {\r\n result += key + ':' + this.convertToString(obj[key]);\r\n } else {\r\n if (isNaN(obj[key])) {\r\n result += key + ':\"' + obj[key] + '\",';\r\n } else {\r\n result += key + ':' + obj[key] + ',';\r\n }\r\n }\r\n });\r\n result = result.substring(0, result.length - 1);\r\n result += '},';\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\r\nimport { FormBuilder,\r\n FormGroup,\r\n FormControl,\r\n Validators,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { XdmService} from '../smart-storage/xdm.service';\r\n\r\n@Component({\r\n selector: 'lib-smart-staff-offender-options',\r\n templateUrl: './smart-staff-offender-options.component.html',\r\n styleUrls: ['./smart-staff-offender-options.component.css']\r\n})\r\nexport class SmartStaffOffenderOptionsComponent implements OnInit {\r\n loginStaff: LoginStaff;\r\n offenderListOptions: Array<any> = [];\r\n frmGroup: FormGroup;\r\n constructor(\r\n private route: ActivatedRoute,\r\n private offenderService: SmartStaffOffenderOptionsService,\r\n private xdmService: XdmService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const routData = this.route.snapshot.data;\r\n this.loginStaff = routData.loginStaff;\r\n this.offenderListOptions = routData.selectedOffenderResolverService;\r\n this.frmGroup = this.createForm();\r\n this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {\r\n this.fillForm(data);\r\n });\r\n }\r\n\r\n private fillForm(data) {\r\n if (data) {\r\n const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');\r\n data.forEach(element => {\r\n offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);\r\n });\r\n }\r\n\r\n }\r\n private createForm() {\r\n const offenderListOptionsFg = new FormGroup({\r\n });\r\n\r\n this.offenderListOptions.forEach( (dt, i) => {\r\n offenderListOptionsFg.addControl(dt.offenderListOptionId, new FormControl(false));\r\n });\r\n\r\n return new FormGroup({\r\n offenderListOptions: offenderListOptionsFg,\r\n });\r\n }\r\n\r\n onSave() {\r\n const data = {\r\n options: [],\r\n staffId: this.loginStaff.staffId,\r\n modifiedBy: this.loginStaff.staffId\r\n };\r\n\r\n const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;\r\n const keys = Object.keys(offenderListOptionsVal);\r\n keys.forEach(key => {\r\n if (offenderListOptionsVal[key]) {\r\n data.options.push({'offenderListOptionId': key});\r\n }\r\n });\r\n\r\n this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea=>{\r\n if (rtrDatea.message) {\r\n this.offenderService.showMessage(rtrDatea.message);\r\n } else {\r\n this.offenderService.showMessage('Saved successfully');\r\n this.xdmService.refreshLoginStaffOptions();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable, Inject, isDevMode } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of, from, throwError } from 'rxjs';\r\nimport { map, switchMap, take, catchError} from 'rxjs/operators';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport {\r\n LoginStaff,\r\n SelectedOffender,\r\n SMART_DATA_SERVICE_URL,\r\n SMART_DOMAIN_FORMAT,\r\n Role,\r\n Permission,\r\n} from '../smart-storage/smart-storage-model';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport { SmartAccessControlConfig } from './smart-access-control-config';\r\nimport { nullSafeIsEquivalent } from '@angular/compiler/src/output/output_ast';\r\n// import { stringify } from 'querystring';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartAuthService {\r\n loginStaff: LoginStaff;\r\n selectedOffender: SelectedOffender;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authnService: MsalService,\r\n private xdmService: XdmService,\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n @Inject(SMART_DOMAIN_FORMAT) private smartDomainFormatUrl: string,\r\n ) {}\r\n\r\n public getLoginStaff(): Observable<LoginStaff> {\r\n if (isDevMode) {\r\n console.log('SmartAuthService - getLoginStaff()');\r\n }\r\n if (!isDevMode && this.loginStaff) {\r\n if (this.loginStaff.staffId) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get internal instance in service',\r\n this.loginStaff,\r\n );\r\n }\r\n return of(this.loginStaff);\r\n } else if (this.loginStaff.userName) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get using preset user name',\r\n this.loginStaff,\r\n );\r\n }\r\n return this.getStaff(this.loginStaff.userName);\r\n }\r\n }\r\n return from(this.xdmService.getLoginStaff()).pipe(\r\n switchMap((storedResult) => {\r\n if (storedResult && storedResult.staffId) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get from session.',\r\n storedResult,\r\n );\r\n }\r\n this.loginStaff = storedResult;\r\n return of(storedResult);\r\n } else if (storedResult && storedResult.userName) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get using preset user name',\r\n this.loginStaff,\r\n );\r\n }\r\n return this.getStaff(storedResult.userName);\r\n } else {\r\n const userName = this.authnService.getAccount().userName;\r\n const staffName = userName.substring(0, userName.indexOf('@'));\r\n if (isDevMode) {\r\n console.log(\r\n '##### loginLoginStaff(): get using login staff name ',\r\n staffName,\r\n );\r\n }\r\n return this.getStaff(staffName);\r\n }\r\n }),\r\n );\r\n }\r\n\r\n private getTeamUrl(app: string, afterHash: string): string {\r\n return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;\r\n }\r\n private isSameHost(url, app) {\r\n return this.smartDomainFormatUrl.replace('${APP}', app) === url;\r\n }\r\n\r\n public redirectToTeam(loginStaff: LoginStaff) {\r\n if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {\r\n if (!this.isSameHost(window.location.origin, 'investigation')) {\r\n window.location.href = this.getTeamUrl('investigation', '/assignment');\r\n }\r\n } else if (\r\n loginStaff.roles.findIndex(\r\n (role) => role.roleId.substring(0, 3) === 'RSC',\r\n ) > -1\r\n ) {\r\n if (!this.isSameHost(window.location.origin, 'rsc')) {\r\n window.location.href = this.getTeamUrl('rsc', '/offender-list');\r\n }\r\n }\r\n }\r\n\r\n public async setSelectedOffender(selectedOffender: SelectedOffender) {\r\n if (selectedOffender) {\r\n // if (!selectedOffender.assignmentStaffRelationId) {\r\n const relation = await this.getStaffOffenderRelation(\r\n this.loginStaff.staffId,\r\n selectedOffender.offenderId,\r\n ).toPromise();\r\n if (relation) {\r\n selectedOffender.assignmentStaffRelationId = relation;\r\n } else {\r\n selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\r\n }\r\n // }\r\n }\r\n this.xdmService.setSelectedOffender(selectedOffender);\r\n this.selectedOffender = selectedOffender;\r\n }\r\n\r\n public logout(): void {\r\n this.xdmService.clearAll();\r\n this.authnService.logout();\r\n }\r\n\r\n public async setPermission(\r\n appModuleId: string,\r\n route: ActivatedRouteSnapshot,\r\n ) {\r\n if (!this.loginStaff) {\r\n this.loginStaff = await this.xdmService.getLoginStaff();\r\n }\r\n const permissions = this.loginStaff.permissions;\r\n const resource = route.url[0].path;\r\n\r\n if (!this.selectedOffender) {\r\n this.selectedOffender = await this.xdmService.getSelectedOffender();\r\n }\r\n\r\n if (this.selectedOffender) {\r\n // if (!this.selectedOffender.assignmentStaffRelationId) {\r\n const relation = await this.getStaffOffenderRelation(\r\n this.loginStaff.staffId,\r\n this.selectedOffender.offenderId,\r\n ).toPromise();\r\n if (relation) {\r\n this.selectedOffender.assignmentStaffRelationId = relation;\r\n } else {\r\n this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\r\n }\r\n this.xdmService.setSelectedOffender(this.selectedOffender);\r\n // }\r\n }\r\n\r\n const assignmentStaffRelationId = this.selectedOffender\r\n .assignmentStaffRelationId;\r\n\r\n const elements = document.querySelectorAll('[class^=\"sac-\"]');\r\n const pattern = /^sac-(\\S+)-(\\S+)$/i;\r\n\r\n Array.from(elements).forEach((element) => {\r\n let hide;\r\n let disable;\r\n element.classList.forEach((c) => {\r\n const results = c.match(pattern);\r\n // console.log(results);\r\n if (results && results.length > 2) {\r\n const roleId = results[1] ? results[1].toUpperCase() : null;\r\n const right = results[2];\r\n // console.log(results[0]);\r\n // console.log(results[1]);\r\n // console.log(results[2]);\r\n const permission = permissions.find(function (p) {\r\n return (\r\n p.appModuleId === appModuleId &&\r\n p.resource === resource &&\r\n p.roleId === roleId &&\r\n p.assignmentStaffRelationId === assignmentStaffRelationId\r\n );\r\n });\r\n /*\r\n console.log('##### setPermission() resource: ', resource);\r\n console.log('##### setPermission() appModuleId: ', appModuleId);\r\n console.log('##### setPermission() roleId: ', roleId);\r\n console.log(\r\n '##### setPermission() assignment relation: ',\r\n assignmentStaffRelationId,\r\n );\r\n */\r\n console.log('##### Matched permission: ', permission);\r\n\r\n if (permission) {\r\n if (right === 'read') {\r\n if (!permission.readFlag) {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else {\r\n hide = false;\r\n }\r\n } else if (\r\n (right === 'create' && !permission.createFlag) ||\r\n (right === 'update' && !permission.updateFlag) ||\r\n (right === 'delete' && !permission.deleteFlag) ||\r\n (right === 'assign' && !permission.assignFlag) ||\r\n (right === 'close' && !permission.closeFlag) ||\r\n (right === 'expunge' && !permission.expungeFlag) ||\r\n (right === 'reopen' && !permission.reopenFlag)\r\n ) {\r\n if (element.nodeName === 'BUTTON') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else {\r\n if (disable !== false) {\r\n disable = true;\r\n }\r\n }\r\n } else {\r\n if (element.nodeName === 'BUTTON') {\r\n hide = false;\r\n } else {\r\n disable = false;\r\n }\r\n }\r\n } else {\r\n if (right === 'read') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else if (element.nodeName === 'BUTTON') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else if (disable !== false) {\r\n disable = true;\r\n }\r\n }\r\n }\r\n });\r\n console.log('hide: ', hide);\r\n console.log('disable: ', disable);\r\n if (hide === true) {\r\n this.hideHtmlElement(element);\r\n } else if (disable === true) {\r\n this.disableHtmlElement(element);\r\n }\r\n });\r\n }\r\n\r\n public checkPermission(accessControlConfig: SmartAccessControlConfig) {\r\n const selData = accessControlConfig.route.data;\r\n this.loginStaff = selData.loginStaff;\r\n this.selectedOffender = selData.selectedOffender;\r\n\r\n const permissions = this.loginStaff.permissions;\r\n const resource = accessControlConfig.route.url[0].path;\r\n const roleId = accessControlConfig.roleId\r\n ? accessControlConfig.roleId.toUpperCase()\r\n : null;\r\n const accessType = accessControlConfig.accessType;\r\n const assignmentStaffRelationId = !this.selectedOffender\r\n .assignmentStaffRelationId\r\n ? 'N/A'\r\n : this.selectedOffender.assignmentStaffRelationId;\r\n\r\n const permission = permissions.find((p) => {\r\n return (\r\n p.appModuleId === accessControlConfig.appModuleId\r\n && p.resource === resource\r\n && (!roleId || p.roleId === roleId)\r\n && (p.assignmentStaffRelationId === 'N/A' ||\r\n p.assignmentStaffRelationId === assignmentStaffRelationId)\r\n );\r\n });\r\n\r\n if (permission) {\r\n if (accessType === 'read') {\r\n if (!permission.readFlag) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else if (\r\n (accessType === 'create' && !permission.createFlag) ||\r\n (accessType === 'update' && !permission.updateFlag) ||\r\n (accessType === 'delete' && !permission.deleteFlag) ||\r\n (accessType === 'assign' && !permission.assignFlag) ||\r\n (accessType === 'close' && !permission.closeFlag) ||\r\n (accessType === 'expunge' && !permission.expungeFlag) ||\r\n (accessType === 'reopen' && !permission.reopenFlag)\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n if (accessType === 'read') {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public canAppFeatureActivate(\r\n loginStaff: LoginStaff,\r\n feature: string,\r\n appModuleId = null,\r\n ) {\r\n // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {\r\n // return true;\r\n // }\r\n return this.hasAppFeaturePermission(\r\n loginStaff.permissions,\r\n feature,\r\n appModuleId,\r\n );\r\n }\r\n\r\n // public isAuthEnable(roles: Role[], appModuleId: string) {\r\n // if (roles && roles.length > 0) {\r\n // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';\r\n // }\r\n // return false;\r\n // }\r\n\r\n public hasIntakeRole(roles: Role[]) {\r\n if (roles && roles.length > 0) {\r\n return roles.findIndex(this.isIntakeRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private hasAppFeaturePermission(\r\n permissions: Permission[],\r\n feature: string,\r\n appModuleId: string,\r\n ) {\r\n if (permissions && permissions.length > 0) {\r\n if (appModuleId) {\r\n return (\r\n permissions.findIndex(\r\n (p) => p.resource === feature && p.appModuleId === appModuleId,\r\n ) > -1\r\n );\r\n } else {\r\n return permissions.findIndex((p) => p.resource === feature) > -1;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isExternalRole(roleId) {\r\n switch (roleId) {\r\n case 'EUDTL':\r\n case 'EUDUSM':\r\n case 'EUJDG':\r\n case 'EUMPD':\r\n case 'EUSOTV':\r\n case 'EUUSA2':\r\n case 'EUUSAO':\r\n case 'EUUSPC':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isIntakeRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'OPA':\r\n case 'OPS':\r\n case 'SOPS':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private disableHtmlElement(element: Element): void {\r\n // console.log(element);\r\n switch (element.nodeName) {\r\n case 'A':\r\n element.setAttribute(\r\n 'style',\r\n 'pointer-events: none;cursor: not-allowed;',\r\n );\r\n element.setAttribute('tabIndex', '-1');\r\n break;\r\n default:\r\n element.setAttribute('disabled', 'disabled');\r\n break;\r\n }\r\n }\r\n\r\n private hideHtmlElement(element: Element): void {\r\n // element.setAttribute('hidden', 'hidden');\r\n element.setAttribute('style', 'display: none;');\r\n }\r\n\r\n private getStaff(userName: string): Observable<LoginStaff> {\r\n const queryString = `\r\n {\r\n findvStaffs(input: {where: {userName: \"${userName}\", activeFlag: true}}) {\r\n totalCount\r\n message\r\n data {\r\n staffId\r\n userName\r\n lastName\r\n firstName\r\n phone\r\n email\r\n roles {\r\n roleId\r\n role\r\n }\r\n permissions {\r\n roleId\r\n appModuleId\r\n resource\r\n assignmentStaffRelationId\r\n readFlag\r\n createFlag\r\n updateFlag\r\n deleteFlag\r\n assignFlag\r\n reopenFlag\r\n closeFlag\r\n expungeFlag\r\n }\r\n options {\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n selectedFlag\r\n }\r\n }\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log('##### getStaff() from service ', result);\r\n }\r\n if (result.data.findvStaffs.data.length > 0) {\r\n const data = result.data.findvStaffs.data[0];\r\n this.xdmService.setLoginStaff(data);\r\n this.loginStaff = data;\r\n return data;\r\n } else {\r\n return null;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('error ' + error);\r\n return null;\r\n }),\r\n );\r\n }\r\n\r\n private getStaffOffenderRelation(\r\n staffId: number,\r\n offenderId: number,\r\n ): Observable<string> {\r\n const queryString = `\r\n {\r\n findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {\r\n data {\r\n assignmentStaffRelationId\r\n }\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getStaffOffenderRelation() from service ',\r\n result,\r\n );\r\n }\r\n if (result.data.findvStaffOffenderRelations.data.length > 0) {\r\n const data = result.data.findvStaffOffenderRelations.data[0];\r\n return data.assignmentStaffRelationId;\r\n } else {\r\n return null;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('error ' + error);\r\n return null;\r\n }),\r\n );\r\n }\r\n\r\n private getRolePermissions(\r\n appModuleId: string,\r\n resource: string,\r\n ): Observable<boolean> {\r\n const queryString = `\r\n query findvRolePermissionPivots{\r\n findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){\r\n totalCount\r\n message\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log(\r\n '##### findvRolePermissionPivots() from service ',\r\n result,\r\n );\r\n }\r\n if (result.data.findvRolePermissionPivots.totalCount > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error: any) => {\r\n console.log('error ' + error);\r\n return throwError(error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Directive, Input, OnInit, ElementRef } from '@angular/core';\r\nimport { SmartAuthService } from './smart-auth.service';\r\nimport { SmartAccessControlConfig } from './smart-access-control-config';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n\r\n@Directive({\r\n selector: '[accessControl]',\r\n})\r\nexport class SmartAccessControlDirective implements OnInit {\r\n @Input() accessControlConfig: SmartAccessControlConfig;\r\n constructor(\r\n private elementRef: ElementRef,\r\n private auth: SmartAuthService,\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.checkAccess();\r\n }\r\n\r\n checkAccess() {\r\n if (\r\n !this.accessControlConfig ||\r\n !this.accessControlConfig.route ||\r\n !this.accessControlConfig.route.data ||\r\n !this.accessControlConfig.route.data.loginStaff ||\r\n !this.accessControlConfig.route.data.selectedOffender\r\n ) {\r\n return;\r\n }\r\n\r\n // const loginStaff = this.accessControlConfig.route.data.loginStaff;\r\n // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {\r\n // return;\r\n // }\r\n this.elementRef.nativeElement.style.display = this.auth.checkPermission(\r\n this.accessControlConfig\r\n )\r\n ? 'block'\r\n : 'none';\r\n }\r\n}\r\n","// smart-authorization.service\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n} from '@angular/router';\r\nimport { Router } from '@angular/router';\r\nimport { take, mergeMap, catchError } from 'rxjs/operators';\r\nimport { of, Observable } from 'rxjs';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\nimport { SmartAuthService } from './smart-auth.service';\r\n\r\n@Injectable()\r\nexport class SmartAuthorizationGuard implements CanActivate {\r\n loginStaff: LoginStaff;\r\n\r\n constructor(public authnService: SmartAuthService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot) {\r\n return this.authnService.getLoginStaff().pipe(\r\n take(1),\r\n mergeMap((loginStaff) => {\r\n if (!loginStaff || !route || !route.routeConfig) {\r\n return of(false);\r\n }\r\n // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {\r\n // return of(true);\r\n // }\r\n const resource = route.routeConfig.path\r\n ? route.routeConfig.path.split('/')[0]\r\n : '';\r\n const isFeatureValid = this.authnService.canAppFeatureActivate(\r\n loginStaff,\r\n resource,\r\n );\r\n return of(isFeatureValid);\r\n }),\r\n catchError((error) => {\r\n return of(false);\r\n }),\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatTabsModule,\r\n MatSelectModule,\r\n MatCard,\r\n MatCheckbox,\r\n MatCheckboxModule,\r\n MatCardModule,\r\n MatSnackBar,\r\n} from '@angular/material';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { SmartOffenderHeaderComponent } from './smart-offender-header/smart-offender-header.component';\r\nimport { SmartNavbarComponent } from './smart-navbar/smart-navbar.component';\r\nimport { SmartNavbarService } from './smart-navbar/smart-navbar.service';\r\nimport { SmartErrorComponent } from './smart-auth/smart-error.component';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SmartOffenderHeaderService } from './smart-offender-header/smart-offender-header.service';\r\nimport { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\r\n// import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\r\nimport { SmartStaffOffenderOptionsService } from './smart-staff-offender-options/smart-staff-offender-options.service';\r\nimport { SmartAccessControlDirective } from './smart-auth/smart-access-control.directive';\r\nimport { SmartAuthorizationGuard } from './smart-auth/smart-authorization-guard.service';\r\n\r\n@NgModule({\r\n declarations: [\r\n SmartOffenderHeaderComponent,\r\n SmartNavbarComponent,\r\n SmartErrorComponent,\r\n SmartStaffOffenderOptionsComponent,\r\n SmartAccessControlDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatTabsModule,\r\n MatSelectModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n ReactiveFormsModule,\r\n ],\r\n exports: [\r\n SmartOffenderHeaderComponent,\r\n SmartNavbarComponent,\r\n SmartErrorComponent,\r\n SmartStaffOffenderOptionsComponent,\r\n SmartAccessControlDirective,\r\n ],\r\n providers: [\r\n SmartNavbarService,\r\n SmartOffenderHeaderService,\r\n SmartStaffOffenderOptionsService,\r\n SmartAuthorizationGuard,\r\n MatSnackBar,\r\n ],\r\n})\r\nexport class NgcSmartCoreModule {}\r\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\r\nimport {\r\n Resolve,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n Router,\r\n} from '@angular/router';\r\nimport { Observable, EMPTY, of, throwError } from 'rxjs';\r\nimport { mergeMap, catchError, take } from 'rxjs/operators';\r\nimport { SmartAuthService } from './smart-auth.service';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoginStaffResolverService implements Resolve<LoginStaff> {\r\n constructor(\r\n private authnService: SmartAuthService,\r\n // private zone: NgZone,\r\n private router: Router,\r\n ) {}\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<LoginStaff> | Observable<never> {\r\n return this.authnService.getLoginStaff().pipe(\r\n take(1),\r\n mergeMap((loginStaff) => {\r\n if (isDevMode) {\r\n console.log('LoginStaffResolverService: ', loginStaff);\r\n }\r\n if (loginStaff) {\r\n return of(loginStaff);\r\n } else {\r\n return throwError('Not authorized to access SMART.');\r\n // return EMPTY;\r\n /*\r\n this.zone.run(() => {\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: {\r\n type: 'staff',\r\n message: 'Not authorized to access SMART.'\r\n }\r\n });\r\n });\r\n return EMPTY;\r\n */\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('LoginStaffResolverService: ' + error);\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: {\r\n type: 'staff',\r\n message: 'SMART Authentication: ' + error,\r\n },\r\n });\r\n return EMPTY;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\r\nimport {\r\n Resolve,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n Router,\r\n} from '@angular/router';\r\nimport { Observable, from, of, EMPTY, throwError, concat } from 'rxjs';\r\nimport {\r\n catchError,\r\n mergeMap,\r\n map,\r\n take,\r\n retryWhen,\r\n tap,\r\n delay,\r\n} from 'rxjs/operators';\r\nimport { SelectedOffender } from '../smart-storage/smart-storage-model';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SelectedOffenderResolverService\r\n implements Resolve<SelectedOffender> {\r\n constructor(\r\n private service: XdmService,\r\n private zone: NgZone,\r\n private router: Router,\r\n ) {}\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<SelectedOffender> | Observable<never> {\r\n return from(this.service.getSelectedOffender()).pipe(\r\n mergeMap((selectedOffender) => {\r\n if (isDevMode) {\r\n console.log(selectedOffender);\r\n }\r\n if (!selectedOffender) {\r\n return throwError('No offender selected.');\r\n }\r\n return of(selectedOffender);\r\n }),\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n // tap(() => console.log('Retry getting selected offender.')),\r\n delay(1000),\r\n take(5),\r\n (o) =>\r\n concat(\r\n o,\r\n throwError('No offender selected (failed after retries).'),\r\n ),\r\n ),\r\n ),\r\n catchError((error) => {\r\n /*\r\n this.zone.run(() => {\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: { type: 'offender', message: error }\r\n });\r\n });\r\n */\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: { type: 'offender', message: error },\r\n });\r\n return EMPTY;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Resolve } from '@angular/router';\r\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartStaffOffenderOptionsResolverService implements Resolve<Observable<any>> {\r\n constructor(private offenderService: SmartStaffOffenderOptionsService) {}\r\n resolve() {\r\n return this.offenderService.getOffenderListOptions()\r\n .pipe(\r\n map(({ data }) => {\r\n return data;\r\n }),\r\n );\r\n }\r\n }\r\n","import { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nexport interface SmartAccessControlConfig {\r\n appModuleId: string;\r\n route: ActivatedRouteSnapshot;\r\n accessType: AccessType;\r\n roleId: string;\r\n}\r\n\r\nexport enum AccessType {\r\n READ = 'read',\r\n CREATE = 'create',\r\n UPDATE = 'update',\r\n DELETE = 'delete',\r\n EXPUNGE = 'expunge',\r\n ASSIGN = 'assign',\r\n REOPEN = 'reopen',\r\n CLOSE = 'close'\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"NgcSmartCoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":26,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"SmartErrorComponent"},{"__symbolic":"reference","name":"SmartStaffOffenderOptionsComponent"},{"__symbolic":"reference","name":"ɵe"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":35,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":36,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatButtonModule","line":37,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatMenuModule","line":38,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatTabsModule","line":39,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatSelectModule","line":40,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatCardModule","line":41,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatCheckboxModule","line":42,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":43,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"SmartErrorComponent"},{"__symbolic":"reference","name":"SmartStaffOffenderOptionsComponent"},{"__symbolic":"reference","name":"ɵe"}],"providers":[{"__symbolic":"reference","name":"SmartNavbarService"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"SmartAuthorizationGuard"},{"__symbolic":"reference","module":"@angular/material","name":"MatSnackBar","line":57,"character":4}]}]}],"members":{}},"SmartAuthService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_DATA_SERVICE_URL"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_DOMAIN_FORMAT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":28,"character":18},{"__symbolic":"reference","module":"@azure/msal-angular","name":"MsalService","line":29,"character":26},{"__symbolic":"reference","name":"XdmService"},null,{"__symbolic":"reference","name":"string"}]}],"getLoginStaff":[{"__symbolic":"method"}],"getTeamUrl":[{"__symbolic":"method"}],"isSameHost":[{"__symbolic":"method"}],"redirectToTeam":[{"__symbolic":"method"}],"setSelectedOffender":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"setPermission":[{"__symbolic":"method"}],"checkPermission":[{"__symbolic":"method"}],"canAppFeatureActivate":[{"__symbolic":"method"}],"hasIntakeRole":[{"__symbolic":"method"}],"hasAppFeaturePermission":[{"__symbolic":"method"}],"isExternalRole":[{"__symbolic":"method"}],"isIntakeRole":[{"__symbolic":"method"}],"disableHtmlElement":[{"__symbolic":"method"}],"hideHtmlElement":[{"__symbolic":"method"}],"getStaff":[{"__symbolic":"method"}],"getStaffOffenderRelation":[{"__symbolic":"method"}],"getRolePermissions":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LoginStaffResolverService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SmartAuthService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":19,"character":20}]}],"resolve":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"SelectedOffenderResolverService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"XdmService"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":18},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":20}]}],"resolve":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"SmartErrorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-smart-error","template":"<div>\r\n <h2>\r\n {{ message }}\r\n </h2>\r\n <p>\r\n Please contact help desk if needed.\r\n </p>\r\n <div>\r\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\r\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\r\n </div>\r\n</div>\r\n","styles":["div{text-align:center}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":18,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_WEB_PORTAL_URL"}]}]],"parameters":[{"__symbolic":"reference","module":"@azure/msal-angular","name":"MsalService","line":16,"character":26},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":17,"character":19},{"__symbolic":"reference","name":"string"}]}],"ngOnInit":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"portal":[{"__symbolic":"method"}]}},"SmartNavbarService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":10,"character":28}]}],"getNavbarConfigs":[{"__symbolic":"method"}]}},"SmartNavbarConfig":{"__symbolic":"interface"},"XdmService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":28,"character":12}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_WEB_STORAGE_LISTENER_URL"}]}],null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_DATA_SERVICE_URL"}]}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":31,"character":24},null]}],"init":[{"__symbolic":"method"}],"getStaffOffenderListOptions":[{"__symbolic":"method"}],"clearAll":[{"__symbolic":"method"}],"setSelectedOffender":[{"__symbolic":"method"}],"getSelectedOffender":[{"__symbolic":"method"}],"clearSelectedOffender":[{"__symbolic":"method"}],"getOffenderUpdate":[{"__symbolic":"method"}],"setLoginStaff":[{"__symbolic":"method"}],"getLoginStaff":[{"__symbolic":"method"}],"clearLoginStaff":[{"__symbolic":"method"}],"getStaffUpdate":[{"__symbolic":"method"}],"refreshLoginStaffOptions":[{"__symbolic":"method"}],"setOffenderQuery":[{"__symbolic":"method"}],"getOffenderQuery":[{"__symbolic":"method"}],"clearOffenderQuery":[{"__symbolic":"method"}],"getOffenderQueryUpdate":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"Permission":{"__symbolic":"class","members":{}},"Role":{"__symbolic":"class","members":{}},"Option":{"__symbolic":"class","members":{}},"LoginStaff":{"__symbolic":"class","members":{}},"SelectedOffender":{"__symbolic":"class","members":{}},"OffenderQuery":{"__symbolic":"class","members":{}},"StorageKey":{"__symbolic":"class","members":{},"statics":{"selectedOffender":"smart-selected-offender","loginStaff":"smart-login-staff","offenderQuery":"smart-offender-query"}},"SMART_WEB_STORAGE_LISTENER_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":62,"character":50},"arguments":["SMART Web Storage Listener URL"]},"SMART_WEB_PORTAL_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":65,"character":40},"arguments":["SMART Web Portal URL"]},"SMART_DATA_SERVICE_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":68,"character":42},"arguments":["SMART Data Service URL"]},"SMART_DOMAIN_FORMAT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":73,"character":39},"arguments":["SMART Domain Format URL"]},"SmartStaffOffenderOptionsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"lib-smart-staff-offender-options","template":"<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card role=\"group\">\r\n <mat-card-content>\r\n <div formGroupName=\"offenderListOptions\">\r\n <div style=\"float:left;\">\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\r\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\r\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox> \r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <div align=\"center\">\r\n <button mat-raised-button color=\"accent\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </mat-card>\r\n </form>\r\n ","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":23,"character":19},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"XdmService"}]}],"ngOnInit":[{"__symbolic":"method"}],"fillForm":[{"__symbolic":"method"}],"createForm":[{"__symbolic":"method"}],"onSave":[{"__symbolic":"method"}]}},"SmartStaffOffenderOptionsResolverService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵd"}]}],"resolve":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"SmartAccessControlConfig":{"__symbolic":"interface"},"AccessType":{"READ":"read","CREATE":"create","UPDATE":"update","DELETE":"delete","EXPUNGE":"expunge","ASSIGN":"assign","REOPEN":"reopen","CLOSE":"close"},"SmartAuthorizationGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SmartAuthService"}]}],"canActivate":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-smart-offender-header","template":"<div\r\n class=\"offender-header-container\"\r\n *ngIf=\"selectedOffender && isAuthenticated\">\r\n <div class=\"offender-header-name-item\">\r\n <mat-form-field appearance=\"standard\" class=\"switch-offender\">\r\n <mat-label>Switch Offender</mat-label>\r\n <mat-select [formControl]=\"selectedOffenderControl$\">\r\n <mat-option\r\n *ngFor=\"let offender of offenderQueryList\"\r\n [value]=\"offender\">\r\n {{ offender?.name}} ({{offender?.offenderId}})\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\r\n </div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">CSOSA ID:</span>\r\n {{ selectedOffender.offenderId }}\r\n </div>\r\n </div>\r\n</div>\r\n","styles":[".offender-header-container{display:-ms-grid;display:grid;-ms-grid-columns:2fr 1fr;grid-template-columns:2fr 1fr;grid-column-gap:20px;width:100%;margin:4px;background-color:#eae9e9;font-family:Roboto,'Helvetica Neue',sans-serif;font-size:14px;font-weight:500;padding-top:8px;justify-items:end}.offender-header-name-item{width:50%}.offender-header-id-item{text-align:left;display:-ms-grid;display:grid;-ms-grid-columns:80px 80px;grid-template-columns:80px 80px;margin-top:8px}.switch-offender{width:100%!important}@media only screen and (max-width:740px){.offender-header-container{display:-ms-grid;display:grid;-ms-grid-rows:1fr 1fr;grid-template-rows:1fr 1fr;-ms-grid-columns:1fr;grid-template-columns:1fr;align-items:center;background-color:#eae9e9;font-family:Roboto,'Helvetica Neue',sans-serif;font-size:14px;font-weight:500;height:100%;margin:4px;padding-left:16px;justify-items:start}.offender-header-name-item{text-align:left}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"XdmService"},{"__symbolic":"reference","module":"@azure/msal-angular","name":"MsalService","line":27,"character":26},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":29,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onOffenderSelected":[{"__symbolic":"method"}],"setSelectedOffenderControl":[{"__symbolic":"method"}],"reloadCurrentRoute":[{"__symbolic":"method"}],"hasIntakeRole":[{"__symbolic":"method"}],"isIntakeRole":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":12,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_DATA_SERVICE_URL"}]}],null],"parameters":[null,{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":13,"character":18}]}],"getStaffOffenders":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"app-smart-navbar","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":27,"character":17},"member":"None"},"template":"<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n","styles":[".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color,#9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid #00008b!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width:768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width:767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translateX(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}"]}]}],"members":{"serviceApiUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"appModuleId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"tabGroup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":32,"character":3},"arguments":["tabs"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SmartNavbarService"},{"__symbolic":"reference","name":"XdmService"},{"__symbolic":"reference","module":"@azure/msal-angular","name":"MsalService","line":45,"character":26}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"getAppModuleUrl":[{"__symbolic":"method"}],"hasAppModulePermission":[{"__symbolic":"method"}],"isExternalRole":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":12,"character":5},"arguments":[{"__symbolic":"reference","name":"SMART_DATA_SERVICE_URL"}]}],null,null],"parameters":[null,{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":13,"character":18},{"__symbolic":"reference","module":"@angular/material","name":"MatSnackBar","line":13,"character":51}]}],"showMessage":[{"__symbolic":"method"}],"convertEmptyToNull":[{"__symbolic":"method"}],"getGraphQueryData":[{"__symbolic":"method"}],"getOffenderListOptions":[{"__symbolic":"method"}],"getStaffOffenderListOptions":[{"__symbolic":"method"}],"saveStaffOffenderListOptionsData":[{"__symbolic":"method"}],"convertToString":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":6,"character":1},"arguments":[{"selector":"[accessControl]"}]}],"members":{"accessControlConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":12,"character":24},{"__symbolic":"reference","name":"SmartAuthService"}]}],"ngOnInit":[{"__symbolic":"method"}],"checkAccess":[{"__symbolic":"method"}]}}},"origins":{"NgcSmartCoreModule":"./lib/ngc-smart-core.module","SmartAuthService":"./lib/smart-auth/smart-auth.service","LoginStaffResolverService":"./lib/smart-auth/smart-login-staff-resolver.service","SelectedOffenderResolverService":"./lib/smart-auth/smart-selected-offender-resolver.service","SmartErrorComponent":"./lib/smart-auth/smart-error.component","SmartNavbarService":"./lib/smart-navbar/smart-navbar.service","SmartNavbarConfig":"./lib/smart-navbar/smart-navbar-config","XdmService":"./lib/smart-storage/xdm.service","Permission":"./lib/smart-storage/smart-storage-model","Role":"./lib/smart-storage/smart-storage-model","Option":"./lib/smart-storage/smart-storage-model","LoginStaff":"./lib/smart-storage/smart-storage-model","SelectedOffender":"./lib/smart-storage/smart-storage-model","OffenderQuery":"./lib/smart-storage/smart-storage-model","StorageKey":"./lib/smart-storage/smart-storage-model","SMART_WEB_STORAGE_LISTENER_URL":"./lib/smart-storage/smart-storage-model","SMART_WEB_PORTAL_URL":"./lib/smart-storage/smart-storage-model","SMART_DATA_SERVICE_URL":"./lib/smart-storage/smart-storage-model","SMART_DOMAIN_FORMAT":"./lib/smart-storage/smart-storage-model","SmartStaffOffenderOptionsComponent":"./lib/smart-staff-offender-options/smart-staff-offender-options.component","SmartStaffOffenderOptionsResolverService":"./lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service","SmartAccessControlConfig":"./lib/smart-auth/smart-access-control-config","AccessType":"./lib/smart-auth/smart-access-control-config","SmartAuthorizationGuard":"./lib/smart-auth/smart-authorization-guard.service","ɵa":"./lib/smart-offender-header/smart-offender-header.component","ɵb":"./lib/smart-offender-header/smart-offender-header.service","ɵc":"./lib/smart-navbar/smart-navbar.component","ɵd":"./lib/smart-staff-offender-options/smart-staff-offender-options.service","ɵe":"./lib/smart-auth/smart-access-control.directive"},"importAs":"@csmart/ngc-smart-core"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: csmart-ngc-smart-core.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Generated bundle index. Do not edit.
|
|
8
|
-
*/
|
|
9
|
-
export { NgcSmartCoreModule, SmartAuthService, LoginStaffResolverService, SelectedOffenderResolverService, SmartErrorComponent, SmartNavbarService, XdmService, Permission, Role, Option, LoginStaff, SelectedOffender, OffenderQuery, StorageKey, SMART_WEB_STORAGE_LISTENER_URL, SMART_WEB_PORTAL_URL, SMART_DATA_SERVICE_URL, SMART_DOMAIN_FORMAT, SmartStaffOffenderOptionsComponent, SmartStaffOffenderOptionsResolverService, AccessType, SmartAuthorizationGuard } from './public-api';
|
|
10
|
-
export { SmartAccessControlDirective as ɵe } from './lib/smart-auth/smart-access-control.directive';
|
|
11
|
-
export { SmartNavbarComponent as ɵc } from './lib/smart-navbar/smart-navbar.component';
|
|
12
|
-
export { SmartOffenderHeaderComponent as ɵa } from './lib/smart-offender-header/smart-offender-header.component';
|
|
13
|
-
export { SmartOffenderHeaderService as ɵb } from './lib/smart-offender-header/smart-offender-header.service';
|
|
14
|
-
export { SmartStaffOffenderOptionsService as ɵd } from './lib/smart-staff-offender-options/smart-staff-offender-options.service';
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NtYXJ0LW5nYy1zbWFydC1jb3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImNzbWFydC1uZ2Mtc21hcnQtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLCtjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyw0QkFBNEIsSUFBSSxFQUFFLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUMvRyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDM0csT0FBTyxFQUFDLGdDQUFnQyxJQUFJLEVBQUUsRUFBQyxNQUFNLHlFQUF5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge1NtYXJ0QWNjZXNzQ29udHJvbERpcmVjdGl2ZSBhcyDJtWV9IGZyb20gJy4vbGliL3NtYXJ0LWF1dGgvc21hcnQtYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlJztcbmV4cG9ydCB7U21hcnROYXZiYXJDb21wb25lbnQgYXMgybVjfSBmcm9tICcuL2xpYi9zbWFydC1uYXZiYXIvc21hcnQtbmF2YmFyLmNvbXBvbmVudCc7XG5leHBvcnQge1NtYXJ0T2ZmZW5kZXJIZWFkZXJDb21wb25lbnQgYXMgybVhfSBmcm9tICcuL2xpYi9zbWFydC1vZmZlbmRlci1oZWFkZXIvc21hcnQtb2ZmZW5kZXItaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQge1NtYXJ0T2ZmZW5kZXJIZWFkZXJTZXJ2aWNlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc21hcnQtb2ZmZW5kZXItaGVhZGVyL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5zZXJ2aWNlJztcbmV4cG9ydCB7U21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1NlcnZpY2UgYXMgybVkfSBmcm9tICcuL2xpYi9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMuc2VydmljZSc7Il19
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/ngc-smart-core.module.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { NgModule } from '@angular/core';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
import { MatButtonModule, MatMenuModule, MatTabsModule, MatSelectModule, MatCheckboxModule, MatCardModule, MatSnackBar, } from '@angular/material';
|
|
9
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
10
|
-
import { SmartOffenderHeaderComponent } from './smart-offender-header/smart-offender-header.component';
|
|
11
|
-
import { SmartNavbarComponent } from './smart-navbar/smart-navbar.component';
|
|
12
|
-
import { SmartNavbarService } from './smart-navbar/smart-navbar.service';
|
|
13
|
-
import { SmartErrorComponent } from './smart-auth/smart-error.component';
|
|
14
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
15
|
-
import { SmartOffenderHeaderService } from './smart-offender-header/smart-offender-header.service';
|
|
16
|
-
import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';
|
|
17
|
-
// import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';
|
|
18
|
-
import { SmartStaffOffenderOptionsService } from './smart-staff-offender-options/smart-staff-offender-options.service';
|
|
19
|
-
import { SmartAccessControlDirective } from './smart-auth/smart-access-control.directive';
|
|
20
|
-
import { SmartAuthorizationGuard } from './smart-auth/smart-authorization-guard.service';
|
|
21
|
-
export class NgcSmartCoreModule {
|
|
22
|
-
}
|
|
23
|
-
NgcSmartCoreModule.decorators = [
|
|
24
|
-
{ type: NgModule, args: [{
|
|
25
|
-
declarations: [
|
|
26
|
-
SmartOffenderHeaderComponent,
|
|
27
|
-
SmartNavbarComponent,
|
|
28
|
-
SmartErrorComponent,
|
|
29
|
-
SmartStaffOffenderOptionsComponent,
|
|
30
|
-
SmartAccessControlDirective,
|
|
31
|
-
],
|
|
32
|
-
imports: [
|
|
33
|
-
CommonModule,
|
|
34
|
-
HttpClientModule,
|
|
35
|
-
MatButtonModule,
|
|
36
|
-
MatMenuModule,
|
|
37
|
-
MatTabsModule,
|
|
38
|
-
MatSelectModule,
|
|
39
|
-
MatCardModule,
|
|
40
|
-
MatCheckboxModule,
|
|
41
|
-
ReactiveFormsModule,
|
|
42
|
-
],
|
|
43
|
-
exports: [
|
|
44
|
-
SmartOffenderHeaderComponent,
|
|
45
|
-
SmartNavbarComponent,
|
|
46
|
-
SmartErrorComponent,
|
|
47
|
-
SmartStaffOffenderOptionsComponent,
|
|
48
|
-
SmartAccessControlDirective,
|
|
49
|
-
],
|
|
50
|
-
providers: [
|
|
51
|
-
SmartNavbarService,
|
|
52
|
-
SmartOffenderHeaderService,
|
|
53
|
-
SmartStaffOffenderOptionsService,
|
|
54
|
-
SmartAuthorizationGuard,
|
|
55
|
-
MatSnackBar,
|
|
56
|
-
],
|
|
57
|
-
},] }
|
|
58
|
-
];
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdjLXNtYXJ0LWNvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9uZ2Mtc21hcnQtY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2IsZUFBZSxFQUdmLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxHQUNaLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbkcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7O0FBRTNILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBb0N6RixNQUFNLE9BQU8sa0JBQWtCOzs7WUFsQzlCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osNEJBQTRCO29CQUM1QixvQkFBb0I7b0JBQ3BCLG1CQUFtQjtvQkFDbkIsa0NBQWtDO29CQUNsQywyQkFBMkI7aUJBQzVCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixhQUFhO29CQUNiLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixhQUFhO29CQUNiLGlCQUFpQjtvQkFDakIsbUJBQW1CO2lCQUNwQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsNEJBQTRCO29CQUM1QixvQkFBb0I7b0JBQ3BCLG1CQUFtQjtvQkFDbkIsa0NBQWtDO29CQUNsQywyQkFBMkI7aUJBQzVCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxrQkFBa0I7b0JBQ2xCLDBCQUEwQjtvQkFDMUIsZ0NBQWdDO29CQUNoQyx1QkFBdUI7b0JBQ3ZCLFdBQVc7aUJBQ1o7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gIE1hdE1lbnVNb2R1bGUsXHJcbiAgTWF0VGFic01vZHVsZSxcclxuICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgTWF0Q2FyZCxcclxuICBNYXRDaGVja2JveCxcclxuICBNYXRDaGVja2JveE1vZHVsZSxcclxuICBNYXRDYXJkTW9kdWxlLFxyXG4gIE1hdFNuYWNrQmFyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU21hcnRPZmZlbmRlckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtb2ZmZW5kZXItaGVhZGVyL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0RXJyb3JDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LWF1dGgvc21hcnQtZXJyb3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU21hcnRPZmZlbmRlckhlYWRlclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci9zbWFydC1vZmZlbmRlci1oZWFkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0U3RhZmZPZmZlbmRlck9wdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMvc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBTbWFydFN0YWZmT2ZmZW5kZXJPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1zdGFmZi1vZmZlbmRlci1vcHRpb25zL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXN0YWZmLW9mZmVuZGVyLW9wdGlvbnMvc21hcnQtc3RhZmYtb2ZmZW5kZXItb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRBY2Nlc3NDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9zbWFydC1hdXRoL3NtYXJ0LWFjY2Vzcy1jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNtYXJ0QXV0aG9yaXphdGlvbkd1YXJkIH0gZnJvbSAnLi9zbWFydC1hdXRoL3NtYXJ0LWF1dGhvcml6YXRpb24tZ3VhcmQuc2VydmljZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgU21hcnRPZmZlbmRlckhlYWRlckNvbXBvbmVudCxcclxuICAgIFNtYXJ0TmF2YmFyQ29tcG9uZW50LFxyXG4gICAgU21hcnRFcnJvckNvbXBvbmVudCxcclxuICAgIFNtYXJ0U3RhZmZPZmZlbmRlck9wdGlvbnNDb21wb25lbnQsXHJcbiAgICBTbWFydEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdFRhYnNNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRDYXJkTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgU21hcnRPZmZlbmRlckhlYWRlckNvbXBvbmVudCxcclxuICAgIFNtYXJ0TmF2YmFyQ29tcG9uZW50LFxyXG4gICAgU21hcnRFcnJvckNvbXBvbmVudCxcclxuICAgIFNtYXJ0U3RhZmZPZmZlbmRlck9wdGlvbnNDb21wb25lbnQsXHJcbiAgICBTbWFydEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFNtYXJ0TmF2YmFyU2VydmljZSxcclxuICAgIFNtYXJ0T2ZmZW5kZXJIZWFkZXJTZXJ2aWNlLFxyXG4gICAgU21hcnRTdGFmZk9mZmVuZGVyT3B0aW9uc1NlcnZpY2UsXHJcbiAgICBTbWFydEF1dGhvcml6YXRpb25HdWFyZCxcclxuICAgIE1hdFNuYWNrQmFyLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ2NTbWFydENvcmVNb2R1bGUge31cclxuIl19
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/smart-auth/smart-access-control-config.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function SmartAccessControlConfig() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
SmartAccessControlConfig.prototype.appModuleId;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
SmartAccessControlConfig.prototype.route;
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
SmartAccessControlConfig.prototype.accessType;
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
SmartAccessControlConfig.prototype.roleId;
|
|
19
|
-
}
|
|
20
|
-
/** @enum {string} */
|
|
21
|
-
const AccessType = {
|
|
22
|
-
READ: "read",
|
|
23
|
-
CREATE: "create",
|
|
24
|
-
UPDATE: "update",
|
|
25
|
-
DELETE: "delete",
|
|
26
|
-
EXPUNGE: "expunge",
|
|
27
|
-
ASSIGN: "assign",
|
|
28
|
-
REOPEN: "reopen",
|
|
29
|
-
CLOSE: "close",
|
|
30
|
-
};
|
|
31
|
-
export { AccessType };
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYWNjZXNzLWNvbnRyb2wtY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1hdXRoL3NtYXJ0LWFjY2Vzcy1jb250cm9sLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLDhDQUtDOzs7SUFKQywrQ0FBb0I7O0lBQ3BCLHlDQUE4Qjs7SUFDOUIsOENBQXVCOztJQUN2QiwwQ0FBZTs7O0FBR2pCLE1BQVksVUFBVTtJQUNwQixJQUFJLFFBQVM7SUFDYixNQUFNLFVBQVc7SUFDakIsTUFBTSxVQUFXO0lBQ2pCLE1BQU0sVUFBVztJQUNqQixPQUFPLFdBQVk7SUFDbkIsTUFBTSxVQUFXO0lBQ2pCLE1BQU0sVUFBVztJQUNqQixLQUFLLFNBQVU7RUFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnIHtcclxuICBhcHBNb2R1bGVJZDogc3RyaW5nO1xyXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xyXG4gIGFjY2Vzc1R5cGU6IEFjY2Vzc1R5cGU7XHJcbiAgcm9sZUlkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEFjY2Vzc1R5cGUge1xyXG4gIFJFQUQgPSAncmVhZCcsXHJcbiAgQ1JFQVRFID0gJ2NyZWF0ZScsXHJcbiAgVVBEQVRFID0gJ3VwZGF0ZScsXHJcbiAgREVMRVRFID0gJ2RlbGV0ZScsXHJcbiAgRVhQVU5HRSA9ICdleHB1bmdlJyxcclxuICBBU1NJR04gPSAnYXNzaWduJyxcclxuICBSRU9QRU4gPSAncmVvcGVuJyxcclxuICBDTE9TRSA9ICdjbG9zZSdcclxufVxyXG4iXX0=
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/smart-auth/smart-access-control.directive.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { Directive, Input, ElementRef } from '@angular/core';
|
|
7
|
-
import { SmartAuthService } from './smart-auth.service';
|
|
8
|
-
export class SmartAccessControlDirective {
|
|
9
|
-
/**
|
|
10
|
-
* @param {?} elementRef
|
|
11
|
-
* @param {?} auth
|
|
12
|
-
*/
|
|
13
|
-
constructor(elementRef, auth) {
|
|
14
|
-
this.elementRef = elementRef;
|
|
15
|
-
this.auth = auth;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* @return {?}
|
|
19
|
-
*/
|
|
20
|
-
ngOnInit() {
|
|
21
|
-
this.checkAccess();
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @return {?}
|
|
25
|
-
*/
|
|
26
|
-
checkAccess() {
|
|
27
|
-
if (!this.accessControlConfig ||
|
|
28
|
-
!this.accessControlConfig.route ||
|
|
29
|
-
!this.accessControlConfig.route.data ||
|
|
30
|
-
!this.accessControlConfig.route.data.loginStaff ||
|
|
31
|
-
!this.accessControlConfig.route.data.selectedOffender) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
// const loginStaff = this.accessControlConfig.route.data.loginStaff;
|
|
35
|
-
// if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {
|
|
36
|
-
// return;
|
|
37
|
-
// }
|
|
38
|
-
this.elementRef.nativeElement.style.display = this.auth.checkPermission(this.accessControlConfig)
|
|
39
|
-
? 'block'
|
|
40
|
-
: 'none';
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
SmartAccessControlDirective.decorators = [
|
|
44
|
-
{ type: Directive, args: [{
|
|
45
|
-
selector: '[accessControl]',
|
|
46
|
-
},] }
|
|
47
|
-
];
|
|
48
|
-
/** @nocollapse */
|
|
49
|
-
SmartAccessControlDirective.ctorParameters = () => [
|
|
50
|
-
{ type: ElementRef },
|
|
51
|
-
{ type: SmartAuthService }
|
|
52
|
-
];
|
|
53
|
-
SmartAccessControlDirective.propDecorators = {
|
|
54
|
-
accessControlConfig: [{ type: Input }]
|
|
55
|
-
};
|
|
56
|
-
if (false) {
|
|
57
|
-
/** @type {?} */
|
|
58
|
-
SmartAccessControlDirective.prototype.accessControlConfig;
|
|
59
|
-
/**
|
|
60
|
-
* @type {?}
|
|
61
|
-
* @private
|
|
62
|
-
*/
|
|
63
|
-
SmartAccessControlDirective.prototype.elementRef;
|
|
64
|
-
/**
|
|
65
|
-
* @type {?}
|
|
66
|
-
* @private
|
|
67
|
-
*/
|
|
68
|
-
SmartAccessControlDirective.prototype.auth;
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1hdXRoL3NtYXJ0LWFjY2Vzcy1jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVF4RCxNQUFNLE9BQU8sMkJBQTJCOzs7OztJQUV0QyxZQUNVLFVBQXNCLEVBQ3RCLElBQXNCO1FBRHRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBa0I7SUFDN0IsQ0FBQzs7OztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUNFLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUN6QixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLO1lBQy9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3BDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUMvQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUNyRDtZQUNBLE9BQU87U0FDUjtRQUVELHFFQUFxRTtRQUNyRSx5RkFBeUY7UUFDekYsWUFBWTtRQUNaLElBQUk7UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUNyRSxJQUFJLENBQUMsbUJBQW1CLENBQ3pCO1lBQ0MsQ0FBQyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2IsQ0FBQzs7O1lBbENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7O1lBUmtDLFVBQVU7WUFDcEMsZ0JBQWdCOzs7a0NBU3RCLEtBQUs7Ozs7SUFBTiwwREFBdUQ7Ozs7O0lBRXJELGlEQUE4Qjs7Ozs7SUFDOUIsMkNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0QXV0aFNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LWF1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0QWNjZXNzQ29udHJvbENvbmZpZyB9IGZyb20gJy4vc21hcnQtYWNjZXNzLWNvbnRyb2wtY29uZmlnJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FjY2Vzc0NvbnRyb2xdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0QWNjZXNzQ29udHJvbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgYWNjZXNzQ29udHJvbENvbmZpZzogU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBhdXRoOiBTbWFydEF1dGhTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jaGVja0FjY2VzcygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBY2Nlc3MoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmFjY2Vzc0NvbnRyb2xDb25maWcgfHxcclxuICAgICAgIXRoaXMuYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZSB8fFxyXG4gICAgICAhdGhpcy5hY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLmRhdGEgfHxcclxuICAgICAgIXRoaXMuYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS5kYXRhLmxvZ2luU3RhZmYgfHxcclxuICAgICAgIXRoaXMuYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS5kYXRhLnNlbGVjdGVkT2ZmZW5kZXJcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc3QgbG9naW5TdGFmZiA9IHRoaXMuYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS5kYXRhLmxvZ2luU3RhZmY7XHJcbiAgICAvLyBpZiAoIXRoaXMuYXV0aC5pc0F1dGhFbmFibGUobG9naW5TdGFmZi5yb2xlcywgdGhpcy5hY2Nlc3NDb250cm9sQ29uZmlnLmFwcE1vZHVsZUlkKSkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gdGhpcy5hdXRoLmNoZWNrUGVybWlzc2lvbihcclxuICAgICAgdGhpcy5hY2Nlc3NDb250cm9sQ29uZmlnXHJcbiAgICApXHJcbiAgICAgID8gJ2Jsb2NrJ1xyXG4gICAgICA6ICdub25lJztcclxuICB9XHJcbn1cclxuIl19
|