docs(08-03): complete Permissions View Simplified Mode UI plan
- Created 08-03-SUMMARY.md with task results and self-check - Updated STATE.md with metrics and decisions - Updated ROADMAP.md plan progress for phase 08 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,7 @@ milestone: v1.0
|
|||||||
milestone_name: milestone
|
milestone_name: milestone
|
||||||
status: completed
|
status: completed
|
||||||
stopped_at: Completed 08-04-PLAN.md
|
stopped_at: Completed 08-04-PLAN.md
|
||||||
last_updated: "2026-04-07T12:14:18.411Z"
|
last_updated: "2026-04-07T12:14:33.370Z"
|
||||||
last_activity: 2026-04-07 — Completed 08-04 (Export Services Simplified Overloads)
|
last_activity: 2026-04-07 — Completed 08-04 (Export Services Simplified Overloads)
|
||||||
progress:
|
progress:
|
||||||
total_phases: 4
|
total_phases: 4
|
||||||
@@ -102,6 +102,7 @@ Decisions are logged in PROJECT.md Key Decisions table.
|
|||||||
- [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
|
- [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
|
||||||
- [Phase 07-10]: Extended CreateViewModel to 3-tuple (vm, auditMock, graphMock) so debounce test can verify SearchUsersAsync calls
|
- [Phase 07-10]: Extended CreateViewModel to 3-tuple (vm, auditMock, graphMock) so debounce test can verify SearchUsersAsync calls
|
||||||
- [Phase 08]: ActiveItemsSource returns Results or SimplifiedResults based on IsSimplifiedMode -- View binds to single property
|
- [Phase 08]: ActiveItemsSource returns Results or SimplifiedResults based on IsSimplifiedMode -- View binds to single property
|
||||||
|
- [Phase 08]: InvertBoolConverter in Core/Converters namespace for reuse; summary cards use WrapPanel; row color triggers only match SimplifiedPermissionEntry
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
|
|||||||
76
.planning/phases/08-simplified-permissions/08-03-SUMMARY.md
Normal file
76
.planning/phases/08-simplified-permissions/08-03-SUMMARY.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
phase: 08-simplified-permissions
|
||||||
|
plan: 03
|
||||||
|
subsystem: view
|
||||||
|
tags: [permissions, simplified-mode, xaml, ui, color-coding, summary-panel, converter]
|
||||||
|
dependency_graph:
|
||||||
|
requires: [IsSimplifiedMode, IsDetailView, ActiveItemsSource, Summaries, RiskLevel, SimplifiedPermissionEntry, PermissionSummary]
|
||||||
|
provides: [PermissionsView simplified UI, InvertBoolConverter, risk-level color coding, summary cards]
|
||||||
|
affects: [08-04, 08-05]
|
||||||
|
tech_stack:
|
||||||
|
added: [InvertBoolConverter]
|
||||||
|
patterns: [MultiDataTrigger visibility, DataTrigger color coding, WrapPanel summary cards, RelativeSource ancestor binding]
|
||||||
|
key_files:
|
||||||
|
created:
|
||||||
|
- SharepointToolbox/Core/Converters/InvertBoolConverter.cs
|
||||||
|
modified:
|
||||||
|
- SharepointToolbox/Views/Tabs/PermissionsView.xaml
|
||||||
|
decisions:
|
||||||
|
- InvertBoolConverter in Core/Converters namespace for reuse across views
|
||||||
|
- Summary cards use WrapPanel for responsive horizontal layout
|
||||||
|
- Row color triggers apply to all rows but only match SimplifiedPermissionEntry objects (no-op for PermissionEntry)
|
||||||
|
metrics:
|
||||||
|
duration_seconds: 77
|
||||||
|
completed: "2026-04-07T12:13:00Z"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 08 Plan 03: Permissions View Simplified Mode UI Summary
|
||||||
|
|
||||||
|
Updated PermissionsView.xaml with toggle controls, color-coded summary panel, and RiskLevel-based DataGrid row styling; created InvertBoolConverter for radio button inverse binding.
|
||||||
|
|
||||||
|
## What Was Done
|
||||||
|
|
||||||
|
### Task 1: Add toggles, summary panel, and color-coded DataGrid to PermissionsView.xaml
|
||||||
|
|
||||||
|
**Commit:** 163c506
|
||||||
|
|
||||||
|
Added the full simplified permissions UI layer to PermissionsView.xaml:
|
||||||
|
|
||||||
|
1. **Display Options GroupBox** in left panel with:
|
||||||
|
- Simplified Mode checkbox bound to `IsSimplifiedMode`
|
||||||
|
- Simple/Detailed radio buttons bound to `IsDetailView` (Simple uses InvertBoolConverter)
|
||||||
|
- Radio buttons disabled when simplified mode is off, with grayed-out label
|
||||||
|
|
||||||
|
2. **Summary panel** (ItemsControl bound to `Summaries`):
|
||||||
|
- Visible only when `IsSimplifiedMode` is True (DataTrigger)
|
||||||
|
- WrapPanel layout with color-coded cards per RiskLevel
|
||||||
|
- Each card shows Count, Label, and DistinctUsers
|
||||||
|
- Colors: High=red (#FEE2E2), Medium=amber (#FEF3C7), Low=green (#D1FAE5), ReadOnly=blue (#DBEAFE)
|
||||||
|
|
||||||
|
3. **DataGrid updates**:
|
||||||
|
- Binds to `ActiveItemsSource` instead of `Results`
|
||||||
|
- Row style with DataTrigger color coding by RiskLevel (lighter tints: #FEF2F2, #FFFBEB, #ECFDF5, #EFF6FF)
|
||||||
|
- MultiDataTrigger collapses DataGrid when IsSimplifiedMode=True AND IsDetailView=False
|
||||||
|
- New "Simplified" column bound to `SimplifiedLabels`, visibility via BooleanToVisibilityConverter on DataContext.IsSimplifiedMode
|
||||||
|
|
||||||
|
4. **InvertBoolConverter** created at `SharepointToolbox/Core/Converters/InvertBoolConverter.cs`:
|
||||||
|
- IValueConverter that negates boolean values
|
||||||
|
- Used for "Simple" radio button binding (Simple = !IsDetailView)
|
||||||
|
|
||||||
|
**Files created:** `SharepointToolbox/Core/Converters/InvertBoolConverter.cs`
|
||||||
|
**Files modified:** `SharepointToolbox/Views/Tabs/PermissionsView.xaml`
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- `dotnet build SharepointToolbox/SharepointToolbox.csproj --no-incremental` succeeded with 0 errors, 0 warnings
|
||||||
|
- PermissionsView.xaml contains bindings for IsSimplifiedMode, IsDetailView, ActiveItemsSource, Summaries
|
||||||
|
- InvertBoolConverter.cs exists and compiles
|
||||||
|
- Summary panel uses DataTrigger on RiskLevel for color coding
|
||||||
|
- DataGrid row style uses DataTrigger on RiskLevel for row background colors
|
||||||
|
- SimplifiedLabels column visibility bound to IsSimplifiedMode via BoolToVis converter
|
||||||
|
|
||||||
|
## Self-Check: PASSED
|
||||||
Reference in New Issue
Block a user