{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./src/app/app.module.ts","./src/app/auth-config.module.ts","./src/app/components/accessdenied/accessdenied.component.ts","./src/app/components/api-credentials/api-credentials.component.ts","./src/app/components/app/app.component.ts","./src/app/components/attributes-modal/attributes-modal.component.ts","./src/app/components/base-accordion/base-accordion.component.ts","./src/app/components/base-grid/base-grid.component.ts","./src/app/components/clinical-investigation/clinical-investigation.component.ts","./src/app/components/company-datascope-selector/company-datascope-selector.component.ts","./src/app/components/customer-selector/customer-selector.component.ts","./src/app/components/dashboard/dashboard.component.ts","./src/app/components/device-characteristics/device-characteristics.component.ts","./src/app/components/device-marketing/device-marketing.component.ts","./src/app/components/device-registration/device-registration.component.ts","./src/app/components/deviceinventory/deviceinventory.component.ts","./src/app/components/dynamicbuilder/checkbox/checkbox.component.ts","./src/app/components/dynamicbuilder/date/date.component.ts","./src/app/components/dynamicbuilder/dropdown/dropdown.component.ts","./src/app/components/dynamicbuilder/dynamicformbuilder/dynamicformbuilder.component.ts","./src/app/components/dynamicbuilder/dynamicforms/dynamicforms.component.ts","./src/app/components/dynamicbuilder/file/file.component.ts","./src/app/components/dynamicbuilder/radio/radio.component.ts","./src/app/components/dynamicbuilder/textbox/textbox.component.ts","./src/app/components/error/error.component.ts","./src/app/components/export-data/export-data.component.ts","./src/app/components/feature/feature.component.ts","./src/app/components/filedetails/filedetails.component.ts","./src/app/components/fileupload/fileupload.component.ts","./src/app/components/footer/footer.component.ts","./src/app/components/forbidden/forbidden.component.ts","./src/app/components/grids/fileuploadhistorygrid/fileuploadhistorygrid.component.ts","./src/app/components/header/header.component.ts","./src/app/components/home/home.component.ts","./src/app/components/identification-classification/identification-classification.component.ts","./src/app/components/index.ts","./src/app/components/ingested-devices-chart/ingested-devices-chart.component.ts","./src/app/components/item-details/item-details.component.ts","./src/app/components/manage-submission-items/manage-submission-items.component.ts","./src/app/components/menus/nav-menu/nav-menu.component.ts","./src/app/components/model-group-characteristics/model-group-characteristics.component.ts","./src/app/components/model-identification-classification/model-identification-classification.component.ts","./src/app/components/model-non-health-authority/model-non-health-authority.component.ts","./src/app/components/non-health-authority/non-health-authority.component.ts","./src/app/components/packaging/packaging.component.ts","./src/app/components/product-designer/product-designer.component.ts","./src/app/components/submission-device-characteristics-eu/submission-device-characteristics-eu.component.ts","./src/app/components/submission-device-characteristics-us/submission-device-characteristics-us.component.ts","./src/app/components/submission-device-characteristics/submission-device-characteristics.component.ts","./src/app/components/submission-device-marketing-eu/submission-device-marketing-eu.component.ts","./src/app/components/submission-device-marketing-us/submission-device-marketing-us.component.ts","./src/app/components/submission-device-marketing/submission-device-marketing.component.ts","./src/app/components/submission-device-packaging/submission-device-packaging.component.ts","./src/app/components/submission-device-product-designer-eu/submission-device-product-designer-eu.component.ts","./src/app/components/submission-device-registration/submission-device-registration.component.ts","./src/app/components/submission-device-substance-warnings-us/submission-device-substance-warnings-us.component.ts","./src/app/components/submission-device-substances-warnings-eu/submission-device-substances-warnings-eu.component.ts","./src/app/components/submission-history-item/submission-history-item.component.ts","./src/app/components/submission-history/submission-history.component.ts","./src/app/components/submission-identification-classification-us/submission-identification-classification-us.component.ts","./src/app/components/submission-identity-classification-ch/submission-identity-classification-ch.component.ts","./src/app/components/submission-identity-classification-sk/submission-identity-classification-sk.component.ts","./src/app/components/submission-indentification-classification-eu/submission-indentification-classification-eu.component.ts","./src/app/components/submission-item-details/submission-item-details.component.ts","./src/app/components/submission-model-clinical-investigation-eu/submission-model-clinical-investigation-eu.component.ts","./src/app/components/submission-model-group-characteristics-eu/submission-model-group-characteristics-eu.component.ts","./src/app/components/submission-model-indentification-classification-eu/submission-model-indentification-classification-eu.component.ts","./src/app/components/submission-packaging/submission-packaging.component.ts","./src/app/components/submission-product-designer-eu/submission-product-designer-eu.component.ts","./src/app/components/submission-substances-warnings/submission-substances-warnings.component.ts","./src/app/components/submitted-devices-chart/submitted-devices-chart.component.ts","./src/app/components/substances-warnings/substances-warnings.component.ts","./src/app/components/support/support.component.ts","./src/app/components/unauthorized/unauthorized.component.ts","./src/app/modules/app-shared.module.ts","./src/app/pipes/filter.pipe.ts","./src/app/pipes/split-words.pipe.ts","./src/app/pipes/utc-to-locale.pipe.ts","./src/app/shared/directives/control-name.directive.ts","./src/app/shared/directives/cross-validator.ts","./src/app/shared/directives/forbidden-name.directive.ts","./src/app/shared/directives/hidebyaccess.directive.ts","./src/app/shared/directives/index.ts","./src/app/shared/enums/attributeStatus.enum.ts","./src/app/shared/enums/dataScopes.enum.ts","./src/app/shared/enums/exportStatus.enum.ts","./src/app/shared/enums/index.ts","./src/app/shared/enums/messageSeverity.enum.ts","./src/app/shared/enums/registrationType.enum.ts","./src/app/shared/enums/submissionStatus.enum.ts","./src/app/shared/enums/submissionStatusNumeric.enum.ts","./src/app/shared/enums/submissionType.enum.ts","./src/app/shared/enums/validationStatus.enum.ts","./src/app/shared/globals/appGlobals.ts","./src/app/shared/helpers/animations.ts","./src/app/shared/helpers/jwt.interceptor.ts","./src/app/shared/helpers/rxjs-extensions.ts","./src/app/shared/helpers/utils.ts","./src/app/shared/models/ServiceError.ts","./src/app/shared/models/application.model.ts","./src/app/shared/models/dynamic-schema-data.ts","./src/app/shared/models/export-data-task.model.ts","./src/app/shared/models/export-data-template.model.ts","./src/app/shared/models/export-template.model.ts","./src/app/shared/models/fileuploadresult.ts","./src/app/shared/models/index.ts","./src/app/shared/models/permission.model.ts","./src/app/shared/models/saved-template.model.ts","./src/app/shared/models/userAccessPermissions.model.ts","./src/app/shared/services/alert.service.ts","./src/app/shared/services/apicredentials.service.ts","./src/app/shared/services/authentication.service.ts","./src/app/shared/services/authorization.service.ts","./src/app/shared/services/custom-preloading.service.ts","./src/app/shared/services/customer.service.ts","./src/app/shared/services/deviceinventory.service.ts","./src/app/shared/services/export-data.service.ts","./src/app/shared/services/feature.service.ts","./src/app/shared/services/fileupload.service.ts","./src/app/shared/services/index.ts","./src/app/shared/services/logging.service.ts","./src/app/shared/services/session-timeout-absolute.service.ts","./src/app/shared/services/session-timeout.service.ts","./src/app/shared/services/settings.service.ts","./src/app/shared/services/storage-manager.service.ts","./src/app/shared/services/template.service.ts","./src/app/shared/services/utilities.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AutoLoginGuard } from 'angular-auth-oidc-client';\r\nimport { AccessdeniedComponent, ApiCredentialsComponent, DynamicformsComponent, ErrorComponent, ExportDataComponent, ForbiddenComponent, HomeComponent, SupportComponent, UnauthorizedComponent } from './components/index';\r\nimport { ApiCredentialsActivator, ApiCredentialsDeactivator, ExportDataActivator } from './shared/guards';\r\nimport { ApiCredentialsResolverService, ExportDataResolverService } from './shared/resolvers/index';\r\nimport { CustomPreloadingService } from './shared/services/index';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: 'home',\r\n pathMatch: 'full'\r\n },\r\n {\r\n // the child route must be before the wildcard \"**\" route and after the '' route to work\r\n path: 'files', data: { preload: false },\r\n loadChildren: () => import('./modules/files.module').then(m => m.FilesModule),\r\n canActivate: [AutoLoginGuard]\r\n },\r\n { path: 'managedi', data: { preload: false }, loadChildren: () => import('./modules/managedi.module').then(m => m.ManagediModule) },\r\n { path: 'submissions', data: { preload: false }, loadChildren: () => import('./modules/submissions.module').then(m => m.SubmissionsModule) },\r\n { path: 'reports', data: { preload: false }, loadChildren: () => import('./modules/reports.module').then(m => m.ReportsModule) },\r\n { path: 'settings', data: { preload: false }, loadChildren: () => import('./modules/settings.module').then(m => m.SettingsModule) },\r\n {\r\n path: 'home',\r\n component: HomeComponent,\r\n pathMatch: 'prefix',\r\n canActivate: [AutoLoginGuard]\r\n },\r\n {\r\n path: 'accessdenied',\r\n component: AccessdeniedComponent,\r\n pathMatch: 'prefix',\r\n canActivate: [AutoLoginGuard]\r\n },\r\n { path: 'dynamicformstest', component: DynamicformsComponent, pathMatch: 'prefix', canActivate: [AutoLoginGuard] },\r\n { path: 'support', component: SupportComponent, pathMatch: 'prefix', canActivate: [AutoLoginGuard] },\r\n { path: 'unauthorized', component: UnauthorizedComponent, pathMatch: 'prefix' },\r\n { path: 'forbidden', component: ForbiddenComponent, pathMatch: 'prefix', canActivate: [AutoLoginGuard] },\r\n { path: '**', component: ErrorComponent },\r\n { path: 'error', component: ErrorComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes,\r\n {\r\n relativeLinkResolution: 'legacy',\r\n preloadingStrategy: CustomPreloadingService\r\n })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n\r\n","// these libraries below must be in the root.\r\nimport { HttpClientJsonpModule, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\n// modules\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AuthConfigModule } from './auth-config.module';\r\nimport { AppSharedModule } from './modules/app-shared.module';\r\n\r\n// services and guards\r\nimport { JwtInterceptor } from './shared/helpers/jwt.interceptor';\r\nimport { AuthenticationService } from './shared/services/authentication.service';\r\nimport {\r\n AlertService, ApiCredentialsService, AuthorizationService, CustomerService, LoggingService, SettingsService, StorageManagerService, TemplateService\r\n} from './shared/services/index';\r\nimport { AbsoluteSessionTimeoutService } from './shared/services/session-timeout-absolute.service';\r\nimport { SessionTimeoutService } from './shared/services/session-timeout.service';\r\n\r\n// components\r\nimport {\r\n AccessdeniedComponent, ApiCredentialsComponent, AppComponent, CheckboxComponent, CompanyDatascopeSelectorComponent, CustomerSelectorComponent, DashboardComponent, DateComponent, DropdownComponent, DynamicformbuilderComponent, DynamicformsComponent, ErrorComponent, \r\n FooterComponent, ForbiddenComponent, HeaderComponent, HomeComponent, IngestedDevicesChartComponent, NavMenuComponent, RadioComponent, SubmittedDevicesChartComponent, SupportComponent, TextboxComponent, UnauthorizedComponent\r\n} from './components/index';\r\n\r\n// Pipes\r\nimport { SplitWordsPipe } from './pipes/split-words.pipe';\r\nimport { UtcToLocalePipe } from './pipes/utc-to-locale.pipe';\r\n\r\n// globals\r\nimport { AppGlobals } from './shared/globals/appGlobals';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n NavMenuComponent,\r\n HomeComponent,\r\n HeaderComponent,\r\n FooterComponent,\r\n SupportComponent,\r\n ErrorComponent,\r\n DashboardComponent,\r\n DynamicformsComponent,\r\n DynamicformbuilderComponent,\r\n CheckboxComponent,\r\n DropdownComponent,\r\n RadioComponent,\r\n TextboxComponent,\r\n DateComponent,\r\n AccessdeniedComponent,\r\n CustomerSelectorComponent,\r\n UnauthorizedComponent,\r\n ForbiddenComponent,\r\n CompanyDatascopeSelectorComponent,\r\n ApiCredentialsComponent,\r\n IngestedDevicesChartComponent,\r\n SubmittedDevicesChartComponent,\r\n SplitWordsPipe,\r\n UtcToLocalePipe\r\n ],\r\n imports: [\r\n AppRoutingModule,\r\n HttpClientJsonpModule,\r\n AuthConfigModule,\r\n AppSharedModule,\r\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\r\n BrowserAnimationsModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n StorageManagerService,\r\n SettingsService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: JwtInterceptor,\r\n multi: true\r\n },\r\n AlertService,\r\n AuthenticationService,\r\n LoggingService,\r\n CustomerService,\r\n TemplateService,\r\n AuthorizationService,\r\n HttpClientModule,\r\n SessionTimeoutService,\r\n AbsoluteSessionTimeoutService,\r\n AppGlobals,\r\n ApiCredentialsService,\r\n SettingsService,\r\n StorageManagerService,\r\n AlertService, ApiCredentialsService, AuthorizationService, CustomerService,\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { SettingsService } from './shared/services';\r\nimport { AuthModule, LogLevel, OidcConfigService, OidcSecurityService } from 'angular-auth-oidc-client';\r\nimport { IServerSettings } from './shared/models';\r\nimport { AuthenticationService } from './shared/services/authentication.service';\r\n\r\nexport function configureAuth(oidcConfigService: OidcConfigService, httpClient: HttpClient, settingsService: SettingsService, authenticationService: AuthenticationService) {\r\n\r\n\r\n const setupAction$ = httpClient\r\n .get('/api/Settings/GetServerSettings')\r\n .pipe(\r\n map((customConfig) => {\r\n settingsService.serverSettings = customConfig; \r\n\r\n return {\r\n stsServer: customConfig.IdentityServiceUrl,\r\n authWellknownEndpoint: `${customConfig.IdentityServiceUrl}/.well-known/openid-configuration`,\r\n redirectUrl: `${window.location.origin}/`,\r\n clientId: 'SingleSourceAngularApp',\r\n scope: 'openid profile email offline_access IdentityServiceApi SingleSourceApi ApiGateway',\r\n postLogoutRedirectUri: `${window.location.origin}/home`,\r\n responseType: 'code',\r\n triggerAuthorizationResultEvent: true,\r\n startCheckSession: true,\r\n silentRenew: true,\r\n renewTimeBeforeTokenExpiresInSeconds: 60,\r\n useRefreshToken: true,\r\n maxIdTokenIatOffsetAllowedInSeconds: 90,\r\n issValidationOff: false,\r\n autoUserinfo: true,\r\n postLoginRoute: '/home',\r\n forbiddenRoute: '/forbidden',\r\n unauthorizedRoute: '/unauthorized',\r\n logLevel: LogLevel.Error,\r\n customParams: {\r\n prompt: 'select_account', // login, consent\r\n }\r\n };\r\n }),\r\n switchMap((config) => oidcConfigService.withConfig(config))\r\n );\r\n\r\n return () => setupAction$.toPromise();\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [AuthModule.forRoot()],\r\n providers: [\r\n OidcSecurityService,\r\n OidcConfigService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: configureAuth,\r\n deps: [OidcConfigService, HttpClient, SettingsService, AuthenticationService],\r\n multi: true,\r\n },\r\n ],\r\n exports: [AuthModule],\r\n})\r\nexport class AuthConfigModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IPermission } from '../../shared/models/index';\r\nimport { StorageManagerService } from '../../shared/services';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-accessdenied',\r\n templateUrl: './accessdenied.component.html',\r\n styleUrls: ['./accessdenied.component.scss'],\r\n animations: [fadeInOut]\r\n})\r\n\r\nexport class AccessdeniedComponent implements OnInit {\r\n hasApplicationPermission: boolean;\r\n message: string;\r\n\r\n // Constructor\r\n constructor(private storageManagerService: StorageManagerService, private authenticationService: AuthenticationService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.message = 'This account is not associated with any company that has an active subscription'\r\n + ' to a health authority. Please contact your Reed Tech Sales Representative and inquire'\r\n + ' about activating a subscription. You are being logged out.';\r\n\r\n setTimeout(this.logout, 5000, this);\r\n }\r\n\r\n logout(thisComponent: AccessdeniedComponent) {\r\n\r\n let accessPermissions: IPermission[];\r\n\r\n accessPermissions = this.storageManagerService.read('accessPermissions');\r\n\r\n const email = thisComponent.storageManagerService.read('accessDeniedEmail');\r\n\r\n if (accessPermissions && email) {\r\n this.authenticationService.captureLogoutEvent(email)\r\n .subscribe(res => {\r\n thisComponent.authenticationService.logout();\r\n thisComponent.storageManagerService.clearAll();\r\n },\r\n error => console.error(error));\r\n } else {\r\n thisComponent.authenticationService.logout();\r\n thisComponent.storageManagerService.clearAll();\r\n }\r\n }\r\n}\r\n","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbTabset } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SwitchComponent } from '@syncfusion/ej2-angular-buttons';\r\nimport { CheckBoxSelection, ListBox, ListBoxComponent } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType, getInstance } from '@syncfusion/ej2-base';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs/Subscription';\r\nimport { DataScopesEnum } from '../../shared/enums/index';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IApiCredentials, IApiCredentialsSetting, ICustomer, ILanguageApiResponse, IPermission, IServerSettings, IServiceError } from '../../shared/models/index';\r\nimport { ILanguage, IApplicationSettings, IApplicationConfigData, ILanguageSupport } from '../../shared/models/app-settings.model';\r\nimport { ApiCredentialsService, AuthorizationService, CustomerService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\nimport { GridComponent } from '@syncfusion/ej2-angular-grids';\r\nimport { timer } from 'rxjs';\r\n\r\n\r\nListBoxComponent.Inject(CheckBoxSelection);\r\n\r\n@Component({\r\n selector: 'app-api-credentials',\r\n templateUrl: './api-credentials.component.html',\r\n styleUrls: ['./api-credentials.component.scss'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class ApiCredentialsComponent implements OnInit, OnDestroy, AfterViewInit, AfterViewChecked {\r\n\r\n resolverData: any[] | IServiceError;\r\n apiData: IApiCredentials | IServiceError;\r\n sortedClientLanguageDataNames: ILanguageSupport[];\r\n applicationVariants: any[] = [];\r\n dataScopeEnum: any;\r\n customer: ICustomer;\r\n subscription: Subscription;\r\n accessPermissions: IPermission[] = [];\r\n permissionsPerClient = [];\r\n showLink = true;\r\n showEUDLink = true;\r\n apiSKForm: FormGroup;\r\n apiEUDForm: FormGroup;\r\n formSaved = false;\r\n isMatch = false;\r\n displayedText: string;\r\n // iconClass: string;\r\n dataScope: string;\r\n loading = false;\r\n saving = false;\r\n cancelledForm = false;\r\n apiCredentialsSettings: IApiCredentialsSetting[] = [];\r\n data: any;\r\n permissionsConst: any;\r\n clientData: any[] | IServiceError;\r\n toDelete = { appVarName: '', id: '' };\r\n showSKForm = false;\r\n showEUDForm = false;\r\n duplicateSNR = false;\r\n showEyeIcon = false;\r\n showEyeIconCompare = false;\r\n systemLanguages: any[];\r\n displayEditScreen = false;\r\n appConfigObject: IApplicationConfigData;\r\n languageData: IApplicationSettings;\r\n channelLanguageSupport: ILanguageSupport;\r\n channelLanguageEnabled = false;\r\n languagesListBoxDS: any[] = [];\r\n listBoxFields: Object;\r\n selectedLanguagesArray: any[] = [];\r\n selectedDisplayLanguageCode: string;\r\n formModified = false;\r\n clientLanguageSupportEnabled = false;\r\n allSSMDSystemLanguagesCategory = 146;\r\n eudamedLanguagesCategory = 147;\r\n\r\n activeTab = 'clientAdmin';\r\n languageTabEnabled = false;\r\n clientAdminTabEnabled = false;\r\n languageAdminPermission = false;\r\n noChangesVodalVisible = false;\r\n\r\n srnPattern = '^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BH|BS|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|EL|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|UK|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|XI|WF|EH|YE|ZM|ZW)-(AR|MF|SP|IM|PR)-[0-9]{9}$';\r\n\r\n\r\n ddwFields: Object = { text: 'displayValue', value: 'code' };\r\n\r\n @ViewChild('tabset', { static: true })\r\n public tabset: NgbTabset;\r\n\r\n @ViewChild('switch')\r\n public switch: SwitchComponent;\r\n\r\n @ViewChild('languageForm') form: any;\r\n\r\n @ViewChild('modalDialog')\r\n public modalDialog: DialogComponent;\r\n\r\n @ViewChild('grid')\r\n public grid: GridComponent;\r\n\r\n formErrors = {\r\n clientId: '',\r\n clientPassword: '',\r\n comparePassword: '',\r\n srn: '',\r\n accessToken: '',\r\n compareAccessToken: ''\r\n };\r\n\r\n validationMessages = {\r\n clientId: {\r\n required: 'Client Id is required'\r\n },\r\n clientPassword: {\r\n required: 'Client Secret (Password) is required'\r\n },\r\n comparePassword: {\r\n required: 'Compare password is required',\r\n },\r\n srn: {\r\n required: 'SRN is required',\r\n duplicate: 'SRN is not unique',\r\n pattern: 'Invalid SRN pattern'\r\n },\r\n accessToken: {\r\n required: 'Access Token is required',\r\n },\r\n compareAccessToken: {\r\n required: 'Compare Access Token is required',\r\n }\r\n };\r\n\r\n @ViewChild('confirmDialog', { static: true })\r\n public confirmDialog: DialogComponent;\r\n\r\n // dialog settings\r\n isModal = true;\r\n animationSettings: Object = { effect: 'Zoom' };\r\n hide: any;\r\n position: object = { X: 'center', Y: 'center' };\r\n visible = false;\r\n modalWidth = '450px';\r\n formatOptions: Object;\r\n listBoxSelection: Object;\r\n\r\n serverSettings: IServerSettings;\r\n timerInterval: any;\r\n\r\n confirmDlgBtnClickYes: EmitType = () => {\r\n this.confirmDialog.hide();\r\n\r\n if (this.displayEditScreen) {\r\n\r\n // the parameter indicates that the confirmation was received\r\n this.saveLanguageEdit(true);\r\n } else {\r\n this.deleteApiCredentials();\r\n }\r\n }\r\n\r\n confirmDlgBtnClickNo: EmitType = () => {\r\n\r\n this.confirmDialog.hide();\r\n }\r\n\r\n // tslint:disable-next-line:member-ordering\r\n confirmDlgButtons: Object[] = [{ click: this.confirmDlgBtnClickNo.bind(this), buttonModel: { content: 'Cancel', cssClass: 'dialogButton' } }, { click: this.confirmDlgBtnClickYes.bind(this), buttonModel: { content: 'Confirm', isPrimary: true, cssClass: 'dialogButton' } }];\r\n\r\n overlayClick = (): void => {\r\n this.modalDialog.hide();\r\n }\r\n\r\n dlgButtonClick = (): void => {\r\n this.modalDialog.hide();\r\n this.formModified = false;\r\n }\r\n\r\n buttons: Object[] = [{ click: this.dlgButtonClick.bind(this), buttonModel: { content: 'OK', isPrimary: true } }];\r\n\r\n displayLanguageRequiredError = false;\r\n listBoxRequiredError = false;\r\n languageMaxCountError = false;\r\n channelBeingEdited = '';\r\n revalidating = false;\r\n timerSubscription: Subscription;\r\n\r\n constructor (private authorizationService: AuthorizationService, private storageManagerService: StorageManagerService, private fb: FormBuilder, private apiService: ApiCredentialsService, private toastr: ToastrService, private activatedRoute: ActivatedRoute, private appGlobals: AppGlobals, public cdref: ChangeDetectorRef, private customerService: CustomerService, private settingsService: SettingsService) { }\r\n\r\n ngAfterViewChecked(): void {\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n @HostListener('focus', ['$event.target'])\r\n\r\n onFocus(target) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.loading = true;\r\n this.permissionsConst = this.appGlobals.permissions;\r\n this.serverSettings = this.settingsService.getSettings();\r\n this.formatOptions = { type: 'dateTime', format: 'MM/dd/yyyy hh:mm a' };\r\n this.listBoxSelection = {\r\n showCheckbox: true,\r\n showSelectAll: true\r\n };\r\n this.listBoxFields = {\r\n text: 'displayValue',\r\n value: 'code'\r\n }\r\n\r\n this.apiSKForm = this.fb.group({\r\n clientId: ['', { validators: [Validators.required], updateOn: 'blur' }],\r\n clientPassword: ['', { validators: [Validators.required], updateOn: 'blur' }],\r\n comparePassword: ['', { validators: [Validators.required], updateOn: 'blur' }]\r\n });\r\n\r\n this.apiEUDForm = this.fb.group({\r\n srn: ['', { validators: [Validators.required, Validators.pattern(this.srnPattern)], updateOn: 'blur' }],\r\n accessToken: ['', { validators: [Validators.required], updateOn: 'blur' }],\r\n compareAccessToken: ['', { validators: [Validators.required], updateOn: 'blur' }]\r\n });\r\n\r\n this.dataScopeEnum = DataScopesEnum;\r\n\r\n const cust = this.storageManagerService.read('currentCustomer');\r\n this.dataScope = this.storageManagerService.read('dataScope');\r\n\r\n this.timerInterval = this.serverSettings.hasOwnProperty('APIPollTimeIntervalInMillSeconds') ?\r\n +this.serverSettings.APIPollTimeIntervalInMillSeconds : 5000;\r\n\r\n if (cust) {\r\n this.customer = typeof cust === 'object' ? cust : JSON.parse(cust);\r\n this.applicationVariants = this.customer.applicationVariants;\r\n }\r\n\r\n this.clientAdminTabEnabled = this.authorizationService.hasPermissionPerClient(this.appGlobals.permissions.CanAccessClientAdminSettings);\r\n\r\n if (this.clientAdminTabEnabled) {\r\n this.subscription = this.apiService.getApiCredentials(this.customer).subscribe(data => {\r\n\r\n this.apiData = data;\r\n this.clientData = (this.apiData as IApiCredentials).data;\r\n\r\n this.accessPermissions = this.storageManagerService.read('accessPermissions');\r\n\r\n if (this.accessPermissions && this.accessPermissions.length) {\r\n this.permissionsPerClient = this.authorizationService.permissionsToStringObject(this.accessPermissions);\r\n }\r\n\r\n this.loading = false;\r\n\r\n this.subscription = this.apiSKForm.valueChanges.subscribe(data => {\r\n this.comparePasswords(data);\r\n this.logValidationErrors(this.apiSKForm);\r\n });\r\n\r\n this.subscription = this.apiEUDForm.valueChanges.subscribe(data => {\r\n this.compareAccessTokens(data);\r\n this.logValidationErrors(this.apiEUDForm);\r\n });\r\n })\r\n }\r\n\r\n this.resolverData = this.activatedRoute.snapshot.data['api'];\r\n\r\n if (this.resolverData) {\r\n\r\n // getting isLanguageEnabled for the client from the resolver.\r\n this.clientLanguageSupportEnabled = this.resolverData[2];\r\n\r\n if (this.clientLanguageSupportEnabled) {\r\n\r\n // so the client is enabled for Language support. Can the user modify it now? Is there a permission?\r\n this.languageAdminPermission = this.authorizationService.hasPermissionPerClient(this.appGlobals.permissions.CanEditLanguageSettings);\r\n\r\n // the call is made only if the a User is the Language Admin and the Client's Language Support is enabled\r\n this.languageTabEnabled = this.languageAdminPermission && this.clientLanguageSupportEnabled;\r\n\r\n if (this.languageTabEnabled) {\r\n\r\n // both criterias are met. The Client is enabled for Language Support and the user has a permission.\r\n this.languageData = this.resolverData[0];\r\n\r\n // the whole settings structure including client enabled/disabled and supported languages\r\n this.appConfigObject = this.languageData['data'];\r\n\r\n // time to get the system languages\r\n this.systemLanguages = this.resolverData[1];\r\n\r\n // and create a datastory for the Listbox\r\n if (this.systemLanguages && this.systemLanguages.length) {\r\n this.createListBoxDataStore(this.systemLanguages);\r\n }\r\n\r\n // sorted array is for the display\r\n this.prepareClientLanguageSupportObject(this.appConfigObject.languageSupport);\r\n\r\n // start the Timer to scheck if the language change revalidation is going on\r\n if (this.clientLanguageSupportEnabled && this.dataScope) {\r\n\r\n // call the Timer to check if the re-validation is in progress\r\n this.timerSubscription = timer(0, this.timerInterval).subscribe(() =>\r\n this.revalidationCheck( this.dataScope));\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.tabset) {\r\n\r\n if (this.clientAdminTabEnabled) {\r\n this.tabset.activeId = 'clientAdmin';\r\n } else {\r\n if (this.languageTabEnabled) {\r\n this.tabset.activeId = 'languageAdmin';\r\n }\r\n }\r\n\r\n if (this.clientAdminTabEnabled && this.languageTabEnabled) {\r\n\r\n const activeTabFromStorage = this.storageManagerService.read('languagePageActiveTab');\r\n\r\n this.tabset.activeId = activeTabFromStorage ? activeTabFromStorage : this.activeTab;\r\n }\r\n }\r\n\r\n // set focus on the invisible div so the first tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n displayLink(channel) {\r\n\r\n return !((channel.toLowerCase() === this.dataScope?.toLowerCase()) && this.revalidating)\r\n }\r\n\r\n revalidationCheck(dataScope) {\r\n\r\n // Make the service call only if the Client is enabled for the language support.\r\n if (this.clientLanguageSupportEnabled && this.dataScope) {\r\n this.subscription = this.customerService.getMigrationStatus(dataScope).subscribe((response: ILanguageApiResponse) => {\r\n\r\n if (response.data) {\r\n this.revalidating = response.data.isMigrating\r\n }\r\n })\r\n }\r\n }\r\n\r\n private prepareClientLanguageSupportObject(objectToCopy: ILanguageSupport[]) {\r\n\r\n // if subscribed application variants has channels than saved settings does not - we add a block for the missing Channel\r\n this.applicationVariants.forEach(appVar => {\r\n\r\n if (this.appConfigObject.languageSupport.findIndex(x => x.channel.toLowerCase() === appVar.applicationVariantName.toLowerCase()) === -1) {\r\n\r\n const langSupport = {};\r\n\r\n langSupport.enabled = false;\r\n langSupport.channel = appVar.applicationVariantName;\r\n langSupport.displayLanguage = {\r\n languageCode: '',\r\n languageValue: ''\r\n };\r\n langSupport.modifyDateTime = '';\r\n langSupport.modifyUser = '';\r\n langSupport.supportedLanguages = [];\r\n\r\n this.appConfigObject.languageSupport.push(langSupport);\r\n }\r\n });\r\n\r\n // sort array by a channel name and ajust to the application variant ids of the Client\r\n this.sortArray(objectToCopy, 'channel');\r\n\r\n // creating a deep copy for further data manipulation\r\n this.sortedClientLanguageDataNames = [...objectToCopy];\r\n\r\n if (this.sortedClientLanguageDataNames && this.sortedClientLanguageDataNames.length) {\r\n this.sortedClientLanguageDataNames.forEach(channel => {\r\n\r\n let channelLanguages = channel.supportedLanguages;\r\n\r\n // sort languageValues inside the channel\r\n if (channelLanguages && channelLanguages.length) {\r\n channelLanguages = this.sortArray(channelLanguages, 'languageValue');\r\n }\r\n });\r\n }\r\n }\r\n\r\n createListBoxDataStore(languagesArray) {\r\n // create a dataStore for the ListBox\r\n if (languagesArray && languagesArray.length) {\r\n\r\n // initialize the datastore array\r\n this.languagesListBoxDS = [];\r\n\r\n languagesArray.forEach((item) => {\r\n\r\n if (item.termValueDescription.toLowerCase() !== 'any') {\r\n this.languagesListBoxDS.push({\r\n code: `${ item.termValueCode }`,\r\n language: `${ item.termValueDescription }`,\r\n displayValue: `${ item.termValueDescription } (${ item.termValueCode })`\r\n })\r\n } else {\r\n this.languagesListBoxDS.push({\r\n code: `${ item.termValueDescription.toUpperCase() }`,\r\n language: `${ item.termValueDescription.toUpperCase() }`,\r\n displayValue: `${ item.termValueDescription.toUpperCase() }`\r\n })\r\n }\r\n });\r\n\r\n // sort languages in the ListBox datastore\r\n this.languagesListBoxDS = this.sortArray(this.languagesListBoxDS, 'language');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n setPasswordFields() {\r\n\r\n const element = document.getElementsByName('clientPassword')[0];\r\n\r\n if (element) {\r\n if (element.getAttribute('type') === 'text' || element.innerText) {\r\n element.setAttribute('type', 'password');\r\n }\r\n }\r\n }\r\n\r\n\r\n addLinkClicked(appVar) {\r\n\r\n switch (appVar) {\r\n case this.dataScopeEnum.EUDAMED:\r\n this.showEUDForm = true;\r\n break;\r\n\r\n case this.dataScopeEnum.SKOREA:\r\n this.showSKForm = true;\r\n break;\r\n }\r\n\r\n this.showLink = false;\r\n }\r\n\r\n showAddLink(appVar): boolean {\r\n\r\n const apiData = (this.clientData as any).filter(d => d['applicationVariantName'] === appVar.toLowerCase());\r\n\r\n if (this.hasApiAccess(appVar) && !apiData) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n getHA(appVar): IApiCredentials | null {\r\n\r\n const apiData = (this.clientData as any)?.filter(d => d['applicationVariantName'] === appVar.applicationVariantName.toLowerCase());\r\n\r\n if (apiData && apiData.length) {\r\n if (this.hasApiAccess(appVar.applicationVariantName)) {\r\n this.showLink = true;\r\n }\r\n\r\n return apiData;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n haDisplayedText(ha) {\r\n\r\n let retVal;\r\n\r\n if (this.clientData && (this.clientData as any).length) {\r\n this.apiData = (this.clientData as any).filter(d => d['applicationVariantName'] === ha.toLowerCase());\r\n }\r\n\r\n if (this.apiData && (this.apiData as any).length && this.apiData[0].credentialIds && this.apiData[0].credentialIds.length) {\r\n\r\n this.apiData[0].credentialIds.forEach((credential, i) => {\r\n\r\n switch (ha) {\r\n case this.dataScopeEnum.SKOREA:\r\n retVal = `Delete South Korea API Credentials - Client ID: `;\r\n break;\r\n case this.dataScopeEnum.EUDAMED:\r\n retVal = `Delete SRN: `;\r\n break;\r\n }\r\n });\r\n\r\n } else {\r\n // if credentials don't exist set an option to Add\r\n this.showLink = true;\r\n\r\n switch (ha) {\r\n case this.dataScopeEnum.SKOREA:\r\n retVal = 'Add South Korea Credentials';\r\n break;\r\n case this.dataScopeEnum.EUDAMED:\r\n retVal = 'Add SRN and Access Token';\r\n break;\r\n }\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getIconClass(ha, id?: string): string {\r\n\r\n let retVal;\r\n\r\n // If client id exists for SKorea - show the \"delete\" icon.\r\n // For the Eudamed we don't have delete functionality currently. Display no icon.\r\n switch (ha) {\r\n case this.dataScopeEnum.SKOREA:\r\n retVal = id ? 'fa fa-minus-circle' : 'fa fa-plus-circle';\r\n break;\r\n case this.dataScopeEnum.EUDAMED:\r\n retVal = '';\r\n break;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n hasApiAccess(ha) {\r\n\r\n if (this.accessPermissions) {\r\n\r\n return this.accessPermissions.findIndex(i => i.permissionName === this.permissionsConst.CanUpdateApiCredentials && i.applicationVariantName.toLowerCase() === ha.toLowerCase()) >= 0;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n anyHAhasPermission(): boolean {\r\n\r\n if (this.accessPermissions && this.accessPermissions.length) {\r\n\r\n return this.accessPermissions.filter(i => i.permissionName === this.permissionsConst.CanUpdateApiCredentials)?.length >= 0;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n linkClicked(ha, id?: string) {\r\n\r\n // currently Eudamed doesn't have delete functionality\r\n switch (ha) {\r\n case this.dataScopeEnum.EUDAMED:\r\n case this.dataScopeEnum.SKOREA:\r\n\r\n if (id) {\r\n this.deleteLinkClicked(ha, id);\r\n } else {\r\n // if showLink is false, the form is displayed. Clear the fields\r\n this.clearForm();\r\n this.showLink = false;\r\n this.showSKForm = true;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n deleteLinkClicked(appVar, id) {\r\n\r\n this.toDelete = Object.assign({});\r\n\r\n this.toDelete.appVarName = appVar;\r\n this.toDelete.id = id;\r\n this.confirmDialog.show();\r\n }\r\n\r\n deleteApiCredentials() {\r\n\r\n this.loading = true;\r\n this.saving = true;\r\n\r\n this.subscription = this.apiService.deleteApiCredentials(this.toDelete.id, this.toDelete.appVarName).subscribe(result => {\r\n\r\n if (result['isSuccess']) {\r\n this.showLink = true;\r\n this.showSKForm = false;\r\n this.showEUDForm = false;\r\n this.toastr.success('Api Credentials have been removed.');\r\n this.reloadData();\r\n } else {\r\n this.toastr.error('Internal error during removal of the Api Credentials');\r\n }\r\n\r\n this.loading = false;\r\n this.saving = false;\r\n });\r\n }\r\n\r\n canDeactivate() {\r\n\r\n if (this.apiEUDForm.touched && !this.formSaved) {\r\n return confirm(`Are you sure you want to navigate away and discard your changes?`);\r\n }\r\n\r\n if (this.apiEUDForm.touched && !this.formSaved) {\r\n return confirm(`Are you sure you want to navigate away and discard your changes?`);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n comparePasswords(data) {\r\n\r\n if (this.apiSKForm.controls.comparePassword.touched || this.apiSKForm.controls.comparePassword.dirty) {\r\n\r\n const pass = data.clientPassword;\r\n const confirmPass = data.comparePassword;\r\n\r\n this.isMatch = pass === confirmPass;\r\n }\r\n }\r\n\r\n compareAccessTokens(data) {\r\n\r\n if (this.apiEUDForm.controls.compareAccessToken.touched || this.apiEUDForm.controls.compareAccessToken.dirty) {\r\n\r\n const pass = data.accessToken;\r\n const confirmPass = data.compareAccessToken;\r\n\r\n this.isMatch = pass === confirmPass;\r\n }\r\n }\r\n\r\n changeInputType(field) {\r\n\r\n const element = document.getElementsByName(field)[0];\r\n\r\n if (element) {\r\n if (element.getAttribute('type') === 'text') {\r\n element.setAttribute('type', 'password');\r\n }\r\n }\r\n }\r\n\r\n onKeyUp(e, formName) {\r\n\r\n let form: FormGroup;\r\n\r\n switch (formName.toLowerCase()) {\r\n case this.dataScopeEnum.SKOREA.toLowerCase():\r\n\r\n form = this.apiSKForm;\r\n break;\r\n\r\n case this.dataScopeEnum.EUDAMED.toLowerCase():\r\n\r\n form = this.apiEUDForm;\r\n break;\r\n }\r\n this.logValidationErrors(form);\r\n this.isMatch = true;\r\n }\r\n\r\n clearFieldErrors(field) {\r\n this.formErrors[field] = '';\r\n }\r\n\r\n cancelForm() {\r\n this.clearForm();\r\n this.showLink = true;\r\n this.loading = false;\r\n this.isMatch = true;\r\n this.showSKForm = false;\r\n this.showEUDForm = false;\r\n }\r\n\r\n get apiSKFormControls() {\r\n return this.apiSKForm.controls;\r\n }\r\n\r\n get apiEUDFormControls() {\r\n return this.apiEUDForm.controls;\r\n }\r\n\r\n reloadData() {\r\n\r\n this.apiService.getApiCredentials(this.customer).subscribe(data => {\r\n this.apiData = data;\r\n this.clientData = (this.apiData as IApiCredentials).data;\r\n this.loading = false;\r\n });\r\n }\r\n\r\n saveSKForm() {\r\n\r\n this.setFormErrors(this.dataScopeEnum.SKOREA);\r\n\r\n if (this.apiSKForm.valid && this.isMatch) {\r\n\r\n this.saving = true;\r\n this.formSaved = true;\r\n this.loading = true;\r\n\r\n const apiCredentials = {\r\n 'credentialId': this.apiSKForm.value.clientId,\r\n 'credentialSecret': this.apiSKForm.value.clientPassword\r\n };\r\n\r\n this.subscription = this.apiService.saveApiCredentials(apiCredentials, this.dataScopeEnum.SKOREA).subscribe(res => {\r\n\r\n if (res['isSuccess']) {\r\n this.showLink = true;\r\n this.showSKForm = false;\r\n this.displayedText = `Delete South Korea API Credentials - Client ID: `;\r\n\r\n this.clearForm();\r\n this.toastr.success('Api Credentials saved successfully', '', { closeButton: true });\r\n this.reloadData();\r\n this.saving = false;\r\n } else {\r\n\r\n this.displayedText = 'Add South Korea Credentials';\r\n this.loading = false;\r\n this.saving = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n saveEUDForm() {\r\n\r\n this.setFormErrors(this.dataScopeEnum.EUDAMED);\r\n\r\n if (this.apiEUDForm.valid && this.isMatch) {\r\n\r\n this.saving = true;\r\n\r\n this.duplicateSNR = this.isDuplicate(this.apiEUDForm.value.srn);\r\n\r\n if (!this.duplicateSNR) {\r\n\r\n this.formErrors.srn = '';\r\n this.formSaved = true;\r\n this.loading = true;\r\n\r\n const apiCredentials = {\r\n 'credentialId': this.apiEUDForm.value.srn,\r\n 'credentialSecret': this.apiEUDForm.value.accessToken\r\n };\r\n\r\n this.subscription = this.apiService.saveApiCredentials(apiCredentials, this.dataScopeEnum.EUDAMED).subscribe(res => {\r\n\r\n if (res['isSuccess']) {\r\n this.showLink = true;\r\n this.showEUDForm = false;\r\n this.clearForm();\r\n this.toastr.success('Api Credentials saved successfully', '', { closeButton: true });\r\n\r\n this.reloadData();\r\n this.saving = false;\r\n }\r\n });\r\n } else {\r\n this.formErrors.srn = this.validationMessages.srn.duplicate;\r\n this.saving = false;\r\n }\r\n }\r\n }\r\n\r\n isDuplicate(srn: string): boolean {\r\n\r\n let retVal;\r\n let exists;\r\n let credentials;\r\n\r\n if (this.clientData) {\r\n const eudData = (this.clientData as any).filter(d => d['applicationVariantName'] === this.dataScopeEnum.EUDAMED.toLowerCase());\r\n\r\n if (eudData && eudData.length) {\r\n\r\n credentials = eudData[0].credentialIds;\r\n }\r\n\r\n if (credentials && credentials.length) {\r\n\r\n credentials.map(item => item)\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n\r\n for (let i = 0; i < credentials.length; i++) {\r\n exists = credentials.filter(\r\n c => c === srn\r\n )[0];\r\n }\r\n }\r\n }\r\n\r\n retVal = !!exists;\r\n\r\n return retVal;\r\n }\r\n\r\n\r\n clearForm() {\r\n this.apiSKForm.reset();\r\n this.apiEUDForm.reset();\r\n this.loading = false;\r\n }\r\n\r\n setFormErrors(appVar) {\r\n\r\n switch (appVar) {\r\n case this.dataScopeEnum.SKOREA:\r\n if (!this.apiSKForm.value.clientId) {\r\n\r\n this.formErrors.clientId = this.validationMessages.clientId.required;\r\n }\r\n\r\n if (!this.apiSKForm.value.clientPassword) {\r\n\r\n this.formErrors.clientPassword = this.validationMessages.clientPassword.required;\r\n }\r\n\r\n if (!this.apiSKForm.value.comparePassword) {\r\n\r\n this.formErrors.comparePassword = this.validationMessages.comparePassword.required;\r\n }\r\n break;\r\n\r\n case this.dataScopeEnum.EUDAMED:\r\n if (!this.apiEUDForm.value.srn) {\r\n\r\n this.formErrors.srn = this.validationMessages.srn.required;\r\n } else {\r\n if (!this.apiEUDForm.value.srn.pattern) {\r\n\r\n this.formErrors.srn = this.validationMessages.srn.pattern;\r\n }\r\n }\r\n\r\n if (!this.apiEUDForm.value.accessToken) {\r\n\r\n this.formErrors.accessToken = this.validationMessages.accessToken.required;\r\n }\r\n\r\n if (!this.apiEUDForm.value.compareAccessToken) {\r\n\r\n this.formErrors.compareAccessToken = this.validationMessages.compareAccessToken.required;\r\n }\r\n break;\r\n }\r\n\r\n this.loading = false;\r\n }\r\n\r\n\r\n /**\r\n * The function drills to down from the FormGroup or FormArray down\r\n * to the AbstractControl in order to check if the value is entered.\r\n * Populates the FormErrors object based on the Validators attached to the formControls.\r\n * @param {FormGroup} group passed by the form validation.\r\n */\r\n logValidationErrors(group: FormGroup): void {\r\n Object.keys(group.controls).forEach((key: string) => {\r\n const abstractControl = group.get(key);\r\n\r\n this.formErrors[key] = '';\r\n if (abstractControl && !abstractControl.valid\r\n && (abstractControl.touched || abstractControl.dirty)\r\n ) {\r\n const messages = this.validationMessages[key];\r\n\r\n for (const errorKey in abstractControl.errors) {\r\n if (errorKey) {\r\n this.formErrors[key] += messages[errorKey] + ' ';\r\n }\r\n }\r\n }\r\n\r\n if (abstractControl instanceof FormGroup) {\r\n this.logValidationErrors(abstractControl);\r\n }\r\n\r\n // We need this additional check to get to the FormGroup\r\n // in the FormArray and then recursively call this\r\n // logValidationErrors() method to fix the broken validation\r\n if (abstractControl instanceof FormArray) {\r\n for (const control of abstractControl.controls) {\r\n if (control instanceof FormGroup) {\r\n this.logValidationErrors(control);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n srnOnBlur(event) {\r\n\r\n const srn = event.target.value;\r\n\r\n if (this.isDuplicate(srn)) {\r\n this.formErrors.srn = this.validationMessages.srn.duplicate;\r\n }\r\n }\r\n\r\n viewPassword() {\r\n\r\n // get the field\r\n const element = document.getElementsByName('accessToken')[0];\r\n\r\n // get the icon\r\n const passStatus = document.getElementById('pass-status');\r\n\r\n if ((element as any).type === 'password') {\r\n (element as any).type = 'text';\r\n (passStatus as any).className = 'fal fa-eye-slash';\r\n } else {\r\n (element as any).type = 'password';\r\n (passStatus as any).className = 'fal fa-eye';\r\n }\r\n }\r\n\r\n\r\n\r\n viewPasswordCompare() {\r\n const element = document.getElementsByName('compareAccessToken')[0];\r\n const passStatus = document.getElementById('pass-status-compare');\r\n\r\n if ((element as any).type === 'password') {\r\n (element as any).type = 'text';\r\n (passStatus as any).className = 'fal fa-eye-slash';\r\n } else {\r\n (element as any).type = 'password';\r\n (passStatus as any).className = 'fal fa-eye';\r\n }\r\n }\r\n\r\n onKeyUpAccessToken(event) {\r\n\r\n if (event.target.value) {\r\n this.showEyeIcon = true;\r\n } else {\r\n this.showEyeIcon = false;\r\n }\r\n }\r\n\r\n onKeyUpAccessTokenCompare(event) {\r\n\r\n if (event.target.value) {\r\n this.showEyeIconCompare = true;\r\n } else {\r\n this.showEyeIconCompare = false;\r\n }\r\n }\r\n\r\n get eudaForm() {\r\n return this.apiEUDForm.controls;\r\n }\r\n\r\n get skForm() {\r\n return this.apiSKForm.controls;\r\n }\r\n\r\n // language support\r\n tabChanged(event) {\r\n\r\n this.tabset.activeId = event.nextId;\r\n this.storageManagerService.write('languagePageActiveTab', event.nextId);\r\n }\r\n\r\n joinFieldArray(data, field): string {\r\n\r\n let retVal;\r\n\r\n const fieldArray = data[field];\r\n\r\n if (fieldArray && fieldArray.length) {\r\n retVal = fieldArray.map((elem) => {\r\n return elem.languageValue;\r\n })?.join(', ');\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n sortArray(array, property) {\r\n\r\n let retVal = array?.sort((a, b) => a[property].localeCompare(b[property]))\r\n\r\n return retVal;\r\n }\r\n\r\n editChannelLanguages(data) {\r\n\r\n this.displayEditScreen = true;\r\n this.channelBeingEdited = data.channel;\r\n this.channelLanguageEnabled = data.enabled;\r\n this.selectedDisplayLanguageCode = data.displayLanguage.languageValue?.toUpperCase();\r\n\r\n this.setValidationErrors(false);\r\n\r\n this.channelLanguageSupport = data;\r\n\r\n this.formModified = false;\r\n\r\n if (data.channel.toLowerCase() === this.dataScopeEnum.EUDAMED.toLowerCase()) {\r\n this.apiService.getSystemLanguages(this.eudamedLanguagesCategory).subscribe(data => {\r\n\r\n if (data && data.length) {\r\n this.createListBoxDataStore(data);\r\n }\r\n })\r\n } else {\r\n this.createListBoxDataStore(this.systemLanguages);\r\n }\r\n }\r\n\r\n checkChanged(channelToCheck) {\r\n\r\n // compare with the original object\r\n const originalChannel = this.sortedClientLanguageDataNames.find(x => x.channel === channelToCheck.channel);\r\n\r\n // enabled property\r\n if (originalChannel.enabled !== this.channelLanguageEnabled) {\r\n return true;\r\n }\r\n\r\n // display language\r\n if (!channelToCheck.enabled) {\r\n this.selectedDisplayLanguageCode = '';\r\n this.selectedLanguagesArray = [];\r\n } else\r\n\r\n if (originalChannel.displayLanguage?.languageCode?.toLowerCase() !== this.selectedDisplayLanguageCode?.toLowerCase()) {\r\n return true;\r\n }\r\n\r\n // if the length of the supported languages array is not the same - something modified\r\n if (originalChannel.supportedLanguages.length !== this.selectedLanguagesArray.length) {\r\n return true;\r\n } else {\r\n\r\n let modifiedLang = 0;\r\n\r\n // if the length is the same check if the lenght is greater than 0 and compare\r\n if (originalChannel.supportedLanguages.length) {\r\n\r\n originalChannel.supportedLanguages.forEach(element => {\r\n\r\n if (this.selectedLanguagesArray.findIndex(x => x.code.toLowerCase() === element.languageCode.toLowerCase()) === -1) {\r\n modifiedLang++;\r\n }\r\n });\r\n }\r\n\r\n return modifiedLang > 0;\r\n }\r\n }\r\n\r\n saveLanguageEdit(save: boolean) {\r\n\r\n // update the Client object that will be sent for Saving\r\n const channelIndex = this.sortedClientLanguageDataNames.findIndex(x => x.channel.toLowerCase() === this.channelLanguageSupport.channel.toLowerCase());\r\n\r\n const channelToCheck = this.sortedClientLanguageDataNames.find(x => x.channel.toLowerCase() === this.channelLanguageSupport.channel.toLowerCase());\r\n\r\n const changed = this.checkChanged(channelToCheck);\r\n\r\n if (!changed) {\r\n this.modalDialog.show();\r\n }\r\n\r\n // validate required fields\r\n const errorsFound = changed ? this.validateLanguageEdit() : false;\r\n\r\n if (changed && !errorsFound) {\r\n\r\n this.confirmDialog.show();\r\n\r\n // if a \"save\" parameter is true do save\r\n if (save) {\r\n\r\n this.saving = true;\r\n\r\n if (this.channelLanguageSupport) {\r\n\r\n // update Channel-Language object\r\n this.channelLanguageSupport.enabled = this.channelLanguageEnabled;\r\n\r\n // update the Client object that will be sent for Saving\r\n const channelIndex = this.sortedClientLanguageDataNames.findIndex(x => x.channel.toLowerCase() === this.channelLanguageSupport.channel.toLowerCase());\r\n\r\n // update the property value on the original array\r\n this.sortedClientLanguageDataNames[channelIndex].enabled = this.channelLanguageSupport.enabled;\r\n }\r\n\r\n // set selected values on the object. First the selected languages from the List Box\r\n if (this.selectedLanguagesArray && this.selectedLanguagesArray.length) {\r\n\r\n // update the Client object that will be sent for Saving\r\n const channelIndex = this.sortedClientLanguageDataNames.findIndex(x => x.channel.toLowerCase() === this.channelLanguageSupport.channel.toLowerCase());\r\n\r\n // update the property value on the original array\r\n const selectedLangs: ILanguage[] = [];\r\n\r\n this.selectedLanguagesArray.forEach(element => {\r\n selectedLangs.push(\r\n {\r\n languageValue: element['language'],\r\n languageCode: element['code'].toLowerCase()\r\n })\r\n });\r\n\r\n // find a description of the language code of the Display Language\r\n const languageValue = this.systemLanguages.find(x => x.termValueCode.toLowerCase() === this.selectedDisplayLanguageCode.toLowerCase())?.termValueDescription;\r\n\r\n // update the property value on the original array\r\n this.sortedClientLanguageDataNames[channelIndex].displayLanguage = { languageValue: languageValue, languageCode: this.selectedDisplayLanguageCode.toLowerCase() };\r\n\r\n this.sortedClientLanguageDataNames[channelIndex].supportedLanguages = selectedLangs;\r\n } else {\r\n this.sortedClientLanguageDataNames[channelIndex].supportedLanguages = [];\r\n this.sortedClientLanguageDataNames[channelIndex].displayLanguage = {\r\n languageValue: '',\r\n languageCode: ''\r\n }\r\n }\r\n\r\n const languageSettings = {\r\n languageSupport: this.sortedClientLanguageDataNames\r\n };\r\n\r\n\r\n this.subscription = this.apiService.saveChannelLanguageConfig(languageSettings).subscribe((response: IApplicationSettings) => {\r\n\r\n if (response.isSuccess) {\r\n this.toastr.success('Your request has been processed.');\r\n\r\n if (response.data && response.data.languageSupport && response.data.languageSupport.length) {\r\n this.sortedClientLanguageDataNames = response.data.languageSupport;\r\n this.prepareClientLanguageSupportObject(this.sortedClientLanguageDataNames);\r\n }\r\n } else {\r\n this.toastr.error(response.message);\r\n }\r\n this.saving = false;\r\n this.displayEditScreen = false;\r\n this.formModified = false;\r\n });\r\n }\r\n }\r\n }\r\n\r\n validateLanguageEdit(): boolean {\r\n\r\n if (this.channelLanguageEnabled) {\r\n\r\n // check if Display Language provided\r\n if (this.selectedLanguagesArray.length && !this.selectedDisplayLanguageCode) {\r\n this.displayLanguageRequiredError = true;\r\n }\r\n\r\n if (!this.selectedLanguagesArray.length) {\r\n this.listBoxRequiredError = true;\r\n this.displayLanguageRequiredError = true;\r\n } else {\r\n this.checkMaxCountOfAllowedLanguages();\r\n }\r\n\r\n return this.displayLanguageRequiredError || this.listBoxRequiredError || this.languageMaxCountError;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n checkMaxCountOfAllowedLanguages() {\r\n\r\n\r\n const editedChannel = this.channelBeingEdited?.toLowerCase() === this.dataScopeEnum.EUDAMED.toLowerCase() ? 'eudamed' : 'default';\r\n\r\n // check that the numbers of selected languages not exceed the allowed maximum\r\n if (this.appConfigObject.maximumNumberOfLanguagesForHA && this.appConfigObject.maximumNumberOfLanguagesForHA.length) {\r\n\r\n const maxCount = this.appConfigObject.maximumNumberOfLanguagesForHA.find(x => x.channel.toLowerCase() === editedChannel)?.maxCount;\r\n\r\n this.languageMaxCountError = this.selectedLanguagesArray.length > (maxCount ? maxCount : 1);\r\n } else {\r\n\r\n // if no setting for some reason\r\n this.languageMaxCountError = this.selectedLanguagesArray.length > (editedChannel.toLowerCase() === this.dataScopeEnum.EUDAMED.toLowerCase() ? 25 : 1);\r\n }\r\n }\r\n\r\n setValidationErrors(flag) {\r\n this.displayLanguageRequiredError = flag;\r\n this.listBoxRequiredError = flag;\r\n this.languageMaxCountError = flag;\r\n }\r\n\r\n validationErrors() {\r\n return this.displayLanguageRequiredError || this.listBoxRequiredError || this.languageMaxCountError;\r\n }\r\n\r\n cancelLanguageEdit() {\r\n\r\n this.channelBeingEdited = '';\r\n this.selectedDisplayLanguageCode = '';\r\n this.selectedLanguagesArray = [];\r\n\r\n this.displayEditScreen = false;\r\n this.formModified = false;\r\n this.setValidationErrors(false);\r\n }\r\n\r\n toggleChannelEnableLanguageMode(event) {\r\n\r\n this.formModified = true;\r\n this.channelLanguageEnabled = event.checked;\r\n\r\n if (this.selectedLanguagesArray && this.selectedLanguagesArray.length) {\r\n\r\n let listboxobj: ListBox = getInstance(document.getElementById('listbox'), ListBox) as ListBox;\r\n\r\n this.selectedLanguagesArray.forEach(element => {\r\n listboxobj.selectItems([element['displayValue']], this.channelLanguageEnabled);\r\n });\r\n }\r\n\r\n if (!this.channelLanguageEnabled) {\r\n this.selectedLanguagesArray = [];\r\n this.selectedDisplayLanguageCode = '';\r\n }\r\n\r\n this.listBoxRequiredError = false;\r\n this.displayLanguageRequiredError = false;\r\n }\r\n\r\n listBoxCreated() {\r\n\r\n this.selectedLanguagesArray = [];\r\n\r\n // get the listbox instance\r\n let listboxobj: ListBox = getInstance(document.getElementById('listbox'), ListBox) as ListBox;\r\n\r\n this.languagesListBoxDS.forEach(element => {\r\n // find the languages that had been previously selected for the channel\r\n if (this.channelLanguageSupport && this.channelLanguageSupport.supportedLanguages.length) {\r\n // select the language in the list\r\n if (this.channelLanguageSupport.supportedLanguages.findIndex(x => x.languageCode?.toLowerCase() === element.code.toLowerCase()) > -1) {\r\n\r\n listboxobj.selectItems([element['displayValue']]);\r\n\r\n // concatenate language and code for display\r\n element.displayValue = `${ element.language } (${ element.code })`;\r\n this.selectedLanguagesArray.push(element)\r\n }\r\n }\r\n });\r\n\r\n this.selectedDisplayLanguageCode = this.channelLanguageSupport.displayLanguage.languageCode.toUpperCase();\r\n }\r\n\r\n listboxSelectionChanged(event) {\r\n\r\n this.formModified = true;\r\n this.selectedLanguagesArray = [];\r\n this.selectedLanguagesArray = event.items;\r\n\r\n const previouslySavedDisplayLanguage = this.sortedClientLanguageDataNames.find(x => x.channel.toLowerCase() === this.channelBeingEdited.toLowerCase())?.displayLanguage?.languageCode;\r\n\r\n const displayedLanguageExistsInDdw = this.selectedLanguagesArray.findIndex( x => x.code.toLowerCase() === previouslySavedDisplayLanguage.toLowerCase()) >= 0;\r\n\r\n // set the display language\r\n if (!previouslySavedDisplayLanguage || this.selectedLanguagesArray.length === 1 || !displayedLanguageExistsInDdw) {\r\n this.selectedDisplayLanguageCode = this.selectedLanguagesArray[0]?.code;\r\n }\r\n\r\n if (this.selectedLanguagesArray.length) {\r\n this.listBoxRequiredError = false;\r\n\r\n this.checkMaxCountOfAllowedLanguages();\r\n } else {\r\n this.languageMaxCountError = false;\r\n this.displayLanguageRequiredError = false;\r\n }\r\n }\r\n\r\n displayLanguageChanged(event) {\r\n\r\n this.formModified = true;\r\n\r\n this.selectedDisplayLanguageCode = event.itemData ? event.itemData.code : '';\r\n\r\n if (this.selectedDisplayLanguageCode) {\r\n this.displayLanguageRequiredError = false;\r\n } else {\r\n\r\n if (this.selectedLanguagesArray.length) {\r\n this.displayLanguageRequiredError = true;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // in this case can't reuse the subscription. Need a separate subscription for the timer\r\n // to be able to stop the timer on ngOnDestroy. Otherwise it keeps triggering on other pages.\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Event as NavigationEvent, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { IApplicationSettings } from '../../shared/models/app-settings.model';\r\nimport { ICustomer, ICustomerApplicationVariant, IHasPermissionObject, IPermission } from '../../shared/models/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { ApiCredentialsService, AuthorizationService, CustomerService, StorageManagerService } from '../../shared/services/index';\r\nimport { AbsoluteSessionTimeoutService } from '../../shared/services/session-timeout-absolute.service';\r\nimport { SessionTimeoutService } from '../../shared/services/session-timeout.service';\r\nimport { CompanyDatascopeSelectorComponent } from '../company-datascope-selector//company-datascope-selector.component';\r\nimport { HomeComponent } from '../home/home.component';\r\nimport { CustomerSelectorComponent, FooterComponent, NavMenuComponent } from '../index';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n position: object = { X: 'center', Y: 'center' };\r\n modalWidth = '25%';\r\n modalHeight = 'auto';\r\n animationSettings: Object = { effect: 'Zoom' };\r\n isModal = true;\r\n sessionExpireSecondsLeft: number;\r\n absoluteSessionExpireMinutesLeft: number;\r\n hidden = false;\r\n\r\n title = 'app';\r\n isIframe: boolean;\r\n lastLogonDate: string;\r\n hasPermission: boolean;\r\n hasCurrentCustomer: boolean;\r\n userName: string;\r\n permissionsSet = [];\r\n permissionsPerClient = [];\r\n permissionsPerClientObjectSet: IPermission[] = [];\r\n selectedCustomer: string;\r\n subscription: Subscription;\r\n currentCustomer: ICustomer;\r\n email: string;\r\n loggedIn = false;\r\n customerId: number;\r\n userGuid: string;\r\n customers: ICustomer[] = [];\r\n eligibleCustomers: any[] = [];\r\n dataScope: string;\r\n dataSourceApi: any;\r\n dataScopeId: number;\r\n dataSource: any[] = [];\r\n applications: any[] = [];\r\n customersDataSource: any[] = [];\r\n activeLink: string;\r\n permissionsConst: any;\r\n clientLanguageEnabled = false;\r\n\r\n private applicationName = 'SingleSource';\r\n\r\n @ViewChild('customerSelector')\r\n customerSelector: CustomerSelectorComponent;\r\n\r\n @ViewChild('navMenu', { static: true })\r\n navMenuComponent: NavMenuComponent;\r\n\r\n @ViewChild('footer', { static: true })\r\n footerComponent: FooterComponent;\r\n\r\n @ViewChild('sessionTimeoutModal', { static: true })\r\n public sessionTimeoutModal: DialogComponent;\r\n\r\n @ViewChild('absoluteSessionTimeoutModal', { static: true })\r\n public absoluteSessionTimeoutModal: DialogComponent;\r\n\r\n @ViewChild('companyDatascopeSelectorComponent')\r\n companyDatascopeSelectorComponent: CompanyDatascopeSelectorComponent;\r\n\r\n hasPermissionSubject: BehaviorSubject = new BehaviorSubject(false);\r\n lastLogonDateSourceSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n homeComponent: HomeComponent;\r\n\r\n dataScopeName: any;\r\n loading: boolean;\r\n customer: ICustomer;\r\n companyDialogVisible = false;\r\n showDataScopeSelection = false;\r\n navigateTo = '';\r\n applicationSettings: IApplicationSettings;\r\n\r\n constructor (private authorizationService: AuthorizationService, private storageManagerService: StorageManagerService,\r\n private authenticationService: AuthenticationService, private customerService: CustomerService, private router: Router,\r\n private sessionTimeoutservice: SessionTimeoutService, private absoluteSessionTimeoutService: AbsoluteSessionTimeoutService, private appGlobals: AppGlobals, private apiService: ApiCredentialsService) {\r\n\r\n // Initialize datadog RUM\r\n authenticationService.initDataDogScriptElement()\r\n .then(() => {\r\n authenticationService.initDataDogRUM();\r\n })\r\n .catch(); // ignore the exceptions here: There is a chance that you might see \"ERROR Error: Uncaught (in promise): ChunkLoadError: Loading chunk 1 failed.\" when datadog script type is set to \"text/plain\"\r\n\r\n\r\n router.events\r\n .subscribe((routerEvent: NavigationEvent) => {\r\n if (routerEvent instanceof NavigationStart) {\r\n\r\n this.activeLink = routerEvent.url;\r\n this.loading = true;\r\n }\r\n if (routerEvent instanceof NavigationEnd ||\r\n routerEvent instanceof NavigationCancel ||\r\n routerEvent instanceof NavigationError) {\r\n\r\n this.loading = false;\r\n }\r\n });\r\n\r\n // This is to avoid reload during acquireTokenSilent() because of hidden iframe\r\n this.isIframe = window !== window.parent && !window.opener;\r\n\r\n // Handle the browser refresh\r\n if (this.storageManagerService.read('lastLogonDate')) {\r\n this.lastLogonDate = this.storageManagerService.read('lastLogonDate');\r\n this.authorizationService.lastLogonDateSourceSubject.next(this.lastLogonDate);\r\n }\r\n\r\n if (this.storageManagerService.read('hasPermission')) {\r\n this.hasPermission = this.storageManagerService.read('hasPermission');\r\n this.authorizationService.hasPermissionSubject.next(this.hasPermission);\r\n }\r\n\r\n this.permissionsSet = this.storageManagerService.read('accessPermissions');\r\n this.permissionsConst = this.appGlobals.permissions;\r\n }\r\n\r\n onActivate(componentRef) {\r\n\r\n if (componentRef instanceof HomeComponent) {\r\n\r\n this.homeComponent = componentRef;\r\n this.navMenuComponent.activeLink = '/';\r\n return;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.subscription = this.authenticationService.getUserData().catch((err) =>\r\n this.handleError(err)).subscribe((userData: any) => {\r\n if (userData) {\r\n\r\n const cust = this.storageManagerService.read('currentCustomer');\r\n if (cust) {\r\n this.currentCustomer = typeof cust === 'object' ? cust : JSON.parse(cust);\r\n\r\n this.authenticationService.initPendo(userData.userguid, this.currentCustomer.customerName);\r\n }\r\n\r\n this.userName = userData.name;\r\n this.email = userData.preferred_username;\r\n\r\n if (userData.applications) {\r\n this.applications = JSON.parse(userData.applications);\r\n }\r\n\r\n if (this.homeComponent) {\r\n this.homeComponent.setUserName(this.userName);\r\n this.homeComponent.customer = this.currentCustomer;\r\n }\r\n\r\n if (this.applications && this.applications.length > 0) {\r\n\r\n if (!this.storageManagerService.read('userGuid')) {\r\n\r\n this.subscription = this.authorizationService.getPermisions(userData.preferred_username)\r\n .subscribe((res: IHasPermissionObject) => {\r\n\r\n const hasApplicationPermissions = res.hasApplicationPermissions;\r\n\r\n this.hasPermissionSubject.next(hasApplicationPermissions);\r\n this.hasPermission = hasApplicationPermissions;\r\n this.authorizationService.hasPermissionSubject.next(this.hasPermission);\r\n this.storageManagerService.write('hasPermission', hasApplicationPermissions);\r\n this.lastLogonDateSourceSubject.next(userData.lastlogondate);\r\n this.storageManagerService.write('lastLogonDate', userData.lastlogondate);\r\n this.storageManagerService.write('userGuid', res.userGuid);\r\n\r\n if (!hasApplicationPermissions) {\r\n this.storageManagerService.write('accessDeniedEmail', this.email);\r\n this.router.navigate(['/accessdenied']).then(() => {\r\n return;\r\n });\r\n } else {\r\n\r\n this.subscription = this.getCustomers().catch((err) =>\r\n this.handleError(err)).subscribe(data => {\r\n\r\n this.subscription = this.getCustomerApplicationVariants().catch((err) =>\r\n this.handleError(err)).subscribe(appVars => {\r\n this.customers = data;\r\n\r\n if (appVars && appVars.length) {\r\n appVars.sort((a, b) => a.applicationVariantName.localeCompare(b.applicationVariantName));\r\n }\r\n\r\n if (this.customers && this.customers.length > 0) {\r\n\r\n this.eligibleCustomers = [];\r\n\r\n this.customers.forEach(cu => {\r\n if (cu['activeFlag'] === true) {\r\n const c = {};\r\n c['customerId'] = cu['customerId'];\r\n c['customerGuid'] = cu['customerGuid'];\r\n c['customerName'] = cu['customerName'];\r\n c['applicationVariants'] = appVars\r\n .filter(appVar => appVar.customerGuid === cu['customerGuid'])\r\n .map(v => {\r\n return {\r\n applicationVariantName: v.applicationVariantName,\r\n applicationVariantId: v.applicationVariantId\r\n };\r\n });\r\n if (c['applicationVariants'].length > 0) {\r\n this.eligibleCustomers.push(c);\r\n }\r\n }\r\n });\r\n\r\n if (this.eligibleCustomers && this.eligibleCustomers.length) {\r\n this.eligibleCustomers.sort((a, b) => a.customerName.localeCompare(b.customerName));\r\n }\r\n\r\n this.storageManagerService.write('eligibleCustomers', this.eligibleCustomers);\r\n\r\n if (this.eligibleCustomers.length === 1) {\r\n\r\n this.storageManagerService.write('currentCustomer', this.eligibleCustomers[0]);\r\n this.homeComponent.customer = this.eligibleCustomers[0];\r\n\r\n if (this.eligibleCustomers[0].applicationVariants.length === 1) {\r\n this.storageManagerService.write('dataScope', this.eligibleCustomers[0].applicationVariants[0].applicationVariantName.toLowerCase());\r\n }\r\n\r\n if (!this.permissionsSet || !this.permissionsSet.length) {\r\n\r\n this.subscription = this.authorizationService.setAccessPermissions(this.email).subscribe(permissionsRes => {\r\n\r\n if (permissionsRes) {\r\n\r\n // setPermissions function writes to the storage, converts and sets permissionSet vars\r\n this.setPermissions(permissionsRes);\r\n\r\n\r\n this.subscription = this.customerService.getCompanySetting(this.currentCustomer.customerId.toString(), 'isLanguageEnabled').subscribe(response => {\r\n if (response && !response.IsError) {\r\n this.customerService.applicationSettings.next(response.data);\r\n this.storageManagerService.write('clientLanguageEnabled', response.data);\r\n this.clientLanguageEnabled = response.data;\r\n\r\n if (this.navMenuComponent) {\r\n\r\n this.navMenuComponent.hasCurrentCustomer = true;\r\n this.navMenuComponent.selectedCustomer = this.selectedCustomer;\r\n this.navMenuComponent.customers = this.eligibleCustomers;\r\n\r\n this.navMenuComponent.permissionsSet = this.permissionsSet;\r\n this.navMenuComponent.uploadFilesMenu = this.authorizationService.hasPermission(this.permissionsConst.CanUploadFile);\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n this.navMenuComponent.exportDataPermitted = this.authorizationService.exportDataPermission();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.customers = this.eligibleCustomers[0].customerId;\r\n this.currentCustomer = this.eligibleCustomers[0];\r\n if (this.navMenuComponent) {\r\n this.navMenuComponent.hasCurrentCustomer = true;\r\n this.navMenuComponent.selectedCustomer = this.eligibleCustomers[0].customerName;\r\n }\r\n\r\n this.subscription = this.customerService.getCompanySetting(this.currentCustomer.customerId.toString(), 'isLanguageEnabled').subscribe(response => {\r\n if (response && !response.IsError) {\r\n this.customerService.applicationSettings.next(response.data);\r\n this.storageManagerService.write('clientLanguageEnabled', response.data);\r\n this.clientLanguageEnabled = response.data;\r\n\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (this.currentCustomer) {\r\n\r\n if (!this.permissionsSet || !this.permissionsSet.length) {\r\n\r\n this.subscription = this.authorizationService.setAccessPermissions(userData.preferred_username).subscribe(resp => {\r\n\r\n this.dataScope = this.storageManagerService.read('dataScope');\r\n\r\n // process permission set according to the datascope\r\n this.setPermissions(resp);\r\n\r\n if (this.navMenuComponent) {\r\n this.navMenuComponent.permissionsSet = this.permissionsSet;\r\n this.navMenuComponent.uploadFilesMenu = this.authorizationService.hasPermission(this.permissionsConst.CanUploadFile);\r\n }\r\n });\r\n }\r\n } else {\r\n this.customers = this.eligibleCustomers;\r\n\r\n if (this.customers && this.customers.length === 0) {\r\n this.router.navigate(['/accessdenied']);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n });\r\n } else {\r\n if (!this.permissionsSet || this.permissionsSet.length === 0) {\r\n\r\n if (this.currentCustomer) {\r\n\r\n this.subscription = this.customerService.getCompanySetting(this.currentCustomer.customerId.toString(), 'isLanguageEnabled').subscribe(response => {\r\n if (response && !response.IsError) {\r\n this.customerService.applicationSettings.next(response.data);\r\n this.storageManagerService.write('clientLanguageEnabled', response.data);\r\n this.clientLanguageEnabled = response.data;\r\n\r\n const user = this.storageManagerService.read('userData');\r\n if (user && user !== '\"\"') {\r\n\r\n const userName = typeof user === 'object' ? user.preferred_username : JSON.parse(user).preferred_username;\r\n\r\n this.subscription = this.authorizationService.setAccessPermissions(userName).subscribe(res => {\r\n\r\n this.dataScope = this.storageManagerService.read('dataScope');\r\n\r\n this.setPermissions(res);\r\n\r\n if (this.navMenuComponent) {\r\n this.navMenuComponent.permissionsSet = this.permissionsSet;\r\n this.navMenuComponent.uploadFilesMenu = this.authorizationService.hasPermission(this.permissionsConst.CanUploadFile);\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n this.navMenuComponent.exportDataPermitted = this.authorizationService.exportDataPermission();\r\n }\r\n });\r\n }\r\n\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n }\r\n });\r\n\r\n\r\n } else {\r\n\r\n this.eligibleCustomers = this.storageManagerService.read('eligibleCustomers');\r\n\r\n if (this.eligibleCustomers && this.eligibleCustomers.length > 0) {\r\n this.customers = this.eligibleCustomers;\r\n }\r\n }\r\n } else {\r\n\r\n this.subscription = this.customerService.getCompanySetting(this.currentCustomer.customerId.toString(), 'isLanguageEnabled').subscribe(response => {\r\n if (response && !response.IsError) {\r\n this.customerService.applicationSettings.next(response.data);\r\n this.storageManagerService.write('clientLanguageEnabled', response.data);\r\n this.clientLanguageEnabled = response.data;\r\n\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n\r\n if (this.navMenuComponent) {\r\n this.navMenuComponent.permissionsSet = this.permissionsSet;\r\n this.navMenuComponent.uploadFilesMenu = this.authorizationService.hasPermission(this.permissionsConst.CanUploadFile);\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n this.navMenuComponent.exportDataPermitted = this.authorizationService.exportDataPermission();\r\n }\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n this.subscription = this.authenticationService.getIsAuthorized().subscribe(\r\n (isAuthorized: boolean) => {\r\n if (isAuthorized) {\r\n this.absoluteSessionTimeoutService.reset();\r\n }\r\n if (this.navMenuComponent) {\r\n this.navMenuComponent.loggedIn = isAuthorized;\r\n }\r\n });\r\n\r\n this.subscription = this.authorizationService.hasPermissionSubject.subscribe((res) => {\r\n this.hasPermission = res;\r\n });\r\n\r\n this.lastLogonDate = this.storageManagerService.read('lastLogonDate');\r\n\r\n if (!this.lastLogonDate) {\r\n\r\n this.subscription = this.lastLogonDateSourceSubject.subscribe(res => {\r\n this.lastLogonDate = res;\r\n\r\n });\r\n }\r\n\r\n // Session Time out\r\n this.subscription = this.sessionTimeoutservice.sessionTimeoutWarning.subscribe(time => {\r\n this.sessionExpireSecondsLeft = time / 1000;\r\n this.displaySessionExpireWarning();\r\n });\r\n this.sessionTimeoutservice.reset();\r\n\r\n // Absolute Session\r\n this.subscription = this.absoluteSessionTimeoutService.sessionTimeoutWarning.subscribe(time => {\r\n this.absoluteSessionExpireMinutesLeft = time / 60000;\r\n this.displayAbsoluteSessionExpireWarning();\r\n });\r\n } else {\r\n this.router.navigate(['/accessdenied']);\r\n }\r\n }\r\n });\r\n }\r\n\r\n dialogClicked(event) {\r\n\r\n if (event.target && event.target.type !== 'button') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n getCustomers(): Observable {\r\n\r\n this.userGuid = this.storageManagerService.read('userGuid');\r\n\r\n const paramsContainer = {\r\n applicationName: this.applicationName,\r\n userGuid: this.userGuid\r\n };\r\n\r\n return this.customerService.getCustomers(paramsContainer);\r\n }\r\n\r\n getCustomerApplicationVariants(): Observable {\r\n\r\n this.userGuid = this.storageManagerService.read('userGuid');\r\n\r\n const paramsContainer = {\r\n applicationName: this.applicationName,\r\n userGuid: this.userGuid\r\n };\r\n\r\n return this.customerService.getCustomerApplicationVariants(paramsContainer);\r\n }\r\n\r\n changeDataScope(dataScope: any) {\r\n\r\n this.dataScopeName = dataScope['name'];\r\n }\r\n\r\n receiveCustomer(customer: any) {\r\n\r\n this.dataSourceApi = [];\r\n this.permissionsPerClient = [];\r\n const oldCustomer = this.currentCustomer;\r\n\r\n this.currentCustomer = customer;\r\n this.selectedCustomer = customer.customerName;\r\n\r\n this.storageManagerService.write('currentCustomer', customer);\r\n this.storageManagerService.remove('userPrefs');\r\n\r\n this.dataScope = this.storageManagerService.read('dataScope');\r\n\r\n this.setApplicationSettings('isLanguageEnabled')\r\n\r\n // if Client is the same and only datascope has changed no need to call for a permissions, just filter out the existing objects set accordingly\r\n if (oldCustomer && (+this.currentCustomer.customerId === +oldCustomer.customerId)) {\r\n\r\n const permissions: IPermission[] = this.storageManagerService.read('accessPermissions');\r\n\r\n if (permissions && permissions.length) {\r\n\r\n this.setPermissions(permissions);\r\n this.navMenuComponent.dataScope = this.dataScope;\r\n this.navMenuComponent.hasCurrentCustomer = true;\r\n this.navMenuComponent.selectedCustomer = this.selectedCustomer;\r\n this.navMenuComponent.permissionsSet = this.permissionsSet;\r\n this.navMenuComponent.uploadFilesMenu = this.authorizationService.hasPermission(this.permissionsConst.CanUploadFile);\r\n\r\n if (this.homeComponent) {\r\n this.homeComponent.setUserName(this.userName);\r\n this.homeComponent.customer = this.currentCustomer;\r\n }\r\n\r\n if (customer.applicationVariants && customer.applicationVariants.length) {\r\n\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n\r\n this.navMenuComponent.exportDataPermitted = this.authorizationService.exportDataPermission();\r\n\r\n if (location.pathname.indexOf('/inventory') > -1 || location.pathname.indexOf('/fileupload') > -1\r\n || location.pathname.indexOf('/managesubmissionitems') > -1 || location.pathname.indexOf('/submissionhistory') > -1 || location.pathname.indexOf('/exportdata') > -1) {\r\n\r\n if ((this.currentCustomer.customerId !== oldCustomer.customerId) || (this.currentCustomer.customerId === oldCustomer.customerId && this.currentCustomer.applicationVariants.length > 1)) {\r\n\r\n if (!this.navigateTo || location.pathname === this.navigateTo) {\r\n window.location.reload();\r\n } else {\r\n this.router.navigate([this.navigateTo]);\r\n }\r\n }\r\n } else if (location.pathname.includes('/itemdetails') || location.pathname.includes('/submissionitemdetails') || location.pathname.includes('/submissionhistoryitem') || location.pathname.includes('/clientsettings')) {\r\n\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n }\r\n }\r\n } else {\r\n\r\n // Client selection changed - get the permissions with channels\r\n this.subscription = this.authorizationService.setAccessPermissions(this.email).subscribe(res => {\r\n\r\n if (res) {\r\n\r\n this.setPermissions(res);\r\n\r\n // untill the Channel is selected the \"per client\" permission are in place for the \"non-ha\" specific pages\r\n if (this.navMenuComponent) {\r\n\r\n if (!this.eligibleCustomers || this.eligibleCustomers.length === 0) {\r\n this.eligibleCustomers = this.storageManagerService.read('eligibleCustomers');\r\n }\r\n\r\n if (!this.dataScope) {\r\n\r\n if (customer.applicationVariants && customer.applicationVariants.length === 1) {\r\n this.storageManagerService.write('dataScope', customer.applicationVariants[0].applicationVariantName.toLowerCase());\r\n\r\n this.dataScope = customer.applicationVariants[0].applicationVariantName.toLowerCase();\r\n this.permissionsSet = this.permissionsPerClient;\r\n }\r\n }\r\n\r\n this.navMenuComponent.dataScope = this.dataScope;\r\n\r\n this.navMenuComponent.hasCurrentCustomer = true;\r\n this.navMenuComponent.selectedCustomer = this.selectedCustomer;\r\n\r\n this.navMenuComponent.permissionsSet = this.permissionsSet;\r\n this.navMenuComponent.uploadFilesMenu = this.authorizationService.hasPermission(this.permissionsConst.CanUploadFile);\r\n }\r\n\r\n // can't move the below section out of the subscribe because it's getting set before the subscription is done\r\n if (this.homeComponent) {\r\n this.homeComponent.setUserName(this.userName);\r\n this.homeComponent.customer = this.currentCustomer;\r\n }\r\n\r\n if (customer.applicationVariants && customer.applicationVariants.length) {\r\n\r\n this.subscription = this.customerService.getCompanySetting(this.currentCustomer.customerId.toString(), 'isLanguageEnabled').subscribe(response => {\r\n if (response && !response.IsError) {\r\n this.customerService.applicationSettings.next(response.data);\r\n this.storageManagerService.write('clientLanguageEnabled', response.data);\r\n this.clientLanguageEnabled = response.data;\r\n\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n }\r\n });\r\n\r\n this.navMenuComponent.exportDataPermitted = this.authorizationService.exportDataPermission();\r\n\r\n if (location.pathname.includes('/inventory') || location.pathname.includes('/fileupload')\r\n || location.pathname.includes('/managesubmissionitems') || location.pathname.includes('/submissionhistory') || location.pathname.indexOf('/exportdata') > -1) {\r\n\r\n if ((this.currentCustomer.customerId !== oldCustomer.customerId) || (this.currentCustomer.customerId === oldCustomer.customerId && this.currentCustomer.applicationVariants.length > 1)) {\r\n\r\n if (!this.navigateTo || location.pathname === this.navigateTo) {\r\n window.location.reload();\r\n } else {\r\n this.router.navigate([this.navigateTo]);\r\n }\r\n }\r\n } else if (location.pathname.includes('/itemdetails') || location.pathname.includes('/submissionitemdetails') || location.pathname.includes('/submissionhistoryitem') || location.pathname.includes('/clientsettings')) {\r\n\r\n this.router.navigate(['/home']);\r\n }\r\n }\r\n\r\n if (oldCustomer && location.pathname === '/home' || location.pathname.includes('/exportdata') || location.pathname.includes('/fileupload') || location.pathname.includes('/support')) {\r\n\r\n window.location.reload();\r\n }\r\n }\r\n });\r\n }\r\n\r\n const userguid = this.storageManagerService.read('userGuid');\r\n this.authenticationService.initPendo(userguid, this.selectedCustomer);\r\n }\r\n setApplicationSettings(setting: string) {\r\n\r\n this.subscription = this.customerService.getCompanySetting(this.currentCustomer.customerId.toString(), setting).subscribe(response => {\r\n if (response && !response.IsError) {\r\n this.customerService.applicationSettings.next(response.data);\r\n this.storageManagerService.write('clientLanguageEnabled', response.data);\r\n this.clientLanguageEnabled = response.data;\r\n\r\n this.navMenuComponent.apiAccessPermitted = this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanAccessClientAdminSettings) || (this.authorizationService.hasPermissionPerClient(this.permissionsConst.CanEditLanguageSettings) && this.clientLanguageEnabled);\r\n }\r\n });\r\n }\r\n\r\n private setPermissions(res: any) {\r\n\r\n const permissions: IPermission[] = res;\r\n\r\n // store the original permissions aray of objects in the storage\r\n this.storageManagerService.write('accessPermissions', permissions);\r\n\r\n // create a set of unique permission strings PER CLIENT.\r\n this.permissionsPerClient = this.authorizationService.permissionsToStringObject(res);\r\n\r\n if (this.dataScope) {\r\n const permissionObjects = permissions.filter(p => p.applicationVariantName.toLowerCase() === this.dataScope.toLowerCase());\r\n\r\n if (permissionObjects) {\r\n this.permissionsSet = this.authorizationService.permissionsToStringObject(permissionObjects);\r\n }\r\n\r\n } else {\r\n this.permissionsSet = this.permissionsPerClient;\r\n }\r\n }\r\n\r\n displaySessionExpireWarning() {\r\n\r\n this.sessionTimeoutModal.show();\r\n }\r\n\r\n displayAbsoluteSessionExpireWarning() {\r\n this.absoluteSessionTimeoutModal.show();\r\n }\r\n\r\n public onOverlayClick: EmitType = () => {\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n\r\n public onContinueClicked(event) {\r\n this.sessionTimeoutModal.hide();\r\n }\r\n // tslint:disable-next-line: member-ordering\r\n dlgButtons: Object[] = [{\r\n click: this.onContinueClicked.bind(this), buttonModel: { content: 'Extend my session', isPrimary: true }\r\n }];\r\n\r\n public onAbsoluteContinueClicked(event) {\r\n this.absoluteSessionTimeoutModal.hide();\r\n }\r\n\r\n // tslint:disable-next-line: member-ordering\r\n dlgAbsoluteSessionTimeoutButtons: Object[] = [{\r\n click: this.onAbsoluteContinueClicked.bind(this), buttonModel: { content: 'OK', isPrimary: true }\r\n }];\r\n\r\n\r\n private handleError(error: any) {\r\n return Observable.throwError(error);\r\n }\r\n\r\n companyModalSelectionModal(value) {\r\n\r\n this.companyDialogVisible = value;\r\n }\r\n\r\n changeShowDataScopeSelection(value) {\r\n\r\n this.showDataScopeSelection = value;\r\n }\r\n\r\n navigateToPage(value) {\r\n\r\n this.navigateTo = value;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { AutoCompleteComponent } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { AccordionComponent, ExpandEventArgs } from '@syncfusion/ej2-angular-navigations';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { closest } from '@syncfusion/ej2-base';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs-compat';\r\nimport Utils from '../../shared/helpers/utils';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IExportTemplate, ISavedTemplate, IServiceError, DeviceAttribute, Section } from '../../shared/models/index';\r\nimport { ExportDataService, StorageManagerService } from '../../shared/services/index';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-attributes-modal',\r\n templateUrl: './attributes-modal.component.html',\r\n styleUrls: ['./attributes-modal.component.css'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class AttributesModalComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n isModal = true;\r\n animationSettings: Object = { effect: 'Zoom' };\r\n modalWidth = '50%';\r\n modalHeight = '80%';\r\n visible = false;\r\n position: object = { X: 'center', Y: 'center' };\r\n mapping = { header: 'section', content: 'attributes' };\r\n itemsData: any = [];\r\n fields: Object = { value: 'attributes' };\r\n autofill = true;\r\n accordionObj: AccordionComponent;\r\n actElementObj: AutoCompleteComponent;\r\n sub: Subscription;\r\n atcSelected: any;\r\n resolverData: any[] | IServiceError;\r\n selectedAttrArray: string[] = [];\r\n selectAllChecked = false;\r\n clickEventArgs: Event;\r\n editedTemplate: any;\r\n pageLoaded = false;\r\n templateNameInput: any;\r\n atcelementInput: any;\r\n templateName = '';\r\n template: IExportTemplate;\r\n savedTemplate: ISavedTemplate = new ISavedTemplate();\r\n templateNameMissing = false;\r\n errorMessage: string;\r\n originalAttributesSet: DeviceAttribute[];\r\n originalTemplateName = '';\r\n\r\n @Input() attributes: DeviceAttribute[];\r\n @Input() properties: string[];\r\n @Input() editTemplateId: number;\r\n @Input() templates: any[];\r\n @Output() modified = new EventEmitter();\r\n\r\n @ViewChild('dialog')\r\n public dialog: DialogComponent;\r\n\r\n @ViewChildren(AccordionComponent) accordionQuery: QueryList;\r\n @ViewChildren(AutoCompleteComponent) actQuery: QueryList;\r\n\r\n constructor(private storage: StorageManagerService, private exportDataService: ExportDataService, private toastr: ToastrService) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n onAtcSelect(event) {\r\n\r\n if (event?.isInteracted) {\r\n if (event?.itemData?.value) {\r\n // do the search on the fresh data set.\r\n this.atcSelected = event.itemData?.value;\r\n\r\n this.scrollToElement(`#${this.formatId(this.atcSelected)}`);\r\n } else {\r\n // if clear is clicked scroll to the top\r\n this.scrollToElement(`#top`);\r\n }\r\n }\r\n }\r\n\r\n getAtcItemData() {\r\n\r\n this.atcelementInput = document.getElementsByName('atcelement')[0];\r\n\r\n if (this.atcelementInput) {\r\n this.onAtcSelect({ isInteracted: true, itemData: { value: (this.atcelementInput as any).value } });\r\n }\r\n }\r\n\r\n formatId(id) {\r\n return id.replace(/[- )(?]/g, '');\r\n }\r\n\r\n attrFieldCounter(attr) {\r\n\r\n let counter = attr.fields.length;\r\n\r\n if (attr.sections?.length) {\r\n attr.sections.forEach(section => {\r\n counter += section.fields.length;\r\n\r\n // loop deep insided each field in case it has sections\r\n if (section.sections.length) {\r\n section.sections.forEach(innerAttr => {\r\n counter += this.attrFieldCounter(innerAttr);\r\n });\r\n }\r\n });\r\n }\r\n\r\n return counter;\r\n }\r\n\r\n getAttrSections(attr) {\r\n\r\n let sections: Section[] = [];\r\n\r\n if (attr.sections.length) {\r\n sections = attr.sections;\r\n\r\n // loop deep insided each field in case it has sections\r\n if (sections.length) {\r\n sections.forEach(innerAttr => {\r\n sections = sections.concat(this.getAttrSections(innerAttr));\r\n });\r\n }\r\n }\r\n\r\n return sections;\r\n }\r\n\r\n scrollToElement(target): void {\r\n\r\n const element = document.querySelector(target);\r\n\r\n if (element) {\r\n this.selectAttribute(element);\r\n element.scrollIntoView({\r\n behavior: 'smooth', block: 'center'\r\n });\r\n\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n\r\n } else {\r\n\r\n setTimeout(() => {\r\n\r\n const el = document.querySelector(target);\r\n\r\n if (el) {\r\n this.selectAttribute(el);\r\n el.scrollIntoView({\r\n behavior: 'smooth', block: 'center'\r\n });\r\n }\r\n }, 300);\r\n }\r\n }\r\n\r\n selectAttribute(element) {\r\n\r\n this.clearAttributesActive();\r\n\r\n if (element && element.id !== 'top') {\r\n element.classList.add('active');\r\n }\r\n }\r\n\r\n clearAttributesActive() {\r\n\r\n const items = document.getElementsByClassName('accordionItem');\r\n\r\n if (items && items.length) {\r\n const arr = Array.from(items);\r\n\r\n const activeItem = arr.find(i => i.classList.contains('active'));\r\n if (activeItem) {\r\n activeItem.classList.remove('active');\r\n }\r\n }\r\n }\r\n\r\n defaultSelectedAttrArray() {\r\n\r\n const defaultSection = 'Device Key Identification';\r\n const defaultFields = ['UDI_DEVICE_IDENTIFIER', 'UDI_DEVICE_IDENTIFIER_ISSUING_AGENCY', 'DATA_SCOPE'];\r\n //const defaultFields = ['Primary DI/EUDAMED ID', 'Primary DI Issuing Agency/EUDAMED ID Issuing Agency', 'Data Scope'];\r\n defaultFields.forEach(attr => {\r\n if (!this.selectedAttrArray.includes(attr)) {\r\n this.selectedAttrArray.push(attr);\r\n }\r\n });\r\n\r\n const section = this.attributes.find(f => f.caption.toLowerCase() === defaultSection.toLowerCase());\r\n\r\n if (section && section.fields && section.fields.length) {\r\n section.fields.forEach(field => {\r\n\r\n if (field.caption.toLowerCase() === defaultFields[0].toLowerCase() || field.caption.toLowerCase() === defaultFields[1].toLowerCase() || field.caption.toLowerCase() === defaultFields[2].toLowerCase()) {\r\n field.isSelected = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n makeArrayUnique(arr): any[] {\r\n\r\n let uniqueArray = [];\r\n\r\n if (arr && arr.length) {\r\n\r\n uniqueArray = arr.map(item => item)\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n }\r\n\r\n return uniqueArray;\r\n }\r\n\r\n selectAll(event) {\r\n\r\n if (event.checked) {\r\n\r\n this.selectAllChecked = true;\r\n\r\n this.selectedAttrArray = [];\r\n\r\n // insert default fields - Primary DI, Primary DI Issuing agency and Data Scope\r\n this.defaultSelectedAttrArray();\r\n this.selectedAttrArray = this.selectedAttrArray.concat(this.properties);\r\n\r\n // make the array unique\r\n this.selectedAttrArray = this.makeArrayUnique(this.selectedAttrArray);\r\n\r\n } else {\r\n this.selectAllChecked = false;\r\n this.selectedAttrArray = [];\r\n\r\n // insert default fields - Primary DI, Primary DI Issuing agency and Data Scope\r\n this.defaultSelectedAttrArray();\r\n }\r\n\r\n this.updateSavedTemplate('all', event.checked);\r\n }\r\n\r\n updateSavedTemplate(item, isSelected) {\r\n\r\n if (this.savedTemplate) {\r\n if (this.savedTemplate.exportDataTemplate.deviceAttributes && this.savedTemplate.exportDataTemplate.deviceAttributes.length) {\r\n\r\n // if Select All is checked/unchecked\r\n if (item.toLowerCase() === 'all') {\r\n\r\n this.savedTemplate.exportDataTemplate.deviceAttributes.forEach(da => {\r\n\r\n // fields on the attribute level.\r\n da.fields.forEach(field => {\r\n field.isSelected = isSelected;\r\n });\r\n\r\n // update inner section fields\r\n let sections: Section[] = [];\r\n\r\n sections = this.getAttrSections(da);\r\n\r\n sections.forEach(innerSection => {\r\n innerSection.fields.forEach(field => {\r\n field.isSelected = isSelected;\r\n });\r\n });\r\n });\r\n } else {\r\n\r\n let field;\r\n\r\n // if a single item checked/unchecked\r\n this.savedTemplate.exportDataTemplate.deviceAttributes.forEach(da => {\r\n\r\n field = da.fields.find(f => f.name.toLowerCase() === item.toLowerCase());\r\n\r\n if (field) {\r\n field.isSelected = isSelected;\r\n } else {\r\n // try to search in the nested sections\r\n let sections: Section[] = [];\r\n\r\n sections = this.getAttrSections(da);\r\n\r\n if (sections.length) {\r\n sections.forEach(section => {\r\n field = section.fields.find(f => f.name.toLowerCase() === item.toLowerCase());\r\n\r\n if (field) {\r\n field.isSelected = isSelected;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n chkChanged(event, item) {\r\n\r\n this.clearAttributesActive();\r\n\r\n if (event.checked) {\r\n\r\n if (!this.selectedAttrArray.includes(item)) {\r\n this.selectedAttrArray.push(item);\r\n }\r\n } else {\r\n\r\n if (this.selectedAttrArray.includes(item)) {\r\n\r\n const index = this.selectedAttrArray.findIndex(i => i === item);\r\n this.selectedAttrArray.splice(index, 1);\r\n }\r\n }\r\n\r\n this.updateSavedTemplate(item, event.checked);\r\n }\r\n\r\n checkSectionChanged(event, section) {\r\n\r\n let fields = [];\r\n let sections: Section[] = [];\r\n\r\n const attr = this.attributes.find(a => a.caption.toLowerCase() === section.toLowerCase());\r\n\r\n sections = this.getAttrSections(attr);\r\n\r\n // attribute level fields\r\n if (attr) {\r\n fields = attr.fields;\r\n }\r\n\r\n // attribute sections level fields\r\n if (sections && sections.length) {\r\n sections.forEach(innerSection => {\r\n fields = fields.concat(innerSection.fields);\r\n });\r\n }\r\n\r\n if (fields && fields.length) {\r\n\r\n if (event.checked) {\r\n // insert all attributes from the section are in the checked array.\r\n fields.forEach(item => {\r\n if (!this.selectedAttrArray.includes(item.name)) {\r\n this.selectedAttrArray.push(item.name);\r\n this.updateSavedTemplate(item.name, true);\r\n }\r\n });\r\n } else {\r\n\r\n // remove all attributes from the section are in the checked array.\r\n fields.forEach(item => {\r\n if (this.selectedAttrArray.includes(item.name)) {\r\n\r\n const index = this.selectedAttrArray.findIndex(i => i.toLowerCase() === item.name.toLowerCase());\r\n this.selectedAttrArray.splice(index, 1);\r\n\r\n this.updateSavedTemplate(item.name, false);\r\n }\r\n });\r\n\r\n // insert default fields - Primary DI, Primary DI Issuing agency, and Data Scope\r\n this.defaultSelectedAttrArray();\r\n }\r\n }\r\n }\r\n\r\n isHeaderDisabled(section) {\r\n\r\n if (section === 'DEVICE KEY IDENTIFICATION') {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isHeaderChecked(section) {\r\n\r\n let fields = [];\r\n let count = 0;\r\n\r\n const attrSection = this.attributes.find(a => a.caption.toLowerCase() === section.toLowerCase());\r\n\r\n if (attrSection) {\r\n fields = attrSection.fields;\r\n\r\n // attribute sections level fields\r\n if (attrSection.sections && attrSection.sections.length) {\r\n attrSection.sections.forEach(innerSection => {\r\n fields = fields.concat(innerSection.fields);\r\n });\r\n }\r\n\r\n if (fields && fields.length) {\r\n\r\n // check if all attributes from the section are in the checked array.\r\n fields.forEach(element => {\r\n if (this.selectedAttrArray.includes(element.name)) {\r\n count++;\r\n }\r\n });\r\n }\r\n } else {\r\n return false;\r\n }\r\n\r\n return fields.length === count;\r\n }\r\n\r\n expanding(e: ExpandEventArgs) {\r\n\r\n if (this.clickEventArgs) {\r\n\r\n const header = closest(this.clickEventArgs.target as HTMLElement, '.e-acrdn-header');\r\n const checkboxEle = closest(this.clickEventArgs.target as HTMLInputElement, 'label');\r\n if (header && checkboxEle) {\r\n e.cancel = true;\r\n this.clickEventArgs = undefined;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public onClick(e) {\r\n this.clickEventArgs = e.originalEvent;\r\n }\r\n\r\n isChecked(item): boolean {\r\n\r\n let retVal = false;\r\n\r\n if (this.selectedAttrArray && this.selectedAttrArray.length) {\r\n retVal = this.selectedAttrArray.includes(item);\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.sub = this.accordionQuery.changes.subscribe((comps: QueryList) => {\r\n this.accordionObj = comps.first;\r\n });\r\n\r\n this.sub = this.actQuery.changes.subscribe((comps: QueryList) => {\r\n this.actElementObj = comps.first;\r\n });\r\n }\r\n\r\n isDisabled(item) {\r\n if (item === 'UDI_DEVICE_IDENTIFIER ID' || item === 'UDI_DEVICE_IDENTIFIER_ISSUING_AGENCY Agency' || item === 'DATA_SCOPE') {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n onDialogOpen(event) {\r\n\r\n let attrSections: Section[] = [];\r\n\r\n // this flag is to delay opening a modal until the checkboxes are set.\r\n this.pageLoaded = false;\r\n this.templateNameInput = document.getElementById('templateName');\r\n\r\n // Prepare the empty template for future saving.\r\n this.savedTemplate.exportDataTemplate = new IExportTemplate();\r\n\r\n // insert default fields - Primary DI, Primary DI Issuing agency and Data Scope\r\n this.defaultSelectedAttrArray();\r\n\r\n // if the Input \"templateNameEdit\" is not null - means we are in the Edit mode - insert all attribues into the selected array. It will check the checkboxes and prepares for saving.\r\n\r\n // this is \"edit\" action find the attributes of this templates so only the edited template is displayed\r\n if (this.editTemplateId) {\r\n\r\n this.editedTemplate = this.templates.find(a => a.exportTemplateId === this.editTemplateId);\r\n\r\n if (this.editedTemplate) {\r\n\r\n // store the original name if case edit is cancelled\r\n this.originalTemplateName = this.editedTemplate.exportTemplateName;\r\n // store a copy of the original attributes in case the edis is cancelled.\r\n this.originalAttributesSet = Utils.deepCopy(this.editedTemplate.exportTemplate.deviceAttributes);\r\n\r\n if (this.templateNameInput) {\r\n this.templateNameInput.value = this.editedTemplate.exportTemplateName;\r\n }\r\n\r\n if (this.editedTemplate.exportTemplate?.deviceAttributes && this.editedTemplate.exportTemplate?.deviceAttributes?.length) {\r\n\r\n // load all attributes unchecked\r\n this.savedTemplate.exportDataTemplate.deviceAttributes = this.editedTemplate.exportTemplate?.deviceAttributes;\r\n this.savedTemplate.exportDataTemplateId = this.editTemplateId;\r\n\r\n this.editedTemplate.exportTemplate?.deviceAttributes.forEach(attr => {\r\n\r\n // inside there is an array of attributes called \"fields\"\r\n if (attr.fields && attr.fields.length) {\r\n\r\n const selectedAttributes = attr.fields.filter(a => a.isSelected);\r\n\r\n attrSections = this.getAttrSections(attr);\r\n\r\n // get selected fields from the inner level\r\n if (attrSections && attrSections.length) {\r\n\r\n attrSections.forEach(innerSection => {\r\n\r\n if (innerSection.fields && innerSection.fields.length) {\r\n innerSection.fields.forEach(innerField => {\r\n if (innerField.isSelected && !this.selectedAttrArray.includes(innerField.name)) {\r\n this.selectedAttrArray.push(innerField.name);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (selectedAttributes && selectedAttributes.length) {\r\n selectedAttributes.forEach(field => {\r\n\r\n this.updateSavedTemplate(field.name, field.isSelected);\r\n\r\n if (!this.selectedAttrArray.includes(field.name)) {\r\n this.selectedAttrArray.push(field.name);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n if (this.properties.length) {\r\n this.properties = this.properties.sort();\r\n }\r\n }\r\n }\r\n } else {\r\n this.savedTemplate.exportDataTemplate.deviceAttributes = this.attributes;\r\n }\r\n\r\n this.pageLoaded = true;\r\n }\r\n\r\n onDialogClose(event) {\r\n this.selectedAttrArray = [];\r\n this.pageLoaded = false;\r\n this.originalTemplateName = '';\r\n this.originalAttributesSet = [];\r\n this.templateNameMissing = false;\r\n\r\n if (this.templateNameInput) {\r\n this.templateNameInput.value = '';\r\n }\r\n }\r\n\r\n modalCancel() {\r\n\r\n this.templateNameInput = document.getElementById('templateName');\r\n\r\n // use the saved deviceAttributes array to reverse to the original state\r\n if (this.editTemplateId) {\r\n this.editedTemplate.exportTemplate.deviceAttributes = this.originalAttributesSet;\r\n\r\n if (this.templateNameInput) {\r\n this.templateNameInput.value = this.originalTemplateName;\r\n }\r\n } else {\r\n if (this.templateNameInput) {\r\n this.templateNameInput.value = '';\r\n }\r\n }\r\n\r\n if (this.actElementObj) {\r\n this.actElementObj.value = '';\r\n }\r\n\r\n this.dialog.hide();\r\n }\r\n\r\n templateNameKeyUp(event) {\r\n\r\n if (event.target.value) {\r\n this.templateNameMissing = false;\r\n } else {\r\n this.templateNameMissing = true;\r\n }\r\n }\r\n\r\n checkDefaultAttributes() {\r\n\r\n const defaultSection = 'Device Key Identification';\r\n const defaultFields = ['Primary DI/EUDAMED ID', 'Primary DI Issuing Agency/EUDAMED ID Issuing Agency', 'Data Scope'];\r\n\r\n if (this.savedTemplate) {\r\n if (this.savedTemplate.exportDataTemplate.deviceAttributes && this.savedTemplate.exportDataTemplate.deviceAttributes.length) {\r\n\r\n defaultFields.forEach(attr => {\r\n\r\n const section = this.savedTemplate.exportDataTemplate.deviceAttributes.find(s => s.caption.toLowerCase() === defaultSection.toLowerCase());\r\n\r\n if (section) {\r\n const field = section.fields.find(da => da.caption.toLowerCase() === attr.toLowerCase());\r\n\r\n if (field) {\r\n field.isSelected = true;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n saveTemplate() {\r\n\r\n if (this.templateNameInput) {\r\n this.templateName = this.templateNameInput.value;\r\n }\r\n\r\n if (!this.templateName) {\r\n this.templateNameMissing = true;\r\n\r\n // scroll to the top to display the \"required\" message\r\n this.scrollToElement(`#top`);\r\n } else {\r\n\r\n // The object should contain the template name and unique array of attributes.\r\n if (this.selectedAttrArray && this.selectedAttrArray.length) {\r\n\r\n if (this.savedTemplate) {\r\n this.savedTemplate.exportDataTemplateName = this.templateName;\r\n this.savedTemplate.exportDataTemplateId = this.editTemplateId;\r\n\r\n this.checkDefaultAttributes();\r\n\r\n this.sub = this.exportDataService.saveExportTemplate(JSON.parse(JSON.stringify(this.savedTemplate))).subscribe(response => {\r\n\r\n if (response['isSuccess']) {\r\n this.modalCancel();\r\n this.modified.emit(true);\r\n this.toastr.success(`The template saved successfully.`);\r\n } else {\r\n this.errorMessage = response && response['message'] ? response['message'] : 'Template save failed.';\r\n this.toastr.error(this.errorMessage);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n isSelectAllChecked() {\r\n return this.selectedAttrArray?.length === this.properties?.length;\r\n }\r\n\r\n accordionCreated(event) {\r\n this.expandAll();\r\n this.accordionObj.refresh();\r\n }\r\n\r\n collapseAll() {\r\n this.accordionObj.expandItem(false);\r\n }\r\n\r\n expandAll() {\r\n this.accordionObj.expandItem(true);\r\n }\r\n\r\n consoleIt(item) {\r\n console.log(item);\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { DataScopesEnum } from '../../shared/enums/index';\r\n\r\n@Component({\r\n selector: 'app-base-accordion',\r\n template: '',\r\n styleUrls: ['./base-accordion.component.scss']\r\n})\r\nexport class BaseAccordionComponent implements OnInit {\r\n\r\n dataScope: string;\r\n\r\n @Input() itemData: any;\r\n @Input() mapArray: any;\r\n @Input() readOnly: boolean;\r\n @Input() sppModel: boolean;\r\n @Input() sppDevice: boolean;\r\n\r\n defaultPropsArray: string[] = [];\r\n\r\n itemType: string;\r\n deviceForm: FormGroup;\r\n dataScopeEnum = DataScopesEnum;\r\n itemDetails = false;\r\n\r\n // for Edit form validation\r\n formErrors = {};\r\n validationMessages = {};\r\n\r\n constructor(protected fb: FormBuilder, protected storage: StorageManagerService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.itemType = this.itemData.documentType;\r\n }\r\n\r\n getMapInnerPathName(field: string): any {\r\n\r\n let retVal: any;\r\n\r\n retVal = this.mapArray.find(p => p.key.toLowerCase() === field.toLowerCase());\r\n\r\n if (retVal) {\r\n retVal = retVal.value.split('/');\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n isDefault(field: string): string {\r\n\r\n return this.defaultPropsArray.includes(field) ? 'highlight-fill' : '';\r\n }\r\n\r\n displayItemData(field: string): string {\r\n\r\n let retVal: any;\r\n let prop: any;\r\n let propValue: string;\r\n let itemValuePath = [];\r\n let itemPropsPathSegment: any;\r\n let defaultPropsPathSegment: any;\r\n\r\n this.itemType = this.itemData.documentType;\r\n\r\n if (this.itemData && field) {\r\n\r\n prop = this.mapArray.find(p => p.key.toLowerCase() === field.toLowerCase());\r\n\r\n if (prop) {\r\n propValue = prop.value;\r\n\r\n if (propValue) {\r\n\r\n // Multi path value\r\n if (propValue.indexOf('/') > -1) {\r\n\r\n if (propValue.indexOf('') > -1) {\r\n\r\n propValue = propValue.replace('', this.dataScope);\r\n }\r\n\r\n if (propValue.indexOf('') > -1) {\r\n\r\n propValue = propValue.replace('', this.itemType + 'Data');\r\n }\r\n\r\n itemValuePath = propValue.split('/');\r\n\r\n if (itemValuePath && itemValuePath.length > 0) {\r\n\r\n // Top level item data\r\n itemPropsPathSegment = this.itemData;\r\n\r\n // Get Default settings to be able to use it if no data is for the dataScope.\r\n defaultPropsPathSegment = this.itemData;\r\n\r\n itemValuePath.forEach(path => {\r\n\r\n // if dataScope segment or value is undefined check if it exists in Default.\r\n if (itemPropsPathSegment && Object.keys(itemPropsPathSegment).length) {\r\n\r\n itemPropsPathSegment = itemPropsPathSegment[path];\r\n\r\n // reached the datascope level - get the default first to be able use it if datascope value is not found.\r\n if (path.toLowerCase() === this.dataScope.toLowerCase()) {\r\n path = 'default';\r\n }\r\n\r\n // get value from the default\r\n if (defaultPropsPathSegment) {\r\n defaultPropsPathSegment = defaultPropsPathSegment[path];\r\n }\r\n\r\n } else {\r\n if (defaultPropsPathSegment) {\r\n if (!Array.isArray(defaultPropsPathSegment)) {\r\n defaultPropsPathSegment = defaultPropsPathSegment[path];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n // should allow the blank space so testing it against the undefined\r\n if (itemPropsPathSegment !== undefined && itemPropsPathSegment !== null) {\r\n\r\n if (typeof itemPropsPathSegment === 'object' && !Object.keys(itemPropsPathSegment).length) {\r\n itemPropsPathSegment = '';\r\n }\r\n\r\n retVal = itemPropsPathSegment;\r\n } else {\r\n\r\n retVal = defaultPropsPathSegment;\r\n\r\n if (defaultPropsPathSegment) {\r\n this.defaultPropsArray.push(field);\r\n }\r\n }\r\n } else {\r\n\r\n // Single path value\r\n retVal = this.itemData[propValue];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n /**\r\n * The function drills to down from the FormGroup or FormArray down\r\n * to the AbstractControl in order to check if the value is entered.\r\n * Populates the FormErrors object based on the Validators attached to the formControls.\r\n * @param {FormGroup} group passed by the form validation.\r\n */\r\n logValidationErrors(group: FormGroup = this.deviceForm): void {\r\n Object.keys(group.controls).forEach((key: string) => {\r\n const abstractControl = group.get(key);\r\n\r\n this.formErrors[key] = '';\r\n if (\r\n abstractControl &&\r\n !abstractControl.valid &&\r\n (abstractControl.touched || abstractControl.dirty)\r\n ) {\r\n const messages = this.validationMessages[key];\r\n\r\n for (const errorKey in abstractControl.errors) {\r\n if (errorKey) {\r\n this.formErrors[key] += messages[errorKey] + ' ';\r\n }\r\n }\r\n }\r\n\r\n if (abstractControl instanceof FormGroup) {\r\n this.logValidationErrors(abstractControl);\r\n }\r\n\r\n // We need this additional check to get to the FormGroup\r\n // in the FormArray and then recursively call this\r\n // logValidationErrors() method to fix the broken validation\r\n if (abstractControl instanceof FormArray) {\r\n for (const control of abstractControl.controls) {\r\n if (control instanceof FormGroup) {\r\n this.logValidationErrors(control);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, OnChanges, OnDestroy, OnInit, SimpleChange, SimpleChanges, ViewChild, ElementRef } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ColumnChooserService, GridComponent, PageService, ToolbarService } from '@syncfusion/ej2-angular-grids';\r\nimport { TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { ColumnChooser, DataStateChangeEventArgs, FilterSettingsModel, SelectionSettingsModel, SortSettingsModel, ToolbarItems } from '@syncfusion/ej2-grids';\r\nimport { ClickEventArgs } from '@syncfusion/ej2-navigations/src/toolbar/toolbar';\r\nimport { Tooltip } from '@syncfusion/ej2-popups';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { AttributeStatusEnum, DataScopesEnum, MessageSeverityEnum, RegistrationTypeEnum, ValidationStatusEnum } from '../../shared/enums/index';\r\nimport { IRegistrationType, ISelectAll, IServerSettings, IUserPrefs } from '../../shared/models/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { AuthorizationService, CustomerService, DeviceinventoryService, ExportDataService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { IPredicate, IQuery } from '../../shared/models/select-all.model';\r\nimport { Output, EventEmitter } from '@angular/core';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-base-grid',\r\n templateUrl: './base-grid.component.html',\r\n styleUrls: ['./base-grid.component.scss'],\r\n providers: [ToolbarService, ColumnChooserService, PageService],\r\n})\r\nexport class BaseGridComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n toolbar: ToolbarItems[] | object;\r\n selectedRecords: any[];\r\n selectedRows: any[];\r\n selectedItems: string[] = [];\r\n // excludedFromSelectAllItems: string[] = [];\r\n filterSettings: FilterSettingsModel;\r\n sortSettings: SortSettingsModel;\r\n pageOptions: Object;\r\n prefsPerGrid: any;\r\n selectionOptions: SelectionSettingsModel;\r\n columnChooser: ColumnChooser;\r\n appDefaults: IUserPrefs;\r\n subscription: Subscription;\r\n data: any;\r\n state: DataStateChangeEventArgs;\r\n error: string;\r\n deviceCount: number;\r\n pageItemCounter: any;\r\n dataScopeEudamed = false;\r\n dataScope: string;\r\n permissionsConst: any;\r\n initialLoad = true;\r\n selectAllChecked = false;\r\n // needed to keep track if the rows are deselected or originally unchecked.\r\n deselectAllChecked = false;\r\n selectedRowsCount = 0;\r\n validatedAll = false;\r\n submittedAll = false;\r\n timerInterval: any;\r\n\r\n queryObject: any;\r\n queryCriteria: ISelectAll = {};\r\n filterCriteria: string;\r\n action: string;\r\n\r\n dataScopeEnum = DataScopesEnum;\r\n validationStatusEnum = ValidationStatusEnum;\r\n attributeStatusEnum = AttributeStatusEnum;\r\n\r\n serverSettings: IServerSettings;\r\n\r\n public MessageSeverityEnum = MessageSeverityEnum;\r\n\r\n @ViewChild('grid')\r\n public grid: GridComponent;\r\n @ViewChild('tooltipObj') tooltipObj: TooltipComponent;\r\n tooltipContent: HTMLElement;\r\n\r\n tooltip: Tooltip;\r\n\r\n @ViewChild('leadingTab') leadingTab: ElementRef;\r\n @Output() registrationTypeSelection = new EventEmitter();\r\n public isLegacyImportFeatureEnabled: boolean = false;\r\n\r\n constructor (protected service: DeviceinventoryService,\r\n protected storage: StorageManagerService, protected router: Router, protected activatedRoute: ActivatedRoute,\r\n protected toastr: ToastrService, protected cdref: ChangeDetectorRef, protected authorizationService: AuthorizationService,\r\n protected authenicationService: AuthenticationService, protected appGlobals: AppGlobals,\r\n protected exportDataService: ExportDataService, protected settingsService: SettingsService,\r\n protected customerService: CustomerService, protected featureService: FeatureService) {\r\n\r\n this.data = service;\r\n this.serverSettings = this.settingsService.getSettings();\r\n }\r\n\r\n isEllipsisActive(e) {\r\n return (e.target.offsetWidth < e.target.scrollWidth);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n const gridData: SimpleChange = changes.gridData;\r\n if (gridData && gridData.currentValue) {\r\n\r\n this.data = JSON.parse(gridData.currentValue);\r\n } else {\r\n\r\n this.error = 'External error';\r\n }\r\n }\r\n\r\n setDeviceCounter() {\r\n\r\n const pageCountMsg = document.getElementsByClassName('e-pagecountmsg')[0];\r\n\r\n if (pageCountMsg) {\r\n this.pageItemCounter = (pageCountMsg as any).innerText;\r\n\r\n this.deviceCount = this.pageItemCounter.substr(this.pageItemCounter.indexOf('(') + 1, this.pageItemCounter.indexOf(' item') - 1);\r\n } else {\r\n\r\n this.deviceCount = -1;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.permissionsConst = this.appGlobals.permissions;\r\n this.serverSettings = this.settingsService.getSettings();\r\n\r\n this.filterSettings = {\r\n type: 'Menu',\r\n operators: {\r\n stringOperator: [\r\n { value: 'contains', text: 'contains' },\r\n { value: 'startsWith', text: 'starts with' },\r\n { value: 'endsWith', text: 'ends with' },\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n dateOperator: [\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n }\r\n };\r\n\r\n }\r\n\r\n\r\n /**\r\n* Every time the data state changes (resize, reorder, reload, etc.) this event gets triggered\r\n* and originates the grid parameters. The parameter showInColumnChooser should be present\r\n* for all columns in the columnOptions array. Default columns should be set to false to\r\n* prevent the user from hiding them.\r\n* Called from the html on the grid's dataStateChange event\r\n* @param {DataStateChangeEventArgs} state\r\n* @returns void\r\n*/\r\n public dataStateChange(state: DataStateChangeEventArgs): void {\r\n\r\n\r\n }\r\n\r\n dataBound(args: any) { }\r\n\r\n /**\r\n * Controls the ColumnChooser checkBox click event.\r\n * Called from the html beforeOpenColumnChooser event\r\n * @param {any} args\r\n */\r\n checkboxClick(args: any) {\r\n\r\n setTimeout(function (e) {\r\n\r\n const dialogContents = document.getElementsByClassName('e-dlg-content')[0];\r\n const searchDiv = document.getElementsByClassName('e-cc-searchdiv')[0];\r\n const contentsDiv = document.getElementsByClassName('e-cc-contentdiv')[0];\r\n const ccDiv = document.getElementsByClassName('e-ccdlg e-cc')[0];\r\n const cancelButton = document.getElementsByClassName('e-cc-cnbtn')[0];\r\n const okButton = document.getElementsByClassName('e-cc_okbtn')[0];\r\n\r\n // since the load event added one more UL, use index 1 instead of 0\r\n const selectAllEl = document.getElementsByClassName('e-cc-selectall')[1];\r\n\r\n if (dialogContents) {\r\n (dialogContents.querySelector('.e-innerdiv') as HTMLElement).style.display = 'none';\r\n }\r\n\r\n\r\n if (contentsDiv) {\r\n contentsDiv.classList.add('columnChooserMarginTop');\r\n }\r\n\r\n if (okButton) {\r\n okButton.innerHTML = 'Apply';\r\n }\r\n\r\n if (cancelButton) {\r\n cancelButton.classList.add('column-chooser-cancel-button');\r\n }\r\n\r\n if (searchDiv) {\r\n searchDiv.classList.add('hidden');\r\n }\r\n\r\n if (selectAllEl) {\r\n selectAllEl.classList.add('hidden');\r\n }\r\n\r\n if (ccDiv) {\r\n ccDiv.classList.add('columnChooserExtraWidth');\r\n }\r\n\r\n if (this.requiredColumns && this.requiredColumns.length > 0) {\r\n\r\n // since the load event added one more UL, use index 1 instead of 0\r\n const sortedUL = dialogContents.querySelectorAll('ul')[1];\r\n\r\n this.requiredColumns.forEach(colName => {\r\n\r\n const liArray = sortedUL.querySelectorAll('li');\r\n const listItemToDisable = Array.from(liArray).find(li => li.querySelector('.e-label').textContent === colName);\r\n\r\n listItemToDisable.querySelector('.e-checkbox-wrapper').classList.add('e-checkbox-disabled');\r\n });\r\n }\r\n\r\n }.bind(this));\r\n }\r\n\r\n // Create the RegistrationType dropdown used to show the Legacy or Regulation grid.\r\n // If the datascope is not eudamed && the 'eu-legacy-data-import' is not enabled, do not create the control.\r\n CreateRegistrationTypeControl(): void {\r\n if(this.dataScope && this.dataScope.toLowerCase() === 'eudamed'){\r\n // Now see if the feature 'eu-legacy-data-import' is enabled\r\n this.featureService.IsFeatureEnabled('eu-legacy-data-import').subscribe(response => {\r\n if(response){\r\n this.isLegacyImportFeatureEnabled = response;\r\n // Create the list of Registration Types for the dropdown\r\n let regulationTypes: IRegistrationType[] = [\r\n { value: RegistrationTypeEnum.Regulation, text: \"Regulation\", isSelected: true },\r\n { value: RegistrationTypeEnum.Legacy, text: \"Legacy\", isSelected: false }\r\n ];\r\n\r\n this.leadingTab.nativeElement.parentNode.parentNode.style.paddingLeft = '270px';\r\n // Create parent div container\r\n let dropdownContainer = document.createElement('div');\r\n dropdownContainer.id = 'registration-type-dropdown';\r\n dropdownContainer.className = 'registration-dropdown-container dropdown';\r\n\r\n let label = document.createElement('label');\r\n label.innerHTML = \"Registration Type\";\r\n\r\n // Create button\r\n let button = document.createElement('button');\r\n button.id = 'registration-dropdown-button';\r\n button.className = 'btn btn-secondary dropdown-toggle';\r\n button.type = 'button';\r\n button.ariaHasPopup = 'true';\r\n button.ariaExpanded = 'false';\r\n button.textContent = 'Regulation';\r\n button.setAttribute('data-bs-toggle', 'dropdown');\r\n\r\n // Create div holder for options\r\n let divHolder = document.createElement('ul');\r\n divHolder.className = 'dropdown-menu';\r\n\r\n // Create select\r\n let select = document.createElement('div');\r\n select.classList.add(\"custom-form-select\");\r\n\r\n //select\r\n\r\n // Create Options\r\n regulationTypes.forEach(regulationOption => {\r\n let li = document.createElement('li');\r\n let option = document.createElement('a');\r\n\r\n option.text = regulationOption.value.toString();\r\n option.className = 'dropdown-item'\r\n option.innerHTML = regulationOption.text.toString();\r\n\r\n option.addEventListener('click', (e: any) => {\r\n let registrationTypeText = e.target.innerText;\r\n let selection: any = RegistrationTypeEnum[registrationTypeText]; // Force the conversion to int so that we can properly assign it as the RegistrationTypeEnum type.\r\n document.getElementById('registration-dropdown-button').textContent = registrationTypeText;\r\n this.registrationTypeSelection.emit(selection);\r\n\r\n });\r\n\r\n li.appendChild(option);\r\n divHolder.appendChild(li);\r\n });\r\n\r\n // Put it all together (based on this: https://getbootstrap.com/docs/4.0/components/dropdowns/)\r\n dropdownContainer.appendChild(label);\r\n dropdownContainer.appendChild(button);\r\n dropdownContainer.appendChild(divHolder);\r\n\r\n this.leadingTab.nativeElement.parentNode.parentNode.appendChild(dropdownContainer);\r\n }\r\n });\r\n }\r\n }\r\n\r\n load() {\r\n\r\n // Create the Registration Type Control. This control will only appear in Eudamed Data Scope.\r\n if (!document.getElementById('registration-type-dropdown')) {\r\n this.CreateRegistrationTypeControl();\r\n }\r\n\r\n this.grid.on('columnChooserOpened', (e) => {\r\n\r\n if (this.initialLoad) {\r\n this.initialLoad = false;\r\n\r\n const fields = [];\r\n this.grid.columns.forEach((col) => {\r\n\r\n let columnDefinition = { field: '', headerText: '' };\r\n\r\n columnDefinition.field = col.field;\r\n columnDefinition.headerText = col.headerText;\r\n fields.push(columnDefinition);\r\n\r\n });\r\n\r\n const sortedFields = fields.sort((a, b) => (a.headerText > b.headerText) ? 1 : (a.headerText === b.headerText) ? ((a.size > b.size) ? 1 : -1) : -1)\r\n\r\n const finalcolumns = sortedFields.map((col) => {\r\n return this.grid.getColumnByField(col.field);\r\n });\r\n\r\n const checkboxElements = (\r\n this.grid.columnChooserModule as any\r\n ).refreshCheckboxList(finalcolumns);\r\n\r\n e.dialog.contentEle.querySelector('.e-innerdiv').style.display = 'none';\r\n\r\n e.dialog.contentEle\r\n .querySelector('.e-cc-contentdiv')\r\n .appendChild(checkboxElements);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n failure(e: any) {\r\n // debugger;\r\n }\r\n\r\n capitalize(value: string): string {\r\n\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n }\r\n\r\n created(event) { }\r\n\r\n\r\n /**\r\n * Triggers when any grid action begins\r\n * @param {any} args\r\n */\r\n actionBegin(args: any) {\r\n\r\n const type = args.requestType;\r\n\r\n switch (type) {\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Triggers when any grid action taken (sort, page, rows/per page number)\r\n * Called from the html actionComplete event\r\n * @param {any} args\r\n */\r\n complete(args: any) {\r\n\r\n switch (args.requestType) {\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n checkIsSelected(): boolean {\r\n\r\n this.selectedRecords = this.grid.getSelectedRecords();\r\n this.selectedRows = this.grid.getSelectedRows();\r\n\r\n if ((this.selectedRows && this.selectedRows.length) && (this.selectedRecords && this.selectedRecords.length)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n toolbarClick(args: ClickEventArgs): void {\r\n\r\n switch (args.item.id) {\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n persistSelectedRows() {\r\n\r\n this.grid.selectRows([]);\r\n\r\n const selectedItemIndexes: number[] = [];\r\n\r\n const selectedItems = this.storage.read('selectedItems');\r\n\r\n if (selectedItems && selectedItems.length > 0) {\r\n\r\n const gridObj = this.grid;\r\n\r\n const records = gridObj.getCurrentViewRecords();\r\n\r\n selectedItems.forEach(item => {\r\n\r\n const rowIndex = records.findIndex(r => r['id'] === item);\r\n\r\n if (rowIndex >= 0) {\r\n selectedItemIndexes.push(rowIndex);\r\n }\r\n });\r\n\r\n if (selectedItemIndexes.length > 0) {\r\n\r\n this.grid.selectRows(selectedItemIndexes);\r\n }\r\n }\r\n }\r\n\r\n rowSelected(event, field) {\r\n\r\n if (event.isInteracted) {\r\n\r\n if (!this.selectAllChecked) {\r\n if (event && event.data) {\r\n\r\n // multiple selection\r\n if (event.data.length) {\r\n\r\n event.data.forEach(item => {\r\n if (!this.selectedItems.includes(item[field])) {\r\n this.selectedItems.push(item[field]);\r\n }\r\n });\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n } else {\r\n\r\n if (!this.selectedItems.includes(event.data[field])) {\r\n this.selectedItems.push(event.data[field]);\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n rowDeselected(event, field) {\r\n\r\n if (event.isInteracted) {\r\n if (!this.selectAllChecked) {\r\n\r\n this.selectedItems = this.storage.read('selectedItems');\r\n\r\n if (this.selectedItems && this.selectedItems.length > 0) {\r\n\r\n // multiple selection\r\n if (event.data.length) {\r\n\r\n event.data.forEach(item => {\r\n const rowIndex = this.selectedItems.findIndex(x => x === item[field])\r\n\r\n if (rowIndex >= 0) {\r\n this.selectedItems.splice(rowIndex, 1);\r\n }\r\n });\r\n } else {\r\n // single item\r\n const rowIndex = this.selectedItems.findIndex(x => x === event.data[field])\r\n\r\n if (rowIndex >= 0) {\r\n this.selectedItems.splice(rowIndex, 1);\r\n }\r\n }\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n }\r\n }\r\n }\r\n\r\n checkBoxChange(event) {\r\n }\r\n\r\n selectRowsAll(checked) {\r\n\r\n const rows = this.grid?.getRows();\r\n\r\n const selectChks = this.grid.element.querySelectorAll('.e-checkbox-wrapper');\r\n\r\n if (rows) {\r\n\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n\r\n if (checked) {\r\n this.selectAllChecked = checked;\r\n this.grid.selectRowsByRange(0, rows.length);\r\n this.selectedRowsCount = this.deviceCount;\r\n\r\n if (selectChks) {\r\n selectChks.forEach(chk => {\r\n chk.classList.add('e-checkbox-disabled');\r\n });\r\n }\r\n\r\n this.toastr.info('If \"Select All\" checkbox is checked, the individual item selection is disabled.', '', { closeButton: true });\r\n } else {\r\n // remove items from the persistance array\r\n this.selectAllChecked = false;\r\n this.deselectAllChecked = false;\r\n this.grid.selectRows([]);\r\n\r\n if (selectChks) {\r\n selectChks.forEach(chk => {\r\n chk.classList.remove('e-checkbox-disabled');\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n selectAll(event) {\r\n\r\n this.selectAllChecked = event.checked;\r\n\r\n // tracking deselect to unselect rows on the \"paging\" event\r\n this.deselectAllChecked = !event.checked;\r\n\r\n this.selectRowsAll(this.selectAllChecked);\r\n }\r\n\r\n getSelectedItemsCount() {\r\n\r\n return this.selectAllChecked ? +this.selectedRowsCount : this.selectedItems.length;\r\n }\r\n\r\n generateSelectAllCriteria(action: string) {\r\n\r\n let queryCriteria: ISelectAll = {};;\r\n\r\n const queryObject = this.grid.getDataModule().generateQuery();\r\n\r\n if (queryObject && queryObject.queries && queryObject.queries.length) {\r\n\r\n queryCriteria.action = action;\r\n\r\n const onWhere = queryObject.queries.find(x => x.fn === 'onWhere');\r\n\r\n // if onWhere Predicate is there, it means there is a filter criteria\r\n if (onWhere) {\r\n\r\n (queryCriteria as any).query = onWhere?.e;\r\n\r\n if (queryCriteria.query && queryCriteria.query.predicates && queryCriteria.query.predicates.length) {\r\n\r\n queryCriteria.query.predicates.forEach(predicate => {\r\n delete predicate['comparer'];\r\n });\r\n\r\n }\r\n } else {\r\n // if no onWhere, set an empty ISelectAll\r\n queryCriteria.query = {};\r\n queryCriteria.query.predicates = [];\r\n }\r\n }\r\n\r\n return queryCriteria;\r\n }\r\n\r\n\r\n storeSelectedItems() {\r\n\r\n // for some reason getSelectedRecords() returns all visible rows, even if nothing is selected\r\n // however the getSelectedRows() returns correctly the selected rows but not it the structure we need from the getSelectedRecords()\r\n // So, need to check the getSelectedRows to make sure that rows have been selected. Looks like Syncfusino bug. When any row is really selected,\r\n // both function return correct number of rows.\r\n\r\n if (this.grid.getSelectedRows() && this.grid.getSelectedRows().length) {\r\n const selectedRecords = this.grid.getSelectedRecords();\r\n\r\n if (selectedRecords.length > 0) {\r\n\r\n // add selected records\r\n selectedRecords.forEach(element => {\r\n\r\n if (!this.selectedItems.includes(element['id'])) {\r\n this.selectedItems.push(element['id']);\r\n }\r\n });\r\n }\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n } else {\r\n\r\n // when no rows selected the above block is skipped and the storage is not updated and previously selected rows are persisted.\r\n let storedSelectedItems = this.storage.read('selectedItems');\r\n\r\n // get records on the page and remove each of them from the storage so they are not persisted\r\n const records = this.grid.getCurrentViewRecords();\r\n\r\n if (records && records.length) {\r\n records.forEach(item => {\r\n\r\n const rowIndex = storedSelectedItems.findIndex(x => x === item['id']);\r\n\r\n if (rowIndex >= 0) {\r\n storedSelectedItems.splice(rowIndex, 1)\r\n }\r\n });\r\n }\r\n\r\n // update the storage\r\n this.storage.write('selectedItems', storedSelectedItems);\r\n }\r\n }\r\n\r\n showSFToolTip(event) {\r\n\r\n if (this.isEllipsisActive(event)) {\r\n\r\n if (this.tooltipObj) {\r\n this.tooltipObj.content = event.target.outerText;\r\n this.tooltipObj.width = `${ event.target.scrollWidth }px`;\r\n\r\n this.tooltipObj.open();\r\n }\r\n }\r\n }\r\n\r\n hideSFToolTip(event) {\r\n\r\n if (this.tooltipObj) {\r\n\r\n this.tooltipObj.close();\r\n }\r\n }\r\n\r\n\r\n tooltipValue(args) {\r\n // here you can get the row data of the target cell\r\n if (args.target.scrollWidth <= args.target.clientWidth) {\r\n args.cancel = true;\r\n } else {\r\n const rowInfo = this.grid.getRowInfo(args.target);\r\n const rowData = rowInfo.rowData;\r\n\r\n if (rowData) {\r\n this.tooltipObj.content = rowData[(rowInfo.column as any)?.field];\r\n this.tooltipObj.width = `${ args.target.clientWidth }px`;\r\n this.tooltipObj.cssClass = 'customtooltip';\r\n }\r\n }\r\n }\r\n\r\n\r\n // if custom message - override this method in the descendant\r\n showTooltip(event, headerText) {\r\n\r\n this.tooltipContent = document.createElement('div');\r\n\r\n this.tooltip = new Tooltip({\r\n content: this.tooltipContent,\r\n width: '180px',\r\n cssClass: 'customtooltip',\r\n enableHtmlParse: false\r\n });\r\n\r\n const cellValue = event.target.outerText;\r\n\r\n if (cellValue) {\r\n\r\n if (headerText === 'long-contents') {\r\n\r\n this.tooltip.width = `${ cellValue.length * 5.6 }px`;\r\n this.tooltipContent.innerHTML = cellValue;\r\n } else {\r\n\r\n this.tooltip.width = '180px';\r\n if (cellValue) {\r\n switch (cellValue.toLowerCase()) {\r\n case 'submission passed':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - passed successfully.`;\r\n break;\r\n\r\n case 'submission failed':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - failed.`;\r\n break;\r\n\r\n case 'ready for approval':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - Submission is ready for approval.`;\r\n break;\r\n\r\n case 'submission approved':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - Submission is successfully approved.`;\r\n break;\r\n\r\n case 'system error':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - System Error occured`;\r\n break;\r\n\r\n case 'ready for submission':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - Submission is ready for Approval.`;\r\n break;\r\n\r\n case 'submission rejected':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The item is rejected.`;\r\n break;\r\n\r\n case 'submission in process':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The item is submitted and is in process.`;\r\n break;\r\n\r\n case 'hung record':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - No submission results received from the health authority in 24 hours.`;\r\n break;\r\n\r\n case 'replaced':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - Submission item was replaced.`;\r\n break;\r\n\r\n case 'submitted':\r\n\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is accepted by the Health Authority UDI database and is awaiting for the notified body verification (derived)`;\r\n } else {\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The item submitted.`;\r\n }\r\n break;\r\n\r\n case 'published':\r\n\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is in FDA GUDID and is available for public access (derived)`;\r\n }\r\n break;\r\n case 'unpublished':\r\n\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is in FDA GUDID waiting to be published according to the DI record publish date (derived)`;\r\n }\r\n break;\r\n\r\n case 'in grace period':\r\n\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is in FDA GUDID and is in the grace period with all attributes editable except for the DI record publish date (derived)`;\r\n }\r\n break;\r\n case 'not in gudid':\r\n\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is not in FDA GUDID (derived)`;\r\n }\r\n break;\r\n\r\n case 'registered':\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is registered in the Health Authority UDI database (derived)`;\r\n } else {\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The item is registered.`;\r\n }\r\n\r\n break;\r\n\r\n case 'not registered':\r\n\r\n if (headerText === 'Health Authority Basic UDI-DI State' || headerText === 'Health Authority UDI-DI State') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `DI is not in the Health Authority UDI database (derived)`;\r\n } else {\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The item is not registered.`;\r\n }\r\n break;\r\n\r\n case 'failed':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - Submission failed.`;\r\n break;\r\n\r\n case 'pending model registration':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The item is pending registration.`;\r\n break;\r\n case 'pending':\r\n\r\n if (headerText === 'file status') {\r\n this.tooltip.width = `180px`;\r\n this.tooltipContent.innerHTML = `Your file build is queued.`;\r\n } else {\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The file is pending build.`;\r\n }\r\n break;\r\n case 'available':\r\n this.tooltipContent.innerHTML = ` ${ headerText } - The file is ready for download.`;\r\n break;\r\n case 'completed':\r\n this.tooltip.width = `230px`;\r\n this.tooltipContent.innerHTML = `Your export file is ready for download.`;\r\n break;\r\n case 'exception':\r\n this.tooltip.width = `160px`;\r\n this.tooltipContent.innerHTML = `Your export failed. Please run the template again.`;\r\n break;\r\n\r\n case 'inprocess':\r\n this.tooltip.width = `160px`;\r\n this.tooltipContent.innerHTML = `Your file build has begun.`;\r\n break;\r\n case 'pass':\r\n this.tooltip.width = `160px`;\r\n this.tooltipContent.innerHTML = `Passed Channel Validation`;\r\n break;\r\n case 'fail':\r\n this.tooltip.width = `160px`;\r\n this.tooltipContent.innerHTML = `Failed Channel Validation`;\r\n break;\r\n case 'to be implemented':\r\n this.tooltip.width = `230px`;\r\n this.tooltipContent.innerHTML = `Validation for updating Eudamed devices is not implemented yet.`;\r\n break;\r\n case 'new':\r\n this.tooltip.width = `160px`;\r\n this.tooltipContent.innerHTML = `No submission item created`;\r\n break;\r\n case 'current':\r\n this.tooltip.width = `230px`;\r\n this.tooltipContent.innerHTML = `Values in Device data fields match values in Current Submission Item`;\r\n break;\r\n case 'changed':\r\n this.tooltip.width = `230px`;\r\n this.tooltipContent.innerHTML = `Values in Model data fields do not match values in Current Submission Item`;\r\n break;\r\n }\r\n }\r\n }\r\n this.tooltip.appendTo(event.target);\r\n }\r\n }\r\n\r\n setSelectedRowIndex(e) {\r\n if (e.type === 'keydown' && (e.which === 13 || e.keyCode === 13)) {\r\n e.target.click();\r\n }\r\n }\r\n\r\n\r\n getFilterCriteria(): string {\r\n\r\n let filter = this.storage.read('selectAllFilter');\r\n\r\n if (filter && filter.indexOf('filter=') === -1) {\r\n filter = '';\r\n } else {\r\n filter = filter.replace('&', '?');\r\n }\r\n return filter;\r\n }\r\n\r\n postActionReset() {\r\n\r\n setTimeout(() => {\r\n this.grid.clearSelection();\r\n this.selectAllChecked = false;\r\n this.selectRowsAll(false);\r\n this.queryCriteria = {};\r\n }, 300);\r\n }\r\n\r\n clearGridSelection() {\r\n\r\n this.grid.clearSelection();\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n\r\n downloadLogFile(fileName, filePath) {\r\n\r\n if (fileName && filePath) {\r\n\r\n this.exportDataService.getExportFile(fileName, filePath)?.subscribe(response => {\r\n\r\n if (response['size'] && response['type']) {\r\n\r\n // IE\r\n if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {\r\n (window.navigator as any).msSaveOrOpenBlob(response, fileName);\r\n } else {\r\n\r\n // non-IE\r\n const URL = window.URL || (window).webkitURL;\r\n const downloadUrl = URL.createObjectURL(response);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = fileName;\r\n link.click();\r\n }\r\n } else {\r\n\r\n this.toastr.error(`Error downloading a Log file`, '', { timeOut: 0, closeButton: true });\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // just a util function to see what's on html\r\n consoleIt(item) {\r\n console.log(item);\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-clinical-investigation',\r\n templateUrl: './clinical-investigation.component.html',\r\n styleUrls: ['./clinical-investigation.component.scss']\r\n})\r\nexport class ClinicalInvestigationComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n\r\n referencesForm: this.fb.array([this.addReferencesForm()]),\r\n certificateForm: this.fb.array([this.addCertificateForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get referencesForm(): FormGroup {\r\n return this.deviceForm.get('referencesForm');\r\n }\r\n\r\n get certificateForm(): FormGroup {\r\n return this.deviceForm.get('certificateForm');\r\n }\r\n\r\n addReferencesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n investigationNumber: ['', { validators: [] }],\r\n applicableCountry: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCertificateForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n certType: ['', { validators: [] }],\r\n certNumber: ['', { validators: [] }],\r\n certRevisionNumber: ['', { validators: [] }],\r\n certBody: ['', { validators: [] }],\r\n certExpDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.setControl('referencesForm', this.setReferencesForm());\r\n this.deviceForm.setControl('certificateForm', this.setCertificateForm());\r\n }\r\n\r\n\r\n setReferencesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let refs: any;\r\n\r\n refs = this.displayItemData('Clinical Investigation References');\r\n\r\n if (refs && refs.length > 0) {\r\n refs.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n investigationNumber: c[(this.getMapInnerPathName('Clinical Investigation Reference Number'))[0]],\r\n applicableCountry: c[(this.getMapInnerPathName('Non-EU Applicable Countries'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setCertificateForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let certificates: any;\r\n\r\n certificates = this.displayItemData('Certificates');\r\n\r\n if (certificates && certificates.length > 0) {\r\n certificates.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n certType: c[(this.getMapInnerPathName('Certificate Type'))[0]],\r\n certNumber: c[(this.getMapInnerPathName('Certificate Number'))[0]],\r\n certRevisionNumber: c[(this.getMapInnerPathName('Certificate Revision Number'))[0]],\r\n certBody: c[(this.getMapInnerPathName('Notified Body ID'))[0]],\r\n certExpDate: c[(this.getMapInnerPathName('Expiry Date'))[0]],\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { ICustomerApplicationVariant } from '../../shared/models';\r\nimport { ICustomer } from '../../shared/models/customer.model';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\n\r\n@Component({\r\n selector: 'app-company-datascope-selector',\r\n templateUrl: './company-datascope-selector.component.html',\r\n styleUrls: ['./company-datascope-selector.component.scss']\r\n})\r\nexport class CompanyDatascopeSelectorComponent implements OnInit, OnChanges {\r\n\r\n selectedCustomer: string;\r\n selectedapplicationVariant: string;\r\n header = 'Select';\r\n width = '25%';\r\n modalHeight = 'auto';\r\n position: object = { X: 'center', Y: 'center' };\r\n animationSettings: Object = { effect: 'None' };\r\n hide: any;\r\n fields: Object = { text: 'customerName', value: 'customerId' };\r\n subscriptionFields: Object = { text: 'applicationVariantName', value: 'applicationVariantId' };\r\n customersWaterMark = 'Select one';\r\n subscriptionsWaterMark = 'Select one';\r\n ddwHeight = '220px';\r\n ddwWidth = '384px';\r\n\r\n userGuid: string;\r\n\r\n\r\n @Input() customers: ICustomer[];\r\n @Input() subscriptions: ICustomerApplicationVariant[];\r\n @Input() companyDialogVisible: boolean;\r\n @Input() showDataScopeSelection: boolean;\r\n @Input() navigateToInput: string;\r\n\r\n @Output() currentCustomer = new EventEmitter();\r\n @Output() companySelectionModalOutput = new EventEmitter();\r\n\r\n @ViewChild('ddwCustomers', { static: true })\r\n ddwCustomers: DropDownListComponent;\r\n\r\n @ViewChild('ddwDataScopes', { static: true })\r\n ddwDataScopes: DropDownListComponent;\r\n\r\n @ViewChild('dialog', { static: true })\r\n dialog: DialogComponent;\r\n applicationVariantName: any;\r\n applyButtonEnabled = false;\r\n\r\n constructor (private storageManagerService: StorageManagerService, private router: Router) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (location.pathname !== '/home' && location.pathname !== '/' && location.pathname.indexOf('/fileupload') < 0 && location.pathname.indexOf('/exportdata') < 0) {\r\n\r\n this.showDataScopeSelection = true;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n // tslint:disable-next-line: forin\r\n for (const property in changes) {\r\n\r\n switch (property) {\r\n case 'customers':\r\n\r\n if (this.customers && !this.customers.length) {\r\n this.customers = this.storageManagerService.read('eligibleCustomers');\r\n }\r\n\r\n break;\r\n case 'companyDialogVisible':\r\n\r\n if (changes[property].currentValue) {\r\n this.dialog.show();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n companyDlgBtnClickApply: EmitType = () => {\r\n\r\n if (this.applyButtonEnabled) {\r\n if (this.selectedapplicationVariant) {\r\n this.storageManagerService.write('dataScope', this.applicationVariantName.toLowerCase());\r\n this.storageManagerService.remove('userPrefs');\r\n }\r\n\r\n if (this.showDataScopeSelection) {\r\n\r\n if (this.storageManagerService.read('dataScope')) {\r\n\r\n this.dialog.hide();\r\n this.companySelectionModalOutput.emit(false);\r\n\r\n if (!this.selectedCustomer) {\r\n this.selectedCustomer = this.ddwCustomers.value.toString();\r\n }\r\n\r\n this.processCustomer(+this.selectedCustomer);\r\n\r\n if (location.pathname.indexOf('/error') >= 0) {\r\n this.router.navigate(['/']);\r\n } else {\r\n if (this.navigateToInput) {\r\n this.router.navigate([this.navigateToInput]);\r\n }\r\n }\r\n }\r\n } else {\r\n\r\n this.dialog.hide();\r\n this.companySelectionModalOutput.emit(false);\r\n\r\n if (!this.selectedCustomer) {\r\n this.selectedCustomer = this.ddwCustomers.value.toString();\r\n }\r\n\r\n // Remove the datascope of the changed Client\r\n this.storageManagerService.remove('dataScope');\r\n this.applicationVariantName = '';\r\n\r\n this.processCustomer(+this.selectedCustomer);\r\n\r\n if (location.pathname.indexOf('/error') >= 0) {\r\n this.router.navigate(['/']);\r\n } else {\r\n if (this.navigateToInput) {\r\n this.router.navigate([this.navigateToInput]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n companyDlgBtnClickCancel: EmitType = () => {\r\n\r\n this.dialog.hide();\r\n this.companySelectionModalOutput.emit(false);\r\n }\r\n\r\n\r\n // tslint:disable-next-line: member-ordering\r\n dlgButtons: Object[] = [{ click: this.companyDlgBtnClickCancel.bind(this), buttonModel: { content: 'Cancel' } }, { click: this.companyDlgBtnClickApply.bind(this), buttonModel: { content: 'Apply', isPrimary: true, cssClass: 'e-disabled' } }];\r\n\r\n\r\n processCustomer(customerToFind: number) {\r\n\r\n let customer;\r\n\r\n if (this.customers && this.customers.length > 0) {\r\n\r\n customer = this.customers.find(c => c.customerId === customerToFind);\r\n\r\n if (customer) {\r\n this.dialog.hide();\r\n this.currentCustomer.emit(customer);\r\n }\r\n }\r\n }\r\n\r\n customerChanged(event) {\r\n\r\n if (event.isInteracted) {\r\n\r\n // nullify the currently selected health authority\r\n this.selectedapplicationVariant = '';\r\n this.enableApplyButton(false);\r\n\r\n this.selectedCustomer = event.itemData.customerId;\r\n\r\n if (this.selectedCustomer) {\r\n\r\n const eligibleCustomers = this.storageManagerService.read('eligibleCustomers');\r\n\r\n const customer = eligibleCustomers.find(c => c.customerId === +this.selectedCustomer);\r\n this.subscriptions = customer.applicationVariants;\r\n\r\n if (this.subscriptions && this.subscriptions.length) {\r\n\r\n if (this.subscriptions.length === 1) {\r\n\r\n if (this.ddwDataScopes) {\r\n\r\n this.ddwDataScopes.dataSource = this.setDataScopes(customer.applicationVariants);\r\n this.ddwDataScopes.dataBind();\r\n\r\n this.ddwDataScopes.value = customer.applicationVariants[0].applicationVariantId;\r\n this.ddwDataScopes.text = customer.applicationVariants[0].applicationVariantName;\r\n\r\n this.enableApplyButton(true);\r\n }\r\n } else {\r\n\r\n this.displayDatascopeSelection(customer);\r\n }\r\n }\r\n\r\n if (!this.showDataScopeSelection || this.subscriptions.length === 1) {\r\n\r\n this.applicationVariantName = customer.applicationVariants[0].applicationVariantName;\r\n this.selectedapplicationVariant = this.applicationVariantName.toLowerCase();\r\n\r\n this.enableApplyButton(true);\r\n } else {\r\n this.ddwDataScopes.value = 0;\r\n this.enableApplyButton(false);\r\n }\r\n }\r\n } else {\r\n\r\n if (!this.selectedapplicationVariant) {\r\n this.enableApplyButton(false);\r\n }\r\n }\r\n }\r\n\r\n\r\n channelChanged(event) {\r\n\r\n if (event.isInteracted) {\r\n if (event.itemData) {\r\n this.selectedapplicationVariant = event.itemData.applicationVariantId;\r\n this.applicationVariantName = event.itemData.applicationVariantName.toLowerCase();\r\n\r\n if (this.selectedapplicationVariant && this.showDataScopeSelection) {\r\n this.enableApplyButton(true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n enableApplyButton(enable) {\r\n\r\n const button = this.dialog.getButtons()[1];\r\n\r\n if (button) {\r\n\r\n if (enable) {\r\n button.cssClass = '';\r\n this.applyButtonEnabled = true;\r\n } else {\r\n button.cssClass = 'e-disabled';\r\n this.applyButtonEnabled = false;\r\n }\r\n\r\n }\r\n }\r\n\r\n beforeOpenDialog(event) {\r\n\r\n const cust = this.storageManagerService.read('currentCustomer');\r\n const dataScope = this.storageManagerService.read('dataScope');\r\n\r\n let customer: ICustomer;\r\n\r\n if (cust) {\r\n customer = typeof cust === 'object' ? cust : JSON.parse(cust);\r\n\r\n if (this.ddwCustomers) {\r\n this.ddwCustomers.value = customer.customerId;\r\n\r\n if (customer.customerId) {\r\n this.enableApplyButton(true);\r\n }\r\n }\r\n\r\n if (this.ddwDataScopes) {\r\n\r\n this.ddwDataScopes.dataSource = customer.applicationVariants;\r\n this.ddwDataScopes.dataBind();\r\n\r\n if (dataScope) {\r\n\r\n const ds = customer.applicationVariants.find(d => d.applicationVariantName.toLowerCase() === dataScope.toLowerCase());\r\n\r\n this.ddwDataScopes.value = ds ? +ds.applicationVariantId : 0;\r\n this.ddwDataScopes.text = ds ? ds.applicationVariantName : '';\r\n\r\n this.enableApplyButton(true);\r\n } else {\r\n\r\n this.ddwDataScopes.value = null;\r\n this.ddwDataScopes.text = null;\r\n\r\n this.enableApplyButton(false);\r\n }\r\n }\r\n\r\n this.displayDatascopeSelection(customer);\r\n }\r\n }\r\n displayDatascopeSelection(customer) {\r\n\r\n if (location.pathname !== '/'\r\n && location.pathname !== '/home'\r\n && !location.pathname.includes('/fileupload')\r\n && location.pathname !== '/support'\r\n && !location.pathname.includes('/clientsettings')\r\n && !location.pathname.includes('/exportdata')) {\r\n this.showDataScopeSelection = true;\r\n } else {\r\n\r\n if ((this.navigateToInput.includes('/inventory')\r\n || this.navigateToInput.includes('/managesubmissionitems')\r\n || this.navigateToInput.includes('/submissionhistory'))\r\n && (customer.applicationVariants && customer.applicationVariants.length > 1)) {\r\n\r\n\r\n this.showDataScopeSelection = true;\r\n } else {\r\n\r\n this.showDataScopeSelection = false;\r\n }\r\n }\r\n }\r\n\r\n setDataScopes(dataSource): any[] {\r\n\r\n const data: any[] = [];\r\n\r\n if (dataSource && dataSource.length) {\r\n\r\n dataSource.forEach((element) => {\r\n const ds = { value: 0, text: '' };\r\n ds.value = +element.applicationVariantId;\r\n ds.text = element.applicationVariantName;\r\n\r\n data.push(ds);\r\n });\r\n }\r\n\r\n return data;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { ICustomerApplicationVariant } from '../../shared/models';\r\nimport { ICustomer } from '../../shared/models/customer.model';\r\n\r\n@Component({\r\n\tselector: 'app-customer-selector',\r\n\ttemplateUrl: './customer-selector.component.html',\r\n\tstyleUrls: ['./customer-selector.component.scss'],\r\n\tencapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class CustomerSelectorComponent implements OnInit {\r\n\r\n\tselectedCustomer: string;\r\n\tselectedapplicationVariant: string;\r\n\theader = 'Select';\r\n\twidth = '25%';\r\n\tanimationSettings: Object = { effect: 'None' };\r\n\thide: any;\r\n\tfields: Object = { text: 'customerName', value: 'customerId' };\r\n\tcustomersWaterMark = 'Select one';\r\n\tddwHeight = '220px';\r\n\tddwWidth = '384px';\r\n\r\n\tuserGuid: string;\r\n\r\n\t@Input() customers: ICustomer[];\r\n\t@Input() subscriptions: ICustomerApplicationVariant[];\r\n\t@Output() currentCustomer = new EventEmitter();\r\n\r\n\t@ViewChild('csCustomersddw', { static: true })\r\n\tcsCustomersddw: DropDownListComponent;\r\n\r\n\t@ViewChild('csSubscriptionsddw', {static: true})\r\n\tcsSubscriptionsddw: DropDownListComponent;\r\n\r\n\t@ViewChild('dialog', { static: true })\r\n\tdialog: DialogComponent;\r\n\tBtnClick: EmitType = () => {\r\n\t\tthis.dialog.show();\r\n\t}\r\n\r\n\tconstructor () {\r\n\r\n\t}\r\n\r\n\tngOnInit() {\r\n\r\n\t\tif (this.customers && this.customers.length > 0) {\r\n\r\n\t\t\tif (this.customers.length === 1) {\r\n\t\t\t\tthis.processCustomer(this.customers[0].customerId);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dialog.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tdlgBtnClick: EmitType = () => {\r\n\r\n\t\tif (this.selectedCustomer) {\r\n\t\t\tthis.processCustomer(+this.selectedCustomer);\r\n\t\t\tthis.dialog.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t// tslint:disable-next-line: member-ordering\r\n\tdlgButtons: Object[] = [{\r\n\t\tclick: this.dlgBtnClick.bind(this), buttonModel: { content: 'Get started', isPrimary: true, cssClass: 'e-disabled' }\r\n\t}];\r\n\r\n\tprocessCustomer(customerToFind: number) {\r\n\r\n\t\tlet customer;\r\n\r\n\t\tif (this.customers && this.customers.length > 0) {\r\n\r\n\t\t\tcustomer = this.customers.find(c => c.customerId === customerToFind);\r\n\r\n\t\t\tif (customer) {\r\n\r\n this.currentCustomer.emit(customer);\r\n\r\n const button = this.dialog.getButtons()[0];\r\n\r\n if (button) {\r\n button.cssClass = '';\r\n }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcustomerChanged(event) {\r\n\t\tthis.selectedCustomer = event.itemData.customerId;\r\n\r\n\t\tif (this.selectedCustomer) {\r\n\r\n\r\n\t\t\tconst button = this.dialog.getButtons()[0];\r\n\r\n\t\t\tif (button) {\r\n\t\t\t\tbutton.cssClass = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(event) {\r\n\t\tthis.selectedapplicationVariant = event.itemData.applicationVariantId;\r\n\r\n\t\tif (this.selectedapplicationVariant) {\r\n\t\t\tconst button = this.dialog.getButtons()[0];\r\n\r\n\t\t\tif (button) {\r\n\t\t\t\tbutton.cssClass = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataScopesEnum } from '../../shared/enums/index';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { ICustomer, IIngestedDevicesChart, IPermission } from '../../shared/models/index';\r\nimport { AuthorizationService, StorageManagerService } from '../../shared/services/index';\r\nimport { SubmittedDevicesChartComponent } from '../submitted-devices-chart/submitted-devices-chart.component';\r\n\r\n@Component({\r\n selector: 'app-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\n\r\nexport class DashboardComponent implements OnInit {\r\n\r\n subscription: Subscription;\r\n permissions: any;\r\n ingestedDevicesData: IIngestedDevicesChart[] = [];\r\n submittedDevicesData: SubmittedDevicesChartComponent[] = [];\r\n\r\n @Input() customer: ICustomer;\r\n @Input() user: any;\r\n\r\n localTime: any;\r\n userTimeZone: any;\r\n\r\n dataScope: any;\r\n\r\n customersWithTemplates: any[] = [];\r\n localCustomers: any[] = [];\r\n\r\n constructor (private authorizationService: AuthorizationService, private storageManagerService: StorageManagerService, private appGlobals: AppGlobals) { }\r\n\r\n getTimeZone() {\r\n\r\n this.localTime = new Date().getTimezoneOffset();\r\n this.userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n \r\n // or\r\n\r\n let offset = new Date().getTimezoneOffset(), o = Math.abs(offset);\r\n return (offset < 0 ? \"+\" : \"-\") + (\"00\" + Math.floor(o / 60)).slice(-2) + \":\" + (\"00\" + (o % 60)).slice(-2);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n this.dataScope = DataScopesEnum;\r\n this.permissions = this.appGlobals.permissions;\r\n\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n showDocs(permission) {\r\n\r\n return this.authorizationService.hasPermissionPerClient(permission);\r\n }\r\n\r\n showPageContents(): boolean {\r\n\r\n let retVal = false;\r\n\r\n const permissions: IPermission[] = this.storageManagerService.read('accessPermissions');\r\n\r\n retVal = !!permissions;\r\n\r\n return retVal;\r\n }\r\n\r\n // Filtering out the customers that don't have templates so the headers don't print\r\n filterCustomersWithNoTemplates() {\r\n\r\n // Pulling in the customer data from the storage manager\r\n const currentCustomerStr: string = this.storageManagerService.read('currentCustomer');\r\n if (currentCustomerStr) {\r\n this.customer = typeof currentCustomerStr === 'object' ? currentCustomerStr : JSON.parse(currentCustomerStr);\r\n }\r\n this.localCustomers = this.customer.applicationVariants;\r\n const noTemplatesAvailable = [\"australia-udi\", \"saudiarabia-udi\"];\r\n\r\n this.customersWithTemplates = (this.localCustomers as any).filter(x => !(noTemplatesAvailable as any).includes(x['applicationVariantName'].toLowerCase()));\r\n\r\n return (this.customersWithTemplates);\r\n\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray} from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-device-characteristics',\r\n templateUrl: './device-characteristics.component.html',\r\n styleUrls: ['./device-characteristics.component.scss']\r\n})\r\nexport class DeviceCharacteristicsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n singleUseDevice: ['', { validators: [] }],\r\n maxNumberOfReuse: ['', { validators: [] }],\r\n reprocessedSingleUseDevice: ['', { validators: [] }],\r\n packagedOrLabeledAsSterile: ['', { validators: [] }],\r\n needSterilizationBeforeUse: ['', { validators: [] }],\r\n clinicalSizeTypeForm: this.fb.array([this.addClinicalSizeTypeForm()]),\r\n storageHandlingForm: this.fb.array([this.addStorageHandlingForm()]),\r\n intoductedToHumandBody: ['', { validators: [] }],\r\n contactLenses: ['', { validators: [] }],\r\n humanCellTissueProduct: ['', { validators: [] }],\r\n brainElectroStimulation: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n combinationProduct: ['', { validators: [] }],\r\n deviceOrIvdReagents: ['', { validators: [] }],\r\n kit: ['', { validators: [] }],\r\n consumablesOrEquipment: ['', { validators: [] }],\r\n sterilizationMethodDescription: ['', {Validators: []}],\r\n sterilizationMethodsForm: this.fb.array([this.addSterilizationMethodsForm()]),\r\n clinicalSizesDescription: ['', { validators: [] }],\r\n specialStorageHandlingCondition: ['', { validators: [] }],\r\n storageCondition: ['', { validators: [] }],\r\n distributionAndHandlingCondition: ['', { validators: [] }],\r\n haveLimitedNoReuses: ['', { validators: [] }],\r\n loanerOrthopedicSet: ['', { validators: [] }],\r\n userSterilizationRequiredOrthopedicProducts: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addSterilizationMethodsForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get sterilizationMethodsForm(): FormGroup {\r\n return this.deviceForm.get('sterilizationMethodsForm');\r\n }\r\n\r\n get clinicalSizeTypeForm(): FormGroup {\r\n return this.deviceForm.get('clinicalSizeTypeForm');\r\n }\r\n\r\n get storageHandlingForm(): FormGroup {\r\n return this.deviceForm.get('storageHandlingForm');\r\n }\r\n\r\n addClinicalSizeTypeForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n sizeType: ['', { validators: [] }],\r\n sizeTypeDescs: [this.fb.array([])],\r\n sizeValue: ['', { validators: [] }],\r\n sizeMinValue: ['', { validators: [] }],\r\n sizeMaxValue: ['', { validators: [] }],\r\n sizeUnit: ['', { validators: [] }],\r\n sizeUnitDescs: [this.fb.array([])],\r\n clinicalSizeText: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addStorageHandlingForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n storageHandlingCondition: ['', { validators: [] }],\r\n valueLow: ['', { validators: [] }],\r\n valueHigh: ['', { validators: [] }],\r\n unit: ['', { validators: [] }],\r\n storageHandlingComments: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n singleUseDevice: this.displayItemData('Single Use Device?'),\r\n maxNumberOfReuse: this.displayItemData('Maximum Number of Reuse'),\r\n reprocessedSingleUseDevice: this.displayItemData('Reprocessed Single Use Device?'),\r\n packagedOrLabeledAsSterile: this.displayItemData('Packaged or Labeled as Sterile?'),\r\n needSterilizationBeforeUse: this.displayItemData('Need Sterilization Before Use?'),\r\n intoductedToHumandBody: this.displayItemData('Intended to be Totally or Partially Introduced into the Human Body?'),\r\n contactLenses: this.displayItemData('Contact Lenses?'),\r\n humanCellTissueProduct: this.displayItemData('Human Cell, Tissue or Cellular or Tissue-Based Product'),\r\n brainElectroStimulation: this.displayItemData('Brain Electrostimulation?'),\r\n highIntencityRadiation: this.displayItemData('High Intensity Electromagnetic Radiation?'),\r\n equipmentToDestroyTissue: this.displayItemData('Equipment to Reduce, Remove or Destroy Adipose Tissue?'),\r\n intendedForInjection: this.displayItemData('Intended for Filling by Injection?'),\r\n combinationProduct: this.displayItemData('Combination Product?'),\r\n deviceOrIvdReagents: this.displayItemData('Device or IVD Reagents?'),\r\n kit: this.displayItemData('Kit?'),\r\n consumablesOrEquipment: this.displayItemData('Consumables or Equipment?'),\r\n sterilizationMethodDescription: this.displayItemData('Sterilization Method Description'),\r\n clinicalSizesDescription: this.displayItemData('Clinical Size Type and Measurement Description'),\r\n\r\n specialStorageHandlingCondition: this.displayItemData('Special Storage and Handling Condition'),\r\n storageCondition: this.displayItemData('Storage Condition'),\r\n distributionAndHandlingCondition: this.displayItemData('Distribution and Handling Condition'),\r\n haveLimitedNoReuses: this.displayItemData('Have a limited number of reuses?'),\r\n loanerOrthopedicSet: this.displayItemData('Loaner Set/Orthopedic Set?'),\r\n userSterilizationRequiredOrthopedicProducts: this.displayItemData('User Sterilization Required for Orthopedic Products?')\r\n });\r\n\r\n this.deviceForm.setControl('clinicalSizeTypeForm', this.setClinicalSizeTypeForm());\r\n this.deviceForm.setControl('storageHandlingForm', this.setStorageHandlingForm());\r\n this.deviceForm.setControl('sterilizationMethodsForm', this.setSterilizationMethodsForm());\r\n }\r\n\r\n setSterilizationMethodsForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let methods: any;\r\n\r\n methods = this.displayItemData('Sterilization Method(s)');\r\n\r\n if (methods && methods.length) {\r\n methods.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Sterilization Method Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setClinicalSizeTypeForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('Clinical Size Type(s)');\r\n\r\n if (types && types.length > 0) {\r\n types.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n sizeType: c[(this.getMapInnerPathName('Clinical Size Type'))[0]],\r\n sizeTypeDescs: this.addClinicalTypeDescriptions(c[(this.getMapInnerPathName('Type Descriptions'))[0]]),\r\n sizeValue: c[(this.getMapInnerPathName('Clinical Size Value'))[0]],\r\n sizeMinValue: c[(this.getMapInnerPathName('Clinical Size Range - Minimum Value'))[0]],\r\n sizeMaxValue: c[(this.getMapInnerPathName('Clinical Size Range - Maximum Value'))[0]],\r\n sizeUnit: c[(this.getMapInnerPathName('Clinical Size Unit'))[0]],\r\n sizeUnitDescs: this.addClinicalUnitDescriptions(c[(this.getMapInnerPathName('Unit Descriptions'))[0]]),\r\n clinicalSizeText: c[(this.getMapInnerPathName('Clinical Size Text'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addClinicalTypeDescriptions(descs: any): any {\r\n\r\n const arr = [];\r\n const lqvPairs = descs?.languageQualifiedValue;\r\n\r\n if (lqvPairs && lqvPairs.length) {\r\n\r\n lqvPairs.forEach(lqv => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: lqv[(this.getMapInnerPathName('Type Descriptions LQV Value'))[0]],\r\n language: lqv[(this.getMapInnerPathName('Type Descriptions LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n addClinicalUnitDescriptions(descs: any): any {\r\n const arr = [];\r\n const lqvPairs = descs?.languageQualifiedValue;\r\n\r\n if (lqvPairs && lqvPairs.length) {\r\n\r\n lqvPairs.forEach(lqv => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: lqv[(this.getMapInnerPathName('Unit Descriptions LQV Value'))[0]],\r\n language: lqv[(this.getMapInnerPathName('Unit Descriptions LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n\r\nsetStorageHandlingForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let conditions: any;\r\n let comments: any;\r\n let lqv: any;\r\n\r\n conditions = this.displayItemData('Storage and Handling Conditions');\r\n\r\n\r\nif (conditions && conditions.length > 0) {\r\n conditions.forEach((c, i) => {\r\n\r\n comments = c[(this.getMapInnerPathName('Storage and Handling Conditions Comments'))[0]];\r\n\r\n if (comments) {\r\n\r\n lqv = comments[(this.getMapInnerPathName('Storage and Handling Conditions Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n storageHandlingCondition: c[(this.getMapInnerPathName('Storage and Handling Conditions Value'))[0]],\r\n valueLow: c[(this.getMapInnerPathName('Storage and Handling Low Value'))[0]],\r\n valueHigh: c[(this.getMapInnerPathName('Storage and Handling High Value'))[0]],\r\n unit: c[(this.getMapInnerPathName('Storage and Handling Unit'))[0]],\r\n storageHandlingComments: this.addStorageComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addStorageComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n comments: element[(this.getMapInnerPathName('Storage Comments LQV Value'))[0]],\r\n languageQualifier: element[(this.getMapInnerPathName('Storage Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-device-marketing',\r\n templateUrl: './device-marketing.component.html',\r\n styleUrls: ['./device-marketing.component.scss']\r\n})\r\nexport class DeviceMarketingComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n deviceStatus: ['', { validators: [] }],\r\n notIntendedForEu: ['', { validators: [] }],\r\n memberStateForDevicePlacementInEu: ['', { validators: [] }],\r\n deviceRecallScope: ['', { validators: [] }],\r\n membersAvailForm: this.fb.array([this.addMemberAvailForm()]),\r\n subStatusForm: this.fb.array([this.addSubStatusForm()]),\r\n recallForm: this.fb.array([this.addRecallForm()]),\r\n commercialDistributionEndDate: ['', { validators: [] }],\r\n reasonForDeviceDiscontinuation: ['', { validators: [] }],\r\n customerServiceCenterName: ['', { validators: [] }],\r\n customerServiceCenterPhone: ['', { validators: [] }],\r\n medicalInsuranceCodesForm: this.fb.array([this.addMedicalInsuranceCodesForm()]),\r\n healthBenefitCodesForm: this.fb.array([this.addHealthBenefitCodesForm()]),\r\n premarketAuthorizationForm: this.fb.array([this.addPremarketAuthorizationForm()]),\r\n fdaListingNumbersForm: this.fb.array([this.addFdaListingNumbersForm()]),\r\n customerContactForm: this.fb.array([this.addCustomerContactForm()]),\r\n eligibleForHealthCareBenefitsOrReimbursement: ['', { validators: [] }],\r\n reasonForNotProvidingHealthCareBenefitCode: ['', { validators: [] }],\r\n newDevice: ['', { validators: [] }],\r\n premarketAuthorizationExempt: ['', { validators: [] }],\r\n prescriptionUseRx: ['', { validators: [] }],\r\n overTheCounterOtc: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get medicalInsuranceCodesForm(): FormGroup {\r\n return this.deviceForm.get('medicalInsuranceCodesForm');\r\n }\r\n\r\n get healthBenefitCodesForm(): FormGroup {\r\n return this.deviceForm.get('healthBenefitCodesForm');\r\n }\r\n\r\n get membersAvailForm(): FormGroup {\r\n return this.deviceForm.get('membersAvailForm');\r\n }\r\n\r\n get subStatusForm(): FormGroup {\r\n return this.deviceForm.get('subStatusForm');\r\n }\r\n\r\n get recallForm(): FormGroup {\r\n return this.deviceForm.get('recallForm');\r\n }\r\n\r\n get premarketAuthorizationForm(): FormGroup {\r\n return this.deviceForm.get('premarketAuthorizationForm');\r\n }\r\n\r\n get fdaListingNumbersForm(): FormGroup {\r\n return this.deviceForm.get('fdaListingNumbersForm');\r\n }\r\n\r\n get customerContactForm(): FormGroup {\r\n return this.deviceForm.get('customerContactForm');\r\n }\r\n\r\n\r\n addMedicalInsuranceCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCustomerContactForm(): any {\r\n return this.fb.group({\r\n email: ['', { validators: [] }],\r\n telCountryCode: ['', { validators: [] }],\r\n telNumber: ['', { validators: [] }],\r\n extension: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPremarketAuthorizationForm(): any {\r\n return this.fb.group({\r\n authorizationNumber: ['', { validators: [] }],\r\n supplementNumber: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addHealthBenefitCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addFdaListingNumbersForm(): any {\r\n return this.fb.group({\r\n fdaListingNumber: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSubStatusForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n subStatusValue: ['', { validators: [] }],\r\n subStatusStartDate: ['', { validators: [] }],\r\n subStatusEndDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addRecallForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n languageQualifier: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addMemberAvailForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n memberStateValue: ['', { validators: [] }],\r\n startDate: ['', { validators: [] }],\r\n endDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n deviceStatus: this.displayItemData('Device Status'),\r\n notIntendedForEu: this.displayItemData('Not intended for being placed on the EU market?'),\r\n deviceRecallScope: this.displayItemData('Device Recall Scope'),\r\n memberStateForDevicePlacementInEu: this.displayItemData('Member State Where Device is Placed on the EU Market'),\r\n commercialDistributionEndDate: this.displayItemData('Commercial Distribution End Date'),\r\n reasonForDeviceDiscontinuation: this.displayItemData('Reason for Device Discontinuation'),\r\n customerServiceCenterName: this.displayItemData('Customer Service Center Name'),\r\n customerServiceCenterPhone: this.displayItemData('Customer Service Center Phone Number'),\r\n medicalInsuranceCode: this.displayItemData('Medical Insurance Code'),\r\n eligibleForHealthCareBenefitsOrReimbursement: this.displayItemData('Eligible for Health Care Benefit or Reimbursement?'),\r\n reasonForNotProvidingHealthCareBenefitCode: this.displayItemData('Reason for Not Providing Health Care Benefit Code'),\r\n newDevice: this.displayItemData('New Device?'),\r\n premarketAuthorizationExempt: this.displayItemData('Device Exempt from FDA Premarket Submission?'),\r\n prescriptionUseRx: this.displayItemData('Prescription Use (Rx)?'),\r\n overTheCounterOtc: this.displayItemData('Over the Counter (OTC)?')\r\n });\r\n\r\n this.deviceForm.setControl('membersAvailForm', this.setMemberAvailForm());\r\n this.deviceForm.setControl('subStatusForm', this.setSubStatusForm());\r\n this.deviceForm.setControl('recallForm', this.setRecallForm());\r\n this.deviceForm.setControl('healthBenefitCodesForm', this.setHealthBenefitCodesForm());\r\n this.deviceForm.setControl('premarketAuthorizationForm', this.setPremarketAuthorizationForm());\r\n this.deviceForm.setControl('fdaListingNumbersForm', this.setFdaListingNumbersForm());\r\n this.deviceForm.setControl('customerContactForm', this.setCustomerContactForm());\r\n this.deviceForm.setControl('medicalInsuranceCodesForm', this.setMedicalInsuranceCodesForm());\r\n }\r\n\r\n setMedicalInsuranceCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Medical Insurance Code(s)');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n medicalInsuranceCode: code[(this.getMapInnerPathName('Medical Insurance Code'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n setCustomerContactForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let contact: any;\r\n\r\n contact = this.displayItemData('Customer Contact');\r\n\r\n if (contact && contact.length) {\r\n contact.forEach(c => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n email: c[(this.getMapInnerPathName('Customer Contact Email'))[0]],\r\n telCountryCode: c[(this.getMapInnerPathName('Customer Telephone Country Code'))[0]],\r\n telNumber: c[(this.getMapInnerPathName('Customer Telephone Number'))[0]],\r\n extension: c[(this.getMapInnerPathName('Customer Telephone Ext'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n setHealthBenefitCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let codes: any;\r\n\r\n codes = this.displayItemData('Health Care Benefit Code(s)');\r\n\r\n if (codes && codes.length) {\r\n codes.forEach(c => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Health Care Benefit Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setMemberAvailForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let members: any;\r\n\r\n members = this.displayItemData('Member State(s) Where Device is Made Available');\r\n\r\n if (members && members.length > 0) {\r\n members.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n memberStateValue: c[(this.getMapInnerPathName('Member State Value'))[0]],\r\n startDate: c[(this.getMapInnerPathName('Availability Start Date'))[0]],\r\n endDate: c[(this.getMapInnerPathName('Availability End Date'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSubStatusForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let status: any;\r\n\r\n status = this.displayItemData('Device SubStatus');\r\n\r\n if (status) {\r\n status.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n subStatusValue: c[(this.getMapInnerPathName('Device SubStatus Value'))[0]],\r\n subStatusStartDate: c[(this.getMapInnerPathName('Device SubStatus Start Date'))[0]],\r\n subStatusEndDate: c[(this.getMapInnerPathName('Device SubStatus End Date'))[0]]\r\n })\r\n\r\n );\r\n });\r\n }\r\n return formArray;\r\n }\r\n\r\n setRecallForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let recalls: any;\r\n\r\n recalls = this.displayItemData('Device Recall Precision');\r\n\r\n if (recalls && recalls.length > 0) {\r\n recalls.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Recall Precision Value'))[0]],\r\n languageQualifier: c[(this.getMapInnerPathName('Device Recall Precision Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPremarketAuthorizationForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let premarketAuth: any;\r\n\r\n premarketAuth = this.displayItemData('FDA Premarket Authorization');\r\n\r\n if (premarketAuth && premarketAuth.length > 0) {\r\n premarketAuth.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n authorizationNumber: c[(this.getMapInnerPathName('FDA Authorization Number'))[0]],\r\n supplementNumber: c[(this.getMapInnerPathName('FDA Supplement Number'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setFdaListingNumbersForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let listings: any;\r\n\r\n listings = this.displayItemData('FDA Listing Number(s)');\r\n\r\n if (listings && listings.length > 0) {\r\n listings.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n fdaListingNumber: c[(this.getMapInnerPathName('FDA Listing Number Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-device-registration',\r\n templateUrl: './device-registration.component.html',\r\n styleUrls: ['./device-registration.component.scss']\r\n})\r\nexport class DeviceRegistrationComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n diRecordPublishDate: ['', { validators: [] }],\r\n isPrimaryDiSameAsRegisteredOrFiledDi: ['', { validators: [] }],\r\n registeredOrFiledDi: ['', { validators: [] }],\r\n deviceRegistrantOrFilerName: ['', { validators: [] }],\r\n medicalDeviceInfoManagerPhone: ['', { validators: [] }],\r\n changeDescription: ['', { validators: [] }],\r\n unifiedSocialCreditCode: ['', { validators: [] }],\r\n deviceRegistrantOrFilerNameInEnglish: ['', { validators: [] }],\r\n medicalDeviceInfoManagerEmail: ['', { validators: [] }],\r\n deviceLicenseNumber: ['', { validators: [] }],\r\n registrationOrFilingCertificateNumbersForm: this.fb.array([this.addRegFilForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addRegFilForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n regFilNumber: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n diRecordPublishDate: this.displayItemData('DI Record Publish Date'),\r\n isPrimaryDiSameAsRegisteredOrFiledDi: this.displayItemData('Is Primary DI same as the Registered or Filed DI?'),\r\n registeredOrFiledDi: this.displayItemData('Registered or Filed DI'),\r\n deviceRegistrantOrFilerName: this.displayItemData('Device Registrant or Filer Name'),\r\n medicalDeviceInfoManagerPhone: this.displayItemData('Medical Device Information Manager Phone Number'),\r\n changeDescription: this.displayItemData('Change Description'),\r\n unifiedSocialCreditCode: this.displayItemData('Unified Social Credit Code'),\r\n deviceRegistrantOrFilerNameInEnglish: this.displayItemData('Device Registrant or Filer Name in English'),\r\n medicalDeviceInfoManagerEmail: this.displayItemData('Medical Device Information Manager Email'),\r\n deviceLicenseNumber: this.displayItemData('Device License Number')\r\n });\r\n\r\n this.deviceForm.setControl('registrationOrFilingCertificateNumbersForm', this.setRegFilForm());\r\n }\r\n\r\n setRegFilForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Registration Certificate Number or Filing Certificate Number');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n regFilNumber: c[(this.getMapInnerPathName('Registration Certificate Number or Filing Certificate Number Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n get registrationOrFilingCertificateNumbersForm(): FormGroup {\r\n return this.deviceForm.get('registrationOrFilingCertificateNumbersForm');\r\n }\r\n\r\n\r\n\r\n}\r\n","import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbTabset, NgbTabsetConfig } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ColumnChooserService, PageService, SelectionSettingsModel, ToolbarService, VirtualScrollService } from '@syncfusion/ej2-angular-grids';\r\nimport { ClickEventArgs } from '@syncfusion/ej2-angular-navigations/src';\r\nimport { DialogComponent, TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { IProgressValueEventArgs } from '@syncfusion/ej2-angular-progressbar';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { Column, ColumnChooser, DataStateChangeEventArgs, FilterSettingsModel, ToolbarItems } from '@syncfusion/ej2-grids';\r\nimport { TextBox } from '@syncfusion/ej2-inputs';\r\nimport { Tooltip } from '@syncfusion/ej2-popups';\r\nimport { AnimationModel, ILoadedEventArgs, ProgressBar } from '@syncfusion/ej2-progressbar';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Observable, Subscription, timer } from 'rxjs';\r\nimport { AttributeStatusEnum, DataScopesEnum, ExportStatusEnum, MessageSeverityEnum, RegistrationTypeEnum, ValidationStatusEnum } from '../../shared/enums/index';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { ICustomer, ILanguageApiResponse, IServiceError, ISubmission, ISubmissionItem, IUserPrefs, IValidation, IValidationItem } from '../../shared/models/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { AuthorizationService } from '../../shared/services/authorization.service';\r\nimport { CustomerService, DeviceinventoryService, ExportDataService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\nimport { BaseGridComponent } from '../base-grid/base-grid.component';\r\nimport { AnimationSettingsModel, SpinSettingsModel } from '@syncfusion/ej2-angular-splitbuttons';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-deviceinventory',\r\n templateUrl: './deviceinventory.component.html',\r\n styleUrls: ['./deviceinventory.component.scss'],\r\n providers: [ToolbarService, ColumnChooserService, PageService, NgbTabsetConfig, VirtualScrollService],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\n\r\nexport class DeviceinventoryComponent extends BaseGridComponent implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked {\r\n\r\n toolbar: ToolbarItems[] | object;\r\n data$: Observable;\r\n pageOptions: Object;\r\n state: DataStateChangeEventArgs;\r\n filterSettings: FilterSettingsModel;\r\n hide = false;\r\n itemType = 'device';\r\n customer: ICustomer;\r\n userGuid: string;\r\n gridColumns: any[];\r\n columnChooser: ColumnChooser;\r\n dataScopeId: number;\r\n language = 'English';\r\n dataScope: string;\r\n dataSourceApi: any;\r\n dataSource: any[] = [];\r\n appDefaults: IUserPrefs;\r\n initial = true;\r\n initialTabChanged = true;\r\n requiredColumns: string[] = [];\r\n defaultColumns: string[] = [];\r\n userColumns: any[] = [];\r\n defaultRequiredColumns: any[] = [];\r\n gridType = 'deviceGrid';\r\n subscription: Subscription;\r\n resolverData: any[] | IServiceError;\r\n userPrefs: IUserPrefs;\r\n savedUserPrefs: IUserPrefs;\r\n prefsPerGrid: any;\r\n retrieveComplete = false;\r\n initialload = false;\r\n position: any[] = [];\r\n defaultPrefsPerGrid: any;\r\n refreshCount = 0;\r\n selectionOptions: SelectionSettingsModel;\r\n selectedRecords: any[] = [];\r\n currentEvent: string;\r\n gridComplete = false;\r\n retrieveInDataState = true;\r\n submissionBatch: ISubmission[];\r\n permitted = false;\r\n MessageSeverityEnum = MessageSeverityEnum;\r\n ExportStatusEnum = ExportStatusEnum;\r\n activeTab: string;\r\n dataScopeEnum = DataScopesEnum;\r\n validationStatusEnum = ValidationStatusEnum;\r\n attributeStatusEnum = AttributeStatusEnum;\r\n appVarId: number;\r\n downloading = false;\r\n // selectedEntireItems: any = [];\r\n selectedItems: any = [];\r\n\r\n target = '#modalTarget';\r\n modalPosition: object = { X: 'center', Y: 'center' };\r\n modalWidth = '35%';\r\n modalHeight = 'auto';\r\n animationSettings: Object = { effect: 'Zoom' };\r\n isModal = true;\r\n modalVisible = false;\r\n responseResultArray: any[];\r\n lastCallTimes: LastCallTime[] = [];\r\n selectOptions: Object;\r\n revalidating = false;\r\n clientLanguageEnabled = false;\r\n pageLoaded = false;\r\n downloadInProgress = false;\r\n timerRevalidationInterval: number;\r\n\r\n // Progress bar\r\n pbType: string = 'Circular';\r\n pbWidth: string = '150px';\r\n pbHeight: string = '150px';\r\n trackThickness: number = 10;\r\n progressThickness: number = 10;\r\n segmentCount: number = 50;\r\n gapWidth: number = 5;\r\n circularMin: number = 0;\r\n circularMax: number;\r\n circularVal: number = 0;\r\n startAngle: number = 220;\r\n endAngle: number = 140;\r\n progresstimer: any;\r\n showProgressValue = false;\r\n animation: AnimationModel = { enable: true, duration: 2000, delay: 0 };\r\n\r\n // Progress Bar button\r\n spinSettings: SpinSettingsModel = { position: 'Right', width: 20, template: '
' };\r\n buttonAnimationSettings: AnimationSettingsModel = { effect: 'SlideLeft', duration: 500, easing: 'linear' };\r\n\r\n @ViewChild('circular')\r\n circular: ProgressBar;\r\n //\r\n\r\n @ViewChild('tabset', { static: true })\r\n public tabset: NgbTabset;\r\n\r\n @ViewChild('submittemplate', { static: true })\r\n public toolbarSubmitTemplate: any;\r\n\r\n @ViewChild('downloadLogTemplate', { static: true })\r\n public toolbarDownloadLogTemplate: any;\r\n\r\n @ViewChild('dialog', { static: true })\r\n public dialog: DialogComponent;\r\n userPrefObject: any;\r\n\r\n @ViewChild('tooltipObj') tooltipObj: TooltipComponent;\r\n\r\n tooltipContent: HTMLElement = document.createElement('div');\r\n\r\n tooltip = new Tooltip({\r\n content: this.tooltipContent,\r\n width: '180px',\r\n cssClass: 'customtooltip',\r\n enableHtmlParse: false\r\n });\r\n createActionCompleted = true;\r\n revalidationTimerSubscription: Subscription;\r\n downloadTimerSubscription: Subscription;\r\n validationSelectAllSubscription: Subscription;\r\n featureServiceSubscription: Subscription;\r\n processedCounter: number;\r\n progressBarDisplayed = false;\r\n showLegacyDeviceGrid: boolean = false;\r\n showLegacyModelGrid: boolean = false;\r\n currentRegistrationTypeSelection: RegistrationTypeEnum = RegistrationTypeEnum.Regulation;\r\n\r\n constructor(public service: DeviceinventoryService,\r\n public storage: StorageManagerService, public router: Router, public activatedRoute: ActivatedRoute,\r\n public toastr: ToastrService, public cdref: ChangeDetectorRef, public authorizationService: AuthorizationService,\r\n public authenticationService: AuthenticationService, public appGlobals: AppGlobals,\r\n public exportDataService: ExportDataService, public settingsService: SettingsService,\r\n public customerService: CustomerService, public featureService: FeatureService) {\r\n\r\n super(service, storage, router, activatedRoute, toastr, cdref, authorizationService, authenticationService,\r\n appGlobals, exportDataService, settingsService, customerService, featureService);\r\n }\r\n\r\n failure(e: any) {\r\n // debugger;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n this.applyDefaultPrefs();\r\n\r\n this.buildColumnsPositionArray();\r\n\r\n this.reorderColumns();\r\n\r\n this.pageLoaded = true;\r\n }\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n revalidationCheckTimer(dataScope, registrationTypeSelection) {\r\n if (this.revalidationTimerSubscription) {\r\n this.revalidationTimerSubscription.unsubscribe();\r\n }\r\n this.revalidationTimerSubscription = timer(3000, this.timerRevalidationInterval).subscribe(() =>\r\n this.revalidationCheck(this.dataScope, this.currentRegistrationTypeSelection)\r\n );\r\n }\r\n revalidationCheck(dataScope, registrationTypeSelection) {\r\n // Make the service call only if the Client is enabled for the language support.\r\n if (this.clientLanguageEnabled && this.dataScope) {\r\n this.subscription = this.customerService.getMigrationStatusWithRegistration(dataScope, registrationTypeSelection).subscribe((response: ILanguageApiResponse) => {\r\n\r\n if (response.data) {\r\n this.revalidating = response.data.isMigrating\r\n this.circularMax = response.data.totalCount;\r\n this.circularVal = response.data.completedCount;\r\n\r\n // a hack to catch when this.revalidating is changed because the progressComplete falls beteeen the interval calls. If the this.progressBarDisplayed is true, it means that revalidation has started. Since we can't catch the end we are looking for the call when isMigrating becomes false, because this.progressBarDisplayed could be set to true only when revalidation had started.\r\n if (this.revalidating) {\r\n this.timerRevalidationInterval = this.serverSettings.hasOwnProperty('APIPollTimeIntervalInMillSeconds') ? this.serverSettings.APIPollTimeIntervalInMillSeconds : 5000;\r\n this.revalidationCheckTimer(dataScope, registrationTypeSelection);\r\n } else if (this.progressBarDisplayed && !this.revalidating) {\r\n this.progressBarDisplayed = false;\r\n this.grid.refresh();\r\n this.toastr.success('The updated changes made to the display language have been completed.');\r\n this.timerRevalidationInterval = this.serverSettings.hasOwnProperty('LanguageRevalidationInterval') ? this.serverSettings.LanguageRevalidationInterval : 20000;\r\n this.revalidationCheckTimer(dataScope, registrationTypeSelection);\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n valueChanged(event) {\r\n\r\n this.processedCounter = event.value;\r\n }\r\n\r\n // Progress Bar\r\n loadProgressBar(args: ILoadedEventArgs): void {\r\n\r\n this.progressBarDisplayed = true;\r\n\r\n args.progressBar.annotations[0].content =\r\n `
\r\n \r\n \r\n
`;\r\n }\r\n\r\n\r\n progressCompleted(args: IProgressValueEventArgs): void {\r\n\r\n setTimeout(() => {\r\n this.toastr.success('The updated changes made to the display language have been completed.');\r\n }, 2500);\r\n }\r\n // Progress bar end\r\n\r\n\r\n public ngOnInit(): void {\r\n\r\n this.gridComplete = false;\r\n this.revalidating = false;\r\n this.permissionsConst = this.appGlobals.permissions;\r\n\r\n this.timerInterval = this.serverSettings.hasOwnProperty('APIPollTimeIntervalInMillSeconds') ? this.serverSettings.APIPollTimeIntervalInMillSeconds : 5000;\r\n this.timerRevalidationInterval = this.serverSettings.hasOwnProperty('LanguageRevalidationInterval') ? this.serverSettings.LanguageRevalidationInterval : 20000;;\r\n\r\n const customer = this.storage.read('currentCustomer');\r\n if (customer) {\r\n this.customer = typeof customer === 'object' ? customer : JSON.parse(customer);\r\n } else {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n // initiate DataScope values. Needs to be lower case for the Http call\r\n this.dataScope = this.storage.read('dataScope') ? this.storage.read('dataScope').toLowerCase() : '';\r\n this.dataScopeEudamed = this.dataScope.toLowerCase() === this.dataScopeEnum.EUDAMED.toLowerCase();\r\n\r\n if (!this.dataScopeEudamed) {\r\n this.activeTab = 'device';\r\n this.storage.write('activeTab', this.activeTab);\r\n }\r\n\r\n this.activeTab = this.storage.read('activeTab');\r\n\r\n if (this.activeTab) {\r\n\r\n this.tabset.activeId = this.activeTab;\r\n } else {\r\n\r\n this.tabset.activeId = 'device';\r\n }\r\n\r\n this.itemType = this.tabset.activeId;\r\n this.gridType = this.itemType + 'Grid';\r\n\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n\r\n // this.selectedEntireItems = [];\r\n // this.storage.write('selectedEntireItems', this.selectedEntireItems);\r\n\r\n this.selectionOptions = { cellSelectionMode: 'Flow', type: 'Multiple', mode: 'Row', checkboxMode: 'Default', checkboxOnly: true };\r\n\r\n this.userGuid = this.storage.read('userGuid');\r\n\r\n if (this.customer) {\r\n if (!this.dataScope) {\r\n this.dataScope = this.customer.applicationVariants[0].applicationVariantName.toLowerCase();\r\n }\r\n\r\n this.appVarId = this.customer.applicationVariants.find(ap => ap.applicationVariantName.toLowerCase() === this.dataScope.toLowerCase()).applicationVariantId;\r\n\r\n\r\n if (!this.userGuid) {\r\n this.router.navigate(['error', 'User is not logged in']);\r\n }\r\n\r\n this.filterSettings =\r\n {\r\n type: 'Menu',\r\n operators: {\r\n stringOperator: [\r\n { value: 'contains', text: 'contains' },\r\n { value: 'startsWith', text: 'starts with' },\r\n { value: 'endsWith', text: 'ends with' },\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n dateOperator: [\r\n { value: 'contains', text: 'equal' }\r\n ],\r\n }\r\n };\r\n\r\n this.selectOptions = { persistSelection: true };\r\n\r\n this.downloadInProgress = this.service.manageDiDownloadLogBS.getValue();\r\n\r\n // get aggregate data prepared by the resolver\r\n this.resolverData = this.activatedRoute.snapshot.data['inventoryData'];\r\n\r\n // Get the default prefs.\r\n // If the user's prefs exist - they are used instead of the app default.\r\n this.getDefaultSettings();\r\n\r\n this.preExecute(this.state, this.itemType);\r\n\r\n this.data$ = this.service.getData(this.state, this.grid, this.customer.customerId, this.itemType, this.dataScope, this.language);\r\n\r\n this.subscription = this.data$.subscribe((response) => {\r\n this.data = response;\r\n // this.data = this.resolverData[3]; // mock\r\n\r\n this.setDeviceCounter();\r\n\r\n this.refreshCount++;\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n this.storeUserPrefs();\r\n }\r\n\r\n var func = () => {\r\n\r\n if (this.createActionCompleted) {\r\n\r\n if (this.data?.result && this.data?.result.length) {\r\n\r\n const nullStatuses = Array.from(this.data?.result)?.filter(x => !x['Validation Status']);\r\n\r\n if (nullStatuses && nullStatuses.length) {\r\n const ids = [];\r\n\r\n nullStatuses.forEach(element => {\r\n ids.push({\r\n documentId: element['id'],\r\n dataScope: this.dataScope,\r\n itemType: this.itemType\r\n })\r\n });\r\n\r\n this.service.getValidationStatusMultiple(ids).subscribe(response => {\r\n\r\n if (response && response.data && response.data.length) {\r\n // get statuses\r\n const updatedStatuses = Array.from(response.data)?.filter(x => x['status']);\r\n\r\n if (updatedStatuses && updatedStatuses.length) {\r\n\r\n updatedStatuses.forEach(element => {\r\n const foundObject = Array.from(this.data.result).find(x => x['id'] === element['documentId']);\r\n\r\n if (foundObject) {\r\n foundObject['Validation Status'] = element['status'];\r\n }\r\n });\r\n\r\n this.grid?.refresh();\r\n }\r\n\r\n setTimeout(() => {\r\n func();\r\n }, 5000);\r\n }\r\n });\r\n } else {\r\n setTimeout(() => {\r\n\r\n func();\r\n }, 5000);\r\n }\r\n }\r\n\r\n\r\n } else {\r\n setTimeout(() => {\r\n\r\n func();\r\n }, 5000);\r\n }\r\n }\r\n\r\n if (location.pathname.includes('/inventory')) {\r\n func();\r\n }\r\n\r\n });\r\n }\r\n\r\n this.subscription = this.customerService.applicationSettings.subscribe(setting => {\r\n this.clientLanguageEnabled = !!setting;\r\n // call the Timer to check if the re-validation is in progress\r\n if (this.clientLanguageEnabled && this.dataScope) {\r\n this.revalidationCheckTimer(this.dataScope, this.currentRegistrationTypeSelection);\r\n }\r\n });\r\n\r\n // Check to see if EU all the feature turned on for Legacy\r\n this.featureServiceSubscription = this.featureService.IsFeatureEnabled('eu-legacy-data-import').subscribe(response => {\r\n if (response) {\r\n this.isLegacyImportFeatureEnabled = response;\r\n }\r\n });\r\n\r\n\r\n this.registrationTypeSelection.subscribe((regTypeSelection: RegistrationTypeEnum) => {\r\n // Handle the Registration Type selection event\r\n this.currentRegistrationTypeSelection = regTypeSelection;\r\n this.determineRegistrationType(regTypeSelection);\r\n\r\n // Begin setup to refresh the grid's context needed for filtering\r\n this.state = {};\r\n this.data = null;\r\n this.validatedAll = false;\r\n this.initialLoad = true; // Needed to kick off the columnChooserOpened event so that we may configure the column selector options.\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n this.initial = true;\r\n this.selectAllChecked = false;\r\n\r\n this.deviceCount = -1;\r\n this.refreshCount = 1; // need to increase to maintain gridComplete.\r\n this.gridComplete = false;\r\n\r\n this.preExecute(this.state, this.itemType);\r\n // End setup for grid's context\r\n\r\n // Get the updated datasource\r\n this.data$ = this.service.getData(this.state, this.grid, this.customer.customerId, this.itemType, this.dataScope, this.language, this.currentRegistrationTypeSelection);\r\n\r\n this.subscription = this.data$.subscribe(response => {\r\n this.retrieveInDataState = true;\r\n this.data = response;\r\n\r\n // Set the gridType which used by many processes...\r\n if (regTypeSelection === RegistrationTypeEnum.Legacy) {\r\n this.gridType = `${this.itemType}LegacyGrid`;\r\n }\r\n else {\r\n this.gridType = `${this.itemType}Grid`;\r\n }\r\n\r\n // initialLoad = true is needed to kick off the columnChooserOpened event so that we may configure the column selector options.\r\n this.initialLoad = true;\r\n\r\n this.setDeviceCounter();\r\n\r\n this.applyDefaultPrefs();\r\n\r\n this.buildColumnsPositionArray();\r\n\r\n this.reorderColumns();\r\n })\r\n });\r\n // set focus on the invisible div so the first tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n toolbarClick(args: ClickEventArgs): void {\r\n\r\n this.action = args.item.id;\r\n\r\n switch (args.item.id) {\r\n case 'approveselected':\r\n this.approveSelected();\r\n break;\r\n\r\n case 'validateselected':\r\n this.validateSelected();\r\n break;\r\n\r\n case 'downloadlog':\r\n this.downloadLog();\r\n break;\r\n }\r\n }\r\n\r\n determineRegistrationType(value: RegistrationTypeEnum): void {\r\n switch (value) {\r\n case RegistrationTypeEnum.Legacy:\r\n this.showLegacyDeviceGrid = true;\r\n this.showLegacyModelGrid = true;\r\n break;\r\n default:\r\n this.showLegacyDeviceGrid = false;\r\n this.showLegacyModelGrid = false;\r\n break;\r\n }\r\n }\r\n\r\n validateSelected() {\r\n\r\n if (this.selectAllChecked) {\r\n\r\n this.validatedAll = false;\r\n\r\n let filter = this.getFilterCriteria();\r\n\r\n let registrationType = this.dataScopeEudamed && this.currentRegistrationTypeSelection === RegistrationTypeEnum.Legacy\r\n ? RegistrationTypeEnum.Legacy\r\n : RegistrationTypeEnum.Regulation;\r\n\r\n this.service.validateSelectedAll(this.itemType, this.dataScope, filter, registrationType).subscribe(data => {\r\n\r\n this.validatedAll = data['isSuccess'];\r\n if (this.validatedAll) {\r\n this.toastr.success('Your request has been submitted', '', { closeButton: true });\r\n }\r\n\r\n this.validationSelectAllSubscription = timer(0, 5000).subscribe(() => {\r\n\r\n if (this.validatedAll) {\r\n\r\n this.postActionReset();\r\n\r\n this.grid?.refresh();\r\n\r\n if (this.data?.result && this.data?.result.length) {\r\n\r\n const nullStatuses = Array.from(this.data?.result)?.filter(x => !x['Validation Status']);\r\n\r\n if (nullStatuses && nullStatuses.length) {\r\n const ids = [];\r\n\r\n nullStatuses.forEach(element => {\r\n ids.push({\r\n documentId: element['id'],\r\n dataScope: this.dataScope,\r\n itemType: this.itemType\r\n })\r\n });\r\n\r\n this.service.getValidationStatusMultiple(ids).subscribe(response => {\r\n\r\n if (response && response.data && response.data.length) {\r\n // get statuses\r\n const updatedStatuses = Array.from(response.data)?.filter(x => x['status']);\r\n\r\n if (updatedStatuses && updatedStatuses.length) {\r\n\r\n updatedStatuses.forEach(element => {\r\n const foundObject = Array.from(this.data.result).find(x => x['id'] === element['documentId']);\r\n\r\n if (foundObject) {\r\n foundObject['Validation Status'] = element['status'];\r\n\r\n this.grid?.refresh();\r\n }\r\n });\r\n } else {\r\n this.validatedAll = false;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n\r\n if (this.selectedItems && this.selectedItems.length) {\r\n this.createActionCompleted = false;\r\n\r\n const validations: IValidation[] = [];\r\n\r\n this.selectedItems.forEach((item) => {\r\n let registrationType = this.dataScopeEudamed && this.currentRegistrationTypeSelection === RegistrationTypeEnum.Legacy\r\n ? RegistrationTypeEnum.Legacy\r\n : RegistrationTypeEnum.Regulation;\r\n\r\n const validationItems: IValidationItem[] = [];\r\n\r\n const validation: IValidation = {\r\n\r\n customerId: this.customer.customerId,\r\n createUserGuid: this.userGuid,\r\n distributionChannel: this.dataScope,\r\n validationItems: validationItems\r\n };\r\n\r\n const validationItemDevice: IValidationItem = {\r\n\r\n validationId: '0',\r\n validationItemTypeCode: 'device',\r\n itemId: item['Primary DI'],\r\n itemIssuingAgency: item['Primary DI Issuing Agency'],\r\n revision: item['Device Revision'],\r\n registrationTypeCode: registrationType,\r\n documentId: item['id']\r\n };\r\n\r\n if (this.itemType === 'device') {\r\n validation.validationItems.push(validationItemDevice);\r\n }\r\n\r\n if (this.dataScopeEudamed) {\r\n\r\n const validationItemModel: IValidationItem = {\r\n\r\n validationId: '0',\r\n validationItemTypeCode: 'model',\r\n itemId: this.itemType === 'device' ? item['Basic UDI-DI Number'] : item['Basic UDI-DI'],\r\n itemIssuingAgency: item['Basic UDI-DI Issuing Agency'],\r\n revision: item['Model Revision'],\r\n registrationTypeCode: registrationType,\r\n documentId: this.itemType === 'model' ? item['id'] : null // Note: Null for the DEVICE scenario b/c the model's docId is not available to the device row at this point\r\n };\r\n\r\n validation.validationItems.push(validationItemModel);\r\n }\r\n\r\n // set the visual aknowledgement of the Validate to the current page. The other pages will be handled by the GetValidationMultiple\r\n if (this.data.result && this.data.result.length) {\r\n\r\n const validatedItemIndex = this.data.result.findIndex(x => x['id'] === item.id);\r\n\r\n if (validatedItemIndex >= 0) {\r\n this.data.result[validatedItemIndex]['Validation Status'] = '';\r\n (this.grid.getRows()[validatedItemIndex].querySelector('.e-templatecell .tooltip-span') as any).innerText = '';\r\n }\r\n }\r\n\r\n validations.push(validation);\r\n });\r\n\r\n if (validations && validations.length > 0) {\r\n\r\n let data$: Observable;\r\n\r\n data$ = this.service.validateSelectedDevices(validations, this.customer.customerId, this.DeterminePriorityId(validations.length));\r\n this.toastr.info('Your request has been submitted', '', { closeButton: true });\r\n this.subscription = data$.subscribe(data => {\r\n\r\n if (data && data['status'] === MessageSeverityEnum.success) {\r\n\r\n this.toastr.success(`Selected ${this.capitalize(this.itemType)}(s) successfully submitted for validation.`, '', { closeButton: true });\r\n } else {\r\n this.toastr.error(`Error validating ${this.capitalize(this.itemType)}(s)`, '', { timeOut: 0, closeButton: true });\r\n }\r\n this.createActionCompleted = true;\r\n this.grid?.refresh();\r\n });\r\n }\r\n\r\n } else {\r\n\r\n this.toastr.warning(`No ${this.capitalize(this.itemType)}(s) selected.`, '', { closeButton: true });\r\n }\r\n\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n }\r\n\r\n DeterminePriorityId(numberOfItems: number) {\r\n if (numberOfItems <= 10) {\r\n return 1;\r\n }\r\n else if (numberOfItems <= 100) {\r\n return 2;\r\n }\r\n else if (numberOfItems > 100) {\r\n return 3;\r\n }\r\n }\r\n\r\n approveSelected() {\r\n\r\n if (this.checkIsSelected() || (this.selectedItems && this.selectedItems.length)) {\r\n this.modalVisible = true;\r\n } else {\r\n this.toastr.warning(`No ${this.capitalize(this.itemType)}(s) selected.`, '', { closeButton: true });\r\n }\r\n }\r\n\r\n keydownEnter(e) {\r\n const type = e.type;\r\n\r\n if (type === 'keydown' && (e.which === 13 || e.keyCode === 13)) {\r\n\r\n this.itemClicked(e);\r\n }\r\n }\r\n\r\n itemClicked(e) {\r\n\r\n let item;\r\n\r\n const diId = e.target.text.trim();\r\n\r\n const dataSource = this.grid.dataSource;\r\n\r\n if (dataSource && dataSource['result'] && dataSource['result'].length > 0) {\r\n\r\n if (this.itemType === 'model') {\r\n\r\n item = dataSource['result'].find(i => i['Basic UDI-DI'] === diId);\r\n } else {\r\n\r\n item = dataSource['result'].find(i => i['Primary DI'] === diId);\r\n }\r\n }\r\n\r\n if (item) {\r\n this.router.navigate(['/managedi/itemdetails', item.id]);\r\n }\r\n }\r\n\r\n\r\n makeArrayUnique(arr): any[] {\r\n\r\n let uniqueArray = [];\r\n\r\n if (arr && arr.length) {\r\n\r\n uniqueArray = [...new Map(arr.map(item => [item['name'], item])).values()];\r\n }\r\n\r\n return uniqueArray;\r\n }\r\n\r\n // if some columns of the default columns miss the visibility property - add it.\r\n // It's needed for the correctly displaying the columns in the grid.\r\n fixDefaults(prefsToFix, defaultSetings) {\r\n\r\n let modifiedPrefs: any;\r\n let gridPrefs: any;\r\n\r\n // check defaults\r\n if (prefsToFix.channelGrids && prefsToFix.channelGrids.length) {\r\n\r\n // defaults for the appVarId\r\n modifiedPrefs = prefsToFix.channelGrids.find(x => x['applicationVariantId'] === this.appVarId);\r\n\r\n if (modifiedPrefs) {\r\n\r\n // fix both, model and device grids\r\n let grids = ['modelGrid', 'deviceGrid'];\r\n\r\n // If in the EUDAMED ManageDI page while the 'eu-legacy-data-import' feature is enabled, we must consider the legacy grids.\r\n if (this.dataScope.toLowerCase() == 'eudamed' && this.isLegacyImportFeatureEnabled) {\r\n grids.push('modelLegacyGrid');\r\n grids.push('deviceLegacyGrid');\r\n }\r\n\r\n grids.forEach(grid => {\r\n gridPrefs = modifiedPrefs[grid];\r\n // check for the column in the defaults\r\n if (gridPrefs) {\r\n\r\n gridPrefs.defaultColumns = this.makeArrayUnique(gridPrefs.defaultColumns);\r\n gridPrefs.requiredColumns = this.makeArrayUnique(gridPrefs.requiredColumns);\r\n\r\n gridPrefs.defaultColumns.forEach(dcol => {\r\n\r\n // if a column found in the required column array, it always must be visible \"true\"\r\n if (gridPrefs.requiredColumns.findIndex(col => col.name === dcol.name) >= 0) {\r\n dcol.visible = true;\r\n }\r\n\r\n // if columns is found, even it doesn't have \"visible\" property (old prefs) it should be displayed/hidden\r\n // based on the visible property\r\n if (!dcol.hasOwnProperty('visible')) {\r\n dcol.visible = true;\r\n }\r\n\r\n // check if a column from savedPrefs exist in the defaultGridSettings because of the older settings may be different. Parameter indicates what prefs are getting \"fixed\". We are interested in the \"saved\" prefs.\r\n if (!defaultSetings) {\r\n const defaultChannelGrid = this.appDefaults.channelGrids.find(x => x['applicationVariantId'] === this.appVarId);\r\n const defaultGridPrefs = defaultChannelGrid[grid];\r\n const defaultGridDefaultColumns = this.makeArrayUnique(defaultGridPrefs.defaultColumns);\r\n\r\n if (dcol.name !== 'select') {\r\n // check if the column from the saved prefs exist in the default columns list. If not remove it from the saved prefs.\r\n const defaultColIndex = defaultGridDefaultColumns.findIndex(x => x.name === dcol.name);\r\n\r\n if (defaultColIndex < 0) {\r\n\r\n // column doesn't exist in the default columns file, remove it from the saved prefs\r\n const colIndex = gridPrefs.defaultColumns.findIndex(x => x.name === dcol.name);\r\n\r\n gridPrefs.defaultColumns.splice(colIndex, 1);\r\n }\r\n }\r\n }\r\n });\r\n\r\n gridPrefs.requiredColumns.forEach(rcol => {\r\n\r\n // if columns is found, even it doesn't have \"visible\" property (old prefs) it should be displayed/hidden\r\n // based on the visible property\r\n if (!rcol.hasOwnProperty('visible')) {\r\n rcol.visible = true;\r\n }\r\n });\r\n\r\n prefsToFix.channelGrids.find(x => x['applicationVariantId'] === this.appVarId)[grid] = gridPrefs;\r\n };\r\n });\r\n }\r\n }\r\n\r\n return prefsToFix;\r\n }\r\n\r\n /**\r\n * Get app default settings from the resolver prepared data.\r\n * Default settings come from the \\assets\\griddefaults.json file.\r\n */\r\n getDefaultSettings() {\r\n\r\n // if there is no user settings yet, process app default settings instead\r\n // second element in array of data (pef forkJoin setup) is the appDefaults.\r\n if (this.resolverData && this.resolverData[1]) {\r\n this.appDefaults = this.resolverData[1];\r\n this.appDefaults = this.fixDefaults(this.appDefaults, true);\r\n }\r\n\r\n this.userPrefs = this.storage.read('userPrefs');\r\n\r\n // third element in array of data (pef forkJoin setup) is the userPrefs.\r\n if (this.resolverData && this.resolverData[2] && this.resolverData[2].message && this.resolverData[2].message.toLowerCase() === 'success') {\r\n\r\n if (!this.savedUserPrefs) {\r\n this.savedUserPrefs = this.resolverData[2].data;\r\n }\r\n\r\n // fix defaults to update to the new format with the \"visible\" property\r\n this.savedUserPrefs = this.fixDefaults(this.savedUserPrefs, false);\r\n\r\n // if user prefs already exist - don't override\r\n if (!this.userPrefs) {\r\n\r\n if (this.savedUserPrefs.channelGrids && this.savedUserPrefs.channelGrids.length) {\r\n\r\n this.userPrefObject = this.savedUserPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n\r\n if (this.userPrefObject) {\r\n this.prefsPerGrid = this.userPrefObject[this.gridType];\r\n } else {\r\n this.savedUserPrefs = this.appDefaults;\r\n\r\n this.userPrefObject = this.savedUserPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n this.prefsPerGrid = this.userPrefObject[this.gridType];\r\n }\r\n\r\n this.savedUserPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[this.gridType] = this.prefsPerGrid;\r\n } else {\r\n\r\n // user has old user prefs structure, replace with the default\r\n this.savedUserPrefs = this.appDefaults;\r\n\r\n this.userPrefObject = this.savedUserPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n this.prefsPerGrid = this.userPrefObject[this.gridType];\r\n }\r\n\r\n // in case griddefaults contains different number of channels, use the appDefaults(gridDefaults.json) add/remove missing channels by creating a new unique array\r\n if (this.appDefaults.channelGrids && this.appDefaults.channelGrids.length) {\r\n this.appDefaults.channelGrids.forEach(grid => {\r\n if (this.savedUserPrefs.channelGrids.findIndex(x => x.applicationVariantId === grid.applicationVariantId) < 0) {\r\n this.savedUserPrefs.channelGrids.push(grid);\r\n }\r\n });\r\n }\r\n\r\n this.storage.write('userPrefs', this.savedUserPrefs);\r\n\r\n } else {\r\n\r\n this.getSessionUserPrefs();\r\n }\r\n } else {\r\n\r\n // if there are user prefs in the Application object get user pref, otherwise get appDefault prefs.\r\n if (this.userPrefs) {\r\n\r\n if (this.userPrefs.channelGrids && this.userPrefs.channelGrids.length) {\r\n\r\n this.userPrefObject = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n } else {\r\n\r\n // user has old user prefs structure, replace with the default\r\n this.userPrefObject = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n }\r\n this.prefsPerGrid = this.userPrefObject[this.gridType];\r\n\r\n } else {\r\n if (this.appDefaults) {\r\n this.userPrefObject = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n this.prefsPerGrid = this.userPrefObject[this.gridType];\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n* Every time the data state changes (resize, reorder, reload, etc.) this event gets triggered\r\n* and originates the grid parameters. The parameter showInColumnChooser should be present\r\n* for all columns in the columnOptions array. Default columns should be set to false to\r\n* prevent the user from hiding them.\r\n* Called from the html on the grid's dataStateChange event\r\n* @param {DataStateChangeEventArgs} state\r\n* @returns void\r\n*/\r\n public dataStateChange(state: DataStateChangeEventArgs): void {\r\n\r\n if (this.retrieveInDataState) {\r\n let filterRegistrationType = undefined;\r\n if (this.dataScope && this.dataScope.toLowerCase() === 'eudamed' && this.isLegacyImportFeatureEnabled && this.currentRegistrationTypeSelection === RegistrationTypeEnum.Legacy) {\r\n filterRegistrationType = RegistrationTypeEnum.Legacy;\r\n }\r\n this.data$ = this.service.getData(state, this.grid, this.customer.customerId, this.itemType, this.dataScope, this.language, filterRegistrationType);\r\n\r\n this.subscription = this.data$.subscribe((response) => {\r\n this.data = response;\r\n\r\n this.setDeviceCounter();\r\n\r\n this.state = state;\r\n\r\n this.gridColumns = this.grid.columns;\r\n });\r\n } else {\r\n\r\n this.retrieveInDataState = true;\r\n }\r\n }\r\n\r\n private getSessionUserPrefs() {\r\n\r\n this.userPrefs = this.storage.read('userPrefs');\r\n\r\n if (this.userPrefs) {\r\n\r\n if (this.gridType === 'modelGrid') {\r\n this.prefsPerGrid = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelGrid;\r\n }\r\n // The userPrefs will not contain an entry for modelLegacyGrid/deviceLegacyGrid at first so use the defaults.\r\n else if (this.gridType === 'modelLegacyGrid') {\r\n this.prefsPerGrid = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelLegacyGrid\r\n ?? this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelLegacyGrid;\r\n }\r\n else if (this.gridType === 'deviceLegacyGrid') {\r\n this.prefsPerGrid = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceLegacyGrid\r\n ?? this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceLegacyGrid;\r\n }\r\n else {\r\n this.prefsPerGrid = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceGrid;\r\n }\r\n } else {\r\n if (this.appDefaults) {\r\n this.userPrefs = this.appDefaults;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get and apply user preferences for the grid\r\n */\r\n private applyDefaultPrefs() {\r\n\r\n this.getDefaultSettings();\r\n\r\n this.defaultColumns = [];\r\n\r\n if (this.prefsPerGrid) {\r\n\r\n if (this.prefsPerGrid.defaultColumns && this.prefsPerGrid.defaultColumns.length > 0) {\r\n this.prefsPerGrid.defaultColumns.forEach(e => {\r\n\r\n if (e['name'] !== 'select' && e['visible']) {\r\n this.defaultColumns.push(e['name']);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Required columns should always be taken from the Default prefs, not the User Prefs\r\n this.requiredColumns = [];\r\n\r\n if (this.appDefaults.channelGrids) {\r\n\r\n if (this.gridType === 'modelGrid') {\r\n this.defaultPrefsPerGrid = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelGrid;\r\n }\r\n else if (this.gridType === 'modelLegacyGrid') {\r\n this.defaultPrefsPerGrid = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelLegacyGrid;\r\n }\r\n else if (this.gridType === 'deviceLegacyGrid') {\r\n this.defaultPrefsPerGrid = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceLegacyGrid;\r\n }\r\n // Default scenario will use the deviceGrid\r\n else {\r\n this.defaultPrefsPerGrid = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceGrid;\r\n }\r\n }\r\n\r\n if (this.defaultPrefsPerGrid) {\r\n if (this.defaultPrefsPerGrid.requiredColumns && this.defaultPrefsPerGrid.requiredColumns.length > 0) {\r\n this.defaultPrefsPerGrid.requiredColumns.forEach(e => {\r\n\r\n this.requiredColumns.push(e['name']);\r\n });\r\n }\r\n }\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n for (let index = 0; index < this.grid.columns.length; index++) {\r\n const col: any = this.grid.columns[index];\r\n\r\n if (col) {\r\n // Due to the griddefaults.json for Legacy grids not matching the deviceinventory .html file's fieldName attribute\r\n // we need to use the headerText property to properly find columns in the below logic.\r\n let value = this.gridType.includes('LegacyGrid') ? col.headerText : col.field;\r\n if (this.defaultColumns.includes(value)) {\r\n col.visible = true;\r\n if (col.type === null) {\r\n col.type = 'string';\r\n }\r\n }\r\n else {\r\n col.visible = false;\r\n }\r\n\r\n if (col.field.toLowerCase() === 'id') {\r\n col.visible = false;\r\n col.showInColumnChooser = false;\r\n }\r\n\r\n if (col.field === 'select') {\r\n col.visible = true;\r\n col.showInColumnChooser = false;\r\n }\r\n\r\n if (col.type === 'date') {\r\n col.format = { type: 'date', format: 'MM/dd/yyyy hh:mm a' };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n isVisible(columnName): boolean {\r\n\r\n let visible;\r\n\r\n visible = this.defaultColumns.includes(columnName);\r\n\r\n return visible;\r\n }\r\n\r\n /**\r\n * Presets the column options and state for the execution based on the Item type\r\n * @param {string} itemType\r\n */\r\n private preExecute(state: DataStateChangeEventArgs, itemType: string) {\r\n\r\n this.pageOptions = { pageSize: this.prefsPerGrid.defaultPageSize, pageCount: this.prefsPerGrid.pageCount, pageSizes: [25, 50, 100] };\r\n\r\n this.state = { skip: state && state.skip ? state.skip : 0, take: this.pageOptions['pageSize'], sorted: [] };\r\n\r\n if (this.prefsPerGrid.defaultColumns && this.prefsPerGrid.defaultColumns.length > 0) {\r\n\r\n const colAsc = this.prefsPerGrid.defaultColumns.find(c => c.sort.toLowerCase() === 'ascending');\r\n\r\n if (colAsc) {\r\n this.state.sorted.push({ name: colAsc.name, direction: colAsc.sort.toLowerCase() });\r\n }\r\n }\r\n }\r\n\r\n joinFieldArray(data, field): string {\r\n\r\n const fieldArray = data[field];\r\n\r\n if (fieldArray && fieldArray.length) {\r\n fieldArray.join('; ');\r\n }\r\n\r\n return fieldArray;\r\n }\r\n\r\n dataBound(args: any) {\r\n\r\n if (!this.hide) {\r\n this.hide = true;\r\n }\r\n\r\n // The grids in this component have the Menu filter enabled.\r\n // However, this filter contains an inbuilt autocomplete control\r\n // The code below creates a custom control to add a plain textbox instead of the autocomplete control.\r\n\r\n const inputObj = [];\r\n\r\n for (let i = 0; i < this.grid.columns.length; i++) {\r\n\r\n let filterBox: any;\r\n\r\n\r\n if ((this.grid.columns[i] as any).type === 'string' || (this.grid.columns[i] as any).type === null) { // create textbox for string type column only\r\n (this.grid.columns[i] as any).filter.ui = {\r\n\r\n create: (args) => {\r\n\r\n const flValInput: HTMLElement = document.createElement('input');\r\n\r\n args.target.appendChild(flValInput);\r\n\r\n inputObj[args.column.field] = new TextBox({\r\n floatLabelType: 'Never',\r\n });\r\n inputObj[args.column.field].appendTo(flValInput);\r\n\r\n filterBox = args.target;\r\n },\r\n read: (args) => {\r\n\r\n let isSkip;\r\n let skipInput;\r\n\r\n if (args.column.type === 'string') {\r\n skipInput = ['>', '<', '=', '!'];\r\n\r\n for (let i = 0, value = args.element.value; i < value.length; i++) {\r\n let val = value[i];\r\n if (skipInput.indexOf(val) > -1) {\r\n isSkip = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isSkip) {\r\n args.fltrObj.filterByColumn(args.column.field, args.operator, args.element.value);\r\n } else {\r\n\r\n this.toastr.error('\"< > = !\" are not valid filter characters', '', { timeOut: 0, closeButton: true });\r\n }\r\n },\r\n write: (args) => {\r\n inputObj[args.column.field].value = args.filteredValue || '';\r\n }\r\n };\r\n }\r\n }\r\n\r\n if (this.initial && this.data && this.data.result && this.data.result.length > 0) {\r\n\r\n this.retrieveInDataState = true;\r\n\r\n this.initial = false;\r\n\r\n const firstHeader = document.getElementsByClassName('e-headercell')[0];\r\n\r\n if (firstHeader) {\r\n firstHeader.classList.add('checkbox-header-manage-di');\r\n }\r\n\r\n } else {\r\n\r\n (this.grid.getContent().parentElement as any).style.display = '';\r\n\r\n if (this.initial && this.data && this.data.count === 0 && this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n this.initial = false;\r\n }\r\n }\r\n\r\n this.setDeviceCounter();\r\n this.toolbarButtonAccess();\r\n }\r\n\r\n /**\r\n * Store user prefs in sessionStorage for reloading and changing tabs.\r\n * When \"Save Grid Preferences\" is clicked this sessionStorage object will be passed to SettingService\r\n */\r\n storeUserPrefs() {\r\n this.userPrefs = this.storage.read('userPrefs');\r\n this.userGuid = this.storage.read('userGuid');\r\n\r\n if (!this.userPrefs) {\r\n\r\n if (this.savedUserPrefs) {\r\n\r\n if (this.appDefaults.channelGrids && this.appDefaults.channelGrids.length) {\r\n this.appDefaults.channelGrids.forEach(grid => {\r\n if (this.savedUserPrefs.channelGrids.findIndex(x => x.applicationVariantId === grid.applicationVariantId) < 0) {\r\n this.savedUserPrefs.channelGrids.push(grid);\r\n }\r\n });\r\n }\r\n\r\n this.userPrefs = this.savedUserPrefs;\r\n } else {\r\n\r\n this.userPrefs = this.appDefaults;\r\n }\r\n }\r\n\r\n let userColumnsObjects: Column[] = [];\r\n\r\n // empty array every time before adding columns\r\n this.userColumns = [];\r\n\r\n this.userPrefs.userId = this.userGuid;\r\n this.userPrefs.configurationType = 'UserConfig';\r\n\r\n if (this.grid && this.grid.columns) {\r\n\r\n this.gridComplete = true;\r\n\r\n userColumnsObjects = (this.grid.columns as Array);\r\n\r\n if (userColumnsObjects && userColumnsObjects.length > 0) {\r\n\r\n userColumnsObjects.forEach((col, i) => {\r\n\r\n const column = { name: '', sort: '', seq: 0, visible: true };\r\n\r\n // EUDAMED Legacy columns must use the headerText\r\n if (this.dataScope.toLowerCase() === 'eudamed' && this.isLegacyImportFeatureEnabled && this.currentRegistrationTypeSelection === RegistrationTypeEnum.Legacy) {\r\n column.name = col.headerText;\r\n }\r\n else {\r\n column.name = col.field;\r\n }\r\n\r\n column.seq = i;\r\n\r\n column.visible = col.visible;\r\n\r\n this.userColumns.push(column);\r\n });\r\n }\r\n\r\n // Add the legacy grids if they are not present in the userPrefs\r\n if (this.dataScope === 'eudamed' && this.isLegacyImportFeatureEnabled) {\r\n let eudamedGrids = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n let appDefaultEudamedGrid = this.appDefaults.channelGrids.find(a => a.applicationVariantId === this.appVarId);\r\n let legacyGrids = ['modelLegacyGrid', 'deviceLegacyGrid'];\r\n legacyGrids.forEach(legacyGrid => {\r\n if (!eudamedGrids.hasOwnProperty(legacyGrid)) {\r\n this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[legacyGrid] = appDefaultEudamedGrid[legacyGrid];\r\n }\r\n });\r\n }\r\n\r\n let possibleGrids = ['modelGrid', 'deviceGrid'];\r\n if (this.dataScope === 'eudamed' && this.isLegacyImportFeatureEnabled) {\r\n possibleGrids.push('modelLegacyGrid');\r\n possibleGrids.push('deviceLegacyGrid');\r\n }\r\n let allGridsButThisOne = possibleGrids.filter(x => x !== this.gridType);\r\n\r\n this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[this.gridType].defaultColumns = [];\r\n this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[this.gridType].defaultColumns = this.userColumns;\r\n this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[this.gridType].defaultPageSize = this.state.take;\r\n\r\n // keep the other grid prefs, otherwise the app default is selected\r\n allGridsButThisOne.forEach(grid => {\r\n this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[grid].defaultColumns = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[grid].defaultColumns;\r\n this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[grid].defaultPageSize = this.userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId)[grid].defaultPageSize;\r\n });\r\n\r\n this.storage.write('userPrefs', this.userPrefs);\r\n }\r\n }\r\n /**\r\n * Triggers when any grid action begins\r\n * @param {any} args\r\n */\r\n actionBegin(args: any) {\r\n\r\n const type = args.requestType;\r\n\r\n switch (type) {\r\n case 'paging':\r\n this.storeSelectedEntireItems();\r\n break;\r\n\r\n case 'filterbeforeopen':\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Triggers when any grid action taken (sort, page, rows/per page number)\r\n * Called from the html actionComplete event\r\n * @param {any} args\r\n */\r\n complete(args: any) {\r\n\r\n switch (args.requestType) {\r\n case 'reorder':\r\n\r\n this.storeUserPrefs();\r\n\r\n if (!this.selectAllChecked && !this.deselectAllChecked) {\r\n this.persistSelectedItems();\r\n }\r\n\r\n // if SelectAll is selected - select rows on the page on paging event\r\n if (this.selectAllChecked) {\r\n this.selectRowsAll(this.selectAllChecked);\r\n }\r\n\r\n break;\r\n case 'refresh':\r\n\r\n this.setDeviceCounter();\r\n\r\n this.refreshCount++;\r\n\r\n this.gridComplete = this.refreshCount >= 2 || this.deviceCount === 0;\r\n\r\n this.toolbarButtonAccess();\r\n\r\n break;\r\n case 'columnstate':\r\n\r\n this.storeUserPrefs();\r\n break;\r\n case 'filtering':\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n this.setDeviceCounter();\r\n\r\n this.selectRowsAll(false);\r\n }\r\n break;\r\n case 'sorting':\r\n\r\n this.storeUserPrefs();\r\n break;\r\n\r\n case 'paging':\r\n\r\n if (!this.selectAllChecked && !this.deselectAllChecked) {\r\n this.persistSelectedItems();\r\n }\r\n\r\n // if SelectAll is selected - select rows on the page on paging event\r\n if (this.selectAllChecked) {\r\n this.selectRowsAll(this.selectAllChecked);\r\n }\r\n\r\n // if SelectAll is intentionally unchecked - unselect rows - overrides persistance\r\n if (this.deselectAllChecked) {\r\n this.selectRowsAll(false);\r\n }\r\n\r\n break;\r\n case 'filterafteropen':\r\n\r\n if (args.columnType === 'date') {\r\n args.filterModel.dlgDiv.querySelector(\r\n '.e-datepicker'\r\n ).ej2_instances[0].format = 'MM/dd/y';\r\n }\r\n break;\r\n }\r\n }\r\n toolbarButtonAccess() {\r\n\r\n\r\n this.permitted = this.authorizationService.hasPermission(this.permissionsConst.CanSendDataForSubmissionApproval);\r\n\r\n if (this.permitted) {\r\n\r\n this.toolbar = [{ text: 'Validate', id: 'validateselected', prefixIcon: 'far fa-check' }, { template: this.toolbarSubmitTemplate, id: 'approveselected' }, { template: this.toolbarDownloadLogTemplate, id: 'downloadlog', }, 'ColumnChooser'];\r\n } else {\r\n\r\n this.toolbar = [{ text: 'Validate', id: 'validateselected', prefixIcon: 'far fa-check' }, { template: this.toolbarDownloadLogTemplate, id: 'downloadlog' }, 'ColumnChooser'];\r\n }\r\n\r\n }\r\n\r\n saveUserPrefs() {\r\n\r\n const userPrefs = this.storage.read('userPrefs');\r\n\r\n if (userPrefs) {\r\n\r\n // sorting should not be saved in the prefs and therefore the initial sorting will be\r\n // the default one - by modifiedDateTime desc\r\n userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelGrid.defaultColumns.forEach(col => {\r\n col.sort = 'Descending';\r\n });\r\n\r\n userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceGrid.defaultColumns.forEach(col => {\r\n col.sort = 'Descending';\r\n });\r\n\r\n // Handle the default sort for Legacy grids only for EUDAMED with feature enabled\r\n if (this.dataScope === 'eudamed' && this.isLegacyImportFeatureEnabled) {\r\n userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).modelLegacyGrid.defaultColumns.forEach(col => {\r\n col.sort = 'Descending';\r\n });\r\n\r\n userPrefs.channelGrids.find(a => a.applicationVariantId === this.appVarId).deviceLegacyGrid.defaultColumns.forEach(col => {\r\n col.sort = 'Descending';\r\n });\r\n }\r\n\r\n this.prefsPerGrid.defaultColumns.forEach(col => {\r\n col.sort = 'Descending';\r\n });\r\n\r\n this.userGuid = this.storage.read('userGuid');\r\n\r\n this.service.saveUserPrefs(userPrefs).subscribe(res => {\r\n const result = res['message'];\r\n\r\n if (result && result.toLowerCase() === 'success') {\r\n\r\n this.toastr.success('Preferences saved successfully', '', { closeButton: true });\r\n\r\n this.storage.remove('userPrefs');\r\n\r\n } else {\r\n\r\n this.toastr.error('Preferences not saved.', '', { timeOut: 0, closeButton: true });\r\n }\r\n });\r\n } else {\r\n this.toastr.info('Preferences haven not been modified. The default preferences remain.', '', { closeButton: true });\r\n }\r\n }\r\n\r\n /**\r\n * Preset grid state, column options, etc when the Item type tab has changed.\r\n * @param {} event\r\n */\r\n tabChanged(event) {\r\n\r\n // variable to initialize the ColumnChooser\r\n this.initialLoad = true; // Needed to kick off the columnChooserOpened event so that we may configure the column selector options.\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n this.initial = true;\r\n this.selectAllChecked = false;\r\n this.storage.write('activeTab', event.nextId);\r\n this.activeTab = event.nextId;\r\n\r\n this.deviceCount = -1;\r\n this.refreshCount = 1; // need to increase to maintain gridComplete.\r\n this.gridComplete = false;\r\n this.itemType = event.nextId;\r\n this.gridType = this.itemType === 'model' ? 'modelGrid' : 'deviceGrid';\r\n\r\n if (this.dataScope.toLowerCase() === 'eudamed' && this.isLegacyImportFeatureEnabled && this.currentRegistrationTypeSelection == RegistrationTypeEnum.Legacy) {\r\n this.gridType = `${this.itemType}LegacyGrid`;\r\n }\r\n\r\n this.state = {};\r\n this.grid.columns = [];\r\n this.data = null;\r\n this.validatedAll = false;\r\n\r\n this.preExecute(this.state, this.itemType);\r\n\r\n this.data$ = this.service.getData(this.state, this.grid, this.customer.customerId, this.itemType, this.dataScope, this.language, this.currentRegistrationTypeSelection);\r\n\r\n this.subscription = this.data$.subscribe((response) => {\r\n\r\n this.retrieveInDataState = true;\r\n\r\n this.data = response;\r\n\r\n this.setDeviceCounter();\r\n\r\n this.applyDefaultPrefs();\r\n\r\n this.buildColumnsPositionArray();\r\n\r\n this.reorderColumns();\r\n });\r\n }\r\n\r\n\r\n buildColumnsPositionArray() {\r\n\r\n let columns: string[] = [];\r\n let gridColumns: any[] = [];\r\n\r\n this.position = [];\r\n\r\n this.applyDefaultPrefs();\r\n\r\n this.userPrefs = this.storage.read('userPrefs');\r\n\r\n if (!this.defaultColumns || (this.defaultColumns && this.defaultColumns.length === 0)) {\r\n\r\n if (this.prefsPerGrid.defaultColumns && this.prefsPerGrid.defaultColumns.length > 0) {\r\n this.prefsPerGrid.defaultColumns.forEach(e => {\r\n this.defaultColumns.push(e['name']);\r\n });\r\n }\r\n\r\n columns = this.defaultColumns;\r\n } else {\r\n\r\n columns = this.defaultColumns;\r\n }\r\n\r\n let columnPositionInGrid: number;\r\n\r\n // First position is a checkbox\r\n this.position.push(0);\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n gridColumns = this.grid.columns;\r\n\r\n if (columns && columns.length > 0 && gridColumns && gridColumns.length > 0) {\r\n\r\n columns.forEach(columnName => {\r\n\r\n // First position is for the checkbox, start from the second position\r\n for (let index = 1; index < gridColumns.length; index++) {\r\n\r\n const gridCol = gridColumns[index];\r\n\r\n let valueToCheck = this.gridType.includes('LegacyGrid') ? gridCol.headerText : gridCol.field;\r\n if (gridCol && valueToCheck === columnName) {\r\n columnPositionInGrid = gridColumns.indexOf(gridCol);\r\n\r\n if (columnPositionInGrid && columnPositionInGrid > -1) {\r\n this.position.push(columnPositionInGrid);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n reorderColumns() {\r\n\r\n let gridColumns: any[] = [];\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n gridColumns = this.grid.columns;\r\n\r\n if (gridColumns && gridColumns.length > 0) {\r\n const remainingColumns = gridColumns.filter(c => c.visible === false);\r\n\r\n const requiredColumns = [];\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n this.position.forEach((value, index) => {\r\n requiredColumns[index] = this.grid.columns[value];\r\n });\r\n this.grid.columns = requiredColumns.concat(remainingColumns);\r\n }\r\n }\r\n }\r\n\r\n this.retrieveInDataState = false;\r\n }\r\n\r\n getDownloadInProgress(): boolean {\r\n\r\n const retVal = this.service.manageDiDownloadLogBS.getValue();\r\n\r\n return retVal;\r\n }\r\n\r\n persistSelectedItems() {\r\n\r\n this.grid.selectRows([]);\r\n\r\n const selectedItemIndexes: number[] = [];\r\n\r\n const selectedItems = this.storage.read('selectedItems');\r\n\r\n if (selectedItems && selectedItems.length > 0) {\r\n\r\n const gridObj = this.grid;\r\n\r\n const records = gridObj.getCurrentViewRecords();\r\n\r\n selectedItems.forEach(item => {\r\n\r\n const rowIndex = records.findIndex(r => r['id'] === item.id);\r\n\r\n if (rowIndex >= 0) {\r\n selectedItemIndexes.push(rowIndex);\r\n }\r\n });\r\n\r\n if (selectedItemIndexes.length > 0) {\r\n\r\n this.grid.selectRows(selectedItemIndexes);\r\n }\r\n }\r\n }\r\n\r\n storeSelectedEntireItems() {\r\n\r\n // for some reason getSelectedRecords() returns all visible rows, even if nothing is selected\r\n // however the getSelectedRows() returns correctly the selected rows but not it the structure we need from the getSelectedRecords()\r\n // So, need to check the getSelectedRows to make sure that rows have been selected. Looks like Syncfusino bug. When any row is really selected,\r\n // both function return correct number of rows.\r\n\r\n if (this.grid.getSelectedRows() && this.grid.getSelectedRows().length) {\r\n const selectedRecords = this.grid.getSelectedRecords();\r\n\r\n if (selectedRecords.length > 0) {\r\n\r\n // add selected records\r\n selectedRecords.forEach(element => {\r\n\r\n if (!this.selectedItems.find(x => x.id === element['id'])) {\r\n this.selectedItems.push(element);\r\n }\r\n });\r\n }\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n } else {\r\n\r\n // when no rows selected the above block is skipped and the storage is not updated and previously selected rows are persisted.\r\n let storedSelectedItems = this.storage.read('selectedItems');\r\n\r\n // get records on the page and remove each of them from the storage so they are not persisted\r\n const records = this.grid.getCurrentViewRecords();\r\n\r\n if (records && records.length) {\r\n records.forEach(item => {\r\n\r\n const rowIndex = storedSelectedItems.findIndex(x => x === item['id']);\r\n\r\n if (rowIndex >= 0) {\r\n storedSelectedItems.splice(rowIndex, 1)\r\n }\r\n });\r\n }\r\n\r\n // update the storage\r\n this.storage.write('selectedItems', storedSelectedItems);\r\n }\r\n }\r\n\r\n rowSelectedItem(event, field) {\r\n\r\n if (event.isInteracted) {\r\n\r\n if (!this.selectAllChecked) {\r\n if (event && event.data) {\r\n\r\n // multiple selection\r\n if (event.data.length) {\r\n\r\n event.data.forEach(item => {\r\n if (!this.selectedItems.find(x => x.id === event.data[field])) {\r\n this.selectedItems.push(item);\r\n }\r\n });\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n } else {\r\n\r\n if (!this.selectedItems.find(x => x.id === event.data[field])) {\r\n this.selectedItems.push(event.data);\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n rowDeselectedItem(event, field) {\r\n\r\n if (event.isInteracted) {\r\n if (!this.selectAllChecked) {\r\n\r\n this.selectedItems = this.storage.read('selectedItems');\r\n\r\n if (this.selectedItems && this.selectedItems.length > 0) {\r\n\r\n // multiple selection\r\n if (event.data.length) {\r\n\r\n event.data.forEach(item => {\r\n const rowIndex = this.selectedItems.findIndex(x => x['id'] === item[field])\r\n\r\n if (rowIndex >= 0) {\r\n this.selectedItems.splice(rowIndex, 1);\r\n }\r\n });\r\n } else {\r\n // single item\r\n const rowIndex = this.selectedItems.findIndex(x => x['id'] === event.data[field])\r\n\r\n if (rowIndex >= 0) {\r\n this.selectedItems.splice(rowIndex, 1);\r\n }\r\n }\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n }\r\n }\r\n }\r\n\r\n downloadLog() {\r\n\r\n let fileName: string;\r\n let downloadLogTaskGuid;\r\n\r\n const items: object[] = [];\r\n \r\n // Prevent the user from attempting to kick off another Log download in the event they get impatient.\r\n if (this.service.manageDiDownloadLogBS.getValue()) {\r\n this.toastr.warning(\"Please wait, a download is currently in progress.\")\r\n return;\r\n }\r\n\r\n if (this.selectAllChecked) {\r\n\r\n // This call will return the guid that will be used later to check the download progress.\r\n // call 1, with or without filter. Get back guid.\r\n // call 2, checkDownloadProgress ( guid). Get \"isDownloading=true/false\", file name, success/fail, if there are chunks I get total number of chunks and chunks completed.\r\n this.downloadInProgress = true;\r\n this.service.manageDiDownloadLogBS.next(this.downloadInProgress);\r\n\r\n let filter = this.getFilterCriteria();\r\n\r\n this.postActionReset();\r\n\r\n // call 1, with or without filter. Get back guid.\r\n this.service.downloadValidationLogAll(this.itemType, this.dataScope, this.currentRegistrationTypeSelection, filter).subscribe(response => {\r\n\r\n if (response['isSuccess'] && response['data']) {\r\n\r\n downloadLogTaskGuid = response['data'];\r\n\r\n // the loading process has started\r\n if (downloadLogTaskGuid) {\r\n\r\n // Initiate the download process timer\r\n this.downloadTimerSubscription = timer(0, this.timerInterval).subscribe(() => {\r\n\r\n let responseData;\r\n let dowloadProgressStatus = 0;\r\n\r\n this.service.getDownloadLogStatus(downloadLogTaskGuid).subscribe(response => {\r\n\r\n // check data if success\r\n if (response['isSuccess'] && response['data']) {\r\n\r\n responseData = response['data'];\r\n dowloadProgressStatus = responseData['statusCode'];\r\n\r\n // variable to stop \"dancing dots\" on the toolbar button\r\n this.downloadInProgress = dowloadProgressStatus !== ExportStatusEnum.Completed && dowloadProgressStatus !== ExportStatusEnum.Exception;\r\n this.service.manageDiDownloadLogBS.next(this.downloadInProgress);\r\n\r\n // if status is either completed or exception stop sending http calls, unsubscribe.\r\n if (dowloadProgressStatus === ExportStatusEnum.Completed || dowloadProgressStatus === ExportStatusEnum.Exception) {\r\n\r\n this.downloadInProgress = false;\r\n this.service.manageDiDownloadLogBS.next(this.downloadInProgress);\r\n\r\n // completed or exception - unsubscribe and reset\r\n // file is created, stop checking\r\n if (this.downloadTimerSubscription) {\r\n this.downloadTimerSubscription.unsubscribe();\r\n }\r\n\r\n if (dowloadProgressStatus === ExportStatusEnum.Completed) {\r\n\r\n // task completed, get the file from the location\r\n this.downloadLogFile(responseData['fileName'], responseData['filePath']);\r\n }\r\n\r\n\r\n if (dowloadProgressStatus === ExportStatusEnum.Exception) {\r\n\r\n this.toastr.error(`Error downloading Validation Log`, '', { timeOut: 0, closeButton: true });\r\n }\r\n\r\n }\r\n }\r\n })\r\n\r\n }\r\n );\r\n }\r\n } else {\r\n this.toastr.error(`Error downloading Validation Log`, '', { timeOut: 0, closeButton: true });\r\n }\r\n\r\n });\r\n\r\n } else {\r\n\r\n // for a manual row selection\r\n if (this.selectedItems && this.selectedItems.length) {\r\n\r\n const today = new Date();\r\n\r\n fileName = `ValidationLog_${String(today.getFullYear()).padStart(2, '0')}${String(today.getMonth() + 1).padStart(2, '0')}${String(today.getDate()).padStart(2, '0')}${String(today.getHours()).padStart(2, '0')}${String(today.getMinutes()).padStart(2, '0')}.csv`;\r\n\r\n this.selectedItems = this.storage.read('selectedItems');\r\n\r\n if (this.selectedItems && this.selectedItems.length) {\r\n\r\n this.selectedItems.forEach(selectedItem => {\r\n\r\n const item = {};\r\n\r\n if (selectedItem) {\r\n item['identifier'] = this.itemType === 'model' ? selectedItem['Basic UDI-DI'] : selectedItem['Primary DI'];\r\n item['agency'] = this.itemType === 'model' ? selectedItem['Basic UDI-DI Issuing Agency'] : selectedItem['Primary DI Issuing Agency'];\r\n item['revision'] = this.itemType === 'model' ? selectedItem['Model Revision'] : selectedItem['Device Revision'];\r\n item['registrationType'] = this.currentRegistrationTypeSelection;\r\n\r\n items.push(item);\r\n }\r\n });\r\n }\r\n\r\n if (items.length > 0) {\r\n\r\n const paramsContainer = {\r\n validationLogInputs: items,\r\n customerId: this.customer.customerId,\r\n channel: this.dataScope,\r\n reportFilename: fileName,\r\n reportFormat: 'CSV'\r\n };\r\n\r\n this.downloading = true;\r\n\r\n this.service.getValidationLog(paramsContainer)\r\n .subscribe(response => {\r\n\r\n if (response['size'] && response['type']) {\r\n\r\n // IE\r\n if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {\r\n (window.navigator as any).msSaveOrOpenBlob(response, fileName);\r\n } else {\r\n\r\n // non-IE\r\n const URL = window.URL || (window).webkitURL;\r\n const downloadUrl = URL.createObjectURL(response);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = fileName;\r\n link.click();\r\n\r\n this.downloading = false;\r\n }\r\n } else {\r\n\r\n this.toastr.error(`Error downloading Validation Log`, '', { timeOut: 0, closeButton: true });\r\n }\r\n });\r\n\r\n this.clearGridSelection();\r\n }\r\n } else {\r\n\r\n this.toastr.warning(`No ${this.capitalize(this.itemType)}(s) selected.`, '', { closeButton: true });\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n createSubmissionItems(event) {\r\n\r\n if (this.selectAllChecked) {\r\n\r\n this.submittedAll = false;\r\n\r\n let registrationTypeCode = this.dataScopeEudamed && this.currentRegistrationTypeSelection === RegistrationTypeEnum.Legacy\r\n ? RegistrationTypeEnum.Legacy\r\n : RegistrationTypeEnum.Regulation;\r\n\r\n let filter = this.getFilterCriteria();\r\n\r\n this.service.submitSelectedAll(this.itemType, this.dataScope, filter, registrationTypeCode).subscribe(data => {\r\n this.submittedAll = data['isSuccess'];\r\n\r\n this.toastr.success(`${this.getSelectedItemsCount()} ${this.itemType}(s) were successfully sent for approval.`, '', { closeButton: true });\r\n\r\n this.postActionReset();\r\n });\r\n\r\n } else {\r\n\r\n const submissions: ISubmission[] = [];\r\n\r\n if (this.selectedItems && this.selectedItems.length) {\r\n\r\n let registrationTypeCode = this.dataScopeEudamed && this.currentRegistrationTypeSelection === RegistrationTypeEnum.Legacy ? RegistrationTypeEnum.Legacy : RegistrationTypeEnum.Regulation;\r\n\r\n this.selectedItems.forEach(item => {\r\n\r\n const submissionItems: ISubmissionItem[] = [];\r\n\r\n const submission: ISubmission = {\r\n customerId: this.customer.customerId,\r\n createUserGuid: this.userGuid,\r\n distributionChannel: this.dataScope,\r\n riskClass: item['Device Risk Class'],\r\n skuNumber: item['Product SKU'],\r\n deviceModel: item['Device Model'],\r\n applicableLegislation: item['Applicable Regulation'],\r\n brandName: item['Trade Name'],\r\n submissionStatusCode: 1,\r\n registrationTypeCode: registrationTypeCode,\r\n submissionItems: submissionItems\r\n };\r\n\r\n if (this.itemType === 'device') {\r\n const submissionItemDevice: ISubmissionItem = {\r\n\r\n submissionId: '0',\r\n submissionItemTypeCode: 'device',\r\n itemId: item['Primary DI'],\r\n itemIssuingAgency: item['Primary DI Issuing Agency'],\r\n revision: item['Device Revision'],\r\n externalSourceId: ''\r\n };\r\n\r\n submission.submissionItems.push(submissionItemDevice);\r\n }\r\n\r\n if (this.dataScopeEudamed) {\r\n const submissionItemModel: ISubmissionItem = {\r\n\r\n submissionId: '0',\r\n submissionItemTypeCode: 'model',\r\n itemId: this.itemType === 'model' ? item['Basic UDI-DI'] : item['Basic UDI-DI Number'],\r\n itemIssuingAgency: item['Basic UDI-DI Issuing Agency'],\r\n revision: item['Model Revision'],\r\n externalSourceId: ''\r\n };\r\n\r\n submission.submissionItems.push(submissionItemModel);\r\n }\r\n\r\n submissions.push(submission);\r\n\r\n });\r\n\r\n if (submissions && submissions.length > 0) {\r\n\r\n let data$: Observable;\r\n\r\n data$ = this.service.approveSelectedDevices(submissions, this.customer.customerId);\r\n this.toastr.info('Your request has been submitted', '', { closeButton: true });\r\n this.subscription = data$.subscribe(data => {\r\n\r\n if (data && data['status'] === MessageSeverityEnum.success) {\r\n\r\n this.toastr.success('Your request has been processed', '', { closeButton: true });\r\n this.grid.refresh();\r\n } else {\r\n\r\n this.toastr.error(`Error while sending ${this.capitalize(this.itemType)}(s) for Approval.`, '', { timeOut: 0, closeButton: true });\r\n }\r\n });\r\n this.clearGridSelection();\r\n }\r\n }\r\n }\r\n\r\n this.modalVisible = false;\r\n this.dialog.hide();\r\n }\r\n\r\n submissionCancel(event) {\r\n\r\n this.dialog.hide();\r\n this.modalVisible = false;\r\n }\r\n\r\n onOverlayClick: EmitType = () => {\r\n\r\n this.modalVisible = false;\r\n this.dialog.hide();\r\n }\r\n\r\n btnClick: EmitType = () => {\r\n this.modalVisible = true;\r\n this.dialog.show();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // in this case can't reuse the subscription. Need a separate subscription for the timer\r\n // to be able to stop the timer on ngOnDestroy. Otherwise it keeps triggering on other pages.\r\n if (this.revalidationTimerSubscription) {\r\n this.revalidationTimerSubscription.unsubscribe();\r\n }\r\n\r\n if (this.validationSelectAllSubscription) {\r\n this.validationSelectAllSubscription.unsubscribe();\r\n }\r\n\r\n if (this.tooltipObj && this.tooltipObj.destroy) {\r\n this.tooltipObj.destroy();\r\n }\r\n\r\n this.registrationTypeSelection.unsubscribe();\r\n this.featureServiceSubscription.unsubscribe();\r\n\r\n // clear the selected items storage\r\n this.storage.write('selectedItems', []);\r\n }\r\n\r\n getCssClass(data) {\r\n\r\n return { 'small-loading-span': !data['Validation Status'] };\r\n }\r\n}\r\n\r\nclass LastCallTime {\r\n id: string;\r\n callTime: any;\r\n\r\n constructor(id: string, callTime: any) {\r\n this.id = id;\r\n this.callTime = callTime;\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.css']\r\n})\r\nexport class CheckboxComponent {\r\n @Input() field: any = {};\r\n @Input() form: FormGroup;\r\n get isValid() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].valid;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n get isDirty() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].dirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['./date.component.css']\r\n})\r\nexport class DateComponent {\r\n @Input() field: any = {};\r\n @Input() form: FormGroup;\r\n get isValid() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].valid;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n get isDirty() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].dirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnChange() {\r\n \r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n\r\n@Component({\r\n selector: 'dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.css']\r\n})\r\nexport class DropdownComponent {\r\n @Input() field: any = {};\r\n @Input() form: FormGroup;\r\n\r\n constructor() {\r\n\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { forbiddenNameValidator } from '../../../shared/directives/forbidden-name.directive';\r\nimport { crossValidator } from '../../../shared/directives/cross-validator';\r\n\r\n@Component({\r\n selector: 'app-dynamicformbuilder',\r\n templateUrl: './dynamicformbuilder.component.html',\r\n styleUrls: ['./dynamicformbuilder.component.css']\r\n})\r\nexport class DynamicformbuilderComponent implements OnInit {\r\n @Output() onSubmit = new EventEmitter();\r\n @Input() fields: any[] = [];\r\n form: FormGroup;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n let fieldsCtrls = {};\r\n for (let f of this.fields) {\r\n let fieldValidators = [];\r\n if (f.required) {\r\n fieldValidators.push(Validators.required);\r\n }\r\n if (f.maxLength) {\r\n fieldValidators.push(Validators.maxLength(f.maxLength));\r\n }\r\n if (f.forbiddenNameValidator) {\r\n fieldValidators.push(forbiddenNameValidator(/bob/i));\r\n }\r\n if (f.type != 'checkbox') {\r\n fieldsCtrls[f.name] = new FormControl(f.value || '', fieldValidators);\r\n } else {\r\n let opts = {};\r\n for (let opt of f.options) {\r\n opts[opt.key] = new FormControl(opt.value);\r\n }\r\n fieldsCtrls[f.name] = new FormGroup(opts)\r\n }\r\n }\r\n this.form = new FormGroup(fieldsCtrls, { validators: crossValidator });\r\n }\r\n\r\n send() {\r\n\r\n //onSubmit.emit(this.form.value)\r\n\r\n //for (let entry of ) {\r\n \r\n }\r\n}\r\n","import { dynamicschemaData } from \"../../../shared/models/dynamic-schema-data\";\r\nimport { Component, OnInit, OnDestroy, } from '@angular/core';\r\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { TemplateService } from \"../../../shared/services/template.service\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n\r\n@Component({\r\n selector: 'app-dynamicforms',\r\n templateUrl: './dynamicforms.component.html',\r\n styleUrls: ['./dynamicforms.component.css']\r\n})\r\nexport class DynamicformsComponent implements OnInit, OnDestroy {\r\n public form: FormGroup;\r\n valueChangesSubscription: Subscription;\r\n public fields: any={};\r\n public txt: string;\r\n constructor(private templateService: TemplateService) {\r\n this.fields = this.templateService.getTemplate().fields;\r\n this.txt = JSON.stringify(this.fields);\r\n this.form = new FormGroup({\r\n fields: new FormControl(this.txt)\r\n })\r\n this.valueChangesSubscription = this.form.valueChanges.subscribe((update) => {\r\n\r\n this.fields = JSON.parse(update.fields);\r\n });\r\n }\r\n\r\n onUpload(e) {\r\n }\r\n\r\n getFields() {\r\n return this.fields;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.valueChangesSubscription.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.css']\r\n})\r\nexport class FileComponent {\r\n @Input() field: any = {};\r\n @Input() form: FormGroup;\r\n get isValid() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].valid;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n get isDirty() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].dirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnChange() {\r\n \r\n // this.field.value.\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.css']\r\n})\r\nexport class RadioComponent {\r\n @Input() field: any = {};\r\n @Input() form: FormGroup;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'textbox',\r\n templateUrl: './textbox.component.html',\r\n styleUrls: ['./textbox.component.css']\r\n})\r\nexport class TextboxComponent {\r\n @Input() field: any = {};\r\n @Input() form: FormGroup;\r\n get isValid() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].valid;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n get isDirty() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].dirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n get errors() {\r\n if (this.form.controls[this.field.name]) {\r\n return this.form.controls[this.field.name].errors;\r\n }\r\n\r\n }\r\n\r\n constructor() {\r\n\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { isDevMode } from '@angular/core';\r\nimport { ThumbSettings } from '@syncfusion/ej2-angular-charts';\r\n\r\n@Component({\r\n selector: 'app-error',\r\n templateUrl: './error.component.html',\r\n styleUrls: ['./error.component.css']\r\n})\r\nexport class ErrorComponent implements OnInit {\r\n\r\n userMessage: string;\r\n errorCode: string;\r\n iconClass: string;\r\n devMode = false;\r\n devMessage = '';\r\n title = '';\r\n pageNotFound = false;\r\n\r\n // Constructor\r\n constructor (private activatedRoute: ActivatedRoute, private appGlobals: AppGlobals) {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.devMode = isDevMode();\r\n\r\n // Dev Mode message. Not visible in the Production\r\n this.devMessage = this.activatedRoute.snapshot.paramMap.get('message');\r\n this.errorCode = this.activatedRoute.snapshot.paramMap.get('code');\r\n\r\n // if undefined route is used give a 404\r\n if (!this.devMessage && !this.errorCode) {\r\n this.errorCode = '404';\r\n this.pageNotFound = true;\r\n }\r\n\r\n // error messages are intended to be user friendly, the ones that are for the Prod mode.\r\n switch (this.errorCode) {\r\n case this.appGlobals.ERROR_CODE_FORBIDDEN:\r\n this.userMessage = this.appGlobals.FORBIDDEN_ERROR_MESSAGE;\r\n this.iconClass = 'fal fa-ban';\r\n this.title = 'Forbidden'\r\n break;\r\n\r\n case this.appGlobals.ERROR_CODE_NOT_FOUND:\r\n\r\n if (this.pageNotFound) {\r\n this.userMessage = this.appGlobals.PAGE_NOT_FOUND;\r\n this.iconClass = 'fal fa-user-magnifying-glass';\r\n this.title = 'Page Not Found';\r\n this.devMessage = '404 - incorrect route'\r\n } else {\r\n this.userMessage = this.appGlobals.NOT_FOUND_ERROR_MESSAGE;\r\n this.iconClass = 'fal fa-user-magnifying-glass';\r\n this.title = 'Resource Not Found'\r\n }\r\n\r\n break;\r\n\r\n case this.appGlobals.ERROR_CODE_UNAUTHORIZED:\r\n this.userMessage = this.appGlobals.NOT_AUTHORIZED_ERROR_MESSAGE;\r\n this.iconClass = 'fal fa-user-lock';\r\n this.title = 'Unauthorized';\r\n break;\r\n\r\n case this.appGlobals.ERROR_CODE_GENERIC_ERROR:\r\n this.userMessage = this.appGlobals.GENERIC_HTTP_ERROR_MESSAGE;\r\n this.iconClass = 'fal fa-cloud-exclamation';\r\n this.title = 'Server Error';\r\n break;\r\n default:\r\n this.userMessage = this.appGlobals.GENERIC_HTTP_ERROR_MESSAGE;\r\n this.title = 'Unexpected Error';\r\n this.iconClass = 'fal fa-cloud-exclamation';\r\n break;\r\n }\r\n }\r\n\r\n // Sets the message to display\r\n setMessage(message: string) {\r\n this.userMessage = message;\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FilterService, FilterSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { TextBox } from '@syncfusion/ej2-angular-inputs';\r\nimport { DialogComponent, TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { DataUtil } from '@syncfusion/ej2-data';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { DeviceAttribute, IExportDataTask, IExportDataTemplate, IResults, IServiceError, Section } from '../../shared/models/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { AuthorizationService, CustomerService, DeviceinventoryService, ExportDataService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\nimport { AttributesModalComponent } from '../attributes-modal/attributes-modal.component';\r\nimport { BaseGridComponent } from '../base-grid/base-grid.component';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-export-data',\r\n templateUrl: './export-data.component.html',\r\n styleUrls: ['./export-data.component.scss'],\r\n animations: [fadeInOut],\r\n providers: [FilterService],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class ExportDataComponent extends BaseGridComponent implements OnInit, OnDestroy {\r\n\r\n dataScopeEnum: any;\r\n dataScope: any;\r\n resolverData: any[] | IServiceError;\r\n loading = true;\r\n attributes: DeviceAttribute[];\r\n templates: IExportDataTemplate[];\r\n tasks: IExportDataTask[];\r\n properties: string[] = [];\r\n editTemplateId: number;\r\n formatOptions: Object;\r\n filterSettings: FilterSettingsModel;\r\n templateToDeleteId: number;\r\n templateToDeleteName = '';\r\n errorMessage: string;\r\n\r\n target = '#modalTarget';\r\n modalPosition: object = { X: 'center', Y: 'center' };\r\n modalWidth = '30%';\r\n modalDeleteWidth = '450px';\r\n modalHeight = 'auto';\r\n animationSettings: Object = { effect: 'Zoom' };\r\n isModal = true;\r\n modalVisible = false;\r\n tasksCount;\r\n selectOptions: Object;\r\n\r\n @ViewChild('attrModal', { static: true }) attrModal: AttributesModalComponent;\r\n @ViewChild('deleteDialog', { static: true }) public deleteDialog: DialogComponent;\r\n @ViewChild('runDialog', { static: true }) public runDialog: DialogComponent;\r\n @ViewChild('tooltipObj') tooltipObj: TooltipComponent;\r\n\r\n constructor(public service: DeviceinventoryService, public storage: StorageManagerService, public router: Router,\r\n public activatedRoute: ActivatedRoute, public toastr: ToastrService, public cdref: ChangeDetectorRef,\r\n public authorizationService: AuthorizationService, public authenticationService: AuthenticationService,\r\n public appGlobals: AppGlobals, public exportDataService: ExportDataService, public settingsService: SettingsService,\r\n public customerService: CustomerService, public featureService: FeatureService) {\r\n\r\n super(service, storage, router, activatedRoute, toastr, cdref, authorizationService, authenticationService,\r\n appGlobals, exportDataService, settingsService, customerService, featureService);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.selectOptions = { persistSelection: true };\r\n this.formatOptions = { type: 'dateTime', format: 'MM/dd/yyyy hh:mm a' };\r\n this.sortSettings = { columns: [{ field: 'createDateTime', direction: 'Descending' }] };\r\n\r\n this.permissionsConst = this.appGlobals.permissions;\r\n\r\n this.filterSettings = {\r\n type: 'Menu',\r\n operators: {\r\n stringOperator: [\r\n { value: 'contains', text: 'contains' },\r\n { value: 'startsWith', text: 'starts with' },\r\n { value: 'endsWith', text: 'ends with' },\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n dateOperator: [\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n }\r\n };\r\n\r\n this.storage.write('activeTab', 'device');\r\n this.resolverData = this.activatedRoute.snapshot.data['data'];\r\n\r\n if (this.resolverData && (this.resolverData as any).length) {\r\n this.attributes = this.resolverData[0]?.data?.deviceAttributes;\r\n var fields = this.attributes?.find(a => a.name === 'DEVICE_KEY_IDENTIFICATION')?.fields;\r\n var f = fields?.find(a => a.name === 'UDI_DEVICE_IDENTIFIER');\r\n if (f) {\r\n f.caption = f.caption + '/EUDAMED ID';\r\n }\r\n f = fields?.find(a => a.name === 'UDI_DEVICE_IDENTIFIER_ISSUING_AGENCY');\r\n if (f) {\r\n f.caption = f.caption + '/EUDAMED ID Issuing Agency';\r\n }\r\n fields = this.attributes?.find(a => a.name === 'BASIC_UDI_DI_REFERENCE')?.fields;\r\n f = fields?.find(a => a.name === 'BUDI_DEVICE_IDENTIFIER');\r\n if (f) {\r\n f.caption = f.caption + '/EUDAMED DI';\r\n }\r\n f = fields?.find(a => a.name === 'BUDI_DEVICE_IDENTIFIER_ISSUING_AGENCY');\r\n if (f) {\r\n f.caption = f.caption + '/EUDAMED DI Issuing Agency';\r\n }\r\n // If the 'sk-device-license-number' feature is not enabled for the user, remove it from the attributes array.\r\n if (this.resolverData[3]) {\r\n let isSkDeviceLicenseNumberEnabled = this.resolverData[3] as IResults;\r\n if (isSkDeviceLicenseNumberEnabled.statusCode === 200 && !isSkDeviceLicenseNumberEnabled.value) {\r\n this.attributes = this.attributes.filter(x => x.name !== 'DEVICE_LICENSE' && x.caption !== 'DEVICE LICENSE NUMBER');\r\n }\r\n }\r\n\r\n this.templates = this.resolverData[1]?.data;\r\n\r\n // DataUtil.parse correctly parse date columns for filtering\r\n this.tasks = DataUtil.parse.parseJson(this.resolverData[2]?.data as any);\r\n\r\n // remove Choose Action attribute.\r\n const deviceKeyIdentification: DeviceAttribute = this.attributes.find(a => a.name === 'DEVICE_KEY_IDENTIFICATION');\r\n\r\n if (deviceKeyIdentification) {\r\n const chooseActionAttrIndex = deviceKeyIdentification.fields.findIndex(f => f.name === 'CHOOSE_ACTION');\r\n\r\n if (chooseActionAttrIndex >= 0) {\r\n deviceKeyIdentification.fields.splice(chooseActionAttrIndex, 1);\r\n }\r\n }\r\n\r\n // get the string list of properties for the autocomplete control's datasource\r\n this.extractProperties();\r\n }\r\n\r\n this.loading = false;\r\n\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n\r\n extractProperties() {\r\n\r\n let sections: Section[] = [];\r\n\r\n if (this.attributes && this.attributes.length) {\r\n\r\n // element here is a section\r\n this.attributes.forEach(element => {\r\n\r\n // inside there is an array of attributes called \"fields\"\r\n if (element.fields && element.fields.length) {\r\n\r\n element.fields.forEach(field => {\r\n\r\n if (!this.properties.includes(field.name)) {\r\n this.properties.push(field.name);\r\n }\r\n\r\n sections = this.attrModal.getAttrSections(element);\r\n\r\n // the attribute may have a nested array of sections with fields.\r\n if (sections && sections.length) {\r\n\r\n sections.forEach(innerSection => {\r\n if (innerSection.fields && innerSection.fields.length) {\r\n\r\n innerSection.fields.forEach(innerSectionField => {\r\n\r\n if (!this.properties.includes(innerSectionField.name)) {\r\n this.properties.push(innerSectionField.name);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.properties = this.properties.sort();\r\n }\r\n }\r\n\r\n showAttrDialog(templateId?: number) {\r\n this.editTemplateId = templateId;\r\n this.attrModal.dialog.show();\r\n }\r\n\r\n itemClicked(fileName) {\r\n }\r\n\r\n // delete dialog\r\n onDeleteOverlayClick: EmitType = () => {\r\n this.modalVisible = false;\r\n this.deleteDialog.hide();\r\n }\r\n\r\n showDeleteConfirmation(templateId, templateName) {\r\n\r\n this.templateToDeleteId = templateId;\r\n\r\n // need the name for the confirmation dialog\r\n this.templateToDeleteName = templateName;\r\n this.modalVisible = true;\r\n this.deleteDialog.show();\r\n }\r\n\r\n deleteCancel(event) {\r\n this.modalVisible = false;\r\n this.deleteDialog.hide();\r\n }\r\n\r\n deleteConfirm($event) {\r\n\r\n if (this.templateToDeleteId) {\r\n this.subscription = this.exportDataService.deleteExportTemplate(this.templateToDeleteId)?.subscribe(response => {\r\n\r\n if (response['isSuccess']) {\r\n\r\n this.modalVisible = false;\r\n this.deleteDialog.hide();\r\n this.templateToDeleteId = undefined;\r\n this.toastr.success(`The template deleted successfully.`);\r\n this.reloadTemplates();\r\n } else {\r\n this.errorMessage = response && response['message'] ? response['message'] : 'Template deletion failed.';\r\n this.toastr.error(this.errorMessage);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n onDeleteDialogClose(event) {\r\n this.templateToDeleteId = undefined;\r\n this.templateToDeleteName = '';\r\n }\r\n\r\n runTemplate(templateId) {\r\n\r\n if (templateId) {\r\n\r\n this.subscription = this.exportDataService.runExportTemplate(templateId)?.subscribe(response => {\r\n\r\n if (response['isSuccess']) {\r\n this.reloadGeneratedFiles();\r\n this.toastr.success(`The template ran successfully.`);\r\n } else {\r\n this.errorMessage = response && response['message'] ? response['message'] : 'Template deletion failed.';\r\n this.toastr.error(this.errorMessage);\r\n }\r\n });\r\n }\r\n }\r\n\r\n reloadTemplates(success?: boolean) {\r\n\r\n this.subscription = this.exportDataService.getTemplatesList()?.subscribe(response => {\r\n\r\n if (response['isSuccess']) {\r\n this.templates = response.data;\r\n }\r\n\r\n });\r\n }\r\n\r\n reloadGeneratedFiles(success?: boolean) {\r\n\r\n this.subscription = this.exportDataService.getTasks()?.subscribe(response => {\r\n\r\n if (response['isSuccess']) {\r\n this.tasks = response['data'];\r\n }\r\n });\r\n }\r\n\r\n downloadExportedFile(fileName, filePath) {\r\n\r\n if (fileName && filePath) {\r\n\r\n this.exportDataService.getExportFile(fileName, filePath)?.subscribe(response => {\r\n\r\n if (response['size'] && response['type']) {\r\n\r\n // IE\r\n if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {\r\n (window.navigator as any).msSaveOrOpenBlob(response, fileName);\r\n } else {\r\n\r\n // non-IE\r\n const URL = window.URL || (window).webkitURL;\r\n const downloadUrl = URL.createObjectURL(response);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = fileName;\r\n link.click();\r\n }\r\n } else {\r\n\r\n this.toastr.error(`Error downloading Export file`, '', { timeOut: 0, closeButton: true });\r\n }\r\n });\r\n }\r\n }\r\n\r\n showSFToolTip(event) {\r\n\r\n if (this.isEllipsisActive(event)) {\r\n\r\n if (this.tooltipObj) {\r\n this.tooltipObj.content = event.target.outerText;\r\n this.tooltipObj.width = `${event.target.scrollWidth - (event.target.scrollWidth / 100 * 10)}px`;\r\n this.tooltipObj.position = 'TopCenter';\r\n\r\n this.tooltipObj.open(event.target);\r\n }\r\n }\r\n }\r\n\r\n actionBegin(args: any) {\r\n\r\n const type = args.requestType;\r\n\r\n switch (type) {\r\n case 'paging':\r\n this.storeSelectedItems();\r\n break;\r\n\r\n case 'filterbeforeopen':\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n* Triggers when any grid action taken (sort, page, rows/per page number)\r\n* Called from the html actionComplete event\r\n* @param {any} args\r\n*/\r\n complete(args: any) {\r\n\r\n switch (args.requestType) {\r\n\r\n case 'refresh':\r\n this.setDeviceCounter();\r\n break;\r\n case 'filtering':\r\n this.setDeviceCounter();\r\n break;\r\n case 'paging':\r\n this.persistSelectedRows();\r\n break;\r\n case 'sorting':\r\n break;\r\n case 'filterafteropen':\r\n\r\n if (args.columnType === 'date') {\r\n args.filterModel.dlgDiv.querySelector(\r\n '.e-datepicker'\r\n ).ej2_instances[0].format = 'MM/dd/y';\r\n }\r\n break;\r\n }\r\n }\r\n\r\n setDeviceCounter() {\r\n\r\n const pageCountMsg = document.getElementsByClassName('e-pagecountmsg')[0];\r\n\r\n if (pageCountMsg) {\r\n this.pageItemCounter = (pageCountMsg as any).innerText;\r\n\r\n this.tasksCount = this.pageItemCounter.substr(this.pageItemCounter.indexOf('(') + 1, this.pageItemCounter.indexOf(' item') - 1);\r\n } else {\r\n\r\n this.tasksCount = 0;\r\n }\r\n }\r\n\r\n dataBound(args: any) {\r\n\r\n // The grids in this component have the Menu filter enabled.\r\n // However, this filter contains an inbuilt autocomplete control\r\n // The code below creates a custom control to add a plain textbox instead of the autocomplete control.\r\n\r\n const inputObj = [];\r\n\r\n for (let x = 0; x < this.grid.columns.length; x++) {\r\n\r\n let filterBox: any;\r\n\r\n\r\n if ((this.grid.columns[x] as any).type === 'string' || (this.grid.columns[x] as any).type === null) { // create textbox for string type column only\r\n (this.grid.columns[x] as any).filter.ui = {\r\n\r\n create: (args1) => {\r\n\r\n const flValInput: HTMLElement = document.createElement('input');\r\n\r\n args1.target.appendChild(flValInput);\r\n\r\n inputObj[args1.column.field] = new TextBox({\r\n floatLabelType: 'Never',\r\n });\r\n inputObj[args1.column.field].appendTo(flValInput);\r\n\r\n filterBox = args1.target;\r\n },\r\n read: (args2) => {\r\n\r\n let isSkip;\r\n let skipInput;\r\n\r\n if (args2.column.type === 'string') {\r\n skipInput = ['>', '<', '=', '!'];\r\n\r\n for (let i = 0, value = args2.element.value; i < value.length; i++) {\r\n const val = value[i];\r\n if (skipInput.indexOf(val) > -1) {\r\n isSkip = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isSkip) {\r\n args2.fltrObj.filterByColumn(args2.column.field, args2.operator, args2.element.value);\r\n } else {\r\n\r\n this.toastr['error']('\"< > = !\" are not valid filter characters', 'Error', { timeOut: 0, closeButton: true });\r\n }\r\n },\r\n write: (args3) => {\r\n inputObj[args3.column.field].value = args3.filteredValue || '';\r\n }\r\n };\r\n }\r\n }\r\n\r\n this.setDeviceCounter();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n@Component({\r\n selector: 'feature',\r\n templateUrl: './feature.component.html'\r\n})\r\n\r\nexport class FeatureComponent implements OnInit {\r\n @Input() name: string = \"\";\r\n visible = false;\r\n\r\n constructor(private featureService: FeatureService, private toastrService: ToastrService) {\r\n \r\n }\r\n\r\n ngOnInit(): void {\r\n this.featureService.IsFeatureEnabled(this.name)\r\n .subscribe(data => {\r\n if (data) {\r\n this.visible = data\r\n }\r\n else {\r\n this.visible = false;\r\n }\r\n }, error => {\r\n // An error has occured. For safe measure, hide the feature.\r\n this.visible = false;\r\n\r\n // Log to the console since we do not want to alert the user to a feature they may not have\r\n console.log(`An error has occured checking if the following feature is enabled: ${this.name}`)\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ExcelExportService, GridComponent } from '@syncfusion/ej2-angular-grids';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IFileMetadataMessage, IFileMetadataStats, IServiceError } from '../../shared/models/index';\r\n\r\n@Component({\r\n selector: 'app-filedetails',\r\n templateUrl: './filedetails.component.html',\r\n styleUrls: ['./filedetails.component.scss'],\r\n providers: [ExcelExportService],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class FiledetailsComponent implements OnInit {\r\n\r\n public gridDateFormat: Object;\r\n fileDetailsStats: IFileMetadataStats;\r\n fileDetailsMessage: IFileMetadataMessage;\r\n // fileData = [];\r\n error: string;\r\n @Input() successData: IFileMetadataMessage[];\r\n @Input() rejectedData: IFileMetadataMessage[];\r\n\r\n resolverMessages: IFileMetadataMessage[];\r\n resolverStats: IFileMetadataStats[];\r\n\r\n @ViewChild('gridSuccess')\r\n public gridSuccess: GridComponent;\r\n\r\n @ViewChild('gridRejected')\r\n public gridRejected: GridComponent;\r\n\r\n constructor (private activatedRoute: ActivatedRoute, private router: Router) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.gridDateFormat = { type: 'dateTime', format: 'MM/dd/yyyy hh:mm a' };\r\n\r\n // Get data pre-populated in the Resolver or an serviceError object\r\n const fileData: any[] | IServiceError = this.activatedRoute.snapshot.data['fileData'];\r\n\r\n if (!fileData || fileData[1].length === 0) {\r\n\r\n this.error = 'File not found.';\r\n this.router.navigate(['/error', { message: 'File not found' }]);\r\n }\r\n\r\n if (fileData instanceof IServiceError) {\r\n this.error = fileData.friendlyMessage;\r\n } else {\r\n if (Array.isArray(fileData)) {\r\n this.resolverMessages = this.activatedRoute.snapshot.data['fileData'][0];\r\n this.resolverStats = this.activatedRoute.snapshot.data['fileData'][1];\r\n\r\n this.loadStats();\r\n this.loadMessages();\r\n }\r\n }\r\n }\r\n\r\n exportToExcel(success): void {\r\n\r\n if (success) {\r\n\r\n //this.gridSuccess.excelExport({ fileName: 'SuccessfulImportLog.xlsx' });\r\n }\r\n else {\r\n //this.gridRejected.excelExport({ fileName: 'FailedImportLog.xlsx'});\r\n }\r\n }\r\n\r\n documentClicked(id: string) {\r\n\r\n }\r\n\r\n loadStats(): void {\r\n this.fileDetailsStats = {\r\n importId: 0,\r\n fileName: '',\r\n fileUploadedBy: '',\r\n fileOutcome: '',\r\n importedSuccessfully: 0,\r\n outComeType: '',\r\n fileOutcomeCode: 0,\r\n rejected: 0,\r\n totalCount: 0,\r\n uploadDate: '',\r\n };\r\n\r\n if (this.resolverStats && this.resolverStats.length > 0) {\r\n\r\n // same data for all rows\r\n this.fileDetailsStats.importId = this.resolverStats[0].importId;\r\n this.fileDetailsStats.fileName = this.resolverStats[0].fileName;\r\n this.fileDetailsStats.fileUploadedBy = this.resolverStats[0].fileUploadedBy;\r\n this.fileDetailsStats.fileOutcome = this.resolverStats[0].fileOutcome;\r\n this.fileDetailsStats.fileOutcomeCode = this.resolverStats[0].fileOutcomeCode;\r\n this.fileDetailsStats.outComeType = this.resolverStats[0].outComeType;\r\n this.fileDetailsStats.uploadDate = this.resolverStats[0].uploadDate;\r\n\r\n //recalculate counts\r\n for (let i = 0; i < this.resolverStats.length; i++) {\r\n switch (this.resolverStats[i].outComeType) {\r\n case 'Error':\r\n this.fileDetailsStats.rejected += this.resolverStats[i].totalCount;\r\n break;\r\n case 'Passed':\r\n this.fileDetailsStats.importedSuccessfully += this.resolverStats[i].totalCount;\r\n default:\r\n }\r\n this.fileDetailsStats.totalCount = this.fileDetailsStats.importedSuccessfully + this.fileDetailsStats.rejected;\r\n }\r\n }\r\n }\r\n\r\n loadMessages(): void {\r\n\r\n if (this.resolverMessages && this.resolverMessages.length > 0) {\r\n\r\n this.successData = this.resolverMessages.filter(t => t.messageSeverity.toLowerCase() !== 'error');\r\n this.rejectedData = this.resolverMessages.filter(t => t.messageSeverity.toLowerCase() === 'error');\r\n } else {\r\n this.fileDetailsMessage = {\r\n documentId: '',\r\n itemType: '',\r\n keyFields: 'No files to display',\r\n message: '',\r\n messageDate: '',\r\n lineNumber: 0,\r\n messageSeverity: ''\r\n };\r\n\r\n this.resolverMessages.push(this.fileDetailsMessage);\r\n this.successData = this.resolverMessages;\r\n }\r\n }\r\n\r\n navigateToFileUpload() {\r\n // Navigate back without reloading the page.\r\n this.router.navigateByUrl('fileupload');\r\n }\r\n\r\n getCSSClasses() {\r\n let cssClasses;\r\n if (!this.error && this.fileDetailsStats) {\r\n cssClasses = {\r\n 'success': this.fileDetailsStats.fileOutcomeCode === 1,\r\n 'warning': this.fileDetailsStats.fileOutcomeCode === 2 || this.fileDetailsStats.fileOutcomeCode === 3,\r\n 'error': this.fileDetailsStats.fileOutcomeCode === 4,\r\n }\r\n }\r\n return cssClasses;\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { GridComponent } from '@syncfusion/ej2-angular-grids';\r\nimport { RemovingEventArgs, SelectedEventArgs, UploaderComponent } from '@syncfusion/ej2-angular-inputs';\r\nimport { DialogComponent, TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { detach, EmitType } from '@syncfusion/ej2-base';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IFileIngestionHistory, IPermission, IServerSettings, IServiceError } from '../../shared/models/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { FileUploadService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\n\r\n\r\n@Component({\r\n\tselector: 'app-fileupload',\r\n\ttemplateUrl: './fileupload.component.html',\r\n\tstyleUrls: ['./fileupload.component.css'],\r\n\tanimations: [fadeInOut],\r\n\tencapsulation: ViewEncapsulation.None\r\n})\r\nexport class FileuploadComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\tgridData: string;\r\n\trecordCount = 0;\r\n\terror: string;\r\n\tsubscription: Subscription;\r\n\tpublic dropElement: HTMLElement;\r\n\tprivate settings: IServerSettings;\r\n\tprivate apiGatewayUrl: string;\r\n userGuid: string;\r\n\r\n\r\n\t@ViewChild('modalDialog', { static: true })\r\n modalDialog: DialogComponent;\r\n @ViewChild('tooltipObj') tooltipObj: TooltipComponent;\r\n\r\n\ttarget = '#modalTarget';\r\n\tmodalHeader: string;\r\n\tmodalContent: string;\r\n\tmodalWidth: string;\r\n\tanimationSettings: Object = { effect: 'Zoom' };\r\n\thide: any;\r\n\tposition: object = { X: 'center', Y: 'center' };\r\n\tisModal: Boolean = true;\r\n\tpublic visible: Boolean = true;\r\n\tpublic hidden: Boolean = false;\r\n\r\n\t@ViewChild('grid')\r\n\tpublic grid: GridComponent;\r\n\r\n\t@ViewChild('defaultupload')\r\n\tpublic uploadObj: UploaderComponent;\r\n\r\n\tpublic path: Object;\r\n\tpublic allowExtensions = '.xml, .xlsx';\r\n\tpublic fileMaxSize: number;\r\n\tpublic fileMinSize: number;\r\n\tfileNameLength: number;\r\n restrictedWords: string;\r\n permissionsConst: any;\r\n\r\n\tprivate customerId: string;\r\n\tprivate customerGuid: string;\r\n\r\n\tinvalidChars = ['\"', '<', '>', '|', ';', ':', '*', '?', '\\\\', '/'];\r\n\r\n\tresolverData: any[] = [];\r\n\tappDefaults: any;\r\n\r\n\r\n\tdlgButtonClick: EmitType = () => {\r\n\t\tthis.modalDialog.hide();\r\n\t}\r\n\r\n\t// tslint:disable-next-line:member-ordering\r\n\tpublic buttons: Object[] = [{ click: this.dlgButtonClick.bind(this), buttonModel: { content: 'OK', isPrimary: true } }];\r\n // tslint:disable-next-line:member-ordering\r\n permissionsPerClient: string[];\r\n // tslint:disable-next-line:member-ordering\r\n permissionsPerClientSet$: BehaviorSubject | null;\r\n // tslint:disable-next-line:member-ordering\r\n permissionSet: IPermission[] = [];\r\n\r\n\tconstructor (private fileUploadService: FileUploadService, private activatedRoute: ActivatedRoute, private storageManagerService: StorageManagerService,\r\n private settingsService: SettingsService, private authService: AuthenticationService, private appGlobals: AppGlobals) {\r\n\t}\r\n\r\n\t// tslint:disable-next-line:member-ordering\r\n\tfileHistory: IFileIngestionHistory[];\r\n\tpublic changeHandler: EmitType = () => {\r\n\t\tthis.uploadObj.autoUpload = true;\r\n\t\tthis.uploadObj.clearAll();\r\n\t}\r\n\r\n ngOnInit() {\r\n this.permissionsConst = this.appGlobals.permissions;\r\n\t\tthis.settings = this.settingsService.getSettings();\r\n\t\tthis.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\t\tthis.fileNameLength = +this.settings.FileNameLength;\r\n\t\tthis.fileMinSize = +this.settings.FileMinSize;\r\n\t\tthis.fileMaxSize = +this.settings.FileMaxSize;\r\n\t\tthis.path = {\r\n\t\t\tsaveUrl: this.apiGatewayUrl + '/fms/v1/FileManagement/UploadFileUI'\r\n };\r\n\r\n\t\tthis.storageManagerService.write('activeTab', 'device');\r\n\r\n\t\tthis.userGuid = this.storageManagerService.read('userGuid');\r\n\r\n\t\t// customerId is set and used in the Resolver but for the RefreshUploadHistory it needs to be present in the component\r\n\t\tconst currentCustomerStr: string = this.storageManagerService.read('currentCustomer');\r\n\t\tconst currentCustomer = typeof currentCustomerStr === 'object' ? currentCustomerStr : JSON.parse(currentCustomerStr);\r\n\t\tif (currentCustomer) {\r\n\t\t\tthis.customerId = currentCustomer.customerId;\r\n this.customerGuid = currentCustomer.customerGuid;\r\n }\r\n\r\n\t\t// Get data pre-populated in the Resolver or a seriveError object\r\n\t\tthis.resolverData = this.activatedRoute.snapshot.data['fileHistory'];\r\n\r\n if (this.resolverData && this.resolverData.length > 0) {\r\n\r\n this.appDefaults = this.resolverData[0].fileUploadGrid;\r\n this.fileHistory = this.resolverData[1]; // mock this.resolverData[2];\r\n\r\n // Get data pre-populated in the Resolver\r\n if (this.fileHistory instanceof IServiceError) {\r\n this.error = this.fileHistory.friendlyMessage;\r\n } else {\r\n if (Array.isArray(this.fileHistory)) {\r\n this.recordCount = this.fileHistory.length;\r\n this.gridData = JSON.stringify(this.fileHistory);\r\n } else {\r\n this.error = this.fileHistory;\r\n }\r\n }\r\n }\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n tooltipValue(args) {\r\n // here you can get the row data of the target cell\r\n if (args.target.scrollWidth <= args.target.clientWidth) {\r\n args.cancel = true;\r\n } else {\r\n const rowInfo = this.grid.getRowInfo(args.target);\r\n const rowData = rowInfo.rowData;\r\n this.tooltipObj.content = rowData[(rowInfo.column as any).field];\r\n this.tooltipObj.width = `${ args.target.scrollWidth }px`;\r\n }\r\n }\r\n\r\n\r\n getPerClientPermission(permission): boolean {\r\n\r\n let retVal = false;\r\n this.permissionSet = this.storageManagerService.read('accessPermissions');\r\n\r\n if (permission && (this.permissionSet && this.permissionSet.length)) {\r\n\r\n retVal = this.permissionSet.findIndex(p => p.permissionName.toLowerCase() === permission.toLowerCase()) >= 0;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n\t\tif (this.uploadObj) {\r\n\t\t\tthis.uploadObj.dropArea = document.getElementById('dropTarget');\r\n\r\n\t\t\tdocument.getElementById('droppingArea').onclick = (e: any) => {\r\n\t\t\t\tconst target: HTMLElement = e.target;\r\n\t\t\t\tif (target.classList.contains('e-file-delete-btn')) {\r\n\t\t\t\t\tfor (let i = 0; i < this.uploadObj.getFilesData().length; i++) {\r\n\t\t\t\t\t\tif (target.parentElement.getAttribute('data-file-name') === this.uploadObj.getFilesData()[i].name) {\r\n\t\t\t\t\t\t\tthis.uploadObj.remove(this.uploadObj.getFilesData()[i]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (target.classList.contains('e-file-remove-btn')) {\r\n\t\t\t\t\tdetach(target.parentElement);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n this.modalDialog.hide();\r\n\t}\r\n\r\n browseClick(e) {\r\n\r\n const type = e.type;\r\n\r\n if (type === 'click' || (type === 'keydown' && (e.which === 13 || e.keyCode === 13))) {\r\n\r\n document.getElementsByClassName('e-file-select-wrap')[0].querySelector('button').click();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } \r\n\t}\r\n\r\n\tpublic onSelect: EmitType = (args: any) => {\r\n\t\tconst allowedTypes: string[] = ['xml', 'xlsx'];\r\n\t\tconst modifiedFiles: object[] = [];\r\n\t\tfor (const file of args.filesData) {\r\n\t\t\tif (allowedTypes.indexOf(file.type.toLowerCase()) > -1) {\r\n\t\t\t\tmodifiedFiles.push(file);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (modifiedFiles.length > 0) {\r\n\t\t\targs.isModified = true;\r\n\t\t\targs.modifiedFilesData = modifiedFiles;\r\n\t\t} else { args.cancel = true; }\r\n\t}\r\n\r\n\tpublic onFileUpload: EmitType = (args: any) => {\r\n\r\n\t\tif (args) {\r\n\r\n\t\t\tconst authData = this.authService.getAuthData();\r\n\r\n\t\t\targs.currentRequest.setRequestHeader('authorization', this.authService.getBearerToken());\r\n args.currentRequest.setRequestHeader('customerGuid', this.customerGuid);\r\n args.currentRequest.setRequestHeader('applicationName', authData.applicationName ? authData.applicationName.toString() : 'SingleSource');\r\n\r\n\t\t\targs.customFormData = [\r\n\t\t\t\t{ 'userGuid': this.storageManagerService.read('userGuid') },\r\n\t\t\t\t{ 'customerId': this.customerId }\r\n\t\t\t];\r\n\r\n\t\t\tconst fileData = args.fileData;\r\n\r\n\t\t\tconst sizeInBytes: number = fileData.size;\r\n\t\t\tconst fileType: string = fileData.type;\r\n\t\t\tlet fileName: string = fileData.name;\r\n\r\n\t\t\t// Check file size\r\n\t\t\tif (fileData.size > this.fileMaxSize || fileData.size < this.fileMinSize) {\r\n\t\t\t\tthis.setupAlertBox('File upload validation', 'File size should not be smaller than ' + this.fileMinSize + ' and larger than ' + this.fileMaxSize + 'bytes', '450px');\r\n\r\n\t\t\t\tthis.modalDialog.show();\r\n\r\n\t\t\t\tthis.logError('File size should not be smaller than ' + this.fileMinSize + ' and larger than ' + this.fileMaxSize + 'bytes');\r\n\t\t\t\targs.cancel = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Check file name against special characters\r\n\t\t\tfileName = fileName.substr(0, fileName.indexOf('.' + fileType));\r\n\r\n\t\t\tthis.invalidChars.forEach(char => {\r\n\t\t\t\tif (fileName.indexOf(char) > -1) {\r\n\r\n\t\t\t\t\tthis.setupAlertBox('File upload validation', 'Special Characters' + this.invalidChars.toString() + ' are not allowed in the file name', '450px');\r\n\r\n\t\t\t\t\tthis.modalDialog.show();\r\n\r\n\t\t\t\t\tthis.logError('Special characters used in the file name');\r\n\t\t\t\t\targs.cancel = true;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Check file name agains restricted words\r\n\t\t\tconst matches = /^(ON|PRN|AUX|NUL|CON|COM\\d|LPT\\d)$/.test(fileName.toUpperCase());\r\n\r\n\t\t\tif (matches) {\r\n\r\n\t\t\t\tthis.setupAlertBox('File upload validation', 'File name contains restricted words.', '450px');\r\n\r\n\t\t\t\tthis.modalDialog.show();\r\n\t\t\t\tthis.logError('File name contains restricted words.');\r\n\t\t\t\targs.cancel = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Check file's type\r\n\t\t\tif (fileType !== 'xml' && fileType !== 'xlsx') {\r\n\r\n\t\t\t\tthis.setupAlertBox('File upload validation', 'File type ' + fileType + ' is not supported', '450px');\r\n\r\n\t\t\t\tthis.modalDialog.show();\r\n\r\n\t\t\t\tthis.logError('File type ' + fileType + ' is not supported');\r\n\t\t\t\targs.cancel = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Check file name length\r\n\t\t\tif (fileName.length > this.fileNameLength) {\r\n\t\t\t\tthis.setupAlertBox('File upload validation', 'File name should not exceed ' + this.fileNameLength + ' characters', '450px');\r\n\r\n\t\t\t\tthis.modalDialog.show();\r\n\r\n\t\t\t\tthis.logError('File name should not exceed ' + this.fileNameLength + ' characters');\r\n\t\t\t\targs.cancel = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tsetupAlertBox(header: string, contents: string, width: string) {\r\n\t\tthis.modalHeader = header;\r\n\t\tthis.modalContent = contents;\r\n\t\tthis.modalWidth = width;\r\n\t}\r\n\r\n\tpublic onUploadFailure(args: any): void {\r\n\t\tconsole.log('File failed to upload');\r\n\r\n\t}\r\n\r\n\tpublic onFileUploaded: EmitType = (args: any) => {\r\n\t\tthis.RefreshUploadHistory();\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.uploadObj.clearAll();\r\n\t\t}, 3000);\r\n\t}\r\n\r\n\tpublic onFileRemove(args: RemovingEventArgs): void {\r\n\t\targs.postRawFile = false;\r\n\t}\r\n\r\n\tpublic addHeaders(args: any) {\r\n\t\targs.currentRequest.setRequestHeader('Access-Control-Allow-Origin', '*');\r\n\t}\r\n\r\n\tprivate RefreshUploadHistory() {\r\n\r\n\t\tthis.subscription = this.fileUploadService.fetchUploadedFileHistory(this.customerId).subscribe(\r\n\t\t\t(data: IFileIngestionHistory[]) => {\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tthis.recordCount = data.length;\r\n\t\t\t\t\tthis.gridData = JSON.stringify(data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate logError(message: string) {\r\n\t\tlet errorResp = '';\r\n\r\n\t\tthis.subscription = this.authService.get('api/security/FileValidation?message=' + message).subscribe(a => errorResp = a);\r\n\t}\r\n\r\n receiveMessage($event) {\r\n this.recordCount = $event;\r\n }\r\n\r\n\tngOnDestroy() {\r\n\t\t// unsubscribe to ensure no memory leaks\r\n\t\tif (this.subscription) {\r\n\t\t\tthis.subscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n DO WE have the ability to control the prompt's File Type display list, so that it displays the file types in the (OPEN) dialog box?\r\n No. It is written to always display CUSTOM for FILE formats... Here's why:\r\n https://stackoverflow.com/questions/21534729/show-custom-text-for-applied-file-type-filters-on-file-dialog-to-upload-particul\r\n\r\n*/\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\n\r\nexport class FooterComponent implements OnInit {\r\n currentYear: number;\r\n\r\n @Input() lastLogonDate: string;\r\n\r\n constructor() {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-forbidden',\r\n templateUrl: 'forbidden.component.html'\r\n})\r\n\r\nexport class ForbiddenComponent implements OnInit {\r\n\r\n public message: string;\r\n public values: any[];\r\n\r\n constructor() {\r\n this.message = 'ForbiddenComponent constructor';\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ExcelExportService, FilterService, FilterSettingsModel, GridComponent, PdfExportService, QueryCellInfoEventArgs, ToolbarItems, ToolbarService, VirtualScrollService } from '@syncfusion/ej2-angular-grids';\r\nimport { ClickEventArgs } from '@syncfusion/ej2-angular-navigations';\r\nimport { DialogComponent, Tooltip, TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { DataUtil } from '@syncfusion/ej2-data';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { IServerSettings } from '../../../shared/models/index';\r\nimport { FileUploadService } from '../../../shared/services/fileupload.service';\r\nimport { SettingsService } from '../../../shared/services/settings.service';\r\nimport { StorageManagerService } from '../../../shared/services/storage-manager.service';\r\nimport { NgbTooltipConfig, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nclass LastCallTime {\r\n fileMetadataGuid: string;\r\n callTime: any;\r\n\r\n constructor (fileMetadataGuid: string, callTime: any) {\r\n this.fileMetadataGuid = fileMetadataGuid;\r\n this.callTime = callTime;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-fileuploadhistorygrid',\r\n templateUrl: './fileuploadhistorygrid.component.html',\r\n styleUrls: ['./fileuploadhistorygrid.component.css'],\r\n providers: [FilterService, VirtualScrollService, ToolbarService, ExcelExportService, PdfExportService, NgbTooltipModule, NgbTooltipConfig],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class FileUploadHistoryGridComponent implements OnChanges, OnInit, AfterViewInit, AfterContentChecked, OnDestroy {\r\n\r\n @ViewChild('grid', { static: true })\r\n public grid: GridComponent;\r\n\r\n @ViewChild('tooltipObj', { static: true }) tooltipObj: TooltipComponent;\r\n\r\n @ViewChild('copiedTextDialog', { static: true })\r\n public copiedTextDialog: DialogComponent;\r\n\r\n @ViewChild('tooltip', { static: false })\r\n public tooltipControl: TooltipComponent;\r\n\r\n public toolbar: ToolbarItems[] = [];\r\n public data: Object[];\r\n public dateFormat: Object;\r\n public customerId: string;\r\n public fileCount: string;\r\n error: string;\r\n filterSettings: FilterSettingsModel;\r\n pageOptions: Object;\r\n gridComplete = false;\r\n lastCallTimes: LastCallTime[] = [];\r\n settings: IServerSettings;\r\n copiedToClipboard = '';\r\n\r\n tooltipContent: HTMLElement = document.createElement('div');\r\n\r\n @Input() gridData: string;\r\n @Input() appDefaults: any;\r\n @Output() messageEvent = new EventEmitter();\r\n\r\n initial = true;\r\n scrollSettings: { width: string; height: number; enableColumnScrolling: boolean; enableRowScrolling: boolean; };\r\n\r\n tooltipCol: Tooltip = new Tooltip({\r\n content: this.tooltipContent,\r\n cssClass: 'customtooltip',\r\n enableHtmlParse: false\r\n });\r\n sub: Subscription;\r\n\r\n constructor (private router: Router, private fileUploadService: FileUploadService, private storageManagerService: StorageManagerService, private cdref: ChangeDetectorRef, private settingsService: SettingsService, private toastr: ToastrService, tooltipConfig: NgbTooltipConfig) {\r\n this.settings = this.settingsService.getSettings();\r\n tooltipConfig.placement = 'bottom-left';\r\n tooltipConfig.autoClose = true; \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n async copyToClipboard(args, data, tt) {\r\n\r\n this.copiedToClipboard = data;\r\n\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(data)\r\n .then(\r\n () => this.openTooltip(tt, `${data} - Copied to Clipboard`)\r\n );\r\n }\r\n }\r\n\r\n openTooltip(tooltip, contents: string) {\r\n\r\n tooltip.close();\r\n tooltip.open({ contents });\r\n }\r\n\r\n closeTooltip(tooltip) {\r\n tooltip.close();\r\n }\r\n\r\n async keydownEnter(e, data) {\r\n const type = e.type;\r\n\r\n this.copiedToClipboard = data;\r\n\r\n if (type === 'keydown' && (e.which === 13 || e.keyCode === 13)) {\r\n\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(data)\r\n .then(\r\n () => e.target.closest('.e-templatecell').focus()\r\n );\r\n }\r\n }\r\n }\r\n\r\n tooltipContents(data) {\r\n\r\n return data;\r\n }\r\n\r\n showSFToolTip(args, data) {\r\n\r\n let customContent = '';\r\n\r\n let tooltipId = args.target.closest('.e-tooltip').id;\r\n\r\n this.tooltipControl = (document.getElementById(tooltipId) as any).ej2_instances[0];\r\n\r\n if (this.tooltipControl) {\r\n\r\n this.tooltipControl.width = 'Auto';\r\n this.tooltipControl.tipPointerPosition = 'Auto';\r\n\r\n if (data.toLowerCase() === 'copied') {\r\n\r\n customContent = `Copy to Clipboard: ${ this.copiedToClipboard } - Copied!`;\r\n this.tooltipControl.content = customContent;\r\n } else {\r\n this.tooltipControl.width = '425px';\r\n customContent = `Copy to Clipboard: ${ data }`;\r\n this.tooltipControl.content = customContent;\r\n }\r\n\r\n if (this.tooltipControl) {\r\n this.tooltipControl.open(args.target);\r\n }\r\n }\r\n }\r\n\r\n hideSFToolTip(args) {\r\n\r\n this.tooltipControl = (args.target as any).parentElement?.ej2_instances[0];\r\n\r\n if (this.tooltipControl) {\r\n this.tooltipControl.content = '';\r\n this.tooltipControl.close();\r\n }\r\n }\r\n\r\n tooltipValue(args) {\r\n // here you can get the row data of the target cell\r\n if (args.target.scrollWidth <= args.target.clientWidth) {\r\n args.cancel = true;\r\n } else {\r\n const rowInfo = this.grid.getRowInfo(args.target);\r\n const rowData = rowInfo.rowData;\r\n this.tooltipObj.content = rowData[(rowInfo.column as any).field];\r\n this.tooltipObj.width = `${ args.target.scrollWidth }px`;\r\n }\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const gridData: SimpleChange = changes.gridData;\r\n if (gridData && gridData.currentValue) {\r\n this.data = DataUtil.parse.parseJson(gridData.currentValue);\r\n } else {\r\n this.error = 'External error';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n const currentCustomerStr: string = this.storageManagerService.read('currentCustomer');\r\n\r\n if (currentCustomerStr) {\r\n const currentCustomer = typeof currentCustomerStr === 'object' ? currentCustomerStr : JSON.parse(currentCustomerStr);\r\n if (currentCustomer) {\r\n this.customerId = currentCustomer.customerId;\r\n }\r\n }\r\n this.dateFormat = { type: 'dateTime', format: 'MM/dd/yyyy hh:mm a' };\r\n\r\n this.filterSettings = {\r\n type: 'Menu',\r\n operators: {\r\n stringOperator: [\r\n { value: 'contains', text: 'contains' },\r\n { value: 'startsWith', text: 'starts with' },\r\n { value: 'endsWith', text: 'ends with' },\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n dateOperator: [\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n }\r\n };\r\n\r\n if (this.appDefaults) {\r\n this.pageOptions = { pageSize: this.appDefaults.defaultPageSize, pageCount: this.appDefaults.pageCount, pageSizes: this.appDefaults.pageSizes };\r\n }\r\n }\r\n\r\n toolbarClick(args: ClickEventArgs): void {\r\n if (args.item.id === 'eGrid_excelexport') { // 'Grid_excelexport' -> Grid component id + _ + toolbar item name\r\n this.grid.excelExport();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n }\r\n }\r\n\r\n recordDoubleClickRow(args) { }\r\n\r\n downloadLog(fileMetadataGuid, importId, reportFormat) {\r\n if (fileMetadataGuid) {\r\n\r\n let fileName = `${ importId }__ImportLog`;\r\n if (reportFormat === 'Excel') {\r\n fileName += '.xlsx';\r\n } else {\r\n fileName += '.csv';\r\n }\r\n\r\n this.fileUploadService.getLogDataFile(fileMetadataGuid, this.customerId, reportFormat, fileName).subscribe(response => {\r\n // var fileUrl = URL.createObjectURL(response);\r\n\r\n // todo: this pop-up logic works, however it can possibly be simplified - some commented code below creates a link in non-IE browser as well\r\n\r\n // IE\r\n if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {\r\n (window.navigator as any).msSaveOrOpenBlob(response, fileName);\r\n } else {\r\n // non-IE\r\n const URL = window.URL || (window).webkitURL;\r\n const downloadUrl = URL.createObjectURL(response);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = fileName;\r\n link.click();\r\n // window.location.href = fileUrl;\r\n }\r\n });\r\n }\r\n }\r\n complete(args: any) {\r\n switch (args.requestType) {\r\n case 'filterafteropen':\r\n\r\n if (args.columnType === 'date') {\r\n args.filterModel.dlgDiv.querySelector(\r\n '.e-datepicker'\r\n ).ej2_instances[0].format = 'MM/dd/y';\r\n }\r\n break;\r\n case 'filtering':\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n const pageCountMsg = document.getElementsByClassName('e-pagecountmsg')[0];\r\n\r\n if (pageCountMsg) {\r\n const pageItemCounter = (pageCountMsg as any).innerText;\r\n\r\n this.fileCount = pageItemCounter.substr(pageItemCounter.indexOf('(') + 1, pageItemCounter.indexOf(' item') - 1);\r\n } else {\r\n this.fileCount = '0';\r\n }\r\n this.messageEvent.emit(this.fileCount);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n\r\n // commented out the functionality because the \"copy\" functionality was added with its tooltips\r\n tooltip(args: QueryCellInfoEventArgs) {\r\n if (args.column.field === 'importId') {\r\n // const tooltip: Tooltip = new Tooltip({\r\n // // position: 'TopLeft',\r\n // content: args.data['fileMetadataGuid'].toString()\r\n // }, args.cell as HTMLTableCellElement);\r\n }\r\n }\r\n\r\n getFileOutcome(fileOutcomeCode, fileMetadataGuid, createDatetime) {\r\n if (fileOutcomeCode) {\r\n return;\r\n }\r\n\r\n if (!fileMetadataGuid) {\r\n return;\r\n }\r\n\r\n if (!createDatetime) {\r\n return;\r\n }\r\n\r\n const createDate = Date.parse(createDatetime);\r\n\r\n const existedSeconds = (Date.now().valueOf() - createDate.valueOf()) / 1000;\r\n const existedMinutes = existedSeconds / 60;\r\n\r\n if (existedMinutes > this.settings.IngestionStatusTimeout) {\r\n return;\r\n }\r\n\r\n let lastCallTime = this.lastCallTimes.find(x => x.fileMetadataGuid === fileMetadataGuid);\r\n\r\n if (lastCallTime) {\r\n const start = (lastCallTime.callTime as any);\r\n const end = Date.now();\r\n\r\n const seconds = Math.abs(end.valueOf() - start.valueOf()) / 1000;\r\n\r\n if (seconds < this.settings.IngestionStatusPollInterval) {\r\n return;\r\n }\r\n\r\n lastCallTime.callTime = Date.now();\r\n } else {\r\n lastCallTime = new LastCallTime(fileMetadataGuid, Date.now());\r\n this.lastCallTimes.push(lastCallTime);\r\n }\r\n\r\n this.fileUploadService.getFileOutcome(fileMetadataGuid).subscribe(x => {\r\n if (!x || !x?.fileOutcomeCode) {\r\n return;\r\n }\r\n\r\n const dataItem = this.data.find(f => (f as any).fileMetadataGuid === fileMetadataGuid);\r\n\r\n if (!dataItem) {\r\n return;\r\n }\r\n\r\n const rowItem = dataItem as any;\r\n rowItem.fileOutcomeCode = x.fileOutcomeCode;\r\n rowItem.fileOutcome = x.fileOutcomeDesc;\r\n rowItem.totalRecords = x.totalSuccessRecords + x.totalFailedRecords;\r\n rowItem.totalSuccessRecords = x.totalSuccessRecords;\r\n rowItem.totalExceptionRecords = x.totalFailedRecords;\r\n rowItem.createDatetime = x.updateDateTime;\r\n\r\n this.grid.refresh();\r\n });\r\n }\r\n\r\n getCSSClasses(fileOutcomeCode) {\r\n let cssClasses;\r\n\r\n if (!this.error && fileOutcomeCode !== undefined) {\r\n cssClasses = {\r\n 'small-loading': +fileOutcomeCode === 0,\r\n 'success': +fileOutcomeCode === 1,\r\n 'status-warning': +fileOutcomeCode === 3,\r\n 'status-fail': +fileOutcomeCode === 4 || +fileOutcomeCode === 2\r\n };\r\n }\r\n return cssClasses;\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { forkJoin, Observable, Subscription } from 'rxjs';\r\nimport { StorageManagerService, AuthorizationService, CustomerService } from '../../shared/services/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { ICustomer, IIngestedDevicesChart } from '../../shared/models';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss']\r\n})\r\nexport class HomeComponent implements OnInit, OnDestroy {\r\n public loggedIn = false;\r\n private subscription: Subscription;\r\n user: any;\r\n userName: string;\r\n customer: ICustomer;\r\n hasPermissions: any;\r\n chartData$: any;\r\n\r\n constructor (private activatedRoute: ActivatedRoute, private authenticationService: AuthenticationService, private authorizationService: AuthorizationService, private storageManagerService: StorageManagerService, private customerService: CustomerService) {\r\n\r\n }\r\n\r\n login() {\r\n this.authenticationService.login();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.subscription = this.authorizationService.hasPermissionSubject.subscribe((res) => {\r\n this.hasPermissions = res;\r\n });\r\n\r\n this.hasPermissions = this.storageManagerService.read('hasPermission');\r\n\r\n this.storageManagerService.write('activeTab', 'device');\r\n\r\n this.subscription = this.authenticationService.getIsAuthorized().subscribe(\r\n (isAuthorized: boolean) => {\r\n this.loggedIn = isAuthorized;\r\n\r\n this.user = this.storageManagerService.read('userData');\r\n\r\n if (this.user) {\r\n this.userName = this.user.name;\r\n\r\n this.setUserName(this.userName);\r\n\r\n const storedCustomer = this.storageManagerService.read('currentCustomer');\r\n\r\n if (storedCustomer) {\r\n this.customer = typeof storedCustomer === 'object' ? storedCustomer : JSON.parse(storedCustomer);\r\n }\r\n }\r\n });\r\n }\r\n\r\n setUserName(data) {\r\n\r\n this.userName = data;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService} from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-identification-classification',\r\n templateUrl: './identification-classification.component.html',\r\n styleUrls: ['./identification-classification.component.scss']\r\n})\r\nexport class IdentificationClassificationComponent extends BaseAccordionComponent implements OnInit {\r\n @Input() showLegacy: boolean = false;\r\n\r\n constructor(public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.itemType = this.itemData.documentType;\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n udiDI: ['', { validators: [] }],\r\n agency: ['', { validators: [] }],\r\n budi: ['', { validators: [] }],\r\n bAgency: ['', { validators: [] }],\r\n quantityOfDevice: ['', { validators: [] }],\r\n unitOfUseDi: ['', { validators: [] }],\r\n unitOfUseDiAgency: ['', { validators: [] }],\r\n referenceOrCatalogNumber: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n isDeviceDirectlyMarked: ['', { validators: [] }],\r\n directMarkingDI: ['', { validators: [] }],\r\n directMarkingDIAgency: ['', { validators: [] }],\r\n isExpirationDate: ['', { validators: [] }],\r\n isManufacturingDate: ['', { validators: [] }],\r\n isLotOrBatchNumber: ['', { validators: [] }],\r\n isSerialNumber: ['', { validators: [] }],\r\n isSwVersion: ['', { validators: [] }],\r\n urlForAdditionalInfo: ['', { validators: []}],\r\n tradeNamesForm: this.fb.array([this.addTradeNamesForm()]),\r\n deviceDescriptionForm: this.fb.array([this.addDeviceDescriptionForm()]),\r\n emdnCodesForm: this.fb.array([this.addEmdnCodesForm()]),\r\n cndCodesForm: this.fb.array([this.addCndCodesForm()]),\r\n fdaProductCodesForm: this.fb.array([this.addFdaProductCodesForm()]),\r\n secondaryDiForm: this.fb.array([this.addSecondaryDiForm()]),\r\n previousDiForm: this.fb.array([this.addPreviousDiForm()]),\r\n GMDNform: this.fb.array([this.addGMDNform()]),\r\n classificationCode: ['', { validators: [] }],\r\n originalClassificationCode: ['', { validators: [] }],\r\n hasDirectMarking: ['', { validators: [] }],\r\n isDirectMarkingDiSameAsPrimaryDi: ['', { validators: [] }],\r\n diDataCarrierTypesForm: this.fb.array([this.addDiDataCarrierTypesForm()]),\r\n versionOrModel: ['', { validators: [] }],\r\n softwareAsAMedicalDevice: ['', { validators: [] }],\r\n productGenericNames: ['', { validators: [] }],\r\n labelerDuns: ['', { validators: [] }],\r\n directMarkingExempt: ['', { validators: [] }],\r\n controlledByDonationIdentificationNumber: ['', { validators: [] }],\r\n eudamedId: ['', { validators: [] }],\r\n eudamedIdIssuingAgency: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addDiDataCarrierTypesForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get diDataCarrierTypesForm(): FormGroup {\r\n return this.deviceForm.get('diDataCarrierTypesForm');\r\n }\r\n\r\n get tradeNamesForm(): FormGroup {\r\n return this.deviceForm.get('tradeNamesForm');\r\n }\r\n\r\n get deviceDescriptionForm(): FormGroup {\r\n return this.deviceForm.get('deviceDescriptionForm');\r\n }\r\n\r\n get emdnCodesForm(): FormGroup {\r\n return this.deviceForm.get('emdnCodesForm');\r\n }\r\n\r\n get cndCodesForm(): FormGroup {\r\n return this.deviceForm.get('cndCodesForm');\r\n }\r\n\r\n get fdaProductCodesForm(): FormGroup {\r\n return this.deviceForm.get('fdaProductCodesForm');\r\n }\r\n\r\n get secondaryDiForm(): FormGroup {\r\n return this.deviceForm.get('secondaryDiForm');\r\n }\r\n\r\n get previousDiForm(): FormGroup {\r\n return this.deviceForm.get('previousDiForm');\r\n }\r\n\r\n get GMDNform(): FormGroup {\r\n return this.deviceForm.get('GMDNform');\r\n }\r\n\r\n addGMDNform(): FormGroup {\r\n\r\n return this.fb.group({\r\n name: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addTradeNamesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addEmdnCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n emdnCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCndCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n cndCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addFdaProductCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n fdaProductCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addDeviceDescriptionForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSecondaryDiForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n diValue: ['', { validators: [] }],\r\n diAgency: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPreviousDiForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n diValue: ['', { validators: [] }],\r\n diAgency: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n udiDI: this.displayItemData('Primary DI'),\r\n agency: this.displayItemData('Primary DI Issuing Agency'),\r\n budi: this.displayItemData('Basic UDI-DI'),\r\n bAgency: this.displayItemData('Basic UDI-DI Issuing Agency'),\r\n quantityOfDevice: this.displayItemData('Quantity of Device'),\r\n unitOfUseDi: this.displayItemData('Unit of Use DI'),\r\n unitOfUseDiAgency: this.displayItemData('Unit of Use DI Issuing Agency'),\r\n referenceOrCatalogNumber: this.displayItemData('Catalog or Reference Number'),\r\n isDeviceDirectlyMarked: this.displayItemData('Is the Device Directly Marked?'),\r\n directMarkingDI: this.displayItemData('Direct Marking DI'),\r\n directMarkingDIAgency: this.displayItemData('Direct Marking DI Issuing Agency'),\r\n isExpirationDate: this.displayItemData('Controlled by Expiration Date?'),\r\n isManufacturingDate: this.displayItemData('Controlled by Manufacturing Date?'),\r\n isLotOrBatchNumber: this.displayItemData('Controlled by Lot or Batch Number?'),\r\n isSerialNumber: this.displayItemData('Controlled by Serial Number?'),\r\n isSwVersion: this.displayItemData('Controlled By Software Version?'),\r\n urlForAdditionalInfo: this.displayItemData('URL for Additional Information'),\r\n classificationCode: this.displayItemData('NMPA Classification Code'),\r\n originalClassificationCode: this.displayItemData('NMPA Original Classification Code'),\r\n hasDirectMarking: this.displayItemData('Has Direct Marking DI?'),\r\n isDirectMarkingDiSameAsPrimaryDi: this.displayItemData('Is Direct Marking DI same as Primary DI?'),\r\n versionOrModel: this.displayItemData('Version or Model'),\r\n softwareAsAMedicalDevice: this.displayItemData('Software as a Medical Device'),\r\n productGenericNames: this.displayItemData('Product Name/Generic Name'),\r\n labelerDuns: this.displayItemData('Labeler DUNS Number'),\r\n directMarkingExempt: this.displayItemData('Device Subject to Direct Marking (DM), but Excepted?'),\r\n controlledByDonationIdentificationNumber: this.displayItemData('Controlled by Donation Identification Number?'),\r\n eudamedId: this.displayItemData('Eudamed ID'),\r\n eudamedIdIssuingAgency: this.displayItemData('Eudamed ID Issuing Agency')\r\n });\r\n\r\n this.deviceForm.setControl('tradeNamesForm', this.setTradeNamesForm());\r\n this.deviceForm.setControl('deviceDescriptionForm', this.setDeviceDescriptionForm());\r\n this.deviceForm.setControl('emdnCodesForm', this.setEmdnCodesForm());\r\n this.deviceForm.setControl('cndCodesForm', this.setCndCodesForm());\r\n this.deviceForm.setControl('fdaProductCodesForm', this.setFdaProductCodesForm()),\r\n this.deviceForm.setControl('secondaryDiForm', this.setSecondaryDiForm());\r\n this.deviceForm.setControl('previousDiForm', this.setPreviousDiForm());\r\n this.deviceForm.setControl('diDataCarrierTypesForm', this.setDiDataCarrierTypesForm());\r\n this.deviceForm.setControl('GMDNform', this.setGMDNform());\r\n }\r\n\r\n setGMDNform(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('GMDN Code(s)');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n code: c[(this.getMapInnerPathName('GMDN Code'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setDiDataCarrierTypesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('DI Data Carrier Type');\r\n\r\n if (types && types.length) {\r\n types.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('DI Data Carrier Type Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setTradeNamesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let names: any;\r\n\r\n names = this.displayItemData('Brand or Trade Name(s)');\r\n\r\n if (names && names.length > 0) {\r\n names.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Brand or Trade Name Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Brand or Trade Name Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setDeviceDescriptionForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Device Description');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Description Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Device Description Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setEmdnCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('EMDN Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n emdnCode: code[(this.getMapInnerPathName('EMDN Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setCndCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('CND Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n cndCode: code[(this.getMapInnerPathName('CND Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setFdaProductCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('FDA Product Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n fdaProductCode: code[(this.getMapInnerPathName('FDA Product Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSecondaryDiForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Secondary DI');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n diValue: c[(this.getMapInnerPathName('Secondary DI Value'))[0]],\r\n diAgency: c[(this.getMapInnerPathName('Secondary DI Issuing Agency'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPreviousDiForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Previous DI');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n diValue: c[(this.getMapInnerPathName('Previous DI Value'))[0]],\r\n diAgency: c[(this.getMapInnerPathName('Previous DI Issuing Agency'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","export { AppComponent } from './app/app.component';\r\nexport { AccessdeniedComponent } from './accessdenied/accessdenied.component';\r\nexport { CustomerSelectorComponent } from './customer-selector/customer-selector.component';\r\nexport { DashboardComponent } from './dashboard/dashboard.component';\r\nexport { CheckboxComponent } from './dynamicbuilder/checkbox/checkbox.component';\r\nexport { DateComponent } from './dynamicbuilder/date/date.component';\r\nexport { DropdownComponent } from './dynamicbuilder/dropdown/dropdown.component';\r\nexport { DynamicformbuilderComponent } from './dynamicbuilder/dynamicformbuilder/dynamicformbuilder.component';\r\nexport { DynamicformsComponent } from './dynamicbuilder/dynamicforms/dynamicforms.component';\r\nexport { FileComponent } from './dynamicbuilder/file/file.component';\r\nexport { RadioComponent } from './dynamicbuilder/radio/radio.component';\r\nexport { TextboxComponent } from './dynamicbuilder/textbox/textbox.component';\r\nexport { ErrorComponent } from './error/error.component';\r\nexport { FiledetailsComponent } from './filedetails/filedetails.component';\r\nexport { FileuploadComponent } from './fileupload/fileupload.component';\r\nexport { FooterComponent } from './footer/footer.component';\r\nexport { FileUploadHistoryGridComponent } from './grids/fileuploadhistorygrid/fileuploadhistorygrid.component';\r\nexport { HeaderComponent } from './header/header.component';\r\nexport { HomeComponent } from './home/home.component';\r\nexport { DeviceinventoryComponent } from './deviceinventory/deviceinventory.component';\r\nexport { NavMenuComponent } from './menus/nav-menu/nav-menu.component';\r\nexport { SupportComponent } from './support/support.component';\r\nexport { ForbiddenComponent } from './forbidden/forbidden.component';\r\nexport { UnauthorizedComponent } from './unauthorized/unauthorized.component';\r\nexport { ItemDetailsComponent } from './item-details/item-details.component';\r\nexport { IdentificationClassificationComponent } from './identification-classification/identification-classification.component';\r\nexport { DeviceCharacteristicsComponent } from './device-characteristics/device-characteristics.component';\r\nexport { PackagingComponent } from './packaging/packaging.component';\r\nexport { DeviceMarketingComponent } from './device-marketing/device-marketing.component';\r\nexport { BaseAccordionComponent } from './base-accordion/base-accordion.component';\r\nexport { SubstancesWarningsComponent } from './substances-warnings/substances-warnings.component';\r\nexport { ProductDesignerComponent } from './product-designer/product-designer.component';\r\nexport { NonHealthAuthorityComponent } from './non-health-authority/non-health-authority.component';\r\nexport { ModelIdentificationClassificationComponent } from './model-identification-classification/model-identification-classification.component';\r\nexport { ModelGroupCharacteristicsComponent } from './model-group-characteristics/model-group-characteristics.component';\r\nexport { ClinicalInvestigationComponent } from './clinical-investigation/clinical-investigation.component';\r\nexport { ModelNonHealthAuthorityComponent } from './model-non-health-authority/model-non-health-authority.component';\r\nexport { SubmissionHistoryComponent } from './submission-history/submission-history.component';\r\nexport { BaseGridComponent } from './base-grid/base-grid.component';\r\nexport { ManageSubmissionItemsComponent } from './manage-submission-items/manage-submission-items.component';\r\nexport { SubmissionItemDetailsComponent } from './submission-item-details/submission-item-details.component';\r\nexport { CompanyDatascopeSelectorComponent } from './company-datascope-selector/company-datascope-selector.component';\r\nexport {ApiCredentialsComponent } from './api-credentials/api-credentials.component';\r\nexport { SubmissionHistoryItemComponent } from './submission-history-item/submission-history-item.component';\r\nexport { SubmissionIdentityClassificationSKComponent } from './submission-identity-classification-sk/submission-identity-classification-sk.component';\r\nexport { SubmissionIdentityClassificationChComponent } from './submission-identity-classification-ch/submission-identity-classification-ch.component';\r\nexport { SubmissionIndentificationClassificationEuComponent} from './submission-indentification-classification-eu/submission-indentification-classification-eu.component';\r\nexport { SubmissionDeviceCharacteristicsComponent} from './submission-device-characteristics/submission-device-characteristics.component';\r\nexport {SubmissionPackagingComponent } from './submission-packaging/submission-packaging.component';\r\nexport { SubmissionDeviceMarketingComponent } from './submission-device-marketing/submission-device-marketing.component';\r\nexport { SubmissionDeviceRegistrationComponent } from './submission-device-registration/submission-device-registration.component';\r\nexport { ExportDataComponent } from './export-data/export-data.component';\r\nexport { AttributesModalComponent } from './attributes-modal/attributes-modal.component';\r\nexport { SubmissionIdentificationClassificationUsComponent} from './submission-identification-classification-us/submission-identification-classification-us.component';\r\nexport { SubmissionDeviceCharacteristicsUsComponent } from './submission-device-characteristics-us/submission-device-characteristics-us.component';\r\nexport { SubmissionDeviceSubstanceWarningsUsComponent } from './submission-device-substance-warnings-us/submission-device-substance-warnings-us.component';\r\nexport { SubmissionDeviceMarketingUsComponent } from './submission-device-marketing-us/submission-device-marketing-us.component';\r\nexport { IngestedDevicesChartComponent} from './ingested-devices-chart/ingested-devices-chart.component';\r\nexport { SubmittedDevicesChartComponent } from './submitted-devices-chart/submitted-devices-chart.component';\r\nexport { DeviceRegistrationComponent } from './device-registration/device-registration.component';\r\nexport { SubmissionProductDesignerEuComponent } from './submission-product-designer-eu/submission-product-designer-eu.component';\r\nexport { SubmissionSubstancesWarningsComponent } from './submission-substances-warnings/submission-substances-warnings.component';\r\nexport { SubmissionDeviceCharacteristicsEuComponent } from './submission-device-characteristics-eu/submission-device-characteristics-eu.component';\r\nexport { SubmissionDeviceMarketingEuComponent } from './submission-device-marketing-eu/submission-device-marketing-eu.component';\r\nexport { SubmissionDevicePackagingComponent } from './submission-device-packaging/submission-device-packaging.component';\r\nexport { SubmissionDeviceProductDesignerEuComponent } from './submission-device-product-designer-eu/submission-device-product-designer-eu.component';\r\nexport { SubmissionDeviceSubstancesWarningsEuComponent } from './submission-device-substances-warnings-eu/submission-device-substances-warnings-eu.component';\r\nexport { SubmissionModelClinicalInvestigationEuComponent } from './submission-model-clinical-investigation-eu/submission-model-clinical-investigation-eu.component';\r\nexport { SubmissionModelGroupCharacteristicsEuComponent } from './submission-model-group-characteristics-eu/submission-model-group-characteristics-eu.component';\r\nexport { SubmissionModelIndentificationClassificationEuComponent } from './submission-model-indentification-classification-eu/submission-model-indentification-classification-eu.component';\r\n","import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { ChartComponent, FontModel, IAccTextRenderEventArgs, ILoadedEventArgs, ISeriesRenderEventArgs } from '@syncfusion/ej2-angular-charts';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { DataScopesEnum, ValidationStatusEnum } from '../../shared/enums/index';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IIngestedDevicesChart } from '../../shared/models/index';\r\nimport { CustomerService } from '../../shared/services/customer.service';\r\n\r\n@Component({\r\n selector: 'app-ingested-devices-chart',\r\n templateUrl: './ingested-devices-chart.component.html',\r\n styleUrls: ['./ingested-devices-chart.component.scss'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class IngestedDevicesChartComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n dataScopeEnum: any;\r\n validationStatusEnum: any;\r\n\r\n // chart init variables\r\n primaryXAxis: Object;\r\n primaryYAxis: Object;\r\n chartData: Object[] = [];\r\n marker: Object;\r\n enableAnimation = true;\r\n legendSettings: Object;\r\n chartTitle: string;\r\n tooltip: Object;\r\n titleStyle: Object;\r\n chartArea: Object;\r\n cornerRadius: Object;\r\n pointColorMapping: string;\r\n maxCountForYaxis = 0;\r\n border: Object;\r\n margin: Object;\r\n fontModel: FontModel;\r\n radius: Object;\r\n subTitle: string;\r\n subtitleStyle: Object;\r\n chartComplete = false;\r\n\r\n @Input() customer;\r\n @Input() user;\r\n\r\n ingestedDevicesData: IIngestedDevicesChart[];\r\n\r\n subsciption: Subscription\r\n\r\n @ViewChildren(ChartComponent) chartsQuery: QueryList;\r\n //@ViewChild('chart-container')\r\n chart: ChartComponent;\r\n\r\n\r\n constructor (private cdRef: ChangeDetectorRef, private customerService: CustomerService) {\r\n // no action is required in the constructor\r\n }\r\n ngOnDestroy(): void {\r\n if (this.subsciption) {\r\n this.subsciption.unsubscribe();\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n\r\n this.chart = this.chartsQuery[0];\r\n if (this.chart) {\r\n this.chart.background = '#fff000';\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.dataScopeEnum = DataScopesEnum;\r\n this.validationStatusEnum = ValidationStatusEnum;\r\n\r\n this.prepareDataForChart();\r\n }\r\n\r\n prepareDataForChart() {\r\n\r\n if (this.customer) {\r\n this.subsciption = this.customerService.getCustomerIngestedDevicesChartData({ 'clientId': this.customer.customerId, 'userGuid': this.user.userguid }).subscribe(data => {\r\n this.ingestedDevicesData = data;\r\n\r\n // sort array in descending order to get the highest validation count for the yAxis\r\n if (this.ingestedDevicesData && this.ingestedDevicesData.length) {\r\n\r\n // create a deep independent copy of the original array so it didn't get affected by any action\r\n let sortedArray: IIngestedDevicesChart[] = [...this.ingestedDevicesData];\r\n\r\n // replace null with 'undefined'\r\n sortedArray.forEach(element => {\r\n if (element.validationStatus === null) {\r\n element.validationStatus = 'undefined';\r\n }\r\n });\r\n\r\n // Remove \"undefined\" and \"to be implemented\" statuses since they don't have to be displayed.\r\n sortedArray = sortedArray.filter((status: IIngestedDevicesChart) => status.validationStatus.toLowerCase() !== 'to be implemented' && status.validationStatus.toLowerCase() !== 'undefined');\r\n\r\n if (sortedArray && sortedArray.length) {\r\n // sort descending by validationStatusCount in order to set the Y Axis to the highest level\r\n sortedArray.sort((a: IIngestedDevicesChart, b: IIngestedDevicesChart) => b.validationStatusCount - (a.validationStatusCount));\r\n this.maxCountForYaxis = sortedArray[0].validationStatusCount;\r\n } else {\r\n this.maxCountForYaxis = 0;\r\n }\r\n\r\n\r\n\r\n // Check data for the current customer application variants\r\n if (this.customer.applicationVariants && this.customer.applicationVariants.length) {\r\n\r\n this.customer.applicationVariants.forEach(channel => {\r\n\r\n let channelData = {};\r\n // create a deep independent copy\r\n const channelArray: IIngestedDevicesChart[] = [...this.ingestedDevicesData].filter((x: IIngestedDevicesChart) => x.channel.toLowerCase() === channel.applicationVariantName.toLowerCase());\r\n\r\n if (channelArray && channelArray.length) {\r\n\r\n // handling null in validation status that breaks the exectution\r\n channelArray.forEach((element: IIngestedDevicesChart) => {\r\n\r\n // standardaize the Channel names\r\n switch (element.channel.toLowerCase()) {\r\n case 'eudamed':\r\n element.channel = this.dataScopeEnum.EUDAMED;\r\n break;\r\n\r\n case 'china-udi':\r\n element.channel = this.dataScopeEnum.CHINA;\r\n break;\r\n\r\n case 'southkorea-udi':\r\n element.channel = this.dataScopeEnum.SKOREA;\r\n break;\r\n\r\n case 'us-udi':\r\n element.channel = this.dataScopeEnum.US;\r\n break;\r\n\r\n case 'saudiarabia-udi':\r\n element.channel = this.dataScopeEnum.SA;\r\n break;\r\n case 'australia-udi':\r\n element.channel = this.dataScopeEnum.AU;\r\n break;\r\n case 'brazil-udi':\r\n element.channel = this.dataScopeEnum.BRAZIL;\r\n break;\r\n }\r\n });\r\n\r\n channelData = {\r\n 'channel': channelArray[0].channel,\r\n 'pass': this.getStatusCount(channelArray, this.validationStatusEnum.pass),\r\n 'warning': this.getStatusCount(channelArray, this.validationStatusEnum.warning),\r\n 'fail': this.getStatusCount(channelArray, this.validationStatusEnum.fail),\r\n };\r\n\r\n } else {\r\n channelData = {\r\n 'channel': channel.applicationVariantName,\r\n 'pass': 0,\r\n 'warning': 0,\r\n 'fail': 0\r\n };\r\n }\r\n\r\n this.chartData.push(channelData);\r\n });\r\n }\r\n }\r\n\r\n this.initChart();\r\n this.chartComplete = true;\r\n });\r\n }\r\n }\r\n\r\n getStatusCount(channelArray: IIngestedDevicesChart[], status: string): number {\r\n\r\n let count = 0;\r\n\r\n if (status && channelArray && channelArray.length) {\r\n\r\n if (channelArray.find(x => x.validationStatus.toLowerCase() === status.toLowerCase())) {\r\n count += channelArray.find(x => x.validationStatus.toLowerCase() === status.toLowerCase()).validationStatusCount;\r\n }\r\n return count;\r\n }\r\n }\r\n\r\n private initChart() {\r\n\r\n this.radius = { bottomLeft: 0, bottomRight: 0, topLeft: 7, topRight: 7 };\r\n\r\n this.primaryXAxis = {\r\n valueType: 'Category',\r\n title: '',\r\n majorGridLines: { width: 0 },\r\n majorTickLines: { width: 1 },\r\n border: { width: 0, color: '#bbb' }\r\n };\r\n\r\n\r\n let multiplier = this.maxCountForYaxis * 1.1;\r\n let percent = 1.1;\r\n\r\n //add 10% so the data label stays above.\r\n // If this.maxCountForYaxis = 0 set a default maximum to 10 and interval to 2\r\n const maximumY = this.maxCountForYaxis ? (Math.ceil(this.maxCountForYaxis / multiplier) * multiplier) * percent : 10;\r\n const intervalY = maximumY ? Math.ceil(maximumY / 7) : 2;\r\n\r\n // max and interval rounded to a closest thousand\r\n this.primaryYAxis = {\r\n title: 'Validated Devices',\r\n minimum: 0,\r\n maximum: maximumY,\r\n interval: intervalY,\r\n majorGridLines: { width: 1 },\r\n majorTickLines: { width: 2 }\r\n };\r\n\r\n this.fontModel = {\r\n fontWeight: 'regular'\r\n }\r\n\r\n this.marker = {\r\n dataLabel: {\r\n visible: true,\r\n font: this.fontModel,\r\n // fill: '#f2f2f2',\r\n // border: { width: 1, color: '#ddd' },\r\n margin: {\r\n left: 5,\r\n right: 5,\r\n top: 1,\r\n bottom: 1\r\n }\r\n }\r\n };\r\n\r\n this.legendSettings = {\r\n visible: true,\r\n position: 'Top',\r\n shapeHeight: 15,\r\n shapeWidth: 15,\r\n // toggleVisibility: false\r\n };\r\n\r\n this.tooltip = { enable: true };\r\n\r\n this.titleStyle = {\r\n fontFamily: 'open_sansregular, sans-serif',\r\n color: '#0071bb',\r\n size: '18px',\r\n textWrap: 'Wrap'\r\n };\r\n\r\n this.subtitleStyle = {\r\n fontFamily: 'open_sansregular, sans-serif',\r\n color: '#0071bb',\r\n size: '14px',\r\n textWrap: 'AnyWhere'\r\n };\r\n\r\n this.chartTitle = `Device Validations by Health Authority`;\r\n this.subTitle = ` ${ this.customer.customerName } `;\r\n\r\n this.chartArea = {\r\n border: {\r\n width: 0,\r\n color: '#aaa'\r\n }\r\n };\r\n this.cornerRadius = {\r\n topLeft: 5, topRight: 5\r\n };\r\n\r\n this.pointColorMapping = 'color';\r\n this.border = { width: 1, color: '#0071bb' }; // [border]='border'\r\n this.margin = { left: 20, right: 20, top: 20, bottom: 20 }; // [margin]='margin'\r\n }\r\n\r\n public load(args: ILoadedEventArgs): void {\r\n\r\n // If series equal 0 - hide the series\r\n // for (let i: number = 0; i < args.chart.series.length; i++) {\r\n\r\n // for (let k: number = 0; k < (args.chart.series[i].dataSource as any).length; k++) {\r\n\r\n // if (args.chart.series[i].dataSource[k][args.chart.series[i].yName] === 0) {\r\n\r\n // args.chart.series[i].visible = false;\r\n // args.chart.series[i].name = \"\";\r\n // }\r\n // }\r\n // }\r\n }\r\n\r\n seriesRender(args: ISeriesRenderEventArgs) {\r\n\r\n let index = args.series['index'];\r\n }\r\n\r\n onTextRender(args: IAccTextRenderEventArgs): void {\r\n args.text = `${ args.point.y }`;\r\n\r\n let index = args.series['index'];\r\n\r\n // to prevent displaying 0\r\n if (args.text === '0') {\r\n args.cancel = args.point.y === 0;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, ViewChild, ViewEncapsulation, AfterViewInit, ChangeDetectorRef, AfterContentChecked } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { StorageManagerService, DeviceinventoryService } from '../../shared/services/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { ICustomer, IRevisionHistory, IServiceError } from '../../shared/models/index';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { AccordionComponent } from '@syncfusion/ej2-angular-navigations';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { AccordionItem } from '@syncfusion/ej2-navigations';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n\tselector: 'app-item-details',\r\n\ttemplateUrl: './item-details.component.html',\r\n\tstyleUrls: ['./item-details.component.scss'],\r\n\tanimations: [fadeInOut],\r\n\tencapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class ItemDetailsComponent implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked {\r\n\r\n\r\n\tuserGuid: string;\r\n\tcustomer: ICustomer;\r\n\titemUdi: string;\r\n\titemIssuingAgency: string;\r\n\trevisions: IRevisionHistory[] = [];\r\n\trevisionNumber: number;\r\n\tsubscription: Subscription;\r\n\tvisible = false;\r\n\tresolverData: any[] | IServiceError;\r\n\r\n\ttarget = '#modalTarget';\r\n\tposition: object = { X: 'center', Y: 'center' };\r\n\tmodalWidth = '30%';\r\n\tmodalHeight = 'auto';\r\n\tanimationSettings: Object = { effect: 'Zoom' };\r\n\tisModal = true;\r\n\tdeviceMapping: any;\r\n\tmapArray = [];\r\n\titemData: any;\r\n\tdocumentId: string;\r\n\tdataScope: string;\r\n\tdefaultPropsArray: string[] = [];\r\n\treadOnly = true;\r\n\tudiDI: string;\r\n\tbudi: string;\r\n\tagency: string;\r\n\tproductSKU: string;\r\n\titemType: string;\r\n\tmodelBUDI: string;\r\n\tmodelAgency: string;\r\n headerVar: string;\r\n showLegacy: boolean;\r\n\r\n\tdeviceForm: FormGroup;\r\n\r\n\taccordionItemsData: any = [];\r\n\tpublic mapping = { header: 'header', content: 'content' };\r\n\r\n\t@ViewChild('dialog', { static: true })\r\n\tpublic dialog: DialogComponent;\r\n\r\n\t@ViewChild('properties') accordionObj: AccordionComponent;\r\n\r\n itemTemplate: string;\r\n\r\n eudamedId: string;\r\n eudamedIdIssuingAgency: string;\r\n eudamedDi: string;\r\n eudamedDiIssuingAgency: string;\r\n\r\n\tpublic btnClick: EmitType = () => {\r\n\t\tthis.dialog.show();\r\n\t}\r\n\r\n constructor(private activatedRoute: ActivatedRoute, private storage: StorageManagerService, private router: Router, private deviceInventoryService: DeviceinventoryService, private authenticationService: AuthenticationService, private cdref: ChangeDetectorRef, private fb: FormBuilder,\r\n protected featureService: FeatureService) { }\r\n\r\n ngOnInit() {\r\n\r\n //Defaulting legacyData to false\r\n this.showLegacy = false;\r\n\r\n // Get user and customer\r\n this.getPrincipals();\r\n this.getResolverData();\r\n\r\n this.udiDI = this.displayItemData('Primary DI');\r\n this.revisionNumber = +this.displayItemData('Revision Number');\r\n this.budi = this.displayItemData('Basic UDI-DI');\r\n this.agency = this.displayItemData('Primary DI Issuing Agency');\r\n this.productSKU = this.displayItemData('Product SKU');\r\n this.modelBUDI = this.displayItemData('BUDI-DI');\r\n this.modelAgency = this.displayItemData('BUDI-DI Issuing Agency');\r\n this.eudamedId = this.displayItemData('Eudamed ID');\r\n this.eudamedIdIssuingAgency = this.displayItemData('Eudamed ID Issuing Agency');\r\n this.eudamedDi = this.displayItemData('Eudamed DI');\r\n this.eudamedDiIssuingAgency = this.displayItemData('Eudamed DI Issuing Agency');\r\n\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n\tngAfterContentChecked() {\r\n\r\n\t\tthis.cdref.detectChanges();\r\n\t}\r\n\r\n\tprivate getResolverData() {\r\n\r\n\t\tlet revisionData;\r\n\r\n\t\tif (this.activatedRoute.snapshot.data && this.activatedRoute.snapshot.data.itemData.length) {\r\n\r\n\t\t\t// Device mapping\r\n\t\t\tif (this.activatedRoute.snapshot.data.itemData[1] && this.activatedRoute.snapshot.data.itemData[1] !== 'error') {\r\n\t\t\t\tthis.deviceMapping = this.activatedRoute.snapshot.data.itemData[1];\r\n\r\n\t\t\t\tObject.keys(this.deviceMapping).map(e => {\r\n\r\n\t\t\t\t\tthis.mapArray.push({ key: e, value: this.deviceMapping[e] });\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.activatedRoute.snapshot.data.itemData[2] !== 'error') {\r\n\r\n\t\t\t\tthis.itemData = this.activatedRoute.snapshot.data.itemData[2].data;\r\n\t\t\t\tthis.itemType = this.itemData.documentType;\r\n this.headerVar = this.itemType === 'model' ? 'Model' : 'Device';\r\n\r\n // If legacy data is present then change the header\r\n if (this.dataScope.toLowerCase() === 'eudamed') {\r\n // Now see if the feature 'eu-legacy-data-import' is enabled\r\n this.featureService.IsFeatureEnabled('eu-legacy-data-import').subscribe(response => {\r\n if (response) {\r\n if (this.itemData.hasOwnProperty('eudamedID') || this.itemData.hasOwnProperty('eudamedDI')) {\r\n this.headerVar = this.itemType === 'model' ? 'Legacy Model' : 'Legacy Device';\r\n this.showLegacy = true;\r\n }\r\n }\r\n });\r\n }\r\n\t\t\t}\r\n\r\n\t\t\tif (this.activatedRoute.snapshot.data.itemData[0] !== 'error') {\r\n\r\n\t\t\t\trevisionData = this.activatedRoute.snapshot.data.itemData[0].data;\r\n\r\n\t\t\t\tif (revisionData && this.activatedRoute.snapshot.data.itemData[0].isSuccess) {\r\n\r\n\t\t\t\t\tthis.revisions = revisionData;\r\n\t\t\t\t\tthis.revisionNumber = this.revisions[0].revision;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.itemData || !revisionData) {\r\n\r\n\t\t\t\tthis.retrieveOnPageReload();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdisplayItemData(field: string): string {\r\n\r\n\t\tlet retVal: any;\r\n\t\tlet prop: any;\r\n\t\tlet propValue: string;\r\n\t\tlet itemValuePath = [];\r\n\t\tlet itemPropsPathSegment: any;\r\n let defaultPropsPathSegment: any;\r\n\r\n this.itemType = this.itemData.documentType;\r\n\r\n\t\tif (this.itemData && field) {\r\n\r\n\t\t\tprop = this.mapArray.find(p => p.key.toLowerCase() === field.toLowerCase());\r\n\r\n\t\t\tif (prop) {\r\n\t\t\t\tpropValue = prop.value;\r\n\r\n\t\t\t\tif (propValue) {\r\n\r\n\t\t\t\t\t// Multi path value\r\n\t\t\t\t\tif (propValue.indexOf('/') > -1) {\r\n\r\n\t\t\t\t\t\tif (propValue.indexOf('') > -1) {\r\n\r\n\t\t\t\t\t\t\tpropValue = propValue.replace('', this.dataScope);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (propValue.indexOf('') > -1) {\r\n\r\n\t\t\t\t\t\t\tpropValue = propValue.replace('', this.itemType + 'Data');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\titemValuePath = propValue.split('/');\r\n\r\n\t\t\t\t\t\tif (itemValuePath && itemValuePath.length > 0) {\r\n\r\n\t\t\t\t\t\t\t// Top level item data\r\n\t\t\t\t\t\t\titemPropsPathSegment = this.itemData;\r\n\r\n\t\t\t\t\t\t\t// Get Default settings to be able to use it if there is no data for the dataScope.\r\n\t\t\t\t\t\t\tdefaultPropsPathSegment = this.itemData;\r\n\r\n\t\t\t\t\t\t\titemValuePath.forEach(path => {\r\n\r\n\t\t\t\t\t\t\t\t// if dataScope segment or value is undefined check if it exists in Default.\r\n if (itemPropsPathSegment && Object.keys(itemPropsPathSegment).length) {\r\n\r\n\t\t\t\t\t\t\t\t\titemPropsPathSegment = itemPropsPathSegment[path];\r\n // reached the datascope level - get the default first to be able use it if datascope value is not found.\r\n\t\t\t\t\t\t\t\t\tif (path.toLowerCase() === this.dataScope.toLowerCase()) {\r\n\t\t\t\t\t\t\t\t\t\tpath = 'default';\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n // get value from the default\r\n\t\t\t\t\t\t\t\t\tif (defaultPropsPathSegment) {\r\n\t\t\t\t\t\t\t\t\t\tdefaultPropsPathSegment = defaultPropsPathSegment[path];\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif (defaultPropsPathSegment) {\r\n\t\t\t\t\t\t\t\t\t\tif (!Array.isArray(defaultPropsPathSegment)) {\r\n\t\t\t\t\t\t\t\t\t\t\tdefaultPropsPathSegment = defaultPropsPathSegment[path];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n }\r\n\r\n // should allow the blank space so testing it against the undefined\r\n if (itemPropsPathSegment !== undefined && itemPropsPathSegment !== null) {\r\n\r\n if (typeof itemPropsPathSegment === 'object' && !Object.keys(itemPropsPathSegment).length) {\r\n itemPropsPathSegment = '';\r\n }\r\n\r\n retVal = itemPropsPathSegment;\r\n } else {\r\n\r\n retVal = defaultPropsPathSegment;\r\n\r\n if (defaultPropsPathSegment) {\r\n this.defaultPropsArray.push(field);\r\n }\r\n }\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Single path value\r\n\t\t\t\t\t\tretVal = this.itemData[propValue];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn retVal;\r\n\t}\r\n\r\n\tisDefault(field: string): string {\r\n\r\n\t\treturn this.defaultPropsArray.includes(field) ? 'highlight-fill' : '';\r\n\t}\r\n\r\n\tprivate retrieveOnPageReload() {\r\n\r\n\t\tthis.activatedRoute.params.subscribe(params => {\r\n\r\n\t\t\tthis.documentId = params['id'];\r\n\t\t});\r\n\r\n\t\tthis.authenticationService.getIsAuthorized().subscribe(auth => {\r\n\r\n\t\t\tif (auth) {\r\n\r\n\t\t\t\tthis.deviceInventoryService.getRevisionHistory(this.documentId, this.customer.customerId).subscribe((response: IRevisionHistory) => {\r\n\r\n\t\t\t\t\tif (response && response['isSuccess'] && response['data']) {\r\n\t\t\t\t\t\tthis.revisions = response['data'];\r\n\t\t\t\t\t\tthis.revisionNumber = response['data'][0].revision;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.deviceInventoryService.getInventoryItem(this.documentId, this.customer.customerId).subscribe(response => {\r\n\t\t\t\t\tif (response && response['isSuccess'] && response['data']) {\r\n\t\t\t\t\t\tthis.itemData = response['data'];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getPrincipals() {\r\n\r\n\t\t// Get the userGuid\r\n\t\tthis.userGuid = this.storage.read('userGuid');\r\n\r\n\t\tif (!this.userGuid) {\r\n\t\t\tthis.router.navigate(['error', 'User is not logged in']);\r\n\t\t}\r\n\r\n\t\t// Get the current Customer\r\n\t\tconst customer = this.storage.read('currentCustomer');\r\n\r\n\t\tif (customer) {\r\n\r\n\t\t\tthis.customer = typeof customer === 'object' ? customer : JSON.parse(customer);\r\n\t\t} else {\r\n\t\t\tthis.router.navigate(['/home']);\r\n\t\t}\r\n\r\n\t\tthis.dataScope = this.storage.read('dataScope');\r\n\t}\r\n\r\n\taccordionCreated(event) {\r\n\r\n\t\tthis.accordionObj.items[0].expanded = true;\r\n\r\n\t\tthis.accordionObj.refresh();\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\r\n\t\tthis.visible = false;\r\n\t}\r\n\r\n\treturnToInventory() {\r\n\r\n\t\tthis.router.navigate(['managedi/inventory']);\r\n\t}\r\n\r\n\t// Show the Revision History (retrieved above)\r\n\tdisplayRevisionHistory(event) {\r\n\r\n\t\tthis.visible = true;\r\n\t\tthis.dialog.show();\r\n\t}\r\n\r\n\tpublic onOverlayClick: EmitType = () => {\r\n\t\tthis.visible = false;\r\n\t\tthis.dialog.hide();\r\n\t}\r\n\r\n\tcollapseAll() {\r\n\r\n\t\tthis.accordionObj.items.forEach((i: AccordionItem) => {\r\n\r\n\t\t\tthis.accordionObj.expandItem(false);\r\n\t\t});\r\n\t}\r\n\r\n\texpandAll() {\r\n\r\n\t\tthis.accordionObj.items.forEach((i: AccordionItem) => {\r\n\r\n\t\t\tthis.accordionObj.expandItem(true);\r\n\t\t});\r\n\t}\r\n\r\n\trevisionHistoryClose(event) {\r\n\t\tthis.visible = false;\r\n\t\tthis.dialog.hide();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this.subscription) {\r\n\t\t\tthis.subscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DataStateChangeEventArgs, FilterSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { ClickEventArgs } from '@syncfusion/ej2-angular-navigations';\r\nimport { DialogComponent, TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Observable } from 'rxjs';\r\nimport { DataScopesEnum, SubmissionStatusEnum, SubmissionTypeEnum, SubmissionStatusNumericEnum } from '../../shared/enums/index';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { IServiceError } from '../../shared/models/index';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { AuthorizationService, CustomerService, DeviceinventoryService, ExportDataService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\nimport { BaseGridComponent } from '../base-grid/base-grid.component';\r\nimport { DataUtil } from '@syncfusion/ej2-data';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-manage-submission-items',\r\n templateUrl: './manage-submission-items.component.html',\r\n styleUrls: ['./manage-submission-items.component.scss'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class ManageSubmissionItemsComponent extends BaseGridComponent\r\n implements OnInit, AfterViewInit {\r\n data: any[];\r\n data$: Observable;\r\n resolverData: any[] | IServiceError;\r\n formatOptions: Object;\r\n selectedArray: any[] = [];\r\n filterSettings: FilterSettingsModel;\r\n dataScope: string;\r\n eSignatureResponse: any;\r\n eSignatureConfirmed = false;\r\n eSignatureErrorMessage = '';\r\n customer: any;\r\n userGuid: string;\r\n dataScopeEnum = DataScopesEnum;\r\n\r\n target = '#modalTarget';\r\n modalPosition: object = { X: 'center', Y: 'center' };\r\n modalWidth = '30%';\r\n modalHeight = 'auto';\r\n animationSettings: Object = { effect: 'Zoom' };\r\n isModal = true;\r\n loginName: string;\r\n overlay: any;\r\n submissionTypeEnum = SubmissionTypeEnum;\r\n submissionStatusNumericEnum = SubmissionStatusNumericEnum;\r\n alertWidth = '15%';\r\n sppItem = false;\r\n dblClickDialogModalVisible = false;\r\n rejectModalVisible = false;\r\n sendModalVisible = false;\r\n\r\n\r\n\r\n @ViewChild('submittemplate', { static: true })\r\n public toolbarSubmitTemplate: any;\r\n\r\n @ViewChild('rejecttemplate', { static: true })\r\n public toolbarRejectTemplate: any;\r\n\r\n @ViewChild('dialog', { static: true })\r\n public dialog: DialogComponent;\r\n\r\n @ViewChild('rejectDialog', { static: true })\r\n public rejectDialog: DialogComponent;\r\n\r\n @ViewChild('dblClickDialog', { static: true })\r\n public dblClickDialog: DialogComponent;\r\n\r\n @ViewChild('tooltipObj') tooltipObj: TooltipComponent;\r\n\r\n gridComplete = false;\r\n appVarId: number;\r\n healthAuthority: DataScopesEnum;\r\n modelTabCounter = 0;\r\n deviceTabCounterNewUdi = 0;\r\n deviceTabCounterChanges = 0;\r\n deviceRegistrationCount = 0;\r\n updateTabCounter = 0;\r\n rejectionNoteProvided = false;\r\n rejectionSubmitted = false;\r\n confirmClicked = false;\r\n doubleClicked = false;\r\n clickCount = 0;\r\n activeTab = '';\r\n tabs = ['newBudi', 'newUdi', 'deviceRegistrationTab', 'changes'];\r\n\r\n constructor (\r\n public service: DeviceinventoryService,\r\n public storage: StorageManagerService,\r\n public router: Router,\r\n public activatedRoute: ActivatedRoute,\r\n public toastr: ToastrService,\r\n public cdref: ChangeDetectorRef,\r\n public authorizationService: AuthorizationService,\r\n public authenticationService: AuthenticationService,\r\n public appGlobals: AppGlobals,\r\n public exportDataService: ExportDataService,\r\n public settingsService: SettingsService,\r\n public customerService: CustomerService,\r\n public featureService: FeatureService\r\n ) {\r\n super(\r\n service,\r\n storage,\r\n router,\r\n activatedRoute,\r\n toastr,\r\n cdref,\r\n authorizationService,\r\n authenticationService,\r\n appGlobals,\r\n exportDataService,\r\n settingsService,\r\n customerService,\r\n featureService\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n /**\r\n* Every time the data state changes (resize, reorder, reload, etc.) this event gets triggered\r\n* and originates the grid parameters. The parameter showInColumnChooser should be present\r\n* for all columns in the columnOptions array. Default columns should be set to false to\r\n* prevent the user from hiding them.\r\n* Called from the html on the grid's dataStateChange event\r\n* @param {DataStateChangeEventArgs} state\r\n* @returns void\r\n*/\r\n public dataStateChange(state: DataStateChangeEventArgs): void {\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n }\r\n\r\n private preExecute(state: DataStateChangeEventArgs) {\r\n\r\n if (this.resolverData[0]) {\r\n\r\n this.appDefaults = this.resolverData[0].channelGrids.find(a => a.applicationVariantId === this.appVarId).manageSubmissionItemsGrid;\r\n\r\n this.pageOptions = {\r\n pageSize: this.appDefaults.defaultPageSize,\r\n pageCount: this.appDefaults.pageCount,\r\n pageSizes: this.appDefaults.pageSizes\r\n };\r\n\r\n this.state = {\r\n skip: state && state.skip ? state.skip : 0,\r\n take: 0,\r\n sorted: []\r\n };\r\n } else {\r\n this.pageOptions = {\r\n pageSize: 25,\r\n pageCount: 6,\r\n pageSizes: [25, 50, 100]\r\n };\r\n\r\n // get all rows - 0 is stage max\r\n this.state = { skip: 0, take: 0, sorted: [] };\r\n }\r\n }\r\n\r\n dataBound(args: any) {\r\n\r\n // if (this.grid.currentViewData.length > 0) {\r\n // this.gridComplete = true;\r\n // }\r\n\r\n const selectAllCheckBox = document.getElementsByClassName('e-headercell')[0];\r\n\r\n if (selectAllCheckBox) {\r\n selectAllCheckBox.classList.add('checkbox-header-manage-di');\r\n }\r\n\r\n const gridchkbox = document.getElementsByClassName('e-gridchkbox')[0];\r\n\r\n if (gridchkbox) {\r\n gridchkbox.classList.add('checkbox-header-manage-di');\r\n }\r\n\r\n const ccDiv = document.getElementsByClassName('e-ccdlg')[0];\r\n if (ccDiv) {\r\n ccDiv.classList.add('wide-column-chooser');\r\n ccDiv.classList.remove('columnChooserMarginTop');\r\n }\r\n\r\n this.setDeviceCounter();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.permissionsConst = this.appGlobals.permissions;\r\n\r\n this.timerInterval = this.serverSettings.hasOwnProperty('APIPollTimeIntervalInMillSeconds') ?\r\n +this.serverSettings.APIPollTimeIntervalInMillSeconds : 5000;\r\n\r\n this.storage.write('activeTab', 'device');\r\n this.userGuid = this.storage.read('userGuid');\r\n\r\n if (!this.userGuid) {\r\n this.router.navigate(['error', 'User is not logged in']);\r\n }\r\n\r\n const customer = this.storage.read('currentCustomer');\r\n if (customer) {\r\n\r\n this.customer = typeof customer === 'object' ? customer : JSON.parse(customer);\r\n } else {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n this.formatOptions = { type: 'dateTime', format: 'MM/dd/yyyy hh:mm a' };\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n switch (this.dataScope) {\r\n case 'eudamed':\r\n this.healthAuthority = this.dataScopeEnum.EUDAMED;\r\n this.activeTab = 'newBudi'\r\n break;\r\n\r\n case 'china-udi':\r\n this.healthAuthority = this.dataScopeEnum.CHINA;\r\n this.activeTab = 'deviceRegistrationTab';\r\n break;\r\n\r\n case 'southkorea-udi':\r\n this.healthAuthority = this.dataScopeEnum.SKOREA;\r\n this.activeTab = 'deviceRegistrationTab';\r\n break;\r\n\r\n case 'us-udi':\r\n this.healthAuthority = this.dataScopeEnum.US;\r\n this.activeTab = 'deviceRegistrationTab';\r\n break;\r\n\r\n case 'saudiarabia-udi':\r\n this.healthAuthority = this.dataScopeEnum.SA;\r\n this.activeTab = 'deviceRegistrationTab';\r\n break;\r\n case 'australia-udi':\r\n this.healthAuthority = this.dataScopeEnum.AU;\r\n this.activeTab = 'deviceRegistrationTab';\r\n break;\r\n case 'brazil-udi':\r\n this.healthAuthority = this.dataScopeEnum.BRAZIL;\r\n this.activeTab = 'deviceRegistrationTab';\r\n break;\r\n }\r\n\r\n this.filterSettings = {\r\n type: 'Menu',\r\n operators: {\r\n stringOperator: [\r\n { value: 'contains', text: 'contains' },\r\n { value: 'startsWith', text: 'starts with' },\r\n { value: 'endsWith', text: 'ends with' },\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n dateOperator: [\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n }\r\n };\r\n\r\n this.selectionOptions = { cellSelectionMode: 'Flow', type: 'Multiple', mode: 'Row', checkboxMode: 'Default', checkboxOnly: true };\r\n\r\n if (!this.dataScope) {\r\n this.dataScope = this.customer.applicationVariants[0].applicationVariantName.toLowerCase();\r\n }\r\n\r\n this.appVarId = this.customer.applicationVariants.find(ap => ap.applicationVariantName.toLowerCase() === this.dataScope.toLowerCase()).applicationVariantId;\r\n\r\n this.loginName = this.storage.read('userData').preferred_username;\r\n\r\n // get data prepared by the resolver\r\n this.resolverData = this.activatedRoute.snapshot.data[\r\n 'submissionItems'\r\n ];\r\n\r\n this.preExecute(this.state);\r\n\r\n this.data$ = this.service.getSubmissionItems(\r\n 'ReadyForApproval',\r\n this.submissionItemsKey(this.dataScope),\r\n this.customer.customerId,\r\n this.dataScope,\r\n this.state,\r\n this.grid\r\n );\r\n\r\n this.subscription = this.data$.subscribe(response => {\r\n const objects = response;\r\n // const objects = this.resolverData[1]; // mock\r\n this.data = DataUtil.parse.parseJson((objects as any).objectList);\r\n // this.modelTabCounter = this.data.length;\r\n this.gridComplete = true;\r\n this.setTabCounter();\r\n\r\n this.sortSettings = { columns: [{ field: 'changeDate', direction: 'Descending' }] };\r\n\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n });\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n submissionItemsKey(dataScope: string) {\r\n\r\n let retVal;\r\n\r\n switch (dataScope) {\r\n case this.dataScopeEnum.EUDAMED.toLowerCase():\r\n\r\n // pass empty so all types are retrieved and filtered by the grids\r\n retVal = '';\r\n break;\r\n case this.dataScopeEnum.CHINA.toLowerCase():\r\n case this.dataScopeEnum.SA.toLowerCase():\r\n\r\n retVal = 'Draft';\r\n break;\r\n\r\n case this.dataScopeEnum.US.toLowerCase():\r\n retVal = 'GUDIDSubmission';\r\n break;\r\n\r\n case this.dataScopeEnum.SKOREA.toLowerCase():\r\n\r\n retVal = 'SearchTheModel';\r\n break;\r\n\r\n case this.dataScopeEnum.AU.toLocaleLowerCase():\r\n retVal = 'AusUDIDSubmission';\r\n break;\r\n\r\n case this.dataScopeEnum.BRAZIL.toLocaleLowerCase():\r\n retVal = 'BrazilUDIDSubmission';\r\n break;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n submissionItemsKeyTabId(dataScope: string, tabId: string): number[] {\r\n\r\n let retVal;\r\n\r\n switch (dataScope) {\r\n case this.dataScopeEnum.EUDAMED.toLowerCase():\r\n\r\n\r\n switch (tabId) {\r\n case 'newBudi':\r\n retVal = [this.submissionTypeEnum.MdrCreateNewDeviceModel];\r\n break;\r\n\r\n case 'newUdi':\r\n retVal = [this.submissionTypeEnum.MdrAddDevicesToRegisteredModel];\r\n break;\r\n\r\n case 'changes':\r\n retVal = [this.submissionTypeEnum.MdrUpdateDevice, this.submissionTypeEnum.MdrUpdateModel];\r\n break;\r\n }\r\n\r\n break;\r\n case this.dataScopeEnum.CHINA.toLowerCase():\r\n case this.dataScopeEnum.SA.toLowerCase():\r\n\r\n retVal = [this.submissionTypeEnum.Draft];\r\n break;\r\n\r\n case this.dataScopeEnum.US.toLowerCase():\r\n retVal = [this.submissionTypeEnum.GUDIDSubmission];\r\n break;\r\n\r\n case this.dataScopeEnum.SKOREA.toLowerCase():\r\n\r\n retVal = [this.submissionTypeEnum.SearchTheModel];\r\n break;\r\n\r\n case this.dataScopeEnum.AU.toLocaleLowerCase():\r\n retVal = [this.submissionTypeEnum.AusUDIDSubmission];\r\n break;\r\n\r\n case this.dataScopeEnum.BRAZIL.toLocaleLowerCase():\r\n retVal = [this.submissionTypeEnum.BrazilUDIDSubmission];\r\n break;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n tabChanged(event) {\r\n\r\n this.activeTab = event.nextId;\r\n this.data = [];\r\n this.gridComplete = false;\r\n this.deviceCount = -1;\r\n\r\n // deselect rows from the previous tab\r\n this.selectRowsAll(false);\r\n\r\n this.preExecute(this.state);\r\n\r\n this.data$ = this.service.getSubmissionItems(\r\n 'ReadyForApproval',\r\n this.submissionItemsKey(this.dataScope),\r\n this.customer.customerId,\r\n this.dataScope,\r\n this.state,\r\n this.grid\r\n );\r\n\r\n this.subscription = this.data$.subscribe(response => {\r\n const objects = response;\r\n // const objects = this.resolverData[1]; // mock\r\n this.data = DataUtil.parse.parseJson((objects as any).objectList);\r\n this.gridComplete = true;\r\n this.setDeviceCounter();\r\n this.setTabCounter(event.nextId);\r\n });\r\n\r\n this.sortSettings = { columns: [{ field: 'changeDate', direction: 'Descending' }] };\r\n }\r\n\r\n setTabCounter(nextId?: string) {\r\n\r\n if (nextId) {\r\n\r\n if (this.healthAuthority === this.dataScopeEnum.EUDAMED) {\r\n switch (nextId) {\r\n case 'newBudi':\r\n this.modelTabCounter = this.data.filter(d => +d.submissionTypeCode === 1).length;\r\n break;\r\n case 'newUdi':\r\n this.deviceTabCounterNewUdi = this.data.filter(d => +d.submissionTypeCode === 2).length;\r\n break;\r\n case 'changes':\r\n // 4 MDR - Update Model, and status 3 MDR - Update Device will be added\r\n this.deviceTabCounterChanges = this.data.filter(d => +d.submissionTypeCode === 4 || +d.submissionTypeCode === 3).length;\r\n break;\r\n }\r\n } else {\r\n this.deviceRegistrationCount = this.data.length;\r\n }\r\n } else {\r\n\r\n this.tabs.forEach(tabName => {\r\n this.setTabCounter(tabName);\r\n });\r\n }\r\n }\r\n\r\n toolbarButtonAccess() {\r\n\r\n this.toolbar = [\r\n { template: this.toolbarSubmitTemplate, id: 'sendtochannel' },\r\n { template: this.toolbarRejectTemplate, id: 'rejectselected' },\r\n ];\r\n }\r\n\r\n toolbarClick(args: ClickEventArgs): void {\r\n\r\n switch (args.item.id) {\r\n case 'sendtochannel':\r\n\r\n this.sendToChannel(this.dataScope);\r\n break;\r\n\r\n case 'rejectselected':\r\n\r\n this.rejectSelected();\r\n break;\r\n }\r\n }\r\n\r\n rejectSelected() {\r\n\r\n if (this.checkIsSelected() || (this.selectedItems && this.selectedItems.length)) {\r\n\r\n // this.rejectDialog.show();\r\n this.rejectModalVisible = true;\r\n } else {\r\n\r\n this.toastr.warning(\r\n `Nothing is selected for the Rejection.`,\r\n '',\r\n { closeButton: true }\r\n );\r\n }\r\n }\r\n\r\n\r\n itemClicked(itemType, data) {\r\n\r\n let diId;\r\n let issuingAgency;\r\n let submissionGuid;\r\n\r\n if (data) {\r\n\r\n this.sppItem = !!data.systemProcedurePackSrn;\r\n submissionGuid = data.submissionGuid;\r\n if (itemType === 'model') {\r\n diId = data.modelIdentifier;\r\n issuingAgency = data.modelIssuingAgency;\r\n } else {\r\n\r\n diId = data.deviceIdentifier;\r\n issuingAgency = data.deviceIssuingAgency;\r\n }\r\n\r\n // special handling for opening a new tab\r\n const url = this.router.serializeUrl(this.router.createUrlTree(['submissions/submissionitemdetails', itemType, issuingAgency, data.modelRevision, data.deviceRevision, data.distributionChannelDesc.toLowerCase()], { queryParams: { 'id': submissionGuid, sppItem: this.sppItem } }));\r\n window.open(url, '_blank');\r\n }\r\n }\r\n \r\n itemSubmissionType(data): string {\r\n\r\n let retVal;\r\n\r\n retVal = data.submissionTypeCode === SubmissionTypeEnum.MdrUpdateModel ? 'model' : 'device';\r\n\r\n return retVal;\r\n }\r\n\r\n /**\r\n * Triggers when any grid action begins\r\n * @param {any} args\r\n */\r\n actionBegin(args: any) {\r\n\r\n const type = args.requestType;\r\n\r\n switch (type) {\r\n case 'paging':\r\n this.storeSelectedItems();\r\n break;\r\n\r\n case 'filterbeforeopen':\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n complete(args: any) {\r\n switch (args.requestType) {\r\n case 'refresh':\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n this.toolbarButtonAccess();\r\n break;\r\n case 'sorting':\r\n break;\r\n case 'paging': case 'reorder':\r\n this.persistSelectedRows();\r\n\r\n if (!this.selectAllChecked && !this.deselectAllChecked) {\r\n this.persistSelectedRows();\r\n }\r\n\r\n // if SelectAll is selected - select rows on the page on paging event\r\n if (this.selectAllChecked) {\r\n this.selectRowsAll(this.selectAllChecked);\r\n }\r\n\r\n // if SelectAll is intentionally unchecked - unselect rows - overrides persistance\r\n if (this.deselectAllChecked) {\r\n this.selectRowsAll(false);\r\n }\r\n break;\r\n case 'filtering':\r\n\r\n if (this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n\r\n this.selectRowsAll(false);\r\n }\r\n break;\r\n case 'filterafteropen':\r\n\r\n if (args.columnType === 'date') {\r\n args.filterModel.dlgDiv.querySelector(\r\n '.e-datepicker'\r\n ).ej2_instances[0].format = 'MM/dd/y';\r\n }\r\n break;\r\n }\r\n }\r\n\r\n sendToChannel(channel: string) {\r\n\r\n if (this.checkIsSelected() || (this.selectedItems && this.selectedItems.length)) {\r\n\r\n this.sendModalVisible = true;\r\n this.dialog.show();\r\n } else {\r\n\r\n this.toastr.warning(\r\n `Nothing is selected for the Registration.`,\r\n '',\r\n { closeButton: true }\r\n );\r\n }\r\n }\r\n\r\n confirmedClicked() {\r\n this.confirmClicked = true;\r\n this.eSignatureErrorMessage = '';\r\n }\r\n\r\n onDialogClose(event) {\r\n\r\n this.eSignatureConfirmed = true;\r\n this.confirmClicked = false;\r\n this.doubleClicked = false;\r\n const userName: any = document.getElementById('txtUserName');\r\n const password: any = document.getElementById('txtPassword');\r\n\r\n if (userName && password) {\r\n\r\n userName.value = '';\r\n password.value = '';\r\n }\r\n }\r\n // catches double click event vs the single click\r\n buttonDoubleClick(event) {\r\n this.doubleClicked = true;\r\n this.eSignatureErrorMessage = 'The button cannot be double clicked';\r\n this.dblClickDialog.show();\r\n this.dblClickDialogModalVisible = true;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n onDblClickDialogClose(event) {\r\n\r\n this.doubleClicked = false;\r\n this.dblClickDialogModalVisible = false;\r\n }\r\n\r\n dblClickDialogClose(event) {\r\n\r\n if (this.dblClickDialog) {\r\n this.dblClickDialog.hide();\r\n this.dblClickDialogModalVisible = false;\r\n }\r\n }\r\n\r\n // Time out to catch the single click\r\n eSigConfirmTimeout() {\r\n\r\n setTimeout(() => {\r\n if (!this.doubleClicked) {\r\n this.eSigConfirm();\r\n } else {\r\n this.confirmClicked = false;\r\n }\r\n }, 1000);\r\n }\r\n\r\n eSigConfirm() {\r\n\r\n this.selectedRecords = [];\r\n const paramsContainer = {};\r\n\r\n const dialog = document.getElementById('dialog');\r\n\r\n if (dialog) {\r\n\r\n // get user's credentials\r\n const userName: any = document.getElementById('txtUserName');\r\n const password: any = document.getElementById('txtPassword');\r\n\r\n if (userName.value && password.value) {\r\n\r\n if (this.loginName.toLowerCase() !== userName.value.toLowerCase()) {\r\n this.eSignatureConfirmed = false;\r\n this.eSignatureErrorMessage = 'Unknown username or bad password';\r\n this.confirmClicked = false;\r\n return;\r\n }\r\n\r\n paramsContainer['userName'] = userName.value;\r\n paramsContainer['password'] = password.value;\r\n\r\n // confirm the signature\r\n this.subscription = this.service.eSigConfirmation(paramsContainer)\r\n .subscribe(res => {\r\n\r\n this.eSignatureResponse = res;\r\n\r\n if (!this.eSignatureResponse.isSuccess) {\r\n\r\n // if failed\r\n this.eSignatureConfirmed = false;\r\n this.eSignatureErrorMessage = this.eSignatureResponse.message;\r\n this.confirmClicked = false;\r\n } else {\r\n\r\n // signature confirmed. Now determine if it's a manual selection or \"Select All\"\r\n const paramsContainerForRegistration = {};\r\n\r\n if (this.checkIsSelected() || (this.selectedItems && this.selectedItems.length)) {\r\n\r\n if (this.selectAllChecked) {\r\n\r\n const viewModel = this.prepareSelectAllViewModel('sendtochannel');\r\n\r\n this.subscription = this.service.sendToChannelSelectAll(viewModel).subscribe(response => {\r\n\r\n const registrationResult: any = response;\r\n\r\n if (registrationResult) {\r\n\r\n this.preExecute(this.state);\r\n\r\n this.data$ = this.service.getSubmissionItems(\r\n 'ReadyForApproval',\r\n this.submissionItemsKey(this.dataScope),\r\n this.customer.customerId,\r\n this.dataScope,\r\n this.state,\r\n this.grid\r\n );\r\n\r\n // Setting the selected items count before passing to print in the toastr\r\n let selectedItemsCount = this.getSelectedItemsCount();\r\n\r\n this.subscription = this.data$.subscribe(list => {\r\n const objects = list;\r\n this.data = DataUtil.parse.parseJson((objects as any).objectList);\r\n\r\n // length is temp. When data.count is returned from the api - will be replaced\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n this.toastr.success(`${ selectedItemsCount } submission items were successfully submitted to ${ this.dataScope.toUpperCase() }. To monitor submission progress, please visit the Submissions History.`,\r\n '', { closeButton: true });\r\n\r\n this.confirmClicked = false;\r\n });\r\n\r\n } else {\r\n\r\n this.toastr.error(`Error occured during registration.`, '',\r\n { timeOut: 0, closeButton: true }\r\n );\r\n }\r\n\r\n this.postActionReset();\r\n });\r\n\r\n } else {\r\n\r\n paramsContainerForRegistration['customerId'] = this.customer.customerId;\r\n paramsContainerForRegistration['changeUserGuid'] = this.userGuid;\r\n paramsContainerForRegistration['channel'] = this.dataScope;\r\n paramsContainerForRegistration['submissionIds'] = this.selectedItems;\r\n\r\n this.subscription = this.service.sendToChannelForRegistration(paramsContainerForRegistration)?.subscribe(response => {\r\n const registrationResult: any = response;\r\n\r\n if (registrationResult) {\r\n\r\n this.preExecute(this.state);\r\n\r\n this.data$ = this.service.getSubmissionItems(\r\n 'ReadyForApproval',\r\n this.submissionItemsKey(this.dataScope),\r\n this.customer.customerId,\r\n this.dataScope,\r\n this.state,\r\n this.grid\r\n );\r\n this.toastr.info('Your request has been submitted', '', { closeButton: true });\r\n this.subscription = this.data$.subscribe(list => {\r\n const objects = list;\r\n this.data = DataUtil.parse.parseJson((objects as any).objectList);\r\n\r\n // length is temp. When data.count is returned from the api - will be replaced\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n this.toastr.success(`${ this.selectedItems.length } submission items were successfully submitted to ${ this.dataScope.toUpperCase() }. To monitor submission progress, please visit the Submissions History `,\r\n '', { closeButton: true });\r\n\r\n this.confirmClicked = false;\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n });\r\n\r\n } else {\r\n\r\n this.toastr.error(`Error occured during registration.`, '',\r\n { timeOut: 0, closeButton: true }\r\n );\r\n }\r\n });\r\n\r\n }\r\n\r\n // post action\r\n this.sendModalVisible = false;\r\n this.dialog.hide();\r\n }\r\n }\r\n });\r\n } else {\r\n\r\n this.eSignatureConfirmed = false;\r\n this.eSignatureErrorMessage = 'Unknown username or bad password';\r\n this.confirmClicked = false;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n eSigCancel(event) {\r\n this.sendModalVisible = false;\r\n this.dialog.hide();\r\n }\r\n\r\n rejectCancel(event) {\r\n\r\n this.rejectionSubmitted = false;\r\n this.rejectModalVisible = false;\r\n this.rejectDialog.hide();\r\n }\r\n\r\n onKeyUp(event) {\r\n this.rejectionNoteProvided = true;\r\n }\r\n\r\n rejectSubmit() {\r\n\r\n let rejectNoteValue;\r\n const paramsContainerForRejection = {};\r\n\r\n this.rejectionSubmitted = true;\r\n\r\n const rejectNoteTA: any = document.getElementById('taRejectNote');\r\n\r\n if (rejectNoteTA) {\r\n rejectNoteValue = rejectNoteTA.value;\r\n\r\n if (!rejectNoteValue) {\r\n this.rejectionNoteProvided = false;\r\n return;\r\n } else {\r\n this.rejectionNoteProvided = true;\r\n }\r\n }\r\n\r\n // Get submissionIDs from the approved array for Eudamed and this.selectedRecords for China and SKorea\r\n if (this.checkIsSelected() || (this.selectedItems && this.selectedItems.length)) {\r\n\r\n if (this.selectAllChecked) {\r\n\r\n // prepare a viewModel for the backend to process rows on the backend\r\n let viewModel = this.prepareSelectAllViewModel('rejectselected');\r\n\r\n // add a reject note to the view model\r\n viewModel['note'] = rejectNoteValue;\r\n\r\n this.subscription = this.service.sendForRejectionSelectAll(viewModel)?.subscribe(response => {\r\n\r\n const rejectionResult: any = response;\r\n\r\n if (rejectionResult) {\r\n\r\n this.preExecute(this.state);\r\n\r\n this.data$ = this.service.getSubmissionItems(\r\n 'ReadyForApproval',\r\n this.submissionItemsKey(this.dataScope),\r\n this.customer.customerId,\r\n this.dataScope,\r\n this.state,\r\n this.grid\r\n );\r\n\r\n // Setting the selected items count before passing to print in the toastr\r\n let selectedItemsCount = this.getSelectedItemsCount();\r\n\r\n this.subscription = this.data$.subscribe(list => {\r\n const objects = list;\r\n this.data = DataUtil.parse.parseJson((objects as any).objectList);\r\n\r\n // length is temp. When data.count is returned from the api - will be replaced\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n\r\n if (this.rejectDialog) {\r\n this.rejectModalVisible = false;\r\n this.rejectDialog.hide();\r\n }\r\n\r\n this.toastr.success(`${ selectedItemsCount } submission items were successfully submitted for rejection.`, '', { closeButton: true });\r\n\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n this.sendModalVisible = false;\r\n this.dialog.hide();\r\n });\r\n\r\n } else {\r\n\r\n this.toastr.error(`Error occured during rejection.`, '',\r\n { timeOut: 0, closeButton: true }\r\n );\r\n }\r\n\r\n this.postActionReset();\r\n });\r\n\r\n } else {\r\n\r\n paramsContainerForRejection['customerId'] = this.customer.customerId;\r\n paramsContainerForRejection['changeUserGuid'] = this.userGuid;\r\n paramsContainerForRejection['channel'] = this.dataScope;\r\n paramsContainerForRejection['submissionIds'] = this.selectedItems;\r\n paramsContainerForRejection['note'] = rejectNoteValue;\r\n\r\n this.subscription = this.service.sendForRejection(paramsContainerForRejection)?.subscribe(response => {\r\n const rejectionResult: any = response;\r\n\r\n if (rejectionResult) {\r\n\r\n this.preExecute(this.state);\r\n\r\n this.data$ = this.service.getSubmissionItems(\r\n 'ReadyForApproval',\r\n this.submissionItemsKey(this.dataScope),\r\n this.customer.customerId,\r\n this.dataScope,\r\n this.state,\r\n this.grid\r\n );\r\n this.toastr.info('Your request has been submitted', '', { closeButton: true });\r\n this.subscription = this.data$.subscribe(list => {\r\n const objects = list;\r\n this.data = DataUtil.parse.parseJson((objects as any).objectList);\r\n\r\n // length is temp. When data.count is returned from the api - will be replaced\r\n this.setDeviceCounter();\r\n this.setTabCounter();\r\n\r\n if (this.rejectDialog) {\r\n this.rejectModalVisible = false;\r\n this.rejectDialog.hide();\r\n }\r\n\r\n this.toastr.success(`${ this.selectedItems.length } submission items were successfully submitted for rejection.`, '', { closeButton: true });\r\n\r\n this.sendModalVisible = false;\r\n this.dialog.hide();\r\n this.selectedItems = [];\r\n this.storage.write('selectedItems', this.selectedItems);\r\n });\r\n\r\n } else {\r\n\r\n this.toastr.error(`Error occured during rejection.`, '',\r\n { timeOut: 0, closeButton: true }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n prepareSelectAllViewModel(action: string) {\r\n\r\n this.queryCriteria = this.generateSelectAllCriteria(action);\r\n\r\n const filterString = this.queryCriteria ? JSON.stringify(this.queryCriteria) : '';\r\n\r\n let viewModel = {\r\n 'customerId': this.customer.customerId,\r\n 'changeUserGuid': this.userGuid,\r\n 'channel': this.dataScope,\r\n 'submissionStatus': SubmissionStatusNumericEnum.readyForApproval,\r\n 'submissionTypes': this.submissionItemsKeyTabId(this.dataScope, this.activeTab),\r\n 'jsonFilter': filterString\r\n };\r\n\r\n return viewModel;\r\n }\r\n\r\n persistSelectedRows() {\r\n\r\n this.grid.selectRows([]);\r\n const selectedItemIndexes: number[] = [];\r\n const selectedItems = this.storage.read('selectedItems');\r\n\r\n if (selectedItems && selectedItems.length > 0) {\r\n\r\n const gridObj = this.grid;\r\n const records = gridObj.getCurrentViewRecords();\r\n\r\n selectedItems.forEach(item => {\r\n\r\n const row = records.find(r => r['submissionId'] === item);\r\n\r\n if (row) {\r\n\r\n const index = records.indexOf(row);\r\n\r\n if (index >= 0) {\r\n selectedItemIndexes.push(index);\r\n }\r\n }\r\n });\r\n\r\n if (selectedItemIndexes.length > 0) {\r\n\r\n this.grid.selectRows(selectedItemIndexes);\r\n }\r\n }\r\n }\r\n\r\n rowSelected(row, field) {\r\n\r\n if (row.isInteracted) {\r\n\r\n if (row && row.data) {\r\n\r\n // multiple selection\r\n if (row.data.length) {\r\n\r\n row.data.forEach(item => {\r\n if (!this.selectedItems.includes(item[field])) {\r\n this.selectedItems.push(item[field]);\r\n }\r\n });\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n } else {\r\n\r\n if (!this.selectedItems.includes(row.data[field])) {\r\n this.selectedItems.push(row.data[field]);\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n }\r\n\r\n this.confirmClicked = false;\r\n }\r\n }\r\n }\r\n\r\n storeSelectedItems() {\r\n\r\n const selectedRecords = this.grid.getSelectedRecords();\r\n\r\n if (selectedRecords.length > 0) {\r\n\r\n // add selected records\r\n selectedRecords.forEach(element => {\r\n\r\n if (!this.selectedItems.includes(element['submissionId'])) {\r\n this.selectedItems.push(element['submissionId']);\r\n }\r\n });\r\n }\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n }\r\n\r\n onRejectDialogClose(event) {\r\n\r\n const ta: any = document.getElementById('taRejectNote');\r\n\r\n if (ta) {\r\n ta.value = '';\r\n }\r\n }\r\n\r\n // override of the baseGrid. Sometimes the control is not available\r\n setDeviceCounter() {\r\n\r\n this.cdref.detectChanges();\r\n\r\n const pageCountMsg = document.getElementsByClassName('e-pagecountmsg')[0];\r\n\r\n if (pageCountMsg) {\r\n this.pageItemCounter = (pageCountMsg as any).innerText;\r\n\r\n this.deviceCount = this.pageItemCounter.substr(this.pageItemCounter.indexOf('(') + 1, this.pageItemCounter.indexOf(' item') - 1);\r\n } else {\r\n\r\n this.deviceCount = -1;\r\n }\r\n }\r\n\r\n sentToChannelButtonText(dataScope): string {\r\n\r\n let buttonText;\r\n\r\n switch (dataScope) {\r\n\r\n case this.dataScopeEnum.US:\r\n buttonText = 'FDA GUDID';\r\n break;\r\n\r\n case this.dataScopeEnum.AU:\r\n buttonText = 'TGA AusUDID';\r\n break;\r\n\r\n default:\r\n buttonText = dataScope;\r\n break;\r\n }\r\n\r\n return buttonText;\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // clear the selected items storage\r\n this.storage.write('selectedItems', []);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { ICustomer } from '../../../shared/models/index';\r\nimport { AuthenticationService } from '../../../shared/services/authentication.service';\r\nimport { StorageManagerService } from '../../../shared/services/index';\r\n\r\n@Component({\r\n selector: 'app-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.scss']\r\n})\r\nexport class NavMenuComponent implements OnInit, OnDestroy {\r\n\r\n // some of the variables are getting set from the parent components.\r\n // please don't remove any variables.\r\n loggedIn: boolean;\r\n isExpanded = false;\r\n isSecondaryExpanded = false;\r\n hasCurrentCustomer = false;\r\n viewFilesMenu = false;\r\n uploadFilesMenu = false;\r\n inventoryPageMenu = false;\r\n selectedCustomer: string;\r\n subscription: Subscription;\r\n userData: any;\r\n isAuthorized: boolean;\r\n customers: any[] = [];\r\n permissionsSet: string[];\r\n customerId: number;\r\n\r\n @Input() activeLink: string;\r\n @Input() currentCustomer: ICustomer;\r\n @Input() userName: string;\r\n @Input() email: string;\r\n\r\n @Output() companySelectionModalOutput = new EventEmitter();\r\n @Output() showDataScopeSelectionOutput = new EventEmitter();\r\n @Output() navigateToOutput = new EventEmitter();\r\n\r\n accessPermissions: any;\r\n dataScopeName: string;\r\n dataScope: string;\r\n dataScopeId: number;\r\n language = 'English';\r\n pageUrl: string;\r\n apiAccessPermitted = false;\r\n exportDataPermitted = false;\r\n\r\n constructor (private authenticationService: AuthenticationService,\r\n private storageManagerService: StorageManagerService, private router: Router, private cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n skipNavigation(e) {\r\n\r\n const type = e.type;\r\n\r\n if (type === 'click' ||\r\n (type === 'keydown' && (e.which === 13 || e.keyCode === 13))) {\r\n\r\n const main = document.getElementById('main-heading');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n logout() {\r\n\r\n let accessPermissions;\r\n\r\n accessPermissions = this.storageManagerService.read('accessPermissions');\r\n\r\n if (accessPermissions) {\r\n this.authenticationService.captureLogoutEvent(this.email)\r\n .subscribe(res => {\r\n this.authenticationService.logout();\r\n this.storageManagerService.clearAll();\r\n },\r\n error => console.error(error));\r\n } else {\r\n this.authenticationService.logout();\r\n this.storageManagerService.clearAll();\r\n }\r\n\r\n }\r\n\r\n isRouteActive(url): string {\r\n\r\n if (url === '#' || url === '/') {\r\n url = '/home';\r\n }\r\n\r\n if (this.activeLink === url || (this.activeLink === '/' && url === '/home')) {\r\n return 'router-link-active';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.pageUrl = location.pathname;\r\n\r\n this.authenticationService.getUserData().subscribe(userData => {\r\n if (userData) {\r\n const sessionCustomers = this.storageManagerService.read('eligibleCustomers');\r\n const sessionCurrentCustomer = this.storageManagerService.read('currentCustomer');\r\n this.userData = userData;\r\n\r\n this.dataScope = this.storageManagerService.read('dataScope');\r\n\r\n if (sessionCustomers) {\r\n\r\n this.customers = sessionCustomers;\r\n if (sessionCurrentCustomer) {\r\n this.currentCustomer = !this.currentCustomer ? (typeof sessionCurrentCustomer === 'object' ? sessionCurrentCustomer : JSON.parse(sessionCurrentCustomer)) : this.currentCustomer;\r\n }\r\n }\r\n }\r\n });\r\n\r\n (document.activeElement as HTMLElement).blur();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n openCompanySelectionModal(value) {\r\n this.companySelectionModalOutput.emit(value);\r\n }\r\n\r\n navigateTo(url) {\r\n\r\n if (this.storageManagerService.read('dataScope') || (!url.includes('/inventory') && !url.includes('/managesubmissionitems') && !url.includes('/submissionhistory'))) {\r\n this.navigateToOutput.emit(url);\r\n this.showDataScopeSelectionOutput.emit(false);\r\n this.router.navigate([url]);\r\n } else {\r\n\r\n if (url.includes('/inventory') || url.includes('/managesubmissionitems') || url.includes('/submissionhistory')) {\r\n this.navigateToOutput.emit(url);\r\n this.showDataScopeSelectionOutput.emit(true);\r\n\r\n } else {\r\n this.showDataScopeSelectionOutput.emit(false);\r\n }\r\n\r\n this.openCompanySelectionModal(true);\r\n }\r\n }\r\n\r\n displayDataScope(): boolean {\r\n\r\n let retVal = false;\r\n\r\n this.dataScope = this.storageManagerService.read('dataScope');\r\n\r\n const urlsToDisplayLink = ['/inventory', '/managesubmissionitems', '/submissionhistory', '/submissionhistoryitem', '/submissionitemdetails', '/itemdetails'];\r\n\r\n const complexUrl = location.pathname.trim().split('/');\r\n\r\n // the complex url after the split looks like this: ['', 'managedi', 'itemdetails', '45f74b9c-4ded-bd6e-d758-9ad5c1a106c9']\r\n const url = complexUrl[2] ? complexUrl[2] : complexUrl[1];\r\n\r\n // could be just ['', 'home']\r\n if (urlsToDisplayLink.includes(`/${ location.pathname }`) || urlsToDisplayLink.indexOf(`/${ url }`) >= 0 && this.dataScope) {\r\n retVal = true;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n displayChangeSelectionLink(): boolean {\r\n\r\n let retVal = false;\r\n const urlsToDisplayLink = ['/inventory', '/managesubmissionitems', '/submissionhistory'];\r\n\r\n const cust = this.storageManagerService.read('currentCustomer');\r\n\r\n let customer: ICustomer;\r\n\r\n if (cust) {\r\n customer = typeof cust === 'object' ? cust : JSON.parse(cust);\r\n }\r\n\r\n this.customers = this.storageManagerService.read('eligibleCustomers');\r\n\r\n if (this.customers && this.customers.length) {\r\n\r\n const complexUrl = location.pathname.trim().split('/');\r\n\r\n const url = complexUrl[2] ? complexUrl[2] : complexUrl[1];\r\n\r\n // the complex url after the split looks like this: ['', 'managedi', 'itemdetails', '45f74b9c-4ded-bd6e-d758-9ad5c1a106c9']\r\n // if (urlsToDisplayLink.includes(`/${ url }`) && (this.customers.length === 1 && customer.applicationVariants.length > 1) || (urlsToDisplayLink.includes(`/${url}`) && this.customers.length > 1) || this.customers.length > 1) {\r\n // retVal = true;\r\n // }\r\n\r\n if (this.customers.length > 1 || urlsToDisplayLink.includes(`/${ url }`) && (this.customers.length === 1 && customer.applicationVariants.length > 1)) {\r\n retVal = true;\r\n }\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n init(navigateTo) {\r\n\r\n if (navigateTo !== 'submissionhistory') {\r\n this.storageManagerService.remove('submissionHistoryTab');\r\n }\r\n\r\n if (navigateTo !== 'clientsettings') {\r\n this.storageManagerService.remove('clientAdminTab');\r\n }\r\n }\r\n\r\n toggle() {\r\n const element = document.getElementById('mainNavbar');\r\n element.classList.toggle('navbar-collapse');\r\n }\r\n\r\n navbarButtonClicked() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n navbarLinkClicked() {\r\n\r\n if (this.isExpanded) {\r\n const element = document.getElementById('collapsibleNavbar');\r\n element.classList.remove('show');\r\n\r\n this.isExpanded = false;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService} from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-model-group-characteristics',\r\n templateUrl: './model-group-characteristics.component.html',\r\n styleUrls: ['./model-group-characteristics.component.scss']\r\n})\r\nexport class ModelGroupCharacteristicsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n reusableSurgical: ['', { validators: [] }],\r\n measuringFunction: ['', { validators: [] }],\r\n activePowered: ['', { validators: [] }],\r\n implantable: ['', { validators: [] }],\r\n administeringMedicine: ['', { validators: [] }],\r\n containsMedicinalProductSubstance: ['', { validators: [] }],\r\n containingAnimalTissues: ['', { validators: [] }],\r\n containingHumanTissues: ['', { validators: [] }],\r\n forRiskClassImplantable: ['', { validators: [] }],\r\n containsBloodOrPlasmaSubstance: ['', { validators: [] }],\r\n medPurposeForm: this.fb.array([this.addMedPurposeForm()]),\r\n containsMicrobialSubstances: ['', { validators: [] }],\r\n companionDiagnostic: ['', { validators: [] }],\r\n nearPatientTesting: ['', { validators: [] }],\r\n patientSelfTesting: ['', { validators: [] }],\r\n reagent: ['', { validators: [] }],\r\n professionalTesting: ['', { validators: [] }],\r\n instrument: ['', { validators: [] }],\r\n ivdKit: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get medPurposeForm(): FormGroup {\r\n return this.deviceForm.get('medPurposeForm');\r\n }\r\n\r\n addMedPurposeForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n setMedPurposeForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Medical Purpose of System or Procedure Pack?');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Med Purpose Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Med Purpose Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n reusableSurgical: this.displayItemData('Reusable Surgical Instrument?'),\r\n measuringFunction: this.displayItemData('Measuring Function?'),\r\n implantable: this.displayItemData('Implantable?'),\r\n administeringMedicine: this.displayItemData('Administer or Remove a Medicinal Substance?'),\r\n activePowered: this.displayItemData('Active Device?'),\r\n containsMedicinalProductSubstance: this.displayItemData('Presence of a Medicinal Product Substance?'),\r\n containsBloodOrPlasmaSubstance: this.displayItemData('Presence of a Medicinal Product Substance Derived from Human Blood or Plasma?'),\r\n containingAnimalTissues: this.displayItemData('Presence of Animal Tissues, Cells, or Derivatives?'),\r\n containingHumanTissues: this.displayItemData('Presence of Human Tissues, Cells, or Derivatives?'),\r\n forRiskClassImplantable: this.displayItemData('For Risk Class IIb implantable?'),\r\n containsMicrobialSubstances: this.displayItemData('Presence of Cells or Substances of Microbial Origin?'),\r\n companionDiagnostic: this.displayItemData('Companion Diagnostic?'),\r\n nearPatientTesting: this.displayItemData('Near Patient Testing?'),\r\n patientSelfTesting: this.displayItemData('Patient Self Testing?'),\r\n reagent: this.displayItemData('Reagent?'),\r\n professionalTesting: this.displayItemData('Professional Testing?'),\r\n instrument: this.displayItemData('Instrument?'),\r\n ivdKit: this.displayItemData('IVD Kit?')\r\n });\r\n\r\n this.deviceForm.setControl('medPurposeForm', this.setMedPurposeForm());\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService} from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-model-identification-classification',\r\n templateUrl: './model-identification-classification.component.html',\r\n styleUrls: ['./model-identification-classification.component.scss']\r\n})\r\nexport class ModelIdentificationClassificationComponent extends BaseAccordionComponent implements OnInit {\r\n @Input() showLegacy: boolean = false;\r\n\r\n constructor(public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.itemType = this.itemData.documentType;\r\n this.dataScope = this.storage.read('dataScope');\r\n this.itemDetails = location.pathname.includes('/itemdetails');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n budi: ['', { validators: [] }],\r\n bAgency: ['', { validators: [] }],\r\n applicableLegislation: ['', { validators: [] }],\r\n deviceRiskClass: ['', { validators: [] }],\r\n deviceModel: ['', { validators: [] }],\r\n deviceName: ['', { validators: [] }],\r\n manufacturerSRN: ['', { validators: [] }],\r\n multiComponentDeviceType: ['', { validators: [] }],\r\n specialDeviceType: ['', { validators: [] }],\r\n sppProducerSRN: ['', { validators: [] }],\r\n sppType: ['', { validators: [] }],\r\n authRepSRN: ['', { validators: [] }],\r\n eudamedDi: ['', { validators: [] }],\r\n eudamedDiIssuingAgency: ['', { validators: [] }],\r\n eudamedIdIssuingAgency: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n budi: this.displayItemData('BUDI-DI'),\r\n bAgency: this.displayItemData('BUDI-DI Issuing Agency'),\r\n applicableLegislation: this.displayItemData('Applicable Legislation'),\r\n deviceRiskClass: this.displayItemData('Device Risk Class'),\r\n deviceModel: this.displayItemData('Device Model'),\r\n deviceName: this.displayItemData('Device Name'),\r\n manufacturerSRN: this.displayItemData('Manufacturer SRN'),\r\n multiComponentDeviceType: this.displayItemData('Multi-Component Device Type'),\r\n specialDeviceType: this.displayItemData('Special Device Type'),\r\n sppProducerSRN: this.displayItemData('System or Procedure Pack Producer SRN'),\r\n sppType: this.displayItemData('SPPType'),\r\n authRepSRN: this.displayItemData('Authorized Representative SRN'),\r\n eudamedDi: this.displayItemData('Eudamed DI'),\r\n eudamedDiIssuingAgency: this.displayItemData('Eudamed DI Issuing Agency'),\r\n eudamedIdIssuingAgency: this.displayItemData('Eudamed ID Issuing Agency')\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-model-non-health-authority',\r\n templateUrl: './model-non-health-authority.component.html',\r\n styleUrls: ['./model-non-health-authority.component.scss']\r\n})\r\nexport class ModelNonHealthAuthorityComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n trackingNumber: ['', { validators: [] }],\r\n batchNumber: ['', { validators: [] }],\r\n submissionChannelForm: this.fb.array([this.addSubmissionChannelForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get submissionChannelForm(): FormGroup {\r\n return this.deviceForm.get('submissionChannelForm');\r\n }\r\n\r\n addSubmissionChannelForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n channel: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n trackingNumber: this.displayItemData('Company Model Tracking Number'),\r\n batchNumber: this.displayItemData('Company Model Batch Number')\r\n });\r\n\r\n this.deviceForm.setControl('submissionChannelForm', this.setSubmissionChannelForm());\r\n }\r\n\r\n setSubmissionChannelForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Applicable Submission Channel');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n channel: c[(this.getMapInnerPathName('Submission Channel'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-non-health-authority',\r\n templateUrl: './non-health-authority.component.html',\r\n styleUrls: ['./non-health-authority.component.scss']\r\n})\r\nexport class NonHealthAuthorityComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n productSKU: ['', { validators: [] }],\r\n trackingNumber: ['', { validators: [] }],\r\n batchNumber: ['', { validators: [] }],\r\n companyProductCrossReferenceDi: ['', { validators: [] }],\r\n submissionChannelForm: this.fb.array([this.addSubmissionChannelForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get submissionChannelForm(): FormGroup {\r\n return this.deviceForm.get('submissionChannelForm');\r\n }\r\n\r\n addSubmissionChannelForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n email: ['', { validators: [] }],\r\n phone: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n productSKU: this.displayItemData('Product SKU'),\r\n trackingNumber: this.displayItemData('Company Device Tracking Number'),\r\n batchNumber: this.displayItemData('Company Device Batch Number'),\r\n companyProductCrossReferenceDi: this.displayItemData('Company Product Cross Reference DI')\r\n });\r\n\r\n this.deviceForm.setControl('submissionChannelForm', this.setSubmissionChannelForm());\r\n\r\n }\r\n\r\n setSubmissionChannelForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Applicable Submission Channel');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n channel: c[(this.getMapInnerPathName('Submission Channel'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-packaging',\r\n templateUrl: './packaging.component.html',\r\n styleUrls: ['./packaging.component.scss']\r\n})\r\nexport class PackagingComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n packageForm: this.fb.array([this.addPackageForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get packageForm(): FormGroup {\r\n return this.deviceForm.get('packageForm');\r\n }\r\n\r\n addPackageForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n packageDI: ['', { validators: [] }],\r\n packageAgency: ['', { validators: [] }],\r\n containsPackageDI: ['', { validators: [] }],\r\n containsPackageAgency: ['', { validators: [] }],\r\n packageQty: ['', { validators: [] }],\r\n packageStatusValue: ['', { validators: [] }],\r\n packageType: ['', { validators: [] }],\r\n packageDiscontinuedDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.setControl('packageForm', this.setPackageForm());\r\n }\r\n\r\n setPackageForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let packages: any;\r\n\r\n packages = this.displayItemData('Packages');\r\n\r\n if (packages && packages.length > 0) {\r\n packages.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n packageDi: c[(this.getMapInnerPathName('Package DI'))[0]],\r\n packageAgency: c[(this.getMapInnerPathName('Package DI Issuing Agency'))[0]],\r\n packageQty: c[(this.getMapInnerPathName('Package Quantity'))[0]],\r\n containingDI: c[(this.getMapInnerPathName('Contains Package DI'))[0]] ? c[(this.getMapInnerPathName('Contains Package DI'))[0]][(this.getMapInnerPathName('Contains Package DI'))[1]] : '',\r\n containingAgency: c[(this.getMapInnerPathName('Contains Package DI'))[0]] ? c[(this.getMapInnerPathName('Contains Package DI Issuing Agency'))[0]][(this.getMapInnerPathName('Contains Package DI Issuing Agency'))[1]] : '',\r\n packageStatusValue: c[(this.getMapInnerPathName('Package Status'))[0]] ? c[(this.getMapInnerPathName('Package Status'))[0]][(this.getMapInnerPathName('Package Status'))[1]] : '',\r\n packageType: c[(this.getMapInnerPathName('Package Type'))[0]],\r\n packageDiscontinuedDate: c[(this.getMapInnerPathName('Package Discontinued Date'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-product-designer',\r\n templateUrl: './product-designer.component.html',\r\n styleUrls: ['./product-designer.component.scss']\r\n})\r\nexport class ProductDesignerComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n productDesignerSRN: ['', { validators: [] }],\r\n streetName: ['', { validators: [] }],\r\n streetNumber: ['', { validators: [] }],\r\n addressComplement: ['', { validators: [] }],\r\n poBox: ['', { validators: [] }],\r\n city: ['', { validators: [] }],\r\n postalCode: ['', { validators: [] }],\r\n country: ['', { validators: [] }],\r\n designerForm: this.fb.array([this.addDesignerForm()]),\r\n publicContactForm: this.fb.array([this.addPublicContactForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get designerForm(): FormGroup {\r\n return this.deviceForm.get('designerForm');\r\n }\r\n\r\n get publicContactForm(): FormGroup {\r\n return this.deviceForm.get('publicContactForm');\r\n }\r\n\r\n addDesignerForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n name: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPublicContactForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n email: ['', { validators: [] }],\r\n phone: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n productDesignerSRN: this.displayItemData('Product Designer SRN'),\r\n streetName: this.displayItemData('Street Name'),\r\n streetNumber: this.displayItemData('Street Number'),\r\n addressComplement: this.displayItemData('Address Complement'),\r\n poBox: this.displayItemData('PO Box'),\r\n city: this.displayItemData('City'),\r\n postalCode: this.displayItemData('Postal Code'),\r\n country: this.displayItemData('Country')\r\n });\r\n\r\n this.deviceForm.setControl('designerForm', this.setDesignerForm());\r\n this.deviceForm.setControl('publicContactForm', this.setPublicContactForm());\r\n\r\n }\r\n\r\n setDesignerForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Product Designer Names');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n name: c[(this.getMapInnerPathName('PD Name'))[0]],\r\n language: c[(this.getMapInnerPathName('PD Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPublicContactForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Product Designer Contacts');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n email: c[(this.getMapInnerPathName('Email'))[0]],\r\n telephone: c[(this.getMapInnerPathName('Telephone'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray} from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-characteristics-eu',\r\n templateUrl: './submission-device-characteristics-eu.component.html',\r\n styleUrls: ['./submission-device-characteristics-eu.component.css']\r\n})\r\nexport class SubmissionDeviceCharacteristicsEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n singleUseDevice: ['', { validators: [] }],\r\n maxNumberOfReuse: ['', { validators: [] }],\r\n reprocessedSingleUseDevice: ['', { validators: [] }],\r\n packagedOrLabeledAsSterile: ['', { validators: [] }],\r\n needSterilizationBeforeUse: ['', { validators: [] }],\r\n clinicalSizeTypeForm: this.fb.array([this.addClinicalSizeTypeForm()]),\r\n storageHandlingForm: this.fb.array([this.addStorageHandlingForm()]),\r\n intoductedToHumandBody: ['', { validators: [] }],\r\n contactLenses: ['', { validators: [] }],\r\n brainElectroStimulation: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n combinationProduct: ['', { validators: [] }],\r\n deviceOrIvdReagents: ['', { validators: [] }],\r\n kit: ['', { validators: [] }],\r\n consumablesOrEquipment: ['', { validators: [] }],\r\n sterilizationMethodDescription: ['', {Validators: []}],\r\n sterilizationMethodsForm: this.fb.array([this.addSterilizationMethodsForm()]),\r\n clinicalSizesDescription: ['', { validators: [] }],\r\n specialStorageHandlingCondition: ['', { validators: [] }],\r\n storageCondition: ['', { validators: [] }],\r\n distributionAndHandlingCondition: ['', { validators: [] }],\r\n haveLimitedNoReuses: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addSterilizationMethodsForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get sterilizationMethodsForm(): FormGroup {\r\n return this.deviceForm.get('sterilizationMethodsForm');\r\n }\r\n\r\n get clinicalSizeTypeForm(): FormGroup {\r\n return this.deviceForm.get('clinicalSizeTypeForm');\r\n }\r\n\r\n get storageHandlingForm(): FormGroup {\r\n return this.deviceForm.get('storageHandlingForm');\r\n }\r\n\r\n addClinicalSizeTypeForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n sizeType: ['', { validators: [] }],\r\n sizeTypeDescs: [this.fb.array([])],\r\n sizeValue: ['', { validators: [] }],\r\n sizeMinValue: ['', { validators: [] }],\r\n sizeMaxValue: ['', { validators: [] }],\r\n sizeUnit: ['', { validators: [] }],\r\n sizeUnitDescs: [this.fb.array([])],\r\n clinicalSizeText: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addStorageHandlingForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n storageHandlingCondition: ['', { validators: [] }],\r\n valueLow: ['', { validators: [] }],\r\n valueHigh: ['', { validators: [] }],\r\n unit: ['', { validators: [] }],\r\n storageHandlingComments: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n singleUseDevice: this.displayItemData('Single Use Device?'),\r\n maxNumberOfReuse: this.displayItemData('Maximum Number of Reuse'),\r\n reprocessedSingleUseDevice: this.displayItemData('Reprocessed Single Use Device?'),\r\n packagedOrLabeledAsSterile: this.displayItemData('Packaged or Labeled as Sterile?'),\r\n needSterilizationBeforeUse: this.displayItemData('Need Sterilization Before Use?'),\r\n intoductedToHumandBody: this.displayItemData('Intended to be Totally or Partially Introduced into the Human Body?'),\r\n contactLenses: this.displayItemData('Contact Lenses?'),\r\n brainElectroStimulation: this.displayItemData('Brain Electrostimulation?'),\r\n highIntencityRadiation: this.displayItemData('High Intensity Electromagnetic Radiation?'),\r\n equipmentToDestroyTissue: this.displayItemData('Equipment to Reduce, Remove or Destroy Adipose Tissue?'),\r\n intendedForInjection: this.displayItemData('Intended for Filling by Injection?'),\r\n combinationProduct: this.displayItemData('Combination Product?'),\r\n deviceOrIvdReagents: this.displayItemData('Device or IVD Reagents?'),\r\n kit: this.displayItemData('Kit?'),\r\n consumablesOrEquipment: this.displayItemData('Consumables or Equipment?'),\r\n sterilizationMethodDescription: this.displayItemData('Sterilization Method Description'),\r\n clinicalSizesDescription: this.displayItemData('Clinical Size Type and Measurement Description'),\r\n\r\n specialStorageHandlingCondition: this.displayItemData('Special Storage and Handling Condition'),\r\n storageCondition: this.displayItemData('Storage Condition'),\r\n distributionAndHandlingCondition: this.displayItemData('Distribution and Handling Condition'),\r\n haveLimitedNoReuses: this.displayItemData('Have a limited number of reuses?')\r\n });\r\n\r\n this.deviceForm.setControl('clinicalSizeTypeForm', this.setClinicalSizeTypeForm());\r\n this.deviceForm.setControl('storageHandlingForm', this.setStorageHandlingForm());\r\n this.deviceForm.setControl('sterilizationMethodsForm', this.setSterilizationMethodsForm());\r\n }\r\n\r\n setSterilizationMethodsForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let methods: any;\r\n\r\n methods = this.displayItemData('Sterilization Method(s)');\r\n\r\n if (methods && methods.length) {\r\n methods.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Sterilization Method Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setClinicalSizeTypeForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('Clinical Size Type(s)');\r\n\r\n if (types && types.length > 0) {\r\n types.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n sizeType: c[(this.getMapInnerPathName('Clinical Size Type'))[0]],\r\n sizeTypeDescs: this.addClinicalTypeDescriptions(c[(this.getMapInnerPathName('Type Descriptions'))[0]]),\r\n sizeValue: c[(this.getMapInnerPathName('Clinical Size Value'))[0]],\r\n sizeMinValue: c[(this.getMapInnerPathName('Clinical Size Range - Minimum Value'))[0]],\r\n sizeMaxValue: c[(this.getMapInnerPathName('Clinical Size Range - Maximum Value'))[0]],\r\n sizeUnit: c[(this.getMapInnerPathName('Clinical Size Unit'))[0]],\r\n sizeUnitDescs: this.addClinicalUnitDescriptions(c[(this.getMapInnerPathName('Unit Descriptions'))[0]]),\r\n clinicalSizeText: c[(this.getMapInnerPathName('Clinical Size Text'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addClinicalTypeDescriptions(descs: any): any {\r\n\r\n const arr = [];\r\n const lqvPairs = descs?.languageQualifiedValue;\r\n\r\n if (lqvPairs && lqvPairs.length) {\r\n\r\n lqvPairs.forEach(lqv => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: lqv[(this.getMapInnerPathName('Type Descriptions LQV Value'))[0]],\r\n language: lqv[(this.getMapInnerPathName('Type Descriptions LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n addClinicalUnitDescriptions(descs: any): any {\r\n const arr = [];\r\n const lqvPairs = descs?.languageQualifiedValue;\r\n\r\n if (lqvPairs && lqvPairs.length) {\r\n\r\n lqvPairs.forEach(lqv => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: lqv[(this.getMapInnerPathName('Unit Descriptions LQV Value'))[0]],\r\n language: lqv[(this.getMapInnerPathName('Unit Descriptions LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\nsetStorageHandlingForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let conditions: any;\r\n let comments: any;\r\n let lqv: any;\r\n\r\n conditions = this.displayItemData('Storage and Handling Conditions');\r\n\r\n\r\nif (conditions && conditions.length > 0) {\r\n conditions.forEach((c, i) => {\r\n\r\n comments = c[(this.getMapInnerPathName('Storage and Handling Conditions Comments'))[0]];\r\n\r\n if (comments) {\r\n\r\n lqv = comments[(this.getMapInnerPathName('Storage and Handling Conditions Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n storageHandlingCondition: c[(this.getMapInnerPathName('Storage and Handling Conditions Value'))[0]],\r\n valueLow: c[(this.getMapInnerPathName('Storage and Handling Low Value'))[0]],\r\n valueHigh: c[(this.getMapInnerPathName('Storage and Handling High Value'))[0]],\r\n unit: c[(this.getMapInnerPathName('Storage and Handling Unit'))[0]],\r\n storageHandlingComments: this.addStorageComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addStorageComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n comments: element[(this.getMapInnerPathName('Storage Comments LQV Value'))[0]],\r\n languageQualifier: element[(this.getMapInnerPathName('Storage Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-submission-device-characteristics-us',\r\n templateUrl: './submission-device-characteristics-us.component.html',\r\n styleUrls: ['./submission-device-characteristics-us.component.css']\r\n})\r\nexport class SubmissionDeviceCharacteristicsUsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n singleUseDevice: ['', { validators: [] }],\r\n maxNumberOfReuse: ['', { validators: [] }],\r\n reprocessedSingleUseDevice: ['', { validators: [] }],\r\n packagedOrLabeledAsSterile: ['', { validators: [] }],\r\n needSterilizationBeforeUse: ['', { validators: [] }],\r\n clinicalSizeTypeForm: this.fb.array([this.addClinicalSizeTypeForm()]),\r\n storageHandlingForm: this.fb.array([this.addStorageHandlingForm()]),\r\n intoductedToHumandBody: ['', { validators: [] }],\r\n contactLenses: ['', { validators: [] }],\r\n brainElectroStimulation: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n combinationProduct: ['', { validators: [] }],\r\n deviceOrIvdReagents: ['', { validators: [] }],\r\n kit: ['', { validators: [] }],\r\n consumablesOrEquipment: ['', { validators: [] }],\r\n sterilizationMethodDescription: ['', { Validators: [] }],\r\n sterilizationMethodsForm: this.fb.array([this.addSterilizationMethodsForm()]),\r\n clinicalSizesDescription: ['', { validators: [] }],\r\n specialStorageHandlingCondition: ['', { validators: [] }],\r\n storageCondition: ['', { validators: [] }],\r\n distributionAndHandlingCondition: ['', { validators: [] }],\r\n haveLimitedNoReuses: ['', { validators: [] }],\r\n humanCellTissueProduct: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n // add sterilization group\r\n addSterilizationMethodsForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get sterilizationMethodsForm(): FormGroup {\r\n return this.deviceForm.get('sterilizationMethodsForm');\r\n }\r\n\r\n get clinicalSizeTypeForm(): FormGroup {\r\n return this.deviceForm.get('clinicalSizeTypeForm');\r\n }\r\n\r\n get storageHandlingForm(): FormGroup {\r\n return this.deviceForm.get('storageHandlingForm');\r\n }\r\n\r\n addClinicalSizeTypeForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n sizeType: ['', { validators: [] }],\r\n sizeTypeDescs: [this.fb.array([])],\r\n sizeValue: ['', { validators: [] }],\r\n sizeMinValue: ['', { validators: [] }],\r\n sizeMaxValue: ['', { validators: [] }],\r\n sizeUnit: ['', { validators: [] }],\r\n sizeUnitDescs: [this.fb.array([])],\r\n clinicalSizeText: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addStorageHandlingForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n storageHandlingCondition: ['', { validators: [] }],\r\n valueLow: ['', { validators: [] }],\r\n valueHigh: ['', { validators: [] }],\r\n unit: ['', { validators: [] }],\r\n storageHandlingComments: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n singleUseDevice: this.displayItemData('Single Use Device?'),\r\n maxNumberOfReuse: this.displayItemData('Maximum Number of Reuse'),\r\n reprocessedSingleUseDevice: this.displayItemData('Reprocessed Single Use Device?'),\r\n packagedOrLabeledAsSterile: this.displayItemData('Packaged or Labeled as Sterile?'),\r\n needSterilizationBeforeUse: this.displayItemData('Need Sterilization Before Use?'),\r\n intoductedToHumandBody: this.displayItemData('Intended to be Totally or Partially Introduced into the Human Body?'),\r\n contactLenses: this.displayItemData('Contact Lenses?'),\r\n brainElectroStimulation: this.displayItemData('Brain Electrostimulation?'),\r\n highIntencityRadiation: this.displayItemData('High Intensity Electromagnetic Radiation?'),\r\n equipmentToDestroyTissue: this.displayItemData('Equipment to Reduce, Remove or Destroy Adipose Tissue?'),\r\n intendedForInjection: this.displayItemData('Intended for Filling by Injection?'),\r\n combinationProduct: this.displayItemData('Combination Product?'),\r\n deviceOrIvdReagents: this.displayItemData('Device or IVD Reagents?'),\r\n kit: this.displayItemData('Kit?'),\r\n consumablesOrEquipment: this.displayItemData('Consumables or Equipment?'),\r\n sterilizationMethodDescription: this.displayItemData('Sterilization Method Description'),\r\n clinicalSizesDescription: this.displayItemData('Clinical Size Type and Measurement Description'),\r\n\r\n specialStorageHandlingCondition: this.displayItemData('Special Storage and Handling Condition'),\r\n storageCondition: this.displayItemData('Storage Condition'),\r\n distributionAndHandlingCondition: this.displayItemData('Distribution and Handling Condition'),\r\n haveLimitedNoReuses: this.displayItemData('Have a limited number of reuses?'),\r\n humanCellTissueProduct: this.displayItemData('Human Cell, Tissue or Cellular or Tissue-Based Product'),\r\n });\r\n\r\n this.deviceForm.setControl('clinicalSizeTypeForm', this.setClinicalSizeTypeForm());\r\n this.deviceForm.setControl('storageHandlingForm', this.setStorageHandlingForm());\r\n this.deviceForm.setControl('sterilizationMethodsForm', this.setSterilizationMethodsForm());\r\n }\r\n\r\n setSterilizationMethodsForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let methods: any;\r\n\r\n methods = this.displayItemData('Sterilization Method(s)');\r\n\r\n if (methods && methods.length) {\r\n methods.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Sterilization Method Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setClinicalSizeTypeForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('Clinical Size Type(s)');\r\n\r\n if (types && types.length > 0) {\r\n types.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n sizeType: c[(this.getMapInnerPathName('Clinical Size Type'))[0]],\r\n sizeTypeDescs: this.addClinicalTypeDescriptions(c[(this.getMapInnerPathName('Type Descriptions'))[0]]),\r\n sizeValue: c[(this.getMapInnerPathName('Clinical Size Value'))[0]],\r\n sizeMinValue: c[(this.getMapInnerPathName('Clinical Size Range - Minimum Value'))[0]],\r\n sizeMaxValue: c[(this.getMapInnerPathName('Clinical Size Range - Maximum Value'))[0]],\r\n sizeUnit: c[(this.getMapInnerPathName('Clinical Size Unit'))[0]],\r\n sizeUnitDescs: this.addClinicalUnitDescriptions(c[(this.getMapInnerPathName('Unit Descriptions'))[0]]),\r\n clinicalSizeText: c[(this.getMapInnerPathName('Clinical Size Text'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addClinicalTypeDescriptions(descs: any): any {\r\n\r\n const arr = [];\r\n const lqvPairs = descs?.languageQualifiedValue;\r\n\r\n if (lqvPairs && lqvPairs.length) {\r\n\r\n lqvPairs.forEach(lqv => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: lqv[(this.getMapInnerPathName('Type Descriptions LQV Value'))[0]],\r\n language: lqv[(this.getMapInnerPathName('Type Descriptions LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n addClinicalUnitDescriptions(descs: any): any {\r\n const arr = [];\r\n const lqvPairs = descs?.languageQualifiedValue;\r\n\r\n if (lqvPairs && lqvPairs.length) {\r\n\r\n lqvPairs.forEach(lqv => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: lqv[(this.getMapInnerPathName('Unit Descriptions LQV Value'))[0]],\r\n language: lqv[(this.getMapInnerPathName('Unit Descriptions LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n setStorageHandlingForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let conditions: any;\r\n let comments: any;\r\n let lqv: any;\r\n\r\n conditions = this.displayItemData('Storage and Handling Conditions');\r\n\r\n\r\n if (conditions && conditions.length > 0) {\r\n conditions.forEach((c, i) => {\r\n\r\n comments = c[(this.getMapInnerPathName('Storage and Handling Conditions Comments'))[0]];\r\n\r\n if (comments) {\r\n\r\n lqv = comments[(this.getMapInnerPathName('Storage and Handling Conditions Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n storageHandlingCondition: c[(this.getMapInnerPathName('Storage and Handling Conditions Value'))[0]],\r\n valueLow: c[(this.getMapInnerPathName('Storage and Handling Low Value'))[0]],\r\n valueHigh: c[(this.getMapInnerPathName('Storage and Handling High Value'))[0]],\r\n unit: c[(this.getMapInnerPathName('Storage and Handling Unit'))[0]],\r\n storageHandlingComments: this.addStorageComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addStorageComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n comments: element[(this.getMapInnerPathName('Storage Comments LQV Value'))[0]],\r\n languageQualifier: element[(this.getMapInnerPathName('Storage Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray} from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-characteristics',\r\n templateUrl: './submission-device-characteristics.component.html',\r\n styleUrls: ['./submission-device-characteristics.component.scss']\r\n})\r\nexport class SubmissionDeviceCharacteristicsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n singleUseDevice: ['', { validators: [] }],\r\n maxNumberOfReuse: ['', { validators: [] }],\r\n reprocessedSingleUseDevice: ['', { validators: [] }],\r\n packagedOrLabeledAsSterile: ['', { validators: [] }],\r\n needSterilizationBeforeUse: ['', { validators: [] }],\r\n clinicalSizeTypeForm: this.fb.array([this.addClinicalSizeTypeForm()]),\r\n storageHandlingForm: this.fb.array([this.addStorageHandlingForm()]),\r\n intoductedToHumandBody: ['', { validators: [] }],\r\n contactLenses: ['', { validators: [] }],\r\n brainElectroStimulation: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n combinationProduct: ['', { validators: [] }],\r\n deviceOrIvdReagents: ['', { validators: [] }],\r\n kit: ['', { validators: [] }],\r\n consumablesOrEquipment: ['', { validators: [] }],\r\n sterilizationMethodDescription: ['', {Validators: []}],\r\n sterilizationMethodsForm: this.fb.array([this.addSterilizationMethodsForm()]),\r\n clinicalSizesDescription: ['', { validators: [] }],\r\n specialStorageHandlingCondition: ['', { validators: [] }],\r\n storageCondition: ['', { validators: [] }],\r\n distributionAndHandlingCondition: ['', { validators: [] }],\r\n loanerOrthopedicSet: ['', { validators: [] }],\r\n userSterilizationRequiredOrthopedicProducts: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addSterilizationMethodsForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get sterilizationMethodsForm(): FormGroup {\r\n return this.deviceForm.get('sterilizationMethodsForm');\r\n }\r\n\r\n get clinicalSizeTypeForm(): FormGroup {\r\n return this.deviceForm.get('clinicalSizeTypeForm');\r\n }\r\n\r\n get storageHandlingForm(): FormGroup {\r\n return this.deviceForm.get('storageHandlingForm');\r\n }\r\n\r\n addClinicalSizeTypeForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n sizeType: ['', { validators: [] }],\r\n sizeValue: ['', { validators: [] }],\r\n sizeMinValue: ['', { validators: [] }],\r\n sizeMaxValue: ['', { validators: [] }],\r\n sizeUnit: ['', { validators: [] }],\r\n clinicalSizeText: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addStorageHandlingForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n storageHandlingCondition: ['', { validators: [] }],\r\n valueLow: ['', { validators: [] }],\r\n valueHigh: ['', { validators: [] }],\r\n unit: ['', { validators: [] }],\r\n storageHandlingComments: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n singleUseDevice: this.displayItemData('Single Use Device?'),\r\n maxNumberOfReuse: this.displayItemData('Maximum Number of Reuse'),\r\n reprocessedSingleUseDevice: this.displayItemData('Reprocessed Single Use Device?'),\r\n packagedOrLabeledAsSterile: this.displayItemData('Packaged or Labeled as Sterile?'),\r\n needSterilizationBeforeUse: this.displayItemData('Need Sterilization Before Use?'),\r\n intoductedToHumandBody: this.displayItemData('Intended to be Totally or Partially Introduced into the Human Body?'),\r\n contactLenses: this.displayItemData('Contact Lenses?'),\r\n brainElectroStimulation: this.displayItemData('Brain Electrostimulation?'),\r\n highIntencityRadiation: this.displayItemData('High Intensity Electromagnetic Radiation?'),\r\n equipmentToDestroyTissue: this.displayItemData('Equipment to Reduce, Remove or Destroy Adipose Tissue?'),\r\n intendedForInjection: this.displayItemData('Intended for Filling by Injection?'),\r\n combinationProduct: this.displayItemData('Combination Product?'),\r\n deviceOrIvdReagents: this.displayItemData('Device or IVD Reagents?'),\r\n kit: this.displayItemData('Kit?'),\r\n consumablesOrEquipment: this.displayItemData('Consumables or Equipment?'),\r\n sterilizationMethodDescription: this.displayItemData('Sterilization Method Description'),\r\n clinicalSizesDescription: this.displayItemData('Clinical Size Type and Measurement Description'),\r\n\r\n specialStorageHandlingCondition: this.displayItemData('Special Storage and Handling Condition'),\r\n storageCondition: this.displayItemData('Storage Condition'),\r\n distributionAndHandlingCondition: this.displayItemData('Distribution and Handling Condition'),\r\n loanerOrthopedicSet: this.displayItemData('Loaner Set/Orthopedic Set?'),\r\n userSterilizationRequiredOrthopedicProducts: this.displayItemData('User Sterilization Required for Orthopedic Products?')\r\n });\r\n\r\n this.deviceForm.setControl('clinicalSizeTypeForm', this.setClinicalSizeTypeForm());\r\n this.deviceForm.setControl('storageHandlingForm', this.setStorageHandlingForm());\r\n this.deviceForm.setControl('sterilizationMethodsForm', this.setSterilizationMethodsForm());\r\n }\r\n\r\n setSterilizationMethodsForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let methods: any;\r\n\r\n methods = this.displayItemData('Sterilization Method(s)');\r\n\r\n if (methods && methods.length) {\r\n methods.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Sterilization Method Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setClinicalSizeTypeForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('Clinical Size Type(s)');\r\n\r\n if (types && types.length > 0) {\r\n types.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n sizeType: c[(this.getMapInnerPathName('Clinical Size Type'))[0]],\r\n sizeValue: c[(this.getMapInnerPathName('Clinical Size Value'))[0]],\r\n sizeMinValue: c[(this.getMapInnerPathName('Clinical Size Range - Minimum Value'))[0]],\r\n sizeMaxValue: c[(this.getMapInnerPathName('Clinical Size Range - Maximum Value'))[0]],\r\n sizeUnit: c[(this.getMapInnerPathName('Clinical Size Unit'))[0]],\r\n clinicalSizeText: c[(this.getMapInnerPathName('Clinical Size Text'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\nsetStorageHandlingForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let conditions: any;\r\n let comments: any;\r\n let lqv: any;\r\n\r\n conditions = this.displayItemData('Storage and Handling Conditions');\r\n\r\n\r\nif (conditions && conditions.length > 0) {\r\n conditions.forEach((c, i) => {\r\n\r\n comments = c[(this.getMapInnerPathName('Storage and Handling Conditions Comments'))[0]];\r\n\r\n if (comments) {\r\n\r\n lqv = comments[(this.getMapInnerPathName('Storage and Handling Conditions Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n storageHandlingCondition: c[(this.getMapInnerPathName('Storage and Handling Conditions Value'))[0]],\r\n valueLow: c[(this.getMapInnerPathName('Storage and Handling Low Value'))[0]],\r\n valueHigh: c[(this.getMapInnerPathName('Storage and Handling High Value'))[0]],\r\n unit: c[(this.getMapInnerPathName('Storage and Handling Unit'))[0]],\r\n storageHandlingComments: this.addStorageComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addStorageComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n comments: element[(this.getMapInnerPathName('Storage Comments LQV Value'))[0]],\r\n languageQualifier: element[(this.getMapInnerPathName('Storage Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-marketing-eu',\r\n templateUrl: './submission-device-marketing-eu.component.html',\r\n styleUrls: ['./submission-device-marketing-eu.component.css']\r\n})\r\nexport class SubmissionDeviceMarketingEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n deviceStatus: ['', { validators: [] }],\r\n notIntendedForEu: ['', { validators: [] }],\r\n memberStateForDevicePlacementInEu: ['', { validators: [] }],\r\n deviceRecallScope: ['', { validators: [] }],\r\n membersAvailForm: this.fb.array([this.addMemberAvailForm()]),\r\n subStatusForm: this.fb.array([this.addSubStatusForm()]),\r\n recallForm: this.fb.array([this.addRecallForm()]),\r\n commercialDistributionEndDate: ['', { validators: [] }],\r\n reasonForDeviceDiscontinuation: ['', { validators: [] }],\r\n customerServiceCenterName: ['', { validators: [] }],\r\n customerServiceCenterPhone: ['', { validators: [] }],\r\n medicalInsuranceCode: ['', { validators: [] }],\r\n healthBenefitCodesForm: this.fb.array([this.addHealthBenefitCodesForm()]),\r\n eligibleForHealthCareBenefitsOrReimbursement: ['', { validators: [] }],\r\n reasonForNotProvidingHealthCareBenefitCode: ['', { validators: [] }],\r\n newDevice: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get healthBenefitCodesForm(): FormGroup {\r\n return this.deviceForm.get('healthBenefitCodesForm');\r\n }\r\n\r\n get membersAvailForm(): FormGroup {\r\n return this.deviceForm.get('membersAvailForm');\r\n }\r\n\r\n get subStatusForm(): FormGroup {\r\n return this.deviceForm.get('subStatusForm');\r\n }\r\n\r\n get recallForm(): FormGroup {\r\n return this.deviceForm.get('recallForm');\r\n }\r\n\r\n addHealthBenefitCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSubStatusForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n subStatusValue: ['', { validators: [] }],\r\n subStatusStartDate: ['', { validators: [] }],\r\n subStatusEndDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addRecallForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n languageQualifier: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addMemberAvailForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n memberStateValue: ['', { validators: [] }],\r\n startDate: ['', { validators: [] }],\r\n endDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n deviceStatus: this.displayItemData('Device Status'),\r\n notIntendedForEu: this.displayItemData('Not intended for being placed on the EU market?'),\r\n deviceRecallScope: this.displayItemData('Device Recall Scope'),\r\n memberStateForDevicePlacementInEu: this.displayItemData('Member State Where Device is Placed on the EU Market'),\r\n commercialDistributionEndDate: this.displayItemData('Commercial Distribution End Date'),\r\n reasonForDeviceDiscontinuation: this.displayItemData('Reason for Device Discontinuation'),\r\n customerServiceCenterName: this.displayItemData('Customer Service Center Name'),\r\n customerServiceCenterPhone: this.displayItemData('Customer Service Center Phone Number'),\r\n medicalInsuranceCode: this.displayItemData('Medical Insurance Code'),\r\n eligibleForHealthCareBenefitsOrReimbursement: this.displayItemData('Eligible for Health Care Benefit or Reimbursement?'),\r\n reasonForNotProvidingHealthCareBenefitCode: this.displayItemData('Reason for Not Providing Health Care Benefit Code'),\r\n newDevice: this.displayItemData('New Device?')\r\n });\r\n\r\n this.deviceForm.setControl('membersAvailForm', this.setMemberAvailForm());\r\n this.deviceForm.setControl('subStatusForm', this.setSubStatusForm());\r\n this.deviceForm.setControl('recallForm', this.setRecallForm());\r\n this.deviceForm.setControl('healthBenefitCodesForm', this.setHealthBenefitCodesForm());\r\n }\r\n setHealthBenefitCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let codes: any;\r\n\r\n codes = this.displayItemData('Health Care Benefit Code(s)');\r\n\r\n if (codes && codes.length) {\r\n codes.forEach(c => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Health Care Benefit Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setMemberAvailForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let members: any;\r\n\r\n members = this.displayItemData('Member State(s) Where Device is Made Available');\r\n\r\n if (members && members.length > 0) {\r\n members.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n memberStateValue: c[(this.getMapInnerPathName('Member State Value'))[0]],\r\n startDate: c[(this.getMapInnerPathName('Availability Start Date'))[0]],\r\n endDate: c[(this.getMapInnerPathName('Availability End Date'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSubStatusForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let status: any;\r\n\r\n status = this.displayItemData('Device SubStatus');\r\n\r\n if (status) {\r\n status.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n subStatusValue: c[(this.getMapInnerPathName('Device SubStatus Value'))[0]],\r\n subStatusStartDate: c[(this.getMapInnerPathName('Device SubStatus Start Date'))[0]],\r\n subStatusEndDate: c[(this.getMapInnerPathName('Device SubStatus End Date'))[0]]\r\n })\r\n\r\n );\r\n });\r\n }\r\n return formArray;\r\n }\r\n\r\n setRecallForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let recalls: any;\r\n\r\n recalls = this.displayItemData('Device Recall Precision');\r\n\r\n if (recalls && recalls.length > 0) {\r\n recalls.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Recall Precision Value'))[0]],\r\n languageQualifier: c[(this.getMapInnerPathName('Device Recall Precision Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-marketing-us',\r\n templateUrl: './submission-device-marketing-us.component.html',\r\n styleUrls: ['./submission-device-marketing-us.component.css']\r\n})\r\nexport class SubmissionDeviceMarketingUsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n deviceStatus: ['', { validators: [] }],\r\n notIntendedForEu: ['', { validators: [] }],\r\n memberStateForDevicePlacementInEu: ['', { validators: [] }],\r\n deviceRecallScope: ['', { validators: [] }],\r\n membersAvailForm: this.fb.array([this.addMemberAvailForm()]),\r\n subStatusForm: this.fb.array([this.addSubStatusForm()]),\r\n recallForm: this.fb.array([this.addRecallForm()]),\r\n commercialDistributionEndDate: ['', { validators: [] }],\r\n reasonForDeviceDiscontinuation: ['', { validators: [] }],\r\n customerServiceCenterName: ['', { validators: [] }],\r\n customerServiceCenterPhone: ['', { validators: [] }],\r\n medicalInsuranceCodesForm: this.fb.array([this.addMedicalInsuranceCodesForm()]),\r\n healthBenefitCodesForm: this.fb.array([this.addHealthBenefitCodesForm()]),\r\n premarketAuthorizationForm: this.fb.array([this.addPremarketAuthorizationForm()]),\r\n fdaListingNumbersForm: this.fb.array([this.addFdaListingNumbersForm()]),\r\n customerContactForm: this.fb.array([this.addCustomerContactForm()]),\r\n eligibleForHealthCareBenefitsOrReimbursement: ['', { validators: [] }],\r\n reasonForNotProvidingHealthCareBenefitCode: ['', { validators: [] }],\r\n newDevice: ['', { validators: [] }],\r\n premarketAuthorizationExempt: ['', { validators: [] }],\r\n prescriptionUseRx: ['', { validators: [] }],\r\n overTheCounterOtc: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get medicalInsuranceCodesForm(): FormGroup {\r\n return this.deviceForm.get('medicalInsuranceCodesForm');\r\n }\r\n\r\n get healthBenefitCodesForm(): FormGroup {\r\n return this.deviceForm.get('healthBenefitCodesForm');\r\n }\r\n\r\n get membersAvailForm(): FormGroup {\r\n return this.deviceForm.get('membersAvailForm');\r\n }\r\n\r\n get subStatusForm(): FormGroup {\r\n return this.deviceForm.get('subStatusForm');\r\n }\r\n\r\n get recallForm(): FormGroup {\r\n return this.deviceForm.get('recallForm');\r\n }\r\n\r\n get premarketAuthorizationForm(): FormGroup {\r\n return this.deviceForm.get('premarketAuthorizationForm');\r\n }\r\n\r\n get fdaListingNumbersForm(): FormGroup {\r\n return this.deviceForm.get('fdaListingNumbersForm');\r\n }\r\n\r\n get customerContactForm(): FormGroup {\r\n return this.deviceForm.get('customerContactForm');\r\n }\r\n\r\n\r\n addMedicalInsuranceCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCustomerContactForm(): any {\r\n return this.fb.group({\r\n email: ['', { validators: [] }],\r\n telCountryCode: ['', { validators: [] }],\r\n telNumber: ['', { validators: [] }],\r\n extension: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPremarketAuthorizationForm(): any {\r\n return this.fb.group({\r\n authorizationNumber: ['', { validators: [] }],\r\n supplementNumber: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addHealthBenefitCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addFdaListingNumbersForm(): any {\r\n return this.fb.group({\r\n fdaListingNumber: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSubStatusForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n subStatusValue: ['', { validators: [] }],\r\n subStatusStartDate: ['', { validators: [] }],\r\n subStatusEndDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addRecallForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n languageQualifier: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addMemberAvailForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n memberStateValue: ['', { validators: [] }],\r\n startDate: ['', { validators: [] }],\r\n endDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n deviceStatus: this.displayItemData('Device Status'),\r\n notIntendedForEu: this.displayItemData('Not intended for being placed on the EU market?'),\r\n deviceRecallScope: this.displayItemData('Device Recall Scope'),\r\n memberStateForDevicePlacementInEu: this.displayItemData('Member State Where Device is Placed on the EU Market'),\r\n commercialDistributionEndDate: this.displayItemData('Commercial Distribution End Date'),\r\n reasonForDeviceDiscontinuation: this.displayItemData('Reason for Device Discontinuation'),\r\n customerServiceCenterName: this.displayItemData('Customer Service Center Name'),\r\n customerServiceCenterPhone: this.displayItemData('Customer Service Center Phone Number'),\r\n medicalInsuranceCode: this.displayItemData('Medical Insurance Code'),\r\n eligibleForHealthCareBenefitsOrReimbursement: this.displayItemData('Eligible for Health Care Benefit or Reimbursement?'),\r\n reasonForNotProvidingHealthCareBenefitCode: this.displayItemData('Reason for Not Providing Health Care Benefit Code'),\r\n newDevice: this.displayItemData('New Device?'),\r\n premarketAuthorizationExempt: this.displayItemData('Device Exempt from FDA Premarket Submission?'),\r\n prescriptionUseRx: this.displayItemData('Prescription Use (Rx)?'),\r\n overTheCounterOtc: this.displayItemData('Over the Counter (OTC)?')\r\n });\r\n\r\n this.deviceForm.setControl('membersAvailForm', this.setMemberAvailForm());\r\n this.deviceForm.setControl('subStatusForm', this.setSubStatusForm());\r\n this.deviceForm.setControl('recallForm', this.setRecallForm());\r\n this.deviceForm.setControl('healthBenefitCodesForm', this.setHealthBenefitCodesForm());\r\n this.deviceForm.setControl('premarketAuthorizationForm', this.setPremarketAuthorizationForm());\r\n this.deviceForm.setControl('fdaListingNumbersForm', this.setFdaListingNumbersForm());\r\n this.deviceForm.setControl('customerContactForm', this.setCustomerContactForm());\r\n this.deviceForm.setControl('medicalInsuranceCodesForm', this.setMedicalInsuranceCodesForm());\r\n }\r\n\r\n setMedicalInsuranceCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Medical Insurance Code(s)');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n medicalInsuranceCode: code[(this.getMapInnerPathName('Medical Insurance Code'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n setCustomerContactForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let contact: any;\r\n\r\n contact = this.displayItemData('Customer Contact');\r\n\r\n if (contact && contact.length) {\r\n contact.forEach(c => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n email: c[(this.getMapInnerPathName('Customer Contact Email'))[0]],\r\n telCountryCode: c[(this.getMapInnerPathName('Customer Telephone Country Code'))[0]],\r\n telNumber: c[(this.getMapInnerPathName('Customer Telephone Number'))[0]],\r\n extension: c[(this.getMapInnerPathName('Customer Telephone Ext'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n setHealthBenefitCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let codes: any;\r\n\r\n codes = this.displayItemData('Health Care Benefit Code(s)');\r\n\r\n if (codes && codes.length) {\r\n codes.forEach(c => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Health Care Benefit Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setMemberAvailForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let members: any;\r\n\r\n members = this.displayItemData('Member State(s) Where Device is Made Available');\r\n\r\n if (members && members.length > 0) {\r\n members.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n memberStateValue: c[(this.getMapInnerPathName('Member State Value'))[0]],\r\n startDate: c[(this.getMapInnerPathName('Availability Start Date'))[0]],\r\n endDate: c[(this.getMapInnerPathName('Availability End Date'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSubStatusForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let status: any;\r\n\r\n status = this.displayItemData('Device SubStatus');\r\n\r\n if (status) {\r\n status.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n subStatusValue: c[(this.getMapInnerPathName('Device SubStatus Value'))[0]],\r\n subStatusStartDate: c[(this.getMapInnerPathName('Device SubStatus Start Date'))[0]],\r\n subStatusEndDate: c[(this.getMapInnerPathName('Device SubStatus End Date'))[0]]\r\n })\r\n\r\n );\r\n });\r\n }\r\n return formArray;\r\n }\r\n\r\n setRecallForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let recalls: any;\r\n\r\n recalls = this.displayItemData('Device Recall Precision');\r\n\r\n if (recalls && recalls.length > 0) {\r\n recalls.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Recall Precision Value'))[0]],\r\n languageQualifier: c[(this.getMapInnerPathName('Device Recall Precision Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPremarketAuthorizationForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let premarketAuth: any;\r\n\r\n premarketAuth = this.displayItemData('FDA Premarket Authorization');\r\n\r\n if (premarketAuth && premarketAuth.length > 0) {\r\n premarketAuth.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n authorizationNumber: c[(this.getMapInnerPathName('FDA Authorization Number'))[0]],\r\n supplementNumber: c[(this.getMapInnerPathName('FDA Supplement Number'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setFdaListingNumbersForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let listings: any;\r\n\r\n listings = this.displayItemData('FDA Listing Number(s)');\r\n\r\n if (listings && listings.length > 0) {\r\n listings.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n fdaListingNumber: c[(this.getMapInnerPathName('FDA Listing Number Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-marketing',\r\n templateUrl: './submission-device-marketing.component.html',\r\n styleUrls: ['./submission-device-marketing.component.scss']\r\n})\r\nexport class SubmissionDeviceMarketingComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n deviceStatus: ['', { validators: [] }],\r\n notIntendedForEu: ['', { validators: [] }],\r\n memberStateForDevicePlacementInEu: ['', { validators: [] }],\r\n deviceRecallScope: ['', { validators: [] }],\r\n membersAvailForm: this.fb.array([this.addMemberAvailForm()]),\r\n subStatusForm: this.fb.array([this.addSubStatusForm()]),\r\n recallForm: this.fb.array([this.addRecallForm()]),\r\n commercialDistributionEndDate: ['', { validators: [] }],\r\n reasonForDeviceDiscontinuation: ['', { validators: [] }],\r\n customerServiceCenterName: ['', { validators: [] }],\r\n customerServiceCenterPhone: ['', { validators: [] }],\r\n medicalInsuranceCode: ['', { validators: [] }],\r\n healthBenefitCodesForm: this.fb.array([this.addHealthBenefitCodesForm()]),\r\n eligibleForHealthCareBenefitsOrReimbursement: ['', { validators: [] }],\r\n reasonForNotProvidingHealthCareBenefitCode: ['', { validators: [] }],\r\n medicalInsuranceCodesForm: this.fb.array([this.addMedicalInsuranceCodesForm()]),\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get medicalInsuranceCodesForm(): FormGroup {\r\n return this.deviceForm.get('medicalInsuranceCodesForm');\r\n }\r\n\r\n get healthBenefitCodesForm(): FormGroup {\r\n return this.deviceForm.get('healthBenefitCodesForm');\r\n }\r\n\r\n get membersAvailForm(): FormGroup {\r\n return this.deviceForm.get('membersAvailForm');\r\n }\r\n\r\n get subStatusForm(): FormGroup {\r\n return this.deviceForm.get('subStatusForm');\r\n }\r\n\r\n get recallForm(): FormGroup {\r\n return this.deviceForm.get('recallForm');\r\n }\r\n\r\n addMedicalInsuranceCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addHealthBenefitCodesForm(): any {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSubStatusForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n subStatusValue: ['', { validators: [] }],\r\n subStatusStartDate: ['', { validators: [] }],\r\n subStatusEndDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addRecallForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n languageQualifier: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addMemberAvailForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n memberStateValue: ['', { validators: [] }],\r\n startDate: ['', { validators: [] }],\r\n endDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n deviceStatus: this.displayItemData('Device Status'),\r\n notIntendedForEu: this.displayItemData('Not intended for being placed on the EU market?'),\r\n deviceRecallScope: this.displayItemData('Device Recall Scope'),\r\n memberStateForDevicePlacementInEu: this.displayItemData('Member State Where Device is Placed on the EU Market'),\r\n commercialDistributionEndDate: this.displayItemData('Commercial Distribution End Date'),\r\n reasonForDeviceDiscontinuation: this.displayItemData('Reason for Device Discontinuation'),\r\n customerServiceCenterName: this.displayItemData('Customer Service Center Name'),\r\n customerServiceCenterPhone: this.displayItemData('Customer Service Center Phone Number'),\r\n medicalInsuranceCode: this.displayItemData('Medical Insurance Code'),\r\n eligibleForHealthCareBenefitsOrReimbursement: this.displayItemData('Eligible for Health Care Benefit or Reimbursement?'),\r\n reasonForNotProvidingHealthCareBenefitCode: this.displayItemData('Reason for Not Providing Health Care Benefit Code')\r\n });\r\n\r\n this.deviceForm.setControl('membersAvailForm', this.setMemberAvailForm());\r\n this.deviceForm.setControl('subStatusForm', this.setSubStatusForm());\r\n this.deviceForm.setControl('recallForm', this.setRecallForm());\r\n this.deviceForm.setControl('healthBenefitCodesForm', this.setHealthBenefitCodesForm());\r\n this.deviceForm.setControl('medicalInsuranceCodesForm', this.setMedicalInsuranceCodesForm());\r\n }\r\n\r\n setMedicalInsuranceCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Medical Insurance Code(s)');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n medicalInsuranceCode: code[(this.getMapInnerPathName('Medical Insurance Code'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setHealthBenefitCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let codes: any;\r\n\r\n codes = this.displayItemData('Health Care Benefit Code(s)');\r\n\r\n if (codes && codes.length) {\r\n codes.forEach(c => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Health Care Benefit Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setMemberAvailForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let members: any;\r\n\r\n members = this.displayItemData('Member State(s) Where Device is Made Available');\r\n\r\n if (members && members.length > 0) {\r\n members.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n memberStateValue: c[(this.getMapInnerPathName('Member State Value'))[0]],\r\n startDate: c[(this.getMapInnerPathName('Availability Start Date'))[0]],\r\n endDate: c[(this.getMapInnerPathName('Availability End Date'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSubStatusForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let status: any;\r\n\r\n status = this.displayItemData('Device SubStatus');\r\n\r\n if (status) {\r\n status.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n subStatusValue: c[(this.getMapInnerPathName('Device SubStatus Value'))[0]],\r\n subStatusStartDate: c[(this.getMapInnerPathName('Device SubStatus Start Date'))[0]],\r\n subStatusEndDate: c[(this.getMapInnerPathName('Device SubStatus End Date'))[0]]\r\n })\r\n\r\n );\r\n });\r\n }\r\n return formArray;\r\n }\r\n\r\n setRecallForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let recalls: any;\r\n\r\n recalls = this.displayItemData('Device Recall Precision');\r\n\r\n if (recalls && recalls.length > 0) {\r\n recalls.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Recall Precision Value'))[0]],\r\n languageQualifier: c[(this.getMapInnerPathName('Device Recall Precision Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\nimport { DataScopesEnum } from '../../shared/enums/dataScopes.enum';\r\n\r\n@Component({\r\n selector: 'app-submission-device-packaging',\r\n templateUrl: './submission-device-packaging.component.html',\r\n styleUrls: ['./submission-device-packaging.component.css']\r\n})\r\nexport class SubmissionDevicePackagingComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n dataScopesEnum: any;\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScopesEnum = DataScopesEnum;\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n packageForm: this.fb.array([this.addPackageForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get packageForm(): FormGroup {\r\n return this.deviceForm.get('packageForm');\r\n }\r\n\r\n addPackageForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n packageDI: ['', { validators: [] }],\r\n packageAgency: ['', { validators: [] }],\r\n containsPackageDI: ['', { validators: [] }],\r\n containsPackageAgency: ['', { validators: [] }],\r\n packageQty: ['', { validators: [] }],\r\n packageStatusValue: ['', { validators: [] }],\r\n packageType: ['', { validators: [] }],\r\n packageDiscontinuedDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.setControl('packageForm', this.setPackageForm());\r\n }\r\n\r\n setPackageForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let packages: any;\r\n\r\n packages = this.displayItemData('Packages');\r\n\r\n if (packages && packages.length > 0) {\r\n packages.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n packageDi: c[(this.getMapInnerPathName('Package DI'))[0]],\r\n packageAgency: c[(this.getMapInnerPathName('Package DI Issuing Agency'))[0]],\r\n packageQty: c[(this.getMapInnerPathName('Package Quantity'))[0]],\r\n containingDI: c[(this.getMapInnerPathName('Contains Package DI'))[0]] ? c[(this.getMapInnerPathName('Contains Package DI'))[0]][(this.getMapInnerPathName('Contains Package DI'))[1]] : '',\r\n containingAgency: c[(this.getMapInnerPathName('Contains Package DI'))[0]] ? c[(this.getMapInnerPathName('Contains Package DI Issuing Agency'))[0]][(this.getMapInnerPathName('Contains Package DI Issuing Agency'))[1]] : '',\r\n packageStatusValue: c[(this.getMapInnerPathName('Package Status'))[0]] ? c[(this.getMapInnerPathName('Package Status'))[0]][(this.getMapInnerPathName('Package Status'))[1]] : '',\r\n packageType: c[(this.getMapInnerPathName('Package Type'))[0]],\r\n packageDiscontinuedDate: c[(this.getMapInnerPathName('Package Discontinued Date'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-product-designer-eu',\r\n templateUrl: './submission-device-product-designer-eu.component.html',\r\n styleUrls: ['./submission-device-product-designer-eu.component.css']\r\n})\r\nexport class SubmissionDeviceProductDesignerEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n productDesignerSRN: ['', { validators: [] }],\r\n streetName: ['', { validators: [] }],\r\n streetNumber: ['', { validators: [] }],\r\n addressComplement: ['', { validators: [] }],\r\n poBox: ['', { validators: [] }],\r\n city: ['', { validators: [] }],\r\n postalCode: ['', { validators: [] }],\r\n country: ['', { validators: [] }],\r\n designerForm: this.fb.array([this.addDesignerForm()]),\r\n publicContactForm: this.fb.array([this.addPublicContactForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get designerForm(): FormGroup {\r\n return this.deviceForm.get('designerForm');\r\n }\r\n\r\n get publicContactForm(): FormGroup {\r\n return this.deviceForm.get('publicContactForm');\r\n }\r\n\r\n addDesignerForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n name: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPublicContactForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n email: ['', { validators: [] }],\r\n phone: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n productDesignerSRN: this.displayItemData('Product Designer SRN'),\r\n streetName: this.displayItemData('Street Name'),\r\n streetNumber: this.displayItemData('Street Number'),\r\n addressComplement: this.displayItemData('Address Complement'),\r\n poBox: this.displayItemData('PO Box'),\r\n city: this.displayItemData('City'),\r\n postalCode: this.displayItemData('Postal Code'),\r\n country: this.displayItemData('Country')\r\n });\r\n\r\n this.deviceForm.setControl('designerForm', this.setDesignerForm());\r\n this.deviceForm.setControl('publicContactForm', this.setPublicContactForm());\r\n\r\n }\r\n\r\n setDesignerForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Product Designer Names');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n name: c[(this.getMapInnerPathName('PD Name'))[0]],\r\n language: c[(this.getMapInnerPathName('PD Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPublicContactForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Product Designer Contacts');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n email: c[(this.getMapInnerPathName('Email'))[0]],\r\n telephone: c[(this.getMapInnerPathName('Telephone'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-registration',\r\n templateUrl: './submission-device-registration.component.html',\r\n styleUrls: ['./submission-device-registration.component.scss']\r\n})\r\nexport class SubmissionDeviceRegistrationComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n diRecordPublishDate: ['', { validators: [] }],\r\n isPrimaryDiSameAsRegisteredOrFiledDi: ['', { validators: [] }],\r\n registeredOrFiledDi: ['', { validators: [] }],\r\n deviceRegistrantOrFilerName: ['', { validators: [] }],\r\n medicalDeviceInfoManagerPhone: ['', { validators: [] }],\r\n changeDescription: ['', { validators: [] }],\r\n unifiedSocialCreditCode: ['', { validators: [] }],\r\n deviceRegistrantOrFilerNameInEnglish: ['', { validators: [] }],\r\n medicalDeviceInfoManagerEmail: ['', { validators: [] }],\r\n deviceLicenseNumber: ['', { validators: [] }],\r\n registrationOrFilingCertificateNumbersForm: this.fb.array([this.addRegFilForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addRegFilForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n regFilNumber: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n diRecordPublishDate: this.displayItemData('DI Record Publish Date'),\r\n isPrimaryDiSameAsRegisteredOrFiledDi: this.displayItemData('Is Primary DI same as the Registered or Filed DI?'),\r\n registeredOrFiledDi: this.displayItemData('Registered or Filed DI'),\r\n deviceRegistrantOrFilerName: this.displayItemData('Device Registrant or Filer Name'),\r\n medicalDeviceInfoManagerPhone: this.displayItemData('Medical Device Information Manager Phone Number'),\r\n changeDescription: this.displayItemData('Change Description'),\r\n unifiedSocialCreditCode: this.displayItemData('Unified Social Credit Code'),\r\n deviceRegistrantOrFilerNameInEnglish: this.displayItemData('Device Registrant or Filer Name in English'),\r\n medicalDeviceInfoManagerEmail: this.displayItemData('Medical Device Information Manager Email'),\r\n deviceLicenseNumber: this.displayItemData('Device License Number')\r\n });\r\n\r\n this.deviceForm.setControl('registrationOrFilingCertificateNumbersForm', this.setRegFilForm());\r\n }\r\n\r\n setRegFilForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Registration Certificate Number or Filing Certificate Number');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n regFilNumber: c[(this.getMapInnerPathName('Registration Certificate Number or Filing Certificate Number Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n get registrationOrFilingCertificateNumbersForm(): FormGroup {\r\n return this.deviceForm.get('registrationOrFilingCertificateNumbersForm');\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-substance-warnings-us',\r\n templateUrl: './submission-device-substance-warnings-us.component.html',\r\n styleUrls: ['./submission-device-substance-warnings-us.component.css']\r\n})\r\nexport class SubmissionDeviceSubstanceWarningsUsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n containingLatex: ['', { validators: [] }],\r\n criticalWarningForm: this.fb.array([this.addCriticalWarningForm()]),\r\n CMRForm: this.fb.array([this.addCMRForm()]),\r\n substancesForm: this.fb.array([this.addSubstancesForm()]),\r\n criticalWarningAndContraindication: ['', { validators: [] }],\r\n containingPhthalates: ['', { validators: [] }],\r\n mriSafetyStatus: ['', { validators: [] }],\r\n labeledAsNotMadeWithNaturalRubber: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get criticalWarningForm(): FormGroup {\r\n return this.deviceForm.get('criticalWarningForm');\r\n }\r\n\r\n get CMRForm(): FormGroup {\r\n return this.deviceForm.get('CMRForm');\r\n }\r\n\r\n get substancesForm(): FormGroup {\r\n return this.deviceForm.get('substancesForm');\r\n }\r\n\r\n addCriticalWarningForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n warningValue: ['', { validators: [] }],\r\n warningCommentsArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addCMRForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n CMRValue: ['', { validators: [] }],\r\n casNumber: ['', { validators: [] }],\r\n ecNumber: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addSubstancesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n substanceType: ['', { validators: [] }],\r\n innCode: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n containingLatex: this.displayItemData('Containing Latex?'),\r\n criticalWarningAndContraindication: this.displayItemData('Critical Warnings and Contraindications'),\r\n containingPhthalates: this.displayItemData('Containing Phthalates?'),\r\n labeledAsNotMadeWithNaturalRubber: this.displayItemData('Not made with natural rubber latex?'),\r\n mriSafetyStatus: this.displayItemData('MRI Safety Status')\r\n });\r\n\r\n this.deviceForm.setControl('criticalWarningForm', this.setCriticalWarningForm());\r\n this.deviceForm.setControl('CMRForm', this.setCMRForm());\r\n this.deviceForm.setControl('substancesForm', this.setSubstancesForm());\r\n }\r\n\r\n\r\n setSubstancesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n\r\n items = this.displayItemData('MED Human Product Types');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('SubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('SubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n innCode: c[(this.getMapInnerPathName('INN Code'))[0]],\r\n substanceType: c[(this.getMapInnerPathName('Medicinal or Medicinal Human Product Substance Type'))[0]],\r\n substanceNamesArray: this.addSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('LQV Name'))[0]],\r\n language: element[(this.getMapInnerPathName('LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n\r\n setCMRForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n items = this.displayItemData('CMR');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n CMRValue: c[(this.getMapInnerPathName('CMRValue'))[0]],\r\n casNumber: c[(this.getMapInnerPathName('CAS Number'))[0]],\r\n ecNumber: c[(this.getMapInnerPathName('EC Number'))[0]],\r\n substanceNamesArray: this.addCMRSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addCMRSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('CMR LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('CMR LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n setCriticalWarningForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let warnings: any;\r\n let commentsArray: any;\r\n let lqv: any;\r\n\r\n warnings = this.displayItemData('Critical Warning or Contraindication Value(s)');\r\n\r\n\r\n if (warnings && warnings.length > 0) {\r\n warnings.forEach((c, i) => {\r\n\r\n commentsArray = c[(this.getMapInnerPathName('Warning Comments'))[0]];\r\n\r\n if (commentsArray) {\r\n\r\n lqv = commentsArray[(this.getMapInnerPathName('Warning Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n warningValue: c[(this.getMapInnerPathName('Warning Value'))[0]],\r\n warningCommentsArray: this.addWarningComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addWarningComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('Warning Comments LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('Warning Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-device-substances-warnings-eu',\r\n templateUrl: './submission-device-substances-warnings-eu.component.html',\r\n styleUrls: ['./submission-device-substances-warnings-eu.component.css']\r\n})\r\nexport class SubmissionDeviceSubstancesWarningsEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n containingLatex: ['', { validators: [] }],\r\n criticalWarningForm: this.fb.array([this.addCriticalWarningForm()]),\r\n CMRForm: this.fb.array([this.addCMRForm()]),\r\n substancesForm: this.fb.array([this.addSubstancesForm()]),\r\n criticalWarningAndContraindication: ['', { validators: [] }],\r\n containingPhthalates: ['', { validators: [] }],\r\n mriSafetyStatus: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get criticalWarningForm(): FormGroup {\r\n return this.deviceForm.get('criticalWarningForm');\r\n }\r\n\r\n get CMRForm(): FormGroup {\r\n return this.deviceForm.get('CMRForm');\r\n }\r\n\r\n get substancesForm(): FormGroup {\r\n return this.deviceForm.get('substancesForm');\r\n }\r\n\r\n addCriticalWarningForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n warningValue: ['', { validators: [] }],\r\n warningCommentsArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addCMRForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n CMRValue: ['', { validators: [] }],\r\n casNumber: ['', { validators: [] }],\r\n ecNumber: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addSubstancesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n substanceType: ['', { validators: [] }],\r\n innCode: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n containingLatex: this.displayItemData('Containing Latex?'),\r\n criticalWarningAndContraindication: this.displayItemData('Critical Warnings and Contraindications'),\r\n containingPhthalates: this.displayItemData('Containing Phthalates?'),\r\n mriSafetyStatus: this.displayItemData('MRI Safety Status')\r\n });\r\n\r\n this.deviceForm.setControl('criticalWarningForm', this.setCriticalWarningForm());\r\n this.deviceForm.setControl('CMRForm', this.setCMRForm());\r\n this.deviceForm.setControl('substancesForm', this.setSubstancesForm());\r\n }\r\n\r\n\r\n setSubstancesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n\r\n items = this.displayItemData('MED Human Product Types');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('SubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('SubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n innCode: c[(this.getMapInnerPathName('INN Code'))[0]],\r\n substanceType: c[(this.getMapInnerPathName('Medicinal or Medicinal Human Product Substance Type'))[0]],\r\n substanceNamesArray: this.addSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('LQV Name'))[0]],\r\n language: element[(this.getMapInnerPathName('LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n\r\n setCMRForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n items = this.displayItemData('CMR');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n CMRValue: c[(this.getMapInnerPathName('CMRValue'))[0]],\r\n casNumber: c[(this.getMapInnerPathName('CAS Number'))[0]],\r\n ecNumber: c[(this.getMapInnerPathName('EC Number'))[0]],\r\n substanceNamesArray: this.addCMRSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addCMRSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('CMR LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('CMR LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n setCriticalWarningForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let warnings: any;\r\n let commentsArray: any;\r\n let lqv: any;\r\n\r\n warnings = this.displayItemData('Critical Warning or Contraindication Value(s)');\r\n\r\n\r\n if (warnings && warnings.length > 0) {\r\n warnings.forEach((c, i) => {\r\n\r\n commentsArray = c[(this.getMapInnerPathName('Warning Comments'))[0]];\r\n\r\n if (commentsArray) {\r\n\r\n lqv = commentsArray[(this.getMapInnerPathName('Warning Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n warningValue: c[(this.getMapInnerPathName('Warning Value'))[0]],\r\n warningCommentsArray: this.addWarningComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addWarningComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('Warning Comments LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('Warning Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n\r\n","import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AccordionComponent, AccordionItem } from '@syncfusion/ej2-angular-navigations';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataScopesEnum } from '../../shared/enums/dataScopes.enum';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { ICustomer, IRevisionHistory, IServiceError } from '../../shared/models/index';\r\nimport { DeviceinventoryService, StorageManagerService } from '../../shared/services/index';\r\n\r\n@Component({\r\n selector: 'app-submission-history-item',\r\n templateUrl: './submission-history-item.component.html',\r\n styleUrls: ['./submission-history-item.component.scss'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class SubmissionHistoryItemComponent implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked {\r\n\r\n userGuid: string;\r\n customer: ICustomer;\r\n itemUdi: string;\r\n itemIssuingAgency: string;\r\n revisions: IRevisionHistory[] = [];\r\n visible = false;\r\n resolverData: any[] | IServiceError;\r\n deviceMapping: any;\r\n mapArray = [];\r\n itemData: any;\r\n documentId: string;\r\n dataScope: string;\r\n defaultPropsArray: string[] = [];\r\n readOnly = true;\r\n udiDI: string;\r\n budi: string;\r\n agency: string;\r\n productSKU: string;\r\n revision: string;\r\n itemType: string;\r\n modelBUDI: string;\r\n modelAgency: string;\r\n headerVar: string;\r\n dataScopesEnum: any;\r\n sppModel = false;\r\n sppDevice = false;\r\n subscription: Subscription;\r\n accordionItemsData: any = [];\r\n public mapping = { header: 'header', content: 'content' };\r\n\r\n @ViewChild('dialog')\r\n public dialog: DialogComponent;\r\n\r\n @ViewChild('properties') accordionObj: AccordionComponent;\r\n\r\n itemTemplate: string;\r\n submissionHistoryItem = false;\r\n\r\n eudamedId: string;\r\n eudamedIdIssuingAgency: string;\r\n eudamedDi: string;\r\n eudamedDiIssuingAgency: string;\r\n showLegacy: boolean;\r\n\r\n public btnClick: EmitType = () => {\r\n this.dialog.show();\r\n }\r\n\r\n constructor (private activatedRoute: ActivatedRoute, private storage: StorageManagerService, private router: Router, private deviceInventoryService: DeviceinventoryService, private cdref: ChangeDetectorRef, private appGlobals: AppGlobals) { }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScopesEnum = DataScopesEnum;\r\n //Defaulting legacyData to false\r\n this.showLegacy = false;\r\n // Get user and customer\r\n this.getPrincipals();\r\n\r\n this.getResolverData();\r\n\r\n if (this.itemData && Object.keys(this.itemData).length) {\r\n this.udiDI = this.itemData.udiDI;\r\n this.agency = this.itemData.udiDiIssuingAgency;\r\n this.revision = this.itemData.revision;\r\n this.budi = this.itemData.budiDI;\r\n this.modelAgency = this.itemData.budiDiIssuingAgency;\r\n // productSKU comes from the device/model level. Need to check for default\r\n this.productSKU = this.displayItemData('Product SKU');\r\n\r\n // displayItemData is used to get a correct \"blank override\" value from either a default or eudamed. this.sppModel is used as a flag on the item details to display either a MNR SRN or SPP SRN for a MODEL. The value of this attribute is set on the form further below.\r\n this.sppModel = !!this.displayItemData('System or Procedure Pack Producer SRN');\r\n\r\n // check if Device is a SPP. This variable is an Input parameter for the accordion.\r\n // this.sppModel is used as a flag FOR A DEVICE and it's taken from the grid because the device details doesn't have this Model's attribute. For the Device we are not interested in the value but just the fact that the Device's model is a SPP\r\n const item = this.storage.read('sh-item');\r\n\r\n if (item) {\r\n this.sppDevice = !!item.systemProcedurePackSrn;\r\n }\r\n\r\n //Legacy\r\n this.modelBUDI = this.displayItemData('BUDI-DI');\r\n this.eudamedId = this.itemData.eudamedID;\r\n this.eudamedIdIssuingAgency = this.displayItemData('Eudamed ID Issuing Agency');\r\n this.eudamedDi = this.displayItemData('Eudamed DI');\r\n this.eudamedDiIssuingAgency = this.displayItemData('Eudamed DI Issuing Agency');\r\n \r\n }\r\n }\r\n\r\n private getResolverData() {\r\n\r\n if (this.activatedRoute.snapshot.data && this.activatedRoute.snapshot.data.itemData.length) {\r\n\r\n // Device mapping\r\n if (this.activatedRoute.snapshot.data.itemData[1] && this.activatedRoute.snapshot.data.itemData[0] !== 'error') {\r\n this.deviceMapping = this.activatedRoute.snapshot.data.itemData[0];\r\n\r\n Object.keys(this.deviceMapping).map(e => {\r\n\r\n this.mapArray.push({ key: e, value: this.deviceMapping[e] });\r\n });\r\n\r\n if (this.activatedRoute.snapshot.data.itemData[1].data && this.activatedRoute.snapshot.data.itemData[1].isSuccess) {\r\n\r\n // mock file\r\n // this.deviceInventoryService.getSubmissionItemMock().subscribe(mock => {\r\n // this.itemData = mock;\r\n // this.itemType = this.itemData.documentType;\r\n // this.headerVar = this.itemType === 'model' ? 'Model' : 'Device';\r\n // });\r\n\r\n this.itemData = this.activatedRoute.snapshot.data.itemData[1].data.result[0];\r\n this.itemType = this.itemData.documentType;\r\n this.headerVar = this.itemType === 'model' ? 'Model' : 'Device';\r\n \r\n // If legacy data is present then change the header\r\n if (this.dataScope.toLowerCase() === 'eudamed') { \r\n if (this.itemData.hasOwnProperty('eudamedID') || this.itemData.hasOwnProperty('eudamedDI')) {\r\n this.headerVar = this.itemType === 'model' ? 'Legacy Model' : 'Legacy Device';\r\n this.showLegacy = true;\r\n } \r\n } \r\n\r\n } else {\r\n this.router.navigate(['error', { message: this.appGlobals.GENERIC_ERROR_MSG }]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n displayItemData(field: string): string {\r\n\r\n let retVal: any;\r\n let prop: any;\r\n let propValue: string;\r\n let itemValuePath = [];\r\n let itemPropsPathSegment: any;\r\n let defaultPropsPathSegment: any;\r\n\r\n if (this.itemData && field) {\r\n\r\n prop = this.mapArray.find(p => p.key.toLowerCase() === field.toLowerCase());\r\n\r\n if (prop) {\r\n propValue = prop.value;\r\n\r\n if (propValue) {\r\n\r\n // Multi path value\r\n if (propValue.indexOf('/') > -1) {\r\n\r\n if (propValue.indexOf('') > -1) {\r\n\r\n propValue = propValue.replace('', this.dataScope);\r\n }\r\n\r\n if (propValue.indexOf('') > -1) {\r\n\r\n propValue = propValue.replace('', this.itemType + 'Data');\r\n }\r\n\r\n itemValuePath = propValue.split('/');\r\n\r\n if (itemValuePath && itemValuePath.length > 0) {\r\n\r\n // Top level item data\r\n itemPropsPathSegment = this.itemData;\r\n\r\n // Get Default settings to be able to use it if there is no data for the dataScope.\r\n defaultPropsPathSegment = this.itemData;\r\n\r\n itemValuePath.forEach(path => {\r\n\r\n // if dataScope segment or value is undefined check if it exists in Default.\r\n if (itemPropsPathSegment && Object.keys(itemPropsPathSegment).length) {\r\n\r\n itemPropsPathSegment = itemPropsPathSegment[path];\r\n\r\n if (path.toLowerCase() === this.dataScope.toLowerCase()) {\r\n path = 'default';\r\n }\r\n\r\n if (defaultPropsPathSegment) {\r\n defaultPropsPathSegment = defaultPropsPathSegment[path];\r\n }\r\n\r\n } else {\r\n if (defaultPropsPathSegment) {\r\n if (!Array.isArray(defaultPropsPathSegment)) {\r\n defaultPropsPathSegment = defaultPropsPathSegment[path];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n // should allow the blank space so testing it against the undefined\r\n if (itemPropsPathSegment !== undefined && itemPropsPathSegment !== null) {\r\n\r\n if (typeof itemPropsPathSegment === 'object' && !Object.keys(itemPropsPathSegment).length) {\r\n itemPropsPathSegment = '';\r\n }\r\n\r\n retVal = itemPropsPathSegment;\r\n } else {\r\n\r\n retVal = defaultPropsPathSegment;\r\n\r\n if (defaultPropsPathSegment) {\r\n this.defaultPropsArray.push(field);\r\n }\r\n }\r\n } else {\r\n\r\n // Single path value\r\n retVal = this.itemData[propValue];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n isDefault(field: string): string {\r\n\r\n return this.defaultPropsArray.includes(field) ? 'highlight-fill' : '';\r\n }\r\n\r\n private getPrincipals() {\r\n\r\n // Get the userGuid\r\n this.userGuid = this.storage.read('userGuid');\r\n\r\n if (!this.userGuid) {\r\n this.router.navigate(['error', 'User is not logged in']);\r\n }\r\n\r\n // Get the current Customer\r\n const customer = this.storage.read('currentCustomer');\r\n\r\n if (customer) {\r\n\r\n this.customer = typeof customer === 'object' ? customer : JSON.parse(customer);\r\n } else {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n }\r\n\r\n accordionCreated(event) {\r\n\r\n this.accordionObj.items[0].expanded = true;\r\n\r\n this.accordionObj.refresh();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.visible = false;\r\n }\r\n\r\n collapseAll() {\r\n\r\n this.accordionObj.items.forEach((i: AccordionItem) => {\r\n\r\n this.accordionObj.expandItem(false);\r\n });\r\n }\r\n\r\n expandAll() {\r\n\r\n this.accordionObj.items.forEach((i: AccordionItem) => {\r\n\r\n this.accordionObj.expandItem(true);\r\n });\r\n }\r\n\r\n ngAfterContentChecked() {\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n returnToList() {\r\n\r\n this.storage.remove('sh-item');\r\n this.router.navigate(['/submissions/submissionhistory']);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbTabset } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DataStateChangeEventArgs, FilterService, FilterSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { ClickEventArgs } from '@syncfusion/ej2-angular-navigations/src';\r\nimport { TextBox } from '@syncfusion/ej2-inputs';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Observable, Subscription, timer } from 'rxjs';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { ICustomer, IServiceError } from '../../shared/models/index';\r\nimport { DataUtil } from '@syncfusion/ej2-data';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { AuthorizationService, CustomerService, DeviceinventoryService, ExportDataService, SettingsService, StorageManagerService } from '../../shared/services/index';\r\nimport { BaseGridComponent } from '../base-grid/base-grid.component';\r\nimport { TooltipComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { ExportStatusEnum } from '../../shared/enums/exportStatus.enum';\r\nimport { FeatureService } from '../../shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'app-submission-history',\r\n templateUrl: './submission-history.component.html',\r\n styleUrls: ['./submission-history.component.scss'],\r\n providers: [FilterService],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\n\r\nexport class SubmissionHistoryComponent extends BaseGridComponent implements OnInit, AfterViewInit {\r\n\r\n dataAll: any;\r\n dataRecent: any;\r\n data$: Observable;\r\n dataAll$: Observable;\r\n resolverData: any[] | IServiceError;\r\n formatOptions: Object;\r\n dataScope: string;\r\n customer: ICustomer;\r\n filterSettings: FilterSettingsModel;\r\n initial = true;\r\n initialload = false;\r\n gridComplete = false;\r\n appVarId: number;\r\n selectedItemTuple: [number, number];\r\n activeTab = 'recent';\r\n tabCounterAll = 0;\r\n tabCounterRecent = 0;\r\n downloading = false;\r\n ExportStatusEnum = ExportStatusEnum;\r\n downloadTimerSubscription: Subscription;\r\n downloadInProgress = false;\r\n submissionhistoryFeatureFlag = false;\r\n\r\n @ViewChild('tabset')\r\n public tabset: NgbTabset;\r\n\r\n @ViewChild('tooltipObj') tooltipObj: TooltipComponent;\r\n\r\n @ViewChild('downloadLogTemplate', { static: true })\r\n public toolbarDownloadLogTemplate: any;\r\n\r\n constructor(public service: DeviceinventoryService,\r\n public storage: StorageManagerService, public router: Router, public activatedRoute: ActivatedRoute, \r\n public toastr: ToastrService, public cdref: ChangeDetectorRef, public authorizationService: AuthorizationService, \r\n public authenticationService: AuthenticationService, public appGlobals: AppGlobals, \r\n public exportDataService: ExportDataService, public settingsService: SettingsService, \r\n public customerService: CustomerService, public featureService: FeatureService) {\r\n\r\n super(service, storage, router, activatedRoute, toastr, cdref, authorizationService, authenticationService, \r\n appGlobals, exportDataService, settingsService, customerService, featureService);\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n\r\n dataBound(args: any) {\r\n\r\n // The grids in this component have the Menu filter enabled.\r\n // However, this filter contains an inbuilt autocomplete control\r\n // The code below creates a custom control to add a plain textbox instead of the autocomplete control.\r\n\r\n const inputObj = [];\r\n\r\n for (let x = 0; x < this.grid.columns.length; x++) {\r\n\r\n let filterBox: any;\r\n\r\n\r\n if ((this.grid.columns[x] as any).type === 'string' || (this.grid.columns[x] as any).type === null) { // create textbox for string type column only\r\n (this.grid.columns[x] as any).filter.ui = {\r\n\r\n create: (args1) => {\r\n\r\n const flValInput: HTMLElement = document.createElement('input');\r\n\r\n args1.target.appendChild(flValInput);\r\n\r\n inputObj[args1.column.field] = new TextBox({\r\n floatLabelType: 'Never',\r\n });\r\n inputObj[args1.column.field].appendTo(flValInput);\r\n\r\n filterBox = args1.target;\r\n },\r\n read: (args2) => {\r\n\r\n let isSkip;\r\n let skipInput;\r\n\r\n if (args2.column.type === 'string') {\r\n skipInput = ['>', '<', '=', '!'];\r\n\r\n for (let i = 0, value = args2.element.value; i < value.length; i++) {\r\n const val = value[i];\r\n if (skipInput.indexOf(val) > -1) {\r\n isSkip = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isSkip) {\r\n args2.fltrObj.filterByColumn(args2.column.field, args2.operator, args2.element.value);\r\n } else {\r\n\r\n this.toastr['error']('\"< > = !\" are not valid filter characters', 'Error', { timeOut: 0, closeButton: true });\r\n }\r\n },\r\n write: (args3) => {\r\n inputObj[args3.column.field].value = args3.filteredValue || '';\r\n }\r\n };\r\n }\r\n }\r\n\r\n const header = document.getElementsByClassName('e-headercell')[0];\r\n\r\n if (header) {\r\n header.classList.add('checkbox-header-manage-di');\r\n }\r\n\r\n if (this.initial && this.data && this.data.result && this.data.result.length > 0) {\r\n\r\n this.initial = false;\r\n\r\n const firstHeader = document.getElementsByClassName('e-headercell')[0];\r\n\r\n if (firstHeader) {\r\n firstHeader.classList.add('checkbox-header-manage-di');\r\n }\r\n\r\n } else {\r\n\r\n (this.grid.getContent().parentElement as any).style.display = '';\r\n\r\n if (this.initial && this.data && this.data.count === 0 && this.grid && this.grid.columns && this.grid.columns.length > 0) {\r\n\r\n this.initial = false;\r\n }\r\n }\r\n }\r\n\r\n private preExecute(state: DataStateChangeEventArgs) {\r\n\r\n if (this.resolverData[0]) {\r\n this.appDefaults = this.resolverData[0].channelGrids.find(a => a.applicationVariantId === this.appVarId).submissionHistoryGrid;\r\n\r\n this.pageOptions = { pageSize: this.appDefaults.defaultPageSize, pageCount: this.appDefaults.pageCount, pageSizes: this.appDefaults.pageSizes };\r\n\r\n } else {\r\n this.pageOptions = { pageSize: 25, pageCount: 6, pageSizes: [25, 50, 100] };\r\n }\r\n this.state = { skip: state && state.skip ? state.skip : 0, take: this.pageOptions['pageSize'], sorted: [] };\r\n }\r\n ngOnInit() {\r\n\r\n this.gridComplete = false;\r\n\r\n this.permissionsConst = this.appGlobals.permissions;\r\n\r\n this.timerInterval = this.serverSettings.hasOwnProperty('LanguageRevalidationInterval') ?\r\n +this.serverSettings.LanguageRevalidationInterval : 5000;\r\n\r\n this.filterSettings = {\r\n type: 'Menu',\r\n operators: {\r\n stringOperator: [\r\n { value: 'contains', text: 'contains' },\r\n { value: 'startsWith', text: 'starts with' },\r\n { value: 'endsWith', text: 'ends with' },\r\n { value: 'equal', text: 'equal' }\r\n ],\r\n dateOperator: [\r\n { value: 'contains', text: 'equal' }\r\n ],\r\n }\r\n };\r\n\r\n const currentCustomerStr: string = this.storage.read('currentCustomer');\r\n if (currentCustomerStr) {\r\n this.customer = typeof currentCustomerStr === 'object' ? currentCustomerStr : JSON.parse(currentCustomerStr);\r\n\r\n const userguid = this.storage.read('userGuid');\r\n }\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n if (!this.dataScope) {\r\n this.dataScope = this.customer.applicationVariants[0].applicationVariantName.toLowerCase();\r\n }\r\n\r\n this.appVarId = this.customer.applicationVariants.find(ap => ap.applicationVariantName.toLowerCase() === this.dataScope.toLowerCase()).applicationVariantId;\r\n\r\n this.downloadInProgress = this.service.submissionHistoryDownloadLogBS.getValue();\r\n\r\n this.formatOptions = { type: 'dateTime', format: 'MM/dd/yyyy hh:mm a' };\r\n\r\n this.toolbar = [{ template: this.toolbarDownloadLogTemplate, id: 'downloadlog' }, 'ColumnChooser'];\r\n\r\n // get data prepared by the resolver\r\n this.resolverData = this.activatedRoute.snapshot.data['submissionHistoryData'];\r\n\r\n this.preExecute(this.state);\r\n\r\n switch (this.dataScope) {\r\n case 'eudamed':\r\n this.sortSettings = { columns: [{ field: 'createDate', direction: 'Descending' }] };\r\n break;\r\n\r\n case 'china-udi':\r\n this.sortSettings = { columns: [{ field: 'changeDate', direction: 'Descending' }] };\r\n break;\r\n\r\n case 'southkorea-udi':\r\n this.sortSettings = { columns: [{ field: 'changeDate', direction: 'Descending' }] };\r\n break;\r\n\r\n case 'us-udi':\r\n this.sortSettings = { columns: [{ field: 'createDate', direction: 'Descending' }] };\r\n break;\r\n case 'saudiarabia-udi':\r\n this.sortSettings = { columns: [{ field: 'createDate', direction: 'Descending' }] };\r\n break;\r\n case 'australia-udi':\r\n this.sortSettings = { columns: [{ field: 'createDate', direction: 'Descending' }] };\r\n break;\r\n case 'brazil-udi':\r\n this.sortSettings = { columns: [{ field: 'createDate', direction: 'Descending' }] };\r\n break;\r\n }\r\n\r\n // getting the Most Recent data first. Pass 'false' for the 'All' parameter (last one)\r\n this.service.getFeatureFlagStatus(\"submission-history-enhanced\").subscribe((response) => {\r\n this.submissionhistoryFeatureFlag = response;\r\n if (!this.submissionhistoryFeatureFlag) {\r\n this.data$ = this.service.getSubmissionHistory(this.customer.customerId, this.dataScope, this.state, this.grid, false);\r\n this.subscription = this.data$.subscribe((response) => {\r\n this.gridComplete = false;\r\n const objects = response;\r\n this.dataRecent = DataUtil.parse.parseJson((objects as any).ObjectList);\r\n // this.dataRecent = this.resolverData[1]; // mock\r\n this.tabCounterRecent = this.dataRecent.length;\r\n\r\n // Most recent data is returned. Now getting data for the All tab. Pass 'true' for the 'All' parameter (last one)\r\n\r\n this.gridComplete = true;\r\n this.dataAll$ = this.service.getSubmissionHistory(this.customer.customerId, this.dataScope, this.state, this.grid, true);\r\n\r\n this.subscription = this.dataAll$.subscribe(responseAll => {\r\n\r\n const objectsAll = responseAll;\r\n this.dataAll = DataUtil.parse.parseJson((objectsAll as any).ObjectList);\r\n // this.dataAll = this.resolverData[1]; // mock\r\n this.tabCounterAll = this.dataAll.length;\r\n\r\n // set up the current tab and persist it for a reload\r\n if (this.storage.read('submissionHistoryTab')) {\r\n const currentTab = this.storage.read('submissionHistoryTab');\r\n\r\n if (currentTab) {\r\n\r\n this.activeTab = currentTab;\r\n\r\n if (this.tabset) {\r\n this.tabset.activeId = currentTab;\r\n }\r\n\r\n } else {\r\n if (this.tabset) {\r\n this.tabset.activeId = 'recent';\r\n }\r\n }\r\n }\r\n this.storage.remove('sh-item');\r\n this.storage.write('submissionHistoryTab', this.activeTab);\r\n\r\n this.deviceCount = this.tabset?.activeId === 'all' ? this.dataAll.length : this.dataRecent.length;\r\n\r\n const firstHeader = document.getElementsByClassName('e-headercell')[0];\r\n\r\n if (firstHeader) {\r\n firstHeader.classList.add('checkbox-header-submission-history');\r\n }\r\n\r\n this.storage.write('selectedItems', []);\r\n\r\n this.selectionOptions = { cellSelectionMode: 'Flow', type: 'Multiple', mode: 'Row', checkboxMode: 'Default', checkboxOnly: true };\r\n });\r\n\r\n });\r\n } else {\r\n this.data$ = this.service.getSubmissionHistoryData(this.state, this.grid, this.customer.customerId, this.dataScope, false);\r\n\r\n this.subscription = this.data$.subscribe((response) => {\r\n this.gridComplete = false;\r\n this.dataRecent = response;\r\n var recentCount: number = parseInt(String(response.count), 0);\r\n this.tabCounterRecent = recentCount;\r\n this.setDeviceCounter();\r\n\r\n // Most recent data is returned. Now getting data for the All tab. Pass 'true' for the 'All' parameter (last one)\r\n this.gridComplete = true;\r\n this.dataAll$ = this.service.getSubmissionHistoryData(this.state, this.grid, this.customer.customerId, this.dataScope, true);\r\n\r\n this.subscription = this.dataAll$.subscribe(responseAll => {\r\n this.dataAll = responseAll;\r\n var allCount: number = parseInt(String(responseAll.count), 0);\r\n this.tabCounterAll = allCount;\r\n\r\n // set up the current tab and persist it for a reload\r\n if (this.storage.read('submissionHistoryTab')) {\r\n const currentTab = this.storage.read('submissionHistoryTab');\r\n\r\n if (currentTab) {\r\n\r\n this.activeTab = currentTab;\r\n\r\n if (this.tabset) {\r\n this.tabset.activeId = currentTab;\r\n }\r\n\r\n } else {\r\n if (this.tabset) {\r\n this.tabset.activeId = 'recent';\r\n }\r\n }\r\n }\r\n this.storage.remove('sh-item');\r\n this.storage.write('submissionHistoryTab', this.activeTab);\r\n\r\n this.deviceCount = this.tabset?.activeId === 'all' ? allCount : recentCount;\r\n\r\n const firstHeader = document.getElementsByClassName('e-headercell')[0];\r\n\r\n if (firstHeader) {\r\n firstHeader.classList.add('checkbox-header-submission-history');\r\n }\r\n\r\n this.storage.write('selectedItems', []);\r\n\r\n this.selectionOptions = { cellSelectionMode: 'Flow', type: 'Multiple', mode: 'Row', checkboxMode: 'Default', checkboxOnly: true };\r\n });\r\n\r\n });\r\n }\r\n });\r\n //this.data$ = this.service.getSubmissionHistory(this.customer.customerId, this.dataScope, this.state, this.grid, false);\r\n\r\n\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n /**\r\n* Every time the data state changes (resize, reorder, reload, etc.) this event gets triggered\r\n* and originates the grid parameters. The parameter showInColumnChooser should be present\r\n* for all columns in the columnOptions array. Default columns should be set to false to\r\n* prevent the user from hiding them.\r\n* Called from the html on the grid's dataStateChange event\r\n* @param {DataStateChangeEventArgs} state\r\n* @returns void\r\n*/\r\n public dataStateChange(state: DataStateChangeEventArgs): void {\r\n if (this.submissionhistoryFeatureFlag) {\r\n if (this.tabset?.activeId === 'all') {\r\n this.dataAll$ = this.service.getSubmissionHistoryData(state, this.grid, this.customer.customerId, this.dataScope, true);\r\n this.subscription = this.dataAll$.subscribe((response) => { \r\n this.dataAll = response;\r\n });\r\n } else {\r\n this.data$ = this.service.getSubmissionHistoryData(state, this.grid, this.customer.customerId, this.dataScope, false);\r\n this.subscription = this.data$.subscribe((response) => { \r\n this.dataRecent = response;\r\n });\r\n }\r\n }\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n toolbarButtonAccess() {\r\n\r\n this.toolbar = [{ text: 'Download Submission Log', id: 'downloadlog', prefixIcon: 'fal fa-download' }, 'ColumnChooser'];\r\n }\r\n\r\n /**\r\n * Triggers when any grid action begins\r\n * @param {any} args\r\n */\r\n actionBegin(args: any) {\r\n\r\n const type = args.requestType;\r\n\r\n switch (type) {\r\n case 'paging':\r\n this.storeSelectedItems();\r\n break;\r\n\r\n case 'filterbeforeopen':\r\n break;\r\n case 'filtering':\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Triggers when any grid action taken (sort, page, rows/per page number)\r\n * Called from the html actionComplete event\r\n * @param {any} args\r\n */\r\n complete(args: any) {\r\n\r\n switch (args.requestType) {\r\n\r\n case 'refresh':\r\n this.setDeviceCounter();\r\n this.toolbarButtonAccess();\r\n break;\r\n case 'filtering':\r\n this.setDeviceCounter();\r\n this.selectRowsAll(false);\r\n break;\r\n case 'paging':\r\n this.persistSelectedRows();\r\n\r\n if (!this.selectAllChecked && !this.deselectAllChecked) {\r\n this.persistSelectedRows();\r\n }\r\n\r\n // if SelectAll is selected - select rows on the page on paging event\r\n if (this.selectAllChecked) {\r\n this.selectRowsAll(this.selectAllChecked);\r\n }\r\n\r\n // if SelectAll is intentionally unchecked - unselect rows - overrides persistance\r\n if (this.deselectAllChecked) {\r\n this.selectRowsAll(false);\r\n }\r\n break;\r\n case 'sorting':\r\n break;\r\n case 'filterafteropen':\r\n\r\n if (args.columnType === 'date') {\r\n args.filterModel.dlgDiv.querySelector(\r\n '.e-datepicker'\r\n ).ej2_instances[0].format = 'MM/dd/y';\r\n }\r\n break;\r\n }\r\n }\r\n\r\n toolbarClick(args: ClickEventArgs): void {\r\n\r\n switch (args.item.id) {\r\n\r\n case 'downloadlog':\r\n\r\n this.downloadLog();\r\n break;\r\n }\r\n }\r\n\r\n getDownloadInProgress(): boolean {\r\n\r\n const retVal = this.service.submissionHistoryDownloadLogBS.getValue();\r\n\r\n return retVal;\r\n }\r\n\r\n downloadLog() {\r\n\r\n let fileName: string;\r\n let downloadLogTaskGuid;\r\n\r\n const items: object[] = [];\r\n\r\n // Prevent the user from attempting to kick off another Log download in the event they get impatient.\r\n if (this.service.submissionHistoryDownloadLogBS.getValue()) {\r\n this.toastr.warning(\"Please wait, a download is currently in progress.\")\r\n return;\r\n }\r\n\r\n if (this.selectAllChecked) {\r\n\r\n this.downloadInProgress = true;\r\n this.service.submissionHistoryDownloadLogBS.next(this.downloadInProgress);\r\n\r\n // generate a filter criteria for the backend to process rows on the backend\r\n this.queryCriteria = this.generateSelectAllCriteria('downloadlog');\r\n\r\n this.postActionReset();\r\n\r\n // call 1, with or without filter. Get back guid.\r\n this.service.downloadSubmissionLogAll(this.dataScope, this.queryCriteria, this.tabset?.activeId === 'all').subscribe(response => {\r\n\r\n if (response['isSuccess'] && response['data']) {\r\n\r\n downloadLogTaskGuid = response['data'];\r\n\r\n // the loading process has started\r\n if (downloadLogTaskGuid) {\r\n\r\n // Initiate the download process timer\r\n this.downloadTimerSubscription = timer(0, this.timerInterval).subscribe(() => {\r\n\r\n let responseData;\r\n let dowloadProgressStatus = 0;\r\n\r\n this.service.getDownloadLogStatus(downloadLogTaskGuid).subscribe(response => {\r\n\r\n // check data if success\r\n if (response['isSuccess'] && response['data']) {\r\n\r\n responseData = response['data'];\r\n dowloadProgressStatus = responseData['statusCode'];\r\n\r\n // variable to stop \"dancing dots\" on the toolbar button\r\n this.downloadInProgress = dowloadProgressStatus !== ExportStatusEnum.Completed && dowloadProgressStatus !== ExportStatusEnum.Exception;\r\n\r\n // if status is either completed or exception stop sending http calls, unsubscribe.\r\n if (dowloadProgressStatus === ExportStatusEnum.Completed || dowloadProgressStatus === ExportStatusEnum.Exception) {\r\n\r\n this.downloadInProgress = false;\r\n this.service.submissionHistoryDownloadLogBS.next(this.downloadInProgress);\r\n\r\n // completed or exception - unsubscribe and reset\r\n // file is created or an exception occurred - stop checking\r\n if (this.downloadTimerSubscription) {\r\n this.downloadTimerSubscription.unsubscribe();\r\n this.downloadInProgress = false;\r\n this.service.submissionHistoryDownloadLogBS.next(this.downloadInProgress);\r\n }\r\n\r\n if (dowloadProgressStatus === ExportStatusEnum.Completed) {\r\n\r\n // task completed, get the file from the location\r\n this.downloadLogFile(responseData['fileName'], responseData['filePath']);\r\n }\r\n\r\n if (dowloadProgressStatus === ExportStatusEnum.Exception) {\r\n\r\n this.toastr.error(`Error downloading Submission Log`, '', { timeOut: 0, closeButton: true });\r\n }\r\n }\r\n }\r\n })\r\n\r\n }\r\n );\r\n }\r\n } else {\r\n this.toastr.error(`Error downloading Validation Log`, '', { timeOut: 0, closeButton: true });\r\n }\r\n\r\n this.postActionReset();\r\n });\r\n\r\n\r\n } else {\r\n\r\n if (this.selectedItems && this.selectedItems.length) {\r\n\r\n const today = new Date();\r\n\r\n fileName = `SubmissionLog_${ String(today.getFullYear()).padStart(2, '0') }${ String(today.getMonth() + 1).padStart(2, '0') }${ String(today.getDate()).padStart(2, '0') }${ String(today.getHours()).padStart(2, '0') }${ String(today.getMinutes()).padStart(2, '0') }.csv`;\r\n\r\n this.selectedItems = this.storage.read('selectedItems');\r\n\r\n if (this.selectedItems && this.selectedItems.length) {\r\n\r\n this.selectedItems.forEach(i => {\r\n\r\n const item = {};\r\n\r\n item['submissionId'] = i;\r\n\r\n items.push(item);\r\n });\r\n }\r\n\r\n if (items.length > 0) {\r\n\r\n const paramsContainer = {\r\n submissionInputs: items,\r\n channel: this.dataScope,\r\n reportFilename: fileName,\r\n reportFormat: 'CSV'\r\n };\r\n\r\n this.downloading = true;\r\n\r\n this.service.getSubmissionLog(paramsContainer)\r\n .subscribe(response => {\r\n\r\n if (response['size'] && response['type']) {\r\n\r\n // IE\r\n if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {\r\n (window.navigator as any).msSaveOrOpenBlob(response, fileName);\r\n } else {\r\n\r\n // non-IE\r\n const URL = window.URL || (window).webkitURL;\r\n const downloadUrl = URL.createObjectURL(response);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = fileName;\r\n link.click();\r\n\r\n this.downloading = false;\r\n this.clearGridSelection();\r\n }\r\n } else {\r\n\r\n this.toastr.error(`Error downloading Submission Log`, '', { timeOut: 0, closeButton: true });\r\n }\r\n });\r\n }\r\n } else {\r\n\r\n this.toastr.warning(`No Submission(s) selected.`, '', { closeButton: true });\r\n }\r\n }\r\n }\r\n\r\n // override the parent because this grid doesn't have an \"id\" field\r\n storeSelectedItems() {\r\n\r\n // for some reason getSelectedRecords() returns all visible rows, even if nothing is selected\r\n // however the getSelectedRows() returns correctly the selected rows but not it the structure we need from the getSelectedRecords()\r\n // So, need to check the getSelectedRows to make sure that rows have been selected. Looks like Syncfusino bug. When any row is really selected,\r\n // both function return correct number of rows.\r\n\r\n if (this.grid.getSelectedRows() && this.grid.getSelectedRows().length) {\r\n const selectedRecords = this.grid.getSelectedRecords();\r\n\r\n if (selectedRecords.length > 0) {\r\n\r\n // add selected records\r\n selectedRecords.forEach(element => {\r\n\r\n if (!this.selectedItems.includes(element['submissionId'])) {\r\n this.selectedItems.push(element['submissionId']);\r\n }\r\n });\r\n }\r\n\r\n this.storage.write('selectedItems', this.selectedItems);\r\n } else {\r\n\r\n // when no rows selected the above block is skipped and the storage is not updated and previously selected rows are persisted.\r\n let storedSelectedItems = this.storage.read('selectedItems');\r\n\r\n // get records on the page and remove each of them from the storage so they are not persisted\r\n const records = this.grid.getCurrentViewRecords();\r\n\r\n if (records && records.length) {\r\n records.forEach(item => {\r\n\r\n const rowIndex = storedSelectedItems.findIndex(x => x === item['submissionId']);\r\n\r\n if (rowIndex >= 0) {\r\n storedSelectedItems.splice(rowIndex, 1)\r\n }\r\n });\r\n }\r\n\r\n // update the storage\r\n this.storage.write('selectedItems', storedSelectedItems);\r\n }\r\n }\r\n\r\n // override the parent because this grid doesn't have an \"id\" field\r\n persistSelectedRows() {\r\n\r\n this.grid.selectRows([]);\r\n\r\n const selectedItemIndexes: number[] = [];\r\n\r\n const selectedItems = this.storage.read('selectedItems');\r\n\r\n if (selectedItems && selectedItems.length > 0) {\r\n\r\n const gridObj = this.grid;\r\n\r\n const records = gridObj.getCurrentViewRecords();\r\n\r\n selectedItems.forEach(item => {\r\n\r\n const row = records.find(r => r['submissionId'] === item);\r\n\r\n if (row) {\r\n\r\n const index = records.indexOf(row);\r\n\r\n if (index >= 0) {\r\n selectedItemIndexes.push(index);\r\n }\r\n }\r\n });\r\n\r\n if (selectedItemIndexes.length > 0) {\r\n\r\n this.grid.selectRows(selectedItemIndexes);\r\n }\r\n }\r\n }\r\n\r\n tabChanged(event) {\r\n\r\n // variable to initialize the ColumnChooser\r\n this.initialLoad = true;\r\n\r\n // deselect rows from the previous tab\r\n this.selectRowsAll(false);\r\n\r\n this.storage.write('submissionHistoryTab', event.nextId);\r\n this.activeTab = event.nextId;\r\n this.deviceCount = 0;\r\n if (this.submissionhistoryFeatureFlag) {\r\n this.selectedItems = [];\r\n this.state = {};\r\n this.preExecute(this.state);\r\n\r\n if (event.nextId === 'all') {\r\n this.dataAll$ = this.service.getSubmissionHistoryData(this.state, this.grid, this.customer.customerId, this.dataScope, true);\r\n this.subscription = this.dataAll$.subscribe(responseAll => {\r\n this.dataAll = responseAll;\r\n var allCount: number = parseInt(String(responseAll.count), 0);\r\n this.tabCounterAll = allCount;\r\n this.deviceCount = allCount;\r\n this.storage.write('selectedItems', []);\r\n });\r\n } else {\r\n this.data$ = this.service.getSubmissionHistoryData(this.state, this.grid, this.customer.customerId, this.dataScope, false);\r\n this.subscription = this.data$.subscribe((response) => {\r\n this.dataRecent = response;\r\n var recentCount: number = parseInt(String(response.count), 0);\r\n this.tabCounterRecent = recentCount;\r\n this.deviceCount = recentCount;\r\n this.storage.write('selectedItems', []);\r\n });\r\n }\r\n }\r\n else {\r\n this.deviceCount = event.nextId === 'all' ? this.dataAll.length : this.dataRecent.length;\r\n this.storage.write('selectedItems', []);\r\n }\r\n }\r\n\r\n itemClicked(data) {\r\n\r\n if (data) {\r\n this.storage.write('sh-item', data);\r\n this.router.navigate(['submissions/submissionhistoryitem']);\r\n }\r\n }\r\n\r\n itemSubmissionType(data): string {\r\n\r\n let retVal;\r\n\r\n retVal = data.submissionType === 'Basic UDI-DI Update' ? 'model' : 'device';\r\n\r\n return retVal;\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // clear the selected items storage\r\n this.storage.write('selectedItems', []);\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-identification-classification-us',\r\n templateUrl: './submission-identification-classification-us.component.html',\r\n styleUrls: ['./submission-identification-classification-us.component.css']\r\n})\r\n\r\nexport class SubmissionIdentificationClassificationUsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.itemType = this.itemData.documentType;\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n udiDI: ['', { validators: [] }],\r\n agency: ['', { validators: [] }],\r\n budi: ['', { validators: [] }],\r\n bAgency: ['', { validators: [] }],\r\n quantityOfDevice: ['', { validators: [] }],\r\n unitOfUseDi: ['', { validators: [] }],\r\n unitOfUseDiAgency: ['', { validators: [] }],\r\n referenceOrCatalogNumber: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n isDeviceDirectlyMarked: ['', { validators: [] }],\r\n directMarkingDI: ['', { validators: [] }],\r\n directMarkingDIAgency: ['', { validators: [] }],\r\n isExpirationDate: ['', { validators: [] }],\r\n isManufacturingDate: ['', { validators: [] }],\r\n isLotOrBatchNumber: ['', { validators: [] }],\r\n isSerialNumber: ['', { validators: [] }],\r\n isSwVersion: ['', { validators: [] }],\r\n urlForAdditionalInfo: ['', { validators: [] }],\r\n tradeNamesForm: this.fb.array([this.addTradeNamesForm()]),\r\n deviceDescriptionForm: this.fb.array([this.addDeviceDescriptionForm()]),\r\n cndCodesForm: this.fb.array([this.addCndCodesForm()]),\r\n emdnCodesForm: this.fb.array([this.addEmdnCodesForm()]),\r\n GMDNform: this.fb.array([this.addGMDNform()]),\r\n secondaryDiForm: this.fb.array([this.addSecondaryDiForm()]),\r\n classificationCode: ['', { validators: [] }],\r\n originalClassificationCode: ['', { validators: [] }],\r\n hasDirectMarking: ['', { validators: [] }],\r\n isDirectMarkingDiSameAsPrimaryDi: ['', { validators: [] }],\r\n diDataCarrierTypesForm: this.fb.array([this.addDiDataCarrierTypesForm()]),\r\n versionOrModel: ['', { validators: [] }],\r\n softwareAsAMedicalDevice: ['', { validators: [] }],\r\n productGenericNames: ['', { validators: [] }],\r\n controlledByDonationIdentificationNumber: ['', { validators: [] }],\r\n fdaProductCodesForm: this.fb.array([this.addFdaProductCodesForm()]),\r\n previousDiForm: this.fb.array([this.addPreviousDiForm()]),\r\n labelerDuns: ['', { validators: [] }],\r\n directMarkingExempt: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addFdaProductCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n fdaProductCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPreviousDiForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n diValue: ['', { validators: [] }],\r\n diAgency: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addDiDataCarrierTypesForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get previousDiForm(): FormGroup {\r\n return this.deviceForm.get('previousDiForm');\r\n }\r\n\r\n get fdaProductCodesForm(): FormGroup {\r\n return this.deviceForm.get('fdaProductCodesForm');\r\n }\r\n\r\n get GMDNform(): FormGroup {\r\n return this.deviceForm.get('GMDNform');\r\n }\r\n\r\n get diDataCarrierTypesForm(): FormGroup {\r\n return this.deviceForm.get('diDataCarrierTypesForm');\r\n }\r\n\r\n get tradeNamesForm(): FormGroup {\r\n return this.deviceForm.get('tradeNamesForm');\r\n }\r\n\r\n get deviceDescriptionForm(): FormGroup {\r\n return this.deviceForm.get('deviceDescriptionForm');\r\n }\r\n\r\n get cndCodesForm(): FormGroup {\r\n return this.deviceForm.get('cndCodesForm');\r\n }\r\n\r\n get emdnCodesForm(): FormGroup {\r\n return this.deviceForm.get('emdnCodesForm');\r\n }\r\n\r\n get secondaryDiForm(): FormGroup {\r\n return this.deviceForm.get('secondaryDiForm');\r\n }\r\n\r\n addGMDNform(): FormGroup {\r\n\r\n return this.fb.group({\r\n name: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addTradeNamesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCndCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n cndCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addEmdnCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n emdnCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addDeviceDescriptionForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSecondaryDiForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n diValue: ['', { validators: [] }],\r\n diAgency: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n udiDI: this.displayItemData('Primary DI'),\r\n agency: this.displayItemData('Primary DI Issuing Agency'),\r\n budi: this.displayItemData('Basic UDI-DI'),\r\n bAgency: this.displayItemData('Basic UDI-DI Issuing Agency'),\r\n quantityOfDevice: this.displayItemData('Quantity of Device'),\r\n unitOfUseDi: this.displayItemData('Unit of Use DI'),\r\n unitOfUseDiAgency: this.displayItemData('Unit of Use DI Issuing Agency'),\r\n referenceOrCatalogNumber: this.displayItemData('Catalog or Reference Number'),\r\n isDeviceDirectlyMarked: this.displayItemData('Is the Device Directly Marked?'),\r\n directMarkingDI: this.displayItemData('Direct Marking DI'),\r\n directMarkingDIAgency: this.displayItemData('Direct Marking DI Issuing Agency'),\r\n isExpirationDate: this.displayItemData('Controlled by Expiration Date?'),\r\n isManufacturingDate: this.displayItemData('Controlled by Manufacturing Date?'),\r\n isLotOrBatchNumber: this.displayItemData('Controlled by Lot or Batch Number?'),\r\n isSerialNumber: this.displayItemData('Controlled by Serial Number?'),\r\n isSwVersion: this.displayItemData('Controlled By Software Version?'),\r\n urlForAdditionalInfo: this.displayItemData('URL for Additional Information'),\r\n classificationCode: this.displayItemData('NMPA Classification Code'),\r\n originalClassificationCode: this.displayItemData('NMPA Original Classification Code'),\r\n hasDirectMarking: this.displayItemData('Has Direct Marking DI?'),\r\n isDirectMarkingDiSameAsPrimaryDi: this.displayItemData('Is Direct Marking DI same as Primary DI?'),\r\n versionOrModel: this.displayItemData('Version or Model'),\r\n softwareAsAMedicalDevice: this.displayItemData('Software as a Medical Device'),\r\n productGenericNames: this.displayItemData('Product Name/Generic Name'),\r\n controlledByDonationIdentificationNumber: this.displayItemData('Controlled by Donation Identification Number?'),\r\n labelerDuns: this.displayItemData('Labeler DUNS Number'),\r\n directMarkingExempt: this.displayItemData('Device Subject to Direct Marking (DM), but Excepted?'),\r\n });\r\n\r\n this.deviceForm.setControl('tradeNamesForm', this.setTradeNamesForm());\r\n this.deviceForm.setControl('deviceDescriptionForm', this.setDeviceDescriptionForm());\r\n this.deviceForm.setControl('cndCodesForm', this.setCndCodesForm());\r\n this.deviceForm.setControl('emdnCodesForm', this.setEmdnCodesForm());\r\n this.deviceForm.setControl('secondaryDiForm', this.setSecondaryDiForm());\r\n this.deviceForm.setControl('diDataCarrierTypesForm', this.setDiDataCarrierTypesForm());\r\n this.deviceForm.setControl('GMDNform', this.setGMDNform());\r\n this.deviceForm.setControl('previousDiForm', this.setPreviousDiForm());\r\n this.deviceForm.setControl('fdaProductCodesForm', this.setFdaProductCodesForm());\r\n }\r\n\r\n setFdaProductCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('FDA Product Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n fdaProductCode: code[(this.getMapInnerPathName('FDA Product Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPreviousDiForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Previous DI');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n diValue: c[(this.getMapInnerPathName('Previous DI Value'))[0]],\r\n diAgency: c[(this.getMapInnerPathName('Previous DI Issuing Agency'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setGMDNform(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('GMDN Code(s)');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n code: c[(this.getMapInnerPathName('GMDN Code'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setDiDataCarrierTypesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('DI Data Carrier Type');\r\n\r\n if (types && types.length) {\r\n types.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('DI Data Carrier Type Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setTradeNamesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let names: any;\r\n\r\n names = this.displayItemData('Brand or Trade Name(s)');\r\n\r\n if (names && names.length > 0) {\r\n names.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Brand or Trade Name Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setDeviceDescriptionForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Device Description');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Description Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Device Description Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setCndCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('CND Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n cndCode: code[(this.getMapInnerPathName('CND Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setEmdnCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('EMDN Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n emdnCode: code[(this.getMapInnerPathName('EMDN Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSecondaryDiForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Secondary DI');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n diValue: c[(this.getMapInnerPathName('Secondary DI Value'))[0]],\r\n diAgency: c[(this.getMapInnerPathName('Secondary DI Issuing Agency'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\nimport { StorageManagerService} from '../../shared/services/storage-manager.service';\r\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-submission-identity-classification-ch',\r\n templateUrl: './submission-identity-classification-ch.component.html',\r\n styleUrls: ['./submission-identity-classification-ch.component.scss']\r\n})\r\nexport class SubmissionIdentityClassificationChComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n this.itemType = this.itemData.documentType;\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n udiDI: ['', { validators: [] }],\r\n agency: ['', { validators: [] }],\r\n budi: ['', { validators: [] }],\r\n bAgency: ['', { validators: [] }],\r\n quantityOfDevice: ['', { validators: [] }],\r\n unitOfUseDi: ['', { validators: [] }],\r\n unitOfUseDiAgency: ['', { validators: [] }],\r\n referenceOrCatalogNumber: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n isDeviceDirectlyMarked: ['', { validators: [] }],\r\n directMarkingDI: ['', { validators: [] }],\r\n directMarkingDIAgency: ['', { validators: [] }],\r\n isExpirationDate: ['', { validators: [] }],\r\n isManufacturingDate: ['', { validators: [] }],\r\n isLotOrBatchNumber: ['', { validators: [] }],\r\n isSerialNumber: ['', { validators: [] }],\r\n isSwVersion: ['', { validators: [] }],\r\n urlForAdditionalInfo: ['', { validators: []}],\r\n tradeNamesForm: this.fb.array([this.addTradeNamesForm()]),\r\n deviceDescriptionForm: this.fb.array([this.addDeviceDescriptionForm()]),\r\n cndCodesForm: this.fb.array([this.addCndCodesForm()]),\r\n secondaryDiForm: this.fb.array([this.addSecondaryDiForm()]),\r\n classificationCode: ['', { validators: [] }],\r\n originalClassificationCode: ['', { validators: [] }],\r\n hasDirectMarking: ['', { validators: [] }],\r\n isDirectMarkingDiSameAsPrimaryDi: ['', { validators: [] }],\r\n diDataCarrierTypesForm: this.fb.array([this.addDiDataCarrierTypesForm()]),\r\n versionOrModel: ['', { validators: [] }],\r\n softwareAsAMedicalDevice: ['', { validators: [] }],\r\n productGenericNames: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addDiDataCarrierTypesForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get diDataCarrierTypesForm(): FormGroup {\r\n return this.deviceForm.get('diDataCarrierTypesForm');\r\n }\r\n\r\n get tradeNamesForm(): FormGroup {\r\n return this.deviceForm.get('tradeNamesForm');\r\n }\r\n\r\n get deviceDescriptionForm(): FormGroup {\r\n return this.deviceForm.get('deviceDescriptionForm');\r\n }\r\n\r\n get cndCodesForm(): FormGroup {\r\n return this.deviceForm.get('cndCodesForm');\r\n }\r\n\r\n get secondaryDiForm(): FormGroup {\r\n return this.deviceForm.get('secondaryDiForm');\r\n }\r\n\r\n addTradeNamesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCndCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n cndCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addDeviceDescriptionForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSecondaryDiForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n diValue: ['', { validators: [] }],\r\n diAgency: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n udiDI: this.displayItemData('Primary DI'),\r\n agency: this.displayItemData('Primary DI Issuing Agency'),\r\n budi: this.displayItemData('Basic UDI-DI'),\r\n bAgency: this.displayItemData('Basic UDI-DI Issuing Agency'),\r\n quantityOfDevice: this.displayItemData('Quantity of Device'),\r\n unitOfUseDi: this.displayItemData('Unit of Use DI'),\r\n unitOfUseDiAgency: this.displayItemData('Unit of Use DI Issuing Agency'),\r\n referenceOrCatalogNumber: this.displayItemData('Catalog or Reference Number'),\r\n isDeviceDirectlyMarked: this.displayItemData('Is the Device Directly Marked?'),\r\n directMarkingDI: this.displayItemData('Direct Marking DI'),\r\n directMarkingDIAgency: this.displayItemData('Direct Marking DI Issuing Agency'),\r\n isExpirationDate: this.displayItemData('Controlled by Expiration Date?'),\r\n isManufacturingDate: this.displayItemData('Controlled by Manufacturing Date?'),\r\n isLotOrBatchNumber: this.displayItemData('Controlled by Lot or Batch Number?'),\r\n isSerialNumber: this.displayItemData('Controlled by Serial Number?'),\r\n isSwVersion: this.displayItemData('Controlled By Software Version?'),\r\n urlForAdditionalInfo: this.displayItemData('URL for Additional Information'),\r\n classificationCode: this.displayItemData('NMPA Classification Code'),\r\n originalClassificationCode: this.displayItemData('NMPA Original Classification Code'),\r\n hasDirectMarking: this.displayItemData('Has Direct Marking DI?'),\r\n isDirectMarkingDiSameAsPrimaryDi: this.displayItemData('Is Direct Marking DI same as Primary DI?'),\r\n versionOrModel: this.displayItemData('Version or Model'),\r\n softwareAsAMedicalDevice: this.displayItemData('Software as a Medical Device'),\r\n productGenericNames: this.displayItemData('Product Name/Generic Name')\r\n });\r\n\r\n this.deviceForm.setControl('tradeNamesForm', this.setTradeNamesForm());\r\n this.deviceForm.setControl('deviceDescriptionForm', this.setDeviceDescriptionForm());\r\n this.deviceForm.setControl('cndCodesForm', this.setCndCodesForm());\r\n this.deviceForm.setControl('secondaryDiForm', this.setSecondaryDiForm());\r\n this.deviceForm.setControl('diDataCarrierTypesForm', this.setDiDataCarrierTypesForm());\r\n }\r\n\r\n setDiDataCarrierTypesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('DI Data Carrier Type');\r\n\r\n if (types && types.length) {\r\n types.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('DI Data Carrier Type Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setTradeNamesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let names: any;\r\n\r\n names = this.displayItemData('Brand or Trade Name(s)');\r\n\r\n if (names && names.length > 0) {\r\n names.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Brand or Trade Name Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Brand or Trade Name Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setDeviceDescriptionForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Device Description');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Description Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Device Description Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setCndCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('CND Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n cndCode: code[(this.getMapInnerPathName('CND Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSecondaryDiForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Secondary DI');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n diValue: c[(this.getMapInnerPathName('Secondary DI Value'))[0]],\r\n diAgency: c[(this.getMapInnerPathName('Secondary DI Issuing Agency'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-submission-identity-classification-sk',\r\n templateUrl: './submission-identity-classification-sk.component.html',\r\n styleUrls: ['./submission-identity-classification-sk.component.scss']\r\n})\r\nexport class SubmissionIdentityClassificationSKComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n this.itemType = this.itemData.documentType;\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n udiDI: ['', { validators: [] }],\r\n agency: ['', { validators: [] }],\r\n quantityOfDevice: ['', { validators: [] }],\r\n isExpirationDate: ['', { validators: [] }],\r\n isManufacturingDate: ['', { validators: [] }],\r\n isLotOrBatchNumber: ['', { validators: [] }],\r\n isSerialNumber: ['', { validators: [] }],\r\n isSwVersion: ['', { validators: [] }],\r\n versionOrModel: ['', { validators: [] }],\r\n softwareAsAMedicalDevice: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get deviceDescriptionForm(): FormGroup {\r\n return this.deviceForm.get('deviceDescriptionForm');\r\n }\r\n\r\n addDeviceDescriptionForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n udiDI: this.displayItemData('Primary DI'),\r\n agency: this.displayItemData('Primary DI Issuing Agency'),\r\n quantityOfDevice: this.displayItemData('Quantity of Device'),\r\n isExpirationDate: this.displayItemData('Controlled by Expiration Date?'),\r\n isManufacturingDate: this.displayItemData('Controlled by Manufacturing Date?'),\r\n isLotOrBatchNumber: this.displayItemData('Controlled by Lot or Batch Number?'),\r\n isSerialNumber: this.displayItemData('Controlled by Serial Number?'),\r\n isSwVersion: this.displayItemData('Controlled By Software Version?'),\r\n versionOrModel: this.displayItemData('Version or Model'),\r\n softwareAsAMedicalDevice: this.displayItemData('Software as a Medical Device')\r\n });\r\n\r\n this.deviceForm.setControl('deviceDescriptionForm', this.setDeviceDescriptionForm());\r\n }\r\n\r\n\r\n setDeviceDescriptionForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Device Description');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Description Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Device Description Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService} from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-indentification-classification-eu',\r\n templateUrl: './submission-indentification-classification-eu.component.html',\r\n styleUrls: ['./submission-indentification-classification-eu.component.css']\r\n})\r\n\r\nexport class SubmissionIndentificationClassificationEuComponent extends BaseAccordionComponent implements OnInit {\r\n @Input() showLegacy: boolean = false;\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.itemType = this.itemData.documentType;\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n udiDI: ['', { validators: [] }],\r\n agency: ['', { validators: [] }],\r\n budi: ['', { validators: [] }],\r\n bAgency: ['', { validators: [] }],\r\n quantityOfDevice: ['', { validators: [] }],\r\n unitOfUseDi: ['', { validators: [] }],\r\n unitOfUseDiAgency: ['', { validators: [] }],\r\n referenceOrCatalogNumber: ['', { validators: [] }],\r\n highIntencityRadiation: ['', { validators: [] }],\r\n equipmentToDestroyTissue: ['', { validators: [] }],\r\n intendedForInjection: ['', { validators: [] }],\r\n isDeviceDirectlyMarked: ['', { validators: [] }],\r\n directMarkingDI: ['', { validators: [] }],\r\n directMarkingDIAgency: ['', { validators: [] }],\r\n isExpirationDate: ['', { validators: [] }],\r\n isManufacturingDate: ['', { validators: [] }],\r\n isLotOrBatchNumber: ['', { validators: [] }],\r\n isSerialNumber: ['', { validators: [] }],\r\n isSwVersion: ['', { validators: [] }],\r\n urlForAdditionalInfo: ['', { validators: []}],\r\n tradeNamesForm: this.fb.array([this.addTradeNamesForm()]),\r\n deviceDescriptionForm: this.fb.array([this.addDeviceDescriptionForm()]),\r\n cndCodesForm: this.fb.array([this.addCndCodesForm()]),\r\n emdnCodesForm: this.fb.array([this.addEmdnCodesForm()]),\r\n secondaryDiForm: this.fb.array([this.addSecondaryDiForm()]),\r\n classificationCode: ['', { validators: [] }],\r\n originalClassificationCode: ['', { validators: [] }],\r\n hasDirectMarking: ['', { validators: [] }],\r\n isDirectMarkingDiSameAsPrimaryDi: ['', { validators: [] }],\r\n diDataCarrierTypesForm: this.fb.array([this.addDiDataCarrierTypesForm()]),\r\n versionOrModel: ['', { validators: [] }],\r\n softwareAsAMedicalDevice: ['', { validators: [] }],\r\n productGenericNames: ['', { validators: [] }],\r\n eudamedId: ['', { validators: [] }],\r\n eudamedIdIssuingAgency: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n addDiDataCarrierTypesForm(): FormGroup {\r\n return this.fb.group({\r\n value: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n get diDataCarrierTypesForm(): FormGroup {\r\n return this.deviceForm.get('diDataCarrierTypesForm');\r\n }\r\n\r\n get tradeNamesForm(): FormGroup {\r\n return this.deviceForm.get('tradeNamesForm');\r\n }\r\n\r\n get deviceDescriptionForm(): FormGroup {\r\n return this.deviceForm.get('deviceDescriptionForm');\r\n }\r\n\r\n get cndCodesForm(): FormGroup {\r\n return this.deviceForm.get('cndCodesForm');\r\n }\r\n\r\n get emdnCodesForm(): FormGroup {\r\n return this.deviceForm.get('emdnCodesForm');\r\n }\r\n\r\n get secondaryDiForm(): FormGroup {\r\n return this.deviceForm.get('secondaryDiForm');\r\n }\r\n\r\n addTradeNamesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCndCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n cndCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addEmdnCodesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n emdnCode: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addDeviceDescriptionForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addSecondaryDiForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n diValue: ['', { validators: [] }],\r\n diAgency: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n\r\n udiDI: this.displayItemData('Primary DI'),\r\n agency: this.displayItemData('Primary DI Issuing Agency'),\r\n budi: this.displayItemData('Basic UDI-DI'),\r\n bAgency: this.displayItemData('Basic UDI-DI Issuing Agency'),\r\n quantityOfDevice: this.displayItemData('Quantity of Device'),\r\n unitOfUseDi: this.displayItemData('Unit of Use DI'),\r\n unitOfUseDiAgency: this.displayItemData('Unit of Use DI Issuing Agency'),\r\n referenceOrCatalogNumber: this.displayItemData('Catalog or Reference Number'),\r\n isDeviceDirectlyMarked: this.displayItemData('Is the Device Directly Marked?'),\r\n directMarkingDI: this.displayItemData('Direct Marking DI'),\r\n directMarkingDIAgency: this.displayItemData('Direct Marking DI Issuing Agency'),\r\n isExpirationDate: this.displayItemData('Controlled by Expiration Date?'),\r\n isManufacturingDate: this.displayItemData('Controlled by Manufacturing Date?'),\r\n isLotOrBatchNumber: this.displayItemData('Controlled by Lot or Batch Number?'),\r\n isSerialNumber: this.displayItemData('Controlled by Serial Number?'),\r\n isSwVersion: this.displayItemData('Controlled By Software Version?'),\r\n urlForAdditionalInfo: this.displayItemData('URL for Additional Information'),\r\n classificationCode: this.displayItemData('NMPA Classification Code'),\r\n originalClassificationCode: this.displayItemData('NMPA Original Classification Code'),\r\n hasDirectMarking: this.displayItemData('Has Direct Marking DI?'),\r\n isDirectMarkingDiSameAsPrimaryDi: this.displayItemData('Is Direct Marking DI same as Primary DI?'),\r\n versionOrModel: this.displayItemData('Version or Model'),\r\n softwareAsAMedicalDevice: this.displayItemData('Software as a Medical Device'),\r\n productGenericNames: this.displayItemData('Product Name/Generic Name'),\r\n eudamedId: this.displayItemData('Eudamed ID'),\r\n eudamedIdIssuingAgency: this.displayItemData('Eudamed ID Issuing Agency')\r\n });\r\n\r\n this.deviceForm.setControl('tradeNamesForm', this.setTradeNamesForm());\r\n this.deviceForm.setControl('deviceDescriptionForm', this.setDeviceDescriptionForm());\r\n this.deviceForm.setControl('cndCodesForm', this.setCndCodesForm());\r\n this.deviceForm.setControl('emdnCodesForm', this.setEmdnCodesForm());\r\n this.deviceForm.setControl('secondaryDiForm', this.setSecondaryDiForm());\r\n this.deviceForm.setControl('diDataCarrierTypesForm', this.setDiDataCarrierTypesForm());\r\n }\r\n\r\n setDiDataCarrierTypesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let types: any;\r\n\r\n types = this.displayItemData('DI Data Carrier Type');\r\n\r\n if (types && types.length) {\r\n types.forEach(c => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('DI Data Carrier Type Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setTradeNamesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let names: any;\r\n\r\n names = this.displayItemData('Brand or Trade Name(s)');\r\n\r\n if (names && names.length > 0) {\r\n names.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Brand or Trade Name Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Brand or Trade Name Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setDeviceDescriptionForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Device Description');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Device Description Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Device Description Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setCndCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('CND Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n cndCode: code[(this.getMapInnerPathName('CND Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setEmdnCodesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('EMDN Code');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((code, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n emdnCode: code[(this.getMapInnerPathName('EMDN Code Value'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setSecondaryDiForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n\r\n items = this.displayItemData('Secondary DI');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n diValue: c[(this.getMapInnerPathName('Secondary DI Value'))[0]],\r\n diAgency: c[(this.getMapInnerPathName('Secondary DI Issuing Agency'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n ViewEncapsulation,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n AfterContentChecked\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n StorageManagerService,\r\n DeviceinventoryService\r\n} from '../../shared/services/index';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport {\r\n ICustomer,\r\n IRevisionHistory,\r\n IServiceError\r\n} from '../../shared/models/index';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { AccordionComponent } from '@syncfusion/ej2-angular-navigations';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { AccordionItem } from '@syncfusion/ej2-navigations';\r\nimport { AppGlobals } from '../../shared/globals/appGlobals';\r\nimport { DataScopesEnum } from '../../shared/enums/dataScopes.enum';\r\n\r\n@Component({\r\n selector: 'app-submission-item-details',\r\n templateUrl: './submission-item-details.component.html',\r\n styleUrls: ['./submission-item-details.component.scss'],\r\n animations: [fadeInOut],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class SubmissionItemDetailsComponent\r\n implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked {\r\n userGuid: string;\r\n customer: ICustomer;\r\n itemUdi: string;\r\n itemIssuingAgency: string;\r\n revisions: IRevisionHistory[] = [];\r\n revisionNumber: number;\r\n submissionGuid: string;\r\n subscription: Subscription;\r\n visible = false;\r\n resolverData: any[] | IServiceError;\r\n\r\n target = '#modalTarget';\r\n position: object = { X: 'center', Y: 'center' };\r\n modalWidth = '30%';\r\n modalHeight = 'auto';\r\n animationSettings: Object = { effect: 'Zoom' };\r\n isModal = true;\r\n deviceMapping: any;\r\n mapArray = [];\r\n itemData: any;\r\n dataScope: string;\r\n defaultPropsArray: string[] = [];\r\n readOnly = true;\r\n udiDI: string;\r\n budi: string;\r\n agency: string;\r\n productSKU: string;\r\n itemType: string;\r\n modelBUDI: string;\r\n modelAgency: string;\r\n headerVar: string;\r\n dataScopesEnum: any;\r\n deviceForm: FormGroup;\r\n sppModel = false;\r\n sppDevice = false;\r\n\r\n accordionItemsData: any = [];\r\n public mapping = { header: 'header', content: 'content' };\r\n\r\n @ViewChild('dialog', { static: true })\r\n public dialog: DialogComponent;\r\n\r\n @ViewChild('properties') accordionObj: AccordionComponent;\r\n\r\n itemTemplate: string;\r\n eudamedId: string;\r\n eudamedIdIssuingAgency: string;\r\n eudamedDi: string;\r\n eudamedDiIssuingAgency: string;\r\n showLegacy: boolean;\r\n public btnClick: EmitType = () => {\r\n this.dialog.show();\r\n }\r\n\r\n constructor (\r\n private activatedRoute: ActivatedRoute,\r\n private storage: StorageManagerService,\r\n private deviceInventoryService: DeviceinventoryService,\r\n private router: Router,\r\n private cdref: ChangeDetectorRef,\r\n private appGlobals: AppGlobals\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScopesEnum = DataScopesEnum;\r\n //Defaulting legacyData to false\r\n this.showLegacy = false;\r\n // Get user and customer\r\n this.getPrincipals();\r\n\r\n this.getResolverData();\r\n\r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n private getResolverData() {\r\n if (this.activatedRoute.snapshot.data && this.activatedRoute.snapshot.data.itemData.length) {\r\n\r\n // Device mapping\r\n if (this.activatedRoute.snapshot.data.itemData[0]) {\r\n this.deviceMapping = this.activatedRoute.snapshot.data.itemData[0];\r\n Object.keys(this.deviceMapping).map(e => {\r\n this.mapArray.push({\r\n key: e,\r\n value: this.deviceMapping[e]\r\n });\r\n });\r\n }\r\n\r\n this.activatedRoute.queryParams.subscribe(params => { \r\n // the sppItem param is sent with the query string from the grid. Used only as a flag for indication of an SPP Device\r\n this.sppDevice = params.sppItem === 'true' ? true : false;\r\n this.itemType = this.activatedRoute.snapshot.params.type;\r\n const modelRevision = this.activatedRoute.snapshot.params.modelrevision;\r\n const deviceRevision = this.activatedRoute.snapshot.params.devicerevision; \r\n this.revisionNumber = this.itemType === 'model' ? modelRevision : deviceRevision;\r\n this.submissionGuid = params.id\r\n\r\n if (this.submissionGuid && this.customer.customerId) {\r\n\r\n this.deviceInventoryService.getSubmissionItemDetails(this.itemType, this.submissionGuid).subscribe((res: any) => {\r\n\r\n this.itemData = res;\r\n\r\n if (res && res.data && res.data.result && res.data.result.length) {\r\n this.itemData = res.data.result[0];\r\n\r\n // get values from the displayItemData vs the Response because this function process overrides\r\n this.udiDI = this.displayItemData('Primary DI');\r\n this.revisionNumber = +this.displayItemData('Revision Number');\r\n this.budi = this.displayItemData('Basic UDI-DI');\r\n this.agency = this.displayItemData('Primary DI Issuing Agency');\r\n this.productSKU = this.displayItemData('Product SKU');\r\n this.modelBUDI = this.displayItemData('BUDI-DI');\r\n this.modelAgency = this.displayItemData('BUDI-DI Issuing Agency');\r\n //Legacy\r\n this.eudamedId = this.itemData.eudamedID;\r\n this.eudamedIdIssuingAgency = this.displayItemData('Eudamed ID Issuing Agency');\r\n this.eudamedDi = this.displayItemData('Eudamed DI');\r\n this.eudamedDiIssuingAgency = this.displayItemData('Eudamed DI Issuing Agency');\r\n\r\n // this.sppModel is used only as a flag, not interested in the value here. The value will be used on the Identification tab component\r\n this.sppModel = !!this.displayItemData('System or Procedure Pack Producer SRN');\r\n\r\n if (this.itemData) {\r\n this.headerVar = this.itemType === 'model' ? 'Model' : 'Device';\r\n // If legacy data is present then change the header\r\n if (this.dataScope.toLowerCase() === 'eudamed') {\r\n if (this.itemData.hasOwnProperty('eudamedID') || this.itemData.hasOwnProperty('eudamedDI')) {\r\n this.headerVar = this.itemType === 'model' ? 'Legacy Model' : 'Legacy Device';\r\n this.showLegacy = true;\r\n }\r\n }\r\n const docId = this.itemData['id'];\r\n\r\n if (docId) {\r\n this.deviceInventoryService.getRevisionHistory(docId, this.customer.customerId).subscribe((revData: any) => {\r\n this.revisions = revData.data;\r\n });\r\n }\r\n }\r\n } else {\r\n this.router.navigate(['error', { message: this.appGlobals.GENERIC_ERROR_MSG }]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n displayItemData(field: string): string {\r\n let retVal: any;\r\n let prop: any;\r\n let propValue: string;\r\n let itemValuePath = [];\r\n let itemPropsPathSegment: any;\r\n let defaultPropsPathSegment: any;\r\n\r\n if (this.itemData && field) {\r\n prop = this.mapArray.find(\r\n p => p.key.toLowerCase() === field.toLowerCase()\r\n );\r\n\r\n if (prop) {\r\n propValue = prop.value;\r\n\r\n if (propValue) {\r\n // Multi path value\r\n if (propValue.indexOf('/') > -1) {\r\n if (propValue.indexOf('') > -1) {\r\n propValue = propValue.replace(\r\n '',\r\n this.dataScope\r\n );\r\n }\r\n\r\n if (propValue.indexOf('') > -1) {\r\n propValue = propValue.replace(\r\n '',\r\n this.itemType + 'Data'\r\n );\r\n }\r\n\r\n itemValuePath = propValue.split('/');\r\n\r\n if (itemValuePath && itemValuePath.length > 0) {\r\n // Top level item data\r\n itemPropsPathSegment = this.itemData;\r\n\r\n // Get Default settings to be able to use it if no data is for the dataScope.\r\n defaultPropsPathSegment = this.itemData;\r\n\r\n itemValuePath.forEach(path => {\r\n // if dataScope segment or value is undefined check if it exists in Default.\r\n if (itemPropsPathSegment && Object.keys(itemPropsPathSegment).length) {\r\n itemPropsPathSegment =\r\n itemPropsPathSegment[path];\r\n\r\n if (\r\n path.toLowerCase() ===\r\n this.dataScope.toLowerCase()\r\n ) {\r\n path = 'default';\r\n }\r\n\r\n if (defaultPropsPathSegment) {\r\n defaultPropsPathSegment =\r\n defaultPropsPathSegment[path];\r\n }\r\n } else {\r\n if (defaultPropsPathSegment) {\r\n if (\r\n !Array.isArray(\r\n defaultPropsPathSegment\r\n )\r\n ) {\r\n defaultPropsPathSegment =\r\n defaultPropsPathSegment[path];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n // should allow the blank space so testing it against the undefined\r\n if (itemPropsPathSegment !== undefined && itemPropsPathSegment !== null) {\r\n\r\n if (typeof itemPropsPathSegment === 'object' && !Object.keys(itemPropsPathSegment).length) {\r\n itemPropsPathSegment = '';\r\n }\r\n\r\n retVal = itemPropsPathSegment;\r\n } else {\r\n\r\n retVal = defaultPropsPathSegment;\r\n\r\n if (defaultPropsPathSegment) {\r\n this.defaultPropsArray.push(field);\r\n }\r\n }\r\n } else {\r\n // Single path value\r\n retVal = this.itemData[propValue];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n isDefault(field: string): string {\r\n return this.defaultPropsArray.includes(field) ? 'highlight-fill' : '';\r\n }\r\n\r\n private getPrincipals() {\r\n // Get the userGuid\r\n this.userGuid = this.storage.read('userGuid');\r\n\r\n if (!this.userGuid) {\r\n this.router.navigate(['error', 'User is not logged in']);\r\n }\r\n\r\n // Get the current Customer\r\n const customer = this.storage.read('currentCustomer');\r\n\r\n if (customer) {\r\n this.customer = typeof customer === 'object' ? customer : JSON.parse(customer);\r\n\r\n } else {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n }\r\n\r\n accordionCreated(event) {\r\n this.accordionObj.items[0].expanded = true; // mock item number\r\n\r\n this.accordionObj.refresh();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.visible = false;\r\n }\r\n\r\n returnToInventory() {\r\n this.router.navigate(['inventory']);\r\n }\r\n\r\n // Show the Revision History (retrieved above)\r\n displayRevisionHistory(event) {\r\n this.visible = true;\r\n this.dialog.show();\r\n }\r\n\r\n public onOverlayClick: EmitType = () => {\r\n this.visible = false;\r\n this.dialog.hide();\r\n }\r\n\r\n collapseAll() {\r\n this.accordionObj.items.forEach((i: AccordionItem) => {\r\n this.accordionObj.expandItem(false);\r\n });\r\n }\r\n\r\n expandAll() {\r\n this.accordionObj.items.forEach((i: AccordionItem) => {\r\n this.accordionObj.expandItem(true);\r\n });\r\n }\r\n\r\n revisionHistoryClose(event) {\r\n this.visible = false;\r\n this.dialog.hide();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-model-clinical-investigation-eu',\r\n templateUrl: './submission-model-clinical-investigation-eu.component.html',\r\n styleUrls: ['./submission-model-clinical-investigation-eu.component.css']\r\n})\r\nexport class SubmissionModelClinicalInvestigationEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n\r\n referencesForm: this.fb.array([this.addReferencesForm()]),\r\n certificateForm: this.fb.array([this.addCertificateForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get referencesForm(): FormGroup {\r\n return this.deviceForm.get('referencesForm');\r\n }\r\n\r\n get certificateForm(): FormGroup {\r\n return this.deviceForm.get('certificateForm');\r\n }\r\n\r\n addReferencesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n investigationNumber: ['', { validators: [] }],\r\n applicableCountry: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addCertificateForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n certType: ['', { validators: [] }],\r\n certNumber: ['', { validators: [] }],\r\n certRevisionNumber: ['', { validators: [] }],\r\n certBody: ['', { validators: [] }],\r\n certExpDate: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.setControl('referencesForm', this.setReferencesForm());\r\n this.deviceForm.setControl('certificateForm', this.setCertificateForm());\r\n }\r\n\r\n\r\n setReferencesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let refs: any;\r\n\r\n refs = this.displayItemData('Clinical Investigation References');\r\n\r\n if (refs && refs.length > 0) {\r\n refs.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n investigationNumber: c[(this.getMapInnerPathName('Clinical Investigation Reference Number'))[0]],\r\n applicableCountry: c[(this.getMapInnerPathName('Non-EU Applicable Countries'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setCertificateForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let certificates: any;\r\n\r\n certificates = this.displayItemData('Certificates');\r\n\r\n if (certificates && certificates.length > 0) {\r\n certificates.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n certType: c[(this.getMapInnerPathName('Certificate Type'))[0]],\r\n certNumber: c[(this.getMapInnerPathName('Certificate Number'))[0]],\r\n certRevisionNumber: c[(this.getMapInnerPathName('Certificate Revision Number'))[0]],\r\n certBody: c[(this.getMapInnerPathName('Notified Body ID'))[0]],\r\n certExpDate: c[(this.getMapInnerPathName('Expiry Date'))[0]],\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService} from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-submission-model-group-characteristics-eu',\r\n templateUrl: './submission-model-group-characteristics-eu.component.html',\r\n styleUrls: ['./submission-model-group-characteristics-eu.component.css']\r\n})\r\nexport class SubmissionModelGroupCharacteristicsEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n reusableSurgical: ['', { validators: [] }],\r\n measuringFunction: ['', { validators: [] }],\r\n activePowered: ['', { validators: [] }],\r\n implantable: ['', { validators: [] }],\r\n administeringMedicine: ['', { validators: [] }],\r\n containsMedicinalProductSubstance: ['', { validators: [] }],\r\n containingAnimalTissues: ['', { validators: [] }],\r\n containingHumanTissues: ['', { validators: [] }],\r\n forRiskClassImplantable: ['', { validators: [] }],\r\n containsBloodOrPlasmaSubstance: ['', { validators: [] }],\r\n medPurposeForm: this.fb.array([this.addMedPurposeForm()]),\r\n containsMicrobialSubstances: ['', { validators: [] }],\r\n companionDiagnostic: ['', { validators: [] }],\r\n nearPatientTesting: ['', { validators: [] }],\r\n patientSelfTesting: ['', { validators: [] }],\r\n reagent: ['', { validators: [] }],\r\n professionalTesting: ['', { validators: [] }],\r\n instrument: ['', { validators: [] }],\r\n ivdKit: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get medPurposeForm(): FormGroup {\r\n return this.deviceForm.get('medPurposeForm');\r\n }\r\n\r\n addMedPurposeForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n value: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n setMedPurposeForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Medical Purpose of System or Procedure Pack?');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n value: c[(this.getMapInnerPathName('Med Purpose Value'))[0]],\r\n language: c[(this.getMapInnerPathName('Med Purpose Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n reusableSurgical: this.displayItemData('Reusable Surgical Instrument?'),\r\n measuringFunction: this.displayItemData('Measuring Function?'),\r\n implantable: this.displayItemData('Implantable?'),\r\n administeringMedicine: this.displayItemData('Administer or Remove a Medicinal Substance?'),\r\n activePowered: this.displayItemData('Active Device?'),\r\n containsMedicinalProductSubstance: this.displayItemData('Presence of a Medicinal Product Substance?'),\r\n containsBloodOrPlasmaSubstance: this.displayItemData('Presence of a Medicinal Product Substance Derived from Human Blood or Plasma?'),\r\n containingAnimalTissues: this.displayItemData('Presence of Animal Tissues, Cells, or Derivatives?'),\r\n containingHumanTissues: this.displayItemData('Presence of Human Tissues, Cells, or Derivatives?'),\r\n forRiskClassImplantable: this.displayItemData('For Risk Class IIb implantable?'),\r\n containsMicrobialSubstances: this.displayItemData('Presence of Cells or Substances of Microbial Origin?'),\r\n companionDiagnostic: this.displayItemData('Companion Diagnostic?'),\r\n nearPatientTesting: this.displayItemData('Near Patient Testing?'),\r\n patientSelfTesting: this.displayItemData('Patient Self Testing?'),\r\n reagent: this.displayItemData('Reagent?'),\r\n professionalTesting: this.displayItemData('Professional Testing?'),\r\n instrument: this.displayItemData('Instrument?'),\r\n ivdKit: this.displayItemData('IVD Kit?')\r\n });\r\n\r\n this.deviceForm.setControl('medPurposeForm', this.setMedPurposeForm());\r\n }\r\n}\r\n\r\n","\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService} from '../../shared/services/index';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-model-indentification-classification-eu',\r\n templateUrl: './submission-model-indentification-classification-eu.component.html',\r\n styleUrls: ['./submission-model-indentification-classification-eu.component.css']\r\n})\r\nexport class SubmissionModelIndentificationClassificationEuComponent extends BaseAccordionComponent implements OnInit {\r\n @Input() showLegacy: boolean = false;\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.itemType = this.itemData.documentType;\r\n this.dataScope = this.storage.read('dataScope');\r\n this.itemDetails = location.pathname.includes('/itemdetails');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n budi: ['', { validators: [] }],\r\n bAgency: ['', { validators: [] }],\r\n applicableLegislation: ['', { validators: [] }],\r\n deviceRiskClass: ['', { validators: [] }],\r\n deviceModel: ['', { validators: [] }],\r\n deviceName: ['', { validators: [] }],\r\n manufacturerSRN: ['', { validators: [] }],\r\n multiComponentDeviceType: ['', { validators: [] }],\r\n specialDeviceType: ['', { validators: [] }],\r\n sppProducerSRN: ['', { validators: [] }],\r\n sppType: ['', { validators: [] }],\r\n authRepSRN: ['', { validators: [] }],\r\n eudamedDI: ['', { validators: [] }],\r\n eudamedDiIssuingAgency: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n\r\n patchForms() {\r\n this.deviceForm.patchValue({\r\n budi: this.displayItemData('BUDI-DI'),\r\n bAgency: this.displayItemData('BUDI-DI Issuing Agency'),\r\n applicableLegislation: this.displayItemData('Applicable Legislation'),\r\n deviceRiskClass: this.displayItemData('Device Risk Class'),\r\n deviceModel: this.displayItemData('Device Model'),\r\n deviceName: this.displayItemData('Device Name'),\r\n manufacturerSRN: this.displayItemData('Manufacturer SRN'),\r\n multiComponentDeviceType: this.displayItemData('Multi-Component Device Type'),\r\n specialDeviceType: this.displayItemData('Special Device Type'),\r\n sppProducerSRN: this.displayItemData('System or Procedure Pack Producer SRN'),\r\n sppType: this.displayItemData('SPPType'),\r\n authRepSRN: this.displayItemData('Authorized Representative SRN'),\r\n eudamedDI: this.displayItemData('Eudamed DI'),\r\n eudamedDiIssuingAgency: this.displayItemData('Eudamed DI Issuing Agency')\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-packaging',\r\n templateUrl: './submission-packaging.component.html',\r\n styleUrls: ['./submission-packaging.component.scss']\r\n})\r\nexport class SubmissionPackagingComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n packageForm: this.fb.array([this.addPackageForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get packageForm(): FormGroup {\r\n return this.deviceForm.get('packageForm');\r\n }\r\n\r\n addPackageForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n packageDI: ['', { validators: [] }],\r\n packageAgency: ['', { validators: [] }],\r\n containsPackageDI: ['', { validators: [] }],\r\n containsPackageAgency: ['', { validators: [] }],\r\n packageQty: ['', { validators: [] }],\r\n packageStatusValue: ['', { validators: [] }],\r\n packageType: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.setControl('packageForm', this.setPackageForm());\r\n }\r\n\r\n setPackageForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let packages: any;\r\n\r\n packages = this.displayItemData('Packages');\r\n\r\n if (packages && packages.length > 0) {\r\n packages.forEach((c, i) => {\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n packageDi: c[(this.getMapInnerPathName('Package DI'))[0]],\r\n packageAgency: c[(this.getMapInnerPathName('Package DI Issuing Agency'))[0]],\r\n packageQty: c[(this.getMapInnerPathName('Package Quantity'))[0]],\r\n containingDI: c[(this.getMapInnerPathName('Contains Package DI'))[0]] ? c[(this.getMapInnerPathName('Contains Package DI'))[0]][(this.getMapInnerPathName('Contains Package DI'))[1]] : '',\r\n containingAgency: c[(this.getMapInnerPathName('Contains Package DI'))[0]] ? c[(this.getMapInnerPathName('Contains Package DI Issuing Agency'))[0]][(this.getMapInnerPathName('Contains Package DI Issuing Agency'))[1]] : '',\r\n packageStatusValue: c[(this.getMapInnerPathName('Package Status'))[0]] ? c[(this.getMapInnerPathName('Package Status'))[0]][(this.getMapInnerPathName('Package Status'))[1]] : '',\r\n packageType: c[(this.getMapInnerPathName('Package Type'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-product-designer-eu',\r\n templateUrl: './submission-product-designer-eu.component.html',\r\n styleUrls: ['./submission-product-designer-eu.component.css']\r\n})\r\nexport class SubmissionProductDesignerEuComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n productDesignerSRN: ['', { validators: [] }],\r\n streetName: ['', { validators: [] }],\r\n streetNumber: ['', { validators: [] }],\r\n addressComplement: ['', { validators: [] }],\r\n poBox: ['', { validators: [] }],\r\n city: ['', { validators: [] }],\r\n postalCode: ['', { validators: [] }],\r\n country: ['', { validators: [] }],\r\n designerForm: this.fb.array([this.addDesignerForm()]),\r\n publicContactForm: this.fb.array([this.addPublicContactForm()])\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get designerForm(): FormGroup {\r\n return this.deviceForm.get('designerForm');\r\n }\r\n\r\n get publicContactForm(): FormGroup {\r\n return this.deviceForm.get('publicContactForm');\r\n }\r\n\r\n addDesignerForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n name: ['', { validators: [] }],\r\n language: ['', { validators: [] }]\r\n });\r\n }\r\n\r\n addPublicContactForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n email: ['', { validators: [] }],\r\n phone: [this.fb.array([])]\r\n });\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n productDesignerSRN: this.displayItemData('Product Designer SRN'),\r\n streetName: this.displayItemData('Street Name'),\r\n streetNumber: this.displayItemData('Street Number'),\r\n addressComplement: this.displayItemData('Address Complement'),\r\n poBox: this.displayItemData('PO Box'),\r\n city: this.displayItemData('City'),\r\n postalCode: this.displayItemData('Postal Code'),\r\n country: this.displayItemData('Country')\r\n });\r\n\r\n this.deviceForm.setControl('designerForm', this.setDesignerForm());\r\n this.deviceForm.setControl('publicContactForm', this.setPublicContactForm());\r\n\r\n }\r\n\r\n setDesignerForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Product Designer Names');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n name: c[(this.getMapInnerPathName('PD Name'))[0]],\r\n language: c[(this.getMapInnerPathName('PD Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n setPublicContactForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let item: any;\r\n\r\n item = this.displayItemData('Product Designer Contacts');\r\n\r\n if (item && item.length > 0) {\r\n item.forEach((c, i) => {\r\n formArray.push(\r\n\r\n this.fb.group({\r\n email: c[(this.getMapInnerPathName('Email'))[0]],\r\n telephone: c[(this.getMapInnerPathName('Telephone'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-submission-substances-warnings',\r\n templateUrl: './submission-substances-warnings.component.html',\r\n styleUrls: ['./submission-substances-warnings.component.scss']\r\n})\r\nexport class SubmissionSubstancesWarningsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n containingLatex: ['', { validators: [] }],\r\n criticalWarningForm: this.fb.array([this.addCriticalWarningForm()]),\r\n CMRForm: this.fb.array([this.addCMRForm()]),\r\n substancesForm: this.fb.array([this.addSubstancesForm()]),\r\n criticalWarningAndContraindication: ['', { validators: [] }],\r\n containingPhthalates: ['', { validators: [] }],\r\n mriSafetyStatus: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get criticalWarningForm(): FormGroup {\r\n return this.deviceForm.get('criticalWarningForm');\r\n }\r\n\r\n get CMRForm(): FormGroup {\r\n return this.deviceForm.get('CMRForm');\r\n }\r\n\r\n get substancesForm(): FormGroup {\r\n return this.deviceForm.get('substancesForm');\r\n }\r\n\r\n addCriticalWarningForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n warningValue: ['', { validators: [] }],\r\n warningCommentsArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addCMRForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n CMRValue: ['', { validators: [] }],\r\n casNumber: ['', { validators: [] }],\r\n ecNumber: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addSubstancesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n substanceType: ['', { validators: [] }],\r\n innCode: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n containingLatex: this.displayItemData('Containing Latex?'),\r\n criticalWarningAndContraindication: this.displayItemData('Critical Warnings and Contraindications'),\r\n containingPhthalates: this.displayItemData('Containing Phthalates?'),\r\n mriSafetyStatus: this.displayItemData('MRI Safety Status')\r\n });\r\n\r\n this.deviceForm.setControl('criticalWarningForm', this.setCriticalWarningForm());\r\n this.deviceForm.setControl('CMRForm', this.setCMRForm());\r\n this.deviceForm.setControl('substancesForm', this.setSubstancesForm());\r\n }\r\n\r\n\r\n setSubstancesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n\r\n items = this.displayItemData('MED Human Product Types');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('SubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('SubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n innCode: c[(this.getMapInnerPathName('INN Code'))[0]],\r\n substanceType: c[(this.getMapInnerPathName('Medicinal or Medicinal Human Product Substance Type'))[0]],\r\n substanceNamesArray: this.addSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('LQV Name'))[0]],\r\n language: element[(this.getMapInnerPathName('LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n\r\n setCMRForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n items = this.displayItemData('CMR');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n CMRValue: c[(this.getMapInnerPathName('CMRValue'))[0]],\r\n casNumber: c[(this.getMapInnerPathName('CAS Number'))[0]],\r\n ecNumber: c[(this.getMapInnerPathName('EC Number'))[0]],\r\n substanceNamesArray: this.addCMRSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addCMRSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('CMR LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('CMR LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n setCriticalWarningForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let warnings: any;\r\n let commentsArray: any;\r\n let lqv: any;\r\n\r\n warnings = this.displayItemData('Critical Warning or Contraindication Value(s)');\r\n\r\n\r\n if (warnings && warnings.length > 0) {\r\n warnings.forEach((c, i) => {\r\n\r\n commentsArray = c[(this.getMapInnerPathName('Warning Comments'))[0]];\r\n\r\n if (commentsArray) {\r\n\r\n lqv = commentsArray[(this.getMapInnerPathName('Warning Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n warningValue: c[(this.getMapInnerPathName('Warning Value'))[0]],\r\n warningCommentsArray: this.addWarningComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addWarningComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('Warning Comments LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('Warning Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n\r\n","\r\nimport { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { ChartComponent, IAccTextRenderEventArgs, ILoadedEventArgs, FontModel, ColumnModel, IMouseEventArgs } from '@syncfusion/ej2-angular-charts';\r\nimport { Subscription } from 'rxjs';\r\nimport { CustomerService } from '../../shared/services/customer.service';\r\nimport { DataScopesEnum, SubmissionStatusEnum } from '../../shared/enums/index';\r\nimport { ISubmittedDevicesChart } from '../../shared/models/index';\r\nimport { Utilities } from '../../shared/services/utilities';\r\n\r\n@Component({\r\n selector: 'app-submitted-devices-chart',\r\n templateUrl: './submitted-devices-chart.component.html',\r\n styleUrls: ['./submitted-devices-chart.component.scss']\r\n})\r\nexport class SubmittedDevicesChartComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n dataScopeEnum: any;\r\n submissionStatusEnum: any;\r\n\r\n // chart init variables\r\n primaryXAxis: Object;\r\n primaryYAxis: Object;\r\n chartData: Object[] = [];\r\n fullChartData: Object[] = [];\r\n marker: Object;\r\n lineMarker: Object;\r\n enableAnimation = true;\r\n legendSettings: Object;\r\n chartTitle: string;\r\n tooltip: Object;\r\n titleStyle: Object;\r\n chartArea: Object;\r\n cornerRadius: Object;\r\n pointColorMapping: string;\r\n maxCountForYaxis = 0;\r\n border: Object;\r\n margin: Object;\r\n emptySeries: Object;\r\n fontModel: FontModel;\r\n columnModel: ColumnModel;\r\n radius: Object;\r\n chartComplete = false;\r\n\r\n @Input() customer;\r\n @Input() user: any;\r\n\r\n submittedDevicesData: ISubmittedDevicesChart[];\r\n subsciption: Subscription\r\n\r\n @ViewChildren(ChartComponent) chartsQuery: QueryList;\r\n\r\n //@ViewChild('chart-container-submitted')\r\n chart: ChartComponent;\r\n\r\n inProcessStatuses: string[] = [];\r\n successStatuses: string[] = [];\r\n failStatuses: string[] = [];\r\n fullChannelData: {};\r\n seriesBorder: {};\r\n subTitle: string;\r\n subtitleStyle: Object;\r\n\r\n\r\n constructor (private cdRef: ChangeDetectorRef, private customerService: CustomerService) {\r\n // no action is required in the constructor\r\n }\r\n ngOnDestroy(): void {\r\n if (this.subsciption) {\r\n this.subsciption.unsubscribe();\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n\r\n this.chart = this.chartsQuery.last;\r\n if (this.chart) {\r\n this.chart.background = '#fff';\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.dataScopeEnum = DataScopesEnum;\r\n this.submissionStatusEnum = SubmissionStatusEnum;\r\n\r\n this.prepareDataForChart();\r\n }\r\n\r\n prepareDataForChart() {\r\n\r\n if (this.customer) {\r\n this.subsciption = this.customerService.getCustomerSubmittedDevicesChartData({ 'clientId': this.customer.customerId, 'userGuid': this.user.userguid }).subscribe(data => {\r\n this.submittedDevicesData = data;\r\n\r\n this.inProcessStatuses = [\r\n this.submissionStatusEnum.readyForApproval.toLowerCase(),\r\n this.submissionStatusEnum.submissionApproved.toLowerCase(),\r\n this.submissionStatusEnum.submissionInProcess.toLowerCase(),\r\n this.submissionStatusEnum.pendingModelRegistration.toLowerCase(),\r\n this.submissionStatusEnum.submissionRejected.toLowerCase()\r\n ]\r\n\r\n this.successStatuses = [\r\n this.submissionStatusEnum.registered.toLowerCase(),\r\n this.submissionStatusEnum.submissionPassed.toLowerCase(),\r\n this.submissionStatusEnum.submitted.toLowerCase()\r\n ]\r\n\r\n this.failStatuses = [\r\n this.submissionStatusEnum.submissionFailed.toLowerCase(),\r\n this.submissionStatusEnum.haSystemError.toLowerCase(),\r\n this.submissionStatusEnum.invalidCredentials.toLowerCase(),\r\n this.submissionStatusEnum.internalSystemError.toLowerCase(),\r\n this.submissionStatusEnum.hungRecord.toLowerCase()\r\n ]\r\n\r\n // sort array in descending order to get the highest validation count for the yAxis\r\n if (this.submittedDevicesData && this.submittedDevicesData.length) {\r\n\r\n // create a deep independent copy of the original array so it didn't get affected by any action\r\n let sortedArray: ISubmittedDevicesChart[] = [...this.submittedDevicesData];\r\n\r\n // replace null with 'undefined'\r\n sortedArray.forEach(element => {\r\n if (element.submissionStatus === null) {\r\n element.submissionStatus = 'undefined';\r\n }\r\n });\r\n\r\n // Check data for the current customer application variants\r\n if (this.customer.applicationVariants && this.customer.applicationVariants.length) {\r\n\r\n this.customer.applicationVariants.forEach(channel => {\r\n\r\n let channelData = {};\r\n // create a deep independent copy\r\n const channelArray: ISubmittedDevicesChart[] = [...this.submittedDevicesData].filter((x: ISubmittedDevicesChart) => x.channel.toLowerCase() === channel.applicationVariantName.toLowerCase());\r\n\r\n if (channelArray && channelArray.length) {\r\n\r\n // handling null in validation status that breaks the exectution\r\n channelArray.forEach((element: ISubmittedDevicesChart) => {\r\n\r\n // standardaize the Channel names\r\n switch (element.channel.toLowerCase()) {\r\n case 'eudamed':\r\n element.channel = this.dataScopeEnum.EUDAMED;\r\n break;\r\n\r\n case 'china-udi':\r\n element.channel = this.dataScopeEnum.CHINA;\r\n break;\r\n\r\n case 'southkorea-udi':\r\n element.channel = this.dataScopeEnum.SKOREA;\r\n break;\r\n\r\n case 'us-udi':\r\n element.channel = this.dataScopeEnum.US;\r\n break;\r\n\r\n case 'saudiarabia-udi':\r\n element.channel = this.dataScopeEnum.SA;\r\n break;\r\n case 'australia-udi':\r\n element.channel = this.dataScopeEnum.AU;\r\n break;\r\n case 'brazil-udi':\r\n element.channel = this.dataScopeEnum.BRAZIL;\r\n break;\r\n }\r\n });\r\n\r\n channelData = {\r\n 'channel': channel.applicationVariantName,\r\n 'inprocess': this.getStatusCount(channelArray, this.inProcessStatuses),\r\n 'success': this.getStatusCount(channelArray, this.successStatuses),\r\n 'fail': this.getStatusCount(channelArray, this.failStatuses)\r\n };\r\n\r\n this.fullChannelData = this.getFullChannelData(channelArray);\r\n\r\n } else {\r\n channelData = {\r\n 'channel': channel.applicationVariantName,\r\n 'inprocess': 0,\r\n 'success': 0,\r\n 'fail': 0\r\n };\r\n }\r\n\r\n this.chartData.push(channelData);\r\n this.fullChartData.push(this.fullChannelData);\r\n });\r\n\r\n // sort descending by submissionStatusCount in order to set the Y Axis to the highest level\r\n let valuesArray = [];\r\n let copied: Object = [...this.chartData];\r\n\r\n Object.values(copied).forEach(channel => {\r\n\r\n let numbers = [];\r\n //Remove the \"channel\" key from the Object and convert them all to numbers, just in case\r\n numbers = Object.values(channel).splice(1).map(x => +x);\r\n\r\n // sort Descending\r\n numbers.sort(Utilities.compareDesc);\r\n valuesArray.push(numbers[0]);\r\n });\r\n\r\n // get the higest number for the YAxis\r\n valuesArray.sort(Utilities.compareDesc);\r\n this.maxCountForYaxis = valuesArray.length ? valuesArray[0] : 0;\r\n }\r\n }\r\n\r\n this.initChart();\r\n\r\n this.chartComplete = true;\r\n });\r\n }\r\n }\r\n\r\n\r\n getFullChannelData(channelArray: ISubmittedDevicesChart[]): {} {\r\n\r\n let fullChannelData: any;\r\n\r\n if (channelArray && channelArray.length) {\r\n fullChannelData = {\r\n 'channel': channelArray[0].channel,\r\n 'readyForApproval': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.readyForApproval.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.readyForApproval.toLowerCase()).submissionStatusCount : 0,\r\n 'submissionApproved': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionApproved.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionApproved.toLowerCase()).submissionStatusCount : 0,\r\n 'submissionRejected': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionRejected.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionRejected.toLowerCase()).submissionStatusCount : 0,\r\n 'submissionInProcess': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionInProcess.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionInProcess.toLowerCase()).submissionStatusCount : 0,\r\n 'submitted': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submitted.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submitted.toLowerCase()).submissionStatusCount : 0,\r\n 'registered': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.registered.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.registered.toLowerCase()).submissionStatusCount : 0,\r\n 'submissionFailed': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionFailed.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionFailed.toLowerCase()).submissionStatusCount : 0,\r\n 'pendingModelRegistration': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.pendingModelRegistration.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.pendingModelRegistration.toLowerCase()).submissionStatusCount : 0,\r\n 'replaced': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.replaced.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.replaced.toLowerCase()).submissionStatusCount : 0,\r\n 'haSystemError': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.haSystemError.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.haSystemError.toLowerCase()).submissionStatusCount : 0,\r\n 'invalidCredentials': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.invalidCredentials.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.invalidCredentials.toLowerCase()).submissionStatusCount : 0,\r\n 'internalSystemError': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.internalSystemError.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.internalSystemError.toLowerCase()).submissionStatusCount : 0,\r\n 'submissionPassed': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionPassed.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.submissionPassed.toLowerCase()).submissionStatusCount : 0,\r\n 'hungRecord': channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.hungRecord.toLowerCase()) ? channelArray.find(x => x.submissionStatus.toLowerCase() === this.submissionStatusEnum.hungRecord.toLowerCase()).submissionStatusCount : 0\r\n }\r\n } else {\r\n fullChannelData = {\r\n 'channel': channelArray[0].channel,\r\n 'readyForApproval': 0,\r\n 'submissionApproved': 0,\r\n 'submissionRejected': 0,\r\n 'submissionInProcess': 0,\r\n 'submitted': 0,\r\n 'registered': 0,\r\n 'submissionFailed': 0,\r\n 'pendingModelRegistration': 0,\r\n 'replaced': 0,\r\n 'haSystemError': 0,\r\n 'invalidCredentials': 0,\r\n 'internalSystemError': 0,\r\n 'submissionPassed': 0,\r\n 'hungRecord': 0\r\n };\r\n }\r\n\r\n return fullChannelData;\r\n }\r\n\r\n\r\n\r\n getGroupStatusDS(channel: string, status: string): ISubmittedDevicesChart {\r\n\r\n let retDS: any;\r\n let channelDS: any;\r\n\r\n channelDS = this.fullChartData.find((ds: ISubmittedDevicesChart) => ds.channel.toLowerCase() === channel.toLowerCase());\r\n\r\n retDS = [{ 'channel': channel, 'submissionStatus': status, 'submissionStatusCount': channelDS[status] }];\r\n\r\n return retDS;\r\n }\r\n\r\n getStatusCount(channelArray: ISubmittedDevicesChart[], statusesArray: string[]): number {\r\n\r\n let count = 0;\r\n\r\n if (channelArray && channelArray.length && statusesArray && statusesArray.length) {\r\n\r\n statusesArray.forEach(status => {\r\n\r\n if (channelArray.find(x => x.submissionStatus.toLowerCase() === status.toLowerCase())) {\r\n\r\n count += channelArray.find(x => x.submissionStatus.toLowerCase() === status.toLowerCase()).submissionStatusCount;\r\n }\r\n });\r\n\r\n return count;\r\n }\r\n }\r\n\r\n private initChart() {\r\n\r\n this.radius = { bottomLeft: 0, bottomRight: 0, topLeft: 7, topRight: 7 };\r\n\r\n this.primaryXAxis = {\r\n valueType: 'Category',\r\n title: '',\r\n majorGridLines: { width: 0 },\r\n majorTickLines: { width: 1 },\r\n border: { width: 0, color: '#bbb' }\r\n };\r\n\r\n // Round to the max value plus 10%\r\n let multiplier = this.maxCountForYaxis * 1.1;\r\n let percent = 1.1;\r\n\r\n //add 10% so the data label stays above.\r\n // If this.maxCountForYaxis = 0 set a default maximum to 10 and interval to 2\r\n const maximumY = this.maxCountForYaxis ? (Math.ceil(this.maxCountForYaxis / multiplier) * multiplier) * percent : 10;\r\n const intervalY = maximumY ? Math.ceil(maximumY / 7) : 2;\r\n\r\n this.primaryYAxis = {\r\n title: 'Submitted Devices',\r\n // titleStyle: {font: { fontWeight: 'bold'}},\r\n minimum: 0,\r\n maximum: maximumY,\r\n interval: intervalY,\r\n majorGridLines: { width: 1 },\r\n majorTickLines: { width: 2 }\r\n };\r\n\r\n this.columnModel = {\r\n border: { width: 3, color: '#ff0000' }\r\n }\r\n\r\n this.fontModel = {\r\n fontWeight: 'regular'\r\n }\r\n\r\n this.marker = {\r\n dataLabel: {\r\n visible: true,\r\n font: this.fontModel,\r\n margin: {\r\n left: 5,\r\n right: 5,\r\n top: 1,\r\n bottom: 1\r\n }\r\n }\r\n };\r\n\r\n this.lineMarker = {\r\n dataLabel: {\r\n visible: true,\r\n font: this.fontModel,\r\n shape: 'Diamond',\r\n margin: {\r\n left: 5,\r\n right: 5,\r\n top: 1,\r\n bottom: 1\r\n }\r\n }\r\n };\r\n\r\n this.emptySeries = {\r\n mode: 'Drop'\r\n }\r\n\r\n this.legendSettings = {\r\n visible: true,\r\n position: 'Top',\r\n shapeHeight: 15,\r\n shapeWidth: 15,\r\n // textWrap: 'Wrap',\r\n // maximumLabelWidth: 80,\r\n // toggleVisibility: false\r\n };\r\n\r\n this.tooltip = { enable: true };\r\n\r\n this.titleStyle = {\r\n fontFamily: 'open_sansregular, sans-serif',\r\n color: '#0071bb',\r\n size: '18px',\r\n textWrap: 'Wrap',\r\n\r\n };\r\n\r\n this.subtitleStyle = {\r\n fontFamily: 'open_sansregular, sans-serif',\r\n color: '#0071bb',\r\n size: '14px',\r\n textWrap: 'AnyWhere'\r\n };\r\n\r\n this.chartTitle = `Device Submissions by Health Authority`;\r\n this.subTitle = ` ${ this.customer.customerName } `;\r\n\r\n this.chartArea = {\r\n border: {\r\n width: 0,\r\n color: '#aaa',\r\n fontWeight: this.fontModel\r\n }\r\n };\r\n this.cornerRadius = {\r\n topLeft: 5, topRight: 5\r\n };\r\n\r\n\r\n this.pointColorMapping = 'color';\r\n this.border = { width: 1, color: '#0071bb' }; // [border]='border'\r\n this.margin = { left: 20, right: 20, top: 20, bottom: 20 }; // [margin]='margin'\r\n\r\n this.seriesBorder = { width: 1, color: '#ff0000' }\r\n }\r\n\r\n public load(args: ILoadedEventArgs): void {\r\n\r\n //\r\n }\r\n\r\n onTextRender(args: IAccTextRenderEventArgs): void {\r\n args.text = `${ args.point.y }`;\r\n\r\n // to prevent displaying 0\r\n if (args.text === '0') {\r\n args.cancel = args.point.y === 0;\r\n }\r\n }\r\n\r\n public chartMouseClick(args: IMouseEventArgs): void {\r\n\r\n if (((args.target).indexOf('chart_legend_text') > -1) || ((args.target).indexOf('chart_legend_shape') > -1) ||\r\n (args.target).indexOf('chart_legend_shape_marker_') && !(args.target).indexOf('chart_legend_element')) {\r\n const status = ((args.target).indexOf('chart_legend_text') > -1) ?\r\n (args.target).split('chart_legend_text_')[1] : args.target.split('chart_legend_shape_marker_')[1] || args.target.split('chart_legend_shape_')[1];\r\n };\r\n }\r\n\r\n consoleIt(something: any) {\r\n console.log(something);\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { BaseAccordionComponent } from '../base-accordion/base-accordion.component';\r\n\r\n@Component({\r\n selector: 'app-substances-warnings',\r\n templateUrl: './substances-warnings.component.html',\r\n styleUrls: ['./substances-warnings.component.scss']\r\n})\r\nexport class SubstancesWarningsComponent extends BaseAccordionComponent implements OnInit {\r\n\r\n constructor (public fb: FormBuilder, public storage: StorageManagerService) {\r\n\r\n super(fb, storage);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.dataScope = this.storage.read('dataScope');\r\n\r\n this.initializeMainForm();\r\n\r\n this.patchForms();\r\n }\r\n\r\n initializeMainForm() {\r\n\r\n this.deviceForm = this.fb.group({\r\n containingLatex: ['', { validators: [] }],\r\n labeledAsNotMadeWithNaturalRubber: ['', { validators: [] }],\r\n criticalWarningForm: this.fb.array([this.addCriticalWarningForm()]),\r\n CMRForm: this.fb.array([this.addCMRForm()]),\r\n substancesForm: this.fb.array([this.addSubstancesForm()]),\r\n criticalWarningAndContraindication: ['', { validators: [] }],\r\n containingPhthalates: ['', { validators: [] }],\r\n mriSafetyStatus: ['', { validators: [] }]\r\n });\r\n\r\n // Watch changes on the entire deviceForm\r\n this.deviceForm.valueChanges.subscribe(data => {\r\n this.logValidationErrors(this.deviceForm);\r\n });\r\n }\r\n\r\n get criticalWarningForm(): FormGroup {\r\n return this.deviceForm.get('criticalWarningForm');\r\n }\r\n\r\n get CMRForm(): FormGroup {\r\n return this.deviceForm.get('CMRForm');\r\n }\r\n\r\n get substancesForm(): FormGroup {\r\n return this.deviceForm.get('substancesForm');\r\n }\r\n\r\n addCriticalWarningForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n warningValue: ['', { validators: [] }],\r\n warningCommentsArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addCMRForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n CMRValue: ['', { validators: [] }],\r\n casNumber: ['', { validators: [] }],\r\n ecNumber: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n }\r\n\r\n addSubstancesForm(): FormGroup {\r\n\r\n return this.fb.group({\r\n substanceType: ['', { validators: [] }],\r\n innCode: ['', { validators: [] }],\r\n substanceNamesArray: [this.fb.array([])]\r\n });\r\n\r\n }\r\n\r\n patchForms() {\r\n\r\n this.deviceForm.patchValue({\r\n\r\n containingLatex: this.displayItemData('Containing Latex?'),\r\n labeledAsNotMadeWithNaturalRubber: this.displayItemData('Not made with natural rubber latex?'),\r\n criticalWarningAndContraindication: this.displayItemData('Critical Warnings and Contraindications'),\r\n containingPhthalates: this.displayItemData('Containing Phthalates?'),\r\n mriSafetyStatus: this.displayItemData('MRI Safety Status')\r\n });\r\n\r\n this.deviceForm.setControl('criticalWarningForm', this.setCriticalWarningForm());\r\n this.deviceForm.setControl('CMRForm', this.setCMRForm());\r\n this.deviceForm.setControl('substancesForm', this.setSubstancesForm());\r\n }\r\n\r\n\r\n setSubstancesForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n\r\n items = this.displayItemData('MED Human Product Types');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('SubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('SubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n innCode: c[(this.getMapInnerPathName('INN Code'))[0]],\r\n substanceType: c[(this.getMapInnerPathName('Medicinal or Medicinal Human Product Substance Type'))[0]],\r\n substanceNamesArray: this.addSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('LQV Name'))[0]],\r\n language: element[(this.getMapInnerPathName('LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n\r\n setCMRForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let items: any;\r\n let substanceNamesArray: any;\r\n let lqv: any;\r\n items = this.displayItemData('CMR');\r\n\r\n if (items && items.length > 0) {\r\n items.forEach((c, i) => {\r\n\r\n substanceNamesArray = c[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[0]];\r\n\r\n if (substanceNamesArray) {\r\n\r\n lqv = substanceNamesArray[(this.getMapInnerPathName('CMRSubstanceNamesArray'))[1]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n CMRValue: c[(this.getMapInnerPathName('CMRValue'))[0]],\r\n casNumber: c[(this.getMapInnerPathName('CAS Number'))[0]],\r\n ecNumber: c[(this.getMapInnerPathName('EC Number'))[0]],\r\n substanceNamesArray: this.addCMRSubstanceNames(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addCMRSubstanceNames(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('CMR LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('CMR LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n\r\n setCriticalWarningForm(): FormArray {\r\n\r\n const formArray = new FormArray([]);\r\n\r\n let warnings: any;\r\n let commentsArray: any;\r\n let lqv: any;\r\n\r\n warnings = this.displayItemData('Critical Warning or Contraindication Value(s)');\r\n\r\n\r\n if (warnings && warnings.length > 0) {\r\n warnings.forEach((c, i) => {\r\n\r\n commentsArray = c[(this.getMapInnerPathName('Warning Comments'))[0]];\r\n\r\n if (commentsArray) {\r\n\r\n lqv = commentsArray[(this.getMapInnerPathName('Warning Comments LQV'))[0]];\r\n } else {\r\n\r\n lqv = [];\r\n }\r\n\r\n formArray.push(\r\n\r\n this.fb.group({\r\n\r\n warningValue: c[(this.getMapInnerPathName('Warning Value'))[0]],\r\n warningCommentsArray: this.addWarningComments(lqv)\r\n }));\r\n });\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n addWarningComments(lqv: any): FormArray {\r\n\r\n const arr = [];\r\n\r\n if (lqv && lqv.length > 0) {\r\n\r\n lqv.forEach(element => {\r\n arr.push(\r\n\r\n this.fb.group({\r\n value: element[(this.getMapInnerPathName('Warning Comments LQV Value'))[0]],\r\n language: element[(this.getMapInnerPathName('Warning Comments LQV Language'))[0]]\r\n })\r\n );\r\n });\r\n }\r\n\r\n return this.fb.array(arr);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { fadeInOut } from '../../shared/helpers/animations';\r\nimport { StorageManagerService } from '../../shared/services/index';\r\n\r\n@Component({\r\n\tselector: 'app-support',\r\n\ttemplateUrl: './support.component.html',\r\n\tstyleUrls: ['./support.component.css'],\r\n\tanimations: [fadeInOut]\r\n})\r\nexport class SupportComponent implements OnInit {\r\n\r\n\tconstructor (private storage: StorageManagerService) { }\r\n\r\n\tngOnInit() {\r\n\r\n this.storage.write('activeTab', 'device');\r\n \r\n // set focus on the invisible div so the firest tab will bring it to the \"Skip to Main Navigation\" button because it must be the first tab target on the page (508 Compliance)\r\n this.initTabIndex();\r\n }\r\n\r\n initTabIndex() {\r\n (document.activeElement as HTMLElement).blur();\r\n\r\n const main = document.getElementById('firstDiv');\r\n\r\n if (main) {\r\n main.focus();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-unauthorized',\r\n templateUrl: 'unauthorized.component.html'\r\n})\r\n\r\nexport class UnauthorizedComponent implements OnInit {\r\n\r\n public message: string;\r\n public values: any[];\r\n\r\n constructor() {\r\n this.message = 'UnauthorizedComponent constructor';\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","// Angular libraries, then app-routing.module, then services, then components.\r\nimport { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToastrModule } from 'ngx-toastr';\r\n\r\n// SyncFusion Component Helpers:\r\nimport { CheckBoxModule, SwitchModule } from '@syncfusion/ej2-angular-buttons';\r\nimport { AccumulationChartModule, ChartAllModule, ChartModule } from '@syncfusion/ej2-angular-charts';\r\nimport { AutoCompleteModule, DropDownListModule, ListBoxModule } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { GridAllModule, GridModule } from '@syncfusion/ej2-angular-grids';\r\nimport { TextBoxModule, UploaderModule } from '@syncfusion/ej2-angular-inputs';\r\nimport { ProgressButtonModule } from '@syncfusion/ej2-angular-splitbuttons';\r\nimport { AccordionModule } from '@syncfusion/ej2-angular-navigations';\r\nimport { DialogModule, TooltipAllModule, TooltipModule } from '@syncfusion/ej2-angular-popups';\r\nimport { NgbModule, NgbCollapseModule} from '@ng-bootstrap/ng-bootstrap';\r\nimport { BaseAccordionComponent, BaseGridComponent } from '../components/index';\r\nimport { ProgressBarAllModule } from '@syncfusion/ej2-angular-progressbar';\r\n\r\n// directives\r\nimport { HideByAccessDirective, LabelControl } from '../shared/directives/index';\r\nimport { FilterPipe } from '../pipes/filter.pipe';\r\n\r\n// RT Shared Components\r\nimport { FeatureComponent } from '../components/feature/feature.component';\r\nimport { FeatureService } from '../shared/services/feature.service';\r\n\r\n@NgModule({\r\n declarations: [\r\n BaseAccordionComponent,\r\n BaseGridComponent,\r\n HideByAccessDirective,\r\n LabelControl,\r\n FilterPipe,\r\n FeatureComponent\r\n ],\r\n imports: [\r\n ProgressBarAllModule,\r\n ProgressButtonModule,\r\n ToastrModule.forRoot({\r\n timeOut: 8000,\r\n preventDuplicates: true,\r\n positionClass: 'toast-top-center'\r\n })\r\n ],\r\n providers: [\r\n FeatureService\r\n ],\r\n exports: [\r\n CommonModule,\r\n ToastrModule,\r\n CheckBoxModule,\r\n SwitchModule,\r\n TextBoxModule,\r\n UploaderModule,\r\n DialogModule,\r\n GridModule,\r\n DropDownListModule, GridAllModule,\r\n AccordionModule,\r\n TooltipModule,\r\n TooltipAllModule,\r\n AutoCompleteModule,\r\n ChartModule,\r\n ChartAllModule,\r\n AccumulationChartModule,\r\n ListBoxModule,\r\n NgbCollapseModule,\r\n NgbModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n BaseAccordionComponent,\r\n BaseGridComponent,\r\n FilterPipe,\r\n HideByAccessDirective,\r\n LabelControl,\r\n ProgressBarAllModule,\r\n FeatureComponent\r\n ]\r\n})\r\nexport class AppSharedModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform { \r\n\r\n transform(items: any[], fieldName: string, value: any): any[] {\r\n\r\n let retVal: any[] = [];\r\n\r\n // return empty array if array is falsy\r\n if (!items) { return []; }\r\n\r\n if (!items.length) {\r\n return [];\r\n }\r\n\r\n // return the original array if the fieldname is not provided or incorrect.\r\n if (!fieldName) {\r\n return items;\r\n }\r\n\r\n // return the original array if search text is empty\r\n if (!value) { return items; }\r\n\r\n if (Array.isArray(value) && value.length > 0) {\r\n\r\n value.forEach(element => {\r\n \r\n let filteredArray = items.filter(x => x[fieldName] === element);\r\n\r\n if (filteredArray.length) {\r\n retVal.push(...filteredArray); }\r\n });\r\n \r\n } else {\r\n retVal = items.filter(item => item[fieldName] === value);\r\n }\r\n\r\n // return the filtered array\r\n return retVal;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'splitWords'\r\n})\r\nexport class SplitWordsPipe implements PipeTransform {\r\n\r\n transform(input: string, separator: string, index: number): any {\r\n\r\n if (input && input.length > 0) {\r\n const splitArray = input.split(separator);\r\n if (index >= 0 && index < splitArray.length) {\r\n return splitArray[index];\r\n } else {\r\n return input;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'utcToLocale'\r\n})\r\nexport class UtcToLocalePipe implements PipeTransform {\r\n\r\n transform(utcDate: string): string {\r\n\r\n let indexOfDate = utcDate.indexOf('+');\r\n\r\n if (isNaN(indexOfDate)) {\r\n indexOfDate = utcDate.indexOf('-');\r\n }\r\n\r\n const newDateParsedToNumber = Date.parse(utcDate.substr(0, indexOfDate - 1));\r\n\r\n const newDate = new Date(newDateParsedToNumber);\r\n\r\n const offset = newDate.getTimezoneOffset() / 60;\r\n\r\n const sign = newDate.toString().substr(newDate.toString().indexOf('GMT') + 3, 1);\r\n\r\n if (sign === '+') {\r\n newDate.setHours( newDate.getHours() + offset );\r\n } else {\r\n newDate.setHours( newDate.getHours() - offset );\r\n }\r\n\r\n return newDate.toLocaleString();\r\n }\r\n\r\n}\r\n","import { Directive, HostBinding, Optional, Input } from '@angular/core';\r\nimport { ControlContainer} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: 'label[controlName]',\r\n})\r\nexport class LabelControl {\r\n @Input() controlName: string;\r\n\r\n constructor(@Optional() private parent: ControlContainer) {}\r\n\r\n @HostBinding('textContent')\r\n get controlValue() {\r\n\r\n let control: any;\r\n let retVal: any;\r\n\r\n if (this.parent) {\r\n\r\n control = this.parent?.control?.get(this.controlName);\r\n\r\n if (control) {\r\n\r\n retVal = control.value;\r\n } else {\r\n\r\n retVal = '';\r\n }\r\n } else {\r\n\r\n retVal = '';\r\n }\r\n\r\n return retVal;\r\n }\r\n}\r\n","import { FormGroup, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\n\r\nexport const crossValidator:\r\n ValidatorFn = (control: FormGroup):\r\n ValidationErrors | null => {\r\n \r\n\r\n return null;\r\n\r\n};\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, ValidatorFn, Validators, AbstractControl } from \"@angular/forms\";\r\n\r\n/** Name can't match the given regular expression */\r\nexport function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const forbidden = nameRe.test(control.value);\r\n return forbidden ? { 'forbiddenName': { value: 'Value \\''+ control.value +'\\' is forbidden'} } : null;\r\n };\r\n}\r\n","import { Directive, TemplateRef, Input, ViewContainerRef } from '@angular/core';\r\nimport { AuthorizationService } from '../services/index';\r\nimport { IUserAccessPermissions } from '../models';\r\n\r\n@Directive({\r\n selector: '[appHideByAccess]'\r\n})\r\nexport class HideByAccessDirective {\r\n\r\n private permitted: boolean;\r\n accessPermissions: IUserAccessPermissions;\r\n\r\n constructor (private templateRef: TemplateRef,\r\n private viewContainer: ViewContainerRef,\r\n private authorizationService: AuthorizationService) {\r\n }\r\n\r\n @Input() set appHideByAccess(permission: string) {\r\n\r\n this.permitted = this.authorizationService.hasPermission(permission);\r\n\r\n if (this.permitted) {\r\n\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n } else {\r\n this.viewContainer.clear();\r\n }\r\n }\r\n}\r\n\r\n","export { crossValidator } from './cross-validator';\r\nexport { forbiddenNameValidator } from './forbidden-name.directive';\r\nexport { HideByAccessDirective } from './hidebyaccess.directive';\r\nexport { LabelControl} from './control-name.directive';\r\n\r\n","export enum AttributeStatusEnum {\r\n new = 'New',\r\n changed = 'Changed',\r\n current = 'Current'\r\n}\r\n","export enum DataScopesEnum {\r\n EUDAMED = 'EUDAMED',\r\n CHINA = 'China-UDI',\r\n SKOREA = 'SouthKorea-UDI',\r\n US = 'US-UDI',\r\n SA = 'SaudiArabia-UDI',\r\n AU = \"Australia-UDI\",\r\n BRAZIL = \"Brazil-UDI\"\r\n}\r\n","export enum ExportStatusEnum {\r\n Pending = 1,\r\n InProcess,\r\n Completed,\r\n Exception\r\n}\r\n\r\n\r\n\r\n","export { MessageSeverityEnum } from './messageSeverity.enum';\r\nexport { SubmissionStatusEnum } from './submissionStatus.enum';\r\nexport { SubmissionTypeEnum } from './submissionType.enum';\r\nexport { DataScopesEnum } from './dataScopes.enum';\r\nexport { ValidationStatusEnum } from './validationStatus.enum';\r\nexport { AttributeStatusEnum } from './attributeStatus.enum';\r\nexport { ExportStatusEnum } from './exportStatus.enum';\r\nexport { SubmissionStatusNumericEnum } from './submissionStatusNumeric.enum';\r\nexport { RegistrationTypeEnum } from './registrationType.enum';\r\n","export enum MessageSeverityEnum {\r\n success,\r\n default,\r\n info,\r\n error,\r\n warn,\r\n wait\r\n}","export enum RegistrationTypeEnum{\r\n Regulation = 1,\r\n Legacy = 2\r\n}","export enum SubmissionStatusEnum {\r\n\treadyForApproval = 'Ready for Approval',\r\n\tsubmissionApproved = 'Submission Approved',\r\n\tsubmissionRejected = 'Submission Rejected',\r\n\tsubmissionInProcess = 'Submission In Process',\r\n\tsubmitted = 'Submitted',\r\n\tregistered = 'Registered',\r\n\tsubmissionFailed = 'Submission Failed',\r\n pendingModelRegistration = 'Pending Model Registration',\r\n replaced = 'Replaced',\r\n haSystemError = 'HA System Error',\r\n invalidCredentials = 'Invalid Credentials',\r\n internalSystemError = 'Internal System Error',\r\n submissionPassed = 'Submission Passed',\r\n hungRecord = 'Hung Record'\r\n}\r\n","export enum SubmissionStatusNumericEnum {\r\n readyForApproval = 1,\r\n submissionApproved,\r\n submissionRejected,\r\n submissionInProcess,\r\n submitted,\r\n registered,\r\n submissionFailed,\r\n pendingModelRegistration,\r\n replaced,\r\n haSystemError,\r\n invalidCredentials,\r\n internalSystemError,\r\n submissionPassed,\r\n hungRecord\r\n}\r\n\r\n\r\n","export enum SubmissionTypeEnum {\r\n MdrCreateNewDeviceModel = 1,\r\n MdrAddDevicesToRegisteredModel,\r\n MdrUpdateDevice,\r\n MdrUpdateModel,\r\n Draft,\r\n Submit,\r\n SearchTheModel,\r\n GUDIDSubmission,\r\n AusUDIDSubmission,\r\n MDRarketInfoUpdate,\r\n FDASubmission,\r\n BrazilUDIDSubmission\r\n}\r\n\r\n\r\n\r\n","export enum ValidationStatusEnum {\r\n pass = 'Pass',\r\n fail = 'Fail',\r\n warning = 'Warning',\r\n toBeImplemented = 'To Be Implemented'\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AppGlobals {\r\n pendo: any = {};\r\n UNSUFFICIENT_PERMISSION = 'Please contact ReedTech Support to get additional permissions';\r\n GENERIC_ERROR_MSG = 'It looks like something went wrong. Try reloading the page or contacting support if this issue continues.';\r\n applicationName = 'SingleSource';\r\n\r\n ERROR_CODE_FORBIDDEN = '403';\r\n FORBIDDEN_ERROR_MESSAGE = 'Sorry, you don\\'t have enough permission to access the feature/page.';\r\n\r\n ERROR_CODE_NOT_FOUND = '404';\r\n NOT_FOUND_ERROR_MESSAGE = 'Sorry, the resource is not available. Please try again later.'\r\n PAGE_NOT_FOUND = 'Sorry, the page is not found.'\r\n\r\n ERROR_CODE_UNAUTHORIZED = '401';\r\n NOT_AUTHORIZED_ERROR_MESSAGE = 'Sorry, you\\'re not authorized.';\r\n\r\n ERROR_CODE_GENERIC_ERROR = '500';\r\n GENERIC_HTTP_ERROR_MESSAGE = 'Sorry, the server encountered an unexpected error. Please try again later.'\r\n\r\n permissions = {\r\n ApiAccess: 'SS.ApiAccess',\r\n CanAccessChannelSupportDocuments: 'SS.CanAccessChannelSupportDocuments',\r\n CanAccessClientAdminSettings: 'SS.CanAccessClientAdminSettings',\r\n CanCreateData: 'SS.CanCreateData',\r\n CanDeactivateRecord: 'SS.CanDeactivateRecord',\r\n CanReadData: 'SS.CanReadData',\r\n CanRejectData: 'SS.CanRejectData',\r\n CanSendDataForSubmissionApproval: 'SS.CanSendDataForSubmissionApproval',\r\n CanSubmitData: 'SS.CanSubmitData',\r\n CanUpdateDeviceData: 'SS.CanUpdateDeviceData',\r\n CanUploadFile: 'SS.CanUploadFile',\r\n CanUpdateModelData: 'SS.CanUpdateModelData',\r\n CanUpdateApiCredentials: 'SS.CanUpdateApiCredentials',\r\n ServiceCall: 'SS.ServiceCall',\r\n CreateEditExportTemplate: 'SS.CreateEditExportTemplate',\r\n ExecuteExportDownloadTemplate: 'SS.ExecuteExportDownloadTemplate',\r\n DeleteExportTemplate: 'SS.DeleteExportTemplate',\r\n CanEditLanguageSettings: 'SS.CanEditLanguageSettings'\r\n };\r\n}\r\n\r\n","// ====================================================\r\n// More Templates: https://www.ebenmonney.com/templates\r\n// Email: support@ebenmonney.com\r\n// ====================================================\r\n\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n\r\nexport const fadeInOut = trigger('fadeInOut', [\r\n transition(':enter', [style({ opacity: 0 }), animate('0.4s ease-in', style({ opacity: 1 }))]),\r\n transition(':leave', [animate('0.4s 10ms ease-out', style({ opacity: 0 }))])\r\n])\r\n\r\n\r\n\r\nexport function flyInOut(duration: number = 0.2) {\r\n return trigger('flyInOut', [\r\n state('in', style({ opacity: 1, transform: 'translateX(0)' })),\r\n transition('void => *', [style({ opacity: 0, transform: 'translateX(-100%)' }), animate(`${duration}s ease-in`)]),\r\n transition('* => void', [animate(`${duration}s 10ms ease-out`, style({ opacity: 0, transform: 'translateX(100%)' }))])\r\n ])\r\n}\r\n","import { HttpErrorResponse, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest, HttpEvent } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { throwError, Observable } from 'rxjs';\r\nimport { catchError, retry } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { StorageManagerService } from '../services';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { EMPTY } from 'rxjs';\r\nimport { AppGlobals } from '../globals/appGlobals';\r\nimport { isDevMode } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n modifiedHeader: HttpHeaders;\r\n constructor (private router: Router, private toastr: ToastrService, private storage: StorageManagerService, private authenticationService: AuthenticationService, private appGlobals: AppGlobals) {\r\n }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n const req = request.clone();\r\n\r\n return next.handle(req).pipe(\r\n retry(0),\r\n catchError((error: HttpErrorResponse) => {\r\n //Code to Handle Timeout Error\r\n if (error.status === 499 || JSON.stringify(error).includes('Error Code:499')) {\r\n console.error('TimeourError Occured - ' + error.message);\r\n this.toastr.success('Request has been submitted to process further', '', { closeButton: true });\r\n return EMPTY;\r\n }\r\n let errorMessage = '';\r\n\r\n if (error.error instanceof ErrorEvent) {\r\n\r\n // client-side error\r\n if (isDevMode()) {\r\n errorMessage = `Error: ${ error.error.message }`;\r\n } else {\r\n errorMessage = this.appGlobals.GENERIC_ERROR_MSG;\r\n }\r\n } else {\r\n\r\n // server-side error\r\n if (error.status === 401) {\r\n\r\n const authData = this.storage.read('userData');\r\n\r\n if (authData) {\r\n\r\n this.authenticationService.setHeader();\r\n } \r\n\r\n if (isDevMode()) {\r\n errorMessage = `Error Code: ${ error.status }\\nMessage: ${ error.message }`;\r\n this.toastr.error('Http call failed with status 401');\r\n this.router.navigate(['/error', { message: errorMessage, code: error.status }]);\r\n } else {\r\n\r\n this.toastr.error(this.appGlobals.GENERIC_ERROR_MSG);\r\n this.router.navigate(['/error', { message: this.appGlobals.GENERIC_ERROR_MSG }]);\r\n }\r\n\r\n return throwError(EMPTY);\r\n } else {\r\n\r\n if (isDevMode()) {\r\n errorMessage = `Error Code: ${ error.status }\\nMessage: ${ error.message }`;\r\n this.toastr.error(errorMessage);\r\n this.router.navigate(['/error', { message: errorMessage, code: error.status }]);\r\n } else {\r\n\r\n this.toastr.error(this.appGlobals.GENERIC_ERROR_MSG);\r\n this.router.navigate(['/error', { message: this.appGlobals.GENERIC_ERROR_MSG }]);\r\n }\r\n }\r\n }\r\n return throwError(errorMessage);\r\n })\r\n );\r\n }\r\n}\r\n","import 'rxjs/add/observable/of';\r\nimport 'rxjs/add/observable/throw';\r\n// Observable operators\r\nimport 'rxjs/add/operator/catch';\r\nimport 'rxjs/add/operator/debounceTime';\r\nimport 'rxjs/add/operator/distinctUntilChanged';\r\nimport 'rxjs/add/operator/do';\r\nimport 'rxjs/add/operator/filter';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/switchMap';","import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\r\n\r\nexport default class Utils {\r\n static getBaseUri() {\r\n let baseURI = document.baseURI;\r\n\r\n if (!baseURI) {\r\n const baseTags = document.getElementsByTagName('base');\r\n baseURI = baseTags.length ? baseTags[0].href : document.URL;\r\n }\r\n if (!baseURI.match('/$')) {\r\n baseURI = `${document.baseURI}/`;\r\n }\r\n\r\n return baseURI;\r\n\r\n // const = document.baseURI.endsWith('/') ? document.baseURI : `${document.baseURI}/`;\r\n\r\n }\r\n public static TestIsUndefined(value: any) {\r\n return typeof value === 'undefined';\r\n // return value === undefined;\r\n }\r\n /**\r\n * Deep clones the given AbstractControl, preserving values, validators, async validators, and disabled status.\r\n * @param control AbstractControl\r\n * @returns AbstractControl\r\n */\r\n public static cloneAbstractControl(control: T): T {\r\n let newControl: T;\r\n\r\n if (control instanceof FormGroup) {\r\n const formGroup = new FormGroup({}, control.validator, control.asyncValidator);\r\n const controls = control.controls;\r\n\r\n Object.keys(controls).forEach(key => {\r\n formGroup.addControl(key, this.cloneAbstractControl(controls[key]));\r\n });\r\n\r\n newControl = formGroup as any;\r\n } else if (control instanceof FormArray) {\r\n const formArray = new FormArray([], control.validator, control.asyncValidator);\r\n\r\n control.controls.forEach(formControl => formArray.push(this.cloneAbstractControl(formControl)));\r\n\r\n newControl = formArray as any;\r\n } else if (control instanceof FormControl) {\r\n newControl = new FormControl(control.value, control.validator, control.asyncValidator) as any;\r\n } else {\r\n throw new Error('Error: unexpected control value');\r\n }\r\n\r\n if (control.disabled) {\r\n newControl.disable({ emitEvent: false });\r\n }\r\n\r\n return newControl;\r\n }\r\n\r\n /**\r\n * Creates a brand new object, free of reference to the original object\r\n * @param {T} value\r\n * use newObject = this.util.deepCopy(originalObject);\r\n */\r\n public static deepCopy(value: T): any {\r\n\r\n if (typeof value !== 'object' || value === null) {\r\n return value;\r\n }\r\n if (Array.isArray(value)) {\r\n return this.deepArray(value);\r\n }\r\n return this.deepObject(value);\r\n }\r\n\r\n public static deepObject(source: T) {\r\n\r\n const result = {};\r\n\r\n Object.keys(source).forEach((key) => {\r\n\r\n const value = source[key];\r\n result[key] = this.deepCopy(value);\r\n }, {});\r\n return result as T;\r\n }\r\n\r\n public static deepArray(collection: T) {\r\n return collection.map((value) => {\r\n return this.deepCopy(value);\r\n });\r\n }\r\n\r\n}\r\n","export class IServiceError {\r\n errorNumber: number;\r\n message: string;\r\n friendlyMessage: string;\r\n errorMessage: string;\r\n errorStatus: number;\r\n name: string;\r\n url: string;\r\n}\r\n","export class ApplicationSelection {\r\n constructor(\r\n public application: string,\r\n\r\n public environment: string) {\r\n\r\n }\r\n}\r\n","export class dynamicschemaData {\r\npublic fields: any[] = [\r\n {\r\n type: 'text',\r\n name: 'firstName',\r\n label: 'First Name',\r\n value: 'John',\r\n forbiddenNameValidator:true,\r\n required: true,\r\n },\r\n {\r\n type: 'text',\r\n name: 'middleName',\r\n label: 'Middle Name',\r\n value: '',\r\n required: false,\r\n },\r\n {\r\n type: 'text',\r\n name: 'lastName',\r\n label: 'Last Name',\r\n value: '',\r\n required: true,\r\n maxLength: '2'\r\n },\r\n {\r\n type: 'text',\r\n name: 'email',\r\n label: 'Email',\r\n value: '',\r\n required: true,\r\n },\r\n { type: 'date', name: 'DOB',label:'DOB', value: '11/21/2011', placeholder: 'MM/dd/yyyy', required: true },\r\n //{\r\n // type: 'file',\r\n // name: 'picture',\r\n // label: 'Picture',\r\n // required: false\r\n //},\r\n {\r\n type: 'dropdown',\r\n name: 'country',\r\n label: 'Country',\r\n value: 'in',\r\n required: true,\r\n options: [\r\n { key: 'in', label: 'India' },\r\n { key: 'us', label: 'USA' }\r\n ]\r\n },\r\n {\r\n type: 'radio',\r\n name: 'gender',\r\n label: 'Gender',\r\n value: 'in',\r\n required: false,\r\n options: [\r\n {name:'g', key: 'm', label: 'Male' },\r\n { name: 'g', key: 'f', label: 'Female' }\r\n ]\r\n },\r\n {\r\n type: 'checkbox',\r\n name: 'hobby',\r\n label: 'Hobby',\r\n required: false,\r\n options: [\r\n { key: 'f', label: 'Fishing' },\r\n { key: 'c', label: 'Cooking' }\r\n ]\r\n }\r\n ];\r\n}\r\n","export class IExportDataTask {\r\n createDateTime: Date;\r\n createUser: string;\r\n fileFormat: string;\r\n fileName: string;\r\n filePath: string;\r\n taskStatus: string;\r\n templateName: string;\r\n}\r\n","import { IExportTemplate } from './index';\r\n\r\nexport class IExportDataTemplate {\r\n exportTemplateId: number;\r\n exportTemplateName: string;\r\n content: IExportTemplate;\r\n changeUser: string;\r\n changeDateTime: Date;\r\n createUser: string;\r\n createDateTime: Date;\r\n}\r\n","export class IExportTemplate {\r\n deviceAttributes: DeviceAttribute[];\r\n}\r\n\r\nexport class DeviceAttribute {\r\n name: string;\r\n caption: string;\r\n importXpathRoot: string;\r\n importXpathLoop: string;\r\n sections: Section[];\r\n fields: Field[];\r\n}\r\n\r\nexport class Section {\r\n name: string;\r\n caption: string;\r\n importXpathRoot: string;\r\n importXpathLoop: string;\r\n sections: Section[];\r\n fields: Field[];\r\n}\r\n\r\nclass Field {\r\n name: string;\r\n caption: string;\r\n populatesField: string;\r\n importXpath: string;\r\n isSelected: boolean;\r\n}\r\n","export class FileUploadResult {\r\n fileId: string;\r\n fileName: string;\r\n UploadPath: string;\r\n}\r\n","import { IExportDataTemplate } from './export-data-template.model';\r\n\r\nexport { ApplicationSelection } from './application.model';\r\nexport { ICustomer } from './customer.model';\r\nexport { FileUploadResult } from './fileuploadresult';\r\nexport { IFileMetadata } from './fileMetadata.model';\r\nexport { IFileMetadataDetail } from './fileMetadataDetails.model';\r\nexport { IServerSettings } from './serversettings';\r\nexport { IFileMetadataStats } from './fileMetadataStats.model';\r\nexport { IFileMetadataMessage } from './fileMetadataMessage.model';\r\nexport { IServiceError } from './ServiceError';\r\nexport { IFileIngestionHistory } from './fileIngestionHistory.model';\r\nexport { IUserAccessPermissions } from './userAccessPermissions.model';\r\nexport { IPermission } from './permission.model';\r\nexport { IUserPrefs } from './user-prefs.model';\r\nexport { IAppPrefs } from './app-prefs.model';\r\nexport { IRevisionHistory } from './revisionHistory.model';\r\nexport { IHasPermissionObject } from './hasPermission.model';\r\nexport { ISubmission } from './submission.model';\r\nexport { ISubmissionItem } from './submission-item.model';\r\nexport { IValidation } from './validation.model';\r\nexport { IValidationItem } from './validation-item.model';\r\nexport { ISubmissionHistory } from './submissionHistory.model';\r\nexport { ITooltip } from './tooltip.model';\r\nexport { IUserLoginApplication } from './user-login-application.model';\r\nexport { IUserLoginData } from './user-login-data.model';\r\nexport { ISubmissionHistoryItem } from './submissionHistoryItem.model';\r\nexport { ICustomerApplicationVariant } from './customer-application-variant.model';\r\nexport { IApiCredentialsSetting } from './api-credentials-settings.model';\r\nexport { IApiCredentials } from './api-credentilals.model';\r\nexport { IExportTemplate } from './export-template.model';\r\nexport { IExportDataTemplate } from './export-data-template.model';\r\nexport { ISavedTemplate } from './saved-template.model';\r\nexport { DeviceAttribute, Section } from './export-template.model';\r\nexport { IExportDataTask } from './export-data-task.model';\r\nexport { IIngestedDevicesChart } from './ingested-devices-chart.model';\r\nexport { ISubmittedDevicesChart } from './submitted-devices-chart.model';\r\nexport { ILanguageApiResponse } from './revalidation-response.model';\r\nexport { ISelectAll } from './select-all.model';\r\nexport { IResults } from './results.model';\r\nexport { IRegistrationType } from './registration-type-model';\r\n\r\n\r\n","export class IPermission {\r\n permissionName: string;\r\n applicationVariantName: string;\r\n}\r\n","import { IExportTemplate } from './index';\r\n\r\nexport class ISavedTemplate {\r\n exportDataTemplateName: string;\r\n exportDataTemplate: IExportTemplate;\r\n exportDataTemplateId: number;\r\n}\r\n\r\n\r\n\r\n","\r\nexport class IUserAccessPermissions {\r\n admin: string;\r\n fileUploadPage: string;\r\n fileDetailsPage: string;\r\n itemInventoryPage: string;\r\n canUploadFile: string;\r\n canSetAppConsent: string;\r\n canCreateData: string;\r\n canUpdateData: string;\r\n canDeleteData: string;\r\n canReadData: string;\r\n fileUploadMenu: string;\r\n fileDetailsMenu: string;\r\n itemInventoryMenu: string;\r\n}\r\n","// ====================================================\r\n// More Templates: https://www.ebenmonney.com/templates\r\n// Email: support@ebenmonney.com\r\n// ====================================================\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponseBase } from '@angular/common/http';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nimport { Utilities } from '../services/utilities';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n\r\n private messages = new Subject();\r\n private stickyMessages = new Subject();\r\n private dialogs = new Subject();\r\n\r\n private _isLoading = false;\r\n private loadingMessageId: any;\r\n\r\n\r\n\r\n showDialog(message: string)\r\n showDialog(message: string, type: DialogType, okCallback: (val?: any) => any)\r\n showDialog(message: string, type: DialogType, okCallback?: (val?: any) => any, cancelCallback?: () => any, okLabel?: string, cancelLabel?: string, defaultValue?: string)\r\n showDialog(message: string, type?: DialogType, okCallback?: (val?: any) => any, cancelCallback?: () => any, okLabel?: string, cancelLabel?: string, defaultValue?: string) {\r\n\r\n if (!type)\r\n type = DialogType.alert;\r\n\r\n this.dialogs.next({ message: message, type: type, okCallback: okCallback, cancelCallback: cancelCallback, okLabel: okLabel, cancelLabel: cancelLabel, defaultValue: defaultValue });\r\n }\r\n\r\n\r\n\r\n showMessage(summary: string)\r\n showMessage(summary: string, detail: string, severity: MessageSeverity)\r\n showMessage(summaryAndDetails: string[], summaryAndDetailsSeparator: string, severity: MessageSeverity)\r\n showMessage(response: HttpResponseBase, ignoreValue_useNull: string, severity: MessageSeverity)\r\n showMessage(data: any, separatorOrDetail?: string, severity?: MessageSeverity) {\r\n\r\n if (!severity)\r\n severity = MessageSeverity.default;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = Utilities.getHttpResponseMessage(data);\r\n separatorOrDetail = Utilities.captionAndMessageSeparator;\r\n }\r\n\r\n if (data instanceof Array) {\r\n for (let message of data) {\r\n let msgObject = Utilities.splitInTwo(message, separatorOrDetail);\r\n\r\n this.showMessageHelper(msgObject.firstPart, msgObject.secondPart, severity, false);\r\n }\r\n }\r\n else {\r\n this.showMessageHelper(data, separatorOrDetail, severity, false);\r\n }\r\n }\r\n\r\n\r\n showStickyMessage(summary: string)\r\n showStickyMessage(summary: string, detail: string, severity: MessageSeverity, error?: any)\r\n showStickyMessage(summaryAndDetails: string[], summaryAndDetailsSeparator: string, severity: MessageSeverity)\r\n showStickyMessage(response: HttpResponseBase, ignoreValue_useNull: string, severity: MessageSeverity)\r\n showStickyMessage(data: string | string[] | HttpResponseBase, separatorOrDetail?: string, severity?: MessageSeverity, error?: any) {\r\n\r\n if (!severity)\r\n severity = MessageSeverity.default;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = Utilities.getHttpResponseMessage(data);\r\n separatorOrDetail = Utilities.captionAndMessageSeparator;\r\n }\r\n\r\n\r\n if (data instanceof Array) {\r\n for (let message of data) {\r\n let msgObject = Utilities.splitInTwo(message, separatorOrDetail);\r\n\r\n this.showMessageHelper(msgObject.firstPart, msgObject.secondPart, severity, true);\r\n }\r\n }\r\n else {\r\n\r\n if (error) {\r\n\r\n let msg = `Severity: \"${ MessageSeverity[severity] }\", Summary: \"${ data }\", Detail: \"${ separatorOrDetail }\", Error: \"${ Utilities.safeStringify(error) }\"`;\r\n\r\n switch (severity as any) {\r\n case MessageSeverity.default:\r\n this.logInfo(msg);\r\n break;\r\n case MessageSeverity.info:\r\n this.logInfo(msg);\r\n break;\r\n case MessageSeverity.success:\r\n this.logMessage(msg);\r\n break;\r\n case MessageSeverity.error:\r\n this.logError(msg);\r\n break;\r\n case MessageSeverity.warn:\r\n this.logWarning(msg);\r\n break;\r\n case MessageSeverity.wait:\r\n this.logTrace(msg);\r\n break;\r\n }\r\n }\r\n\r\n this.showMessageHelper(data, separatorOrDetail, severity, true);\r\n }\r\n }\r\n\r\n\r\n\r\n private showMessageHelper(summary: string, detail: string, severity: MessageSeverity, isSticky: boolean) {\r\n\r\n if (isSticky) {\r\n this.stickyMessages.next({ severity: severity, summary: summary, detail: detail });\r\n } else {\r\n this.messages.next({ severity: severity, summary: summary, detail: detail });\r\n }\r\n }\r\n\r\n startLoadingMessage(message = 'Loading...', caption = '') {\r\n this._isLoading = true;\r\n clearTimeout(this.loadingMessageId);\r\n\r\n this.loadingMessageId = setTimeout(() => {\r\n this.showStickyMessage(caption, message, MessageSeverity.wait);\r\n }, 1000);\r\n }\r\n\r\n stopLoadingMessage() {\r\n this._isLoading = false;\r\n clearTimeout(this.loadingMessageId);\r\n this.resetStickyMessage();\r\n }\r\n\r\n\r\n\r\n logDebug(msg) {\r\n // console.debug(msg);\r\n }\r\n\r\n logError(msg) {\r\n // console.error(msg);\r\n }\r\n\r\n logInfo(msg) {\r\n // console.info(msg);\r\n }\r\n\r\n logMessage(msg) {\r\n // console.log(msg);\r\n }\r\n\r\n logTrace(msg) {\r\n // console.trace(msg);\r\n }\r\n\r\n logWarning(msg) {\r\n console.warn(msg);\r\n }\r\n\r\n\r\n\r\n\r\n resetStickyMessage() {\r\n this.stickyMessages.next();\r\n }\r\n\r\n\r\n\r\n\r\n getDialogEvent(): Observable {\r\n return this.dialogs.asObservable();\r\n }\r\n\r\n\r\n getMessageEvent(): Observable {\r\n return this.messages.asObservable();\r\n }\r\n\r\n getStickyMessageEvent(): Observable {\r\n return this.stickyMessages.asObservable();\r\n }\r\n\r\n\r\n\r\n get isLoadingInProgress(): boolean {\r\n return this._isLoading;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n//******************** Dialog ********************//\r\nexport class AlertDialog {\r\n constructor (public message: string, public type: DialogType, public okCallback: (val?: any) => any, public cancelCallback: () => any,\r\n public defaultValue: string, public okLabel: string, public cancelLabel: string) {\r\n\r\n }\r\n}\r\n\r\nexport enum DialogType {\r\n alert,\r\n confirm,\r\n prompt\r\n}\r\n//******************** End ********************//\r\n\r\n\r\n\r\n\r\n\r\n\r\n//******************** Growls ********************//\r\nexport class AlertMessage {\r\n constructor (public severity: MessageSeverity, public summary: string, public detail: string) { }\r\n}\r\n\r\nexport enum MessageSeverity {\r\n success,\r\n default,\r\n info,\r\n error,\r\n warn,\r\n wait\r\n}\r\n//******************** End ********************//\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { SettingsService } from './settings.service';\r\nimport { IServerSettings, IServiceError, IUserLoginData } from '../models/index';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { of } from 'rxjs/observable/of';\r\nimport { DataScopesEnum } from '../../shared/enums/index';\r\nimport { StorageManagerService } from './storage-manager.service';\r\nimport { headerRefreshed } from '@syncfusion/ej2-angular-grids';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiCredentialsService {\r\n\r\n private action: string;\r\n private apiGatewayUrl: string;\r\n private commonApiGatewayUrl: string;\r\n private data: any;\r\n private settings: IServerSettings;\r\n dataScopeEnum = DataScopesEnum;\r\n private industryId = 1;\r\n private termUsageId = 2;\r\n\r\n constructor (protected http: HttpClient, private settingsService: SettingsService, private authService: AuthenticationService, private storageManagerService: StorageManagerService) { }\r\n\r\n getApiCredentialsSettingsMock() {\r\n return this.http.get('../assets/mock/api_credentials_settings.json');\r\n }\r\n\r\n getApiCredentialsDataMock() {\r\n return this.http.get('../assets/mock/api_credentials.json');\r\n }\r\n\r\n getAccessPermissionsMock() {\r\n return this.http.get('../assets/mock/access-permissions.json');\r\n }\r\n\r\n getClientLanguagesMock() {\r\n return this.http.get('../assets/mock/language_grid_mock.json');\r\n }\r\n\r\n saveApiCredentials(apiCredentials: any, ha: string) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/Credential/SaveApiCredentials`;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('applicationVariantName', ha.toLowerCase());\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, apiCredentials, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n getApiCredentials(customer) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/Credential/GetApiCredentialIds`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n deleteApiCredentials(apiCredentialId: string, appVar: string) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/Credential/RemoveApiCredentials`;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('applicationVariantName', appVar.toLowerCase());\r\n headers = headers.set('apiCredentialId', apiCredentialId);\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, null, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public getSystemLanguages(termCategoryId) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.commonApiGatewayUrl = this.settings.CommonApiGatewayUrl;\r\n this.action = `rds/v1/terms/industry?industryId=${ this.industryId }&termusageId=${ this.termUsageId }&categoryId=${ termCategoryId }`;\r\n\r\n const headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${ this.commonApiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public getClientLanguages() {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/LanguageSupport/LanguageSupportSettings`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n saveChannelLanguageConfig(container: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/LanguageSupport/LanguageSupportSettings`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, container, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n private handleHttpError(error: HttpErrorResponse): Observable {\r\n\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n const dataError = new IServiceError();\r\n dataError.errorNumber = error.error ? error.error.number : '';\r\n dataError.message = error.message;\r\n dataError.friendlyMessage = error.status ? `Http call failed with status ${ error.status }` : `Http call failed`;\r\n dataError.errorMessage = error.error ? error.error.message : '';\r\n dataError.errorStatus = error.status;\r\n dataError.url = error.url;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return of(dataError);\r\n }\r\n }\r\n}\r\n","import { Injectable, OnInit, OnDestroy, NgZone } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { OidcSecurityService} from 'angular-auth-oidc-client';\r\nimport { SettingsService } from './settings.service';\r\nimport { StorageManagerService } from './storage-manager.service'\r\nimport { Utilities } from './utilities';\r\nimport { IUserLoginData, IUserLoginApplication } from '../models/index';\r\n// import { datadogRum } from '@datadog/browser-rum';\r\n\r\n@Injectable()\r\nexport class AuthenticationService implements OnInit, OnDestroy {\r\n\r\n isAuthorized: boolean;\r\n logoutStarted = false;\r\n subscription: Subscription;\r\n ddBrowserRum;\r\n\r\n\tconstructor (private oidcSecurityService: OidcSecurityService, private http: HttpClient,\r\n\t\tprivate settingsService: SettingsService, private storageManagerService: StorageManagerService, private ngzone: NgZone) {\r\n\r\n\t}\r\n\r\n\tngOnInit() {\r\n this.subscription = this.oidcSecurityService.isAuthenticated$.subscribe(\r\n\t\t\t(isAuthorized: boolean) => {\r\n\t\t\t\tthis.isAuthorized = isAuthorized;\r\n });\r\n }\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this.subscription) {\r\n\t\t\tthis.subscription.unsubscribe();\r\n }\r\n\t}\r\n\r\n\tgetIsAuthorized(): Observable {\r\n return this.oidcSecurityService.isAuthenticated$;\r\n\t}\r\n\r\n\tgetUserData(): Observable {\r\n return this.oidcSecurityService.userData$;\r\n\t}\r\n\r\n\tlogin() {\r\n\t\tconsole.log('start login');\r\n\t\tthis.oidcSecurityService.authorize();\r\n\t}\r\n\r\n\trefreshSession() {\r\n\t\tconsole.log('start refreshSession');\r\n this.oidcSecurityService.forceRefreshSession().subscribe((result) => console.log(result));\r\n\t}\r\n\r\n logout() {\r\n console.log('start logoff');\r\n this.logoutStarted = true;\r\n this.oidcSecurityService.logoff();\r\n }\r\n\r\n // Logout\r\n public captureLogoutEvent(displayableId: string) {\r\n return this.get(`${ window.location.origin }/api/user/logout?loginName=${ displayableId }&appName=SingleSource`);\r\n }\r\n\r\n\tgetBearerToken(): string {\r\n\t\tconst token = this.oidcSecurityService.getToken();\r\n\t\tif (token === '') { return ''; }\r\n\r\n return 'Bearer ' + token;\r\n }\r\n\r\n get(url: string): Observable {\r\n\r\n return this.http.get(url, { headers: this.getHeaders() });\r\n }\r\n\r\n post(url: string, data: any): Observable {\r\n\r\n const body = JSON.stringify(data);\r\n return this.http.post(url, body, { headers: this.getHeaders() });\r\n }\r\n\r\n private getHeaders(setContentType?: boolean, isApplicationLevel?: boolean) {\r\n\r\n let authData: IUserLoginData = this.getAuthData();\r\n\r\n if (!authData) {\r\n authData = authData ? authData : this.storageManagerService.read('userData');\r\n\r\n if (!authData) {\r\n this.getUserData().subscribe(res => {\r\n if (res) {\r\n this.storageManagerService.write('userData', res);\r\n authData = this.getAuthData();\r\n }\r\n });\r\n }\r\n } else {\r\n\r\n let applicationVariantId = authData.applicationVariantId ? authData.applicationVariantId.toString() : '';\r\n let customer = this.storageManagerService.read('currentCustomer');\r\n const applicationName = authData.applicationName;\r\n const applicationVariantName = authData.applicationVariantName;\r\n\r\n if (customer && !Utilities.TestIsObjectEmpty(customer)) {\r\n\r\n if (typeof customer !== 'object') {\r\n customer = JSON.parse(customer);\r\n }\r\n authData.customerGuid = customer.customerGuid.toString();\r\n if (customer.applicationVariants.length === 1) {\r\n applicationVariantId = customer.applicationVariants[0].applicationVariantId.toString();\r\n }\r\n } else {\r\n authData.customerGuid = '';\r\n }\r\n\r\n let headers;\r\n if (isApplicationLevel) {\r\n headers = new HttpHeaders(\r\n {\r\n 'customerGuid': authData.customerGuid ? authData.customerGuid : '',\r\n 'applicationName': applicationName\r\n });\r\n } else {\r\n headers = new HttpHeaders(\r\n {\r\n 'customerGuid': authData.customerGuid ? authData.customerGuid : '',\r\n 'applicationVariantId': applicationVariantId,\r\n 'applicationName': applicationName,\r\n 'applicationVariantName': applicationVariantName\r\n });\r\n }\r\n\r\n if (setContentType) {\r\n headers = headers.set('content-type', 'application/json');\r\n }\r\n\r\n return this.appendAuthHeader(headers);\r\n }\r\n }\r\n\r\n private appendAuthHeader(headers: HttpHeaders) {\r\n\r\n const token = this.oidcSecurityService.getToken();\r\n\r\n if (token === '') { return headers; }\r\n\r\n const tokenValue = 'Bearer ' + token;\r\n headers = headers.set('authorization', tokenValue);\r\n\r\n return headers;\r\n }\r\n\r\n public getAuthData(): any {\r\n let applications: IUserLoginApplication[];\r\n let appVariantId: number;\r\n let authData: IUserLoginData;\r\n let appVariantName: string;\r\n let applicationName: string;\r\n\r\n authData = this.storageManagerService.read('userData');\r\n\r\n if (authData) {\r\n\r\n if (authData.applications && typeof authData.applications !== 'object') {\r\n applications = JSON.parse(authData.applications as any);\r\n }\r\n\r\n if (applications && applications.length > 0) {\r\n\r\n const dataScope = this.storageManagerService.read('dataScope');\r\n\r\n if (dataScope) {\r\n\r\n appVariantId = +applications.find(a => a.AVName.toLowerCase() === dataScope.toLowerCase()).AVId;\r\n appVariantName = applications.find(a => a.AVName.toLowerCase() === dataScope.toLowerCase()).AVName.toLowerCase();\r\n applicationName = applications[0].AName;\r\n } else {\r\n // temporarily until the spike is resolved\r\n appVariantId = 251;\r\n applicationName = 'SingleSource';\r\n appVariantName = 'eudamed';\r\n }\r\n\r\n if (authData.userguid && appVariantId) {\r\n\r\n authData.userGuid = authData.userguid;\r\n authData.applicationVariantId = appVariantId.toString();\r\n authData.applicationVariantName = appVariantName;\r\n authData.applicationName = applicationName;\r\n }\r\n }\r\n return authData;\r\n }\r\n }\r\n\r\n public setHeader(setContentType?: boolean, isApplicationLevel?: boolean): HttpHeaders {\r\n\r\n return this.getHeaders(setContentType, isApplicationLevel);\r\n }\r\n\r\n // Initialize datadog script element\r\n async initDataDogScriptElement() {\r\n // set datadog script element\r\n this.ddBrowserRum = await import(/* webpackChunkName: \"datadog-browser-rum\" */'@datadog/browser-rum');\r\n }\r\n\r\n initPendo(userguid, customerName) {\r\n this.ngzone.runOutsideAngular(function () {\r\n (function (apiKey) {\r\n (function (p, e, n, d, o) {\r\n\r\n let v, w, x, y, z; o = p[d] = p[d] || {}; o._q = [];\r\n\r\n v = ['initialize', 'identify', 'updateOptions', 'pageLoad'];\r\n\r\n for (w = 0, x = v.length; w < x; ++w) {\r\n\r\n (function (m) {\r\n o[m] = o[m] || function () { o._q[m === v[0] ? 'unshift' : 'push']([m].concat([].slice.call(arguments, 0))); };\r\n })(v[w]);\r\n }\r\n\r\n y = e.createElement(n); y.async = !0; y.src = 'https://cdn.pendo.io/agent/static/' + apiKey + '/pendo.js';\r\n z = e.getElementsByTagName(n)[0]; z.parentNode.insertBefore(y, z);\r\n })(window, document, 'script', 'pendo');\r\n\r\n // Please use Strings, Numbers, or Bools for value types.\r\n window['pendo'].initialize({\r\n visitor: {\r\n id: userguid // Required if user is logged in\r\n },\r\n\r\n account: {\r\n id: customerName\r\n\r\n // You can add any additional account level key-values here,\r\n // as long as it's not one of the above reserved names.\r\n }\r\n });\r\n })('d61d92d8-e1ef-4a59-4f1f-3f8c9f94cbd8');\r\n });\r\n }\r\n\r\n // Set script element attribute\r\n setScriptAttribute(srcJs, attClass, attName) {\r\n this.ngzone.runOutsideAngular(function () {\r\n (function (srcJs, attClass, attName) {\r\n (function (d) {\r\n\r\n var sourceScripts = d.getElementsByTagName('script');\r\n\r\n for (var i = 0; i < sourceScripts.length; i++) {\r\n if (sourceScripts[i].src.indexOf(srcJs) != -1) {\r\n sourceScripts[i].removeAttribute(attName);\r\n sourceScripts[i].setAttribute(attName, attClass);\r\n }\r\n }\r\n })(document);\r\n })(srcJs, attClass, attName);\r\n });\r\n }\r\n\r\n // Initialize DataDog monitering service\r\n initDataDogRUM() {\r\n // Init DataDog monitoring service if the flag is on\r\n const bIsDataDogEnabled = this.settingsService.dataDogEnabled && this.settingsService.dataDogEnabled.toString().toLowerCase() === 'true' ? true : false;\r\n if (bIsDataDogEnabled) {\r\n this.ddBrowserRum.datadogRum?.init({\r\n applicationId: this.settingsService.dataDogApplicationId,\r\n clientToken: this.settingsService.dataDogClientToken,\r\n site: this.settingsService.dataDogSite,\r\n service: this.settingsService.DataDogService,\r\n env: this.settingsService.dataDogEnv,\r\n version: this.settingsService.dataDogVersion,\r\n sampleRate: this.settingsService.dataDogSampleRate ? +this.settingsService.dataDogSampleRate : 100, // set default to 100%\r\n silentMultipleInit: true,\r\n trackInteractions: this.settingsService.dataDogTrackInteractions && this.settingsService.dataDogTrackInteractions.toString().toLowerCase() === 'true' ? true : false,\r\n allowedTracingOrigins: this.settingsService.dataDogAllowedTracingOrigins ? this.settingsService.dataDogAllowedTracingOrigins.replace(/ /g, '').split(',') : []\r\n });\r\n }\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { ErrorObservable } from 'rxjs/observable/ErrorObservable';\r\nimport { AppGlobals } from '../globals/appGlobals';\r\nimport { IPermission, IServiceError, IUserAccessPermissions, IUserLoginData } from '../models/index';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { StorageManagerService } from './storage-manager.service';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthorizationService {\r\n\r\n private accessSettings: IUserAccessPermissions;\r\n public hasPermissionSubject: BehaviorSubject = new BehaviorSubject(false);\r\n public lastLogonDateSourceSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor (private router: Router, private storage: StorageManagerService,\r\n private authenticationService: AuthenticationService, private storageManagerService: StorageManagerService, private appGlobals: AppGlobals) { }\r\n\r\n // Checks whether the user has permission to the application or not\r\n public getPermisions(displayableId: string): any {\r\n\r\n const permissions$ = this.authenticationService.get(`${ window.location.origin }/api/user/permissions?loginName=${ displayableId }&appName=SingleSource`);\r\n\r\n return permissions$;\r\n }\r\n\r\n public setAccessPermissions(email: string): any {\r\n\r\n let customer: any;\r\n let url: string;\r\n let dataScope: string;\r\n let userData: IUserLoginData;\r\n let applicationName: string;\r\n\r\n\r\n if (email) {\r\n\r\n customer = this.storageManagerService.read('currentCustomer');\r\n // don't need a datascope because the call returns all permission per client and they are filtered in the calling component\r\n dataScope = ''; // this.storageManagerService.read('dataScope') ? this.storageManagerService.read('dataScope') : '';\r\n userData = this.storageManagerService.read('userData');\r\n\r\n if (userData) {\r\n\r\n this.storageManagerService.read('dataScope');\r\n\r\n if (customer && typeof customer !== 'object') {\r\n\r\n customer = JSON.parse(customer);\r\n }\r\n\r\n if (userData.applications && typeof userData.applications !== 'object') {\r\n\r\n applicationName = JSON.parse(userData.applications)[0].AName;\r\n }\r\n\r\n url = `${ window.location.origin }/api/User/AccessPermissions?loginName=${ email }&applicationName=${applicationName}&channel=${dataScope}&customerGuid=${ customer.customerGuid }`;\r\n\r\n // url = '../assets/mock/accessObject.json'; // mock permission data\r\n\r\n return this.authenticationService.get(url);\r\n }\r\n }\r\n }\r\n\r\n hasPermissionPerClient(permissionName: string): boolean {\r\n\r\n let retVal = false;\r\n\r\n const permissions: IPermission[] = this.storageManagerService.read('accessPermissions');\r\n\r\n if (!permissionName || !permissions || !permissions.length) {\r\n return retVal;\r\n }\r\n\r\n retVal = permissions.findIndex(i => i.permissionName === permissionName) >= 0;\r\n\r\n return retVal;\r\n }\r\n\r\n hasPermission(permissionName: string): boolean {\r\n\r\n let retVal = false;\r\n\r\n // returns an array of IPermision\r\n const permissions: IPermission[] = this.storageManagerService.read('accessPermissions');\r\n const dataScope = this.storageManagerService.read('dataScope');\r\n\r\n if (!permissionName || !permissions || !permissions.length) {\r\n return retVal;\r\n }\r\n\r\n if (dataScope) {\r\n retVal = permissions.findIndex(p => p.applicationVariantName.toLowerCase() === dataScope.toLowerCase() && p.permissionName === permissionName) > 0;\r\n } else {\r\n retVal = permissions.findIndex(p => p.permissionName === permissionName) > 0;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n exportDataPermission() {\r\n\r\n let retVal = false;\r\n\r\n const exportDataPermissions = [\r\n this.appGlobals.permissions.CreateEditExportTemplate,\r\n this.appGlobals.permissions.ExecuteExportDownloadTemplate,\r\n this.appGlobals.permissions.DeleteExportTemplate\r\n ];\r\n\r\n const permissions: IPermission[] = this.storageManagerService.read('accessPermissions');\r\n\r\n if ( !permissions || !permissions.length) {\r\n return retVal;\r\n }\r\n\r\n retVal = permissions.some( p => exportDataPermissions.includes(p.permissionName) );\r\n\r\n return retVal;\r\n }\r\n\r\n permissionsToStringObject(permissionSet): string[] {\r\n\r\n let retVal: string[] = [];\r\n\r\n // create a set of unique permission strings.\r\n if (permissionSet && permissionSet.length) {\r\n\r\n retVal = permissionSet.map((item: IPermission) => item.permissionName)\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n private handleHttpError(error: HttpErrorResponse): Observable {\r\n\r\n let errorMessage = '';\r\n\r\n if (error.error instanceof ErrorEvent) {\r\n // client-side error\r\n errorMessage = `Error: ${ error.error.message }`;\r\n } else {\r\n // server-side error\r\n errorMessage = `Error Code: ${ error.status }\\nMessage: ${ error.message }`;\r\n }\r\n\r\n const dataError = new IServiceError();\r\n dataError.errorNumber = error.error ? error.error.number : 0;\r\n dataError.message = errorMessage ? errorMessage : '';\r\n dataError.friendlyMessage = `Oops.. Something's wrong.. Please try again later.`;\r\n dataError.errorMessage = errorMessage ? errorMessage : '';\r\n dataError.errorStatus = error.status;\r\n dataError.url = error.url;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return ErrorObservable.create(dataError);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PreloadingStrategy, Route} from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomPreloadingService implements PreloadingStrategy {\r\n\r\n constructor () { }\r\n\r\n preload(route: Route, fn: () => Observable): Observable {\r\n\r\n if (route.data && route.data.preload) {\r\n return fn();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport 'rxjs/Rx';\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/catch';\r\nimport 'rxjs/add/operator/map';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ApplicationSelection } from '../../shared/models/application.model';\r\nimport { IServerSettings } from '../../shared/models/serversettings';\r\nimport { ICustomerApplicationVariant, IIngestedDevicesChart, ISubmittedDevicesChart } from '../models';\r\nimport { IApplicationSettings } from '../models/app-settings.model';\r\nimport { ICustomer } from '../models/customer.model';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { SettingsService } from './settings.service';\r\n\r\n@Injectable()\r\nexport class CustomerService {\r\n private customerServiceUrl: string;\r\n private serverSettings: IServerSettings;\r\n private action: string;\r\n private apiGatewayUrl: string;\r\n private settings: IServerSettings;\r\n private applicationName = 'Not selected';\r\n settingsServiceUrl: string;\r\n\r\n applicationSettings: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n private applicationSource = new BehaviorSubject(new ApplicationSelection(this.applicationName, 'Not selected'));\r\n applicationChanged$ = this.applicationSource.asObservable();\r\n\r\n private customerSource = new BehaviorSubject(null);\r\n customerChanged$ = this.customerSource.asObservable();\r\n\r\n constructor (private http: HttpClient, private settingsService: SettingsService, private authService: AuthenticationService) {\r\n this.serverSettings = this.settingsService.getSettings();\r\n this.customerServiceUrl = `${ this.serverSettings.CommonApiGatewayUrl }/ids/v1/customer/`;\r\n this.settingsServiceUrl = `${ this.serverSettings.CommonApiGatewayUrl }/set/v1/companies/`;\r\n }\r\n\r\n\r\n getCustomers(paramsContainer): Observable {\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.customerServiceUrl }GetCustomers`, paramsContainer, { headers: headers })\r\n .map(this.extractData)\r\n .catch(this.handleErrors);\r\n }\r\n\r\n getCustomerApplicationVariants(paramsContainer): Observable {\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n const url = `${ this.customerServiceUrl }GetCustomerApplicationVariantsByApplicationUser`\r\n + `?applicationName=${ paramsContainer.applicationName }&userGuid=${ paramsContainer.userGuid }`;\r\n\r\n return this.http.post(url, {}, { headers: headers })\r\n .map(this.extractData)\r\n .catch(this.handleErrors);\r\n }\r\n\r\n getCompanySetting(customerId: string, settingName: string): Observable {\r\n\r\n const url = `${ this.settingsServiceUrl }SettingByName?settingName=${ settingName }`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n headers = headers.set('customerId', customerId);\r\n\r\n return this.http.get(url, { headers: headers }).pipe(\r\n catchError(err => this.handleErrors(err))\r\n );\r\n }\r\n\r\n getCustomerIngestedDevicesChartData(paramsContainer): Observable {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\r\n this.action = `rpts/v1/Dashboard/GetClientIdDeviceInformation`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n headers = headers.set('clientId', `${ paramsContainer.clientId }`);\r\n headers = headers.set('userGuid', paramsContainer.userGuid);\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleErrors(err))\r\n );\r\n }\r\n\r\n getCustomerSubmittedDevicesChartData(paramsContainer): Observable {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\r\n this.action = `sub/v1/Dashboard/GetClientIdSubmissionHistoryInformation`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n headers = headers.set('clientId', `${ paramsContainer.clientId }`);\r\n headers = headers.set('userGuid', paramsContainer.userGuid);\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleErrors(err))\r\n );\r\n }\r\n\r\n getApplications(): Observable {\r\n const url = `${ this.customerServiceUrl }getapplications`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(url, null, { headers: headers })\r\n .map(this.extractData)\r\n .catch(this.handleErrors);\r\n }\r\n\r\n getMigrationStatus(dataScope: string): Observable {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\r\n this.action = `rpts/v1/DataWarehouse/GetMigrationStatus`;\r\n\r\n let headers = this.authService.setHeader(false, false);\r\n\r\n return this.http.get(`${this.apiGatewayUrl}/${this.action}`, { headers: headers }).pipe(\r\n catchError(err => this.handleErrors(err))\r\n );\r\n }\r\n\r\n getMigrationStatusWithRegistration(dataScope: string, registrationTypeSelection: string): Observable {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\r\n this.action = `rpts/v1/DataWarehouse/GetMigrationStatus`;\r\n\r\n let headers = this.authService.setHeader(false, false);\r\n\r\n let apiUrl = `${this.apiGatewayUrl}/${this.action}?registrationType=${registrationTypeSelection}`;\r\n\r\n return this.http.get(apiUrl, { headers: headers }).pipe(\r\n catchError(err => this.handleErrors(err))\r\n );\r\n\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleErrors(err))\r\n );\r\n }\r\n\r\n\r\n private extractData(response: Response) {\r\n\r\n if (response.status < 200 || response.status >= 300) {\r\n throw new Error('Bad response status: ' + response.status);\r\n }\r\n\r\n const body = response;\r\n\r\n return body || {};\r\n }\r\n\r\n public changeSelectedApplication(application: string): void {\r\n this.applicationName = application;\r\n this.applicationSource.next(new ApplicationSelection(application, '' /*this.serverSettings.Environment*/));\r\n }\r\n\r\n public changeSelectedCustomer(customer: ICustomer): void {\r\n\r\n this.customerSource.next(customer);\r\n }\r\n\r\n\r\n private handleErrors(error: any): Observable {\r\n const errors: string[] = [];\r\n\r\n switch (error.status) {\r\n case 400: // Bad Request or Model State Error\r\n const err = error.json();\r\n if (err.modelState) {\r\n const valErrors = error.json().modelState;\r\n for (var key in valErrors) {\r\n for (var i = 0; i < valErrors[key].length; i++) {\r\n errors.push(valErrors[key][i]);\r\n }\r\n }\r\n } else if (err.message) {\r\n errors.push(err.message);\r\n } else {\r\n errors.push('An Unknown error occurred.');\r\n }\r\n break;\r\n\r\n case 404: // Not Found\r\n errors.push('Resource not found.');\r\n break;\r\n\r\n case 500: // Internal Error\r\n errors.push(error.json().exceptionMessage);\r\n break;\r\n\r\n default:\r\n errors.push('Status: ' + error.status\r\n + ' - Error Message: '\r\n + error.statusText);\r\n break;\r\n }\r\n // console.error('An error occurred', errors);\r\n\r\n return throwError(errors.join(';'));//Observable.throw(errors);\r\n }\r\n\r\n getIngestedDeviceChartDataMock(paramsContainer) {\r\n\r\n return this.http.get('../../../assets/mock/ingested-devices-chart.json');\r\n }\r\n\r\n getSubmittedDeviceChartDataMock(paramsContainer) {\r\n\r\n return this.http.get('../../../assets/mock/submitted-devices-chart.json');\r\n }\r\n\r\n getRevalidationCheckMock(datascope) {\r\n\r\n return this.http.get('../../../assets/mock/revalidation.json');\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DataResult, DataStateChangeEventArgs, PredicateModel, Sorts } from '@syncfusion/ej2-angular-grids';\r\nimport { Predicate } from '@syncfusion/ej2-data';\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/map';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { ICustomer, ISelectAll, IServerSettings, IServiceError, ISubmission, IValidation } from '../models/index';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { SettingsService } from './settings.service';\r\nimport { StorageManagerService } from './storage-manager.service';\r\nimport { AppGlobals } from '../globals/appGlobals';\r\nimport { RegistrationTypeEnum } from '../enums/index';\r\n\r\n@Injectable()\r\nexport class DeviceinventoryService {\r\n\r\n private action: string;\r\n private apiGatewayUrl: string;\r\n private commonApiGatewayUrl: string;\r\n private data: any;\r\n private settings: IServerSettings;\r\n private industryId = 1;\r\n private termCategoryId = 33;\r\n private termUsageId = 2;\r\n permissionsConst: any;\r\n\r\n\r\n apiResult: any;\r\n\r\n manageDiDownloadLogBS: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n submissionHistoryDownloadLogBS: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n constructor (private http: HttpClient, private settingsService: SettingsService, private authService: AuthenticationService, private storage: StorageManagerService, private appGlobals: AppGlobals) {\r\n }\r\n\r\n public getAppGridDefaults() {\r\n return this.http.get('../assets/griddefaults.json');\r\n }\r\n\r\n public getDeviceMapping() {\r\n return this.http.get('../assets/device-mapping.json');\r\n }\r\n\r\n public getMockManageDI() {\r\n return this.http.get('../assets/mock/db_manage_di.json');\r\n }\r\n\r\n public getMockSubmissionHistory() {\r\n return this.http.get('../assets/mock/db_subm_history.json');\r\n }\r\n\r\n public getMockManageSubmissionItems() {\r\n return this.http.get('../assets/mock/db_manage_subm_items.json');\r\n }\r\n\r\n public getUserPrefsMock() {\r\n return this.http.get('../assets/mock/user-prefs.json');\r\n }\r\n\r\n public getSubmissionHistoryItemMock() {\r\n return this.http.get('../assets/mock/submission-item.json');\r\n }\r\n\r\n public getSubmissionItemMock() {\r\n return this.http.get('../assets/mock/submission-item-mock.json');\r\n }\r\n\r\n public getManageSubmissionItemMock() {\r\n return this.http.get('../assets/mock/manage_submission_Item_mock.json');\r\n }\r\n\r\n public getItemDetailsMock() {\r\n return this.http.get('../assets/mock/item_details_mock.json');\r\n }\r\n\r\n public getInventoryItem(documentId: string, clientId: number) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `dos/v1/documents/${ documentId }?clientid=${ clientId }`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public getSubmissionItemDetails(itemType: string, submissionGuid: string) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/aggregate/SubmissionItemDetailsByGuid?submissionGuid=${ submissionGuid }&itemType=${ itemType }`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public getDataScopes() {\r\n this.settings = this.settingsService.getSettings();\r\n this.commonApiGatewayUrl = this.settings.CommonApiGatewayUrl;\r\n this.action = `rds/v1/terms/industry?industryId=${ this.industryId }&termusageId=${ this.termUsageId }&categoryId=${ this.termCategoryId }`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(`${ this.commonApiGatewayUrl }/${ this.action }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public getUserPrefs(userGuid: string, customerId: string) {\r\n\r\n this.permissionsConst = this.appGlobals.permissions;\r\n this.settings = this.settingsService.getSettings();\r\n this.commonApiGatewayUrl = this.settings.CommonApiGatewayUrl;\r\n this.action = `set/v1/Users`;\r\n\r\n let headers = this.authService.setHeader();\r\n headers = headers.set('userId', userGuid);\r\n headers = headers.set('customerId', customerId);\r\n headers = headers.set('permission', this.permissionsConst.CanReadData);\r\n\r\n return this.http.get(`${ this.commonApiGatewayUrl }/${ this.action }/${ userGuid }?applicationId=SingleSource`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n\r\n }\r\n\r\n saveUserPrefs(userPrefs: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.commonApiGatewayUrl = this.settings.CommonApiGatewayUrl;\r\n this.action = `set/v1/Users`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.commonApiGatewayUrl }/${ this.action }`, userPrefs, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public execute(state: any, grid: any, clientId: number, itemType: string, dataScope: string, language: string) {\r\n this.getData(state, grid, clientId, itemType, dataScope, language).subscribe(x => {\r\n });\r\n }\r\n\r\n\r\n getTimeZone() {\r\n\r\n let offset = new Date().getTimezoneOffset(), o = Math.abs(offset);\r\n return (offset < 0 ? \"+\" : \"-\") + (\"00\" + Math.floor(o / 60)).slice(-2) + \":\" + (\"00\" + (o % 60)).slice(-2);\r\n }\r\n\r\n public getData(state: DataStateChangeEventArgs, grid, clientId: number, itemType: string, dataScope: string, language: string, \r\n registrationType: RegistrationTypeEnum = undefined): Observable {\r\n const pageQuery = `skip=${ state.skip }&top=${ state.take }`;\r\n let sortQuery = '&orderby=Modified Date/Time desc';\r\n let filterQuery = '';\r\n\r\n if ((state.sorted || []).length) {\r\n sortQuery = `&orderby=` + state.sorted.map((obj: Sorts) => {\r\n return obj.direction === 'descending' ? `${ obj.name } desc` : `${ obj.name } asc`;\r\n }).reverse().join(',');\r\n }\r\n\r\n if (state.where) {\r\n filterQuery = `&filter=` + state.where.map((obj: any) => {\r\n return (obj).predicates.map((predicate) => {\r\n if ((predicate).predicates) {\r\n if (grid.getColumnByField((predicate).predicates[0].field).type === 'date') {\r\n return `((${ (predicate).predicates[0].field } gt ${ (predicate).predicates[0].value }) and (${ (predicate).predicates[1].field } lt ${ (predicate).predicates[1].value }))`;\r\n }\r\n } else {\r\n return predicate.operator === 'equal' ? `${ predicate.field } eq ${ predicate.value }` : `${ predicate.operator }(tolower(${ predicate.field }),'${ predicate.value }')`;\r\n }\r\n }).reverse().join(' and ');\r\n });\r\n }\r\n\r\n this.action = 'rpts/v1/Aggregate/ItemInventory';\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('clientId', clientId.toString());\r\n headers = headers.set('itemType', itemType);\r\n headers = headers.set('language', language);\r\n headers = headers.set('dataScope', dataScope.toLowerCase());\r\n\r\n filterQuery = `${ filterQuery }&timeZoneOffset=${ this.getTimeZone() }`\r\n\r\n this.storage.write('selectAllFilter', filterQuery);\r\n\r\n let apiUrl = `${ this.apiGatewayUrl }/${ this.action }?${ pageQuery }${ sortQuery }${ filterQuery }`;\r\n // We only want to pass the RegistrationType argument for Legacy requests.\r\n if(registrationType === RegistrationTypeEnum.Legacy){\r\n apiUrl += `®istrationType=${registrationType}`;\r\n }\r\n\r\n return this.http.get(apiUrl, { headers: headers }).pipe(\r\n map(\r\n this.extractData\r\n ),\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public validateSelectedDevices(validations: IValidation[], clientId: number, priorityId: number) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `val/v1/Validation/CreateValidation?priorityId=${priorityId}`;\r\n\r\n const authData = this.getAuthData();\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('userId', authData['userGuid']);\r\n headers = headers.set('customerId', clientId.toString());\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, validations, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public approveSelectedDevices(submissions: ISubmission[], clientId: number) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/Submission/CreateSubmission`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, submissions, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public getRevisionHistory(documentId: string, clientId: number) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `dos/v1/DocumentRevisionHistory`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(`${ this.apiGatewayUrl }/${ this.action }/${ documentId }/revisionhistory?clientId=${ clientId }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public validateSelectedAll(itemType: string, dataScope: string, filter: string, registrationType: number = 1) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/DataWarehouse/ValidateByFilter`;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('itemType', itemType);\r\n headers = headers.set('dataScope', dataScope);\r\n\r\n // If the filter is present, we need to lead with a & else a ? (since RegistrationType will be the only query)\r\n let regTypeQueryString = filter && filter.length > 0 ? '&' : '?'\r\n regTypeQueryString += `registrationType=${registrationType}`;\r\n const url = `${ this.apiGatewayUrl }/${ this.action }${ filter ?? '' }${regTypeQueryString}`;\r\n\r\n return this.http.get(url, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public submitSelectedAll(itemType: string, dataScope: string, filter: string, registrationTypeCode: number = 1) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/DataWarehouse/SubmitByFilter`;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('itemType', itemType);\r\n headers = headers.set('dataScope', dataScope);\r\n\r\n // If the filter is present, we need to lead with a & else a ? (since RegistrationType will be the only query)\r\n let regTypeCodeQueryString = filter && filter.length > 0 ? '&' : '?'\r\n regTypeCodeQueryString += `registrationTypeCode=${registrationTypeCode}`;\r\n\r\n const url = `${this.apiGatewayUrl}/${this.action}${filter ?? ''}${regTypeCodeQueryString}`;\r\n\r\n return this.http.get(url, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public downloadValidationLogAll(itemType: string, dataScope: string, registrationType: number = 1, filter: string) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExtractLog/CreateValidationLogTask`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n\r\n headers = headers.set('itemType', itemType);\r\n headers = headers.set('applicationVariantName', dataScope);\r\n headers = headers.set('registrationType', registrationType.toString());\r\n\r\n const url = `${ this.apiGatewayUrl }/${ this.action }${ filter ?? '' }`;\r\n\r\n return this.http.get(url, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n public downloadSubmissionLogAll(dataScope: string, filter: ISelectAll, all: boolean) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExtractLog/CreateSubmissionLogTask`;\r\n\r\n let headers = this.authService.setHeader(false, true);\r\n\r\n headers = headers.set('applicationVariantName', dataScope);\r\n\r\n const url = `${ this.apiGatewayUrl }/${ this.action }?timeZoneOffset=${ this.getTimeZone() }&all=${all}`;\r\n\r\n return this.http.post(`${ url }`, filter, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n\r\n public getDownloadLogStatus(guid: string) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExtractLog/CheckLogTask?taskguid=${ guid }`;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n const url = `${ this.apiGatewayUrl }/${ this.action }`;\r\n\r\n return this.http.get(url, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n\r\n getValidationLog(paramsContainer: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `val/v1/Validation/ValidationLog`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, paramsContainer, { responseType: 'blob' as 'json', headers: headers }).pipe(\r\n map(response => response),\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n getSubmissionLog(paramsContainer: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/Submission/SubmissionLog`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, paramsContainer, { responseType: 'blob' as 'json', headers: headers }).pipe(\r\n map(response => response),\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n private extractData(response: Response) {\r\n\r\n this.data = {\r\n result: response['value']['data'].result,\r\n count: +response['value']['data'].count\r\n };\r\n\r\n return this.data || {};\r\n }\r\n\r\n private getAuthData(): any {\r\n\r\n let applications: [] = [];\r\n let appVariantId: string;\r\n let authData = {};\r\n\r\n authData = this.storage.read('userData');\r\n\r\n const cust = this.storage.read('currentCustomer');\r\n\r\n const customer = typeof cust === 'object' ? cust : JSON.parse(cust);\r\n\r\n if (authData) {\r\n\r\n const userGuid = authData['userguid'];\r\n\r\n if (authData['applications']) {\r\n applications = JSON.parse(authData['applications']);\r\n\r\n if (applications.length > 0) {\r\n appVariantId = applications.find(a => a['AName'] === 'SingleSource')['AVId'];\r\n\r\n if (userGuid && appVariantId) {\r\n\r\n authData['userGuid'] = userGuid;\r\n authData['customerId'] = customer.customerId.toString();\r\n authData['applicationVariantId'] = appVariantId.toString();\r\n authData['customerGuid'] = customer.customerGuid;\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n return authData;\r\n }\r\n\r\n getSubmissionHistory(clientId, channel, state: DataStateChangeEventArgs, grid, all: boolean): Observable {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/SubmissionHistory`;\r\n\r\n const params = `&customerId=${ clientId }&channel=${ channel }&all=${ all }`;\r\n\r\n const apiUrl = this.setApiCall(state, this.action, grid, params);\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(apiUrl, { headers: headers });\r\n }\r\n public getSubmissionHistoryData(state: DataStateChangeEventArgs, grid, clientId: number, dataScope: string, all: boolean): Observable {\r\n const pageQuery = `skip=${state.skip}&top=${state.take}&all=${all}`; \r\n let sortQuery = '&orderby=createDate desc';\r\n switch (dataScope) {\r\n case 'china-udi':\r\n sortQuery = '&orderby=changeDate desc';\r\n break;\r\n case 'southkorea-udi':\r\n sortQuery = '&orderby=changeDate desc';\r\n break;\r\n }\r\n let filterQuery = '';\r\n\r\n if ((state.sorted || []).length) {\r\n sortQuery = `&orderby=` + state.sorted.map((obj: Sorts) => {\r\n return obj.direction === 'descending' ? `${obj.name} desc` : `${obj.name} asc`;\r\n }).reverse().join(',');\r\n }\r\n\r\n if (state.where) {\r\n filterQuery = `&filter=` + state.where.map((obj: any) => {\r\n return (obj).predicates.map((predicate) => {\r\n if ((predicate).predicates) {\r\n if (grid.getColumnByField((predicate).predicates[0].field).type === 'date') {\r\n return `((${(predicate).predicates[0].field} gt ${(predicate).predicates[0].value}) and (${(predicate).predicates[1].field} lt ${(predicate).predicates[1].value}))`;\r\n }\r\n } else {\r\n return predicate.operator === 'equal' ? `${predicate.field} eq ${predicate.value}` : `${predicate.operator}(tolower(${predicate.field}),'${predicate.value}')`;\r\n }\r\n }).reverse().join(' and ');\r\n });\r\n }\r\n\r\n this.action = 'rpts/v1/Aggregate/SubmissionHistoryInventory';\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n headers = headers.set('clientId', clientId.toString());\r\n headers = headers.set('dataScope', dataScope.toLowerCase());\r\n\r\n filterQuery = `${filterQuery}&timeZoneOffset=${this.getTimeZone()}`\r\n\r\n this.storage.write('selectAllFilter', filterQuery);\r\n\r\n const apiUrl = `${this.apiGatewayUrl}/${this.action}?${pageQuery}${sortQuery}${filterQuery}`;\r\n\r\n return this.http.get(apiUrl, { headers: headers }).pipe(\r\n map(\r\n this.extractData\r\n ),\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n getSubmissionItems(status, type, clientId, channel, state: DataStateChangeEventArgs, grid): Observable {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/Aggregate/GetSubmissions`;\r\n\r\n const params = `&customerId=${ clientId }&submissionStatus=${ status }&submissionType=${ type }&channel=${ channel }`;\r\n\r\n const apiUrl = this.setApiCall(state, this.action, grid, params);\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(apiUrl, { headers: headers });\r\n }\r\n\r\n setApiCall(state, action, grid, params): string {\r\n\r\n const pageQuery = `skip=${ state.skip }&top=${ state.take }`;\r\n let sortQuery = '';\r\n let filterQuery = '';\r\n\r\n if ((state.sorted || []).length) {\r\n sortQuery = `&orderby=` + state.sorted.map((obj: Sorts) => {\r\n return obj.direction === 'descending' ? `${ obj.name } desc` : `${ obj.name } asc`;\r\n }).reverse().join(',');\r\n }\r\n\r\n if (state.where) {\r\n filterQuery = `&filter=` + state.where.map((obj: PredicateModel) => {\r\n return (obj).predicates.map((predicate) => {\r\n if ((predicate).predicates) {\r\n if (grid.getColumnByField((predicate).predicates[0].field).type === 'date') {\r\n return `((${ (predicate).predicates[0].field } gt ${ (predicate).predicates[0].value }) and (${ (predicate).predicates[1].field } lt ${ (predicate).predicates[1].value }))`;\r\n }\r\n } else {\r\n return predicate.operator === 'equal' ? `${ predicate.field } eq ${ predicate.value }` : `${ predicate.operator }(tolower(${ predicate.field }),'${ predicate.value }')`;\r\n }\r\n }).reverse().join(' and ');\r\n });\r\n }\r\n\r\n filterQuery = `${ filterQuery }&timeZoneOffset=${ this.getTimeZone() }`\r\n\r\n const apiUrl = `${ this.apiGatewayUrl }/${ action }?${ pageQuery }${ sortQuery }${ filterQuery }${ params }`;\r\n\r\n return apiUrl;\r\n }\r\n\r\n eSigConfirmation(paramsContainer: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.commonApiGatewayUrl = this.settings.CommonApiGatewayUrl;\r\n this.action = `ids/v1/User/ESignature`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.commonApiGatewayUrl }/${ this.action }`, paramsContainer, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n sendToChannelForRegistration(approveSubmissionViewModel: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/Submission/ApproveSubmission`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, approveSubmissionViewModel, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n sendToChannelSelectAll(viewModel: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/Submission/ApproveSubmissionBulk`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }?timeZoneOffset=${ this.getTimeZone() }`, viewModel, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n sendForRejection(rejectSubmissionViewModel: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/Submission/RejectSubmission`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, rejectSubmissionViewModel, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n sendForRejectionSelectAll(rejectSubmissionViewModel: any) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `sub/v1/Submission/RejectSubmissionBulk`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }?timeZoneOffset=${ this.getTimeZone() }`, rejectSubmissionViewModel, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n\r\n public getValidationStatusMultiple(paramsContainer) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/DataWarehouse/GetValidationStatusMultiple`;\r\n\r\n let headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${ this.apiGatewayUrl }/${ this.action }`, paramsContainer, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n public getFeatureFlagStatus(flagName: string) {\r\n let url = `/FeatureFlag?name=${flagName}`;\r\n let headers = this.authService.setHeader();\r\n\r\n return this.http.get(url, { headers: headers });\r\n }\r\n private handleHttpError(error: HttpErrorResponse): Observable {\r\n\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n const dataError = new IServiceError();\r\n dataError.errorNumber = error.error ? error.error.number : '';\r\n dataError.message = error.message;\r\n dataError.friendlyMessage = error.status ? `Http call failed with status ${error.status}` : `Http call failed`;\r\n dataError.errorMessage = error.error ? error.error.message : '';\r\n dataError.errorStatus = error.status;\r\n dataError.url = error.url;\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return of(dataError);\r\n } \r\n }\r\n}\r\n\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { of } from 'rxjs/observable/of';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { DataScopesEnum } from '../../shared/enums/index';\r\nimport { IServerSettings, IServiceError } from '../models/index';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { SettingsService } from './settings.service';\r\nimport { StorageManagerService } from './storage-manager.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportDataService {\r\n\r\n dataScopeEnum = DataScopesEnum;\r\n private action: string;\r\n private apiGatewayUrl: string;\r\n private commonApiGatewayUrl: string;\r\n private settings: IServerSettings;\r\n\r\n constructor(private http: HttpClient, private settingsService: SettingsService, private authService: AuthenticationService, private storageManagerService: StorageManagerService) { }\r\n\r\n getAttributesMock() {\r\n return this.http.get('../assets/mock/attributes-mock.json');\r\n }\r\n\r\n getTemplatesMock() {\r\n return this.http.get('../assets/mock/templates-mock.json');\r\n }\r\n\r\n getExportsMock() {\r\n return this.http.get('../assets/mock/generated-files-mock.json');\r\n }\r\n\r\n saveExportTemplate(exportTemplate) {\r\n var fields = exportTemplate.exportDataTemplate.deviceAttributes.find(a => a.name === 'DEVICE_KEY_IDENTIFICATION')?.fields;\r\n if (fields) {\r\n fields.find(a => a.name === 'UDI_DEVICE_IDENTIFIER').caption = fields.find(a => a.name === 'UDI_DEVICE_IDENTIFIER').caption.replace('/EUDAMED ID', '');\r\n fields.find(a => a.name === 'UDI_DEVICE_IDENTIFIER_ISSUING_AGENCY').caption = fields.find(a => a.name === 'UDI_DEVICE_IDENTIFIER_ISSUING_AGENCY').caption.replace('/EUDAMED ID Issuing Agency', '');\r\n }\r\n fields = exportTemplate.exportDataTemplate.deviceAttributes.find(a => a.name === 'BASIC_UDI_DI_REFERENCE')?.fields;\r\n if (fields) {\r\n fields.find(a => a.name === 'BUDI_DEVICE_IDENTIFIER').caption = fields.find(a => a.name === 'BUDI_DEVICE_IDENTIFIER').caption.replace('/EUDAMED DI', '');\r\n fields.find(a => a.name === 'BUDI_DEVICE_IDENTIFIER_ISSUING_AGENCY').caption = fields.find(a => a.name === 'BUDI_DEVICE_IDENTIFIER_ISSUING_AGENCY').caption.replace('/EUDAMED DI Issuing Agency', '');\r\n }\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExportData/SaveTemplate`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${this.apiGatewayUrl}/${this.action}`, exportTemplate, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n deleteExportTemplate(templateId) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExportData/DeleteTemplate`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${this.apiGatewayUrl}/${this.action}`, { exportTemplateId: templateId }, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n runExportTemplate(templateId) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExportData/RunTemplate`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.post(`${this.apiGatewayUrl}/${this.action}`, { exportTemplateId: templateId }, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n getTasks() {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExportData/GetTasks`;\r\n\r\n const headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${this.apiGatewayUrl}/${this.action}`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n\r\n getTemplateAttributes() {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExportData/GetTemplateAttributes`;\r\n\r\n const headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${this.apiGatewayUrl}/${this.action}`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n getTemplatesList() {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.apiGatewayUrl = this.settings.ApiGatewayUrl;\r\n this.action = `rpts/v1/ExportData/GetTemplates`;\r\n\r\n const headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${this.apiGatewayUrl}/${this.action}`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n getExportFile(fileName, directoryPath) {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.commonApiGatewayUrl = this.settings.CommonApiGatewayUrl;\r\n this.action = `fss/v1/FileStorage`;\r\n\r\n const storage = 'AzureBlob';\r\n const container = 'ssmd';\r\n\r\n const queryString = `?storage=${storage}&containerName=${container}&directoryPath=${directoryPath}&fileName=${fileName}`;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n return this.http.get(`${this.commonApiGatewayUrl}/${this.action}${queryString}`, { responseType: 'blob' as 'json', headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n }\r\n\r\n private handleHttpError(error: HttpErrorResponse): Observable {\r\n\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n const dataError = new IServiceError();\r\n dataError.errorNumber = error.error ? error.error.number : '';\r\n dataError.message = error.message;\r\n dataError.friendlyMessage = error.status ? `Http call failed with status ${error.status}` : `Http call failed`;\r\n dataError.errorMessage = error.error ? error.error.message : '';\r\n dataError.errorStatus = error.status;\r\n dataError.url = error.url;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return of(dataError);\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/map';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { IResults, IServiceError, IServerSettings } from '../models/index';\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable()\r\nexport class FeatureService{\r\n\r\n baseUrl: string = '';\r\n\r\n constructor(private http: HttpClient, private authService: AuthenticationService, @Inject('BASE_URL') baseUrl: string) {\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n public IsFeatureEnabled(name: string): Observable{\r\n\r\n let url = `${this.baseUrl}FeatureFlag?name=${name}`;\r\n let headers = this.authService.setHeader();\r\n\r\n return this.http.get(url, { headers: headers });\r\n }\r\n\r\n private handleHttpError(error: HttpErrorResponse): Observable {\r\n\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n const dataError = new IServiceError();\r\n dataError.errorNumber = error.error ? error.error.number : '';\r\n dataError.message = error.message;\r\n dataError.friendlyMessage = error.status ? `Http call failed with status ${error.status}` : `Http call failed`;\r\n dataError.errorMessage = error.error ? error.error.message : '';\r\n dataError.errorStatus = error.status;\r\n dataError.url = error.url;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return of(dataError);\r\n }\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/map';\r\nimport { ErrorObservable } from 'rxjs/observable/ErrorObservable';\r\nimport { catchError } from 'rxjs/operators';\r\nimport 'rxjs/Rx';\r\nimport { IFileIngestionHistory, IFileMetadataMessage, IFileMetadataStats, IServerSettings, IServiceError } from '../models/index';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { SettingsService } from './settings.service';\r\n\r\n\r\n@Injectable()\r\nexport class FileUploadService {\r\n\r\n private action: string;\r\n private fileManagementApiUrl: string;\r\n private settings: IServerSettings;\r\n\r\n\r\n constructor (private http: HttpClient, private settingsService: SettingsService, private authService: AuthenticationService) {\r\n }\r\n\r\n public getAppGridDefaults() {\r\n return this.http.get('../assets/griddefaults.json');\r\n }\r\n\r\n public getMockFileHistory() {\r\n return this.http.get('../assets/mock/db_file_history.json');\r\n }\r\n\r\n fetchUploadedFileHistory(customerId: string): Observable<{} | IFileIngestionHistory[] | IServiceError> {\r\n\r\n this.settings = this.settingsService.getSettings();\r\n this.fileManagementApiUrl = this.settings.ApiGatewayUrl;\r\n this.action = `fms/v1/UploadInventory`;\r\n\r\n const headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${ this.fileManagementApiUrl }/${ this.action }/${ customerId }`, { headers: headers }).pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n\r\n }\r\n\r\n getFileMetadataStatistics(fileMetadataId: number, customerId: number): Observable<{} | IFileMetadataStats[] | IServiceError> {\r\n\r\n this.action = 'fms/v1/UploadDetails';\r\n this.settings = this.settingsService.getSettings();\r\n this.fileManagementApiUrl = this.settings.ApiGatewayUrl;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n if (!isNaN(fileMetadataId)) {\r\n return this.http.get(`${ this.fileManagementApiUrl }/${ this.action }/${ fileMetadataId }/${ customerId }`, { headers: headers })\r\n .pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n } else {\r\n const dataError = new IServiceError();\r\n dataError.friendlyMessage = `Url parameter was altered with the non-numeric data`;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return ErrorObservable.create(dataError);\r\n }\r\n }\r\n\r\n getFileOutcome(fileMetadataGuid: string) {\r\n\r\n this.action = 'fms/v1/FileManagement/GetFileOutcome';\r\n this.settings = this.settingsService.getSettings();\r\n this.fileManagementApiUrl = this.settings.ApiGatewayUrl;\r\n\r\n const headers = this.authService.setHeader(false, true);\r\n\r\n return this.http.get(`${ this.fileManagementApiUrl }/${ this.action }?fileMetadataGuid=${ fileMetadataGuid }`, { headers: headers })\r\n .map(response => response.data);\r\n }\r\n\r\n getLogDataFile(fileMetadataGuid: string, customerId: string, reportFormat: string, reportFilename: string) {\r\n\r\n this.action = 'fms/v1/FileManagement/ImportLog';\r\n\r\n const headers = this.authService.setHeader(false);\r\n\r\n // headers = headers.set('applicationVariantName', '');\r\n // headers = headers.set('applicationVariantId', '');\r\n\r\n return this.http.get(`${this.fileManagementApiUrl}/${this.action}?fileMetadataGuid=${ fileMetadataGuid }&customerId=${ customerId }&reportFormat=${ reportFormat }&reportFilename=${ reportFilename }`, { responseType: 'blob' as 'json', headers: headers })\r\n .map(response => {\r\n return response;\r\n });\r\n }\r\n\r\n getFileMetadataMessages(fileMetadataId: number, customerId: number): Observable<{} | IFileMetadataMessage[] | IServiceError> {\r\n\r\n this.action = 'fms/v1/FileMetadataMessage/getFileMetadataMessages';\r\n this.settings = this.settingsService.getSettings();\r\n this.fileManagementApiUrl = this.settings.ApiGatewayUrl;\r\n\r\n const headers = this.authService.setHeader();\r\n\r\n if (!isNaN(fileMetadataId)) {\r\n return this.http.get(`${ this.fileManagementApiUrl }/${ this.action }/${ fileMetadataId }/${ customerId }`, { headers: headers })\r\n .pipe(\r\n catchError(err => this.handleHttpError(err))\r\n );\r\n } else {\r\n const dataError = new IServiceError();\r\n dataError.friendlyMessage = `Url parameter was altered with the non-numeric data.`;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return ErrorObservable.create(dataError);\r\n }\r\n }\r\n\r\n private handleHttpError(error: HttpErrorResponse): Observable {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n console.error(\r\n `Backend returned code ${ error.status }, ` +\r\n `body was: ${ error.error }`);\r\n }\r\n\r\n const dataError = new IServiceError();\r\n dataError.errorNumber = error.error ? error.error.number : '';\r\n dataError.message = error.message;\r\n dataError.friendlyMessage = `Oops.. Something's wrong..please try again later.`;\r\n dataError.errorMessage = error.error ? error.error.message : '';\r\n dataError.errorStatus = error.status;\r\n dataError.url = error.url;\r\n\r\n // return an observable of an IServiceError object with a user friendly error message\r\n return ErrorObservable.create(dataError);\r\n }\r\n}\r\n","export { SettingsService } from './settings.service';\r\nexport { AlertService } from './alert.service';\r\nexport { CustomerService } from './customer.service';\r\nexport { DeviceinventoryService } from './deviceinventory.service';\r\nexport { FileUploadService } from './fileupload.service';\r\nexport { LoggingService } from './logging.service';\r\nexport { StorageManagerService } from './storage-manager.service';\r\nexport { TemplateService } from './template.service';\r\nexport { AuthorizationService } from './authorization.service';\r\nexport { ApiCredentialsService } from './apicredentials.service';\r\nexport { ExportDataService } from './export-data.service';\r\nexport { CustomPreloadingService } from './custom-preloading.service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpHeaders, HttpClient } from '@angular/common/http';\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/map';\r\nimport { map } from 'rxjs/operators';\r\nimport 'rxjs/Rx';\r\nimport '../../shared/helpers/rxjs-extensions';\r\n\r\n@Injectable()\r\nexport class LoggingService {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n public logError(message: string) {\r\n const url = `${window.location.origin}/api/logging/logError?message=${message}`;\r\n this.http.get(url)\r\n .pipe(map(x => {\r\n // console.log(x);\r\n }))\r\n .toPromise();\r\n }\r\n public LogInformation(message: string) {\r\n const url = `${window.location.origin}/api/logging/LogInformation?message=${message}`;\r\n this.http.get(url)\r\n .pipe(map(x => {\r\n // console.log(x);\r\n }))\r\n .toPromise();\r\n }\r\n public LogWarning(message: string) {\r\n const url = `${window.location.origin}/api/logging/LogWarning?message=${message}`;\r\n this.http.get(url)\r\n .pipe(map(x => {\r\n // console.log(x);\r\n }))\r\n .toPromise();\r\n }\r\n public LogDebug(message: string) {\r\n const url = `${window.location.origin}/api/logging/LogDebug?message=${message}`;\r\n this.http.get(url)\r\n .pipe(map(x => {\r\n // console.log(x);\r\n }))\r\n .toPromise();\r\n }\r\n public LogTrace(message: string) {\r\n const url = `${window.location.origin}/api/logging/LogTrace?message=${message}`;\r\n this.http.get(url)\r\n .pipe(map(x => {\r\n // console.log(x);\r\n }))\r\n .toPromise();\r\n }\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { StorageManagerService, SettingsService } from '.';\r\nimport { Subject } from 'rxjs';\r\nimport { Utilities } from './utilities';\r\n\r\nconst DEFAULT_MINUTES_UNITL_SESSION_TIMEOUT = 480;\r\nconst TIMELEFT_IN_MILLISECONDS_BEFORE_SESSION_TIMEOUT = 1000 * 60 * 5;\r\nconst CHECK_INTERVAL = 1000; // in ms\r\nconst STORE_KEY = 'absoluteAction';\r\n\r\n\r\n@Injectable()\r\nexport class AbsoluteSessionTimeoutService {\r\n public sessionTimeoutWarning: Subject = new Subject();\r\n firstTimeWarning: boolean = true;\r\n\r\n constructor(private auth: AuthenticationService, private router: Router, private ngZone: NgZone, private storageManager: StorageManagerService,\r\n private settingsService: SettingsService) {\r\n\r\n this.check();\r\n this.initInterval();\r\n }\r\n\r\n get lastAction() {\r\n return parseInt(this.storageManager.read(STORE_KEY));\r\n }\r\n\r\n set lastAction(value) {\r\n this.storageManager.write(STORE_KEY, value);\r\n }\r\n\r\n initInterval() {\r\n this.ngZone.runOutsideAngular(() => {\r\n setInterval(() => {\r\n this.check();\r\n }, CHECK_INTERVAL);\r\n })\r\n }\r\n\r\n reset() { \r\n if (isNaN(this.lastAction) ) {\r\n this.lastAction = Date.now();\r\n }\r\n }\r\n\r\n check() {\r\n const now = Date.now();\r\n let sessionInMinutes: number = DEFAULT_MINUTES_UNITL_SESSION_TIMEOUT * 60 * 1000;\r\n\r\n if (!Utilities.IsUndefined(this.settingsService.absoluteSessionTimeout.toString()) && this.settingsService.absoluteSessionTimeout > 0) {\r\n sessionInMinutes = this.settingsService.absoluteSessionTimeout * 60 * 1000;\r\n }\r\n\r\n\r\n const timeleft = this.lastAction + sessionInMinutes;\r\n const diff = timeleft - now;\r\n const isTimeout = diff < 0;\r\n\r\n this.ngZone.run(() => {\r\n if (diff < TIMELEFT_IN_MILLISECONDS_BEFORE_SESSION_TIMEOUT && this.firstTimeWarning) {\r\n this.firstTimeWarning = false;\r\n this.sessionTimeoutWarning.next(TIMELEFT_IN_MILLISECONDS_BEFORE_SESSION_TIMEOUT);\r\n }\r\n\r\n if (isTimeout) {\r\n console.log(`Session has been terminated due to absolute session timeout limit ${sessionInMinutes} minutes.`);\r\n this.auth.logout();\r\n this.storageManager.clearAll();\r\n }\r\n });\r\n }\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { StorageManagerService, SettingsService } from '.';\r\nimport { Subject } from 'rxjs';\r\nimport { Utilities } from './utilities';\r\n\r\nconst DEFAULT_MINUTES_UNITL_SESSION_TIMEOUT = 30; \r\nconst TIMELEFT_IN_MILLISECONDS_BEFORE_SESSION_TIMEOUT = 1000 * 60;\r\nconst CHECK_INTERVAL = 1000; // in ms\r\nconst STORE_KEY = 'lastAction';\r\n\r\n\r\n@Injectable()\r\nexport class SessionTimeoutService {\r\n public sessionTimeoutWarning: Subject = new Subject();\r\n\r\n constructor(private auth: AuthenticationService, private router: Router, private ngZone: NgZone, private storageManager: StorageManagerService,\r\n private settingsService: SettingsService) {\r\n\r\n this.check();\r\n this.initListener();\r\n this.initInterval();\r\n }\r\n\r\n get lastAction() {\r\n return parseInt(this.storageManager.read(STORE_KEY));\r\n }\r\n\r\n set lastAction(value) {\r\n this.storageManager.write(STORE_KEY, value);\r\n }\r\n \r\n initListener() {\r\n this.ngZone.runOutsideAngular(() => {\r\n document.body.addEventListener('click', () => this.reset());\r\n document.body.addEventListener('keydown', () => this.reset());\r\n });\r\n }\r\n\r\n initInterval() {\r\n this.ngZone.runOutsideAngular(() => {\r\n setInterval(() => {\r\n this.check();\r\n }, CHECK_INTERVAL);\r\n })\r\n }\r\n\r\n reset() {\r\n this.lastAction = Date.now();\r\n }\r\n\r\n check() {\r\n const now = Date.now();\r\n let sessionInMinutes: number = DEFAULT_MINUTES_UNITL_SESSION_TIMEOUT * 60 * 1000;\r\n\r\n if (!Utilities.IsUndefined(this.settingsService.sessionTimout.toString()) && this.settingsService.sessionTimout > 0) {\r\n sessionInMinutes = this.settingsService.sessionTimout * 60 * 1000;\r\n }\r\n\r\n\r\n const timeleft = this.lastAction + sessionInMinutes;\r\n const diff = timeleft - now;\r\n const isTimeout = diff < 0;\r\n\r\n this.ngZone.run(() => {\r\n if (diff < TIMELEFT_IN_MILLISECONDS_BEFORE_SESSION_TIMEOUT) {\r\n this.sessionTimeoutWarning.next(diff);\r\n }\r\n\r\n if (isTimeout) {\r\n console.log(`Session has been terminated due to inactivity after ${DEFAULT_MINUTES_UNITL_SESSION_TIMEOUT} minutes.`);\r\n this.auth.logout();\r\n this.storageManager.clearAll();\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IServerSettings } from '../models/serversettings';\r\n\r\n@Injectable()\r\nexport class SettingsService {\r\n public serverSettings: IServerSettings;\r\n\r\n constructor(private readonly httpService: HttpClient) { }\r\n\r\n getSettings(): IServerSettings {\r\n return this.serverSettings;\r\n }\r\n\r\n get identityServiceUrl() {\r\n return this.serverSettings.IdentityServiceUrl;\r\n }\r\n\r\n get sessionTimout() {\r\n return this.serverSettings.SessionTimeout;\r\n }\r\n\r\n get absoluteSessionTimeout() {\r\n return this.serverSettings.AbsoluteSessionTimeout;\r\n }\r\n // Flag for turning on/off DataDog RUM monitor\r\n get dataDogEnabled() {\r\n return this.serverSettings.DataDogEnabled;\r\n }\r\n\r\n // DataDog application ID\r\n get dataDogApplicationId() {\r\n return this.serverSettings.DataDogApplicationId;\r\n }\r\n\r\n // DataDog Client Token\r\n get dataDogClientToken() {\r\n return this.serverSettings.DataDogClientToken;\r\n }\r\n\r\n // DataDog Service Name\r\n get DataDogService() {\r\n return this.serverSettings.DataDogService;\r\n }\r\n\r\n // DataDog Site url\r\n get dataDogSite() {\r\n return this.serverSettings.DataDogSite;\r\n }\r\n\r\n // DataDog version\r\n get dataDogVersion() {\r\n return this.serverSettings.DataDogVersion;\r\n }\r\n\r\n // DataDog environment\r\n get dataDogEnv() {\r\n return this.serverSettings.DataDogEnv;\r\n }\r\n\r\n // DataDog Sample Rate\r\n get dataDogSampleRate() {\r\n return this.serverSettings.DataDogSampleRate;\r\n }\r\n\r\n // DataDog TrackInteractions flag\r\n get dataDogTrackInteractions() {\r\n return this.serverSettings.DataDogTrackInteractions;\r\n }\r\n\r\n // DataDog allowedTracingOrigins flag\r\n get dataDogAllowedTracingOrigins() {\r\n return this.serverSettings.DataDogAllowedTracingOrigins;\r\n }\r\n\r\n // OneTrust domainTokenId\r\n get oneTrustDomainToken() {\r\n return this.serverSettings.OneTrustDomainToken;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageManagerService {\r\n constructor() { }\r\n\r\n read(key: string) {\r\n return JSON.parse(sessionStorage.getItem('SingleSourceAngularApp_' + key));\r\n }\r\n write(key: string, value: any): void {\r\n sessionStorage.setItem('SingleSourceAngularApp_' + key, JSON.stringify(value));\r\n }\r\n\r\n // Delete data\r\n public remove(key: string) {\r\n sessionStorage.removeItem('SingleSourceAngularApp_' + key)\r\n }\r\n\r\n // Clear all storage\r\n public clearAll() {\r\n sessionStorage.clear();\r\n }\r\n}\r\n","import { dynamicschemaData } from \"../models/dynamic-schema-data\";\r\nimport 'rxjs/add/observable/throw';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/Rx';\r\nimport { Injectable } from '@angular/core';\r\n\r\n\r\n@Injectable()\r\nexport class TemplateService {\r\n public getTemplate() {\r\n const template = new dynamicschemaData();\r\n return template;\r\n }\r\n\r\n public getTemplateText() {\r\n const template = new dynamicschemaData();\r\n return JSON.stringify(template.fields);\r\n }\r\n\r\n}\r\n","// ====================================================\r\n// More Templates: https://www.ebenmonney.com/templates\r\n// Email: support@ebenmonney.com\r\n// ====================================================\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponseBase, HttpResponse, HttpErrorResponse } from '@angular/common/http';\r\n\r\n\r\n@Injectable()\r\nexport class Utilities {\r\n\r\n public static readonly captionAndMessageSeparator = \":\";\r\n public static readonly noNetworkMessageCaption = \"No Network\";\r\n public static readonly noNetworkMessageDetail = \"The server cannot be reached\";\r\n public static readonly accessDeniedMessageCaption = \"Access Denied\";\r\n public static readonly accessDeniedMessageDetail = \"\";\r\n\r\n public static getHttpResponseMessage(data: HttpResponseBase | any): string[] {\r\n\r\n let responses: string[] = [];\r\n\r\n if (data instanceof HttpResponseBase) {\r\n\r\n if (this.checkNoNetwork(data)) {\r\n responses.push(`${this.noNetworkMessageCaption}${this.captionAndMessageSeparator} ${this.noNetworkMessageDetail}`);\r\n }\r\n else {\r\n let responseObject = this.getResponseBody(data);\r\n\r\n if (responseObject && (typeof responseObject === 'object' || responseObject instanceof Object)) {\r\n\r\n for (let key in responseObject) {\r\n if (key)\r\n responses.push(`${key}${this.captionAndMessageSeparator} ${responseObject[key]}`);\r\n else if (responseObject[key])\r\n responses.push(responseObject[key].toString());\r\n }\r\n }\r\n }\r\n\r\n if (!responses.length && this.getResponseBody(data))\r\n responses.push(`${data.statusText}: ${this.getResponseBody(data).toString()}`);\r\n }\r\n\r\n if (!responses.length)\r\n responses.push(data.toString());\r\n\r\n if (this.checkAccessDenied(data))\r\n responses.splice(0, 0, `${this.accessDeniedMessageCaption}${this.captionAndMessageSeparator} ${this.accessDeniedMessageDetail}`);\r\n\r\n\r\n return responses;\r\n }\r\n\r\n\r\n public static findHttpResponseMessage(messageToFind: string, data: HttpResponse | any, seachInCaptionOnly = true, includeCaptionInResult = false): string {\r\n\r\n let searchString = messageToFind.toLowerCase();\r\n let httpMessages = this.getHttpResponseMessage(data);\r\n\r\n for (let message of httpMessages) {\r\n let fullMessage = Utilities.splitInTwo(message, this.captionAndMessageSeparator);\r\n\r\n if (fullMessage.firstPart && fullMessage.firstPart.toLowerCase().indexOf(searchString) != -1) {\r\n return includeCaptionInResult ? message : fullMessage.secondPart || fullMessage.firstPart;\r\n }\r\n }\r\n\r\n if (!seachInCaptionOnly) {\r\n for (let message of httpMessages) {\r\n\r\n if (message.toLowerCase().indexOf(searchString) != -1) {\r\n if (includeCaptionInResult) {\r\n return message;\r\n }\r\n else {\r\n let fullMessage = Utilities.splitInTwo(message, this.captionAndMessageSeparator);\r\n return fullMessage.secondPart || fullMessage.firstPart;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n public static getResponseBody(response: HttpResponseBase) {\r\n if (response instanceof HttpResponse)\r\n return response.body;\r\n\r\n if (response instanceof HttpErrorResponse)\r\n return response.error || response.message || response.statusText;\r\n }\r\n\r\n\r\n public static checkNoNetwork(response: HttpResponseBase) {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status == 0;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkAccessDenied(response: HttpResponseBase) {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status == 403;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkNotFound(response: HttpResponseBase) {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status == 404;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkIsLocalHost(url: string, base?: string) {\r\n if (url) {\r\n let location = new URL(url, base);\r\n return location.hostname === \"localhost\" || location.hostname === \"127.0.0.1\";\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n\r\n public static getQueryParamsFromString(paramString: string) {\r\n\r\n if (!paramString)\r\n return null;\r\n\r\n let params: { [key: string]: string } = {};\r\n\r\n for (let param of paramString.split(\"&\")) {\r\n let keyValue = Utilities.splitInTwo(param, \"=\");\r\n params[keyValue.firstPart] = keyValue.secondPart;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n\r\n public static splitInTwo(text: string, separator: string): { firstPart: string, secondPart: string } {\r\n let separatorIndex = text.indexOf(separator);\r\n\r\n if (separatorIndex == -1)\r\n return { firstPart: text, secondPart: null };\r\n\r\n let part1 = text.substr(0, separatorIndex).trim();\r\n let part2 = text.substr(separatorIndex + 1).trim();\r\n\r\n return { firstPart: part1, secondPart: part2 };\r\n }\r\n\r\n\r\n public static safeStringify(object) {\r\n\r\n let result: string;\r\n\r\n try {\r\n result = JSON.stringify(object);\r\n return result;\r\n }\r\n catch (error) {\r\n\r\n }\r\n\r\n let simpleObject = {};\r\n\r\n for (let prop in object) {\r\n if (!object.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n if (typeof (object[prop]) == 'object') {\r\n continue;\r\n }\r\n if (typeof (object[prop]) == 'function') {\r\n continue;\r\n }\r\n simpleObject[prop] = object[prop];\r\n }\r\n\r\n result = \"[***Sanitized Object***]: \" + JSON.stringify(simpleObject);\r\n\r\n return result;\r\n }\r\n\r\n\r\n public static JSonTryParse(value: string) {\r\n\r\n if (value && typeof value === 'object') {\r\n return JSON.parse(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n public static TestIsObjectEmpty(obj: any) {\r\n for (let prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public static TestIsUndefined(value: any) {\r\n return typeof value === 'undefined';\r\n //return value === undefined;\r\n }\r\n public static IsUndefined(value: string) {\r\n return value === 'undefined';\r\n }\r\n\r\n public static TestIsString(value: any) {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n\r\n public static capitalizeFirstLetter(text: string) {\r\n if (text)\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n else\r\n return text;\r\n }\r\n\r\n public static toTitleCase(text: string) {\r\n return text.replace(/\\w\\S*/g, (subString) => {\r\n return subString.charAt(0).toUpperCase() + subString.substr(1).toLowerCase();\r\n });\r\n }\r\n\r\n public static toLowerCase(items: string)\r\n public static toLowerCase(items: string[])\r\n public static toLowerCase(items: any): string | string[] {\r\n\r\n if (items instanceof Array) {\r\n let loweredRoles: string[] = [];\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n loweredRoles[i] = items[i].toLowerCase();\r\n }\r\n\r\n return loweredRoles;\r\n }\r\n else if (typeof items === 'string' || items instanceof String) {\r\n return items.toLowerCase();\r\n }\r\n }\r\n\r\n // public static uniqueId() {\r\n // return this.randomNumber(1000000, 9000000).toString();\r\n // }\r\n\r\n // public static randomNumber(min: number, max: number) {\r\n // return Math.floor(Math.random() * (max - min + 1) + min);\r\n // }\r\n\r\n public static baseUrl() {\r\n let base = '';\r\n\r\n if (window.location.origin)\r\n base = window.location.origin;\r\n else\r\n base = window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\r\n\r\n return base.replace(/\\/$/, '');\r\n }\r\n\r\n public static printDateOnly(date: Date) {\r\n\r\n date = new Date(date);\r\n\r\n let dayNames = new Array(\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\");\r\n let monthNames = new Array(\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\");\r\n\r\n let dayOfWeek = date.getDay();\r\n let dayOfMonth = date.getDate();\r\n let sup = \"\";\r\n let month = date.getMonth();\r\n let year = date.getFullYear();\r\n\r\n if (dayOfMonth == 1 || dayOfMonth == 21 || dayOfMonth == 31) {\r\n sup = \"st\";\r\n }\r\n else if (dayOfMonth == 2 || dayOfMonth == 22) {\r\n sup = \"nd\";\r\n }\r\n else if (dayOfMonth == 3 || dayOfMonth == 23) {\r\n sup = \"rd\";\r\n }\r\n else {\r\n sup = \"th\";\r\n }\r\n\r\n let dateString = dayNames[dayOfWeek] + \", \" + dayOfMonth + sup + \" \" + monthNames[month] + \" \" + year;\r\n\r\n return dateString;\r\n }\r\n\r\n public static printTimeOnly(date: Date) {\r\n\r\n date = new Date(date);\r\n\r\n let period = \"\";\r\n let minute = date.getMinutes().toString();\r\n let hour = date.getHours();\r\n\r\n period = hour < 12 ? \"AM\" : \"PM\";\r\n\r\n if (hour == 0) {\r\n hour = 12;\r\n }\r\n if (hour > 12) {\r\n hour = hour - 12;\r\n }\r\n\r\n if (minute.length == 1) {\r\n minute = \"0\" + minute;\r\n }\r\n\r\n let timeString = hour + \":\" + minute + \" \" + period;\r\n\r\n\r\n return timeString;\r\n }\r\n\r\n public static printDate(date: Date, separator = \"at\") {\r\n return `${Utilities.printDateOnly(date)} ${separator} ${Utilities.printTimeOnly(date)}`;\r\n }\r\n\r\n public static printFriendlyDate(date: Date, separator = \"-\") {\r\n let today = new Date(); today.setHours(0, 0, 0, 0);\r\n let yesterday = new Date(today); yesterday.setDate(yesterday.getDate() - 1);\r\n let test = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n\r\n if (test.toDateString() == today.toDateString())\r\n return `Today ${separator} ${Utilities.printTimeOnly(date)}`;\r\n if (test.toDateString() == yesterday.toDateString())\r\n return `Yesterday ${separator} ${Utilities.printTimeOnly(date)}`;\r\n else\r\n return Utilities.printDate(date, separator);\r\n }\r\n\r\n public static printShortDate(date: Date, separator = \"/\", dateTimeSeparator = \"-\") {\r\n\r\n var day = date.getDate().toString();\r\n var month = (date.getMonth() + 1).toString();\r\n var year = date.getFullYear();\r\n\r\n if (day.length == 1)\r\n day = \"0\" + day;\r\n\r\n if (month.length == 1)\r\n month = \"0\" + month;\r\n\r\n return `${month}${separator}${day}${separator}${year} ${dateTimeSeparator} ${Utilities.printTimeOnly(date)}`;\r\n }\r\n\r\n public static parseDate(date) {\r\n\r\n if (date) {\r\n\r\n if (date instanceof Date) {\r\n return date;\r\n }\r\n\r\n if (typeof date === 'string' || date instanceof String) {\r\n if (date.search(/[a-su-z+]/i) == -1)\r\n date = date + \"Z\";\r\n\r\n return new Date(date);\r\n }\r\n\r\n if (typeof date === 'number' || date instanceof Number) {\r\n return new Date(date);\r\n }\r\n }\r\n }\r\n\r\n public static printDuration(start: Date, end: Date) {\r\n\r\n start = new Date(start);\r\n end = new Date(end);\r\n\r\n // get total seconds between the times\r\n let delta = Math.abs(start.valueOf() - end.valueOf()) / 1000;\r\n\r\n // calculate (and subtract) whole days\r\n let days = Math.floor(delta / 86400);\r\n delta -= days * 86400;\r\n\r\n // calculate (and subtract) whole hours\r\n let hours = Math.floor(delta / 3600) % 24;\r\n delta -= hours * 3600;\r\n\r\n // calculate (and subtract) whole minutes\r\n let minutes = Math.floor(delta / 60) % 60;\r\n delta -= minutes * 60;\r\n\r\n // what's left is seconds\r\n let seconds = delta % 60; // in theory the modulus is not required\r\n\r\n\r\n let printedDays = \"\";\r\n\r\n if (days)\r\n printedDays = `${days} days`;\r\n\r\n if (hours)\r\n printedDays += printedDays ? `, ${hours} hours` : `${hours} hours`;\r\n\r\n if (minutes)\r\n printedDays += printedDays ? `, ${minutes} minutes` : `${minutes} minutes`;\r\n\r\n if (seconds)\r\n printedDays += printedDays ? ` and ${seconds} seconds` : `${seconds} seconds`;\r\n\r\n\r\n if (!printedDays)\r\n printedDays = \"0\";\r\n\r\n return printedDays;\r\n }\r\n\r\n public static getAge(birthDate, otherDate) {\r\n birthDate = new Date(birthDate);\r\n otherDate = new Date(otherDate);\r\n\r\n let years = (otherDate.getFullYear() - birthDate.getFullYear());\r\n\r\n if (otherDate.getMonth() < birthDate.getMonth() ||\r\n otherDate.getMonth() == birthDate.getMonth() && otherDate.getDate() < birthDate.getDate()) {\r\n years--;\r\n }\r\n\r\n return years;\r\n }\r\n\r\n public static searchArray(searchTerm: string, caseSensitive: boolean, ...values: any[]) {\r\n\r\n if (!searchTerm)\r\n return true;\r\n\r\n\r\n if (!caseSensitive)\r\n searchTerm = searchTerm.toLowerCase();\r\n\r\n for (let value of values) {\r\n\r\n if (value != null) {\r\n let strValue = value.toString();\r\n\r\n if (!caseSensitive)\r\n strValue = strValue.toLowerCase();\r\n\r\n if (strValue.indexOf(searchTerm) !== -1)\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static moveArrayItem(array: any[], oldIndex, newIndex) {\r\n\r\n while (oldIndex < 0) {\r\n oldIndex += this.length;\r\n }\r\n\r\n while (newIndex < 0) {\r\n newIndex += this.length;\r\n }\r\n\r\n if (newIndex >= this.length) {\r\n var k = newIndex - this.length;\r\n while ((k--) + 1) {\r\n array.push(undefined);\r\n }\r\n }\r\n\r\n array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]);\r\n }\r\n\r\n public static expandCamelCase(text: string) {\r\n\r\n if (!text)\r\n return text;\r\n\r\n return text.replace(/([A-Z][a-z]+)/g, \" $1\")\r\n .replace(/([A-Z][A-Z]+)/g, \" $1\")\r\n .replace(/([^A-Za-z ]+)/g, \" $1\");\r\n }\r\n\r\n public static testIsAbsoluteUrl(url: string) {\r\n\r\n let r = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n return r.test(url);\r\n }\r\n\r\n public static convertToAbsoluteUrl(url: string) {\r\n\r\n return Utilities.testIsAbsoluteUrl(url) ? url : '//' + url;\r\n }\r\n\r\n public static removeNulls(obj) {\r\n let isArray = obj instanceof Array;\r\n\r\n for (let k in obj) {\r\n if (obj[k] === null) {\r\n isArray ? obj.splice(k, 1) : delete obj[k];\r\n }\r\n else if (typeof obj[k] == \"object\") {\r\n Utilities.removeNulls(obj[k]);\r\n }\r\n\r\n if (isArray && obj.length == k) {\r\n Utilities.removeNulls(obj);\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n public static debounce(func: (...args) => any, wait: number, immediate?: boolean) {\r\n var timeout;\r\n\r\n return function () {\r\n var context = this;\r\n var args_ = arguments;\r\n\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate)\r\n func.apply(context, args_);\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow)\r\n func.apply(context, args_);\r\n };\r\n }\r\n\r\n public static compareAsc(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n if (a > b) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n public static compareDesc(a, b) {\r\n if (a < b) {\r\n return 1;\r\n }\r\n if (a > b) {\r\n return -1;\r\n }\r\n return 0;\r\n }\r\n\r\n // public static cookies = {\r\n // getItem: (sKey) => {\r\n // return decodeURIComponent(document.cookie.replace(new RegExp(\"(?:(?:^|.*;)\\\\s*\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"), \"$1\")) || null;\r\n // },\r\n // setItem: (sKey, sValue, vEnd, sPath, sDomain, bSecure) => {\r\n // if (!sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test(sKey)) {\r\n // return false;\r\n // }\r\n\r\n // var sExpires = \"\";\r\n\r\n // if (vEnd) {\r\n // switch (vEnd.constructor) {\r\n // case Number:\r\n // sExpires = vEnd === Infinity ? \"; expires=Fri, 31 Dec 9999 23:59:59 GMT\" : \"; max-age=\" + vEnd;\r\n // break;\r\n // case String:\r\n // sExpires = \"; expires=\" + vEnd;\r\n // break;\r\n // case Date:\r\n // sExpires = \"; expires=\" + vEnd.toUTCString();\r\n // break;\r\n // }\r\n // }\r\n\r\n // document.cookie = encodeURIComponent(sKey) + \"=\" + encodeURIComponent(sValue) + sExpires + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\") + (bSecure ? \"; secure\" : \"\");\r\n // return true;\r\n // },\r\n // removeItem: (sKey, sPath, sDomain) => {\r\n // if (!sKey) {\r\n // return false;\r\n // }\r\n // document.cookie = encodeURIComponent(sKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT\" + (sDomain ? \"; domain=\" + sDomain : \"\") + (sPath ? \"; path=\" + sPath : \"\");\r\n // return true;\r\n // },\r\n // hasItem: (sKey) => {\r\n // return (new RegExp(\"(?:^|;\\\\s*)\" + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(document.cookie);\r\n // },\r\n // keys: () => {\r\n // var aKeys = document.cookie.replace(/((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, \"\").split(/\\s*(?:\\=[^;]*)?;\\s*/);\r\n // for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }\r\n // return aKeys;\r\n // }\r\n // }\r\n}\r\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false\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\nimport { registerLicense } from '@syncfusion/ej2-base';\r\n\r\n// Registering Syncfusion license key\r\nconst licenseKey = 'Mgo+DSMBaFt/QHJqVVhjVFpFdEBBXHxAd1p/VWJYdVt5flBPcDwsT3RfQF9jTn9bd0ZiUX9dd3VWQw==;ORg4AjUWIQA/Gnt2VVhiQlFadVdJXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxRdkJiUX5dcXxVRWdeVkE=;Mgo+DSMBMAY9C3t2VVhiQlFadVdJXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxRdkJiUX5dcXxVRWdYVUE=';\r\nregisterLicense(licenseKey);\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule).then(ref => {\r\n // Ensure Angular destroys itself on hot reloads.\r\n if (window['ngRef']) {\r\n window['ngRef'].destroy();\r\n }\r\n window['ngRef'] = ref;\r\n\r\n // Otherwise, log the boot error\r\n }).catch(err => console.error(err));\r\n\r\n"],"names":["ChangeDetectorRef","Component","EventEmitter","Input","Output","ViewChild","ViewEncapsulation","Router","ExcelExportService","FilterService","PdfExportService","ToolbarService","VirtualScrollService","Tooltip","DataUtil","ToastrService","FileUploadService","SettingsService","StorageManagerService","NgbTooltipConfig","NgbTooltipModule","LastCallTime","constructor","fileMetadataGuid","callTime","FileUploadHistoryGridComponent","router","fileUploadService","storageManagerService","cdref","settingsService","toastr","tooltipConfig","document","createElement","content","tooltipContent","cssClass","enableHtmlParse","settings","getSettings","placement","autoClose","ngAfterViewInit","copyToClipboard","args","data","tt","copiedToClipboard","navigator","clipboard","writeText","then","openTooltip","tooltip","contents","close","open","closeTooltip","keydownEnter","e","type","which","keyCode","target","closest","focus","tooltipContents","showSFToolTip","customContent","tooltipId","id","tooltipControl","getElementById","ej2_instances","width","tipPointerPosition","toLowerCase","hideSFToolTip","parentElement","tooltipValue","scrollWidth","clientWidth","cancel","rowInfo","grid","getRowInfo","rowData","tooltipObj","column","field","ngAfterContentChecked","detectChanges","ngOnChanges","changes","gridData","currentValue","parse","parseJson","error","ngOnInit","currentCustomerStr","read","currentCustomer","JSON","customerId","dateFormat","format","filterSettings","operators","stringOperator","value","text","dateOperator","appDefaults","pageOptions","pageSize","defaultPageSize","pageCount","pageSizes","toolbarClick","item","excelExport","ngOnDestroy","sub","unsubscribe","recordDoubleClickRow","downloadLog","importId","reportFormat","fileName","getLogDataFile","subscribe","response","window","msSaveOrOpenBlob","URL","webkitURL","downloadUrl","createObjectURL","link","href","download","click","complete","requestType","columnType","filterModel","dlgDiv","querySelector","columns","length","pageCountMsg","getElementsByClassName","pageItemCounter","innerText","fileCount","substr","indexOf","messageEvent","emit","getFileOutcome","fileOutcomeCode","createDatetime","createDate","Date","existedSeconds","now","valueOf","existedMinutes","IngestionStatusTimeout","lastCallTime","lastCallTimes","find","x","start","end","seconds","Math","abs","IngestionStatusPollInterval","push","dataItem","f","rowItem","fileOutcome","fileOutcomeDesc","totalRecords","totalSuccessRecords","totalFailedRecords","totalExceptionRecords","updateDateTime","refresh","getCSSClasses","cssClasses","undefined","static","selector","template","providers","encapsulation","Emulated","FormArray","FormControl","FormGroup","Utils","getBaseUri","baseURI","baseTags","getElementsByTagName","match","TestIsUndefined","cloneAbstractControl","control","newControl","formGroup","validator","asyncValidator","controls","Object","keys","forEach","key","addControl","formArray","formControl","Error","disabled","disable","emitEvent","deepCopy","Array","isArray","deepArray","deepObject","source","result","collection","map","Injectable","NgZone","HttpClient","HttpHeaders","OidcSecurityService","Utilities","AuthenticationService","oidcSecurityService","http","ngzone","subscription","isAuthenticated$","isAuthorized","getIsAuthorized","getUserData","userData$","login","console","log","authorize","refreshSession","forceRefreshSession","logout","logoutStarted","logoff","captureLogoutEvent","displayableId","get","location","origin","getBearerToken","token","getToken","url","headers","getHeaders","post","body","stringify","setContentType","isApplicationLevel","authData","getAuthData","res","write","applicationVariantId","toString","customer","applicationName","applicationVariantName","TestIsObjectEmpty","customerGuid","applicationVariants","set","appendAuthHeader","tokenValue","applications","appVariantId","appVariantName","dataScope","a","AVName","AVId","AName","userguid","userGuid","setHeader","initDataDogScriptElement","ddBrowserRum","initPendo","customerName","runOutsideAngular","apiKey","p","n","d","o","v","w","y","z","_q","m","concat","slice","call","arguments","async","src","parentNode","insertBefore","initialize","visitor","account","setScriptAttribute","srcJs","attClass","attName","sourceScripts","i","removeAttribute","setAttribute","initDataDogRUM","bIsDataDogEnabled","dataDogEnabled","datadogRum","init","applicationId","dataDogApplicationId","clientToken","dataDogClientToken","site","dataDogSite","service","DataDogService","env","dataDogEnv","version","dataDogVersion","sampleRate","dataDogSampleRate","silentMultipleInit","trackInteractions","dataDogTrackInteractions","allowedTracingOrigins","dataDogAllowedTracingOrigins","replace","split"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}