Files
DP44/enriched-partialglm/Common/DTS.CommonCore/Interface/Pagination.md

75 lines
3.8 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.CommonCore/Interface/Pagination/IPaginationView.cs
- Common/DTS.CommonCore/Interface/Pagination/IPaginationViewModel.cs
- Common/DTS.CommonCore/Interface/Pagination/IFilterableListView.cs
generated_at: "2026-04-16T12:09:07.697429+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "17272f9179ee1d83"
---
# Documentation: Pagination Interfaces
## 1. Purpose
This module defines core interfaces for pagination and filtering functionality within a view/view-model architecture. It provides marker interfaces for pagination-capable views and view models (`IPaginationView`, `IPaginationViewModel`) that integrate with a base view system, as well as a behavioral interface (`IFilterableListView`) for list views that support dynamic filtering. These interfaces establish contracts for UI components that need to handle paginated data and user-driven filter operations.
---
## 2. Public Interface
### `IPaginationView`
**Namespace:** `DTS.Common.Interface`
**Inheritance:** `IBaseView`
A marker interface for views that support pagination. Defines no members of its own; its contract is purely type identity, indicating that a view participates in pagination workflows.
---
### `IPaginationViewModel`
**Namespace:** `DTS.Common.Interface`
**Inheritance:** `IBaseViewModel`
A marker interface for view models that support pagination. Like `IPaginationView`, it defines no members and serves as a type marker for pagination-capable view models within the system.
---
### `IFilterableListView`
**Namespace:** `DTS.Common.Interface.Pagination`
An interface for views that support filterable list functionality.
| Member | Signature | Description |
|--------|-----------|-------------|
| `Filter` | `void Filter(object tag, string term)` | Applies a filter to the list view using the provided tag and search term. |
| `ClearAllFilters` | `void ClearAllFilters()` | Removes all active filters from the list view. |
| `ListViewId` | `string ListViewId { get; }` | Read-only property returning the identifier for this list view. |
---
## 3. Invariants
- `IPaginationView` and `IPaginationViewModel` must be assignable to `IBaseView` and `IBaseViewModel` respectively (enforced by inheritance).
- `IFilterableListView.ListViewId` must return a valid string identifier; whether null or empty strings are permitted is not specified in the source.
- The `Filter` method's `tag` parameter is of type `object`, implying any reference or value type may be passed; the semantic contract for this parameter is not defined in the source.
---
## 4. Dependencies
### This module depends on:
- `DTS.Common.Base` — provides `IBaseView` and `IBaseViewModel` base interfaces that `IPaginationView` and `IPaginationViewModel` extend.
### What depends on this module:
- Cannot be determined from the provided source files alone. These interfaces are likely consumed by concrete view/view model implementations and any framework code that handles pagination or filtering logic.
---
## 5. Gotchas
1. **Inconsistent namespace structure**: `IPaginationView` and `IPaginationViewModel` reside in `DTS.Common.Interface`, while `IFilterableListView` resides in `DTS.Common.Interface.Pagination`. This may cause confusion when importing or organizing related types.
2. **Marker interfaces with no members**: `IPaginationView` and `IPaginationViewModel` define no members, suggesting they may be used for type checking, dependency injection registration, or convention-based wiring. Their actual utility depends on framework-level code not shown here.
3. **Ambiguous `tag` parameter**: The `Filter(object tag, string term)` method accepts an untyped `object` parameter. Without additional documentation or implementation code, the intended use of this parameter (e.g., column identifier, filter type enum, or other metadata) is unclear.