{"version":3,"file":"main.js","mappings":"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","sources":["../Authentication/auth.service.ts","../Authentication/index.ts","../Msal/msal.module.ts","../Msal/services/msal.service.ts","../Msal/services/msalHttpRequest.service.ts","../Shared_clr_0_1/Shared.module.ts","../Shared_clr_0_1/components/address/address.component.ts","../Shared_clr_0_1/components/address/address.component.html","../Shared_clr_0_1/components/dateFilter.component.ts","../Shared_clr_0_1/components/loadingPresenter.component.ts","../Shared_clr_0_1/components/locker.component.ts","../Shared_clr_0_1/components/object-view.component.ts","../Shared_clr_0_1/components/oneFieldSearch.component.ts","../Shared_clr_0_1/components/requestFragmenterPresenter.component.ts","../Shared_clr_0_1/components/requestPagePresenter.ts","../Shared_clr_0_1/components/requestPresenter.component.ts","../Shared_clr_0_1/components/selectFilter.component.ts","../Shared_clr_0_1/components/status.component.ts","../Shared_clr_0_1/components/userForm.component.ts","../Shared_clr_0_1/pipes/fileSizePipe.ts","../Shared_clr_0_1/pipes/keyValuesPipe.ts","../Shared_clr_0_1/pipes/useKeyPipe.ts","../Shared_clr_0_1/ui-components/autoSizingTextInput.component.ts","../Shared_clr_0_1/ui-components/comboBox.component.ts","../Shared_clr_0_1/ui-components/customModalDialog.component.ts","../Shared_clr_0_1/ui-components/expandingInputList.component.ts","../Shared_clr_0_1/ui-components/mutuallyExclusiveList.component.ts","../Shared_clr_0_1/ui-components/mutuallyExclusiveListBox.component.ts","../Shared_clr_0_1/utils/clarityFilter.ts","../Shared_clr_0_1/utils/clientDatagridController.ts","../Shared_clr_0_1/utils/countries.ts","../Shared_clr_0_1/utils/datagridController.ts","../Shared_clr_0_1/utils/httpRequest.ts","../Shared_clr_0_1/utils/httpRequestFragmenter.ts","../Shared_clr_0_1/utils/liteEvent.ts","../Shared_clr_0_1/utils/stringUtils.ts","./src/app/Account/account.component.ts","./src/app/Account/account.component.html","./src/app/Account/account.service.ts","./src/app/Enterprise/SubscriptionGroupTable.component.ts","./src/app/Enterprise/addUserModal.component.ts","./src/app/Enterprise/addUserModal.component.html","./src/app/Enterprise/admins.component.ts","./src/app/Enterprise/admins.component.html","./src/app/Enterprise/enterprise.component.ts","./src/app/Enterprise/enterprise.component.html","./src/app/Enterprise/enterprise.module.ts","./src/app/Enterprise/enterprise.service.ts","./src/app/Enterprise/enterpriseHttpRequestFragmenter.ts","./src/app/Enterprise/extendedRequestPresenter.component.ts","./src/app/Enterprise/invitationCollection.ts","./src/app/Enterprise/invitations.component.ts","./src/app/Enterprise/invitations.component.html","./src/app/Enterprise/productCountCell.component.ts","./src/app/Enterprise/subscription.ts","./src/app/Enterprise/subscriptionCollection.ts","./src/app/Enterprise/subscriptionsSummary.component.ts","./src/app/Enterprise/subscriptionsSummary.component.html","./src/app/Enterprise/user.model.ts","./src/app/Enterprise/users.component.ts","./src/app/Enterprise/users.component.html","./src/app/Enterprise/usersDatagridController.ts","./src/app/Help/help.component.ts","./src/app/Help/help.component.html","./src/app/Subscriptions/subscriptions.component.ts","./src/app/Subscriptions/subscriptions.component.html","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/files/csvFileInput.component.ts","./src/environments/environment.fromtfs.ts","./src/main.ts","./src/services/errors.service.ts","./src/services/logging.service.ts"],"sourcesContent":["//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { environment } from '@environments/environment';\r\n\r\nimport { UserManager, UserManagerEvents, User, UserManagerSettings } from 'oidc-client';\r\n\r\nimport { Observable, fromEventPattern, merge } from '@rxjs';\r\nimport { publishReplay, refCount, map, mapTo, tap, filter } from '@rxjs/operators';\r\n\r\ninterface WindowWithUserManager extends Window {\r\n mgr: UserManager;\r\n}\r\n\r\ndeclare const window: WindowWithUserManager;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n private readonly settings: UserManagerSettings = {\r\n authority: environment.oidc,\r\n client_id: environment.oidcClientId,\r\n redirect_uri: this.document.location.origin + '/signin.html',\r\n post_logout_redirect_uri: this.document.location.origin + '/signout.html',\r\n silent_redirect_uri: this.document.location.origin + '/silent.html',\r\n response_type: 'code',\r\n response_mode: 'query',\r\n scope: 'openid profile company email address phone marketing_consent admin',\r\n automaticSilentRenew: true,\r\n };\r\n\r\n private mgr = new UserManager(this.settings);\r\n\r\n private user: Observable;\r\n\r\n public token: Observable;\r\n\r\n public onLoggedIn: Observable;\r\n\r\n public onLoggedOut: Observable;\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private router: Router\r\n ) {\r\n const userLoaded = fromEventPattern((handler: UserManagerEvents.UserLoadedCallback) => this.mgr.events.addUserLoaded(handler), (handler: UserManagerEvents.UserLoadedCallback) => this.mgr.events.removeUserLoaded(handler));\r\n const userUnloaded = fromEventPattern((handler: UserManagerEvents.UserUnloadedCallback) => this.mgr.events.addUserUnloaded(handler), (handler: UserManagerEvents.UserUnloadedCallback) => this.mgr.events.removeUserUnloaded(handler)).pipe(mapTo(null));\r\n const currentUser = this.mgr.getUser();\r\n\r\n // since userLoaded emits on every new token, don't want to send loggedIn event on every token, only when a token becomes present\r\n let loggedIn = currentUser != null;\r\n this.onLoggedIn = userLoaded.pipe(\r\n filter(_ => !loggedIn),\r\n tap(_ => loggedIn = true),\r\n map(_ => { })\r\n );\r\n this.onLoggedOut = userUnloaded.pipe(\r\n filter(_ => loggedIn),\r\n tap(_ => loggedIn = false),\r\n map(_ => { })\r\n );\r\n\r\n this.user = merge(userLoaded, userUnloaded, currentUser).pipe(\r\n publishReplay(1),\r\n refCount()\r\n );\r\n this.token = this.user.pipe(\r\n map(user => user ? user.access_token : null)\r\n );\r\n }\r\n\r\n public async login() {\r\n await this.mgr.signinRedirect({ state: this.router.url });\r\n }\r\n\r\n public async logout() {\r\n await this.mgr.signoutRedirect();\r\n }\r\n\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\nexport { AuthService };\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { ModuleWithProviders, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { MsalService } from './services/msal.service';\r\nimport { MsalHttpRequestService } from './services/msalHttpRequest.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n MsalService,\r\n MsalHttpRequestService\r\n ],\r\n exports: [\r\n ],\r\n schemas: [NO_ERRORS_SCHEMA]\r\n})\r\nexport class MsalModule {\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { environment } from \"@environments/environment\";\r\nimport { LiteEvent } from '@Shared/utils/liteEvent';\r\nimport { AuthService } from '@Authentication';\r\nimport { Subscription } from '@rxjs';\r\n\r\ndeclare var Msal: any;\r\n\r\nexport class MsalUser {\r\n displayableId: string;\r\n identityProvider: string;\r\n name: string;\r\n userIdentifier: string;\r\n}\r\n\r\n@Injectable()\r\nexport class MsalService implements OnDestroy {\r\n public onTokenReceived = new LiteEvent(); // token as argument\r\n\r\n private token: string | null;\r\n private tokenSubscription: Subscription;\r\n\r\n applicationConfig = {\r\n clientID: environment.clientID,\r\n authority: environment.authority,\r\n b2cScopes: [\"\"],\r\n };\r\n\r\n clientApplication: any = null;\r\n\r\n constructor(private auth: AuthService) {\r\n this.tokenSubscription = this.auth.token.subscribe({\r\n next: token => {\r\n this.token = token;\r\n if (token) {\r\n this.onTokenReceived.trigger(token);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.tokenSubscription.unsubscribe();\r\n }\r\n\r\n public login(): void {\r\n this.auth.login();\r\n }\r\n\r\n public logout(): void {\r\n this.auth.logout();\r\n }\r\n\r\n public getToken(): string | null {\r\n return this.token;\r\n }\r\n\r\n public get isOnline(): boolean {\r\n // There were cases where msalToken in localStorage was lost while other storages were fine.\r\n // I suspect this is why we were in a state this.getUser() != null && getToken() == null.\r\n // (Change suggested by msaul himself ;) ).\r\n return this.token != null;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { MsalService } from './msal.service';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\"\r\nimport { IHttpRequestService } from \"@Shared/utils/iHttpRequestService\"\r\nimport { environment } from '@environments/environment';\r\nimport { AuthService } from '@Authentication';\r\nimport { Subscription } from '@rxjs';\r\n\r\n@Injectable()\r\nexport class MsalHttpRequestService implements IHttpRequestService, OnDestroy {\r\n private url: string = environment.urlCloudApi;\r\n\r\n private token: string | null;\r\n private tokenSubscription: Subscription;\r\n\r\n public constructor(\r\n private http: HttpClient,\r\n private msalService: MsalService,\r\n private auth: AuthService) {\r\n this.tokenSubscription = this.auth.token.subscribe({ next: token => this.token = token });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.tokenSubscription.unsubscribe();\r\n }\r\n\r\n public getUri(url: string) {\r\n return this.url + url;\r\n }\r\n\r\n public getRequest(typeRequest: HttpRequestType, uri: string): HttpRequest {\r\n let request = new HttpRequest(this.http, typeRequest, this.getUri(uri));\r\n request.onStart.on(r => {\r\n if (this.msalService.isOnline) {\r\n r.authorizationHeader = \"Bearer \" + this.token;\r\n }\r\n });\r\n request.onError.on(r => {\r\n let httpError: HttpErrorResponse = r.httpError;\r\n if (httpError.status == 401 && httpError.error == \"invalid_token\") {\r\n // token is invalid we can delete it\r\n localStorage.removeItem(\"msalToken\");\r\n }\r\n });\r\n\r\n return request;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, EmailValidator } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ObjectViewComponent } from './components/object-view.component';\r\nimport { LockerComponent } from './components/locker.component';\r\nimport { LoadingPresenterComponent } from './components/loadingPresenter.component';\r\nimport { RequestPresenterComponent, RequestPresenterDirectives } from './components/requestPresenter.component';\r\nimport { RequestFragmenterPresenterComponent } from './components/requestFragmenterPresenter.component';\r\nimport { RequestPagePresenterComponent } from './components/requestPagePresenter';\r\nimport { UserFormComponent } from './components/userForm.component';\r\nimport { SelectFilterComponent } from './components/selectFilter.component';\r\nimport { DateFilterComponent } from './components/dateFilter.component';\r\nimport { OneFieldSearchComponent } from './components/oneFieldSearch.component';\r\nimport { StatusComponent } from './components/status.component';\r\nimport { UserDataService } from './services/userData.service';\r\nimport { KeyValuesPipe } from './pipes/keyValuesPipe';\r\nimport { FileSizePipe } from './pipes/fileSizePipe';\r\nimport { UseKeyPipe } from './pipes/useKeyPipe';\r\nimport { MutuallyExclusiveList } from './ui-components/mutuallyExclusiveList.component';\r\nimport { MutuallyExclusiveListBox } from './ui-components/mutuallyExclusiveListBox.component';\r\nimport { ExpandingInputList } from './ui-components/expandingInputList.component';\r\nimport { AutoSizingTextInput } from './ui-components/autoSizingTextInput.component';\r\nimport { ComboBox } from './ui-components/comboBox.component';\r\nimport { CustomModal } from './ui-components/customModalDialog.component';\r\nimport { ClarityModule } from '@clr/angular';\r\nimport { AddressComponent } from './components/address/address.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ClarityModule\r\n ],\r\n declarations: [\r\n KeyValuesPipe,\r\n FileSizePipe,\r\n UseKeyPipe,\r\n AddressComponent,\r\n ObjectViewComponent,\r\n UserFormComponent,\r\n LockerComponent,\r\n LoadingPresenterComponent,\r\n RequestPresenterDirectives,\r\n RequestFragmenterPresenterComponent,\r\n RequestPagePresenterComponent,\r\n SelectFilterComponent,\r\n DateFilterComponent,\r\n OneFieldSearchComponent,\r\n StatusComponent,\r\n MutuallyExclusiveList,\r\n MutuallyExclusiveListBox,\r\n AutoSizingTextInput,\r\n ExpandingInputList,\r\n CustomModal,\r\n ComboBox\r\n ],\r\n providers: [],\r\n exports: [\r\n KeyValuesPipe,\r\n FileSizePipe,\r\n UseKeyPipe,\r\n AddressComponent,\r\n ObjectViewComponent,\r\n UserFormComponent,\r\n LockerComponent,\r\n LoadingPresenterComponent,\r\n RequestPresenterDirectives,\r\n RequestFragmenterPresenterComponent,\r\n RequestPagePresenterComponent,\r\n SelectFilterComponent,\r\n DateFilterComponent,\r\n OneFieldSearchComponent,\r\n StatusComponent,\r\n MutuallyExclusiveList,\r\n AutoSizingTextInput,\r\n ExpandingInputList,\r\n CustomModal,\r\n ComboBox\r\n ]\r\n})\r\nexport class SharedModule {\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { countries } from '../../utils/countries';\r\n\r\nclass Address {\r\n public Address: string;\r\n public City: string;\r\n public Country: string;\r\n public CountryCode: string;\r\n public Full: string;\r\n public PostalCode: string;\r\n public State: string;\r\n}\r\n\r\n@Component({\r\n selector: 'address-enrichment',\r\n templateUrl: './address.component.html',\r\n styleUrls: ['./address.component.css'],\r\n})\r\nexport class AddressComponent {\r\n\r\n @Input() url: string = 'https://accountregistration.ansys.com';\r\n\r\n @Input() street: string;\r\n @Output() streetChange = new EventEmitter();\r\n\r\n @Input() city: string;\r\n @Output() cityChange = new EventEmitter();\r\n\r\n @Input() postal: string;\r\n @Output() postalChange = new EventEmitter();\r\n\r\n @Input() state: string;\r\n @Output() stateChange = new EventEmitter();\r\n\r\n @Input() country: string;\r\n @Output() countryChange = new EventEmitter();\r\n\r\n @Input() readonly: boolean = false;\r\n\r\n public selectedAddress: Address | null = null;\r\n public possibleAddress: Address[] = [];\r\n public isAddressLookupInProgress: boolean = false;\r\n public isAddressLookupCompleted: boolean = false;\r\n public addressEnrichmentEnabled: boolean = true;\r\n\r\n public countryList: string[] = countries;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n verifyAddress() {\r\n if (!this.readonly && this.addressEnrichmentEnabled) {\r\n this.isAddressLookupInProgress = true;\r\n this.http.get(`${this.url}/api/address-lookup?address=${this.street}`)\r\n .subscribe({\r\n next: data => {\r\n this.possibleAddress = data || [];\r\n this.isAddressLookupCompleted = true;\r\n },\r\n error: error => {\r\n this.possibleAddress = [];\r\n console.error(\"There is something wrong with the request.\", error);\r\n },\r\n complete: () => this.isAddressLookupInProgress = false\r\n });\r\n }\r\n }\r\n\r\n useSelectedAddress() {\r\n this.streetChange.emit(this.selectedAddress!.Address);\r\n this.cityChange.emit(this.selectedAddress!.City);\r\n this.stateChange.emit(this.selectedAddress!.State);\r\n this.postalChange.emit(this.selectedAddress!.PostalCode);\r\n this.countryChange.emit(this.selectedAddress!.Country);\r\n this.reset(true);\r\n }\r\n\r\n useCustomAddress() {\r\n this.reset(false);\r\n }\r\n\r\n useAddressEnrichment() {\r\n this.reset(true);\r\n }\r\n\r\n reset(addressEnrichmentEnabled: boolean = true) {\r\n this.selectedAddress = null;\r\n this.possibleAddress = [];\r\n this.isAddressLookupInProgress = false;\r\n this.isAddressLookupCompleted = false;\r\n this.addressEnrichmentEnabled = addressEnrichmentEnabled;\r\n }\r\n}\r\n","\r\n \r\n \r\n Please enter a street address to see suggestions.\r\n \r\n Please enter only\r\n alphanumeric characters (A-Z, a-z, 0-9).\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n 0\">\r\n

We could not find an exact match for your address. Please review the suggested verified\r\n address below or edit your previously entered address.\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
{{address.Address}}
\r\n
{{address.City}}, {{address.State}}, {{address.Country}}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n

\r\n We could not identify your address. Please check your street address for accuracy. Or click\r\n the button to enter your address manually.\r\n

\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n Please enter only\r\n alphanumeric characters (A-Z, a-z, 0-9).\r\n \r\n\r\n \r\n \r\n \r\n Please enter only\r\n alphanumeric characters (A-Z, a-z, 0-9).\r\n \r\n\r\n \r\n \r\n \r\n Please enter only\r\n alphanumeric characters (A-Z, a-z, 0-9).\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input } from '@angular/core';\r\nimport { ClrDatagridFilter } from \"@clr/angular\";\r\nimport { StringUtils } from '@Shared/utils/stringUtils';\r\nimport { ClarityFilter } from \"@Shared/utils/clarityFilter\"\r\n\r\n@Component({\r\n selector: \"date-filter\",\r\n template: `\r\n \r\n `\r\n})\r\nexport class DateFilterComponent extends ClarityFilter {\r\n @Input() public property: string;\r\n\r\n private _dateStr: string;\r\n public date: Date | null = null;\r\n\r\n public constructor(private filterContainer: ClrDatagridFilter) {\r\n super();\r\n\r\n filterContainer.setFilter(this);\r\n this.date = null;\r\n this._dateStr = \"\";\r\n }\r\n\r\n public get dateStr(): string {\r\n return this._dateStr;\r\n }\r\n\r\n public set dateStr(dateStr: string) {\r\n this._dateStr = dateStr;\r\n\r\n if (StringUtils.IsNullOrEmpty(dateStr)) {\r\n this.date = null;\r\n } else {\r\n this.date = new Date(dateStr);\r\n }\r\n\r\n this.triggerChange(this.date);\r\n }\r\n\r\n public get value(): string {\r\n return this._dateStr;\r\n }\r\n\r\n public accepts(value: Date): boolean {\r\n return this._dateStr == value.toString();\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'loading-presenter',\r\n template: `\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n `\r\n})\r\nexport class LoadingPresenterComponent {\r\n @Input() isLoading:boolean;\r\n @Input() isCenter:boolean = true;\r\n\r\n @ContentChild(TemplateRef) templateRef: TemplateRef;\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'locker',\r\n template: `\r\n
\r\n
\r\n `,\r\n styles: [\r\n `\r\n .locker {\r\n width: 100%;\r\n height: 100%;\r\n position: fixed;\r\n left: 0px;\r\n top: 0px;\r\n z-index:999999;\r\n background-color: black;\r\n opacity: 0.5;\r\n cursor: progress;\r\n }`\r\n ]\r\n})\r\nexport class LockerComponent {\r\n @Input() public enabled: boolean = false;\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'object-view',\r\n template: `\r\n \r\n EMPTY \r\n
    \r\n \r\n
  • \r\n {{key}} :\r\n NULL \r\n \r\n {{getValue(key)}}\r\n \r\n \r\n \r\n \r\n
  • \r\n
    \r\n
\r\n
\r\n \r\n NULL\r\n \r\n `\r\n})\r\nexport class ObjectViewComponent {\r\n @Input() object: any;\r\n\r\n public getKeys(): string[] {\r\n return Object.keys(this.object);\r\n }\r\n\r\n public isNullOrEmpty(key:string): boolean {\r\n let value = this.getValue(key);\r\n return value === null || value === \"\";\r\n }\r\n\r\n public getValue(key: string): string {\r\n return this.object[key];\r\n }\r\n\r\n public isObject(key: string): boolean {\r\n const value = this.getValue(key);\r\n if (value == null)\r\n return false;\r\n return typeof value === 'object';\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'one-field-search',\r\n styles: [`\r\n label {\r\n margin-right: 25px;\r\n }\r\n\r\n input, button {\r\n margin-top:0px;\r\n }\r\n\r\n input {\r\n margin-right: 10px;\r\n }\r\n `],\r\n template: `\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n `\r\n})\r\nexport class OneFieldSearchComponent {\r\n @Input()\r\n public label: string;\r\n\r\n @Input()\r\n public placeholder: string;\r\n\r\n @Input()\r\n public loading: boolean;\r\n\r\n private _value: string | null;\r\n @Input()\r\n public set value(v: string | null) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n public get value(): string | null {\r\n return this._value;\r\n }\r\n\r\n @Output()\r\n public valueChange: EventEmitter;\r\n\r\n @Output()\r\n public searchClicked: EventEmitter;\r\n\r\n constructor() {\r\n this.searchClicked = new EventEmitter();\r\n this.valueChange = new EventEmitter();\r\n }\r\n\r\n public onClick(): void {\r\n this.searchClicked.emit(this.value);\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { HttpRequestFragmenter } from '../utils/httpRequestFragmenter';\r\n\r\n@Component({\r\n selector: 'fragment-request-presenter',\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Processing {{(100 * fragmenter.currentIndex / (fragmenter.maxIndex || 1)).toFixed(2)}}%\r\n
\r\n
\r\n
\r\n `\r\n})\r\nexport class RequestFragmenterPresenterComponent implements OnInit {\r\n @Input() fragmenter:HttpRequestFragmenter;\r\n @Input() locker:boolean;\r\n\r\n @ContentChild(TemplateRef) templateRef: TemplateRef;\r\n\r\n public ngOnInit(): void {\r\n if (this.fragmenter == null) {\r\n throw new Error('No Fragmenter.');\r\n }\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, Output, OnInit, EventEmitter } from '@angular/core';\r\nimport { IDatagridController } from '../utils/iDatagridController';\r\n\r\n@Component({\r\n selector: 'request-page-presenter',\r\n template: `\r\n \r\n \r\n  \r\n \r\n \r\n \r\n \r\n  | \r\n \r\n \r\n \r\n  {{controller.getStartIndex() + 1}} to {{controller.getEndIndex()}} \r\n \r\n  \r\n \r\n (Total: {{controller.getTotalCount()}})\r\n \r\n  \r\n \r\n \r\n \r\n \r\n `\r\n})\r\nexport class RequestPagePresenterComponent implements OnInit {\r\n @Input(\"controller\") controller:IDatagridController;\r\n @Input(\"compact\") compact:boolean;\r\n\r\n @Output()\r\n public propertyChange:EventEmitter;\r\n\r\n public constructor() {\r\n this.propertyChange = new EventEmitter();\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.controller == null) {\r\n throw new Error('No page manager.');\r\n }\r\n }\r\n\r\n public onPageSizeChange(): void {\r\n this.controller.refresh();\r\n this.propertyChange.emit(\"pageSize\");\r\n }\r\n\r\n public onNextPage(): void {\r\n this.controller.nextPage();\r\n this.propertyChange.emit(\"page\");\r\n }\r\n\r\n public onPreviousPage(): void {\r\n this.controller.previousPage();\r\n this.propertyChange.emit(\"page\");\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n/*\r\n Usage:\r\n \r\n ...\r\n ...\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n `\r\n})\r\nexport class RequestPresenterComponent implements OnInit {\r\n @Input() request: IHttpRequest;\r\n @Input() locker: boolean = false;\r\n @Input() spinner: boolean = true;\r\n @Input() showError: boolean = true;\r\n @Input() isLarge: boolean = false;\r\n\r\n /* \r\n To show the content even if the request has not been sent yet or if an error occurred. But not if request is still loading.\r\n Useful for buttons that send requests.\r\n */\r\n @Input() alwaysShowContent = false;\r\n\r\n @ContentChild(TemplateRef) templateRef: TemplateRef;\r\n\r\n public ngOnInit(): void {\r\n if (this.request == null) {\r\n throw new Error('No Request.');\r\n }\r\n }\r\n}\r\n\r\n/*\r\n https://github.com/angular/angular/issues/11251\r\n Declare request-loading to not have unknown tags error. This is the best way if we don't want to remove schemas errors.\r\n*/\r\n@Directive({ selector: 'request-loading' })\r\nexport class RequestPresenterComponentTags { }\r\n\r\nexport const RequestPresenterDirectives = [RequestPresenterComponent, RequestPresenterComponentTags];\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { ClarityFilter } from \"@Shared/utils/clarityFilter\"\r\nimport { Component, Input } from '@angular/core';\r\nimport { ClrDatagridFilter } from \"@clr/angular\";\r\nimport { Bidictionary } from \"@Shared/utils/bidictionary\";\r\n\r\n@Component({\r\n selector: \"select-filter\",\r\n template: `\r\n `\r\n})\r\nexport class SelectFilterComponent extends ClarityFilter {\r\n @Input() public property: string;\r\n @Input() public availableValues: string[];\r\n @Input() public mapping: Bidictionary | undefined; // internal value => displayed string\r\n private _valueStr: string = \"\";\r\n\r\n constructor(private filterContainer: ClrDatagridFilter) {\r\n super();\r\n filterContainer.setFilter(this);\r\n }\r\n\r\n accepts(value: string): boolean {\r\n return value == this._valueStr;\r\n }\r\n\r\n public get valueStr(): string {\r\n return this._valueStr;\r\n }\r\n\r\n public set valueStr(valueStr: string) {\r\n this._valueStr = valueStr;\r\n this.triggerChange(valueStr);\r\n }\r\n\r\n public get value(): any | undefined {\r\n return this.mapping ? this.mapping.reverseGet(this.valueStr) : this._valueStr;\r\n }\r\n\r\n public set value(newValue: any) {\r\n this._valueStr = this.mapping ? this.mapping.get(newValue) : newValue;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\nexport enum TypeStatus {\r\n info,\r\n success,\r\n danger,\r\n warning\r\n}\r\n\r\nexport interface Status {\r\n label:string;\r\n type:TypeStatus | null;\r\n}\r\n\r\n@Component({\r\n selector: 'status',\r\n template: `\r\n {{status.label}}\r\n `\r\n})\r\nexport class StatusComponent implements OnChanges {\r\n @Input() public status:Status;\r\n\r\n public typeStatusClass:string;\r\n\r\n public constructor() {\r\n this.status = {\r\n label: \"\",\r\n type: TypeStatus.info\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.status.type == null)\r\n this.typeStatusClass = \"label\";\r\n else\r\n this.typeStatusClass = \"label-\" + TypeStatus[this.status.type];\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { LiteEvent } from '../utils/liteEvent';\r\nimport { StringUtils } from '../utils/stringUtils';\r\nimport { HttpRequest } from '../utils/httpRequest';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\n\r\nexport class UserModel {\r\n public email: string;\r\n\r\n /* set if the user exist in the database */\r\n public b2cId: string | null;\r\n public fnoId: string | null;\r\n\r\n public givenName: string | null;\r\n public surname: string | null;\r\n public country: string | null;\r\n public city: string | null;\r\n public streetAddress: string | null;\r\n public state: string | null;\r\n public postalCode: string | null;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n\r\n public isValid(): boolean {\r\n if (StringUtils.IsNullOrWhiteSpace(this.email)) {\r\n return false;\r\n }\r\n\r\n return !StringUtils.IsNullOrWhiteSpace(this.givenName)\r\n && !StringUtils.IsNullOrWhiteSpace(this.surname)\r\n && !StringUtils.IsNullOrWhiteSpace(this.country)\r\n && !StringUtils.IsNullOrWhiteSpace(this.city)\r\n && !StringUtils.IsNullOrWhiteSpace(this.streetAddress);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'user-form',\r\n styles: [`\r\n input {\r\n width: 50%;\r\n }\r\n `],\r\n template: `\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n

Existing User

\r\n

New User

\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n `\r\n})\r\nexport class UserFormComponent implements OnInit {\r\n @Input() public getUserRequest: HttpRequest;\r\n\r\n public onUserNotFound: LiteEvent;\r\n\r\n public model: UserModel;\r\n public emailChecked: boolean;\r\n public userFound: boolean;\r\n public isReadonly: boolean;\r\n\r\n public constructor() {\r\n this.reset();\r\n this.onUserNotFound = new LiteEvent();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.getUserRequest.onStart.on(req => {\r\n req.query.userEmail = this.email;\r\n this.emailChecked = false;\r\n this.model = new UserModel({ email: req.query.userEmail });\r\n });\r\n\r\n this.getUserRequest.onSuccess.on(req => {\r\n let responseObj: any = req.responseObj;\r\n this.emailChecked = true;\r\n this.userFound = responseObj.found;\r\n if (this.userFound) {\r\n this.model = new UserModel(responseObj.model);\r\n this.isReadonly = this.model.isValid();\r\n } else {\r\n this.isReadonly = false;\r\n this.onUserNotFound.trigger(this.model);\r\n }\r\n });\r\n }\r\n\r\n public checkUserEmail(): void {\r\n this.getUserRequest.send();\r\n }\r\n\r\n public reset(): void {\r\n this.model = new UserModel();\r\n this.emailChecked = false;\r\n this.userFound = false;\r\n this._email = null;\r\n }\r\n\r\n public isValid(): boolean {\r\n return this.model.isValid();\r\n }\r\n\r\n private _email: string | null;\r\n\r\n public get email(): string | null {\r\n return this._email;\r\n }\r\n\r\n public set email(value: string | null) {\r\n this.reset();\r\n this._email = value;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n/* https://gist.github.com/JonCatmull/ecdf9441aaa37336d9ae2c7f9cb7289a */\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/*\r\n * Convert bytes into largest possible unit.\r\n * Takes an precision argument that defaults to 2.\r\n * Usage:\r\n * bytes | fileSize:precision\r\n * Example:\r\n * {{ 1024 | fileSize}}\r\n * formats to: 1 KB\r\n*/\r\n@Pipe({name: 'fileSize'})\r\nexport class FileSizePipe implements PipeTransform {\r\n\r\n private units = [\r\n 'bytes',\r\n 'KB',\r\n 'MB',\r\n 'GB',\r\n 'TB',\r\n 'PB'\r\n ];\r\n\r\n transform(bytes: number = 0, precision: number = 2 ) : string {\r\n if ( isNaN( parseFloat( String(bytes) )) || ! isFinite( bytes ) ) return '?';\r\n\r\n let unit = 0;\r\n\r\n while ( bytes >= 1024 && unit < (this.units.length - 1)) {\r\n bytes /= 1024;\r\n unit ++;\r\n }\r\n\r\n return bytes.toFixed( + precision ) + ' ' + this.units[ unit ];\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n// https://webcake.co/object-properties-in-angular-2s-ngfor/\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'keyValues'})\r\nexport class KeyValuesPipe implements PipeTransform {\r\n transform(obj: any, noNullValue:boolean, sortKeys:boolean): Object[] {\r\n let keyArr: any[] = Object.keys(obj);\r\n let dataArr:any[] = [];\r\n\r\n if (sortKeys) {\r\n keyArr.sort();\r\n }\r\n\r\n keyArr.forEach((key: any) => {\r\n let value = obj[key];\r\n if (!noNullValue || (noNullValue && value != null))\r\n {\r\n dataArr.push({key: key, value: value})\r\n }\r\n });\r\n\r\n return dataArr;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n// https://webcake.co/object-properties-in-angular-2s-ngfor/\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'UseKey'})\r\nexport class UseKeyPipe implements PipeTransform {\r\n // We can look for a particular oject through a key, regardless of the order passed in. If we can't find it, we'll return the second object passed into the pipe.\r\n transform(obj: any, obj2:any): Object {\r\n if (obj !== null && obj !== undefined && obj2 !== null && obj[obj2] !== null && obj[obj2] !== undefined)\r\n {\r\n return obj[obj2];\r\n } else if (obj2 !== null && obj2 !== undefined && obj !== null && obj2[obj] !== null && obj2[obj] !== undefined) {\r\n return obj2[obj];\r\n } else {\r\n return obj2;\r\n }\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, AfterContentInit, AfterViewInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n/****************************************************************************\r\n ** autosize-text-input is a self adjusting text box based on it's parent **\r\n ** element's width with an optional label and mask that looks as follows: ** \r\n ****************************************************************************\r\n * Without password mask: **\r\n * Label [__________________] **\r\n * **\r\n * With password mask: **\r\n * Label [__________________] **\r\n * (o) - Open eye | Closed eye **\r\n ***************************************************************************/\r\n\r\n @Component({\r\n selector: 'autosize-text-input',\r\n template: `\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{value}}\r\n
\r\n
\r\n `,\r\n styleUrls: ['./ui-components.css']\r\n})\r\n\r\nexport class AutoSizingTextInput implements AfterContentInit, AfterViewInit {\r\n//#region PrivateMemberVariables\r\n private m_ready: boolean = false; // used to let the resize function know that everything's ready\r\n private m_value: string; // the text value for the text box\r\n\r\n private m_width: string; // max width of the string\r\n private m_maxWidth: string = \"\"; // max width of the container\r\n\r\n private m_id: string = (Date.now() * Math.random()).toString(); // to avoid id collisions, let's randomize the current time in ms\r\n private m_type: string = \"text\"; // let input type be 'text' or 'password'\r\n private m_passwordMask: boolean = false; // used for toggling password mask and displaying correct icons\r\n//#endregion PrivateMemberVariables\r\n\r\n//#region InputVariables\r\n @Input() containerclass: string = \"\"; // allow a custom class for the component\r\n @Input() containerwidth: string = \"\";\r\n @Input() label: string = \"\"; // label text\r\n @Input() labelwidth: string = \"\";\r\n @Input() placeholder: string = \"\";\r\n @Input() minwidth: number = 20; // minwidth is the minimum number of characters before resizing\r\n @Input() maxwidth: number = 0; // maxwidth is the maximum number of characters before halting expansion\r\n @Input() password: boolean = false; // allow the consumer to add a password mask\r\n @Input() disabled: boolean = false; // used to disable the text field\r\n @Input() offset: number = 0; // any additional right padding to the text box in pixels\r\n @Input() // allow the consumer to use [(ngModel)] syntax for input text - call resize on changes\r\n get value() {\r\n return this.m_value;\r\n }\r\n set value(value: string) {\r\n this.m_value = value;\r\n setTimeout(() => {\r\n this.m_width = this.ResizeMe();\r\n }, 0);\r\n }\r\n\r\n @Output() valueChange: EventEmitter = new EventEmitter();\r\n//#endregion InputVariables\r\n\r\n//#region PublicVariables\r\n public get Width(): string { return this.m_width; };\r\n public set Width(val: string) { this.m_width = val; };\r\n public get MaxWidth(): string { return this.m_maxWidth; };\r\n public set MaxWidth(val: string) { this.m_maxWidth = val; }\r\n public get Id(): string { return this.m_id; };\r\n public get Type(): string { return this.m_type; };\r\n public get PasswordMask(): boolean { return this.m_passwordMask; };\r\n \r\n // By using [(ngModel)] to detect instant changes, the value will be set\r\n // twice. ngModel detects change and updates the value. The parent detects\r\n // the change and also updates the value after we emit the event. To reduce\r\n // operations / process time, let's have separate properties and call\r\n // ResizeMe() one time, instead of twice.\r\n public get m_valProp () {\r\n return this.m_value;\r\n }\r\n public set m_valProp (val: string) {\r\n this.m_value = val;\r\n this.valueChange.emit(val);\r\n }\r\n//#endregion PublicVariables\r\n\r\n//#region Initialization\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n // set up whether or not we're using a password mask\r\n this.m_passwordMask = this.password;\r\n this.m_type = this.password ? \"password\" : this.m_type;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // we can't resize anything until after the view is initialized. It's now safe to turn on resizing.\r\n this.m_ready = true;\r\n // Force change detection to adjust width without complaints\r\n setTimeout(() => {\r\n this.m_width = this.ResizeMe();\r\n }, 0); \r\n }\r\n//#endregion Initialization\r\n\r\n//#region SizingFunctions\r\n GetMaxWidth() {\r\n return this.m_maxWidth;\r\n }\r\n\r\n GetFontWidth(elem: HTMLElement): number{\r\n return Number(Number.parseFloat(window.getComputedStyle(elem, null).fontSize as string).toFixed(1));\r\n }\r\n\r\n ResizeMe(): string {\r\n // Here's where things get tricky :)\r\n let ret = \"\"\r\n let textOffset: number = 0.66; // average character size is 66% of the font size.\r\n let padding = 4; // we want a slight padding of 4 px as precaution against a scroll bar popping up / small margins of error;\r\n if (this.password) {\r\n const eyeElement = this.$(this.m_id + \"_eye\");\r\n padding += eyeElement !== null ? eyeElement.offsetWidth : 0;\r\n }\r\n\r\n if (this.m_ready) {\r\n // the label offset will be our padding + any consumer demanded offset + the width of the label, if available.\r\n let labelElem = this.$(this.m_id + \"_label\");\r\n let labelOffset = padding + (this.label.length > 0 && labelElem != null ? labelElem!.offsetWidth + this.offset : this.offset);\r\n // in order to calculate the width relatively fast with high accuracy, I have hidden a span to get the width of the text\r\n // we get the input field, the ruler, and the parent elements to do the calculations.\r\n let currentElement = this.$(this.m_id + \"_input\");\r\n let spanElement = this.$(this.m_id + \"_span\");\r\n let containerElement = this.$(this.m_id + \"_div\");\r\n let parentElement = containerElement != null ? containerElement.parentElement!.parentElement : document.body;\r\n // we set our min restrictions based off consumer values (default 20 average chars)\r\n // we set our max width based off consumer value otherwise it's the parent's width - any label/offset\r\n // we grab our new size from the hidden span element, and pad it by 1 maxchar to avoid rubberbanding then we cut/cap based on our min/max restricitons.\r\n let parentwidth = Number.parseInt(String(window.getComputedStyle(parentElement!, null).width));\r\n let fontWidth = currentElement != null ? this.GetFontWidth(currentElement!) : this.GetFontWidth(document.body);\r\n let minWidth = this.minwidth * fontWidth * textOffset;\r\n let widthMax = this.maxwidth > 0 ? this.maxwidth * fontWidth * textOffset : ((parentwidth > 0) ? parentwidth - (labelOffset) : minWidth);\r\n let newSize = spanElement != null ? spanElement.offsetWidth + fontWidth : minWidth; // add a little bit of padding\r\n if (newSize < minWidth) { newSize = minWidth; }\r\n else if (newSize > widthMax) { \r\n newSize = widthMax;\r\n // if the consumer has defined a maxwidth, they may want to put somehting to the right of the text box. \r\n // this will force the label and textbox's container to be the width of the textbox & label.\r\n if (this.maxwidth > 0) {\r\n this.m_maxWidth = Math.ceil(labelOffset + newSize).toString() + \"px\";\r\n } \r\n }\r\n this.m_maxWidth = (newSize === widthMax) ? Math.ceil(labelOffset + newSize).toString() + \"px\" : '';\r\n // use ceiling as caution to avoid small margins of error.\r\n ret = Math.ceil(newSize).toString() + 'px';\r\n }\r\n\r\n return ret;\r\n }\r\n//#endregion SizingFunctions\r\n\r\n//#region PasswordFunctions\r\n TogglePasswordMask() {\r\n this.m_type = this.m_passwordMask ? \"text\" : \"password\";\r\n this.m_passwordMask = !this.m_passwordMask;\r\n this.m_width = this.ResizeMe();\r\n }\r\n//#endregion PasswordFunctions\r\n\r\n//#region Misc\r\n $(id: any) {\r\n return document.getElementById(id);\r\n }\r\n//#endregion Misc\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, AfterContentInit, AfterViewInit, Input, Output, EventEmitter, OnChanges, SimpleChanges} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'combo-box',\r\n template: `\r\n
\r\n \r\n \r\n
\r\n `,\r\n styleUrls: ['./ui-components.css']\r\n })\r\n \r\n export class ComboBox implements AfterContentInit, AfterViewInit, OnChanges {\r\n @Input() customClass: string = \"\"; \r\n @Input() id: string = \"\";\r\n @Input() label: string = \"\";\r\n @Input() emptyitem: any = \"\";\r\n @Input() labelwidth: string = \"\";\r\n @Input() list: any[] = [];\r\n @Input() disabled: any[] = [];\r\n @Input() comparekey: any = \"\";\r\n @Input() defaultselection: any = null;\r\n @Input() key = \"\"\r\n @Input() width: string = \"\";\r\n @Input() value: any = \"\";\r\n @Output() valueChange: EventEmitter = new EventEmitter();\r\n public get m_value(): any { return this.value; };\r\n public set m_value(val: any) { this.value = val; this.valueChange.emit(this.value); }\r\n\r\n constructor() {\r\n this.id = Date.now.toString();\r\n }\r\n \r\n ngAfterContentInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n if (this.defaultselection === null && this.list.length > 0 && (!this.list.includes(this.m_value) || this.disabled.includes(this.m_value))) {\r\n this.m_value = this.list.filter(x => !this.disabled.includes(x))[0];\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.list.length > 0 && (!this.list.includes(this.m_value) || this.disabled.includes(this.m_value))) {\r\n this.m_value = this.emptyitem;\r\n }\r\n }\r\n\r\n }\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, AfterContentInit, AfterViewInit, Input, Output, EventEmitter} from '@angular/core';\r\n\r\n/****************************************************************************\r\n ** custom-modal is a standard 2 option modal dialog with the option to **\r\n ** use as notification only. It looks as follows by default: ** \r\n ****************************************************************************\r\n * **\r\n * **\r\n * _______________________________ **\r\n * | ___________Confirm___________ | **\r\n * | | **\r\n * | (html) Message | **\r\n * | | **\r\n * | | **\r\n * | (Ok) [(Cancel)]| **\r\n * |_______________________________| **\r\n * **\r\n * **\r\n * **\r\n ***************************************************************************/\r\n\r\nexport enum ModalSize {\r\n Small = 'sm',\r\n Medium = '',\r\n Large = 'lg',\r\n XLarge = 'xl'\r\n}\r\n\r\n@Component({\r\n selector: 'custom-modal',\r\n template: `\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n `,\r\n styleUrls: ['./ui-components.css']\r\n})\r\n\r\nexport class CustomModal implements AfterContentInit, AfterViewInit {\r\n//#region InputVariables\r\n @Input() size = ModalSize.Medium; // Set the size of the dialog\r\n @Input() dlgopen = false; // Set whether or not dialog is open\r\n @Input() title = 'Confirm'; // Changes the header of the dialog\r\n @Input() message = ''; // Standard text message ** If using HTML format, do any styling through classes in the main css file **\r\n @Input() leftbtn = 'Ok'; // Left button text\r\n @Input() rightbtn = 'Cancel'; // Right button text\r\n @Input() lefticon = 'success-standard'; // Left button icon\r\n @Input() righticon = 'times-circle'; // right button icon\r\n @Input() notify = false; // set true to use one button notification mode.\r\n @Input() ignoreesc = false; // disable esc key to close\r\n @Input() leftcancel = false; // set to true if left button cancels and right button performs another action;\r\n @Input() lbtnclass = 'btn btn-icon btn-submit'; // use button override classes through main css file\r\n @Input() rbtnclass = 'btn btn-icon btn-submit cancel'; // use button override classes through main css file\r\n @Input() errid = \"error_id\"\r\n @Input() ignoreenter = false;\r\n\r\n @Output() leftclick: EventEmitter = new EventEmitter();\r\n @Output() rightclick: EventEmitter = new EventEmitter();\r\n//#endregion InputVariables\r\n\r\n//#region Initialization\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n//#endregion Initialization\r\n\r\n//#region Closing\r\n close() {\r\n // if we allow the user to use esc to exit check if the consumer set left to cancel or it's just a notification\r\n if (!this.ignoreesc) {\r\n if(this.leftcancel || this.notify) {\r\n this.leftclick.emit(null);\r\n }\r\n else {\r\n this.rightclick.emit(null);\r\n }\r\n }\r\n }\r\n submit() {\r\n if (!this.ignoreenter) {\r\n if (this.leftcancel || this.notify) {\r\n this.rightclick.emit(null);\r\n } else {\r\n this.leftclick.emit(null);\r\n }\r\n }\r\n }\r\n//#endregion Closing\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, AfterContentInit, AfterContentChecked, AfterViewInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { StringUtils } from '@Shared/utils/stringUtils';\r\n\r\n/*****************************************************************\r\n ** The expanding input list displays an optional label and a **\r\n ** list of removable items and an add item textbox as follows: **\r\n *****************************************************************\r\n * Label * Item 1 (-) **\r\n * * Item 2 (-) **\r\n * * ... Item N (-) **\r\n * * [______________] (+) **\r\n ***************************************************************/\r\n\r\n @Component({\r\n selector: 'expanding-input-list',\r\n template: `\r\n
\r\n \r\n
    \r\n
  • \r\n {{name}}\r\n \r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
\r\n
\r\n `,\r\n styleUrls: ['./ui-components.css']\r\n})\r\n\r\nexport class ExpandingInputList implements AfterContentInit, AfterViewInit, AfterContentChecked {\r\n//#region PrivateMemberVariables\r\n private m_itemList: string [];\r\n private m_inputvalue: string = \"\";\r\n private m_maxHeight: string = \"\";\r\n private m_maxWidth: number = 0;\r\n private m_id = (Date.now() * Math.random()).toString(); // to avoid id collisions, let's randomize the current time in ms\r\n private m_sizeChanged = true; // detect size changes since last calculation\r\n//#endregion PrivateMemberVariables\r\n\r\n//#region InputVariables\r\n @Input() label: string = \"\"; // label text\r\n @Input() labelwidth: string = \"\";\r\n @Input() placeholder: string = \"\";\r\n @Input() minwidth: number = 20; // minwidth is the minimum number of characters before resizing\r\n @Input() maxwidth: number = 0; // maxwidth is the maximum number of characters\r\n @Input() maxheight: string = \"15vh\"; // maxheight is the maximum height of the list before scrolling\r\n @Input() \r\n get itemlist(): string[] { return this.m_itemList}; // list of strings to display and modify.\r\n set itemlist(val: string[]) { this.m_itemList = val};\r\n \r\n // output properties\r\n @Output() itemlistChange: EventEmitter = new EventEmitter(); // Allows the itemlist to follow [(ngModel)] format.\r\n//#endregion InputVariables \r\n\r\n//#region PublicVariables\r\n public get ItemList(): string[] { return this.m_itemList; };\r\n public get InputValue(): string { return this.m_inputvalue; };\r\n public set InputValue(val: string) { this.m_inputvalue = val; };\r\n public get MaxHeight(): string { return this.m_maxHeight; };\r\n public get MaxWidth(): number { return this.m_maxWidth; };\r\n public get Id(): string { return this.m_id; };\r\n public get SizeChanged(): boolean { return this.m_sizeChanged; };\r\n public set SizeChanged(val: boolean) { this.m_sizeChanged = val; };\r\n//#endregion PublicVariables\r\n\r\n//#region Initialization\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n // after we've initialized our content, let's update our member variables.\r\n this.m_itemList = this.itemlist;\r\n this.m_maxHeight = this.maxheight;\r\n }\r\n\r\n ngAfterContentChecked() {\r\n // If the div is hidden, we can't get its id. We will keep checking until we mark it as available.\r\n // We also want to adjust when the window is resized, whether or not it's in view. sizeChanged is set on window:resize\r\n if (this.IsAvailable()) {\r\n if (this.m_sizeChanged) {\r\n this.CalculateWidth();\r\n this.m_sizeChanged = false;\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n//#endregion Initialization\r\n\r\n//#region ItemManipulation\r\n public AddItem(event?: KeyboardEvent) {\r\n if (event !== undefined && !StringUtils.IsNullOrWhiteSpace(this.m_inputvalue)) { event.stopImmediatePropagation(); event.stopPropagation(); event.preventDefault(); }\r\n if (!StringUtils.IsNullOrWhiteSpace(this.m_inputvalue)) {\r\n this.m_itemList.push(this.m_inputvalue);\r\n this.m_inputvalue = \"\";\r\n this.itemlistChange.emit(this.m_itemList);\r\n \r\n // wait a tick -> allows the content/view to update before scrolling to the bottom\r\n setTimeout( () => {\r\n let list = (document.getElementById(this.m_id + '_list') as HTMLElement);\r\n list.scrollTop = list.scrollHeight - list.clientHeight;\r\n }, 0);\r\n }\r\n }\r\n\r\n public DeleteItem(item: string) {\r\n this.m_itemList.splice(this.m_itemList.indexOf(item), 1);\r\n this.itemlistChange.emit(this.m_itemList);\r\n }\r\n//#endregion ItemManipulation\r\n\r\n//#region ElementReady\r\n IsAvailable(): Boolean {\r\n return (document.getElementById(this.m_id + '_div') as HTMLElement) !== null;\r\n }\r\n//#endregion ElementReady\r\n\r\n//#region SizingFunctions\r\n CalculateWidth() {\r\n // To calculate the width of the text box most accurately, we will grab the width of the parent container\r\n // then adjust the offset by the width of the label and the button size. The max width will be passed to \r\n // the autosize text component for its own evaluation, limited by our maximum size.\r\n let container = document.getElementById(this.m_id + '_div') as HTMLElement;\r\n let containerWidth = Number.parseFloat(window.getComputedStyle(container, null).width as string);\r\n let fontSize = Number.parseFloat(window.getComputedStyle(container, null).fontSize as string) * 0.72;\r\n let labelWidth = (document.getElementById(this.m_id + \"_label\") as HTMLElement).offsetWidth;\r\n let buttonWidth = (fontSize * 4);\r\n this.m_maxWidth = (containerWidth - labelWidth - buttonWidth)/(fontSize);\r\n }\r\n//#endregion SizingFunctions\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, Output, EventEmitter, AfterContentInit } from '@angular/core';\r\n\r\nimport { Buttons, Direction} from './mutuallyExclusiveListBox.component';\r\n\r\n/****************************************************************************\r\n ** MutuallyExclusiveList is an element that has one list of items on the **\r\n ** left and one list on the right. The list items are controlled by **\r\n ** directional buttons. MutuallyExclusiveList looks as follows: ** \r\n ****************************************************************************\r\n * **\r\n * **\r\n * _______________ _______________ **\r\n * | LItem | | RItem | **\r\n * | LItem2 | | RItem2 | **\r\n * (^)| LItem3 |(<)| RItem3 | **\r\n * (v)| ... |(>)| ... | **\r\n * | LItem(n-1) | | RItem(n-1) | **\r\n * | LItem(n) | | RItem(n) | **\r\n * |_______________| |_______________| **\r\n * **\r\n * **\r\n * **\r\n ***************************************************************************/\r\n\r\nexport interface IMutuallyExclusiveList {\r\n LeftList: string [];\r\n RightList: string [];\r\n}\r\n\r\n@Component({\r\n selector: 'mutually-exclusive-list',\r\n template: `\r\n
\r\n \r\n\r\n \r\n
\r\n `,\r\n styleUrls: ['./ui-components.css']\r\n})\r\n\r\nexport class MutuallyExclusiveList implements AfterContentInit {\r\n//#region PrivateVariables\r\n lists: IMutuallyExclusiveList; // contains the list on the left and the list on the right\r\n\r\n private m_leftSelected: string[] = []; // Stores selected items from the left list\r\n private m_rightSelected: string[] = []; // Stores selected items from the right list\r\n\r\n // Set up button configurations Left: ^ v Right: <> \r\n private m_leftButtons: Buttons = { top: { direction: Direction.up, disabled: true }, bottom: { direction: Direction.down, disabled: true} };\r\n private m_rightButtons: Buttons = { top: { direction: Direction.left, disabled: true }, bottom: { direction: Direction.right, disabled: true} };\r\n \r\n private m_height: string = \"\";\r\n private m_width: string = \"\";\r\n \r\n DragItem: string =\"\";\r\n//#endregion PrivateVariables\r\n\r\n//#region InputVariables\r\n @Input()\r\n get exclusivelist () { return this.lists; }\r\n set exclusivelist (lists: IMutuallyExclusiveList) {\r\n this.lists = lists;\r\n this.m_leftSelected = [];\r\n this.m_rightSelected = [];\r\n this.UpdateButtons();\r\n }\r\n @Input() lefttitle: string = \"\";\r\n @Input() righttitle: string = \"\";\r\n @Input() height: string = \"10em\"; // Default height is 10em\r\n @Input() width: string = \"10em\"; // Default width is 10em\r\n @Input() update: Function = () => { return true; } \r\n @Input() caller: any = this;\r\n\r\n//#endregion InputVariables\r\n\r\n//#region PublicVariables\r\n public get LeftSelected(): string[] { return this.m_leftSelected; };\r\n public get RightSelected(): string[] { return this.m_rightSelected; };\r\n public get LeftButtons(): Buttons { return this.m_leftButtons; };\r\n public get RightButtons(): Buttons { return this.m_rightButtons; };\r\n public get Height(): string { return this.m_height; };\r\n public get Width(): string { return this.m_width; };\r\n//#endregion PublicVariables\r\n\r\n//#region Initialization\r\n constructor() { \r\n }\r\n\r\n ngAfterContentInit() {\r\n this.m_height = this.height;\r\n this.m_width = this.width;\r\n }\r\n//#endregion Initialization\r\n\r\n//#region SelectionFunctions\r\n SelectItem(event: KeyboardEvent, item: string|string[], leftList: boolean = true) {\r\n // Left list and right list have same logic\r\n if (leftList) {\r\n // Clear the other list.\r\n // If selection's a string, then select as usual. If it's a list = repleace the selection\r\n this.ClearItemList(this.m_rightSelected);\r\n if (typeof item === \"string\") {\r\n this.SelectAnItem(event, this.m_leftSelected, item as string);\r\n }\r\n else {\r\n this.ClearItemList(this.m_leftSelected);\r\n this.m_leftSelected.push.apply(this.m_leftSelected, this.exclusivelist.LeftList);\r\n }\r\n }\r\n else {\r\n this.ClearItemList(this.m_leftSelected);\r\n if (typeof item === \"string\") {\r\n this.SelectAnItem(event, this.m_rightSelected, item as string);\r\n }\r\n else {\r\n this.ClearItemList(this.m_rightSelected);\r\n this.m_rightSelected.push.apply(this.m_rightSelected, this.exclusivelist.RightList);\r\n }\r\n }\r\n }\r\n\r\n private SelectAnItem(event: KeyboardEvent, itemList: string[], item: string) {\r\n // If shift is pressed, we select everything between the initial selection and current selection\r\n if (event.shiftKey && itemList.length > 0) {\r\n let parentList = this.exclusivelist.LeftList.includes(itemList[0]) ? this.exclusivelist.LeftList : this.exclusivelist.RightList;\r\n let initialIndex = parentList.indexOf(itemList[0]);\r\n let endIndex = parentList.indexOf(item);\r\n itemList.splice(1, itemList.length - 1);\r\n for (let index = Math.min(initialIndex, endIndex); index <= Math.max(initialIndex, endIndex); index++) { \r\n itemList.push(parentList[index]);\r\n }\r\n }\r\n // If control is pressed, we want to add to selection, unless it's in the list already, in which case we remove it\r\n else if (event.ctrlKey)\r\n {\r\n let index = itemList.indexOf(item);\r\n // if it's in the list already, we wanna remove it\r\n if ( index >= 0) {\r\n itemList.splice(index, 1);\r\n }\r\n else {\r\n itemList.push(item);\r\n }\r\n }\r\n // If we're not doing special operations, clear everything and select the single item.\r\n else {\r\n this.ClearItemList(itemList)\r\n itemList.push(item);\r\n }\r\n this.UpdateButtons();\r\n }\r\n//#endregion SelectionFunctions\r\n\r\n//#region SortingAndMovingFunctions\r\n private SortSelection(itemList: string[]) {\r\n // When migrating a selection left or right, we want to keep the original order of the list - the user can then move as seen fit\r\n let itemListInitialLength: number = itemList.length;\r\n if (itemListInitialLength > 0) {\r\n let sortList: string[] = this.exclusivelist.LeftList.includes(itemList[0]) ? this.exclusivelist.LeftList : this.exclusivelist.RightList;\r\n sortList.forEach((x) => { itemList.includes(x) ? itemList.push(x) : null});\r\n itemList.splice(0, itemListInitialLength);\r\n }\r\n }\r\n\r\n MoveSelectionLeft() {\r\n this.SortSelection(this.m_rightSelected);\r\n this.exclusivelist.LeftList.push.apply(this.exclusivelist.LeftList, this.m_rightSelected);\r\n this.m_rightSelected.forEach((x) => this.exclusivelist.RightList.splice(this.exclusivelist.RightList.indexOf(x), 1));\r\n this.m_leftSelected = this.ClearItemList(this.m_rightSelected);\r\n }\r\n\r\n MoveSelectionRight() {\r\n this.SortSelection(this.m_leftSelected);\r\n this.exclusivelist.RightList.push.apply(this.exclusivelist.RightList, this.m_leftSelected);\r\n this.m_leftSelected.forEach((x) => this.exclusivelist.LeftList.splice(this.exclusivelist.LeftList.indexOf(x), 1));\r\n this.m_rightSelected = this.ClearItemList(this.m_leftSelected);\r\n }\r\n\r\n MoveSelectedItemWithinList(index: number, splitIndex: number) {\r\n if (splitIndex >=0 && splitIndex < this.exclusivelist.LeftList.length)\r\n {\r\n let tmp = this.exclusivelist.LeftList[splitIndex]\r\n this.exclusivelist.LeftList[splitIndex] = this.exclusivelist.LeftList[index]\r\n this.exclusivelist.LeftList[index] = tmp;\r\n }\r\n }\r\n\r\n MoveItem(event: string) {\r\n // Determine which button is pressed and where to move the item(s)\r\n if (event === Direction.up && this.m_leftSelected.length > 0) {\r\n let index: number = this.exclusivelist.LeftList.indexOf(this.m_leftSelected[0]);\r\n this.MoveSelectedItemWithinList(index, index - 1);\r\n }\r\n else if (event === Direction.down && this.m_leftSelected.length > 0) {\r\n let index: number = this.exclusivelist.LeftList.indexOf(this.m_leftSelected[0]);\r\n this.MoveSelectedItemWithinList(index, index + 1);\r\n }\r\n else if (event === Direction.left) {\r\n this.MoveSelectionLeft();\r\n }\r\n else if (event === Direction.right) {\r\n this.MoveSelectionRight();\r\n }\r\n const proceed = this.update.apply(this.caller);\r\n if (proceed === undefined || proceed === null || proceed === false) {\r\n this.ClearItemList(this.m_leftSelected);\r\n this.ClearItemList(this.m_rightSelected);\r\n }\r\n this.UpdateButtons();\r\n }\r\n//#endregion SortingAndMovingFunctions\r\n\r\n//#region CleaningAndUpdatingFunctions\r\n Beautify(event: MouseEvent) {\r\n // prevent any kind of drag effect\r\n event.preventDefault();\r\n }\r\n\r\n private ClearItemList(list: string[]) {\r\n return list.splice(0, list.length);\r\n }\r\n UpdateButtons() {\r\n // If something's selected in the left side check if we have more than one selection or a selection is at a boundary\r\n // if we have more than one item selected, we can only move right. If we're on a boundary, that boundary is disabled. Otherwise Up Down and Right are enabled\r\n if (this.m_leftSelected.length > 0) {\r\n let moreThanOneSelected = (this.m_leftSelected.length > 1);\r\n this.m_leftButtons.top.disabled = false || this.exclusivelist.LeftList.indexOf(this.m_leftSelected[0]) == 0 || moreThanOneSelected;\r\n this.m_leftButtons.bottom.disabled = false || this.exclusivelist.LeftList.indexOf(this.m_leftSelected[0]) == (this.exclusivelist.LeftList.length - 1) || moreThanOneSelected;\r\n this.m_rightButtons.bottom.disabled = false;\r\n this.m_rightButtons.top.disabled = true;\r\n }\r\n // If we selected an item in the right list, we can only move items left\r\n else if (this.m_rightSelected.length > 0) {\r\n this.m_rightButtons.top.disabled = false;\r\n this.m_rightButtons.bottom.disabled = this.m_leftButtons.top.disabled = this.m_leftButtons.bottom.disabled = true;\r\n }\r\n // If we have no selections, disable all buttons\r\n else {\r\n this.m_rightButtons.top.disabled = this.m_rightButtons.bottom.disabled = this.m_leftButtons.top.disabled = this.m_leftButtons.bottom.disabled = true;\r\n }\r\n }\r\n//#endregion CleaningAndUpdatingFunctions\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, OnInit, Output, EventEmitter, AfterContentInit } from '@angular/core';\r\n\r\n/****************************************************************************\r\n ** MutuallyExclusiveListBox is an element that has one list of items and **\r\n ** two control buttons. MutuallyExclusiveListBox looks as follows: ** \r\n ****************************************************************************\r\n * **\r\n * **\r\n * _______________ **\r\n * | LItem | **\r\n * | LItem2 | **\r\n * (T)| LItem3 | **\r\n * (B)| ... | **\r\n * | LItem(n-1) | **\r\n * | LItem(n) | **\r\n * |_______________| **\r\n * **\r\n * **\r\n * **\r\n ***************************************************************************/\r\n\r\nexport const Direction: { up: string, down: string, left: string, right: string } = { up: \"up\", down: \"down\", left: \"left\", right: \"right\" };\r\nexport interface Button {\r\n direction: string;\r\n disabled: boolean;\r\n};\r\n\r\nexport interface Buttons { \r\n top: Button;\r\n bottom: Button;\r\n};\r\n\r\n\r\n@Component({\r\n selector: 'mutually-exclusive-list-box',\r\n template: `\r\n
\r\n
{{title}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{item}}\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n styleUrls: ['./ui-components.css']\r\n})\r\n\r\nexport class MutuallyExclusiveListBox implements OnInit, AfterContentInit {\r\n//#region PrivateVariables\r\n private _buttonMap: { [direction: string]: {} } = {};\r\n private m_height: string = \"\";\r\n private m_width: string = \"\";\r\n//#endregion PrivateVariables\r\n\r\n//#region InputVariables\r\n @Input() public buttons: Buttons; // Consumer can add 2 buttons to list box\r\n @Input() public list: string[]; // The list inside of the box\r\n @Input() public selectedItems: string[]; // The selected list items\r\n @Input() public height: string = \"\";\r\n @Input() public width: string = \"\";\r\n @Input() public title: string = \"\";\r\n\r\n @Output() buttonclick: EventEmitter = new EventEmitter();\r\n @Output() selection: EventEmitter<[KeyboardEvent, string|string[]]> = new EventEmitter<[KeyboardEvent, string|string[]]>();\r\n//#endregion InputVariables\r\n\r\n//#region PublicProperties\r\n public get ButtonMap(): any { return this._buttonMap; };\r\n public get Height(): string { return this.m_height; };\r\n public get Width(): string { return this.m_width; };\r\n//#endregion PublicProperties\r\n\r\n//#region Initialization\r\n constructor() {\r\n this._buttonMap[Direction.up] = {'transform': 'rotate(0deg)'};\r\n this._buttonMap[Direction.down] = {'transform': 'rotate(180deg)'};\r\n this._buttonMap[Direction.right] = {'transform': 'rotate(90deg)'};\r\n this._buttonMap[Direction.left] = {'transform': 'rotate(270deg)'};\r\n }\r\n \r\n ngOnInit() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.m_height = this.height;\r\n this.m_width = this.width;\r\n }\r\n \r\n DragStart(event: DragEvent) {\r\n // prevent any drag events\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n//#endregion Initialization\r\n\r\n//#region ButtonActions\r\n ButtonClick(top: boolean = true) {\r\n // Tell parent which buttons are clicked\r\n if (top) {\r\n this.buttonclick.emit(this.buttons.top.direction);\r\n }\r\n else {\r\n this.buttonclick.emit(this.buttons.bottom.direction);\r\n }\r\n }\r\n//#endregion ButtonActions\r\n\r\n//#region SelectionFuctions\r\n Selection(event: KeyboardEvent, selection: string) {\r\n if (event.type === 'mousedown' || !this.selectedItems.includes(selection))\r\n {\r\n this.selection.emit([event, selection]);\r\n }\r\n }\r\n\r\n IsSelected(item: string): boolean {\r\n return this.selectedItems.indexOf(item) >= 0;\r\n }\r\n\r\n SelectAll(event: KeyboardEvent, selection?: string) {\r\n // follow ctrl-a scheme and select everything\r\n if (event.ctrlKey && event.key == 'a') {\r\n event.preventDefault();\r\n this.selection.emit([event, this.list]);\r\n }\r\n // Add keyboard key controls\r\n // //up\r\n // if (event.keyCode == 38) {\r\n // this.selection.emit([event, selection]);\r\n // (document.getElementById(selection.toLowerCase() + \"_id\")!.parentElement!.previousSibling!.firstChild as HTMLElement).focus();\r\n // }\r\n // //down\r\n // if (event.keyCode == 40) {\r\n // this.selection.emit([event, selection]);\r\n // (document.getElementById(selection.toLowerCase() + \"_id\")!.parentElement!.nextSibling!.firstChild as HTMLElement).focus();\r\n // }\r\n }\r\n//#endregion SelectionFuctions\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { EventEmitter } from '@angular/core';\r\nimport { ClrDatagridFilterInterface } from \"@clr/angular\";\r\nimport { Filter as SharedFilter } from \"@Shared/utils/iDatagridController\";\r\nimport { StringUtils } from '@Shared/utils/stringUtils';\r\n\r\nexport abstract class ClarityFilter implements ClrDatagridFilterInterface, SharedFilter {\r\n public changes: EventEmitter = new EventEmitter(false);\r\n\r\n // Used to know if the filter change in DatagridController.\r\n public changed: boolean = false;\r\n\r\n public constructor() {\r\n }\r\n\r\n public abstract get value(): string;\r\n public abstract get property(): string; // ~ field name\r\n\r\n // Called to filter the datagrid.\r\n public abstract accepts(value: T): boolean;\r\n\r\n protected triggerChange(value: T | null) {\r\n this.changed = true;\r\n this.changes.emit(value);\r\n }\r\n\r\n public isActive(): boolean {\r\n return !StringUtils.IsNullOrEmpty(this.value);\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { DatagridController } from \"./datagridController\";\r\n\r\nexport class ClientDatagridController extends DatagridController {\r\n private entireCollection:ElementType[] | null = null;\r\n\r\n public refresh(): void {\r\n if (this.entireCollection == null) {\r\n this.collection = [];\r\n return;\r\n }\r\n\r\n // TODO sort\r\n // TODO filter\r\n this.collection = this.entireCollection.slice(this.getStartIndex(), this.getStartIndex() + this.pageSize);\r\n }\r\n\r\n public setEntireCollection(collection:ElementType[] | null) {\r\n this.entireCollection = collection;\r\n\r\n if (this.entireCollection != null) {\r\n this.totalCount = this.entireCollection.length;\r\n } else {\r\n this.totalCount = 0;\r\n }\r\n\r\n this.refresh();\r\n }\r\n\r\n public isLoading():boolean {\r\n return this.entireCollection == null;\r\n }\r\n\r\n public getEntireCollection(): ElementType[] | null {\r\n return this.entireCollection;\r\n }\r\n\r\n public getState():any {\r\n let state = super.getState();\r\n state.entireCollection = this.entireCollection;\r\n return state;\r\n }\r\n\r\n public readState(state:any) {\r\n this.entireCollection = state.entireCollection;\r\n super.readState(state);\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n// https://countrycode.org/\r\n\r\nlet countries = [\r\n \"Afghanistan\",\r\n \"Åland Islands\",\r\n \"Albania\",\r\n \"Algeria\",\r\n \"American Samoa\",\r\n \"Andorra\",\r\n \"Angola\",\r\n \"Anguilla\",\r\n \"Antarctica\",\r\n \"Antigua and Barbuda\",\r\n \"Argentina\",\r\n \"Armenia\",\r\n \"Aruba\",\r\n \"Australia\",\r\n \"Austria\",\r\n \"Azerbaijan\",\r\n \"Bahamas\",\r\n \"Bahrain\",\r\n \"Bangladesh\",\r\n \"Barbados\",\r\n \"Belarus\",\r\n \"Belgium\",\r\n \"Belize\",\r\n \"Benin\",\r\n \"Bermuda\",\r\n \"Bhutan\",\r\n \"Bolivia\",\r\n \"Bonaire\",\r\n \"Sint Eustatius\",\r\n \"Bosnia and Herzegovina\",\r\n \"Botswana\",\r\n \"Bouvet Island\",\r\n \"Brazil\",\r\n \"British Indian Ocean Territory\",\r\n \"Brunei\",\r\n \"Bulgaria\",\r\n \"Burkina Faso\",\r\n \"Burundi\",\r\n \"Cambodia\",\r\n \"Cameroon\",\r\n \"Canada\",\r\n \"Cabo Verde\",\r\n \"Cayman Islands\",\r\n \"Central African Republic\",\r\n \"Chad\",\r\n \"Chile\",\r\n \"China\",\r\n \"Christmas Island\",\r\n \"Cocos (Keeling) Islands\",\r\n \"Colombia\",\r\n \"Comoros\",\r\n \"Congo\",\r\n \"Congo (DRC)\",\r\n \"Cook Islands\",\r\n \"Costa Rica\",\r\n \"Côte d’Ivoire\",\r\n \"Croatia\",\r\n \"Cuba\",\r\n \"Curaçao\",\r\n \"Cyprus\",\r\n \"Czech Republic\",\r\n \"Denmark\",\r\n \"Djibouti\",\r\n \"Dominica\",\r\n \"Dominican Republic\",\r\n \"Ecuador\",\r\n \"Egypt\",\r\n \"El Salvador\",\r\n \"Equatorial Guinea\",\r\n \"Eritrea\",\r\n \"Estonia\",\r\n \"Ethiopia\",\r\n \"Falkland Islands\",\r\n \"Faroe Islands\",\r\n \"Fiji\",\r\n \"Finland\",\r\n \"France\",\r\n \"French Guiana\",\r\n \"French Polynesia\",\r\n \"French Southern Territories\",\r\n \"Gabon\",\r\n \"Gambia\",\r\n \"Georgia\",\r\n \"Germany\",\r\n \"Ghana\",\r\n \"Gibraltar\",\r\n \"Greece\",\r\n \"Greenland\",\r\n \"Grenada\",\r\n \"Guadeloupe\",\r\n \"Guam\",\r\n \"Guatemala\",\r\n \"Guernsey\",\r\n \"Guinea\",\r\n \"Guinea-Bissau\",\r\n \"Guyana\",\r\n \"Haiti\",\r\n \"Heard Island and McDonald Islands\",\r\n \"Vatican City\",\r\n \"Honduras\",\r\n \"Hong Kong SAR\",\r\n \"Hungary\",\r\n \"Iceland\",\r\n \"India\",\r\n \"Indonesia\",\r\n \"Iran\",\r\n \"Iraq\",\r\n \"Ireland\",\r\n \"Isle of Man\",\r\n \"Israel\",\r\n \"Italy\",\r\n \"Jamaica\",\r\n \"Japan\",\r\n \"Jersey\",\r\n \"Jordan\",\r\n \"Kazakhstan\",\r\n \"Kenya\",\r\n \"Kiribati\",\r\n \"North Korea\",\r\n \"Korea\",\r\n \"Kuwait\",\r\n \"Kyrgyzstan\",\r\n \"Laos\",\r\n \"Latvia\",\r\n \"Lebanon\",\r\n \"Lesotho\",\r\n \"Liberia\",\r\n \"Libya\",\r\n \"Liechtenstein\",\r\n \"Lithuania\",\r\n \"Luxembourg\",\r\n \"Macao SAR\",\r\n \"Macedonia, FYRO\",\r\n \"Madagascar\",\r\n \"Malawi\",\r\n \"Malaysia\",\r\n \"Maldives\",\r\n \"Mali\",\r\n \"Malta\",\r\n \"Marshall Islands\",\r\n \"Martinique\",\r\n \"Mauritania\",\r\n \"Mauritius\",\r\n \"Mayotte\",\r\n \"Mexico\",\r\n \"Micronesia\",\r\n \"Moldova\",\r\n \"Monaco\",\r\n \"Mongolia\",\r\n \"Montenegro\",\r\n \"Montserrat\",\r\n \"Morocco\",\r\n \"Mozambique\",\r\n \"Myanmar\",\r\n \"Namibia\",\r\n \"Nauru\",\r\n \"Nepal\",\r\n \"Netherlands\",\r\n \"New Caledonia\",\r\n \"New Zealand\",\r\n \"Nicaragua\",\r\n \"Niger\",\r\n \"Nigeria\",\r\n \"Niue\",\r\n \"Norfolk Island\",\r\n \"Northern Mariana Islands\",\r\n \"Norway\",\r\n \"Oman\",\r\n \"Pakistan\",\r\n \"Palau\",\r\n \"Palestinian Authority\",\r\n \"Panama\",\r\n \"Papua New Guinea\",\r\n \"Paraguay\",\r\n \"Peru\",\r\n \"Philippines\",\r\n \"Pitcairn Islands\",\r\n \"Poland\",\r\n \"Portugal\",\r\n \"Puerto Rico\",\r\n \"Qatar\",\r\n \"Réunion\",\r\n \"Romania\",\r\n \"Russia\",\r\n \"Rwanda\",\r\n \"Saint Barthélemy\",\r\n \"St Helena, Ascension, Tristan da Cunha\",\r\n \"Saint Kitts and Nevis\",\r\n \"Saint Lucia\",\r\n \"Saint Martin\",\r\n \"Saint Pierre and Miquelon\",\r\n \"Saint Vincent and the Grenadines\",\r\n \"Samoa\",\r\n \"San Marino\",\r\n \"São Tomé and Príncipe\",\r\n \"Saudi Arabia\",\r\n \"Senegal\",\r\n \"Serbia\",\r\n \"Seychelles\",\r\n \"Sierra Leone\",\r\n \"Singapore\",\r\n \"Sint Maarten\",\r\n \"Slovakia\",\r\n \"Slovenia\",\r\n \"Solomon Islands\",\r\n \"Somalia\",\r\n \"South Africa\",\r\n \"South Georgia and the South Sandwich Islands\",\r\n \"South Sudan\",\r\n \"Spain\",\r\n \"Sri Lanka\",\r\n \"Sudan\",\r\n \"Suriname\",\r\n \"Svalbard\",\r\n \"Jan Mayen\",\r\n \"Swaziland\",\r\n \"Sweden\",\r\n \"Switzerland\",\r\n \"Syria\",\r\n \"Taiwan\",\r\n \"Tajikistan\",\r\n \"Tanzania\",\r\n \"Thailand\",\r\n \"Timor-Leste\",\r\n \"Togo\",\r\n \"Tokelau\",\r\n \"Tonga\",\r\n \"Trinidad and Tobago\",\r\n \"Tunisia\",\r\n \"Turkey\",\r\n \"Turkmenistan\",\r\n \"Turks and Caicos Islands\",\r\n \"Tuvalu\",\r\n \"Uganda\",\r\n \"Ukraine\",\r\n \"United Arab Emirates\",\r\n \"United Kingdom\",\r\n \"United States\",\r\n \"U.S. Outlying Islands\",\r\n \"Uruguay\",\r\n \"Uzbekistan\",\r\n \"Vanuatu\",\r\n \"Venezuela\",\r\n \"Vietnam\",\r\n \"British Virgin Islands\",\r\n \"U.S. Virgin Islands\",\r\n \"Wallis and Futuna\",\r\n \"Western Sahara\",\r\n \"Yemen\",\r\n \"Zambia\",\r\n \"Zimbabwe\",\r\n \"Kosovo\",\r\n]\r\n\r\nexport {countries}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { IDatagridController, Filter, Sort } from \"./iDatagridController\";\r\nimport { ClarityFilter } from \"@Shared/utils/clarityFilter\";\r\n\r\nexport abstract class DatagridController implements IDatagridController {\r\n private _pageSize: number;\r\n\r\n protected filters: Filter[] | undefined;\r\n protected sort: Sort | null;\r\n protected collection:ElementType[];\r\n protected page: number;\r\n protected totalCount: number | null;\r\n protected fetchDataTimer: any = null;\r\n\r\n /* Called when page,sort or filter change. */\r\n public abstract refresh():void;\r\n\r\n public constructor(page: number = 1, pageSize: number = 10) {\r\n this.page = page;\r\n this.pageSize = pageSize;\r\n this.collection = [];\r\n this.totalCount = null;\r\n this.filters = undefined;\r\n this.sort = null;\r\n }\r\n\r\n protected cancelFetchDataTimer(): void {\r\n if (this.fetchDataTimer) {\r\n clearTimeout(this.fetchDataTimer);\r\n this.fetchDataTimer = null;\r\n }\r\n }\r\n\r\n public previousPage(): void {\r\n this.page--;\r\n if (this.page < 1) {\r\n this.page = 1;\r\n }\r\n this.refresh();\r\n }\r\n\r\n public nextPage(): void {\r\n this.page++;\r\n let pageCount:number | null = this.getPageCount();\r\n if (pageCount !== null && this.page > pageCount) {\r\n this.page = pageCount;\r\n }\r\n this.refresh();\r\n }\r\n\r\n public canNext(): boolean {\r\n let pageCount:number | null = this.getPageCount();\r\n if (pageCount === null)\r\n return true;\r\n return this.page < pageCount;\r\n }\r\n\r\n public canPrevious(): boolean {\r\n return this.page > 1;\r\n }\r\n\r\n public getCollection():ElementType[] {\r\n return this.collection;\r\n }\r\n\r\n public getPageCount(): number | null {\r\n if (this._pageSize == 0) {\r\n return 0;\r\n }\r\n\r\n if (this.totalCount === null) {\r\n return null;\r\n }\r\n\r\n return Math.ceil(this.totalCount / this._pageSize);\r\n }\r\n\r\n public getStartIndex(): number {\r\n return (this.getPage() - 1) * this.pageSize;\r\n }\r\n\r\n public getEndIndex(): number {\r\n if (this.collection.length == 0) {\r\n return this.getStartIndex() + this.pageSize;\r\n }\r\n return this.getStartIndex() + this.collection.length;\r\n }\r\n\r\n public getTotalCount(): number | null {\r\n return this.totalCount;\r\n }\r\n\r\n public setPage(page:number) {\r\n this.page = page;\r\n this.refresh();\r\n }\r\n\r\n public getPage(): number {\r\n return this.page;\r\n }\r\n\r\n public get pageSize(): number {\r\n return this._pageSize;\r\n }\r\n\r\n public set pageSize(value: number) {\r\n this._pageSize = value;\r\n this.page = 1; // keeping previous value is weird?\r\n }\r\n\r\n public isLoading(): boolean {\r\n return false;\r\n }\r\n\r\n private static filtersEqual(first: Filter[] | undefined, second: Filter[] | undefined) {\r\n if (first === second) {\r\n return true;\r\n }\r\n\r\n if (first === undefined || second === undefined) {\r\n return false;\r\n }\r\n\r\n if (first.length != second.length) {\r\n return false;\r\n } else {\r\n for (let filterName in first) {\r\n let firstFilter: Filter = first[filterName];\r\n let secondFilter: Filter = second[filterName];\r\n\r\n if (!secondFilter) {\r\n return false;\r\n }\r\n\r\n if (firstFilter.value != secondFilter.value) {\r\n return false;\r\n }\r\n\r\n let secondClarityFilter:ClarityFilter = secondFilter;\r\n if (secondClarityFilter.changed) {\r\n secondClarityFilter.changed = false;\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n public setFilters(newFilters: Filter[] | undefined) {\r\n let oldFilters: Filter[] | undefined = this.filters;\r\n this.filters = newFilters;\r\n\r\n if (!DatagridController.filtersEqual(newFilters, oldFilters)) {\r\n // Wait for the user to finish his typing before fetching data.\r\n this.cancelFetchDataTimer();\r\n this.fetchDataTimer = setTimeout(() => {\r\n this.onFilterChanged();\r\n }, 1000);\r\n }\r\n }\r\n\r\n protected onFilterChanged() {\r\n this.page = 1;\r\n this.totalCount = null;\r\n this.refresh();\r\n }\r\n\r\n protected onSortChanged() {\r\n this.page = 1;\r\n this.totalCount = null;\r\n this.refresh();\r\n }\r\n\r\n public getSort():Sort | null {\r\n return this.sort;\r\n }\r\n\r\n public setSort(sort: Sort | null) {\r\n let defaultSort: Sort = {\r\n sortBy: null,\r\n isReversed: false\r\n };\r\n let oldSort: Sort = this.sort || defaultSort;\r\n let compareSort = sort || defaultSort;\r\n\r\n if (oldSort == compareSort) return;\r\n if (oldSort.isReversed == compareSort.isReversed && oldSort.sortBy == compareSort.sortBy) return;\r\n\r\n this.sort = sort;\r\n this.onSortChanged();\r\n this.refresh();\r\n }\r\n\r\n public getFilters():Filter[] | undefined {\r\n return this.filters;\r\n }\r\n\r\n // Call when we want to reput the array at his initial state.\r\n public reset():void {\r\n this.totalCount = null;\r\n this.collection = [];\r\n this.page = 1;\r\n this.refresh();\r\n }\r\n\r\n public getState():any {\r\n // Only keep property and value for filter. To not send all component information.\r\n // And to avoid circular reference and having too much data if we want to serialize the state.\r\n let minimalFilters:Filter[] | undefined;\r\n if (this.filters) {\r\n minimalFilters = [];\r\n for (let filter of this.filters) {\r\n minimalFilters.push({ value: filter.value, property: filter.property });\r\n }\r\n }\r\n\r\n let obj = {\r\n collection: this.collection,\r\n page: this.page,\r\n pageSize: this._pageSize,\r\n filters: minimalFilters,\r\n sort: this.sort\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n public readState(state:any) {\r\n this.page = state.page;\r\n this._pageSize = state.pageSize;\r\n this.collection = state.collection;\r\n this.filters = state.filters;\r\n this.sort = state.sort;\r\n this.refresh();\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from '@rxjs/Rx';\r\nimport { LiteEvent } from \"./liteEvent\";\r\nimport { StringUtils } from './stringUtils';\r\nimport { IHttpRequest } from './iHttpRequest';\r\n\r\nexport enum HttpRequestType\r\n{\r\n GET,\r\n POST,\r\n PUT,\r\n DELETE\r\n}\r\n\r\nexport enum ReponseHandleType\r\n{\r\n TAKE_LAST,\r\n TAKE_ALL,\r\n}\r\n\r\nexport enum BodyType\r\n{\r\n Raw,\r\n FormData,\r\n}\r\n\r\nexport class HttpRequest implements IHttpRequest {\r\n public static putCredentialsInRequest:boolean = false; // Let it at false if you don't use session variables.\r\n\r\n public isLoading:boolean;\r\n public isComplete:boolean = false;\r\n\r\n public isInError:boolean;\r\n public error:Error;\r\n public httpError:HttpErrorResponse;\r\n public errorMessage:string;\r\n\r\n public get isCompleteWithoutError():boolean { return this.isComplete && !this.isInError; }\r\n\r\n public responseText:string | null; // null if not complete\r\n public responseObj: any | null; // JSON.parse() called on responseText, null if failed or request not complete\r\n\r\n public typeRequest = HttpRequestType.GET;\r\n public uri:string = \"\";\r\n public body:any = {};\r\n public query:any = {};\r\n\r\n private headers?: HttpHeaders;\r\n\r\n public onStart:LiteEvent;\r\n public onSuccess:LiteEvent;\r\n public onError:LiteEvent;\r\n public onComplete:LiteEvent;\r\n\r\n public bodyType:BodyType = BodyType.Raw;\r\n public bodyTransformFunction:{(param:HttpRequest):any} | null; // call just before sending after onStart, need to return the new body\r\n\r\n public uriTransformFunction:{(fullUri:string):string} | null; // call just before sending after onStart, need to return the new uri\r\n\r\n public responseHandleType:ReponseHandleType = ReponseHandleType.TAKE_LAST;\r\n public lastId:number=0;\r\n\r\n public dontAutoResetError:boolean = false;\r\n\r\n public constructor(private http:HttpClient, typeRequest:HttpRequestType, uri:string) {\r\n this.onStart = new LiteEvent();\r\n this.onSuccess = new LiteEvent();\r\n this.onError = new LiteEvent();\r\n this.onComplete = new LiteEvent();\r\n\r\n this.typeRequest = typeRequest;\r\n this.uri = uri;\r\n this.body = {};\r\n this.query = {};\r\n\r\n this.reset();\r\n }\r\n\r\n public set authorizationHeader(value:string) {\r\n this.setHeaderValue(\"Authorization\", value);\r\n }\r\n\r\n private createHeaderIfUndefined() {\r\n if (!this.headers) {\r\n this.headers = new HttpHeaders();\r\n }\r\n }\r\n\r\n public setHeaderValue(key:string, value:string) {\r\n this.createHeaderIfUndefined();\r\n this.headers = this.headers!.set(key, value);\r\n }\r\n\r\n public deleteHeader(key:string) {\r\n this.createHeaderIfUndefined();\r\n this.headers = this.headers!.delete(key);\r\n }\r\n\r\n private completeRequest() {\r\n this.isComplete = true;\r\n this.isLoading = false;\r\n this.onComplete.trigger(this);\r\n }\r\n\r\n public getFullUri():string {\r\n let uri = this.uri;\r\n\r\n if (this.uriTransformFunction) {\r\n uri = this.uriTransformFunction(uri);\r\n }\r\n\r\n let first:boolean = true;\r\n for (let key of Object.keys(this.query)) {\r\n let value = this.query[key];\r\n if (value === null || value === undefined) continue; // Skip null and undefined values not to have \"null\" or \"undefined\" strings on server side.\r\n if (first) {\r\n first = false;\r\n uri += \"?\";\r\n } else {\r\n uri += \"&\";\r\n }\r\n uri += encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\r\n }\r\n return uri;\r\n }\r\n\r\n public send():Observable {\r\n this.reset();\r\n this.isLoading = true;\r\n this.onStart.trigger(this);\r\n\r\n let body:any = this.body;\r\n if (this.bodyTransformFunction) {\r\n body = this.bodyTransformFunction(this);\r\n }\r\n\r\n if (this.bodyType == BodyType.FormData) {\r\n let formDataBody = new FormData();\r\n for (let key of Object.keys(body)) {\r\n formDataBody.append(key, body[key]);\r\n }\r\n body = formDataBody;\r\n }\r\n\r\n let result:Observable;\r\n\r\n let fullUri = this.getFullUri();\r\n\r\n // well ... https://stackoverflow.com/a/48016652\r\n let options : Object = {\r\n headers: this.headers,\r\n observe: 'body' as 'body',\r\n responseType: 'text' as 'tex',\r\n withCredentials: HttpRequest.putCredentialsInRequest\r\n }\r\n\r\n switch (this.typeRequest)\r\n {\r\n case HttpRequestType.POST:\r\n result = this.http.post(fullUri, body, options);\r\n break;\r\n case HttpRequestType.DELETE:\r\n result = this.http.delete(fullUri, options);\r\n break;\r\n case HttpRequestType.GET:\r\n result = this.http.get(fullUri, options);\r\n break;\r\n case HttpRequestType.PUT:\r\n result = this.http.put(fullUri, body, options);\r\n break;\r\n default:\r\n throw new Error(\"Unsupported request type \" + this.typeRequest);\r\n }\r\n\r\n let id = ++this.lastId;\r\n result.subscribe(\r\n (responseText:string) => {\r\n if (id != this.lastId && this.responseHandleType == ReponseHandleType.TAKE_LAST) {\r\n return;\r\n }\r\n\r\n this.responseText = responseText;\r\n try {\r\n this.responseObj = JSON.parse(responseText);\r\n } catch(_) {\r\n this.responseObj = null;\r\n }\r\n\r\n /* catch here to not let a loading at true without the user knowing what happens */\r\n try {\r\n this.onSuccess.trigger(this);\r\n } catch (e) {\r\n console.error(\"HttpRequest - WebClient error\");\r\n console.error(e);\r\n this.handleError(e);\r\n }\r\n\r\n this.completeRequest();\r\n }, (errorResponse:HttpErrorResponse) => {\r\n if (id != this.lastId && this.responseHandleType == ReponseHandleType.TAKE_LAST) {\r\n return;\r\n }\r\n\r\n let errorMessageObj:any = \"\";\r\n if (errorResponse.error && !(errorResponse.error instanceof ProgressEvent)) { // don't want to show ProgressEvent error\r\n errorMessageObj = errorResponse.error;\r\n } else {\r\n errorMessageObj = errorResponse.message;\r\n }\r\n\r\n console.error(fullUri + \" error : \" + errorMessageObj);\r\n this.isInError = true;\r\n this.error = errorResponse;\r\n this.httpError = errorResponse;\r\n\r\n let errJsonObj:any | null = null;\r\n try {\r\n errJsonObj = JSON.parse(errorMessageObj)\r\n } catch (_) {}\r\n\r\n let errorMessage = \"\";\r\n if (errJsonObj && errJsonObj.error) {\r\n errorMessage = errJsonObj.error;\r\n console.error(`${errorResponse.statusText}: ${errorMessage}`);\r\n } else {\r\n errorMessage = errorMessageObj;\r\n }\r\n\r\n if (!StringUtils.IsNullOrEmpty(this.errorMessage)) {\r\n this.errorMessage += \"
\";\r\n }\r\n this.errorMessage += errorMessage;\r\n\r\n this.onError.trigger(this);\r\n this.completeRequest();\r\n }\r\n );\r\n\r\n return result;\r\n }\r\n\r\n private handleError(error:Error) {\r\n this.isInError = true;\r\n this.error = error;\r\n this.errorMessage = error.message;\r\n }\r\n\r\n public resetError():void {\r\n this.isInError = false;\r\n this.errorMessage = \"\";\r\n }\r\n\r\n public reset() {\r\n if (!this.dontAutoResetError) {\r\n this.resetError();\r\n }\r\n\r\n this.responseText = null;\r\n this.responseObj = null;\r\n this.isLoading = false;\r\n this.isComplete = false;\r\n }\r\n\r\n public getReponseObj() {\r\n return this.responseObj;\r\n }\r\n\r\n public getResponseText():string {\r\n return this.responseText;\r\n }\r\n\r\n public setQuery(key:string, value:any):HttpRequest {\r\n this.query[key] = value;\r\n return this;\r\n }\r\n\r\n public removeQuery(key:string):HttpRequest {\r\n delete this.query[key];\r\n return this;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpRequest } from './httpRequest';\r\nimport { LiteEvent } from './liteEvent';\r\n\r\nexport class HttpRequestFragmenter {\r\n private _request:HttpRequest;\r\n private _currentIndex:number;\r\n private _isRunning:boolean;\r\n\r\n private _isInError:boolean;\r\n private _errorsMessages:string[];\r\n\r\n public maxIndex:number | null;\r\n\r\n public onStartFragment:LiteEvent;\r\n public onSuccessFragment:LiteEvent;\r\n public onErrorFragment:LiteEvent;\r\n public onCompleteFragment:LiteEvent;\r\n public onStart:LiteEvent;\r\n public onStop:LiteEvent;\r\n\r\n public constructor(request:HttpRequest) {\r\n this._request = request;\r\n this.reset();\r\n\r\n this.onStartFragment = new LiteEvent();\r\n this.onStartFragment = new LiteEvent();\r\n this.onSuccessFragment = new LiteEvent();\r\n this.onErrorFragment = new LiteEvent();\r\n this.onCompleteFragment = new LiteEvent();\r\n this.onStart = new LiteEvent();\r\n this.onStop = new LiteEvent();\r\n\r\n this._request.onStart.on(req => this.onStartRequest(req));\r\n this._request.onComplete.on(req => this.onCompleteRequest(req));\r\n this._request.onError.on(req => this.onErrorRequest(req));\r\n this._request.onSuccess.on(req => this.onSuccessRequest(req));\r\n }\r\n\r\n public reset():void {\r\n this._currentIndex = 0;\r\n this._isRunning = false;\r\n this._isInError = false;\r\n this._errorsMessages = [];\r\n this._request.reset();\r\n }\r\n\r\n public start() {\r\n this._isRunning = true;\r\n this.onStart.trigger(this);\r\n this.sendRequest();\r\n }\r\n\r\n public stop() {\r\n this._isRunning = false;\r\n this.onStop.trigger(this);\r\n }\r\n\r\n public get currentIndex():number {\r\n return this._currentIndex;\r\n }\r\n\r\n public get request():HttpRequest {\r\n return this._request;\r\n }\r\n\r\n public get isRunning():boolean {\r\n return this._isRunning;\r\n }\r\n\r\n public get isInError():boolean {\r\n return this._isInError;\r\n }\r\n\r\n public get errorMessages():string[] {\r\n return this._errorsMessages;\r\n }\r\n\r\n private onStartRequest(request:HttpRequest): void {\r\n this.onStartFragment.trigger(this);\r\n }\r\n\r\n private onSuccessRequest(request:HttpRequest): void {\r\n this.onSuccessFragment.trigger(this);\r\n }\r\n\r\n private onErrorRequest(request:HttpRequest): void {\r\n this._errorsMessages.push(request.errorMessage);\r\n this._isInError = true;\r\n this.onErrorFragment.trigger(this);\r\n }\r\n\r\n private sendRequest() {\r\n if (this.maxIndex && this.currentIndex >= this.maxIndex) {\r\n this.stop();\r\n return;\r\n }\r\n\r\n this._request.send();\r\n }\r\n\r\n private onCompleteRequest(request:HttpRequest): void {\r\n this.onCompleteFragment.trigger(this);\r\n\r\n if (this._isRunning) {\r\n this._currentIndex++; // first send is in start() so start at 0\r\n this.sendRequest();\r\n }\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n// https://stackoverflow.com/questions/12881212/does-typescript-support-events-on-classes\r\nexport interface ILiteEvent {\r\n on(handler: { (data: T): void }) : void;\r\n off(handler: { (data: T): void }) : void;\r\n}\r\n\r\nexport class LiteEvent implements ILiteEvent {\r\n private handlers: { (data: T): void; }[] = [];\r\n\r\n public on(handler: { (data: T): void }) : void {\r\n this.handlers.push(handler);\r\n }\r\n\r\n public off(handler: { (data: T): void }) : void {\r\n this.handlers = this.handlers.filter(h => h !== handler);\r\n }\r\n\r\n public trigger(data: T) {\r\n this.handlers.slice(0).forEach(h => h(data));\r\n }\r\n\r\n public expose() : ILiteEvent {\r\n return this;\r\n }\r\n\r\n public clear() {\r\n this.handlers = [];\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nexport class StringUtils {\r\n static IsNullOrEmpty(value: string | null | undefined):boolean {\r\n return value === undefined || value === null || value.length === 0;\r\n }\r\n\r\n static IsNullOrWhiteSpace(value: string | null | undefined): boolean {\r\n return (value === undefined || value === null) ? true : value.replace(/\\s/g, '').length < 1;\r\n }\r\n\r\n static validateEmailAddress(email:string) {\r\n // based on https://stackoverflow.com/a/46181.\r\n let re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AccountService, UserAccountDetails } from './account.service';\r\nimport { MsalHttpRequestService } from '@Msal/services/msalHttpRequest.service';\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { environment } from 'environments/environment';\r\n\r\nclass EditUserProfile {\r\n private readonly blank = \"%%__BLANK__%%\";\r\n\r\n public readonly givenName: string;\r\n public readonly surname: string;\r\n public readonly displayName: string;\r\n public phone: string;\r\n public jobTitle: string;\r\n public company: string;\r\n public street: string;\r\n public city: string;\r\n public postal: string;\r\n public state: string;\r\n public country: string;\r\n public marketingOption: boolean;\r\n\r\n constructor(user: UserAccountDetails) {\r\n this.givenName = this.formatString(user.givenName); // include this in the object but they are not editable\r\n this.surname = this.formatString(user.surname); // include this in the object but they are not editable\r\n this.displayName = this.formatString(user.displayName); // include this in the object but they are not editable\r\n this.phone = this.formatString(user.phone);\r\n this.jobTitle = this.formatString(user.jobTitle);\r\n this.company = this.formatString(user.company);\r\n this.street = this.formatString(user.street);\r\n this.city = this.formatString(user.city);\r\n this.postal = this.formatString(user.postal);\r\n this.state = this.formatString(user.state);\r\n this.country = this.formatString(user.country);\r\n this.marketingOption = user.marketingOption;\r\n }\r\n\r\n public isMatch(profile: EditUserProfile): boolean {\r\n return this.matchString(this.phone, profile.phone)\r\n && this.matchString(this.jobTitle, profile.jobTitle)\r\n && this.matchString(this.company, profile.company)\r\n && this.matchString(this.street, profile.street)\r\n && this.matchString(this.city, profile.city)\r\n && this.matchString(this.postal, profile.postal)\r\n && this.matchString(this.state, profile.state)\r\n && this.matchString(this.country, profile.country)\r\n && this.marketingOption == profile.marketingOption;\r\n }\r\n\r\n public isDataValid(): boolean {\r\n const invalid = this.isNullOrWhiteSpace(this.company)\r\n || this.isNullOrWhiteSpace(this.street)\r\n || this.isNullOrWhiteSpace(this.city)\r\n || this.isNullOrWhiteSpace(this.country);\r\n\r\n const pattern = new RegExp(/^$|[\\x00-\\x7F]+/);\r\n\r\n return !invalid \r\n && pattern.test(this.jobTitle)\r\n && pattern.test(this.company)\r\n && pattern.test(this.street)\r\n && pattern.test(this.city)\r\n && pattern.test(this.postal)\r\n && pattern.test(this.state);\r\n }\r\n\r\n private isNullOrWhiteSpace(value: string): boolean {\r\n return value == null || value.trim() == '';\r\n }\r\n\r\n private formatString(value: string): string {\r\n return value == this.blank\r\n ? ''\r\n : value;\r\n }\r\n\r\n private matchString(a: string, b: string): boolean {\r\n const emptyMatch = this.isNullOrWhiteSpace(a) && this.isNullOrWhiteSpace(b);\r\n const valueMatch = a == b;\r\n return emptyMatch || valueMatch;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'account',\r\n templateUrl: './account.component.html',\r\n styleUrls: ['./account.component.css']\r\n})\r\nexport class AccountComponent implements OnInit {\r\n\r\n public basicProfileEditLink: string;\r\n public userDetailUpdateRequest: HttpRequest;\r\n public userDetailsSubscription: Subscription;\r\n\r\n public userDetails: UserAccountDetails | null = null;\r\n public editUserProfile: EditUserProfile | null = null;\r\n\r\n public statusSuccess: string | null = null;\r\n public statusFailure: string | null = null;\r\n\r\n public environment = environment;\r\n\r\n get isLoading(): boolean {\r\n return this.userDetails == null || this.accountService.userInfoRequest.isLoading || this.userDetailUpdateRequest.isLoading;\r\n }\r\n\r\n constructor(\r\n public accountService: AccountService,\r\n private httpService: MsalHttpRequestService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.basicProfileEditLink = this.httpService.getUri(\"Account/BasicProfile\");\r\n\r\n this.userDetailsSubscription = this.accountService.userDetailsSubject\r\n .subscribe(userDetails => {\r\n this.userDetails = userDetails;\r\n this.editUserProfile = userDetails != null ? new EditUserProfile(userDetails) : null;\r\n });\r\n\r\n this.userDetailUpdateRequest = this.httpService.getRequest(HttpRequestType.POST, \"user/UpdateUserProfile\");\r\n this.userDetailUpdateRequest.onStart.on(req => req.body = this.editUserProfile);\r\n this.userDetailUpdateRequest.onSuccess.on(req => {\r\n this.setUserDetails();\r\n if (req.responseObj == false) {\r\n this.setStatus(\"The information entered does not meet eligibility requirements.\", false);\r\n }\r\n else if (req.responseObj == \"Exception\") {\r\n this.setStatus(\"Eligibility screening could not be processed.\", false);\r\n }\r\n else {\r\n this.setStatus(\"Your profile has been updated.\", true);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.userDetailsSubscription.unsubscribe();\r\n }\r\n\r\n shouldDisableSaveChanges(): boolean {\r\n const compare = new EditUserProfile(this.userDetails!);\r\n const match = this.editUserProfile!.isMatch(compare);\r\n const valid = this.editUserProfile!.isDataValid();\r\n return match || !valid;\r\n }\r\n\r\n saveChanges(): void {\r\n this.userDetailUpdateRequest.send();\r\n }\r\n\r\n shouldDisableCancel(): boolean {\r\n const compare = new EditUserProfile(this.userDetails!);\r\n const match = this.editUserProfile!.isMatch(compare);\r\n return match;\r\n }\r\n\r\n cancel(): void {\r\n this.editUserProfile = this.userDetails != null ? new EditUserProfile(this.userDetails) : null;\r\n }\r\n\r\n setStatus(message: string, success: boolean): void {\r\n if (success) {\r\n this.statusSuccess = message;\r\n setTimeout(() => this.statusSuccess = null, 10000);\r\n } else {\r\n this.statusFailure = message;\r\n setTimeout(() => this.statusFailure = null, 10000);\r\n }\r\n }\r\n\r\n setUserDetails(): void {\r\n this.userDetails!.jobTitle = this.editUserProfile?.jobTitle!;\r\n this.userDetails!.company = this.editUserProfile?.company!;\r\n this.userDetails!.street = this.editUserProfile?.street!;\r\n this.userDetails!.city = this.editUserProfile?.city!;\r\n this.userDetails!.postal = this.editUserProfile?.postal!;\r\n this.userDetails!.state = this.editUserProfile?.state!;\r\n this.userDetails!.country = this.editUserProfile?.country!;\r\n this.userDetails!.phone = this.editUserProfile?.phone!;\r\n this.userDetails!.marketingOption = this.editUserProfile?.marketingOption!;\r\n }\r\n}\r\n","
\r\n

Profile Details

\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{statusSuccess}}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{statusFailure}}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Ansys Account Info\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Manage Ansys Account\r\n

