in backend/app/commands/GetFilters.scala [14:63]
def process(): Attempt[List[Filter]] = {
for {
allCollections <- manifest.getCollections
visibleCollections <- userManagement.getVisibleCollectionUrisForUser(username)
collections = allCollections.filter { c => visibleCollections.contains(c.uri.value) }
workspaces <- annotations.getAllWorkspacesMetadata(username)
mimeTypes <- manifest.getAllMimeTypes
} yield {
List (
Filter(FilterNames.workspaces.key, FilterNames.workspaces.display, hideable = false,
workspaces.map { workspace =>
FilterOption(
workspace.id,
workspace.name
)
}
),
Filter(FilterNames.collections.key, FilterNames.collections.display, hideable = false,
collections.map { c =>
FilterOption(
c.uri.value,
c.display,
None,
Some(c.ingestions.map(i => FilterOption(i.uri, i.display)))
)
}
),
Filter(FilterNames.mimeTypes.key, FilterNames.mimeTypes.display, hideable = false,
mimeTypes
.map(m => {
val mediaType = m.mimeType.split("/").head
FilterOption(
mediaType + "/",
mediaType.capitalize,
None,
Some(mimeTypes
.filter(_.mimeType.startsWith(mediaType))
.map(subtype => {
val subtypeDetails = MimeDetails.get(subtype.mimeType).getOrElse(MimeDetails(subtype.mimeType))
FilterOption(subtype.mimeType, subtypeDetails.display, subtypeDetails.explanation)
})
)
)
}
).distinct
)
)
}
}