diff --git a/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.html b/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.html index e3b7a06a1..c9c0bab4e 100644 --- a/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.html +++ b/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.html @@ -114,39 +114,10 @@ filterTitle; context: { $implicit: 'Participating User', value: userId() } "> - - - - - - - - {{ selected.nzLabel }} - - + } @@ -160,43 +131,14 @@ value: organizationId(), } "> - - - - - - - - {{ selected.nzLabel }} - - + } Sort Direction - diff --git a/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.ts b/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.ts index 50ca82ed9..4a52b14ed 100644 --- a/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.ts +++ b/client/src/app/components/activities/activity-feed/feed-filters/feed-filters.component.ts @@ -27,6 +27,9 @@ import { DateSortColumns, Maybe, SortDirection, + UserFilterSearchGQL, + UserFilterSearchQuery, + UserFilterSearchQueryVariables, } from '@app/generated/civic.apollo' import { CommonModule, KeyValuePipe } from '@angular/common' import { FormsModule } from '@angular/forms' @@ -40,12 +43,19 @@ import { disableDates } from '../activity-feed.functions' import { toObservable, toSignal } from '@angular/core/rxjs-interop' import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy' import { tag } from 'rxjs-spy/operators' -import { distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators' -import { timer, filter, of } from 'rxjs' -import { isNonNullObject } from '@apollo/client/utilities' +import { + distinctUntilChanged, + map, + skip, + startWith, + switchMap, +} from 'rxjs/operators' +import { timer, filter, of, Subject, from } from 'rxjs' import { isNonNulled } from 'rxjs-etc' import { NzButtonModule } from 'ng-zorro-antd/button' import { NzAlertModule } from 'ng-zorro-antd/alert' +import { CvcUserFilterSelect } from './user-filter-select/user-filter-select.component' +import { CvcOrgFilterSelect } from './org-filter-select/org-filter-select.component' export const defaultFilters = {} @@ -65,6 +75,8 @@ export const defaultFilters = {} NzSelectModule, NzDatePickerModule, CvcPipesModule, + CvcUserFilterSelect, + CvcOrgFilterSelect, ], templateUrl: './feed-filters.component.html', styleUrls: ['./feed-filters.component.less'], @@ -118,7 +130,17 @@ export class CvcActivityFeedFilterSelects implements OnInit { sortByDirection: this.sortByDirection(), }) }) - + /** + * Observable that emits the count of new activities since the last refresh. + * + * Behavior: + * - Only activates if cvcCheckInterval > 0, else emits 0 + * - Polls the API at the specified interval (cvcCheckInterval in seconds) + * - Uses the current filter settings but only looks for activities after the last refresh + * - Emits 0 initially and then the count of new activities + * - Only emits when the count changes (uses distinctUntilChanged) + * - Resets to 0 when filters change via cvcRefreshChanges + */ const newActivities$ = toObservable(this.cvcRefreshChanges).pipe( filter(isNonNulled), switchMap((refetchEvent) => { @@ -151,6 +173,7 @@ export class CvcActivityFeedFilterSelects implements OnInit { ) this.newActivities = toSignal(newActivities$, { initialValue: 0 }) } + ngOnInit(): void { this.eventType = signal(this.cvcFilters().activityType) this.subjectType = signal(this.cvcFilters().subjectType) diff --git a/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.html b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.html new file mode 100644 index 000000000..1b88c434c --- /dev/null +++ b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.html @@ -0,0 +1,42 @@ + + + + + + + + + + {{ selected.nzLabel }} + + + + No organizationsfound matching "{{ onSearch() }}" + diff --git a/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.less b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.less new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.ts b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.ts new file mode 100644 index 000000000..c69067b12 --- /dev/null +++ b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.component.ts @@ -0,0 +1,70 @@ +import { Component, input, model, Signal } from '@angular/core' +import { ActivityFeedFilterOptions } from '../../activity-feed.types' +import { CvcPipesModule } from '@app/core/pipes/pipes.module' +import { CommonModule } from '@angular/common' +import { NzSelectModule } from 'ng-zorro-antd/select' +import { NzIconModule } from 'ng-zorro-antd/icon' +import { FormsModule } from '@angular/forms' +import { + BrowseOrganization, + Organization, + OrgFilterSearchGQL, + OrgFilterSearchQuery, + OrgFilterSearchQueryVariables, +} from '@app/generated/civic.apollo' +import { from, map, Subject, switchMap } from 'rxjs' +import { QueryRef } from 'apollo-angular' +import { tag } from 'rxjs-spy/operators' +import { toSignal } from '@angular/core/rxjs-interop' + +@Component({ + selector: 'cvc-org-filter-select', + standalone: true, + imports: [ + CommonModule, + FormsModule, + NzIconModule, + NzSelectModule, + CvcPipesModule, + ], + templateUrl: './org-filter-select.component.html', + styleUrl: './org-filter-select.component.less', +}) +export class CvcOrgFilterSelect { + cvcParticipatingOrganizations = + input.required() + cvcOrganizationId = model.required() + + onSearch$: Subject + onSearch: Signal + queryRef!: QueryRef + filteredOrganizations: Signal + + constructor(private gql: OrgFilterSearchGQL) { + this.onSearch$ = new Subject() + const filteredOrganizations$ = this.onSearch$.pipe( + tag(`filteredOrganizations$`), + switchMap((nameStr) => { + const query = { name: nameStr, first: 25 } + if (this.queryRef) { + const refetch = this.queryRef.refetch({ name: nameStr }) + return from(refetch) + } else { + this.queryRef = this.gql.watch({ name: nameStr }) + return this.queryRef.valueChanges + } + }), + map( + (result) => + result.data?.organizations.edges.map( + (e) => e.node! as BrowseOrganization + ) ?? [] + ), + tag(`${this.constructor.name} filteredOrganizations$ after`) + ) + this.filteredOrganizations = toSignal(filteredOrganizations$, { + initialValue: [], + }) + this.onSearch = toSignal(this.onSearch$, { initialValue: '' }) + } +} diff --git a/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.query.gql b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.query.gql new file mode 100644 index 000000000..6aa74b8dc --- /dev/null +++ b/client/src/app/components/activities/activity-feed/feed-filters/org-filter-select/org-filter-select.query.gql @@ -0,0 +1,16 @@ +query OrgFilterSearch($name: String) { + organizations(name: $name) { + pageInfo { + endCursor + hasNextPage + hasPreviousPage + startCursor + } + edges { + node { + id + name + } + } + } +} diff --git a/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.html b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.html new file mode 100644 index 000000000..e2bde4797 --- /dev/null +++ b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.html @@ -0,0 +1,43 @@ + + + + + + + + + + {{ selected.nzLabel }} + + + + No users found matching "{{ onSearch() }}" + diff --git a/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.less b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.less new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.ts b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.ts new file mode 100644 index 000000000..81142cdf4 --- /dev/null +++ b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.component.ts @@ -0,0 +1,78 @@ +import { + Component, + input, + model, + output, + Signal, + WritableSignal, +} from '@angular/core' +import { ActivityFeedFilterOptions } from '../../activity-feed.types' +import { NzSelectModule } from 'ng-zorro-antd/select' +import { FormsModule } from '@angular/forms' +import { CvcPipesModule } from '@app/core/pipes/pipes.module' +import { NzIconModule } from 'ng-zorro-antd/icon' +import { CommonModule } from '@angular/common' +import { from, map, skip, startWith, Subject, switchMap } from 'rxjs' +import { + BrowseUser, + User, + UserFilterSearchGQL, + UserFilterSearchQuery, + UserFilterSearchQueryVariables, +} from '@app/generated/civic.apollo' +import { QueryRef } from 'apollo-angular' +import { tag } from 'rxjs-spy/operators' +import { toSignal } from '@angular/core/rxjs-interop' + +@Component({ + selector: 'cvc-user-filter-select', + standalone: true, + imports: [ + CommonModule, + FormsModule, + NzIconModule, + NzSelectModule, + CvcPipesModule, + ], + templateUrl: './user-filter-select.component.html', + styleUrl: './user-filter-select.component.less', +}) +export class CvcUserFilterSelect { + cvcUniqueParticipants = + input.required() + cvcUserId = model.required() + + onSearch$: Subject + onSearch: Signal + queryRef!: QueryRef + filteredUsers: Signal + + constructor(private gql: UserFilterSearchGQL) { + this.onSearch$ = new Subject() + const filteredUser$ = this.onSearch$.pipe( + tag(`filteredUser$`), + // skip(1), + // filter(isNonNulled), + switchMap((nameStr) => { + const query = { + name: nameStr, + first: 25, + } + if (this.queryRef) { + const refetch = this.queryRef.refetch({ name: nameStr }) + return from(refetch) + } else { + this.queryRef = this.gql.watch({ name: nameStr }) + return this.queryRef.valueChanges + } + }), + map( + (result) => + result.data?.users.edges.map((e) => e.node! as BrowseUser) ?? [] + ), + tag(`${this.constructor.name} filteredUser$ after`) + ) + this.filteredUsers = toSignal(filteredUser$, { initialValue: [] }) + this.onSearch = toSignal(this.onSearch$, { initialValue: '' }) + } +} diff --git a/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.query.gql b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.query.gql new file mode 100644 index 000000000..3b6f7bdba --- /dev/null +++ b/client/src/app/components/activities/activity-feed/feed-filters/user-filter-select/user-filter-select.query.gql @@ -0,0 +1,19 @@ +query UserFilterSearch($name: String) { + users(name: $name) { + pageInfo { + endCursor + hasNextPage + hasPreviousPage + startCursor + } + edges { + node { + id + displayName + name + username + role + } + } + } +} diff --git a/client/src/app/generated/civic.apollo.ts b/client/src/app/generated/civic.apollo.ts index 77533d813..15f64643f 100644 --- a/client/src/app/generated/civic.apollo.ts +++ b/client/src/app/generated/civic.apollo.ts @@ -7706,6 +7706,20 @@ export type ActivityFeedUpdatesQueryVariables = Exact<{ export type ActivityFeedUpdatesQuery = { __typename: 'Query', activities: { __typename: 'ActivityInterfaceConnection', pageCount: number, totalCount: number, unfilteredCount: number, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean } } }; +export type OrgFilterSearchQueryVariables = Exact<{ + name?: InputMaybe; +}>; + + +export type OrgFilterSearchQuery = { __typename: 'Query', organizations: { __typename: 'BrowseOrganizationConnection', pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined }, edges: Array<{ __typename: 'BrowseOrganizationEdge', node?: { __typename: 'BrowseOrganization', id: number, name: string } | undefined }> } }; + +export type UserFilterSearchQueryVariables = Exact<{ + name?: InputMaybe; +}>; + + +export type UserFilterSearchQuery = { __typename: 'Query', users: { __typename: 'BrowseUserConnection', pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined }, edges: Array<{ __typename: 'BrowseUserEdge', node?: { __typename: 'BrowseUser', id: number, displayName: string, name?: string | undefined, username: string, role: UserRole } | undefined }> } }; + export type AcceptRevisionsActivityDetailFragment = { __typename: 'AcceptRevisionsActivity', id: number, verbiage: string, createdAt: any, parsedNote: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTagSegmentFlagged', entityId: number, displayName: string, tagType: TaggableEntity, flagged: boolean, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTagSegmentFlaggedAndDeprecated', entityId: number, displayName: string, tagType: TaggableEntity, flagged: boolean, deprecated: boolean, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTagSegmentFlaggedAndWithStatus', entityId: number, displayName: string, tagType: TaggableEntity, status: EvidenceStatus, flagged: boolean, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, username: string, displayName: string, name?: string | undefined, role: UserRole, profileImagePath?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }>, revisions: Array<{ __typename: 'Revision', id: number, name: string, status: RevisionStatus, currentValue?: any | undefined, suggestedValue?: any | undefined, fieldName: string, link: string, linkoutData: { __typename: 'LinkoutData', name: string, diffValue: { __typename: 'ObjectFieldDiff', currentObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean, deprecated?: boolean | undefined, flagged?: boolean | undefined, feature?: { __typename: 'LinkableFeature', link: string, id: number, name: string, deprecated: boolean, flagged: boolean } | undefined }>, addedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean, deprecated?: boolean | undefined, flagged?: boolean | undefined, feature?: { __typename: 'LinkableFeature', link: string, id: number, name: string, deprecated: boolean, flagged: boolean } | undefined }>, removedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean, deprecated?: boolean | undefined, flagged?: boolean | undefined, feature?: { __typename: 'LinkableFeature', link: string, id: number, name: string, deprecated: boolean, flagged: boolean } | undefined }>, keptObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean, deprecated?: boolean | undefined, flagged?: boolean | undefined, feature?: { __typename: 'LinkableFeature', link: string, id: number, name: string, deprecated: boolean, flagged: boolean } | undefined }>, suggestedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean, deprecated?: boolean | undefined, flagged?: boolean | undefined, feature?: { __typename: 'LinkableFeature', link: string, id: number, name: string, deprecated: boolean, flagged: boolean } | undefined }> } | { __typename: 'ScalarFieldDiff', left: string, right: string } } }>, supersededRevisions: Array<{ __typename: 'Revision', id: number, link: string, name: string, fieldName: string, createdAt: any, creationActivity?: { __typename: 'SuggestRevisionSetActivity', user: { __typename: 'User', displayName: string, profileImagePath?: string | undefined, id: number, role: UserRole } } | undefined }>, organization?: { __typename: 'Organization', id: number, name: string } | undefined, user: { __typename: 'User', id: number, displayName: string, role: UserRole }, subject: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', deleted: boolean, deletedAt?: any | undefined, id: number, name: string, link: string, commentable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string } } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'ExonCoordinate', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'RevisionSet', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantCoordinate', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string }, events: Array<{ __typename: 'Event', id: number, createdAt: any, action: EventAction, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined, originatingUser: { __typename: 'User', id: number, displayName: string } }> }; export type CommentActivityDetailFragment = { __typename: 'CommentActivity', id: number, verbiage: string, createdAt: any, comment: { __typename: 'Comment', id: number, name: string, link: string, deleted: boolean, deletedAt?: any | undefined, title?: string | undefined, comment: string, createdAt: any, commentable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string }, commenter: { __typename: 'User', id: number, username: string, displayName: string, name?: string | undefined, role: UserRole, profileImagePath?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }, parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTagSegmentFlagged', entityId: number, displayName: string, tagType: TaggableEntity, flagged: boolean, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTagSegmentFlaggedAndDeprecated', entityId: number, displayName: string, tagType: TaggableEntity, flagged: boolean, deprecated: boolean, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTagSegmentFlaggedAndWithStatus', entityId: number, displayName: string, tagType: TaggableEntity, status: EvidenceStatus, flagged: boolean, link: string, revisionSetId?: number | undefined, feature?: { __typename: 'LinkableFeature', id: number, name: string, link: string, deprecated: boolean, flagged: boolean } | undefined } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, username: string, displayName: string, name?: string | undefined, role: UserRole, profileImagePath?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }> }, organization?: { __typename: 'Organization', id: number, name: string } | undefined, user: { __typename: 'User', id: number, displayName: string, role: UserRole }, subject: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', deleted: boolean, deletedAt?: any | undefined, id: number, name: string, link: string, commentable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string } } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'ExonCoordinate', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string, feature: { __typename: 'Feature', id: number, name: string, link: string } } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'RevisionSet', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantCoordinate', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string }, events: Array<{ __typename: 'Event', id: number, createdAt: any, action: EventAction, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Factor', id: number, name: string, link: string } | { __typename: 'FactorVariant', id: number, name: string, link: string } | { __typename: 'Feature', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Fusion', id: number, name: string, link: string } | { __typename: 'FusionVariant', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'GeneVariant', id: number, name: string, link: string } | { __typename: 'MolecularProfile', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined, originatingUser: { __typename: 'User', id: number, displayName: string } }> }; @@ -13558,6 +13572,67 @@ export const ActivityFeedUpdatesDocument = gql` export class ActivityFeedUpdatesGQL extends Apollo.Query { document = ActivityFeedUpdatesDocument; + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const OrgFilterSearchDocument = gql` + query OrgFilterSearch($name: String) { + organizations(name: $name) { + pageInfo { + endCursor + hasNextPage + hasPreviousPage + startCursor + } + edges { + node { + id + name + } + } + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class OrgFilterSearchGQL extends Apollo.Query { + document = OrgFilterSearchDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const UserFilterSearchDocument = gql` + query UserFilterSearch($name: String) { + users(name: $name) { + pageInfo { + endCursor + hasNextPage + hasPreviousPage + startCursor + } + edges { + node { + id + displayName + name + username + role + } + } + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class UserFilterSearchGQL extends Apollo.Query { + document = UserFilterSearchDocument; + constructor(apollo: Apollo.Apollo) { super(apollo); }