\r\n Please note that any changes to Account Information may take a few seconds to appear in our system.\r\n You may need to refresh the page to view the changes.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Company Info\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Please enter only alphanumeric\r\n characters (A-Z, a-z, 0-9).\r\n \r\n \r\n \r\n \r\n Please enter only alphanumeric\r\n characters (A-Z, a-z, 0-9).\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Marketing Preferences\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n This number will only be used for marketing purposes.\r\n Please enter only numbers (0-9).\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\"\r\nimport { MsalService } from \"@Msal/services/msal.service\";\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface UserAccountDetails {\r\n givenName: string;\r\n surname: string;\r\n phone: string;\r\n jobTitle: string;\r\n company: string;\r\n street: string;\r\n city: string;\r\n postal: string;\r\n state: string;\r\n displayName: string;\r\n mail: string;\r\n country: string;\r\n marketingOption: boolean;\r\n}\r\n\r\n@Injectable()\r\nexport class AccountService {\r\n public userInfoRequest: HttpRequest;\r\n public userDetailsSubject = new BehaviorSubject(null);\r\n\r\n constructor(private httpService: MsalHttpRequestService, private msalService: MsalService) {\r\n\r\n this.userInfoRequest = this.httpService.getRequest(HttpRequestType.GET, \"user/info\");\r\n\r\n this.userInfoRequest.onSuccess.on(result => {\r\n const user = result.getReponseObj();\r\n this.userDetailsSubject.next(user);\r\n });\r\n\r\n this.msalService.onTokenReceived.on(t => this.refresh());\r\n if (this.msalService.isOnline) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n public get signedInUserDetails(): UserAccountDetails | null {\r\n if (!this.userInfoRequest.isCompleteWithoutError) {\r\n return null;\r\n }\r\n return this.userInfoRequest.getReponseObj();\r\n }\r\n\r\n private refresh() {\r\n this.userInfoRequest.send();\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, OnChanges } from \"@angular/core\";\r\nimport { ClientDatagridController } from \"@Shared/utils/clientDatagridController\";\r\nimport { EnterpriseService } from './enterprise.service';\r\nimport { NameAndDateClassifier, SubscriptionGroup } from \"./subscription\";\r\n\r\n@Component({\r\n selector: 'subscription-group-table',\r\n styleUrls: ['./users.component.css'],\r\n template: `\r\n
1\" class=\"alert alert-info\" role=\"alert\">\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Users selected will have the subscriptions chosen divided evenly amongst themselves.\r\n \r\n
\r\n Details\r\n \r\n When multiple users are selected, the quantity of subscriptions selected will be distributed equally among the selected users. \r\n If you want to assign multiple subscriptions of the same type to each selected user, the quantity selected must account for\r\n this. Please contact support@ansys.com with any questions.\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Product Name\r\n Start Date\r\n Expiration Date\r\n Tecs Date\r\n Quantity\r\n \r\n
{{subGroupRow.subGroup.key.productName}}
\r\n
{{subGroupRow.subGroup.key.startDate.substring(0,10)}}
\r\n
{{subGroupRow.subGroup.key.validityDate.substring(0,10)}}
\r\n
{{subGroupRow.subGroup.key.tecsDate.substring(0,10)}}
\r\n \r\n \r\n \r\n of {{subGroupRow.subGroup.subscriptions.length}}\r\n \r\n \r\n
\r\n Your company has no active and unassigned subscriptions.\r\n \r\n \r\n \r\n
\r\n
\r\n `\r\n})\r\nexport class SubscriptionGroupTableComponent implements OnChanges {\r\n public subGroupDatagridController: ClientDatagridController;\r\n\r\n @Input() numberOfAssignees: number;\r\n\r\n @Input() subGroupRows: SubscriptionGroupTableRow[];\r\n\r\n constructor(public enterpriseService: EnterpriseService) {\r\n this.subGroupDatagridController = new ClientDatagridController(1, 5);\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.subGroupDatagridController.setEntireCollection(this.subGroupRows);\r\n\r\n if (this.subGroupDatagridController.getPageCount() != null) {\r\n let pageCount: number = this.subGroupDatagridController.getPageCount()!;\r\n\r\n if (pageCount < this.subGroupDatagridController.getPage())\r\n this.subGroupDatagridController.setPage(Math.max(pageCount, 1));\r\n }\r\n }\r\n\r\n public getRange(subGroup: SubscriptionGroup): number[] {\r\n let result: number[] = [];\r\n let available: number = subGroup.subscriptions.length;\r\n const maxSubPerTransaction = 25;\r\n let max;\r\n if (this.numberOfAssignees == 0) {\r\n max = 0;\r\n } else {\r\n max = Math.min(Math.floor(available / this.numberOfAssignees), maxSubPerTransaction);\r\n }\r\n for (let i = 0; i <= max; i++)\r\n result.push(i);\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport class SubscriptionGroupTableRow {\r\n subGroup: SubscriptionGroup;\r\n numberSelected: number;\r\n\r\n constructor(subGroup: SubscriptionGroup) {\r\n this.subGroup = subGroup;\r\n this.numberSelected = 0;\r\n }\r\n\r\n public resetSelection(): void {\r\n this.numberSelected = 0;\r\n }\r\n\r\n public anySelected(): boolean {\r\n return this.numberSelected > 0;\r\n }\r\n\r\n public get subscription() {\r\n return this.subGroup.subscriptions[0];\r\n }\r\n}","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AddUsersResult, EnterpriseService, MultipleUserSubscriptionRequestItem } from \"./enterprise.service\";\r\nimport { HttpRequest } from \"@Shared/utils/httpRequest\";\r\nimport { EnterpriseComponent } from \"./enterprise.component\";\r\nimport { SubscriptionGroupTableRow } from \"./SubscriptionGroupTable.component\";\r\nimport { ProductClassifier } from \"./subscription\";\r\nimport { CSVFileParsedEvent } from 'app/files/csvFileInput.component';\r\n\r\nenum errorCode {\r\n invalidEmail,\r\n duplicateEmail,\r\n validEmail\r\n}\r\n\r\nconst emailValidation = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/;\r\n\r\n@Component({\r\n selector: 'addUserModal',\r\n styleUrls: ['./users.component.css'],\r\n templateUrl: './addUserModal.component.html',\r\n})\r\nexport class AddUserModalComponent implements OnInit {\r\n @Input() refreshUsersFragment: HttpRequest;\r\n @Output() refresh = new EventEmitter();\r\n @Input() enterpriseComponent: EnterpriseComponent;\r\n private _isOpen: boolean = false;\r\n\r\n public _typeAddInput: string = \"one\";\r\n public additionManualMail: string[] = [\"\"];\r\n public additionsMails: string[] = [];\r\n public disableAddButton: boolean = false;\r\n public errorMessage: string = \"\";\r\n public hintMessage: string = \"\";\r\n public emailValidation = emailValidation;\r\n\r\n public subscriptionGroupRows: SubscriptionGroupTableRow[] = [];\r\n\r\n public csvInputError: string = \"\";\r\n\r\n public constructor(public enterpriseService: EnterpriseService) {\r\n enterpriseService.AddUsersCompleteEvent.on(this.handleAddUsersComplete.bind(this));\r\n enterpriseService.AddUsersErrorEvent.on(this.handleAddUsersError.bind(this));\r\n }\r\n\r\n public ngOnInit() {\r\n this.enterpriseService.onSubscriptionsUpdate.on(_ => {\r\n this.subscriptionGroupRows = this.enterpriseService.getAvailableSubscriptionsGrouped().map(subscriptionGroup => new SubscriptionGroupTableRow(subscriptionGroup));\r\n });\r\n }\r\n\r\n public get getErrorCode(): typeof errorCode {\r\n return errorCode;\r\n }\r\n\r\n public handleFileParsedEvent(fileRows: CSVFileParsedEvent) { \r\n // remove whitespaces and newlines\r\n const invalidEmailCount = fileRows.invalidItems.length;\r\n this.additionsMails = fileRows.validItems.map(row => row.trim());\r\n if (invalidEmailCount > 0) {\r\n this.csvInputError = `Found ${invalidEmailCount} invalid ${invalidEmailCount > 1 ? \"emails\" : \"email\"}: ${fileRows.invalidItems.join(', ')}.
These emails will not be included.`\r\n } else {\r\n this.resetCsvInputError();\r\n }\r\n\r\n // remove previously selected products to not have them still selected when we haven't enough subscription\r\n this.resetSubscriptionSelection();\r\n }\r\n\r\n public CheckValidEmail(email: string, emailList: string[]) {\r\n let occurences = 0;\r\n\r\n if (email === null || !emailValidation.test(email)) {\r\n return errorCode.invalidEmail;\r\n }\r\n\r\n for (let emails of emailList) {\r\n if (email.toLowerCase() === emails.toLowerCase()) {\r\n occurences += 1;\r\n }\r\n if (occurences > 1) {\r\n this.disableAddButton = true;\r\n return errorCode.duplicateEmail;\r\n }\r\n }\r\n this.disableAddButton = false;\r\n return errorCode.validEmail;\r\n }\r\n\r\n public ConfirmValidEmails(emailList: string[]) {\r\n let i = 0;\r\n\r\n for (let email of emailList) {\r\n if (email === null) {\r\n return false;\r\n }\r\n if (!emailValidation.test(email)) {\r\n return false;\r\n }\r\n if (i++ != emailList.indexOf(email)) {\r\n return false;\r\n }\r\n }\r\n return emailList.length > 0;\r\n }\r\n\r\n public handleAddEmailClick() {\r\n this.additionManualMail.push(\"\");\r\n this.resetSubscriptionSelection();\r\n }\r\n\r\n public RemoveEmail(emailIndex: number) {\r\n this.additionManualMail = this.additionManualMail.filter((value, index) => index != emailIndex);\r\n }\r\n\r\n public handleSubmitAddUser() {\r\n this.clearMessages();\r\n \r\n if (this.typeAddInput === \"one\") {\r\n this.additionsMails = this.additionManualMail.slice();\r\n }\r\n\r\n let addUsersRequestBody: MultipleUserSubscriptionRequestItem[] = this.additionsMails.map((email, index) => {\r\n // For each new user, create a request item for its creation.\r\n let addUsersRequestItem = new MultipleUserSubscriptionRequestItem();\r\n addUsersRequestItem.userEmail = email;\r\n addUsersRequestItem.fnoActivationIds = this.getSubscriptionIdsForUser(index);\r\n return addUsersRequestItem;\r\n });\r\n\r\n let error = this.enterpriseService.dispatchAddUsers(addUsersRequestBody);\r\n if (error) {\r\n this.errorMessage = error;\r\n }\r\n }\r\n\r\n public trackingFunction(index: number, email: string) {\r\n return index;\r\n }\r\n\r\n public resetStates() {\r\n this.resetAdditionMails();\r\n this.resetAdditionManualMails();\r\n this.typeAddInput = \"one\";\r\n this.clearMessages();\r\n this.resetSubscriptionSelection();\r\n }\r\n\r\n public resetCsvInputError() {\r\n this.csvInputError = \"\";\r\n }\r\n\r\n public resetAdditionManualMails() {\r\n this.additionManualMail = [\"\"];\r\n }\r\n\r\n public resetAdditionMails() {\r\n this.additionsMails = [];\r\n }\r\n\r\n public resetSubscriptionSelection() {\r\n this.subscriptionGroupRows.forEach(r => r.resetSelection());\r\n }\r\n\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n public set isOpen(open: boolean) {\r\n this._isOpen = open;\r\n\r\n if (this._isOpen) {\r\n this.resetStates();\r\n }\r\n }\r\n\r\n public get typeAddInput() {\r\n return this._typeAddInput;\r\n }\r\n \r\n public set typeAddInput(value: string) {\r\n this.resetCsvInputError();\r\n this.resetAdditionManualMails();\r\n this.resetAdditionMails();\r\n this._typeAddInput = value;\r\n }\r\n\r\n public get numberOfNewUsers() {\r\n return this._typeAddInput === \"one\" ? this.additionManualMail.length : this.additionsMails.length;\r\n }\r\n\r\n private handleAddUsersComplete(result: AddUsersResult) {\r\n if (Object.keys(result.didNotCreate.alreadyExists).length > 0) {\r\n let userEmails = Object.keys(result.didNotCreate.alreadyExists);\r\n this.hintMessage = `Failed to add existing users: {${userEmails.join(\", \")}}.`;\r\n }\r\n if (Object.keys(result.didNotCreate.failed).length > 0) {\r\n let keys = Object.keys(result.didNotCreate.failed)\r\n for (let key of keys){\r\n this.errorMessage += `Failed to add users {${key}} due to the following reasons: \\n` + Object(result.didNotCreate.failed)[key].join(\", \");\r\n }\r\n }\r\n if (result.failedAssignment.length > 0) {\r\n this.errorMessage += `\\nFailed assigning subscriptions to user: {${result.failedAssignment.map(result => result.userEmail)}}`;\r\n }\r\n if (this.errorMessage == \"\" && this.hintMessage == \"\") {\r\n // If no error message to present, close the modal\r\n this._isOpen = false;\r\n }\r\n this.resetAdditionManualMails();\r\n this.resetAdditionMails();\r\n this.resetSubscriptionSelection();\r\n this.refresh.emit();\r\n this.refreshUsersFragment?.send();\r\n if (result.fullySuccessful.length > 0) {\r\n // If any subscriptions are assigned, reload the subscriptions.\r\n this.enterpriseService.refreshSubscriptions();\r\n }\r\n }\r\n\r\n private handleAddUsersError(errorMessages: string[]) {\r\n this.errorMessage = errorMessages.join(\"; \");\r\n }\r\n\r\n private getSubscriptionIdsForUser(userIndex: number): string[] {\r\n let fnoActivationIds: string[] = []\r\n this.subscriptionGroupRows.filter(row => row.numberSelected > 0).forEach(row => {\r\n // Take the subscriptions assigned to the new user.\r\n let subscriptionCount: number = row.numberSelected; \r\n let productActivationIds = row.subGroup.subscriptions.map(subscription => subscription.fnoActivationId);\r\n let start: number = userIndex * subscriptionCount;\r\n let end: number = (userIndex + 1) * subscriptionCount;\r\n let productActivationIdsForUser = productActivationIds.slice(start, end);\r\n fnoActivationIds.push(...productActivationIdsForUser);\r\n });\r\n return fnoActivationIds;\r\n }\r\n\r\n private clearMessages() {\r\n this.errorMessage = \"\";\r\n this.hintMessage = \"\";\r\n }\r\n}\r\n","
\r\n \r\n

Add User

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Please enter a valid email\r\n address.\r\n \r\n This email has already been\r\n entered.\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

\r\n Assign Subscription \r\n

\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\";\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\nimport { AccountService, UserAccountDetails } from \"../Account/account.service\";\r\nimport { HttpRequestFragmenter } from \"@Shared/utils/httpRequestFragmenter\";\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'admins-enterprise',\r\n templateUrl: './admins.component.html',\r\n})\r\nexport class AdminsComponent implements OnInit {\r\n public getAdminUsersRequest:HttpRequest;\r\n public addAdminUsersRequest:HttpRequest;\r\n public removeAdminUsersRequest:HttpRequest;\r\n public resendAdminWelcomeEmailRequest:HttpRequest;\r\n public resendAdminWelcomeEmailFragmenter:HttpRequestFragmenter;\r\n\r\n public adminUsers:any[] = [];\r\n public selectedAdmins: any[] = [];\r\n public newAdminUserEmail:string = \"\";\r\n\r\n private _subscriptionAdminTableRefresh: Subscription;\r\n\r\n public constructor(\r\n private httpService:MsalHttpRequestService,\r\n public enterpriseService:EnterpriseService,\r\n public accountService:AccountService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getAdminUsersRequest = this.httpService.getRequest(HttpRequestType.GET, \"userenterprise/adminusers\");\r\n this.addAdminUsersRequest = this.httpService.getRequest(HttpRequestType.POST, \"userenterprise/adminusers\");\r\n this.removeAdminUsersRequest = this.httpService.getRequest(HttpRequestType.POST, \"userenterprise/RemoveAdminUsers\");\r\n this.resendAdminWelcomeEmailRequest = this.httpService.getRequest(HttpRequestType.POST, \"userenterprise/ResendAdminWelcomeEmail\");\r\n this.resendAdminWelcomeEmailFragmenter = new HttpRequestFragmenter(this.resendAdminWelcomeEmailRequest);\r\n\r\n this.getAdminUsersRequest.onStart.on(req => {\r\n req.query.org = this.enterpriseService.getOrganization();\r\n });\r\n\r\n this.getAdminUsersRequest.onSuccess.on(req => {\r\n this.adminUsers = req.getReponseObj();\r\n });\r\n\r\n this.addAdminUsersRequest.onStart.on(req => {\r\n req.query.org = this.enterpriseService.getOrganization();\r\n req.body = { email: this.newAdminUserEmail };\r\n });\r\n\r\n this.addAdminUsersRequest.onSuccess.on(h => {\r\n var resp = h.responseObj; \r\n if (resp && resp.errorInfo){\r\n throw Error(resp.errorInfo);\r\n }\r\n else{\r\n this.newAdminUserEmail = \"\";\r\n this.isAddAdminModalOpen = false;\r\n this.getAdminUsersRequest.send()\r\n } \r\n });\r\n\r\n this.resendAdminWelcomeEmailFragmenter.onStart.on((fragmenter: HttpRequestFragmenter) => {\r\n fragmenter.request.query.org = this.enterpriseService.getOrganization();\r\n });\r\n\r\n this.resendAdminWelcomeEmailFragmenter.onStartFragment.on((fragmenter: HttpRequestFragmenter) => {\r\n fragmenter.request.body = { email: this.selectedAdmins[fragmenter.currentIndex].email };\r\n });\r\n\r\n this.resendAdminWelcomeEmailFragmenter.onStop.on((fragmenter: HttpRequestFragmenter) => {\r\n this.selectedAdmins = [];\r\n });\r\n\r\n this.removeAdminUsersRequest.onStart.on(req => {\r\n req.query.org = this.enterpriseService.getOrganization();\r\n req.body = { users: this.selectedAdmins };\r\n });\r\n\r\n this.removeAdminUsersRequest.onSuccess.on(req => {\r\n this.isRemoveAdminModalOpen = false;\r\n this.getAdminUsersRequest.send();\r\n });\r\n\r\n this.enterpriseService.onOrganizationChange.on(org => {\r\n this.getAdminUsersRequest.send();\r\n });\r\n\r\n this.getAdminUsersRequest.send();\r\n\r\n this._subscriptionAdminTableRefresh = this.enterpriseService.shouldRefreshEnterpriseAdminTable.subscribe(x => {\r\n this.getAdminUsersRequest.send();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptionAdminTableRefresh.unsubscribe();\r\n }\r\n\r\n public _isRemoveAdminModalOpen = false;\r\n public get isRemoveAdminModalOpen():boolean {\r\n return this._isRemoveAdminModalOpen;\r\n }\r\n\r\n public set isRemoveAdminModalOpen(value:boolean) {\r\n this._isRemoveAdminModalOpen = value;\r\n this.removeAdminUsersRequest.reset();\r\n }\r\n\r\n public _isAddAdminModalOpen = false;\r\n public get isAddAdminModalOpen():boolean {\r\n return this._isAddAdminModalOpen;\r\n }\r\n\r\n public set isAddAdminModalOpen(value:boolean) {\r\n this._isAddAdminModalOpen = value;\r\n this.addAdminUsersRequest.reset();\r\n }\r\n\r\n public get currentUser(): UserAccountDetails {\r\n // can't be null cause we need to be connected to see that page\r\n return this.accountService.signedInUserDetails;\r\n }\r\n\r\n public resendAdminWelcomeEmail(){\r\n this.resendAdminWelcomeEmailFragmenter.reset();\r\n this.resendAdminWelcomeEmailFragmenter.maxIndex = this.selectedAdmins.length;\r\n this.resendAdminWelcomeEmailFragmenter.start();\r\n }\r\n}\r\n","
\r\n
\r\n Admin Users\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n First Name\r\n Last Name\r\n Email\r\n\r\n \r\n {{user.givenName}}\r\n {{user.surname}}\r\n {{user.email}}\r\n \r\n\r\n {adminUsers.length, plural, =1 {1 admin} other {{{adminUsers.length}}\r\n admins}}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n

Remove admin

\r\n
\r\n \r\n Are you sure you want to remove {this.selectedAdmins.length, plural, =1 {1 admin} other\r\n {{{this.selectedAdmins.length}} admins}}?\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n

Add Admin

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { OnInit, Component, ViewChild } from \"@angular/core\";\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\"\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\nimport { Router } from \"@angular/router\";\r\n\r\ninterface Org {\r\n id: string;\r\n displayName: string;\r\n}\r\n\r\n@Component({\r\n selector: 'enterpriseComponent',\r\n templateUrl: './enterprise.component.html',\r\n})\r\nexport class EnterpriseComponent implements OnInit {\r\n public isAdminRequest: HttpRequest;\r\n\r\n public orgs: Org[] = [];\r\n public currentOrg: string;\r\n public globalErrorMessage: string = \"\"\r\n public activeGlobalError: boolean = false;\r\n\r\n public constructor(\r\n public router: Router,\r\n private httpService: MsalHttpRequestService,\r\n public enterpriseService: EnterpriseService\r\n ) {\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.isAdminRequest = this.httpService.getRequest(HttpRequestType.GET, \"UserEnterprise/AdminForOrgs\");\r\n this.isAdminRequest.onSuccess.on(req => {\r\n this.orgs = req.responseObj.orgs;\r\n\r\n // No company to administrate so nothing to do here.\r\n if (this.orgs.length == 0) {\r\n this.router.navigateByUrl(\"/\");\r\n return;\r\n }\r\n\r\n this.currentOrg = this.orgs[0].id;\r\n this.onCompanyChange();\r\n });\r\n this.isAdminRequest.send();\r\n }\r\n\r\n public onCompanyChange() {\r\n this.enterpriseService.setOrganization(this.currentOrg);\r\n }\r\n\r\n public displayError(message: string) {\r\n this.activeGlobalError = true;\r\n this.globalErrorMessage = message;\r\n }\r\n\r\n public closeErrorMessage() {\r\n this.activeGlobalError = false;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
1\">\r\n \r\n \r\n \r\n
\r\n
\r\n

{{orgs[0].displayName}} ({{orgs[0].id}})

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { NgModule } from \"@angular/core\";\r\nimport { EnterpriseComponent } from \"./enterprise.component\";\r\nimport { SubscriptionsSummaryComponent } from \"./subscriptionsSummary.component\";\r\nimport { UsersComponent } from \"./users.component\";\r\nimport { AdminsComponent } from \"./admins.component\";\r\nimport { InvitationsComponent } from \"./invitations.component\";\r\nimport { ProductCountCell } from \"./productCountCell.component\";\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\nimport { SharedModule } from \"@Shared/Shared.module\";\r\nimport { AppRoutingModule } from \"../app-routing.module\";\r\nimport { ClarityModule } from \"@clr/angular\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { AccountService } from \"../Account/account.service\";\r\nimport { AddUserModalComponent } from './addUserModal.component';\r\nimport { CsvFileInputComponent } from \"app/files/csvFileInput.component\";\r\nimport { SubscriptionGroupTableComponent } from \"./SubscriptionGroupTable.component\";\r\nimport { ExtendedRequestPresenterComponent } from './extendedRequestPresenter.component';\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n ClarityModule,\r\n AppRoutingModule,\r\n SharedModule,\r\n ],\r\n declarations: [\r\n EnterpriseComponent,\r\n SubscriptionsSummaryComponent,\r\n UsersComponent,\r\n AdminsComponent,\r\n InvitationsComponent,\r\n ProductCountCell,\r\n AddUserModalComponent,\r\n CsvFileInputComponent,\r\n SubscriptionGroupTableComponent,\r\n ExtendedRequestPresenterComponent\r\n ],\r\n providers: [\r\n EnterpriseService,\r\n AccountService,\r\n ],\r\n exports: [\r\n EnterpriseComponent,\r\n ],\r\n})\r\nexport class EnterpriseModule {\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\";\r\nimport { Subscription, SubscriptionGroup, SubscriptionGroupUtils, NameAndDateClassifier, ProductClassifier } from \"./subscription\";\r\nimport { LiteEvent } from \"@Shared/utils/liteEvent\";\r\nimport { Dictionary } from \"@Shared/utils/dictionary\";\r\nimport { SubscriptionCollection } from \"./subscriptionCollection\";\r\nimport { InvitationCollection, Invitation } from \"./invitationCollection\";\r\nimport { Subject } from 'rxjs';\r\nimport { FailedUserLookup, User } from \"./user.model\";\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport EnterpriseHttpRequestFragmenter from \"./enterpriseHttpRequestFragmenter\";\r\nimport { SubscriptionGroupTableRow } from \"./SubscriptionGroupTable.component\";\r\n\r\nconst MAX_USER_REMOVAL_PER_REQUEST = 5;\r\nconst MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST = 25;\r\nconst MAX_SUBSCRIPTIONS_PER_REQUEST = 5;\r\n\r\nexport class GetUsersResponseBody {\r\n users: User[];\r\n totalCount: number;\r\n}\r\n\r\nexport class AddUsersResult {\r\n didNotCreate: {\r\n alreadyExists: Map,\r\n failed: Map\r\n } = {alreadyExists: new Map(), failed: new Map()};\r\n fullySuccessful: any[] = [];\r\n failedAssignment: any[] = [];\r\n}\r\n\r\nexport class MultipleUserSubscriptionRequestItem {\r\n userEmail: string;\r\n fnoActivationIds: string[];\r\n}\r\n\r\nexport class AssignProductInfo{\r\n partNumber: string;\r\n count: number;\r\n startDate: string;\r\n tecsDate: string;\r\n name: string;\r\n isAddon: boolean;\r\n productCategory: string;\r\n\r\n constructor(subscription: Subscription, subscriptionCount: number) {\r\n this.partNumber = subscription.partNumber;\r\n this.count = subscriptionCount;\r\n this.startDate = subscription.startDate;\r\n this.tecsDate = subscription.tecsDate;\r\n this.name = subscription.productName;\r\n this.isAddon = false;\r\n this.productCategory = subscription.productCategory;\r\n }\r\n}\r\n\r\ntype MultipleUserSubscriptionRequestBatch = MultipleUserSubscriptionRequestItem[];\r\n\r\n@Injectable()\r\nexport class EnterpriseService {\r\n public GetUserSuccessEvent = new LiteEvent();\r\n public GetUsersErrorEvent = new LiteEvent();\r\n public GetUserByEmailSuccessEvent = new LiteEvent();\r\n public GetUserByEmailErrorEvent = new LiteEvent();\r\n public RemoveUsersSuccessEvent = new LiteEvent();\r\n public RemoveUsersErrorEvent = new LiteEvent();\r\n public AddUsersCompleteEvent = new LiteEvent();\r\n public AddUsersErrorEvent = new LiteEvent();\r\n public AssignSubscriptionsSuccessEvent = new LiteEvent();\r\n public AssignSubscriptionsErrorEvent = new LiteEvent();\r\n public UnassignSubscriptionsSuccessEvent = new LiteEvent();\r\n public UnassignSubscriptionsErrorEvent = new LiteEvent();\r\n\r\n public invitationCollection: InvitationCollection;\r\n public shouldRefreshEnterpriseAdminTable = new Subject();\r\n public onSubscriptionsUpdate = new LiteEvent();\r\n public onOrganizationChange = new LiteEvent();\r\n\r\n // Made private to disallow direct interaction with data from components\r\n private _subscriptionCollection: SubscriptionCollection;\r\n\r\n private _org: string | null;\r\n\r\n private _invitations: Invitation[] = [];\r\n private _invitationsUsedCountPerProduct: Dictionary = {};\r\n\r\n private _usersRequestRetrigger: boolean = false;\r\n\r\n private _getUsersRequest: HttpRequest;\r\n private _getUserByEmailRequest: HttpRequest;\r\n private _removeUsersRequest: HttpRequest;\r\n private _removeUsersRequestFragmenter: EnterpriseHttpRequestFragmenter;\r\n private _addUsersRequest: HttpRequest;\r\n private _addUsersRequestFragmenter: EnterpriseHttpRequestFragmenter;\r\n private _assignSubscriptionRequest: HttpRequest;\r\n private _assignSubscriptionRequestFragmenter: EnterpriseHttpRequestFragmenter;\r\n private _unassignSubscriptionRequest: HttpRequest;\r\n private _unassignSubscriptionRequestFragmenter: EnterpriseHttpRequestFragmenter;\r\n\r\n // This is a grouping commonly used in multiple UI component.\r\n private _subscriptionsGroupedByProduct: SubscriptionGroup[] = [];\r\n\r\n public constructor(private httpService: MsalHttpRequestService) {\r\n this._subscriptionCollection = new SubscriptionCollection(this.httpService);\r\n this._subscriptionCollection.onComplete.on(_ => this.onGetSubscriptionsComplete());\r\n\r\n this.invitationCollection = new InvitationCollection(this.httpService);\r\n this.invitationCollection.onComplete.on(invitations => this.onGetInvitationsComplete(invitations));\r\n\r\n this.onSubscriptionsUpdate.on(_ => {\r\n this._subscriptionsGroupedByProduct = SubscriptionGroupUtils.groupBy(this.subscriptions, s => new ProductClassifier(s));\r\n });\r\n\r\n this._getUserByEmailRequest = this.httpService.getRequest(HttpRequestType.GET, 'userenterprise/userByEmail');\r\n this._getUsersRequest = this.httpService.getRequest(HttpRequestType.GET, 'userenterprise/users');\r\n this._removeUsersRequest = this.httpService.getRequest(HttpRequestType.POST, 'userenterprise/remove');\r\n this._removeUsersRequestFragmenter = new EnterpriseHttpRequestFragmenter(this._removeUsersRequest);\r\n this._addUsersRequest = this.httpService.getRequest(HttpRequestType.POST, \"userenterprise/TryCreateMultipleUsers\");\r\n this._addUsersRequestFragmenter = new EnterpriseHttpRequestFragmenter(this._addUsersRequest);\r\n this._assignSubscriptionRequest = this.httpService.getRequest(HttpRequestType.POST, 'userenterprise/assignMultiple');\r\n this._assignSubscriptionRequestFragmenter = new EnterpriseHttpRequestFragmenter(this._assignSubscriptionRequest);\r\n this._unassignSubscriptionRequest = this.httpService.getRequest(HttpRequestType.POST, 'userenterprise/unassignMultiple');\r\n this._unassignSubscriptionRequestFragmenter = new EnterpriseHttpRequestFragmenter(this._unassignSubscriptionRequest);\r\n\r\n this._getUsersRequest.onSuccess.on(req => {\r\n let response = new GetUsersResponseBody();\r\n response.users = req.responseObj.collection;\r\n response.totalCount = req.responseObj.count;\r\n this.GetUserSuccessEvent.trigger(response);\r\n });\r\n\r\n this._getUsersRequest.onError.on(req => {\r\n this.GetUsersErrorEvent.trigger(req.errorMessage);\r\n });\r\n\r\n this._getUsersRequest.onComplete.on(_ => {\r\n if(this._usersRequestRetrigger) {\r\n setTimeout(() => {\r\n this._usersRequestRetrigger = false;\r\n this._getUsersRequest.send()\r\n }, 100); \r\n } \r\n });\r\n\r\n this._getUserByEmailRequest.onSuccess.on(req => {\r\n this.GetUserByEmailSuccessEvent.trigger(req.getReponseObj());\r\n });\r\n\r\n this._getUserByEmailRequest.onError.on(req => {\r\n let failedUserLookupResult:FailedUserLookup = new FailedUserLookup();\r\n failedUserLookupResult.email = this._getUserByEmailRequest.query.email,\r\n failedUserLookupResult.org = this._getUserByEmailRequest.query.org,\r\n failedUserLookupResult.errorStatus = req.httpError.status;\r\n failedUserLookupResult.errorMessage = req.errorMessage,\r\n this.GetUserByEmailErrorEvent.trigger(failedUserLookupResult);\r\n })\r\n\r\n this._removeUsersRequestFragmenter.onStartFragment.on(hf => {\r\n let rawRequestBody = hf.rawRequestBody as User[];\r\n hf.request.body.userEmails = this.getSelectedUsersEmails(hf.currentIndex, MAX_USER_REMOVAL_PER_REQUEST, rawRequestBody);\r\n });\r\n\r\n this._removeUsersRequestFragmenter.onStop.on(hf => {\r\n this.shouldRefreshEnterpriseAdminTable.next();\r\n if (hf.isInError) {\r\n this.RemoveUsersErrorEvent.trigger(hf.errorMessages);\r\n } else {\r\n this.RemoveUsersSuccessEvent.trigger();\r\n this.refreshSubscriptions();\r\n }\r\n });\r\n\r\n this._addUsersRequestFragmenter.onStartFragment.on(hf => {\r\n let requestBatches = hf.rawRequestBody as MultipleUserSubscriptionRequestBatch[];\r\n hf.request.body = requestBatches[hf.currentIndex];\r\n });\r\n\r\n this._addUsersRequestFragmenter.onStop.on(hf => {\r\n if (hf.isInError) {\r\n this.AddUsersErrorEvent.trigger(hf.errorMessages);\r\n } else {\r\n this.AddUsersCompleteEvent.trigger(this.mergeAddUsersResults(hf.successRequestResponseObjs));\r\n }\r\n });\r\n\r\n this._unassignSubscriptionRequestFragmenter.onStartFragment.on(hf => {\r\n let requestBatches = hf.rawRequestBody as MultipleUserSubscriptionRequestBatch[];\r\n hf.request.body = requestBatches[hf.currentIndex];\r\n });\r\n\r\n this._unassignSubscriptionRequestFragmenter.onStop.on(hf => {\r\n if (hf.isInError) {\r\n this.UnassignSubscriptionsErrorEvent.trigger(hf.errorMessages);\r\n } else {\r\n this.UnassignSubscriptionsSuccessEvent.trigger();\r\n this.refreshSubscriptions();\r\n }\r\n });\r\n\r\n this._assignSubscriptionRequestFragmenter.onStartFragment.on(hf => {\r\n let requestBatches = hf.rawRequestBody as MultipleUserSubscriptionRequestBatch[];\r\n hf.request.body = requestBatches[hf.currentIndex];\r\n });\r\n\r\n this._assignSubscriptionRequestFragmenter.onStop.on(hf => {\r\n if (hf.isInError) {\r\n this.AssignSubscriptionsErrorEvent.trigger(hf.errorMessages);\r\n } else {\r\n this.AssignSubscriptionsSuccessEvent.trigger();\r\n this.refreshSubscriptions();\r\n }\r\n });\r\n }\r\n\r\n private onGetSubscriptionsComplete(): void {\r\n this.onSubscriptionsUpdate.trigger(this.subscriptions);\r\n }\r\n\r\n private onGetInvitationsComplete(invitations: Invitation[]) {\r\n this._invitations = invitations;\r\n\r\n this._invitationsUsedCountPerProduct = {}; // do that as late as possible to keep a valid value in the Company Subscription block\r\n for (let invitation of invitations) {\r\n for (let product of invitation.subscriptions) {\r\n this.clientAddInvitation(product);\r\n }\r\n }\r\n }\r\n\r\n public setOrganization(orgID: string | null) {\r\n this._org = orgID;\r\n this._invitations = [];\r\n this._invitationsUsedCountPerProduct = {};\r\n\r\n this._subscriptionCollection.setOrg(orgID);\r\n this.invitationCollection.setOrg(orgID);\r\n\r\n this.onOrganizationChange.trigger(orgID);\r\n }\r\n\r\n public refreshInvitations() {\r\n this.invitationCollection.refresh();\r\n }\r\n\r\n public refreshSubscriptions() {\r\n this._subscriptionCollection.refresh();\r\n }\r\n\r\n public getSubscriptionRequestProgression() {\r\n return this._subscriptionCollection.getProgression();\r\n }\r\n\r\n public getOrganization(): string | null {\r\n return this._org;\r\n }\r\n\r\n public get clientComputedData(): boolean {\r\n return this._subscriptionCollection.isStale;\r\n }\r\n\r\n public get isSubscriptionsRequestCompleted(): boolean {\r\n return this._subscriptionCollection.isCompleted;\r\n }\r\n\r\n public get invitations(): Invitation[] {\r\n return this._invitations;\r\n }\r\n\r\n public clientAddInvitation(productName: string) {\r\n if (!this._invitationsUsedCountPerProduct[productName]) {\r\n this._invitationsUsedCountPerProduct[productName] = 0;\r\n }\r\n this._invitationsUsedCountPerProduct[productName]++;\r\n }\r\n\r\n public clientRemoveInvitation(productName: string) {\r\n if (!this._invitationsUsedCountPerProduct[productName]) {\r\n console.error(`No subscription for ${productName}`);\r\n return;\r\n }\r\n\r\n this._invitationsUsedCountPerProduct[productName]--;\r\n }\r\n\r\n public get subscriptions(): Subscription[] {\r\n return this._subscriptionCollection.subscriptions;\r\n }\r\n\r\n public getAllSubscriptionsGrouped(): SubscriptionGroup[] {\r\n return this.subscriptionsGroupedByProduct;\r\n }\r\n\r\n public getAvailableSubscriptionsGroupedForProduct(productName: string): SubscriptionGroup[] {\r\n let availableSubscriptions = this.subscriptions.filter(sub => sub.userEmail == \"\" && sub.productName == productName);\r\n\r\n //group duplicates\r\n return this.groupSubscriptionsByDates(availableSubscriptions);\r\n }\r\n\r\n public getAvailableSubscriptionsGrouped(): SubscriptionGroup[] {\r\n return this.groupSubscriptionsByDates(this.subscriptions.filter(s => s.userEmail == \"\"));\r\n }\r\n\r\n public getSubscriptionsForProduct(productName: string): Subscription[] {\r\n let subscriptions = this.subscriptions.filter(sub => sub.productName == productName);\r\n\r\n return subscriptions;\r\n }\r\n\r\n public getSubscriptionsForUser(userEmail: string): Subscription[] {\r\n let subscriptions = this.subscriptions.filter(sub => sub.userEmail?.toLowerCase() === userEmail?.toLowerCase());\r\n return subscriptions;\r\n }\r\n\r\n public getGroupedSubscriptionsForUser(userEmail: string): SubscriptionGroup[] {\r\n return SubscriptionGroupUtils.groupBy(this.getSubscriptionsForUser(userEmail), s => new ProductClassifier(s));\r\n }\r\n\r\n public groupSubscriptionsByDates(subscriptions: Subscription[]): SubscriptionGroup[] {\r\n let groupedSubscriptions = SubscriptionGroupUtils.groupBy(subscriptions, s => new NameAndDateClassifier(s));\r\n\r\n groupedSubscriptions.sort((a, b) => {\r\n let dateA = new Date(a.key.startDate);\r\n let dateB = new Date(b.key.startDate);\r\n let nameA = a.key.productName.toLowerCase();\r\n let nameB = b.key.productName.toLowerCase();\r\n\r\n if (nameA < nameB)\r\n return -1;\r\n\r\n else if (nameA > nameB)\r\n return 1;\r\n\r\n else if (dateA < dateB)\r\n return -1;\r\n\r\n else if (dateA > dateB)\r\n return 1;\r\n\r\n else\r\n return 0;\r\n\r\n });\r\n\r\n return groupedSubscriptions;\r\n }\r\n\r\n public getSubscriptionUsedCountForProduct(productName: string): number {\r\n let invitationUsedCount = this._invitationsUsedCountPerProduct[productName] ? this._invitationsUsedCountPerProduct[productName] : 0;\r\n return this.subscriptions.filter(s => s.productName == productName && s.userEmail != \"\").length + invitationUsedCount;\r\n }\r\n\r\n public getSubscriptionLeftForProduct(productName: string): number {\r\n let invitationUsedCount = this._invitationsUsedCountPerProduct[productName] ? this._invitationsUsedCountPerProduct[productName] : 0;\r\n return this.subscriptions.filter(s => s.productName == productName && s.userEmail == \"\").length - invitationUsedCount;\r\n }\r\n\r\n /**\r\n * Dispatch request to get/refresh users. Triggers GetUsersSuccess or GetUsersError event.\r\n */\r\n public dispatchGetUsers(page: number, pageSize: number, askCount: boolean = false) {\r\n this._getUsersRequest.setQuery(\"org\", this._org);\r\n this._getUsersRequest.setQuery(\"page\", page);\r\n this._getUsersRequest.setQuery(\"pageSize\", pageSize);\r\n this._getUsersRequest.setQuery(\"askCount\", askCount);\r\n\r\n if (this._getUsersRequest.isLoading) {\r\n this._usersRequestRetrigger = true;\r\n return;\r\n }\r\n\r\n this._getUsersRequest.send();\r\n }\r\n\r\n /**\r\n * Dispatch request to search for a user by email. Triggers GetUserByEmailSuccess or GetUserByEmailError event.\r\n */\r\n public dispatchGetUserByEmail(userEmail: string) {\r\n if (this._getUserByEmailRequest.isLoading) return;\r\n this._getUserByEmailRequest.setQuery(\"org\", this._org);\r\n this._getUserByEmailRequest.setQuery(\"email\", userEmail);\r\n this._getUserByEmailRequest.send();\r\n }\r\n\r\n /**\r\n * Dispatch request to remove selected users. Triggers RemoveUsersSuccess or RemoveUsersError events.\r\n */\r\n public dispatchRemoveUsers(selectedUsers: User[]): string | undefined {\r\n if (this._removeUsersRequestFragmenter.isRunning) \r\n return \"Unable to remove users, another remove user process is running.\";\r\n this._removeUsersRequestFragmenter.resetFragmenter();\r\n this._removeUsersRequest.setQuery(\"org\", this._org);\r\n this._removeUsersRequestFragmenter.rawRequestBody = selectedUsers;\r\n this._removeUsersRequestFragmenter.maxIndex = Math.ceil(selectedUsers.length / MAX_USER_REMOVAL_PER_REQUEST);\r\n this._removeUsersRequestFragmenter.start();\r\n }\r\n\r\n /**\r\n * Dispatch request to add users. Triggers AddUsersSuccess or AddUsersError events.\r\n */\r\n public dispatchAddUsers(requestBody: MultipleUserSubscriptionRequestBatch): string | undefined {\r\n if (this._addUsersRequestFragmenter.isRunning) \r\n return \"Unable to add users, another add user process is running.\";\r\n\r\n this.prepareSubscriptionRequestFragmenter(this._addUsersRequestFragmenter, this._addUsersRequest, requestBody);\r\n this._addUsersRequestFragmenter.start();\r\n }\r\n\r\n /**\r\n * Dispatch request to assign subscriptions. Triggers AssignSubscriptionsSuccess or AssignSubscriptionsError event.\r\n */\r\n public dispatchAssignSubscriptions(requestBody: MultipleUserSubscriptionRequestBatch): string | undefined {\r\n if (this._assignSubscriptionRequestFragmenter.isRunning)\r\n return \"Unable to assign subscriptions, another assign subscriptions process is running.\";\r\n\r\n this.prepareSubscriptionRequestFragmenter(this._assignSubscriptionRequestFragmenter, this._assignSubscriptionRequest, requestBody);\r\n this._assignSubscriptionRequestFragmenter.start();\r\n }\r\n\r\n /**\r\n * Dispatch request to unassign subscriptions. Triggers UnassignSubscriptionsSuccess or UnassignSubscriptionsError event.\r\n */\r\n public dispatchUnassignSubscriptions(requestBody: MultipleUserSubscriptionRequestBatch): string | undefined {\r\n if (this._unassignSubscriptionRequestFragmenter.isRunning)\r\n return \"Unable to unassign subscriptions, another unassign subscriptions process is running.\";\r\n\r\n this.prepareSubscriptionRequestFragmenter(this._unassignSubscriptionRequestFragmenter, this._unassignSubscriptionRequest, requestBody);\r\n this._unassignSubscriptionRequestFragmenter.start();\r\n }\r\n \r\n public get isGetUsersInProgress(): boolean {\r\n return this._getUsersRequest.isLoading || this._getUserByEmailRequest.isLoading;\r\n }\r\n\r\n public get isRemoveUsersInProgress(): boolean {\r\n return this._removeUsersRequestFragmenter.isRunning;\r\n }\r\n\r\n public get isAddUsersInProgress(): boolean {\r\n return this._addUsersRequestFragmenter.isRunning;\r\n }\r\n\r\n public get isAssignSubscriptionsInProgress(): boolean {\r\n return this._assignSubscriptionRequestFragmenter.isRunning;\r\n }\r\n\r\n public get isUnassignSubscriptionsInProgress(): boolean {\r\n return this._unassignSubscriptionRequestFragmenter.isRunning;\r\n }\r\n\r\n public get subscriptionsGroupedByProduct(): SubscriptionGroup[] {\r\n return this._subscriptionsGroupedByProduct;\r\n }\r\n\r\n /**\r\n * We want to limit the number of subscription assignments in an api call to MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST. \r\n * This function helps batch the request items so the request can be made in several batches with a limit of MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST per batch.\r\n * @param allRequestItems The request items to be fragmented\r\n * @returns Fragmented request batches where each batch will be used for a request fragment.\r\n */\r\n private batchMultipleUserSubscriptionRequestItems(allRequestItems: MultipleUserSubscriptionRequestBatch): MultipleUserSubscriptionRequestBatch[] {\r\n let batches: MultipleUserSubscriptionRequestBatch[] = [];\r\n let currentBatch: MultipleUserSubscriptionRequestBatch = [];\r\n allRequestItems.forEach(requestItem => {\r\n let currentBatchSubCount: number = 0; \r\n //If the current batch sub count and the new request item exceed the subscription limit we have to partition\r\n if(this.ExceedsMaxSubscriptionCount(currentBatchSubCount, requestItem.fnoActivationIds.length))\r\n {\r\n //We determine how we want to split the subscriptions of the requestItem based on the size of the current batch\r\n let subSplit: number = 0;\r\n if(currentBatch.length == 0){\r\n subSplit = MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST;\r\n }\r\n else{\r\n subSplit = MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST - Number(currentBatchSubCount);\r\n if(subSplit > requestItem.fnoActivationIds.length){\r\n subSplit = Number(requestItem.fnoActivationIds.length);\r\n }\r\n }\r\n\r\n //We push the new request items into the current batch\r\n let requestItemsToPush = new MultipleUserSubscriptionRequestItem();\r\n requestItemsToPush.userEmail = requestItem.userEmail;\r\n requestItemsToPush.fnoActivationIds = requestItem.fnoActivationIds.slice(0, subSplit);\r\n currentBatch.push(requestItemsToPush);\r\n\r\n batches.push(currentBatch);\r\n currentBatch = [];\r\n currentBatchSubCount = 0;\r\n\r\n //After clearing the current batch, we check if there are any subscriptions from the request item we need to carry over\r\n let requestItemsToCarry = new MultipleUserSubscriptionRequestItem();\r\n requestItemsToCarry.userEmail = requestItem.userEmail;\r\n requestItemsToCarry.fnoActivationIds = requestItem.fnoActivationIds.slice(subSplit);\r\n\r\n //If carry over request items exceed the max we need to split them before they are added to current batch\r\n if(requestItemsToCarry.fnoActivationIds.length > MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST){\r\n let carryIndex: number = 0;\r\n while(Number(carryIndex) < requestItemsToCarry.fnoActivationIds.length){\r\n //Final partition that is under subscription limit can be passed to current batch\r\n if((Number(carryIndex) + MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST) > requestItemsToCarry.fnoActivationIds.length)\r\n {\r\n let _requestItemsToCarry = new MultipleUserSubscriptionRequestItem();\r\n _requestItemsToCarry.userEmail = requestItemsToCarry.userEmail;\r\n _requestItemsToCarry.fnoActivationIds = requestItemsToCarry.fnoActivationIds.slice(carryIndex);\r\n currentBatch.push(_requestItemsToCarry);\r\n currentBatchSubCount += _requestItemsToCarry.fnoActivationIds.length;\r\n break;\r\n }\r\n //requestItemsToCarry are pushed directly into batches if they are over the max limit (25)\r\n let _requestItemsToPush = new MultipleUserSubscriptionRequestItem();\r\n _requestItemsToPush.userEmail = requestItemsToCarry.userEmail;\r\n _requestItemsToPush.fnoActivationIds = requestItemsToCarry.fnoActivationIds.slice(carryIndex, carryIndex + MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST);\r\n batches.push([_requestItemsToPush]);\r\n carryIndex += MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST;\r\n }\r\n }\r\n else{\r\n //Otherwise we push carry over items to currentBatch\r\n currentBatch.push(requestItemsToCarry);\r\n currentBatchSubCount += requestItemsToCarry.fnoActivationIds.length; \r\n } \r\n }\r\n //If it does not exceed limit we can push directly into current batch\r\n else{\r\n currentBatch.push(requestItem);\r\n currentBatchSubCount += requestItem.fnoActivationIds.length;\r\n }\r\n });\r\n\r\n if (currentBatch.length > 0) {\r\n batches.push(currentBatch);\r\n }\r\n return batches;\r\n }\r\n\r\n private ExceedsMaxSubscriptionCount(currentCount: number, overhead: number): boolean {\r\n return currentCount + overhead > MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST;\r\n }\r\n\r\n /**\r\n * \r\n * @param results The add users request responses got from successful fragments\r\n * @returns \r\n */\r\n private mergeAddUsersResults(results: AddUsersResult[]): AddUsersResult {\r\n let mergedResult = new AddUsersResult();\r\n results.forEach(response => {\r\n mergedResult.didNotCreate.alreadyExists = response?.didNotCreate.alreadyExists == undefined ? new Map() : response?.didNotCreate?.alreadyExists;\r\n mergedResult.didNotCreate.failed = response?.didNotCreate.failed == undefined ? new Map() : response?.didNotCreate?.failed;;\r\n mergedResult.failedAssignment.push(...response?.failedAssignment);\r\n mergedResult.fullySuccessful.push(...response?.fullySuccessful);\r\n });\r\n return mergedResult;\r\n }\r\n\r\n private getSelectedUsersEmails(index: number, size: number, users: User[]): string[] {\r\n let start = index * size;\r\n\r\n return users.slice(start, start + size).map(u => u.email);\r\n }\r\n\r\n private prepareSubscriptionRequestFragmenter(fragmenter: EnterpriseHttpRequestFragmenter, request: HttpRequest, requestBody: MultipleUserSubscriptionRequestBatch){\r\n fragmenter.resetFragmenter();\r\n request.setQuery(\"org\", this._org);\r\n\r\n // Fragment the request body on dispatching the action and store it for when a request fragment starts\r\n let requestBatches = this.batchMultipleUserSubscriptionRequestItems(requestBody);\r\n if (requestBatches.length == 0) \r\n return \"Unable to add users, failed to batch requestBody.\";\r\n\r\n fragmenter.rawRequestBody = requestBatches;\r\n fragmenter.maxIndex = requestBatches.length;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpRequest } from \"@Shared/utils/httpRequest\";\r\nimport { HttpRequestFragmenter } from \"@Shared/utils/httpRequestFragmenter\";\r\nimport { LiteEvent } from \"@Shared/utils/liteEvent\";\r\n\r\nexport default class EnterpriseHttpRequestFragmenter extends HttpRequestFragmenter {\r\n public rawRequestBody: any = null;\r\n /**\r\n * The response objects of all the successuful requests.\r\n */\r\n public successRequestResponseObjs: any[] = [];\r\n public onStartFragment: LiteEvent = new LiteEvent();\r\n public onSuccessFragment: LiteEvent = new LiteEvent();\r\n public onErrorFragment: LiteEvent = new LiteEvent();\r\n public onCompleteFragment: LiteEvent = new LiteEvent();\r\n public onStart: LiteEvent = new LiteEvent();\r\n public onStop: LiteEvent = new LiteEvent();\r\n\r\n constructor(request: HttpRequest) {\r\n super(request);\r\n this.onSuccessFragment.on(hf => {\r\n if (hf.request.responseObj)\r\n hf.successRequestResponseObjs.push(hf.request.responseObj);\r\n });\r\n }\r\n\r\n public resetFragmenter(): void {\r\n this.reset();\r\n this.rawRequestBody = null;\r\n this.successRequestResponseObjs = [];\r\n }\r\n}","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input } from '@angular/core';\r\nimport { RequestPresenterComponent } from '@Shared/components/requestPresenter.component';\r\n\r\n@Component({\r\n selector: 'extended-request-presenter',\r\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n`\r\n})\r\nexport class ExtendedRequestPresenterComponent extends RequestPresenterComponent {\r\n @Input() replacementErrorMessage?: string = undefined;\r\n\r\n public getErrorMessage(): string {\r\n return this.replacementErrorMessage ? this.replacementErrorMessage : this.request.errorMessage;\r\n }\r\n}","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { HttpRequestFragmenter } from \"@Shared/utils/httpRequestFragmenter\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\"\r\nimport { LiteEvent } from \"@Shared/utils/liteEvent\";\r\n\r\nexport interface Invitation {\r\n id:string;\r\n subscriptions:string[];\r\n userEmail:string;\r\n status:string;\r\n}\r\n\r\nexport class InvitationCollection {\r\n public getInvitationsRequest: HttpRequest;\r\n public getInvitationsRequestFragmenter:HttpRequestFragmenter;\r\n\r\n private _org:string | null;\r\n private _invitations:Invitation[] = [];\r\n\r\n public onStart:LiteEvent;\r\n public onComplete:LiteEvent;\r\n\r\n public constructor(private httpService:MsalHttpRequestService) {\r\n this.getInvitationsRequest = this.httpService.getRequest(HttpRequestType.GET, \"userenterprise/invitations\");\r\n\r\n this.getInvitationsRequestFragmenter = new HttpRequestFragmenter(this.getInvitationsRequest);\r\n\r\n this.getInvitationsRequestFragmenter.onStart.on(frag => {\r\n let req = frag.request;\r\n req.query.org = this._org;\r\n req.query.page = 1;\r\n req.query.pageSize = 50;\r\n\r\n this._invitations = [];\r\n\r\n this.onStart.trigger(null);\r\n });\r\n\r\n this.getInvitationsRequestFragmenter.onSuccessFragment.on(frag => {\r\n let req = frag.request;\r\n req.query.page++;\r\n\r\n let collection = req.responseObj.collection;\r\n\r\n for (let item of collection) {\r\n this._invitations.push(item);\r\n }\r\n\r\n if (this._invitations.length >= req.responseObj.count) {\r\n this.getInvitationsRequestFragmenter.stop();\r\n }\r\n });\r\n\r\n this.getInvitationsRequestFragmenter.onStop.on(frag => {\r\n this.onComplete.trigger(this._invitations);\r\n });\r\n\r\n this.onComplete = new LiteEvent();\r\n this.onStart = new LiteEvent();\r\n }\r\n\r\n public setOrg(org:string | null) : void {\r\n this._org = org;\r\n this.refresh();\r\n }\r\n\r\n public refresh() {\r\n this.getInvitationsRequestFragmenter.start();\r\n }\r\n\r\n public get isLoading():boolean {\r\n return this.getInvitationsRequest.isLoading;\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { ClientDatagridController } from \"@Shared/utils/clientDatagridController\";\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\";\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\n\r\n@Component({\r\n selector: 'invitations-enterprise',\r\n templateUrl: './invitations.component.html',\r\n})\r\nexport class InvitationsComponent implements OnInit {\r\n public invitationsDatagridController:ClientDatagridController;\r\n public selectedInvitations:any[] = [];\r\n public deleteInvitationsRequest:HttpRequest;\r\n public resendInvitationsRequest:HttpRequest;\r\n\r\n public isResendInvitationModalOpen = false;\r\n public resendInvitationMailModel = {\"ccEmail\" : \"\"};\r\n\r\n public constructor(private httpService:MsalHttpRequestService, public enterpriseService:EnterpriseService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.deleteInvitationsRequest = this.httpService.getRequest(HttpRequestType.POST, \"userenterprise/deleteInvitations\");\r\n this.resendInvitationsRequest = this.httpService.getRequest(HttpRequestType.POST, \"userenterprise/resendInvitations\");\r\n\r\n this.invitationsDatagridController = new ClientDatagridController(1, 10);\r\n\r\n this.resendInvitationsRequest.onStart.on(req => {\r\n req.query.org = this.enterpriseService.getOrganization();\r\n req.body.ccEmail = this.resendInvitationMailModel.ccEmail.split(',');\r\n req.body.invitationIds = this.getSelectedInvitationsIds();\r\n });\r\n\r\n this.resendInvitationsRequest.onSuccess.on(req => {\r\n this.enterpriseService.refreshInvitations();\r\n });\r\n\r\n this.deleteInvitationsRequest.onStart.on(req => {\r\n req.query.org = this.enterpriseService.getOrganization();\r\n req.body = this.getSelectedInvitationsIds();\r\n });\r\n\r\n this.deleteInvitationsRequest.onSuccess.on(req => {\r\n for (let invitation of this.selectedInvitations) {\r\n for (let subscription of invitation.subscriptions) {\r\n this.enterpriseService.clientRemoveInvitation(subscription);\r\n }\r\n }\r\n\r\n this.enterpriseService.refreshInvitations();\r\n });\r\n\r\n this.enterpriseService.invitationCollection.onStart.on(_ => {\r\n this.invitationsDatagridController.setEntireCollection(null);\r\n });\r\n\r\n this.enterpriseService.invitationCollection.onComplete.on(invitations => {\r\n this.invitationsDatagridController.setEntireCollection(invitations);\r\n this.selectedInvitations = [];\r\n });\r\n }\r\n\r\n private getSelectedInvitationsIds():string[] {\r\n let invitationIds:string[] = [];\r\n this.selectedInvitations.forEach(invitation => {\r\n invitationIds.push(invitation.id);\r\n });\r\n return invitationIds;\r\n }\r\n}\r\n","
\r\n
\r\n Invitations\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n No pending invitations\r\n\r\n Email\r\n Subscriptions\r\n Status\r\n\r\n \r\n {{invitation.userEmail}}\r\n \r\n \r\n \r\n \r\n Pending\r\n Declined\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n

Resend Invitation

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Are you sure you want to resend {this.selectedInvitations.length, plural, =1 {1 invitation} other\r\n {{{this.selectedInvitations.length}} invitationss}}?\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\n\r\n@Component({\r\n selector: \"product-count-cell\",\r\n template: `\r\n \r\n
\r\n {{getSubscriptionsCount()}}\r\n
\r\n
\r\n {{getUserFriendlySubscriptionsList()}}\r\n
\r\n \r\n \r\n {{getUserFriendlySubscriptionsList()}}\r\n \r\n \r\n
\r\n `\r\n})\r\nexport class ProductCountCell {\r\n @Input() public userEmail: string;\r\n @Input() public tablePositionIndex: number;\r\n @Input() public tableTotalRowCount: number;\r\n\r\n public readonly minimum: number = 4;\r\n\r\n public constructor(public enterpriseService: EnterpriseService) {\r\n\r\n }\r\n\r\n public getTooltipPosition(): string {\r\n return this.tablePositionIndex < this.getSubscriptionsCount() ? 'bottom-left' : 'top-left';\r\n }\r\n\r\n public getUserFriendlySubscriptionsList(): string {\r\n let groupedSubscriptions = this.enterpriseService.getGroupedSubscriptionsForUser(this.userEmail);\r\n if (groupedSubscriptions.length == 0)\r\n return \"This user does not have any active subscriptions.\";\r\n\r\n return groupedSubscriptions.map(subGroup => {\r\n return subGroup.key.name + (subGroup.subscriptions.length > 1 ? `(${subGroup.subscriptions.length}x)` : \"\");\r\n }).join(', ');\r\n }\r\n\r\n public getSubscriptionsCount(): number {\r\n return this.enterpriseService.getSubscriptionsForUser(this.userEmail).length;\r\n }\r\n\r\n public shouldShowSubscriptionsCount(): boolean {\r\n return (this.tableTotalRowCount >= this.minimum) && (this.getSubscriptionsCount() != 1);\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nexport class Subscription {\r\n userEmail: string;\r\n startDate: string;\r\n validityDate: string;\r\n tecsDate: string;\r\n renewalPeriod: string;\r\n productName: string;\r\n partNumber: string;\r\n productCategory: string;\r\n fnoActivationId: string;\r\n constructor (sub : Subscription) {\r\n this.userEmail = sub.userEmail;\r\n this.startDate = sub.startDate;\r\n this.validityDate = sub.validityDate;\r\n this.tecsDate = sub.tecsDate;\r\n this.renewalPeriod = sub.renewalPeriod;\r\n this.productName = sub.productName;\r\n this.partNumber = sub.partNumber;\r\n this.productCategory = sub.productCategory;\r\n this.fnoActivationId = sub.fnoActivationId;\r\n }\r\n}\r\n\r\n\r\nexport interface SubscriptionClassifier {\r\n\tmatchesWith(subscription: Subscription):boolean;\r\n}\r\n\r\nexport class NameAndDateClassifier implements SubscriptionClassifier {\r\n constructor(subscription: Subscription) {\r\n this.productName = subscription.productName;\r\n this.startDate = subscription.startDate;\r\n this.validityDate = subscription.validityDate;\r\n this.tecsDate = subscription.tecsDate;\r\n }\r\n\r\n matchesWith(subscription: Subscription): boolean {\r\n return this.productName === subscription.productName && \r\n this.startDate === subscription.startDate && \r\n this.validityDate === subscription.validityDate && \r\n this.tecsDate === subscription.tecsDate;\r\n }\r\n\r\n productName: string;\r\n startDate: string;\r\n validityDate: string;\r\n tecsDate: string;\r\n}\r\n\r\nexport class ProductClassifier implements SubscriptionClassifier {\r\n constructor(subscription: Subscription) {\r\n this.name = subscription.productName;\r\n this.partNumber = subscription.partNumber;\r\n }\r\n\r\n matchesWith(subscription: Subscription): boolean {\r\n return this.partNumber === subscription.partNumber;\r\n }\r\n\r\n name: string;\r\n partNumber: string;\r\n}\r\n\r\nexport class SubscriptionGroup{\r\n constructor(key: Key) {\r\n this.key = key;\r\n }\r\n\r\n key: Key;\r\n\r\n subscriptions: Subscription[] = [];\r\n}\r\n\r\nexport class SubscriptionGroupUtils {\r\n static groupBy(subscriptions: Subscription[], getClassifer: {(subscription: Subscription): Key}): SubscriptionGroup[] {\r\n let groupedSubscriptions: SubscriptionGroup[] = [];\r\n for (let subscription of subscriptions) {\r\n let group = groupedSubscriptions.find(s => s.key.matchesWith(subscription));\r\n if (!group) {\r\n group = new SubscriptionGroup(getClassifer(subscription));\r\n groupedSubscriptions.push(group);\r\n }\r\n group.subscriptions.push(subscription);\r\n }\r\n return groupedSubscriptions;\r\n }\r\n}\r\n\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpRequest, HttpRequestType } from \"@Shared/utils/httpRequest\";\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\"\r\nimport { LiteEvent } from \"@Shared/utils/liteEvent\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Subscription } from \"./subscription\";\r\n\r\nexport class SubscriptionCollection {\r\n // The request to get subscriptions is fragmented to parts. This events indicate all subscriptions have been fetched\r\n public onComplete:LiteEvent;\r\n\r\n private _getSubscriptionsRequest: HttpRequest;\r\n private _getSubscriptionsTotalCountRequest:HttpRequest;\r\n\r\n private _org:string | null = null;\r\n private _pageCount:number | null = null;\r\n private _pages:Subscription[][] = [];\r\n // is subscription fetch completed\r\n private _isCompleted:boolean = false;\r\n // is the cached subscription updated or modified by web client. If true, user will have the option to refresh the subscriptions\r\n private _stale = true;\r\n\r\n // Data this collection is storing\r\n private _subscriptions:Subscription[] = [];\r\n\r\n public constructor(private httpService:MsalHttpRequestService) {\r\n this._getSubscriptionsRequest = this.httpService.getRequest(HttpRequestType.GET, \"userenterprise/subscriptions\");\r\n this._getSubscriptionsTotalCountRequest = this.httpService.getRequest(HttpRequestType.GET, \"userenterprise/subscriptionsCount\");\r\n\r\n this._getSubscriptionsRequest.query.pageSize = 50;\r\n this._getSubscriptionsRequest.onStart.on(req => {\r\n this.checkOrgNotNull();\r\n req.query.org = this._org;\r\n req.query.page++; // start at 1 and initialized at 0\r\n });\r\n\r\n this._getSubscriptionsRequest.onSuccess.on(req => {\r\n var responseObj = req.responseObj;\r\n\r\n if (responseObj.page != req.query.page) {\r\n console.warn(\"Subscriptions pages doesn't correspond\");\r\n this.refresh();\r\n return;\r\n }\r\n\r\n var subscriptions = responseObj.subscriptions;\r\n this._pages.push(subscriptions);\r\n if (this._pageCount != null && req.query.page > this._pageCount) {\r\n this.onAllSubscriptionsPagesRetrieved();\r\n } else {\r\n this._getSubscriptionsRequest.send();\r\n }\r\n });\r\n\r\n this._getSubscriptionsTotalCountRequest.onStart.on(req => {\r\n this.checkOrgNotNull();\r\n req.query.org = this._org;\r\n this._pageCount = null;\r\n });\r\n this._getSubscriptionsTotalCountRequest.onSuccess.on(req => {\r\n let count = req.getReponseObj();\r\n this._pageCount = Math.ceil(count / this._getSubscriptionsRequest.query.pageSize);\r\n });\r\n\r\n this.onComplete = new LiteEvent();\r\n }\r\n\r\n private checkOrgNotNull() : void {\r\n if (this._org == null) {\r\n throw new Error(\"Org is null\");\r\n }\r\n }\r\n\r\n private onAllSubscriptionsPagesRetrieved():void {\r\n this._subscriptions = [];\r\n for (let page of this._pages) {\r\n for (let subscription of page) {\r\n this._subscriptions.push(subscription);\r\n }\r\n }\r\n this._isCompleted = true;\r\n this._stale = false;\r\n\r\n this.onComplete.trigger(this._subscriptions);\r\n }\r\n\r\n public refresh() : void {\r\n // We need to paginate cause fno request aren't responsive enough.\r\n this._getSubscriptionsRequest.query.page = 0;\r\n this._isCompleted = false;\r\n this._stale = true;\r\n this._pages = [];\r\n\r\n this._getSubscriptionsTotalCountRequest.send();\r\n this._getSubscriptionsRequest.send();\r\n }\r\n\r\n public getProgression():number {\r\n let startProg = 0.05; // don't want to start at 0 to see something start\r\n if (this._pageCount == null || this._pageCount == 0) {\r\n return startProg;\r\n }\r\n return startProg + (((this._getSubscriptionsRequest.query.page - 1) / this._pageCount) * (1-startProg));\r\n }\r\n\r\n public get isCompleted() : boolean {\r\n return this._isCompleted;\r\n }\r\n\r\n public get isLoading() : boolean {\r\n return this._getSubscriptionsRequest.isLoading;\r\n }\r\n\r\n public get subscriptions(): Subscription[] {\r\n return this._subscriptions;\r\n }\r\n\r\n public get isStale(): boolean {\r\n return this._stale;\r\n }\r\n\r\n public setOrg(org:string | null) : void {\r\n this._org = org;\r\n this.refresh();\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\nimport { ClientDatagridController } from '@Shared/utils/clientDatagridController'\r\nimport { ProductClassifier, SubscriptionGroup } from \"./subscription\";\r\n@Component({\r\n selector: 'subscriptions-summary',\r\n templateUrl: './subscriptionsSummary.component.html',\r\n})\r\nexport class SubscriptionsSummaryComponent implements OnInit {\r\n public subscriptionDatagridController: ClientDatagridController;\r\n\r\n public constructor(public enterpriseService:EnterpriseService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscriptionDatagridController = new ClientDatagridController(1,5);\r\n this.subscriptionDatagridController.setSort({sortBy: 'key.name', isReversed: false})\r\n this.enterpriseService.onSubscriptionsUpdate.on(_ => {\r\n let allSubscriptions = this.enterpriseService.subscriptionsGroupedByProduct;\r\n allSubscriptions.sort((a, b) => a.key.name.localeCompare(b.key.name));\r\n this.subscriptionDatagridController.setEntireCollection(allSubscriptions);\r\n });\r\n }\r\n\r\n getUserFriendlySubscriptionUsage(subGroup: SubscriptionGroup): string {\r\n return `${subGroup.subscriptions.filter(s => s.userEmail != \"\").length}/${subGroup.subscriptions.length}`;\r\n }\r\n}\r\n","\r\n

Please wait. Refreshing subscriptions, retrieving data from licensing service.

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Company Subscriptions\r\n\r\n \r\n \r\n \r\n \r\n \r\n Changes have been made. Refresh to retrieve current data from licensing service.\r\n \r\n \r\n
\r\n
\r\n \r\n Product\r\n Subsciption Used\r\n\r\n \r\n {{subGroup.key.name}}\r\n {{getUserFriendlySubscriptionUsage(subGroup)}}\r\n \r\n Your company has no active subscriptions.\r\n \r\n \r\n \r\n\r\n \r\n {{subGroup.key.name}} Details\r\n \r\n \r\n\r\n Start Date\r\n Expiration Date\r\n Tecs Date\r\n Assignee\r\n\r\n \r\n {{subscription.startDate.substring(0,10)}}\r\n {{subscription.validityDate.substring(0,10)}}\r\n {{subscription.tecsDate.substring(0,10)}}\r\n {{subscription.userEmail ? subscription.userEmail : \"Not Assigned\"}}\r\n \r\n\r\n \r\n \r\n \r\n {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} of\r\n {{pagination.totalItems}}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nexport class User {\r\n email: string;\r\n fnoId: string;\r\n givenName: string;\r\n surname: string;\r\n}\r\n\r\nexport class FailedUserLookup {\r\n email: string;\r\n org: string;\r\n errorMessage: string;\r\n errorStatus: number;\r\n}","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { OnInit, Component, Input } from '@angular/core';\r\nimport { MsalHttpRequestService } from '@Msal/services/msalHttpRequest.service'\r\nimport { StringUtils } from '@Shared/utils/stringUtils';\r\nimport { EnterpriseService, GetUsersResponseBody, MultipleUserSubscriptionRequestItem} from './enterprise.service';\r\nimport { EnterpriseComponent } from './enterprise.component';\r\nimport { AccountService, UserAccountDetails } from 'app/Account/account.service';\r\nimport { SubscriptionGroupTableRow } from './SubscriptionGroupTable.component';\r\nimport { ProductClassifier } from './subscription';\r\nimport { FailedUserLookup, User } from './user.model';\r\nimport UsersDatagridController from './usersDatagridController';\r\n\r\n@Component({\r\n selector: 'users-enterprise',\r\n templateUrl: './users.component.html',\r\n styleUrls: ['./users.component.css']\r\n})\r\nexport class UsersComponent implements OnInit {\r\n @Input() enterpriseComponent: EnterpriseComponent;\r\n\r\n public MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST: number = 25;\r\n public users: User[] = [];\r\n public selectedUsers: User[] = [];\r\n public userErrorMessage: string = \"\";\r\n public removeUsersErrorMessage: string = \"\";\r\n public assignSubscriptionErrorMessage: string = \"\";\r\n public unassignSubscriptionErrorMessage: string = \"\";\r\n\r\n public usersDatagridController: UsersDatagridController;\r\n\r\n public isUserLookup: boolean;\r\n\r\n public userByEmailSearch: string = \"\";\r\n\r\n public unassignProductName = '';\r\n\r\n public subGroupRows: SubscriptionGroupTableRow[] = [];\r\n\r\n private _isAssignModalOpen = false;\r\n private _isUnassignModalOpen = false;\r\n private _isRemoveUserModalOpen = false;\r\n\r\n public constructor(\r\n public enterpriseService: EnterpriseService,\r\n public accountService: AccountService\r\n ) {\r\n enterpriseService.onOrganizationChange.on(orgName => this.handleOrganizationChange());\r\n enterpriseService.GetUserSuccessEvent.on(this.handleGetUsersSuccess.bind(this));\r\n enterpriseService.GetUsersErrorEvent.on(this.handleGetUsersError.bind(this));\r\n enterpriseService.GetUserByEmailSuccessEvent.on(this.handleGetUserByEmailSuccess.bind(this));\r\n enterpriseService.GetUserByEmailErrorEvent.on(this.handleGetUserByEmailError.bind(this));\r\n enterpriseService.RemoveUsersSuccessEvent.on(this.handleRemoveUsersSuccess.bind(this));\r\n enterpriseService.RemoveUsersErrorEvent.on(this.handleRemoveUsersError.bind(this));\r\n enterpriseService.AssignSubscriptionsSuccessEvent.on(this.handleAssignSubscriptionsSuccess.bind(this));\r\n enterpriseService.AssignSubscriptionsErrorEvent.on(this.handleAssignSubscriptionsError.bind(this));\r\n enterpriseService.UnassignSubscriptionsSuccessEvent.on(this.handleUnassignSubscriptionsSuccess.bind(this));\r\n enterpriseService.UnassignSubscriptionsErrorEvent.on(this.handleUnassignSubscriptionsError.bind(this));\r\n }\r\n\r\n ngOnInit(): void {\r\n this.usersDatagridController = new UsersDatagridController(this.enterpriseService);\r\n\r\n // Would be faster if we sent ids here. We can't because we don't know activations ids if we didn't refresh after an assign.\r\n\r\n this.enterpriseService.onSubscriptionsUpdate.on(_ => {\r\n this.subGroupRows = this.enterpriseService.getAvailableSubscriptionsGrouped().map(subGroup => new SubscriptionGroupTableRow(subGroup));\r\n });\r\n\r\n this.isUserLookup = false;\r\n this.usersDatagridController.reset();\r\n }\r\n\r\n public getUnassignAvailableProducts(): ProductClassifier[] {\r\n return this.enterpriseService.subscriptionsGroupedByProduct.filter(\r\n // Select all products where every selected user own at least one subscription\r\n subGroup => this.selectedUsers.every(u => subGroup.subscriptions.some(s => s.userEmail == u.email))\r\n ).map(subGroup => subGroup.key);\r\n }\r\n\r\n public assignProductIsValid(): boolean {\r\n for (let subGroupRow of this.subGroupRows) {\r\n if (subGroupRow.numberSelected != 0)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public unassignProductIsValid(): boolean {\r\n return !StringUtils.IsNullOrEmpty(this.unassignProductName);\r\n }\r\n\r\n public openAssignModal() {\r\n this.isAssignModalOpen = true;\r\n }\r\n\r\n public onSubmitAssign() {\r\n this.enterpriseService.dispatchAssignSubscriptions(this.generateAssignRequestBody(this.selectedUsers, this.subGroupRows));\r\n }\r\n\r\n public onSubmitUnassign() {\r\n this.enterpriseService.dispatchUnassignSubscriptions(this.generateUnassignRequestBody(this.selectedUsers, this.unassignProductName));\r\n }\r\n\r\n public onSubmitRemoveUser() {\r\n this.enterpriseService.dispatchRemoveUsers(this.selectedUsers);\r\n }\r\n\r\n public handleSubmitSearchByUserEmail() {\r\n this.enterpriseService.dispatchGetUserByEmail(this.userByEmailSearch);\r\n }\r\n\r\n public handleOrganizationChange() {\r\n this.isUserLookup = false;\r\n this.usersDatagridController.reset();\r\n }\r\n\r\n public handleSwitchUserLookup() {\r\n this.users = [];\r\n this.selectedUsers = [];\r\n this.isUserLookup = !this.isUserLookup;\r\n if (!this.isUserLookup) {\r\n this.usersDatagridController.reset();\r\n }\r\n }\r\n\r\n public handleAddUserModalRefresh() {\r\n this.isUserLookup = false;\r\n this.usersDatagridController.reset();\r\n }\r\n\r\n // no event on OnOpen or OnClose...\r\n public get isAssignModalOpen(): boolean {\r\n return this._isAssignModalOpen;\r\n }\r\n\r\n public set isAssignModalOpen(value: boolean) {\r\n this._isAssignModalOpen = value;\r\n this.subGroupRows.forEach(subGroupRow => subGroupRow.resetSelection());\r\n if(!this._isAssignModalOpen) this.handleAssignSubscriptionsError([]);\r\n }\r\n\r\n public get isUnassignModalOpen(): boolean {\r\n return this._isUnassignModalOpen;\r\n }\r\n\r\n public set isUnassignModalOpen(value: boolean) {\r\n this._isUnassignModalOpen = value;\r\n if(!this._isUnassignModalOpen) this.handleUnassignSubscriptionsError([]);\r\n }\r\n\r\n public get isRemoveUserModalOpen(): boolean {\r\n return this._isRemoveUserModalOpen;\r\n }\r\n\r\n public set isRemoveUserModalOpen(value: boolean) {\r\n this._isRemoveUserModalOpen = value;\r\n if(!this._isRemoveUserModalOpen) this.handleRemoveUsersError([]);\r\n }\r\n\r\n public get isCurrentUserSelected(): boolean {\r\n return this.selectedUsers.some(user => user.email == this.currentUser.mail)\r\n }\r\n\r\n public get currentUser(): UserAccountDetails {\r\n return this.accountService.signedInUserDetails;\r\n }\r\n\r\n public get isUsersLoading(): boolean {\r\n return this.enterpriseService.isGetUsersInProgress;\r\n }\r\n\r\n public get isRemoveUserInProgress(): boolean {\r\n return this.enterpriseService.isRemoveUsersInProgress;\r\n }\r\n\r\n private handleGetUsersSuccess(response: GetUsersResponseBody) {\r\n this.users = response.users;\r\n this.selectedUsers = [];\r\n this.userErrorMessage = \"\";\r\n }\r\n\r\n private handleGetUsersError(errorMessage: string) {\r\n this.userErrorMessage = errorMessage;\r\n }\r\n\r\n private handleGetUserByEmailSuccess(user: User) {\r\n this.users = [user];\r\n this.selectedUsers = [user];\r\n this.userErrorMessage = \"\";\r\n }\r\n\r\n private handleGetUserByEmailError(errorResponse: FailedUserLookup) {\r\n if (errorResponse.errorStatus === 500)\r\n this.userErrorMessage = `${errorResponse.email} does not exist for the company: ${errorResponse.org}`; // this where the error handling should be done\r\n else if (errorResponse.errorStatus === 404)\r\n this.userErrorMessage = `Unable to find user ${errorResponse.email}`;\r\n else\r\n this.userErrorMessage = `Something went wrong when trying to find ${errorResponse.email}`;\r\n }\r\n\r\n private handleRemoveUsersSuccess() {\r\n // Refresh users\r\n this.usersDatagridController.reset();\r\n\r\n // Update UI states\r\n this._isRemoveUserModalOpen = false;\r\n this.selectedUsers = [];\r\n this.isUserLookup = false;\r\n this.handleRemoveUsersError([]);\r\n }\r\n\r\n private handleRemoveUsersError(errorMessage: string[]) {\r\n this.removeUsersErrorMessage = errorMessage.join(', ');\r\n }\r\n\r\n private handleAssignSubscriptionsSuccess() {\r\n this.isAssignModalOpen = false;\r\n this.selectedUsers = [];\r\n this.handleUnassignSubscriptionsError([]);\r\n }\r\n\r\n private handleAssignSubscriptionsError(errorMessage: string[]) {\r\n this.assignSubscriptionErrorMessage = errorMessage.join(', ');\r\n }\r\n\r\n private handleUnassignSubscriptionsSuccess() {\r\n this.isUnassignModalOpen = false;\r\n this.unassignProductName = '';\r\n this.selectedUsers = [];\r\n this.handleAssignSubscriptionsError([]);\r\n this.enterpriseService.refreshSubscriptions();\r\n }\r\n\r\n private handleUnassignSubscriptionsError(errorMessage: string[]) {\r\n this.unassignSubscriptionErrorMessage = errorMessage.join(', ');\r\n }\r\n\r\n public generateAssignRequestBody(users: User[], subGroupRows: SubscriptionGroupTableRow[]): MultipleUserSubscriptionRequestItem[] {\r\n let assignRequestBody: MultipleUserSubscriptionRequestItem[] = users.map((user, index) => {\r\n // For each new user, create a request item for its creation.\r\n let assignRequestItem = new MultipleUserSubscriptionRequestItem();\r\n assignRequestItem.userEmail = user.email; \r\n assignRequestItem.fnoActivationIds = this.getAssignSubscriptionIdsForUser(index, subGroupRows);\r\n return assignRequestItem; \r\n });\r\n return assignRequestBody;\r\n }\r\n\r\n public getAssignSubscriptionIdsForUser(userIndex: number, subGroupRows: SubscriptionGroupTableRow[]): string[] {\r\n let fnoActivationIds: string[] = []\r\n subGroupRows.filter(row => row.anySelected()).forEach(row => {\r\n //If the amount of subscriptions is above the limit we use the pre-partioned value \r\n let subscriptionCount: number = 0;\r\n subscriptionCount = row.numberSelected; \r\n let productActivationIds = row.subGroup.subscriptions.map(subscription => subscription.fnoActivationId);\r\n let start: number = userIndex * subscriptionCount;\r\n let end: number = Number(start) + Number(subscriptionCount);\r\n let productActivationIdsForUser = productActivationIds.slice(start, end);\r\n fnoActivationIds.push(...productActivationIdsForUser);\r\n });\r\n return fnoActivationIds;\r\n }\r\n\r\n public generateUnassignRequestBody(users: User[], unassignProductName: string): MultipleUserSubscriptionRequestItem[]{\r\n let unAssignRequestBody: MultipleUserSubscriptionRequestItem[] = users.map(user => {\r\n // For each new user, create a request item for its creation.\r\n let unassignRequestItem = new MultipleUserSubscriptionRequestItem();\r\n unassignRequestItem.userEmail = user.email;\r\n unassignRequestItem.fnoActivationIds = this.getUnassignSubscriptionIdsForUser(unassignProductName, user);\r\n return unassignRequestItem;\r\n });\r\n return unAssignRequestBody;\r\n }\r\n\r\n public concatPartNumberAndNameOfProduct(partNumber:string, productName:string){\r\n return `${partNumber}@${productName}`;\r\n }\r\n\r\n private getUnassignSubscriptionIdsForUser(product: string, user: User): string[]{\r\n //Get subscriptions to return ids for\r\n var subs = this.enterpriseService.getSubscriptionsForUser(user.email)\r\n var subsToReturn = product == \"_ALL_PRODUCT_\" ? subs : subs.filter(x => this.concatPartNumberAndNameOfProduct(x.partNumber, x.productName) == product);\r\n return subsToReturn.map(x => x.fnoActivationId);\r\n }\r\n}\r\n","
\r\n
\r\n Users\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{isUserLookupError}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n First Name\r\n Last Name\r\n Email\r\n Subscriptions\r\n\r\n \r\n {{user.givenName}}\r\n {{user.surname}}\r\n {{user.email}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Subscriptions for User: {{user.givenName}} {{user.surname}} ({{user.email}})\r\n \r\n \r\n \r\n Subscription\r\n Start Date\r\n Expiration Date\r\n Tecs Date\r\n This user has no subscriptions assigned.\r\n \r\n {{subscription.productName}}\r\n {{subscription.startDate.substring(0,10)}}\r\n {{subscription.validityDate.substring(0,10)}}\r\n {{subscription.tecsDate.substring(0,10)}}\r\n \r\n \r\n \r\n \r\n {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} of\r\n {{pagination.totalItems}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n

\r\n Assign Subscription \r\n \r\n ({selectedUsers.length, plural, =1 {1 user} other {{{selectedUsers.length}} users}})\r\n \r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n

Unassign Subscription ({selectedUsers.length, plural, =1 {1\r\n user} other {{{selectedUsers.length}} users}})

\r\n
\r\n
\r\n \r\n \r\n
\r\n Which product do you want to unassign for the selected {selectedUsers.length, plural, =1 {user} other\r\n {users}}?\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n

\r\n Remove users from company\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n The following users will no longer have access to Ansys Cloud and Discovery subscriptions\r\n from {{enterpriseService.getOrganization()}}. All subscriptions will be unassigned and associated Ansys\r\n Cloud storage account data will be permanently deleted.\r\n
\r\n \r\n First Name\r\n Last Name\r\n Email\r\n Subscriptions\r\n \r\n {{user.givenName}}\r\n {{user.surname}}\r\n {{user.email}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Users listed above will not be removed from other Ansys services.\r\n \r\n
\r\n Details\r\n \r\n When a user is removed, they only lose access to subscriptions managed by this subscription\r\n list (Ansys Cloud Essentials, Ansys Cloud Storage, and/or Discovery products). Access to\r\n other portals, subscriptions, or Ansys applications that use Ansys ID SSO will not be\r\n affected. To remove users from other Ansys ID SSO-managed products, use the account\r\n management tools for those products. Please contact support@ansys.com with any questions.\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { DatagridController } from \"@Shared/utils/datagridController\"\r\nimport { EnterpriseService } from \"./enterprise.service\";\r\n\r\nexport default class UsersDatagridController extends DatagridController {\r\n private enterpriseService: EnterpriseService;\r\n\r\n constructor(enterpriseService: EnterpriseService) {\r\n super();\r\n this.enterpriseService = enterpriseService;\r\n enterpriseService.GetUserSuccessEvent.on(response => {\r\n this.totalCount = response.totalCount;\r\n })\r\n }\r\n\r\n /**\r\n * Called when page,sort or filter change.\r\n */\r\n public refresh(): void {\r\n this.enterpriseService.dispatchGetUsers(this.page, this.pageSize, true);\r\n }\r\n\r\n public reset(): void {\r\n this.page = 0;\r\n this.pageSize = 10;\r\n this.refresh();\r\n }\r\n\r\n public isLoading(): boolean {\r\n return this.enterpriseService.isGetUsersInProgress;\r\n }\r\n}","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpRequest, HttpRequestType } from '@Shared/utils/httpRequest';\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\"\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'helpComponent',\r\n templateUrl: './help.component.html'\r\n})\r\n\r\nexport class HelpComponent implements OnInit { \r\n public constructor(private httpService:MsalHttpRequestService) {\r\n }\r\n public ngOnInit(): void {\r\n }\r\n}\r\n","

Ansys Account Guide


\r\n\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { HttpRequest, HttpRequestType } from '@Shared/utils/httpRequest';\r\nimport { MsalHttpRequestService } from \"@Msal/services/msalHttpRequest.service\"\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'subscriptions',\r\n templateUrl: \"subscriptions.component.html\"\r\n})\r\nexport class SubscriptionsComponent implements OnInit {\r\n public subscriptionsRequest:HttpRequest;\r\n\r\n public subscriptions:any[] = [];\r\n public expiredSubscriptions:any[] = [];\r\n\r\n public constructor(private httpService:MsalHttpRequestService) { }\r\n\r\n public ngOnInit(): void {\r\n this.subscriptionsRequest = this.httpService.getRequest(HttpRequestType.GET, \"user/subscriptions\");\r\n\r\n this.subscriptionsRequest.onSuccess.on(req=> {\r\n for (let s of this.subscriptionsRequest.responseObj) {\r\n for (let i of [0,1]) {\r\n if (s.devices.length>i) {\r\n let r: HttpRequest = this.httpService.getRequest(HttpRequestType.GET, \"user/releaseActivation\");\r\n s.devices[i].releaseActivationRequest = r;\r\n r.query.activationId = s.id;\r\n r.query.deviceId = s.devices[i].deviceId;\r\n r.query.deviceType = s.devices[i].deviceType;\r\n r.onSuccess.on(rr=> {\r\n this.subscriptionsRequest.send();\r\n });\r\n }\r\n }\r\n s.isExpired = Date.now() > Date.parse(s.to);\r\n }\r\n\r\n this.subscriptions = this.subscriptionsRequest.responseObj.filter((s:any) => !s.isExpired);\r\n this.expiredSubscriptions = this.subscriptionsRequest.responseObj.filter((s:any) => s.isExpired);\r\n });\r\n\r\n this.subscriptionsRequest.send();\r\n \r\n }\r\n}\r\n","
\r\n\r\n\r\n \r\n \r\n \r\n You have no subscription assigned to your account\r\n \r\n\r\n
\r\n
0\">\r\n

Active

\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{subscription.product}}\r\n
\r\n
\r\n
    \r\n
  • Start date: {{subscription.from}}
  • \r\n\r\n \r\n
  • \r\n Expiration date: {{subscription.to}}\r\n
  • \r\n
    \r\n \r\n
  • Expiration date: {{subscription.to}}
  • \r\n
    \r\n\r\n
  • Tecs date: {{subscription.tecs}}
  • \r\n\r\n
  • Activation ID: {{subscription.id}}
  • \r\n\r\n
\r\n
\r\n
\r\n
Activations
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i; else unused\">\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
DeviceActivation
{{subscription.devices[i].deviceId}}\r\n \r\n \r\n \r\n \r\n \r\n Unused\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
0\">\r\n

Expired

\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{subscription.product}}\r\n
\r\n
\r\n
    \r\n
  • Start date: {{subscription.from}}
  • \r\n\r\n \r\n
  • \r\n Expiration date: {{subscription.to}}\r\n
  • \r\n
    \r\n \r\n
  • Expiration date: {{subscription.to}}
  • \r\n
    \r\n\r\n
  • Tecs date: {{subscription.tecs}}
  • \r\n\r\n
  • Activation ID: {{subscription.id}}
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { EnterpriseComponent } from './Enterprise/enterprise.component';\r\nimport { SubscriptionsComponent } from './Subscriptions/subscriptions.component';\r\nimport { Component, NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { AccountComponent } from './Account/account.component';\r\nimport { HelpComponent } from './Help/help.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/mysubscriptions', pathMatch: 'full' },\r\n { path: 'account', component: AccountComponent},\r\n { path: 'mysubscriptions', component: SubscriptionsComponent},\r\n { path: 'enterprise', component: EnterpriseComponent},\r\n { path: 'help', component: HelpComponent},\r\n];\r\n\r\n@NgModule({\r\n imports: [ RouterModule.forRoot(routes, {}) ],\r\n exports: [ RouterModule ]\r\n})\r\nexport class AppRoutingModule {}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { environment } from 'environments/environment';\r\nimport { MsalService } from '@Msal/services/msal.service';\r\nimport { MsalHttpRequestService } from '@Msal/services/msalHttpRequest.service';\r\nimport { Component, Inject, LOCALE_ID, OnDestroy, OnInit } from '@angular/core';\r\nimport { HttpRequest, HttpRequestType } from '@Shared/utils/httpRequest';\r\nimport { AuthService } from '@Authentication';\r\nimport { filter, first } from 'rxjs/operators';\r\nimport { Subscription } from '@rxjs';\r\nimport { LoggingService } from 'services/logging.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n private languageStorageName: string = \"language\";\r\n public supportedLanguages: Array = [\"en\", \"fr\", \"de\", \"it\", \"ja\", \"ko\", \"zh\"];\r\n public language: string;\r\n public isEnterpriseAdmin: boolean = false;\r\n public isACCUser: boolean = false;\r\n public isAdminRequest: HttpRequest;\r\n public redirectToECommerceRequest: HttpRequest;\r\n public welcomeForumUri: string;\r\n public ACCForumUri: string;\r\n public basicProfileUri: string;\r\n public subscriptionsRequest: HttpRequest;\r\n\r\n private tokenSubscription: Subscription;\r\n private isLoggingOut: boolean;\r\n\r\n public constructor(\r\n private msalService: MsalService,\r\n private auth: AuthService,\r\n private httpService: MsalHttpRequestService,\r\n private loggingService: LoggingService,\r\n @Inject(LOCALE_ID) protected localeId: string\r\n ) {\r\n this.language = localeId;\r\n if (this.language == \"\" || this.language == \"en-US\") {\r\n this.language = \"en\";\r\n }\r\n console.log(`localId ${this.language}`);\r\n\r\n let usualLanguage = sessionStorage.getItem(this.languageStorageName);\r\n if (usualLanguage != null) {\r\n if (usualLanguage != this.language) {\r\n console.log(`Usual language : ${usualLanguage}`);\r\n this.setLanguage(usualLanguage);\r\n }\r\n } else {\r\n let browserLanguage: string = navigator.language;\r\n for (let supportedLanguage of this.supportedLanguages) {\r\n if (browserLanguage.indexOf(supportedLanguage) >= 0) {\r\n console.log(`Browser language : ${this.language}`);\r\n this.setLanguage(supportedLanguage);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.isAdminRequest = this.httpService.getRequest(HttpRequestType.GET, \"UserEnterprise/AdminForOrgs\");\r\n\r\n this.isAdminRequest.onSuccess.on(h => {\r\n this.isEnterpriseAdmin = h.responseObj.orgs.length > 0;\r\n });\r\n\r\n this.isAdminRequest.onError.on(h => {\r\n this.isEnterpriseAdmin = false;\r\n });\r\n\r\n this.tokenSubscription = this.auth.token.subscribe({\r\n next: token => {\r\n if (token == null && !this.isLoggingOut) {\r\n this.login();\r\n }\r\n }\r\n });\r\n\r\n this.auth.token.pipe(\r\n filter(t => t != null),\r\n first()\r\n ).subscribe(() => this.isAdminRequest.send());\r\n\r\n this.redirectToECommerceRequest = this.httpService.getRequest(HttpRequestType.GET, \"user/ecommerceaccount\");\r\n this.redirectToECommerceRequest.onSuccess.on(h => {\r\n window.location.href = h.responseObj.myaccount;\r\n });\r\n this.subscriptionsRequest = this.httpService.getRequest(HttpRequestType.GET, \"user/subscriptions\");\r\n\r\n this.subscriptionsRequest.onSuccess.on(req => {\r\n if (req.responseObj === null && req.responseText !== null) {\r\n return;\r\n }\r\n\r\n for (let s of this.subscriptionsRequest.responseObj) {\r\n if (s.productCategory === 'cloud') {\r\n this.isACCUser = true;\r\n break;\r\n }\r\n }\r\n });\r\n\r\n this.subscriptionsRequest.send();\r\n\r\n this.welcomeForumUri = this.httpService.getUri(\"DiscoveryForum\");\r\n this.ACCForumUri = this.httpService.getUri(\"CloudComputeForum\");\r\n this.basicProfileUri = this.httpService.getUri(\"Account/BasicProfile\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.tokenSubscription.unsubscribe();\r\n }\r\n\r\n public get isConnected(): boolean {\r\n return this.msalService.isOnline;\r\n }\r\n\r\n public login() {\r\n this.msalService.login();\r\n }\r\n\r\n public logout() {\r\n this.isLoggingOut = true;\r\n this.msalService.logout();\r\n }\r\n\r\n public redirectToECommerce() {\r\n if (this.isConnected) {\r\n this.redirectToECommerceRequest.send();\r\n }\r\n }\r\n\r\n public setLanguage(language: string, save: boolean = false) {\r\n // we don't have localization support in local since we need to build multiple app for that.\r\n if (!environment.production) {\r\n return;\r\n }\r\n\r\n if (this.supportedLanguages.indexOf(language) == -1) {\r\n return;\r\n }\r\n\r\n if (save) {\r\n console.log(`${this.languageStorageName} save to ${language}`);\r\n sessionStorage.setItem(this.languageStorageName, language);\r\n }\r\n\r\n if (language == this.language) {\r\n return;\r\n }\r\n\r\n // get path\r\n let path: string = window.location.pathname;\r\n for (let supportedLanguage of this.supportedLanguages) {\r\n let prefix = `/${supportedLanguage}/`;\r\n if (path.startsWith(prefix)) {\r\n path = path.substr(prefix.length - 1);\r\n break;\r\n }\r\n }\r\n\r\n console.log(`redirect to language ${language}...with path ${path}`);\r\n setTimeout(function () {\r\n if (language == \"en\") {\r\n window.location.href = window.location.origin + path;\r\n } else {\r\n window.location.href = window.location.origin + \"/\" + language + path;\r\n }\r\n }, 100);\r\n }\r\n}\r\n","\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Manage Ansys\r\n Account\r\n \r\n Edit Profile\r\n Discovery Forum\r\n Ansys Cloud Forum\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n My Subscriptions\r\n \r\n \r\n \r\n Administration\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { SubscriptionsComponent } from './Subscriptions/subscriptions.component';\r\nimport { SharedModule } from '@Shared/Shared.module';\r\nimport { MsalModule } from '@Msal/msal.module';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ErrorHandler, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { FormsModule, EmailValidator } from '@angular/forms';\r\n\r\nimport { ClarityModule } from \"@clr/angular\";\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { AccountComponent } from './Account/account.component';\r\nimport { HelpComponent } from './Help/help.component';\r\nimport { AccountService } from './Account/account.service';\r\nimport { EnterpriseModule } from './Enterprise/enterprise.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { LoggingService } from 'services/logging.service';\r\nimport { ErrorHandlerService } from 'services/errors.service';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n AccountComponent,\r\n HelpComponent,\r\n SubscriptionsComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n ClarityModule,\r\n AppRoutingModule,\r\n SharedModule,\r\n MsalModule,\r\n EnterpriseModule,\r\n ReactiveFormsModule,\r\n ],\r\n providers: [\r\n AccountService,\r\n LoggingService,\r\n { provide: ErrorHandler, useClass: ErrorHandlerService }\r\n ],\r\n bootstrap: [AppComponent],\r\n schemas: [NO_ERRORS_SCHEMA] // to avoid errors with transclusion (https://scotch.io/tutorials/angular-2-transclusion-using-ng-content)\r\n})\r\nexport class AppModule { }\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { StringUtils } from \"@Shared/utils/stringUtils\";\r\n\r\n@Component({\r\n selector: \"csv-file-input\",\r\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `\r\n})\r\nexport class CsvFileInputComponent {\r\n @Input() public itemName: string;\r\n @Input() public fileInputLabel: string;\r\n @Input() public filter?: RegExp = undefined;\r\n @Input() public errorMessage: string = \"\";\r\n @Input() public columnIndexesToParse: number[] = [];\r\n\r\n @Output() public fileParsedEvent = new EventEmitter();\r\n\r\n public csvFileName: string | null = null;\r\n public itemCount: number;\r\n\r\n public onCsvFileChange(event: any) {\r\n if (event.target.files && event.target.files.length > 0) {\r\n let reader = new FileReader();\r\n let file = event.target.files[0];\r\n this.csvFileName = file.name;\r\n reader.onload = () => {\r\n let content: string = reader.result;\r\n let eventToEmit = new CSVFileParsedEvent();\r\n let csvItems = this.extractColumnEntriesFromCsvAndConvertToLowercase(content, this.columnIndexesToParse);\r\n if (this.filter) {\r\n csvItems.forEach(r => {\r\n if (this.filter?.test(r)) {\r\n eventToEmit.validItems.push(r);\r\n } else {\r\n eventToEmit.invalidItems.push(r);\r\n }\r\n })\r\n } else {\r\n eventToEmit.validItems = [...csvItems];\r\n }\r\n this.itemCount = eventToEmit.validItems.length;\r\n this.fileParsedEvent.emit(eventToEmit);\r\n }\r\n reader.readAsText(file);\r\n\r\n // we want to be able to select multipletimes the same files (to reload content).\r\n event.target.value = \"\";\r\n } else {\r\n this.csvFileName = null;\r\n }\r\n }\r\n\r\n private splitCsvIntoRows(fileContent: string): string[] {\r\n return fileContent.split(/\\n|\\r\\n/).filter(x => x);\r\n }\r\n\r\n // Solution adapted from https://stackoverflow.com/questions/8493195/how-can-i-parse-a-csv-string-with-javascript-which-contains-comma-in-data\r\n private getRawCSVItems(content: string): string[] {\r\n const re_valid = /^\\s*(?:'[^'\\\\]*(?:\\\\[\\S\\s][^'\\\\]*)*'|\"[^\"\\\\]*(?:\\\\[\\S\\s][^\"\\\\]*)*\"|[^,'\"\\s\\\\]*(?:\\s+[^,'\"\\s\\\\]+)*)\\s*(?:,\\s*(?:'[^'\\\\]*(?:\\\\[\\S\\s][^'\\\\]*)*'|\"[^\"\\\\]*(?:\\\\[\\S\\s][^\"\\\\]*)*\"|[^,'\"\\s\\\\]*(?:\\s+[^,'\"\\s\\\\]+)*)\\s*)*$/;\r\n const re_value = /(?!\\s*$)\\s*(?:'([^'\\\\]*(?:\\\\[\\S\\s][^'\\\\]*)*)'|\"([^\"\\\\]*(?:\\\\[\\S\\s][^\"\\\\]*)*)\"|([^,'\"\\s\\\\]*(?:[ \\t]+[^,'\"\\s\\\\]+)*))\\s*(?:,|$)/gm;\r\n\r\n let csvItems: string[] = [];\r\n if (!re_valid.test(content))\r\n return [];\r\n\r\n /** \r\n * re_value is a regular expression that will result in four kind of matches for a string\r\n * m0: match for empty string,\r\n * m1: match for single quoted csv item,\r\n * m2: match for double quoted csv item,\r\n * m3: match for not quoted csv item.\r\n */\r\n content.replace(re_value,\r\n (m0, m1, m2, m3) => {\r\n if (m1 !== undefined) {\r\n // Remove backslash from \\' in single quoted values.\r\n csvItems.push(m1.replace(/\\\\'/g, \"'\"));\r\n }\r\n else if (m2 !== undefined) {\r\n // Remove backslash from \\\" in double quoted values.\r\n csvItems.push(m2.replace(/\\\\\"/g, '\"'));\r\n }\r\n else if (m3 !== undefined) {\r\n csvItems.push(m3);\r\n }\r\n return '';\r\n });\r\n // Handle special case of empty last value.\r\n if (/,\\s*$/.test(content)) csvItems.push('');\r\n\r\n return csvItems;\r\n }\r\n\r\n private extractColumnEntriesFromCsvAndConvertToLowercase(fileContent: string, columnIndexesToParse: number[]): Set {\r\n // this method removes duplicate entries\r\n const rows = this.splitCsvIntoRows(fileContent);\r\n let result: Set = new Set();\r\n for (let row of rows) {\r\n const rawCsvItems = this.getRawCSVItems(row);\r\n for (let i of columnIndexesToParse) {\r\n const item = rawCsvItems[i].toLowerCase();\r\n result.add(item);\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport class CSVFileParsedEvent {\r\n validItems: string[] = [];\r\n invalidItems: string[] = [];\r\n}\r\n","export const environment = {\r\n production: true,\r\n envName: \"fromTFS\",\r\n clientID: \"f9586472-3ed0-470a-8bad-1bbe02377f63\",\r\n urlCloudApi: \"https://account.ansys.com/\",\r\n authority: \"https://login.microsoftonline.com/tfp/ANSYSAccount.onmicrosoft.com/B2C_1_AccountAdmin_sign_in_trafficmgr\",\r\n adminGroupId: \"b19f3cc2-2cd4-4b8f-bd36-a8ee6ec021cf\",\r\n oidc: \"https://accountregistration.ansys.com\",\r\n oidcClientId: \"portal\",\r\n appInsights: { instrumentationKey: \"799ab51a-9c2f-4e6f-8e80-e30b6acca9cb\" },\r\n};\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from '@environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n// Source: https://devblogs.microsoft.com/premier-developer/angular-how-to-add-application-insights-to-an-angular-spa/\r\n\r\nimport { ErrorHandler, Injectable } from \"@angular/core\";\r\nimport { LoggingService } from \"./logging.service\";\r\n\r\n@Injectable()\r\nexport class ErrorHandlerService extends ErrorHandler {\r\n constructor(private loggingService: LoggingService) {\r\n super();\r\n }\r\n\r\n handleError(error: Error) {\r\n this.loggingService.logException(error); // Manually log exception\r\n }\r\n}\r\n","//\r\n// Copyright (C) 2022 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.\r\n//\r\n\r\n// Source: https://devblogs.microsoft.com/premier-developer/angular-how-to-add-application-insights-to-an-angular-spa/\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from '@environments/environment';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\n\r\n@Injectable()\r\nexport class LoggingService {\r\n appInsights: ApplicationInsights;\r\n constructor() {\r\n if (environment.appInsights.instrumentationKey === \"\") return;\r\n \r\n this.appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: environment.appInsights.instrumentationKey,\r\n enableAutoRouteTracking: false // option to log all route changes\r\n }\r\n });\r\n this.appInsights.loadAppInsights();\r\n }\r\n\r\n logPageView(name?: string, url?: string) { // option to call manually\r\n if (environment.appInsights.instrumentationKey === \"\") return;\r\n \r\n this.appInsights.trackPageView({\r\n name: name,\r\n uri: url\r\n });\r\n }\r\n\r\n logEvent(name: string, properties?: { [key: string]: any }) {\r\n if (environment.appInsights.instrumentationKey === \"\") return;\r\n \r\n this.appInsights.trackEvent({ name: name}, properties);\r\n }\r\n\r\n logMetric(name: string, average: number, properties?: { [key: string]: any }) {\r\n if (environment.appInsights.instrumentationKey === \"\") return;\r\n \r\n this.appInsights.trackMetric({ name: name, average: average }, properties);\r\n }\r\n\r\n logException(exception: Error, severityLevel?: number) {\r\n if (environment.appInsights.instrumentationKey === \"\") return;\r\n \r\n this.appInsights.trackException({ exception: exception, severityLevel: severityLevel });\r\n }\r\n\r\n logTrace(message: string, properties?: { [key: string]: any }) {\r\n if (environment.appInsights.instrumentationKey === \"\") return;\r\n \r\n this.appInsights.trackTrace({ message: message}, properties);\r\n }\r\n}\r\n"],"names":["DOCUMENT","environment","UserManager","fromEventPattern","merge","publishReplay","refCount","map","mapTo","tap","filter","AuthService","constructor","document","router","authority","oidc","client_id","oidcClientId","redirect_uri","location","origin","post_logout_redirect_uri","silent_redirect_uri","response_type","response_mode","scope","automaticSilentRenew","settings","userLoaded","handler","mgr","events","addUserLoaded","removeUserLoaded","userUnloaded","addUserUnloaded","removeUserUnloaded","pipe","currentUser","getUser","loggedIn","onLoggedIn","_","onLoggedOut","user","token","access_token","login","signinRedirect","state","url","logout","signoutRedirect","factory","providedIn","CommonModule","HttpClientModule","MsalService","MsalHttpRequestService","MsalModule","imports","LiteEvent","MsalUser","auth","clientID","b2cScopes","tokenSubscription","subscribe","next","onTokenReceived","trigger","ngOnDestroy","unsubscribe","getToken","isOnline","HttpRequest","http","msalService","urlCloudApi","getUri","getRequest","typeRequest","uri","request","onStart","on","r","authorizationHeader","onError","httpError","status","error","localStorage","removeItem","FormsModule","ObjectViewComponent","LockerComponent","LoadingPresenterComponent","RequestFragmenterPresenterComponent","RequestPagePresenterComponent","UserFormComponent","SelectFilterComponent","DateFilterComponent","OneFieldSearchComponent","StatusComponent","KeyValuesPipe","FileSizePipe","UseKeyPipe","MutuallyExclusiveList","MutuallyExclusiveListBox","ExpandingInputList","AutoSizingTextInput","ComboBox","CustomModal","ClarityModule","AddressComponent","SharedModule","declarations","exports","EventEmitter","countries","i0","Address","verifyAddress","readonly","addressEnrichmentEnabled","isAddressLookupInProgress","get","street","data","possibleAddress","isAddressLookupCompleted","console","complete","useSelectedAddress","streetChange","emit","selectedAddress","cityChange","City","stateChange","State","postalChange","PostalCode","countryChange","Country","reset","useCustomAddress","useAddressEnrichment","selectors","inputs","city","postal","country","outputs","decls","vars","consts","template","ctx","StringUtils","ClarityFilter","filterContainer","setFilter","date","_dateStr","dateStr","IsNullOrEmpty","Date","triggerChange","value","accepts","toString","property","features","TemplateRef","contentQueries","enabled","getKeys","Object","keys","object","isNullOrEmpty","key","getValue","isObject","encapsulation","v","_value","valueChange","searchClicked","onClick","label","placeholder","loading","ngOnInit","fragmenter","Error","propertyChange","controller","onPageSizeChange","refresh","onNextPage","nextPage","onPreviousPage","previousPage","compact","$localize","RequestPresenterComponent","RequestPresenterComponentTags","RequestPresenterDirectives","_valueStr","valueStr","mapping","reverseGet","newValue","availableValues","TypeStatus","type","info","ngOnChanges","changes","typeStatusClass","UserModel","init","assign","isValid","IsNullOrWhiteSpace","email","givenName","surname","streetAddress","onUserNotFound","getUserRequest","req","query","userEmail","emailChecked","model","onSuccess","responseObj","userFound","found","isReadonly","checkUserEmail","send","_email","transform","bytes","precision","isNaN","parseFloat","String","isFinite","unit","units","length","toFixed","pure","obj","noNullValue","sortKeys","keyArr","dataArr","sort","forEach","push","obj2","undefined","m_value","setTimeout","m_width","ResizeMe","Width","val","MaxWidth","m_maxWidth","Id","m_id","Type","m_type","PasswordMask","m_passwordMask","m_valProp","now","Math","random","ngAfterContentInit","password","ngAfterViewInit","m_ready","GetMaxWidth","GetFontWidth","elem","Number","window","getComputedStyle","fontSize","ret","textOffset","padding","eyeElement","$","offsetWidth","labelElem","labelOffset","offset","currentElement","spanElement","containerElement","parentElement","body","parentwidth","parseInt","width","fontWidth","minWidth","minwidth","widthMax","maxwidth","newSize","ceil","TogglePasswordMask","id","getElementById","containerclass","containerwidth","labelwidth","disabled","defaultselection","list","includes","x","emptyitem","customClass","comparekey","ModalSize","Medium","close","ignoreesc","leftcancel","notify","leftclick","rightclick","submit","ignoreenter","size","dlgopen","title","message","leftbtn","rightbtn","lefticon","righticon","lbtnclass","rbtnclass","errid","ngContentSelectors","itemlist","m_itemList","ItemList","InputValue","m_inputvalue","MaxHeight","m_maxHeight","SizeChanged","m_sizeChanged","maxheight","ngAfterContentChecked","IsAvailable","CalculateWidth","AddItem","event","stopImmediatePropagation","stopPropagation","preventDefault","itemlistChange","scrollTop","scrollHeight","clientHeight","DeleteItem","item","splice","indexOf","container","containerWidth","labelWidth","buttonWidth","Direction","exclusivelist","lists","m_leftSelected","m_rightSelected","UpdateButtons","LeftSelected","RightSelected","LeftButtons","m_leftButtons","RightButtons","m_rightButtons","Height","m_height","top","direction","up","bottom","down","left","right","height","SelectItem","leftList","ClearItemList","SelectAnItem","apply","LeftList","RightList","itemList","shiftKey","parentList","initialIndex","endIndex","index","min","max","ctrlKey","SortSelection","itemListInitialLength","sortList","MoveSelectionLeft","MoveSelectionRight","MoveSelectedItemWithinList","splitIndex","tmp","MoveItem","proceed","update","caller","Beautify","moreThanOneSelected","lefttitle","righttitle","ButtonMap","_buttonMap","DragStart","ButtonClick","buttonclick","buttons","Selection","selection","selectedItems","IsSelected","SelectAll","changed","isActive","DatagridController","ClientDatagridController","entireCollection","collection","slice","getStartIndex","pageSize","setEntireCollection","totalCount","isLoading","getEntireCollection","getState","readState","page","filters","cancelFetchDataTimer","fetchDataTimer","clearTimeout","pageCount","getPageCount","canNext","canPrevious","getCollection","_pageSize","getPage","getEndIndex","getTotalCount","setPage","filtersEqual","first","second","filterName","firstFilter","secondFilter","secondClarityFilter","setFilters","newFilters","oldFilters","onFilterChanged","onSortChanged","getSort","setSort","defaultSort","sortBy","isReversed","oldSort","compareSort","getFilters","minimalFilters","HttpHeaders","HttpRequestType","ReponseHandleType","BodyType","isCompleteWithoutError","isComplete","isInError","GET","Raw","TAKE_LAST","onComplete","setHeaderValue","createHeaderIfUndefined","headers","set","deleteHeader","delete","completeRequest","getFullUri","uriTransformFunction","encodeURIComponent","bodyTransformFunction","bodyType","FormData","formDataBody","append","result","fullUri","options","observe","responseType","withCredentials","putCredentialsInRequest","POST","post","DELETE","PUT","put","lastId","responseText","responseHandleType","JSON","parse","e","handleError","errorResponse","errorMessageObj","ProgressEvent","errJsonObj","errorMessage","statusText","resetError","dontAutoResetError","getReponseObj","getResponseText","setQuery","removeQuery","HttpRequestFragmenter","_request","onStartFragment","onSuccessFragment","onErrorFragment","onCompleteFragment","onStop","onStartRequest","onCompleteRequest","onErrorRequest","onSuccessRequest","_currentIndex","_isRunning","_isInError","_errorsMessages","start","sendRequest","stop","currentIndex","isRunning","errorMessages","maxIndex","handlers","off","h","expose","clear","replace","validateEmailAddress","re","test","toLowerCase","EditUserProfile","formatString","displayName","phone","jobTitle","company","marketingOption","isMatch","profile","matchString","isDataValid","invalid","isNullOrWhiteSpace","pattern","RegExp","trim","blank","a","b","emptyMatch","valueMatch","AccountComponent","userDetails","accountService","userInfoRequest","userDetailUpdateRequest","httpService","basicProfileEditLink","userDetailsSubscription","userDetailsSubject","editUserProfile","setUserDetails","setStatus","shouldDisableSaveChanges","compare","match","valid","saveChanges","shouldDisableCancel","cancel","success","statusSuccess","statusFailure","BehaviorSubject","AccountService","t","signedInUserDetails","SubscriptionGroupTableComponent","enterpriseService","subGroupDatagridController","subGroupRows","getRange","subGroup","available","subscriptions","maxSubPerTransaction","numberOfAssignees","floor","i","SubscriptionGroupTableRow","numberSelected","resetSelection","anySelected","subscription","MultipleUserSubscriptionRequestItem","errorCode","emailValidation","AddUserModalComponent","AddUsersCompleteEvent","handleAddUsersComplete","bind","AddUsersErrorEvent","handleAddUsersError","onSubscriptionsUpdate","subscriptionGroupRows","getAvailableSubscriptionsGrouped","subscriptionGroup","getErrorCode","handleFileParsedEvent","fileRows","invalidEmailCount","invalidItems","additionsMails","validItems","row","csvInputError","join","resetCsvInputError","resetSubscriptionSelection","CheckValidEmail","emailList","occurences","invalidEmail","emails","disableAddButton","duplicateEmail","validEmail","ConfirmValidEmails","handleAddEmailClick","additionManualMail","RemoveEmail","emailIndex","handleSubmitAddUser","clearMessages","typeAddInput","addUsersRequestBody","addUsersRequestItem","fnoActivationIds","getSubscriptionIdsForUser","dispatchAddUsers","trackingFunction","resetStates","resetAdditionMails","resetAdditionManualMails","isOpen","_isOpen","open","_typeAddInput","numberOfNewUsers","didNotCreate","alreadyExists","userEmails","hintMessage","failed","failedAssignment","refreshUsersFragment","fullySuccessful","refreshSubscriptions","userIndex","subscriptionCount","productActivationIds","fnoActivationId","end","productActivationIdsForUser","enterpriseComponent","AdminsComponent","getAdminUsersRequest","addAdminUsersRequest","removeAdminUsersRequest","resendAdminWelcomeEmailRequest","resendAdminWelcomeEmailFragmenter","org","getOrganization","adminUsers","newAdminUserEmail","resp","errorInfo","isAddAdminModalOpen","selectedAdmins","users","isRemoveAdminModalOpen","onOrganizationChange","_subscriptionAdminTableRefresh","shouldRefreshEnterpriseAdminTable","_isRemoveAdminModalOpen","_isAddAdminModalOpen","resendAdminWelcomeEmail","i18n_5","EnterpriseComponent","isAdminRequest","orgs","navigateByUrl","currentOrg","onCompanyChange","setOrganization","displayError","activeGlobalError","globalErrorMessage","closeErrorMessage","SubscriptionsSummaryComponent","UsersComponent","InvitationsComponent","ProductCountCell","EnterpriseService","AppRoutingModule","BrowserAnimationsModule","BrowserModule","CsvFileInputComponent","ExtendedRequestPresenterComponent","EnterpriseModule","SubscriptionGroupUtils","NameAndDateClassifier","ProductClassifier","SubscriptionCollection","InvitationCollection","Subject","FailedUserLookup","EnterpriseHttpRequestFragmenter","MAX_USER_REMOVAL_PER_REQUEST","MAX_SUBSCRIPTIONS_ASSIGNMENT_PER_REQUEST","MAX_SUBSCRIPTIONS_PER_REQUEST","GetUsersResponseBody","AddUsersResult","Map","AssignProductInfo","partNumber","count","startDate","tecsDate","name","productName","isAddon","productCategory","_subscriptionCollection","onGetSubscriptionsComplete","invitationCollection","invitations","onGetInvitationsComplete","_subscriptionsGroupedByProduct","groupBy","s","_getUserByEmailRequest","_getUsersRequest","_removeUsersRequest","_removeUsersRequestFragmenter","_addUsersRequest","_addUsersRequestFragmenter","_assignSubscriptionRequest","_assignSubscriptionRequestFragmenter","_unassignSubscriptionRequest","_unassignSubscriptionRequestFragmenter","response","GetUserSuccessEvent","GetUsersErrorEvent","_usersRequestRetrigger","GetUserByEmailSuccessEvent","failedUserLookupResult","errorStatus","GetUserByEmailErrorEvent","hf","rawRequestBody","getSelectedUsersEmails","RemoveUsersErrorEvent","RemoveUsersSuccessEvent","requestBatches","mergeAddUsersResults","successRequestResponseObjs","UnassignSubscriptionsErrorEvent","UnassignSubscriptionsSuccessEvent","AssignSubscriptionsErrorEvent","AssignSubscriptionsSuccessEvent","_invitations","_invitationsUsedCountPerProduct","invitation","product","clientAddInvitation","orgID","_org","setOrg","refreshInvitations","getSubscriptionRequestProgression","getProgression","clientComputedData","isStale","isSubscriptionsRequestCompleted","isCompleted","clientRemoveInvitation","getAllSubscriptionsGrouped","subscriptionsGroupedByProduct","getAvailableSubscriptionsGroupedForProduct","availableSubscriptions","sub","groupSubscriptionsByDates","getSubscriptionsForProduct","getSubscriptionsForUser","getGroupedSubscriptionsForUser","groupedSubscriptions","dateA","dateB","nameA","nameB","getSubscriptionUsedCountForProduct","invitationUsedCount","getSubscriptionLeftForProduct","dispatchGetUsers","askCount","dispatchGetUserByEmail","dispatchRemoveUsers","selectedUsers","resetFragmenter","requestBody","prepareSubscriptionRequestFragmenter","dispatchAssignSubscriptions","dispatchUnassignSubscriptions","isGetUsersInProgress","isRemoveUsersInProgress","isAddUsersInProgress","isAssignSubscriptionsInProgress","isUnassignSubscriptionsInProgress","batchMultipleUserSubscriptionRequestItems","allRequestItems","batches","currentBatch","requestItem","currentBatchSubCount","ExceedsMaxSubscriptionCount","subSplit","requestItemsToPush","requestItemsToCarry","carryIndex","_requestItemsToCarry","_requestItemsToPush","currentCount","overhead","results","mergedResult","u","getErrorMessage","replacementErrorMessage","getInvitationsRequest","getInvitationsRequestFragmenter","frag","deleteInvitationsRequest","resendInvitationsRequest","invitationsDatagridController","ccEmail","resendInvitationMailModel","split","invitationIds","getSelectedInvitationsIds","selectedInvitations","i18n_13","getTooltipPosition","tablePositionIndex","getSubscriptionsCount","getUserFriendlySubscriptionsList","shouldShowSubscriptionsCount","tableTotalRowCount","minimum","Subscription","validityDate","renewalPeriod","matchesWith","SubscriptionGroup","getClassifer","group","find","_getSubscriptionsRequest","_getSubscriptionsTotalCountRequest","checkOrgNotNull","warn","_pages","_pageCount","onAllSubscriptionsPagesRetrieved","_subscriptions","_isCompleted","_stale","startProg","subscriptionDatagridController","allSubscriptions","localeCompare","getUserFriendlySubscriptionUsage","User","UsersDatagridController","orgName","handleOrganizationChange","handleGetUsersSuccess","handleGetUsersError","handleGetUserByEmailSuccess","handleGetUserByEmailError","handleRemoveUsersSuccess","handleRemoveUsersError","handleAssignSubscriptionsSuccess","handleAssignSubscriptionsError","handleUnassignSubscriptionsSuccess","handleUnassignSubscriptionsError","usersDatagridController","isUserLookup","getUnassignAvailableProducts","every","some","assignProductIsValid","subGroupRow","unassignProductIsValid","unassignProductName","openAssignModal","isAssignModalOpen","onSubmitAssign","generateAssignRequestBody","onSubmitUnassign","generateUnassignRequestBody","onSubmitRemoveUser","handleSubmitSearchByUserEmail","userByEmailSearch","handleSwitchUserLookup","handleAddUserModalRefresh","_isAssignModalOpen","isUnassignModalOpen","_isUnassignModalOpen","isRemoveUserModalOpen","_isRemoveUserModalOpen","isCurrentUserSelected","mail","isUsersLoading","isRemoveUserInProgress","userErrorMessage","removeUsersErrorMessage","assignSubscriptionErrorMessage","unassignSubscriptionErrorMessage","assignRequestBody","assignRequestItem","getAssignSubscriptionIdsForUser","unAssignRequestBody","unassignRequestItem","getUnassignSubscriptionIdsForUser","concatPartNumberAndNameOfProduct","subs","subsToReturn","i18n_19","i18n_27","i18n_31","_r3","HelpComponent","SubscriptionsComponent","subscriptionsRequest","devices","releaseActivationRequest","activationId","deviceId","deviceType","rr","isExpired","to","expiredSubscriptions","RouterModule","routes","path","redirectTo","pathMatch","component","forRoot","LOCALE_ID","AppComponent","loggingService","localeId","language","log","usualLanguage","sessionStorage","getItem","languageStorageName","setLanguage","browserLanguage","navigator","supportedLanguage","supportedLanguages","isEnterpriseAdmin","isLoggingOut","redirectToECommerceRequest","href","myaccount","isACCUser","welcomeForumUri","ACCForumUri","basicProfileUri","isConnected","redirectToECommerce","save","production","setItem","pathname","prefix","startsWith","substr","ErrorHandler","ReactiveFormsModule","LoggingService","ErrorHandlerService","AppModule","bootstrap","provide","useClass","onCsvFileChange","target","files","reader","FileReader","file","csvFileName","onload","content","eventToEmit","CSVFileParsedEvent","csvItems","extractColumnEntriesFromCsvAndConvertToLowercase","columnIndexesToParse","itemCount","fileParsedEvent","readAsText","splitCsvIntoRows","fileContent","getRawCSVItems","re_valid","re_value","m0","m1","m2","m3","rows","Set","rawCsvItems","add","itemName","fileInputLabel","envName","adminGroupId","appInsights","instrumentationKey","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","catch","err","logException","ApplicationInsights","config","enableAutoRouteTracking","loadAppInsights","logPageView","trackPageView","logEvent","properties","trackEvent","logMetric","average","trackMetric","exception","severityLevel","trackException","logTrace","trackTrace"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}