@indigina/kendo 1.0.142-beta → 1.0.155-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.
@@ -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/toastr.service.ts","../../../projects/kendo/src/lib/angular/services/settings.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/services/permissions.service.ts","../../../projects/kendo/src/lib/directives/requirePermission.directive.ts","../../../projects/kendo/src/lib/config/msal-instance.factory.ts","../../../projects/kendo/src/lib/models/FieldTypes.ts","../../../projects/kendo/src/lib/interceptors/auth-headers.interceptor.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","AppToastrService","toastr","timeout","showError","message","timeOut","showSuccess","success","ToastrService","callbackPathKey","loginAsKey","tokenKey","SettingsService","putCurrentCallbackPath","putCallbackPath","hash","pathUri","removeItem","setLoginAsUser","getLoginAsUser","setToken","getToken","HttpService","appToastrService","httpClient","createUrl","catchError","err","handleServerError","delete","tap","showSuccessMessage","post","successTranslateMessage","put","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","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","isIE","navigator","userAgent","indexOf","MSALInstanceFactory","msalConfig","auth","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","SessionStorage","storeAuthStateInCookie","loggerOptions","loggerCallback","piiLoggingEnabled","PublicClientApplication","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';\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 { 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 { HttpClient } from '@angular/common/http';\nimport { catchError, tap } from 'rxjs/operators';\nimport { of, Observable, throwError } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { AppToastrService } from './toastr.service';\nimport { Router } from '@angular/router';\nimport { SettingsService } from './settings.service';\nimport { CustomHttpErrorResponse } from '../models/CustomHttpErrorResponse';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AppSettings } from '../models/AppSettings';\nimport { HttpCodes } from '../models/HttpCodes';\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 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 { 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 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","export enum FieldTypes {\n Text,\n Checkbox,\n Dropdown,\n Multiselect,\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","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 { 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","endsWith","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 if (!configuration.appSettings.apiUrl.endsWith('/')) {\n configuration.appSettings.apiUrl += '/';\n }\n\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 if (!config.appSettings.apiUrl.endsWith('/')) {\n config.appSettings.apiUrl += '/';\n }\n\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"]}