Skip to content

Commit

Permalink
feat(core/loadBalancer): Filter by load balancer type (#8850)
Browse files Browse the repository at this point in the history
  • Loading branch information
caseyhebebrand committed Jan 20, 2021
1 parent 5e45b85 commit b0139a6
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/scripts/modules/core/src/filterModel/IFilterModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export interface ISortFilter {
instanceType: ITrueKeyModel;
labels: ITrueKeyModel;
listInstances: boolean;
loadBalancerType: ITrueKeyModel;
maxInstances: number;
minInstances: number;
multiselect: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export const filterModelConfig: IFilterConfig[] = [
{ model: 'availabilityZone', param: 'zone', type: 'trueKeyObject', filterLabel: 'availability zone' },
{ model: 'detail', param: 'detail', type: 'trueKeyObject' },
{ model: 'filter', param: 'q', clearValue: '', type: 'string', filterLabel: 'search' },
{ model: 'loadBalancerType', param: 'loadBalancerType', filterLabel: 'type', type: 'trueKeyObject' },
{ model: 'providerType', type: 'trueKeyObject', filterLabel: 'provider' },
{ model: 'region', param: 'reg', type: 'trueKeyObject' },
{ model: 'showInstances', displayOption: true, type: 'boolean' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,23 @@ export class LoadBalancerFilterService {
});
}

private checkLoadBalancerTypeFilters(loadBalancer: ILoadBalancer): boolean {
const sortFilter: ISortFilter = LoadBalancerState.filterModel.asFilterModel.sortFilter;
if (this.isFilterable(sortFilter.loadBalancerType)) {
const checkedLoadBalancerTypes = this.getCheckValues(sortFilter.loadBalancerType);
if (!checkedLoadBalancerTypes.includes(loadBalancer.loadBalancerType)) {
return false;
}
return true;
} else {
return true;
}
}

public filterLoadBalancersForDisplay(loadBalancers: ILoadBalancer[]): ILoadBalancer[] {
return chain(loadBalancers)
.filter((lb) => this.checkSearchTextFilter(lb))
.filter((lb) => this.checkLoadBalancerTypeFilters(lb))
.filter((lb) => FilterModelService.checkAccountFilters(LoadBalancerState.filterModel.asFilterModel)(lb))
.filter((lb) => FilterModelService.checkRegionFilters(LoadBalancerState.filterModel.asFilterModel)(lb))
.filter((lb) => FilterModelService.checkStackFilters(LoadBalancerState.filterModel.asFilterModel)(lb))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ export interface ILoadBalancerFiltersState {
sortFilter: ISortFilter;
tags: any[];
availabilityZoneHeadings: string[];
loadBalancerTypeHeadings: string[];
providerTypeHeadings: string[];
accountHeadings: string[];
regionHeadings: string[];
Expand All @@ -85,6 +86,7 @@ export class LoadBalancerFilters extends React.Component<ILoadBalancerFiltersPro
sortFilter: LoadBalancerState.filterModel.asFilterModel.sortFilter,
tags: LoadBalancerState.filterModel.asFilterModel.tags,
availabilityZoneHeadings: [],
loadBalancerTypeHeadings: [],
providerTypeHeadings: [],
accountHeadings: [],
regionHeadings: [],
Expand Down Expand Up @@ -138,6 +140,7 @@ export class LoadBalancerFilters extends React.Component<ILoadBalancerFiltersPro
accountHeadings: account,
regionHeadings: region,
availabilityZoneHeadings: availabilityZone,
loadBalancerTypeHeadings: this.getHeadingsForOption('loadBalancerType'),
stackHeadings: ['(none)'].concat(this.getHeadingsForOption('stack')),
detailHeadings: ['(none)'].concat(this.getHeadingsForOption('detail')),
providerTypeHeadings: this.getHeadingsForOption('type'),
Expand Down Expand Up @@ -173,6 +176,7 @@ export class LoadBalancerFilters extends React.Component<ILoadBalancerFiltersPro
const loadBalancersLoaded = this.props.app.loadBalancers.loaded;
const {
accountHeadings,
loadBalancerTypeHeadings,
providerTypeHeadings,
regionHeadings,
stackHeadings,
Expand Down Expand Up @@ -251,6 +255,17 @@ export class LoadBalancerFilters extends React.Component<ILoadBalancerFiltersPro
))}
</FilterSection>

<FilterSection heading="Type" expanded={true}>
{loadBalancerTypeHeadings.map((heading) => (
<FilterCheckbox
heading={heading}
key={heading}
sortFilterType={sortFilter.loadBalancerType}
onChange={this.updateLoadBalancerGroups}
/>
))}
</FilterSection>

<FilterSection heading="Instance Status" expanded={true}>
<div className="form">
<div className="checkbox">
Expand Down

0 comments on commit b0139a6

Please sign in to comment.