75 lines
3.8 KiB
Markdown
75 lines
3.8 KiB
Markdown
|
|
---
|
||
|
|
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.
|