Editing 实现模式‐Filter筛选器 - CassiniLaw/KnowledgeBase GitHub Wiki

标注

classDiagram
namespace Models {
    class IModel {
        <<interface>>
    }
    class ShippingLoadSheet {
    }
    class CallSheet {
    }
    class Rig {
    }
}

ShippingLoadSheet ..|> IModel
Rig ..|> IModel
CallSheet ..|> IModel

ShippingLoadSheet --> "*" Rig : RigId
ShippingLoadSheet --> "*" CallSheet : CallSheetId

Invoker ..> ShippingLoadSheet : Filter筛选器 ProductHaulFilters

Loading

类图

classDiagram
direction LR
namespace Models {
    class IModel {
        <<interface>>
    }
    class ShippingLoadSheet {
    }
    class CallSheet {
    }
    class Rig {
    }
}

ShippingLoadSheet ..|> IModel
Rig ..|> IModel
CallSheet ..|> IModel

ShippingLoadSheet --> "*" Rig
ShippingLoadSheet --> "*" CallSheet

namespace Pages.ProductHaul {
class Index.razor {
    <<razor>>
}

class Index  {
    <<partial>>
    -IEnumerable<int> _currentServicePoints
    +IProductHaulRepository ProductHaulRepository
    +IOptions<SalesOptions> SalesOptions
    +IServicePointFilterService ServicePointFilterService
    -ILogger<Index> Log
    -Guid _refreshGuid
    #IAutoRefreshDataService AutoRefreshDataService

    -Task FiltersUpdatedAsync(IEnumerable~ShippingLoadSheet~ filteredSource)
    #Task OnAfterRenderAsync(bool firstRender)
    -Task ServicePointFilterChangedEventAsync(IEnumerable<int> ids)
    -Task PopulateDataAsync(IEnumerable<int> servicePointIds)
    -void RefreshCurrentServicePoints(IEnumerable<int> servicePointIds, out bool hasChanges)
    -Task RefreshDataSourceAsync()
}

class ProductHaulFilters   {
    <<partial>>
    +IEnumerable~ShippingLoadSheet~ DataSource
    +EventCallback~IEnumerable~ShippingLoadSheet~~ OnFilterApplied
    -Filters _filters    
    -List<Rig> Rigs
    #Task OnInitializedAsync()
    -void PopulateData()
    +Task SetParametersAsync(ParameterView parameters)
    +Task ApplyFiltersAsync()
}

class ProductHaulFilters.razor {
    <<razor>>
    -SfMultiSelect<int[], Rig> _multiSelectRigs
    -Task SelectedRigsChanged(int[] value)
}

class SfMultiSelect {
    <<div>>
    -string CssClass="multiSelect"
    -string TValue="int[]"
    -string TItem="Rig"
    -string AllowFiltering="true"
    -string DataSource="@Rigs"
    -string Value="@_filters.SelectedRigs?.ToArray()"
    -string Placeholder="All Rigs"
    -string ValueChanged="@SelectedRigsChanged"
    -string @ref="@_multiSelectRigs"
}

class MultiSelectFieldSettings {
    <<div>>
    Text="@nameof(Rig.Name)" 
    Value="@nameof(Rig.Id)"
}
}

SfMultiSelect *--> MultiSelectFieldSettings
ProductHaulFilters.razor *--> SfMultiSelect : DataSource="@Rigs", Value="@_filters.SelectedRigs?.ToArray()", Placeholder="All Crews", ValueChanged="@SelectedRigsChanged"
ProductHaulFilters.razor *--> SfMultiSelect : DataSource="@Rigs", Value="@_filters.SelectedRigs?.ToArray()", Placeholder="All Crews", ValueChanged="@SelectedRigsChanged"
ProductHaulFilters.razor *--> ProductHaulFilters
ShippingLoadSheet

Index.razor *--> Index
Index.razor *--> ProductHaulFilters.razor

ProductHaulFilters *--> "*" ShippingLoadSheet : _filteredProductHaulLoad
ProductHaulFilters *--> "*" ShippingLoadSheet : _salesProductHaulLoad
ProductHaulFilters *--> "*" ShippingLoadSheet : _ProductHaulLoadProjects

Loading
⚠️ **GitHub.com Fallback** ⚠️