@indigina/kendo 1.0.149-beta → 1.0.152-beta
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/bundles/indigina-kendo.umd.js +4 -2
- package/bundles/indigina-kendo.umd.js.map +1 -1
- package/bundles/indigina-kendo.umd.min.js +1 -1
- package/bundles/indigina-kendo.umd.min.js.map +1 -1
- package/esm2015/lib/components/azure-login-callback/azure-login-callback.component.js +5 -3
- package/fesm2015/indigina-kendo.js +4 -2
- package/fesm2015/indigina-kendo.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../projects/kendo/src/lib/angular/forms/directives/debounce.directive.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/kendo/src/lib/angular/forms/widgets/field/field.component.ts","../../../projects/kendo/src/lib/angular/forms/widgets/field/field-input/field-input.component.ts","../../../projects/kendo/src/lib/angular/forms/widgets/field/field-input/number-input.component.ts","../../../projects/kendo/src/lib/angular/forms/widgets/general-errors/general-errors.component.ts","../../../projects/kendo/src/lib/angular/models/AppSettings.ts","../../../projects/kendo/src/lib/angular/models/IndiginaConfiguration.ts","../../../projects/kendo/src/lib/angular/services/locale-settings.service.ts","../../../projects/kendo/src/lib/angular/widgets/side-menu/menu-item-group/menu-item-group.component.ts","../../../projects/kendo/src/lib/angular/widgets/side-menu/side-menu.component.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/models/TreeViewPropTypes.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/models/TreeViewNodeTypes.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/tree-view-node-prop/tree-view-node-prop.component.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/models/ContentTypesFormat.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/tree-view-node/tree-view-node.component.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/AbstractContentResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/EnumTypeGetter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/JsonConverter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Resolvers/JsonResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/TextConverter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Resolvers/TextResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/XmlConverter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Resolvers/XmlResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/ContentResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/tree-view.component.ts","../../../projects/kendo/src/lib/angular/indigina.module.ts","../../../projects/kendo/src/lib/services/signalr/EventNames.ts","../../../projects/kendo/src/lib/services/endpoints.ts","../../../projects/kendo/src/lib/services/base.account.service.ts","../../../projects/kendo/src/lib/angular/models/HttpCodes.ts","../../../projects/kendo/src/lib/angular/extensions/ReEntrySubscription.ts","../../../projects/kendo/src/lib/angular/forms/extensions/FormGroupWithErrors.ts","../../../projects/kendo/src/lib/angular/services/settings.service.ts","../../../projects/kendo/src/lib/angular/services/toastr.service.ts","../../../projects/kendo/src/lib/angular/services/http.service.ts","../../../projects/kendo/src/lib/models/AuthProviders.ts","../../../projects/kendo/src/lib/angular/widgets/live-updates-control/live-updates-control.component.ts","../../../projects/kendo/src/lib/services/auth.providers/AuthProvider.ts","../../../projects/kendo/src/lib/services/auth.providers/azureb2c.provider.ts","../../../projects/kendo/src/lib/services/auth.providers/oauth.provider.ts","../../../projects/kendo/src/lib/services/auth-provider.resolver.ts","../../../projects/kendo/src/lib/services/signalr/signalr.service.ts","../../../projects/kendo/src/lib/services/account.service.ts","../../../projects/kendo/src/lib/components/account-menu/account-menu.component.ts","../../../projects/kendo/src/lib/components/azure-login-callback/azure-login-callback.component.ts","../../../projects/kendo/src/lib/components/language-selector/language-selector.component.ts","../../../projects/kendo/src/lib/config/msal-instance.factory.ts","../../../projects/kendo/src/lib/services/permissions.service.ts","../../../projects/kendo/src/lib/directives/requirePermission.directive.ts","../../../projects/kendo/src/lib/interceptors/auth-headers.interceptor.ts","../../../projects/kendo/src/lib/models/FieldTypes.ts","../../../projects/kendo/src/lib/widgets/activity-filter/activity-filter.component.ts","../../../projects/kendo/src/lib/widgets/confirm-dialog/confirm-dialog.component.ts","../../../projects/kendo/src/lib/widgets/current-timezone/current-timezone.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/buttons-bar/buttons-bar.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/entity-edit-form.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/field-dropdown/field-dropdown.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/field-multiselect/field-multiselect.component.ts","../../../projects/kendo/src/lib/widgets/entity-list/UrlSerializer.ts","../../../projects/kendo/src/lib/widgets/entity-list/entity-list.component.ts","../../../projects/kendo/src/lib/widgets/entity-list/field-dropdownlist/field-dropdownlist.component.ts","../../../projects/kendo/src/lib/widgets/excel-export-button/excel-export-button.component.ts","../../../projects/kendo/src/lib/widgets/footer-bar/footer-bar.component.ts","../../../projects/kendo/src/lib/widgets/modal-window/modal-window.component.ts","../../../projects/kendo/src/lib/widgets/multicheck-filter/multicheck-filter.component.ts","../../../projects/kendo/src/lib/widgets/top-bar/top-bar.component.ts","../../../projects/kendo/src/lib/models/FilterTargets.ts","../../../projects/kendo/src/lib/models/MemberTypes.ts","../../../projects/kendo/src/lib/models/Operators.ts","../../../projects/kendo/src/lib/models/PermissionTypes.ts","../../../projects/kendo/src/lib/kendo.module.ts","../../../projects/kendo/src/lib/widgets/activity-filter/FilterConverter.ts","../../../projects/kendo/src/lib/services/activity.filter.service.ts","../../../projects/kendo/src/lib/services/entity.service.ts","../../../projects/kendo/src/lib/widgets/entity-edit/entity-edit.component.ts","../../../projects/kendo/src/public-api.ts","../../../projects/kendo/src/lib/angular/models/HttpMethods.ts"],"names":["DebounceDirective","this","debounceTime","debounceKeyup","EventEmitter","keyUp","Subject","prototype","ngOnInit","_this","subscription","pipe","subscribe","e","emit","ngOnDestroy","unsubscribe","keyUpEvent","event","preventDefault","stopPropagation","next","Directive","args","selector","Input","Output","HostListener","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","id","FieldComponent","parent","eref","defaultValue","disabled","disabledKey","setUp","fieldName","validators","_b","nativeElement","attributes","_c","attr","validator","setAttribute","name","control","form","get","setValidators","updateValueAndValidity","addControl","FormControl","Validators","required","FormGroupDirective","ElementRef","FieldInputComponent","_super","type","maxLength","parseInt","Component","template","viewProviders","provide","ControlContainer","useExisting","NumberInputComponent","isPositive","ngAfterContentInit","valueChanges","cachedValue","setValue","GeneralErrorsComponent","errors","setErrors","_general_errors_","Injectable","providedIn","languageKey","LocaleSettingsService","translate","languages","code","init","addLangs","map","x","localeId","getLocale","setLocale","getLocales","localStorage","getItem","locale","use","setItem","TranslateService","MenuItemGroupComponent","router","collapsed","isActive","url","exact","_a","routerState","snapshot","root","children","toString","routeConfig","path","split","setActualPath","events","NavigationEnd","ngOnChanges","setItemExpand","collapseChild","activeItem","item","expanded","text","items","some","undefined","link","actualPath","Router","TreeViewPropTypes","SideMenuComponent","logoClick","onLogoClick","collapse","itemComponent","forEach","TreeViewNodeTypes","TreeViewNodePropComponent","defineProperty","isArrayValue","isObjectValue","prop","propType","Number","expandAll","treeViewNodes","collapseAll","ViewChildren","ContentTypesFormat","TreeViewNodeComponent","node","nodeType","Primitive","props","startTag","hasExpand","toggleExpand","treeViewProps","AbstractContentResolver","resolver","nextResolver","data","getPropTypeFromKey","key","values","find","objectBrackets","inside","outside","arrayBrackets","JsonConverter","convert","source","isArray","convertArray","convertObject","keys","propType_1","brackets","nodes","index","getPrimitive","assign","JsonResolver","json","JSON","parse","format","Json","TextConverter","TextResolver","Text","XmlConverter","childElementCount","childNodes","convertProp","tagName","textContent","endTag","childs","childs_1","childs_1_1","XmlResolver","oDOM","DOMParser","parseFromString","all","getElementsByTagName","Xml","ContentResolver","chain","TreeViewComponent","clipboardService","maxTextLength","maxRootItems","resolved","hasTextCollapse","hasNodeCollapse","rawView","contentResolver","allShow","hasCollapse","expandToggle","toggleExpandAll","toggleRawView","copyToClipboard","copy","ClipboardService","defaultConfig","langs","getTranslation","of","appSettings","accountUrl","apiUrl","toastrTimeOut","oidc","clientId","authority","issuer","azureB2C","knownAuthorities","IndiginaModule","forRoot","configuration","ngModule","providers","APP_INITIALIZER","useFactory","LocaleServiceSettingsFactory","multi","deps","IndiginaConfiguration","useValue","localeService","TranslateLoaderFactory","AppSettingsFactory","NgModule","declarations","imports","BrowserModule","HttpClientModule","TranslateModule","forChild","loader","TranslateLoader","HttpClient","LoadingBarHttpClientModule","CommonModule","RouterModule","ReactiveFormsModule","ToastrModule","BrowserAnimationsModule","ɵ0$3","AppSettings","TranslateStore","exports","ClipboardModule","EventNames","endpoints","signalr","eventsHub","config","members","me","admins","buildEntityEndpoints","roles","system","info","firstUser","partners","permissions","member","mine","users","apiTokens","guidFormat","query","state","toODataString","utcDates","replace","entityPath","HttpCodes","adminUriPart","BaseAccountService","httpService","settingsService","signalRService","user","BehaviorSubject","getProvider","provider","initialize","login","logout","clearLoginAsUser","getCurrentUser","getCallbackPath","clearCallbackPath","window","location","href","origin","isAdmin","pathname","startsWith","getAccessToken","token","startConnection","on","UserUpdated","reconnect","mergeMap","getValue","isUserLoggedIn","ReEntrySubscription","observable","action","closed","resume","pause","FormGroupWithErrors","controls","validatorOrOpts","asyncValidator","generalErrors","getControl","contains","applyServerErrors","title","ctrl","serverErrorMsg","join","FormGroup","callbackPathKey","loginAsKey","tokenKey","SettingsService","putCurrentCallbackPath","putCallbackPath","hash","pathUri","removeItem","setLoginAsUser","getLoginAsUser","setToken","getToken","AppToastrService","toastr","timeout","showError","message","timeOut","showSuccess","success","ToastrService","absoluteUrlRegExp","HttpService","appToastrService","httpClient","createUrl","catchError","err","handleServerError","delete","tap","showSuccessMessage","post","successTranslateMessage","put","test","ErrorEvent","status","Unauthorized","instant","Forbidden","navigate","NotFound","setTimeout","InternalServerError","throwError","AuthProviders","LiveUpdatesControlComponent","toggle","connected","AzureB2CProvider","authService","instance","getActiveAccount","localAccountId","loginRedirect","logoutRedirect","postLogoutRedirectUri","request","scopes","from","acquireTokenSilent","authenticationResult","idToken","catch","InteractionRequiredAuthError","acquireTokenRedirect","AuthProvider","OAuthProvider","oauthService","hasValidAccessToken","authConfig","redirectUri","scope","silentRefreshRedirectUri","configure","initLoginFlow","logOut","tokenValidationHandler","JwksValidationHandler","setupAutomaticSilentRefresh","loadDiscoveryDocument","tryLoginImplicitFlow","msalService","indiginaConfiguration","AuthProvider$","filter","identityProvider","IdentityServer","OAuthService","MsalService","SignalRService","isConnectionEstablished","eventEmitters","createConnection","hubConnection","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","configureLogging","signalRLogLevel","LogLevel","None","build","onclose","start","eventName","model","console","warn","stop","AccountService","AuthProviderResolver","AccountMenuComponent","accountService","expand","languageSelectorVisible","firstName","lastName","toogle","openLanguageSelector","clickedOutside","target","ViewChild","AzureLoginCallbackComponent","handleRedirectObservable","setActiveAccount","account","LanguageSelectorComponent","settings","visibleChange","currentLanguageCode","changeLanguage","close","visible","isIE","navigator","userAgent","indexOf","MSALInstanceFactory","msalConfig","auth","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","SessionStorage","storeAuthStateInCookie","loggerOptions","loggerCallback","piiLoggingEnabled","PublicClientApplication","PermissionsService","loaded","PermissionsUpdated","getPermissionsFromServer","getAll","memberType","getMine","hiddenClass","RequirePermissionDirective","elementRef","route","permissionsService","renderer","hide","category","permissionCategory","getRouteCategory","hasType","show","addClass","removeClass","types","permissionType","includes","routeData","permission","ActivatedRoute","Renderer2","FieldTypes","AuthHeadersInterceptor","intercept","headers","modified","clone","setHeaders","Authorization","handle","ActivityFilterComponent","showArchiveSwitcher","showSearhText","defaultNamedModel","customFilterElements","element","valueField","filterService","filter$","changeFilter","setTodayFilter","setToday","clearFilter","reset","emitChangeEvents","applyFilter","setCustomFilters","fieldChange","change","fillFilter","customFilters","field","filterTarget","findIndex","splice","fixMultiselectFilters","multiSelectFilters","fieldType","Multiselect","ConfirmDialogComponent","dialogService","cancel","dialog","callback","confirm","open","content","actions","dialogActions","DialogService","static","moment","momentModule","CurrentTimezoneComponent","timeZone","tz","guess","timeZoneAndOffset","save","EntityEditFormComponent","saveInProgress","params","formGroup","adapter","getService","setForm","finalize","onSaved","FieldDropdownComponent","getData","service","getPage","FieldMultiSelectComponent","urlSerialize","object","serialized","serializedObject","isEmptyObject","stringify","slice","isDate","date","isNaN","Date","urlDeserialize","deserialized","param","gridFilter","transformFilters","filters","filterDescriptor","compositeFilterDescriptor","nameField","EntityListComponent","filterChange","gridState","loadings","selected","gridFields","defaultFields","sortable","position","getAllData","bind","getRowClass","changes","firstChange","getFilteredData","fields","sort","left","right","commands","fragment","restoreGridState","URLSearchParams","firstChild","removeHandler","dataItem","remove","selectItem","relativeTo","onActivate","child","saved","updateGrid","onDeactivate","dataStateChange","skip","onSearch","searchTerm","take","context","rowClass","getFilter","exists","page","total","preserveFragment","entity","logic","operator","onFilterChange","defaultGridState","defaultSort","dir","FieldDropdownlistComponent","valueChange","defaultItem","onLangChange","initialSelectedId","selectedItem","kendoDropDown","writeValue","onValueChange","initSelectedId","ModalWindowComponent","opened","callbackPath","MulticheckFilterComponent","showFilter","ngAfterViewInit","currentData","traverseFilters","currentFilter","innerFilter","isItemSelected","ValueKey","onSelectionChange","selectedValue","onInput","distinct","val","filterBy","TopMenuComponent","toggleButtonClick","document","classList","FilterTargets","MemberTypes","Operators","PermissionTypes","KendoModule","OAuthModuleConfig","resourceServer","allowedUrls","sendAccessToken","MSAL_INSTANCE","FooterBarComponent","EntityEditButtonsBarComponent","ExcelExportButtonComponent","OAuthModule","PopupModule","GridModule","ExcelModule","InputsModule","ButtonsModule","DialogsModule","FormsModule","WindowModule","DropDownsModule","TooltipModule","DateInputsModule","MsalModule","OAuthStorage","ɵ0","HTTP_INTERCEPTORS","useClass","FilterConverter","toGridState","DateFilterFieldName","mainFilter","group","dateFrom","gte","dateTo","lte","Grid","multiselectFilter_1","filterKey","ActivityFilterService","defaultFilter","switchToArchive","searchText","DateFilterStartFieldName","filterBehavior","gridStateBehavior","asObservable","gridState$","parsed","currentGridState","fillCurrentFilter","setTodayDates","setFilter","stateNavigation","prepareFilterToSerialize","setGridState","now","getFullYear","getMonth","getDate","Url","fillFromDescriptor","fillUrlFilter","eq","setFieldFilter","EntityService","EntityEditComponent","momentTimezone","search","uri","detailedActivity","partnerId"],"mappings":"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","sourcesContent":["import {\n Directive,\n HostListener,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n Input\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[appDebounce]'\n})\nexport class DebounceDirective implements OnInit, OnDestroy {\n @Input() debounceTime = 500;\n @Output() debounceKeyup = new EventEmitter();\n private keyUp = new Subject();\n private subscription: Subscription;\n\n constructor() { }\n\n ngOnInit() {\n this.subscription = this.keyUp.pipe(\n debounceTime(this.debounceTime)\n ).subscribe(e => this.debounceKeyup.emit(e));\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n @HostListener('keyup', ['$event'])\n\n keyUpEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n this.keyUp.next(event);\n }\n}\n","/*! *****************************************************************************\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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 { OnInit, Input, ElementRef, Directive } from '@angular/core';\nimport {\n FormGroupDirective,\n FormControl,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nlet id: number = 0;\n\n@Directive()\nexport abstract class FieldComponent<T> implements OnInit {\n @Input() labelKey: string;\n @Input() fieldName: string;\n @Input() disabled: boolean = false;\n \n public disabledKey = 'disabled';\n public id: string;\n\n constructor(\n public parent: FormGroupDirective,\n public eref: ElementRef,\n private defaultValue: T\n ) {}\n\n ngOnInit(): void {\n this.setUp();\n }\n\n protected setUp(): void {\n this.id = '_' + this.fieldName + ++id;\n const validators: ValidatorFn[] = [];\n for (const attr of this.eref.nativeElement.attributes as [\n { name: string; value: string }\n ]) {\n const validator = this.setAttribute(attr.name, attr.value);\n if (validator) {\n validators.push(validator);\n }\n }\n\n const control = this.parent.form.get(this.fieldName);\n if (control) {\n if (control.validator) {\n validators.push(control.validator);\n }\n\n control.setValidators(validators);\n control.updateValueAndValidity();\n } else {\n this.parent.form.addControl(\n this.fieldName,\n new FormControl(this.defaultValue, validators)\n );\n }\n }\n\n protected setAttribute(name: string, value: string): ValidatorFn {\n if (name === this.disabledKey) {\n this.disabled = true;\n\n return;\n }\n\n if (name === 'required') {\n return Validators.required;\n }\n }\n}\n","import { Component, ElementRef, Input } from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n Validators,\n ValidatorFn,\n} from '@angular/forms';\nimport { FieldComponent } from '../field.component';\n\n@Component({\n selector: 'field-input',\n templateUrl: './field-input.component.html',\n styleUrls: ['./field-input.component.css'],\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class FieldInputComponent extends FieldComponent<string> {\n @Input()\n public labelKey: string;\n @Input()\n public fieldName: string;\n\n public type = 'text';\n\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref, '');\n }\n\n protected setAttribute(name: string, value: string): ValidatorFn {\n if (name === 'type') {\n this.type = value;\n }\n\n if (name === 'max-length') {\n return Validators.maxLength(parseInt(value, 10));\n }\n\n return super.setAttribute(name, value);\n }\n}\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { FieldInputComponent } from './field-input.component';\n\nconst emptyString = '';\n\n@Component({\n selector: 'number-input',\n templateUrl: './field-input.component.html',\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class NumberInputComponent extends FieldInputComponent {\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref);\n this.type = 'number';\n }\n\n @Input() isPositive: boolean = false;\n\n private cachedValue: number | string;\n\n ngAfterContentInit() {\n const control = this.parent.form.get(this.fieldName);\n control.valueChanges.subscribe((value) => {\n if (value !== this.cachedValue) {\n this.cachedValue =\n (!this.isPositive && (value || value === 0)) ||\n (this.isPositive && value >= 0 && value !== emptyString)\n ? +value\n : emptyString;\n\n control.setValue(this.cachedValue);\n }\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-general-errors',\n templateUrl: './general-errors.component.html',\n styleUrls: ['./general-errors.component.css']\n})\nexport class GeneralErrorsComponent {\n\n @Input() form: FormGroup;\n errors: string[] = [];\n constructor() { }\n\n setErrors(errors: string[]): void {\n this.errors = errors;\n if (errors.length) {\n this.form.setErrors({'_general_errors_': errors });\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { LogLevel } from '@microsoft/signalr';\nimport { AzureB2CSettings } from '../../models/AzureB2CSettings';\nimport { OidcSettings } from '../../models/OidcSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class AppSettings {\n apiUrl: string;\n accountUrl: string;\n toastrTimeOut: number;\n signalRLogLevel?: LogLevel;\n oidc: OidcSettings;\n azureB2C: AzureB2CSettings;\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { AppSettings } from './AppSettings';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class IndiginaConfiguration {\n langs?: TranslateLoader;\n appSettings?: AppSettings;\n}\n","import { Injectable } from '@angular/core';\nimport { Language } from '../models/Language';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst languageKey = 'language';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocaleSettingsService {\n private languages: Language[] = [\n { name: 'English', code: 'en-US' },\n { name: 'Русский', code: 'ru-RU' },\n ];\n private localeId: string;\n\n constructor(private translate: TranslateService) {}\n\n init(): void {\n this.translate.addLangs(this.languages.map((x) => x.code));\n this.localeId = this.getLocale();\n this.setLocale(this.localeId || this.languages[0].code);\n }\n\n getLocales(): Language[] {\n return this.languages;\n }\n\n getLocale(): string {\n if (localStorage) {\n return localStorage.getItem(languageKey) || this.localeId;\n } else {\n return this.localeId;\n }\n }\n\n setLocale(locale: string) {\n this.translate.use(locale);\n this.localeId = locale;\n if (localStorage) {\n localStorage.setItem(languageKey, locale);\n }\n }\n}\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { MenuItem } from '../MenuItem';\nimport {\n Router,\n NavigationEnd,\n RouterStateSnapshot,\n UrlTree,\n} from '@angular/router';\n\nconst urlDelimiter = '/';\nconst collapsedEvent = 'collapsed';\n\n@Component({\n selector: '[menu-item-group]',\n templateUrl: './menu-item-group.component.html',\n styleUrls: ['./menu-item-group.component.css'],\n})\nexport class MenuItemGroupComponent implements OnChanges, OnInit {\n @Input() item: MenuItem;\n collapsed: boolean = false;\n private actualPath: string;\n\n constructor(private router: Router) {\n this.router.isActive = function (\n url: string | UrlTree,\n exact: boolean\n ): boolean {\n return this.routerState.snapshot.root.children?.length\n ? url.toString() ===\n urlDelimiter +\n this.routerState.snapshot.root.children[0].routeConfig.path.split(\n '/:'\n )[0]\n : false;\n };\n }\n\n ngOnInit(): void {\n this.setActualPath(this.router.routerState.snapshot);\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.setActualPath(this.router.routerState.snapshot);\n }\n });\n }\n\n ngOnChanges(): void {\n this.setItemExpand();\n }\n\n collapseChild(activeItem: MenuItem, event: MouseEvent) {\n this.item.expanded =\n this.item.text === activeItem.text &&\n !this.item.expanded &&\n !!this.item.items;\n\n if (!activeItem.items || activeItem.items.length === 0) {\n event[collapsedEvent] = true;\n } else {\n event[collapsedEvent] = false;\n }\n }\n\n private setItemExpand() {\n this.item.expanded = this.item.items?.some((x) => {\n return x.link !== undefined && x.link === this.actualPath;\n });\n }\n\n private setActualPath(snapshot: RouterStateSnapshot): void {\n if (snapshot.root.children?.length) {\n this.actualPath =\n urlDelimiter +\n snapshot.root.children[0].routeConfig.path.split('/:')[0];\n this.setItemExpand();\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MenuItemGroupComponent } from './menu-item-group/menu-item-group.component';\nimport { MenuItem } from './MenuItem';\n\nconst collapsedEvent = 'collapsed';\n@Component({\n selector: 'side-menu',\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.css'],\n})\nexport class SideMenuComponent {\n @Input() items: MenuItem[];\n @Output() logoClick = new EventEmitter();\n\n onLogoClick() {\n this.logoClick.emit();\n }\n\n collapse(\n itemComponent: MenuItemGroupComponent,\n activeItem: MenuItem,\n event: MouseEvent\n ) {\n this.items?.forEach((item) => {\n if (item.text !== activeItem.text && item.expanded) {\n item.expanded = false;\n }\n });\n if (event[collapsedEvent]) {\n itemComponent.collapsed = true;\n } else {\n itemComponent.collapsed = false;\n }\n }\n}\n","export enum TreeViewPropTypes {\n String = 'string',\n Number = 'number',\n Object = 'object',\n Array = 'array',\n}\n","export enum TreeViewNodeTypes {\n Object = 'object',\n Array = 'array',\n Primitive = 'primitive',\n}\n","import { Component, Input, QueryList, ViewChildren } from '@angular/core';\nimport { TreeViewProp } from '../models/TreeViewProp';\nimport { TreeViewPropTypes } from '../models/TreeViewPropTypes';\nimport { TreeViewNodeComponent } from '../tree-view-node/tree-view-node.component';\n\n@Component({\n selector: 'tree-view-node-prop',\n templateUrl: './tree-view-node-prop.component.html',\n styleUrls: ['./tree-view-node-prop.component.css'],\n})\nexport class TreeViewNodePropComponent {\n @ViewChildren('node') treeViewNodes: QueryList<TreeViewNodeComponent>;\n\n @Input() prop: TreeViewProp;\n\n public get isSimpleValue(): boolean {\n return !this.isArrayValue && !this.isObjectValue;\n }\n\n public get isArrayValue(): boolean {\n return this.prop.propType === TreeViewPropTypes.Array;\n }\n\n public get isObjectValue(): boolean {\n return this.prop.propType === TreeViewPropTypes.Object;\n }\n\n public get propClass(): string {\n return this.prop.propType === TreeViewPropTypes.Number\n ? 'number'\n : 'string';\n }\n\n public expandAll(): void {\n this.treeViewNodes.forEach((x) => x.expandAll());\n }\n\n public collapseAll(): void {\n this.treeViewNodes.forEach((x) => x.collapseAll());\n }\n}\n","export enum ContentTypesFormat {\n Json = 'json',\n Xml = 'xml',\n Text = 'text',\n}\n","import {\n Component,\n Input,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { TreeViewNode } from '../models/TreeViewNode';\nimport { TreeViewNodeTypes } from '../models/TreeViewNodeTypes';\nimport { TreeViewNodePropComponent } from '../tree-view-node-prop/tree-view-node-prop.component';\n\n@Component({\n selector: 'tree-view-node',\n templateUrl: './tree-view-node.component.html',\n styleUrls: ['./tree-view-node.component.css'],\n})\nexport class TreeViewNodeComponent implements OnInit {\n @ViewChildren('prop') treeViewProps: QueryList<TreeViewNodePropComponent>;\n\n @Input() node: TreeViewNode;\n @Input() hasExpand: boolean;\n\n public expanded: boolean = true;\n\n public get isObject(): boolean {\n return this.node.nodeType === TreeViewNodeTypes.Object;\n }\n\n public get isArray(): boolean {\n return this.node.nodeType === TreeViewNodeTypes.Array;\n }\n\n public get isPrimitive(): boolean {\n return this.node.nodeType === TreeViewNodeTypes.Primitive;\n }\n\n public get primitive(): { value: any; type: string; startTag: string } {\n const value = this.node.props[0].value;\n const startTag = this.node.props[0].startTag;\n const type = typeof value;\n\n return { value, type, startTag };\n }\n\n ngOnInit(): void {\n this.expanded = !this.hasExpand;\n }\n\n public toggleExpand() {\n this.expanded = !this.expanded;\n }\n\n public expandAll(): void {\n if (this.hasExpand) {\n this.expanded = true;\n }\n\n this.treeViewProps.forEach((x) => x.expandAll());\n }\n\n public collapseAll(): void {\n if (this.hasExpand) {\n this.expanded = false;\n }\n\n this.treeViewProps.forEach((x) => x.collapseAll());\n }\n}\n","import { IContentResolver } from './IContentResolver';\nimport { ResolverResult } from '../models/ResolverResult';\n\nexport abstract class AbstractContentResolver implements IContentResolver {\n private nextResolver: IContentResolver;\n\n constructor(resolver: IContentResolver) {\n this.nextResolver = resolver;\n }\n\n resolve(data: string): ResolverResult {\n if (this.nextResolver) {\n return this.nextResolver.resolve(data);\n }\n\n return null;\n }\n}\n","import { TreeViewNodeTypes } from '../../models/TreeViewNodeTypes';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\n\nexport function getPropTypeFromKey(key: string): TreeViewPropTypes {\n return (\n Object.values(TreeViewPropTypes).find((x) => x === key) ||\n TreeViewPropTypes.String\n );\n}\n\nexport function getNodeTypeFromKey(key: string): TreeViewNodeTypes {\n return (\n Object.values(TreeViewNodeTypes).find((x) => x === key) ||\n TreeViewNodeTypes.Object\n );\n}\n","import { TreeViewNode } from '../../models/TreeViewNode';\nimport { TreeViewNodeTypes } from '../../models/TreeViewNodeTypes';\nimport { TreeViewProp } from '../../models/TreeViewProp';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\nimport { getPropTypeFromKey, getNodeTypeFromKey } from './EnumTypeGetter';\n\nconst objectBrackets = { inside: '{', outside: '}' };\nconst arrayBrackets = { inside: '[', outside: ']' };\n\nexport class JsonConverter {\n public static convert(\n source: Array<object> | object\n ): Array<TreeViewNode> | TreeViewNode {\n if (Array.isArray(source)) {\n return this.convertArray(source);\n }\n\n return this.convertObject(source);\n }\n\n private static convertObject(source): TreeViewNode {\n const props: Array<TreeViewProp> = [];\n for (const name of Object.keys(source)) {\n const value = source[name];\n let propType =\n value !== null\n ? getPropTypeFromKey(typeof value)\n : TreeViewPropTypes.String;\n\n if (Array.isArray(value)) {\n const result = this.convertArray(value);\n const propType = Array.isArray(result)\n ? TreeViewPropTypes.Array\n : TreeViewPropTypes.Object;\n props.push({\n startTag: `${name}: `,\n value: result,\n propType,\n brackets: arrayBrackets,\n });\n\n continue;\n }\n\n if (propType === TreeViewPropTypes.Object) {\n props.push({\n startTag: `${name}: `,\n value: this.convertObject(value),\n propType,\n });\n\n continue;\n }\n\n props.push({\n startTag: `${name}: `,\n value,\n propType,\n });\n }\n\n return {\n props,\n nodeType: TreeViewNodeTypes.Object,\n brackets: objectBrackets,\n };\n }\n\n private static convertArray(source: Array<any>): TreeViewNode {\n const nodes: Array<TreeViewNode> = [];\n\n source.forEach((item, index) => {\n if (typeof item !== TreeViewPropTypes.Object) {\n nodes.push(this.getPrimitive(item, index));\n } else {\n const brackets = Array.isArray(item) ? arrayBrackets : objectBrackets;\n const inside = brackets.inside;\n const outside = brackets.outside;\n nodes.push({\n ...this.convertObject(item),\n nodeType: Array.isArray(item)\n ? TreeViewNodeTypes.Array\n : getNodeTypeFromKey(typeof item),\n brackets: {\n inside: `${index}: ${inside}`,\n outside,\n },\n });\n }\n });\n\n return {\n props: [\n {\n value: nodes,\n propType: TreeViewPropTypes.Array,\n },\n ],\n brackets: arrayBrackets,\n };\n }\n\n private static getPrimitive(\n source: string | number,\n index: string | number\n ): TreeViewNode {\n const propType = getPropTypeFromKey(typeof source);\n return {\n props: [\n {\n startTag: `${index}: `,\n value: source,\n propType,\n },\n ],\n nodeType: TreeViewNodeTypes.Primitive,\n };\n }\n}\n","import { ContentTypesFormat } from '../../models/ContentTypesFormat';\nimport { ResolverResult } from '../../models/ResolverResult';\nimport { AbstractContentResolver } from '../AbstractContentResolver';\nimport { JsonConverter } from '../Converters/JsonConverter';\n\nexport class JsonResolver extends AbstractContentResolver {\n public resolve(data: string): ResolverResult {\n try {\n const json = JSON.parse(data);\n\n return {\n data: JsonConverter.convert(json),\n format: ContentTypesFormat.Json,\n };\n } catch (e) {\n return super.resolve(data);\n }\n }\n}\n","import { TreeViewNode } from '../../models/TreeViewNode';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\n\nexport class TextConverter {\n public static convert(source: string): Array<TreeViewNode> | TreeViewNode {\n return {\n props: [\n {\n value: source,\n propType: TreeViewPropTypes.String,\n },\n ],\n };\n }\n}\n","import { ContentTypesFormat } from '../../models/ContentTypesFormat';\nimport { ResolverResult } from '../../models/ResolverResult';\nimport { AbstractContentResolver } from '../AbstractContentResolver';\nimport { TextConverter } from '../Converters/TextConverter';\n\nexport class TextResolver extends AbstractContentResolver {\n public resolve(data: string): ResolverResult {\n return {\n data: TextConverter.convert(data),\n format: ContentTypesFormat.Text,\n };\n }\n}\n","import { TreeViewNode } from '../../models/TreeViewNode';\nimport { TreeViewProp } from '../../models/TreeViewProp';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\nimport { getPropTypeFromKey } from './EnumTypeGetter';\n\nexport class XmlConverter {\n public static convert(source: Document): Array<TreeViewNode> | TreeViewNode {\n if (source.childElementCount > 1) {\n return this.convertObject(source.childNodes);\n }\n\n return { props: [this.convertProp(source.children[0])] };\n }\n\n private static convertProp(source: any): TreeViewProp {\n const name: string = source.tagName;\n let value: Array<TreeViewNode> | string;\n let propType: TreeViewPropTypes;\n\n if (source.childElementCount > 0) {\n value = this.convertObject(source.children);\n propType = TreeViewPropTypes.Array;\n } else {\n value = source.textContent;\n propType = getPropTypeFromKey(typeof value);\n }\n\n return {\n startTag: `<${name}>`,\n endTag: `</${name}>`,\n value,\n propType,\n };\n }\n\n private static convertObject(childs: any): Array<TreeViewNode> {\n const props = Array<TreeViewProp>();\n for (const item of childs) {\n props.push(this.convertProp(item));\n }\n\n return [\n {\n props,\n },\n ];\n }\n}\n","import { ContentTypesFormat } from '../../models/ContentTypesFormat';\nimport { ResolverResult } from '../../models/ResolverResult';\nimport { AbstractContentResolver } from '../AbstractContentResolver';\nimport { XmlConverter } from '../Converters/XmlConverter';\n\nexport class XmlResolver extends AbstractContentResolver {\n public resolve(data: string): ResolverResult {\n try {\n const oParser = new DOMParser();\n const oDOM = oParser.parseFromString(data, 'text/xml');\n\n if (\n oDOM.all.length > 0 &&\n oDOM.getElementsByTagName('parsererror').length === 0\n ) {\n return {\n data: XmlConverter.convert(oDOM),\n format: ContentTypesFormat.Xml,\n };\n }\n } catch (e) {}\n\n return super.resolve(data);\n }\n}\n","import { ResolverResult } from '../models/ResolverResult';\nimport { AbstractContentResolver } from './AbstractContentResolver';\nimport { JsonResolver } from './Resolvers/JsonResolver';\nimport { TextResolver } from './Resolvers/TextResolver';\nimport { XmlResolver } from './Resolvers/XmlResolver';\n\nexport class ContentResolver {\n private chain: AbstractContentResolver;\n\n constructor() {\n this.chain = new JsonResolver(new XmlResolver(new TextResolver(null)));\n }\n\n public resolve(data: string): ResolverResult {\n return this.chain.resolve(data);\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { ClipboardService } from 'ngx-clipboard';\nimport { ContentResolver } from './ContentResolver/ContentResolver';\nimport { ContentTypesFormat } from './models/ContentTypesFormat';\nimport { ResolverResult } from './models/ResolverResult';\nimport { TreeViewNodeComponent } from './tree-view-node/tree-view-node.component';\n\n@Component({\n selector: 'tree-view',\n templateUrl: './tree-view.component.html',\n styleUrls: ['./tree-view.component.css'],\n})\nexport class TreeViewComponent implements OnChanges {\n @ViewChildren('node') treeViewNodes: QueryList<TreeViewNodeComponent>;\n\n @Input() data: string;\n @Input() maxTextLength: number = 1200;\n @Input() maxRootItems: number = 10;\n\n public resolved: ResolverResult;\n public collapsed: boolean;\n public allShow: boolean;\n public rawView: boolean;\n public ContentTypesFormat = ContentTypesFormat;\n\n public get IsArray(): boolean {\n return this.data ? Array.isArray(this.resolved.data) : false;\n }\n\n public get hasCollapse(): boolean {\n if (!this.data) {\n return false;\n }\n\n return this.resolved.format === ContentTypesFormat.Text\n ? this.hasTextCollapse()\n : this.hasNodeCollapse();\n }\n\n public get format(): string {\n return !this.rawView ? this.resolved.format : ContentTypesFormat.Text;\n }\n\n constructor(private clipboardService: ClipboardService) {}\n\n ngOnChanges(): void {\n const contentResolver = new ContentResolver();\n this.allShow = false;\n this.rawView = false;\n this.resolved = contentResolver.resolve(this.data);\n this.collapsed = this.hasCollapse;\n }\n\n public expandToggle(): void {\n this.collapsed = !this.collapsed;\n }\n\n public toggleExpandAll() {\n if (this.allShow) {\n this.treeViewNodes.forEach((x) => x.collapseAll());\n } else {\n this.treeViewNodes.forEach((x) => x.expandAll());\n }\n\n this.collapsed = this.hasCollapse ? this.allShow : false;\n this.allShow = !this.allShow;\n }\n\n public toggleRawView() {\n this.rawView = !this.rawView;\n }\n\n public copyToClipboard() {\n this.clipboardService.copy(this.data);\n }\n\n private hasTextCollapse(): boolean {\n return this.data.length > this.maxTextLength;\n }\n\n private hasNodeCollapse(): boolean {\n if (!Array.isArray(this.resolved.data)) {\n return this.resolved.data.props.length > this.maxRootItems;\n }\n\n return false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client';\nimport {\n TranslateLoader,\n TranslateModule,\n TranslateStore,\n} from '@ngx-translate/core';\nimport { ClipboardModule } from 'ngx-clipboard';\nimport { ToastrModule } from 'ngx-toastr';\nimport { Observable, of } from 'rxjs';\nimport { DebounceDirective } from './forms/directives/debounce.directive';\nimport { FieldInputComponent } from './forms/widgets/field/field-input/field-input.component';\nimport { NumberInputComponent } from './forms/widgets/field/field-input/number-input.component';\nimport { GeneralErrorsComponent } from './forms/widgets/general-errors/general-errors.component';\nimport { AppSettings } from './models/AppSettings';\nimport { IndiginaConfiguration } from './models/IndiginaConfiguration';\nimport { LocaleSettingsService } from './services/locale-settings.service';\nimport { MenuItemGroupComponent } from './widgets/side-menu/menu-item-group/menu-item-group.component';\nimport { SideMenuComponent } from './widgets/side-menu/side-menu.component';\nimport { TreeViewNodePropComponent } from './widgets/tree-view/tree-view-node-prop/tree-view-node-prop.component';\nimport { TreeViewNodeComponent } from './widgets/tree-view/tree-view-node/tree-view-node.component';\nimport { TreeViewComponent } from './widgets/tree-view/tree-view.component';\n\nlet defaultConfig: IndiginaConfiguration = {\n langs: {\n getTranslation(): Observable<any> {\n return of({});\n },\n },\n appSettings: {\n accountUrl: '',\n apiUrl: '',\n toastrTimeOut: 2500,\n oidc: {\n clientId: '',\n authority: '',\n issuer: '',\n },\n azureB2C: {\n clientId: '',\n authority: '',\n knownAuthorities: [''],\n },\n },\n};\n\n@NgModule({\n declarations: [\n SideMenuComponent,\n MenuItemGroupComponent,\n TreeViewComponent,\n TreeViewNodeComponent,\n TreeViewNodePropComponent,\n DebounceDirective,\n GeneralErrorsComponent,\n FieldInputComponent,\n NumberInputComponent,\n ],\n imports: [\n BrowserModule,\n HttpClientModule,\n TranslateModule.forChild({\n loader: {\n provide: TranslateLoader,\n useFactory: TranslateLoaderFactory,\n deps: [IndiginaConfiguration, HttpClient],\n },\n }),\n LoadingBarHttpClientModule,\n CommonModule,\n RouterModule,\n ReactiveFormsModule,\n ToastrModule.forRoot(),\n BrowserAnimationsModule,\n ],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: LocaleServiceSettingsFactory,\n multi: true,\n deps: [LocaleSettingsService],\n },\n {\n provide: IndiginaConfiguration,\n useValue: defaultConfig,\n },\n {\n provide: AppSettings,\n useFactory: AppSettingsFactory,\n deps: [IndiginaConfiguration],\n },\n TranslateStore,\n ],\n exports: [\n SideMenuComponent,\n TreeViewComponent,\n DebounceDirective,\n GeneralErrorsComponent,\n FieldInputComponent,\n TranslateModule,\n ClipboardModule,\n LoadingBarHttpClientModule,\n ToastrModule,\n BrowserAnimationsModule,\n NumberInputComponent,\n ],\n})\nexport class IndiginaModule {\n public static forRoot(\n configuration: IndiginaConfiguration\n ): ModuleWithProviders<IndiginaModule> {\n return {\n ngModule: IndiginaModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: LocaleServiceSettingsFactory,\n multi: true,\n deps: [LocaleSettingsService],\n },\n {\n provide: IndiginaConfiguration,\n useValue: configuration ? configuration : defaultConfig,\n },\n ],\n };\n }\n}\n\nexport function LocaleServiceSettingsFactory(\n localeService: LocaleSettingsService\n) {\n return function () {\n localeService.init();\n };\n}\n\nexport function TranslateLoaderFactory(\n configuration: IndiginaConfiguration\n): TranslateLoader {\n return configuration.langs;\n}\n\nexport function AppSettingsFactory(configuration: IndiginaConfiguration) {\n return configuration.appSettings;\n}\n","export enum EventNames {\n UserUpdated = 'userUpdated',\n PermissionsUpdated = 'permissionsUpdated',\n}\n","import { IEntityEndpoints } from './IEntityEndpoints';\nimport { State, toODataString } from '@progress/kendo-data-query';\nimport { MemberTypes } from '../models/MemberTypes';\nimport { IActivityEndpoints } from './IActivityEndpoints';\n\nexport const endpoints = {\n signalr: {\n eventsHub: 'EventsHub',\n },\n oidc: {\n config: 'oidc/config',\n },\n members: {\n me: 'members/me',\n },\n admins: {\n ...buildEntityEndpoints('admins'),\n roles: {\n ...buildEntityEndpoints('admins/roles'),\n },\n },\n system: {\n info: 'system/info',\n },\n firstUser: 'admins/first',\n partners: buildEntityEndpoints('partners'),\n permissions: {\n all: (type: MemberTypes) => `permissions/${type}s`,\n member: (id: string) => `permissions/${id}`,\n mine: 'permissions/me',\n },\n users: {\n ...buildEntityEndpoints('users'),\n roles: {\n ...buildEntityEndpoints('users/roles'),\n },\n },\n apiTokens: buildEntityEndpoints('apiTokens'),\n};\n\nconst guidFormat = /'((\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1})'/g;\nexport function buildEntityEndpoints(name: string): IEntityEndpoints {\n return {\n path: name,\n query: (state: State) =>\n `${name}?${toODataString(state, { utcDates: true }).replace(\n guidFormat,\n '$1'\n )}`,\n entityPath: (id: string) => `${name}/${id}`,\n };\n}\nexport function buildActivityEndpoints(name: string): IActivityEndpoints {\n return {\n query: (state: State) =>\n `activities/${name}?${toODataString(state, {\n utcDates: true,\n }).replace(guidFormat, '$1')}`,\n search: (state: State, searchTerm: string) => {\n let uri = `activities/${name}/search?${toODataString(state, {\n utcDates: true,\n })}`;\n if (searchTerm) {\n uri += `&searchTerm=${searchTerm}`;\n }\n\n return uri;\n },\n detailedActivity: (id: string, partnerId: string) =>\n partnerId\n ? `activities/${name}/${id}/${partnerId}`\n : `activities/${name}/${id}`,\n };\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { HttpService } from '../angular/services/http.service';\nimport { SettingsService } from '../angular/services/settings.service';\nimport { AuthProviderResolver } from './auth-provider.resolver';\nimport { AuthProvider } from './auth.providers/AuthProvider';\nimport { endpoints } from './endpoints';\nimport { EventNames } from './signalr/EventNames';\nimport { SignalRService } from './signalr/signalr.service';\n\nconst adminUriPart = '/admin/';\n\nexport abstract class BaseAccountService<T> {\n public user = new BehaviorSubject<T>(null);\n\n constructor(\n public resolver: AuthProviderResolver,\n protected httpService: HttpService,\n protected settingsService: SettingsService,\n protected signalRService: SignalRService\n ) {\n this.resolver\n .getProvider()\n .pipe(\n map((provider) => {\n this.initialize(provider);\n })\n )\n .subscribe();\n }\n\n login() {\n this.resolver\n .getProvider()\n .pipe(\n map((provider) => {\n provider.login();\n })\n )\n .subscribe();\n }\n\n logout() {\n this.settingsService.clearLoginAsUser();\n this.resolver\n .getProvider()\n .pipe(\n map((provider) => {\n provider.logout();\n })\n )\n .subscribe();\n }\n\n private initialize(provider: AuthProvider) {\n this.getCurrentUser().subscribe((user) => {\n if (!user) {\n return;\n }\n\n const path = this.settingsService.getCallbackPath();\n if (path) {\n this.settingsService.clearCallbackPath();\n window.location.href = window.location.origin + path;\n\n return;\n }\n\n if (\n this.isAdmin(user) &&\n !window.location.pathname.startsWith(adminUriPart)\n ) {\n window.location.href = `${window.location.origin}${adminUriPart}`;\n\n return;\n }\n\n provider.getAccessToken().subscribe((token) => {\n this.signalRService.startConnection(token);\n this.signalRService\n .on<T>(EventNames.UserUpdated)\n .subscribe(async () => {\n provider.getAccessToken().subscribe((token) => {\n this.signalRService.reconnect(token);\n });\n this.httpService\n .get<T>(endpoints.members.me)\n .subscribe((user) => this.user.next(user));\n });\n });\n });\n }\n\n getCurrentUser(): Observable<T> {\n return this.resolver.getProvider().pipe(\n mergeMap((provider) => {\n if (this.user.getValue() || !provider.isUserLoggedIn()) {\n return this.user;\n }\n\n return provider.getAccessToken().pipe(\n mergeMap(() => {\n return this.httpService.get(endpoints.members.me).pipe(\n map((user: T) => {\n this.user.next(user);\n\n return user;\n })\n );\n })\n );\n })\n );\n }\n\n public isUserLoggedIn(): Observable<boolean> {\n return this.resolver\n .getProvider()\n .pipe(map((provider) => provider.isUserLoggedIn()));\n }\n\n public abstract isAdmin(member: T): boolean;\n}\n","export enum HttpCodes {\n BadRequest = 400,\n Forbidden = 403,\n InternalServerError = 500,\n NotFound = 404,\n OK = 200,\n Unauthorized = 401,\n}\n","import { ISubscriptionControl } from './ISubscriptionControl';\nimport { Observable, Subscription } from 'rxjs';\n\nexport class ReEntrySubscription<T> implements ISubscriptionControl {\n private subscription: Subscription;\n\n constructor(\n private observable: Observable<T>,\n private action: (event: T) => void\n ) {}\n\n public get connected(): boolean {\n return !this.subscription.closed;\n }\n\n public resume(): void {\n this.subscription = this.observable.subscribe(this.action);\n }\n\n public pause(): void {\n this.subscription.unsubscribe();\n }\n}\n","import {\n AbstractControl,\n AbstractControlOptions,\n AsyncValidatorFn,\n FormGroup,\n ValidatorFn,\n FormControl,\n} from '@angular/forms';\n\nexport class FormGroupWithErrors extends FormGroup {\n generalErrors: string[] = [];\n\n constructor(\n controls: { [key: string]: AbstractControl },\n validatorOrOpts?:\n | ValidatorFn\n | ValidatorFn[]\n | AbstractControlOptions\n | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(controls, validatorOrOpts, asyncValidator);\n }\n\n public getControl(name: string): AbstractControl {\n if (!this.contains(name)) {\n this.addControl(name, new FormControl({}));\n }\n\n return this.get(name);\n }\n\n public applyServerErrors(\n error: { title?: string; errors: { [key: string]: string[] } },\n form?: FormGroupWithErrors\n ): void {\n this.generalErrors = [];\n if (error.title) {\n this.generalErrors.push(error.title);\n }\n\n if (!form) {\n form = this;\n }\n\n for (const key in error.errors) {\n const ctrl = form.controls[key];\n if (ctrl) {\n ctrl.setErrors({ serverErrorMsg: error.errors[key].join(',') });\n } else {\n this.generalErrors.push(error.errors[key].join(','));\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nconst callbackPathKey = 'callbackPath';\nconst homePath = '/home';\nconst loginAsKey = 'X-User-Id';\nconst tokenKey = 'access_token';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsService {\n public putCurrentCallbackPath() {\n this.putCallbackPath(window.location.pathname + window.location.hash);\n }\n\n public putCallbackPath(pathUri: string): void {\n if (!this.getCallbackPath() && pathUri !== homePath) {\n localStorage.setItem(callbackPathKey, pathUri);\n }\n }\n\n public getCallbackPath(): string {\n return localStorage.getItem(callbackPathKey);\n }\n\n public clearCallbackPath(): void {\n localStorage.removeItem(callbackPathKey);\n }\n\n public setLoginAsUser(id: string): void {\n localStorage.setItem(loginAsKey, id);\n }\n\n public getLoginAsUser(): string {\n return localStorage.getItem(loginAsKey);\n }\n\n public clearLoginAsUser(): void {\n localStorage.removeItem(loginAsKey);\n }\n\n public setToken(token: string) {\n localStorage.setItem(tokenKey, token);\n }\n\n public getToken(): string {\n return localStorage.getItem(tokenKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { AppSettings } from '../models/AppSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppToastrService {\n constructor(\n private toastr: ToastrService,\n private appSettings: AppSettings\n ) {}\n\n private timeout = this.appSettings.toastrTimeOut;\n\n public showError(message: string, title: string = 'Error'): void {\n this.toastr.error(message, title, { timeOut: this.timeout });\n }\n\n public showSuccess(message: string, title: string = ''): void {\n this.toastr.success(message, title, { timeOut: this.timeout });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { AppSettings } from '../models/AppSettings';\nimport { CustomHttpErrorResponse } from '../models/CustomHttpErrorResponse';\nimport { HttpCodes } from '../models/HttpCodes';\nimport { SettingsService } from './settings.service';\nimport { AppToastrService } from './toastr.service';\n\nconst absoluteUrlRegExp = /^http(s)?:\\/\\//;\n\n@Injectable({ providedIn: 'root' })\nexport class HttpService {\n constructor(\n private appToastrService: AppToastrService,\n private httpClient: HttpClient,\n private appSettings: AppSettings,\n private translate: TranslateService,\n private router: Router,\n private settingsService: SettingsService\n ) {}\n\n get<T>(path: string): Observable<T> {\n return this.httpClient\n .get<T>(this.createUrl(path))\n .pipe(\n catchError((err: CustomHttpErrorResponse) =>\n this.handleServerError(err)\n )\n );\n }\n\n delete(path: string): Observable<object> {\n return this.httpClient.delete(this.createUrl(path)).pipe(\n tap(() => this.showSuccessMessage('ToastrMessages.RemovedSuccessfully')),\n catchError((err: CustomHttpErrorResponse) => this.handleServerError(err))\n );\n }\n\n post<T>(\n path: string,\n data: T,\n successTranslateMessage: string = null\n ): Observable<T> {\n return this.httpClient.post<T>(this.createUrl(path), data).pipe(\n tap(() =>\n this.showSuccessMessage(\n successTranslateMessage ?? 'ToastrMessages.SavedSuccessfully'\n )\n ),\n catchError((err) => this.handleServerError(err))\n );\n }\n\n put<T>(\n path: string,\n data: T,\n successTranslateMessage: string = null\n ): Observable<T> {\n return this.httpClient.put<T>(this.createUrl(path), data).pipe(\n tap(() =>\n this.showSuccessMessage(\n successTranslateMessage ?? 'ToastrMessages.SavedSuccessfully'\n )\n ),\n catchError((err) => this.handleServerError(err))\n );\n }\n\n private createUrl(path: string): string {\n return absoluteUrlRegExp.test(path) ? path : this.appSettings.apiUrl + path;\n }\n\n private handleServerError(error: CustomHttpErrorResponse) {\n if (error.error instanceof ErrorEvent) {\n // A client-side or network error occurred. Handle it accordingly.\n this.appToastrService.showError(\n 'An error occurred: ' + error.error.message\n );\n\n return of(null);\n }\n\n if (error.status === HttpCodes.Unauthorized) {\n this.settingsService.putCurrentCallbackPath();\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.Unauthorized')\n );\n\n return of(null);\n }\n\n if (error.status === HttpCodes.Forbidden) {\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.Forbidden')\n );\n this.router.navigate(['forbidden']);\n\n return of(null);\n }\n\n if (error.status === HttpCodes.NotFound) {\n if (!!this.settingsService.getLoginAsUser()) {\n this.settingsService.clearLoginAsUser();\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.CanNotLoginAsUser')\n );\n setTimeout(() => {\n window.location.href = '/';\n }, 1000);\n }\n\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.NotFound')\n );\n\n return of(null);\n }\n\n if (error.status >= HttpCodes.InternalServerError) {\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.ServerError') + error.error.title\n );\n\n return of(null);\n }\n\n return throwError(error);\n }\n\n private showSuccessMessage(message: string) {\n this.appToastrService.showSuccess(this.translate.instant(message));\n }\n}\n","export enum AuthProviders {\n IdentityServer = 'IdentityServer',\n AzureB2C = 'AzureB2C',\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ISubscriptionControl } from '../../extensions/ISubscriptionControl';\n\n@Component({\n selector: 'live-updates-control',\n styleUrls: ['./live-updates-control.component.css'],\n templateUrl: './live-updates-control.component.html',\n})\nexport class LiveUpdatesControlComponent implements OnInit {\n @Input() subscription: ISubscriptionControl;\n\n ngOnInit(): void {\n this.subscription.resume();\n }\n\n public toggle(): void {\n this.subscription.connected\n ? this.subscription.pause()\n : this.subscription.resume();\n }\n}\n","import { Observable } from 'rxjs';\n\nexport abstract class AuthProvider {\n public abstract initialize(): Observable<boolean>;\n public abstract login();\n public abstract logout();\n public abstract isUserLoggedIn(): boolean;\n public abstract getAccessToken(): Observable<string>;\n}\n","import { MsalService } from '@azure/msal-angular';\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\nimport { from, Observable, of } from 'rxjs';\nimport { SettingsService } from '../../angular/services/settings.service';\nimport { AuthProvider } from './AuthProvider';\n\nexport class AzureB2CProvider extends AuthProvider {\n constructor(\n private authService: MsalService,\n private settingsService: SettingsService\n ) {\n super();\n }\n\n public initialize(): Observable<boolean> {\n return of(true);\n }\n\n public login() {\n if (!this.isUserLoggedIn()) {\n this.authService.loginRedirect().subscribe();\n }\n }\n\n public logout() {\n this.authService.logoutRedirect({\n postLogoutRedirectUri: location.origin,\n });\n }\n\n public getAccessToken(): Observable<string> {\n const request = {\n scopes: ['openid', 'offline_access', 'profile'],\n };\n\n return from(\n this.authService.instance\n .acquireTokenSilent(request)\n .then((authenticationResult) => {\n const token = authenticationResult.idToken;\n this.settingsService.setToken(token);\n\n return token;\n })\n .catch(async (error) => {\n if (error instanceof InteractionRequiredAuthError) {\n await this.authService.instance.acquireTokenRedirect(request);\n\n return this.settingsService.getToken();\n }\n })\n );\n }\n\n public isUserLoggedIn = (): boolean =>\n !!this.authService.instance.getActiveAccount()?.localAccountId;\n}\n","import { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\nimport { from, Observable, of } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { IndiginaConfiguration } from '../../angular/models/IndiginaConfiguration';\nimport { AuthProvider } from './AuthProvider';\n\nconst homePath = '/home';\n\nexport class OAuthProvider extends AuthProvider {\n constructor(\n private oauthService: OAuthService,\n private configuration: IndiginaConfiguration\n ) {\n super();\n }\n\n public initialize(): Observable<boolean> {\n const authConfig: AuthConfig = {\n issuer: this.configuration.appSettings.oidc.issuer,\n redirectUri: window.location.origin + '/login/callback',\n clientId: this.configuration.appSettings.oidc.clientId,\n scope: 'openid profile offline_access',\n postLogoutRedirectUri: window.location.origin + homePath,\n silentRefreshRedirectUri: window.location.origin + '/silent-renew.html',\n };\n\n return this.configure(authConfig);\n }\n\n public login() {\n this.oauthService.initLoginFlow();\n }\n\n public logout() {\n this.oauthService.logOut();\n }\n\n public getAccessToken(): Observable<string> {\n return of(this.oauthService.getAccessToken());\n }\n\n public isUserLoggedIn = (): boolean =>\n this.oauthService.hasValidAccessToken();\n\n private configure(authConfig: AuthConfig): Observable<boolean> {\n this.oauthService.configure(authConfig);\n this.oauthService.tokenValidationHandler = new JwksValidationHandler();\n this.oauthService.setupAutomaticSilentRefresh();\n\n return from(\n this.oauthService.loadDiscoveryDocument(\n authConfig.issuer + '/identity/.well-known/openid-configuration'\n )\n ).pipe(mergeMap(() => from(this.oauthService.tryLoginImplicitFlow())));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { IndiginaConfiguration } from '../angular/models/IndiginaConfiguration';\nimport { HttpService } from '../angular/services/http.service';\nimport { SettingsService } from '../angular/services/settings.service';\nimport { AuthProviders } from '../models/AuthProviders';\nimport { SystemInfo } from '../models/SystemInfo';\nimport { AuthProvider } from '../services/auth.providers/AuthProvider';\nimport { AzureB2CProvider } from './../services/auth.providers/azureb2c.provider';\nimport { OAuthProvider } from './../services/auth.providers/oauth.provider';\nimport { endpoints } from './endpoints';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProviderResolver {\n private AuthProvider$ = new BehaviorSubject<AuthProvider>(null);\n\n constructor(\n httpService: HttpService,\n oauthService: OAuthService,\n msalService: MsalService,\n settingsService: SettingsService,\n indiginaConfiguration: IndiginaConfiguration\n ) {\n httpService.get<SystemInfo>(endpoints.system.info).subscribe((info) => {\n let provider: AuthProvider;\n if (info.identityProvider === AuthProviders.IdentityServer) {\n provider = new OAuthProvider(oauthService, indiginaConfiguration);\n } else {\n provider = new AzureB2CProvider(msalService, settingsService);\n }\n\n provider.initialize().subscribe(() => this.AuthProvider$.next(provider));\n });\n }\n\n public getProvider = (): Observable<AuthProvider> =>\n this.AuthProvider$.pipe(filter((x) => !!x));\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport * as signalR from '@microsoft/signalr';\nimport { AppSettings } from '../../angular/models/AppSettings';\nimport { endpoints } from '../endpoints';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalRService {\n protected isConnectionEstablished = false;\n protected hubConnection: signalR.HubConnection;\n private eventEmitters: { [eventName: string]: EventEmitter<any> } = {};\n\n constructor(private appSettings: AppSettings) {}\n\n private createConnection(token: string) {\n this.hubConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.appSettings.apiUrl + endpoints.signalr.eventsHub, {\n accessTokenFactory: () => {\n return token;\n },\n })\n .configureLogging(\n this.appSettings.signalRLogLevel ?? signalR.LogLevel.None\n )\n .build();\n\n this.hubConnection.onclose((err?) => {\n if (err !== undefined) {\n this.isConnectionEstablished = false;\n this.startConnection(token);\n }\n });\n }\n\n public startConnection(token: string): void {\n if (!this.isConnectionEstablished) {\n this.createConnection(token);\n this.hubConnection\n .start()\n .then(() => {\n this.isConnectionEstablished = true;\n Object.keys(this.eventEmitters).forEach((eventName) => {\n this.hubConnection.on(eventName, (model) => {\n this.eventEmitters[eventName].emit(model);\n });\n });\n })\n .catch(() => {\n console.warn('Error while establishing connection, retrying...');\n setTimeout(() => this.startConnection(token), 5000);\n });\n }\n }\n\n public reconnect(token: string) {\n if (this.isConnectionEstablished) {\n this.hubConnection.stop().then(() => {\n this.isConnectionEstablished = false;\n this.startConnection(token);\n });\n }\n }\n\n public on<T>(eventName: string): EventEmitter<T> {\n if (!this.eventEmitters[eventName]) {\n this.eventEmitters[eventName] = new EventEmitter<T>();\n if (this.hubConnection) {\n this.hubConnection.on(eventName, (model) => {\n this.eventEmitters[eventName].emit(model);\n });\n }\n }\n\n return this.eventEmitters[eventName] as EventEmitter<T>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../angular/services/http.service';\nimport { SettingsService } from '../angular/services/settings.service';\nimport { Member } from '../models/Member';\nimport { AuthProviderResolver } from './auth-provider.resolver';\nimport { BaseAccountService } from './base.account.service';\nimport { SignalRService } from './signalr/signalr.service';\n\nconst adminKey = 'Admin';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountService extends BaseAccountService<Member> {\n constructor(\n public resolver: AuthProviderResolver,\n httpService: HttpService,\n settingsService: SettingsService,\n signalRService: SignalRService\n ) {\n super(resolver, httpService, settingsService, signalRService);\n }\n\n public isAdmin = (member: Member): boolean =>\n member?.type === adminKey ?? false;\n}\n","import {\n Component,\n Input,\n HostListener,\n ElementRef,\n ViewChild,\n} from '@angular/core';\nimport { AppSettings } from '../../angular/models/AppSettings';\nimport { Member } from '../../models/Member';\nimport { AccountService } from '../../services/account.service';\n\n@Component({\n selector: 'account-menu',\n templateUrl: './account-menu.component.html',\n styleUrls: ['./account-menu.component.css'],\n})\nexport class AccountMenuComponent {\n @ViewChild('accountMenuElement') accountMenu: ElementRef;\n @Input() user: Member;\n expand = false;\n languageSelectorVisible = false;\n constructor(\n private eref: ElementRef,\n private accountService: AccountService,\n private appSettings: AppSettings\n ) {}\n\n get fullName(): string {\n return `${this.user?.firstName} ${this.user?.lastName}`;\n }\n\n get accountUrl(): string {\n return this.appSettings.accountUrl;\n }\n\n toogle(): void {\n this.expand = !this.expand;\n }\n\n logout(): void {\n this.accountService.logout();\n }\n\n openLanguageSelector(event: MouseEvent): void {\n event.stopPropagation();\n this.toogle();\n this.languageSelectorVisible = true;\n }\n\n @HostListener('document:click', ['$event'])\n clickedOutside(event: any) {\n if (!this.eref.nativeElement.contains(event.target) && this.expand) {\n this.toogle();\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MsalService } from '@azure/msal-angular';\nimport { AuthenticationResult } from '@azure/msal-browser';\nimport { SettingsService } from '../../angular/services/settings.service';\n\n@Component({\n selector: 'lib-azure-login',\n template: '',\n})\nexport class AzureLoginCallbackComponent {\n constructor(\n private authService: MsalService,\n private settingsService: SettingsService,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.authService\n .handleRedirectObservable()\n .subscribe((result: AuthenticationResult) => {\n this.settingsService.setToken(result.idToken);\n this.authService.instance.setActiveAccount(result.account);\n this.router.navigate(['home']);\n });\n }\n\n public logout() {\n this.authService.logout();\n }\n}\n","import {\n Component,\n ElementRef,\n HostListener,\n Output,\n EventEmitter,\n Input,\n} from '@angular/core';\nimport { Language } from '../../angular/models/Language';\nimport { LocaleSettingsService } from '../../angular/services/locale-settings.service';\n\n@Component({\n selector: 'language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: ['./language-selector.component.css'],\n})\nexport class LanguageSelectorComponent {\n @Input() visible: boolean;\n @Output() visibleChange = new EventEmitter<boolean>();\n currentLanguageCode = '';\n languages: Language[];\n\n constructor(\n private eref: ElementRef,\n private settings: LocaleSettingsService\n ) {\n this.currentLanguageCode = this.settings.getLocale();\n this.languages = this.settings.getLocales();\n }\n\n async changeLanguage(code: string) {\n this.currentLanguageCode = code;\n this.settings.setLocale(this.currentLanguageCode);\n this.close();\n }\n\n close(): void {\n this.visible = false;\n this.visibleChange.emit(this.visible);\n }\n\n @HostListener('document:click', ['$event'])\n clickedOutside(event: any) {\n if (!this.eref.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n}\n","import {\n BrowserCacheLocation,\n Configuration,\n IPublicClientApplication,\n PublicClientApplication,\n} from '@azure/msal-browser';\nimport { IndiginaConfiguration } from '../angular/models/IndiginaConfiguration';\n\nconst isIE =\n window.navigator.userAgent.indexOf('MSIE ') > -1 ||\n window.navigator.userAgent.indexOf('Trident/') > -1;\n\nexport const MSALInstanceFactory = (\n config: IndiginaConfiguration\n): IPublicClientApplication => {\n const msalConfig: Configuration = {\n auth: {\n clientId: config.appSettings.azureB2C.clientId,\n authority: config.appSettings.azureB2C.authority,\n knownAuthorities: config.appSettings.azureB2C.knownAuthorities,\n redirectUri: window.location.origin + '/azure/login/callback',\n postLogoutRedirectUri: '/',\n navigateToLoginRequestUrl: false,\n },\n cache: {\n cacheLocation: BrowserCacheLocation.SessionStorage,\n storeAuthStateInCookie: isIE,\n },\n system: {\n loggerOptions: {\n loggerCallback: () => {},\n piiLoggingEnabled: false,\n },\n },\n };\n\n return new PublicClientApplication(msalConfig);\n};\n","import { endpoints } from './endpoints';\nimport { Injectable } from '@angular/core';\nimport { AccountService } from './account.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { MemberTypes } from '../models/MemberTypes';\nimport { Permissions } from './../models/Permissions';\nimport { HttpService } from '../angular/services/http.service';\nimport { SignalRService } from './signalr/signalr.service';\nimport { EventNames } from './signalr/EventNames';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class PermissionsService {\n private loaded = false;\n public mine = new BehaviorSubject<Permissions>({});\n\n constructor(\n private httpService: HttpService,\n private accountService: AccountService,\n private signalRService: SignalRService\n ) {\n this.accountService.user.subscribe(async (user) => {\n if (!user) {\n this.mine.next({});\n\n return;\n }\n\n this.httpService\n .get<Permissions>(endpoints.permissions.mine)\n .subscribe((permissions) => {\n this.mine.next(permissions);\n this.loaded = true;\n this.signalRService\n .on<string>(EventNames.PermissionsUpdated)\n .subscribe(() => {\n this.getPermissionsFromServer();\n });\n });\n });\n }\n\n public getAll(memberType: MemberTypes): Observable<Permissions> {\n return this.httpService.get<Permissions>(\n endpoints.permissions.all(memberType)\n );\n }\n\n public getMine(): Observable<Permissions> {\n if (this.loaded) {\n return this.mine;\n }\n\n return this.getPermissionsFromServer();\n }\n\n private getPermissionsFromServer(): Observable<Permissions> {\n return this.httpService.get<Permissions>(endpoints.permissions.mine).pipe(\n map((permissions) => {\n this.mine.next(permissions);\n\n return permissions;\n })\n );\n }\n}\n","import { Directive, Input, ElementRef, OnInit, Renderer2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PermissionTypes } from '../models/PermissionTypes';\nimport { PermissionsService } from '../services/permissions.service';\n\nconst hiddenClass = 'hidden';\n\n@Directive({\n selector: '[requirePermission]',\n})\nexport class RequirePermissionDirective implements OnInit {\n @Input()\n permissionType: PermissionTypes | PermissionTypes[];\n @Input()\n permissionCategory?: string;\n\n constructor(\n private elementRef: ElementRef,\n private route: ActivatedRoute,\n private permissionsService: PermissionsService,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.hide();\n const category = this.permissionCategory\n ? this.permissionCategory\n : this.getRouteCategory(this.route);\n\n if (!category) {\n this.show();\n\n return;\n }\n\n this.permissionsService.mine.subscribe((permissions) => {\n const hasAccess =\n permissions[category] && this.hasType(permissions[category]);\n if (hasAccess) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n private hide() {\n this.renderer.addClass(this.elementRef.nativeElement, hiddenClass);\n }\n\n private show() {\n this.renderer.removeClass(this.elementRef.nativeElement, hiddenClass);\n }\n\n private hasType(types: PermissionTypes[]) {\n return Array.isArray(this.permissionType)\n ? types.map((x) => this.permissionType.includes(x)).some((x) => x)\n : types.includes(this.permissionType);\n }\n\n private getRouteCategory(route: ActivatedRoute): string {\n const routeData = route.snapshot.data;\n if (routeData && routeData.permission) {\n return routeData.permission.category;\n }\n\n if (this.route.parent) {\n return this.getRouteCategory(this.route.parent);\n }\n\n return null;\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SettingsService } from '../angular/services/settings.service';\n\nconst AuthorizationHeader = 'Authorization';\n\n@Injectable()\nexport class AuthHeadersInterceptor implements HttpInterceptor {\n constructor(private settingsService: SettingsService) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n if (!request.headers.keys().find((x) => x === AuthorizationHeader)) {\n const token = this.settingsService.getToken();\n if (token) {\n const modified = request.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return next.handle(modified);\n } else {\n return next.handle(request);\n }\n }\n\n return next.handle(request);\n }\n}\n","export enum FieldTypes {\n Text,\n Checkbox,\n Dropdown,\n Multiselect,\n}\n","import { ActivityFilter } from '../../models/ActivityFilter';\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { CustomFilterElement } from '../../models/CustomFilterElement';\nimport { FieldTypes } from '../../models/FieldTypes';\nimport { ActivityFilterService } from '../../services/activity.filter.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NamedModel } from '../../angular/models/NamedModel';\n\nconst allKey = 'All';\nconst defaultValueField = 'id';\n\n@Component({\n selector: 'activity-filter',\n templateUrl: './activity-filter.component.html',\n styleUrls: ['./activity-filter.component.less'],\n})\nexport class ActivityFilterComponent implements OnInit, OnChanges {\n @Input() showArchiveSwitcher: boolean = true;\n @Input() showSearhText: boolean = true;\n @Input() customFilterElements: CustomFilterElement[];\n @Input() filterService: ActivityFilterService;\n\n public filter: ActivityFilter;\n public FieldTypes = FieldTypes;\n\n constructor(private translate: TranslateService) {}\n\n ngOnInit(): void {\n this.customFilterElements?.forEach(\n (element) =>\n (element.valueField = element.valueField\n ? element.valueField\n : defaultValueField)\n );\n this.filterService.filter$.subscribe((filter) => {\n this.filter = filter;\n this.changeFilter();\n });\n }\n\n ngOnChanges(): void {\n this.changeFilter();\n }\n\n public defaultNamedModel: NamedModel = {\n name: this.translate.instant(allKey),\n id: null,\n };\n\n public setTodayFilter() {\n this.filterService.setToday();\n }\n\n public clearFilter() {\n this.customFilterElements?.forEach((element) => {\n element.filter.value = null;\n if (element.filter.values) {\n element.filter.values = [];\n }\n });\n this.filterService.reset();\n this.emitChangeEvents();\n }\n\n public applyFilter() {\n this.setCustomFilters();\n this.filterService.applyFilter(this.filter);\n }\n\n public fieldChange(\n value: string | number | boolean | string[],\n element: CustomFilterElement\n ) {\n if (element.change) {\n element.change(value);\n }\n }\n\n private fillFilter() {\n if (!this.filter) {\n return;\n }\n\n this.customFilterElements?.forEach((element) => {\n element.filter = { ...element.filter, value: null, values: null };\n });\n\n this.filter.customFilters?.forEach((filter) => {\n const element = this.customFilterElements?.find(\n (x) =>\n x.filter.field === filter.field &&\n x.filter.filterTarget === filter.filterTarget\n );\n if (element) {\n element.filter = Object.assign({}, filter);\n }\n });\n }\n\n private setCustomFilters() {\n this.customFilterElements?.forEach((element) => {\n const index = this.filter.customFilters?.findIndex(\n (x) => x.field === element.filter.field\n );\n if (index !== -1) {\n this.filter.customFilters.splice(index, 1);\n }\n });\n\n this.customFilterElements?.forEach((element) =>\n this.filter.customFilters.push(element.filter)\n );\n }\n\n private fixMultiselectFilters() {\n const multiSelectFilters = this.customFilterElements?.map((element) => {\n if (element.fieldType === FieldTypes.Multiselect) {\n return element.filter;\n }\n });\n if (multiSelectFilters) {\n multiSelectFilters.forEach((filter) => {\n if (filter?.value) {\n filter.values = [filter.value as string];\n filter.value = null;\n }\n });\n }\n }\n\n private changeFilter() {\n this.fillFilter();\n this.fixMultiselectFilters();\n this.emitChangeEvents();\n }\n\n private emitChangeEvents() {\n this.customFilterElements?.forEach((element) => {\n if (element.filter.value || element.filter.values) {\n this.fieldChange(\n element.filter.value ?? element.filter.values,\n element\n );\n }\n });\n }\n}\n","import { Component, ViewChild, TemplateRef } from '@angular/core';\nimport { DialogService, DialogRef } from '@progress/kendo-angular-dialog';\n\n@Component({\n selector: 'confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.css'],\n})\nexport class ConfirmDialogComponent {\n private dialog: DialogRef;\n private callback: () => void;\n @ViewChild('dialogActions', { static: true })\n public dialogActions: TemplateRef<any>;\n constructor(private dialogService: DialogService) {}\n\n cancel(): void {\n this.dialog.close();\n this.callback = undefined;\n }\n\n confirm() {\n this.callback();\n this.cancel();\n }\n\n public open(content: string, callback: () => void) {\n this.callback = callback;\n this.dialog = this.dialogService.open({\n content,\n actions: this.dialogActions,\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport * as momentModule from 'moment-timezone';\nconst moment = momentModule;\n\n@Component({\n selector: 'current-timezone',\n templateUrl: './current-timezone.component.html',\n styleUrls: ['./current-timezone.component.css'],\n})\nexport class CurrentTimezoneComponent implements OnInit {\n public timeZoneAndOffset: string;\n constructor() {}\n\n ngOnInit(): void {\n const timeZone = moment.tz.guess();\n this.timeZoneAndOffset = timeZone + ' ' + moment().format('Z');\n }\n}\n","import { Component, Output, EventEmitter, Input } from '@angular/core';\n\n@Component({\n selector: 'entity-edit-buttons-bar',\n templateUrl: './buttons-bar.component.html',\n styleUrls: ['./buttons-bar.component.css'],\n})\nexport class EntityEditButtonsBarComponent {\n @Input()\n public valid: boolean;\n @Output()\n public save = new EventEmitter<boolean>();\n}\n","import { OnInit, ViewChild, Component, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { FormControl } from '@angular/forms';\nimport { IFormAdapter } from './IFormAdapter';\nimport { FormGroupWithErrors } from '../../angular/forms/extensions/FormGroupWithErrors';\nimport { GeneralErrorsComponent } from '../../angular/forms/widgets/general-errors/general-errors.component';\nimport { IdentifiedModel } from '../../angular/models/IdentifiedModel';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n selector: 'entity-edit-form',\n templateUrl: './entity-edit-form.component.html',\n styleUrls: ['./entity-edit-form.component.css'],\n})\nexport class EntityEditFormComponent implements OnInit {\n public formGroup: FormGroupWithErrors;\n @ViewChild('general_errors')\n generalErrors: GeneralErrorsComponent;\n @Input()\n title: string;\n @Input()\n adapter: IFormAdapter<IdentifiedModel>;\n\n public saveInProgress: boolean;\n\n constructor(private route: ActivatedRoute) {\n this.saveInProgress = false;\n }\n\n ngOnInit() {\n this.route.params.subscribe((params: IdentifiedModel) => {\n this.formGroup = null;\n const formGroup = new FormGroupWithErrors({});\n if (params.id) {\n this.adapter\n .getService()\n .get(params.id)\n .subscribe((model) => {\n formGroup.addControl('id', new FormControl(model.id));\n for (const key of Object.keys(model)) {\n formGroup.addControl(key, new FormControl(model[key]));\n }\n\n this.adapter.setForm(formGroup);\n this.formGroup = formGroup;\n });\n } else {\n this.adapter.setForm(formGroup);\n this.formGroup = formGroup;\n }\n });\n }\n\n save(): void {\n this.saveInProgress = true;\n this.adapter\n .getService()\n .save(this.adapter.getValue())\n .pipe(finalize(() => (this.saveInProgress = false)))\n .subscribe(\n (result: IdentifiedModel) => {\n this.adapter.onSaved(result);\n },\n (error: HttpErrorResponse) => {\n this.formGroup.applyServerErrors(error.error, this.formGroup);\n this.generalErrors.setErrors(this.formGroup.generalErrors);\n }\n );\n }\n}\n","import { Component, Input, ElementRef, OnChanges } from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n AbstractControl,\n} from '@angular/forms';\nimport { CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { FieldComponent } from '../../../angular/forms/widgets/field/field.component';\nimport { IdentifiedModel } from '../../../angular/models/IdentifiedModel';\nimport { NamedModel } from '../../../angular/models/NamedModel';\nimport { IEntityService } from '../../../services/IEntityService';\n\n@Component({\n selector: 'field-dropdown',\n templateUrl: './field-dropdown.component.html',\n styleUrls: ['./field-dropdown.component.css'],\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class FieldDropdownComponent\n extends FieldComponent<string>\n implements OnChanges\n{\n @Input()\n service: IEntityService<NamedModel>;\n @Input()\n rebind: string;\n @Input()\n filter?: CompositeFilterDescriptor;\n data: IdentifiedModel[] = [];\n get control(): AbstractControl {\n return this.parent.form.get(this.fieldName);\n }\n\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref, '');\n }\n\n async ngOnChanges(): Promise<void> {\n await this.getData();\n this.control.setValue(\n (this.data.find((d) => d.id === this.control.value) || this.data[0]).id\n );\n }\n\n private getData() {\n this.service\n .getPage(this.filter ? { filter: this.filter } : {})\n .subscribe((data) => (this.data = data.data));\n }\n}\n","import { Component, Input, ElementRef, OnChanges } from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n AbstractControl,\n} from '@angular/forms';\nimport { CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { FieldComponent } from '../../../angular/forms/widgets/field/field.component';\nimport { IdentifiedModel } from '../../../angular/models/IdentifiedModel';\nimport { NamedModel } from '../../../angular/models/NamedModel';\nimport { IEntityService } from '../../../services/IEntityService';\n\n@Component({\n selector: 'field-multiselect',\n templateUrl: './field-multiselect.component.html',\n styleUrls: ['./field-multiselect.component.css'],\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class FieldMultiSelectComponent\n extends FieldComponent<string[]>\n implements OnChanges\n{\n @Input()\n service: IEntityService<NamedModel>;\n @Input()\n rebind: string;\n @Input()\n filter?: CompositeFilterDescriptor;\n data: IdentifiedModel[] = [];\n get control(): AbstractControl {\n return this.parent.form.get(this.fieldName);\n }\n\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref, []);\n }\n\n ngOnChanges(): void {\n this.getData().subscribe((data) => {\n this.data = data.data;\n this.control.setValue(\n this.control.value.filter(\n (x: string) => this.data.filter((d) => d.id === x).length\n )\n );\n });\n }\n\n private getData() {\n return this.service.getPage(this.filter ? { filter: this.filter } : {});\n }\n}\n","import {\n CompositeFilterDescriptor,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\n\nexport const urlSerialize = (object: object): string => {\n let serialized = '';\n Object.keys(object).forEach((key) => {\n if (typeof object[key] === 'object') {\n const serializedObject = !isEmptyObject(object[key])\n ? JSON.stringify(object[key])\n : '';\n serialized += serializedObject ? `${key}=${serializedObject}&` : '';\n } else {\n serialized +=\n object[key] || object[key] === 0 ? `${key}=${object[key]}&` : '';\n }\n });\n\n return serialized.slice(0, -1);\n};\n\nconst isEmptyObject = (object: object): boolean => {\n return object === null || Object.keys(object).length === 0;\n};\n\nconst isDate = (date) => isNaN(date) && !isNaN(Date.parse(date));\n\nexport const urlDeserialize = (params: URLSearchParams) => {\n const deserialized = {};\n params.forEach((param, key) => {\n if (key === 'sort' || key === 'group') {\n deserialized[key] = JSON.parse(param);\n } else if (key === 'filter') {\n deserialized[key] = transformFilter(JSON.parse(param));\n } else {\n deserialized[key] = param;\n }\n });\n\n return deserialized;\n};\n\nfunction transformFilter(\n gridFilter: CompositeFilterDescriptor\n): CompositeFilterDescriptor {\n transformFilters(gridFilter);\n\n return gridFilter;\n}\n\nfunction transformFilters(gridFilter: CompositeFilterDescriptor) {\n if (gridFilter.filters.length) {\n gridFilter.filters.forEach(\n (filter: CompositeFilterDescriptor | FilterDescriptor) => {\n let filterDescriptor = filter as FilterDescriptor;\n filterDescriptor.value = isDate(filterDescriptor.value)\n ? new Date(filterDescriptor.value)\n : filterDescriptor.value;\n\n let compositeFilterDescriptor = filter as CompositeFilterDescriptor;\n if (compositeFilterDescriptor.filters) {\n transformFilters(compositeFilterDescriptor);\n }\n }\n );\n }\n}\n","import { Observable } from 'rxjs';\nimport {\n Component,\n OnInit,\n ViewChild,\n Input,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n Output,\n} from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport {\n State,\n FilterDescriptor,\n CompositeFilterDescriptor,\n SortDescriptor,\n} from '@progress/kendo-data-query';\nimport {\n DataStateChangeEvent,\n RowClassArgs,\n} from '@progress/kendo-angular-grid';\nimport { Field } from './Field';\nimport { Command } from './Command';\nimport { urlDeserialize, urlSerialize } from './UrlSerializer';\nimport { ConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { IEntityService } from '../../services/IEntityService';\nimport { Page } from '../../models/Page';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NamedModel } from '../../angular/models/NamedModel';\nimport { IdentifiedModel } from '../../angular/models/IdentifiedModel';\n\nconst nameField = 'name';\n\n@Component({\n selector: 'entity-list',\n templateUrl: './entity-list.component.html',\n styleUrls: ['./entity-list.component.css'],\n})\nexport class EntityListComponent implements OnInit, OnChanges {\n @Input()\n public service: IEntityService<NamedModel>;\n @Input()\n public filters: Array<FilterDescriptor | CompositeFilterDescriptor>;\n @Input()\n public fields?: Field[];\n @Input()\n public commands?: Command[];\n @Input()\n public rowClass?: (dataItem: NamedModel, index: number) => {};\n @Input()\n public defaultSort?: SortDescriptor[];\n @Output()\n public filterChange = new EventEmitter<CompositeFilterDescriptor>();\n @ViewChild('confirmDialog', { static: true })\n public dialog: ConfirmDialogComponent;\n public gridState: State = {};\n public page: Page<NamedModel>;\n public loadings = 0;\n public searchTerm: string;\n public selected: string[] = [];\n public gridFields: Field[] = [];\n private defaultFields: Field[] = [\n { name: 'name', label: 'Name', sortable: true, position: 0 },\n ];\n\n constructor(\n private translate: TranslateService,\n private route: ActivatedRoute,\n private router: Router\n ) {\n this.getAllData = this.getAllData.bind(this);\n this.getRowClass = this.getRowClass.bind(this);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!changes.filters || changes.filters.firstChange) {\n return;\n }\n\n this.getFilteredData();\n }\n\n async ngOnInit() {\n this.gridFields = (this.fields || [])\n .concat(this.defaultFields)\n .sort((left, right) => (left.position || 0) - (right.position || 0));\n this.filters = this.filters ? this.filters : [];\n this.commands = this.commands ? this.commands : [];\n this.route.fragment.subscribe(async (fragment: string) => {\n await this.restoreGridState(new URLSearchParams(fragment));\n });\n\n this.route.firstChild.params.subscribe(async (params: Params) => {\n if (params.id) {\n this.selected[0] = params.id;\n } else {\n this.selected.pop();\n }\n });\n }\n\n public removeHandler({ dataItem }) {\n this.dialog.open(\n this.translate.instant('Confirmation.Delete') +\n ': \"' +\n dataItem.name +\n '\"?',\n () => this.remove(dataItem)\n );\n }\n\n public selectItem({ dataItem }) {\n this.router.navigate([dataItem.id], {\n relativeTo: this.route,\n fragment: urlSerialize(this.gridState),\n });\n }\n\n public onActivate(child: { saved: EventEmitter<NamedModel> }) {\n if (child.saved) {\n child.saved.subscribe((data: { id: string; name: string }) =>\n this.updateGrid(data)\n );\n }\n }\n\n public onDeactivate(child: { saved: EventEmitter<NamedModel> }) {\n if (child.saved) {\n child.saved.unsubscribe();\n }\n }\n\n public dataStateChange(state: DataStateChangeEvent) {\n Object.keys(state).forEach((key) => {\n this.gridState[key] = isNaN(state.skip)\n ? this.gridState[key]\n : state[key];\n });\n\n this.router.navigate([], {\n relativeTo: this.route,\n fragment: urlSerialize(this.gridState),\n });\n }\n\n public onSearch(value: string) {\n this.searchTerm = value;\n this.gridState.skip = 0;\n this.getFilteredData();\n }\n\n public getAllData(): Observable<Page<NamedModel>> {\n const state = Object.assign({}, this.gridState);\n delete state.skip;\n delete state.take;\n\n return this.service.getPage(state);\n }\n\n public getRowClass(context: RowClassArgs): Object {\n return this.rowClass && context\n ? this.rowClass(context.dataItem, context.index)\n : {};\n }\n\n private getFilteredData() {\n this.gridState.filter = this.getFilter();\n this.router.navigate([], {\n relativeTo: this.route,\n fragment: urlSerialize(this.gridState),\n });\n }\n\n protected updateGrid(data: NamedModel) {\n const exists = this.page.data.filter((x) => x.id === data.id);\n if (exists.length) {\n this.page.data[this.page.data.indexOf(exists[0])] = data;\n\n return;\n }\n\n this.page.total++;\n this.page.data.splice(0, 0, data);\n if (this.page.data.length > this.gridState.take) {\n this.page.data.splice(this.page.data.length - 1, 1);\n }\n\n this.selected[0] = data.id;\n this.router.navigate([data.id], {\n relativeTo: this.route,\n preserveFragment: true,\n });\n }\n\n private async remove(entity: IdentifiedModel) {\n this.loadings++;\n this.service.delete(entity.id).subscribe(() => {\n if (\n this.selected.length &&\n this.selected[this.selected.length - 1] === entity.id\n ) {\n this.router.navigate(['../'], {\n preserveFragment: true,\n relativeTo: this.route.firstChild,\n });\n }\n this.loadings--;\n });\n this.getData();\n }\n\n protected getData() {\n this.loadings++;\n this.service.getPage(this.gridState).subscribe((page) => {\n this.page = page;\n this.loadings--;\n });\n }\n\n private getFilter(): CompositeFilterDescriptor {\n const filter: CompositeFilterDescriptor = {\n logic: 'and',\n filters: this.searchTerm\n ? [\n { field: nameField, operator: 'contains', value: this.searchTerm },\n ...this.filters,\n ]\n : this.filters,\n };\n\n return filter;\n }\n\n private onFilterChange() {\n const filter: any = this.gridState.filter?.filters.find(\n (x: FilterDescriptor) => x.field === nameField\n );\n this.searchTerm = filter?.value;\n this.filterChange.emit(this.gridState.filter);\n }\n\n private async restoreGridState(params: URLSearchParams) {\n const defaultGridState: State = {\n sort: this.defaultSort || [{ field: nameField, dir: 'asc' }],\n skip: 0,\n take: 10,\n };\n\n const state = urlDeserialize(params);\n this.gridState = state.hasOwnProperty('take') ? state : defaultGridState;\n this.onFilterChange();\n this.getData();\n }\n}\n","import {\n Component,\n Input,\n Output,\n OnInit,\n EventEmitter,\n ViewChild,\n} from '@angular/core';\nimport { DropDownListComponent } from '@progress/kendo-angular-dropdowns';\nimport { IEntityService } from '../../../services/IEntityService';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport { NamedModel } from '../../../angular/models/NamedModel';\n\nconst All = 'All';\n\n@Component({\n selector: 'field-dropdownlist',\n templateUrl: './field-dropdownlist.component.html',\n styleUrls: ['./field-dropdownlist.component.css'],\n})\nexport class FieldDropdownlistComponent implements OnInit {\n @Input()\n service: IEntityService<NamedModel>;\n @Input()\n label: string;\n @Output()\n valueChange = new EventEmitter<NamedModel>();\n @ViewChild('inputElement')\n private kendoDropDown: DropDownListComponent;\n private initialSelectedId: string;\n\n public defaultItem: NamedModel;\n public data: NamedModel[];\n\n constructor(private translate: TranslateService) {}\n\n async ngOnInit(): Promise<void> {\n this.defaultItem = { id: null, name: this.translate.instant(All) };\n await this.getData();\n this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\n this.defaultItem = { id: null, name: this.translate.instant(All) };\n });\n }\n\n private getData() {\n this.service.getPage({}).subscribe((data) => {\n this.data = data.data;\n if (this.initialSelectedId) {\n const selectedItem = this.data.find(\n (x) => x.id === this.initialSelectedId\n );\n\n if (selectedItem) {\n this.kendoDropDown.writeValue(selectedItem);\n }\n }\n });\n }\n\n onValueChange(event: NamedModel) {\n this.valueChange.emit(event);\n }\n\n public initSelectedId(id: string): void {\n this.initialSelectedId = id;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'excel-export-button',\n templateUrl: './excel-export-button.component.html',\n styleUrls: ['./excel-export-button.component.css'],\n})\nexport class ExcelExportButtonComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'footer-bar',\n templateUrl: './footer-bar.component.html',\n styleUrls: ['./footer-bar.component.css'],\n})\nexport class FooterBarComponent {}\n","import { Component, Input } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'modal-window',\n templateUrl: './modal-window.component.html',\n styleUrls: ['./modal-window.component.css'],\n})\nexport class ModalWindowComponent {\n @Input() callbackPath: string;\n\n constructor(protected route: ActivatedRoute, private router: Router) {}\n\n public opened: boolean = true;\n\n public close() {\n this.opened = false;\n this.router.navigate([this.callbackPath], {\n relativeTo: this.route,\n fragment: this.route.snapshot?.fragment,\n });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n} from '@angular/core';\nimport {\n CompositeFilterDescriptor,\n distinct,\n filterBy,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\nimport { FilterService } from '@progress/kendo-angular-grid';\nimport { NamedModel } from '../../angular/models/NamedModel';\n\nconst defaultValueKey = 'id';\n\n@Component({\n selector: 'multicheck-filter',\n templateUrl: './multicheck-filter.component.html',\n styleUrls: ['./multicheck-filter.component.css'],\n})\nexport class MulticheckFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public data: NamedModel[];\n @Input() public filterService: FilterService;\n @Input() public field: string;\n @Input() public valueField: string;\n @Output() public valueChange = new EventEmitter<number[]>();\n\n public currentData: NamedModel[];\n public showFilter = true;\n private value: string[] = [];\n private filters: FilterDescriptor[] = [];\n private get ValueKey(): string {\n return this.valueField ? this.valueField : defaultValueKey;\n }\n\n public ngAfterViewInit() {\n this.currentData = this.data;\n if (this.currentData && this.currentData.length) {\n this.traverseFilters(this.currentFilter);\n this.value = this.filters.map((f: FilterDescriptor) => f.value);\n this.showFilter = typeof this.currentData[0].name === 'string';\n }\n }\n\n traverseFilters(filters: CompositeFilterDescriptor | FilterDescriptor) {\n let compositeFilterDescriptor = filters as CompositeFilterDescriptor;\n if (compositeFilterDescriptor.filters) {\n for (let i = 0; i < compositeFilterDescriptor.filters.length; i++) {\n const innerFilter = compositeFilterDescriptor.filters[\n i\n ] as FilterDescriptor;\n if (innerFilter.value && innerFilter.field === this.field) {\n this.filters.push(innerFilter);\n }\n\n this.traverseFilters(innerFilter);\n }\n }\n }\n\n public isItemSelected(item: NamedModel) {\n return this.value.some((x) => x === item[this.ValueKey]);\n }\n\n public onSelectionChange(item: NamedModel) {\n const selectedValue = item[this.ValueKey];\n if (this.value.some((x) => x === selectedValue)) {\n this.value = this.value.filter((x) => x !== selectedValue);\n } else {\n this.value.push(selectedValue);\n }\n\n this.filterService.filter({\n filters: this.value.map((value) => ({\n field: this.field,\n operator: 'eq',\n value,\n })),\n logic: 'or',\n });\n }\n\n public onInput(e: any) {\n this.currentData = distinct(\n [\n ...this.currentData.filter((dataItem) =>\n this.value.some((val) => val === dataItem.id)\n ),\n ...filterBy(this.data, {\n operator: 'contains',\n field: 'name',\n value: e.target.value,\n }),\n ],\n 'name'\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Member } from '../../models/Member';\n\n@Component({\n selector: 'top-bar',\n templateUrl: './top-bar.component.html',\n styleUrls: ['./top-bar.component.css'],\n})\nexport class TopMenuComponent {\n @Input()\n currentUser: Member;\n\n public toggleButtonClick() {\n document.body.classList.toggle('mini-navbar');\n }\n}\n","export enum FilterTargets {\n Url,\n Grid,\n}\n","export enum MemberTypes {\n Admin = 'Admin',\n User = 'User'\n}\n","export enum Operators {\n eq = 'eq',\n neq = 'neq',\n isnull = 'isnull',\n isnotnull = 'isnotnull',\n lt = 'lt',\n lte = 'lte',\n gt = 'gt',\n gte = 'gte',\n startswith = 'startswith',\n endswith = 'endswith',\n contains = 'contains',\n doesnotcontain = 'doesnotcontain',\n isempty = 'isempty',\n isnotempty = 'isnotempty',\n}\n","export enum PermissionTypes {\n Create = 'Create',\n Delete = 'Delete',\n Edit = 'Edit',\n View = 'View',\n Set = 'Set',\n}\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { MsalModule, MsalService, MSAL_INSTANCE } from '@azure/msal-angular';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { DateInputsModule } from '@progress/kendo-angular-dateinputs';\nimport { DialogsModule, WindowModule } from '@progress/kendo-angular-dialog';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { ExcelModule, GridModule } from '@progress/kendo-angular-grid';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\nimport {\n OAuthModule,\n OAuthModuleConfig,\n OAuthStorage,\n} from 'angular-oauth2-oidc';\nimport { IndiginaModule } from './angular/indigina.module';\nimport { AppSettings } from './angular/models/AppSettings';\nimport { IndiginaConfiguration } from './angular/models/IndiginaConfiguration';\nimport { LiveUpdatesControlComponent } from './angular/widgets/live-updates-control/live-updates-control.component';\nimport { AccountMenuComponent } from './components/account-menu/account-menu.component';\nimport { AzureLoginCallbackComponent } from './components/azure-login-callback/azure-login-callback.component';\nimport { LanguageSelectorComponent } from './components/language-selector/language-selector.component';\nimport { MSALInstanceFactory } from './config/msal-instance.factory';\nimport { RequirePermissionDirective } from './directives/requirePermission.directive';\nimport { AuthHeadersInterceptor } from './interceptors/auth-headers.interceptor';\nimport { AccountService } from './services/account.service';\nimport { PermissionsService } from './services/permissions.service';\nimport { SignalRService } from './services/signalr/signalr.service';\nimport { ActivityFilterComponent } from './widgets/activity-filter/activity-filter.component';\nimport { ConfirmDialogComponent } from './widgets/confirm-dialog/confirm-dialog.component';\nimport { CurrentTimezoneComponent } from './widgets/current-timezone/current-timezone.component';\nimport { EntityEditButtonsBarComponent } from './widgets/entity-edit/buttons-bar/buttons-bar.component';\nimport { EntityEditFormComponent } from './widgets/entity-edit/entity-edit-form.component';\nimport { FieldDropdownComponent } from './widgets/entity-edit/field-dropdown/field-dropdown.component';\nimport { FieldMultiSelectComponent } from './widgets/entity-edit/field-multiselect/field-multiselect.component';\nimport { EntityListComponent } from './widgets/entity-list/entity-list.component';\nimport { FieldDropdownlistComponent } from './widgets/entity-list/field-dropdownlist/field-dropdownlist.component';\nimport { ExcelExportButtonComponent } from './widgets/excel-export-button/excel-export-button.component';\nimport { FooterBarComponent } from './widgets/footer-bar/footer-bar.component';\nimport { ModalWindowComponent } from './widgets/modal-window/modal-window.component';\nimport { MulticheckFilterComponent } from './widgets/multicheck-filter/multicheck-filter.component';\nimport { TopMenuComponent } from './widgets/top-bar/top-bar.component';\n\n@NgModule({\n declarations: [\n TopMenuComponent,\n FooterBarComponent,\n AccountMenuComponent,\n LanguageSelectorComponent,\n EntityEditButtonsBarComponent,\n EntityEditFormComponent,\n EntityListComponent,\n FieldDropdownComponent,\n FieldMultiSelectComponent,\n FieldDropdownlistComponent,\n ConfirmDialogComponent,\n ExcelExportButtonComponent,\n MulticheckFilterComponent,\n RequirePermissionDirective,\n ActivityFilterComponent,\n CurrentTimezoneComponent,\n ModalWindowComponent,\n LiveUpdatesControlComponent,\n AzureLoginCallbackComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n IndiginaModule,\n OAuthModule.forRoot(),\n PopupModule,\n GridModule,\n ExcelModule,\n InputsModule,\n ButtonsModule,\n DialogsModule,\n CommonModule,\n FormsModule,\n WindowModule,\n DialogsModule,\n ReactiveFormsModule,\n DropDownsModule,\n TooltipModule,\n DateInputsModule,\n MsalModule,\n ],\n providers: [\n { provide: OAuthStorage, useValue: localStorage },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthHeadersInterceptor,\n multi: true,\n },\n AccountService,\n PermissionsService,\n SignalRService,\n MsalService,\n ],\n exports: [\n TopMenuComponent,\n FooterBarComponent,\n AccountMenuComponent,\n LanguageSelectorComponent,\n IndiginaModule,\n PopupModule,\n OAuthModule,\n DropDownsModule,\n TooltipModule,\n DateInputsModule,\n WindowModule,\n DialogsModule,\n PopupModule,\n GridModule,\n ExcelModule,\n InputsModule,\n ButtonsModule,\n EntityEditButtonsBarComponent,\n EntityEditFormComponent,\n EntityListComponent,\n FieldDropdownComponent,\n FieldMultiSelectComponent,\n FieldDropdownlistComponent,\n ConfirmDialogComponent,\n ExcelExportButtonComponent,\n MulticheckFilterComponent,\n RequirePermissionDirective,\n ActivityFilterComponent,\n CurrentTimezoneComponent,\n ModalWindowComponent,\n LiveUpdatesControlComponent,\n MsalModule,\n AzureLoginCallbackComponent,\n ],\n})\nexport class KendoModule {\n public static forRoot(\n config: IndiginaConfiguration\n ): ModuleWithProviders<KendoModule> {\n return {\n ngModule: KendoModule,\n providers: [\n {\n provide: IndiginaConfiguration,\n useValue: config,\n },\n {\n provide: OAuthModuleConfig,\n useValue: {\n resourceServer: {\n allowedUrls: [config.appSettings.apiUrl],\n sendAccessToken: true,\n },\n },\n },\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALInstanceFactory,\n deps: [IndiginaConfiguration],\n },\n ],\n };\n }\n}\n\nexport function OAuthConfigFactory(\n appSettings: AppSettings\n): OAuthModuleConfig {\n return {\n resourceServer: {\n allowedUrls: [appSettings?.apiUrl],\n sendAccessToken: true,\n },\n };\n}\n","import { State, CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { ActivityFilter } from '../../models/ActivityFilter';\nimport { FilterTargets } from '../../models/FilterTargets';\nimport { Operators } from '../../models/Operators';\nexport class FilterConverter {\n public static toGridState(\n filter: ActivityFilter,\n DateFilterFieldName: string\n ): State {\n const gridState: State = {\n filter: {\n logic: 'and',\n filters: [],\n },\n };\n const mainFilter: CompositeFilterDescriptor = {\n logic: 'and',\n filters: [],\n };\n gridState.skip = filter.skip;\n gridState.take = filter.take;\n if (filter.group) {\n gridState.group = filter.group;\n }\n\n if (filter.sort) {\n gridState.sort = filter.sort;\n } else {\n gridState.sort = [{ field: DateFilterFieldName, dir: 'desc' }];\n }\n\n if (filter.dateFrom) {\n mainFilter.filters.push({\n operator: Operators.gte,\n field: DateFilterFieldName,\n value: filter.dateFrom,\n });\n }\n\n if (filter.dateTo) {\n mainFilter.filters.push({\n operator: Operators.lte,\n field: DateFilterFieldName,\n value: filter.dateTo,\n });\n }\n\n filter.customFilters?.forEach((x) => {\n if (x.filterTarget === FilterTargets.Grid) {\n if (x.values && x.values.length) {\n const multiselectFilter: CompositeFilterDescriptor = {\n logic: 'or',\n filters: [],\n };\n x.values.forEach((value) => {\n multiselectFilter.filters.push({\n operator: x.operator,\n field: x.field,\n value,\n });\n });\n\n gridState.filter.filters.push(multiselectFilter);\n } else {\n if (x.value !== null && typeof x.value !== 'undefined') {\n mainFilter.filters.push({\n operator: x.operator,\n field: x.field,\n value: x.value,\n });\n }\n }\n }\n });\n\n if (mainFilter.filters.length) {\n if (gridState.filter.filters.length) {\n gridState.filter.filters.push(mainFilter);\n } else {\n gridState.filter.filters = mainFilter.filters;\n }\n }\n\n return gridState;\n }\n}\n","import { FilterConverter } from '../widgets/activity-filter/FilterConverter';\nimport {\n urlDeserialize,\n urlSerialize,\n} from '../widgets/entity-list/UrlSerializer';\nimport { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport {\n CompositeFilterDescriptor,\n FilterDescriptor,\n State,\n} from '@progress/kendo-data-query';\nimport { ActivityFilter } from '../models/ActivityFilter';\nimport { FilterTargets } from '../models/FilterTargets';\nimport { Operators } from '../models/Operators';\nimport { CustomFilter } from '../models/CustomFilter';\n\nconst filterKey = 'filter';\nconst filtersKey = 'filters';\nconst dateToKey = 'dateTo';\nconst dateFromKey = 'dateFrom';\nconst customFiltersKey = 'customFilters';\nconst nullKey = 'null';\n\n@Injectable()\nexport class ActivityFilterService {\n public currentFilter: ActivityFilter;\n public currentGridState: State;\n\n private readonly defaultFilter: ActivityFilter = {\n dateTo: null,\n dateFrom: null,\n switchToArchive: false,\n searchText: '',\n skip: 0,\n take: 10,\n };\n\n protected DateFilterStartFieldName = 'start';\n protected filterBehavior = new BehaviorSubject<ActivityFilter>(\n this.defaultFilter\n );\n protected gridStateBehavior = new BehaviorSubject<State>(\n FilterConverter.toGridState(\n this.defaultFilter,\n this.DateFilterStartFieldName\n )\n );\n\n public filter$ = this.filterBehavior.asObservable();\n public gridState$ = this.gridStateBehavior.asObservable();\n\n constructor(private route: ActivatedRoute, private router: Router) {\n this.currentFilter = Object.assign({}, this.defaultFilter);\n this.route.fragment.subscribe(async (fragment: string) => {\n const parsed = urlDeserialize(new URLSearchParams(fragment));\n if (Object.keys(parsed).some((key) => key === filterKey)) {\n this.currentGridState = parsed as State;\n this.fillCurrentFilter(parsed);\n } else {\n this.clearFilter();\n this.setTodayDates();\n this.currentGridState = FilterConverter.toGridState(\n this.currentFilter,\n this.DateFilterStartFieldName\n );\n }\n\n this.filterBehavior.next(this.currentFilter);\n });\n\n this.filter$.subscribe((filter) => {\n this.gridStateBehavior.next(\n FilterConverter.toGridState(filter, this.DateFilterStartFieldName)\n );\n });\n }\n\n public reset() {\n this.clearFilter();\n this.applyFilter(this.currentFilter);\n this.gridStateBehavior.next(this.currentGridState);\n }\n\n public setFilter(filter: ActivityFilter) {\n this.currentFilter.skip = 0;\n this.currentFilter = Object.assign(filter);\n this.currentGridState = FilterConverter.toGridState(\n this.currentFilter,\n this.DateFilterStartFieldName\n );\n }\n\n public applyFilter(filter: ActivityFilter) {\n this.setFilter(filter);\n this.stateNavigation(this.prepareFilterToSerialize());\n }\n\n public setToday() {\n this.setTodayDates();\n this.applyFilter(this.currentFilter);\n }\n\n public clearFilter() {\n if (this.currentFilter) {\n const customFilters = Object.assign([], this.currentFilter.customFilters);\n customFilters.forEach((x) => {\n x.value = null;\n if (x.values) {\n x.values = [];\n }\n });\n this.currentFilter = Object.assign({}, this.defaultFilter);\n this.currentFilter.customFilters = customFilters;\n } else {\n this.currentFilter = Object.assign({}, this.defaultFilter);\n }\n }\n\n public setGridState(state: State) {\n this.currentGridState = state;\n const { switchToArchive, searchText } = this.currentFilter;\n this.clearFilter();\n this.currentFilter = Object.assign(this.currentFilter, {\n switchToArchive,\n searchText,\n });\n this.fillCurrentFilter(this.currentGridState);\n this.stateNavigation(this.currentGridState);\n }\n\n public setTodayDates() {\n const now = new Date();\n this.currentFilter.dateTo = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() + 1,\n 0,\n 0,\n 0\n );\n this.currentFilter.dateFrom = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n 0,\n 0,\n 0\n );\n }\n\n private async stateNavigation(object: Object) {\n const navigate = await this.router.navigate([], {\n relativeTo: this.route,\n fragment: urlSerialize(object),\n });\n if (!navigate) {\n this.filterBehavior.next(this.currentFilter);\n }\n }\n\n private prepareFilterToSerialize(): object {\n const result = {};\n Object.keys(this.currentFilter).forEach((key) => {\n if (\n key !== dateToKey &&\n key !== dateFromKey &&\n key !== customFiltersKey\n ) {\n result[key] = this.currentFilter[key];\n }\n });\n\n this.currentFilter.customFilters?.forEach((filter) => {\n if (filter.filterTarget == FilterTargets.Url) {\n result[filter.field] = filter.value;\n }\n });\n\n result[filterKey] = FilterConverter.toGridState(\n this.currentFilter,\n this.DateFilterStartFieldName\n ).filter;\n\n return result;\n }\n\n private fillCurrentFilter(object: State) {\n this.currentFilter.customFilters = [];\n this.fillFromDescriptor(object.filter);\n Object.keys(object).forEach((key) => {\n if (key !== filterKey && key !== nullKey && key !== filtersKey) {\n if (Object.keys(this.currentFilter).some((x) => x == key)) {\n this.currentFilter[key] = object[key];\n } else {\n this.fillUrlFilter(key, object[key]);\n }\n }\n });\n }\n\n private fillUrlFilter(key: string, val: string) {\n const index = this.currentFilter.customFilters.findIndex(\n (filter) => filter.field == key\n );\n if (index !== -1) {\n this.currentFilter.customFilters[index].value = val;\n } else {\n this.currentFilter.customFilters.push({\n field: key,\n value: val,\n operator: Operators.eq,\n filterTarget: FilterTargets.Url,\n });\n }\n }\n\n private fillFromDescriptor(gridFilter: CompositeFilterDescriptor) {\n gridFilter?.filters.forEach(\n (filter: CompositeFilterDescriptor | FilterDescriptor) => {\n const filterDescriptor = filter as FilterDescriptor;\n if (\n filterDescriptor.field === this.DateFilterStartFieldName &&\n filterDescriptor.operator === Operators.lte\n ) {\n this.currentFilter.dateTo = filterDescriptor.value;\n }\n\n if (\n filterDescriptor.field === this.DateFilterStartFieldName &&\n filterDescriptor.operator === Operators.gte\n ) {\n this.currentFilter.dateFrom = filterDescriptor.value;\n }\n\n if (\n filterDescriptor.field &&\n filterDescriptor.field !== this.DateFilterStartFieldName\n ) {\n this.setFieldFilter({\n field: filterDescriptor.field as string,\n filterTarget: FilterTargets.Grid,\n operator: Operators[filterDescriptor.operator as string],\n value: filterDescriptor.value,\n });\n }\n\n const compositeFilterDescriptor = filter as CompositeFilterDescriptor;\n if (compositeFilterDescriptor.filters) {\n this.fillFromDescriptor(compositeFilterDescriptor);\n }\n }\n );\n }\n\n private setFieldFilter(filter: CustomFilter) {\n const index = this.currentFilter.customFilters.findIndex(\n (x) => x.field === filter.field && x.operator === filter.operator\n );\n if (index !== -1) {\n const values = this.currentFilter.customFilters[index].values;\n const value = this.currentFilter.customFilters[index].value;\n this.currentFilter.customFilters[index].values = values ? values : [];\n if (value) {\n this.currentFilter.customFilters[index].values.push(value as string);\n this.currentFilter.customFilters[index].value = null;\n }\n\n this.currentFilter.customFilters[index].values.push(\n filter.value as string\n );\n } else {\n this.currentFilter.customFilters.push(filter);\n }\n }\n}\n","import { IEntityService } from './IEntityService';\nimport { Page } from '../models/Page';\nimport { IEntityEndpoints } from './IEntityEndpoints';\nimport { Observable } from 'rxjs';\nimport { State } from '@progress/kendo-data-query/dist/npm/state';\nimport { IdentifiedModel } from '../angular/models/IdentifiedModel';\nimport { HttpService } from '../angular/services/http.service';\n\nexport abstract class EntityService<T extends IdentifiedModel>\n implements IEntityService<T>\n{\n constructor(\n protected httpService: HttpService,\n protected endpoints: IEntityEndpoints\n ) {}\n\n getPage(state: State): Observable<Page<T>> {\n return this.httpService.get<Page<T>>(this.endpoints.query(state));\n }\n\n get(id: string): Observable<T> {\n return this.httpService.get<T>(this.endpoints.entityPath(id));\n }\n\n delete(id: string): Observable<object> {\n return this.httpService.delete(this.endpoints.entityPath(id));\n }\n\n save(model: T): Observable<T> {\n if (model.id) {\n return this.httpService.put(this.endpoints.entityPath(model.id), model);\n }\n\n return this.httpService.post(this.endpoints.path, model);\n }\n}\n","import { EventEmitter } from '@angular/core';\nimport { FormGroupWithErrors } from '../../angular/forms/extensions/FormGroupWithErrors';\nimport { IdentifiedModel } from '../../angular/models/IdentifiedModel';\nimport { IEntityService } from '../../services/IEntityService';\nimport { IFormAdapter } from './IFormAdapter';\n\nexport abstract class EntityEditComponent<T extends IdentifiedModel>\n implements IFormAdapter<T>\n{\n form: FormGroupWithErrors;\n saved = new EventEmitter<T>();\n get adapter() {\n return this;\n }\n\n constructor(public service: IEntityService<T>) {}\n\n getValue(): T {\n return this.form.value;\n }\n\n getService(): IEntityService<T> {\n return this.service;\n }\n\n setForm(form: FormGroupWithErrors): void {\n this.form = form;\n }\n\n onSaved(value: T): void {\n this.saved.emit(value);\n }\n}\n","import * as momentModule from 'moment-timezone';\n/*\n * Public API Surface of kendo\n */\nexport * from '@angular/platform-browser/animations';\nexport * from '@azure/msal-angular';\nexport { LogLevel } from '@microsoft/signalr';\nexport * from '@ngx-loading-bar/http-client';\nexport * from '@ngx-translate/core';\nexport {\n OAuthModule,\n OAuthModuleConfig,\n OAuthService,\n OAuthStorage,\n} from 'angular-oauth2-oidc';\nexport * from 'ngx-clipboard';\nexport * from 'ngx-toastr';\nexport { IndiginaModule } from '././lib/angular/indigina.module';\nexport { BaseAccountService } from '././lib/services/base.account.service';\nexport { ISubscriptionControl } from './lib/angular/extensions/ISubscriptionControl';\nexport { ReEntrySubscription } from './lib/angular/extensions/ReEntrySubscription';\nexport { DebounceDirective } from './lib/angular/forms/directives/debounce.directive';\nexport { FormGroupWithErrors } from './lib/angular/forms/extensions/FormGroupWithErrors';\nexport { FieldInputComponent } from './lib/angular/forms/widgets/field/field-input/field-input.component';\nexport { NumberInputComponent } from './lib/angular/forms/widgets/field/field-input/number-input.component';\nexport { FieldComponent } from './lib/angular/forms/widgets/field/field.component';\nexport { GeneralErrorsComponent } from './lib/angular/forms/widgets/general-errors/general-errors.component';\nexport { AppSettings } from './lib/angular/models/AppSettings';\nexport type { CustomHttpErrorResponse } from './lib/angular/models/CustomHttpErrorResponse';\nexport { HttpCodes } from './lib/angular/models/HttpCodes';\nexport { HttpMethods } from './lib/angular/models/HttpMethods';\nexport { IdentifiedModel } from './lib/angular/models/IdentifiedModel';\nexport { IndiginaConfiguration } from './lib/angular/models/IndiginaConfiguration';\nexport { Language } from './lib/angular/models/Language';\nexport { NamedModel } from './lib/angular/models/NamedModel';\nexport { HttpService } from './lib/angular/services/http.service';\nexport { LocaleSettingsService } from './lib/angular/services/locale-settings.service';\nexport { SettingsService } from './lib/angular/services/settings.service';\nexport { AppToastrService } from './lib/angular/services/toastr.service';\nexport { LiveUpdatesControlComponent } from './lib/angular/widgets/live-updates-control/live-updates-control.component';\nexport { MenuItem } from './lib/angular/widgets/side-menu/MenuItem';\nexport { SideMenuComponent } from './lib/angular/widgets/side-menu/side-menu.component';\nexport { TreeViewComponent } from './lib/angular/widgets/tree-view/tree-view.component';\nexport { AccountMenuComponent } from './lib/components/account-menu/account-menu.component';\nexport { AzureLoginCallbackComponent } from './lib/components/azure-login-callback/azure-login-callback.component';\nexport { LanguageSelectorComponent } from './lib/components/language-selector/language-selector.component';\nexport { MSALInstanceFactory } from './lib/config/msal-instance.factory';\nexport { RequirePermissionDirective } from './lib/directives/requirePermission.directive';\nexport { KendoModule } from './lib/kendo.module';\nexport { ActivityFilter } from './lib/models/ActivityFilter';\nexport { AzureB2CSettings } from './lib/models/AzureB2CSettings';\nexport { CustomFilter } from './lib/models/CustomFilter';\nexport { CustomFilterElement } from './lib/models/CustomFilterElement';\nexport { FieldTypes } from './lib/models/FieldTypes';\nexport { FilterTargets } from './lib/models/FilterTargets';\nexport { Member } from './lib/models/Member';\nexport { MemberBase } from './lib/models/MemberBase';\nexport { MemberTypes } from './lib/models/MemberTypes';\nexport { OidcSettings } from './lib/models/OidcSettings';\nexport { Operators } from './lib/models/Operators';\nexport { Page } from './lib/models/Page';\nexport { Permissions } from './lib/models/Permissions';\nexport { PermissionTypes } from './lib/models/PermissionTypes';\nexport { SystemInfo } from './lib/models/SystemInfo';\nexport { AccountService } from './lib/services/account.service';\nexport { ActivityFilterService } from './lib/services/activity.filter.service';\nexport { AuthProviderResolver } from './lib/services/auth-provider.resolver';\nexport { AuthProvider } from './lib/services/auth.providers/AuthProvider';\nexport {\n buildActivityEndpoints,\n buildEntityEndpoints,\n endpoints,\n} from './lib/services/endpoints';\nexport { EntityService } from './lib/services/entity.service';\nexport { IActivityEndpoints } from './lib/services/IActivityEndpoints';\nexport { IEntityEndpoints } from './lib/services/IEntityEndpoints';\nexport { IEntityService } from './lib/services/IEntityService';\nexport { PermissionsService } from './lib/services/permissions.service';\nexport { EventNames } from './lib/services/signalr/EventNames';\nexport { SignalRService } from './lib/services/signalr/signalr.service';\nexport { ActivityFilterComponent } from './lib/widgets/activity-filter/activity-filter.component';\nexport { ConfirmDialogComponent } from './lib/widgets/confirm-dialog/confirm-dialog.component';\nexport { CurrentTimezoneComponent } from './lib/widgets/current-timezone/current-timezone.component';\nexport { EntityEditButtonsBarComponent } from './lib/widgets/entity-edit/buttons-bar/buttons-bar.component';\nexport { EntityEditFormComponent } from './lib/widgets/entity-edit/entity-edit-form.component';\nexport { EntityEditComponent } from './lib/widgets/entity-edit/entity-edit.component';\nexport { FieldDropdownComponent } from './lib/widgets/entity-edit/field-dropdown/field-dropdown.component';\nexport { FieldMultiSelectComponent } from './lib/widgets/entity-edit/field-multiselect/field-multiselect.component';\nexport { Command } from './lib/widgets/entity-list/Command';\nexport { EntityListComponent } from './lib/widgets/entity-list/entity-list.component';\nexport { Field } from './lib/widgets/entity-list/Field';\nexport { FieldDropdownlistComponent } from './lib/widgets/entity-list/field-dropdownlist/field-dropdownlist.component';\nexport {\n urlDeserialize,\n urlSerialize,\n} from './lib/widgets/entity-list/UrlSerializer';\nexport { ExcelExportButtonComponent } from './lib/widgets/excel-export-button/excel-export-button.component';\nexport { FooterBarComponent } from './lib/widgets/footer-bar/footer-bar.component';\nexport { ModalWindowComponent } from './lib/widgets/modal-window/modal-window.component';\nexport { MulticheckFilterComponent } from './lib/widgets/multicheck-filter/multicheck-filter.component';\nexport { TopMenuComponent } from './lib/widgets/top-bar/top-bar.component';\nexport const momentTimezone = momentModule;\n","import { NamedModel } from './NamedModel';\n\nexport const HttpMethods: NamedModel[] = [\n { name: 'POST', id: 'POST' },\n { name: 'PUT', id: 'PUT' },\n { name: 'GET', id: 'GET' },\n { name: 'DELETE', id: 'DELETE' },\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../projects/kendo/src/lib/angular/forms/directives/debounce.directive.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/kendo/src/lib/angular/forms/widgets/field/field.component.ts","../../../projects/kendo/src/lib/angular/forms/widgets/field/field-input/field-input.component.ts","../../../projects/kendo/src/lib/angular/forms/widgets/field/field-input/number-input.component.ts","../../../projects/kendo/src/lib/angular/forms/widgets/general-errors/general-errors.component.ts","../../../projects/kendo/src/lib/angular/models/AppSettings.ts","../../../projects/kendo/src/lib/angular/models/IndiginaConfiguration.ts","../../../projects/kendo/src/lib/angular/services/locale-settings.service.ts","../../../projects/kendo/src/lib/angular/widgets/side-menu/menu-item-group/menu-item-group.component.ts","../../../projects/kendo/src/lib/angular/widgets/side-menu/side-menu.component.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/models/TreeViewPropTypes.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/models/TreeViewNodeTypes.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/tree-view-node-prop/tree-view-node-prop.component.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/models/ContentTypesFormat.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/tree-view-node/tree-view-node.component.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/AbstractContentResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/EnumTypeGetter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/JsonConverter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Resolvers/JsonResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/TextConverter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Resolvers/TextResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Converters/XmlConverter.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/Resolvers/XmlResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/ContentResolver/ContentResolver.ts","../../../projects/kendo/src/lib/angular/widgets/tree-view/tree-view.component.ts","../../../projects/kendo/src/lib/angular/indigina.module.ts","../../../projects/kendo/src/lib/services/signalr/EventNames.ts","../../../projects/kendo/src/lib/services/endpoints.ts","../../../projects/kendo/src/lib/services/base.account.service.ts","../../../projects/kendo/src/lib/angular/models/HttpCodes.ts","../../../projects/kendo/src/lib/angular/extensions/ReEntrySubscription.ts","../../../projects/kendo/src/lib/angular/forms/extensions/FormGroupWithErrors.ts","../../../projects/kendo/src/lib/angular/services/settings.service.ts","../../../projects/kendo/src/lib/angular/services/toastr.service.ts","../../../projects/kendo/src/lib/angular/services/http.service.ts","../../../projects/kendo/src/lib/models/AuthProviders.ts","../../../projects/kendo/src/lib/angular/widgets/live-updates-control/live-updates-control.component.ts","../../../projects/kendo/src/lib/services/auth.providers/AuthProvider.ts","../../../projects/kendo/src/lib/services/auth.providers/azureb2c.provider.ts","../../../projects/kendo/src/lib/services/auth.providers/oauth.provider.ts","../../../projects/kendo/src/lib/services/auth-provider.resolver.ts","../../../projects/kendo/src/lib/services/signalr/signalr.service.ts","../../../projects/kendo/src/lib/services/account.service.ts","../../../projects/kendo/src/lib/components/account-menu/account-menu.component.ts","../../../projects/kendo/src/lib/components/azure-login-callback/azure-login-callback.component.ts","../../../projects/kendo/src/lib/components/language-selector/language-selector.component.ts","../../../projects/kendo/src/lib/config/msal-instance.factory.ts","../../../projects/kendo/src/lib/services/permissions.service.ts","../../../projects/kendo/src/lib/directives/requirePermission.directive.ts","../../../projects/kendo/src/lib/interceptors/auth-headers.interceptor.ts","../../../projects/kendo/src/lib/models/FieldTypes.ts","../../../projects/kendo/src/lib/widgets/activity-filter/activity-filter.component.ts","../../../projects/kendo/src/lib/widgets/confirm-dialog/confirm-dialog.component.ts","../../../projects/kendo/src/lib/widgets/current-timezone/current-timezone.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/buttons-bar/buttons-bar.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/entity-edit-form.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/field-dropdown/field-dropdown.component.ts","../../../projects/kendo/src/lib/widgets/entity-edit/field-multiselect/field-multiselect.component.ts","../../../projects/kendo/src/lib/widgets/entity-list/UrlSerializer.ts","../../../projects/kendo/src/lib/widgets/entity-list/entity-list.component.ts","../../../projects/kendo/src/lib/widgets/entity-list/field-dropdownlist/field-dropdownlist.component.ts","../../../projects/kendo/src/lib/widgets/excel-export-button/excel-export-button.component.ts","../../../projects/kendo/src/lib/widgets/footer-bar/footer-bar.component.ts","../../../projects/kendo/src/lib/widgets/modal-window/modal-window.component.ts","../../../projects/kendo/src/lib/widgets/multicheck-filter/multicheck-filter.component.ts","../../../projects/kendo/src/lib/widgets/top-bar/top-bar.component.ts","../../../projects/kendo/src/lib/models/FilterTargets.ts","../../../projects/kendo/src/lib/models/MemberTypes.ts","../../../projects/kendo/src/lib/models/Operators.ts","../../../projects/kendo/src/lib/models/PermissionTypes.ts","../../../projects/kendo/src/lib/kendo.module.ts","../../../projects/kendo/src/lib/widgets/activity-filter/FilterConverter.ts","../../../projects/kendo/src/lib/services/activity.filter.service.ts","../../../projects/kendo/src/lib/services/entity.service.ts","../../../projects/kendo/src/lib/widgets/entity-edit/entity-edit.component.ts","../../../projects/kendo/src/public-api.ts","../../../projects/kendo/src/lib/angular/models/HttpMethods.ts"],"names":["DebounceDirective","this","debounceTime","debounceKeyup","EventEmitter","keyUp","Subject","prototype","ngOnInit","_this","subscription","pipe","subscribe","e","emit","ngOnDestroy","unsubscribe","keyUpEvent","event","preventDefault","stopPropagation","next","Directive","args","selector","Input","Output","HostListener","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","id","FieldComponent","parent","eref","defaultValue","disabled","disabledKey","setUp","fieldName","validators","_b","nativeElement","attributes","_c","attr","validator","setAttribute","name","control","form","get","setValidators","updateValueAndValidity","addControl","FormControl","Validators","required","FormGroupDirective","ElementRef","FieldInputComponent","_super","type","maxLength","parseInt","Component","template","viewProviders","provide","ControlContainer","useExisting","NumberInputComponent","isPositive","ngAfterContentInit","valueChanges","cachedValue","setValue","GeneralErrorsComponent","errors","setErrors","_general_errors_","Injectable","providedIn","languageKey","LocaleSettingsService","translate","languages","code","init","addLangs","map","x","localeId","getLocale","setLocale","getLocales","localStorage","getItem","locale","use","setItem","TranslateService","MenuItemGroupComponent","router","collapsed","isActive","url","exact","_a","routerState","snapshot","root","children","toString","routeConfig","path","split","setActualPath","events","NavigationEnd","ngOnChanges","setItemExpand","collapseChild","activeItem","item","expanded","text","items","some","undefined","link","actualPath","Router","TreeViewPropTypes","SideMenuComponent","logoClick","onLogoClick","collapse","itemComponent","forEach","TreeViewNodeTypes","TreeViewNodePropComponent","defineProperty","isArrayValue","isObjectValue","prop","propType","Number","expandAll","treeViewNodes","collapseAll","ViewChildren","ContentTypesFormat","TreeViewNodeComponent","node","nodeType","Primitive","props","startTag","hasExpand","toggleExpand","treeViewProps","AbstractContentResolver","resolver","nextResolver","data","getPropTypeFromKey","key","values","find","objectBrackets","inside","outside","arrayBrackets","JsonConverter","convert","source","isArray","convertArray","convertObject","keys","propType_1","brackets","nodes","index","getPrimitive","assign","JsonResolver","json","JSON","parse","format","Json","TextConverter","TextResolver","Text","XmlConverter","childElementCount","childNodes","convertProp","tagName","textContent","endTag","childs","childs_1","childs_1_1","XmlResolver","oDOM","DOMParser","parseFromString","all","getElementsByTagName","Xml","ContentResolver","chain","TreeViewComponent","clipboardService","maxTextLength","maxRootItems","resolved","hasTextCollapse","hasNodeCollapse","rawView","contentResolver","allShow","hasCollapse","expandToggle","toggleExpandAll","toggleRawView","copyToClipboard","copy","ClipboardService","defaultConfig","langs","getTranslation","of","appSettings","accountUrl","apiUrl","toastrTimeOut","oidc","clientId","authority","issuer","azureB2C","knownAuthorities","IndiginaModule","forRoot","configuration","ngModule","providers","APP_INITIALIZER","useFactory","LocaleServiceSettingsFactory","multi","deps","IndiginaConfiguration","useValue","localeService","TranslateLoaderFactory","AppSettingsFactory","NgModule","declarations","imports","BrowserModule","HttpClientModule","TranslateModule","forChild","loader","TranslateLoader","HttpClient","LoadingBarHttpClientModule","CommonModule","RouterModule","ReactiveFormsModule","ToastrModule","BrowserAnimationsModule","ɵ0$3","AppSettings","TranslateStore","exports","ClipboardModule","EventNames","endpoints","signalr","eventsHub","config","members","me","admins","buildEntityEndpoints","roles","system","info","firstUser","partners","permissions","member","mine","users","apiTokens","guidFormat","query","state","toODataString","utcDates","replace","entityPath","HttpCodes","adminUriPart","BaseAccountService","httpService","settingsService","signalRService","user","BehaviorSubject","getProvider","provider","initialize","login","logout","clearLoginAsUser","getCurrentUser","getCallbackPath","clearCallbackPath","window","location","href","origin","isAdmin","pathname","startsWith","getAccessToken","token","startConnection","on","UserUpdated","reconnect","mergeMap","getValue","isUserLoggedIn","ReEntrySubscription","observable","action","closed","resume","pause","FormGroupWithErrors","controls","validatorOrOpts","asyncValidator","generalErrors","getControl","contains","applyServerErrors","title","ctrl","serverErrorMsg","join","FormGroup","callbackPathKey","loginAsKey","tokenKey","SettingsService","putCurrentCallbackPath","putCallbackPath","hash","pathUri","removeItem","setLoginAsUser","getLoginAsUser","setToken","getToken","AppToastrService","toastr","timeout","showError","message","timeOut","showSuccess","success","ToastrService","absoluteUrlRegExp","HttpService","appToastrService","httpClient","createUrl","catchError","err","handleServerError","delete","tap","showSuccessMessage","post","successTranslateMessage","put","test","ErrorEvent","status","Unauthorized","instant","Forbidden","navigate","NotFound","setTimeout","InternalServerError","throwError","AuthProviders","LiveUpdatesControlComponent","toggle","connected","AzureB2CProvider","authService","instance","getActiveAccount","localAccountId","loginRedirect","logoutRedirect","postLogoutRedirectUri","request","scopes","from","acquireTokenSilent","authenticationResult","idToken","catch","InteractionRequiredAuthError","acquireTokenRedirect","AuthProvider","OAuthProvider","oauthService","hasValidAccessToken","authConfig","redirectUri","scope","silentRefreshRedirectUri","configure","initLoginFlow","logOut","tokenValidationHandler","JwksValidationHandler","setupAutomaticSilentRefresh","loadDiscoveryDocument","tryLoginImplicitFlow","msalService","indiginaConfiguration","AuthProvider$","filter","identityProvider","IdentityServer","OAuthService","MsalService","SignalRService","isConnectionEstablished","eventEmitters","createConnection","hubConnection","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","configureLogging","signalRLogLevel","LogLevel","None","build","onclose","start","eventName","model","console","warn","stop","AccountService","AuthProviderResolver","AccountMenuComponent","accountService","expand","languageSelectorVisible","firstName","lastName","toogle","openLanguageSelector","clickedOutside","target","ViewChild","AzureLoginCallbackComponent","handleRedirectObservable","setActiveAccount","account","LanguageSelectorComponent","settings","visibleChange","currentLanguageCode","changeLanguage","close","visible","isIE","navigator","userAgent","indexOf","MSALInstanceFactory","msalConfig","auth","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","SessionStorage","storeAuthStateInCookie","loggerOptions","loggerCallback","piiLoggingEnabled","PublicClientApplication","PermissionsService","loaded","PermissionsUpdated","getPermissionsFromServer","getAll","memberType","getMine","hiddenClass","RequirePermissionDirective","elementRef","route","permissionsService","renderer","hide","category","permissionCategory","getRouteCategory","hasType","show","addClass","removeClass","types","permissionType","includes","routeData","permission","ActivatedRoute","Renderer2","FieldTypes","AuthHeadersInterceptor","intercept","headers","modified","clone","setHeaders","Authorization","handle","ActivityFilterComponent","showArchiveSwitcher","showSearhText","defaultNamedModel","customFilterElements","element","valueField","filterService","filter$","changeFilter","setTodayFilter","setToday","clearFilter","reset","emitChangeEvents","applyFilter","setCustomFilters","fieldChange","change","fillFilter","customFilters","field","filterTarget","findIndex","splice","fixMultiselectFilters","multiSelectFilters","fieldType","Multiselect","ConfirmDialogComponent","dialogService","cancel","dialog","callback","confirm","open","content","actions","dialogActions","DialogService","static","moment","momentModule","CurrentTimezoneComponent","timeZone","tz","guess","timeZoneAndOffset","save","EntityEditFormComponent","saveInProgress","params","formGroup","adapter","getService","setForm","finalize","onSaved","FieldDropdownComponent","getData","service","getPage","FieldMultiSelectComponent","urlSerialize","object","serialized","serializedObject","isEmptyObject","stringify","slice","isDate","date","isNaN","Date","urlDeserialize","deserialized","param","gridFilter","transformFilters","filters","filterDescriptor","compositeFilterDescriptor","nameField","EntityListComponent","filterChange","gridState","loadings","selected","gridFields","defaultFields","sortable","position","getAllData","bind","getRowClass","changes","firstChange","getFilteredData","fields","sort","left","right","commands","fragment","restoreGridState","URLSearchParams","firstChild","removeHandler","dataItem","remove","selectItem","relativeTo","onActivate","child","saved","updateGrid","onDeactivate","dataStateChange","skip","onSearch","searchTerm","take","context","rowClass","getFilter","exists","page","total","preserveFragment","entity","logic","operator","onFilterChange","defaultGridState","defaultSort","dir","FieldDropdownlistComponent","valueChange","defaultItem","onLangChange","initialSelectedId","selectedItem","kendoDropDown","writeValue","onValueChange","initSelectedId","ModalWindowComponent","opened","callbackPath","MulticheckFilterComponent","showFilter","ngAfterViewInit","currentData","traverseFilters","currentFilter","innerFilter","isItemSelected","ValueKey","onSelectionChange","selectedValue","onInput","distinct","val","filterBy","TopMenuComponent","toggleButtonClick","document","classList","FilterTargets","MemberTypes","Operators","PermissionTypes","KendoModule","OAuthModuleConfig","resourceServer","allowedUrls","sendAccessToken","MSAL_INSTANCE","FooterBarComponent","EntityEditButtonsBarComponent","ExcelExportButtonComponent","OAuthModule","PopupModule","GridModule","ExcelModule","InputsModule","ButtonsModule","DialogsModule","FormsModule","WindowModule","DropDownsModule","TooltipModule","DateInputsModule","MsalModule","OAuthStorage","ɵ0","HTTP_INTERCEPTORS","useClass","FilterConverter","toGridState","DateFilterFieldName","mainFilter","group","dateFrom","gte","dateTo","lte","Grid","multiselectFilter_1","filterKey","ActivityFilterService","defaultFilter","switchToArchive","searchText","DateFilterStartFieldName","filterBehavior","gridStateBehavior","asObservable","gridState$","parsed","currentGridState","fillCurrentFilter","setTodayDates","setFilter","stateNavigation","prepareFilterToSerialize","setGridState","now","getFullYear","getMonth","getDate","Url","fillFromDescriptor","fillUrlFilter","eq","setFieldFilter","EntityService","EntityEditComponent","momentTimezone","search","uri","detailedActivity","partnerId"],"mappings":"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","sourcesContent":["import {\n Directive,\n HostListener,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n Input\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[appDebounce]'\n})\nexport class DebounceDirective implements OnInit, OnDestroy {\n @Input() debounceTime = 500;\n @Output() debounceKeyup = new EventEmitter();\n private keyUp = new Subject();\n private subscription: Subscription;\n\n constructor() { }\n\n ngOnInit() {\n this.subscription = this.keyUp.pipe(\n debounceTime(this.debounceTime)\n ).subscribe(e => this.debounceKeyup.emit(e));\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n @HostListener('keyup', ['$event'])\n\n keyUpEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n this.keyUp.next(event);\n }\n}\n","/*! *****************************************************************************\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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 { OnInit, Input, ElementRef, Directive } from '@angular/core';\nimport {\n FormGroupDirective,\n FormControl,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nlet id: number = 0;\n\n@Directive()\nexport abstract class FieldComponent<T> implements OnInit {\n @Input() labelKey: string;\n @Input() fieldName: string;\n @Input() disabled: boolean = false;\n \n public disabledKey = 'disabled';\n public id: string;\n\n constructor(\n public parent: FormGroupDirective,\n public eref: ElementRef,\n private defaultValue: T\n ) {}\n\n ngOnInit(): void {\n this.setUp();\n }\n\n protected setUp(): void {\n this.id = '_' + this.fieldName + ++id;\n const validators: ValidatorFn[] = [];\n for (const attr of this.eref.nativeElement.attributes as [\n { name: string; value: string }\n ]) {\n const validator = this.setAttribute(attr.name, attr.value);\n if (validator) {\n validators.push(validator);\n }\n }\n\n const control = this.parent.form.get(this.fieldName);\n if (control) {\n if (control.validator) {\n validators.push(control.validator);\n }\n\n control.setValidators(validators);\n control.updateValueAndValidity();\n } else {\n this.parent.form.addControl(\n this.fieldName,\n new FormControl(this.defaultValue, validators)\n );\n }\n }\n\n protected setAttribute(name: string, value: string): ValidatorFn {\n if (name === this.disabledKey) {\n this.disabled = true;\n\n return;\n }\n\n if (name === 'required') {\n return Validators.required;\n }\n }\n}\n","import { Component, ElementRef, Input } from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n Validators,\n ValidatorFn,\n} from '@angular/forms';\nimport { FieldComponent } from '../field.component';\n\n@Component({\n selector: 'field-input',\n templateUrl: './field-input.component.html',\n styleUrls: ['./field-input.component.css'],\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class FieldInputComponent extends FieldComponent<string> {\n @Input()\n public labelKey: string;\n @Input()\n public fieldName: string;\n\n public type = 'text';\n\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref, '');\n }\n\n protected setAttribute(name: string, value: string): ValidatorFn {\n if (name === 'type') {\n this.type = value;\n }\n\n if (name === 'max-length') {\n return Validators.maxLength(parseInt(value, 10));\n }\n\n return super.setAttribute(name, value);\n }\n}\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { FieldInputComponent } from './field-input.component';\n\nconst emptyString = '';\n\n@Component({\n selector: 'number-input',\n templateUrl: './field-input.component.html',\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class NumberInputComponent extends FieldInputComponent {\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref);\n this.type = 'number';\n }\n\n @Input() isPositive: boolean = false;\n\n private cachedValue: number | string;\n\n ngAfterContentInit() {\n const control = this.parent.form.get(this.fieldName);\n control.valueChanges.subscribe((value) => {\n if (value !== this.cachedValue) {\n this.cachedValue =\n (!this.isPositive && (value || value === 0)) ||\n (this.isPositive && value >= 0 && value !== emptyString)\n ? +value\n : emptyString;\n\n control.setValue(this.cachedValue);\n }\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-general-errors',\n templateUrl: './general-errors.component.html',\n styleUrls: ['./general-errors.component.css']\n})\nexport class GeneralErrorsComponent {\n\n @Input() form: FormGroup;\n errors: string[] = [];\n constructor() { }\n\n setErrors(errors: string[]): void {\n this.errors = errors;\n if (errors.length) {\n this.form.setErrors({'_general_errors_': errors });\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { LogLevel } from '@microsoft/signalr';\nimport { AzureB2CSettings } from '../../models/AzureB2CSettings';\nimport { OidcSettings } from '../../models/OidcSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class AppSettings {\n apiUrl: string;\n accountUrl: string;\n toastrTimeOut: number;\n signalRLogLevel?: LogLevel;\n oidc: OidcSettings;\n azureB2C: AzureB2CSettings;\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { AppSettings } from './AppSettings';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class IndiginaConfiguration {\n langs?: TranslateLoader;\n appSettings?: AppSettings;\n}\n","import { Injectable } from '@angular/core';\nimport { Language } from '../models/Language';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst languageKey = 'language';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocaleSettingsService {\n private languages: Language[] = [\n { name: 'English', code: 'en-US' },\n { name: 'Русский', code: 'ru-RU' },\n ];\n private localeId: string;\n\n constructor(private translate: TranslateService) {}\n\n init(): void {\n this.translate.addLangs(this.languages.map((x) => x.code));\n this.localeId = this.getLocale();\n this.setLocale(this.localeId || this.languages[0].code);\n }\n\n getLocales(): Language[] {\n return this.languages;\n }\n\n getLocale(): string {\n if (localStorage) {\n return localStorage.getItem(languageKey) || this.localeId;\n } else {\n return this.localeId;\n }\n }\n\n setLocale(locale: string) {\n this.translate.use(locale);\n this.localeId = locale;\n if (localStorage) {\n localStorage.setItem(languageKey, locale);\n }\n }\n}\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { MenuItem } from '../MenuItem';\nimport {\n Router,\n NavigationEnd,\n RouterStateSnapshot,\n UrlTree,\n} from '@angular/router';\n\nconst urlDelimiter = '/';\nconst collapsedEvent = 'collapsed';\n\n@Component({\n selector: '[menu-item-group]',\n templateUrl: './menu-item-group.component.html',\n styleUrls: ['./menu-item-group.component.css'],\n})\nexport class MenuItemGroupComponent implements OnChanges, OnInit {\n @Input() item: MenuItem;\n collapsed: boolean = false;\n private actualPath: string;\n\n constructor(private router: Router) {\n this.router.isActive = function (\n url: string | UrlTree,\n exact: boolean\n ): boolean {\n return this.routerState.snapshot.root.children?.length\n ? url.toString() ===\n urlDelimiter +\n this.routerState.snapshot.root.children[0].routeConfig.path.split(\n '/:'\n )[0]\n : false;\n };\n }\n\n ngOnInit(): void {\n this.setActualPath(this.router.routerState.snapshot);\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.setActualPath(this.router.routerState.snapshot);\n }\n });\n }\n\n ngOnChanges(): void {\n this.setItemExpand();\n }\n\n collapseChild(activeItem: MenuItem, event: MouseEvent) {\n this.item.expanded =\n this.item.text === activeItem.text &&\n !this.item.expanded &&\n !!this.item.items;\n\n if (!activeItem.items || activeItem.items.length === 0) {\n event[collapsedEvent] = true;\n } else {\n event[collapsedEvent] = false;\n }\n }\n\n private setItemExpand() {\n this.item.expanded = this.item.items?.some((x) => {\n return x.link !== undefined && x.link === this.actualPath;\n });\n }\n\n private setActualPath(snapshot: RouterStateSnapshot): void {\n if (snapshot.root.children?.length) {\n this.actualPath =\n urlDelimiter +\n snapshot.root.children[0].routeConfig.path.split('/:')[0];\n this.setItemExpand();\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MenuItemGroupComponent } from './menu-item-group/menu-item-group.component';\nimport { MenuItem } from './MenuItem';\n\nconst collapsedEvent = 'collapsed';\n@Component({\n selector: 'side-menu',\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.css'],\n})\nexport class SideMenuComponent {\n @Input() items: MenuItem[];\n @Output() logoClick = new EventEmitter();\n\n onLogoClick() {\n this.logoClick.emit();\n }\n\n collapse(\n itemComponent: MenuItemGroupComponent,\n activeItem: MenuItem,\n event: MouseEvent\n ) {\n this.items?.forEach((item) => {\n if (item.text !== activeItem.text && item.expanded) {\n item.expanded = false;\n }\n });\n if (event[collapsedEvent]) {\n itemComponent.collapsed = true;\n } else {\n itemComponent.collapsed = false;\n }\n }\n}\n","export enum TreeViewPropTypes {\n String = 'string',\n Number = 'number',\n Object = 'object',\n Array = 'array',\n}\n","export enum TreeViewNodeTypes {\n Object = 'object',\n Array = 'array',\n Primitive = 'primitive',\n}\n","import { Component, Input, QueryList, ViewChildren } from '@angular/core';\nimport { TreeViewProp } from '../models/TreeViewProp';\nimport { TreeViewPropTypes } from '../models/TreeViewPropTypes';\nimport { TreeViewNodeComponent } from '../tree-view-node/tree-view-node.component';\n\n@Component({\n selector: 'tree-view-node-prop',\n templateUrl: './tree-view-node-prop.component.html',\n styleUrls: ['./tree-view-node-prop.component.css'],\n})\nexport class TreeViewNodePropComponent {\n @ViewChildren('node') treeViewNodes: QueryList<TreeViewNodeComponent>;\n\n @Input() prop: TreeViewProp;\n\n public get isSimpleValue(): boolean {\n return !this.isArrayValue && !this.isObjectValue;\n }\n\n public get isArrayValue(): boolean {\n return this.prop.propType === TreeViewPropTypes.Array;\n }\n\n public get isObjectValue(): boolean {\n return this.prop.propType === TreeViewPropTypes.Object;\n }\n\n public get propClass(): string {\n return this.prop.propType === TreeViewPropTypes.Number\n ? 'number'\n : 'string';\n }\n\n public expandAll(): void {\n this.treeViewNodes.forEach((x) => x.expandAll());\n }\n\n public collapseAll(): void {\n this.treeViewNodes.forEach((x) => x.collapseAll());\n }\n}\n","export enum ContentTypesFormat {\n Json = 'json',\n Xml = 'xml',\n Text = 'text',\n}\n","import {\n Component,\n Input,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { TreeViewNode } from '../models/TreeViewNode';\nimport { TreeViewNodeTypes } from '../models/TreeViewNodeTypes';\nimport { TreeViewNodePropComponent } from '../tree-view-node-prop/tree-view-node-prop.component';\n\n@Component({\n selector: 'tree-view-node',\n templateUrl: './tree-view-node.component.html',\n styleUrls: ['./tree-view-node.component.css'],\n})\nexport class TreeViewNodeComponent implements OnInit {\n @ViewChildren('prop') treeViewProps: QueryList<TreeViewNodePropComponent>;\n\n @Input() node: TreeViewNode;\n @Input() hasExpand: boolean;\n\n public expanded: boolean = true;\n\n public get isObject(): boolean {\n return this.node.nodeType === TreeViewNodeTypes.Object;\n }\n\n public get isArray(): boolean {\n return this.node.nodeType === TreeViewNodeTypes.Array;\n }\n\n public get isPrimitive(): boolean {\n return this.node.nodeType === TreeViewNodeTypes.Primitive;\n }\n\n public get primitive(): { value: any; type: string; startTag: string } {\n const value = this.node.props[0].value;\n const startTag = this.node.props[0].startTag;\n const type = typeof value;\n\n return { value, type, startTag };\n }\n\n ngOnInit(): void {\n this.expanded = !this.hasExpand;\n }\n\n public toggleExpand() {\n this.expanded = !this.expanded;\n }\n\n public expandAll(): void {\n if (this.hasExpand) {\n this.expanded = true;\n }\n\n this.treeViewProps.forEach((x) => x.expandAll());\n }\n\n public collapseAll(): void {\n if (this.hasExpand) {\n this.expanded = false;\n }\n\n this.treeViewProps.forEach((x) => x.collapseAll());\n }\n}\n","import { IContentResolver } from './IContentResolver';\nimport { ResolverResult } from '../models/ResolverResult';\n\nexport abstract class AbstractContentResolver implements IContentResolver {\n private nextResolver: IContentResolver;\n\n constructor(resolver: IContentResolver) {\n this.nextResolver = resolver;\n }\n\n resolve(data: string): ResolverResult {\n if (this.nextResolver) {\n return this.nextResolver.resolve(data);\n }\n\n return null;\n }\n}\n","import { TreeViewNodeTypes } from '../../models/TreeViewNodeTypes';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\n\nexport function getPropTypeFromKey(key: string): TreeViewPropTypes {\n return (\n Object.values(TreeViewPropTypes).find((x) => x === key) ||\n TreeViewPropTypes.String\n );\n}\n\nexport function getNodeTypeFromKey(key: string): TreeViewNodeTypes {\n return (\n Object.values(TreeViewNodeTypes).find((x) => x === key) ||\n TreeViewNodeTypes.Object\n );\n}\n","import { TreeViewNode } from '../../models/TreeViewNode';\nimport { TreeViewNodeTypes } from '../../models/TreeViewNodeTypes';\nimport { TreeViewProp } from '../../models/TreeViewProp';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\nimport { getPropTypeFromKey, getNodeTypeFromKey } from './EnumTypeGetter';\n\nconst objectBrackets = { inside: '{', outside: '}' };\nconst arrayBrackets = { inside: '[', outside: ']' };\n\nexport class JsonConverter {\n public static convert(\n source: Array<object> | object\n ): Array<TreeViewNode> | TreeViewNode {\n if (Array.isArray(source)) {\n return this.convertArray(source);\n }\n\n return this.convertObject(source);\n }\n\n private static convertObject(source): TreeViewNode {\n const props: Array<TreeViewProp> = [];\n for (const name of Object.keys(source)) {\n const value = source[name];\n let propType =\n value !== null\n ? getPropTypeFromKey(typeof value)\n : TreeViewPropTypes.String;\n\n if (Array.isArray(value)) {\n const result = this.convertArray(value);\n const propType = Array.isArray(result)\n ? TreeViewPropTypes.Array\n : TreeViewPropTypes.Object;\n props.push({\n startTag: `${name}: `,\n value: result,\n propType,\n brackets: arrayBrackets,\n });\n\n continue;\n }\n\n if (propType === TreeViewPropTypes.Object) {\n props.push({\n startTag: `${name}: `,\n value: this.convertObject(value),\n propType,\n });\n\n continue;\n }\n\n props.push({\n startTag: `${name}: `,\n value,\n propType,\n });\n }\n\n return {\n props,\n nodeType: TreeViewNodeTypes.Object,\n brackets: objectBrackets,\n };\n }\n\n private static convertArray(source: Array<any>): TreeViewNode {\n const nodes: Array<TreeViewNode> = [];\n\n source.forEach((item, index) => {\n if (typeof item !== TreeViewPropTypes.Object) {\n nodes.push(this.getPrimitive(item, index));\n } else {\n const brackets = Array.isArray(item) ? arrayBrackets : objectBrackets;\n const inside = brackets.inside;\n const outside = brackets.outside;\n nodes.push({\n ...this.convertObject(item),\n nodeType: Array.isArray(item)\n ? TreeViewNodeTypes.Array\n : getNodeTypeFromKey(typeof item),\n brackets: {\n inside: `${index}: ${inside}`,\n outside,\n },\n });\n }\n });\n\n return {\n props: [\n {\n value: nodes,\n propType: TreeViewPropTypes.Array,\n },\n ],\n brackets: arrayBrackets,\n };\n }\n\n private static getPrimitive(\n source: string | number,\n index: string | number\n ): TreeViewNode {\n const propType = getPropTypeFromKey(typeof source);\n return {\n props: [\n {\n startTag: `${index}: `,\n value: source,\n propType,\n },\n ],\n nodeType: TreeViewNodeTypes.Primitive,\n };\n }\n}\n","import { ContentTypesFormat } from '../../models/ContentTypesFormat';\nimport { ResolverResult } from '../../models/ResolverResult';\nimport { AbstractContentResolver } from '../AbstractContentResolver';\nimport { JsonConverter } from '../Converters/JsonConverter';\n\nexport class JsonResolver extends AbstractContentResolver {\n public resolve(data: string): ResolverResult {\n try {\n const json = JSON.parse(data);\n\n return {\n data: JsonConverter.convert(json),\n format: ContentTypesFormat.Json,\n };\n } catch (e) {\n return super.resolve(data);\n }\n }\n}\n","import { TreeViewNode } from '../../models/TreeViewNode';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\n\nexport class TextConverter {\n public static convert(source: string): Array<TreeViewNode> | TreeViewNode {\n return {\n props: [\n {\n value: source,\n propType: TreeViewPropTypes.String,\n },\n ],\n };\n }\n}\n","import { ContentTypesFormat } from '../../models/ContentTypesFormat';\nimport { ResolverResult } from '../../models/ResolverResult';\nimport { AbstractContentResolver } from '../AbstractContentResolver';\nimport { TextConverter } from '../Converters/TextConverter';\n\nexport class TextResolver extends AbstractContentResolver {\n public resolve(data: string): ResolverResult {\n return {\n data: TextConverter.convert(data),\n format: ContentTypesFormat.Text,\n };\n }\n}\n","import { TreeViewNode } from '../../models/TreeViewNode';\nimport { TreeViewProp } from '../../models/TreeViewProp';\nimport { TreeViewPropTypes } from '../../models/TreeViewPropTypes';\nimport { getPropTypeFromKey } from './EnumTypeGetter';\n\nexport class XmlConverter {\n public static convert(source: Document): Array<TreeViewNode> | TreeViewNode {\n if (source.childElementCount > 1) {\n return this.convertObject(source.childNodes);\n }\n\n return { props: [this.convertProp(source.children[0])] };\n }\n\n private static convertProp(source: any): TreeViewProp {\n const name: string = source.tagName;\n let value: Array<TreeViewNode> | string;\n let propType: TreeViewPropTypes;\n\n if (source.childElementCount > 0) {\n value = this.convertObject(source.children);\n propType = TreeViewPropTypes.Array;\n } else {\n value = source.textContent;\n propType = getPropTypeFromKey(typeof value);\n }\n\n return {\n startTag: `<${name}>`,\n endTag: `</${name}>`,\n value,\n propType,\n };\n }\n\n private static convertObject(childs: any): Array<TreeViewNode> {\n const props = Array<TreeViewProp>();\n for (const item of childs) {\n props.push(this.convertProp(item));\n }\n\n return [\n {\n props,\n },\n ];\n }\n}\n","import { ContentTypesFormat } from '../../models/ContentTypesFormat';\nimport { ResolverResult } from '../../models/ResolverResult';\nimport { AbstractContentResolver } from '../AbstractContentResolver';\nimport { XmlConverter } from '../Converters/XmlConverter';\n\nexport class XmlResolver extends AbstractContentResolver {\n public resolve(data: string): ResolverResult {\n try {\n const oParser = new DOMParser();\n const oDOM = oParser.parseFromString(data, 'text/xml');\n\n if (\n oDOM.all.length > 0 &&\n oDOM.getElementsByTagName('parsererror').length === 0\n ) {\n return {\n data: XmlConverter.convert(oDOM),\n format: ContentTypesFormat.Xml,\n };\n }\n } catch (e) {}\n\n return super.resolve(data);\n }\n}\n","import { ResolverResult } from '../models/ResolverResult';\nimport { AbstractContentResolver } from './AbstractContentResolver';\nimport { JsonResolver } from './Resolvers/JsonResolver';\nimport { TextResolver } from './Resolvers/TextResolver';\nimport { XmlResolver } from './Resolvers/XmlResolver';\n\nexport class ContentResolver {\n private chain: AbstractContentResolver;\n\n constructor() {\n this.chain = new JsonResolver(new XmlResolver(new TextResolver(null)));\n }\n\n public resolve(data: string): ResolverResult {\n return this.chain.resolve(data);\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { ClipboardService } from 'ngx-clipboard';\nimport { ContentResolver } from './ContentResolver/ContentResolver';\nimport { ContentTypesFormat } from './models/ContentTypesFormat';\nimport { ResolverResult } from './models/ResolverResult';\nimport { TreeViewNodeComponent } from './tree-view-node/tree-view-node.component';\n\n@Component({\n selector: 'tree-view',\n templateUrl: './tree-view.component.html',\n styleUrls: ['./tree-view.component.css'],\n})\nexport class TreeViewComponent implements OnChanges {\n @ViewChildren('node') treeViewNodes: QueryList<TreeViewNodeComponent>;\n\n @Input() data: string;\n @Input() maxTextLength: number = 1200;\n @Input() maxRootItems: number = 10;\n\n public resolved: ResolverResult;\n public collapsed: boolean;\n public allShow: boolean;\n public rawView: boolean;\n public ContentTypesFormat = ContentTypesFormat;\n\n public get IsArray(): boolean {\n return this.data ? Array.isArray(this.resolved.data) : false;\n }\n\n public get hasCollapse(): boolean {\n if (!this.data) {\n return false;\n }\n\n return this.resolved.format === ContentTypesFormat.Text\n ? this.hasTextCollapse()\n : this.hasNodeCollapse();\n }\n\n public get format(): string {\n return !this.rawView ? this.resolved.format : ContentTypesFormat.Text;\n }\n\n constructor(private clipboardService: ClipboardService) {}\n\n ngOnChanges(): void {\n const contentResolver = new ContentResolver();\n this.allShow = false;\n this.rawView = false;\n this.resolved = contentResolver.resolve(this.data);\n this.collapsed = this.hasCollapse;\n }\n\n public expandToggle(): void {\n this.collapsed = !this.collapsed;\n }\n\n public toggleExpandAll() {\n if (this.allShow) {\n this.treeViewNodes.forEach((x) => x.collapseAll());\n } else {\n this.treeViewNodes.forEach((x) => x.expandAll());\n }\n\n this.collapsed = this.hasCollapse ? this.allShow : false;\n this.allShow = !this.allShow;\n }\n\n public toggleRawView() {\n this.rawView = !this.rawView;\n }\n\n public copyToClipboard() {\n this.clipboardService.copy(this.data);\n }\n\n private hasTextCollapse(): boolean {\n return this.data.length > this.maxTextLength;\n }\n\n private hasNodeCollapse(): boolean {\n if (!Array.isArray(this.resolved.data)) {\n return this.resolved.data.props.length > this.maxRootItems;\n }\n\n return false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client';\nimport {\n TranslateLoader,\n TranslateModule,\n TranslateStore,\n} from '@ngx-translate/core';\nimport { ClipboardModule } from 'ngx-clipboard';\nimport { ToastrModule } from 'ngx-toastr';\nimport { Observable, of } from 'rxjs';\nimport { DebounceDirective } from './forms/directives/debounce.directive';\nimport { FieldInputComponent } from './forms/widgets/field/field-input/field-input.component';\nimport { NumberInputComponent } from './forms/widgets/field/field-input/number-input.component';\nimport { GeneralErrorsComponent } from './forms/widgets/general-errors/general-errors.component';\nimport { AppSettings } from './models/AppSettings';\nimport { IndiginaConfiguration } from './models/IndiginaConfiguration';\nimport { LocaleSettingsService } from './services/locale-settings.service';\nimport { MenuItemGroupComponent } from './widgets/side-menu/menu-item-group/menu-item-group.component';\nimport { SideMenuComponent } from './widgets/side-menu/side-menu.component';\nimport { TreeViewNodePropComponent } from './widgets/tree-view/tree-view-node-prop/tree-view-node-prop.component';\nimport { TreeViewNodeComponent } from './widgets/tree-view/tree-view-node/tree-view-node.component';\nimport { TreeViewComponent } from './widgets/tree-view/tree-view.component';\n\nlet defaultConfig: IndiginaConfiguration = {\n langs: {\n getTranslation(): Observable<any> {\n return of({});\n },\n },\n appSettings: {\n accountUrl: '',\n apiUrl: '',\n toastrTimeOut: 2500,\n oidc: {\n clientId: '',\n authority: '',\n issuer: '',\n },\n azureB2C: {\n clientId: '',\n authority: '',\n knownAuthorities: [''],\n },\n },\n};\n\n@NgModule({\n declarations: [\n SideMenuComponent,\n MenuItemGroupComponent,\n TreeViewComponent,\n TreeViewNodeComponent,\n TreeViewNodePropComponent,\n DebounceDirective,\n GeneralErrorsComponent,\n FieldInputComponent,\n NumberInputComponent,\n ],\n imports: [\n BrowserModule,\n HttpClientModule,\n TranslateModule.forChild({\n loader: {\n provide: TranslateLoader,\n useFactory: TranslateLoaderFactory,\n deps: [IndiginaConfiguration, HttpClient],\n },\n }),\n LoadingBarHttpClientModule,\n CommonModule,\n RouterModule,\n ReactiveFormsModule,\n ToastrModule.forRoot(),\n BrowserAnimationsModule,\n ],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: LocaleServiceSettingsFactory,\n multi: true,\n deps: [LocaleSettingsService],\n },\n {\n provide: IndiginaConfiguration,\n useValue: defaultConfig,\n },\n {\n provide: AppSettings,\n useFactory: AppSettingsFactory,\n deps: [IndiginaConfiguration],\n },\n TranslateStore,\n ],\n exports: [\n SideMenuComponent,\n TreeViewComponent,\n DebounceDirective,\n GeneralErrorsComponent,\n FieldInputComponent,\n TranslateModule,\n ClipboardModule,\n LoadingBarHttpClientModule,\n ToastrModule,\n BrowserAnimationsModule,\n NumberInputComponent,\n ],\n})\nexport class IndiginaModule {\n public static forRoot(\n configuration: IndiginaConfiguration\n ): ModuleWithProviders<IndiginaModule> {\n return {\n ngModule: IndiginaModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: LocaleServiceSettingsFactory,\n multi: true,\n deps: [LocaleSettingsService],\n },\n {\n provide: IndiginaConfiguration,\n useValue: configuration ? configuration : defaultConfig,\n },\n ],\n };\n }\n}\n\nexport function LocaleServiceSettingsFactory(\n localeService: LocaleSettingsService\n) {\n return function () {\n localeService.init();\n };\n}\n\nexport function TranslateLoaderFactory(\n configuration: IndiginaConfiguration\n): TranslateLoader {\n return configuration.langs;\n}\n\nexport function AppSettingsFactory(configuration: IndiginaConfiguration) {\n return configuration.appSettings;\n}\n","export enum EventNames {\n UserUpdated = 'userUpdated',\n PermissionsUpdated = 'permissionsUpdated',\n}\n","import { IEntityEndpoints } from './IEntityEndpoints';\nimport { State, toODataString } from '@progress/kendo-data-query';\nimport { MemberTypes } from '../models/MemberTypes';\nimport { IActivityEndpoints } from './IActivityEndpoints';\n\nexport const endpoints = {\n signalr: {\n eventsHub: 'EventsHub',\n },\n oidc: {\n config: 'oidc/config',\n },\n members: {\n me: 'members/me',\n },\n admins: {\n ...buildEntityEndpoints('admins'),\n roles: {\n ...buildEntityEndpoints('admins/roles'),\n },\n },\n system: {\n info: 'system/info',\n },\n firstUser: 'admins/first',\n partners: buildEntityEndpoints('partners'),\n permissions: {\n all: (type: MemberTypes) => `permissions/${type}s`,\n member: (id: string) => `permissions/${id}`,\n mine: 'permissions/me',\n },\n users: {\n ...buildEntityEndpoints('users'),\n roles: {\n ...buildEntityEndpoints('users/roles'),\n },\n },\n apiTokens: buildEntityEndpoints('apiTokens'),\n};\n\nconst guidFormat = /'((\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1})'/g;\nexport function buildEntityEndpoints(name: string): IEntityEndpoints {\n return {\n path: name,\n query: (state: State) =>\n `${name}?${toODataString(state, { utcDates: true }).replace(\n guidFormat,\n '$1'\n )}`,\n entityPath: (id: string) => `${name}/${id}`,\n };\n}\nexport function buildActivityEndpoints(name: string): IActivityEndpoints {\n return {\n query: (state: State) =>\n `activities/${name}?${toODataString(state, {\n utcDates: true,\n }).replace(guidFormat, '$1')}`,\n search: (state: State, searchTerm: string) => {\n let uri = `activities/${name}/search?${toODataString(state, {\n utcDates: true,\n })}`;\n if (searchTerm) {\n uri += `&searchTerm=${searchTerm}`;\n }\n\n return uri;\n },\n detailedActivity: (id: string, partnerId: string) =>\n partnerId\n ? `activities/${name}/${id}/${partnerId}`\n : `activities/${name}/${id}`,\n };\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { HttpService } from '../angular/services/http.service';\nimport { SettingsService } from '../angular/services/settings.service';\nimport { AuthProviderResolver } from './auth-provider.resolver';\nimport { AuthProvider } from './auth.providers/AuthProvider';\nimport { endpoints } from './endpoints';\nimport { EventNames } from './signalr/EventNames';\nimport { SignalRService } from './signalr/signalr.service';\n\nconst adminUriPart = '/admin/';\n\nexport abstract class BaseAccountService<T> {\n public user = new BehaviorSubject<T>(null);\n\n constructor(\n public resolver: AuthProviderResolver,\n protected httpService: HttpService,\n protected settingsService: SettingsService,\n protected signalRService: SignalRService\n ) {\n this.resolver\n .getProvider()\n .pipe(\n map((provider) => {\n this.initialize(provider);\n })\n )\n .subscribe();\n }\n\n login() {\n this.resolver\n .getProvider()\n .pipe(\n map((provider) => {\n provider.login();\n })\n )\n .subscribe();\n }\n\n logout() {\n this.settingsService.clearLoginAsUser();\n this.resolver\n .getProvider()\n .pipe(\n map((provider) => {\n provider.logout();\n })\n )\n .subscribe();\n }\n\n private initialize(provider: AuthProvider) {\n this.getCurrentUser().subscribe((user) => {\n if (!user) {\n return;\n }\n\n const path = this.settingsService.getCallbackPath();\n if (path) {\n this.settingsService.clearCallbackPath();\n window.location.href = window.location.origin + path;\n\n return;\n }\n\n if (\n this.isAdmin(user) &&\n !window.location.pathname.startsWith(adminUriPart)\n ) {\n window.location.href = `${window.location.origin}${adminUriPart}`;\n\n return;\n }\n\n provider.getAccessToken().subscribe((token) => {\n this.signalRService.startConnection(token);\n this.signalRService\n .on<T>(EventNames.UserUpdated)\n .subscribe(async () => {\n provider.getAccessToken().subscribe((token) => {\n this.signalRService.reconnect(token);\n });\n this.httpService\n .get<T>(endpoints.members.me)\n .subscribe((user) => this.user.next(user));\n });\n });\n });\n }\n\n getCurrentUser(): Observable<T> {\n return this.resolver.getProvider().pipe(\n mergeMap((provider) => {\n if (this.user.getValue() || !provider.isUserLoggedIn()) {\n return this.user;\n }\n\n return provider.getAccessToken().pipe(\n mergeMap(() => {\n return this.httpService.get(endpoints.members.me).pipe(\n map((user: T) => {\n this.user.next(user);\n\n return user;\n })\n );\n })\n );\n })\n );\n }\n\n public isUserLoggedIn(): Observable<boolean> {\n return this.resolver\n .getProvider()\n .pipe(map((provider) => provider.isUserLoggedIn()));\n }\n\n public abstract isAdmin(member: T): boolean;\n}\n","export enum HttpCodes {\n BadRequest = 400,\n Forbidden = 403,\n InternalServerError = 500,\n NotFound = 404,\n OK = 200,\n Unauthorized = 401,\n}\n","import { ISubscriptionControl } from './ISubscriptionControl';\nimport { Observable, Subscription } from 'rxjs';\n\nexport class ReEntrySubscription<T> implements ISubscriptionControl {\n private subscription: Subscription;\n\n constructor(\n private observable: Observable<T>,\n private action: (event: T) => void\n ) {}\n\n public get connected(): boolean {\n return !this.subscription.closed;\n }\n\n public resume(): void {\n this.subscription = this.observable.subscribe(this.action);\n }\n\n public pause(): void {\n this.subscription.unsubscribe();\n }\n}\n","import {\n AbstractControl,\n AbstractControlOptions,\n AsyncValidatorFn,\n FormGroup,\n ValidatorFn,\n FormControl,\n} from '@angular/forms';\n\nexport class FormGroupWithErrors extends FormGroup {\n generalErrors: string[] = [];\n\n constructor(\n controls: { [key: string]: AbstractControl },\n validatorOrOpts?:\n | ValidatorFn\n | ValidatorFn[]\n | AbstractControlOptions\n | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(controls, validatorOrOpts, asyncValidator);\n }\n\n public getControl(name: string): AbstractControl {\n if (!this.contains(name)) {\n this.addControl(name, new FormControl({}));\n }\n\n return this.get(name);\n }\n\n public applyServerErrors(\n error: { title?: string; errors: { [key: string]: string[] } },\n form?: FormGroupWithErrors\n ): void {\n this.generalErrors = [];\n if (error.title) {\n this.generalErrors.push(error.title);\n }\n\n if (!form) {\n form = this;\n }\n\n for (const key in error.errors) {\n const ctrl = form.controls[key];\n if (ctrl) {\n ctrl.setErrors({ serverErrorMsg: error.errors[key].join(',') });\n } else {\n this.generalErrors.push(error.errors[key].join(','));\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nconst callbackPathKey = 'callbackPath';\nconst homePath = '/home';\nconst loginAsKey = 'X-User-Id';\nconst tokenKey = 'access_token';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsService {\n public putCurrentCallbackPath() {\n this.putCallbackPath(window.location.pathname + window.location.hash);\n }\n\n public putCallbackPath(pathUri: string): void {\n if (!this.getCallbackPath() && pathUri !== homePath) {\n localStorage.setItem(callbackPathKey, pathUri);\n }\n }\n\n public getCallbackPath(): string {\n return localStorage.getItem(callbackPathKey);\n }\n\n public clearCallbackPath(): void {\n localStorage.removeItem(callbackPathKey);\n }\n\n public setLoginAsUser(id: string): void {\n localStorage.setItem(loginAsKey, id);\n }\n\n public getLoginAsUser(): string {\n return localStorage.getItem(loginAsKey);\n }\n\n public clearLoginAsUser(): void {\n localStorage.removeItem(loginAsKey);\n }\n\n public setToken(token: string) {\n localStorage.setItem(tokenKey, token);\n }\n\n public getToken(): string {\n return localStorage.getItem(tokenKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { AppSettings } from '../models/AppSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppToastrService {\n constructor(\n private toastr: ToastrService,\n private appSettings: AppSettings\n ) {}\n\n private timeout = this.appSettings.toastrTimeOut;\n\n public showError(message: string, title: string = 'Error'): void {\n this.toastr.error(message, title, { timeOut: this.timeout });\n }\n\n public showSuccess(message: string, title: string = ''): void {\n this.toastr.success(message, title, { timeOut: this.timeout });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { AppSettings } from '../models/AppSettings';\nimport { CustomHttpErrorResponse } from '../models/CustomHttpErrorResponse';\nimport { HttpCodes } from '../models/HttpCodes';\nimport { SettingsService } from './settings.service';\nimport { AppToastrService } from './toastr.service';\n\nconst absoluteUrlRegExp = /^http(s)?:\\/\\//;\n\n@Injectable({ providedIn: 'root' })\nexport class HttpService {\n constructor(\n private appToastrService: AppToastrService,\n private httpClient: HttpClient,\n private appSettings: AppSettings,\n private translate: TranslateService,\n private router: Router,\n private settingsService: SettingsService\n ) {}\n\n get<T>(path: string): Observable<T> {\n return this.httpClient\n .get<T>(this.createUrl(path))\n .pipe(\n catchError((err: CustomHttpErrorResponse) =>\n this.handleServerError(err)\n )\n );\n }\n\n delete(path: string): Observable<object> {\n return this.httpClient.delete(this.createUrl(path)).pipe(\n tap(() => this.showSuccessMessage('ToastrMessages.RemovedSuccessfully')),\n catchError((err: CustomHttpErrorResponse) => this.handleServerError(err))\n );\n }\n\n post<T>(\n path: string,\n data: T,\n successTranslateMessage: string = null\n ): Observable<T> {\n return this.httpClient.post<T>(this.createUrl(path), data).pipe(\n tap(() =>\n this.showSuccessMessage(\n successTranslateMessage ?? 'ToastrMessages.SavedSuccessfully'\n )\n ),\n catchError((err) => this.handleServerError(err))\n );\n }\n\n put<T>(\n path: string,\n data: T,\n successTranslateMessage: string = null\n ): Observable<T> {\n return this.httpClient.put<T>(this.createUrl(path), data).pipe(\n tap(() =>\n this.showSuccessMessage(\n successTranslateMessage ?? 'ToastrMessages.SavedSuccessfully'\n )\n ),\n catchError((err) => this.handleServerError(err))\n );\n }\n\n private createUrl(path: string): string {\n return absoluteUrlRegExp.test(path) ? path : this.appSettings.apiUrl + path;\n }\n\n private handleServerError(error: CustomHttpErrorResponse) {\n if (error.error instanceof ErrorEvent) {\n // A client-side or network error occurred. Handle it accordingly.\n this.appToastrService.showError(\n 'An error occurred: ' + error.error.message\n );\n\n return of(null);\n }\n\n if (error.status === HttpCodes.Unauthorized) {\n this.settingsService.putCurrentCallbackPath();\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.Unauthorized')\n );\n\n return of(null);\n }\n\n if (error.status === HttpCodes.Forbidden) {\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.Forbidden')\n );\n this.router.navigate(['forbidden']);\n\n return of(null);\n }\n\n if (error.status === HttpCodes.NotFound) {\n if (!!this.settingsService.getLoginAsUser()) {\n this.settingsService.clearLoginAsUser();\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.CanNotLoginAsUser')\n );\n setTimeout(() => {\n window.location.href = '/';\n }, 1000);\n }\n\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.NotFound')\n );\n\n return of(null);\n }\n\n if (error.status >= HttpCodes.InternalServerError) {\n this.appToastrService.showError(\n this.translate.instant('ToastrMessages.ServerError') + error.error.title\n );\n\n return of(null);\n }\n\n return throwError(error);\n }\n\n private showSuccessMessage(message: string) {\n this.appToastrService.showSuccess(this.translate.instant(message));\n }\n}\n","export enum AuthProviders {\n IdentityServer = 'IdentityServer',\n AzureB2C = 'AzureB2C',\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ISubscriptionControl } from '../../extensions/ISubscriptionControl';\n\n@Component({\n selector: 'live-updates-control',\n styleUrls: ['./live-updates-control.component.css'],\n templateUrl: './live-updates-control.component.html',\n})\nexport class LiveUpdatesControlComponent implements OnInit {\n @Input() subscription: ISubscriptionControl;\n\n ngOnInit(): void {\n this.subscription.resume();\n }\n\n public toggle(): void {\n this.subscription.connected\n ? this.subscription.pause()\n : this.subscription.resume();\n }\n}\n","import { Observable } from 'rxjs';\n\nexport abstract class AuthProvider {\n public abstract initialize(): Observable<boolean>;\n public abstract login();\n public abstract logout();\n public abstract isUserLoggedIn(): boolean;\n public abstract getAccessToken(): Observable<string>;\n}\n","import { MsalService } from '@azure/msal-angular';\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\nimport { from, Observable, of } from 'rxjs';\nimport { SettingsService } from '../../angular/services/settings.service';\nimport { AuthProvider } from './AuthProvider';\n\nexport class AzureB2CProvider extends AuthProvider {\n constructor(\n private authService: MsalService,\n private settingsService: SettingsService\n ) {\n super();\n }\n\n public initialize(): Observable<boolean> {\n return of(true);\n }\n\n public login() {\n if (!this.isUserLoggedIn()) {\n this.authService.loginRedirect().subscribe();\n }\n }\n\n public logout() {\n this.authService.logoutRedirect({\n postLogoutRedirectUri: location.origin,\n });\n }\n\n public getAccessToken(): Observable<string> {\n const request = {\n scopes: ['openid', 'offline_access', 'profile'],\n };\n\n return from(\n this.authService.instance\n .acquireTokenSilent(request)\n .then((authenticationResult) => {\n const token = authenticationResult.idToken;\n this.settingsService.setToken(token);\n\n return token;\n })\n .catch(async (error) => {\n if (error instanceof InteractionRequiredAuthError) {\n await this.authService.instance.acquireTokenRedirect(request);\n\n return this.settingsService.getToken();\n }\n })\n );\n }\n\n public isUserLoggedIn = (): boolean =>\n !!this.authService.instance.getActiveAccount()?.localAccountId;\n}\n","import { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\nimport { from, Observable, of } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { IndiginaConfiguration } from '../../angular/models/IndiginaConfiguration';\nimport { AuthProvider } from './AuthProvider';\n\nconst homePath = '/home';\n\nexport class OAuthProvider extends AuthProvider {\n constructor(\n private oauthService: OAuthService,\n private configuration: IndiginaConfiguration\n ) {\n super();\n }\n\n public initialize(): Observable<boolean> {\n const authConfig: AuthConfig = {\n issuer: this.configuration.appSettings.oidc.issuer,\n redirectUri: window.location.origin + '/login/callback',\n clientId: this.configuration.appSettings.oidc.clientId,\n scope: 'openid profile offline_access',\n postLogoutRedirectUri: window.location.origin + homePath,\n silentRefreshRedirectUri: window.location.origin + '/silent-renew.html',\n };\n\n return this.configure(authConfig);\n }\n\n public login() {\n this.oauthService.initLoginFlow();\n }\n\n public logout() {\n this.oauthService.logOut();\n }\n\n public getAccessToken(): Observable<string> {\n return of(this.oauthService.getAccessToken());\n }\n\n public isUserLoggedIn = (): boolean =>\n this.oauthService.hasValidAccessToken();\n\n private configure(authConfig: AuthConfig): Observable<boolean> {\n this.oauthService.configure(authConfig);\n this.oauthService.tokenValidationHandler = new JwksValidationHandler();\n this.oauthService.setupAutomaticSilentRefresh();\n\n return from(\n this.oauthService.loadDiscoveryDocument(\n authConfig.issuer + '/identity/.well-known/openid-configuration'\n )\n ).pipe(mergeMap(() => from(this.oauthService.tryLoginImplicitFlow())));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { IndiginaConfiguration } from '../angular/models/IndiginaConfiguration';\nimport { HttpService } from '../angular/services/http.service';\nimport { SettingsService } from '../angular/services/settings.service';\nimport { AuthProviders } from '../models/AuthProviders';\nimport { SystemInfo } from '../models/SystemInfo';\nimport { AuthProvider } from '../services/auth.providers/AuthProvider';\nimport { AzureB2CProvider } from './../services/auth.providers/azureb2c.provider';\nimport { OAuthProvider } from './../services/auth.providers/oauth.provider';\nimport { endpoints } from './endpoints';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProviderResolver {\n private AuthProvider$ = new BehaviorSubject<AuthProvider>(null);\n\n constructor(\n httpService: HttpService,\n oauthService: OAuthService,\n msalService: MsalService,\n settingsService: SettingsService,\n indiginaConfiguration: IndiginaConfiguration\n ) {\n httpService.get<SystemInfo>(endpoints.system.info).subscribe((info) => {\n let provider: AuthProvider;\n if (info.identityProvider === AuthProviders.IdentityServer) {\n provider = new OAuthProvider(oauthService, indiginaConfiguration);\n } else {\n provider = new AzureB2CProvider(msalService, settingsService);\n }\n\n provider.initialize().subscribe(() => this.AuthProvider$.next(provider));\n });\n }\n\n public getProvider = (): Observable<AuthProvider> =>\n this.AuthProvider$.pipe(filter((x) => !!x));\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport * as signalR from '@microsoft/signalr';\nimport { AppSettings } from '../../angular/models/AppSettings';\nimport { endpoints } from '../endpoints';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalRService {\n protected isConnectionEstablished = false;\n protected hubConnection: signalR.HubConnection;\n private eventEmitters: { [eventName: string]: EventEmitter<any> } = {};\n\n constructor(private appSettings: AppSettings) {}\n\n private createConnection(token: string) {\n this.hubConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.appSettings.apiUrl + endpoints.signalr.eventsHub, {\n accessTokenFactory: () => {\n return token;\n },\n })\n .configureLogging(\n this.appSettings.signalRLogLevel ?? signalR.LogLevel.None\n )\n .build();\n\n this.hubConnection.onclose((err?) => {\n if (err !== undefined) {\n this.isConnectionEstablished = false;\n this.startConnection(token);\n }\n });\n }\n\n public startConnection(token: string): void {\n if (!this.isConnectionEstablished) {\n this.createConnection(token);\n this.hubConnection\n .start()\n .then(() => {\n this.isConnectionEstablished = true;\n Object.keys(this.eventEmitters).forEach((eventName) => {\n this.hubConnection.on(eventName, (model) => {\n this.eventEmitters[eventName].emit(model);\n });\n });\n })\n .catch(() => {\n console.warn('Error while establishing connection, retrying...');\n setTimeout(() => this.startConnection(token), 5000);\n });\n }\n }\n\n public reconnect(token: string) {\n if (this.isConnectionEstablished) {\n this.hubConnection.stop().then(() => {\n this.isConnectionEstablished = false;\n this.startConnection(token);\n });\n }\n }\n\n public on<T>(eventName: string): EventEmitter<T> {\n if (!this.eventEmitters[eventName]) {\n this.eventEmitters[eventName] = new EventEmitter<T>();\n if (this.hubConnection) {\n this.hubConnection.on(eventName, (model) => {\n this.eventEmitters[eventName].emit(model);\n });\n }\n }\n\n return this.eventEmitters[eventName] as EventEmitter<T>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../angular/services/http.service';\nimport { SettingsService } from '../angular/services/settings.service';\nimport { Member } from '../models/Member';\nimport { AuthProviderResolver } from './auth-provider.resolver';\nimport { BaseAccountService } from './base.account.service';\nimport { SignalRService } from './signalr/signalr.service';\n\nconst adminKey = 'Admin';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountService extends BaseAccountService<Member> {\n constructor(\n public resolver: AuthProviderResolver,\n httpService: HttpService,\n settingsService: SettingsService,\n signalRService: SignalRService\n ) {\n super(resolver, httpService, settingsService, signalRService);\n }\n\n public isAdmin = (member: Member): boolean =>\n member?.type === adminKey ?? false;\n}\n","import {\n Component,\n Input,\n HostListener,\n ElementRef,\n ViewChild,\n} from '@angular/core';\nimport { AppSettings } from '../../angular/models/AppSettings';\nimport { Member } from '../../models/Member';\nimport { AccountService } from '../../services/account.service';\n\n@Component({\n selector: 'account-menu',\n templateUrl: './account-menu.component.html',\n styleUrls: ['./account-menu.component.css'],\n})\nexport class AccountMenuComponent {\n @ViewChild('accountMenuElement') accountMenu: ElementRef;\n @Input() user: Member;\n expand = false;\n languageSelectorVisible = false;\n constructor(\n private eref: ElementRef,\n private accountService: AccountService,\n private appSettings: AppSettings\n ) {}\n\n get fullName(): string {\n return `${this.user?.firstName} ${this.user?.lastName}`;\n }\n\n get accountUrl(): string {\n return this.appSettings.accountUrl;\n }\n\n toogle(): void {\n this.expand = !this.expand;\n }\n\n logout(): void {\n this.accountService.logout();\n }\n\n openLanguageSelector(event: MouseEvent): void {\n event.stopPropagation();\n this.toogle();\n this.languageSelectorVisible = true;\n }\n\n @HostListener('document:click', ['$event'])\n clickedOutside(event: any) {\n if (!this.eref.nativeElement.contains(event.target) && this.expand) {\n this.toogle();\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MsalService } from '@azure/msal-angular';\nimport { AuthenticationResult } from '@azure/msal-browser';\nimport { SettingsService } from '../../angular/services/settings.service';\n\n@Component({\n selector: 'lib-azure-login',\n template: '',\n})\nexport class AzureLoginCallbackComponent {\n constructor(\n private authService: MsalService,\n private settingsService: SettingsService,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.authService\n .handleRedirectObservable()\n .subscribe((result: AuthenticationResult) => {\n if (result) {\n this.settingsService.setToken(result.idToken);\n this.authService.instance.setActiveAccount(result.account);\n }\n\n this.router.navigate(['home']);\n });\n }\n\n public logout() {\n this.authService.logout();\n }\n}\n","import {\n Component,\n ElementRef,\n HostListener,\n Output,\n EventEmitter,\n Input,\n} from '@angular/core';\nimport { Language } from '../../angular/models/Language';\nimport { LocaleSettingsService } from '../../angular/services/locale-settings.service';\n\n@Component({\n selector: 'language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: ['./language-selector.component.css'],\n})\nexport class LanguageSelectorComponent {\n @Input() visible: boolean;\n @Output() visibleChange = new EventEmitter<boolean>();\n currentLanguageCode = '';\n languages: Language[];\n\n constructor(\n private eref: ElementRef,\n private settings: LocaleSettingsService\n ) {\n this.currentLanguageCode = this.settings.getLocale();\n this.languages = this.settings.getLocales();\n }\n\n async changeLanguage(code: string) {\n this.currentLanguageCode = code;\n this.settings.setLocale(this.currentLanguageCode);\n this.close();\n }\n\n close(): void {\n this.visible = false;\n this.visibleChange.emit(this.visible);\n }\n\n @HostListener('document:click', ['$event'])\n clickedOutside(event: any) {\n if (!this.eref.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n}\n","import {\n BrowserCacheLocation,\n Configuration,\n IPublicClientApplication,\n PublicClientApplication,\n} from '@azure/msal-browser';\nimport { IndiginaConfiguration } from '../angular/models/IndiginaConfiguration';\n\nconst isIE =\n window.navigator.userAgent.indexOf('MSIE ') > -1 ||\n window.navigator.userAgent.indexOf('Trident/') > -1;\n\nexport const MSALInstanceFactory = (\n config: IndiginaConfiguration\n): IPublicClientApplication => {\n const msalConfig: Configuration = {\n auth: {\n clientId: config.appSettings.azureB2C.clientId,\n authority: config.appSettings.azureB2C.authority,\n knownAuthorities: config.appSettings.azureB2C.knownAuthorities,\n redirectUri: window.location.origin + '/azure/login/callback',\n postLogoutRedirectUri: '/',\n navigateToLoginRequestUrl: false,\n },\n cache: {\n cacheLocation: BrowserCacheLocation.SessionStorage,\n storeAuthStateInCookie: isIE,\n },\n system: {\n loggerOptions: {\n loggerCallback: () => {},\n piiLoggingEnabled: false,\n },\n },\n };\n\n return new PublicClientApplication(msalConfig);\n};\n","import { endpoints } from './endpoints';\nimport { Injectable } from '@angular/core';\nimport { AccountService } from './account.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { MemberTypes } from '../models/MemberTypes';\nimport { Permissions } from './../models/Permissions';\nimport { HttpService } from '../angular/services/http.service';\nimport { SignalRService } from './signalr/signalr.service';\nimport { EventNames } from './signalr/EventNames';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class PermissionsService {\n private loaded = false;\n public mine = new BehaviorSubject<Permissions>({});\n\n constructor(\n private httpService: HttpService,\n private accountService: AccountService,\n private signalRService: SignalRService\n ) {\n this.accountService.user.subscribe(async (user) => {\n if (!user) {\n this.mine.next({});\n\n return;\n }\n\n this.httpService\n .get<Permissions>(endpoints.permissions.mine)\n .subscribe((permissions) => {\n this.mine.next(permissions);\n this.loaded = true;\n this.signalRService\n .on<string>(EventNames.PermissionsUpdated)\n .subscribe(() => {\n this.getPermissionsFromServer();\n });\n });\n });\n }\n\n public getAll(memberType: MemberTypes): Observable<Permissions> {\n return this.httpService.get<Permissions>(\n endpoints.permissions.all(memberType)\n );\n }\n\n public getMine(): Observable<Permissions> {\n if (this.loaded) {\n return this.mine;\n }\n\n return this.getPermissionsFromServer();\n }\n\n private getPermissionsFromServer(): Observable<Permissions> {\n return this.httpService.get<Permissions>(endpoints.permissions.mine).pipe(\n map((permissions) => {\n this.mine.next(permissions);\n\n return permissions;\n })\n );\n }\n}\n","import { Directive, Input, ElementRef, OnInit, Renderer2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PermissionTypes } from '../models/PermissionTypes';\nimport { PermissionsService } from '../services/permissions.service';\n\nconst hiddenClass = 'hidden';\n\n@Directive({\n selector: '[requirePermission]',\n})\nexport class RequirePermissionDirective implements OnInit {\n @Input()\n permissionType: PermissionTypes | PermissionTypes[];\n @Input()\n permissionCategory?: string;\n\n constructor(\n private elementRef: ElementRef,\n private route: ActivatedRoute,\n private permissionsService: PermissionsService,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.hide();\n const category = this.permissionCategory\n ? this.permissionCategory\n : this.getRouteCategory(this.route);\n\n if (!category) {\n this.show();\n\n return;\n }\n\n this.permissionsService.mine.subscribe((permissions) => {\n const hasAccess =\n permissions[category] && this.hasType(permissions[category]);\n if (hasAccess) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n private hide() {\n this.renderer.addClass(this.elementRef.nativeElement, hiddenClass);\n }\n\n private show() {\n this.renderer.removeClass(this.elementRef.nativeElement, hiddenClass);\n }\n\n private hasType(types: PermissionTypes[]) {\n return Array.isArray(this.permissionType)\n ? types.map((x) => this.permissionType.includes(x)).some((x) => x)\n : types.includes(this.permissionType);\n }\n\n private getRouteCategory(route: ActivatedRoute): string {\n const routeData = route.snapshot.data;\n if (routeData && routeData.permission) {\n return routeData.permission.category;\n }\n\n if (this.route.parent) {\n return this.getRouteCategory(this.route.parent);\n }\n\n return null;\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SettingsService } from '../angular/services/settings.service';\n\nconst AuthorizationHeader = 'Authorization';\n\n@Injectable()\nexport class AuthHeadersInterceptor implements HttpInterceptor {\n constructor(private settingsService: SettingsService) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n if (!request.headers.keys().find((x) => x === AuthorizationHeader)) {\n const token = this.settingsService.getToken();\n if (token) {\n const modified = request.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return next.handle(modified);\n } else {\n return next.handle(request);\n }\n }\n\n return next.handle(request);\n }\n}\n","export enum FieldTypes {\n Text,\n Checkbox,\n Dropdown,\n Multiselect,\n}\n","import { ActivityFilter } from '../../models/ActivityFilter';\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { CustomFilterElement } from '../../models/CustomFilterElement';\nimport { FieldTypes } from '../../models/FieldTypes';\nimport { ActivityFilterService } from '../../services/activity.filter.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NamedModel } from '../../angular/models/NamedModel';\n\nconst allKey = 'All';\nconst defaultValueField = 'id';\n\n@Component({\n selector: 'activity-filter',\n templateUrl: './activity-filter.component.html',\n styleUrls: ['./activity-filter.component.less'],\n})\nexport class ActivityFilterComponent implements OnInit, OnChanges {\n @Input() showArchiveSwitcher: boolean = true;\n @Input() showSearhText: boolean = true;\n @Input() customFilterElements: CustomFilterElement[];\n @Input() filterService: ActivityFilterService;\n\n public filter: ActivityFilter;\n public FieldTypes = FieldTypes;\n\n constructor(private translate: TranslateService) {}\n\n ngOnInit(): void {\n this.customFilterElements?.forEach(\n (element) =>\n (element.valueField = element.valueField\n ? element.valueField\n : defaultValueField)\n );\n this.filterService.filter$.subscribe((filter) => {\n this.filter = filter;\n this.changeFilter();\n });\n }\n\n ngOnChanges(): void {\n this.changeFilter();\n }\n\n public defaultNamedModel: NamedModel = {\n name: this.translate.instant(allKey),\n id: null,\n };\n\n public setTodayFilter() {\n this.filterService.setToday();\n }\n\n public clearFilter() {\n this.customFilterElements?.forEach((element) => {\n element.filter.value = null;\n if (element.filter.values) {\n element.filter.values = [];\n }\n });\n this.filterService.reset();\n this.emitChangeEvents();\n }\n\n public applyFilter() {\n this.setCustomFilters();\n this.filterService.applyFilter(this.filter);\n }\n\n public fieldChange(\n value: string | number | boolean | string[],\n element: CustomFilterElement\n ) {\n if (element.change) {\n element.change(value);\n }\n }\n\n private fillFilter() {\n if (!this.filter) {\n return;\n }\n\n this.customFilterElements?.forEach((element) => {\n element.filter = { ...element.filter, value: null, values: null };\n });\n\n this.filter.customFilters?.forEach((filter) => {\n const element = this.customFilterElements?.find(\n (x) =>\n x.filter.field === filter.field &&\n x.filter.filterTarget === filter.filterTarget\n );\n if (element) {\n element.filter = Object.assign({}, filter);\n }\n });\n }\n\n private setCustomFilters() {\n this.customFilterElements?.forEach((element) => {\n const index = this.filter.customFilters?.findIndex(\n (x) => x.field === element.filter.field\n );\n if (index !== -1) {\n this.filter.customFilters.splice(index, 1);\n }\n });\n\n this.customFilterElements?.forEach((element) =>\n this.filter.customFilters.push(element.filter)\n );\n }\n\n private fixMultiselectFilters() {\n const multiSelectFilters = this.customFilterElements?.map((element) => {\n if (element.fieldType === FieldTypes.Multiselect) {\n return element.filter;\n }\n });\n if (multiSelectFilters) {\n multiSelectFilters.forEach((filter) => {\n if (filter?.value) {\n filter.values = [filter.value as string];\n filter.value = null;\n }\n });\n }\n }\n\n private changeFilter() {\n this.fillFilter();\n this.fixMultiselectFilters();\n this.emitChangeEvents();\n }\n\n private emitChangeEvents() {\n this.customFilterElements?.forEach((element) => {\n if (element.filter.value || element.filter.values) {\n this.fieldChange(\n element.filter.value ?? element.filter.values,\n element\n );\n }\n });\n }\n}\n","import { Component, ViewChild, TemplateRef } from '@angular/core';\nimport { DialogService, DialogRef } from '@progress/kendo-angular-dialog';\n\n@Component({\n selector: 'confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.css'],\n})\nexport class ConfirmDialogComponent {\n private dialog: DialogRef;\n private callback: () => void;\n @ViewChild('dialogActions', { static: true })\n public dialogActions: TemplateRef<any>;\n constructor(private dialogService: DialogService) {}\n\n cancel(): void {\n this.dialog.close();\n this.callback = undefined;\n }\n\n confirm() {\n this.callback();\n this.cancel();\n }\n\n public open(content: string, callback: () => void) {\n this.callback = callback;\n this.dialog = this.dialogService.open({\n content,\n actions: this.dialogActions,\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport * as momentModule from 'moment-timezone';\nconst moment = momentModule;\n\n@Component({\n selector: 'current-timezone',\n templateUrl: './current-timezone.component.html',\n styleUrls: ['./current-timezone.component.css'],\n})\nexport class CurrentTimezoneComponent implements OnInit {\n public timeZoneAndOffset: string;\n constructor() {}\n\n ngOnInit(): void {\n const timeZone = moment.tz.guess();\n this.timeZoneAndOffset = timeZone + ' ' + moment().format('Z');\n }\n}\n","import { Component, Output, EventEmitter, Input } from '@angular/core';\n\n@Component({\n selector: 'entity-edit-buttons-bar',\n templateUrl: './buttons-bar.component.html',\n styleUrls: ['./buttons-bar.component.css'],\n})\nexport class EntityEditButtonsBarComponent {\n @Input()\n public valid: boolean;\n @Output()\n public save = new EventEmitter<boolean>();\n}\n","import { OnInit, ViewChild, Component, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { FormControl } from '@angular/forms';\nimport { IFormAdapter } from './IFormAdapter';\nimport { FormGroupWithErrors } from '../../angular/forms/extensions/FormGroupWithErrors';\nimport { GeneralErrorsComponent } from '../../angular/forms/widgets/general-errors/general-errors.component';\nimport { IdentifiedModel } from '../../angular/models/IdentifiedModel';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n selector: 'entity-edit-form',\n templateUrl: './entity-edit-form.component.html',\n styleUrls: ['./entity-edit-form.component.css'],\n})\nexport class EntityEditFormComponent implements OnInit {\n public formGroup: FormGroupWithErrors;\n @ViewChild('general_errors')\n generalErrors: GeneralErrorsComponent;\n @Input()\n title: string;\n @Input()\n adapter: IFormAdapter<IdentifiedModel>;\n\n public saveInProgress: boolean;\n\n constructor(private route: ActivatedRoute) {\n this.saveInProgress = false;\n }\n\n ngOnInit() {\n this.route.params.subscribe((params: IdentifiedModel) => {\n this.formGroup = null;\n const formGroup = new FormGroupWithErrors({});\n if (params.id) {\n this.adapter\n .getService()\n .get(params.id)\n .subscribe((model) => {\n formGroup.addControl('id', new FormControl(model.id));\n for (const key of Object.keys(model)) {\n formGroup.addControl(key, new FormControl(model[key]));\n }\n\n this.adapter.setForm(formGroup);\n this.formGroup = formGroup;\n });\n } else {\n this.adapter.setForm(formGroup);\n this.formGroup = formGroup;\n }\n });\n }\n\n save(): void {\n this.saveInProgress = true;\n this.adapter\n .getService()\n .save(this.adapter.getValue())\n .pipe(finalize(() => (this.saveInProgress = false)))\n .subscribe(\n (result: IdentifiedModel) => {\n this.adapter.onSaved(result);\n },\n (error: HttpErrorResponse) => {\n this.formGroup.applyServerErrors(error.error, this.formGroup);\n this.generalErrors.setErrors(this.formGroup.generalErrors);\n }\n );\n }\n}\n","import { Component, Input, ElementRef, OnChanges } from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n AbstractControl,\n} from '@angular/forms';\nimport { CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { FieldComponent } from '../../../angular/forms/widgets/field/field.component';\nimport { IdentifiedModel } from '../../../angular/models/IdentifiedModel';\nimport { NamedModel } from '../../../angular/models/NamedModel';\nimport { IEntityService } from '../../../services/IEntityService';\n\n@Component({\n selector: 'field-dropdown',\n templateUrl: './field-dropdown.component.html',\n styleUrls: ['./field-dropdown.component.css'],\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class FieldDropdownComponent\n extends FieldComponent<string>\n implements OnChanges\n{\n @Input()\n service: IEntityService<NamedModel>;\n @Input()\n rebind: string;\n @Input()\n filter?: CompositeFilterDescriptor;\n data: IdentifiedModel[] = [];\n get control(): AbstractControl {\n return this.parent.form.get(this.fieldName);\n }\n\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref, '');\n }\n\n async ngOnChanges(): Promise<void> {\n await this.getData();\n this.control.setValue(\n (this.data.find((d) => d.id === this.control.value) || this.data[0]).id\n );\n }\n\n private getData() {\n this.service\n .getPage(this.filter ? { filter: this.filter } : {})\n .subscribe((data) => (this.data = data.data));\n }\n}\n","import { Component, Input, ElementRef, OnChanges } from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n AbstractControl,\n} from '@angular/forms';\nimport { CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { FieldComponent } from '../../../angular/forms/widgets/field/field.component';\nimport { IdentifiedModel } from '../../../angular/models/IdentifiedModel';\nimport { NamedModel } from '../../../angular/models/NamedModel';\nimport { IEntityService } from '../../../services/IEntityService';\n\n@Component({\n selector: 'field-multiselect',\n templateUrl: './field-multiselect.component.html',\n styleUrls: ['./field-multiselect.component.css'],\n viewProviders: [\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n})\nexport class FieldMultiSelectComponent\n extends FieldComponent<string[]>\n implements OnChanges\n{\n @Input()\n service: IEntityService<NamedModel>;\n @Input()\n rebind: string;\n @Input()\n filter?: CompositeFilterDescriptor;\n data: IdentifiedModel[] = [];\n get control(): AbstractControl {\n return this.parent.form.get(this.fieldName);\n }\n\n constructor(public parent: FormGroupDirective, public eref: ElementRef) {\n super(parent, eref, []);\n }\n\n ngOnChanges(): void {\n this.getData().subscribe((data) => {\n this.data = data.data;\n this.control.setValue(\n this.control.value.filter(\n (x: string) => this.data.filter((d) => d.id === x).length\n )\n );\n });\n }\n\n private getData() {\n return this.service.getPage(this.filter ? { filter: this.filter } : {});\n }\n}\n","import {\n CompositeFilterDescriptor,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\n\nexport const urlSerialize = (object: object): string => {\n let serialized = '';\n Object.keys(object).forEach((key) => {\n if (typeof object[key] === 'object') {\n const serializedObject = !isEmptyObject(object[key])\n ? JSON.stringify(object[key])\n : '';\n serialized += serializedObject ? `${key}=${serializedObject}&` : '';\n } else {\n serialized +=\n object[key] || object[key] === 0 ? `${key}=${object[key]}&` : '';\n }\n });\n\n return serialized.slice(0, -1);\n};\n\nconst isEmptyObject = (object: object): boolean => {\n return object === null || Object.keys(object).length === 0;\n};\n\nconst isDate = (date) => isNaN(date) && !isNaN(Date.parse(date));\n\nexport const urlDeserialize = (params: URLSearchParams) => {\n const deserialized = {};\n params.forEach((param, key) => {\n if (key === 'sort' || key === 'group') {\n deserialized[key] = JSON.parse(param);\n } else if (key === 'filter') {\n deserialized[key] = transformFilter(JSON.parse(param));\n } else {\n deserialized[key] = param;\n }\n });\n\n return deserialized;\n};\n\nfunction transformFilter(\n gridFilter: CompositeFilterDescriptor\n): CompositeFilterDescriptor {\n transformFilters(gridFilter);\n\n return gridFilter;\n}\n\nfunction transformFilters(gridFilter: CompositeFilterDescriptor) {\n if (gridFilter.filters.length) {\n gridFilter.filters.forEach(\n (filter: CompositeFilterDescriptor | FilterDescriptor) => {\n let filterDescriptor = filter as FilterDescriptor;\n filterDescriptor.value = isDate(filterDescriptor.value)\n ? new Date(filterDescriptor.value)\n : filterDescriptor.value;\n\n let compositeFilterDescriptor = filter as CompositeFilterDescriptor;\n if (compositeFilterDescriptor.filters) {\n transformFilters(compositeFilterDescriptor);\n }\n }\n );\n }\n}\n","import { Observable } from 'rxjs';\nimport {\n Component,\n OnInit,\n ViewChild,\n Input,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n Output,\n} from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport {\n State,\n FilterDescriptor,\n CompositeFilterDescriptor,\n SortDescriptor,\n} from '@progress/kendo-data-query';\nimport {\n DataStateChangeEvent,\n RowClassArgs,\n} from '@progress/kendo-angular-grid';\nimport { Field } from './Field';\nimport { Command } from './Command';\nimport { urlDeserialize, urlSerialize } from './UrlSerializer';\nimport { ConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { IEntityService } from '../../services/IEntityService';\nimport { Page } from '../../models/Page';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NamedModel } from '../../angular/models/NamedModel';\nimport { IdentifiedModel } from '../../angular/models/IdentifiedModel';\n\nconst nameField = 'name';\n\n@Component({\n selector: 'entity-list',\n templateUrl: './entity-list.component.html',\n styleUrls: ['./entity-list.component.css'],\n})\nexport class EntityListComponent implements OnInit, OnChanges {\n @Input()\n public service: IEntityService<NamedModel>;\n @Input()\n public filters: Array<FilterDescriptor | CompositeFilterDescriptor>;\n @Input()\n public fields?: Field[];\n @Input()\n public commands?: Command[];\n @Input()\n public rowClass?: (dataItem: NamedModel, index: number) => {};\n @Input()\n public defaultSort?: SortDescriptor[];\n @Output()\n public filterChange = new EventEmitter<CompositeFilterDescriptor>();\n @ViewChild('confirmDialog', { static: true })\n public dialog: ConfirmDialogComponent;\n public gridState: State = {};\n public page: Page<NamedModel>;\n public loadings = 0;\n public searchTerm: string;\n public selected: string[] = [];\n public gridFields: Field[] = [];\n private defaultFields: Field[] = [\n { name: 'name', label: 'Name', sortable: true, position: 0 },\n ];\n\n constructor(\n private translate: TranslateService,\n private route: ActivatedRoute,\n private router: Router\n ) {\n this.getAllData = this.getAllData.bind(this);\n this.getRowClass = this.getRowClass.bind(this);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!changes.filters || changes.filters.firstChange) {\n return;\n }\n\n this.getFilteredData();\n }\n\n async ngOnInit() {\n this.gridFields = (this.fields || [])\n .concat(this.defaultFields)\n .sort((left, right) => (left.position || 0) - (right.position || 0));\n this.filters = this.filters ? this.filters : [];\n this.commands = this.commands ? this.commands : [];\n this.route.fragment.subscribe(async (fragment: string) => {\n await this.restoreGridState(new URLSearchParams(fragment));\n });\n\n this.route.firstChild.params.subscribe(async (params: Params) => {\n if (params.id) {\n this.selected[0] = params.id;\n } else {\n this.selected.pop();\n }\n });\n }\n\n public removeHandler({ dataItem }) {\n this.dialog.open(\n this.translate.instant('Confirmation.Delete') +\n ': \"' +\n dataItem.name +\n '\"?',\n () => this.remove(dataItem)\n );\n }\n\n public selectItem({ dataItem }) {\n this.router.navigate([dataItem.id], {\n relativeTo: this.route,\n fragment: urlSerialize(this.gridState),\n });\n }\n\n public onActivate(child: { saved: EventEmitter<NamedModel> }) {\n if (child.saved) {\n child.saved.subscribe((data: { id: string; name: string }) =>\n this.updateGrid(data)\n );\n }\n }\n\n public onDeactivate(child: { saved: EventEmitter<NamedModel> }) {\n if (child.saved) {\n child.saved.unsubscribe();\n }\n }\n\n public dataStateChange(state: DataStateChangeEvent) {\n Object.keys(state).forEach((key) => {\n this.gridState[key] = isNaN(state.skip)\n ? this.gridState[key]\n : state[key];\n });\n\n this.router.navigate([], {\n relativeTo: this.route,\n fragment: urlSerialize(this.gridState),\n });\n }\n\n public onSearch(value: string) {\n this.searchTerm = value;\n this.gridState.skip = 0;\n this.getFilteredData();\n }\n\n public getAllData(): Observable<Page<NamedModel>> {\n const state = Object.assign({}, this.gridState);\n delete state.skip;\n delete state.take;\n\n return this.service.getPage(state);\n }\n\n public getRowClass(context: RowClassArgs): Object {\n return this.rowClass && context\n ? this.rowClass(context.dataItem, context.index)\n : {};\n }\n\n private getFilteredData() {\n this.gridState.filter = this.getFilter();\n this.router.navigate([], {\n relativeTo: this.route,\n fragment: urlSerialize(this.gridState),\n });\n }\n\n protected updateGrid(data: NamedModel) {\n const exists = this.page.data.filter((x) => x.id === data.id);\n if (exists.length) {\n this.page.data[this.page.data.indexOf(exists[0])] = data;\n\n return;\n }\n\n this.page.total++;\n this.page.data.splice(0, 0, data);\n if (this.page.data.length > this.gridState.take) {\n this.page.data.splice(this.page.data.length - 1, 1);\n }\n\n this.selected[0] = data.id;\n this.router.navigate([data.id], {\n relativeTo: this.route,\n preserveFragment: true,\n });\n }\n\n private async remove(entity: IdentifiedModel) {\n this.loadings++;\n this.service.delete(entity.id).subscribe(() => {\n if (\n this.selected.length &&\n this.selected[this.selected.length - 1] === entity.id\n ) {\n this.router.navigate(['../'], {\n preserveFragment: true,\n relativeTo: this.route.firstChild,\n });\n }\n this.loadings--;\n });\n this.getData();\n }\n\n protected getData() {\n this.loadings++;\n this.service.getPage(this.gridState).subscribe((page) => {\n this.page = page;\n this.loadings--;\n });\n }\n\n private getFilter(): CompositeFilterDescriptor {\n const filter: CompositeFilterDescriptor = {\n logic: 'and',\n filters: this.searchTerm\n ? [\n { field: nameField, operator: 'contains', value: this.searchTerm },\n ...this.filters,\n ]\n : this.filters,\n };\n\n return filter;\n }\n\n private onFilterChange() {\n const filter: any = this.gridState.filter?.filters.find(\n (x: FilterDescriptor) => x.field === nameField\n );\n this.searchTerm = filter?.value;\n this.filterChange.emit(this.gridState.filter);\n }\n\n private async restoreGridState(params: URLSearchParams) {\n const defaultGridState: State = {\n sort: this.defaultSort || [{ field: nameField, dir: 'asc' }],\n skip: 0,\n take: 10,\n };\n\n const state = urlDeserialize(params);\n this.gridState = state.hasOwnProperty('take') ? state : defaultGridState;\n this.onFilterChange();\n this.getData();\n }\n}\n","import {\n Component,\n Input,\n Output,\n OnInit,\n EventEmitter,\n ViewChild,\n} from '@angular/core';\nimport { DropDownListComponent } from '@progress/kendo-angular-dropdowns';\nimport { IEntityService } from '../../../services/IEntityService';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport { NamedModel } from '../../../angular/models/NamedModel';\n\nconst All = 'All';\n\n@Component({\n selector: 'field-dropdownlist',\n templateUrl: './field-dropdownlist.component.html',\n styleUrls: ['./field-dropdownlist.component.css'],\n})\nexport class FieldDropdownlistComponent implements OnInit {\n @Input()\n service: IEntityService<NamedModel>;\n @Input()\n label: string;\n @Output()\n valueChange = new EventEmitter<NamedModel>();\n @ViewChild('inputElement')\n private kendoDropDown: DropDownListComponent;\n private initialSelectedId: string;\n\n public defaultItem: NamedModel;\n public data: NamedModel[];\n\n constructor(private translate: TranslateService) {}\n\n async ngOnInit(): Promise<void> {\n this.defaultItem = { id: null, name: this.translate.instant(All) };\n await this.getData();\n this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\n this.defaultItem = { id: null, name: this.translate.instant(All) };\n });\n }\n\n private getData() {\n this.service.getPage({}).subscribe((data) => {\n this.data = data.data;\n if (this.initialSelectedId) {\n const selectedItem = this.data.find(\n (x) => x.id === this.initialSelectedId\n );\n\n if (selectedItem) {\n this.kendoDropDown.writeValue(selectedItem);\n }\n }\n });\n }\n\n onValueChange(event: NamedModel) {\n this.valueChange.emit(event);\n }\n\n public initSelectedId(id: string): void {\n this.initialSelectedId = id;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'excel-export-button',\n templateUrl: './excel-export-button.component.html',\n styleUrls: ['./excel-export-button.component.css'],\n})\nexport class ExcelExportButtonComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'footer-bar',\n templateUrl: './footer-bar.component.html',\n styleUrls: ['./footer-bar.component.css'],\n})\nexport class FooterBarComponent {}\n","import { Component, Input } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'modal-window',\n templateUrl: './modal-window.component.html',\n styleUrls: ['./modal-window.component.css'],\n})\nexport class ModalWindowComponent {\n @Input() callbackPath: string;\n\n constructor(protected route: ActivatedRoute, private router: Router) {}\n\n public opened: boolean = true;\n\n public close() {\n this.opened = false;\n this.router.navigate([this.callbackPath], {\n relativeTo: this.route,\n fragment: this.route.snapshot?.fragment,\n });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n} from '@angular/core';\nimport {\n CompositeFilterDescriptor,\n distinct,\n filterBy,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\nimport { FilterService } from '@progress/kendo-angular-grid';\nimport { NamedModel } from '../../angular/models/NamedModel';\n\nconst defaultValueKey = 'id';\n\n@Component({\n selector: 'multicheck-filter',\n templateUrl: './multicheck-filter.component.html',\n styleUrls: ['./multicheck-filter.component.css'],\n})\nexport class MulticheckFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public data: NamedModel[];\n @Input() public filterService: FilterService;\n @Input() public field: string;\n @Input() public valueField: string;\n @Output() public valueChange = new EventEmitter<number[]>();\n\n public currentData: NamedModel[];\n public showFilter = true;\n private value: string[] = [];\n private filters: FilterDescriptor[] = [];\n private get ValueKey(): string {\n return this.valueField ? this.valueField : defaultValueKey;\n }\n\n public ngAfterViewInit() {\n this.currentData = this.data;\n if (this.currentData && this.currentData.length) {\n this.traverseFilters(this.currentFilter);\n this.value = this.filters.map((f: FilterDescriptor) => f.value);\n this.showFilter = typeof this.currentData[0].name === 'string';\n }\n }\n\n traverseFilters(filters: CompositeFilterDescriptor | FilterDescriptor) {\n let compositeFilterDescriptor = filters as CompositeFilterDescriptor;\n if (compositeFilterDescriptor.filters) {\n for (let i = 0; i < compositeFilterDescriptor.filters.length; i++) {\n const innerFilter = compositeFilterDescriptor.filters[\n i\n ] as FilterDescriptor;\n if (innerFilter.value && innerFilter.field === this.field) {\n this.filters.push(innerFilter);\n }\n\n this.traverseFilters(innerFilter);\n }\n }\n }\n\n public isItemSelected(item: NamedModel) {\n return this.value.some((x) => x === item[this.ValueKey]);\n }\n\n public onSelectionChange(item: NamedModel) {\n const selectedValue = item[this.ValueKey];\n if (this.value.some((x) => x === selectedValue)) {\n this.value = this.value.filter((x) => x !== selectedValue);\n } else {\n this.value.push(selectedValue);\n }\n\n this.filterService.filter({\n filters: this.value.map((value) => ({\n field: this.field,\n operator: 'eq',\n value,\n })),\n logic: 'or',\n });\n }\n\n public onInput(e: any) {\n this.currentData = distinct(\n [\n ...this.currentData.filter((dataItem) =>\n this.value.some((val) => val === dataItem.id)\n ),\n ...filterBy(this.data, {\n operator: 'contains',\n field: 'name',\n value: e.target.value,\n }),\n ],\n 'name'\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Member } from '../../models/Member';\n\n@Component({\n selector: 'top-bar',\n templateUrl: './top-bar.component.html',\n styleUrls: ['./top-bar.component.css'],\n})\nexport class TopMenuComponent {\n @Input()\n currentUser: Member;\n\n public toggleButtonClick() {\n document.body.classList.toggle('mini-navbar');\n }\n}\n","export enum FilterTargets {\n Url,\n Grid,\n}\n","export enum MemberTypes {\n Admin = 'Admin',\n User = 'User'\n}\n","export enum Operators {\n eq = 'eq',\n neq = 'neq',\n isnull = 'isnull',\n isnotnull = 'isnotnull',\n lt = 'lt',\n lte = 'lte',\n gt = 'gt',\n gte = 'gte',\n startswith = 'startswith',\n endswith = 'endswith',\n contains = 'contains',\n doesnotcontain = 'doesnotcontain',\n isempty = 'isempty',\n isnotempty = 'isnotempty',\n}\n","export enum PermissionTypes {\n Create = 'Create',\n Delete = 'Delete',\n Edit = 'Edit',\n View = 'View',\n Set = 'Set',\n}\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { MsalModule, MsalService, MSAL_INSTANCE } from '@azure/msal-angular';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { DateInputsModule } from '@progress/kendo-angular-dateinputs';\nimport { DialogsModule, WindowModule } from '@progress/kendo-angular-dialog';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { ExcelModule, GridModule } from '@progress/kendo-angular-grid';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\nimport {\n OAuthModule,\n OAuthModuleConfig,\n OAuthStorage,\n} from 'angular-oauth2-oidc';\nimport { IndiginaModule } from './angular/indigina.module';\nimport { AppSettings } from './angular/models/AppSettings';\nimport { IndiginaConfiguration } from './angular/models/IndiginaConfiguration';\nimport { LiveUpdatesControlComponent } from './angular/widgets/live-updates-control/live-updates-control.component';\nimport { AccountMenuComponent } from './components/account-menu/account-menu.component';\nimport { AzureLoginCallbackComponent } from './components/azure-login-callback/azure-login-callback.component';\nimport { LanguageSelectorComponent } from './components/language-selector/language-selector.component';\nimport { MSALInstanceFactory } from './config/msal-instance.factory';\nimport { RequirePermissionDirective } from './directives/requirePermission.directive';\nimport { AuthHeadersInterceptor } from './interceptors/auth-headers.interceptor';\nimport { AccountService } from './services/account.service';\nimport { PermissionsService } from './services/permissions.service';\nimport { SignalRService } from './services/signalr/signalr.service';\nimport { ActivityFilterComponent } from './widgets/activity-filter/activity-filter.component';\nimport { ConfirmDialogComponent } from './widgets/confirm-dialog/confirm-dialog.component';\nimport { CurrentTimezoneComponent } from './widgets/current-timezone/current-timezone.component';\nimport { EntityEditButtonsBarComponent } from './widgets/entity-edit/buttons-bar/buttons-bar.component';\nimport { EntityEditFormComponent } from './widgets/entity-edit/entity-edit-form.component';\nimport { FieldDropdownComponent } from './widgets/entity-edit/field-dropdown/field-dropdown.component';\nimport { FieldMultiSelectComponent } from './widgets/entity-edit/field-multiselect/field-multiselect.component';\nimport { EntityListComponent } from './widgets/entity-list/entity-list.component';\nimport { FieldDropdownlistComponent } from './widgets/entity-list/field-dropdownlist/field-dropdownlist.component';\nimport { ExcelExportButtonComponent } from './widgets/excel-export-button/excel-export-button.component';\nimport { FooterBarComponent } from './widgets/footer-bar/footer-bar.component';\nimport { ModalWindowComponent } from './widgets/modal-window/modal-window.component';\nimport { MulticheckFilterComponent } from './widgets/multicheck-filter/multicheck-filter.component';\nimport { TopMenuComponent } from './widgets/top-bar/top-bar.component';\n\n@NgModule({\n declarations: [\n TopMenuComponent,\n FooterBarComponent,\n AccountMenuComponent,\n LanguageSelectorComponent,\n EntityEditButtonsBarComponent,\n EntityEditFormComponent,\n EntityListComponent,\n FieldDropdownComponent,\n FieldMultiSelectComponent,\n FieldDropdownlistComponent,\n ConfirmDialogComponent,\n ExcelExportButtonComponent,\n MulticheckFilterComponent,\n RequirePermissionDirective,\n ActivityFilterComponent,\n CurrentTimezoneComponent,\n ModalWindowComponent,\n LiveUpdatesControlComponent,\n AzureLoginCallbackComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n IndiginaModule,\n OAuthModule.forRoot(),\n PopupModule,\n GridModule,\n ExcelModule,\n InputsModule,\n ButtonsModule,\n DialogsModule,\n CommonModule,\n FormsModule,\n WindowModule,\n DialogsModule,\n ReactiveFormsModule,\n DropDownsModule,\n TooltipModule,\n DateInputsModule,\n MsalModule,\n ],\n providers: [\n { provide: OAuthStorage, useValue: localStorage },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthHeadersInterceptor,\n multi: true,\n },\n AccountService,\n PermissionsService,\n SignalRService,\n MsalService,\n ],\n exports: [\n TopMenuComponent,\n FooterBarComponent,\n AccountMenuComponent,\n LanguageSelectorComponent,\n IndiginaModule,\n PopupModule,\n OAuthModule,\n DropDownsModule,\n TooltipModule,\n DateInputsModule,\n WindowModule,\n DialogsModule,\n PopupModule,\n GridModule,\n ExcelModule,\n InputsModule,\n ButtonsModule,\n EntityEditButtonsBarComponent,\n EntityEditFormComponent,\n EntityListComponent,\n FieldDropdownComponent,\n FieldMultiSelectComponent,\n FieldDropdownlistComponent,\n ConfirmDialogComponent,\n ExcelExportButtonComponent,\n MulticheckFilterComponent,\n RequirePermissionDirective,\n ActivityFilterComponent,\n CurrentTimezoneComponent,\n ModalWindowComponent,\n LiveUpdatesControlComponent,\n MsalModule,\n AzureLoginCallbackComponent,\n ],\n})\nexport class KendoModule {\n public static forRoot(\n config: IndiginaConfiguration\n ): ModuleWithProviders<KendoModule> {\n return {\n ngModule: KendoModule,\n providers: [\n {\n provide: IndiginaConfiguration,\n useValue: config,\n },\n {\n provide: OAuthModuleConfig,\n useValue: {\n resourceServer: {\n allowedUrls: [config.appSettings.apiUrl],\n sendAccessToken: true,\n },\n },\n },\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALInstanceFactory,\n deps: [IndiginaConfiguration],\n },\n ],\n };\n }\n}\n\nexport function OAuthConfigFactory(\n appSettings: AppSettings\n): OAuthModuleConfig {\n return {\n resourceServer: {\n allowedUrls: [appSettings?.apiUrl],\n sendAccessToken: true,\n },\n };\n}\n","import { State, CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { ActivityFilter } from '../../models/ActivityFilter';\nimport { FilterTargets } from '../../models/FilterTargets';\nimport { Operators } from '../../models/Operators';\nexport class FilterConverter {\n public static toGridState(\n filter: ActivityFilter,\n DateFilterFieldName: string\n ): State {\n const gridState: State = {\n filter: {\n logic: 'and',\n filters: [],\n },\n };\n const mainFilter: CompositeFilterDescriptor = {\n logic: 'and',\n filters: [],\n };\n gridState.skip = filter.skip;\n gridState.take = filter.take;\n if (filter.group) {\n gridState.group = filter.group;\n }\n\n if (filter.sort) {\n gridState.sort = filter.sort;\n } else {\n gridState.sort = [{ field: DateFilterFieldName, dir: 'desc' }];\n }\n\n if (filter.dateFrom) {\n mainFilter.filters.push({\n operator: Operators.gte,\n field: DateFilterFieldName,\n value: filter.dateFrom,\n });\n }\n\n if (filter.dateTo) {\n mainFilter.filters.push({\n operator: Operators.lte,\n field: DateFilterFieldName,\n value: filter.dateTo,\n });\n }\n\n filter.customFilters?.forEach((x) => {\n if (x.filterTarget === FilterTargets.Grid) {\n if (x.values && x.values.length) {\n const multiselectFilter: CompositeFilterDescriptor = {\n logic: 'or',\n filters: [],\n };\n x.values.forEach((value) => {\n multiselectFilter.filters.push({\n operator: x.operator,\n field: x.field,\n value,\n });\n });\n\n gridState.filter.filters.push(multiselectFilter);\n } else {\n if (x.value !== null && typeof x.value !== 'undefined') {\n mainFilter.filters.push({\n operator: x.operator,\n field: x.field,\n value: x.value,\n });\n }\n }\n }\n });\n\n if (mainFilter.filters.length) {\n if (gridState.filter.filters.length) {\n gridState.filter.filters.push(mainFilter);\n } else {\n gridState.filter.filters = mainFilter.filters;\n }\n }\n\n return gridState;\n }\n}\n","import { FilterConverter } from '../widgets/activity-filter/FilterConverter';\nimport {\n urlDeserialize,\n urlSerialize,\n} from '../widgets/entity-list/UrlSerializer';\nimport { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport {\n CompositeFilterDescriptor,\n FilterDescriptor,\n State,\n} from '@progress/kendo-data-query';\nimport { ActivityFilter } from '../models/ActivityFilter';\nimport { FilterTargets } from '../models/FilterTargets';\nimport { Operators } from '../models/Operators';\nimport { CustomFilter } from '../models/CustomFilter';\n\nconst filterKey = 'filter';\nconst filtersKey = 'filters';\nconst dateToKey = 'dateTo';\nconst dateFromKey = 'dateFrom';\nconst customFiltersKey = 'customFilters';\nconst nullKey = 'null';\n\n@Injectable()\nexport class ActivityFilterService {\n public currentFilter: ActivityFilter;\n public currentGridState: State;\n\n private readonly defaultFilter: ActivityFilter = {\n dateTo: null,\n dateFrom: null,\n switchToArchive: false,\n searchText: '',\n skip: 0,\n take: 10,\n };\n\n protected DateFilterStartFieldName = 'start';\n protected filterBehavior = new BehaviorSubject<ActivityFilter>(\n this.defaultFilter\n );\n protected gridStateBehavior = new BehaviorSubject<State>(\n FilterConverter.toGridState(\n this.defaultFilter,\n this.DateFilterStartFieldName\n )\n );\n\n public filter$ = this.filterBehavior.asObservable();\n public gridState$ = this.gridStateBehavior.asObservable();\n\n constructor(private route: ActivatedRoute, private router: Router) {\n this.currentFilter = Object.assign({}, this.defaultFilter);\n this.route.fragment.subscribe(async (fragment: string) => {\n const parsed = urlDeserialize(new URLSearchParams(fragment));\n if (Object.keys(parsed).some((key) => key === filterKey)) {\n this.currentGridState = parsed as State;\n this.fillCurrentFilter(parsed);\n } else {\n this.clearFilter();\n this.setTodayDates();\n this.currentGridState = FilterConverter.toGridState(\n this.currentFilter,\n this.DateFilterStartFieldName\n );\n }\n\n this.filterBehavior.next(this.currentFilter);\n });\n\n this.filter$.subscribe((filter) => {\n this.gridStateBehavior.next(\n FilterConverter.toGridState(filter, this.DateFilterStartFieldName)\n );\n });\n }\n\n public reset() {\n this.clearFilter();\n this.applyFilter(this.currentFilter);\n this.gridStateBehavior.next(this.currentGridState);\n }\n\n public setFilter(filter: ActivityFilter) {\n this.currentFilter.skip = 0;\n this.currentFilter = Object.assign(filter);\n this.currentGridState = FilterConverter.toGridState(\n this.currentFilter,\n this.DateFilterStartFieldName\n );\n }\n\n public applyFilter(filter: ActivityFilter) {\n this.setFilter(filter);\n this.stateNavigation(this.prepareFilterToSerialize());\n }\n\n public setToday() {\n this.setTodayDates();\n this.applyFilter(this.currentFilter);\n }\n\n public clearFilter() {\n if (this.currentFilter) {\n const customFilters = Object.assign([], this.currentFilter.customFilters);\n customFilters.forEach((x) => {\n x.value = null;\n if (x.values) {\n x.values = [];\n }\n });\n this.currentFilter = Object.assign({}, this.defaultFilter);\n this.currentFilter.customFilters = customFilters;\n } else {\n this.currentFilter = Object.assign({}, this.defaultFilter);\n }\n }\n\n public setGridState(state: State) {\n this.currentGridState = state;\n const { switchToArchive, searchText } = this.currentFilter;\n this.clearFilter();\n this.currentFilter = Object.assign(this.currentFilter, {\n switchToArchive,\n searchText,\n });\n this.fillCurrentFilter(this.currentGridState);\n this.stateNavigation(this.currentGridState);\n }\n\n public setTodayDates() {\n const now = new Date();\n this.currentFilter.dateTo = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() + 1,\n 0,\n 0,\n 0\n );\n this.currentFilter.dateFrom = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n 0,\n 0,\n 0\n );\n }\n\n private async stateNavigation(object: Object) {\n const navigate = await this.router.navigate([], {\n relativeTo: this.route,\n fragment: urlSerialize(object),\n });\n if (!navigate) {\n this.filterBehavior.next(this.currentFilter);\n }\n }\n\n private prepareFilterToSerialize(): object {\n const result = {};\n Object.keys(this.currentFilter).forEach((key) => {\n if (\n key !== dateToKey &&\n key !== dateFromKey &&\n key !== customFiltersKey\n ) {\n result[key] = this.currentFilter[key];\n }\n });\n\n this.currentFilter.customFilters?.forEach((filter) => {\n if (filter.filterTarget == FilterTargets.Url) {\n result[filter.field] = filter.value;\n }\n });\n\n result[filterKey] = FilterConverter.toGridState(\n this.currentFilter,\n this.DateFilterStartFieldName\n ).filter;\n\n return result;\n }\n\n private fillCurrentFilter(object: State) {\n this.currentFilter.customFilters = [];\n this.fillFromDescriptor(object.filter);\n Object.keys(object).forEach((key) => {\n if (key !== filterKey && key !== nullKey && key !== filtersKey) {\n if (Object.keys(this.currentFilter).some((x) => x == key)) {\n this.currentFilter[key] = object[key];\n } else {\n this.fillUrlFilter(key, object[key]);\n }\n }\n });\n }\n\n private fillUrlFilter(key: string, val: string) {\n const index = this.currentFilter.customFilters.findIndex(\n (filter) => filter.field == key\n );\n if (index !== -1) {\n this.currentFilter.customFilters[index].value = val;\n } else {\n this.currentFilter.customFilters.push({\n field: key,\n value: val,\n operator: Operators.eq,\n filterTarget: FilterTargets.Url,\n });\n }\n }\n\n private fillFromDescriptor(gridFilter: CompositeFilterDescriptor) {\n gridFilter?.filters.forEach(\n (filter: CompositeFilterDescriptor | FilterDescriptor) => {\n const filterDescriptor = filter as FilterDescriptor;\n if (\n filterDescriptor.field === this.DateFilterStartFieldName &&\n filterDescriptor.operator === Operators.lte\n ) {\n this.currentFilter.dateTo = filterDescriptor.value;\n }\n\n if (\n filterDescriptor.field === this.DateFilterStartFieldName &&\n filterDescriptor.operator === Operators.gte\n ) {\n this.currentFilter.dateFrom = filterDescriptor.value;\n }\n\n if (\n filterDescriptor.field &&\n filterDescriptor.field !== this.DateFilterStartFieldName\n ) {\n this.setFieldFilter({\n field: filterDescriptor.field as string,\n filterTarget: FilterTargets.Grid,\n operator: Operators[filterDescriptor.operator as string],\n value: filterDescriptor.value,\n });\n }\n\n const compositeFilterDescriptor = filter as CompositeFilterDescriptor;\n if (compositeFilterDescriptor.filters) {\n this.fillFromDescriptor(compositeFilterDescriptor);\n }\n }\n );\n }\n\n private setFieldFilter(filter: CustomFilter) {\n const index = this.currentFilter.customFilters.findIndex(\n (x) => x.field === filter.field && x.operator === filter.operator\n );\n if (index !== -1) {\n const values = this.currentFilter.customFilters[index].values;\n const value = this.currentFilter.customFilters[index].value;\n this.currentFilter.customFilters[index].values = values ? values : [];\n if (value) {\n this.currentFilter.customFilters[index].values.push(value as string);\n this.currentFilter.customFilters[index].value = null;\n }\n\n this.currentFilter.customFilters[index].values.push(\n filter.value as string\n );\n } else {\n this.currentFilter.customFilters.push(filter);\n }\n }\n}\n","import { IEntityService } from './IEntityService';\nimport { Page } from '../models/Page';\nimport { IEntityEndpoints } from './IEntityEndpoints';\nimport { Observable } from 'rxjs';\nimport { State } from '@progress/kendo-data-query/dist/npm/state';\nimport { IdentifiedModel } from '../angular/models/IdentifiedModel';\nimport { HttpService } from '../angular/services/http.service';\n\nexport abstract class EntityService<T extends IdentifiedModel>\n implements IEntityService<T>\n{\n constructor(\n protected httpService: HttpService,\n protected endpoints: IEntityEndpoints\n ) {}\n\n getPage(state: State): Observable<Page<T>> {\n return this.httpService.get<Page<T>>(this.endpoints.query(state));\n }\n\n get(id: string): Observable<T> {\n return this.httpService.get<T>(this.endpoints.entityPath(id));\n }\n\n delete(id: string): Observable<object> {\n return this.httpService.delete(this.endpoints.entityPath(id));\n }\n\n save(model: T): Observable<T> {\n if (model.id) {\n return this.httpService.put(this.endpoints.entityPath(model.id), model);\n }\n\n return this.httpService.post(this.endpoints.path, model);\n }\n}\n","import { EventEmitter } from '@angular/core';\nimport { FormGroupWithErrors } from '../../angular/forms/extensions/FormGroupWithErrors';\nimport { IdentifiedModel } from '../../angular/models/IdentifiedModel';\nimport { IEntityService } from '../../services/IEntityService';\nimport { IFormAdapter } from './IFormAdapter';\n\nexport abstract class EntityEditComponent<T extends IdentifiedModel>\n implements IFormAdapter<T>\n{\n form: FormGroupWithErrors;\n saved = new EventEmitter<T>();\n get adapter() {\n return this;\n }\n\n constructor(public service: IEntityService<T>) {}\n\n getValue(): T {\n return this.form.value;\n }\n\n getService(): IEntityService<T> {\n return this.service;\n }\n\n setForm(form: FormGroupWithErrors): void {\n this.form = form;\n }\n\n onSaved(value: T): void {\n this.saved.emit(value);\n }\n}\n","import * as momentModule from 'moment-timezone';\n/*\n * Public API Surface of kendo\n */\nexport * from '@angular/platform-browser/animations';\nexport * from '@azure/msal-angular';\nexport { LogLevel } from '@microsoft/signalr';\nexport * from '@ngx-loading-bar/http-client';\nexport * from '@ngx-translate/core';\nexport {\n OAuthModule,\n OAuthModuleConfig,\n OAuthService,\n OAuthStorage,\n} from 'angular-oauth2-oidc';\nexport * from 'ngx-clipboard';\nexport * from 'ngx-toastr';\nexport { IndiginaModule } from '././lib/angular/indigina.module';\nexport { BaseAccountService } from '././lib/services/base.account.service';\nexport { ISubscriptionControl } from './lib/angular/extensions/ISubscriptionControl';\nexport { ReEntrySubscription } from './lib/angular/extensions/ReEntrySubscription';\nexport { DebounceDirective } from './lib/angular/forms/directives/debounce.directive';\nexport { FormGroupWithErrors } from './lib/angular/forms/extensions/FormGroupWithErrors';\nexport { FieldInputComponent } from './lib/angular/forms/widgets/field/field-input/field-input.component';\nexport { NumberInputComponent } from './lib/angular/forms/widgets/field/field-input/number-input.component';\nexport { FieldComponent } from './lib/angular/forms/widgets/field/field.component';\nexport { GeneralErrorsComponent } from './lib/angular/forms/widgets/general-errors/general-errors.component';\nexport { AppSettings } from './lib/angular/models/AppSettings';\nexport type { CustomHttpErrorResponse } from './lib/angular/models/CustomHttpErrorResponse';\nexport { HttpCodes } from './lib/angular/models/HttpCodes';\nexport { HttpMethods } from './lib/angular/models/HttpMethods';\nexport { IdentifiedModel } from './lib/angular/models/IdentifiedModel';\nexport { IndiginaConfiguration } from './lib/angular/models/IndiginaConfiguration';\nexport { Language } from './lib/angular/models/Language';\nexport { NamedModel } from './lib/angular/models/NamedModel';\nexport { HttpService } from './lib/angular/services/http.service';\nexport { LocaleSettingsService } from './lib/angular/services/locale-settings.service';\nexport { SettingsService } from './lib/angular/services/settings.service';\nexport { AppToastrService } from './lib/angular/services/toastr.service';\nexport { LiveUpdatesControlComponent } from './lib/angular/widgets/live-updates-control/live-updates-control.component';\nexport { MenuItem } from './lib/angular/widgets/side-menu/MenuItem';\nexport { SideMenuComponent } from './lib/angular/widgets/side-menu/side-menu.component';\nexport { TreeViewComponent } from './lib/angular/widgets/tree-view/tree-view.component';\nexport { AccountMenuComponent } from './lib/components/account-menu/account-menu.component';\nexport { AzureLoginCallbackComponent } from './lib/components/azure-login-callback/azure-login-callback.component';\nexport { LanguageSelectorComponent } from './lib/components/language-selector/language-selector.component';\nexport { MSALInstanceFactory } from './lib/config/msal-instance.factory';\nexport { RequirePermissionDirective } from './lib/directives/requirePermission.directive';\nexport { KendoModule } from './lib/kendo.module';\nexport { ActivityFilter } from './lib/models/ActivityFilter';\nexport { AzureB2CSettings } from './lib/models/AzureB2CSettings';\nexport { CustomFilter } from './lib/models/CustomFilter';\nexport { CustomFilterElement } from './lib/models/CustomFilterElement';\nexport { FieldTypes } from './lib/models/FieldTypes';\nexport { FilterTargets } from './lib/models/FilterTargets';\nexport { Member } from './lib/models/Member';\nexport { MemberBase } from './lib/models/MemberBase';\nexport { MemberTypes } from './lib/models/MemberTypes';\nexport { OidcSettings } from './lib/models/OidcSettings';\nexport { Operators } from './lib/models/Operators';\nexport { Page } from './lib/models/Page';\nexport { Permissions } from './lib/models/Permissions';\nexport { PermissionTypes } from './lib/models/PermissionTypes';\nexport { SystemInfo } from './lib/models/SystemInfo';\nexport { AccountService } from './lib/services/account.service';\nexport { ActivityFilterService } from './lib/services/activity.filter.service';\nexport { AuthProviderResolver } from './lib/services/auth-provider.resolver';\nexport { AuthProvider } from './lib/services/auth.providers/AuthProvider';\nexport {\n buildActivityEndpoints,\n buildEntityEndpoints,\n endpoints,\n} from './lib/services/endpoints';\nexport { EntityService } from './lib/services/entity.service';\nexport { IActivityEndpoints } from './lib/services/IActivityEndpoints';\nexport { IEntityEndpoints } from './lib/services/IEntityEndpoints';\nexport { IEntityService } from './lib/services/IEntityService';\nexport { PermissionsService } from './lib/services/permissions.service';\nexport { EventNames } from './lib/services/signalr/EventNames';\nexport { SignalRService } from './lib/services/signalr/signalr.service';\nexport { ActivityFilterComponent } from './lib/widgets/activity-filter/activity-filter.component';\nexport { ConfirmDialogComponent } from './lib/widgets/confirm-dialog/confirm-dialog.component';\nexport { CurrentTimezoneComponent } from './lib/widgets/current-timezone/current-timezone.component';\nexport { EntityEditButtonsBarComponent } from './lib/widgets/entity-edit/buttons-bar/buttons-bar.component';\nexport { EntityEditFormComponent } from './lib/widgets/entity-edit/entity-edit-form.component';\nexport { EntityEditComponent } from './lib/widgets/entity-edit/entity-edit.component';\nexport { FieldDropdownComponent } from './lib/widgets/entity-edit/field-dropdown/field-dropdown.component';\nexport { FieldMultiSelectComponent } from './lib/widgets/entity-edit/field-multiselect/field-multiselect.component';\nexport { Command } from './lib/widgets/entity-list/Command';\nexport { EntityListComponent } from './lib/widgets/entity-list/entity-list.component';\nexport { Field } from './lib/widgets/entity-list/Field';\nexport { FieldDropdownlistComponent } from './lib/widgets/entity-list/field-dropdownlist/field-dropdownlist.component';\nexport {\n urlDeserialize,\n urlSerialize,\n} from './lib/widgets/entity-list/UrlSerializer';\nexport { ExcelExportButtonComponent } from './lib/widgets/excel-export-button/excel-export-button.component';\nexport { FooterBarComponent } from './lib/widgets/footer-bar/footer-bar.component';\nexport { ModalWindowComponent } from './lib/widgets/modal-window/modal-window.component';\nexport { MulticheckFilterComponent } from './lib/widgets/multicheck-filter/multicheck-filter.component';\nexport { TopMenuComponent } from './lib/widgets/top-bar/top-bar.component';\nexport const momentTimezone = momentModule;\n","import { NamedModel } from './NamedModel';\n\nexport const HttpMethods: NamedModel[] = [\n { name: 'POST', id: 'POST' },\n { name: 'PUT', id: 'PUT' },\n { name: 'GET', id: 'GET' },\n { name: 'DELETE', id: 'DELETE' },\n];\n"]}
|