\n\n
\n
\n Adverse Event PT\n
\n
0\">\n \n \n 0\">\n \n \n
\n
\n
\n\n
\n\n \n
\n \n \n
\n\n
\n\n \n PT Term | \n \n {{adverse.ptTerm}}\n \n \n analytics\n \n \n | \n \n\n \n Prim SOC | \n {{adverse.primSoc}} | \n \n\n \n Case Count | \n {{adverse.caseCount}} | \n \n\n \n PT Count | \n \n \n \n \n \n FAERS Public Dashboard\n \n \n \n \n | \n \n\n \n PRR | \n {{adverse.prr | number : '.2-2'}} | \n \n\n
\n
\n
\n
\n
\n ","import { Component, OnInit, OnDestroy, Output, EventEmitter, Input } from '@angular/core';\nimport { TitleCasePipe } from '@angular/common';\nimport { ActivatedRoute, Router, NavigationExtras } from '@angular/router';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MatDialog } from '@angular/material/dialog';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { AdverseEventService } from '../../../../adverse-event/service/adverseevent.service';\nimport { SubstanceDetailsBaseTableDisplay } from '../../../substance-products/substance-details-base-table-display';\nimport { Sort } from '@angular/material/sort';\nimport { LoadingService } from '@gsrs-core/loading/loading.service';\nimport { ConfigService } from '@gsrs-core/config';\nimport { FacetParam } from '@gsrs-core/facets-manager';\nimport { ExportDialogComponent } from '@gsrs-core/substances-browse/export-dialog/export-dialog.component';\nimport { AuthService } from '@gsrs-core/auth';\nimport { Subscription } from 'rxjs';\nimport { adverseEventPtSearchSortValues } from '../../../../adverse-event/adverse-events-pt-browse/adverse-events-pt-search-sort-values';\n\n@Component({\n selector: 'app-substance-adverseeventpt',\n templateUrl: './substance-adverseeventpt.component.html',\n styleUrls: ['./substance-adverseeventpt.component.scss']\n})\n\nexport class SubstanceAdverseEventPtComponent extends SubstanceDetailsBaseTableDisplay implements OnInit, OnDestroy {\n @Input() bdnum: string;\n @Input() substanceName: string;\n @Output() countAdvPtOut: EventEmitter
= new EventEmitter();\n\n adverseEventCount = 0;\n order = '$root_ptCount';\n ascDescDir = 'desc';\n showSpinner = false;\n public privateSearchTerm?: string;\n private privateFacetParams: FacetParam;\n public sortValues = adverseEventPtSearchSortValues;\n privateExport = false;\n disableExport = false;\n etag = '';\n loadingStatus = '';\n private subscriptions: Array = [];\n\n adverseEventShinySubstanceNameDisplay = false;\n adverseEventShinyAdverseEventDisplay = false;\n adverseEventShinySubstanceNameURL: string;\n adverseEventShinyAdverseEventURL: string;\n adverseEventShinySubstanceNameURLWithParam: string;\n adverseEventShinyAdverseEventURLWithParam: string;\n\n // FAERS DASHBOARD\n FAERSDashboardAdverseEventUrl: string;\n FAERSDashboardSubstanceName: string;\n FAERSDashboardSearchTerm = \"/select/Search%20Term/\"; // FAERS Adverse Event 'Substance Name'\n FAERSDashboardReactionTerm = \"/select/Reaction%20Term/\"; // GSRS Adverse Event 'PT Term'\n FAERSDashboardReactionGroup = \"/select/Reaction%20Group/\"; // GSRS Adverse Event 'Prim SOC'\n\n filtered: Array;\n displayedColumns: string[] = [\n 'ptTerm',\n 'primSoc',\n 'caseCount',\n 'ptCount',\n 'prr'\n ];\n constructor(\n private router: Router,\n public gaService: GoogleAnalyticsService,\n private adverseEventService: AdverseEventService,\n private loadingService: LoadingService,\n private configService: ConfigService,\n private authService: AuthService,\n private dialog: MatDialog\n ) {\n super(gaService, adverseEventService);\n }\n\n ngOnInit() {\n const rolesSubscription = this.authService.hasAnyRolesAsync('Admin', 'Updater', 'SuperUpdater').subscribe(response => {\n this.isAdmin = response;\n });\n this.subscriptions.push(rolesSubscription);\n\n if (this.bdnum) {\n this.getAdverseEventPt();\n\n // FAERS DASHBOARD\n this.getFaersDashboardUrl();\n this.getFaersDashboardRecordByName();\n\n this.adverseEventPtListExportUrl();\n this.getAdverseEventShinyConfig();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n getAdverseEventPt(pageEvent?: PageEvent) {\n this.setPageEvent(pageEvent);\n this.showSpinner = true; // Start progress spinner\n const skip = this.page * this.pageSize;\n const privateSearch = 'root_substanceKey:' + this.bdnum;\n const subscription = this.adverseEventService.getAdverseEventPt(\n this.order,\n skip,\n this.pageSize,\n privateSearch,\n this.privateFacetParams\n )\n .subscribe(pagingResponse => {\n this.adverseEventService.totalRecords = pagingResponse.total;\n this.adverseEventCount = pagingResponse.total;\n this.setResultData(pagingResponse.content);\n this.etag = pagingResponse.etag;\n this.countAdvPtOut.emit(this.adverseEventCount);\n }, error => {\n this.showSpinner = false; // Stop progress spinner\n console.log('error');\n }, () => {\n this.showSpinner = false; // Stop progress spinner\n subscription.unsubscribe();\n });\n this.loadingStatus = '';\n // this.showSpinner = false; // Stop progress spinner\n }\n\n /*\n getSubstanceAdverseEventPt(pageEvent?: PageEvent): void {\n this.setPageEvent(pageEvent);\n this.showSpinner = true; // Start progress spinner\n this.adverseEventService.getSubstanceAdverseEventPtAdv(this.bdnum, this.page, this.pageSize,\n this.orderBy, this.ascDescDir).subscribe(results => {\n this.setResultData(results);\n this.advPtCount = this.totalRecords;\n this.countAdvPtOut.emit(this.advPtCount);\n this.showSpinner = false; // Stop progress spinner\n });\n }\n */\n\n adverseEventPtListExportUrl() {\n if (this.bdnum != null) {\n this.exportUrl = this.adverseEventService.getAdverseEventPtListExportUrl(this.bdnum);\n }\n }\n\n sortData(sort: Sort) {\n if (sort.active) {\n const orderIndex = this.displayedColumns.indexOf(sort.active).toString(); // + 2; // Adding 2, for name and bdnum.\n this.ascDescDir = sort.direction;\n this.sortValues.forEach(sortValue => {\n if (sortValue.displayedColumns && sortValue.direction) {\n if (this.displayedColumns[orderIndex] === sortValue.displayedColumns && this.ascDescDir === sortValue.direction) {\n this.order = sortValue.value;\n }\n }\n });\n this.getAdverseEventPt();\n }\n return;\n }\n\n export() {\n if (this.etag) {\n const extension = 'xlsx';\n const url = this.getApiExportUrl(this.etag, extension);\n if (this.authService.getUser() !== '') {\n const dialogReference = this.dialog.open(ExportDialogComponent, {\n // height: '215x',\n width: '700px',\n data: { 'extension': extension, 'type': 'substanceAdverseEventPt', 'entity': 'adverseeventpt', 'hideOptionButtons': true }\n });\n // this.overlayContainer.style.zIndex = '1002';\n dialogReference.afterClosed().subscribe(response => {\n // this.overlayContainer.style.zIndex = null;\n const name = response.name;\n const id = response.id;\n if (name && name !== '') {\n this.loadingService.setLoading(true);\n const fullname = name + '.' + extension;\n this.authService.startUserDownload(url, this.privateExport, fullname, id).subscribe(response => {\n // this.authService.startUserDownload(url, this.privateExport, fullname).subscribe(response => {\n this.loadingService.setLoading(false);\n const navigationExtras: NavigationExtras = {\n queryParams: {\n totalSub: this.adverseEventCount\n }\n };\n const params = { 'total': this.adverseEventCount };\n this.router.navigate(['/user-downloads/', response.id]);\n }, error => this.loadingService.setLoading(false));\n }\n });\n }\n }\n }\n\n getApiExportUrl(etag: string, extension: string): string {\n return this.adverseEventService.getApiExportUrlPt(etag, extension);\n }\n\n getFaersDashboardRecordByName(): void {\n // Get FAERS Name from database table that contains 'P' and 'G' in name.\n // Example: Acetazolamide (G) instead of GSRS name Acetazolamide\n const faersNameSubscription = this.adverseEventService.getFaersDashboardRecordByName(this.substanceName).subscribe(results => {\n if (results) {\n if (results.name) {\n this.FAERSDashboardSubstanceName = results.name;\n this.FAERSDashboardAdverseEventUrl = this.FAERSDashboardAdverseEventUrl + results.name + this.FAERSDashboardReactionTerm;\n }\n }\n });\n this.subscriptions.push(faersNameSubscription);\n }\n\n getFaersDashboardUrl(): void {\n if (this.configService.configData) {\n if (this.configService.configData.FAERSDashboardAdverseEventUrl\n && this.configService.configData.FAERSDashboardAdverseEventUrl !== null) {\n const faersUrlConfig = this.configService.configData.FAERSDashboardAdverseEventUrl;\n\n // FULL FAERS DASHBOARD URL\n // faersUrl + /select/Search%20Term/ + FaersName + /select/Reaction%20Term/ + ptTerm + /select/Reaction%20Group/ + primSoc;\n this.FAERSDashboardAdverseEventUrl = faersUrlConfig + this.FAERSDashboardSearchTerm;\n }\n }\n }\n\n getAdverseEventShinyConfig(): void {\n if (this.configService.configData) {\n\n // Analysis by Substance in Shiny Config\n if (this.configService.configData.adverseEventShinySubstanceNameDisplay\n && this.configService.configData.adverseEventShinySubstanceNameDisplay !== null) {\n this.adverseEventShinySubstanceNameDisplay = JSON.parse(this.configService.configData.adverseEventShinySubstanceNameDisplay);\n }\n if (this.configService.configData.adverseEventShinySubstanceNameURL\n && this.configService.configData.adverseEventShinySubstanceNameURL !== null) {\n this.adverseEventShinySubstanceNameURL = this.configService.configData.adverseEventShinySubstanceNameURL;\n this.adverseEventShinySubstanceNameURLWithParam = this.adverseEventShinySubstanceNameURL + decodeURIComponent(this.substanceName);\n }\n\n // Analysis by Adverse Event in Shiny Config\n if (this.configService.configData.adverseEventShinyAdverseEventDisplay\n && this.configService.configData.adverseEventShinyAdverseEventDisplay !== null) {\n this.adverseEventShinyAdverseEventDisplay = JSON.parse(this.configService.configData.adverseEventShinyAdverseEventDisplay);\n }\n if (this.configService.configData.adverseEventShinyAdverseEventURL\n && this.configService.configData.adverseEventShinyAdverseEventURL !== null) {\n this.adverseEventShinyAdverseEventURL = this.configService.configData.adverseEventShinyAdverseEventURL;\n this.adverseEventShinyAdverseEventURLWithParam = this.adverseEventShinyAdverseEventURL;\n }\n\n }\n }\n\n getDecodeURL(value: string): string {\n let result = '';\n if (value !== null) {\n result = decodeURIComponent(value);\n }\n return result;\n }\n\n}\n\n","\n Adverse Event DME\n \n \n \n 0\">\n \n \n
\n\n\n\n \n
\n \n \n
\n\n
\n\n \n DME Reactions | \n {{adverse.dmeReactions}} | \n \n\n \n PT Term Meddra | \n {{adverse.ptTermMeddra}} | \n \n\n \n Case Count | \n {{adverse.caseCount}} | \n \n\n \n Dme Count | \n {{adverse.dmeCount}} | \n \n\n \n Dme Count Percent | \n {{adverse.dmeCountPercent}} | \n \n\n \n Weighted Average PRR | \n {{adverse.weightedAvgPrr | number : '.2-2'}} | \n \n\n
\n
\n
\n
\n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, Router, NavigationExtras } from '@angular/router';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Sort } from '@angular/material/sort';\nimport { SubstanceCardBaseFilteredList } from '@gsrs-core/substance-details';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { AdverseEventService } from '../../../../adverse-event/service/adverseevent.service';\nimport { SubstanceDetailsBaseTableDisplay } from '../../../substance-products/substance-details-base-table-display';\nimport { PageEvent } from '@angular/material/paginator';\nimport { FacetParam } from '@gsrs-core/facets-manager';\nimport { ExportDialogComponent } from '@gsrs-core/substances-browse/export-dialog/export-dialog.component';\nimport { AuthService } from '@gsrs-core/auth';\nimport { LoadingService } from '@gsrs-core/loading/loading.service';\nimport { Subscription } from 'rxjs';\nimport { adverseEventDmeSearchSortValues } from '../../../../adverse-event/adverse-events-dme-browse/adverse-events-dme-search-sort-values';\n\n@Component({\n selector: 'app-substance-adverseeventdme',\n templateUrl: './substance-adverseeventdme.component.html',\n styleUrls: ['./substance-adverseeventdme.component.scss']\n})\n\nexport class SubstanceAdverseEventDmeComponent extends SubstanceDetailsBaseTableDisplay implements OnInit {\n\n @Input() bdnum: string;\n @Output() countAdvDmeOut: EventEmitter = new EventEmitter();\n\n adverseEventCount = 0;\n order = '$root_dmeCount';\n ascDescDir = 'desc';\n showSpinner = false;\n public privateSearchTerm?: string;\n private privateFacetParams: FacetParam;\n privateExport = false;\n disableExport = false;\n etag = '';\n loadingStatus = '';\n public sortValues = adverseEventDmeSearchSortValues;\n private subscriptions: Array = [];\n\n displayedColumns: string[] = [\n 'dmeReactions', 'ptTermMeddra', 'caseCount', 'dmeCount', 'dmeCountPercent', 'weightedAvgPrr'\n ];\n\n constructor(\n private router: Router,\n public gaService: GoogleAnalyticsService,\n private adverseEventService: AdverseEventService,\n private authService: AuthService,\n private loadingService: LoadingService,\n private dialog: MatDialog\n ) {\n super(gaService, adverseEventService);\n }\n\n ngOnInit() {\n const rolesSubscription = this.authService.hasAnyRolesAsync('Admin', 'Updater', 'SuperUpdater').subscribe(response => {\n this.isAdmin = response;\n });\n this.subscriptions.push(rolesSubscription);\n\n if (this.bdnum) {\n this.getAdverseEventDme();\n // this.getSubstanceAdverseEventDme();\n this.adverseEventDmeListExportUrl();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n getAdverseEventDme(pageEvent?: PageEvent) {\n this.setPageEvent(pageEvent);\n this.showSpinner = true; // Start progress spinner\n const skip = this.page * this.pageSize;\n const privateSearch = 'root_substanceKey:' + this.bdnum;\n const subscription = this.adverseEventService.getAdverseEventDme(\n this.order,\n skip,\n this.pageSize,\n privateSearch,\n this.privateFacetParams\n )\n .subscribe(pagingResponse => {\n this.adverseEventService.totalRecords = pagingResponse.total;\n this.adverseEventCount = pagingResponse.total;\n this.setResultData(pagingResponse.content);\n this.etag = pagingResponse.etag;\n this.countAdvDmeOut.emit(this.adverseEventCount);\n }, error => {\n this.showSpinner = false; // Stop progress spinner\n console.log('error');\n }, () => {\n this.showSpinner = false; // Stop progress spinner\n subscription.unsubscribe();\n });\n this.loadingStatus = '';\n // this.showSpinner = false; // Stop progress spinner\n }\n\n /*\n getSubstanceAdverseEventDme(pageEvent?: PageEvent): void {\n this.setPageEvent(pageEvent);\n\n this.showSpinner = true; // Start progress spinner\n this.adverseEventService.getSubstanceAdverseEventDme(this.bdnum, this.page, this.pageSize).subscribe(results => {\n this.setResultData(results);\n this.advDmeCount = this.totalRecords;\n this.countAdvDmeOut.emit(this.advDmeCount);\n this.showSpinner = false; // Stop progress spinner\n });\n }\n */\n\n sortData(sort: Sort) {\n if (sort.active) {\n const orderIndex = this.displayedColumns.indexOf(sort.active).toString();\n this.ascDescDir = sort.direction;\n this.sortValues.forEach(sortValue => {\n if (sortValue.displayedColumns && sortValue.direction) {\n if (this.displayedColumns[orderIndex] === sortValue.displayedColumns && this.ascDescDir === sortValue.direction) {\n this.order = sortValue.value;\n }\n }\n });\n this.getAdverseEventDme();\n }\n return;\n }\n\n export() {\n if (this.etag) {\n const extension = 'xlsx';\n const url = this.getApiExportUrl(this.etag, extension);\n if (this.authService.getUser() !== '') {\n const dialogReference = this.dialog.open(ExportDialogComponent, {\n // height: '215x',\n width: '700px',\n data: { 'extension': extension, 'type': 'substanceAdverseEventDme','entity': 'adverseeventdme', 'hideOptionButtons': true }\n });\n // this.overlayContainer.style.zIndex = '1002';\n dialogReference.afterClosed().subscribe(response => {\n // this.overlayContainer.style.zIndex = null;\n const name = response.name;\n const id = response.id;\n if (name && name !== '') {\n this.loadingService.setLoading(true);\n const fullname = name + '.' + extension;\n this.authService.startUserDownload(url, this.privateExport, fullname, id).subscribe(response => {\n // this.authService.startUserDownload(url, this.privateExport, fullname).subscribe(response => {\n this.loadingService.setLoading(false);\n const navigationExtras: NavigationExtras = {\n queryParams: {\n totalSub: this.adverseEventCount\n }\n };\n const params = { 'total': this.adverseEventCount };\n this.router.navigate(['/user-downloads/', response.id]);\n }, error => this.loadingService.setLoading(false));\n }\n });\n }\n }\n }\n\n getApiExportUrl(etag: string, extension: string): string {\n return this.adverseEventService.getApiExportUrlDme(etag, extension);\n }\n\n adverseEventDmeListExportUrl() {\n if (this.bdnum != null) {\n this.exportUrl = this.adverseEventService.getAdverseEventDmeListExportUrl(this.bdnum);\n }\n }\n\n}\n","\n Adverse Event CVM\n \n \n \n 0\">\n \n \n
\n\n\n\n\n\n \n
\n \n \n
\n\n
\n\n \n Adverse Event | \n {{adverse.adverseEvent}} | \n \n\n \n Species | \n {{adverse.species}} | \n \n\n \n Adverse Event Count | \n {{adverse.aeCount}} | \n \n\n \n Route of Administration | \n {{adverse.routeOfAdmin}} | \n \n\n
\n
\n
\n
\n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, Router, NavigationExtras } from '@angular/router';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Sort } from '@angular/material/sort';\nimport { SubstanceCardBaseFilteredList } from '@gsrs-core/substance-details';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { AdverseEventService } from '../../../../adverse-event/service/adverseevent.service';\nimport { SubstanceDetailsBaseTableDisplay } from '../../../substance-products/substance-details-base-table-display';\nimport { PageEvent } from '@angular/material/paginator';\nimport { FacetParam } from '@gsrs-core/facets-manager';\nimport { ExportDialogComponent } from '@gsrs-core/substances-browse/export-dialog/export-dialog.component';\nimport { AuthService } from '@gsrs-core/auth';\nimport { LoadingService } from '@gsrs-core/loading/loading.service';\nimport { Subscription } from 'rxjs';\nimport { adverseEventCvmSearchSortValues } from '../../../../adverse-event/adverse-events-cvm-browse/adverse-events-cvm-search-sort-values';\n\n@Component({\n selector: 'app-substance-adverseeventcvm',\n templateUrl: './substance-adverseeventcvm.component.html',\n styleUrls: ['./substance-adverseeventcvm.component.scss']\n})\n\nexport class SubstanceAdverseEventCvmComponent extends SubstanceDetailsBaseTableDisplay implements OnInit {\n\n @Input() bdnum: string;\n @Output() countAdvCvmOut: EventEmitter = new EventEmitter();\n\n adverseEventCount = 0;\n order = '$root_aeCount';\n ascDescDir = 'desc';\n showSpinner = false;\n public privateSearchTerm?: string;\n private privateFacetParams: FacetParam;\n privateExport = false;\n disableExport = false;\n etag = '';\n loadingStatus = '';\n public sortValues = adverseEventCvmSearchSortValues;\n private subscriptions: Array = [];\n\n displayedColumns: string[] = [\n 'adverseEvent', 'species', 'adverseEventCount', 'routeOfAdmin'\n ];\n\n constructor(\n private router: Router,\n public gaService: GoogleAnalyticsService,\n private adverseEventService: AdverseEventService,\n private authService: AuthService,\n private loadingService: LoadingService,\n private dialog: MatDialog\n ) {\n super(gaService, adverseEventService);\n }\n\n ngOnInit() {\n const rolesSubscription = this.authService.hasAnyRolesAsync('Admin', 'Updater', 'SuperUpdater').subscribe(response => {\n this.isAdmin = response;\n });\n this.subscriptions.push(rolesSubscription);\n if (this.bdnum) {\n this.getAdverseEventCvm();\n // this.getSubstanceAdverseEventCvm();\n this.adverseEventCvmListExportUrl();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n getAdverseEventCvm(pageEvent?: PageEvent) {\n this.setPageEvent(pageEvent);\n this.showSpinner = true; // Start progress spinner\n const skip = this.page * this.pageSize;\n const privateSearch = 'root_substanceKey:' + this.bdnum;\n const subscription = this.adverseEventService.getAdverseEventCvm(\n this.order,\n skip,\n this.pageSize,\n privateSearch,\n this.privateFacetParams\n )\n .subscribe(pagingResponse => {\n this.adverseEventService.totalRecords = pagingResponse.total;\n this.adverseEventCount = pagingResponse.total;\n this.setResultData(pagingResponse.content);\n this.etag = pagingResponse.etag;\n this.countAdvCvmOut.emit(this.adverseEventCount);\n }, error => {\n this.showSpinner = false; // Stop progress spinner\n console.log('error');\n }, () => {\n this.showSpinner = false; // Stop progress spinner\n subscription.unsubscribe();\n });\n this.loadingStatus = '';\n // this.showSpinner = false; // Stop progress spinner\n }\n\n sortData(sort: Sort) {\n if (sort.active) {\n const orderIndex = this.displayedColumns.indexOf(sort.active).toString(); // + 2; // Adding 2, for name and bdnum.\n this.ascDescDir = sort.direction;\n this.sortValues.forEach(sortValue => {\n if (sortValue.displayedColumns && sortValue.direction) {\n if (this.displayedColumns[orderIndex] === sortValue.displayedColumns && this.ascDescDir === sortValue.direction) {\n this.order = sortValue.value;\n }\n }\n });\n this.getAdverseEventCvm();\n }\n return;\n }\n\n export() {\n if (this.etag) {\n const extension = 'xlsx';\n const url = this.getApiExportUrl(this.etag, extension);\n if (this.authService.getUser() !== '') {\n const dialogReference = this.dialog.open(ExportDialogComponent, {\n // height: '215x',\n width: '700px',\n data: { 'extension': extension, 'type': 'substanceAdverseEventCvm', 'entity': 'adverseeventcvm', 'hideOptionButtons': true }\n });\n // this.overlayContainer.style.zIndex = '1002';\n dialogReference.afterClosed().subscribe(response => {\n // this.overlayContainer.style.zIndex = null;\n const name = response.name;\n const id = response.id;\n if (name && name !== '') {\n this.loadingService.setLoading(true);\n const fullname = name + '.' + extension;\n this.authService.startUserDownload(url, this.privateExport, fullname, id).subscribe(response => {\n // this.authService.startUserDownload(url, this.privateExport, fullname).subscribe(response => {\n this.loadingService.setLoading(false);\n const navigationExtras: NavigationExtras = {\n queryParams: {\n totalSub: this.adverseEventCount\n }\n };\n const params = { 'total': this.adverseEventCount };\n this.router.navigate(['/user-downloads/', response.id]);\n }, error => this.loadingService.setLoading(false));\n }\n });\n }\n }\n }\n\n getApiExportUrl(etag: string, extension: string): string {\n return this.adverseEventService.getApiExportUrlCvm(etag, extension);\n }\n\n adverseEventCvmListExportUrl() {\n if (this.bdnum != null) {\n this.exportUrl = this.adverseEventService.getAdverseEventCvmListExportUrl(this.bdnum);\n }\n }\n\n}\n\n","export const impuritiesSearchSortValues = [\n {\n 'value': 'default',\n 'display': 'Relevance'\n },\n {\n 'value': '^root_productSubstanceName',\n 'display': 'Source Type, Ascending',\n 'displayedColumns': 'productSubstanceName',\n 'direction': 'asc'\n },\n {\n 'value': '$root_productSubstanceName',\n 'display': 'Source Type, Descending',\n 'displayedColumns': 'productSubstanceName',\n 'direction': 'desc'\n },\n {\n 'value': '^root_sourceType',\n 'display': 'Source Type, Ascending',\n 'displayedColumns': 'sourceType',\n 'direction': 'asc'\n },\n {\n 'value': '$root_sourceType',\n 'display': 'Source Type, Descending',\n 'displayedColumns': 'sourceType',\n 'direction': 'desc'\n },\n {\n 'value': '^root_source',\n 'display': 'Source, Ascending',\n 'displayedColumns': 'source',\n 'direction': 'asc'\n },\n {\n 'value': '$root_source',\n 'display': 'Source, Descending',\n 'displayedColumns': 'source',\n 'direction': 'desc'\n },\n {\n 'value': '^root_sourceId',\n 'display': 'Source ID, A-Z',\n 'displayedColumns': 'sourceId',\n 'direction': 'asc'\n },\n {\n 'value': '$root_sourceId',\n 'display': 'Source ID, Z-A',\n 'displayedColumns': 'sourceId',\n 'direction': 'desc'\n },\n {\n 'value': '^root_type',\n 'display': 'Type, A-Z',\n 'displayedColumns': 'type',\n 'direction': 'asc'\n },\n {\n 'value': '$root_type',\n 'display': 'Type, Z-A',\n 'displayedColumns': 'type',\n 'direction': 'desc'\n },\n {\n 'value': '^root_specType',\n 'display': 'Spec Type, A-Z',\n 'displayedColumns': 'specType',\n 'direction': 'asc'\n },\n {\n 'value': '$root_specType',\n 'display': 'Spec Type, Z-A',\n 'displayedColumns': 'specType',\n 'direction': 'desc'\n }\n];\n","\n Impurities Specs\n \n \n 0\">\n \n \n\n \n
\n\n\n \n
\n \n \n
\n\n
\n\n \n Product/Substance Name | \n \n \n | \n \n\n \n Source Type | \n {{impurities.sourceType}} | \n \n\n \n Source | \n {{impurities.source}} | \n \n\n \n Source ID | \n {{impurities.sourceId}} | \n \n\n \n Type | \n {{impurities.type}} | \n \n\n \n Spec Type | \n {{impurities.specType}} | \n \n\n \n Parent Substance | \n \n \n | \n \n\n \n Impurities Related Substance | \n \n \n \n \n \n \n \n \n \n \n \n \n {{impDetail.limitType}} \n {{impDetail.limitValue}} {{impDetail.unit}}\n \n {{impDetail.impurityType}}\n \n \n \n \n \n \n\n \n \n\n \n | \n \n\n
\n
\n
\n
\n\n\n","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, Router, NavigationExtras } from '@angular/router';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Sort } from '@angular/material/sort';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ConfigService } from '@gsrs-core/config';\nimport { LoadingService } from '@gsrs-core/loading/loading.service';\nimport { AuthService } from '@gsrs-core/auth';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { ImpuritiesService } from '../../../impurities/service/impurities.service';\nimport { GeneralService } from '../../../service/general.service';\nimport { SubstanceCardBaseFilteredList } from '@gsrs-core/substance-details';\nimport { SubstanceDetailsBaseTableDisplay } from '../substance-details-base-table-display';\nimport { Impurities, ImpuritiesTesting, ImpuritiesDetails, IdentityCriteria } from '../../../impurities/model/impurities.model';\nimport { Facet } from '@gsrs-core/facets-manager';\nimport { FacetParam, FacetHttpParams, FacetQueryResponse } from '@gsrs-core/facets-manager';\nimport { ExportDialogComponent } from '@gsrs-core/substances-browse/export-dialog/export-dialog.component';\nimport { impuritiesSearchSortValues } from '../../../impurities/impurities-search-sort-values';\n\n@Component({\n selector: 'app-substance-impurities',\n templateUrl: './substance-impurities.component.html',\n styleUrls: ['./substance-impurities.component.scss']\n})\nexport class SubstanceImpuritiesComponent extends SubstanceDetailsBaseTableDisplay implements OnInit, OnDestroy {\n\n @Input() substanceUuid: string;\n @Input() substanceName: string;\n @Output() countImpuritiesOut: EventEmitter = new EventEmitter();\n private subscriptions: Array = [];\n parentSubstance: string;\n parentSubstanceUuid: string;\n showSpinner = false;\n impurities: Array;\n totalImpurities = 0;\n impuritiesCount = 0;\n impuritiesTestTotal = 0;\n pageIndex = 0;\n pageSize = 5;\n public privateSearchTerm?: string;\n private privateFacetParams: FacetParam;\n privateExport = false;\n disableExport = false;\n etag = '';\n public sortValues = impuritiesSearchSortValues;\n order = '$root_productSubstanceName';\n ascDescDir = 'desc';\n displayedColumns: string[] = [\n 'productSubstanceName',\n 'sourceType',\n 'source',\n 'sourceid',\n 'type',\n 'specType',\n 'parentSubstance',\n 'relatedSubstance'\n ];\n\n constructor(\n private router: Router,\n public gaService: GoogleAnalyticsService,\n private impuritiesService: ImpuritiesService,\n private generalService: GeneralService,\n private authService: AuthService,\n private loadingService: LoadingService,\n private dialog: MatDialog\n ) {\n super(gaService, impuritiesService);\n }\n\n ngOnInit() {\n const rolesSubscription = this.authService.hasAnyRolesAsync('Admin', 'Updater', 'SuperUpdater').subscribe(response => {\n this.isAdmin = response;\n });\n this.subscriptions.push(rolesSubscription);\n\n if (this.substanceUuid) {\n this.getImpuritiesBySubstanceUuid();\n this.impuritiesListExportUrl();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n }\n\n /*\n getSubstanceImpuritiesNEW(pageEvent?: PageEvent): void {\n this.setPageEvent(pageEvent);\n\n this.showSpinner = true; // Start progress spinner\n this.impuritiesService.searchImpurities(this.substanceUuid, this.page, this.pageSize).subscribe(results => {\n this.setResultData(results);\n this.impurities = results;\n this.getImpuritiesTestTotal();\n this.impuritiesCount = this.totalRecords;\n this.countImpuritiesOut.emit(this.impuritiesCount);\n this.showSpinner = false; // Stop progress spinner\n });\n }\n */\n\n searchImpurities() {\n this.privateSearchTerm = this.substanceUuid;\n // this.loadingService.setLoading(true);\n const skip = this.pageIndex * this.pageSize;\n const subscription = this.impuritiesService.searchImpurities(\n skip,\n this.pageSize,\n this.privateSearchTerm,\n this.privateFacetParams,\n )\n .subscribe(pagingResponse => {\n // this.isError = false;\n\n this.setResultData(pagingResponse.content);\n this.impurities = pagingResponse.content;\n this.impuritiesCount = pagingResponse.total;\n this.countImpuritiesOut.emit(this.impuritiesCount);\n this.etag = pagingResponse.etag;\n\n /*\n if (pagingResponse.total % this.pageSize === 0) {\n this.lastPage = (pagingResponse.total / this.pageSize);\n } else {\n this.lastPage = Math.floor(pagingResponse.total / this.pageSize + 1);\n }\n */\n // Set Facets from paging response\n /* if (pagingResponse.facets && pagingResponse.facets.length > 0) {\n this.rawFacets = pagingResponse.facets;\n }\n */\n }, error => {\n /*\n console.log('error');\n const notification: AppNotification = {\n message: 'There was an error trying to retrieve Products. Please refresh and try again.',\n type: NotificationType.error,\n milisecondsToShow: 6000\n };\n this.isError = true;\n this.isLoading = false;\n this.loadingService.setLoading(this.isLoading);\n this.notificationService.setNotification(notification);\n */\n }, () => {\n subscription.unsubscribe();\n // this.isLoading = false;\n // this.loadingService.setLoading(this.isLoading);\n });\n }\n\n\n getImpuritiesBySubstanceUuid(pageEvent?: PageEvent): void {\n this.showSpinner = true; // Start progress spinner\n\n this.setPageEvent(pageEvent);\n const skip = this.page * this.pageSize;\n\n // , this.page, this.pageSize\n this.impuritiesService.getImpuritiesBySubstanceUuid(\n this.order,\n skip,\n this.pageSize,\n this.substanceUuid,\n this.privateFacetParams).subscribe(results => {\n this.impuritiesService.totalRecords = results.total;\n this.impurities = results.content;\n\n // Load Impurities Test Details by Substance Uuid\n this.loadImpuritiesTestDetails();\n\n this.setResultData(this.impurities);\n\n this.totalImpurities = results.total;\n\n this.etag = results.etag;\n this.countImpuritiesOut.emit(this.totalImpurities);\n });\n this.showSpinner = false; // Stop progress spinner\n }\n\n /*\n getImpuritiesByTestImpuritiesDetails(pageEvent?: PageEvent): void {\n this.setPageEvent(pageEvent);\n\n this.showSpinner = true; // Start progress spinner\n // , this.page, this.pageSize\n this.impuritiesService.getImpuritiesBySubstanceUuid(this.substanceUuid).subscribe(results => {\n this.impuritiesService.totalRecords = results.total;\n this.impurities = results.content;\n\n //Load Impurities Test Details by Substance Uuid\n this.loadImpuritiesTestDetails();\n\n this.setResultData(this.impurities);\n\n this.totalImpurities = results.total;\n\n this.etag = results.etag;\n this.countImpuritiesOut.emit(this.totalImpurities);\n });\n this.showSpinner = false; // Stop progress spinner\n }\n */\n\n loadImpuritiesTestDetails() {\n this.impurities.forEach((element, index) => {\n element.impuritiesSubstanceList.forEach((elementSub, indexSub) => {\n\n if (elementSub.substanceUuid) {\n // if current Substance is same as Parent Substance of Impurities\n if (elementSub.substanceUuid === this.substanceUuid) {\n elementSub._parentSubstanceName = this.substanceName;\n elementSub._parentSubstanceUuid = elementSub.substanceUuid;\n }\n }\n elementSub.impuritiesTestList.forEach((elementTest, indexTest) => {\n\n elementTest.impuritiesDetailsList.forEach((elementDetail, indexDetail) => {\n\n if (elementDetail.relatedSubstanceUuid != null) {\n // if current Substance is same as Impurities Details of Impurities\n if (elementDetail.relatedSubstanceUuid === this.substanceUuid) {\n const subSubscription = this.generalService.getSubstanceNamesBySubstanceUuid(elementSub.substanceUuid).subscribe(substanceNames => {\n let subNames = substanceNames;\n\n // Get Preferred Term or DisplayName == true\n subNames.forEach((names, index) => {\n if (names.displayName === true) {\n elementSub._parentSubstanceName = names.name;\n elementSub._parentSubstanceUuid = elementSub.substanceUuid;\n }\n });\n });\n this.subscriptions.push(subSubscription);\n }\n }\n }); // Impurities Details forEach\n }); // Test forEach\n }); // Substance forEach\n }); // Impurities forEach\n }\n\n getSubstanceNames(substanceUuid: string): string {\n let preferredTerm;\n if (substanceUuid) {\n const subSubscription = this.generalService.getSubstanceNamesBySubstanceUuid(substanceUuid).subscribe(substanceNames => {\n let subNames = substanceNames;\n\n // Get Preferred Term or DisplayName == true\n subNames.forEach((names, index) => {\n if (names.displayName === true) {\n preferredTerm = names.name;\n }\n });\n });\n this.subscriptions.push(subSubscription);\n return preferredTerm;\n }\n }\n\n /*\n getSubstanceImpurities(pageEvent?: PageEvent): void {\n this.setPageEvent(pageEvent);\n\n this.showSpinner = true; // Start progress spinner\n this.impuritiesService.getSubstanceImpurities(this.substanceUuid, this.page, this.pageSize).subscribe(results => {\n this.setResultData(results);\n this.impurities = results;\n this.impuritiesCount = this.totalRecords;\n this.impuritiesService.totalRecords = this.totalRecords;\n this.countImpuritiesOut.emit(this.impuritiesCount);\n this.showSpinner = false; // Stop progress spinner\n });\n }\n */\n\n export() {\n if (this.etag) {\n const extension = 'xlsx';\n const url = this.getApiExportUrl(this.etag, extension);\n if (this.authService.getUser() !== '') {\n const dialogReference = this.dialog.open(ExportDialogComponent, {\n // height: '215x',\n width: '700px',\n data: { 'extension': extension, 'type': 'substanceImpurities', 'entity': 'impurities', 'hideOptionButtons': true }\n });\n // this.overlayContainer.style.zIndex = '1002';\n dialogReference.afterClosed().subscribe(response => {\n // this.overlayContainer.style.zIndex = null;\n const name = response.name;\n const id = response.id;\n if (name && name !== '') {\n this.loadingService.setLoading(true);\n const fullname = name + '.' + extension;\n this.authService.startUserDownload(url, this.privateExport, fullname, id).subscribe(response => {\n // this.authService.startUserDownload(url, this.privateExport, fullname).subscribe(response => {\n this.loadingService.setLoading(false);\n const navigationExtras: NavigationExtras = {\n queryParams: {\n totalSub: this.totalImpurities\n }\n };\n const params = { 'total': this.totalImpurities };\n this.router.navigate(['/user-downloads/', response.id]);\n }, error => this.loadingService.setLoading(false));\n }\n });\n }\n }\n }\n\n getApiExportUrl(etag: string, extension: string): string {\n return this.impuritiesService.getApiExportUrl(etag, extension);\n }\n\n impuritiesListExportUrl() {\n if (this.substanceUuid != null) {\n this.exportUrl = this.impuritiesService.getImpuritiesListExportUrl(this.substanceUuid);\n }\n }\n\n sortData(sort: Sort) {\n if (sort.active) {\n const orderIndex = this.displayedColumns.indexOf(sort.active).toString(); // + 2; // Adding 2, for name and bdnum.\n this.ascDescDir = sort.direction;\n this.sortValues.forEach(sortValue => {\n if (sortValue.displayedColumns && sortValue.direction) {\n if (this.displayedColumns[orderIndex] === sortValue.displayedColumns && this.ascDescDir === sortValue.direction) {\n this.order = sortValue.value;\n }\n }\n });\n this.getImpuritiesBySubstanceUuid();\n }\n return;\n }\n}\n","\n\n
\n\n \n\n \n
\n
No Product Found
\n
\n
\n \n \n \n {{prov}}\n \n {{loadingStatus}}\n \n \n \n 0\">\n \n \n\n \n \n
\n\n \n
\n \n \n
\n\n
\n\n \n Product ID | \n \n \n \n \n {{product.productNDC}}\n \n \n (NO NDC)\n \n \n \n \n \n \n \n \n \n \n {{product.productNDC}}\n \n \n (NO NDC)\n \n \n ({{product.fromtable}})\n \n | \n \n\n \n Product Name | \n \n \n {{prodName.productName}}\n \n | \n \n\n \n Labeler Name | \n {{product.labelerName}}\n \n {{prodComp.labelerName}}\n \n | \n \n\n \n Country | \n \n \n {{prodComp.countryWithoutCode}}\n \n | \n \n\n \n Status | \n {{product.status}} | \n \n\n \n Product Type | \n {{product.productType}} | \n \n\n \n Ingredient Type | \n \n \n \n \n {{prodIng.ingredientType}}\n \n \n \n | \n \n\n \n Application Number | \n {{product.appTypeNumber}} | \n \n\n
\n
\n
\n
\n \n \n \n\n \n\n \n \n\n \n\n\n \n \n \n \n\n \n\n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n
","import { Component, OnInit, AfterViewInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router, NavigationExtras } from '@angular/router';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SubstanceCardBaseFilteredList } from '@gsrs-core/substance-details';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { ProductService } from '../../product/service/product.service';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { Sort } from '@angular/material/sort';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort } from '@angular/material/sort';\nimport { PageEvent } from '@angular/material/paginator';\nimport { SubstanceDetailsBaseTableDisplay } from './substance-details-base-table-display';\nimport { SubstanceAdverseEventCvmComponent } from './substance-adverseevent/adverseeventcvm/substance-adverseeventcvm.component';\nimport { ConfigService, LoadedComponents } from '@gsrs-core/config';\nimport { AuthService } from '@gsrs-core/auth';\nimport { take } from 'rxjs/operators';\nimport { FacetParam } from '@gsrs-core/facets-manager';\nimport { LoadingService } from '@gsrs-core/loading/loading.service';\nimport { ExportDialogComponent } from '@gsrs-core/substances-browse/export-dialog/export-dialog.component';\nimport { productSearchSortValues } from '../../product/products-browse/product-search-sort-values';\n\n@Component({\n selector: 'app-substance-products',\n templateUrl: './substance-products.component.html',\n styleUrls: ['./substance-products.component.scss']\n})\n\nexport class SubstanceProductsComponent extends SubstanceDetailsBaseTableDisplay implements OnInit, AfterViewInit {\n\n productCount = 0;\n applicationCount = 0;\n clinicalTrialCount = 0;\n clinicalTrialEuCount = 0;\n advPtCount = 0;\n advDmeCount = 0;\n advCvmCount = 0;\n impuritiesCount = 0;\n provenance = '';\n provenanceList = '';\n datasourceList = '';\n loadingStatus = '';\n showSpinner = false;\n baseDomain: string;\n foundProvenanceList = false;\n loadingComplete = false;\n substanceName = '';\n public privateSearch?: string;\n private privateFacetParams: FacetParam;\n public privateSearchTerm?: string;\n privateExport = false;\n disableExport = false;\n etag = '';\n etagAllExport = '';\n loadedComponents: LoadedComponents;\n public sortValues = productSearchSortValues;\n order = '$root_productNDC';\n ascDescDir = 'desc';\n public displayedColumns: string[] = [\n 'productNDC',\n 'productName',\n 'labelerName',\n 'country',\n 'status',\n 'productNameType',\n 'ingredientType',\n 'applicationNumber'\n ];\n\n constructor(\n private router: Router,\n public gaService: GoogleAnalyticsService,\n private productService: ProductService,\n private configService: ConfigService,\n public authService: AuthService,\n private loadingService: LoadingService,\n private dialog: MatDialog\n ) {\n super(gaService, productService);\n }\n\n ngOnInit() {\n this.loadedComponents = this.configService.configData.loadedComponents || null;\n this.authService.hasAnyRolesAsync('Admin', 'Updater', 'SuperUpdater').pipe(take(1)).subscribe(response => {\n this.isAdmin = response;\n });\n\n if (this.substance && this.substance.uuid) {\n this.getSubstanceKey();\n\n // Get Provenance List to Display in Tab\n this.getProductProvenanceList();\n\n this.privateSearch = 'root_productIngredientAllList_substanceUuid:\\\"' + this.substance.uuid + '\"';\n this.getSubstanceProducts(null, 'initial');\n\n /*\n this.searchControl.valueChanges.subscribe(value => {\n if (value) {\n this.privateSearch = '\\\"' + value + '\\\" AND ' + 'root_productIngredientAllList_substanceUuid:\\\"'\n + this.substance.uuid + '\\\" AND root_provenance:' + this.provenance;\n this.getSubstanceProducts(null);\n }\n }, error => {\n console.log(error);\n });\n */\n }\n\n this.baseDomain = this.configService.configData.apiUrlDomain;\n }\n\n ngAfterViewInit() {\n }\n\n getApplicationCount($event: any) {\n this.applicationCount = $event;\n }\n\n getClinicalTrialCount($event: any) {\n this.clinicalTrialCount = $event;\n }\n\n getClinicalTrialEuCount($event: any) {\n this.clinicalTrialEuCount = $event;\n }\n\n getAdvPtCount($event: any) {\n this.advPtCount = $event;\n }\n\n getAdvDmeCount($event: any) {\n this.advDmeCount = $event;\n }\n\n getAdvCvmCount($event: any) {\n this.advCvmCount = $event;\n }\n\n getImpuritiesCount($event: any) {\n this.impuritiesCount = $event;\n }\n\n getSubstanceKey() {\n if (this.substance) {\n // Get Substance Name\n this.substanceName = this.substance._name;\n if (this.substance.codes.length > 0) {\n this.substance.codes.forEach(element => {\n if (element.codeSystem && element.codeSystem === 'BDNUM') {\n if (element.type && element.type === 'PRIMARY') {\n this.bdnum = element.code;\n }\n }\n });\n }\n }\n }\n\n getProductProvenanceList(): void {\n this.productService.getProductProvenanceList(this.substance.uuid).subscribe(results => {\n this.provenanceList = results;\n if (this.provenanceList && this.provenanceList.length > 0) {\n this.foundProvenanceList = true;\n }\n this.loadingComplete = true;\n });\n }\n\n getSubstanceProducts(pageEvent?: PageEvent, searchType?: string) {\n this.setPageEvent(pageEvent);\n this.showSpinner = true; // Start progress spinner\n const skip = this.page * this.pageSize;\n\n const subscription = this.productService.getProducts(\n this.order,\n skip,\n this.pageSize,\n this.privateSearch,\n this.privateFacetParams\n ).subscribe(pagingResponse => {\n if (searchType && searchType === 'initial') {\n this.etagAllExport = pagingResponse.etag;\n } else {\n this.productService.totalRecords = pagingResponse.total;\n this.setResultData(pagingResponse.content);\n this.productCount = pagingResponse.total;\n this.etag = pagingResponse.etag;\n }\n }, error => {\n this.showSpinner = false; // Stop progress spinner\n console.log('error');\n }, () => {\n this.showSpinner = false; // Stop progress spinner\n subscription.unsubscribe();\n });\n this.loadingStatus = '';\n // this.showSpinner = false; // Stop progress spinner\n }\n\n export() {\n if (this.etagAllExport) {\n const extension = 'xlsx';\n const url = this.getApiExportUrl(this.etagAllExport, extension);\n if (this.authService.getUser() !== '') {\n const dialogReference = this.dialog.open(ExportDialogComponent, {\n // height: '215x',\n width: '700px',\n data: { 'extension': extension, 'type': 'substanceProduct', 'entity': 'products', 'hideOptionButtons': true }\n });\n // this.overlayContainer.style.zIndex = '1002';\n dialogReference.afterClosed().subscribe(response => {\n // this.overlayContainer.style.zIndex = null;\n const name = response.name;\n const id = response.id;\n if (name && name !== '') {\n this.loadingService.setLoading(true);\n const fullname = name + '.' + extension;\n this.authService.startUserDownload(url, this.privateExport, fullname, id).subscribe(response => {\n // this.authService.startUserDownload(url, this.privateExport, fullname).subscribe(response => {\n this.loadingService.setLoading(false);\n const navigationExtras: NavigationExtras = {\n queryParams: {\n totalSub: this.productCount\n }\n };\n const params = { 'total': this.productCount };\n this.router.navigate(['/user-downloads/', response.id]);\n }, error => this.loadingService.setLoading(false));\n }\n });\n }\n }\n }\n\n getApiExportUrl(etag: string, extension: string): string {\n return this.productService.getApiExportUrl(etag, extension);\n }\n\n tabSelected($event) {\n if ($event) {\n const evt: any = $event.tab;\n const textLabel: string = evt.textLabel;\n // Get Country and fromTable/Source from Tab Label\n if (textLabel != null) {\n this.loadingStatus = 'Loading data...';\n this.provenance = textLabel;\n // const index = textLabel.indexOf(' ');\n // const tab = textLabel.slice(0, index);\n // this.country = textLabel.slice(index + 1, textLabel.length);\n // set the current result data to empty or null.\n this.paged = [];\n\n this.privateSearch = 'root_productIngredientAllList_substanceUuid:\\\"'\n + this.substance.uuid + '\\\" AND root_provenance:' + this.provenance;\n\n this.getSubstanceProducts();\n\n }\n\n }\n }\n\n sortData(sort: Sort) {\n if (sort.active) {\n const orderIndex = this.displayedColumns.indexOf(sort.active).toString(); // + 2; // Adding 2, for name and bdnum.\n this.ascDescDir = sort.direction;\n this.sortValues.forEach(sortValue => {\n if (sortValue.displayedColumns && sortValue.direction) {\n if (this.displayedColumns[orderIndex] === sortValue.displayedColumns && this.ascDescDir === sortValue.direction) {\n this.order = sortValue.value;\n }\n }\n });\n this.getSubstanceProducts();\n }\n return;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DynamicComponentLoaderModule } from '@gsrs-core/dynamic-component-loader';\nimport { SubstanceProductsComponent } from './substance-products.component';\nimport { MatTableModule } from '@angular/material/table';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { SubstanceApplicationComponent } from './substance-application/substance-application.component';\nimport { SubstanceClinicalTrialsComponent } from './substance-clinical-trials/substance-clinical-trials.component';\nimport { SubstanceAdverseEventPtComponent } from './substance-adverseevent/adverseeventpt/substance-adverseeventpt.component';\nimport { SubstanceAdverseEventDmeComponent } from './substance-adverseevent/adverseeventdme/substance-adverseeventdme.component';\nimport { SubstanceAdverseEventCvmComponent } from './substance-adverseevent/adverseeventcvm/substance-adverseeventcvm.component';\nimport { SubstanceClinicalTrialsEuropeComponent } from './substance-clinical-trials-eu/substance-clinical-trials-eu.component';\nimport { SubstanceImpuritiesComponent } from './substance-impurities/substance-impurities.component';\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceProductsComponent),\n MatTableModule,\n CdkTableModule,\n MatPaginatorModule,\n MatSortModule,\n MatInputModule,\n MatTabsModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ReactiveFormsModule,\n FormsModule,\n RouterModule\n ],\n declarations: [\n SubstanceProductsComponent,\n SubstanceApplicationComponent,\n SubstanceClinicalTrialsComponent,\n SubstanceAdverseEventPtComponent,\n SubstanceAdverseEventDmeComponent,\n SubstanceAdverseEventCvmComponent,\n SubstanceClinicalTrialsEuropeComponent,\n SubstanceImpuritiesComponent,\n ]\n})\nexport class SubstanceProductsModule { }\n"],"sourceRoot":"webpack:///","file":"1421.9f98b15e8097e932.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1555.5941be4697c9ee43.js b/frontend/src/main/resources/static/1555.d79f717ed5f4973b.js
similarity index 92%
rename from frontend/src/main/resources/static/1555.5941be4697c9ee43.js
rename to frontend/src/main/resources/static/1555.d79f717ed5f4973b.js
index d09e634..b76ae89 100644
--- a/frontend/src/main/resources/static/1555.5941be4697c9ee43.js
+++ b/frontend/src/main/resources/static/1555.d79f717ed5f4973b.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1555],{41555:function(Y,l,e){e.r(l),e.d(l,{SubstanceOtherLinksModule:function(){return N}});var m=e(48047),d=e(78069),c=e(36362),f=e(24582),h=e(7318),v=e(2756),g=e(50253),t=e(76442),i=e(97217);function C(n,s){1&n&&(t.TgZ(0,"th",8),t._uU(1," linkageType "),t.qZA())}function S(n,s){if(1&n&&(t.TgZ(0,"td",9),t._uU(1),t.qZA()),2&n){var a=s.$implicit;t.xp6(1),t.hij(" ",a.linkageType," ")}}function L(n,s){1&n&&(t.TgZ(0,"th",8),t._uU(1," Sites "),t.qZA())}function O(n,s){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){var a=s.$implicit;t.xp6(1),t.hij(" ",a.subunitIndex+"_"+a.residueIndex," ")}}function Z(n,s){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,O,2,1,"span",11),t.qZA()),2&n){var a=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",a.sites)}}function b(n,s){if(1&n&&(t.TgZ(0,"td",9),t.YNc(1,Z,2,1,"span",10),t.qZA()),2&n){var a=s.$implicit;t.xp6(1),t.Q6J("ngIf",a.sites)}}function k(n,s){1&n&&t._UZ(0,"tr",12)}function T(n,s){1&n&&t._UZ(0,"tr",13)}var x=function(){var n=function(s){(0,f.Z)(u,s);var a=(0,h.Z)(u);function u(){var r;return(0,d.Z)(this,u),(r=a.call(this)).otherLinks=[],r.displayedColumns=["linkageType","residueIndex"],r.substanceUpdated=new g.x,r}return(0,m.Z)(u,[{key:"ngOnInit",value:function(){var o=this;this.substanceUpdated.subscribe(function(Q){o.substance=Q,null!=o.substance&&null!=o.substance.protein&&null!=o.substance.protein.otherLinks&&o.substance.protein.otherLinks.length&&(o.otherLinks=o.substance.protein.otherLinks),o.countUpdate.emit(o.otherLinks.length)})}},{key:"getFullSite",value:function(o){return o.subunitIndex+"_"+o.residueIndex}}]),u}(v.B);return n.\u0275fac=function(a){return new(a||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-substance-other-links"]],features:[t.qOj],decls:10,vars:3,consts:[[1,"responsive"],["mat-table","",3,"dataSource"],["matColumnDef","linkageType"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","residueIndex"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],[4,"ngIf"],[4,"ngFor","ngForOf"],["mat-header-row",""],["mat-row",""]],template:function(a,u){1&a&&(t.TgZ(0,"div",0),t.TgZ(1,"table",1),t.ynx(2,2),t.YNc(3,C,2,0,"th",3),t.YNc(4,S,2,1,"td",4),t.BQk(),t.ynx(5,5),t.YNc(6,L,2,0,"th",3),t.YNc(7,b,2,1,"td",4),t.BQk(),t.YNc(8,k,1,0,"tr",6),t.YNc(9,T,1,0,"tr",7),t.qZA(),t.qZA()),2&a&&(t.xp6(1),t.Q6J("dataSource",u.otherLinks),t.xp6(7),t.Q6J("matHeaderRowDef",u.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",u.displayedColumns))},directives:[i.BZ,i.w1,i.fO,i.ge,i.Dz,i.ev,c.O5,c.sg,i.as,i.XQ,i.nj,i.Gk],styles:[""]}),n}(),y=e(64061),U=e(98002),D=e(43365),I=e(26439),A=e(33865),p=e(90587),N=function(){var n=(0,m.Z)(function s(){(0,d.Z)(this,s)});return n.\u0275fac=function(a){return new(a||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[[c.ez,y.o.forChild(x),U.Bz,i.p0,A.HT,I.TU,D.c,p.UX,p.u5]]}),n}()}}]);
-//# sourceMappingURL=1555.5941be4697c9ee43.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1555],{41555:function(Y,l,e){e.r(l),e.d(l,{SubstanceOtherLinksModule:function(){return N}});var m=e(1884),d=e(39117),c=e(36362),f=e(46751),h=e(56101),v=e(2756),g=e(50253),t=e(86613),i=e(97217);function C(n,s){1&n&&(t.TgZ(0,"th",8),t._uU(1," linkageType "),t.qZA())}function S(n,s){if(1&n&&(t.TgZ(0,"td",9),t._uU(1),t.qZA()),2&n){var a=s.$implicit;t.xp6(1),t.hij(" ",a.linkageType," ")}}function L(n,s){1&n&&(t.TgZ(0,"th",8),t._uU(1," Sites "),t.qZA())}function O(n,s){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){var a=s.$implicit;t.xp6(1),t.hij(" ",a.subunitIndex+"_"+a.residueIndex," ")}}function Z(n,s){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,O,2,1,"span",11),t.qZA()),2&n){var a=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",a.sites)}}function b(n,s){if(1&n&&(t.TgZ(0,"td",9),t.YNc(1,Z,2,1,"span",10),t.qZA()),2&n){var a=s.$implicit;t.xp6(1),t.Q6J("ngIf",a.sites)}}function k(n,s){1&n&&t._UZ(0,"tr",12)}function T(n,s){1&n&&t._UZ(0,"tr",13)}var x=function(){var n=function(s){(0,f.Z)(u,s);var a=(0,h.Z)(u);function u(){var r;return(0,d.Z)(this,u),(r=a.call(this)).otherLinks=[],r.displayedColumns=["linkageType","residueIndex"],r.substanceUpdated=new g.x,r}return(0,m.Z)(u,[{key:"ngOnInit",value:function(){var o=this;this.substanceUpdated.subscribe(function(Q){o.substance=Q,null!=o.substance&&null!=o.substance.protein&&null!=o.substance.protein.otherLinks&&o.substance.protein.otherLinks.length&&(o.otherLinks=o.substance.protein.otherLinks),o.countUpdate.emit(o.otherLinks.length)})}},{key:"getFullSite",value:function(o){return o.subunitIndex+"_"+o.residueIndex}}]),u}(v.B);return n.\u0275fac=function(a){return new(a||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-substance-other-links"]],features:[t.qOj],decls:10,vars:3,consts:[[1,"responsive"],["mat-table","",3,"dataSource"],["matColumnDef","linkageType"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","residueIndex"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],[4,"ngIf"],[4,"ngFor","ngForOf"],["mat-header-row",""],["mat-row",""]],template:function(a,u){1&a&&(t.TgZ(0,"div",0),t.TgZ(1,"table",1),t.ynx(2,2),t.YNc(3,C,2,0,"th",3),t.YNc(4,S,2,1,"td",4),t.BQk(),t.ynx(5,5),t.YNc(6,L,2,0,"th",3),t.YNc(7,b,2,1,"td",4),t.BQk(),t.YNc(8,k,1,0,"tr",6),t.YNc(9,T,1,0,"tr",7),t.qZA(),t.qZA()),2&a&&(t.xp6(1),t.Q6J("dataSource",u.otherLinks),t.xp6(7),t.Q6J("matHeaderRowDef",u.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",u.displayedColumns))},directives:[i.BZ,i.w1,i.fO,i.ge,i.Dz,i.ev,c.O5,c.sg,i.as,i.XQ,i.nj,i.Gk],styles:[""]}),n}(),y=e(64061),U=e(98002),D=e(43365),I=e(26439),A=e(33865),p=e(90587),N=function(){var n=(0,m.Z)(function s(){(0,d.Z)(this,s)});return n.\u0275fac=function(a){return new(a||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[[c.ez,y.o.forChild(x),U.Bz,i.p0,A.HT,I.TU,D.c,p.UX,p.u5]]}),n}()}}]);
+//# sourceMappingURL=1555.d79f717ed5f4973b.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1555.5941be4697c9ee43.js.map b/frontend/src/main/resources/static/1555.d79f717ed5f4973b.js.map
similarity index 99%
rename from frontend/src/main/resources/static/1555.5941be4697c9ee43.js.map
rename to frontend/src/main/resources/static/1555.d79f717ed5f4973b.js.map
index 2ac7785..e548f55 100644
--- a/frontend/src/main/resources/static/1555.5941be4697c9ee43.js.map
+++ b/frontend/src/main/resources/static/1555.d79f717ed5f4973b.js.map
@@ -1 +1 @@
-{"version":3,"mappings":"2SAMMA,gBAAuCA,yBAAYA,kCACnDA,gBAAqCA,SAAqBA,gCAArBA,6DAIrCA,gBAAuCA,mBAAMA,kCAE3CA,gBACMA,SACNA,gCADMA,oFAF4BA,gBAClCA,yBAGAA,sCAHuBA,4DADzBA,gBAAoCA,yBAIzBA,gCAJgCA,qDAO7CA,sCACAA,iBCVG,IAAMC,EAAb,eAAaA,EAAb,0CAME,0CACEC,gBANFC,WAA0B,GAC1BD,mBAAmB,CAAC,cAAe,gBACnCA,mBAAmB,IAAIE,IAGvBF,EANF,uCAUE,WAAQ,WACNG,KAAKC,iBAAiBC,UAAU,YAC9BC,EAAKC,UAAYA,EACK,MAAlBD,EAAKC,WACsB,MAA1BD,EAAKC,UAAUC,SACsB,MAArCF,EAAKC,UAAUC,QAAQP,YACvBK,EAAKC,UAAUC,QAAQP,WAAWQ,SACrCH,EAAKL,WAAaK,EAAKC,UAAUC,QAAQP,YAE3CK,EAAKI,YAAYC,KAAKL,EAAKL,WAAWQ,YAnB5C,yBAuBE,SAAYG,GACV,OAAOA,EAAKC,aAAe,IAAMD,EAAKE,iBAxB1CC,GAAkDC,kDAArCjB,8BAA4BkB,mfDTzCnB,iBAEEA,mBAEEA,WACEA,sBACAA,sBACFA,QAEAA,WACEA,sBACAA,sBAKFA,QAEAA,sBACAA,sBACFA,QAEFA,eApBoBA,0CAgBIA,qDACaA,+ICVxBC,EAAb,qECeamB,EAAb,eAAaA,KAAbC,iFAAaD,4DAbJ,CACPE,KACAC,aAAsCtB,GACtCuB,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,SAIWV,EAAb","names":["i0","SubstanceOtherLinksComponent","r","otherLinks","Subject","this","substanceUpdated","subscribe","o","substance","protein","length","countUpdate","emit","site","subunitIndex","residueIndex","u","SubstanceCardBase","selectors","SubstanceOtherLinksModule","m","CommonModule","DynamicComponentLoaderModule","RouterModule","MatTableModule","CdkTableModule","MatPaginatorModule","MatInputModule","ReactiveFormsModule","FormsModule"],"sources":["./src/app/core/substance-details/substance-other-links/substance-other-links.component.html","./src/app/core/substance-details/substance-other-links/substance-other-links.component.ts","./src/app/core/substance-details/substance-other-links/substance-other-links.module.ts"],"sourcesContent":["\r\n\r\n\r\n
\r\n\r\n \r\n linkageType | \r\n {{link.linkageType}} | \r\n \r\n\r\n \r\n Sites | \r\n \r\n \r\n {{site.subunitIndex + \"_\" + site.residueIndex}}\r\n \r\n | \r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {SubstanceCardBase} from '../substance-card-base';\r\nimport {Link, Site, SubstanceDetail} from '../../substance/substance.model';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-substance-other-links',\r\n templateUrl: './substance-other-links.component.html',\r\n styleUrls: ['./substance-other-links.component.scss']\r\n})\r\nexport class SubstanceOtherLinksComponent extends SubstanceCardBase implements OnInit {\r\n otherLinks: Array = [];\r\n displayedColumns = ['linkageType', 'residueIndex'];\r\n substanceUpdated = new Subject();\r\n\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.substanceUpdated.subscribe(substance => {\r\n this.substance = substance;\r\n if (this.substance != null\r\n && this.substance.protein != null\r\n && this.substance.protein.otherLinks != null\r\n && this.substance.protein.otherLinks.length) {\r\n this.otherLinks = this.substance.protein.otherLinks;\r\n }\r\n this.countUpdate.emit(this.otherLinks.length);\r\n });\r\n }\r\n\r\n getFullSite(site: Site ): string {\r\n return site.subunitIndex + '_' + site.residueIndex;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SubstanceOtherLinksComponent } from './substance-other-links.component';\r\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\r\nimport {RouterModule} from '@angular/router';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatPaginatorModule} from '@angular/material/paginator';\r\nimport {MatTableModule} from '@angular/material/table';\r\nimport {CdkTableModule} from '@angular/cdk/table';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\nimports: [\r\n CommonModule,\r\n DynamicComponentLoaderModule.forChild(SubstanceOtherLinksComponent),\r\n RouterModule,\r\n MatTableModule,\r\n CdkTableModule,\r\n MatPaginatorModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n FormsModule\r\n],\r\n declarations: [SubstanceOtherLinksComponent]\r\n})\r\nexport class SubstanceOtherLinksModule { }\r\n"],"sourceRoot":"webpack:///","file":"1555.5941be4697c9ee43.js"}
\ No newline at end of file
+{"version":3,"mappings":"2SAMMA,gBAAuCA,yBAAYA,kCACnDA,gBAAqCA,SAAqBA,gCAArBA,6DAIrCA,gBAAuCA,mBAAMA,kCAE3CA,gBACMA,SACNA,gCADMA,oFAF4BA,gBAClCA,yBAGAA,sCAHuBA,4DADzBA,gBAAoCA,yBAIzBA,gCAJgCA,qDAO7CA,sCACAA,iBCVG,IAAMC,EAAb,eAAaA,EAAb,0CAME,0CACEC,gBANFC,WAA0B,GAC1BD,mBAAmB,CAAC,cAAe,gBACnCA,mBAAmB,IAAIE,IAGvBF,EANF,uCAUE,WAAQ,WACNG,KAAKC,iBAAiBC,UAAU,YAC9BC,EAAKC,UAAYA,EACK,MAAlBD,EAAKC,WACsB,MAA1BD,EAAKC,UAAUC,SACsB,MAArCF,EAAKC,UAAUC,QAAQP,YACvBK,EAAKC,UAAUC,QAAQP,WAAWQ,SACrCH,EAAKL,WAAaK,EAAKC,UAAUC,QAAQP,YAE3CK,EAAKI,YAAYC,KAAKL,EAAKL,WAAWQ,YAnB5C,yBAuBE,SAAYG,GACV,OAAOA,EAAKC,aAAe,IAAMD,EAAKE,iBAxB1CC,GAAkDC,kDAArCjB,8BAA4BkB,mfDTzCnB,iBAEEA,mBAEEA,WACEA,sBACAA,sBACFA,QAEAA,WACEA,sBACAA,sBAKFA,QAEAA,sBACAA,sBACFA,QAEFA,eApBoBA,0CAgBIA,qDACaA,+ICVxBC,EAAb,qECeamB,EAAb,eAAaA,KAAbC,iFAAaD,4DAbJ,CACPE,KACAC,aAAsCtB,GACtCuB,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,SAIWV,EAAb","names":["i0","SubstanceOtherLinksComponent","r","otherLinks","Subject","this","substanceUpdated","subscribe","o","substance","protein","length","countUpdate","emit","site","subunitIndex","residueIndex","u","SubstanceCardBase","selectors","SubstanceOtherLinksModule","m","CommonModule","DynamicComponentLoaderModule","RouterModule","MatTableModule","CdkTableModule","MatPaginatorModule","MatInputModule","ReactiveFormsModule","FormsModule"],"sources":["./src/app/core/substance-details/substance-other-links/substance-other-links.component.html","./src/app/core/substance-details/substance-other-links/substance-other-links.component.ts","./src/app/core/substance-details/substance-other-links/substance-other-links.module.ts"],"sourcesContent":["\r\n\r\n\r\n
\r\n\r\n \r\n linkageType | \r\n {{link.linkageType}} | \r\n \r\n\r\n \r\n Sites | \r\n \r\n \r\n {{site.subunitIndex + \"_\" + site.residueIndex}}\r\n \r\n | \r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {SubstanceCardBase} from '../substance-card-base';\r\nimport {Link, Site, SubstanceDetail} from '../../substance/substance.model';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-substance-other-links',\r\n templateUrl: './substance-other-links.component.html',\r\n styleUrls: ['./substance-other-links.component.scss']\r\n})\r\nexport class SubstanceOtherLinksComponent extends SubstanceCardBase implements OnInit {\r\n otherLinks: Array = [];\r\n displayedColumns = ['linkageType', 'residueIndex'];\r\n substanceUpdated = new Subject();\r\n\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.substanceUpdated.subscribe(substance => {\r\n this.substance = substance;\r\n if (this.substance != null\r\n && this.substance.protein != null\r\n && this.substance.protein.otherLinks != null\r\n && this.substance.protein.otherLinks.length) {\r\n this.otherLinks = this.substance.protein.otherLinks;\r\n }\r\n this.countUpdate.emit(this.otherLinks.length);\r\n });\r\n }\r\n\r\n getFullSite(site: Site ): string {\r\n return site.subunitIndex + '_' + site.residueIndex;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SubstanceOtherLinksComponent } from './substance-other-links.component';\r\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\r\nimport {RouterModule} from '@angular/router';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatPaginatorModule} from '@angular/material/paginator';\r\nimport {MatTableModule} from '@angular/material/table';\r\nimport {CdkTableModule} from '@angular/cdk/table';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\nimports: [\r\n CommonModule,\r\n DynamicComponentLoaderModule.forChild(SubstanceOtherLinksComponent),\r\n RouterModule,\r\n MatTableModule,\r\n CdkTableModule,\r\n MatPaginatorModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n FormsModule\r\n],\r\n declarations: [SubstanceOtherLinksComponent]\r\n})\r\nexport class SubstanceOtherLinksModule { }\r\n"],"sourceRoot":"webpack:///","file":"1555.d79f717ed5f4973b.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1605.e926f9e8319f223e.js b/frontend/src/main/resources/static/1605.0458f0024200345f.js
similarity index 91%
rename from frontend/src/main/resources/static/1605.e926f9e8319f223e.js
rename to frontend/src/main/resources/static/1605.0458f0024200345f.js
index ee1d900..8ee5e2a 100644
--- a/frontend/src/main/resources/static/1605.e926f9e8319f223e.js
+++ b/frontend/src/main/resources/static/1605.0458f0024200345f.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1605],{91605:function(j,l,t){t.r(l),t.d(l,{SubstanceFormMixtureDetailsModule:function(){return P}});var m=t(48047),d=t(78069),v=t(36362),p=t(75143),x=t(44770),S=t(43365),f=t(90587),b=t(91434),h=t(7168),g=t(96769),y=t(3311),M=t(24582),D=t(7318),C=t(18291),F=t(33567),Z=t(40104),U=t(79223),e=t(76442),A=t(24459),O=t(14900),I=function(){var s=function(c){(0,M.Z)(i,c);var u=(0,D.Z)(i);function i(r,n,o){var a;return(0,d.Z)(this,i),(a=u.call(this)).substanceFormService=r,a.gaService=n,a.cvService=o,a.subscriptions=[],a.analyticsEventCategory="substance form Mixture Details",a}return(0,m.Z)(i,[{key:"ngOnInit",value:function(){var n=this;this.menuLabelUpdate.emit("Mixture Details");var o=this.substanceFormService.substance.subscribe(function(a){null==a.mixture&&(a.mixture={access:[]}),n.mixture=a.mixture,n.parent=a.mixture.parentSubstance,n.relatedSubstanceUuid=n.mixture.parentSubstance&&n.mixture.parentSubstance.refuuid||"",n.substanceFormService.resetState()});this.subscriptions.push(o)}},{key:"ngAfterViewInit",value:function(){}},{key:"ngOnDestroy",value:function(){this.subscriptions.forEach(function(n){n.unsubscribe()})}},{key:"updateAccess",value:function(n){this.mixture.access=n}},{key:"parentSubstanceUpdated",value:function(n){if(null!==n){var o={refPname:n._name,name:n._name,refuuid:n.uuid,substanceClass:"reference",approvalID:n.approvalID};this.mixture.parentSubstance=o,this.relatedSubstanceUuid=o&&o.refuuid||""}else this.mixture.parentSubstance=null,this.relatedSubstanceUuid=null}}]),i}(U.o);return s.\u0275fac=function(u){return new(u||s)(e.Y36(F.B),e.Y36(Z.$),e.Y36(C.I))},s.\u0275cmp=e.Xpm({type:s,selectors:[["app-substance-form-mixture-details"]],features:[e.qOj],decls:5,vars:2,consts:[[1,"mixture-details-container"],[1,"flex-column","related-substance"],["eventCategory","substanceRelationshipRelatedSub","placeholder","Parent Substance","header","Parent Substance",3,"subuuid","selectionUpdated"],[1,"form-row"],[3,"source"]],template:function(u,i){1&u&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"app-substance-selector",2),e.NdJ("selectionUpdated",function(n){return i.parentSubstanceUpdated(n)}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(3,"div",3),e._UZ(4,"app-audit-info",4),e.qZA()),2&u&&(e.xp6(2),e.Q6J("subuuid",i.relatedSubstanceUuid),e.xp6(2),e.Q6J("source",i.mixture))},directives:[A.Q,O.n],styles:[".mixture-details-container[_ngcontent-%COMP%]{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:initial;align-items:initial;padding:20px;-ms-flex-pack:justify;justify-content:space-between}.related-substance[_ngcontent-%COMP%]{max-width:75%;width:60%}"]}),s}(),T=t(63200),P=(t(64061),function(){var s=(0,m.Z)(function c(){(0,d.Z)(this,c)});return s.\u0275fac=function(u){return new(u||s)},s.\u0275mod=e.oAB({type:s}),s.\u0275inj=e.cJS({imports:[[v.ez,p.o0.forChild(I),x.lN,S.c,f.UX,f.u5,b.LD,h.O,g.O,y.ZQ,T.U]]}),s}())}}]);
-//# sourceMappingURL=1605.e926f9e8319f223e.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1605],{91605:function(j,l,t){t.r(l),t.d(l,{SubstanceFormMixtureDetailsModule:function(){return P}});var m=t(1884),d=t(39117),v=t(36362),p=t(75143),x=t(44770),S=t(43365),f=t(90587),b=t(91434),h=t(7168),g=t(96769),y=t(3311),M=t(46751),D=t(56101),C=t(18291),F=t(33567),Z=t(40104),U=t(79223),e=t(86613),A=t(24459),O=t(14900),I=function(){var s=function(c){(0,M.Z)(i,c);var u=(0,D.Z)(i);function i(r,n,o){var a;return(0,d.Z)(this,i),(a=u.call(this)).substanceFormService=r,a.gaService=n,a.cvService=o,a.subscriptions=[],a.analyticsEventCategory="substance form Mixture Details",a}return(0,m.Z)(i,[{key:"ngOnInit",value:function(){var n=this;this.menuLabelUpdate.emit("Mixture Details");var o=this.substanceFormService.substance.subscribe(function(a){null==a.mixture&&(a.mixture={access:[]}),n.mixture=a.mixture,n.parent=a.mixture.parentSubstance,n.relatedSubstanceUuid=n.mixture.parentSubstance&&n.mixture.parentSubstance.refuuid||"",n.substanceFormService.resetState()});this.subscriptions.push(o)}},{key:"ngAfterViewInit",value:function(){}},{key:"ngOnDestroy",value:function(){this.subscriptions.forEach(function(n){n.unsubscribe()})}},{key:"updateAccess",value:function(n){this.mixture.access=n}},{key:"parentSubstanceUpdated",value:function(n){if(null!==n){var o={refPname:n._name,name:n._name,refuuid:n.uuid,substanceClass:"reference",approvalID:n.approvalID};this.mixture.parentSubstance=o,this.relatedSubstanceUuid=o&&o.refuuid||""}else this.mixture.parentSubstance=null,this.relatedSubstanceUuid=null}}]),i}(U.o);return s.\u0275fac=function(u){return new(u||s)(e.Y36(F.B),e.Y36(Z.$),e.Y36(C.I))},s.\u0275cmp=e.Xpm({type:s,selectors:[["app-substance-form-mixture-details"]],features:[e.qOj],decls:5,vars:2,consts:[[1,"mixture-details-container"],[1,"flex-column","related-substance"],["eventCategory","substanceRelationshipRelatedSub","placeholder","Parent Substance","header","Parent Substance",3,"subuuid","selectionUpdated"],[1,"form-row"],[3,"source"]],template:function(u,i){1&u&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"app-substance-selector",2),e.NdJ("selectionUpdated",function(n){return i.parentSubstanceUpdated(n)}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(3,"div",3),e._UZ(4,"app-audit-info",4),e.qZA()),2&u&&(e.xp6(2),e.Q6J("subuuid",i.relatedSubstanceUuid),e.xp6(2),e.Q6J("source",i.mixture))},directives:[A.Q,O.n],styles:[".mixture-details-container[_ngcontent-%COMP%]{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:initial;align-items:initial;padding:20px;-ms-flex-pack:justify;justify-content:space-between}.related-substance[_ngcontent-%COMP%]{max-width:75%;width:60%}"]}),s}(),T=t(63200),P=(t(64061),function(){var s=(0,m.Z)(function c(){(0,d.Z)(this,c)});return s.\u0275fac=function(u){return new(u||s)},s.\u0275mod=e.oAB({type:s}),s.\u0275inj=e.cJS({imports:[[v.ez,p.o0.forChild(I),x.lN,S.c,f.UX,f.u5,b.LD,h.O,g.O,y.ZQ,T.U]]}),s}())}}]);
+//# sourceMappingURL=1605.0458f0024200345f.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1605.e926f9e8319f223e.js.map b/frontend/src/main/resources/static/1605.0458f0024200345f.js.map
similarity index 99%
rename from frontend/src/main/resources/static/1605.e926f9e8319f223e.js.map
rename to frontend/src/main/resources/static/1605.0458f0024200345f.js.map
index b081f42..728dfac 100644
--- a/frontend/src/main/resources/static/1605.e926f9e8319f223e.js.map
+++ b/frontend/src/main/resources/static/1605.0458f0024200345f.js.map
@@ -1 +1 @@
-{"version":3,"mappings":"qZAgBaA,EAAb,eAAaA,EAAb,0CAOE,WACUC,EACDC,EACAC,GAAsC,6BAE7CC,gBAJQH,uBACDG,cACAA,cALDA,gBAAqC,GAQ3CA,EAAKC,uBAAyB,iCAHeD,EAVjD,uCAgBE,WAAQ,WACNE,KAAKC,gBAAgBC,KAAK,mBAC1B,IAAMC,EAAwBH,KAAKL,qBAAqBS,UAAUC,UAAU,YACjD,MAArBD,EAAUE,UACZF,EAAUE,QAAU,CAClBC,OAAQ,KAGZC,EAAKF,QAAUF,EAAUE,QACzBE,EAAKC,OAASL,EAAUE,QAAQI,gBAChCF,EAAKG,qBAAuBH,EAAKF,QAAQI,iBAAmBF,EAAKF,QAAQI,gBAAgBE,SAAW,GACpGJ,EAAKb,qBAAqBkB,eAE5Bb,KAAKc,cAAcC,KAAKZ,KA7B5B,6BAgCE,cAhCF,yBAmCE,WACEH,KAAKc,cAAcE,QAAQ,YACzBC,EAAaC,kBArCnB,0BAyCE,SAAaX,GACXP,KAAKM,QAAQC,OAASA,IA1C1B,oCA6CE,SAAuBH,GAErB,GAAkB,OAAdA,EAAoB,CACtB,IAAMe,EAAqC,CACzCC,SAAUhB,EAAUiB,MACpBC,KAAMlB,EAAUiB,MAChBT,QAASR,EAAUmB,KACnBC,eAAgB,YAChBC,WAAYrB,EAAUqB,YAExBzB,KAAKM,QAAQI,gBAAkBS,EAC/BnB,KAAKW,qBAAuBQ,GAAoBA,EAAiBP,SAAW,QAE5EZ,KAAKM,QAAQI,gBAAkB,KAC/BV,KAAKW,qBAAuB,SA3DlCe,GAA2DC,kDAA9CjC,GAAoCkC,2DAApClC,EAAoCmC,2WChBjDD,iBACEA,iBACEA,oCAAwBA,4CAAoBE,8BAG5CF,QACFA,QAGFA,QACAA,iBACEA,4BACFA,eAR4BA,iDAOVA,4UDKLlC,EAAb,cEeaqC,YAAb,eAAaA,KAAbC,iFAAaD,4DAjBF,CACPE,KACAC,cAAsCxC,GACtCyC,KACAC,IACAC,KACAC,KACAC,KACAC,IACAC,IACAC,KACAC,QAMSZ,EAAb","names":["SubstanceFormMixtureDetailsComponent","substanceFormService","gaService","cvService","a","analyticsEventCategory","this","menuLabelUpdate","emit","substanceSubscription","substance","subscribe","mixture","access","n","parent","parentSubstance","relatedSubstanceUuid","refuuid","resetState","subscriptions","push","forEach","subscription","unsubscribe","relatedSubstance","refPname","_name","name","uuid","substanceClass","approvalID","i","SubstanceFormBase","i0","selectors","ctx","SubstanceFormMixtureDetailsModule","m","CommonModule","DynamicComponentLoaderModule","MatFormFieldModule","MatInputModule","ReactiveFormsModule","FormsModule","MatSelectModule","SubstanceFormModule","NameResolverModule","NgMultiSelectDropDownModule","SubstanceSelectorModule"],"sources":["./src/app/core/substance-form/mixture-details/substance-form-mixture-details.component.ts","./src/app/core/substance-form/mixture-details/substance-form-mixture-details.component.html","./src/app/core/substance-form/mixture-details/substance-form-mixture-details.module.ts"],"sourcesContent":["import {AfterViewInit, Component, OnDestroy, OnInit} from '@angular/core';\nimport {SubstanceCardBaseFilteredList} from '@gsrs-core/substance-form/base-classes/substance-form-base-filtered-list';\nimport {Mixture, SubstanceRelated, SubstanceSummary} from '@gsrs-core/substance';\nimport {Subscription} from 'rxjs';\nimport {ControlledVocabularyService, VocabularyTerm} from '@gsrs-core/controlled-vocabulary';\nimport {IDropdownSettings} from 'ng-multiselect-dropdown';\nimport {SubstanceFormService} from '@gsrs-core/substance-form/substance-form.service';\nimport {GoogleAnalyticsService} from '@gsrs-core/google-analytics';\nimport { SubstanceFormBase } from '../base-classes/substance-form-base';\n\n@Component({\n selector: 'app-substance-form-mixture-details',\n templateUrl: './substance-form-mixture-details.component.html',\n styleUrls: ['./substance-form-mixture-details.component.scss']\n})\n// eslint-disable-next-line max-len\nexport class SubstanceFormMixtureDetailsComponent extends SubstanceFormBase implements OnInit, AfterViewInit, OnDestroy {\n\n parent: SubstanceRelated;\n relatedSubstanceUuid: string;\n mixture: Mixture;\n private subscriptions: Array = [];\n\n constructor(\n private substanceFormService: SubstanceFormService,\n public gaService: GoogleAnalyticsService,\n public cvService: ControlledVocabularyService\n ) {\n super();\n this.analyticsEventCategory = 'substance form Mixture Details';\n }\n\n ngOnInit() {\n this.menuLabelUpdate.emit('Mixture Details');\n const substanceSubscription = this.substanceFormService.substance.subscribe(substance => {\n if (substance.mixture == null) {\n substance.mixture = {\n access: []\n };\n }\n this.mixture = substance.mixture;\n this.parent = substance.mixture.parentSubstance;\n this.relatedSubstanceUuid = this.mixture.parentSubstance && this.mixture.parentSubstance.refuuid || '';\n this.substanceFormService.resetState();\n });\n this.subscriptions.push(substanceSubscription);\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n updateAccess(access: Array): void {\n this.mixture.access = access;\n }\n\n parentSubstanceUpdated(substance: SubstanceSummary): void {\n\n if (substance !== null) {\n const relatedSubstance: SubstanceRelated = {\n refPname: substance._name,\n name: substance._name,\n refuuid: substance.uuid,\n substanceClass: 'reference',\n approvalID: substance.approvalID\n };\n this.mixture.parentSubstance = relatedSubstance;\n this.relatedSubstanceUuid = relatedSubstance && relatedSubstance.refuuid || '';\n } else {\n this.mixture.parentSubstance = null;\n this.relatedSubstanceUuid = null;\n }\n }\n\n}\n","\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {DynamicComponentLoaderModule} from '@gsrs-core/dynamic-component-loader';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatInputModule} from '@angular/material/input';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatSelectModule} from '@angular/material/select';\nimport {SubstanceFormModule} from '@gsrs-core/substance-form/substance-form.module';\nimport {NameResolverModule} from '@gsrs-core/name-resolver/name-resolver.module';\nimport {NgMultiSelectDropDownModule} from 'ng-multiselect-dropdown';\nimport {SubstanceFormMixtureDetailsComponent} from '@gsrs-core/substance-form/mixture-details/substance-form-mixture-details.component';\nimport {SubstanceSelectorModule} from '@gsrs-core/substance-selector/substance-selector.module';\n\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceFormMixtureDetailsComponent),\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatSelectModule,\n SubstanceFormModule,\n NameResolverModule,\n NgMultiSelectDropDownModule,\n SubstanceSelectorModule\n ],\n declarations: [\n SubstanceFormMixtureDetailsComponent\n ]\n})\nexport class SubstanceFormMixtureDetailsModule { }\n"],"sourceRoot":"webpack:///","file":"1605.e926f9e8319f223e.js"}
\ No newline at end of file
+{"version":3,"mappings":"qZAgBaA,EAAb,eAAaA,EAAb,0CAOE,WACUC,EACDC,EACAC,GAAsC,6BAE7CC,gBAJQH,uBACDG,cACAA,cALDA,gBAAqC,GAQ3CA,EAAKC,uBAAyB,iCAHeD,EAVjD,uCAgBE,WAAQ,WACNE,KAAKC,gBAAgBC,KAAK,mBAC1B,IAAMC,EAAwBH,KAAKL,qBAAqBS,UAAUC,UAAU,YACjD,MAArBD,EAAUE,UACZF,EAAUE,QAAU,CAClBC,OAAQ,KAGZC,EAAKF,QAAUF,EAAUE,QACzBE,EAAKC,OAASL,EAAUE,QAAQI,gBAChCF,EAAKG,qBAAuBH,EAAKF,QAAQI,iBAAmBF,EAAKF,QAAQI,gBAAgBE,SAAW,GACpGJ,EAAKb,qBAAqBkB,eAE5Bb,KAAKc,cAAcC,KAAKZ,KA7B5B,6BAgCE,cAhCF,yBAmCE,WACEH,KAAKc,cAAcE,QAAQ,YACzBC,EAAaC,kBArCnB,0BAyCE,SAAaX,GACXP,KAAKM,QAAQC,OAASA,IA1C1B,oCA6CE,SAAuBH,GAErB,GAAkB,OAAdA,EAAoB,CACtB,IAAMe,EAAqC,CACzCC,SAAUhB,EAAUiB,MACpBC,KAAMlB,EAAUiB,MAChBT,QAASR,EAAUmB,KACnBC,eAAgB,YAChBC,WAAYrB,EAAUqB,YAExBzB,KAAKM,QAAQI,gBAAkBS,EAC/BnB,KAAKW,qBAAuBQ,GAAoBA,EAAiBP,SAAW,QAE5EZ,KAAKM,QAAQI,gBAAkB,KAC/BV,KAAKW,qBAAuB,SA3DlCe,GAA2DC,kDAA9CjC,GAAoCkC,2DAApClC,EAAoCmC,2WChBjDD,iBACEA,iBACEA,oCAAwBA,4CAAoBE,8BAG5CF,QACFA,QAGFA,QACAA,iBACEA,4BACFA,eAR4BA,iDAOVA,4UDKLlC,EAAb,cEeaqC,YAAb,eAAaA,KAAbC,iFAAaD,4DAjBF,CACPE,KACAC,cAAsCxC,GACtCyC,KACAC,IACAC,KACAC,KACAC,KACAC,IACAC,IACAC,KACAC,QAMSZ,EAAb","names":["SubstanceFormMixtureDetailsComponent","substanceFormService","gaService","cvService","a","analyticsEventCategory","this","menuLabelUpdate","emit","substanceSubscription","substance","subscribe","mixture","access","n","parent","parentSubstance","relatedSubstanceUuid","refuuid","resetState","subscriptions","push","forEach","subscription","unsubscribe","relatedSubstance","refPname","_name","name","uuid","substanceClass","approvalID","i","SubstanceFormBase","i0","selectors","ctx","SubstanceFormMixtureDetailsModule","m","CommonModule","DynamicComponentLoaderModule","MatFormFieldModule","MatInputModule","ReactiveFormsModule","FormsModule","MatSelectModule","SubstanceFormModule","NameResolverModule","NgMultiSelectDropDownModule","SubstanceSelectorModule"],"sources":["./src/app/core/substance-form/mixture-details/substance-form-mixture-details.component.ts","./src/app/core/substance-form/mixture-details/substance-form-mixture-details.component.html","./src/app/core/substance-form/mixture-details/substance-form-mixture-details.module.ts"],"sourcesContent":["import {AfterViewInit, Component, OnDestroy, OnInit} from '@angular/core';\nimport {SubstanceCardBaseFilteredList} from '@gsrs-core/substance-form/base-classes/substance-form-base-filtered-list';\nimport {Mixture, SubstanceRelated, SubstanceSummary} from '@gsrs-core/substance';\nimport {Subscription} from 'rxjs';\nimport {ControlledVocabularyService, VocabularyTerm} from '@gsrs-core/controlled-vocabulary';\nimport {IDropdownSettings} from 'ng-multiselect-dropdown';\nimport {SubstanceFormService} from '@gsrs-core/substance-form/substance-form.service';\nimport {GoogleAnalyticsService} from '@gsrs-core/google-analytics';\nimport { SubstanceFormBase } from '../base-classes/substance-form-base';\n\n@Component({\n selector: 'app-substance-form-mixture-details',\n templateUrl: './substance-form-mixture-details.component.html',\n styleUrls: ['./substance-form-mixture-details.component.scss']\n})\n// eslint-disable-next-line max-len\nexport class SubstanceFormMixtureDetailsComponent extends SubstanceFormBase implements OnInit, AfterViewInit, OnDestroy {\n\n parent: SubstanceRelated;\n relatedSubstanceUuid: string;\n mixture: Mixture;\n private subscriptions: Array = [];\n\n constructor(\n private substanceFormService: SubstanceFormService,\n public gaService: GoogleAnalyticsService,\n public cvService: ControlledVocabularyService\n ) {\n super();\n this.analyticsEventCategory = 'substance form Mixture Details';\n }\n\n ngOnInit() {\n this.menuLabelUpdate.emit('Mixture Details');\n const substanceSubscription = this.substanceFormService.substance.subscribe(substance => {\n if (substance.mixture == null) {\n substance.mixture = {\n access: []\n };\n }\n this.mixture = substance.mixture;\n this.parent = substance.mixture.parentSubstance;\n this.relatedSubstanceUuid = this.mixture.parentSubstance && this.mixture.parentSubstance.refuuid || '';\n this.substanceFormService.resetState();\n });\n this.subscriptions.push(substanceSubscription);\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n updateAccess(access: Array): void {\n this.mixture.access = access;\n }\n\n parentSubstanceUpdated(substance: SubstanceSummary): void {\n\n if (substance !== null) {\n const relatedSubstance: SubstanceRelated = {\n refPname: substance._name,\n name: substance._name,\n refuuid: substance.uuid,\n substanceClass: 'reference',\n approvalID: substance.approvalID\n };\n this.mixture.parentSubstance = relatedSubstance;\n this.relatedSubstanceUuid = relatedSubstance && relatedSubstance.refuuid || '';\n } else {\n this.mixture.parentSubstance = null;\n this.relatedSubstanceUuid = null;\n }\n }\n\n}\n","\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {DynamicComponentLoaderModule} from '@gsrs-core/dynamic-component-loader';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatInputModule} from '@angular/material/input';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatSelectModule} from '@angular/material/select';\nimport {SubstanceFormModule} from '@gsrs-core/substance-form/substance-form.module';\nimport {NameResolverModule} from '@gsrs-core/name-resolver/name-resolver.module';\nimport {NgMultiSelectDropDownModule} from 'ng-multiselect-dropdown';\nimport {SubstanceFormMixtureDetailsComponent} from '@gsrs-core/substance-form/mixture-details/substance-form-mixture-details.component';\nimport {SubstanceSelectorModule} from '@gsrs-core/substance-selector/substance-selector.module';\n\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceFormMixtureDetailsComponent),\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatSelectModule,\n SubstanceFormModule,\n NameResolverModule,\n NgMultiSelectDropDownModule,\n SubstanceSelectorModule\n ],\n declarations: [\n SubstanceFormMixtureDetailsComponent\n ]\n})\nexport class SubstanceFormMixtureDetailsModule { }\n"],"sourceRoot":"webpack:///","file":"1605.0458f0024200345f.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1704.3c88a3cb0f5db0ae.js b/frontend/src/main/resources/static/1704.3c88a3cb0f5db0ae.js
new file mode 100644
index 0000000..b921402
--- /dev/null
+++ b/frontend/src/main/resources/static/1704.3c88a3cb0f5db0ae.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1704],{51704:function(le,C,a){a.r(C),a.d(C,{SubstanceFormRelationshipsModule:function(){return se}});var m=a(1884),h=a(39117),d=a(36362),F=a(46751),S=a(56101),y=a(79550),M=a(24874),O=a(96238),e=a(86613),I=a(78444),_=a(44770),x=a(43365),c=a(90587),f=a(87317),b=a(26439),w=a(51279),A=a(42827),P=a(52149),Z=a(40089),v=a(65590),J=a(24459),U=a(16667),Q=a(84577),N=a(33662),k=a(48302),D=a(14900);function E(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",21),e._uU(1," Deleted\xa0 "),e.TgZ(2,"button",22),e.NdJ("click",function(){return e.CHM(i),e.oxw().undoDelete()}),e._UZ(3,"mat-icon",23),e.qZA(),e.qZA()}}function Y(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",9),e.TgZ(1,"app-cv-input",24),e.NdJ("valueChange",function(o){return e.CHM(i),e.oxw().relationship.qualification=o}),e.qZA(),e.TgZ(2,"app-cv-input",25),e.NdJ("valueChange",function(o){return e.CHM(i),e.oxw().relationship.interactionType=o}),e.qZA(),e.qZA()}if(2&n){var t=e.oxw();e.xp6(1),e.Q6J("model",t.relationship.qualification),e.xp6(1),e.Q6J("model",t.relationship.interactionType)}}function z(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",9),e.TgZ(1,"div",26),e.TgZ(2,"div",27),e._uU(3,"Comments"),e.qZA(),e.TgZ(4,"textarea",28),e.NdJ("ngModelChange",function(o){return e.CHM(i),e.oxw().relationship.comments=o}),e._uU(5," "),e.qZA(),e.qZA(),e.qZA()}if(2&n){var t=e.oxw();e.xp6(4),e.Q6J("ngModel",t.relationship.comments)}}function q(n,l){1&n&&e._UZ(0,"mat-icon",29)}function H(n,l){1&n&&e._UZ(0,"mat-icon",30)}function j(n,l){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"div",35),e._UZ(2,"app-domain-references",36,37),e.qZA(),e.qZA()),2&n){var i=e.oxw(2);e.xp6(2),e.Q6J("referencesUuids",i.relationship.references)}}function $(n,l){if(1&n&&(e.TgZ(0,"div"),e.TgZ(1,"div",31),e.TgZ(2,"div",32),e._uU(3,"Amount"),e.qZA(),e._UZ(4,"app-amount-form",33),e.qZA(),e.YNc(5,j,4,1,"div",13),e.TgZ(6,"div",9),e._UZ(7,"app-audit-info",34),e.qZA(),e.qZA()),2&n){var i=e.oxw();e.xp6(4),e.Q6J("substanceAmount",i.relationship.amount),e.xp6(1),e.Q6J("ngIf",i.viewFull),e.xp6(2),e.Q6J("source",i.relationship)}}var L=function(){var n=function(){function l(i,t){(0,h.Z)(this,l),this.cvService=i,this.utilsService=t,this.relationshipDeleted=new e.vpe,this.viewFull=!0}return(0,m.Z)(l,[{key:"ngOnInit",value:function(){}},{key:"show",get:function(){return this.viewFull||null},set:function(t){null!=t&&(this.viewFull=t)}},{key:"relationship",get:function(){return this.privateRelationship},set:function(t){this.privateRelationship=t,null==this.privateRelationship.amount&&(this.privateRelationship.amount={}),this.relatedSubstanceUuid=this.privateRelationship.relatedSubstance&&this.privateRelationship.relatedSubstance.refuuid||"",this.mediatorSubstanceUuid=this.privateRelationship.mediatorSubstance&&this.privateRelationship.mediatorSubstance.refuuid||"",this.name=this.privateRelationship.relatedSubstance.refPname?this.privateRelationship.relatedSubstance.refPname:this.privateRelationship.relatedSubstance.name}},{key:"deleteRelationship",value:function(){var t=this;this.privateRelationship.$$deletedCode=this.utilsService.newUUID(),(!this.privateRelationship.relatedSubstance||!this.privateRelationship.relatedSubstance.refuuid)&&!this.privateRelationship.type&&(this.deleteTimer=setTimeout(function(){t.relationshipDeleted.emit(t.relationship)},2e3))}},{key:"undoDelete",value:function(){clearTimeout(this.deleteTimer),delete this.privateRelationship.$$deletedCode}},{key:"updateAccess",value:function(t){this.relationship.access=t}},{key:"relatedSubstanceUpdated",value:function(t){this.relationship.relatedSubstance=null!==t?{refPname:t._name,name:t._name,refuuid:t.uuid,substanceClass:"reference",approvalID:t.approvalID}:{}}},{key:"mediatorSubstanceUpdated",value:function(t){this.relationship.mediatorSubstance=null!==t?{refPname:t._name,refuuid:t.uuid,substanceClass:"reference",approvalID:t.approvalID}:{}}}]),l}();return n.\u0275fac=function(i){return new(i||n)(e.Y36(A.I),e.Y36(P.F))},n.\u0275cmp=e.Xpm({type:n,selectors:[["app-relationship-form"]],inputs:{show:"show",relationship:"relationship"},outputs:{relationshipDeleted:"relationshipDeleted"},decls:22,vars:13,consts:[[1,"relationship-form-container"],["class","notification-backdrop",4,"ngIf"],[1,"flex-column","delete-column"],[1,"delete-container"],["mat-icon-button","","matTooltip","Delete relationship",3,"click"],["svgIcon","delete_forever"],[1,"flex-column","related-substance"],["eventCategory","substanceRelationshipRelatedSub","placeholder","Related Substance","header","Related Substance",3,"hideImage","subuuid","name","selectionUpdated"],[1,"flex-column","form-content"],[1,"form-row"],["required","true","domain","RELATIONSHIP_TYPE","title","Type","name","type",1,"type",3,"model","valueChange"],[3,"access","accessOut"],["class","form-row ",4,"ngIf"],["class","form-row",4,"ngIf"],[1,"flex-column","mediator-substance"],["eventCategory","substanceFormDefinitionType","placeholder","Mediator Substance","header","Mediator Substance",3,"hideImage","subuuid","selectionUpdated"],["matTooltip","Expand / collapse rows",1,"chevron"],["mat-icon-button","",1,"chevron-button",3,"click"],["svgIcon","chevron_up",4,"ngIf"],["svgIcon","chevron_down",4,"ngIf"],[4,"ngIf"],[1,"notification-backdrop"],["mat-icon-button","","matTooltip","Undo",3,"click"],["svgIcon","undo"],["key","Relationship Qualification","title","Qualification","name","Qualification",1,"qualification",3,"model","valueChange"],["key","Relationship Interaction Type","title","Interaction Type","name","Interaction Type",1,"interaction-type",3,"model","valueChange"],[1,"comments"],[1,"textarea-label"],["placeholder","Enter text here","name","comments",3,"ngModel","ngModelChange"],["svgIcon","chevron_up"],["svgIcon","chevron_down"],[1,"amount-form-container"],[1,"amount-title"],[3,"substanceAmount"],[3,"source"],[1,"references-container"],[3,"referencesUuids"],["references",""]],template:function(i,t){1&i&&(e.TgZ(0,"div",0),e.YNc(1,E,4,0,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"div",3),e.TgZ(4,"button",4),e.NdJ("click",function(){return t.deleteRelationship()}),e._UZ(5,"mat-icon",5),e.qZA(),e.qZA(),e.qZA(),e.TgZ(6,"div",6),e.TgZ(7,"app-substance-selector",7),e.NdJ("selectionUpdated",function(o){return t.relatedSubstanceUpdated(o)}),e.qZA(),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"div",9),e.TgZ(10,"app-cv-input",10),e.NdJ("valueChange",function(o){return t.relationship.type=o}),e.qZA(),e.TgZ(11,"div"),e.TgZ(12,"app-access-manager",11),e.NdJ("accessOut",function(o){return t.updateAccess(o)}),e.qZA(),e.qZA(),e.qZA(),e.YNc(13,Y,3,2,"div",12),e.YNc(14,z,6,1,"div",13),e.qZA(),e.TgZ(15,"div",14),e.TgZ(16,"app-substance-selector",15),e.NdJ("selectionUpdated",function(o){return t.mediatorSubstanceUpdated(o)}),e.qZA(),e.qZA(),e.TgZ(17,"div",16),e.TgZ(18,"button",17),e.NdJ("click",function(){return t.viewFull=!t.viewFull}),e.YNc(19,q,1,0,"mat-icon",18),e.YNc(20,H,1,0,"mat-icon",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(21,$,8,3,"div",20)),2&i&&(e.xp6(1),e.Q6J("ngIf",t.relationship.$$deletedCode),e.xp6(6),e.Q6J("hideImage",!t.viewFull)("subuuid",t.relatedSubstanceUuid)("name",t.name),e.xp6(3),e.Q6J("model",t.relationship.type),e.xp6(2),e.Q6J("access",t.relationship.access),e.xp6(1),e.Q6J("ngIf",t.viewFull),e.xp6(1),e.Q6J("ngIf",t.viewFull),e.xp6(2),e.Q6J("hideImage",!t.viewFull)("subuuid",t.mediatorSubstanceUuid),e.xp6(3),e.Q6J("ngIf",t.viewFull),e.xp6(1),e.Q6J("ngIf",!t.viewFull),e.xp6(1),e.Q6J("ngIf",!t.relationship.$$deletedCode&&t.viewFull))},directives:[d.O5,f.lW,Z.gM,v.Hw,J.Q,U.S,Q.h,c.Fj,c.JJ,c.On,N.f,k.V,D.n],styles:[".relationship-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative;display:-ms-flexbox;display:flex}.type[_ngcontent-%COMP%] mat-form-field, .name[_ngcontent-%COMP%] mat-form-field, .property-name[_ngcontent-%COMP%] mat-form-field{width:100%}.collapse[_ngcontent-%COMP%]{padding:20px 10px 12px;position:relative}.chevron[_ngcontent-%COMP%]{width:20px;line-height:67px;color:var(--chevron-color)}.chevron-button[_ngcontent-%COMP%]{width:20px}.notification-backdrop[_ngcontent-%COMP%]{position:absolute;inset:0;display:-ms-flexbox;display:flex;z-index:10;background-color:var(--notif-backdrop-bg-color);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;font-size:30px;font-weight:700;color:var(--notif-backdrop-color)}.related-substance[_ngcontent-%COMP%], .mediator-substance[_ngcontent-%COMP%]{max-width:25%;width:25%}.form-content[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .delete-container[_ngcontent-%COMP%]{padding:0 10px 8px 0}.form-row[_ngcontent-%COMP%] .type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .qualification[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .interaction-type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .comments[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1;padding-right:15px}.key-value-pair[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:start;align-self:flex-start}.key-value-pair[_ngcontent-%COMP%] .key[_ngcontent-%COMP%]{font-size:11px;padding-bottom:3.5px;line-height:11px}.key-value-pair[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:15.5px}.references-container[_ngcontent-%COMP%]{width:100%}.amount-title[_ngcontent-%COMP%]{margin-bottom:10px;font-weight:700}.amount-form-container[_ngcontent-%COMP%]{padding:0 7px}@media (max-width: 990px){.form-content[_ngcontent-%COMP%]{width:100%}.mediator-substance[_ngcontent-%COMP%]{-ms-flex-order:-1;order:-1;width:40%;max-width:40%}.related-substance[_ngcontent-%COMP%]{-ms-flex-order:-2;order:-2;width:40%;max-width:40%}.delete-column[_ngcontent-%COMP%]{-ms-flex-order:-3;order:-3;width:5%}.relationship-form-container[_ngcontent-%COMP%]{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between}}"]}),n}(),T=a(19975);function V(n,l){if(1&n&&(e.TgZ(0,"mat-form-field",7),e._UZ(1,"input",8),e.qZA()),2&n){var i=e.oxw();e.Q6J("floatLabel","never"),e.xp6(1),e.Q6J("formControl",i.searchControl)}}function B(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"button",9),e.NdJ("click",function(){return e.CHM(i),e.oxw().collapse()}),e._uU(1),e.qZA()}if(2&n){var t=e.oxw();e.xp6(1),e.hij("",t.expanded?"Collapse":"Expand"," All")}}var R=function(){return[5,10,25,100]};function W(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"mat-paginator",10),e.NdJ("page",function(o){e.CHM(i);var r=e.oxw();return r.pageChange(o,r.analyticsEventCategory)}),e.qZA()}if(2&n){var t=e.oxw();e.Q6J("length",t.filtered&&t.filtered.length||0)("pageIndex",t.page)("pageSize",5)("pageSizeOptions",e.DdM(4,R))}}function X(n,l){1&n&&e._UZ(0,"mat-divider",14),2&n&&e.Q6J("inset",!0)}function K(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",11),e.TgZ(1,"app-relationship-form",12),e.NdJ("relationshipDeleted",function(g){return e.CHM(i),e.oxw().deleteRelationship(g)}),e.qZA(),e.YNc(2,X,1,1,"mat-divider",13),e.qZA()}if(2&n){var t=l.$implicit,s=l.last,o=l.index,r=e.oxw();e.Q6J("id","substance-relationship-"+o),e.xp6(1),e.Q6J("relationship",t)("show",r.expanded),e.xp6(1),e.Q6J("ngIf",!s)}}function G(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"mat-paginator",10),e.NdJ("page",function(o){e.CHM(i);var r=e.oxw();return r.pageChange(o,r.analyticsEventCategory)}),e.qZA()}if(2&n){var t=e.oxw();e.Q6J("length",t.filtered&&t.filtered.length||0)("pageIndex",t.page)("pageSize",5)("pageSizeOptions",e.DdM(4,R))}}function ee(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",15),e._UZ(1,"span",2),e.TgZ(2,"button",16),e.NdJ("click",function(){return e.CHM(i),e.oxw().addRelationship()}),e._uU(3," Add relationship "),e._UZ(4,"mat-icon",17),e.qZA(),e.qZA()}}var te=function(){var n=function(l){(0,F.Z)(t,l);var i=(0,S.Z)(t);function t(s,o,r){var p;return(0,h.Z)(this,t),(p=i.call(this,r)).substanceFormRelationshipsService=s,p.scrollToService=o,p.gaService=r,p.subscriptions=[],p.expanded=!0,p}return(0,m.Z)(t,[{key:"ngOnInit",value:function(){this.canAddItemUpdate.emit(!0),this.menuLabelUpdate.emit("Relationships"),this.analyticsEventCategory="substance form relationships"}},{key:"ngAfterViewInit",value:function(){var o=this,r=this.substanceFormRelationshipsService.substanceRelationships.subscribe(function(p){o.relationships=p,o.filtered=p;var g=o.searchControl.valueChanges.subscribe(function(u){o.filterList(u,o.relationships,o.analyticsEventCategory)},function(u){});o.subscriptions.push(g),o.page=0,o.pageChange()});this.subscriptions.push(r)}},{key:"ngOnDestroy",value:function(){this.componentDestroyed.emit(),this.subscriptions.forEach(function(o){o.unsubscribe()})}},{key:"collapse",value:function(){this.expanded=!this.expanded}},{key:"addItem",value:function(){this.addRelationship()}},{key:"addRelationship",value:function(){var o=this;this.substanceFormRelationshipsService.addSubstanceRelationship(),setTimeout(function(){o.scrollToService.scrollToElement("substance-relationship-0","center")})}},{key:"deleteRelationship",value:function(o){this.substanceFormRelationshipsService.deleteSubstanceRelationship(o)}}]),t}(y.u);return n.\u0275fac=function(i){return new(i||n)(e.Y36(O.F),e.Y36(I.i),e.Y36(M.$))},n.\u0275cmp=e.Xpm({type:n,selectors:[["app-substance-form-relationships-card"]],features:[e.qOj],decls:8,vars:6,consts:[[1,"flex-row"],["class","search",3,"floatLabel",4,"ngIf"],[1,"middle-fill"],["class","standardize","mat-button","",3,"click",4,"ngIf"],["showFirstLastButtons","true",3,"length","pageIndex","pageSize","pageSizeOptions","page",4,"ngIf"],["class","relationship","appScrollToTarget","",3,"id",4,"ngFor","ngForOf"],["style","display: flex;",4,"ngIf"],[1,"search",3,"floatLabel"],["matInput","","placeholder","Search",3,"formControl"],["mat-button","",1,"standardize",3,"click"],["showFirstLastButtons","true",3,"length","pageIndex","pageSize","pageSizeOptions","page"],["appScrollToTarget","",1,"relationship",3,"id"],[3,"relationship","show","relationshipDeleted"],["class","form-divider",3,"inset",4,"ngIf"],[1,"form-divider",3,"inset"],[2,"display","flex"],["mat-button","",3,"click"],["svgIcon","add_circle_outline"]],template:function(i,t){1&i&&(e.TgZ(0,"div",0),e.YNc(1,V,2,2,"mat-form-field",1),e._UZ(2,"span",2),e.YNc(3,B,2,1,"button",3),e.qZA(),e.YNc(4,W,1,5,"mat-paginator",4),e.YNc(5,K,3,4,"div",5),e.YNc(6,G,1,5,"mat-paginator",4),e.YNc(7,ee,5,0,"div",6)),2&i&&(e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>t.pageSize),e.xp6(2),e.Q6J("ngIf",t.relationships&&t.relationships.length>0),e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>5),e.xp6(1),e.Q6J("ngForOf",t.paged),e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>5),e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>0))},directives:[d.O5,_.KE,x.Nt,c.Fj,c.JJ,c.oH,f.lW,b.NW,d.sg,w.P,L,T.d,v.Hw],styles:[".mat-divider.mat-divider-inset[_ngcontent-%COMP%]{margin-left:0}.mat-divider[_ngcontent-%COMP%]{border-top-color:var(--text-color)}.relationship[_ngcontent-%COMP%]:nth-child(odd){background-color:var(--nth-child-color-2)}.relationship[_ngcontent-%COMP%]:nth-child(odd) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:var(--nth-child-color-3)}.relationship[_ngcontent-%COMP%]:nth-child(even) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:var(--nth-child-color-1)}.relationship[_ngcontent-%COMP%] .mat-expansion-panel, .relationship[_ngcontent-%COMP%] .mat-table, .relationship[_ngcontent-%COMP%] textarea{background-color:var(--regular-transparent-color)}.search[_ngcontent-%COMP%]{width:400px;max-width:100%}"]}),n}(),ne=a(64061),ie=a(7168),oe=a(94673),ae=a(63200),se=function(){var n=(0,m.Z)(function l(){(0,h.Z)(this,l)});return n.\u0275fac=function(i){return new(i||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[d.ez,ne.o.forChild(te),ie.O,T.t,v.Ps,f.ot,oe.w,_.lN,c.UX,c.u5,b.TU,x.c,ae.U,Z.AV]]}),n}()}}]);
+//# sourceMappingURL=1704.3c88a3cb0f5db0ae.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1704.3c88a3cb0f5db0ae.js.map b/frontend/src/main/resources/static/1704.3c88a3cb0f5db0ae.js.map
new file mode 100644
index 0000000..f7e0645
--- /dev/null
+++ b/frontend/src/main/resources/static/1704.3c88a3cb0f5db0ae.js.map
@@ -0,0 +1 @@
+{"version":3,"mappings":"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","names":["i0","ctx_r6","RelationshipFormComponent","cvService","utilsService","this","EventEmitter","viewFull","set","val","privateRelationship","relationship","amount","relatedSubstanceUuid","relatedSubstance","refuuid","mediatorSubstanceUuid","mediatorSubstance","name","refPname","$$deletedCode","newUUID","type","deleteTimer","setTimeout","t","relationshipDeleted","emit","clearTimeout","access","substance","_name","uuid","substanceClass","approvalID","l","selectors","ctx","ctx_r8","ctx_r14","ctx_r16","ctx_r18","SubstanceFormRelationshipsCardComponent","substanceFormRelationshipsService","scrollToService","gaService","p","canAddItemUpdate","menuLabelUpdate","analyticsEventCategory","relationshipsSubscription","substanceRelationships","subscribe","o","relationships","filtered","searchSubscription","searchControl","valueChanges","filterList","value","subscriptions","push","page","pageChange","componentDestroyed","forEach","subscription","unsubscribe","expanded","addRelationship","addSubstanceRelationship","scrollToElement","deleteSubstanceRelationship","SubstanceCardBaseFilteredList","SubstanceFormRelationshipsModule","m","CommonModule","DynamicComponentLoaderModule","SubstanceFormModule","MatDividerModule","MatIconModule","MatButtonModule","ScrollToModule","MatFormFieldModule","ReactiveFormsModule","FormsModule","MatPaginatorModule","MatInputModule","SubstanceSelectorModule","MatTooltipModule"],"sources":["./src/app/core/substance-form/relationships/relationship-form.component.html","./src/app/core/substance-form/relationships/relationship-form.component.ts","./src/app/core/substance-form/relationships/substance-form-relationships-card.component.html","./src/app/core/substance-form/relationships/substance-form-relationships-card.component.ts","./src/app/core/substance-form/relationships/substance-form-relationships.module.ts"],"sourcesContent":["\n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { SubstanceRelationship, SubstanceSummary, SubstanceRelated, MediatorSubstance } from '../../substance/substance.model';\nimport { ControlledVocabularyService } from '../../controlled-vocabulary/controlled-vocabulary.service';\nimport { VocabularyTerm } from '../../controlled-vocabulary/vocabulary.model';\nimport { FormControl, Validators } from '@angular/forms';\nimport { UtilsService } from '../../utils/utils.service';\n\n@Component({\n selector: 'app-relationship-form',\n templateUrl: './relationship-form.component.html',\n styleUrls: ['./relationship-form.component.scss']\n})\nexport class RelationshipFormComponent implements OnInit {\n private privateRelationship: SubstanceRelationship;\n relatedSubstanceUuid: string;\n mediatorSubstanceUuid: string;\n @Output() relationshipDeleted = new EventEmitter();\n deleteTimer: any;\n viewFull = true;\n name?: string;\n\n constructor(\n private cvService: ControlledVocabularyService,\n private utilsService: UtilsService\n ) { }\n\n ngOnInit() {\n\n }\n\n @Input()\n set show(val: boolean) {\n if (val != null) {\n this.viewFull = val;\n }\n }\n\n get show(): boolean {\n return this.viewFull || null;\n }\n @Input()\n set relationship(relationship: SubstanceRelationship) {\n this.privateRelationship = relationship;\n if (this.privateRelationship.amount == null) {\n this.privateRelationship.amount = {};\n }\n this.relatedSubstanceUuid = this.privateRelationship.relatedSubstance && this.privateRelationship.relatedSubstance.refuuid || '';\n this.mediatorSubstanceUuid = this.privateRelationship.mediatorSubstance && this.privateRelationship.mediatorSubstance.refuuid || '';\n this.name = this.privateRelationship.relatedSubstance.refPname? this.privateRelationship.relatedSubstance.refPname : this.privateRelationship.relatedSubstance.name;\n }\n\n get relationship(): SubstanceRelationship {\n return this.privateRelationship;\n }\n\n\n deleteRelationship(): void {\n this.privateRelationship.$$deletedCode = this.utilsService.newUUID();\n if ((!this.privateRelationship.relatedSubstance || !this.privateRelationship.relatedSubstance.refuuid)\n && !this.privateRelationship.type\n ) {\n this.deleteTimer = setTimeout(() => {\n this.relationshipDeleted.emit(this.relationship);\n }, 2000);\n }\n }\n\n undoDelete(): void {\n clearTimeout(this.deleteTimer);\n delete this.privateRelationship.$$deletedCode;\n }\n\n updateAccess(access: Array): void {\n this.relationship.access = access;\n }\n\n relatedSubstanceUpdated(substance: SubstanceSummary): void {\n if ( substance !== null) {\n const relatedSubstance: SubstanceRelated = {\n refPname: substance._name,\n name: substance._name,\n refuuid: substance.uuid,\n substanceClass: 'reference',\n approvalID: substance.approvalID\n };\n this.relationship.relatedSubstance = relatedSubstance;\n } else {\n this.relationship.relatedSubstance = {};\n }\n }\n\n mediatorSubstanceUpdated(substance: SubstanceSummary): void {\n if ( substance !== null) {\n const relatedSubstance: MediatorSubstance = {\n refPname: substance._name,\n refuuid: substance.uuid,\n substanceClass: 'reference',\n approvalID: substance.approvalID\n };\n this.relationship.mediatorSubstance = relatedSubstance;\n } else {\n this.relationship.mediatorSubstance = {};\n }\n}\n}\n","\n pageSize\">\n \n \n \n \n\n \n
\n 5\" [length]=\"filtered && filtered.length || 0\" [pageIndex]=\"page\" [pageSize]=\"5\" showFirstLastButtons=\"true\"\n (page)=\"pageChange($event, analyticsEventCategory)\" [pageSizeOptions]=\"[5, 10, 25, 100]\">\n \n\n 5\" [length]=\"filtered && filtered.length || 0\" [pageIndex]=\"page\" [pageSize]=\"5\" showFirstLastButtons=\"true\"\n (page)=\"pageChange($event, analyticsEventCategory)\" [pageSizeOptions]=\"[5, 10, 25, 100]\">\n\n\n\n\n 0\" style = \"display: flex;\">\n \n \n
","import { Component, OnInit, AfterViewInit, OnDestroy } from '@angular/core';\nimport { SubstanceCardBaseFilteredList, SubstanceCardBaseList } from '../base-classes/substance-form-base-filtered-list';\nimport { SubstanceRelationship } from '@gsrs-core/substance/substance.model';\nimport { ScrollToService } from '../../scroll-to/scroll-to.service';\nimport { GoogleAnalyticsService } from '../../google-analytics/google-analytics.service';\nimport { Subscription } from 'rxjs';\nimport { SubstanceFormRelationshipsService } from './substance-form-relationships.service';\n\n@Component({\n selector: 'app-substance-form-relationships-card',\n templateUrl: './substance-form-relationships-card.component.html',\n styleUrls: ['./substance-form-relationships-card.component.scss']\n})\nexport class SubstanceFormRelationshipsCardComponent extends SubstanceCardBaseFilteredList\n implements OnInit, AfterViewInit, OnDestroy, SubstanceCardBaseList {\n relationships: Array;\n private subscriptions: Array = [];\n expanded = true;\n\n constructor(\n private substanceFormRelationshipsService: SubstanceFormRelationshipsService,\n private scrollToService: ScrollToService,\n public gaService: GoogleAnalyticsService\n ) {\n super(gaService);\n }\n\n ngOnInit() {\n this.canAddItemUpdate.emit(true);\n this.menuLabelUpdate.emit('Relationships');\n this.analyticsEventCategory = 'substance form relationships';\n }\n\n ngAfterViewInit() {\n const relationshipsSubscription = this.substanceFormRelationshipsService.substanceRelationships.subscribe(relationships => {\n this.relationships = relationships;\n this.filtered = relationships;\n const searchSubscription = this.searchControl.valueChanges.subscribe(value => {\n this.filterList(value, this.relationships, this.analyticsEventCategory);\n }, error => {\n });\n this.subscriptions.push(searchSubscription);\n this.page = 0;\n this.pageChange();\n });\n this.subscriptions.push(relationshipsSubscription);\n }\n\n ngOnDestroy() {\n this.componentDestroyed.emit();\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n collapse() {\n this.expanded = !this.expanded;\n }\n\n addItem(): void {\n this.addRelationship();\n }\n\n addRelationship(): void {\n this.substanceFormRelationshipsService.addSubstanceRelationship();\n setTimeout(() => {\n this.scrollToService.scrollToElement(`substance-relationship-0`, 'center');\n });\n }\n\n deleteRelationship(relationship: SubstanceRelationship): void {\n this.substanceFormRelationshipsService.deleteSubstanceRelationship(relationship);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SubstanceFormRelationshipsCardComponent } from './substance-form-relationships-card.component';\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\nimport { SubstanceFormModule } from '../substance-form.module';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScrollToModule } from '../../scroll-to/scroll-to.module';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatInputModule } from '@angular/material/input';\nimport { RelationshipFormComponent } from './relationship-form.component';\nimport { SubstanceSelectorModule } from '@gsrs-core/substance-selector/substance-selector.module';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceFormRelationshipsCardComponent),\n SubstanceFormModule,\n MatDividerModule,\n MatIconModule,\n MatButtonModule,\n ScrollToModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n FormsModule,\n MatPaginatorModule,\n MatInputModule,\n SubstanceSelectorModule,\n MatTooltipModule\n ],\n declarations: [\n SubstanceFormRelationshipsCardComponent,\n RelationshipFormComponent\n ]\n})\nexport class SubstanceFormRelationshipsModule { }\n"],"sourceRoot":"webpack:///","file":"1704.3c88a3cb0f5db0ae.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1704.9c5b32662693a3c4.js b/frontend/src/main/resources/static/1704.9c5b32662693a3c4.js
deleted file mode 100644
index 18b1bba..0000000
--- a/frontend/src/main/resources/static/1704.9c5b32662693a3c4.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1704],{51704:function(le,C,a){a.r(C),a.d(C,{SubstanceFormRelationshipsModule:function(){return se}});var m=a(48047),h=a(78069),d=a(36362),R=a(24582),y=a(7318),S=a(79550),M=a(24874),O=a(96238),e=a(76442),I=a(78444),_=a(44770),x=a(43365),c=a(90587),f=a(87317),b=a(26439),w=a(51279),A=a(42827),J=a(52149),Z=a(40089),g=a(65590),P=a(24459),U=a(16667),Q=a(84577),N=a(33662),D=a(48302),k=a(14900);function E(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",21),e._uU(1," Deleted\xa0 "),e.TgZ(2,"button",22),e.NdJ("click",function(){return e.CHM(i),e.oxw().undoDelete()}),e._UZ(3,"mat-icon",23),e.qZA(),e.qZA()}}function Y(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",9),e.TgZ(1,"app-cv-input",24),e.NdJ("valueChange",function(o){return e.CHM(i),e.oxw().relationship.qualification=o}),e.qZA(),e.TgZ(2,"app-cv-input",25),e.NdJ("valueChange",function(o){return e.CHM(i),e.oxw().relationship.interactionType=o}),e.qZA(),e.qZA()}if(2&n){var t=e.oxw();e.xp6(1),e.Q6J("model",t.relationship.qualification),e.xp6(1),e.Q6J("model",t.relationship.interactionType)}}function z(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",9),e.TgZ(1,"div",26),e.TgZ(2,"div",27),e._uU(3,"Comments"),e.qZA(),e.TgZ(4,"textarea",28),e.NdJ("ngModelChange",function(o){return e.CHM(i),e.oxw().relationship.comments=o}),e._uU(5," "),e.qZA(),e.qZA(),e.qZA()}if(2&n){var t=e.oxw();e.xp6(4),e.Q6J("ngModel",t.relationship.comments)}}function q(n,l){1&n&&e._UZ(0,"mat-icon",29)}function H(n,l){1&n&&e._UZ(0,"mat-icon",30)}function j(n,l){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"div",35),e._UZ(2,"app-domain-references",36,37),e.qZA(),e.qZA()),2&n){var i=e.oxw(2);e.xp6(2),e.Q6J("referencesUuids",i.relationship.references)}}function $(n,l){if(1&n&&(e.TgZ(0,"div"),e.TgZ(1,"div",31),e.TgZ(2,"div",32),e._uU(3,"Amount"),e.qZA(),e._UZ(4,"app-amount-form",33),e.qZA(),e.YNc(5,j,4,1,"div",13),e.TgZ(6,"div",9),e._UZ(7,"app-audit-info",34),e.qZA(),e.qZA()),2&n){var i=e.oxw();e.xp6(4),e.Q6J("substanceAmount",i.relationship.amount),e.xp6(1),e.Q6J("ngIf",i.viewFull),e.xp6(2),e.Q6J("source",i.relationship)}}var L=function(){var n=function(){function l(i,t){(0,h.Z)(this,l),this.cvService=i,this.utilsService=t,this.relationshipDeleted=new e.vpe,this.viewFull=!0}return(0,m.Z)(l,[{key:"ngOnInit",value:function(){}},{key:"show",get:function(){return this.viewFull||null},set:function(t){null!=t&&(this.viewFull=t)}},{key:"relationship",get:function(){return this.privateRelationship},set:function(t){this.privateRelationship=t,null==this.privateRelationship.amount&&(this.privateRelationship.amount={}),this.relatedSubstanceUuid=this.privateRelationship.relatedSubstance&&this.privateRelationship.relatedSubstance.refuuid||"",this.mediatorSubstanceUuid=this.privateRelationship.mediatorSubstance&&this.privateRelationship.mediatorSubstance.refuuid||""}},{key:"deleteRelationship",value:function(){var t=this;this.privateRelationship.$$deletedCode=this.utilsService.newUUID(),(!this.privateRelationship.relatedSubstance||!this.privateRelationship.relatedSubstance.refuuid)&&!this.privateRelationship.type&&(this.deleteTimer=setTimeout(function(){t.relationshipDeleted.emit(t.relationship)},2e3))}},{key:"undoDelete",value:function(){clearTimeout(this.deleteTimer),delete this.privateRelationship.$$deletedCode}},{key:"updateAccess",value:function(t){this.relationship.access=t}},{key:"relatedSubstanceUpdated",value:function(t){this.relationship.relatedSubstance=null!==t?{refPname:t._name,name:t._name,refuuid:t.uuid,substanceClass:"reference",approvalID:t.approvalID}:{}}},{key:"mediatorSubstanceUpdated",value:function(t){this.relationship.mediatorSubstance=null!==t?{refPname:t._name,refuuid:t.uuid,substanceClass:"reference",approvalID:t.approvalID}:{}}}]),l}();return n.\u0275fac=function(i){return new(i||n)(e.Y36(A.I),e.Y36(J.F))},n.\u0275cmp=e.Xpm({type:n,selectors:[["app-relationship-form"]],inputs:{show:"show",relationship:"relationship"},outputs:{relationshipDeleted:"relationshipDeleted"},decls:22,vars:12,consts:[[1,"relationship-form-container"],["class","notification-backdrop",4,"ngIf"],[1,"flex-column","delete-column"],[1,"delete-container"],["mat-icon-button","","matTooltip","Delete relationship",3,"click"],["svgIcon","delete_forever"],[1,"flex-column","related-substance"],["eventCategory","substanceRelationshipRelatedSub","placeholder","Related Substance","header","Related Substance",3,"hideImage","subuuid","selectionUpdated"],[1,"flex-column","form-content"],[1,"form-row"],["required","true","domain","RELATIONSHIP_TYPE","title","Type","name","type",1,"type",3,"model","valueChange"],[3,"access","accessOut"],["class","form-row ",4,"ngIf"],["class","form-row",4,"ngIf"],[1,"flex-column","mediator-substance"],["eventCategory","substanceFormDefinitionType","placeholder","Mediator Substance","header","Mediator Substance",3,"hideImage","subuuid","selectionUpdated"],["matTooltip","Expand / collapse rows",1,"chevron"],["mat-icon-button","",1,"chevron-button",3,"click"],["svgIcon","chevron_up",4,"ngIf"],["svgIcon","chevron_down",4,"ngIf"],[4,"ngIf"],[1,"notification-backdrop"],["mat-icon-button","","matTooltip","Undo",3,"click"],["svgIcon","undo"],["key","Relationship Qualification","title","Qualification","name","Qualification",1,"qualification",3,"model","valueChange"],["key","Relationship Interaction Type","title","Interaction Type","name","Interaction Type",1,"interaction-type",3,"model","valueChange"],[1,"comments"],[1,"textarea-label"],["placeholder","Enter text here","name","comments",3,"ngModel","ngModelChange"],["svgIcon","chevron_up"],["svgIcon","chevron_down"],[1,"amount-form-container"],[1,"amount-title"],[3,"substanceAmount"],[3,"source"],[1,"references-container"],[3,"referencesUuids"],["references",""]],template:function(i,t){1&i&&(e.TgZ(0,"div",0),e.YNc(1,E,4,0,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"div",3),e.TgZ(4,"button",4),e.NdJ("click",function(){return t.deleteRelationship()}),e._UZ(5,"mat-icon",5),e.qZA(),e.qZA(),e.qZA(),e.TgZ(6,"div",6),e.TgZ(7,"app-substance-selector",7),e.NdJ("selectionUpdated",function(o){return t.relatedSubstanceUpdated(o)}),e.qZA(),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"div",9),e.TgZ(10,"app-cv-input",10),e.NdJ("valueChange",function(o){return t.relationship.type=o}),e.qZA(),e.TgZ(11,"div"),e.TgZ(12,"app-access-manager",11),e.NdJ("accessOut",function(o){return t.updateAccess(o)}),e.qZA(),e.qZA(),e.qZA(),e.YNc(13,Y,3,2,"div",12),e.YNc(14,z,6,1,"div",13),e.qZA(),e.TgZ(15,"div",14),e.TgZ(16,"app-substance-selector",15),e.NdJ("selectionUpdated",function(o){return t.mediatorSubstanceUpdated(o)}),e.qZA(),e.qZA(),e.TgZ(17,"div",16),e.TgZ(18,"button",17),e.NdJ("click",function(){return t.viewFull=!t.viewFull}),e.YNc(19,q,1,0,"mat-icon",18),e.YNc(20,H,1,0,"mat-icon",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(21,$,8,3,"div",20)),2&i&&(e.xp6(1),e.Q6J("ngIf",t.relationship.$$deletedCode),e.xp6(6),e.Q6J("hideImage",!t.viewFull)("subuuid",t.relatedSubstanceUuid),e.xp6(3),e.Q6J("model",t.relationship.type),e.xp6(2),e.Q6J("access",t.relationship.access),e.xp6(1),e.Q6J("ngIf",t.viewFull),e.xp6(1),e.Q6J("ngIf",t.viewFull),e.xp6(2),e.Q6J("hideImage",!t.viewFull)("subuuid",t.mediatorSubstanceUuid),e.xp6(3),e.Q6J("ngIf",t.viewFull),e.xp6(1),e.Q6J("ngIf",!t.viewFull),e.xp6(1),e.Q6J("ngIf",!t.relationship.$$deletedCode&&t.viewFull))},directives:[d.O5,f.lW,Z.gM,g.Hw,P.Q,U.S,Q.h,c.Fj,c.JJ,c.On,N.f,D.V,k.n],styles:[".relationship-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative;display:-ms-flexbox;display:flex}.type[_ngcontent-%COMP%] mat-form-field, .name[_ngcontent-%COMP%] mat-form-field, .property-name[_ngcontent-%COMP%] mat-form-field{width:100%}.collapse[_ngcontent-%COMP%]{padding:20px 10px 12px;position:relative}.chevron[_ngcontent-%COMP%]{width:20px;line-height:67px;color:#0009}.chevron-button[_ngcontent-%COMP%]{width:20px}.notification-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;left:0;display:-ms-flexbox;display:flex;z-index:10;background-color:#fffc;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;font-size:30px;font-weight:700;color:#666}.related-substance[_ngcontent-%COMP%], .mediator-substance[_ngcontent-%COMP%]{max-width:25%;width:25%}.form-content[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .delete-container[_ngcontent-%COMP%]{padding:0 10px 8px 0}.form-row[_ngcontent-%COMP%] .type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .qualification[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .interaction-type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .comments[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1;padding-right:15px}.key-value-pair[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:start;align-self:flex-start}.key-value-pair[_ngcontent-%COMP%] .key[_ngcontent-%COMP%]{font-size:11px;padding-bottom:3.5px;line-height:11px}.key-value-pair[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:15.5px}.references-container[_ngcontent-%COMP%]{width:100%}.amount-title[_ngcontent-%COMP%]{margin-bottom:10px;font-weight:700}.amount-form-container[_ngcontent-%COMP%]{padding:0 7px}@media (max-width: 990px){.form-content[_ngcontent-%COMP%]{width:100%}.mediator-substance[_ngcontent-%COMP%]{-ms-flex-order:-1;order:-1;width:40%;max-width:40%}.related-substance[_ngcontent-%COMP%]{-ms-flex-order:-2;order:-2;width:40%;max-width:40%}.delete-column[_ngcontent-%COMP%]{-ms-flex-order:-3;order:-3;width:5%}.relationship-form-container[_ngcontent-%COMP%]{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between}}"]}),n}(),T=a(19975);function V(n,l){if(1&n&&(e.TgZ(0,"mat-form-field",7),e._UZ(1,"input",8),e.qZA()),2&n){var i=e.oxw();e.Q6J("floatLabel","never"),e.xp6(1),e.Q6J("formControl",i.searchControl)}}function B(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"button",9),e.NdJ("click",function(){return e.CHM(i),e.oxw().collapse()}),e._uU(1),e.qZA()}if(2&n){var t=e.oxw();e.xp6(1),e.hij("",t.expanded?"Collapse":"Expand"," All")}}var F=function(){return[5,10,25,100]};function W(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"mat-paginator",10),e.NdJ("page",function(o){e.CHM(i);var r=e.oxw();return r.pageChange(o,r.analyticsEventCategory)}),e.qZA()}if(2&n){var t=e.oxw();e.Q6J("length",t.filtered&&t.filtered.length||0)("pageIndex",t.page)("pageSize",5)("pageSizeOptions",e.DdM(4,F))}}function X(n,l){1&n&&e._UZ(0,"mat-divider",14),2&n&&e.Q6J("inset",!0)}function K(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",11),e.TgZ(1,"app-relationship-form",12),e.NdJ("relationshipDeleted",function(v){return e.CHM(i),e.oxw().deleteRelationship(v)}),e.qZA(),e.YNc(2,X,1,1,"mat-divider",13),e.qZA()}if(2&n){var t=l.$implicit,s=l.last,o=l.index,r=e.oxw();e.Q6J("id","substance-relationship-"+o),e.xp6(1),e.Q6J("relationship",t)("show",r.expanded),e.xp6(1),e.Q6J("ngIf",!s)}}function G(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"mat-paginator",10),e.NdJ("page",function(o){e.CHM(i);var r=e.oxw();return r.pageChange(o,r.analyticsEventCategory)}),e.qZA()}if(2&n){var t=e.oxw();e.Q6J("length",t.filtered&&t.filtered.length||0)("pageIndex",t.page)("pageSize",5)("pageSizeOptions",e.DdM(4,F))}}function ee(n,l){if(1&n){var i=e.EpF();e.TgZ(0,"div",15),e._UZ(1,"span",2),e.TgZ(2,"button",16),e.NdJ("click",function(){return e.CHM(i),e.oxw().addRelationship()}),e._uU(3," Add relationship "),e._UZ(4,"mat-icon",17),e.qZA(),e.qZA()}}var te=function(){var n=function(l){(0,R.Z)(t,l);var i=(0,y.Z)(t);function t(s,o,r){var p;return(0,h.Z)(this,t),(p=i.call(this,r)).substanceFormRelationshipsService=s,p.scrollToService=o,p.gaService=r,p.subscriptions=[],p.expanded=!0,p}return(0,m.Z)(t,[{key:"ngOnInit",value:function(){this.canAddItemUpdate.emit(!0),this.menuLabelUpdate.emit("Relationships"),this.analyticsEventCategory="substance form relationships"}},{key:"ngAfterViewInit",value:function(){var o=this,r=this.substanceFormRelationshipsService.substanceRelationships.subscribe(function(p){o.relationships=p,o.filtered=p;var v=o.searchControl.valueChanges.subscribe(function(u){o.filterList(u,o.relationships,o.analyticsEventCategory)},function(u){});o.subscriptions.push(v),o.page=0,o.pageChange()});this.subscriptions.push(r)}},{key:"ngOnDestroy",value:function(){this.componentDestroyed.emit(),this.subscriptions.forEach(function(o){o.unsubscribe()})}},{key:"collapse",value:function(){this.expanded=!this.expanded}},{key:"addItem",value:function(){this.addRelationship()}},{key:"addRelationship",value:function(){var o=this;this.substanceFormRelationshipsService.addSubstanceRelationship(),setTimeout(function(){o.scrollToService.scrollToElement("substance-relationship-0","center")})}},{key:"deleteRelationship",value:function(o){this.substanceFormRelationshipsService.deleteSubstanceRelationship(o)}}]),t}(S.u);return n.\u0275fac=function(i){return new(i||n)(e.Y36(O.F),e.Y36(I.i),e.Y36(M.$))},n.\u0275cmp=e.Xpm({type:n,selectors:[["app-substance-form-relationships-card"]],features:[e.qOj],decls:8,vars:6,consts:[[1,"flex-row"],["class","search",3,"floatLabel",4,"ngIf"],[1,"middle-fill"],["class","standardize","mat-button","",3,"click",4,"ngIf"],["showFirstLastButtons","true",3,"length","pageIndex","pageSize","pageSizeOptions","page",4,"ngIf"],["class","relationship","appScrollToTarget","",3,"id",4,"ngFor","ngForOf"],["style","display: flex;",4,"ngIf"],[1,"search",3,"floatLabel"],["matInput","","placeholder","Search",3,"formControl"],["mat-button","",1,"standardize",3,"click"],["showFirstLastButtons","true",3,"length","pageIndex","pageSize","pageSizeOptions","page"],["appScrollToTarget","",1,"relationship",3,"id"],[3,"relationship","show","relationshipDeleted"],["class","form-divider",3,"inset",4,"ngIf"],[1,"form-divider",3,"inset"],[2,"display","flex"],["mat-button","",3,"click"],["svgIcon","add_circle_outline"]],template:function(i,t){1&i&&(e.TgZ(0,"div",0),e.YNc(1,V,2,2,"mat-form-field",1),e._UZ(2,"span",2),e.YNc(3,B,2,1,"button",3),e.qZA(),e.YNc(4,W,1,5,"mat-paginator",4),e.YNc(5,K,3,4,"div",5),e.YNc(6,G,1,5,"mat-paginator",4),e.YNc(7,ee,5,0,"div",6)),2&i&&(e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>t.pageSize),e.xp6(2),e.Q6J("ngIf",t.relationships&&t.relationships.length>0),e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>5),e.xp6(1),e.Q6J("ngForOf",t.paged),e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>5),e.xp6(1),e.Q6J("ngIf",t.relationships&&t.relationships.length>0))},directives:[d.O5,_.KE,x.Nt,c.Fj,c.JJ,c.oH,f.lW,b.NW,d.sg,w.P,L,T.d,g.Hw],styles:[".mat-divider.mat-divider-inset[_ngcontent-%COMP%]{margin-left:0}.mat-divider[_ngcontent-%COMP%]{border-top-color:#00000080}.relationship[_ngcontent-%COMP%]:nth-child(odd){background-color:#448aff12}.relationship[_ngcontent-%COMP%]:nth-child(odd) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:#448aff26}.relationship[_ngcontent-%COMP%]:nth-child(even) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:#80808026}.relationship[_ngcontent-%COMP%] .mat-expansion-panel, .relationship[_ngcontent-%COMP%] .mat-table, .relationship[_ngcontent-%COMP%] textarea{background-color:transparent}.search[_ngcontent-%COMP%]{width:400px;max-width:100%}"]}),n}(),ne=a(64061),ie=a(7168),oe=a(94673),ae=a(63200),se=function(){var n=(0,m.Z)(function l(){(0,h.Z)(this,l)});return n.\u0275fac=function(i){return new(i||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[d.ez,ne.o.forChild(te),ie.O,T.t,g.Ps,f.ot,oe.w,_.lN,c.UX,c.u5,b.TU,x.c,ae.U,Z.AV]]}),n}()}}]);
-//# sourceMappingURL=1704.9c5b32662693a3c4.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1704.9c5b32662693a3c4.js.map b/frontend/src/main/resources/static/1704.9c5b32662693a3c4.js.map
deleted file mode 100644
index d4f2235..0000000
--- a/frontend/src/main/resources/static/1704.9c5b32662693a3c4.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"mappings":"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","names":["i0","ctx_r6","RelationshipFormComponent","cvService","utilsService","this","EventEmitter","viewFull","set","val","privateRelationship","relationship","amount","relatedSubstanceUuid","relatedSubstance","refuuid","mediatorSubstanceUuid","mediatorSubstance","$$deletedCode","newUUID","type","deleteTimer","setTimeout","t","relationshipDeleted","emit","clearTimeout","access","substance","refPname","_name","name","uuid","substanceClass","approvalID","l","selectors","ctx","ctx_r8","ctx_r14","ctx_r16","ctx_r18","SubstanceFormRelationshipsCardComponent","substanceFormRelationshipsService","scrollToService","gaService","p","canAddItemUpdate","menuLabelUpdate","analyticsEventCategory","relationshipsSubscription","substanceRelationships","subscribe","o","relationships","filtered","searchSubscription","searchControl","valueChanges","filterList","value","subscriptions","push","page","pageChange","componentDestroyed","forEach","subscription","unsubscribe","expanded","addRelationship","addSubstanceRelationship","scrollToElement","deleteSubstanceRelationship","SubstanceCardBaseFilteredList","SubstanceFormRelationshipsModule","m","CommonModule","DynamicComponentLoaderModule","SubstanceFormModule","MatDividerModule","MatIconModule","MatButtonModule","ScrollToModule","MatFormFieldModule","ReactiveFormsModule","FormsModule","MatPaginatorModule","MatInputModule","SubstanceSelectorModule","MatTooltipModule"],"sources":["./src/app/core/substance-form/relationships/relationship-form.component.html","./src/app/core/substance-form/relationships/relationship-form.component.ts","./src/app/core/substance-form/relationships/substance-form-relationships-card.component.html","./src/app/core/substance-form/relationships/substance-form-relationships-card.component.ts","./src/app/core/substance-form/relationships/substance-form-relationships.module.ts"],"sourcesContent":["\n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { SubstanceRelationship, SubstanceSummary, SubstanceRelated, MediatorSubstance } from '../../substance/substance.model';\nimport { ControlledVocabularyService } from '../../controlled-vocabulary/controlled-vocabulary.service';\nimport { VocabularyTerm } from '../../controlled-vocabulary/vocabulary.model';\nimport { FormControl, Validators } from '@angular/forms';\nimport { UtilsService } from '../../utils/utils.service';\n\n@Component({\n selector: 'app-relationship-form',\n templateUrl: './relationship-form.component.html',\n styleUrls: ['./relationship-form.component.scss']\n})\nexport class RelationshipFormComponent implements OnInit {\n private privateRelationship: SubstanceRelationship;\n relatedSubstanceUuid: string;\n mediatorSubstanceUuid: string;\n @Output() relationshipDeleted = new EventEmitter();\n deleteTimer: any;\n viewFull = true;\n\n constructor(\n private cvService: ControlledVocabularyService,\n private utilsService: UtilsService\n ) { }\n\n ngOnInit() {\n\n }\n\n @Input()\n set show(val: boolean) {\n if (val != null) {\n this.viewFull = val;\n }\n }\n\n get show(): boolean {\n return this.viewFull || null;\n }\n @Input()\n set relationship(relationship: SubstanceRelationship) {\n this.privateRelationship = relationship;\n if (this.privateRelationship.amount == null) {\n this.privateRelationship.amount = {};\n }\n this.relatedSubstanceUuid = this.privateRelationship.relatedSubstance && this.privateRelationship.relatedSubstance.refuuid || '';\n this.mediatorSubstanceUuid = this.privateRelationship.mediatorSubstance && this.privateRelationship.mediatorSubstance.refuuid || '';\n }\n\n get relationship(): SubstanceRelationship {\n return this.privateRelationship;\n }\n\n\n deleteRelationship(): void {\n this.privateRelationship.$$deletedCode = this.utilsService.newUUID();\n if ((!this.privateRelationship.relatedSubstance || !this.privateRelationship.relatedSubstance.refuuid)\n && !this.privateRelationship.type\n ) {\n this.deleteTimer = setTimeout(() => {\n this.relationshipDeleted.emit(this.relationship);\n }, 2000);\n }\n }\n\n undoDelete(): void {\n clearTimeout(this.deleteTimer);\n delete this.privateRelationship.$$deletedCode;\n }\n\n updateAccess(access: Array): void {\n this.relationship.access = access;\n }\n\n relatedSubstanceUpdated(substance: SubstanceSummary): void {\n if ( substance !== null) {\n const relatedSubstance: SubstanceRelated = {\n refPname: substance._name,\n name: substance._name,\n refuuid: substance.uuid,\n substanceClass: 'reference',\n approvalID: substance.approvalID\n };\n this.relationship.relatedSubstance = relatedSubstance;\n } else {\n this.relationship.relatedSubstance = {};\n }\n }\n\n mediatorSubstanceUpdated(substance: SubstanceSummary): void {\n if ( substance !== null) {\n const relatedSubstance: MediatorSubstance = {\n refPname: substance._name,\n refuuid: substance.uuid,\n substanceClass: 'reference',\n approvalID: substance.approvalID\n };\n this.relationship.mediatorSubstance = relatedSubstance;\n } else {\n this.relationship.mediatorSubstance = {};\n }\n}\n}\n","\n pageSize\">\n \n \n \n \n\n \n
\n 5\" [length]=\"filtered && filtered.length || 0\" [pageIndex]=\"page\" [pageSize]=\"5\" showFirstLastButtons=\"true\"\n (page)=\"pageChange($event, analyticsEventCategory)\" [pageSizeOptions]=\"[5, 10, 25, 100]\">\n \n\n 5\" [length]=\"filtered && filtered.length || 0\" [pageIndex]=\"page\" [pageSize]=\"5\" showFirstLastButtons=\"true\"\n (page)=\"pageChange($event, analyticsEventCategory)\" [pageSizeOptions]=\"[5, 10, 25, 100]\">\n\n\n\n\n 0\" style = \"display: flex;\">\n \n \n
","import { Component, OnInit, AfterViewInit, OnDestroy } from '@angular/core';\nimport { SubstanceCardBaseFilteredList, SubstanceCardBaseList } from '../base-classes/substance-form-base-filtered-list';\nimport { SubstanceRelationship } from '@gsrs-core/substance/substance.model';\nimport { ScrollToService } from '../../scroll-to/scroll-to.service';\nimport { GoogleAnalyticsService } from '../../google-analytics/google-analytics.service';\nimport { Subscription } from 'rxjs';\nimport { SubstanceFormRelationshipsService } from './substance-form-relationships.service';\n\n@Component({\n selector: 'app-substance-form-relationships-card',\n templateUrl: './substance-form-relationships-card.component.html',\n styleUrls: ['./substance-form-relationships-card.component.scss']\n})\nexport class SubstanceFormRelationshipsCardComponent extends SubstanceCardBaseFilteredList\n implements OnInit, AfterViewInit, OnDestroy, SubstanceCardBaseList {\n relationships: Array;\n private subscriptions: Array = [];\n expanded = true;\n\n constructor(\n private substanceFormRelationshipsService: SubstanceFormRelationshipsService,\n private scrollToService: ScrollToService,\n public gaService: GoogleAnalyticsService\n ) {\n super(gaService);\n }\n\n ngOnInit() {\n this.canAddItemUpdate.emit(true);\n this.menuLabelUpdate.emit('Relationships');\n this.analyticsEventCategory = 'substance form relationships';\n }\n\n ngAfterViewInit() {\n const relationshipsSubscription = this.substanceFormRelationshipsService.substanceRelationships.subscribe(relationships => {\n this.relationships = relationships;\n this.filtered = relationships;\n const searchSubscription = this.searchControl.valueChanges.subscribe(value => {\n this.filterList(value, this.relationships, this.analyticsEventCategory);\n }, error => {\n });\n this.subscriptions.push(searchSubscription);\n this.page = 0;\n this.pageChange();\n });\n this.subscriptions.push(relationshipsSubscription);\n }\n\n ngOnDestroy() {\n this.componentDestroyed.emit();\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n collapse() {\n this.expanded = !this.expanded;\n }\n\n addItem(): void {\n this.addRelationship();\n }\n\n addRelationship(): void {\n this.substanceFormRelationshipsService.addSubstanceRelationship();\n setTimeout(() => {\n this.scrollToService.scrollToElement(`substance-relationship-0`, 'center');\n });\n }\n\n deleteRelationship(relationship: SubstanceRelationship): void {\n this.substanceFormRelationshipsService.deleteSubstanceRelationship(relationship);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SubstanceFormRelationshipsCardComponent } from './substance-form-relationships-card.component';\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\nimport { SubstanceFormModule } from '../substance-form.module';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScrollToModule } from '../../scroll-to/scroll-to.module';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatInputModule } from '@angular/material/input';\nimport { RelationshipFormComponent } from './relationship-form.component';\nimport { SubstanceSelectorModule } from '@gsrs-core/substance-selector/substance-selector.module';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceFormRelationshipsCardComponent),\n SubstanceFormModule,\n MatDividerModule,\n MatIconModule,\n MatButtonModule,\n ScrollToModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n FormsModule,\n MatPaginatorModule,\n MatInputModule,\n SubstanceSelectorModule,\n MatTooltipModule\n ],\n declarations: [\n SubstanceFormRelationshipsCardComponent,\n RelationshipFormComponent\n ]\n})\nexport class SubstanceFormRelationshipsModule { }\n"],"sourceRoot":"webpack:///","file":"1704.9c5b32662693a3c4.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1899.a37c629305203eef.js b/frontend/src/main/resources/static/1899.a5d7af21aaab1cdf.js
similarity index 98%
rename from frontend/src/main/resources/static/1899.a37c629305203eef.js
rename to frontend/src/main/resources/static/1899.a5d7af21aaab1cdf.js
index f64538d..5f14f0a 100644
--- a/frontend/src/main/resources/static/1899.a37c629305203eef.js
+++ b/frontend/src/main/resources/static/1899.a5d7af21aaab1cdf.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1899],{11899:function(Ae,y,l){l.r(y),l.d(y,{SubstanceReferencesModule:function(){return xe}});var S=l(48047),A=l(78069),Z=l(36362),T=l(95106),J=l(24582),U=l(7318),Y=l(54025),I=l(24874),q=l(50253),w=l(63169),m=l(90587),e=l(76442),C=l(44770),R=l(43365),f=l(97217),_=l(64316),F=l(91434),D=l(1130),N=l(65590),O=l(40089),Q=l(26439);function M(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Citation "),e.qZA())}function $(t,a){if(1&t&&(e.TgZ(0,"a",28),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.Q6J("href",n.url,e.LSH),e.xp6(1),e.hij("",n.citation," ")}}function H(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.hij(" ",n.citation," ")}}function P(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,$,2,2,"a",26),e.YNc(2,H,2,1,"span",27),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.url),e.xp6(1),e.Q6J("ngIf",!n.url)}}function j(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Type "),e.qZA())}function L(t,a){if(1&t&&(e.TgZ(0,"td",25),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.hij(" ",n.docType," ")}}function B(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Tags "),e.qZA())}function k(t,a){1&t&&(e.TgZ(0,"span"),e._uU(1,",\xa0"),e.qZA())}function V(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,k,2,0,"span",27),e.qZA()),2&t){var n=a.$implicit,s=a.last;e.xp6(1),e.Oqu(n),e.xp6(1),e.Q6J("ngIf",!s)}}function z(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,V,3,2,"span",29),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngForOf",n.tags)}}function E(t,a){if(1&t&&(e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"mat-form-field"),e._UZ(3,"input",32),e.qZA(),e.qZA(),e.qZA()),2&t){var n=e.oxw();e.xp6(3),e.Q6J("formControl",n.citationFilter)}}function X(t,a){if(1&t&&(e.TgZ(0,"a",28),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.Q6J("href",n.url,e.LSH),e.xp6(1),e.hij("",n.citation," ")}}function W(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.hij(" ",n.citation," ")}}function G(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,X,2,2,"a",26),e.YNc(2,W,2,1,"span",27),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.url),e.xp6(1),e.Q6J("ngIf",!n.url)}}function K(t,a){if(1&t&&(e.TgZ(0,"mat-option",37),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.Q6J("value",n.display),e.xp6(1),e.Oqu(n.display)}}function ee(t,a){if(1&t&&(e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"mat-form-field",33),e.TgZ(3,"mat-select",34),e.TgZ(4,"mat-select-trigger"),e._uU(5),e.qZA(),e.TgZ(6,"mat-option",35),e._uU(7,"Select Type Filter"),e.qZA(),e.YNc(8,K,2,2,"mat-option",36),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){var n=e.oxw();e.xp6(3),e.Q6J("formControl",n.typeFilter),e.xp6(2),e.hij(" ",n.typeFilter.value?n.typeFilter.value:""," "),e.xp6(1),e.Q6J("value",null),e.xp6(2),e.Q6J("ngForOf",n.typeFilterOptions)}}function te(t,a){if(1&t&&(e.TgZ(0,"td",25),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.hij(" ",n.docType," ")}}function ne(t,a){if(1&t&&(e.TgZ(0,"mat-option",37),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.Q6J("value",n.display),e.xp6(1),e.Oqu(n.display)}}function ae(t,a){if(1&t&&(e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"mat-form-field",33),e.TgZ(3,"mat-select",34),e.TgZ(4,"mat-select-trigger"),e._uU(5),e.qZA(),e.TgZ(6,"mat-option",35),e._uU(7,"Select Tags Filter"),e.qZA(),e.YNc(8,ne,2,2,"mat-option",36),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){var n=e.oxw();e.xp6(3),e.Q6J("formControl",n.tagsFilter),e.xp6(2),e.hij(" ",n.tagsFilter.value?n.tagsFilter.value:""," "),e.xp6(1),e.Q6J("value",null),e.xp6(2),e.Q6J("ngForOf",n.tagsFilterOptions)}}function ie(t,a){1&t&&(e.TgZ(0,"span"),e._uU(1,",\xa0"),e.qZA())}function oe(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,ie,2,0,"span",27),e.qZA()),2&t){var n=a.$implicit,s=a.last;e.xp6(1),e.Oqu(n),e.xp6(1),e.Q6J("ngIf",!s)}}function le(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,oe,3,2,"span",29),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngForOf",n.tags)}}function se(t,a){if(1&t){var n=e.EpF();e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"button",6),e.NdJ("click",function(){return e.CHM(n),e.oxw().resetFilters()}),e._uU(3,"Reset"),e.qZA(),e.qZA(),e.qZA()}}function ce(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," File "),e.qZA())}function re(t,a){if(1&t&&(e.TgZ(0,"a",39),e._UZ(1,"mat-icon",40),e.qZA()),2&t){var n=e.oxw().$implicit;e.Q6J("href",n.uploadedFile,e.LSH)}}function fe(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,re,2,1,"a",38),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.uploadedFile)}}function pe(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Access "),e.qZA())}function ue(t,a){1&t&&e._UZ(0,"mat-icon",45)}function me(t,a){if(1&t&&(e.TgZ(0,"span",43),e.YNc(1,ue,1,0,"mat-icon",44),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.Q6J("ngIf",n.access.length)}}function ge(t,a){1&t&&e._UZ(0,"mat-icon",48)}function de(t,a){if(1&t&&(e.TgZ(0,"span",46),e.YNc(1,ge,1,0,"mat-icon",47),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.Q6J("ngIf",0===n.access.length)}}function he(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,me,2,1,"span",41),e.YNc(2,de,2,1,"span",42),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.access.length),e.xp6(1),e.Q6J("ngIf",!n.access.length)}}function ve(t,a){1&t&&e._UZ(0,"tr",49)}function Ze(t,a){if(1&t&&e._UZ(0,"tr",50),2&t){var n=e.oxw();e.Q6J("hidden",n.hideFilters)}}function Te(t,a){1&t&&e._UZ(0,"tr",51)}var Ce=function(){return[5,10,25,100]},_e=function(){var t=function(a){(0,J.Z)(s,a);var n=(0,U.Z)(s);function s(c,i){var o;return(0,A.Z)(this,s),(o=n.call(this,c)).gaService=c,o.utilsService=i,o.references=[],o.displayedColumns=["citation","docType","tags","files","access"],o.substanceUpdated=new q.x,o.pageSize=10,o.hideFilters=!0,o.showHideFilterText="Show Filter",o.displayedFilterColumns=["citationFilter","typeFilter","tagsFilter","resetFilter"],o.citationFilter=new m.NI,o.typeFilter=new m.NI,o.tagsFilter=new m.NI,o.typeFilterOptions=[],o.tagsFilterOptions=[],o}return(0,S.Z)(s,[{key:"ngOnInit",value:function(){var i=this;this.substanceUpdated.subscribe(function(o){i.substance=o,null!=i.substance&&null!=i.substance.references&&(i.references=i.substance.references,i.filtered=i.substance.references,i.pageChange(),i.searchControl.valueChanges.subscribe(function(r){i.filterList(r,i.references,i.analyticsEventCategory)},function(r){console.log(r)}),i.getFilterOptions("tags"),i.getFilterOptions("type")),i.countUpdate.emit(i.references.length)}),this.citationFilter.valueChanges.subscribe(function(o){i.filterTable()}),this.typeFilter.valueChanges.subscribe(function(o){i.filterTable()}),this.tagsFilter.valueChanges.subscribe(function(o){i.filterTable()})}},{key:"filterTable",value:function(i){var o=null===this.citationFilter.value?"":this.citationFilter.value,r=null===this.tagsFilter.value?"":this.tagsFilter.value,d=null===this.typeFilter.value?"":this.typeFilter.value;this.filtered=[];var u,p=(0,T.Z)(this.references);try{for(p.s();!(u=p.n()).done;){var h=u.value;h.citation.toLowerCase().includes(o.toLowerCase())&&h.docType.toLowerCase().includes(d.toLowerCase())&&this.isIncluded(h,r)&&this.filtered.push(h)}}catch(b){p.e(b)}finally{p.f()}this.pageChange()}},{key:"isIncluded",value:function(i,o){return!(o.length>0&&!i.tags.includes(o))}},{key:"getFilterOptions",value:function(i){var d,o=this,r=(0,T.Z)(this.references);try{for(r.s();!(d=r.n()).done;){var p=d.value;if("tags"===i){var h,u=(0,T.Z)(p.tags);try{var b=function(){var v=h.value,ye={value:v,display:v};o.tagsFilterOptions.filter(function(Se){return Se.value===v}).length>0||o.tagsFilterOptions.push(ye)};for(u.s();!(h=u.n()).done;)b()}catch(g){u.e(g)}finally{u.f()}}else"type"===i&&function(){var g=p.docType,x={value:g,display:g};o.typeFilterOptions.filter(function(v){return v.value===g}).length>0||o.typeFilterOptions.push(x)}()}}catch(g){r.e(g)}finally{r.f()}}},{key:"toggleFilter",value:function(){this.hideFilters=!this.hideFilters,this.showHideFilterText=this.hideFilters?"Show Filter":"Hide Filter"}},{key:"resetFilters",value:function(){this.pageChange(),this.searchControl.setValue(""),this.citationFilter.setValue(""),this.tagsFilter.setValue(""),this.typeFilter.setValue("")}},{key:"sortData",value:function(i){var o=this,r=this.references.slice();if(!i.active||""===i.direction)return this.filtered=r,void this.pageChange();this.filtered=r.sort(function(d,p){var u="asc"===i.direction;return o.utilsService.compare(d[i.active]?d[i.active].toString().toUpperCase():null,p[i.active]?p[i.active].toString().toUpperCase():null,u)}),this.pageChange()}}]),s}(Y.u);return t.\u0275fac=function(n){return new(n||t)(e.Y36(I.$),e.Y36(w.FW))},t.\u0275cmp=e.Xpm({type:t,selectors:[["app-substance-references"]],features:[e.qOj],decls:39,vars:11,consts:[[1,"flex-row"],[1,"middle-fill"],[1,"search",3,"floatLabel"],["matInput","","placeholder","Search",3,"formControl"],[1,"responsive"],[1,"show-filter-span"],["mat-flat-button","","color","warn",1,"mat-button","mat-button-primary",3,"click"],["mat-table","","matSort","",3,"dataSource","matSortChange"],["matColumnDef","citation"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","docType"],["matColumnDef","tags"],["matColumnDef","citationFilter"],["mat-header-cell","",4,"matHeaderCellDef"],["matColumnDef","typeFilter"],["matColumnDef","tagsFilter"],["matColumnDef","resetFilter"],["matColumnDef","files"],["matColumnDef","access"],["mat-header-row","",4,"matHeaderRowDef"],["mat-header-row","",3,"hidden",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","true",3,"length","pageSize","pageSizeOptions","page"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["target","_blank",3,"href",4,"ngIf"],[4,"ngIf"],["target","_blank",3,"href"],[4,"ngFor","ngForOf"],["mat-header-cell",""],[1,"tableFilter"],["matInput","","placeholder","Citation Filter",1,"form-field",3,"formControl"],["appearance","fill"],[3,"formControl"],["selected","",3,"value"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[3,"href",4,"ngIf"],[3,"href"],["color","primary","svgIcon","cloud_download",1,"blue"],["matTooltip","Not Public",4,"ngIf"],["matTooltip","Public",4,"ngIf"],["matTooltip","Not Public"],["svgIcon","lock","class","icon-align blue-font",4,"ngIf"],["svgIcon","lock",1,"icon-align","blue-font"],["matTooltip","Public"],["svgIcon","lock_open","class","icon-align blue-font",4,"ngIf"],["svgIcon","lock_open",1,"icon-align","blue-font"],["mat-header-row",""],["mat-header-row","",3,"hidden"],["mat-row",""]],template:function(n,s){1&n&&(e.TgZ(0,"div",0),e._UZ(1,"span",1),e.TgZ(2,"mat-form-field",2),e._UZ(3,"input",3),e.qZA(),e.qZA(),e.TgZ(4,"div",4),e.TgZ(5,"span",5),e.TgZ(6,"mat-label",6),e.NdJ("click",function(){return s.toggleFilter()}),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"table",7),e.NdJ("matSortChange",function(i){return s.sortData(i)}),e.ynx(9,8),e.YNc(10,M,2,0,"th",9),e.YNc(11,P,3,2,"td",10),e.BQk(),e.ynx(12,11),e.YNc(13,j,2,0,"th",9),e.YNc(14,L,2,1,"td",10),e.BQk(),e.ynx(15,12),e.YNc(16,B,2,0,"th",9),e.YNc(17,z,2,1,"td",10),e.BQk(),e.ynx(18,13),e.YNc(19,E,4,1,"th",14),e.YNc(20,G,3,2,"td",10),e.BQk(),e.ynx(21,15),e.YNc(22,ee,9,4,"th",14),e.YNc(23,te,2,1,"td",10),e.BQk(),e.ynx(24,16),e.YNc(25,ae,9,4,"th",14),e.YNc(26,le,2,1,"td",10),e.BQk(),e.ynx(27,17),e.YNc(28,se,4,0,"th",14),e.BQk(),e.ynx(29,18),e.YNc(30,ce,2,0,"th",9),e.YNc(31,fe,2,1,"td",10),e.BQk(),e.ynx(32,19),e.YNc(33,pe,2,0,"th",9),e.YNc(34,he,3,2,"td",10),e.BQk(),e.YNc(35,ve,1,0,"tr",20),e.YNc(36,Ze,1,1,"tr",21),e.YNc(37,Te,1,0,"tr",22),e.qZA(),e.qZA(),e.TgZ(38,"mat-paginator",23),e.NdJ("page",function(i){return s.pageChange(i,s.analyticsEventCategory)}),e.qZA()),2&n&&(e.xp6(2),e.Q6J("floatLabel","never"),e.xp6(1),e.Q6J("formControl",s.searchControl),e.xp6(4),e.Oqu(s.showHideFilterText),e.xp6(1),e.Q6J("dataSource",s.paged),e.xp6(27),e.Q6J("matHeaderRowDef",s.displayedColumns),e.xp6(1),e.Q6J("matHeaderRowDef",s.displayedFilterColumns),e.xp6(1),e.Q6J("matRowDefColumns",s.displayedColumns),e.xp6(1),e.Q6J("length",s.filtered&&s.filtered.length||0)("pageSize",10)("pageSizeOptions",e.DdM(10,Ce)))},directives:[C.KE,R.Nt,m.Fj,m.JJ,m.oH,C.hX,f.BZ,_.YE,f.w1,f.fO,f.ge,_.nU,f.Dz,f.ev,Z.O5,Z.sg,F.gD,F.$L,D.ey,N.Hw,O.gM,f.as,f.XQ,f.nj,f.Gk,Q.NW],styles:["table.mat-table[_ngcontent-%COMP%]{width:100%}td.mat-cell[_ngcontent-%COMP%]:not(:last-child), td.mat-footer-cell[_ngcontent-%COMP%]:not(:last-child), th.mat-header-cell[_ngcontent-%COMP%]:not(:last-child){padding-right:10px}td.mat-cell[_ngcontent-%COMP%], td.mat-footer-cell[_ngcontent-%COMP%], th.mat-header-cell[_ngcontent-%COMP%]{padding-top:10px;padding-bottom:10px}.no-bottom-border[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td.mat-cell[_ngcontent-%COMP%]{border-bottom:none}.mat-sort-header-content[_ngcontent-%COMP%]{display:block!important}.search[_ngcontent-%COMP%]{width:400px;max-width:100%}.show-filter-span[_ngcontent-%COMP%]{display:block;float:right}"]}),t}(),Fe=l(64061),be=l(33865),xe=function(){var t=(0,S.Z)(function a(){(0,A.Z)(this,a)});return t.\u0275fac=function(n){return new(n||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[Z.ez,Fe.o.forChild(_e),f.p0,be.HT,Q.TU,R.c,C.lN,F.LD,m.UX,m.u5,_.JX,N.Ps,O.AV]]}),t}()}}]);
-//# sourceMappingURL=1899.a37c629305203eef.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1899],{11899:function(Ae,y,l){l.r(y),l.d(y,{SubstanceReferencesModule:function(){return xe}});var S=l(1884),A=l(39117),Z=l(36362),T=l(44014),J=l(46751),U=l(56101),Y=l(54025),I=l(24874),q=l(50253),w=l(63169),m=l(90587),e=l(86613),C=l(44770),R=l(43365),f=l(97217),_=l(64316),F=l(91434),D=l(1130),N=l(65590),O=l(40089),Q=l(26439);function M(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Citation "),e.qZA())}function $(t,a){if(1&t&&(e.TgZ(0,"a",28),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.Q6J("href",n.url,e.LSH),e.xp6(1),e.hij("",n.citation," ")}}function H(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.hij(" ",n.citation," ")}}function P(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,$,2,2,"a",26),e.YNc(2,H,2,1,"span",27),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.url),e.xp6(1),e.Q6J("ngIf",!n.url)}}function j(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Type "),e.qZA())}function L(t,a){if(1&t&&(e.TgZ(0,"td",25),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.hij(" ",n.docType," ")}}function B(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Tags "),e.qZA())}function k(t,a){1&t&&(e.TgZ(0,"span"),e._uU(1,",\xa0"),e.qZA())}function V(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,k,2,0,"span",27),e.qZA()),2&t){var n=a.$implicit,s=a.last;e.xp6(1),e.Oqu(n),e.xp6(1),e.Q6J("ngIf",!s)}}function z(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,V,3,2,"span",29),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngForOf",n.tags)}}function E(t,a){if(1&t&&(e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"mat-form-field"),e._UZ(3,"input",32),e.qZA(),e.qZA(),e.qZA()),2&t){var n=e.oxw();e.xp6(3),e.Q6J("formControl",n.citationFilter)}}function X(t,a){if(1&t&&(e.TgZ(0,"a",28),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.Q6J("href",n.url,e.LSH),e.xp6(1),e.hij("",n.citation," ")}}function W(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.hij(" ",n.citation," ")}}function G(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,X,2,2,"a",26),e.YNc(2,W,2,1,"span",27),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.url),e.xp6(1),e.Q6J("ngIf",!n.url)}}function K(t,a){if(1&t&&(e.TgZ(0,"mat-option",37),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.Q6J("value",n.display),e.xp6(1),e.Oqu(n.display)}}function ee(t,a){if(1&t&&(e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"mat-form-field",33),e.TgZ(3,"mat-select",34),e.TgZ(4,"mat-select-trigger"),e._uU(5),e.qZA(),e.TgZ(6,"mat-option",35),e._uU(7,"Select Type Filter"),e.qZA(),e.YNc(8,K,2,2,"mat-option",36),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){var n=e.oxw();e.xp6(3),e.Q6J("formControl",n.typeFilter),e.xp6(2),e.hij(" ",n.typeFilter.value?n.typeFilter.value:""," "),e.xp6(1),e.Q6J("value",null),e.xp6(2),e.Q6J("ngForOf",n.typeFilterOptions)}}function te(t,a){if(1&t&&(e.TgZ(0,"td",25),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.hij(" ",n.docType," ")}}function ne(t,a){if(1&t&&(e.TgZ(0,"mat-option",37),e._uU(1),e.qZA()),2&t){var n=a.$implicit;e.Q6J("value",n.display),e.xp6(1),e.Oqu(n.display)}}function ae(t,a){if(1&t&&(e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"mat-form-field",33),e.TgZ(3,"mat-select",34),e.TgZ(4,"mat-select-trigger"),e._uU(5),e.qZA(),e.TgZ(6,"mat-option",35),e._uU(7,"Select Tags Filter"),e.qZA(),e.YNc(8,ne,2,2,"mat-option",36),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){var n=e.oxw();e.xp6(3),e.Q6J("formControl",n.tagsFilter),e.xp6(2),e.hij(" ",n.tagsFilter.value?n.tagsFilter.value:""," "),e.xp6(1),e.Q6J("value",null),e.xp6(2),e.Q6J("ngForOf",n.tagsFilterOptions)}}function ie(t,a){1&t&&(e.TgZ(0,"span"),e._uU(1,",\xa0"),e.qZA())}function oe(t,a){if(1&t&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,ie,2,0,"span",27),e.qZA()),2&t){var n=a.$implicit,s=a.last;e.xp6(1),e.Oqu(n),e.xp6(1),e.Q6J("ngIf",!s)}}function le(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,oe,3,2,"span",29),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngForOf",n.tags)}}function se(t,a){if(1&t){var n=e.EpF();e.TgZ(0,"th",30),e.TgZ(1,"div",31),e.TgZ(2,"button",6),e.NdJ("click",function(){return e.CHM(n),e.oxw().resetFilters()}),e._uU(3,"Reset"),e.qZA(),e.qZA(),e.qZA()}}function ce(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," File "),e.qZA())}function re(t,a){if(1&t&&(e.TgZ(0,"a",39),e._UZ(1,"mat-icon",40),e.qZA()),2&t){var n=e.oxw().$implicit;e.Q6J("href",n.uploadedFile,e.LSH)}}function fe(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,re,2,1,"a",38),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.uploadedFile)}}function pe(t,a){1&t&&(e.TgZ(0,"th",24),e._uU(1," Access "),e.qZA())}function ue(t,a){1&t&&e._UZ(0,"mat-icon",45)}function me(t,a){if(1&t&&(e.TgZ(0,"span",43),e.YNc(1,ue,1,0,"mat-icon",44),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.Q6J("ngIf",n.access.length)}}function ge(t,a){1&t&&e._UZ(0,"mat-icon",48)}function de(t,a){if(1&t&&(e.TgZ(0,"span",46),e.YNc(1,ge,1,0,"mat-icon",47),e.qZA()),2&t){var n=e.oxw().$implicit;e.xp6(1),e.Q6J("ngIf",0===n.access.length)}}function he(t,a){if(1&t&&(e.TgZ(0,"td",25),e.YNc(1,me,2,1,"span",41),e.YNc(2,de,2,1,"span",42),e.qZA()),2&t){var n=a.$implicit;e.xp6(1),e.Q6J("ngIf",n.access.length),e.xp6(1),e.Q6J("ngIf",!n.access.length)}}function ve(t,a){1&t&&e._UZ(0,"tr",49)}function Ze(t,a){if(1&t&&e._UZ(0,"tr",50),2&t){var n=e.oxw();e.Q6J("hidden",n.hideFilters)}}function Te(t,a){1&t&&e._UZ(0,"tr",51)}var Ce=function(){return[5,10,25,100]},_e=function(){var t=function(a){(0,J.Z)(s,a);var n=(0,U.Z)(s);function s(c,i){var o;return(0,A.Z)(this,s),(o=n.call(this,c)).gaService=c,o.utilsService=i,o.references=[],o.displayedColumns=["citation","docType","tags","files","access"],o.substanceUpdated=new q.x,o.pageSize=10,o.hideFilters=!0,o.showHideFilterText="Show Filter",o.displayedFilterColumns=["citationFilter","typeFilter","tagsFilter","resetFilter"],o.citationFilter=new m.NI,o.typeFilter=new m.NI,o.tagsFilter=new m.NI,o.typeFilterOptions=[],o.tagsFilterOptions=[],o}return(0,S.Z)(s,[{key:"ngOnInit",value:function(){var i=this;this.substanceUpdated.subscribe(function(o){i.substance=o,null!=i.substance&&null!=i.substance.references&&(i.references=i.substance.references,i.filtered=i.substance.references,i.pageChange(),i.searchControl.valueChanges.subscribe(function(r){i.filterList(r,i.references,i.analyticsEventCategory)},function(r){console.log(r)}),i.getFilterOptions("tags"),i.getFilterOptions("type")),i.countUpdate.emit(i.references.length)}),this.citationFilter.valueChanges.subscribe(function(o){i.filterTable()}),this.typeFilter.valueChanges.subscribe(function(o){i.filterTable()}),this.tagsFilter.valueChanges.subscribe(function(o){i.filterTable()})}},{key:"filterTable",value:function(i){var o=null===this.citationFilter.value?"":this.citationFilter.value,r=null===this.tagsFilter.value?"":this.tagsFilter.value,d=null===this.typeFilter.value?"":this.typeFilter.value;this.filtered=[];var u,p=(0,T.Z)(this.references);try{for(p.s();!(u=p.n()).done;){var h=u.value;h.citation.toLowerCase().includes(o.toLowerCase())&&h.docType.toLowerCase().includes(d.toLowerCase())&&this.isIncluded(h,r)&&this.filtered.push(h)}}catch(b){p.e(b)}finally{p.f()}this.pageChange()}},{key:"isIncluded",value:function(i,o){return!(o.length>0&&!i.tags.includes(o))}},{key:"getFilterOptions",value:function(i){var d,o=this,r=(0,T.Z)(this.references);try{for(r.s();!(d=r.n()).done;){var p=d.value;if("tags"===i){var h,u=(0,T.Z)(p.tags);try{var b=function(){var v=h.value,ye={value:v,display:v};o.tagsFilterOptions.filter(function(Se){return Se.value===v}).length>0||o.tagsFilterOptions.push(ye)};for(u.s();!(h=u.n()).done;)b()}catch(g){u.e(g)}finally{u.f()}}else"type"===i&&function(){var g=p.docType,x={value:g,display:g};o.typeFilterOptions.filter(function(v){return v.value===g}).length>0||o.typeFilterOptions.push(x)}()}}catch(g){r.e(g)}finally{r.f()}}},{key:"toggleFilter",value:function(){this.hideFilters=!this.hideFilters,this.showHideFilterText=this.hideFilters?"Show Filter":"Hide Filter"}},{key:"resetFilters",value:function(){this.pageChange(),this.searchControl.setValue(""),this.citationFilter.setValue(""),this.tagsFilter.setValue(""),this.typeFilter.setValue("")}},{key:"sortData",value:function(i){var o=this,r=this.references.slice();if(!i.active||""===i.direction)return this.filtered=r,void this.pageChange();this.filtered=r.sort(function(d,p){var u="asc"===i.direction;return o.utilsService.compare(d[i.active]?d[i.active].toString().toUpperCase():null,p[i.active]?p[i.active].toString().toUpperCase():null,u)}),this.pageChange()}}]),s}(Y.u);return t.\u0275fac=function(n){return new(n||t)(e.Y36(I.$),e.Y36(w.FW))},t.\u0275cmp=e.Xpm({type:t,selectors:[["app-substance-references"]],features:[e.qOj],decls:39,vars:11,consts:[[1,"flex-row"],[1,"middle-fill"],[1,"search",3,"floatLabel"],["matInput","","placeholder","Search",3,"formControl"],[1,"responsive"],[1,"show-filter-span"],["mat-flat-button","","color","warn",1,"mat-button","mat-button-primary",3,"click"],["mat-table","","matSort","",3,"dataSource","matSortChange"],["matColumnDef","citation"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","docType"],["matColumnDef","tags"],["matColumnDef","citationFilter"],["mat-header-cell","",4,"matHeaderCellDef"],["matColumnDef","typeFilter"],["matColumnDef","tagsFilter"],["matColumnDef","resetFilter"],["matColumnDef","files"],["matColumnDef","access"],["mat-header-row","",4,"matHeaderRowDef"],["mat-header-row","",3,"hidden",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","true",3,"length","pageSize","pageSizeOptions","page"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["target","_blank",3,"href",4,"ngIf"],[4,"ngIf"],["target","_blank",3,"href"],[4,"ngFor","ngForOf"],["mat-header-cell",""],[1,"tableFilter"],["matInput","","placeholder","Citation Filter",1,"form-field",3,"formControl"],["appearance","fill"],[3,"formControl"],["selected","",3,"value"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[3,"href",4,"ngIf"],[3,"href"],["color","primary","svgIcon","cloud_download",1,"blue"],["matTooltip","Not Public",4,"ngIf"],["matTooltip","Public",4,"ngIf"],["matTooltip","Not Public"],["svgIcon","lock","class","icon-align blue-font",4,"ngIf"],["svgIcon","lock",1,"icon-align","blue-font"],["matTooltip","Public"],["svgIcon","lock_open","class","icon-align blue-font",4,"ngIf"],["svgIcon","lock_open",1,"icon-align","blue-font"],["mat-header-row",""],["mat-header-row","",3,"hidden"],["mat-row",""]],template:function(n,s){1&n&&(e.TgZ(0,"div",0),e._UZ(1,"span",1),e.TgZ(2,"mat-form-field",2),e._UZ(3,"input",3),e.qZA(),e.qZA(),e.TgZ(4,"div",4),e.TgZ(5,"span",5),e.TgZ(6,"mat-label",6),e.NdJ("click",function(){return s.toggleFilter()}),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"table",7),e.NdJ("matSortChange",function(i){return s.sortData(i)}),e.ynx(9,8),e.YNc(10,M,2,0,"th",9),e.YNc(11,P,3,2,"td",10),e.BQk(),e.ynx(12,11),e.YNc(13,j,2,0,"th",9),e.YNc(14,L,2,1,"td",10),e.BQk(),e.ynx(15,12),e.YNc(16,B,2,0,"th",9),e.YNc(17,z,2,1,"td",10),e.BQk(),e.ynx(18,13),e.YNc(19,E,4,1,"th",14),e.YNc(20,G,3,2,"td",10),e.BQk(),e.ynx(21,15),e.YNc(22,ee,9,4,"th",14),e.YNc(23,te,2,1,"td",10),e.BQk(),e.ynx(24,16),e.YNc(25,ae,9,4,"th",14),e.YNc(26,le,2,1,"td",10),e.BQk(),e.ynx(27,17),e.YNc(28,se,4,0,"th",14),e.BQk(),e.ynx(29,18),e.YNc(30,ce,2,0,"th",9),e.YNc(31,fe,2,1,"td",10),e.BQk(),e.ynx(32,19),e.YNc(33,pe,2,0,"th",9),e.YNc(34,he,3,2,"td",10),e.BQk(),e.YNc(35,ve,1,0,"tr",20),e.YNc(36,Ze,1,1,"tr",21),e.YNc(37,Te,1,0,"tr",22),e.qZA(),e.qZA(),e.TgZ(38,"mat-paginator",23),e.NdJ("page",function(i){return s.pageChange(i,s.analyticsEventCategory)}),e.qZA()),2&n&&(e.xp6(2),e.Q6J("floatLabel","never"),e.xp6(1),e.Q6J("formControl",s.searchControl),e.xp6(4),e.Oqu(s.showHideFilterText),e.xp6(1),e.Q6J("dataSource",s.paged),e.xp6(27),e.Q6J("matHeaderRowDef",s.displayedColumns),e.xp6(1),e.Q6J("matHeaderRowDef",s.displayedFilterColumns),e.xp6(1),e.Q6J("matRowDefColumns",s.displayedColumns),e.xp6(1),e.Q6J("length",s.filtered&&s.filtered.length||0)("pageSize",10)("pageSizeOptions",e.DdM(10,Ce)))},directives:[C.KE,R.Nt,m.Fj,m.JJ,m.oH,C.hX,f.BZ,_.YE,f.w1,f.fO,f.ge,_.nU,f.Dz,f.ev,Z.O5,Z.sg,F.gD,F.$L,D.ey,N.Hw,O.gM,f.as,f.XQ,f.nj,f.Gk,Q.NW],styles:["table.mat-table[_ngcontent-%COMP%]{width:100%}td.mat-cell[_ngcontent-%COMP%]:not(:last-child), td.mat-footer-cell[_ngcontent-%COMP%]:not(:last-child), th.mat-header-cell[_ngcontent-%COMP%]:not(:last-child){padding-right:10px}td.mat-cell[_ngcontent-%COMP%], td.mat-footer-cell[_ngcontent-%COMP%], th.mat-header-cell[_ngcontent-%COMP%]{padding-top:10px;padding-bottom:10px}.no-bottom-border[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td.mat-cell[_ngcontent-%COMP%]{border-bottom:none}.mat-sort-header-content[_ngcontent-%COMP%]{display:block!important}.search[_ngcontent-%COMP%]{width:400px;max-width:100%}.show-filter-span[_ngcontent-%COMP%]{display:block;float:right}"]}),t}(),Fe=l(64061),be=l(33865),xe=function(){var t=(0,S.Z)(function a(){(0,A.Z)(this,a)});return t.\u0275fac=function(n){return new(n||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[Z.ez,Fe.o.forChild(_e),f.p0,be.HT,Q.TU,R.c,C.lN,F.LD,m.UX,m.u5,_.JX,N.Ps,O.AV]]}),t}()}}]);
+//# sourceMappingURL=1899.a5d7af21aaab1cdf.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1899.a37c629305203eef.js.map b/frontend/src/main/resources/static/1899.a5d7af21aaab1cdf.js.map
similarity index 99%
rename from frontend/src/main/resources/static/1899.a37c629305203eef.js.map
rename to frontend/src/main/resources/static/1899.a5d7af21aaab1cdf.js.map
index ac95076..e4945c5 100644
--- a/frontend/src/main/resources/static/1899.a37c629305203eef.js.map
+++ b/frontend/src/main/resources/static/1899.a5d7af21aaab1cdf.js.map
@@ -1 +1 @@
-{"version":3,"mappings":"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","names":["i0","ctx_r46","SubstanceReferencesComponent","gaService","utilsService","o","Subject","FormControl","this","substanceUpdated","subscribe","i","substance","references","filtered","pageChange","searchControl","valueChanges","filterList","value","analyticsEventCategory","console","log","error","getFilterOptions","countUpdate","emit","length","citationFilter","citationFilterValue","filterTable","typeFilter","typeFilterValue","tagsFilter","tagsFilterValue","type","cFilter","tgFilter","tFilter","n","u","citation","toLowerCase","includes","docType","isIncluded","push","b","name","tags","string","d","oneTag","h","val","display","tagsFilterOptions","filter","e","g","oneType","typeFilterOptions","hideFilters","showHideFilterText","setValue","sort","data","slice","active","direction","a","isAsc","compare","toString","toUpperCase","s","SubstanceCardBaseFilteredList","selectors","ctx","SubstanceReferencesModule","S","CommonModule","DynamicComponentLoaderModule","MatTableModule","CdkTableModule","MatPaginatorModule","MatInputModule","MatFormFieldModule","MatSelectModule","ReactiveFormsModule","FormsModule","MatSortModule","MatIconModule","MatTooltipModule"],"sources":["./src/app/core/substance-details/substance-references/substance-references.component.html","./src/app/core/substance-details/substance-references/substance-references.component.ts","./src/app/core/substance-details/substance-references/substance-references.module.ts"],"sourcesContent":["\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {{showHideFilterText}}\r\n \r\n
\r\n\r\n \r\n Citation | \r\n \r\n {{reference.citation}} \r\n {{reference.citation}} \r\n | \r\n \r\n\r\n \r\n Type | \r\n {{reference.docType}} | \r\n \r\n\r\n \r\n Tags | \r\n \r\n {{tag}}, \r\n | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n {{reference.citation}} \r\n {{reference.citation}} \r\n | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{typeFilter.value ? typeFilter.value : ''}}\r\n \r\n Select Type Filter\r\n {{type.display}}\r\n \r\n \r\n \r\n | \r\n {{reference.docType}} | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{tagsFilter.value ? tagsFilter.value : ''}}\r\n \r\n Select Tags Filter\r\n {{tags.display}}\r\n \r\n \r\n \r\n | \r\n \r\n {{tag}}, \r\n | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n\r\n \r\n File | \r\n \r\n \r\n | \r\n \r\n\r\n \r\n Access | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n","import { Component, OnInit } from '@angular/core';\r\nimport {SubstanceDetail, SubstanceReference, TableFilterDDModel} from '../../substance/substance.model';\r\nimport { SubstanceCardBaseFilteredList } from '../substance-card-base-filtered-list';\r\nimport { GoogleAnalyticsService } from '../../google-analytics/google-analytics.service';\r\nimport {Subject} from 'rxjs';\r\nimport {Sort} from '@angular/material/sort';\r\nimport {UtilsService} from '@gsrs-core/utils';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-substance-references',\r\n templateUrl: './substance-references.component.html',\r\n styleUrls: ['./substance-references.component.scss']\r\n})\r\nexport class SubstanceReferencesComponent extends SubstanceCardBaseFilteredList implements OnInit {\r\n references: Array = [];\r\n displayedColumns: string[] = ['citation', 'docType', 'tags', 'files', 'access'];\r\n substanceUpdated = new Subject();\r\n pageSize = 10;\r\n hideFilters = true;\r\n showHideFilterText = 'Show Filter';\r\n displayedFilterColumns: string[] = ['citationFilter', 'typeFilter', 'tagsFilter', 'resetFilter'];\r\n citationFilter = new FormControl();\r\n typeFilter = new FormControl();\r\n tagsFilter = new FormControl();\r\n typeFilterOptions: Array = [];\r\n tagsFilterOptions: Array = [];\r\n\r\n constructor(\r\n public gaService: GoogleAnalyticsService,\r\n private utilsService: UtilsService\r\n ) {\r\n super(\r\n gaService\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.substanceUpdated.subscribe(substance => {\r\n this.substance = substance;\r\n if (this.substance != null && this.substance.references != null) {\r\n this.references = this.substance.references;\r\n this.filtered = this.substance.references;\r\n this.pageChange();\r\n\r\n this.searchControl.valueChanges.subscribe(value => {\r\n this.filterList(value, this.references, this.analyticsEventCategory);\r\n }, error => {\r\n console.log(error);\r\n });\r\n this.getFilterOptions('tags');\r\n this.getFilterOptions('type');\r\n }\r\n this.countUpdate.emit(this.references.length);\r\n });\r\n this.citationFilter.valueChanges.subscribe((citationFilterValue) => {\r\n this.filterTable();\r\n });\r\n this.typeFilter.valueChanges.subscribe((typeFilterValue) => {\r\n this.filterTable();\r\n });\r\n this.tagsFilter.valueChanges.subscribe((tagsFilterValue) => {\r\n this.filterTable();\r\n });\r\n }\r\n\r\n filterTable(type?:string) {\r\n const cFilter = this.citationFilter.value === null ? '' : this.citationFilter.value;\r\n const tgFilter = this.tagsFilter.value === null ? '' : this.tagsFilter.value;\r\n const tFilter = this.typeFilter.value === null ? '' : this.typeFilter.value;\r\n this.filtered = [];\r\n for(let n of this.references) {\r\n if((n.citation.toLowerCase().includes(cFilter.toLowerCase())) &&\r\n (n.docType.toLowerCase().includes(tFilter.toLowerCase())) && \r\n (this.isIncluded(n, tgFilter))) {\r\n this.filtered.push(n);\r\n }\r\n }\r\n \r\n this.pageChange();\r\n }\r\n\r\n isIncluded(name, value) {\r\n if(value.length > 0) {\r\n if(name.tags.includes(value)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n getFilterOptions(string) {\r\n for(let n of this.references) {\r\n if(string === 'tags') {\r\n for(let t of n.tags) {\r\n let oneTag = t;\r\n let val: TableFilterDDModel = {\r\n value: oneTag,\r\n display: oneTag\r\n }\r\n if (this.tagsFilterOptions.filter(e => e.value === oneTag).length > 0) {\r\n } else {\r\n this.tagsFilterOptions.push(val);\r\n }\r\n }\r\n } else if(string === 'type') {\r\n let oneType = n.docType;\r\n let value: TableFilterDDModel = {\r\n value: oneType,\r\n display: oneType\r\n }\r\n if (this.typeFilterOptions.filter(e => e.value === oneType).length > 0) {\r\n } else {\r\n this.typeFilterOptions.push(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggleFilter() {\r\n this.hideFilters = !this.hideFilters;\r\n if(this.hideFilters) {\r\n this.showHideFilterText = 'Show Filter';\r\n } else {\r\n this.showHideFilterText = 'Hide Filter';\r\n }\r\n }\r\n\r\n resetFilters() {\r\n this.pageChange();\r\n this.searchControl.setValue('');\r\n this.citationFilter.setValue('');\r\n this.tagsFilter.setValue('');\r\n this.typeFilter.setValue('');\r\n }\r\n\r\n sortData(sort: Sort) {\r\n const data = this.references.slice();\r\n if (!sort.active || sort.direction === '') {\r\n this.filtered = data;\r\n this.pageChange();\r\n return;\r\n }\r\n this.filtered = data.sort((a, b) => {\r\n const isAsc = sort.direction === 'asc';\r\n return this.utilsService.compare(a[sort.active] ? a[sort.active].toString().toUpperCase() : null, b[sort.active] ? b[sort.active].toString().toUpperCase() : null, isAsc);\r\n });\r\n this.pageChange();\r\n }\r\n\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SubstanceReferencesComponent } from './substance-references.component';\r\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport {MatSortModule} from '@angular/material/sort';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DynamicComponentLoaderModule.forChild(SubstanceReferencesComponent),\r\n MatTableModule,\r\n CdkTableModule,\r\n MatPaginatorModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatTooltipModule\r\n ],\r\n declarations: [SubstanceReferencesComponent]\r\n})\r\nexport class SubstanceReferencesModule { }\r\n"],"sourceRoot":"webpack:///","file":"1899.a37c629305203eef.js"}
\ No newline at end of file
+{"version":3,"mappings":"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","names":["i0","ctx_r46","SubstanceReferencesComponent","gaService","utilsService","o","Subject","FormControl","this","substanceUpdated","subscribe","i","substance","references","filtered","pageChange","searchControl","valueChanges","filterList","value","analyticsEventCategory","console","log","error","getFilterOptions","countUpdate","emit","length","citationFilter","citationFilterValue","filterTable","typeFilter","typeFilterValue","tagsFilter","tagsFilterValue","type","cFilter","tgFilter","tFilter","n","u","citation","toLowerCase","includes","docType","isIncluded","push","b","name","tags","string","d","oneTag","h","val","display","tagsFilterOptions","filter","e","g","oneType","typeFilterOptions","hideFilters","showHideFilterText","setValue","sort","data","slice","active","direction","a","isAsc","compare","toString","toUpperCase","s","SubstanceCardBaseFilteredList","selectors","ctx","SubstanceReferencesModule","S","CommonModule","DynamicComponentLoaderModule","MatTableModule","CdkTableModule","MatPaginatorModule","MatInputModule","MatFormFieldModule","MatSelectModule","ReactiveFormsModule","FormsModule","MatSortModule","MatIconModule","MatTooltipModule"],"sources":["./src/app/core/substance-details/substance-references/substance-references.component.html","./src/app/core/substance-details/substance-references/substance-references.component.ts","./src/app/core/substance-details/substance-references/substance-references.module.ts"],"sourcesContent":["\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {{showHideFilterText}}\r\n \r\n
\r\n\r\n \r\n Citation | \r\n \r\n {{reference.citation}} \r\n {{reference.citation}} \r\n | \r\n \r\n\r\n \r\n Type | \r\n {{reference.docType}} | \r\n \r\n\r\n \r\n Tags | \r\n \r\n {{tag}}, \r\n | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n {{reference.citation}} \r\n {{reference.citation}} \r\n | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{typeFilter.value ? typeFilter.value : ''}}\r\n \r\n Select Type Filter\r\n {{type.display}}\r\n \r\n \r\n \r\n | \r\n {{reference.docType}} | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{tagsFilter.value ? tagsFilter.value : ''}}\r\n \r\n Select Tags Filter\r\n {{tags.display}}\r\n \r\n \r\n \r\n | \r\n \r\n {{tag}}, \r\n | \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n\r\n \r\n File | \r\n \r\n \r\n | \r\n \r\n\r\n \r\n Access | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n","import { Component, OnInit } from '@angular/core';\r\nimport {SubstanceDetail, SubstanceReference, TableFilterDDModel} from '../../substance/substance.model';\r\nimport { SubstanceCardBaseFilteredList } from '../substance-card-base-filtered-list';\r\nimport { GoogleAnalyticsService } from '../../google-analytics/google-analytics.service';\r\nimport {Subject} from 'rxjs';\r\nimport {Sort} from '@angular/material/sort';\r\nimport {UtilsService} from '@gsrs-core/utils';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-substance-references',\r\n templateUrl: './substance-references.component.html',\r\n styleUrls: ['./substance-references.component.scss']\r\n})\r\nexport class SubstanceReferencesComponent extends SubstanceCardBaseFilteredList implements OnInit {\r\n references: Array = [];\r\n displayedColumns: string[] = ['citation', 'docType', 'tags', 'files', 'access'];\r\n substanceUpdated = new Subject();\r\n pageSize = 10;\r\n hideFilters = true;\r\n showHideFilterText = 'Show Filter';\r\n displayedFilterColumns: string[] = ['citationFilter', 'typeFilter', 'tagsFilter', 'resetFilter'];\r\n citationFilter = new FormControl();\r\n typeFilter = new FormControl();\r\n tagsFilter = new FormControl();\r\n typeFilterOptions: Array = [];\r\n tagsFilterOptions: Array = [];\r\n\r\n constructor(\r\n public gaService: GoogleAnalyticsService,\r\n private utilsService: UtilsService\r\n ) {\r\n super(\r\n gaService\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.substanceUpdated.subscribe(substance => {\r\n this.substance = substance;\r\n if (this.substance != null && this.substance.references != null) {\r\n this.references = this.substance.references;\r\n this.filtered = this.substance.references;\r\n this.pageChange();\r\n\r\n this.searchControl.valueChanges.subscribe(value => {\r\n this.filterList(value, this.references, this.analyticsEventCategory);\r\n }, error => {\r\n console.log(error);\r\n });\r\n this.getFilterOptions('tags');\r\n this.getFilterOptions('type');\r\n }\r\n this.countUpdate.emit(this.references.length);\r\n });\r\n this.citationFilter.valueChanges.subscribe((citationFilterValue) => {\r\n this.filterTable();\r\n });\r\n this.typeFilter.valueChanges.subscribe((typeFilterValue) => {\r\n this.filterTable();\r\n });\r\n this.tagsFilter.valueChanges.subscribe((tagsFilterValue) => {\r\n this.filterTable();\r\n });\r\n }\r\n\r\n filterTable(type?:string) {\r\n const cFilter = this.citationFilter.value === null ? '' : this.citationFilter.value;\r\n const tgFilter = this.tagsFilter.value === null ? '' : this.tagsFilter.value;\r\n const tFilter = this.typeFilter.value === null ? '' : this.typeFilter.value;\r\n this.filtered = [];\r\n for(let n of this.references) {\r\n if((n.citation.toLowerCase().includes(cFilter.toLowerCase())) &&\r\n (n.docType.toLowerCase().includes(tFilter.toLowerCase())) && \r\n (this.isIncluded(n, tgFilter))) {\r\n this.filtered.push(n);\r\n }\r\n }\r\n \r\n this.pageChange();\r\n }\r\n\r\n isIncluded(name, value) {\r\n if(value.length > 0) {\r\n if(name.tags.includes(value)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n getFilterOptions(string) {\r\n for(let n of this.references) {\r\n if(string === 'tags') {\r\n for(let t of n.tags) {\r\n let oneTag = t;\r\n let val: TableFilterDDModel = {\r\n value: oneTag,\r\n display: oneTag\r\n }\r\n if (this.tagsFilterOptions.filter(e => e.value === oneTag).length > 0) {\r\n } else {\r\n this.tagsFilterOptions.push(val);\r\n }\r\n }\r\n } else if(string === 'type') {\r\n let oneType = n.docType;\r\n let value: TableFilterDDModel = {\r\n value: oneType,\r\n display: oneType\r\n }\r\n if (this.typeFilterOptions.filter(e => e.value === oneType).length > 0) {\r\n } else {\r\n this.typeFilterOptions.push(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggleFilter() {\r\n this.hideFilters = !this.hideFilters;\r\n if(this.hideFilters) {\r\n this.showHideFilterText = 'Show Filter';\r\n } else {\r\n this.showHideFilterText = 'Hide Filter';\r\n }\r\n }\r\n\r\n resetFilters() {\r\n this.pageChange();\r\n this.searchControl.setValue('');\r\n this.citationFilter.setValue('');\r\n this.tagsFilter.setValue('');\r\n this.typeFilter.setValue('');\r\n }\r\n\r\n sortData(sort: Sort) {\r\n const data = this.references.slice();\r\n if (!sort.active || sort.direction === '') {\r\n this.filtered = data;\r\n this.pageChange();\r\n return;\r\n }\r\n this.filtered = data.sort((a, b) => {\r\n const isAsc = sort.direction === 'asc';\r\n return this.utilsService.compare(a[sort.active] ? a[sort.active].toString().toUpperCase() : null, b[sort.active] ? b[sort.active].toString().toUpperCase() : null, isAsc);\r\n });\r\n this.pageChange();\r\n }\r\n\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SubstanceReferencesComponent } from './substance-references.component';\r\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport {MatSortModule} from '@angular/material/sort';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DynamicComponentLoaderModule.forChild(SubstanceReferencesComponent),\r\n MatTableModule,\r\n CdkTableModule,\r\n MatPaginatorModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatTooltipModule\r\n ],\r\n declarations: [SubstanceReferencesComponent]\r\n})\r\nexport class SubstanceReferencesModule { }\r\n"],"sourceRoot":"webpack:///","file":"1899.a5d7af21aaab1cdf.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1935.c6fd1fdbbd04ce21.js b/frontend/src/main/resources/static/1935.05ca842702a9b3fd.js
similarity index 94%
rename from frontend/src/main/resources/static/1935.c6fd1fdbbd04ce21.js
rename to frontend/src/main/resources/static/1935.05ca842702a9b3fd.js
index 8d3b9e5..5ef9990 100644
--- a/frontend/src/main/resources/static/1935.c6fd1fdbbd04ce21.js
+++ b/frontend/src/main/resources/static/1935.05ca842702a9b3fd.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1935],{51935:function(I,c,n){n.r(c),n.d(c,{SubstanceFormProteinDetailsModule:function(){return U}});var p=n(48047),m=n(78069),v=n(36362),f=n(64061),g=n(44770),y=n(43365),d=n(90587),S=n(91434),h=n(7168),C=n(96769),T=n(24582),P=n(7318),Z=(n(27299),n(33567)),x=n(40104),F=n(18291),b=n(79223),e=n(76442),O=n(16667),D=n(15992),A=n(14900);function M(o,l){if(1&o){var s=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"div",2),e.TgZ(2,"app-cv-input",3),e.NdJ("valueChange",function(t){return e.CHM(s),e.oxw().updateType(t)}),e.qZA(),e.TgZ(3,"div",4),e.TgZ(4,"app-tag-selector",5),e.NdJ("tagsUpdate",function(t){return e.CHM(s),e.oxw().update(t)}),e.qZA(),e.qZA(),e.TgZ(5,"app-cv-input",6),e.NdJ("valueChange",function(t){return e.CHM(s),e.oxw().updateOrigin(t)}),e.qZA(),e.TgZ(6,"app-cv-input",7),e.NdJ("valueChange",function(t){return e.CHM(s),e.oxw().updateSequenceType(t)}),e.qZA(),e._UZ(7,"div"),e.qZA(),e.TgZ(8,"div",2),e._UZ(9,"app-audit-info",8),e.qZA(),e.qZA()}if(2&o){var i=e.oxw();e.xp6(2),e.Q6J("model",i.protein.proteinType),e.xp6(2),e.Q6J("tags",i.pipeToArray(i.protein.proteinSubType)),e.xp6(1),e.Q6J("model",i.protein.sequenceOrigin),e.xp6(1),e.Q6J("model",i.protein.sequenceType),e.xp6(3),e.Q6J("source",i.protein)}}var E=function(){var o=function(l){(0,T.Z)(i,l);var s=(0,P.Z)(i);function i(a,t,u){var r;return(0,m.Z)(this,i),(r=s.call(this)).substanceFormService=a,r.gaService=t,r.cvService=u,r.subscriptions=[],r.dropdownSettings={},r.analyticsEventCategory="substance form Protein Details",r}return(0,p.Z)(i,[{key:"ngOnInit",value:function(){var t=this;this.menuLabelUpdate.emit("Protein Details");var u=this.substanceFormService.substance.subscribe(function(r){null==r.protein&&(r.protein={proteinType:""}),t.substanceFormService.resetState(),t.protein=r.protein});this.subscriptions.push(u),this.dropdownSettings={singleSelection:!1,idField:"value",textField:"display",selectAllText:"Select All",unSelectAllText:"UnSelect All",itemsShowLimit:3,allowSearchFilter:!0}}},{key:"ngAfterViewInit",value:function(){}},{key:"ngOnDestroy",value:function(){this.subscriptions.forEach(function(t){t.unsubscribe()})}},{key:"updateAccess",value:function(t){this.protein.access=t}},{key:"update",value:function(t){this.protein.proteinSubType=t.join("|")}},{key:"updateType",value:function(t){this.protein.proteinType=t}},{key:"updateSequenceType",value:function(t){this.protein.sequenceType=t}},{key:"updateOrigin",value:function(t){this.protein.sequenceOrigin=t}},{key:"pipeToArray",value:function(t){return t&&""!==t?t.split("|"):[]}}]),i}(b.o);return o.\u0275fac=function(s){return new(s||o)(e.Y36(Z.B),e.Y36(x.$),e.Y36(F.I))},o.\u0275cmp=e.Xpm({type:o,selectors:[["app-substance-form-protein-details"]],features:[e.qOj],decls:1,vars:1,consts:[["class","name-form-container",4,"ngIf"],[1,"name-form-container"],[1,"form-row"],["key","Protein Proteintype",1,"cv-input",3,"model","valueChange"],[1,"mat-form-field-flex","subtype"],["placeholder","protein subType","cvDomain","PROTEIN_SUBTYPE",1,"tags",3,"tags","tagsUpdate"],["domain","SEQUENCE_ORIGIN","title","Sequence Origin",1,"cv-input",3,"model","valueChange"],["domain","SEQUENCE_TYPE","title","Sequence Type",3,"model","valueChange"],[3,"source"]],template:function(s,i){1&s&&e.YNc(0,M,10,5,"div",0),2&s&&e.Q6J("ngIf",i.protein)},directives:[v.O5,O.S,D.C,A.n],styles:[".subtype[_ngcontent-%COMP%]{width:30%;margin-right:15px}.cv-input[_ngcontent-%COMP%]{margin-right:15px}.tags[_ngcontent-%COMP%]{width:100%}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:0 10px;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{padding-bottom:18px}"]}),o}(),J=n(3311),U=function(){var o=(0,p.Z)(function l(){(0,m.Z)(this,l)});return o.\u0275fac=function(s){return new(s||o)},o.\u0275mod=e.oAB({type:o}),o.\u0275inj=e.cJS({imports:[[v.ez,f.o.forChild(E),g.lN,y.c,d.UX,d.u5,S.LD,h.O,C.O,J.ZQ]]}),o}()}}]);
-//# sourceMappingURL=1935.c6fd1fdbbd04ce21.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[1935],{51935:function(I,c,n){n.r(c),n.d(c,{SubstanceFormProteinDetailsModule:function(){return U}});var p=n(1884),m=n(39117),v=n(36362),f=n(64061),g=n(44770),y=n(43365),d=n(90587),S=n(91434),h=n(7168),C=n(96769),T=n(46751),P=n(56101),Z=(n(27299),n(33567)),x=n(40104),F=n(18291),b=n(79223),e=n(86613),O=n(16667),D=n(15992),A=n(14900);function M(o,l){if(1&o){var s=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"div",2),e.TgZ(2,"app-cv-input",3),e.NdJ("valueChange",function(t){return e.CHM(s),e.oxw().updateType(t)}),e.qZA(),e.TgZ(3,"div",4),e.TgZ(4,"app-tag-selector",5),e.NdJ("tagsUpdate",function(t){return e.CHM(s),e.oxw().update(t)}),e.qZA(),e.qZA(),e.TgZ(5,"app-cv-input",6),e.NdJ("valueChange",function(t){return e.CHM(s),e.oxw().updateOrigin(t)}),e.qZA(),e.TgZ(6,"app-cv-input",7),e.NdJ("valueChange",function(t){return e.CHM(s),e.oxw().updateSequenceType(t)}),e.qZA(),e._UZ(7,"div"),e.qZA(),e.TgZ(8,"div",2),e._UZ(9,"app-audit-info",8),e.qZA(),e.qZA()}if(2&o){var i=e.oxw();e.xp6(2),e.Q6J("model",i.protein.proteinType),e.xp6(2),e.Q6J("tags",i.pipeToArray(i.protein.proteinSubType)),e.xp6(1),e.Q6J("model",i.protein.sequenceOrigin),e.xp6(1),e.Q6J("model",i.protein.sequenceType),e.xp6(3),e.Q6J("source",i.protein)}}var E=function(){var o=function(l){(0,T.Z)(i,l);var s=(0,P.Z)(i);function i(a,t,u){var r;return(0,m.Z)(this,i),(r=s.call(this)).substanceFormService=a,r.gaService=t,r.cvService=u,r.subscriptions=[],r.dropdownSettings={},r.analyticsEventCategory="substance form Protein Details",r}return(0,p.Z)(i,[{key:"ngOnInit",value:function(){var t=this;this.menuLabelUpdate.emit("Protein Details");var u=this.substanceFormService.substance.subscribe(function(r){null==r.protein&&(r.protein={proteinType:""}),t.substanceFormService.resetState(),t.protein=r.protein});this.subscriptions.push(u),this.dropdownSettings={singleSelection:!1,idField:"value",textField:"display",selectAllText:"Select All",unSelectAllText:"UnSelect All",itemsShowLimit:3,allowSearchFilter:!0}}},{key:"ngAfterViewInit",value:function(){}},{key:"ngOnDestroy",value:function(){this.subscriptions.forEach(function(t){t.unsubscribe()})}},{key:"updateAccess",value:function(t){this.protein.access=t}},{key:"update",value:function(t){this.protein.proteinSubType=t.join("|")}},{key:"updateType",value:function(t){this.protein.proteinType=t}},{key:"updateSequenceType",value:function(t){this.protein.sequenceType=t}},{key:"updateOrigin",value:function(t){this.protein.sequenceOrigin=t}},{key:"pipeToArray",value:function(t){return t&&""!==t?t.split("|"):[]}}]),i}(b.o);return o.\u0275fac=function(s){return new(s||o)(e.Y36(Z.B),e.Y36(x.$),e.Y36(F.I))},o.\u0275cmp=e.Xpm({type:o,selectors:[["app-substance-form-protein-details"]],features:[e.qOj],decls:1,vars:1,consts:[["class","name-form-container",4,"ngIf"],[1,"name-form-container"],[1,"form-row"],["key","Protein Proteintype",1,"cv-input",3,"model","valueChange"],[1,"mat-form-field-flex","subtype"],["placeholder","protein subType","cvDomain","PROTEIN_SUBTYPE",1,"tags",3,"tags","tagsUpdate"],["domain","SEQUENCE_ORIGIN","title","Sequence Origin",1,"cv-input",3,"model","valueChange"],["domain","SEQUENCE_TYPE","title","Sequence Type",3,"model","valueChange"],[3,"source"]],template:function(s,i){1&s&&e.YNc(0,M,10,5,"div",0),2&s&&e.Q6J("ngIf",i.protein)},directives:[v.O5,O.S,D.C,A.n],styles:[".subtype[_ngcontent-%COMP%]{width:30%;margin-right:15px}.cv-input[_ngcontent-%COMP%]{margin-right:15px}.tags[_ngcontent-%COMP%]{width:100%}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:0 10px;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{padding-bottom:18px}"]}),o}(),J=n(3311),U=function(){var o=(0,p.Z)(function l(){(0,m.Z)(this,l)});return o.\u0275fac=function(s){return new(s||o)},o.\u0275mod=e.oAB({type:o}),o.\u0275inj=e.cJS({imports:[[v.ez,f.o.forChild(E),g.lN,y.c,d.UX,d.u5,S.LD,h.O,C.O,J.ZQ]]}),o}()}}]);
+//# sourceMappingURL=1935.05ca842702a9b3fd.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/1935.c6fd1fdbbd04ce21.js.map b/frontend/src/main/resources/static/1935.05ca842702a9b3fd.js.map
similarity index 99%
rename from frontend/src/main/resources/static/1935.c6fd1fdbbd04ce21.js.map
rename to frontend/src/main/resources/static/1935.05ca842702a9b3fd.js.map
index 2077c50..2b71824 100644
--- a/frontend/src/main/resources/static/1935.c6fd1fdbbd04ce21.js.map
+++ b/frontend/src/main/resources/static/1935.05ca842702a9b3fd.js.map
@@ -1 +1 @@
-{"version":3,"mappings":"ucAAAA,iBACEA,iBACIA,0BAA6DA,wDAAiBC,gBAAoDD,QACpIA,iBACEA,8BAA+DA,uDAAcE,YAChCF,QAC/CA,QACEA,0BAAwFA,wDAAiBG,kBAAyDH,QACpKA,0BAAiGA,wDAAeI,wBAA4BJ,QAC5IA,eAIFA,QACAA,iBACEA,4BACFA,QACFA,8BAfwGA,8CAELA,+DAGkCA,iDACjEA,+CAOhDA,oCCCb,IAAMK,EAAb,eAAaA,EAAb,0CAKE,WACUC,EACDC,EACAC,GAAsC,6BAE7CC,gBAJQH,uBACDG,cACAA,cALDA,gBAAqC,GAC7CA,mBAAsC,GAOpCA,EAAKC,uBAAyB,iCAHeD,EARjD,uCAcE,WAAQ,WACNE,KAAKC,gBAAgBC,KAAK,mBAC1B,IAAMC,EAAwBH,KAAKL,qBAAqBS,UAAUC,UAAU,YACjD,MAArBD,EAAUE,UAEZF,EAAUE,QAAU,CAAEC,YAAa,KAErCC,EAAKb,qBAAqBc,aAC1BD,EAAKF,QAAUF,EAAUE,UAE3BN,KAAKU,cAAcC,KAAKR,GACxBH,KAAKY,iBAAmB,CACtBC,iBAAiB,EAAOC,QAAS,QAASC,UAAW,UAAWC,cAAe,aAC/EC,gBAAiB,eAAgBC,eAAgB,EAAGC,mBAAmB,KA3B7E,6BA+BE,cA/BF,yBAkCE,WACEnB,KAAKU,cAAcU,QAAQ,YACzBC,EAAaC,kBApCnB,0BAwCE,SAAaC,GACXvB,KAAKM,QAAQiB,OAASA,IAzC1B,oBA4CE,SAAOC,GACLxB,KAAKM,QAAQmB,eAAiBD,EAAKE,KAAK,OA7C5C,wBAgDE,SAAWC,GACT3B,KAAKM,QAAQC,YAAcoB,IAjD/B,gCAoDE,SAAmBA,GACjB3B,KAAKM,QAAQsB,aAAeD,IArDhC,0BAwDE,SAAaA,GACX3B,KAAKM,QAAQuB,eAAiBF,IAzDlC,yBA4DE,SAAYG,GACV,OAAKA,GAAqB,KAAXA,EAGNA,EAAOC,MAAM,KAFb,OA9DbC,GAA0DC,kDAA7CvC,GAAoCL,2DAApCK,EAAoCwC,mkBDhBjD7C,6BAAkCA,mdCgBrBK,EAAb,aCcayC,EAAb,eAAaA,KAAbC,iFAAaD,4DAhBF,CACPE,KACAC,aAAsC5C,GACtC6C,KACAC,IACAC,KACAC,KACAC,KACAC,IACAC,IACAC,SAMSX,EAAb","names":["i0","ctx_r1","ctx_r3","ctx_r4","ctx_r5","SubstanceFormProteinDetailsComponent","substanceFormService","gaService","cvService","r","analyticsEventCategory","this","menuLabelUpdate","emit","substanceSubscription","substance","subscribe","protein","proteinType","t","resetState","subscriptions","push","dropdownSettings","singleSelection","idField","textField","selectAllText","unSelectAllText","itemsShowLimit","allowSearchFilter","forEach","subscription","unsubscribe","access","tags","proteinSubType","join","type","sequenceType","sequenceOrigin","string","split","i","SubstanceFormBase","selectors","SubstanceFormProteinDetailsModule","p","CommonModule","DynamicComponentLoaderModule","MatFormFieldModule","MatInputModule","ReactiveFormsModule","FormsModule","MatSelectModule","SubstanceFormModule","NameResolverModule","NgMultiSelectDropDownModule"],"sources":["./src/app/core/substance-form/protein-details/substance-form-protein-details.component.html","./src/app/core/substance-form/protein-details/substance-form-protein-details.component.ts","./src/app/core/substance-form/protein-details/substance-form-protein-details.module.ts"],"sourcesContent":["\n\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Protein, SubstanceDetail, SubstanceName } from '@gsrs-core/substance';\nimport { Subscription } from 'rxjs';\nimport { SubstanceFormService } from '@gsrs-core/substance-form/substance-form.service';\nimport { ScrollToService } from '@gsrs-core/scroll-to/scroll-to.service';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { ControlledVocabularyService, VocabularyTerm } from '@gsrs-core/controlled-vocabulary';\nimport { IDropdownSettings } from 'ng-multiselect-dropdown';\nimport { SubstanceFormBase } from '../base-classes/substance-form-base';\n\n@Component({\n selector: 'app-substance-form-protein-details',\n templateUrl: './substance-form-protein-details.component.html',\n styleUrls: ['./substance-form-protein-details.component.scss']\n})\n// eslint-disable-next-line max-len\nexport class SubstanceFormProteinDetailsComponent extends SubstanceFormBase implements OnInit, AfterViewInit, OnDestroy {\n\n protein: Protein;\n private subscriptions: Array = [];\n dropdownSettings: IDropdownSettings = {};\n constructor(\n private substanceFormService: SubstanceFormService,\n public gaService: GoogleAnalyticsService,\n public cvService: ControlledVocabularyService\n ) {\n super();\n this.analyticsEventCategory = 'substance form Protein Details';\n }\n\n ngOnInit() {\n this.menuLabelUpdate.emit('Protein Details');\n const substanceSubscription = this.substanceFormService.substance.subscribe(substance => {\n if (substance.protein == null) {\n // ### figure out why only proteinType takes forever to load causing a console error\n substance.protein = { proteinType: '' };\n }\n this.substanceFormService.resetState();\n this.protein = substance.protein;\n });\n this.subscriptions.push(substanceSubscription);\n this.dropdownSettings = {\n singleSelection: false, idField: 'value', textField: 'display', selectAllText: 'Select All',\n unSelectAllText: 'UnSelect All', itemsShowLimit: 3, allowSearchFilter: true\n };\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n updateAccess(access: Array): void {\n this.protein.access = access;\n }\n\n update(tags: Array): void {\n this.protein.proteinSubType = tags.join('|');\n }\n\n updateType(type: string): void {\n this.protein.proteinType = type;\n }\n\n updateSequenceType(type: string): void {\n this.protein.sequenceType = type;\n }\n\n updateOrigin(type: string): void {\n this.protein.sequenceOrigin = type;\n }\n\n pipeToArray(string: string): Array {\n if (!string || string === '') {\n return [];\n } else {\n return string.split('|');\n }\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { SubstanceFormModule } from '../substance-form.module';\nimport { NameResolverModule } from '../../name-resolver/name-resolver.module';\nimport {SubstanceFormProteinDetailsComponent} from '@gsrs-core/substance-form/protein-details/substance-form-protein-details.component';\nimport {NgMultiSelectDropDownModule} from 'ng-multiselect-dropdown';\nimport {CvInputComponent} from '@gsrs-core/substance-form/cv-input/cv-input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceFormProteinDetailsComponent),\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatSelectModule,\n SubstanceFormModule,\n NameResolverModule,\n NgMultiSelectDropDownModule\n ],\n declarations: [\n SubstanceFormProteinDetailsComponent\n ]\n})\nexport class SubstanceFormProteinDetailsModule { }\n"],"sourceRoot":"webpack:///","file":"1935.c6fd1fdbbd04ce21.js"}
\ No newline at end of file
+{"version":3,"mappings":"ucAAAA,iBACEA,iBACIA,0BAA6DA,wDAAiBC,gBAAoDD,QACpIA,iBACEA,8BAA+DA,uDAAcE,YAChCF,QAC/CA,QACEA,0BAAwFA,wDAAiBG,kBAAyDH,QACpKA,0BAAiGA,wDAAeI,wBAA4BJ,QAC5IA,eAIFA,QACAA,iBACEA,4BACFA,QACFA,8BAfwGA,8CAELA,+DAGkCA,iDACjEA,+CAOhDA,oCCCb,IAAMK,EAAb,eAAaA,EAAb,0CAKE,WACUC,EACDC,EACAC,GAAsC,6BAE7CC,gBAJQH,uBACDG,cACAA,cALDA,gBAAqC,GAC7CA,mBAAsC,GAOpCA,EAAKC,uBAAyB,iCAHeD,EARjD,uCAcE,WAAQ,WACNE,KAAKC,gBAAgBC,KAAK,mBAC1B,IAAMC,EAAwBH,KAAKL,qBAAqBS,UAAUC,UAAU,YACjD,MAArBD,EAAUE,UAEZF,EAAUE,QAAU,CAAEC,YAAa,KAErCC,EAAKb,qBAAqBc,aAC1BD,EAAKF,QAAUF,EAAUE,UAE3BN,KAAKU,cAAcC,KAAKR,GACxBH,KAAKY,iBAAmB,CACtBC,iBAAiB,EAAOC,QAAS,QAASC,UAAW,UAAWC,cAAe,aAC/EC,gBAAiB,eAAgBC,eAAgB,EAAGC,mBAAmB,KA3B7E,6BA+BE,cA/BF,yBAkCE,WACEnB,KAAKU,cAAcU,QAAQ,YACzBC,EAAaC,kBApCnB,0BAwCE,SAAaC,GACXvB,KAAKM,QAAQiB,OAASA,IAzC1B,oBA4CE,SAAOC,GACLxB,KAAKM,QAAQmB,eAAiBD,EAAKE,KAAK,OA7C5C,wBAgDE,SAAWC,GACT3B,KAAKM,QAAQC,YAAcoB,IAjD/B,gCAoDE,SAAmBA,GACjB3B,KAAKM,QAAQsB,aAAeD,IArDhC,0BAwDE,SAAaA,GACX3B,KAAKM,QAAQuB,eAAiBF,IAzDlC,yBA4DE,SAAYG,GACV,OAAKA,GAAqB,KAAXA,EAGNA,EAAOC,MAAM,KAFb,OA9DbC,GAA0DC,kDAA7CvC,GAAoCL,2DAApCK,EAAoCwC,mkBDhBjD7C,6BAAkCA,mdCgBrBK,EAAb,aCcayC,EAAb,eAAaA,KAAbC,iFAAaD,4DAhBF,CACPE,KACAC,aAAsC5C,GACtC6C,KACAC,IACAC,KACAC,KACAC,KACAC,IACAC,IACAC,SAMSX,EAAb","names":["i0","ctx_r1","ctx_r3","ctx_r4","ctx_r5","SubstanceFormProteinDetailsComponent","substanceFormService","gaService","cvService","r","analyticsEventCategory","this","menuLabelUpdate","emit","substanceSubscription","substance","subscribe","protein","proteinType","t","resetState","subscriptions","push","dropdownSettings","singleSelection","idField","textField","selectAllText","unSelectAllText","itemsShowLimit","allowSearchFilter","forEach","subscription","unsubscribe","access","tags","proteinSubType","join","type","sequenceType","sequenceOrigin","string","split","i","SubstanceFormBase","selectors","SubstanceFormProteinDetailsModule","p","CommonModule","DynamicComponentLoaderModule","MatFormFieldModule","MatInputModule","ReactiveFormsModule","FormsModule","MatSelectModule","SubstanceFormModule","NameResolverModule","NgMultiSelectDropDownModule"],"sources":["./src/app/core/substance-form/protein-details/substance-form-protein-details.component.html","./src/app/core/substance-form/protein-details/substance-form-protein-details.component.ts","./src/app/core/substance-form/protein-details/substance-form-protein-details.module.ts"],"sourcesContent":["\n\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Protein, SubstanceDetail, SubstanceName } from '@gsrs-core/substance';\nimport { Subscription } from 'rxjs';\nimport { SubstanceFormService } from '@gsrs-core/substance-form/substance-form.service';\nimport { ScrollToService } from '@gsrs-core/scroll-to/scroll-to.service';\nimport { GoogleAnalyticsService } from '@gsrs-core/google-analytics';\nimport { ControlledVocabularyService, VocabularyTerm } from '@gsrs-core/controlled-vocabulary';\nimport { IDropdownSettings } from 'ng-multiselect-dropdown';\nimport { SubstanceFormBase } from '../base-classes/substance-form-base';\n\n@Component({\n selector: 'app-substance-form-protein-details',\n templateUrl: './substance-form-protein-details.component.html',\n styleUrls: ['./substance-form-protein-details.component.scss']\n})\n// eslint-disable-next-line max-len\nexport class SubstanceFormProteinDetailsComponent extends SubstanceFormBase implements OnInit, AfterViewInit, OnDestroy {\n\n protein: Protein;\n private subscriptions: Array = [];\n dropdownSettings: IDropdownSettings = {};\n constructor(\n private substanceFormService: SubstanceFormService,\n public gaService: GoogleAnalyticsService,\n public cvService: ControlledVocabularyService\n ) {\n super();\n this.analyticsEventCategory = 'substance form Protein Details';\n }\n\n ngOnInit() {\n this.menuLabelUpdate.emit('Protein Details');\n const substanceSubscription = this.substanceFormService.substance.subscribe(substance => {\n if (substance.protein == null) {\n // ### figure out why only proteinType takes forever to load causing a console error\n substance.protein = { proteinType: '' };\n }\n this.substanceFormService.resetState();\n this.protein = substance.protein;\n });\n this.subscriptions.push(substanceSubscription);\n this.dropdownSettings = {\n singleSelection: false, idField: 'value', textField: 'display', selectAllText: 'Select All',\n unSelectAllText: 'UnSelect All', itemsShowLimit: 3, allowSearchFilter: true\n };\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n updateAccess(access: Array): void {\n this.protein.access = access;\n }\n\n update(tags: Array): void {\n this.protein.proteinSubType = tags.join('|');\n }\n\n updateType(type: string): void {\n this.protein.proteinType = type;\n }\n\n updateSequenceType(type: string): void {\n this.protein.sequenceType = type;\n }\n\n updateOrigin(type: string): void {\n this.protein.sequenceOrigin = type;\n }\n\n pipeToArray(string: string): Array {\n if (!string || string === '') {\n return [];\n } else {\n return string.split('|');\n }\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DynamicComponentLoaderModule } from '../../dynamic-component-loader/dynamic-component-loader.module';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { SubstanceFormModule } from '../substance-form.module';\nimport { NameResolverModule } from '../../name-resolver/name-resolver.module';\nimport {SubstanceFormProteinDetailsComponent} from '@gsrs-core/substance-form/protein-details/substance-form-protein-details.component';\nimport {NgMultiSelectDropDownModule} from 'ng-multiselect-dropdown';\nimport {CvInputComponent} from '@gsrs-core/substance-form/cv-input/cv-input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DynamicComponentLoaderModule.forChild(SubstanceFormProteinDetailsComponent),\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatSelectModule,\n SubstanceFormModule,\n NameResolverModule,\n NgMultiSelectDropDownModule\n ],\n declarations: [\n SubstanceFormProteinDetailsComponent\n ]\n})\nexport class SubstanceFormProteinDetailsModule { }\n"],"sourceRoot":"webpack:///","file":"1935.05ca842702a9b3fd.js"}
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/221.7e26a14ac0bec123.js b/frontend/src/main/resources/static/221.4f3f00bc900d28b3.js
similarity index 62%
rename from frontend/src/main/resources/static/221.7e26a14ac0bec123.js
rename to frontend/src/main/resources/static/221.4f3f00bc900d28b3.js
index a33e422..2fc3496 100644
--- a/frontend/src/main/resources/static/221.7e26a14ac0bec123.js
+++ b/frontend/src/main/resources/static/221.4f3f00bc900d28b3.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[221],{20221:function(Cn,y,c){c.r(y),c.d(y,{SubstanceFormPhysicalModificationsModule:function(){return yn}});var u=c(48047),f=c(78069),d=c(36362),b=c(64061),T=c(7168),C=c(19975),v=c(65590),h=c(87317),F=c(94673),_=c(44770),m=c(90587),A=c(26439),x=c(43365),w=c(24582),I=c(7318),N=c(79550),J=c(40104),k=c(16830),n=c(76442),S=c(78444),U=c(51279),Y=(c(27299),c(18291)),M=c(63169),Q=c(33567),g=c(95758),q=c(33662),D=function(){var i=function(){function e(t){(0,f.Z)(this,e),this.utilsService=t}return(0,u.Z)(e,[{key:"ngOnInit",value:function(){}},{key:"parameter",get:function(){return this.privateParameter},set:function(o){this.privateParameter=o,this.privateParameter.amount||(this.privateParameter.amount={})}},{key:"isValid",get:function(){return null!=this.privateParameter.parameterName&&""!==this.privateParameter.parameterName}}]),e}();return i.\u0275fac=function(t){return new(t||i)(n.Y36(M.FW))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-physical-parameter-form"]],inputs:{parameter:"parameter"},decls:8,vars:2,consts:[[1,"parameter-form-container"],[1,"form-row"],[1,"name"],["matInput","","placeholder","Name","required","","name","name",3,"ngModel","ngModelChange"],[1,"amount-form-container"],[1,"amount-title"],[3,"substanceAmount"]],template:function(t,o){1&t&&(n.TgZ(0,"div",0),n.TgZ(1,"div",1),n.TgZ(2,"mat-form-field",2),n.TgZ(3,"input",3),n.NdJ("ngModelChange",function(s){return o.parameter.parameterName=s}),n.qZA(),n.qZA(),n.qZA(),n.TgZ(4,"div",4),n.TgZ(5,"div",5),n._uU(6,"Amount"),n.qZA(),n._UZ(7,"app-amount-form",6),n.qZA(),n.qZA()),2&t&&(n.xp6(3),n.Q6J("ngModel",o.parameter.parameterName),n.xp6(4),n.Q6J("substanceAmount",o.parameter.amount))},directives:[_.KE,x.Nt,m.Fj,m.Q7,m.JJ,m.On,q.f],styles:[".parameter-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative;display:-ms-flexbox;display:flex}.amount-title[_ngcontent-%COMP%]{margin-bottom:10px;font-weight:700}.amount-form-container[_ngcontent-%COMP%]{padding:0 7px}"]}),i}();function L(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div"),n._UZ(1,"app-physical-parameter-form",3,4),n.TgZ(3,"div",5),n._UZ(4,"span",6),n.TgZ(5,"button",7),n.NdJ("click",function(){return n.CHM(t),n.oxw().cancel()}),n._uU(6,"Cancel"),n.qZA(),n.TgZ(7,"button",8),n.NdJ("click",function(){return n.CHM(t),n.oxw().save()}),n._uU(8," Save "),n.qZA(),n.qZA(),n.qZA()}if(2&i){var o=n.MAs(2),a=n.oxw();n.xp6(1),n.Q6J("parameter",a.subsParameter),n.xp6(6),n.Q6J("disabled",!o||!o.isValid)}}var P=function(){var i=function(){function e(t,o){(0,f.Z)(this,e),this.dialogRef=t,this.subsParameter=o,this.isNew=Object.keys(o).length<1}return(0,u.Z)(e,[{key:"ngOnInit",value:function(){}},{key:"save",value:function(){this.dialogRef.close(this.subsParameter)}},{key:"cancel",value:function(){this.dialogRef.close()}}]),e}();return i.\u0275fac=function(t){return new(t||i)(n.Y36(g.so),n.Y36(g.WI))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-physical-parameter-form-dialog"]],decls:4,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[4,"ngIf"],[3,"parameter"],["parameterForm",""],[1,"actions"],[1,"middle-fill"],["mat-button","",3,"click"],["mat-button","",3,"disabled","click"]],template:function(t,o){1&t&&(n.TgZ(0,"h1",0),n._uU(1),n.qZA(),n.TgZ(2,"div",1),n.YNc(3,L,9,2,"div",2),n.qZA()),2&t&&(n.xp6(1),n.hij("",o.isNew?"Add":"Edit"," Parameter"),n.xp6(2),n.Q6J("ngIf",o.subsParameter))},directives:[g.uh,g.xY,d.O5,D,h.lW],styles:[""]}),i}(),j=c(66088),R=c(16667),Z=c(26131),$=c(84577),E=c(14900);function H(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div",19),n._uU(1," Deleted\xa0 "),n.TgZ(2,"button",20),n.NdJ("click",function(){return n.CHM(t),n.oxw().undoDelete()}),n._UZ(3,"mat-icon",21),n.qZA(),n.qZA()}}function z(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(1),n.AsE(" \xa0- \xa0 ",t.amount.average," \xa0 ",t.amount.units," ")}}function V(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0 - "),n.qZA())}function B(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," > "),n.qZA())}function W(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," < "),n.qZA())}function X(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.low," ")}}function G(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0to\xa0 "),n.qZA())}function K(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.high," ")}}function nn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" \xa0 ",t.amount.units," \xa0 (average) ")}}function tn(i,e){if(1&i&&(n.TgZ(0,"span"),n.YNc(1,V,2,0,"span",24),n._uU(2," \xa0 [ "),n.YNc(3,B,2,0,"span",24),n.YNc(4,W,2,0,"span",24),n.YNc(5,X,2,1,"span",24),n.YNc(6,G,2,0,"span",24),n.YNc(7,K,2,1,"span",24),n._uU(8," ] "),n.YNc(9,nn,2,1,"span",24),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(1),n.Q6J("ngIf",null==t.amount.average||""==t.amount.average),n.xp6(2),n.Q6J("ngIf",null==t.amount.high||""==t.amount.high),n.xp6(1),n.Q6J("ngIf",null==t.amount.low||""==t.amount.low),n.xp6(1),n.Q6J("ngIf",null!=t.amount.low&&""!=t.amount.low),n.xp6(1),n.Q6J("ngIf",null!=t.amount.low&&""!=t.amount.low&&null!=t.amount.high&&""!=t.amount.high),n.xp6(1),n.Q6J("ngIf",null!=t.amount.high&&""!=t.amount.high),n.xp6(2),n.Q6J("ngIf",null==t.amount.average||""==t.amount.average)}}function on(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0 (average) "),n.qZA())}function en(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," > "),n.qZA())}function an(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," < "),n.qZA())}function cn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.lowLimit," ")}}function sn(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0to\xa0 "),n.qZA())}function ln(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.highLimit," ")}}function rn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0- \xa0 [ "),n.YNc(2,en,2,0,"span",24),n.YNc(3,an,2,0,"span",24),n.YNc(4,cn,2,1,"span",24),n.YNc(5,sn,2,0,"span",24),n.YNc(6,ln,2,1,"span",24),n._uU(7," ] \xa0(limits) "),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(2),n.Q6J("ngIf",null==t.amount.highLimit||""==t.amount.highLimit),n.xp6(1),n.Q6J("ngIf",null==t.amount.lowLimit||""==t.amount.lowLimit),n.xp6(1),n.Q6J("ngIf",null!=t.amount.lowLimit&&""!=t.amount.lowLimit),n.xp6(1),n.Q6J("ngIf",null!=t.amount.lowLimit&&""!=t.amount.lowLimit&&null!=t.amount.highLimit&&""!=t.amount.highLimit),n.xp6(1),n.Q6J("ngIf",null!=t.amount.highLimit&&""!=t.amount.highLimit)}}function mn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(1),n.hij(" \xa0-\xa0 ",t.amount.nonNumericValue," ")}}function dn(i,e){if(1&i&&(n.TgZ(0,"span"),n.TgZ(1,"span"),n._uU(2),n.qZA(),n.YNc(3,z,2,2,"span",24),n.YNc(4,tn,10,7,"span",24),n.YNc(5,on,2,0,"span",24),n.YNc(6,rn,8,5,"span",24),n.YNc(7,mn,2,1,"span",24),n.qZA()),2&i){var t=n.oxw().$implicit;n.xp6(2),n.hij(" \xa0 ",t.amount.type," "),n.xp6(1),n.Q6J("ngIf",null!=t.amount.average&&""!=t.amount.average),n.xp6(1),n.Q6J("ngIf",null!=t.amount.low&&""!=t.amount.low||null!=t.amount.high&&""!=t.amount.high),n.xp6(1),n.Q6J("ngIf",null!=t.amount.average&&""!=t.amount.average),n.xp6(1),n.Q6J("ngIf",null!=t.amount.lowLimit&&""!=t.amount.lowLimit||null!=t.amount.highLimit&&""!=t.amount.highLimit),n.xp6(1),n.Q6J("ngIf",t.amount.nonNumericValue)}}function pn(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div",22),n.TgZ(1,"button",23),n.NdJ("click",function(){var l=n.CHM(t).index;return n.oxw().deleteParameter(l)}),n._UZ(2,"mat-icon",5),n.qZA(),n.TgZ(3,"span"),n._uU(4),n.qZA(),n.YNc(5,dn,8,6,"span",24),n.TgZ(6,"button",25),n.NdJ("click",function(){var l=n.CHM(t).$implicit;return n.oxw().openPropertyParameter(l)}),n._UZ(7,"mat-icon",26),n.qZA(),n.qZA()}if(2&i){var o=e.$implicit;n.xp6(4),n.Oqu(o.parameterName),n.xp6(1),n.Q6J("ngIf",null!=o.amount)}}function un(i,e){1&i&&(n.TgZ(0,"div",27),n.TgZ(1,"div"),n._uU(2,"*physical modifications require a modification role or parameter "),n.qZA(),n.qZA())}var fn=function(){var i=function(){function e(t,o,a,s,l){(0,f.Z)(this,e),this.cvService=t,this.dialog=o,this.utilsService=a,this.overlayContainerService=s,this.substanceFormService=l,this.modDeleted=new n.vpe,this.modTypeList=[],this.modRoleList=[],this.modProcessList=[],this.subscriptions=[],this.invalid=!1}return(0,u.Z)(e,[{key:"onFocusout",value:function(){if(this.privateMod.physicalModificationRole)this.invalid=!1;else{var o=!1;this.privateMod.parameters?(this.privateMod.parameters.forEach(function(a){a.amount.type&&(o=!0)}),this.invalid=!o):this.invalid=!0}}},{key:"onFocusin",value:function(){if(this.privateMod.physicalModificationRole)this.invalid=!1;else{var o=!1;this.privateMod.parameters?(this.privateMod.parameters.forEach(function(a){a.amount.type&&(o=!0)}),this.invalid=!o):this.invalid=!0}}},{key:"ngOnInit",value:function(){this.getVocabularies(),this.overlayContainer=this.overlayContainerService.getContainerElement()}},{key:"mod",get:function(){return this.privateMod},set:function(o){this.privateMod=o}},{key:"getVocabularies",value:function(){var o=this;this.cvService.getDomainVocabulary("PHYSICAL_MODIFICATION_ROLE").subscribe(function(a){o.modRoleList=a.PHYSICAL_MODIFICATION_ROLE.list})}},{key:"deleteMod",value:function(){var o=this;this.privateMod.$$deletedCode=this.utilsService.newUUID(),this.privateMod||(this.deleteTimer=setTimeout(function(){o.modDeleted.emit(o.mod),o.substanceFormService.emitOtherLinkUpdate()},1e3))}},{key:"undoDelete",value:function(){clearTimeout(this.deleteTimer),delete this.privateMod.$$deletedCode}},{key:"updateRequired",value:function(){if(this.privateMod.physicalModificationRole)this.invalid=!1;else{var o=!1;this.privateMod.parameters?(this.privateMod.parameters.forEach(function(a){a.amount.type&&(o=!0)}),this.invalid=!o):this.invalid=!0}}},{key:"updateAccess",value:function(o){this.mod.access=o}},{key:"openParameterDialog",value:function(){var o=this;this.mod.parameters||(this.mod.parameters=[]);var a=this.dialog.open(P,{data:this.mod.parameters,width:"1080px"});this.overlayContainer.style.zIndex="1002";var s=a.afterClosed().subscribe(function(l){o.overlayContainer.style.zIndex=null,l&&(o.mod.parameters=l)});this.subscriptions.push(s)}},{key:"updateRole",value:function(o){this.mod.physicalModificationRole=o,this.updateRequired()}},{key:"openPropertyParameter",value:function(o){var s,a=this;null==o&&(s=!0,o={amount:{}});var l=JSON.stringify(o),r=this.dialog.open(P,{data:JSON.parse(l),width:"1200px"});this.overlayContainer.style.zIndex="1002",r.afterClosed().subscribe(function(p){a.overlayContainer.style.zIndex=null,null!=p&&(null==a.mod.parameters&&(a.mod.parameters=[]),s?a.mod.parameters.unshift(p):Object.keys(p).forEach(function(O){o[O]=p[O]}),a.updateRequired())})}},{key:"deleteParameter",value:function(o){this.mod.parameters.splice(o,1)}},{key:"displayAmount",value:function(o){return this.utilsService.displayAmount(o)}}]),e}();return i.\u0275fac=function(t){return new(t||i)(n.Y36(Y.I),n.Y36(g.uw),n.Y36(M.FW),n.Y36(j.Xj),n.Y36(Q.B))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-physical-modification-form"]],hostBindings:function(t,o){1&t&&n.NdJ("focusout",function(){return o.onFocusout()})("focusin",function(){return o.onFocusin()})},inputs:{mod:"mod"},outputs:{modDeleted:"modDeleted"},decls:23,vars:7,consts:[[1,"physical-form-container"],["class","notification-backdrop",4,"ngIf"],[1,"form-row"],[1,"delete-container"],["mat-icon-button","","matTooltip","Delete name",3,"click"],["svgIcon","delete_forever"],["domain","PHYSICAL_MODIFICATION_ROLE","title","Modification Role",1,"type",3,"model","valueChange"],[1,"amount"],[1,"label","amt-label"],["mat-icon-button","","matTooltip","add / edit parameters",3,"click"],["svgIcon","add_circle_outline"],[1,"param-display"],["mat-list-item","",4,"ngFor","ngForOf"],[1,"group"],["matInput","","placeholder","Group","required","","name","group",3,"ngModel","ngModelChange"],[1,"access"],[3,"access","accessOut"],[3,"source"],["class","form-row invalid-note",4,"ngIf"],[1,"notification-backdrop"],["mat-icon-button","","matTooltip","Undo",3,"click"],["svgIcon","undo"],["mat-list-item",""],["mat-icon-button","",1,"parameter-delete-icon",3,"click"],[4,"ngIf"],["mat-icon-button","",1,"parameter-icon",3,"click"],["svgIcon","edit"],[1,"form-row","invalid-note"]],template:function(t,o){1&t&&(n.TgZ(0,"div",0),n.YNc(1,H,4,0,"div",1),n.TgZ(2,"div",2),n.TgZ(3,"div",3),n.TgZ(4,"button",4),n.NdJ("click",function(){return o.deleteMod()}),n._UZ(5,"mat-icon",5),n.qZA(),n.qZA(),n.TgZ(6,"app-cv-input",6),n.NdJ("valueChange",function(s){return o.updateRole(s)}),n.qZA(),n.TgZ(7,"div",7),n.TgZ(8,"div",8),n._uU(9," Parameters "),n.qZA(),n.TgZ(10,"button",9),n.NdJ("click",function(){return o.openPropertyParameter()}),n._UZ(11,"mat-icon",10),n.qZA(),n.TgZ(12,"div",11),n.TgZ(13,"mat-list"),n.YNc(14,pn,8,2,"div",12),n.qZA(),n.qZA(),n.qZA(),n.TgZ(15,"div"),n.TgZ(16,"mat-form-field",13),n.TgZ(17,"input",14),n.NdJ("ngModelChange",function(s){return o.mod.modificationGroup=s}),n.qZA(),n.qZA(),n.qZA(),n.TgZ(18,"div",15),n.TgZ(19,"app-access-manager",16),n.NdJ("accessOut",function(s){return o.updateAccess(s)}),n.qZA(),n.qZA(),n.qZA(),n.TgZ(20,"div",2),n._UZ(21,"app-audit-info",17),n.qZA(),n.YNc(22,un,3,0,"div",18),n.qZA()),2&t&&(n.xp6(1),n.Q6J("ngIf",o.mod.$$deletedCode),n.xp6(5),n.Q6J("model",o.mod.physicalModificationRole),n.xp6(8),n.Q6J("ngForOf",o.mod.parameters),n.xp6(3),n.Q6J("ngModel",o.mod.modificationGroup),n.xp6(2),n.Q6J("access",o.mod.access),n.xp6(2),n.Q6J("source",o.mod),n.xp6(1),n.Q6J("ngIf",o.invalid))},directives:[d.O5,h.lW,v.Hw,R.S,Z.i$,d.sg,_.KE,x.Nt,m.Fj,m.Q7,m.JJ,m.On,$.h,E.n],styles:[".physical-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative}.form-sub-row[_ngcontent-%COMP%]{max-width:90%}.related-substance[_ngcontent-%COMP%]{max-width:175px}.related-substance[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:150px}.form-row[_ngcontent-%COMP%] .code-system[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .code-system-type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .type[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1;padding-right:15px}.form-row[_ngcontent-%COMP%] .code-text[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .url[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.key-value-pair[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:start;align-self:flex-start}.key-value-pair[_ngcontent-%COMP%] .key[_ngcontent-%COMP%]{font-size:11px;padding-bottom:3.5px;line-height:11px;color:#0000008a;font-weight:400;font-family:Roboto,Helvetica Neue,sans-serif}.key-value-pair[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:15.5px}.references-container[_ngcontent-%COMP%]{width:100%}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:0 10px;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{padding-bottom:18px}.form-actions[_ngcontent-%COMP%]{-ms-flex-pack:start;justify-content:flex-start;margin:5px 0 10px}.form-content[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.mod-type[_ngcontent-%COMP%], .location-type[_ngcontent-%COMP%], .sites[_ngcontent-%COMP%], .group-access[_ngcontent-%COMP%]{width:33%}.extent[_ngcontent-%COMP%], .amount[_ngcontent-%COMP%]{width:40%}.group[_ngcontent-%COMP%]{width:85px}.type[_ngcontent-%COMP%]{max-width:225px}.access[_ngcontent-%COMP%]{width:30%}.name-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative}.notification-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;left:0;display:-ms-flexbox;display:flex;z-index:10;background-color:#fffc;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;font-size:30px;font-weight:700;color:#666}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .delete-container[_ngcontent-%COMP%]{padding:0 10px 8px 0}.form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%]{padding-bottom:18px}.form-row[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{padding-right:15px}.form-row[_ngcontent-%COMP%] .name[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .tags[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .domains[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .amount[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .param-display[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1;padding-right:15px}.form-row[_ngcontent-%COMP%] .jurisdiction[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.references-container[_ngcontent-%COMP%], .nameorgs-container[_ngcontent-%COMP%]{width:100%}.column-radio[_ngcontent-%COMP%] .mat-radio-label{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.column-radio[_ngcontent-%COMP%] .mat-radio-label-content{padding-left:0;font-size:11px;padding-bottom:4px;color:#0000008a;font-weight:400;font-family:Roboto,Helvetica Neue,sans-serif}.column-checkbox[_ngcontent-%COMP%] .mat-checkbox-layout{-ms-flex-direction:column-reverse;flex-direction:column-reverse;-ms-flex-align:center;align-items:center}.column-checkbox[_ngcontent-%COMP%] .mat-checkbox-inner-container{margin-right:unset;margin-left:unset}.column-checkbox[_ngcontent-%COMP%] .mat-checkbox-layout .mat-checkbox-label{padding-left:0;font-size:11px;padding-bottom:2px;color:#0000008a;font-weight:400;font-family:Roboto,Helvetica Neue,sans-serif}.amount[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;padding-bottom:10px}.amt-label[_ngcontent-%COMP%]{padding-top:11px}.param-display[_ngcontent-%COMP%]{padding-top:10px;width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.param-container[_ngcontent-%COMP%]{width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end;padding-bottom:7px;padding-top:7px}.param-container[_ngcontent-%COMP%] .param-display[_ngcontent-%COMP%]{max-width:40%;padding-right:15px}.param-container[_ngcontent-%COMP%] .param-amount[_ngcontent-%COMP%]{max-width:60%}.invalid-note[_ngcontent-%COMP%]{margin-top:5px;font-style:italic;font-size:14px;color:red}"]}),i}();function gn(i,e){1&i&&n._UZ(0,"mat-divider",7),2&i&&n.Q6J("inset",!0)}function hn(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div",4),n.TgZ(1,"app-physical-modification-form",5),n.NdJ("modDeleted",function(r){return n.CHM(t),n.oxw().deletePhysicalModification(r)}),n.qZA(),n.YNc(2,gn,1,1,"mat-divider",6),n.qZA()}if(2&i){var o=e.$implicit,a=e.last;n.Q6J("id","substance-physical-modification-"+e.index),n.xp6(1),n.Q6J("mod",o),n.xp6(1),n.Q6J("ngIf",!a)}}function vn(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"button",9),n.NdJ("click",function(){return n.CHM(t),n.oxw(2).addStructuralModification()}),n._uU(1," Add Modification "),n._UZ(2,"mat-icon",10),n.qZA()}}function _n(i,e){if(1&i&&(n.TgZ(0,"div",0),n._UZ(1,"span",1),n.YNc(2,vn,3,0,"button",8),n.qZA()),2&i){var t=n.oxw();n.xp6(2),n.Q6J("ngIf",t.modifications&&t.modifications.length>0)}}var xn=function(){var i=function(e){(0,w.Z)(o,e);var t=(0,I.Z)(o);function o(a,s,l){var r;return(0,f.Z)(this,o),(r=t.call(this,l)).substanceFormPhysicalModificationsService=a,r.scrollToService=s,r.gaService=l,r.subscriptions=[],r.analyticsEventCategory="substance form agent modifications",r}return(0,u.Z)(o,[{key:"ngOnInit",value:function(){this.canAddItemUpdate.emit(!0),this.menuLabelUpdate.emit("Physical Modifications")}},{key:"ngAfterViewInit",value:function(){var s=this,l=this.substanceFormPhysicalModificationsService.substancePhysicalModifications.subscribe(function(r){s.modifications=r});this.subscriptions.push(l)}},{key:"ngOnDestroy",value:function(){this.componentDestroyed.emit(),this.subscriptions.forEach(function(s){s.unsubscribe()})}},{key:"addItem",value:function(){this.addStructuralModification()}},{key:"addStructuralModification",value:function(){var s=this;this.substanceFormPhysicalModificationsService.addSubstancePhysicalModification(),setTimeout(function(){s.scrollToService.scrollToElement("substance-physical-modification-0","center")})}},{key:"deletePhysicalModification",value:function(s){this.substanceFormPhysicalModificationsService.deleteSubstancePhysicalModification(s)}}]),o}(N.u);return i.\u0275fac=function(t){return new(t||i)(n.Y36(k.q),n.Y36(S.i),n.Y36(J.$))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-substance-form-physical-modifications-card"]],features:[n.qOj],decls:4,vars:2,consts:[[1,"flex-row"],[1,"middle-fill"],["class","alternate-backgrounds","appScrollToTarget","",3,"id",4,"ngFor","ngForOf"],["class","flex-row",4,"ngIf"],["appScrollToTarget","",1,"alternate-backgrounds",3,"id"],[3,"mod","modDeleted"],["class","form-divider",3,"inset",4,"ngIf"],[1,"form-divider",3,"inset"],["mat-button","",3,"click",4,"ngIf"],["mat-button","",3,"click"],["svgIcon","add_circle_outline"]],template:function(t,o){1&t&&(n.TgZ(0,"div",0),n._UZ(1,"span",1),n.qZA(),n.YNc(2,hn,3,3,"div",2),n.YNc(3,_n,3,1,"div",3)),2&t&&(n.xp6(2),n.Q6J("ngForOf",o.modifications),n.xp6(1),n.Q6J("ngIf",o.modifications&&o.modifications.length>0))},directives:[d.sg,U.P,fn,d.O5,C.d,h.lW,v.Hw],styles:[".mat-divider.mat-divider-inset[_ngcontent-%COMP%]{margin-left:0}.substance-form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.mat-divider[_ngcontent-%COMP%]{border-top-color:#0000001f}.code[_ngcontent-%COMP%]:nth-child(odd){background-color:#448aff12}.code[_ngcontent-%COMP%]:nth-child(odd) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:#448aff26}.code[_ngcontent-%COMP%]:nth-child(even) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:#80808026}.code[_ngcontent-%COMP%] .mat-expansion-panel, .code[_ngcontent-%COMP%] .mat-table, .code[_ngcontent-%COMP%] textarea{background-color:transparent}"]}),i}(),yn=function(){var i=(0,u.Z)(function e(){(0,f.Z)(this,e)});return i.\u0275fac=function(t){return new(t||i)},i.\u0275mod=n.oAB({type:i}),i.\u0275inj=n.cJS({imports:[[d.ez,b.o.forChild(xn),T.O,C.t,v.Ps,h.ot,F.w,_.lN,m.UX,m.u5,A.TU,x.c,Z.ie]]}),i}()}}]);
-//# sourceMappingURL=221.7e26a14ac0bec123.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkgsrs_client=self.webpackChunkgsrs_client||[]).push([[221],{20221:function(Cn,y,c){c.r(y),c.d(y,{SubstanceFormPhysicalModificationsModule:function(){return yn}});var u=c(1884),f=c(39117),d=c(36362),O=c(64061),T=c(7168),C=c(19975),v=c(65590),h=c(87317),F=c(94673),_=c(44770),m=c(90587),A=c(26439),x=c(43365),w=c(46751),I=c(56101),N=c(79550),k=c(40104),J=c(16830),n=c(86613),S=c(78444),U=c(51279),Y=(c(27299),c(18291)),M=c(63169),Q=c(33567),g=c(95758),q=c(33662),D=function(){var i=function(){function e(t){(0,f.Z)(this,e),this.utilsService=t}return(0,u.Z)(e,[{key:"ngOnInit",value:function(){}},{key:"parameter",get:function(){return this.privateParameter},set:function(o){this.privateParameter=o,this.privateParameter.amount||(this.privateParameter.amount={})}},{key:"isValid",get:function(){return null!=this.privateParameter.parameterName&&""!==this.privateParameter.parameterName}}]),e}();return i.\u0275fac=function(t){return new(t||i)(n.Y36(M.FW))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-physical-parameter-form"]],inputs:{parameter:"parameter"},decls:8,vars:2,consts:[[1,"parameter-form-container"],[1,"form-row"],[1,"name"],["matInput","","placeholder","Name","required","","name","name",3,"ngModel","ngModelChange"],[1,"amount-form-container"],[1,"amount-title"],[3,"substanceAmount"]],template:function(t,o){1&t&&(n.TgZ(0,"div",0),n.TgZ(1,"div",1),n.TgZ(2,"mat-form-field",2),n.TgZ(3,"input",3),n.NdJ("ngModelChange",function(s){return o.parameter.parameterName=s}),n.qZA(),n.qZA(),n.qZA(),n.TgZ(4,"div",4),n.TgZ(5,"div",5),n._uU(6,"Amount"),n.qZA(),n._UZ(7,"app-amount-form",6),n.qZA(),n.qZA()),2&t&&(n.xp6(3),n.Q6J("ngModel",o.parameter.parameterName),n.xp6(4),n.Q6J("substanceAmount",o.parameter.amount))},directives:[_.KE,x.Nt,m.Fj,m.Q7,m.JJ,m.On,q.f],styles:[".parameter-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative;display:-ms-flexbox;display:flex}.amount-title[_ngcontent-%COMP%]{margin-bottom:10px;font-weight:700}.amount-form-container[_ngcontent-%COMP%]{padding:0 7px}"]}),i}();function L(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div"),n._UZ(1,"app-physical-parameter-form",3,4),n.TgZ(3,"div",5),n._UZ(4,"span",6),n.TgZ(5,"button",7),n.NdJ("click",function(){return n.CHM(t),n.oxw().cancel()}),n._uU(6,"Cancel"),n.qZA(),n.TgZ(7,"button",8),n.NdJ("click",function(){return n.CHM(t),n.oxw().save()}),n._uU(8," Save "),n.qZA(),n.qZA(),n.qZA()}if(2&i){var o=n.MAs(2),a=n.oxw();n.xp6(1),n.Q6J("parameter",a.subsParameter),n.xp6(6),n.Q6J("disabled",!o||!o.isValid)}}var P=function(){var i=function(){function e(t,o){(0,f.Z)(this,e),this.dialogRef=t,this.subsParameter=o,this.isNew=Object.keys(o).length<1}return(0,u.Z)(e,[{key:"ngOnInit",value:function(){}},{key:"save",value:function(){this.dialogRef.close(this.subsParameter)}},{key:"cancel",value:function(){this.dialogRef.close()}}]),e}();return i.\u0275fac=function(t){return new(t||i)(n.Y36(g.so),n.Y36(g.WI))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-physical-parameter-form-dialog"]],decls:4,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[4,"ngIf"],[3,"parameter"],["parameterForm",""],[1,"actions"],[1,"middle-fill"],["mat-button","",3,"click"],["mat-button","",3,"disabled","click"]],template:function(t,o){1&t&&(n.TgZ(0,"h1",0),n._uU(1),n.qZA(),n.TgZ(2,"div",1),n.YNc(3,L,9,2,"div",2),n.qZA()),2&t&&(n.xp6(1),n.hij("",o.isNew?"Add":"Edit"," Parameter"),n.xp6(2),n.Q6J("ngIf",o.subsParameter))},directives:[g.uh,g.xY,d.O5,D,h.lW],styles:[""]}),i}(),j=c(54244),R=c(16667),Z=c(26131),$=c(84577),E=c(14900);function H(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div",19),n._uU(1," Deleted\xa0 "),n.TgZ(2,"button",20),n.NdJ("click",function(){return n.CHM(t),n.oxw().undoDelete()}),n._UZ(3,"mat-icon",21),n.qZA(),n.qZA()}}function z(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(1),n.AsE(" \xa0- \xa0 ",t.amount.average," \xa0 ",t.amount.units," ")}}function V(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0 - "),n.qZA())}function B(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," > "),n.qZA())}function W(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," < "),n.qZA())}function X(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.low," ")}}function G(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0to\xa0 "),n.qZA())}function K(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.high," ")}}function nn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" \xa0 ",t.amount.units," \xa0 (average) ")}}function tn(i,e){if(1&i&&(n.TgZ(0,"span"),n.YNc(1,V,2,0,"span",24),n._uU(2," \xa0 [ "),n.YNc(3,B,2,0,"span",24),n.YNc(4,W,2,0,"span",24),n.YNc(5,X,2,1,"span",24),n.YNc(6,G,2,0,"span",24),n.YNc(7,K,2,1,"span",24),n._uU(8," ] "),n.YNc(9,nn,2,1,"span",24),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(1),n.Q6J("ngIf",null==t.amount.average||""==t.amount.average),n.xp6(2),n.Q6J("ngIf",null==t.amount.high||""==t.amount.high),n.xp6(1),n.Q6J("ngIf",null==t.amount.low||""==t.amount.low),n.xp6(1),n.Q6J("ngIf",null!=t.amount.low&&""!=t.amount.low),n.xp6(1),n.Q6J("ngIf",null!=t.amount.low&&""!=t.amount.low&&null!=t.amount.high&&""!=t.amount.high),n.xp6(1),n.Q6J("ngIf",null!=t.amount.high&&""!=t.amount.high),n.xp6(2),n.Q6J("ngIf",null==t.amount.average||""==t.amount.average)}}function on(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0 (average) "),n.qZA())}function en(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," > "),n.qZA())}function an(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," < "),n.qZA())}function cn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.lowLimit," ")}}function sn(i,e){1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0to\xa0 "),n.qZA())}function ln(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(3).$implicit;n.xp6(1),n.hij(" ",t.amount.highLimit," ")}}function rn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1," \xa0- \xa0 [ "),n.YNc(2,en,2,0,"span",24),n.YNc(3,an,2,0,"span",24),n.YNc(4,cn,2,1,"span",24),n.YNc(5,sn,2,0,"span",24),n.YNc(6,ln,2,1,"span",24),n._uU(7," ] \xa0(limits) "),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(2),n.Q6J("ngIf",null==t.amount.highLimit||""==t.amount.highLimit),n.xp6(1),n.Q6J("ngIf",null==t.amount.lowLimit||""==t.amount.lowLimit),n.xp6(1),n.Q6J("ngIf",null!=t.amount.lowLimit&&""!=t.amount.lowLimit),n.xp6(1),n.Q6J("ngIf",null!=t.amount.lowLimit&&""!=t.amount.lowLimit&&null!=t.amount.highLimit&&""!=t.amount.highLimit),n.xp6(1),n.Q6J("ngIf",null!=t.amount.highLimit&&""!=t.amount.highLimit)}}function mn(i,e){if(1&i&&(n.TgZ(0,"span"),n._uU(1),n.qZA()),2&i){var t=n.oxw(2).$implicit;n.xp6(1),n.hij(" \xa0-\xa0 ",t.amount.nonNumericValue," ")}}function dn(i,e){if(1&i&&(n.TgZ(0,"span"),n.TgZ(1,"span"),n._uU(2),n.qZA(),n.YNc(3,z,2,2,"span",24),n.YNc(4,tn,10,7,"span",24),n.YNc(5,on,2,0,"span",24),n.YNc(6,rn,8,5,"span",24),n.YNc(7,mn,2,1,"span",24),n.qZA()),2&i){var t=n.oxw().$implicit;n.xp6(2),n.hij(" \xa0 ",t.amount.type," "),n.xp6(1),n.Q6J("ngIf",null!=t.amount.average&&""!=t.amount.average),n.xp6(1),n.Q6J("ngIf",null!=t.amount.low&&""!=t.amount.low||null!=t.amount.high&&""!=t.amount.high),n.xp6(1),n.Q6J("ngIf",null!=t.amount.average&&""!=t.amount.average),n.xp6(1),n.Q6J("ngIf",null!=t.amount.lowLimit&&""!=t.amount.lowLimit||null!=t.amount.highLimit&&""!=t.amount.highLimit),n.xp6(1),n.Q6J("ngIf",t.amount.nonNumericValue)}}function pn(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div",22),n.TgZ(1,"button",23),n.NdJ("click",function(){var l=n.CHM(t).index;return n.oxw().deleteParameter(l)}),n._UZ(2,"mat-icon",5),n.qZA(),n.TgZ(3,"span"),n._uU(4),n.qZA(),n.YNc(5,dn,8,6,"span",24),n.TgZ(6,"button",25),n.NdJ("click",function(){var l=n.CHM(t).$implicit;return n.oxw().openPropertyParameter(l)}),n._UZ(7,"mat-icon",26),n.qZA(),n.qZA()}if(2&i){var o=e.$implicit;n.xp6(4),n.Oqu(o.parameterName),n.xp6(1),n.Q6J("ngIf",null!=o.amount)}}function un(i,e){1&i&&(n.TgZ(0,"div",27),n.TgZ(1,"div"),n._uU(2,"*physical modifications require a modification role or parameter "),n.qZA(),n.qZA())}var fn=function(){var i=function(){function e(t,o,a,s,l){(0,f.Z)(this,e),this.cvService=t,this.dialog=o,this.utilsService=a,this.overlayContainerService=s,this.substanceFormService=l,this.modDeleted=new n.vpe,this.modTypeList=[],this.modRoleList=[],this.modProcessList=[],this.subscriptions=[],this.invalid=!1}return(0,u.Z)(e,[{key:"onFocusout",value:function(){if(this.privateMod.physicalModificationRole)this.invalid=!1;else{var o=!1;this.privateMod.parameters?(this.privateMod.parameters.forEach(function(a){a.amount.type&&(o=!0)}),this.invalid=!o):this.invalid=!0}}},{key:"onFocusin",value:function(){if(this.privateMod.physicalModificationRole)this.invalid=!1;else{var o=!1;this.privateMod.parameters?(this.privateMod.parameters.forEach(function(a){a.amount.type&&(o=!0)}),this.invalid=!o):this.invalid=!0}}},{key:"ngOnInit",value:function(){this.getVocabularies(),this.overlayContainer=this.overlayContainerService.getContainerElement()}},{key:"mod",get:function(){return this.privateMod},set:function(o){this.privateMod=o}},{key:"getVocabularies",value:function(){var o=this;this.cvService.getDomainVocabulary("PHYSICAL_MODIFICATION_ROLE").subscribe(function(a){o.modRoleList=a.PHYSICAL_MODIFICATION_ROLE.list})}},{key:"deleteMod",value:function(){var o=this;this.privateMod.$$deletedCode=this.utilsService.newUUID(),this.privateMod||(this.deleteTimer=setTimeout(function(){o.modDeleted.emit(o.mod),o.substanceFormService.emitOtherLinkUpdate()},1e3))}},{key:"undoDelete",value:function(){clearTimeout(this.deleteTimer),delete this.privateMod.$$deletedCode}},{key:"updateRequired",value:function(){if(this.privateMod.physicalModificationRole)this.invalid=!1;else{var o=!1;this.privateMod.parameters?(this.privateMod.parameters.forEach(function(a){a.amount.type&&(o=!0)}),this.invalid=!o):this.invalid=!0}}},{key:"updateAccess",value:function(o){this.mod.access=o}},{key:"openParameterDialog",value:function(){var o=this;this.mod.parameters||(this.mod.parameters=[]);var a=this.dialog.open(P,{data:this.mod.parameters,width:"1080px"});this.overlayContainer.style.zIndex="1002";var s=a.afterClosed().subscribe(function(l){o.overlayContainer.style.zIndex=null,l&&(o.mod.parameters=l)});this.subscriptions.push(s)}},{key:"updateRole",value:function(o){this.mod.physicalModificationRole=o,this.updateRequired()}},{key:"openPropertyParameter",value:function(o){var s,a=this;null==o&&(s=!0,o={amount:{}});var l=JSON.stringify(o),r=this.dialog.open(P,{data:JSON.parse(l),width:"1200px"});this.overlayContainer.style.zIndex="1002",r.afterClosed().subscribe(function(p){a.overlayContainer.style.zIndex=null,null!=p&&(null==a.mod.parameters&&(a.mod.parameters=[]),s?a.mod.parameters.unshift(p):Object.keys(p).forEach(function(b){o[b]=p[b]}),a.updateRequired())})}},{key:"deleteParameter",value:function(o){this.mod.parameters.splice(o,1)}},{key:"displayAmount",value:function(o){return this.utilsService.displayAmount(o)}}]),e}();return i.\u0275fac=function(t){return new(t||i)(n.Y36(Y.I),n.Y36(g.uw),n.Y36(M.FW),n.Y36(j.Xj),n.Y36(Q.B))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-physical-modification-form"]],hostBindings:function(t,o){1&t&&n.NdJ("focusout",function(){return o.onFocusout()})("focusin",function(){return o.onFocusin()})},inputs:{mod:"mod"},outputs:{modDeleted:"modDeleted"},decls:23,vars:7,consts:[[1,"physical-form-container"],["class","notification-backdrop",4,"ngIf"],[1,"form-row"],[1,"delete-container"],["mat-icon-button","","matTooltip","Delete name",3,"click"],["svgIcon","delete_forever"],["domain","PHYSICAL_MODIFICATION_ROLE","title","Modification Role",1,"type",3,"model","valueChange"],[1,"amount"],[1,"label","amt-label"],["mat-icon-button","","matTooltip","add / edit parameters",3,"click"],["svgIcon","add_circle_outline"],[1,"param-display"],["mat-list-item","",4,"ngFor","ngForOf"],[1,"group"],["matInput","","placeholder","Group","required","","name","group",3,"ngModel","ngModelChange"],[1,"access"],[3,"access","accessOut"],[3,"source"],["class","form-row invalid-note",4,"ngIf"],[1,"notification-backdrop"],["mat-icon-button","","matTooltip","Undo",3,"click"],["svgIcon","undo"],["mat-list-item",""],["mat-icon-button","",1,"parameter-delete-icon",3,"click"],[4,"ngIf"],["mat-icon-button","",1,"parameter-icon",3,"click"],["svgIcon","edit"],[1,"form-row","invalid-note"]],template:function(t,o){1&t&&(n.TgZ(0,"div",0),n.YNc(1,H,4,0,"div",1),n.TgZ(2,"div",2),n.TgZ(3,"div",3),n.TgZ(4,"button",4),n.NdJ("click",function(){return o.deleteMod()}),n._UZ(5,"mat-icon",5),n.qZA(),n.qZA(),n.TgZ(6,"app-cv-input",6),n.NdJ("valueChange",function(s){return o.updateRole(s)}),n.qZA(),n.TgZ(7,"div",7),n.TgZ(8,"div",8),n._uU(9," Parameters "),n.qZA(),n.TgZ(10,"button",9),n.NdJ("click",function(){return o.openPropertyParameter()}),n._UZ(11,"mat-icon",10),n.qZA(),n.TgZ(12,"div",11),n.TgZ(13,"mat-list"),n.YNc(14,pn,8,2,"div",12),n.qZA(),n.qZA(),n.qZA(),n.TgZ(15,"div"),n.TgZ(16,"mat-form-field",13),n.TgZ(17,"input",14),n.NdJ("ngModelChange",function(s){return o.mod.modificationGroup=s}),n.qZA(),n.qZA(),n.qZA(),n.TgZ(18,"div",15),n.TgZ(19,"app-access-manager",16),n.NdJ("accessOut",function(s){return o.updateAccess(s)}),n.qZA(),n.qZA(),n.qZA(),n.TgZ(20,"div",2),n._UZ(21,"app-audit-info",17),n.qZA(),n.YNc(22,un,3,0,"div",18),n.qZA()),2&t&&(n.xp6(1),n.Q6J("ngIf",o.mod.$$deletedCode),n.xp6(5),n.Q6J("model",o.mod.physicalModificationRole),n.xp6(8),n.Q6J("ngForOf",o.mod.parameters),n.xp6(3),n.Q6J("ngModel",o.mod.modificationGroup),n.xp6(2),n.Q6J("access",o.mod.access),n.xp6(2),n.Q6J("source",o.mod),n.xp6(1),n.Q6J("ngIf",o.invalid))},directives:[d.O5,h.lW,v.Hw,R.S,Z.i$,d.sg,_.KE,x.Nt,m.Fj,m.Q7,m.JJ,m.On,$.h,E.n],styles:[".physical-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative}.form-sub-row[_ngcontent-%COMP%]{max-width:90%}.related-substance[_ngcontent-%COMP%]{max-width:175px}.related-substance[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:150px}.form-row[_ngcontent-%COMP%] .code-system[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .code-system-type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .type[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1;padding-right:15px}.form-row[_ngcontent-%COMP%] .code-text[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .url[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.key-value-pair[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:start;align-self:flex-start}.key-value-pair[_ngcontent-%COMP%] .key[_ngcontent-%COMP%]{font-size:11px;padding-bottom:3.5px;line-height:11px;color:var(--dark-label-color);font-weight:400;font-family:Roboto,Helvetica Neue,sans-serif}.key-value-pair[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:15.5px}.references-container[_ngcontent-%COMP%]{width:100%}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:0 10px;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{padding-bottom:18px}.form-actions[_ngcontent-%COMP%]{-ms-flex-pack:start;justify-content:flex-start;margin:5px 0 10px}.form-content[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.mod-type[_ngcontent-%COMP%], .location-type[_ngcontent-%COMP%], .sites[_ngcontent-%COMP%], .group-access[_ngcontent-%COMP%]{width:33%}.extent[_ngcontent-%COMP%], .amount[_ngcontent-%COMP%]{width:40%}.group[_ngcontent-%COMP%]{width:85px}.type[_ngcontent-%COMP%]{max-width:225px}.access[_ngcontent-%COMP%]{width:30%}.name-form-container[_ngcontent-%COMP%]{padding:30px 10px 12px;position:relative}.notification-backdrop[_ngcontent-%COMP%]{position:absolute;inset:0;display:-ms-flexbox;display:flex;z-index:10;background-color:var(--notif-backdrop-bg-color);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;font-size:30px;font-weight:700;color:var(--notif-backdrop-color)}.form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end}.form-row[_ngcontent-%COMP%] .delete-container[_ngcontent-%COMP%]{padding:0 10px 8px 0}.form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%]{padding-bottom:18px}.form-row[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{padding-right:15px}.form-row[_ngcontent-%COMP%] .name[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .tags[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .domains[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .type[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .amount[_ngcontent-%COMP%], .form-row[_ngcontent-%COMP%] .param-display[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1;padding-right:15px}.form-row[_ngcontent-%COMP%] .jurisdiction[_ngcontent-%COMP%]{-ms-flex-positive:1;flex-grow:1}.references-container[_ngcontent-%COMP%], .nameorgs-container[_ngcontent-%COMP%]{width:100%}.column-radio[_ngcontent-%COMP%] .mat-radio-label{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.column-radio[_ngcontent-%COMP%] .mat-radio-label-content{padding-left:0;font-size:11px;padding-bottom:4px;color:var(--dark-label-color);font-weight:400;font-family:Roboto,Helvetica Neue,sans-serif}.column-checkbox[_ngcontent-%COMP%] .mat-checkbox-layout{-ms-flex-direction:column-reverse;flex-direction:column-reverse;-ms-flex-align:center;align-items:center}.column-checkbox[_ngcontent-%COMP%] .mat-checkbox-inner-container{margin-right:unset;margin-left:unset}.column-checkbox[_ngcontent-%COMP%] .mat-checkbox-layout .mat-checkbox-label{padding-left:0;font-size:11px;padding-bottom:2px;color:var(--dark-label-color);font-weight:400;font-family:Roboto,Helvetica Neue,sans-serif}.amount[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;padding-bottom:10px}.amt-label[_ngcontent-%COMP%]{padding-top:11px}.param-display[_ngcontent-%COMP%]{padding-top:10px;width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.param-container[_ngcontent-%COMP%]{width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end;padding-bottom:7px;padding-top:7px}.param-container[_ngcontent-%COMP%] .param-display[_ngcontent-%COMP%]{max-width:40%;padding-right:15px}.param-container[_ngcontent-%COMP%] .param-amount[_ngcontent-%COMP%]{max-width:60%}.invalid-note[_ngcontent-%COMP%]{margin-top:5px;font-style:italic;font-size:14px;color:var(--regular-red-color)}"]}),i}();function gn(i,e){1&i&&n._UZ(0,"mat-divider",7),2&i&&n.Q6J("inset",!0)}function hn(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"div",4),n.TgZ(1,"app-physical-modification-form",5),n.NdJ("modDeleted",function(r){return n.CHM(t),n.oxw().deletePhysicalModification(r)}),n.qZA(),n.YNc(2,gn,1,1,"mat-divider",6),n.qZA()}if(2&i){var o=e.$implicit,a=e.last;n.Q6J("id","substance-physical-modification-"+e.index),n.xp6(1),n.Q6J("mod",o),n.xp6(1),n.Q6J("ngIf",!a)}}function vn(i,e){if(1&i){var t=n.EpF();n.TgZ(0,"button",9),n.NdJ("click",function(){return n.CHM(t),n.oxw(2).addStructuralModification()}),n._uU(1," Add Modification "),n._UZ(2,"mat-icon",10),n.qZA()}}function _n(i,e){if(1&i&&(n.TgZ(0,"div",0),n._UZ(1,"span",1),n.YNc(2,vn,3,0,"button",8),n.qZA()),2&i){var t=n.oxw();n.xp6(2),n.Q6J("ngIf",t.modifications&&t.modifications.length>0)}}var xn=function(){var i=function(e){(0,w.Z)(o,e);var t=(0,I.Z)(o);function o(a,s,l){var r;return(0,f.Z)(this,o),(r=t.call(this,l)).substanceFormPhysicalModificationsService=a,r.scrollToService=s,r.gaService=l,r.subscriptions=[],r.analyticsEventCategory="substance form agent modifications",r}return(0,u.Z)(o,[{key:"ngOnInit",value:function(){this.canAddItemUpdate.emit(!0),this.menuLabelUpdate.emit("Physical Modifications")}},{key:"ngAfterViewInit",value:function(){var s=this,l=this.substanceFormPhysicalModificationsService.substancePhysicalModifications.subscribe(function(r){s.modifications=r});this.subscriptions.push(l)}},{key:"ngOnDestroy",value:function(){this.componentDestroyed.emit(),this.subscriptions.forEach(function(s){s.unsubscribe()})}},{key:"addItem",value:function(){this.addStructuralModification()}},{key:"addStructuralModification",value:function(){var s=this;this.substanceFormPhysicalModificationsService.addSubstancePhysicalModification(),setTimeout(function(){s.scrollToService.scrollToElement("substance-physical-modification-0","center")})}},{key:"deletePhysicalModification",value:function(s){this.substanceFormPhysicalModificationsService.deleteSubstancePhysicalModification(s)}}]),o}(N.u);return i.\u0275fac=function(t){return new(t||i)(n.Y36(J.q),n.Y36(S.i),n.Y36(k.$))},i.\u0275cmp=n.Xpm({type:i,selectors:[["app-substance-form-physical-modifications-card"]],features:[n.qOj],decls:4,vars:2,consts:[[1,"flex-row"],[1,"middle-fill"],["class","alternate-backgrounds","appScrollToTarget","",3,"id",4,"ngFor","ngForOf"],["class","flex-row",4,"ngIf"],["appScrollToTarget","",1,"alternate-backgrounds",3,"id"],[3,"mod","modDeleted"],["class","form-divider",3,"inset",4,"ngIf"],[1,"form-divider",3,"inset"],["mat-button","",3,"click",4,"ngIf"],["mat-button","",3,"click"],["svgIcon","add_circle_outline"]],template:function(t,o){1&t&&(n.TgZ(0,"div",0),n._UZ(1,"span",1),n.qZA(),n.YNc(2,hn,3,3,"div",2),n.YNc(3,_n,3,1,"div",3)),2&t&&(n.xp6(2),n.Q6J("ngForOf",o.modifications),n.xp6(1),n.Q6J("ngIf",o.modifications&&o.modifications.length>0))},directives:[d.sg,U.P,fn,d.O5,C.d,h.lW,v.Hw],styles:[".mat-divider.mat-divider-inset[_ngcontent-%COMP%]{margin-left:0}.substance-form-row[_ngcontent-%COMP%]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.mat-divider[_ngcontent-%COMP%]{border-top-color:var(--box-shadow-color-3)}.code[_ngcontent-%COMP%]:nth-child(odd){background-color:var(--nth-child-color-2)}.code[_ngcontent-%COMP%]:nth-child(odd) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:var(--nth-child-color-3)}.code[_ngcontent-%COMP%]:nth-child(even) .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background-color:var(--nth-child-color-1)}.code[_ngcontent-%COMP%] .mat-expansion-panel, .code[_ngcontent-%COMP%] .mat-table, .code[_ngcontent-%COMP%] textarea{background-color:var(--regular-transparent-color)}"]}),i}(),yn=function(){var i=(0,u.Z)(function e(){(0,f.Z)(this,e)});return i.\u0275fac=function(t){return new(t||i)},i.\u0275mod=n.oAB({type:i}),i.\u0275inj=n.cJS({imports:[[d.ez,O.o.forChild(xn),T.O,C.t,v.Ps,h.ot,F.w,_.lN,m.UX,m.u5,A.TU,x.c,Z.ie]]}),i}()}}]);
+//# sourceMappingURL=221.4f3f00bc900d28b3.js.map
\ No newline at end of file
diff --git a/frontend/src/main/resources/static/221.7e26a14ac0bec123.js.map b/frontend/src/main/resources/static/221.4f3f00bc900d28b3.js.map
similarity index 99%
rename from frontend/src/main/resources/static/221.7e26a14ac0bec123.js.map
rename to frontend/src/main/resources/static/221.4f3f00bc900d28b3.js.map
index ea93aa1..baec345 100644
--- a/frontend/src/main/resources/static/221.7e26a14ac0bec123.js.map
+++ b/frontend/src/main/resources/static/221.4f3f00bc900d28b3.js.map
@@ -1 +1 @@
-{"version":3,"mappings":"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","names":["PhysicalParameterFormComponent","utilsService","this","privateParameter","set","parameter","amount","parameterName","e","i0","selectors","ctx_r2","ctx_r4","PhysicalParameterFormDialogComponent","dialogRef","subsParameter","isNew","Object","keys","length","close","MAT_DIALOG_DATA","ctx_r3","ctx_r35","ctx_r37","PhysicalModificationFormComponent","cvService","dialog","overlayContainerService","substanceFormService","EventEmitter","privateMod","physicalModificationRole","invalid","present","parameters","forEach","param","type","getVocabularies","overlayContainer","getContainerElement","mod","getDomainVocabulary","subscribe","o","modRoleList","response","PHYSICAL_MODIFICATION_ROLE","list","$$deletedCode","newUUID","deleteTimer","setTimeout","modDeleted","emit","emitOtherLinkUpdate","clearTimeout","access","open","data","width","style","zIndex","dialogSubscription","afterClosed","newParams","subscriptions","push","event","updateRequired","a","parameterCopyString","JSON","stringify","parse","newParameter","s","unshift","key","id","splice","amt","displayAmount","ctx","ctx_r6","ctx_r9","SubstanceFormPhysicalModificationsCardComponent","substanceFormPhysicalModificationsService","scrollToService","gaService","r","analyticsEventCategory","canAddItemUpdate","menuLabelUpdate","physicalSubscription","substancePhysicalModifications","modifications","componentDestroyed","subscription","unsubscribe","addStructuralModification","addSubstancePhysicalModification","scrollToElement","modification","deleteSubstancePhysicalModification","SubstanceCardBaseFilteredList","SubstanceFormPhysicalModificationsModule","u","CommonModule","DynamicComponentLoaderModule","SubstanceFormModule","MatDividerModule","MatIconModule","MatButtonModule","ScrollToModule","MatFormFieldModule","ReactiveFormsModule","FormsModule","MatPaginatorModule","MatInputModule","MatListModule"],"sources":["./src/app/core/substance-form/physical-parameter-form/physical-parameter-form.component.ts","./src/app/core/substance-form/physical-parameter-form/physical-parameter-form.component.html","./src/app/core/substance-form/physical-parameter-form-dialog/physical-parameter-form-dialog.component.html","./src/app/core/substance-form/physical-parameter-form-dialog/physical-parameter-form-dialog.component.ts","./src/app/core/substance-form/physical-modifications/physical-modification-form.component.html","./src/app/core/substance-form/physical-modifications/physical-modification-form.component.ts","./src/app/core/substance-form/physical-modifications/substance-form-physical-modifications-card.component.html","./src/app/core/substance-form/physical-modifications/substance-form-physical-modifications-card.component.ts","./src/app/core/substance-form/physical-modifications/substance-form-physical-modifications.module.ts"],"sourcesContent":["import {Component, Input, OnInit} from '@angular/core';\nimport {PhysicalModificationParameter, SubstanceAmount, SubstanceParameter} from '@gsrs-core/substance';\nimport {UtilsService} from '@gsrs-core/utils';\n\n@Component({\n selector: 'app-physical-parameter-form',\n templateUrl: './physical-parameter-form.component.html',\n styleUrls: ['./physical-parameter-form.component.scss']\n})\nexport class PhysicalParameterFormComponent implements OnInit {\n private privateParameter: PhysicalModificationParameter;\n constructor(\n private utilsService: UtilsService) { }\n\n ngOnInit() {\n }\n\n @Input()\n set parameter(parameter: PhysicalModificationParameter) {\n this.privateParameter = parameter;\n if ( !this.privateParameter.amount) {\n this.privateParameter.amount = {};\n }\n }\n\n get parameter(): PhysicalModificationParameter {\n return this.privateParameter;\n }\n\n get isValid(): boolean {\n return (this.privateParameter.parameterName != null && this.privateParameter.parameterName !== '');\n }\n}\n","\n","{{isNew ? 'Add' : 'Edit'}} Parameter
\n\n
\n
\n \n
\n \n \n \n
\n
\n
\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {PhysicalModificationParameter, SubstanceParameter} from '@gsrs-core/substance';\n\n@Component({\n selector: 'app-physical-parameter-form-dialog',\n templateUrl: './physical-parameter-form-dialog.component.html',\n styleUrls: ['./physical-parameter-form-dialog.component.scss']\n})\nexport class PhysicalParameterFormDialogComponent implements OnInit {\n isNew: boolean;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public subsParameter: PhysicalModificationParameter\n ) {\n this.isNew = Object.keys(subsParameter).length < 1;\n }\n\n ngOnInit() {\n }\n\n save(): void {\n this.dialogRef.close(this.subsParameter);\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n}\n","