Skip to content
Snippets Groups Projects
Commit 791ec699 authored by Xiao Gui's avatar Xiao Gui
Browse files

ui: improved feature list filtering/order

parent e0e3c509
No related branches found
No related tags found
No related merge requests found
......@@ -68,7 +68,7 @@
<spinner-cmp *ngIf="rfDir.busy$ | async"></spinner-cmp>
<sxplr-sapiviews-features-entry-list-item
*ngFor="let feat of rfDir.listOfFeatures$ | async"
*ngFor="let feat of rfDir.listOfFeatures$ | async | orderFilterFeatures"
[sxplr-sapiviews-features-entry-list-item-feature]="feat"
(click)="handleRegionalFeatureClicked(feat)">
</sxplr-sapiviews-features-entry-list-item>
......
import { Component, Input } from "@angular/core";
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
import { SapiFeatureModel } from "src/atlasComponents/sapi";
import { CleanedIeegDataset, CLEANED_IEEG_DATASET_TYPE, SapiDatasetModel, SapiParcellationFeatureMatrixModel, SapiRegionalFeatureReceptorModel, SapiSerializationErrorModel, SapiVOIDataResponse, SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
......@@ -7,7 +7,8 @@ import { CleanedIeegDataset, CLEANED_IEEG_DATASET_TYPE, SapiDatasetModel, SapiPa
templateUrl: `./entryListItem.template.html`,
styleUrls: [
`./entryListItem.style.css`
]
],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class SapiViewsFeaturesEntryListItem{
......
......@@ -11,6 +11,7 @@ import * as ieeg from "./ieeg"
import * as receptor from "./receptors"
import {SapiViewsFeatureConnectivityModule} from "src/atlasComponents/sapiViews/features/connectivity";
import * as voi from "./voi"
import { OrderFilterFeaturesPipe } from "./orderFilterFeatureList.pipe"
const {
SxplrSapiViewsFeaturesIeegModule
......@@ -35,6 +36,7 @@ const { SapiViewsFeaturesVoiModule } = voi
FeatureBadgeColourPipe,
FeatureBadgeFlagPipe,
SapiViewsFeaturesEntryListItem,
OrderFilterFeaturesPipe,
],
providers: [
{
......@@ -48,6 +50,7 @@ const { SapiViewsFeaturesVoiModule } = voi
SapiViewsFeaturesEntryListItem,
SapiViewsFeaturesVoiModule,
SapiViewsFeatureConnectivityModule,
OrderFilterFeaturesPipe,
]
})
export class SapiViewsFeaturesModule{}
import { Pipe, PipeTransform } from "@angular/core";
import { CLEANED_IEEG_DATASET_TYPE, SapiFeatureModel, SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
import { environment } from "src/environments/environment"
type PipableFeatureType = SapiFeatureModel | SxplrCleanedFeatureModel
type ArrayOperation<T extends boolean | number> = (input: PipableFeatureType) => T
const FILTER_FN: ArrayOperation<boolean> = feature => {
return feature["@type"] !== "siibra/features/cells"
}
const ORDER_LIST: ArrayOperation<number> = feature => {
if (feature["@type"] === "siibra/features/receptor") return -4
if (feature["@type"] === CLEANED_IEEG_DATASET_TYPE) return -3
if (feature['@type'] === "https://openminds.ebrains.eu/core/DatasetVersion") return 2
return 0
}
@Pipe({
name: 'orderFilterFeatures',
pure: true
})
export class OrderFilterFeaturesPipe implements PipeTransform{
public transform(inputFeatures: PipableFeatureType[]): PipableFeatureType[] {
return inputFeatures
.filter(f => {
/**
* if experimental flag is set, do not filter out anything
*/
if (environment.EXPERIMENTAL_FEATURE_FLAG) return true
return FILTER_FN(f)
})
.sort((a, b) => ORDER_LIST(a) - ORDER_LIST(b))
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment