2.3 KiB
2.3 KiB
Phase 14 Research: User Directory View
What Exists (Phase 13 Deliverables)
ViewModel Properties for Directory Browse
IsBrowseMode(bool) — toggles Search/Browse modeDirectoryUsers(ObservableCollection) — raw directory listDirectoryUsersView(ICollectionView) — filtered/sorted view, default sort DisplayName ascIsLoadingDirectory(bool) — true while loadingDirectoryLoadStatus(string) — "Loading... X users" progress textIncludeGuests(bool) — in-memory member/guest filterDirectoryFilterText(string) — text filter on DisplayName, UPN, Department, JobTitleDirectoryUserCount(int) — filtered countLoadDirectoryCommand(IAsyncRelayCommand) — disabled while loadingCancelDirectoryLoadCommand(RelayCommand) — enabled only while loading
Existing People-Picker (Search Mode)
SearchQuery→ debounced Graph search →SearchResultsdropdownAddUserCommand(GraphUserResult)→SelectedUserscollectionRemoveUserCommand(GraphUserResult)→ removes from SelectedUsersRunCommand→RunOperationAsync→ audits SelectedUsers against GlobalSites
GAP: No SelectDirectoryUserCommand
SC2 requires "selecting a user from directory list launches existing audit pipeline." Need a command that:
- Takes a
GraphDirectoryUserfrom the directory DataGrid - Converts it to
GraphUserResult(same DisplayName + UPN) - Adds to
SelectedUsersvia existingExecuteAddUserlogic This is ViewModel work — needs to be done before the View XAML.
Current View Structure (UserAccessAuditView.xaml)
- Left panel (290px DockPanel): Users GroupBox + Options GroupBox + Buttons StackPanel
- Right panel: Summary banners + Filter/Toggle row + DataGrid (ResultsView)
- Status bar: ProgressBar + StatusMessage
Available Converters
BoolToVisibilityConverter— true→Visible, false→CollapsedInverseBoolConverter— inverts boolStringToVisibilityConverter— non-empty→Visible, empty→Collapsed
Localization
- No directory.* keys exist — need to add ~10 keys for EN + FR
Plan Breakdown
- 14-01 (Wave 1): Add localization keys +
SelectDirectoryUserCommandon ViewModel + code-behind event handler - 14-02 (Wave 2): Full XAML changes — mode toggle, conditional Search/Browse panels, directory DataGrid, loading UX