Appearance
Account Visibility Manager
Application for managing and viewing client account visibility status across multiple profiles. Provides search functionality and detailed account information.
Overview
- Route:
/feature/account-visibility-manager-v2 - Framework: Angular 19 (NgModule-based)
- Main Component:
AccountVisibilityDatabaseSearchComponent
Features
Client Context Integration
Automatically responds to active client changes:
typescript
this._acvService.activeSearchedClient.pipe(
takeUntil(this.unsubscribe$)
).subscribe((gcn: string) => {
if (gcn && gcn !== this.activeSearchedClient) {
this.activeSearchedClient = gcn;
this.search();
}
});Account Search
Search for client accounts by:
- GCN (Global Client Number) - via IPA client context
- Account Number - direct search input
Profile Display
Shows accounts organized by profile with interactive cards:
typescript
mapAccountToCard(profileAccounts: any) {
return profileAccounts.map((profile: any) => ({
uniqueId: profile.profileId,
cardTitle: profile.profileId,
cardIcon: 'cards-collection',
accountList: profile.accountList || []
}));
}Top Feature Integration
Client Search Button
Opens the Client Search top feature with state management:
typescript
searchClient() {
this.isTopFeatureOpen = true;
ipaSdk.platform.sideload.topFeature({
active: true,
src: '/feature/one-place-client-search',
height: 200
});
// Listen for client selection
const subscription = ipaSdk.data.listenForActiveClientContextChanges()
.pipe(takeUntil(this.unsubscribe$))
.subscribe(() => {
this.isTopFeatureOpen = false;
subscription.unsubscribe();
});
}State Management
isTopFeatureOpen: Disables search button while top feature is active- Client context listener: Automatically re-enables button when client is selected
- Message listener: Handles custom close events
Loading States
Parent Loading
Supports parent component loading coordination:
typescript
@Input() parentLoading: boolean = false;
@Input() parentMessage: string = '';Displays full-page loader when parent is still initializing.
Search Loading
typescript
loading = true;
message = 'Loading Accounts...';Shows loading state during account searches.
Initial Search Completion
Notifies parent when first search completes:
typescript
if (!this.initialSearchDone) {
this.initialSearchDone = true;
this._acvService.notifyInitialSearchCompleted();
}Service Layer
AccountVisibilityService
Provides:
activeSearchedClient: Observable for GCN changesgetAccountSettings(gcn): Fetch account datanotifyInitialSearchCompleted(): Loading coordination
UI Components
Profile Cards
Interactive cards showing:
- Profile ID
- Account count
- Visibility status per account
- Clickable to view detailed account list
Account Details Table
Shows when profile is selected:
- Account numbers
- Visibility status
- Profile occurrences
- Duplicate indicators
Error Handling
typescript
private setErrorMessage(error: any) {
if (error?.error?.message) {
this.errorMessage = error.error.message;
} else if (error?.status && error?.statusText) {
this.errorMessage = `Error ${error.status}: ${error.statusText}`;
} else {
this.errorMessage = 'There was an error retrieving the data.';
}
}Data Flow
- Client Selection: User selects client via Client Search
- Context Update: IPA updates active client context
- Automatic Search: Service detects change and triggers search
- Data Retrieval: Backend API returns account settings
- Display: Accounts organized by profile and displayed as cards
- Detail View: User clicks profile card to see detailed table
Usage Example
typescript
// Programmatically set active client
ipaSdk.data.setActiveClient({ gcn: '12345678' });
// Load Account Visibility Manager
ipaSdk.platform.sideload.rightFeature({
active: true,
src: '/feature/account-visibility-manager-v2',
cols: 12
});The application will automatically fetch and display account data for the active client.