docs(07-09): complete DataGrid visual indicators plan summary
This commit is contained in:
@@ -53,7 +53,7 @@ Plans:
|
|||||||
2. Running the audit returns a list of all access entries the user holds across the selected sites
|
2. Running the audit returns a list of all access entries the user holds across the selected sites
|
||||||
3. Results distinguish between direct role assignments, SharePoint group memberships, and inherited access
|
3. Results distinguish between direct role assignments, SharePoint group memberships, and inherited access
|
||||||
4. Results can be exported to CSV or HTML in the same format established by v1.0 export patterns
|
4. Results can be exported to CSV or HTML in the same format established by v1.0 export patterns
|
||||||
**Plans:** 8/8 plans complete
|
**Plans:** 10/10 plans (8 original + 2 gap-closure)
|
||||||
Plans:
|
Plans:
|
||||||
- [ ] 07-01-PLAN.md — UserAccessEntry model + service interfaces (Wave 1)
|
- [ ] 07-01-PLAN.md — UserAccessEntry model + service interfaces (Wave 1)
|
||||||
- [ ] 07-02-PLAN.md — UserAccessAuditService implementation (Wave 2)
|
- [ ] 07-02-PLAN.md — UserAccessAuditService implementation (Wave 2)
|
||||||
@@ -63,6 +63,8 @@ Plans:
|
|||||||
- [ ] 07-06-PLAN.md — CSV + HTML export services (Wave 2)
|
- [ ] 07-06-PLAN.md — CSV + HTML export services (Wave 2)
|
||||||
- [ ] 07-07-PLAN.md — Tab wiring, DI, localization (Wave 4)
|
- [ ] 07-07-PLAN.md — Tab wiring, DI, localization (Wave 4)
|
||||||
- [ ] 07-08-PLAN.md — Unit tests (Wave 5)
|
- [ ] 07-08-PLAN.md — Unit tests (Wave 5)
|
||||||
|
- [ ] 07-09-PLAN.md — Gap closure: DataGrid visual indicators + ObjectType column (Wave 6)
|
||||||
|
- [ ] 07-10-PLAN.md — Gap closure: Debounced search unit test (Wave 6)
|
||||||
|
|
||||||
### Phase 8: Simplified Permissions
|
### Phase 8: Simplified Permissions
|
||||||
**Goal**: Permissions reports are readable by non-technical users through plain-language labels, color coding, and a configurable detail level
|
**Goal**: Permissions reports are readable by non-technical users through plain-language labels, color coding, and a configurable detail level
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ gsd_state_version: 1.0
|
|||||||
milestone: v1.0
|
milestone: v1.0
|
||||||
milestone_name: milestone
|
milestone_name: milestone
|
||||||
status: completed
|
status: completed
|
||||||
stopped_at: Completed 07-08-PLAN.md
|
stopped_at: Completed 07-09-PLAN.md
|
||||||
last_updated: "2026-04-07T11:00:01.832Z"
|
last_updated: "2026-04-07T11:15:13.659Z"
|
||||||
last_activity: 2026-04-07 — Roadmap created (Phases 6-9), 10/10 requirements mapped
|
last_activity: 2026-04-07 — Roadmap created (Phases 6-9), 10/10 requirements mapped
|
||||||
progress:
|
progress:
|
||||||
total_phases: 4
|
total_phases: 4
|
||||||
completed_phases: 2
|
completed_phases: 1
|
||||||
total_plans: 13
|
total_plans: 15
|
||||||
completed_plans: 13
|
completed_plans: 14
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@@ -55,6 +55,7 @@ Phase 6 [ ] → Phase 7 [ ] → Phase 8 [ ] → Phase 9 [ ]
|
|||||||
| Phase 07-user-access-audit P05 | 4 | 2 tasks | 2 files |
|
| Phase 07-user-access-audit P05 | 4 | 2 tasks | 2 files |
|
||||||
| Phase 07-user-access-audit P07 | 8 | 3 tasks | 7 files |
|
| Phase 07-user-access-audit P07 | 8 | 3 tasks | 7 files |
|
||||||
| Phase 07-user-access-audit P08 | 2 | 2 tasks | 4 files |
|
| Phase 07-user-access-audit P08 | 2 | 2 tasks | 4 files |
|
||||||
|
| Phase 07-user-access-audit P09 | 6 | 1 tasks | 1 files |
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
@@ -94,6 +95,7 @@ Decisions are logged in PROJECT.md Key Decisions table.
|
|||||||
- [Phase 07-user-access-audit]: UserAccessAuditView created inline (Rule 3) when 07-05 found missing — follows 07-05 spec with two-panel layout
|
- [Phase 07-user-access-audit]: UserAccessAuditView created inline (Rule 3) when 07-05 found missing — follows 07-05 spec with two-panel layout
|
||||||
- [Phase 07-user-access-audit]: Used internal TestRunOperationAsync for ViewModel tests; Application.Current null in tests lets else branch run synchronously
|
- [Phase 07-user-access-audit]: Used internal TestRunOperationAsync for ViewModel tests; Application.Current null in tests lets else branch run synchronously
|
||||||
- [Phase 07-user-access-audit]: WeakReferenceMessenger.Default.Reset() in test constructor prevents cross-test contamination from message registrations
|
- [Phase 07-user-access-audit]: WeakReferenceMessenger.Default.Reset() in test constructor prevents cross-test contamination from message registrations
|
||||||
|
- [Phase 07-09]: Guest badge (orange pill) and warning icon (⚠) use DataTrigger-driven Visibility on DataGridTemplateColumn cells — collapsed by default, visible only when IsExternalUser/IsHighPrivilege=True
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -105,6 +107,6 @@ None.
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-04-07T11:00:01.830Z
|
Last session: 2026-04-07T11:15:13.657Z
|
||||||
Stopped at: Completed 07-08-PLAN.md
|
Stopped at: Completed 07-09-PLAN.md
|
||||||
Resume file: None
|
Resume file: None
|
||||||
|
|||||||
92
.planning/phases/07-user-access-audit/07-09-SUMMARY.md
Normal file
92
.planning/phases/07-user-access-audit/07-09-SUMMARY.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
---
|
||||||
|
phase: 07-user-access-audit
|
||||||
|
plan: 09
|
||||||
|
subsystem: ui
|
||||||
|
tags: [wpf, xaml, datagrid, datatrigger, visual-indicators]
|
||||||
|
|
||||||
|
# Dependency graph
|
||||||
|
requires:
|
||||||
|
- phase: 07-05
|
||||||
|
provides: UserAccessAuditView XAML with DataGrid columns (User, Site, Object, Permission Level, Access Type, Granted Through)
|
||||||
|
provides:
|
||||||
|
- DataGrid User column with orange 'Guest' pill badge for external users (IsExternalUser DataTrigger)
|
||||||
|
- DataGrid Permission Level column with red warning icon for high-privilege entries (IsHighPrivilege DataTrigger)
|
||||||
|
- DataGrid ObjectType column showing Site Collection/Site/List/Folder distinction
|
||||||
|
affects: [07-verification, testing]
|
||||||
|
|
||||||
|
# Tech tracking
|
||||||
|
tech-stack:
|
||||||
|
added: []
|
||||||
|
patterns: [DataGridTemplateColumn with DataTrigger-driven visibility for per-cell visual indicators]
|
||||||
|
|
||||||
|
key-files:
|
||||||
|
created: []
|
||||||
|
modified:
|
||||||
|
- SharepointToolbox/Views/Tabs/UserAccessAuditView.xaml
|
||||||
|
|
||||||
|
key-decisions:
|
||||||
|
- "Guest badge (orange 'Guest' pill) uses Border.Visibility via DataTrigger on IsExternalUser=True, collapsed by default"
|
||||||
|
- "Warning icon (red ⚠) uses TextBlock.Visibility via DataTrigger on IsHighPrivilege=True, collapsed by default"
|
||||||
|
- "ObjectType column inserted as plain DataGridTextColumn between Object and Permission Level"
|
||||||
|
|
||||||
|
patterns-established:
|
||||||
|
- "DataGridTemplateColumn with StackPanel + DataTrigger-driven Visibility for inline cell badges/icons"
|
||||||
|
|
||||||
|
requirements-completed: [UACC-01, UACC-02]
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
duration: 6min
|
||||||
|
completed: 2026-04-07
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 07 Plan 09: DataGrid Visual Indicators Summary
|
||||||
|
|
||||||
|
**DataGrid enhanced with orange guest badge on external user rows, red warning icon on high-privilege permission cells, and ObjectType column — closing verification gaps 1 and 2**
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
- **Duration:** 6 min
|
||||||
|
- **Started:** 2026-04-07T11:13:59Z
|
||||||
|
- **Completed:** 2026-04-07T11:14:36Z
|
||||||
|
- **Tasks:** 1
|
||||||
|
- **Files modified:** 1
|
||||||
|
|
||||||
|
## Accomplishments
|
||||||
|
- User column converted from plain DataGridTextColumn to DataGridTemplateColumn with DataTrigger-driven orange "Guest" pill badge for external users (IsExternalUser=true)
|
||||||
|
- Permission Level column converted to DataGridTemplateColumn with DataTrigger-driven red warning icon (⚠) for high-privilege entries (IsHighPrivilege=true)
|
||||||
|
- ObjectType column added between Object and Permission Level columns, bound to ObjectType property on UserAccessEntry
|
||||||
|
|
||||||
|
## Task Commits
|
||||||
|
|
||||||
|
Each task was committed atomically:
|
||||||
|
|
||||||
|
1. **Task 1: Add guest badge, warning icon, and ObjectType column to DataGrid** - `33833dc` (feat)
|
||||||
|
|
||||||
|
**Plan metadata:** (docs commit follows)
|
||||||
|
|
||||||
|
## Files Created/Modified
|
||||||
|
- `SharepointToolbox/Views/Tabs/UserAccessAuditView.xaml` - DataGrid columns updated with visual indicators and ObjectType column
|
||||||
|
|
||||||
|
## Decisions Made
|
||||||
|
- Guest badge uses Border collapsed by default, made visible via DataTrigger on IsExternalUser=True — ensures no visual noise for internal users
|
||||||
|
- Warning icon uses TextBlock collapsed by default, made visible via DataTrigger on IsHighPrivilege=True — coexists with bold row style already applied at row level
|
||||||
|
- ObjectType column width set to 90 (narrower than Object column at 140) since values like "Site Collection", "List" are short
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Issues Encountered
|
||||||
|
None
|
||||||
|
|
||||||
|
## User Setup Required
|
||||||
|
None - no external service configuration required.
|
||||||
|
|
||||||
|
## Next Phase Readiness
|
||||||
|
- Verification gaps 1 and 2 closed: DataGrid now shows guest badges for external users, warning icons for high-privilege entries, and ObjectType column
|
||||||
|
- UserAccessAuditView.xaml is complete per the 07-VERIFICATION spec
|
||||||
|
- Ready for final verification phase review
|
||||||
|
|
||||||
|
---
|
||||||
|
*Phase: 07-user-access-audit*
|
||||||
|
*Completed: 2026-04-07*
|
||||||
Reference in New Issue
Block a user