├── src
├── ui
│ ├── config
│ │ ├── index.ts
│ │ └── configCmp
│ │ │ └── config.style.css
│ ├── help
│ │ ├── index.ts
│ │ ├── howToCite
│ │ │ ├── howToCite.style.css
│ │ │ ├── howToCite.template.html
│ │ │ └── howToCite.component.ts
│ │ ├── helpOnePager
│ │ │ ├── helpOnePager.style.css
│ │ │ └── helpOnePager.template.html
│ │ └── about
│ │ │ └── about.style.css
│ ├── topMenu
│ │ ├── index.ts
│ │ └── topMenuCmp
│ │ │ └── topMenu.style.css
│ ├── cookieAgreement
│ │ ├── index.ts
│ │ ├── data
│ │ │ └── aboutMatomo.md
│ │ └── cookieAgreement
│ │ │ └── cookieAgreement.style.css
│ ├── dialogInfo
│ │ ├── tmpl
│ │ │ ├── tmpl.stories.ts
│ │ │ └── tmpl.style.css
│ │ └── index.ts
│ ├── kgtos
│ │ ├── kgtos
│ │ │ └── kgtos.style.css
│ │ ├── index.ts
│ │ └── module.ts
│ ├── bottomMenu
│ │ └── index.ts
│ ├── logoContainer
│ │ ├── logoContainer.template.html
│ │ └── logoContainer.style.css
│ └── quickTour
│ │ └── index.ts
├── getFileInput
│ ├── index.ts
│ ├── type.ts
│ └── fileInputModal
│ │ └── fileInputModal.style.css
├── keyframesModule
│ ├── index.ts
│ ├── constants.ts
│ └── keyframeCtrl
│ │ └── keyframeCtrl.style.css
├── res
│ ├── .gitignore
│ └── icons
│ │ ├── iav-icons.ttf
│ │ ├── iav-icons.woff
│ │ ├── meta.json
│ │ └── iav-icons.css
├── components
│ ├── parseAttribute.ts
│ ├── dialog
│ │ └── dialog.style.css
│ ├── overlay
│ │ ├── overlay.style.scss
│ │ ├── index.ts
│ │ └── overlay.template.html
│ ├── confirmDialog
│ │ └── confirmDialog.style.css
│ ├── textareaCopyExport
│ │ └── textareaCopyExport.style.css
│ ├── flatHierarchy
│ │ ├── index.ts
│ │ ├── const.ts
│ │ └── spacer.pipe.ts
│ ├── markdown
│ │ ├── markdownCmp
│ │ │ ├── markdown.style.css
│ │ │ └── markdown.template.html
│ │ ├── index.ts
│ │ └── module.ts
│ ├── dynamicMaterialBtn
│ │ └── dynamicMaterialBtn.style.css
│ ├── tab
│ │ ├── tab.style.scss
│ │ └── tab.template.html
│ ├── spinner
│ │ ├── spinnerCmp
│ │ │ ├── spinner.template.html
│ │ │ └── spinner.component.ts
│ │ ├── index.ts
│ │ └── module.ts
│ ├── readmore
│ │ └── index.ts
│ ├── index.ts
│ ├── snackDialog
│ │ ├── index.ts
│ │ └── snackDialog.style.scss
│ ├── smartChip
│ │ ├── index.ts
│ │ ├── smartChip.menu.directive.ts
│ │ ├── smartChip.action.directive.ts
│ │ ├── smartChip.header.directive.ts
│ │ ├── smartChip.content.directive.ts
│ │ └── hasSubmenu.pipe.ts
│ ├── coordTextBox
│ │ ├── coordTextBox.style.css
│ │ ├── index.ts
│ │ └── coordTextBox.template.html
│ ├── fabSpeedDial
│ │ └── index.ts
│ ├── vButton
│ │ ├── vButton.style.css
│ │ └── vButton.template.html
│ └── safeHtml.pipe.ts
├── state
│ ├── userInterface
│ │ ├── ui.ts
│ │ ├── const.ts
│ │ ├── index.ts
│ │ └── selectors.ts
│ ├── annotations
│ │ ├── const.ts
│ │ └── index.ts
│ ├── userInteraction
│ │ ├── const.ts
│ │ └── index.ts
│ ├── plugins
│ │ ├── const.ts
│ │ ├── index.ts
│ │ ├── actions.ts
│ │ └── selectors.ts
│ ├── userPreference
│ │ ├── index.ts
│ │ └── const.ts
│ ├── atlasAppearance
│ │ └── index.ts
│ ├── atlasSelection
│ │ └── index.ts
│ └── state.module.ts
├── util
│ ├── regionFlattener.spec.ts
│ ├── side-panel
│ │ ├── side-panel.component.scss
│ │ └── side-panel.component.ts
│ ├── recursivePartial.ts
│ ├── windowResize
│ │ ├── index.ts
│ │ └── module.ts
│ ├── df-to-ds.pipe.spec.ts
│ ├── regionFlattener.ts
│ ├── pretty-present.pipe.spec.ts
│ ├── index.ts
│ ├── pipes
│ │ ├── getUnique.pipe.ts
│ │ ├── nmToMm.pipe.ts
│ │ ├── mapToProperty.pipe.ts
│ │ ├── combineFn.pipe.ts
│ │ ├── getProperty.pipe.ts
│ │ ├── filterArray.pipe.ts
│ │ ├── doiPipe.pipe.ts
│ │ ├── parseAsNumber.pipe.ts
│ │ ├── getNthElement.pipe.ts
│ │ ├── getFilename.pipe.ts
│ │ └── safeResource.pipe.ts
│ ├── siibraApiConstants
│ │ └── fn.ts
│ ├── mergeObj.pipe.ts
│ ├── directives
│ │ ├── trigger.directive.ts
│ │ └── destroy.directive.ts
│ ├── array.ts
│ └── includes.pipe.ts
├── viewerModule
│ ├── constants.ts
│ ├── leap
│ │ ├── index.ts
│ │ ├── leapSignal
│ │ │ └── leapSignal.style.css
│ │ └── signal.directive.ts
│ ├── nehuba
│ │ ├── util.spec.ts
│ │ ├── ngLayerCtlModule
│ │ │ ├── index.ts
│ │ │ └── ngLayerCtl
│ │ │ │ └── ngLayerCtrl.style.css
│ │ ├── navigation.service
│ │ │ └── index.ts
│ │ ├── config.service
│ │ │ └── config.service.spec.ts
│ │ ├── nehubaViewerInterface
│ │ │ ├── nehubaViewerContainer.style.css
│ │ │ └── nehubaViewerContainer.template.html
│ │ ├── viewerCtrl
│ │ │ ├── index.ts
│ │ │ ├── snapPerspectiveOrientation
│ │ │ │ └── snapPerspectiveOrientation.style.sass
│ │ │ └── viewerCtrlCmp
│ │ │ │ └── viewerCtrlCmp.style.css
│ │ ├── layoutOverlay
│ │ │ └── index.ts
│ │ ├── mesh.service
│ │ │ └── index.ts
│ │ ├── statusCard
│ │ │ └── statusCard.style.css
│ │ ├── userLayers
│ │ │ ├── index.ts
│ │ │ └── userlayerInfo
│ │ │ │ └── userlayerInfo.style.scss
│ │ ├── layerCtrl.service
│ │ │ └── index.ts
│ │ ├── nehubaViewer
│ │ │ ├── nehubaViewer.style.css
│ │ │ └── nehubaViewer.template.html
│ │ ├── index.ts
│ │ └── store
│ │ │ ├── selectors.ts
│ │ │ ├── index.ts
│ │ │ └── type.ts
│ ├── threeSurfer
│ │ ├── util.ts
│ │ ├── tsViewerConfig
│ │ │ ├── tsViewerConfig.style.css
│ │ │ ├── tsViewerConfig.template.html
│ │ │ └── tsViewerConfig.component.ts
│ │ ├── store
│ │ │ ├── const.ts
│ │ │ ├── index.ts
│ │ │ ├── actions.ts
│ │ │ └── selectors.ts
│ │ ├── index.ts
│ │ └── threeSurferGlue
│ │ │ └── threeSurfer.style.css
│ ├── viewerWrapper
│ │ └── viewerWrapper.style.css
│ ├── index.ts
│ └── viewerCmp
│ │ └── viewerCmp.component.spec.ts
├── main-aot.ts
├── messaging
│ └── nmvSwc
│ │ ├── index.spec.ts
│ │ └── type.ts
├── assets
│ ├── images
│ │ ├── persp-view
│ │ │ ├── .gitattributes
│ │ │ ├── allen_axial_0.png
│ │ │ ├── allen_axial_1.png
│ │ │ ├── mni152_axial_0.png
│ │ │ ├── mni152_axial_1.png
│ │ │ ├── allen_coronal_0.png
│ │ │ ├── allen_coronal_1.png
│ │ │ ├── allen_sagittal_0.png
│ │ │ ├── allen_sagittal_1.png
│ │ │ ├── bigbrain_axial_0.png
│ │ │ ├── bigbrain_axial_1.png
│ │ │ ├── colin27_axial_0.png
│ │ │ ├── colin27_axial_1.png
│ │ │ ├── mebrains_axial_0.png
│ │ │ ├── mebrains_axial_1.png
│ │ │ ├── mni152_coronal_0.png
│ │ │ ├── mni152_coronal_1.png
│ │ │ ├── waxholm_axial_0.png
│ │ │ ├── waxholm_axial_1.png
│ │ │ ├── bigbrain_coronal_0.png
│ │ │ ├── bigbrain_coronal_1.png
│ │ │ ├── bigbrain_sagittal_0.png
│ │ │ ├── bigbrain_sagittal_1.png
│ │ │ ├── colin27_coronal_0.png
│ │ │ ├── colin27_coronal_1.png
│ │ │ ├── colin27_sagittal_0.png
│ │ │ ├── colin27_sagittal_1.png
│ │ │ ├── mebrains_coronal_0.png
│ │ │ ├── mebrains_coronal_1.png
│ │ │ ├── mebrains_sagittal_0.png
│ │ │ ├── mebrains_sagittal_1.png
│ │ │ ├── mni152_sagittal_0.png
│ │ │ ├── mni152_sagittal_1.png
│ │ │ ├── waxholm_coronal_0.png
│ │ │ ├── waxholm_coronal_1.png
│ │ │ ├── waxholm_sagittal_0.png
│ │ │ └── waxholm_sagittal_1.png
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 1-100.png
│ │ ├── 1-200.png
│ │ ├── 1-300.png
│ │ ├── 1-400.png
│ │ ├── 2-100.png
│ │ ├── 2-200.png
│ │ ├── 2-300.png
│ │ ├── 2-400.png
│ │ ├── 3-100.png
│ │ ├── 3-200.png
│ │ ├── 3-300.png
│ │ ├── 3-400.png
│ │ ├── MNIColin27.png
│ │ ├── big-brain.png
│ │ ├── MNIColin27-100.png
│ │ ├── MNIColin27-200.png
│ │ ├── MNIColin27-300.png
│ │ ├── MNIColin27-400.png
│ │ ├── how-to-cite-1.png
│ │ ├── how-to-cite-2.png
│ │ ├── how-to-cite-3.png
│ │ ├── BigBrainHistology.png
│ │ ├── BigBrainHistology-100.png
│ │ ├── BigBrainHistology-200.png
│ │ ├── BigBrainHistology-300.png
│ │ ├── BigBrainHistology-400.png
│ │ ├── WaxholmSpaceratbrainMRIDTI.png
│ │ ├── ICBM2009cNonlinearAsymmetric.png
│ │ ├── WaxholmSpaceratbrainMRIDTI-100.png
│ │ ├── WaxholmSpaceratbrainMRIDTI-200.png
│ │ ├── WaxholmSpaceratbrainMRIDTI-300.png
│ │ ├── WaxholmSpaceratbrainMRIDTI-400.png
│ │ ├── ICBM2009cNonlinearAsymmetric-100.png
│ │ ├── ICBM2009cNonlinearAsymmetric-200.png
│ │ ├── ICBM2009cNonlinearAsymmetric-300.png
│ │ ├── ICBM2009cNonlinearAsymmetric-400.png
│ │ ├── MNI152ICBM2009cNonlinearAsymmetric.png
│ │ ├── MNI152ICBM2009cNonlinearAsymmetric-100.png
│ │ ├── MNI152ICBM2009cNonlinearAsymmetric-200.png
│ │ ├── MNI152ICBM2009cNonlinearAsymmetric-300.png
│ │ ├── MNI152ICBM2009cNonlinearAsymmetric-400.png
│ │ ├── AllenMouseCommonCoordinateFrameworkv32015.png
│ │ ├── AllenMouseCommonCoordinateFrameworkv32015-100.png
│ │ ├── AllenMouseCommonCoordinateFrameworkv32015-200.png
│ │ ├── AllenMouseCommonCoordinateFrameworkv32015-300.png
│ │ └── AllenMouseCommonCoordinateFrameworkv32015-400.png
│ ├── favicons
│ │ └── favicon-128-light.png
│ ├── academicons
│ │ └── fonts
│ │ │ ├── academicons.eot
│ │ │ ├── academicons.ttf
│ │ │ └── academicons.woff
│ ├── logo
│ │ ├── HBP_Primary_RGB_BlackText.png
│ │ └── HBP_Primary_RGB_WhiteText.png
│ └── fontawesome
│ │ └── webfonts
│ │ ├── fa-brands-400.eot
│ │ ├── fa-brands-400.ttf
│ │ ├── fa-solid-900.eot
│ │ ├── fa-solid-900.ttf
│ │ ├── fa-solid-900.woff
│ │ ├── fa-brands-400.woff
│ │ ├── fa-brands-400.woff2
│ │ ├── fa-regular-400.eot
│ │ ├── fa-regular-400.ttf
│ │ ├── fa-regular-400.woff
│ │ ├── fa-regular-400.woff2
│ │ └── fa-solid-900.woff2
├── atlasComponents
│ ├── annotations
│ │ ├── module.ts
│ │ └── index.ts
│ ├── sapi
│ │ ├── core
│ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── codeSnippets
│ │ │ └── codeSnippet.style.scss
│ │ └── README.md
│ ├── sapiViews
│ │ ├── core
│ │ │ ├── rich
│ │ │ │ ├── index.ts
│ │ │ │ ├── regionsListSearch
│ │ │ │ │ ├── regionListSearch.style.css
│ │ │ │ │ └── regionListSearchTmpl.directive.ts
│ │ │ │ ├── ATPSelector
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── pureDumbDropdown
│ │ │ │ │ │ └── pureATPDropDown.style.css
│ │ │ │ │ ├── wrapper
│ │ │ │ │ │ └── wrapper.style.css
│ │ │ │ │ └── pureDumb
│ │ │ │ │ │ └── pureATPSelector.components.ts
│ │ │ │ └── regionsHierarchy
│ │ │ │ │ └── regionsHierarchy.style.css
│ │ │ ├── atlas
│ │ │ │ ├── index.ts
│ │ │ │ └── splashScreen
│ │ │ │ │ ├── splashScreen.style.css
│ │ │ │ │ └── splashScreen.template.html
│ │ │ ├── region
│ │ │ │ ├── index.ts
│ │ │ │ └── region
│ │ │ │ │ └── listItem
│ │ │ │ │ ├── region.listItem.style.css
│ │ │ │ │ └── region.listItem.template.html
│ │ │ ├── index.ts
│ │ │ ├── space
│ │ │ │ └── index.ts
│ │ │ └── parcellation
│ │ │ │ ├── groupedParcellation.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── isGroupedParcellation.pipe.ts
│ │ │ │ └── parcTmplDoi.pipe.ts
│ │ ├── util
│ │ │ ├── index.ts
│ │ │ ├── numbers.pipe.ts
│ │ │ ├── parseDoi.pipe.ts
│ │ │ ├── addUnitAndJoin.pipe.ts
│ │ │ └── equality.pipe.ts
│ │ ├── index.ts
│ │ ├── module.ts
│ │ └── volumes
│ │ │ └── sandsToNum.pipe.ts
│ ├── userAnnotations
│ │ ├── tools
│ │ │ ├── point
│ │ │ │ └── point.style.css
│ │ │ ├── line
│ │ │ │ └── line.style.css
│ │ │ └── poly
│ │ │ │ └── poly.style.css
│ │ ├── singleAnnotationUnit
│ │ │ └── singleAnnotationUnit.style.css
│ │ ├── constants.ts
│ │ ├── index.ts
│ │ ├── annotationMode
│ │ │ └── annotationMode.style.css
│ │ ├── annotationVisible.pipe.ts
│ │ └── annotationList
│ │ │ └── annotationList.style.css
│ └── constants.ts
├── features
│ ├── TPBRView
│ │ └── TPBRView.style.scss
│ ├── atlas-colormap-intents
│ │ ├── intents.style.css
│ │ ├── intents.template.html
│ │ └── index.ts
│ ├── pointcloud-intents
│ │ ├── intents.style.css
│ │ ├── intents.template.html
│ │ └── index.ts
│ ├── index.ts
│ ├── plotly
│ │ ├── plot
│ │ │ ├── plot.component.html
│ │ │ └── plot.component.scss
│ │ └── index.ts
│ ├── compoundFeatureIndices
│ │ ├── compoundFeatureIndices.style.css
│ │ ├── index.ts
│ │ ├── util.ts
│ │ └── idxToText.pipe.ts
│ ├── connectivity
│ │ ├── connectivityBrowser
│ │ │ └── connectivityBrowser.style.scss
│ │ └── index.ts
│ ├── category-acc.directive.spec.ts
│ ├── featureName.pipe.ts
│ ├── guards.ts
│ ├── grpFeatToName.pipe.ts
│ ├── grpFeatToTotal.pipe.ts
│ └── feature-view
│ │ └── feature-view.component.scss
├── share
│ ├── shareSheet
│ │ └── shareSheet.style.css
│ ├── index.ts
│ ├── type.ts
│ └── share.directive.ts
├── freeModeModule
│ ├── freemode-ui
│ │ └── freemode-ui.style.scss
│ └── index.ts
├── main.ts
├── routerModule
│ ├── const.ts
│ └── index.ts
├── plugin
│ ├── index.ts
│ ├── types.ts
│ ├── pluginBanner
│ │ └── pluginBanner.style.css
│ └── const.ts
├── sharedModules
│ ├── icon
│ │ ├── icon.style.scss
│ │ └── index.ts
│ └── index.ts
├── version.css
├── auth
│ ├── index.ts
│ ├── signinModal
│ │ └── signinModal.style.css
│ └── auth.directive.ts
├── logging
│ ├── index.ts
│ └── logging.module.ts
├── layouts
│ ├── currentLayout
│ │ └── currentLayout.style.css
│ ├── layouts
│ │ ├── single
│ │ │ ├── single.template.html
│ │ │ ├── single.style.css
│ │ │ └── single.component.ts
│ │ ├── h13
│ │ │ ├── h13.style.css
│ │ │ └── h13.component.ts
│ │ ├── v13
│ │ │ ├── v13.style.css
│ │ │ └── v13.component.ts
│ │ ├── fourPanel
│ │ │ ├── fourPanel.style.css
│ │ │ ├── fourPanel.component.ts
│ │ │ └── fourPanel.template.html
│ │ └── pip
│ │ │ ├── pip.style.css
│ │ │ ├── pip.template.html
│ │ │ └── pip.component.ts
│ └── fourCorners
│ │ └── fourCorners.component.ts
├── mouseoverModule
│ ├── index.ts
│ └── mouseover.style.css
├── strictLocal
│ ├── index.ts
│ └── strictLocalCmp
│ │ └── strictLocalCmp.component.ts
├── spotlight
│ ├── spotlight-backdrop
│ │ ├── spotlight-backdrop.component.html
│ │ ├── spotlight-backdrop.component.spec.ts
│ │ └── spotlight-backdrop.component.css
│ ├── const.ts
│ ├── spot-light-overlay.directive.ts
│ ├── sl-spotlight.directive.spec.ts
│ ├── sl-service.service.spec.ts
│ ├── spot-light-overlay.directive.spec.ts
│ └── sl-spotlight.directive.ts
├── zipFilesOutput
│ └── type.ts
├── dragDropFile
│ ├── index.ts
│ └── module.ts
├── environments
│ ├── environment.ts
│ └── environment.prod.ts
├── screenshot
│ ├── index.ts
│ ├── util.ts
│ └── screenshotCmp
│ │ └── screenshot.style.css
├── api
│ ├── index.ts
│ ├── request
│ │ ├── sxplr.exit__toSxplr__response.json
│ │ ├── sxplr.loadLayers__toSxplr__response.json
│ │ ├── sxplr.navigateTo__toSxplr__response.json
│ │ ├── sxplr.selectAtlas__toSxplr__response.json
│ │ ├── sxplr.addAnnotations__toSxplr__response.json
│ │ ├── sxplr.cancelRequest__toSxplr__response.json
│ │ ├── sxplr.removeLayers__toSxplr__response.json
│ │ ├── sxplr.rmAnnotations__toSxplr__response.json
│ │ ├── sxplr.selectTemplate__toSxplr__response.json
│ │ ├── sxplr.setAuxMeshAlpha__toSxplr__response.json
│ │ ├── sxplr.setOctantRemoval__toSxplr__response.json
│ │ ├── sxplr.updateLayers__toSxplr__response.json
│ │ ├── sxplr.selectParcellation__toSxplr__response.json
│ │ ├── sxplr.getAllAtlases__toSxplr__request.json
│ │ ├── sxplr.getSupportedTemplates__toSxplr__request.json
│ │ ├── sxplr.getSupportedParcellations__toSxplr__request.json
│ │ ├── sxplr.cancelRequest__toSxplr__request.json
│ │ ├── sxplr.setAuxMeshAlpha__toSxplr__request.json
│ │ └── sxplr.setOctantRemoval__toSxplr__request.json
│ └── handshake
│ │ ├── sxplr.init__fromSxplr__request.json
│ │ ├── sxplr.init__fromSxplr__response.json
│ │ └── README.md
├── contextMenuModule
│ └── index.ts
├── notSupportedCmp
│ └── notSupported.style.css
├── widget
│ ├── index.ts
│ └── widgetCanvas.directive.ts
├── atlasViewer
│ └── atlasViewer.animation.ts
├── experimental
│ └── experimental.service.ts
└── atlas-download
│ └── atlas-download.module.ts
├── .dockerignore
├── .prettierrc
├── docs
├── .gitignore
├── develop
│ └── update_plugin_deployment.md
├── basics
│ └── helperOnePager.md
├── requirements.txt
├── releases
│ ├── v2.5.3.md
│ ├── v2.14.9.md
│ ├── v2.6.10.md
│ ├── v2.14.19.md
│ ├── v2.5.2.md
│ ├── v2.4.6.md
│ ├── v2.3.4.md
│ ├── v2.3.6.md
│ ├── v2.4.1.md
│ ├── v2.6.9.md
│ ├── v2.3.2.md
│ ├── v2.3.7.md
│ ├── v2.3.8.md
│ ├── v2.3.9.md
│ ├── v2.6.1.md
│ ├── v2.7.7.md
│ ├── v2.6.8.md
│ ├── legacy.md
│ ├── v2.11.4.md
│ ├── v2.4.5.md
│ ├── v2.7.1.md
│ ├── v2.14.14.md
│ ├── v2.5.6.md
│ ├── v2.6.4.md
│ ├── v2.3.10.md
│ ├── v2.13.5.md
│ ├── v2.2.7.md
│ ├── v2.7.4.md
│ ├── v2.14.17.md
│ ├── v2.2.1.md
│ ├── v2.3.5.md
│ ├── v2.6.3.md
│ ├── v2.14.25.md
│ ├── v2.2.5.md
│ ├── v2.14.21.md
│ ├── v2.4.3.md
│ ├── v0.2.0.md
│ ├── v2.11.3.md
│ ├── v2.2.4.md
│ ├── v2.5.8.md
│ ├── v0.1.0.md
│ ├── v2.13.3.md
│ ├── v2.14.8.md
│ ├── v2.14.6.md
│ ├── v2.3.11.md
│ ├── v2.10.3.md
│ ├── v2.5.5.md
│ ├── v2.3.1.md
│ ├── v2.4.2.md
│ ├── v2.12.1.md
│ ├── v2.12.4.md
│ ├── v2.3.3.md
│ ├── v2.6.7.md
│ ├── v2.10.2.md
│ ├── v2.13.2.md
│ ├── v2.5.0.md
│ ├── v2.12.5.md
│ ├── v2.4.4.md
│ ├── v2.2.6.md
│ ├── v2.1.2.md
│ ├── v2.13.1.md
│ ├── v2.4.7.md
│ ├── v2.9.1.md
│ ├── v2.5.4.md
│ ├── v2.1.1.md
│ ├── v2.1.3.md
│ ├── v2.5.1.md
│ ├── v2.0.1.md
│ ├── v2.10.1.md
│ ├── v2.6.6.md
│ ├── v2.14.24.md
│ ├── v2.6.5.md
│ ├── v2.14.22.md
│ ├── v2.7.3.md
│ ├── v2.14.12.md
│ ├── v2.7.0.md
│ ├── v2.14.1.md
│ ├── v2.7.6.md
│ ├── v2.12.2.md
│ ├── v2.12.3.md
│ ├── v2.9.0.md
│ ├── v2.14.4.md
│ ├── v2.7.2.md
│ ├── v2.10.0.md
│ ├── v2.14.15.md
│ ├── v2.14.7.md
│ ├── v2.14.3.md
│ ├── v2.14.18.md
│ ├── v2.2.3.md
│ ├── v2.6.2.md
│ ├── v2.14.20.md
│ ├── v2.14.11.md
│ ├── v2.4.8.md
│ ├── v2.13.0.md
│ ├── v0.3.0-beta.md
│ ├── v2.13.4.md
│ ├── v2.5.7.md
│ └── v0.2.9.md
├── images
│ └── siibra-explorer-square.jpeg
├── advanced
│ ├── differential_gene_expression_analysis.md
│ ├── api
│ │ ├── request
│ │ │ ├── sxplr.exit__toSxplr__response.json
│ │ │ ├── sxplr.loadLayers__toSxplr__response.json
│ │ │ ├── sxplr.navigateTo__toSxplr__response.json
│ │ │ ├── sxplr.selectAtlas__toSxplr__response.json
│ │ │ ├── sxplr.addAnnotations__toSxplr__response.json
│ │ │ ├── sxplr.cancelRequest__toSxplr__response.json
│ │ │ ├── sxplr.removeLayers__toSxplr__response.json
│ │ │ ├── sxplr.rmAnnotations__toSxplr__response.json
│ │ │ ├── sxplr.selectTemplate__toSxplr__response.json
│ │ │ ├── sxplr.setAuxMeshAlpha__toSxplr__response.json
│ │ │ ├── sxplr.setOctantRemoval__toSxplr__response.json
│ │ │ ├── sxplr.updateLayers__toSxplr__response.json
│ │ │ ├── sxplr.selectParcellation__toSxplr__response.json
│ │ │ ├── sxplr.getAllAtlases__toSxplr__request.json
│ │ │ ├── sxplr.getSupportedTemplates__toSxplr__request.json
│ │ │ ├── sxplr.getSupportedParcellations__toSxplr__request.json
│ │ │ ├── sxplr.cancelRequest__toSxplr__request.json
│ │ │ ├── sxplr.setAuxMeshAlpha__toSxplr__request.json
│ │ │ └── sxplr.setOctantRemoval__toSxplr__request.json
│ │ └── handshake
│ │ │ ├── sxplr.init__fromSxplr__request.json
│ │ │ └── sxplr.init__fromSxplr__response.json
│ └── annotating_structures.md
├── extra.css
└── Dockerfile
├── .helm
├── adhoc
│ ├── .gitignore
│ ├── service-redis.yml
│ └── example-secret-siibra-explorer.yml
├── trafficcop
│ ├── templates
│ │ ├── service.yaml
│ │ ├── serviceaccount.yaml
│ │ └── tests
│ │ │ └── test-connection.yaml
│ └── .helmignore
└── siibra-explorer
│ ├── .helmignore
│ └── templates
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
├── backend
├── app
│ ├── well-known
│ │ ├── robot.txt
│ │ └── security.txt
│ └── cors.py
├── .gitignore
├── pytest.ini
├── requirements.txt
└── test_app
│ └── test_sane_url.py
├── .gitattributes
├── .eslintignore
├── .storybook
├── typings.d.ts
├── tsconfig.json
└── main.js
├── third_party
├── extra_js.js
├── vanilla_nehuba.js
└── preinit_vanilla.html
├── .metaSpec
├── example.min.meta.json
└── meta.schema.json
├── tsconfig.spec.json
├── typings
└── index.d.ts
├── tsconfig.app.json
├── features
├── docs-storing-sharing-3dview.feature
└── doc-launch-quicktour.feature
├── .gitignore
├── e2e_env.md
├── cypress.config.js
└── .github
└── workflows
└── code
└── create-checklist-comment.js
/src/ui/config/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/help/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/topMenu/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/src/getFileInput/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/keyframesModule/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/res/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 |
--------------------------------------------------------------------------------
/src/components/parseAttribute.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/state/userInterface/ui.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/cookieAgreement/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/util/regionFlattener.spec.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/viewerModule/constants.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/viewerModule/leap/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false
3 | }
--------------------------------------------------------------------------------
/src/components/dialog/dialog.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main-aot.ts:
--------------------------------------------------------------------------------
1 | import './main-common'
--------------------------------------------------------------------------------
/src/messaging/nmvSwc/index.spec.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/dialogInfo/tmpl/tmpl.stories.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/kgtos/kgtos/kgtos.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/util.spec.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/util.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | autogen_images
2 | venv
3 |
--------------------------------------------------------------------------------
/docs/develop/update_plugin_deployment.md:
--------------------------------------------------------------------------------
1 | TBD
--------------------------------------------------------------------------------
/src/assets/images/persp-view/.gitattributes:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/atlasComponents/annotations/module.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapi/core/index.ts:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/components/overlay/overlay.style.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/features/TPBRView/TPBRView.style.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/share/shareSheet/shareSheet.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/help/howToCite/howToCite.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.helm/adhoc/.gitignore:
--------------------------------------------------------------------------------
1 | secret-siibra-explorer.yml
--------------------------------------------------------------------------------
/backend/app/well-known/robot.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/ui/help/helpOnePager/helpOnePager.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/.gitignore:
--------------------------------------------------------------------------------
1 | venv
2 | __pycache__
3 | .env
4 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/atlas/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/confirmDialog/confirmDialog.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/features/atlas-colormap-intents/intents.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/features/pointcloud-intents/intents.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/features/pointcloud-intents/intents.template.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/freeModeModule/freemode-ui/freemode-ui.style.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/ngLayerCtlModule/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/basics/helperOnePager.md:
--------------------------------------------------------------------------------
1 | ../../common/helpOnePager.md
--------------------------------------------------------------------------------
/src/features/atlas-colormap-intents/intents.template.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/navigation.service/index.ts:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/viewerModule/viewerWrapper/viewerWrapper.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/tools/point/point.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/textareaCopyExport/textareaCopyExport.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/features/index.ts:
--------------------------------------------------------------------------------
1 | export { FeatureModule } from "./module"
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/config.service/config.service.spec.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'reflect-metadata'
2 | import './main-common'
3 |
--------------------------------------------------------------------------------
/src/routerModule/const.ts:
--------------------------------------------------------------------------------
1 | export const STATE_DEBOUNCE_MS = 160
2 |
--------------------------------------------------------------------------------
/src/share/index.ts:
--------------------------------------------------------------------------------
1 | export { ShareModule } from './share.module'
2 |
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/tsViewerConfig/tsViewerConfig.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/freeModeModule/index.ts:
--------------------------------------------------------------------------------
1 | export { FreeModeModule } from "./module"
2 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | src/atlasComponents/sapi/schema.ts linguist-generated=true
2 |
--------------------------------------------------------------------------------
/docs/requirements.txt:
--------------------------------------------------------------------------------
1 | mkdocs
2 | mkdocs-material
3 | mdx_truly_sane_lists
4 |
--------------------------------------------------------------------------------
/src/features/plotly/plot/plot.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/plugin/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | PluginModule
3 | } from './plugin.module'
--------------------------------------------------------------------------------
/src/sharedModules/icon/icon.style.scss:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | margin: auto;
4 | }
--------------------------------------------------------------------------------
/src/state/annotations/const.ts:
--------------------------------------------------------------------------------
1 | export const nameSpace = `[state.annotations]`
--------------------------------------------------------------------------------
/src/ui/bottomMenu/index.ts:
--------------------------------------------------------------------------------
1 | export { BottomMenuModule } from "./module"
2 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | *.spec.ts
2 | src/atlasComponents/sapi/schema.ts
3 | **/*.stories.ts
--------------------------------------------------------------------------------
/docs/releases/v2.5.3.md:
--------------------------------------------------------------------------------
1 | # v2.5.3
2 |
3 | ## Bugfixes
4 |
5 | - revert v2.5.2
6 |
--------------------------------------------------------------------------------
/src/components/overlay/index.ts:
--------------------------------------------------------------------------------
1 | export { SxplrOverlaySvc } from "./overlay.service"
--------------------------------------------------------------------------------
/src/routerModule/index.ts:
--------------------------------------------------------------------------------
1 | export { AtlasViewerRouterModule } from './module'
2 |
--------------------------------------------------------------------------------
/src/sharedModules/icon/index.ts:
--------------------------------------------------------------------------------
1 | export { IconComponent } from "./icon.component"
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/store/const.ts:
--------------------------------------------------------------------------------
1 | export const nameSpace = `[threeSurfer]`
--------------------------------------------------------------------------------
/backend/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | pythonpath = .
3 | testpaths =
4 | test_app
5 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/flatHierarchy/index.ts:
--------------------------------------------------------------------------------
1 | export { SxplrFlatHierarchyModule } from "./module"
--------------------------------------------------------------------------------
/src/state/userInteraction/const.ts:
--------------------------------------------------------------------------------
1 | export const nameSpace = `[state.userInteraction]`
--------------------------------------------------------------------------------
/src/version.css:
--------------------------------------------------------------------------------
1 | /* fall back */
2 | body::after
3 | {
4 | content: 'dev build';
5 | }
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/index.ts:
--------------------------------------------------------------------------------
1 | export { ThreeSurferModule } from './module'
2 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.9.md:
--------------------------------------------------------------------------------
1 | # v2.14.9
2 |
3 | ## Bugfix
4 |
5 | - Fix deployment issues
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.10.md:
--------------------------------------------------------------------------------
1 | # 2.6.9
2 |
3 | ## Bugfix
4 |
5 | - Remove empty quick tour.
6 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/util/index.ts:
--------------------------------------------------------------------------------
1 | export { SapiViewsUtilModule } from "./module"
--------------------------------------------------------------------------------
/src/components/markdown/markdownCmp/markdown.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: block;
4 | }
--------------------------------------------------------------------------------
/src/features/plotly/plot/plot.component.scss:
--------------------------------------------------------------------------------
1 | .plotly-root
2 | {
3 | width:100%;
4 | }
5 |
--------------------------------------------------------------------------------
/src/util/side-panel/side-panel.component.scss:
--------------------------------------------------------------------------------
1 | mat-card-header
2 | {
3 | padding: 16px;
4 | }
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/viewerCtrl/index.ts:
--------------------------------------------------------------------------------
1 | export { ViewerCtrlModule } from './module'
2 |
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/tsViewerConfig/tsViewerConfig.template.html:
--------------------------------------------------------------------------------
1 | tsviewer config
2 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.19.md:
--------------------------------------------------------------------------------
1 | # v2.14.19
2 |
3 | ## Bugfix
4 |
5 | - Fixed Safari not loading bug
--------------------------------------------------------------------------------
/docs/releases/v2.5.2.md:
--------------------------------------------------------------------------------
1 | # v2.5.2
2 |
3 | ## Bugfixes
4 |
5 | - fix big brain high resolution maps
--------------------------------------------------------------------------------
/docs/releases/v2.4.6.md:
--------------------------------------------------------------------------------
1 | # v2.4.6
2 |
3 | ## Bugfixes
4 |
5 | - Fix space press issue on full view
6 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/region/index.ts:
--------------------------------------------------------------------------------
1 | export { SapiViewsCoreRegionModule } from "./module"
--------------------------------------------------------------------------------
/src/components/dynamicMaterialBtn/dynamicMaterialBtn.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | background: none;
4 | }
--------------------------------------------------------------------------------
/src/features/atlas-colormap-intents/index.ts:
--------------------------------------------------------------------------------
1 | export { AtlasColorMapIntents } from "./intents.component"
--------------------------------------------------------------------------------
/src/features/plotly/index.ts:
--------------------------------------------------------------------------------
1 | export { PlotComponent as PlotlyComponent } from "./plot/plot.component"
--------------------------------------------------------------------------------
/src/plugin/types.ts:
--------------------------------------------------------------------------------
1 | export type PluginManifest = {
2 | name: string
3 | iframeUrl: string
4 | }
5 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/viewerCtrl/snapPerspectiveOrientation/snapPerspectiveOrientation.style.sass:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.4.md:
--------------------------------------------------------------------------------
1 | # v2.3.4
2 |
3 | ## Bugfixes
4 |
5 | - fix connectivity dataset external link
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.6.md:
--------------------------------------------------------------------------------
1 | # v2.3.6
2 |
3 | ## Bugfixes
4 |
5 | - fix backwards compatibility with some URLs
--------------------------------------------------------------------------------
/docs/releases/v2.4.1.md:
--------------------------------------------------------------------------------
1 | # v2.4.1
2 |
3 | ## Bugfixes
4 |
5 | - fix JulichBrain v2.5.0/v1.18 URL redirection
--------------------------------------------------------------------------------
/docs/releases/v2.6.9.md:
--------------------------------------------------------------------------------
1 | # 2.6.9
2 |
3 | ## Bugfix
4 |
5 | - Bumped version of ng-layer-tune dependency
6 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/constants.ts:
--------------------------------------------------------------------------------
1 | export const userAnnotationRouteKey = 'x-user-anntn'
2 |
--------------------------------------------------------------------------------
/src/auth/index.ts:
--------------------------------------------------------------------------------
1 | export { AuthModule } from './auth.module'
2 | export { AuthService } from './auth.service'
--------------------------------------------------------------------------------
/src/plugin/pluginBanner/pluginBanner.style.css:
--------------------------------------------------------------------------------
1 | .sub
2 | {
3 | transform: translate(25%, 25%);
4 | }
5 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.2.md:
--------------------------------------------------------------------------------
1 | # v2.3.2
2 |
3 | ## Bugfixes
4 |
5 | - change URL source for connectivity browser.
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.7.md:
--------------------------------------------------------------------------------
1 | # v2.3.7
2 |
3 | ## Under the hood stuff
4 |
5 | - Enable CI for release workflow.
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.8.md:
--------------------------------------------------------------------------------
1 | # v2.3.8
2 |
3 | ## New Features
4 |
5 | - Adding control allowing delineation control
--------------------------------------------------------------------------------
/docs/releases/v2.3.9.md:
--------------------------------------------------------------------------------
1 | # v2.3.9
2 |
3 | ## Bugfixes
4 |
5 | - Explore in other templates sometimes bugs out.
--------------------------------------------------------------------------------
/docs/releases/v2.6.1.md:
--------------------------------------------------------------------------------
1 | # v2.6.1
2 |
3 | ## Bugfix
4 |
5 | - Fixed perspective view orientation button colors
--------------------------------------------------------------------------------
/docs/releases/v2.7.7.md:
--------------------------------------------------------------------------------
1 | # v2.7.7
2 |
3 | ## Bugfix
4 |
5 | - Fixed region hierarchy losing interactivity
6 |
--------------------------------------------------------------------------------
/src/assets/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/1.png
--------------------------------------------------------------------------------
/src/assets/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/2.png
--------------------------------------------------------------------------------
/src/assets/images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/3.png
--------------------------------------------------------------------------------
/src/auth/signinModal/signinModal.style.css:
--------------------------------------------------------------------------------
1 | a
2 | {
3 | display:inline-block;
4 | margin-top: 0.25rem;
5 | }
--------------------------------------------------------------------------------
/src/components/tab/tab.style.scss:
--------------------------------------------------------------------------------
1 | i
2 | {
3 | margin-left:0.5rem;
4 | margin-right:-0.5rem;
5 | }
6 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/layoutOverlay/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | NehubaLayoutOverlayModule
3 | } from "./module"
4 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/mesh.service/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | NehubaMeshService
3 | } from './mesh.service'
4 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/statusCard/statusCard.style.css:
--------------------------------------------------------------------------------
1 | .expandedContainer
2 | {
3 | width: 26rem;
4 | }
5 |
--------------------------------------------------------------------------------
/.storybook/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.md' {
2 | const content: string;
3 | export default content;
4 | }
5 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.8.md:
--------------------------------------------------------------------------------
1 | # 2.6.8
2 |
3 | ## Bugfix
4 |
5 | - increment siibra-api version, fix ebrains dataset
6 |
--------------------------------------------------------------------------------
/src/assets/images/1-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/1-100.png
--------------------------------------------------------------------------------
/src/assets/images/1-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/1-200.png
--------------------------------------------------------------------------------
/src/assets/images/1-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/1-300.png
--------------------------------------------------------------------------------
/src/assets/images/1-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/1-400.png
--------------------------------------------------------------------------------
/src/assets/images/2-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/2-100.png
--------------------------------------------------------------------------------
/src/assets/images/2-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/2-200.png
--------------------------------------------------------------------------------
/src/assets/images/2-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/2-300.png
--------------------------------------------------------------------------------
/src/assets/images/2-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/2-400.png
--------------------------------------------------------------------------------
/src/assets/images/3-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/3-100.png
--------------------------------------------------------------------------------
/src/assets/images/3-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/3-200.png
--------------------------------------------------------------------------------
/src/assets/images/3-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/3-300.png
--------------------------------------------------------------------------------
/src/assets/images/3-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/3-400.png
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/ATPSelector/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | ATPSelectorModule
3 | } from "./module"
--------------------------------------------------------------------------------
/src/res/icons/iav-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/res/icons/iav-icons.ttf
--------------------------------------------------------------------------------
/docs/releases/legacy.md:
--------------------------------------------------------------------------------
1 | # legacy
2 |
3 | Apr 2018
4 |
5 | First prototype of interactive atlas viewer wrapping nehuba
6 |
--------------------------------------------------------------------------------
/src/components/spinner/spinnerCmp/spinner.template.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/features/compoundFeatureIndices/compoundFeatureIndices.style.css:
--------------------------------------------------------------------------------
1 | .mat-mdc-cell
2 | {
3 | cursor: pointer;
4 | }
5 |
--------------------------------------------------------------------------------
/src/logging/index.ts:
--------------------------------------------------------------------------------
1 | export { LoggingModule } from './logging.module'
2 | export { LoggingService } from './logging.service'
--------------------------------------------------------------------------------
/src/res/icons/iav-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/res/icons/iav-icons.woff
--------------------------------------------------------------------------------
/src/ui/help/howToCite/howToCite.template.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/releases/v2.11.4.md:
--------------------------------------------------------------------------------
1 | # v2.11.4
2 |
3 | ## Bugfixes
4 |
5 | - fix fsaverage label issue (by bumping siibra-api version)
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.4.5.md:
--------------------------------------------------------------------------------
1 | # v2.4.5
2 |
3 | ## README
4 | - Modify the readme file with integration into the Siibra naming.
5 |
--------------------------------------------------------------------------------
/docs/releases/v2.7.1.md:
--------------------------------------------------------------------------------
1 | # v2.7.1
2 |
3 | ## Bugfix
4 |
5 | - fixed region detail fetching using duplicated id as endpoint
6 |
--------------------------------------------------------------------------------
/src/assets/images/MNIColin27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNIColin27.png
--------------------------------------------------------------------------------
/src/assets/images/big-brain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/big-brain.png
--------------------------------------------------------------------------------
/src/layouts/currentLayout/currentLayout.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | width: 100%;
4 | height: 100%;
5 | display: block;
6 | }
--------------------------------------------------------------------------------
/src/mouseoverModule/index.ts:
--------------------------------------------------------------------------------
1 | export { MouseOver } from "./mouseover.component"
2 | export { MouseOverSvc } from "./service"
3 |
--------------------------------------------------------------------------------
/src/strictLocal/index.ts:
--------------------------------------------------------------------------------
1 | export { StrictLocalModule } from "./module"
2 | export { HideWhenLocal } from "./strictLocal.directive"
--------------------------------------------------------------------------------
/src/util/recursivePartial.ts:
--------------------------------------------------------------------------------
1 | export type RecursivePartial = Partial<{
2 | [K in keyof T]: RecursivePartial
3 | }>
4 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.style.css:
--------------------------------------------------------------------------------
1 | mat-divider
2 | {
3 | margin-top: 1rem;
4 | }
5 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.14.md:
--------------------------------------------------------------------------------
1 | # v2.14.14
2 |
3 | ## Bugfix
4 |
5 | - bigbrain download current view now properly parse bounding box
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.5.6.md:
--------------------------------------------------------------------------------
1 | # v2.5.6
2 |
3 | ## Bugfix
4 |
5 | - re-introduced explore in KG button for parcellation citations
6 |
7 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/tools/line/line.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: flex;
4 | flex-direction: column;
5 | }
--------------------------------------------------------------------------------
/src/components/flatHierarchy/const.ts:
--------------------------------------------------------------------------------
1 | export type TreeNode = {
2 | node: T
3 | level: number
4 | expandable: boolean
5 | }
--------------------------------------------------------------------------------
/src/spotlight/spotlight-backdrop/spotlight-backdrop.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/state/plugins/const.ts:
--------------------------------------------------------------------------------
1 | export const nameSpace = `[state.plugins]`
2 | export const INIT_MANIFEST_SRC = `__INIT_MANFEST_SRC__`
3 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.4.md:
--------------------------------------------------------------------------------
1 | # v2.6.4
2 |
3 | ## Bugfixes
4 |
5 | - Temporarily fixed an issue where saneurl queries were paginated
6 |
7 |
--------------------------------------------------------------------------------
/src/assets/images/MNIColin27-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNIColin27-100.png
--------------------------------------------------------------------------------
/src/assets/images/MNIColin27-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNIColin27-200.png
--------------------------------------------------------------------------------
/src/assets/images/MNIColin27-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNIColin27-300.png
--------------------------------------------------------------------------------
/src/assets/images/MNIColin27-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNIColin27-400.png
--------------------------------------------------------------------------------
/src/assets/images/how-to-cite-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/how-to-cite-1.png
--------------------------------------------------------------------------------
/src/assets/images/how-to-cite-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/how-to-cite-2.png
--------------------------------------------------------------------------------
/src/assets/images/how-to-cite-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/how-to-cite-3.png
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/tools/poly/poly.style.css:
--------------------------------------------------------------------------------
1 | point-update-cmp
2 | {
3 | width: 100%;
4 | display: block;
5 | }
6 |
--------------------------------------------------------------------------------
/src/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss:
--------------------------------------------------------------------------------
1 | ::ng-deep label {
2 | margin-bottom: 0 !important;
3 | }
--------------------------------------------------------------------------------
/src/layouts/layouts/single/single.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/viewerModule/index.ts:
--------------------------------------------------------------------------------
1 | export { ViewerModule } from "./module"
2 | export { ViewerCommonEffects } from "./viewer.common.effects"
3 |
--------------------------------------------------------------------------------
/src/zipFilesOutput/type.ts:
--------------------------------------------------------------------------------
1 | export type TZipFileConfig = {
2 | filename: string
3 | filecontent: string
4 | base64?: boolean
5 | }
--------------------------------------------------------------------------------
/backend/app/well-known/security.txt:
--------------------------------------------------------------------------------
1 | # If you would like to report a security issue, please contact us via:
2 | Contact: inm1-bda@fz-juelich.de
--------------------------------------------------------------------------------
/docs/images/siibra-explorer-square.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/docs/images/siibra-explorer-square.jpeg
--------------------------------------------------------------------------------
/docs/releases/v2.3.10.md:
--------------------------------------------------------------------------------
1 | # v2.3.10
2 |
3 | ## Hotfixes
4 |
5 | - Update the logic saneURL, as object storage was no longer available. (#923)
--------------------------------------------------------------------------------
/src/assets/images/BigBrainHistology.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/BigBrainHistology.png
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | SapiViewsModule
3 | } from "./module"
4 | export { SapiViewsUtilModule } from "./util"
--------------------------------------------------------------------------------
/src/components/markdown/index.ts:
--------------------------------------------------------------------------------
1 | export { MarkdownModule } from "./module"
2 | export { MarkdownDom } from "./markdownCmp/markdown.component"
--------------------------------------------------------------------------------
/src/dragDropFile/index.ts:
--------------------------------------------------------------------------------
1 | export { DragDropFileModule } from "./module"
2 | export { DragDropFileDirective } from "./dragDrop.directive"
3 |
--------------------------------------------------------------------------------
/docs/releases/v2.13.5.md:
--------------------------------------------------------------------------------
1 | # v2.13.5
2 |
3 | ## Bugfix
4 |
5 | - Fix saneurl generation. Logged in user can generate long lived saneurls again
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.2.7.md:
--------------------------------------------------------------------------------
1 | # v2.2.7
2 |
3 | 03 Nov 2020
4 |
5 | ## Bugfixes
6 |
7 | - Changed the name of Julich-Brain to better reflect the atlas
--------------------------------------------------------------------------------
/docs/releases/v2.7.4.md:
--------------------------------------------------------------------------------
1 | # v2.7.4
2 |
3 | ## Bugfix
4 |
5 | - Properly use fallback when detecting fault
6 | - Minor wording/cosmetic change
7 |
--------------------------------------------------------------------------------
/src/assets/favicons/favicon-128-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/favicons/favicon-128-light.png
--------------------------------------------------------------------------------
/src/components/readmore/index.ts:
--------------------------------------------------------------------------------
1 | export { ReadmoreModule } from './module'
2 | export { ReadmoreComponent } from './readmoreCmp/readmore.component'
--------------------------------------------------------------------------------
/src/keyframesModule/constants.ts:
--------------------------------------------------------------------------------
1 | import { ARIA_LABELS } from 'common/constants'
2 | export const KEYFRAME_VIEWMODE = ARIA_LABELS.VIEWER_MODE_KEYFRAME
--------------------------------------------------------------------------------
/src/ui/logoContainer/logoContainer.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.17.md:
--------------------------------------------------------------------------------
1 | # v2.14.17
2 |
3 | ## Documentation
4 |
5 | - added video tutorial on drag and drop nifti
6 | - fixed latest release script
--------------------------------------------------------------------------------
/docs/releases/v2.2.1.md:
--------------------------------------------------------------------------------
1 | # v2.2.1
2 |
3 | 26 May 2020
4 |
5 | ## Bugfixes
6 |
7 | - fixed connectivity menu showing non existent connectivity data
8 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.5.md:
--------------------------------------------------------------------------------
1 | # v2.3.5
2 |
3 | ## Under the hood stuff
4 |
5 | - Temporarily disable Colin 27 template.
6 | - Update to JulichBrain v2.5
7 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.3.md:
--------------------------------------------------------------------------------
1 | # v2.6.3
2 |
3 | ## Bugfixes
4 |
5 | - Fixed an issue where inter-space selection of parcellation was not possible.
6 |
7 |
--------------------------------------------------------------------------------
/src/assets/academicons/fonts/academicons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/academicons/fonts/academicons.eot
--------------------------------------------------------------------------------
/src/assets/academicons/fonts/academicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/academicons/fonts/academicons.ttf
--------------------------------------------------------------------------------
/src/assets/images/BigBrainHistology-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/BigBrainHistology-100.png
--------------------------------------------------------------------------------
/src/assets/images/BigBrainHistology-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/BigBrainHistology-200.png
--------------------------------------------------------------------------------
/src/assets/images/BigBrainHistology-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/BigBrainHistology-300.png
--------------------------------------------------------------------------------
/src/assets/images/BigBrainHistology-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/BigBrainHistology-400.png
--------------------------------------------------------------------------------
/src/atlasComponents/constants.ts:
--------------------------------------------------------------------------------
1 | export enum EnumClassicalView {
2 | CORONAL = "Coronal",
3 | SAGITTAL = "Sagittal",
4 | AXIAL = "Axial",
5 | }
6 |
--------------------------------------------------------------------------------
/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | import { environment as commonEnv } from './environment.common'
2 | export const environment = {
3 | ...commonEnv
4 | }
--------------------------------------------------------------------------------
/src/util/windowResize/index.ts:
--------------------------------------------------------------------------------
1 | export { WindowResizeModule } from './module'
2 | export { ResizeObserverDirective } from './windowResize.directive'
3 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.25.md:
--------------------------------------------------------------------------------
1 | # v2.14.25
2 |
3 | ## Features
4 |
5 | - bumped siibra-api version - added regional connectivity support to Julich Brain 3.1
6 |
--------------------------------------------------------------------------------
/src/assets/academicons/fonts/academicons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/academicons/fonts/academicons.woff
--------------------------------------------------------------------------------
/src/assets/images/persp-view/allen_axial_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/allen_axial_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/allen_axial_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/allen_axial_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mni152_axial_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mni152_axial_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mni152_axial_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mni152_axial_1.png
--------------------------------------------------------------------------------
/src/assets/logo/HBP_Primary_RGB_BlackText.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/logo/HBP_Primary_RGB_BlackText.png
--------------------------------------------------------------------------------
/src/assets/logo/HBP_Primary_RGB_WhiteText.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/logo/HBP_Primary_RGB_WhiteText.png
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumbDropdown/pureATPDropDown.style.css:
--------------------------------------------------------------------------------
1 | .option-container
2 | {
3 | text-wrap: nowrap;
4 | }
5 |
--------------------------------------------------------------------------------
/src/components/spinner/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | SpinnerModule
3 | } from "./module"
4 | export {
5 | SpinnerCmp
6 | } from "./spinnerCmp/spinner.component"
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | import { environment as commonEnv } from './environment.common'
2 | export const environment = {
3 | ...commonEnv
4 | }
--------------------------------------------------------------------------------
/src/sharedModules/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | AngularMaterialModule
3 | } from './angularMaterial.module'
4 |
5 | export * from './angularMaterial.exports'
6 |
--------------------------------------------------------------------------------
/third_party/extra_js.js:
--------------------------------------------------------------------------------
1 | // disable zone patching of raf. This hampers NG performance significantly
2 | window['__Zone_disable_requestAnimationFrame'] = true
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/src/assets/images/WaxholmSpaceratbrainMRIDTI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/WaxholmSpaceratbrainMRIDTI.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/allen_coronal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/allen_coronal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/allen_coronal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/allen_coronal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/allen_sagittal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/allen_sagittal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/allen_sagittal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/allen_sagittal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/bigbrain_axial_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/bigbrain_axial_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/bigbrain_axial_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/bigbrain_axial_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/colin27_axial_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/colin27_axial_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/colin27_axial_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/colin27_axial_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mebrains_axial_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mebrains_axial_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mebrains_axial_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mebrains_axial_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mni152_coronal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mni152_coronal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mni152_coronal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mni152_coronal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/waxholm_axial_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/waxholm_axial_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/waxholm_axial_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/waxholm_axial_1.png
--------------------------------------------------------------------------------
/src/components/overlay/overlay.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ data.message }}
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.metaSpec/example.min.meta.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./meta.schema.json",
3 | "version": 1,
4 | "preferredColormap": ["magma", "plasma", "greyscale"]
5 | }
6 |
--------------------------------------------------------------------------------
/.metaSpec/meta.schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema",
3 | "oneOf": [{
4 | "$ref": "meta.schema.v1.json"
5 | }]
6 | }
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/src/assets/fontawesome/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/fontawesome/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/src/assets/images/ICBM2009cNonlinearAsymmetric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/ICBM2009cNonlinearAsymmetric.png
--------------------------------------------------------------------------------
/src/assets/images/WaxholmSpaceratbrainMRIDTI-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/WaxholmSpaceratbrainMRIDTI-100.png
--------------------------------------------------------------------------------
/src/assets/images/WaxholmSpaceratbrainMRIDTI-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/WaxholmSpaceratbrainMRIDTI-200.png
--------------------------------------------------------------------------------
/src/assets/images/WaxholmSpaceratbrainMRIDTI-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/WaxholmSpaceratbrainMRIDTI-300.png
--------------------------------------------------------------------------------
/src/assets/images/WaxholmSpaceratbrainMRIDTI-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/WaxholmSpaceratbrainMRIDTI-400.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/bigbrain_coronal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/bigbrain_coronal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/bigbrain_coronal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/bigbrain_coronal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/bigbrain_sagittal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/bigbrain_sagittal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/bigbrain_sagittal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/bigbrain_sagittal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/colin27_coronal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/colin27_coronal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/colin27_coronal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/colin27_coronal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/colin27_sagittal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/colin27_sagittal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/colin27_sagittal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/colin27_sagittal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mebrains_coronal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mebrains_coronal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mebrains_coronal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mebrains_coronal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mebrains_sagittal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mebrains_sagittal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mebrains_sagittal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mebrains_sagittal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mni152_sagittal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mni152_sagittal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/mni152_sagittal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/mni152_sagittal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/waxholm_coronal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/waxholm_coronal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/waxholm_coronal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/waxholm_coronal_1.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/waxholm_sagittal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/waxholm_sagittal_0.png
--------------------------------------------------------------------------------
/src/assets/images/persp-view/waxholm_sagittal_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/persp-view/waxholm_sagittal_1.png
--------------------------------------------------------------------------------
/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "files": [
4 | "spec/test.ts"
5 | ],
6 | "include": [
7 | "src/**/*.spec.ts"
8 | ]
9 | }
--------------------------------------------------------------------------------
/docs/releases/v2.2.5.md:
--------------------------------------------------------------------------------
1 | # v2.2.5
2 |
3 | 28 July 2020
4 |
5 | ## Bugfixes
6 |
7 | - Fixed status panel voxel/real toggle ineffective bug (Thanks to Dr El Mysteryo)
8 |
--------------------------------------------------------------------------------
/src/assets/images/ICBM2009cNonlinearAsymmetric-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/ICBM2009cNonlinearAsymmetric-100.png
--------------------------------------------------------------------------------
/src/assets/images/ICBM2009cNonlinearAsymmetric-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/ICBM2009cNonlinearAsymmetric-200.png
--------------------------------------------------------------------------------
/src/assets/images/ICBM2009cNonlinearAsymmetric-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/ICBM2009cNonlinearAsymmetric-300.png
--------------------------------------------------------------------------------
/src/assets/images/ICBM2009cNonlinearAsymmetric-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/ICBM2009cNonlinearAsymmetric-400.png
--------------------------------------------------------------------------------
/src/atlasComponents/sapi/index.ts:
--------------------------------------------------------------------------------
1 | export { SAPIModule } from './module'
2 |
3 | export { SAPI } from "./sapi.service"
4 |
5 | export {
6 | IDS
7 | } from "./constants"
--------------------------------------------------------------------------------
/src/features/pointcloud-intents/index.ts:
--------------------------------------------------------------------------------
1 | export { isPoint, FilterPointTransformer, CFIndex } from "./util"
2 | // export { PointCloudIntents } from "./intents.component"
3 |
--------------------------------------------------------------------------------
/src/screenshot/index.ts:
--------------------------------------------------------------------------------
1 | export { ScreenshotModule } from './module'
2 | export {
3 | HANDLE_SCREENSHOT_PROMISE,
4 | TypeHandleScrnShotPromise,
5 | } from './util'
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.21.md:
--------------------------------------------------------------------------------
1 | # v2.14.21
2 |
3 | ## Bugfix
4 |
5 | - fix the URL of older versions of explorer incorrectly showing delineation flag
6 | - fix annotation vary header
--------------------------------------------------------------------------------
/docs/releases/v2.4.3.md:
--------------------------------------------------------------------------------
1 | # v2.4.3
2 |
3 | ## Bugfixes
4 |
5 | - fix some of the big brain maps
6 | - added UI indication for deprecation/unavailability of functionalities
7 |
--------------------------------------------------------------------------------
/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric.png
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | SapiViewsCoreModule
3 | } from "./module"
4 |
5 | export {
6 | SapiViewsCoreSpaceBoundingBox
7 | } from "./space"
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.style.css:
--------------------------------------------------------------------------------
1 | [parcellation-chip-suffix]
2 | {
3 | margin-right: -1rem;
4 | margin-left: 0.2rem;
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/index.ts:
--------------------------------------------------------------------------------
1 | export { ComponentsModule } from './components.module'
2 | export { SxplrSnackBarCfg, SxplrSnackDialogCmp, SxplrSnackBarSvc } from "./snackDialog"
3 |
--------------------------------------------------------------------------------
/src/components/snackDialog/index.ts:
--------------------------------------------------------------------------------
1 | export { SxplrSnackBarCfg, SxplrSnackDialogCmp } from "./snackDialog.component"
2 | export { SxplrSnackBarSvc } from "./snackDialog.service"
--------------------------------------------------------------------------------
/src/spotlight/const.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken, TemplateRef } from "@angular/core";
2 |
3 | export const TMPL_INJ_TOKEN = new InjectionToken>('TMPL_INJ_TOKEN')
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/userLayers/index.ts:
--------------------------------------------------------------------------------
1 | export { NehubaUserLayerModule } from "./module"
2 | export { UserLayerDragDropDirective } from "./userlayerDragdrop.directive"
3 |
--------------------------------------------------------------------------------
/docs/releases/v0.2.0.md:
--------------------------------------------------------------------------------
1 | # v0.2.0
2 |
3 | 6 Apr 2018
4 |
5 | [release](https://github.com/HumanBrainProject/interactive-viewer/releases/tag/v0.2.0)
6 |
7 | Updated plugin APIs.
8 |
--------------------------------------------------------------------------------
/docs/releases/v2.11.3.md:
--------------------------------------------------------------------------------
1 | # v2.11.3
2 |
3 | ## Bugfixes
4 |
5 | - Fix ng-layer-tune not persisting shader selection
6 |
7 | ## Behind the scene
8 |
9 | - Bump siibra-api version
--------------------------------------------------------------------------------
/docs/releases/v2.2.4.md:
--------------------------------------------------------------------------------
1 | # v2.2.4
2 |
3 | 15 June 2020
4 |
5 | ## Bugfixes
6 |
7 | - Fixed parcellation region colors are invisible after template change when region selected #543
--------------------------------------------------------------------------------
/docs/releases/v2.5.8.md:
--------------------------------------------------------------------------------
1 | # v2.5.8
2 |
3 | ## Bugfix
4 |
5 | - fixed user annotation with saneurl
6 |
7 | ## Under the hood
8 |
9 | - remove unnecessary UI refreshes
10 |
--------------------------------------------------------------------------------
/src/atlasComponents/annotations/index.ts:
--------------------------------------------------------------------------------
1 | export { TNgAnnotationAABBox, AnnotationLayer, TNgAnnotationPoint, TNgAnnotationLine, promiseViewer, getViewer } from "./annotation.service"
--------------------------------------------------------------------------------
/docs/releases/v0.1.0.md:
--------------------------------------------------------------------------------
1 | # v0.1.0
2 |
3 | 3 Apr 2018
4 |
5 | [release](https://github.com/HumanBrainProject/interactive-viewer/releases/tag/v0.1.0)
6 |
7 | Implemented plugin APIs.
8 |
--------------------------------------------------------------------------------
/docs/releases/v2.13.3.md:
--------------------------------------------------------------------------------
1 | # v2.13.3
2 |
3 | ## Feature
4 |
5 | - 1um section now does not move x,z position
6 |
7 | ## Behind the scene
8 |
9 | - user added layer now sits on index 1
--------------------------------------------------------------------------------
/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-100.png
--------------------------------------------------------------------------------
/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-200.png
--------------------------------------------------------------------------------
/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-300.png
--------------------------------------------------------------------------------
/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/MNI152ICBM2009cNonlinearAsymmetric-400.png
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/space/index.ts:
--------------------------------------------------------------------------------
1 | export { SapiViewsCoreSpaceModule } from "./module"
2 | export {
3 | SapiViewsCoreSpaceBoundingBox
4 | } from "./boundingBox.directive"
--------------------------------------------------------------------------------
/docs/releases/v2.14.8.md:
--------------------------------------------------------------------------------
1 | # v2.14.8
2 |
3 | ## Bugfix
4 |
5 | - fixed issue of displaying statistical maps
6 |
7 | ## Behind the Scenes
8 |
9 | - Minor tweak on e2e screenshots
10 |
--------------------------------------------------------------------------------
/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015.png
--------------------------------------------------------------------------------
/src/state/userInterface/const.ts:
--------------------------------------------------------------------------------
1 | export const nameSpace = `[state.ui]`
2 | export type PanelMode = 'FOUR_PANEL'
3 | | 'V_ONE_THREE'
4 | | 'H_ONE_THREE'
5 | | 'SINGLE_PANEL'
6 | | 'PIP_PANEL'
--------------------------------------------------------------------------------
/src/ui/dialogInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { DialogDirective } from "./dialog.directive"
2 | export { DialogModule } from "./module"
3 | export { DialogFallbackCmp } from "./tmpl/tmpl.component"
4 |
--------------------------------------------------------------------------------
/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-100.png
--------------------------------------------------------------------------------
/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-200.png
--------------------------------------------------------------------------------
/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-300.png
--------------------------------------------------------------------------------
/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FZJ-INM1-BDA/siibra-explorer/HEAD/src/assets/images/AllenMouseCommonCoordinateFrameworkv32015-400.png
--------------------------------------------------------------------------------
/src/components/markdown/markdownCmp/markdown.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/ui/help/about/about.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: flex;
4 | flex-wrap: wrap;
5 | justify-content: center;
6 | }
7 |
8 | .newline
9 | {
10 | flex: 1 1 100%;
11 | }
12 |
--------------------------------------------------------------------------------
/src/api/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | JRPCRequest,
3 | JRPCResp,
4 | JRPCSuccessResp,
5 | JRPCErrorResp,
6 | } from "./jsonrpc"
7 |
8 | export {
9 | ApiService,
10 | } from "./service"
11 |
--------------------------------------------------------------------------------
/src/layouts/layouts/h13/h13.style.css:
--------------------------------------------------------------------------------
1 | .major-column
2 | {
3 | flex: 0 0 67%;
4 | }
5 | .minor-column
6 | {
7 | flex: 0 0 33%;
8 | }
9 | .layout-31-cell
10 | {
11 | flex: 0 0 33.33%;
12 | }
--------------------------------------------------------------------------------
/src/layouts/layouts/v13/v13.style.css:
--------------------------------------------------------------------------------
1 | .major-column
2 | {
3 | flex: 0 0 67%;
4 | }
5 | .minor-column
6 | {
7 | flex: 0 0 33%;
8 | }
9 | .layout-31-cell
10 | {
11 | flex: 0 0 33.33%;
12 | }
--------------------------------------------------------------------------------
/docs/advanced/differential_gene_expression_analysis.md:
--------------------------------------------------------------------------------
1 | # Differential Gene Expression Analysis
2 |
3 | (TBD)
4 |
7 |
--------------------------------------------------------------------------------
/src/features/connectivity/index.ts:
--------------------------------------------------------------------------------
1 | export { ConnectivityBrowserComponent } from "./connectivityBrowser/connectivityBrowser.component";
2 | export { SapiViewsFeatureConnectivityModule } from "./module";
3 |
--------------------------------------------------------------------------------
/src/layouts/layouts/single/single.style.css:
--------------------------------------------------------------------------------
1 | .major-column
2 | {
3 | flex: 0 0 100%;
4 | }
5 | .minor-column
6 | {
7 | flex: 0 0 0%;
8 | }
9 | .layout-31-cell
10 | {
11 | flex: 0 0 33%;
12 | }
--------------------------------------------------------------------------------
/docs/releases/v2.14.6.md:
--------------------------------------------------------------------------------
1 | # v2.14.6
2 |
3 | ## Feature
4 |
5 | - (experimental) support `.pointcloud` drag-and-drop
6 |
7 | ## Bugfix
8 |
9 | - Fixed dependency support for new GCS JSON API
10 |
11 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.11.md:
--------------------------------------------------------------------------------
1 | # v2.3.11
2 |
3 | ## Bugfixes
4 |
5 | - Fix issues with not fetching datasets
6 |
7 | ## Under the hood stuff
8 |
9 | - Added CI for removing deploy on branch deletion
10 |
--------------------------------------------------------------------------------
/src/components/smartChip/index.ts:
--------------------------------------------------------------------------------
1 | export { SmartChipModule } from "./module"
2 | export { SmartChip } from "./component/smartChip.component"
3 | export { SmartChipContent } from "./smartChip.content.directive"
4 |
--------------------------------------------------------------------------------
/src/ui/kgtos/index.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken } from "@angular/core";
2 | import { Observable } from "rxjs";
3 |
4 | export const TOS_OBS_INJECTION_TOKEN = new InjectionToken>('TOS_STRING')
5 |
--------------------------------------------------------------------------------
/src/mouseoverModule/mouseover.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: inline-block;
4 | }
5 |
6 | .centered
7 | {
8 | display: flex;
9 | justify-content: center;
10 | align-items: center;
11 | }
12 |
--------------------------------------------------------------------------------
/src/spotlight/spot-light-overlay.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive } from '@angular/core';
2 |
3 | @Directive({
4 | selector: '[sl-spotlight-overlay]'
5 | })
6 | export class SpotLightOverlayDirective {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/docs/releases/v2.10.3.md:
--------------------------------------------------------------------------------
1 | # v2.10.3
2 |
3 | ## Bugfix
4 |
5 | - restore the wireframe for VOI (enable via toggle)
6 | - added "no spatial features found" where appropriate
7 | - fixed messaging for adding swc layer
8 |
--------------------------------------------------------------------------------
/src/contextMenuModule/index.ts:
--------------------------------------------------------------------------------
1 | export { ContextMenuModule } from './module'
2 | export { TContextMenuReg, ContextMenuService } from './service'
3 | export { DismissCtxMenuDirective } from './dismissCtxMenu.directive'
4 |
--------------------------------------------------------------------------------
/src/features/compoundFeatureIndices/index.ts:
--------------------------------------------------------------------------------
1 | export { CompoundFeatureIndices } from "./compoundFeatureIndices.component"
2 | export { CFIndex } from "./util"
3 | export { CompoundFeatureIndicesModule } from "./module"
4 |
--------------------------------------------------------------------------------
/docs/releases/v2.5.5.md:
--------------------------------------------------------------------------------
1 | # v2.5.5
2 |
3 | ## Feature
4 |
5 | - Added pre-release warning
6 |
7 | ## Under the hood
8 |
9 | - Temporarily use up-to-date endpoint for MEBRAINS
10 | - Add fsaverage to checklist
11 |
--------------------------------------------------------------------------------
/src/spotlight/sl-spotlight.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { SlSpotlightDirective } from './sl-spotlight.directive';
2 |
3 | describe('SlSpotlightDirective', () => {
4 | it('should create an instance', () => {
5 | });
6 | });
7 |
--------------------------------------------------------------------------------
/src/ui/quickTour/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | QuickTourModule
3 | } from './module'
4 |
5 | export {
6 | QuickTourThis
7 | } from './quickTourThis.directive'
8 |
9 | export {
10 | IQuickTourData
11 | } from './constrants'
12 |
--------------------------------------------------------------------------------
/src/components/spinner/spinnerCmp/spinner.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'spinner-cmp',
5 | templateUrl: './spinner.template.html'
6 | })
7 |
8 | export class SpinnerCmp{}
9 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.1.md:
--------------------------------------------------------------------------------
1 | # v2.3.1
2 |
3 | ## Bugfixes
4 |
5 | - fixes iEEG panel sometimes not loading spatial data (#816 #744)
6 | - fixes fetching of non-existent data when in big brain reference space (#817)
7 | - restore CI for staging/release
--------------------------------------------------------------------------------
/docs/releases/v2.4.2.md:
--------------------------------------------------------------------------------
1 | # v2.4.2
2 |
3 | ## Bugfixes
4 |
5 | - fix template/parcellation selector vertical scroll on small devices
6 | - fix atlas order (human -> rat -> mouse)
7 | - fsaverage use pial as default viewing mode (if possible)
8 |
--------------------------------------------------------------------------------
/src/components/coordTextBox/coordTextBox.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: flex;
4 | width: 100%;
5 | }
6 |
7 | mat-form-field
8 | {
9 | flex: 1 1 auto;
10 | }
11 |
12 | .suffix
13 | {
14 | flex: 0 0 auto;
15 | }
16 |
--------------------------------------------------------------------------------
/src/notSupportedCmp/notSupported.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: grid;
4 | grid-template-rows: min-content 1fr;
5 | height: 100%;
6 | }
7 |
8 | div.image-container
9 | {
10 | background: no-repeat center / contain;
11 | }
12 |
--------------------------------------------------------------------------------
/typings/index.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.html' {
2 | const contents:string
3 | export = contents
4 | }
5 |
6 | declare module '*.css' {
7 | const contents:string
8 | export = contents
9 | }
10 |
11 | declare module '*.md'
12 |
13 |
--------------------------------------------------------------------------------
/src/logging/logging.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from "@angular/core";
2 | import { LoggingService } from "./logging.service";
3 |
4 | @NgModule({
5 | providers:[
6 | LoggingService
7 | ]
8 | })
9 |
10 | export class LoggingModule{}
--------------------------------------------------------------------------------
/src/util/df-to-ds.pipe.spec.ts:
--------------------------------------------------------------------------------
1 | import { DfToDsPipe } from './df-to-ds.pipe';
2 |
3 | describe('DfToDsPipe', () => {
4 | it('create an instance', () => {
5 | const pipe = new DfToDsPipe();
6 | expect(pipe).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/docs/releases/v2.12.1.md:
--------------------------------------------------------------------------------
1 | # v2.12.1
2 |
3 | # Feature
4 |
5 | - added the option to use red/green/blue colormaps (#1366)
6 |
7 | ## Bugfix
8 |
9 | - fixed touch devices unable to navigate viewer
10 | - fixed some volume controls not working
11 |
--------------------------------------------------------------------------------
/docs/releases/v2.12.4.md:
--------------------------------------------------------------------------------
1 | # v2.12.4
2 |
3 | ## Bugfix
4 |
5 | - minor fix of ng-layer-tune incorrectly applying color map (#1390)
6 | - prepare for MEBRAINS update
7 | - fixed traverse in z direction (`` + `[wheel]`/`` + `[wheel]`) (#1334)
8 |
--------------------------------------------------------------------------------
/docs/releases/v2.3.3.md:
--------------------------------------------------------------------------------
1 | # v2.3.3
2 |
3 | ## Bugfixes
4 |
5 | - fix backwards compatibility with some URLs
6 | - fix bug where fetching of regional features does not complete for logged in users (#826). (the viewer will only fetch released datasets)
7 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/index.ts:
--------------------------------------------------------------------------------
1 | export { AnnotationMode } from "./annotationMode/annotationMode.component";
2 | export { AnnotationList } from "./annotationList/annotationList.component";
3 | export { UserAnnotationsModule } from "./module";
4 |
--------------------------------------------------------------------------------
/src/state/userInteraction/index.ts:
--------------------------------------------------------------------------------
1 | export { Effect } from "./effects"
2 | export { nameSpace } from "./const"
3 | export * as actions from "./actions"
4 | export * as selectors from "./selectors"
5 | export { reducer, UserInteraction, defaultState } from "./store"
--------------------------------------------------------------------------------
/src/ui/logoContainer/logoContainer.style.css:
--------------------------------------------------------------------------------
1 | .hbpLogoContainer
2 | {
3 | display:inline-block;
4 | background-size: cover;
5 | height: 100%;
6 | }
7 |
8 | .hbpLogoContainer > img
9 | {
10 | visibility: hidden;
11 | height: 100%;
12 | }
13 |
--------------------------------------------------------------------------------
/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": [
4 | "**/*.spec.ts",
5 | "./spec/*",
6 | "src/atlasViewerExports/*",
7 | "**/*.stories.*"
8 | ],
9 | "files": [
10 | "src/main-aot.ts"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/backend/requirements.txt:
--------------------------------------------------------------------------------
1 | fastapi
2 | markdown
3 | authlib
4 | uvicorn[standard] # required as a asgi
5 | itsdangerous # required for starlette session middleware
6 | httpx # required for async uvicorn
7 | redis
8 | ebrains-drive>=0.6.0
9 | geoip2==5.1.0
10 |
--------------------------------------------------------------------------------
/src/layouts/layouts/fourPanel/fourPanel.style.css:
--------------------------------------------------------------------------------
1 | .four-panel-cell
2 | {
3 | flex: 0 0 50%;
4 | }
5 |
6 | .four-panel-container
7 | {
8 | display: grid;
9 | grid-template-columns: 50% 50%;
10 | grid-template-rows: 50% 50%;
11 | height: 100%;
12 | }
--------------------------------------------------------------------------------
/src/state/userPreference/index.ts:
--------------------------------------------------------------------------------
1 | export { UserPreference, reducer, defaultState } from "./store"
2 | export { nameSpace } from "./const"
3 | export * as actions from "./actions"
4 | export * as selectors from "./selectors"
5 | export { Effects } from "./effects"
6 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.7.md:
--------------------------------------------------------------------------------
1 | # 2.6.7
2 |
3 | ## Bugfix
4 |
5 | - set max height of descriptions to show rich elements
6 | - fix mkdocs configuration
7 | - fix docs links
8 |
9 | ## Behind the scene
10 |
11 | - temporarily disabled explore in other templates
12 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/region/region/listItem/region.listItem.style.css:
--------------------------------------------------------------------------------
1 | .container
2 | {
3 | display: inline-flex;
4 | width: 100%;
5 | align-items: center;
6 | }
7 |
8 | .container .mat-body
9 | {
10 | text-wrap: nowrap;
11 | }
12 |
--------------------------------------------------------------------------------
/src/layouts/layouts/pip/pip.style.css:
--------------------------------------------------------------------------------
1 | .major-column
2 | {
3 | flex: 0 0 100%;
4 | }
5 | .minor-column
6 | {
7 | flex: 0 0 0%;
8 | }
9 | .picture-in-picture-margin {
10 | bottom: 5rem;
11 | right: 2rem;
12 | max-width: calc(100dvw - 4rem);
13 | }
14 |
--------------------------------------------------------------------------------
/src/share/type.ts:
--------------------------------------------------------------------------------
1 | import { Observable } from "rxjs";
2 |
3 | export class NotFoundError extends Error{}
4 |
5 | export interface IKeyValStore {
6 | getKeyVal(key: string): Observable
7 | setKeyVal(key: string, val: unknown): Observable
8 | }
9 |
--------------------------------------------------------------------------------
/src/state/atlasAppearance/index.ts:
--------------------------------------------------------------------------------
1 | export * as actions from "./action"
2 | export * as selectors from "./selector"
3 | export * as const from "./const"
4 | export { nameSpace } from "./const"
5 | export { reducer, AtlasAppearanceStore, defaultState } from "./store"
6 |
--------------------------------------------------------------------------------
/src/state/plugins/index.ts:
--------------------------------------------------------------------------------
1 | export * as selectors from "./selectors"
2 | export * as actions from "./actions"
3 | export { reducer, PluginStore, defaultState } from "./store"
4 | export { Effects } from "./effects"
5 | export { nameSpace, INIT_MANIFEST_SRC } from "./const"
--------------------------------------------------------------------------------
/src/state/userInterface/index.ts:
--------------------------------------------------------------------------------
1 | export * as actions from "./actions"
2 | export * as selectors from "./selectors"
3 | export { nameSpace, PanelMode } from "./const"
4 | export { reducer, UiStore, defaultState } from "./store"
5 | export { Effects } from "./effects"
6 |
--------------------------------------------------------------------------------
/src/state/userPreference/const.ts:
--------------------------------------------------------------------------------
1 | export const nameSpace = `[state.userPreference]`
2 |
3 | export const maxGpuLimit = 1e9
4 | export const minGpuLimit = 1e8
5 |
6 | export interface CSP{
7 | 'connect-src'?: string[]
8 | 'script-src'?: string[]
9 | }
10 |
--------------------------------------------------------------------------------
/src/util/regionFlattener.ts:
--------------------------------------------------------------------------------
1 | export function regionFlattener(region: any) {
2 | return[
3 | [ region ],
4 | ...((region.children && region.children.map && region.children.map(regionFlattener)) || []),
5 | ].reduce((acc, item) => acc.concat(item), [])
6 | }
7 |
--------------------------------------------------------------------------------
/.helm/adhoc/service-redis.yml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: cache-redis-service
5 | spec:
6 | ports:
7 | - port: 6379
8 | protocol: TCP
9 | targetPort: 6379
10 | selector:
11 | app: sxplr-redis
12 | type: ClusterIP
13 |
--------------------------------------------------------------------------------
/src/messaging/nmvSwc/type.ts:
--------------------------------------------------------------------------------
1 | import { TMat3, TVec3 } from "../types";
2 |
3 | export interface INmvTransform {
4 | ['@type']: 'bas:AffineTransformation'
5 | fromSpace: string
6 | toSpace: string
7 | params: {
8 | A: TMat3
9 | b: TVec3
10 | }
11 | }
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/store/index.ts:
--------------------------------------------------------------------------------
1 | export { reducer, Store, defaultStore } from "./store"
2 | export * as actions from "./actions"
3 | export * as selectors from "./selectors"
4 | export { nameSpace } from "./const"
5 | export { ThreeSurferEffects } from "./effects"
--------------------------------------------------------------------------------
/docs/releases/v2.10.2.md:
--------------------------------------------------------------------------------
1 | # v2.10.2
2 |
3 | ## Bugfix
4 |
5 | - paginate feature requests to hopefully improve server performance
6 | - bump siibra-api version
7 | - fix ng layer control style pollution
8 |
9 | ## Behind the scenes
10 |
11 | - added zenodo badge
12 |
--------------------------------------------------------------------------------
/docs/releases/v2.13.2.md:
--------------------------------------------------------------------------------
1 | # v2.13.2
2 |
3 | ## Features
4 |
5 | - added visual display of errors relating to siibra-api
6 |
7 | ## Bugfixes
8 |
9 | - fixed displaying annotation in `saneurl`
10 | - fixed feature fetching spinner
11 | - fixed feature fetching logic
12 |
--------------------------------------------------------------------------------
/docs/releases/v2.5.0.md:
--------------------------------------------------------------------------------
1 | # v2.5.0
2 |
3 | ## New features
4 |
5 | - allow local NiFTi's to be visualised
6 |
7 | ## Under the hood stuff
8 |
9 | - refactor: remove unneeded code
10 | - upgrade to angular v12
11 | - removed SO implementations to comply with licenses
12 |
--------------------------------------------------------------------------------
/src/layouts/layouts/pip/pip.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/layerCtrl.service/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | NehubaLayerControlService,
3 | } from './layerCtrl.service'
4 |
5 | export {
6 | IColorMap,
7 | SET_COLORMAP_OBS,
8 | SET_LAYER_VISIBILITY,
9 | getRgb,
10 |
11 | } from './layerCtrl.util'
12 |
--------------------------------------------------------------------------------
/src/widget/index.ts:
--------------------------------------------------------------------------------
1 | export { WidgetModule } from './widget.module'
2 | export { WidgetPortal } from "./widgetPortal/widgetPortal.component"
3 | export { WidgetService } from "./service"
4 | export { EnumActionToWidget, TypeActionToWidget, IActionWidgetOption } from './constants'
5 |
--------------------------------------------------------------------------------
/docs/releases/v2.12.5.md:
--------------------------------------------------------------------------------
1 | # v2.12.5
2 |
3 | ## Feature
4 |
5 | - enable connectivity for Julich Brain v3
6 | - added version inspector in UI
7 | - (experimental) add keyframe support for NG viewer
8 | - allow experimental flag to be toggled via `setExperimentalFlag` global method
9 |
--------------------------------------------------------------------------------
/src/components/coordTextBox/index.ts:
--------------------------------------------------------------------------------
1 | import { TAffine } from "./coordTextBox.component"
2 |
3 | export * from "./coordTextBox.component"
4 |
5 | export const ID_AFFINE = [
6 | [1, 0, 0, 0],
7 | [0, 1, 0, 0],
8 | [0, 0, 1, 0],
9 | [0, 0, 0, 1],
10 | ] as TAffine
11 |
--------------------------------------------------------------------------------
/src/state/plugins/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction, props } from "@ngrx/store";
2 | import { nameSpace } from "./const"
3 |
4 | export const clearInitManifests = createAction(
5 | `${nameSpace} clearInitManifests`,
6 | props<{
7 | nameSpace: string
8 | }>()
9 | )
10 |
--------------------------------------------------------------------------------
/src/util/pretty-present.pipe.spec.ts:
--------------------------------------------------------------------------------
1 | import { PrettyPresentPipe } from './pretty-present.pipe';
2 |
3 | describe('PrettyPresentPipe', () => {
4 | it('create an instance', () => {
5 | const pipe = new PrettyPresentPipe();
6 | expect(pipe).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.template.html:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/third_party/vanilla_nehuba.js:
--------------------------------------------------------------------------------
1 | (() => {
2 | if (!export_nehuba) {
3 | console.warn(`export_nehuba is not defined. Did you forget to import vanilla nehuba?`)
4 | return
5 | }
6 | window.nehubaViewer = export_nehuba.createNehubaViewer({}, err => console.error(err))
7 | })()
--------------------------------------------------------------------------------
/docs/releases/v2.4.4.md:
--------------------------------------------------------------------------------
1 | # v2.4.4
2 |
3 | # Features
4 |
5 | - Allow name and description of annotations to be exported
6 |
7 | ## Bugfixes
8 |
9 | - Fix version of connectivity web component
10 |
11 | ## Under the hood stuff
12 |
13 | - Respond in csp violation reports
14 |
--------------------------------------------------------------------------------
/docs/releases/v2.2.6.md:
--------------------------------------------------------------------------------
1 | # v2.2.6
2 |
3 | ## Feat
4 |
5 | - Added Julich Brain v2.4 to the supported atlases
6 |
7 | ## Bugfixes
8 |
9 | - Fixed matomo CSP issues
10 | - Updated kg dataset previewer URL
11 |
12 | # Under the hood
13 |
14 | - CI/CD: auto tag releases on github
15 |
--------------------------------------------------------------------------------
/src/ui/dialogInfo/tmpl/tmpl.style.css:
--------------------------------------------------------------------------------
1 | mat-dialog-actions a i
2 | {
3 | margin-right: 0.5rem;
4 | }
5 |
6 | mat-dialog-content
7 | {
8 | display: block;
9 | max-height: 24dvh;
10 | }
11 |
12 | .sxplr-dialog-body
13 | {
14 | font-size: 16px;
15 | padding: 0 16px;
16 | }
17 |
--------------------------------------------------------------------------------
/docs/releases/v2.1.2.md:
--------------------------------------------------------------------------------
1 | # v2.1.2
2 |
3 | 20 April 2020
4 |
5 | ## Bugfixes
6 |
7 | - Fixed a bug where selected region is not persisting via URL. (#501)
8 |
9 | ## Under the hood stuff
10 |
11 | - added `check_all.sh`, allowing for quick git-push check
12 | - consolidated user docs
13 |
--------------------------------------------------------------------------------
/src/state/annotations/index.ts:
--------------------------------------------------------------------------------
1 | export * as actions from "./actions"
2 | export { Annotation, AnnotationState, reducer, defaultState, TypesOfDetailedAnnotations, UnionAnnotation, AnnotationColor } from "./store"
3 | export { nameSpace } from "./const"
4 | export * as selectors from "./selectors"
5 |
--------------------------------------------------------------------------------
/docs/releases/v2.13.1.md:
--------------------------------------------------------------------------------
1 | # v2.13.1
2 |
3 | ## Bugfixes
4 |
5 | - fixed saneurl query without accept header
6 | - added `saneurl` also to the acceptable route
7 | - fixes `Unknown` on hover prompt, fixes some issues where context menu behaves
8 | - fixes unscrollable feature container on touch devices
9 |
--------------------------------------------------------------------------------
/docs/releases/v2.4.7.md:
--------------------------------------------------------------------------------
1 | # v2.4.7
2 |
3 | ## Bugfixes
4 |
5 | - Fix unnamed point landmark naming
6 | - Fix multiregion legacy links (#1022)
7 |
8 | ## Under the hood stuff
9 |
10 | - Remove unused imports in the backend
11 | - Use `stable` branch of siibra-api by default (supercedes #997)
12 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/atlas/splashScreen/splashScreen.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: inline-block;
4 | overflow: auto;
5 | height: 100%;
6 | width: 100%;
7 | }
8 |
9 | :host > h4
10 | {
11 | margin: 2rem;
12 | }
13 |
14 | mat-card
15 | {
16 | margin: 0.5rem;
17 | }
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/store/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction, props } from "@ngrx/store";
2 | import { nameSpace } from "./const"
3 |
4 | export const selectSurfaceVariant = createAction(
5 | `${nameSpace} selectSurfaceVariant`,
6 | props<{
7 | variant: string
8 | }>()
9 | )
10 |
--------------------------------------------------------------------------------
/features/docs-storing-sharing-3dview.feature:
--------------------------------------------------------------------------------
1 | Feature: Doc Storing and Sharing 3D view
2 |
3 | Scenario: Taking Screenshots
4 | Given User launched siibra-explorer
5 | When User takes a screenshot with the built in screenshot plugin
6 | Then the screenshot should work as intended
7 |
--------------------------------------------------------------------------------
/src/state/atlasSelection/index.ts:
--------------------------------------------------------------------------------
1 | export * as selectors from "./selectors"
2 | export { fromRootStore } from "./util"
3 | export { nameSpace, AtlasSelectionState } from "./const"
4 | export { reducer, defaultState } from "./store"
5 | export * as actions from "./actions"
6 | export { Effect } from "./effects"
--------------------------------------------------------------------------------
/docs/releases/v2.9.1.md:
--------------------------------------------------------------------------------
1 | # v2.9.1
2 |
3 | ## Feature
4 |
5 | - On clicking the connectivity diagram, the viewer navigates to the connected region
6 |
7 | ## Bugfix
8 |
9 | - Fix connectivity bug on cohort filter
10 | ## Behind the scenes
11 |
12 | - Fixed some CSP issues
13 | - Removed VK/DK atlases
14 |
--------------------------------------------------------------------------------
/src/spotlight/sl-service.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { SlServiceService } from './sl-service.service';
4 | import { SpotLightModule } from './spot-light.module';
5 |
6 | describe('SlServiceService', () => {
7 | // TO BE IMPLEMENTED
8 |
9 | })
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.angular/cache
2 | node_modules
3 | dist
4 | src/res/raw
5 | src/plugin_examples/*/
6 | .vscode
7 | .idea
8 | deploy/datasets/data/
9 | .DS_Store
10 | venv/
11 | site
12 |
13 | *.log
14 | cachedKgDataset.json
15 | tmp
16 | storybook-static
17 | documentation.json
18 |
19 | .k8s/secret-*.yml
20 |
--------------------------------------------------------------------------------
/docs/extra.css:
--------------------------------------------------------------------------------
1 | div.autodoc-docstring {
2 | padding-left: 20px;
3 | margin-bottom: 30px;
4 | border-left: 5px solid rgba(230, 230, 230);
5 | }
6 |
7 | div.autodoc-members {
8 | padding-left: 20px;
9 | margin-bottom: 15px;
10 | }
11 |
12 | img {
13 | width: 100%;
14 | display: inline-block;
15 | }
--------------------------------------------------------------------------------
/docs/releases/v2.5.4.md:
--------------------------------------------------------------------------------
1 | # v2.5.4
2 |
3 | ## Feature
4 |
5 | - Added MEBRAINS (Pre-release)
6 |
7 | ## Under the hood
8 |
9 | - Added version check for siibra-api
10 | - Updated deploy template
11 | - Remove unused components
12 | - Clean up siibra-api types
13 | - temporarily added hardcoded redirects
14 |
--------------------------------------------------------------------------------
/src/components/fabSpeedDial/index.ts:
--------------------------------------------------------------------------------
1 | export { FabSpeedDialModule } from './fabSpeedDial.module'
2 | export { FabSpeedDialChild } from './fabSpeedDialChild.directive'
3 | export { FabSpeedDialContainer } from './fabSpeedDialContainer.directive'
4 | export { FabSpeedDialTrigger } from './fabSpeedDialTrigger.directive'
5 |
--------------------------------------------------------------------------------
/src/features/category-acc.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { CategoryAccDirective } from './category-acc.directive';
2 |
3 | describe('CategoryAccDirective', () => {
4 | it('should create an instance', () => {
5 | const directive = new CategoryAccDirective();
6 | expect(directive).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/src/res/icons/meta.json:
--------------------------------------------------------------------------------
1 | [{
2 | "content": "t",
3 | "class": "translation",
4 | "svg": "./translation/glyph.svg"
5 | },{
6 | "content": "s",
7 | "class": "scaling",
8 | "svg": "./scaling/glyph.svg"
9 | },{
10 | "content": "r",
11 | "class": "rotation",
12 | "svg": "./rotation/glyph.svg"
13 | }]
--------------------------------------------------------------------------------
/src/components/snackDialog/snackDialog.style.scss:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: flex;
4 | justify-content: flex-start;
5 | align-items: center;
6 |
7 | }
8 |
9 | i,mat-icon
10 | {
11 | flex: 0 0 auto;
12 | margin: 0 1rem;
13 | }
14 |
15 | markdown-dom,span
16 | {
17 | flex: 1 1 auto;
18 | }
--------------------------------------------------------------------------------
/src/components/tab/tab.template.html:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/src/layouts/layouts/h13/h13.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'layout-horizontal-one-three',
5 | templateUrl: './h13.template.html',
6 | styleUrls: [
7 | './h13.style.css',
8 | ],
9 | })
10 |
11 | export class HorizontalOneThree {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/layouts/layouts/pip/pip.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'picture-in-picture-panel',
5 | templateUrl: './pip.template.html',
6 | styleUrls: [
7 | './pip.style.css',
8 | ],
9 | })
10 |
11 | export class PictureInPicturePanel {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/layouts/layouts/single/single.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'layout-single-panel',
5 | templateUrl: './single.template.html',
6 | styleUrls: [
7 | './single.style.css',
8 | ],
9 | })
10 |
11 | export class SinglePanel {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/layouts/layouts/v13/v13.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'layout-vertical-one-three',
5 | templateUrl: './v13.template.html',
6 | styleUrls: [
7 | './v13.style.css',
8 | ],
9 | })
10 |
11 | export class VerticalOneThree {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/util/index.ts:
--------------------------------------------------------------------------------
1 | export { UtilModule } from './util.module'
2 | export { CLICK_INTERCEPTOR_INJECTOR, ClickInterceptor, CONTEXT_MENU_ITEM_INJECTOR, TClickInterceptorConfig, TContextMenu } from './injectionTokens'
3 | export {
4 | DoublyLinkedList,
5 | FindInLinkedList,
6 | IDoublyLinkedItem
7 | } from './LinkedList'
8 |
--------------------------------------------------------------------------------
/src/util/pipes/getUnique.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'getUniquePipe',
5 | pure: true
6 | })
7 |
8 | export class GetUniquePipe implements PipeTransform {
9 | public transform(arr: any[]) {
10 | return Array.from(new Set(arr))
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/util/pipes/nmToMm.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'nmToMm',
5 | pure: true
6 | })
7 |
8 | export class NmToMm implements PipeTransform{
9 | public transform(nums: number[]): number[] {
10 | return nums.map(num => (num / 1e6))
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/util/siibraApiConstants/fn.ts:
--------------------------------------------------------------------------------
1 | import { TRegionDetail } from "./types";
2 |
3 | export function getPosFromRegion(region: TRegionDetail){
4 | if (!!region?.props?.components?.[0]?.centroid) {
5 | return region.props.components[0].centroid.map(v => v*1e6) as [number, number, number]
6 | }
7 | return null
8 | }
--------------------------------------------------------------------------------
/docs/releases/v2.1.1.md:
--------------------------------------------------------------------------------
1 | # v2.1.1
2 |
3 | 15 April 2020
4 |
5 | ## Bugfixes
6 |
7 | - Fixed a bug where viewer at ebrains.eu domain was not displaying properly (#497)
8 | - Clarified inline script for catching Safari 10 bug
9 |
10 | ## Under the hood stuff
11 |
12 | - Using iam.ebrains.eu for HBP Keycloak authentication
--------------------------------------------------------------------------------
/src/spotlight/spotlight-backdrop/spotlight-backdrop.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { SpotlightBackdropComponent } from './spotlight-backdrop.component';
4 |
5 | describe('SpotlightBackdropComponent', () => {
6 |
7 | // TO BE IMPLEMENTED
8 | });
9 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.style.css:
--------------------------------------------------------------------------------
1 | div#neuroglancer-container
2 | {
3 | height:100%;
4 | width: 100%;
5 | }
6 |
7 | [placeholder]
8 | {
9 | height:100%;
10 | width: 100%;
11 | justify-content: center;
12 | align-items: center;
13 | display:flex;
14 | flex-direction: column;
15 | }
--------------------------------------------------------------------------------
/docs/releases/v2.1.3.md:
--------------------------------------------------------------------------------
1 | # v2.1.3
2 |
3 | 28 April 2020
4 |
5 | ## Bugfixes
6 |
7 | - Fixed a bug preventing users from scrolling the fetched dataset containers (#508)
8 | - Fixed a bug - change template from region menu was showing irrelevant regions (#507)
9 | - Fixed a bug taking screenshot again does not work (#482)
10 |
--------------------------------------------------------------------------------
/docs/releases/v2.5.1.md:
--------------------------------------------------------------------------------
1 | # v2.5.1
2 |
3 | ## Bugfixes
4 |
5 | - fix ieeg and receptor data features
6 | - fix region spatial props
7 | - fix region origin datasets
8 | - Connectivity matrix: Fix connectivity matrix export feature
9 | - Connectivity profile: Fix connectivity profile
10 | - Add monkey brain preview images
11 |
--------------------------------------------------------------------------------
/src/components/smartChip/smartChip.menu.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, Inject, TemplateRef } from "@angular/core";
2 |
3 | @Directive({
4 | selector: `ng-template[sxplrSmartChipMenu]`
5 | })
6 |
7 | export class SmartChipMenu {
8 | constructor(@Inject(TemplateRef) public templateRef: TemplateRef){}
9 | }
10 |
--------------------------------------------------------------------------------
/docs/releases/v2.0.1.md:
--------------------------------------------------------------------------------
1 | # v2.0.1
2 |
3 | 21 Oct 2019
4 |
5 | [release](https://github.com/HumanBrainProject/interactive-viewer/releases/tag/v2.0.1)
6 |
7 | - Bugfix:
8 | - fixed commonsense filter
9 | - fixed fetching allen, waxholm datasets
10 |
11 | - Chore:
12 | - Changed `Mouse` to `Cursor`
13 | - Fixed terms of use
--------------------------------------------------------------------------------
/docs/releases/v2.10.1.md:
--------------------------------------------------------------------------------
1 | # v2.10.1
2 |
3 | ## Bugfix
4 |
5 | - fsaverage on change variant, showing multiple meshes
6 | - fsaverage erroneous URL encoding of selected region
7 | - some annotations no longe rwork properly
8 |
9 | ## Behind the scenes
10 |
11 | - Housekeeping CI/CD
12 | - Simplify some behind the scenes code
13 |
--------------------------------------------------------------------------------
/src/components/smartChip/smartChip.action.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, Inject, TemplateRef } from "@angular/core";
2 |
3 | @Directive({
4 | selector: `ng-template[sxplrSmartChipAction]`
5 | })
6 |
7 | export class SmartChipAction {
8 | constructor(@Inject(TemplateRef) public templateRef: TemplateRef){}
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/smartChip/smartChip.header.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, Inject, TemplateRef } from "@angular/core";
2 |
3 | @Directive({
4 | selector: `ng-template[sxplrSmartChipHeader]`
5 | })
6 |
7 | export class SmartChipHeader {
8 | constructor(@Inject(TemplateRef) public templateRef: TemplateRef){}
9 | }
10 |
--------------------------------------------------------------------------------
/src/layouts/layouts/fourPanel/fourPanel.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'layout-four-panel',
5 | templateUrl: './fourPanel.template.html',
6 | styleUrls: [
7 | './fourPanel.style.css',
8 | ],
9 | })
10 |
11 | export class FourPanelLayout {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.6.md:
--------------------------------------------------------------------------------
1 | # v2.6.6
2 |
3 | ## Feature
4 |
5 | - (experimental) link to 1um VOI
6 |
7 | ## Bugfix
8 |
9 | - plugin manifests no longer fails all, and can now timeout properly
10 | - fixed plugin cache key
11 | - fixed area 44 receptor incorrectly fetching receptor data
12 | - fixed receptor when to show PR and AR
13 |
--------------------------------------------------------------------------------
/src/components/smartChip/smartChip.content.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, Inject, TemplateRef } from "@angular/core";
2 |
3 | @Directive({
4 | selector: `ng-template[sxplrSmartChipContent]`
5 | })
6 |
7 | export class SmartChipContent {
8 | constructor(@Inject(TemplateRef) public templateRef: TemplateRef){}
9 | }
10 |
--------------------------------------------------------------------------------
/src/features/featureName.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'featureNamePipe',
5 | pure: true,
6 | })
7 |
8 | export class FeatureNamePipe implements PipeTransform{
9 | public transform(name: string): string {
10 | return name.split(".").slice(-1)[0]
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/features/guards.ts:
--------------------------------------------------------------------------------
1 | import { VoiFeature } from "src/atlasComponents/sapi/sxplrTypes"
2 |
3 | export { VoiFeature }
4 |
5 | export function isVoiData(feature: unknown): feature is VoiFeature {
6 | return !!(feature?.['bbox'])
7 | }
8 |
9 | export function notQuiteRight(_feature: unknown): string[] {
10 | return []
11 | }
12 |
--------------------------------------------------------------------------------
/src/spotlight/spot-light-overlay.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { SpotLightOverlayDirective } from './spot-light-overlay.directive';
2 |
3 | describe('SpotLightOverlayDirective', () => {
4 | it('should create an instance', () => {
5 | const directive = new SpotLightOverlayDirective();
6 | expect(directive).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/src/ui/topMenu/topMenuCmp/topMenu.style.css:
--------------------------------------------------------------------------------
1 | :host > *
2 | {
3 | flex: 0 0 0;
4 | margin-right: 0.4em;
5 | display:inline-block;
6 | }
7 |
8 | :host > *
9 | {
10 | pointer-events: all;
11 | }
12 |
13 | .btnWrapper
14 | {
15 | margin: 0.5rem 0;
16 | }
17 |
18 | .mat-tab-content
19 | {
20 | padding: 0.8rem 1.2rem;
21 | }
22 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.24.md:
--------------------------------------------------------------------------------
1 | # v2.14.24
2 |
3 | ## Feature
4 |
5 | - Selecting region will now navigate to the region's centroid
6 | - Add warning text when warping, region deselection and/or when cortical layers is selected
7 |
8 | ## Behind the scene
9 |
10 | - Fix prepare_release script
11 | - Added SOP for ebrains deployment
12 |
13 |
--------------------------------------------------------------------------------
/docs/releases/v2.6.5.md:
--------------------------------------------------------------------------------
1 | # v2.6.5
2 |
3 | ## Feature
4 |
5 | - Re-enabled autoradiographs for receptor datasets
6 | - Added how-to-cite as a part of quick tour (#1085)
7 | - Added VIP routes
8 |
9 | ## Bugfix
10 |
11 | - saneUrl store now properly uses redis
12 | - updated several packages to fix potential security vulnerabilities
13 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.exit__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/region/region/listItem/region.listItem.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ region.name }}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.loadLayers__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.navigateTo__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.selectAtlas__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.exit__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/handshake/sxplr.init__fromSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.init"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.addAnnotations__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.cancelRequest__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.removeLayers__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.rmAnnotations__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.selectTemplate__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.setAuxMeshAlpha__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.setOctantRemoval__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.updateLayers__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/components/coordTextBox/coordTextBox.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ label }}
4 |
5 |
6 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/spotlight/spotlight-backdrop/spotlight-backdrop.component.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | position: absolute;
4 | top: 0;
5 | left: 0;
6 | z-index: 9999;
7 | width: 100%;
8 | height: 100%;
9 |
10 | background-color: rgba(128,128,128,0.6);
11 | transition: all ease-in-out 200ms;
12 |
13 | pointer-events: all;
14 | opacity: 1;
15 | }
16 |
--------------------------------------------------------------------------------
/src/state/plugins/selectors.ts:
--------------------------------------------------------------------------------
1 | import { createSelector } from "@ngrx/store";
2 | import { PluginStore } from "./store"
3 | import { nameSpace } from "./const"
4 |
5 | const storeSelector = state => state[nameSpace] as PluginStore
6 |
7 | export const initManfests = createSelector(
8 | storeSelector,
9 | state => state.initManifests
10 | )
11 |
--------------------------------------------------------------------------------
/src/util/pipes/mapToProperty.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'mapToProperty',
5 | pure: true
6 | })
7 |
8 | export class MapToPropertyPipe implements PipeTransform{
9 | public transform(arr: any[], prop: string){
10 | return arr.map(item => prop ? item[prop] : item)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/viewerModule/leap/leapSignal/leapSignal.style.css:
--------------------------------------------------------------------------------
1 | .leap-spinner
2 | {
3 | animation: spinning 1400ms linear infinite running;
4 | }
5 |
6 | @keyframes spinning
7 | {
8 | from {
9 | transform: rotate(0deg);
10 | }
11 | to{
12 | transform: rotate(359deg);
13 | }
14 | }
15 |
16 | .leap-muted
17 | {
18 | opacity: 0.5;
19 | }
20 |
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.loadLayers__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.navigateTo__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.selectAtlas__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.selectParcellation__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/ui/cookieAgreement/data/aboutMatomo.md:
--------------------------------------------------------------------------------
1 | Siibra explorer uses the opensource hosted on EBRAINS infrastructure to track usage statistics.
2 |
3 | **do not track**: if you enable [do not track](https://en.wikipedia.org/wiki/Do_Not_Track), matomo is configured to not track you on this site.
4 |
5 | You can opt out of tracking manually below.
--------------------------------------------------------------------------------
/docs/advanced/api/handshake/sxplr.init__fromSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.init"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.addAnnotations__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.cancelRequest__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.removeLayers__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.rmAnnotations__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.selectTemplate__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.setAuxMeshAlpha__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.setOctantRemoval__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.updateLayers__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.selectParcellation__toSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "const": "OK"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/docs/releases/v2.14.22.md:
--------------------------------------------------------------------------------
1 | # v2.14.22
2 |
3 | ## Feature
4 |
5 | - added tooltip why log
6 | - (experimental) added toggle to show all meshes
7 |
8 | ## Bugfix
9 |
10 | - Improved stability of feature panel and fetching
11 |
12 | ## Behind the scene
13 |
14 | - Preparing for Julich Brain Big Brain releases
15 | - Add scripts for deploying on new k8s cluster
16 |
--------------------------------------------------------------------------------
/docs/releases/v2.7.3.md:
--------------------------------------------------------------------------------
1 | # v2.7.3
2 |
3 | ## Bugfix
4 |
5 | - fixed matomo visitor counting (broke since 2.7.0 release)
6 | - fixed sane url generation
7 | - fixed reset navigation buttons in navigation card
8 |
9 | ## Under the hood
10 |
11 | - minor refactor of unused code
12 | - added mirrors to siibra-api
13 | - experimental support for drag and drop swc
14 |
--------------------------------------------------------------------------------
/src/util/pipes/combineFn.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'combineFn',
5 | pure: true
6 | })
7 | export class CombineFnPipe implements PipeTransform{
8 | public transform(fns: CallableFunction[]): CallableFunction{
9 | return () => {
10 | for (const fn of fns) fn()
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/docs/advanced/annotating_structures.md:
--------------------------------------------------------------------------------
1 | # Annotating Structures in the Brain
2 |
3 | (TBD)
4 |
5 |
11 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.12.md:
--------------------------------------------------------------------------------
1 | # v2.14.12
2 |
3 | ## Behind the scenes
4 |
5 | - Reverting point assignment panel behaviors
6 |
7 | ## Known regressions
8 |
9 | - Labelled assignment now does not work. This will be addressed in a future update. (The temporary regression allows for significant performant statistical assignment, as well more accurate label assignment.)
10 |
--------------------------------------------------------------------------------
/docs/releases/v2.7.0.md:
--------------------------------------------------------------------------------
1 | # v2.7.0
2 |
3 | ## Breaking changes
4 |
5 | - plugin in interactive atlas viewer has been completely redesigned
6 |
7 | ## New feature
8 |
9 | - added storybook for component development
10 | - Add first implementation of fetching VOI from siibra-api
11 |
12 | ## Under the hood
13 |
14 | - Major refactor to use new siibra-api schema
15 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapi/codeSnippets/codeSnippet.style.scss:
--------------------------------------------------------------------------------
1 | .textarea
2 | {
3 | width: 75vw;
4 |
5 | }
6 |
7 | textarea-copy-export
8 | {
9 | display: block;
10 | width: 75vw;
11 |
12 | ::ng-deep mat-form-field {
13 | width: 100%;
14 |
15 | textarea
16 | {
17 | resize: none;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/features/compoundFeatureIndices/util.ts:
--------------------------------------------------------------------------------
1 | import { Point, SimpleCompoundFeature } from "src/atlasComponents/sapi/sxplrTypes";
2 |
3 | export type CFIndex = SimpleCompoundFeature['indices'][number]
4 |
5 | export function isPoint(val: string|Point): val is Point{
6 | return !!(val as any).spaceId && !!(val as any).loc
7 | }
8 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.1.md:
--------------------------------------------------------------------------------
1 | # v2.4.1
2 |
3 | ## Bugfixes
4 |
5 | - fixed PLI best view point
6 | - fixed font size of section header under feature
7 | - temporarily fixed nehuba navigation panel
8 |
9 | ## Under the hood stuff
10 |
11 | - updated backend requirements, removed unused environment variable definitions
12 | - added k8s deployment config
13 | - updated docs
14 |
--------------------------------------------------------------------------------
/docs/releases/v2.7.6.md:
--------------------------------------------------------------------------------
1 | # v2.7.6
2 |
3 | ## Features
4 |
5 | - Emitting navigation state for plugin API
6 | - Reintroduced snap perspective orientation functionality
7 |
8 | ## Bugfix
9 |
10 | - Fixed drag and drop in nehuba viewer
11 |
12 | ## Under the hood
13 |
14 | - bumped siibra-api version for updated julich brain hierarchy
15 | - updated some dependencies
16 |
--------------------------------------------------------------------------------
/src/dragDropFile/module.ts:
--------------------------------------------------------------------------------
1 | import { CommonModule } from "@angular/common";
2 | import { NgModule } from "@angular/core";
3 | import { DragDropFileDirective } from "./dragDrop.directive";
4 |
5 | @NgModule({
6 | imports: [CommonModule],
7 | declarations: [DragDropFileDirective],
8 | exports: [DragDropFileDirective],
9 | })
10 | export class DragDropFileModule {}
11 |
--------------------------------------------------------------------------------
/src/util/mergeObj.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | type TObj = Record
4 |
5 | @Pipe({
6 | name: 'mergeObj',
7 | pure: true
8 | })
9 |
10 | export class MergeObjPipe implements PipeTransform{
11 | public transform(o1: TObj, o2: TObj){
12 | return {
13 | ...o1,
14 | ...o2
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/util/pipes/getProperty.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'getProperty',
5 | pure: true
6 | })
7 |
8 | export class GetPropertyPipe> implements PipeTransform{
9 | public transform(input: R, property: keyof R) {
10 | return input && input[property]
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/index.ts:
--------------------------------------------------------------------------------
1 | export { NehubaGlueCmp } from "./nehubaViewerGlue/nehubaViewerGlue.component"
2 | export { NehubaViewerTouchDirective } from "./nehubaViewerInterface/nehubaViewerTouch.directive"
3 | export { NehubaModule } from "./module"
4 | export { NehubaViewerUnit } from "./nehubaViewer/nehubaViewer.component"
5 | export { NEHUBA_INSTANCE_INJTKN } from "./util"
6 |
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/tsViewerConfig/tsViewerConfig.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'three-surfer-viewer-config',
5 | templateUrl: './tsViewerConfig.template.html',
6 | styleUrls: [
7 | './tsViewerConfig.style.css'
8 | ]
9 | })
10 |
11 | export class ThreeSurferViewerConfig {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/atlas/splashScreen/splashScreen.template.html:
--------------------------------------------------------------------------------
1 |
2 | siibra-explorer
3 |
4 |
5 |
8 |
9 |
10 | {{ atlas.name }}
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/util/pipes/filterArray.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'filterArray',
5 | pure: true
6 | })
7 |
8 | export class FilterArrayPipe implements PipeTransform{
9 | public transform(arr: T[], filterFn: (item: T, index?: number, array?: T[]) => boolean){
10 | return (arr || []).filter(filterFn)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/widget/widgetCanvas.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, ViewContainerRef } from "@angular/core";
2 | import { WidgetService } from "./service";
3 |
4 | @Directive({
5 | selector: `[widget-canvas]`
6 | })
7 |
8 | export class WidgetCanvas {
9 | constructor(
10 | wSvc: WidgetService,
11 | vcr: ViewContainerRef,
12 | ){
13 | wSvc.vcr = vcr
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/util/numbers.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'numbers',
5 | pure: true
6 | })
7 |
8 | export class NumbersPipe implements PipeTransform{
9 | public transform(nums: number[], decimal: number = 2): number[] {
10 | return nums.map(num => num.toFixed(decimal)).map(Number)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/atlasViewer/atlasViewer.animation.ts:
--------------------------------------------------------------------------------
1 | import { animate, style, transition, trigger } from "@angular/animations";
2 |
3 | export const colorAnimation = trigger('newEvent', [
4 | transition('* => *', [
5 | animate('180ms ease-in', style({
6 | opacity : '1.0',
7 | })),
8 | animate('380ms ease-out', style({
9 | opacity : '0.0',
10 | })),
11 | ]),
12 | ])
13 |
--------------------------------------------------------------------------------
/src/components/smartChip/hasSubmenu.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'hasSubMenu',
5 | pure: true
6 | })
7 |
8 | export class HasSubMenuPipe implements PipeTransform{
9 | public transform(item: T, getChildren: (obj: T) => T[]): boolean {
10 | return (getChildren(item) || []).length > 0
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/util/directives/trigger.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, EventEmitter, OnInit, Output } from "@angular/core";
2 |
3 | @Directive({
4 | selector: '[sxplr-triggers]',
5 | standalone: true
6 | })
7 |
8 | export class SxplrTriggers implements OnInit{
9 | @Output('init')
10 | init = new EventEmitter()
11 |
12 | ngOnInit(): void {
13 | this.init.emit(null)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/store/selectors.ts:
--------------------------------------------------------------------------------
1 | import { createSelector } from "@ngrx/store"
2 | import { nameSpace } from "./const"
3 | import { Store } from "./store"
4 |
5 | const selectStore = state => state[nameSpace] as Store
6 |
7 | export const getSelectedSurfaceVariant = createSelector(
8 | selectStore,
9 | ({ selectedSurfaceVariant }) => selectedSurfaceVariant
10 | )
11 |
--------------------------------------------------------------------------------
/docs/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.7 as builder
2 |
3 | COPY . /iav
4 | WORKDIR /iav
5 |
6 | RUN pip install mkdocs mkdocs-material mdx_truly_sane_lists errandkun
7 |
8 | RUN mkdocs build
9 |
10 | FROM nginx:alpine
11 | COPY --from=builder /iav/site /usr/share/nginx/html
12 | COPY --from=builder /iav/docs/nginx.conf /etc/nginx/nginx.conf
13 |
14 | ENTRYPOINT ["nginx", "-g", "daemon off;"]
15 |
--------------------------------------------------------------------------------
/docs/releases/v2.12.2.md:
--------------------------------------------------------------------------------
1 | # v2.12.2
2 |
3 | ## Bugfixes
4 |
5 | - fixes screenshot in fsaverage
6 | - on hover region label in fsaverage now display properly
7 | - fixes annotation mode (export annotations, annotations fail to render in viewer on startup (via shared link, local storage etc))
8 | - fixes an issue where region definition in full assignment table can also be clicked to select the region
9 |
--------------------------------------------------------------------------------
/docs/releases/v2.12.3.md:
--------------------------------------------------------------------------------
1 | # v2.12.3
2 |
3 | ## Bugfix
4 |
5 | - Visually distinguish regions that are mapped in a space to those that are not
6 | - Remove experimental flag to VOI
7 | - siibra-explorer now displays description and doi for more regions correctly (Julich Brain 3.0 in all MRI spaces and Julich Brain detailed maps in Big Brain spaces)
8 | - Do not display connectivity in big brain space
9 |
--------------------------------------------------------------------------------
/docs/releases/v2.9.0.md:
--------------------------------------------------------------------------------
1 | # v2.9.0
2 |
3 | ## Feature
4 |
5 | - Added minimap picture-in-picture in single panel mode
6 |
7 | ## Behind the scenes
8 |
9 | - Updated dependencies
10 | - Add built bundles to release artefacts
11 |
12 | ## Bugfix
13 |
14 | - Select default connectivity profile
15 | - Show connectivity dataset info
16 | - Mini region search on Enter no longer resets the page
17 |
--------------------------------------------------------------------------------
/src/util/pipes/doiPipe.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'doiParserPipe',
5 | })
6 |
7 | export class DoiParserPipe implements PipeTransform {
8 | public transform(s: string, prefix: string = 'https://doi.org/') {
9 | const hasProtocol = /^https?:\/\//.test(s)
10 | return `${hasProtocol ? '' : prefix}${s}`
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/util/pipes/parseAsNumber.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'parseAsNumber'
5 | })
6 |
7 | export class ParseAsNumberPipe implements PipeTransform{
8 | public transform(input: string | string[]): number | number[]{
9 | if (input instanceof Array) return input.map(v => Number(v))
10 | return Number(input)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.4.md:
--------------------------------------------------------------------------------
1 | # v2.14.4
2 |
3 | ## Feature
4 |
5 | - Sagittal view of perspective PiP changes hemisphere when user navigates to the other hemisphere
6 | - Adds an additional degree adjustment to perspective PiP
7 | - Encode maximised panel state
8 |
9 | ## Behind the Scenes
10 |
11 | - Fix CI/CD deploy on rancher
12 | - Update API docs
13 | - Update github action checkout/setupnode
14 |
--------------------------------------------------------------------------------
/docs/releases/v2.7.2.md:
--------------------------------------------------------------------------------
1 | # v2.7.2
2 |
3 | ## Feature
4 |
5 | - (re)introduced the parcellation info button
6 |
7 | ## Bugfix
8 |
9 | - fix the position of quick tour panel of slice view panels
10 | - fix the atlas selection logic. This should reduce 4xx/5xx calls significantly
11 | - minor update to parcellation chip appearance
12 | - clicking on feature badge now properly selects the feature
13 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/parcellation/groupedParcellation.ts:
--------------------------------------------------------------------------------
1 | import { SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes"
2 |
3 | export class GroupedParcellation{
4 | name: string
5 | parcellations: SxplrParcellation[]
6 | constructor(name: string, parcellations: SxplrParcellation[]){
7 | this.name = name
8 | this.parcellations = parcellations
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/parcellation/index.ts:
--------------------------------------------------------------------------------
1 | export { SapiViewsCoreParcellationModule } from "./module"
2 | export { FilterGroupedParcellationPipe } from "./filterGroupedParcellations.pipe"
3 | export { GroupedParcellation } from "./groupedParcellation"
4 | export { ParcTmplDoiPipe } from "./parcTmplDoi.pipe"
5 | export { ParcellationGroupSelectedPipe } from "./parcellationGroupSelected.pipe"
6 |
--------------------------------------------------------------------------------
/src/util/directives/destroy.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, OnDestroy } from "@angular/core";
2 | import { Subject } from "rxjs";
3 |
4 | @Directive({
5 | standalone: true
6 | })
7 | export class DestroyDirective implements OnDestroy{
8 | public destroyed$ = new Subject()
9 | ngOnDestroy(): void {
10 | this.destroyed$.next()
11 | this.destroyed$.complete()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/spinner/module.ts:
--------------------------------------------------------------------------------
1 | import { CommonModule } from "@angular/common";
2 | import { NgModule } from "@angular/core";
3 | import { SpinnerCmp } from "./spinnerCmp/spinner.component";
4 |
5 | @NgModule({
6 | imports: [
7 | CommonModule
8 | ],
9 | declarations: [
10 | SpinnerCmp
11 | ],
12 | exports: [
13 | SpinnerCmp
14 | ]
15 | })
16 |
17 | export class SpinnerModule{}
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/store/selectors.ts:
--------------------------------------------------------------------------------
1 | import { createSelector } from "@ngrx/store";
2 | import { NEHUBA_VIEWER_FEATURE_KEY } from '../constants'
3 | import { INehubaFeature, IAuxMesh } from "./type";
4 |
5 | export const selectorAuxMeshes = createSelector(
6 | state => state[NEHUBA_VIEWER_FEATURE_KEY],
7 | nehubaFeatureStore => nehubaFeatureStore['auxMeshes']
8 | )
9 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/util/parseDoi.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'parseDoi',
5 | })
6 |
7 | export class ParseDoiPipe implements PipeTransform {
8 | public transform(s: string, prefix: string = 'https://doi.org/') {
9 | const hasProtocol = /^https?:\/\//.test(s)
10 | return `${hasProtocol ? '' : prefix}${s}`
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/util/addUnitAndJoin.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'addUnitAndJoin',
5 | pure: true
6 | })
7 |
8 | export class AddUnitAndJoin implements PipeTransform{
9 | public transform(arr: (string | number)[], unit: string, separator: string = ', '): string {
10 | return arr.map(v => `${v}${unit}`).join(separator)
11 | }
12 | }
--------------------------------------------------------------------------------
/src/components/markdown/module.ts:
--------------------------------------------------------------------------------
1 | import { CommonModule } from "@angular/common";
2 | import { NgModule } from "@angular/core";
3 | import { MarkdownDom } from "./markdownCmp/markdown.component";
4 |
5 | @NgModule({
6 | imports: [
7 | CommonModule,
8 | ],
9 | declarations: [
10 | MarkdownDom
11 | ],
12 | exports: [
13 | MarkdownDom
14 | ]
15 | })
16 |
17 | export class MarkdownModule{}
18 |
--------------------------------------------------------------------------------
/docs/releases/v2.10.0.md:
--------------------------------------------------------------------------------
1 | # v2.10.0
2 |
3 | ## Feature
4 |
5 | - classifies features more intuitively
6 | - spatial feature now leverages siibra-python
7 |
8 | ## Bugfix
9 |
10 | - panel maximisation, change atlas/template results in incorrect panel order
11 | - build artefacts properly
12 |
13 | ## Behind the scenes
14 |
15 | - Updates to siibra-api v3/siibra-python v0.4
16 | - Shed request as a dependency
17 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapi/README.md:
--------------------------------------------------------------------------------
1 | # SAPI (siibra-api)
2 |
3 | siibra-explorer gets the atlas metadata from siibra-api (http://github.com/fzj-inm1-bda/siibra-api)
4 |
5 | Production instance of siibra-api is at: https://siibra-api-stable.apps.hbp.eu/v2_0/docs
6 |
7 | As siibra-api implements openapi, the schema of the responses can be automatically populated by:
8 |
9 | ```sh
10 | npm run sapi-schema
11 | ```
12 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from "@angular/core";
2 | import { SapiViewsCoreModule } from "./core";
3 | import { VolumesModule } from "./volumes/volumes.module";
4 |
5 | @NgModule({
6 | imports: [
7 | SapiViewsCoreModule,
8 | VolumesModule,
9 | ],
10 | exports: [
11 | SapiViewsCoreModule,
12 | VolumesModule,
13 | ]
14 | })
15 | export class SapiViewsModule{}
16 |
--------------------------------------------------------------------------------
/src/components/flatHierarchy/spacer.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 | import { TreeNode } from "./const"
3 |
4 | @Pipe({
5 | name: 'flatHierarchySpacer',
6 | pure: true
7 | })
8 |
9 | export class FlatHierarchySpacer implements PipeTransform{
10 | public transform(inputNode: TreeNode, ..._args: any[]) {
11 | return Array(inputNode.level).fill(null)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/layouts/layouts/fourPanel/fourPanel.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/e2e_env.md:
--------------------------------------------------------------------------------
1 | # End-to-end Tests Environment Variables
2 |
3 | | name | description | default | example |
4 | | --- | --- | --- | --- |
5 | | PROTRACTOR_SPECS | specs relative to `./e2e/` | `./src/**/*.prod.e2e-spec.js` | |
6 | | DISABLE_CHROME_HEADLESS | disable headless chrome, spawns chrome window | `unset` (falsy) | 1 |
7 | | ENABLE_GPU | uses GPU. nb, in headless mode, will show requirement not met | `unset` (falsy) | 1 |
8 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.getAllAtlases__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.getAllAtlases"
13 | },
14 | "params": {
15 | "const": null
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/strictLocal/strictLocalCmp/strictLocalCmp.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | @Component({
4 | selector: `strict-local-info`,
5 | template: `
6 | `,
9 | })
10 |
11 | export class StrictLocalInfo{
12 | tooltip = "External links are hidden in strict local mode."
13 | }
14 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/store/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | actionRemoveAuxMesh,
3 | actionSetAuxMesh,
4 | actionSetAuxMeshes,
5 | } from './actions'
6 | export {
7 | selectorAuxMeshes
8 | } from './selectors'
9 | export {
10 | reducer
11 | } from './store'
12 | export {
13 | IAuxMesh,
14 | INehubaFeature,
15 | } from './type'
16 |
17 | export * as selectors from "./selectors"
18 | export * as actions from "./actions"
--------------------------------------------------------------------------------
/docs/releases/v2.14.15.md:
--------------------------------------------------------------------------------
1 | # v2.14.15
2 |
3 | ## Feature
4 |
5 | - drag/drop nifti: allow sform to be used if qform not set
6 | - support zarr/n5 datasource
7 | - support datasource hosted on GCP (via JSON API)
8 |
9 | ## Documentation
10 |
11 | - fixed up some wordings related to drag/drop nifti
12 |
13 | ## Bugfix
14 |
15 | - fix the visual bug where full name of the space/parcellation is not been properly displayed
16 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.7.md:
--------------------------------------------------------------------------------
1 | # v2.14.7
2 |
3 | ## Bugfix
4 |
5 | - fixed issue on iOS/Safari volumetric viewer not displaying. (update called before config was populated). (Thanks to Minji Ma for reporting the bug)
6 |
7 | ## Behind the Scenes
8 |
9 | - Minor refactor to remove unneeded code.
10 | - Fixed typos/errors in release notes
11 | - Removed unused tests (e2e)
12 | - Added simple cypress for basic viewer rendering
13 |
--------------------------------------------------------------------------------
/src/util/pipes/getNthElement.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | // TODO use getProperty pipe instead
4 |
5 | @Pipe({
6 | name: 'getNthElement'
7 | })
8 | export class GetNthElementPipe implements PipeTransform{
9 | public transform(array: T[], idx: number): T{
10 | if (!array[idx]) throw new Error(`[GetNthElementPipe] accessor error`)
11 | return array[idx]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.getAllAtlases__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.getAllAtlases"
13 | },
14 | "params": {
15 | "const": null
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/docs/releases/v2.14.3.md:
--------------------------------------------------------------------------------
1 | # v2.14.3
2 |
3 | ## Bugfixes
4 |
5 | - Fixed minor theme issue.
6 | - Fixed issue with drag/drop nifti with multiple dimensions.
7 | - Fixed showing user dropped nifti filename.
8 | - Fix Safari 17 nehuba issue
9 |
10 | ## Behind the Scenes
11 |
12 | - Added loading progress bar when plotly is loading.
13 | - Restored displaying warnings to user dragged volume.
14 | - Fine tune helm deploy scripts
15 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/volumes/sandsToNum.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 | import { TSandsPoint } from "src/util/types";
3 |
4 | @Pipe({
5 | name: 'sandsToNum',
6 | pure: true
7 | })
8 | export class SandsToNumPipe implements PipeTransform{
9 | public transform(val: TSandsPoint) {
10 | return {
11 | coords: val.coordinates.map(v => v.value / 1e6)
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/util/pipes/getFilename.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | @Pipe({
4 | name: 'getFilenamePipe',
5 | })
6 |
7 | export class GetFilenamePipe implements PipeTransform {
8 | private regex: RegExp = new RegExp('/([^/]+)$')
9 | public transform(fullname: string): string {
10 | return this.regex.test(fullname)
11 | ? this.regex.exec(fullname)[1]
12 | : fullname
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.getSupportedTemplates__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.getSupportedTemplates"
13 | },
14 | "params": {
15 | "const": null
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/docs/releases/v2.14.18.md:
--------------------------------------------------------------------------------
1 | # v2.14.18
2 |
3 | ## Bugfix
4 |
5 | - Fixed x-overlay-layer nifti, swc
6 | - Fixed `ctrl+c` string copy in viewer
7 | - Fixed parcellation visibility toggle
8 |
9 | ## Feature
10 |
11 | - Remove dependency on unpkg
12 | - (experimental) keyframe support for nehuba viewer
13 |
14 | ## Behind the scenes
15 |
16 | - unify colormap shader generation and access
17 | - do not track perspective images with git-lfs
18 |
--------------------------------------------------------------------------------
/docs/releases/v2.2.3.md:
--------------------------------------------------------------------------------
1 | # v2.2.3
2 |
3 | 9 June 2020
4 |
5 | ## New features
6 |
7 | - Import "Individual Brain Charting (IBC)" data to explorable datasets
8 |
9 | ## Bugfixes
10 |
11 | - Fixed `undefined` showing for hemisphere metadata (#537)
12 | - Fixed non atlas image e2e test URL
13 | - Fixed backend test specs
14 | - Fixed redi deploy configuration
15 |
16 | ## Under the hood stuff
17 |
18 | - renamed css class for consistency
19 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.getSupportedParcellations__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.getSupportedParcellations"
13 | },
14 | "params": {
15 | "const": null
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/userLayers/userlayerInfo/userlayerInfo.style.scss:
--------------------------------------------------------------------------------
1 | .spinner
2 | {
3 | justify-self: center;
4 | display: inline-block;
5 | margin: 1rem;
6 | }
7 |
8 | :has(> .spinner)
9 | {
10 | display: grid;
11 | }
12 |
13 | .filename-container
14 | {
15 | flex: 1 1 auto;
16 | }
17 |
18 | button[mat-icon-button]
19 | {
20 | display: flex;
21 | justify-content: center;
22 | align-items: center;
23 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.getSupportedTemplates__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.getSupportedTemplates"
13 | },
14 | "params": {
15 | "const": null
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/docs/releases/v2.6.2.md:
--------------------------------------------------------------------------------
1 | # v2.6.2
2 |
3 | ## Bugfixes
4 |
5 | - Added indication when annotations were overwritten (partial fix to #1128)
6 |
7 | ## Under the hood stuff
8 |
9 | - update deploy depedencies
10 | - update deployment configurations
11 | - fixed some CSP issues
12 | - fixed favicons
13 | - added build debug messages
14 | - increment siibra-api version expectation
15 | - remove unused tests
16 | - update compressor image to 22.04
17 |
--------------------------------------------------------------------------------
/src/state/userInterface/selectors.ts:
--------------------------------------------------------------------------------
1 | import { createSelector } from "@ngrx/store";
2 | import { nameSpace } from "./const"
3 | import { UiStore } from "./store"
4 |
5 | const selectStore = state => state[nameSpace] as UiStore
6 |
7 | export const panelMode = createSelector(
8 | selectStore,
9 | state => state.panelMode
10 | )
11 |
12 | export const panelOrder = createSelector(
13 | selectStore,
14 | state => state.panelOrder
15 | )
16 |
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.getSupportedParcellations__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.getSupportedParcellations"
13 | },
14 | "params": {
15 | "const": null
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/ui/config/configCmp/config.style.css:
--------------------------------------------------------------------------------
1 | .config-transition
2 | {
3 | transition: background-color ease-in-out 200ms;
4 | }
5 |
6 | .config-transition:hover
7 | {
8 | background-color: rgba(128,128,128,0.1);
9 | }
10 |
11 | .onDragOver
12 | {
13 | background-color: rgba(128,128,128,0.2);
14 | }
15 |
16 | .chunky
17 | {
18 | width: 100%;
19 | height: 100%;
20 | }
21 |
22 | .uncollapsable
23 | {
24 | width: 10em;
25 | height: 7em;
26 | }
--------------------------------------------------------------------------------
/src/ui/kgtos/module.ts:
--------------------------------------------------------------------------------
1 | import { CommonModule } from "@angular/common";
2 | import { NgModule } from "@angular/core";
3 | import { ComponentsModule } from "src/components";
4 | import { KGToS } from "./kgtos/kgtos.component";
5 |
6 | @NgModule({
7 | imports: [
8 | CommonModule,
9 | ComponentsModule,
10 | ],
11 | declarations: [
12 | KGToS
13 | ],
14 | exports: [
15 | KGToS
16 | ]
17 | })
18 |
19 | export class KgTosModule{}
--------------------------------------------------------------------------------
/src/api/handshake/sxplr.init__fromSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "properties": {
13 | "name": {
14 | "type": "string"
15 | }
16 | },
17 | "type": "object"
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearchTmpl.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, TemplateRef } from "@angular/core";
2 | import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
3 |
4 | @Directive({
5 | selector: 'ng-template[region-template],ng-template[regionTemplate]'
6 | })
7 |
8 | export class SapiViewsCoreRichRegionListTemplateDirective{
9 | constructor(public tmplRef: TemplateRef){}
10 | }
11 |
--------------------------------------------------------------------------------
/src/getFileInput/type.ts:
--------------------------------------------------------------------------------
1 | import { TemplateRef } from "@angular/core";
2 |
3 | export interface IFileInputConfig {
4 | title: string
5 | allowText: boolean
6 | allowFile: boolean
7 | messageTmpl?: TemplateRef
8 | }
9 |
10 | export type TFileInput = {
11 | text: { input: string }
12 | file: { files: File[] }
13 | }
14 |
15 | export type TFileInputEvent = {
16 | type: Evt
17 | payload: TFileInput[Evt]
18 | }
--------------------------------------------------------------------------------
/.storybook/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.app.json",
3 | "compilerOptions": {
4 | "types": [
5 | "node"
6 | ],
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "exclude": [
10 | "../src/test.ts",
11 | "../src/**/*.spec.ts",
12 | "../projects/**/*.spec.ts"
13 | ],
14 | "include": [
15 | "../src/**/*",
16 | "../projects/**/*"
17 | ],
18 | "files": [
19 | "./typings.d.ts"
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/src/features/grpFeatToName.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | interface MetaDisplayName {
4 | meta: {
5 | displayName: string
6 | }
7 | }
8 |
9 | @Pipe({
10 | name: 'grpFeatToName',
11 | pure: true
12 | })
13 |
14 | export class GroupFeaturesToName implements PipeTransform{
15 | public transform(groupFeats: MetaDisplayName[]): string[] {
16 | return groupFeats.map(f => f.meta.displayName)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/screenshot/util.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken } from "@angular/core"
2 |
3 | interface IScrnShot{
4 | x: number
5 | y: number
6 | width: number
7 | height: number
8 | }
9 |
10 | /**
11 | * if param is not provided, screenshot entire screen
12 | */
13 | export type TypeHandleScrnShotPromise = (param?: IScrnShot) => Promise<{ revoke: () => void, url: string }>
14 | export const HANDLE_SCREENSHOT_PROMISE = new InjectionToken('HANDLE_SCREENSHOT_PROMISE')
--------------------------------------------------------------------------------
/docs/advanced/api/handshake/sxplr.init__fromSxplr__response.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "jsonrpc": {
6 | "const": "2.0"
7 | },
8 | "id": {
9 | "type": "string"
10 | },
11 | "result": {
12 | "properties": {
13 | "name": {
14 | "type": "string"
15 | }
16 | },
17 | "type": "object"
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.style.css:
--------------------------------------------------------------------------------
1 | .region-tmpl
2 | {
3 | text-overflow: clip;
4 | white-space: nowrap;
5 | }
6 |
7 | :host
8 | {
9 | display: flex;
10 | flex-direction: column;
11 | }
12 |
13 | sxplr-flat-hierarchy-tree-view
14 | {
15 | flex: 0px 1 1;
16 | }
17 |
18 | .legend-container
19 | {
20 | margin: 1rem;
21 | margin-top: -4rem;
22 | flex-direction: row-reverse;
23 | display: flex;
24 | }
25 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/util/equality.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe } from "@angular/core";
2 |
3 | type TTrackBy = (input: T) => O
4 |
5 | const defaultTrackBy: TTrackBy = i => i
6 |
7 | @Pipe({
8 | name: 'equality',
9 | pure: true
10 | })
11 |
12 | export class EqualityPipe{
13 | public transform(c1: T, c2: T, trackBy: TTrackBy = defaultTrackBy): boolean {
14 | return trackBy(c1) === trackBy(c2)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/components/vButton/vButton.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | padding: 1rem 2rem;
4 | /* background-color:rgba(128,128,128,0.3) */
5 | }
6 |
7 | :host:hover
8 | {
9 | cursor: pointer;
10 | }
11 |
12 | .icon-container
13 | {
14 | flex-basis: 2.5rem;
15 | }
16 |
17 | .text-container
18 | {
19 | flex-basis: 0;
20 | overflow: visible;
21 | text-align: center;
22 | }
23 |
24 | .footer-container
25 | {
26 | flex-basis: 0rem;
27 | margin-bottom: -1rem;
28 | }
--------------------------------------------------------------------------------
/third_party/preinit_vanilla.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | nehuba
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.helm/trafficcop/templates/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: {{ include "trafficcop.fullname" . }}
5 | labels:
6 | {{- include "trafficcop.labels" . | nindent 4 }}
7 | spec:
8 | type: {{ .Values.service.type }}
9 | ports:
10 | - port: {{ .Values.service.port }}
11 | targetPort: http
12 | protocol: TCP
13 | name: http
14 | selector:
15 | {{- include "trafficcop.selectorLabels" . | nindent 4 }}
16 |
--------------------------------------------------------------------------------
/src/components/safeHtml.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform, SecurityContext } from '@angular/core';
2 | import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
3 |
4 | @Pipe({
5 | name : 'safeHtml',
6 | })
7 |
8 | export class SafeHtmlPipe implements PipeTransform {
9 | constructor(private ds: DomSanitizer){
10 |
11 | }
12 | public transform(html: string): SafeHtml {
13 | return this.ds.sanitize(SecurityContext.HTML, html)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/util/windowResize/module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from "@angular/core";
2 | import { ResizeObserverDirective } from "./windowResize.directive";
3 | import { ResizeObserverService } from "./windowResize.service";
4 |
5 | @NgModule({
6 | declarations: [
7 | ResizeObserverDirective
8 | ],
9 | exports: [
10 | ResizeObserverDirective
11 | ],
12 | providers: [
13 | ResizeObserverService
14 | ]
15 | })
16 |
17 | export class WindowResizeModule{}
18 |
--------------------------------------------------------------------------------
/src/viewerModule/viewerCmp/viewerCmp.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from "@angular/core/testing"
2 | import { MockStore, provideMockStore } from "@ngrx/store/testing"
3 |
4 |
5 | describe('> viewerCmp.component.ts', () => {
6 | let mockStore: MockStore
7 | beforeEach(() => {
8 | TestBed.configureTestingModule({
9 | providers: [
10 | provideMockStore()
11 | ]
12 | })
13 | mockStore = TestBed.inject(MockStore)
14 | })
15 | })
16 |
--------------------------------------------------------------------------------
/.helm/trafficcop/.helmignore:
--------------------------------------------------------------------------------
1 | # Patterns to ignore when building packages.
2 | # This supports shell glob matching, relative path matching, and
3 | # negation (prefixed with !). Only one pattern per line.
4 | .DS_Store
5 | # Common VCS dirs
6 | .git/
7 | .gitignore
8 | .bzr/
9 | .bzrignore
10 | .hg/
11 | .hgignore
12 | .svn/
13 | # Common backup files
14 | *.swp
15 | *.bak
16 | *.tmp
17 | *.orig
18 | *~
19 | # Various IDEs
20 | .project
21 | .idea/
22 | *.tmproj
23 | .vscode/
24 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.20.md:
--------------------------------------------------------------------------------
1 | # v2.14.20
2 |
3 | ## Feature
4 |
5 | - Show/Hide delineation now persist in state
6 | - (experimental) glass brain
7 |
8 | ## Bugfix
9 |
10 | - Fixed some instability of annotation mode.
11 |
12 | ## Behind the scenes
13 |
14 | - Clarified authors & contributors
15 | - Improve performance by batching adding & removing layers
16 | - Added text to reflect that annoations will also be shared
17 | - Enabled viewer config in experimental mode
18 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/annotationMode/annotationMode.style.css:
--------------------------------------------------------------------------------
1 | .tool-btn-container
2 | {
3 | display: flex;
4 | flex-direction: column-reverse;
5 | }
6 |
7 | button
8 | {
9 | pointer-events: all;
10 |
11 | margin-left: -1rem;
12 | margin-right: 1rem;
13 | margin-top: -0.2rem;
14 |
15 | padding-right: 0.75rem;
16 | text-align: right;
17 | }
18 |
19 | .leave-me-alone
20 | {
21 | margin-top: 0.5rem;
22 | margin-bottom: 0.5rem;
23 | }
24 |
--------------------------------------------------------------------------------
/src/features/grpFeatToTotal.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | interface MetaHasTotal {
4 | meta: {
5 | total: number
6 | }
7 | }
8 |
9 | @Pipe({
10 | name: 'grpFeatTally',
11 | pure: true
12 | })
13 |
14 | export class GroupFeatureTallyPipe implements PipeTransform{
15 | public transform(groupFeats: MetaHasTotal[]): number {
16 | return groupFeats.map(f => f.meta.total).reduce((v, acc) => v + acc, 0)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/util/side-panel/side-panel.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'sxplr-side-panel',
5 | templateUrl: './side-panel.component.html',
6 | styleUrls: ['./side-panel.component.scss']
7 | })
8 | export class SidePanelComponent {
9 | @Input('sxplr-side-panel-card-color')
10 | cardColor: string = `rgb(200, 200, 200)`
11 |
12 | @Input('sxplr-side-panel-card-color')
13 | darktheme: boolean = false
14 | }
15 |
--------------------------------------------------------------------------------
/.helm/adhoc/example-secret-siibra-explorer.yml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Secret
3 | metadata:
4 | name: siibra-sxplr-secret
5 | type: Opaque
6 | data:
7 | # n.b. echo -n "foobar" | base64
8 | # or else the new line will also be encoded, and you will
9 | # wonder why your application does not work
10 | HBP_CLIENTID_V2: Zm9vYmFy
11 | HBP_CLIENTSECRET_V2: Zm9vYmFy
12 | SXPLR_EBRAINS_IAM_SA_CLIENT_ID: Zm9vYmFy
13 | SXPLR_EBRAINS_IAM_SA_CLIENT_SECRET: Zm9vYmFy
14 |
15 |
--------------------------------------------------------------------------------
/.helm/siibra-explorer/.helmignore:
--------------------------------------------------------------------------------
1 | # Patterns to ignore when building packages.
2 | # This supports shell glob matching, relative path matching, and
3 | # negation (prefixed with !). Only one pattern per line.
4 | .DS_Store
5 | # Common VCS dirs
6 | .git/
7 | .gitignore
8 | .bzr/
9 | .bzrignore
10 | .hg/
11 | .hgignore
12 | .svn/
13 | # Common backup files
14 | *.swp
15 | *.bak
16 | *.tmp
17 | *.orig
18 | *~
19 | # Various IDEs
20 | .project
21 | .idea/
22 | *.tmproj
23 | .vscode/
24 |
--------------------------------------------------------------------------------
/src/screenshot/screenshotCmp/screenshot.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: block;
4 | width:100%;
5 | }
6 |
7 | .cover
8 | {
9 | background-color: rgba(0,0,0, 0.5);
10 | }
11 |
12 | .box
13 | {
14 | /* background: none; */
15 | box-sizing: content-box;
16 | width: 0;
17 | height: 0;
18 | transform-origin: top left;
19 | }
20 |
21 | .inner-box
22 | {
23 | border: 1px white solid;
24 | }
25 |
26 | img
27 | {
28 | max-width: 50vw;
29 | min-width: 20vw;
30 | }
--------------------------------------------------------------------------------
/src/ui/help/howToCite/howToCite.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from "@angular/core";
2 |
3 | // eslint-disable-next-line @typescript-eslint/no-var-requires
4 | const { default: HOWTOCITE } = require('!!raw-loader!common/howToCite.md')
5 |
6 | @Component({
7 | selector: 'how-to-cite',
8 | templateUrl: './howToCite.template.html',
9 | styleUrls: [
10 | './howToCite.style.css'
11 | ]
12 | })
13 |
14 | export class HowToCite{
15 | public HOWTOCITE = HOWTOCITE
16 | }
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/parcellation/isGroupedParcellation.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core"
2 | import { GroupedParcellation } from "./groupedParcellation"
3 |
4 | @Pipe({
5 | name: 'isGroupedParcellation',
6 | pure: true
7 | })
8 |
9 | export class IsGroupedParcellation implements PipeTransform{
10 | public transform(input: unknown): input is GroupedParcellation {
11 | return input['parcellations'] instanceof Array
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/util/pipes/safeResource.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 | import { DomSanitizer, SafeResourceUrl } from "@angular/platform-browser";
3 |
4 | @Pipe({
5 | name: 'safeResource'
6 | })
7 |
8 | export class SafeResourcePipe implements PipeTransform{
9 | constructor(
10 | private ds: DomSanitizer
11 | ){
12 |
13 | }
14 |
15 | transform(input: string): SafeResourceUrl{
16 | return this.ds.bypassSecurityTrustResourceUrl(input)
17 | }
18 | }
--------------------------------------------------------------------------------
/.helm/siibra-explorer/templates/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: {{ include "siibra-explorer.fullname" . }}
5 | labels:
6 | {{- include "siibra-explorer.labels" . | nindent 4 }}
7 | spec:
8 | type: {{ .Values.service.type }}
9 | ports:
10 | - port: {{ .Values.service.port }}
11 | targetPort: http
12 | protocol: TCP
13 | name: http
14 | selector:
15 | {{- include "siibra-explorer.selectorLabels" . | nindent 4 }}
16 |
--------------------------------------------------------------------------------
/.helm/trafficcop/templates/serviceaccount.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.serviceAccount.create -}}
2 | apiVersion: v1
3 | kind: ServiceAccount
4 | metadata:
5 | name: {{ include "trafficcop.serviceAccountName" . }}
6 | labels:
7 | {{- include "trafficcop.labels" . | nindent 4 }}
8 | {{- with .Values.serviceAccount.annotations }}
9 | annotations:
10 | {{- toYaml . | nindent 4 }}
11 | {{- end }}
12 | automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
13 | {{- end }}
14 |
--------------------------------------------------------------------------------
/cypress.config.js:
--------------------------------------------------------------------------------
1 | const { defineConfig } = require("cypress");
2 |
3 | module.exports = defineConfig({
4 | e2e: {
5 | defaultCommandTimeout: 15000,
6 | supportFile: false,
7 | setupNodeEvents(on, config) {
8 | // implement node event listeners here
9 | },
10 | },
11 | env: {
12 | SCREENSHOT_URL: process.env.SCREENSHOT_URL,
13 | SCREENSHOT_PATH: process.env.SCREENSHOT_PATH,
14 | },
15 | experimentalWebKitSupport: !!process.env.USE_SAFARI
16 | });
17 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/parcellation/parcTmplDoi.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 | import { SxplrParcellation, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
3 |
4 | @Pipe({
5 | name: 'parcTmplDoiPipe',
6 | pure: true
7 | })
8 |
9 | export class ParcTmplDoiPipe implements PipeTransform {
10 | public transform(_parc: SxplrParcellation|SxplrTemplate): string[] {
11 | return (_parc.link || []).map(v => v.href)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/auth/auth.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive } from "@angular/core";
2 | import { Observable } from "rxjs";
3 | import { IUser, AuthService } from './auth.service'
4 |
5 | @Directive({
6 | selector: '[iav-auth-auth-state]',
7 | exportAs: 'iavAuthAuthState'
8 | })
9 |
10 | export class AuthStateDdirective{
11 | public user$: Observable
12 |
13 | constructor(
14 | private authService: AuthService,
15 | ){
16 | this.user$ = this.authService.user$
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/features/compoundFeatureIndices/idxToText.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 | import { CFIndex } from "./util"
3 |
4 | @Pipe({
5 | name: 'indexToStr',
6 | pure: true
7 | })
8 | export class IndexToStrPipe implements PipeTransform{
9 | public transform(value: CFIndex['index']): string {
10 | if (typeof value === "string") {
11 | return value
12 | }
13 | return `Point(${value.loc.map(v => v.toFixed(2)).join(", ")})`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/plugin/const.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken } from "@angular/core"
2 |
3 | const PLUGIN_SRC_KEY = "x-plugin-portal-src"
4 |
5 | export function setPluginSrc(src: string, record: Record = {}){
6 | return {
7 | ...record,
8 | [PLUGIN_SRC_KEY]: src
9 | }
10 | }
11 |
12 | export function getPluginSrc(record: Record = {}){
13 | return record[PLUGIN_SRC_KEY]
14 | }
15 |
16 | export const SET_PLUGIN_NAME = new InjectionToken('SET_PLUGIN_NAME')
17 |
--------------------------------------------------------------------------------
/docs/releases/v2.14.11.md:
--------------------------------------------------------------------------------
1 | # v2.14.11
2 |
3 | ## Feature
4 |
5 | - (experimental) showing coordinates of all warped spaces
6 |
7 | ## Bugfix
8 |
9 | - Fixed inconsistent saneurl creation (Thanks to Sebastian Bludau for reporting this)
10 |
11 |
12 | ## Known regressions
13 |
14 | - Labelled assignment now does not work. This will be addressed in a future update. (The temporary regression allows for significant performant statistical assignment, as well more accurate label assignment.)
15 |
--------------------------------------------------------------------------------
/docs/releases/v2.4.8.md:
--------------------------------------------------------------------------------
1 | # v2.4.8
2 |
3 | ## Enhancements
4 |
5 | - Added badges to annotation tab button to show number of annotations added (#1007)
6 | - Added some feedbacks when annotations are being loaded
7 | - Added delete all annotation button
8 | - Added feedbacks when annotation from different reference spaces are added
9 |
10 | ## Under the hood stuff
11 |
12 | - Tweaked space bar capture
13 | - Allow branches with `hotfix` in its name to target production siibra-api endpoints
14 |
--------------------------------------------------------------------------------
/src/experimental/experimental.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from "@angular/core";
2 | import { select, Store } from "@ngrx/store";
3 | import { MainState, userPreference } from "src/state";
4 |
5 | @Injectable({
6 | providedIn: "root"
7 | })
8 |
9 | export class ExperimentalService {
10 |
11 | showExperimentalFlag$ = this.store.pipe(
12 | select(userPreference.selectors.showExperimental)
13 | )
14 |
15 | constructor(private store: Store){
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/.helm/trafficcop/templates/tests/test-connection.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: "{{ include "trafficcop.fullname" . }}-test-connection"
5 | labels:
6 | {{- include "trafficcop.labels" . | nindent 4 }}
7 | annotations:
8 | "helm.sh/hook": test
9 | spec:
10 | containers:
11 | - name: wget
12 | image: busybox
13 | command: ['wget']
14 | args: ['{{ include "trafficcop.fullname" . }}:{{ .Values.service.port }}']
15 | restartPolicy: Never
16 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/annotationVisible.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 | import { IAnnotationGeometry } from "./tools/type";
3 |
4 | @Pipe({
5 | name: 'annotationVisiblePipe',
6 | pure: true
7 | })
8 |
9 | export class AnnotationVisiblePipe implements PipeTransform{
10 | public transform(hiddenAnns: IAnnotationGeometry[], thisAnn: IAnnotationGeometry): boolean {
11 | return hiddenAnns.findIndex(a => a.id === thisAnn.id) < 0
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/getFileInput/fileInputModal/fileInputModal.style.css:
--------------------------------------------------------------------------------
1 | .file-input-label-container
2 | {
3 | box-sizing: border-box;
4 | padding: 1rem;
5 | }
6 |
7 | .file-input-label
8 | {
9 | display: flex;
10 | align-items: center;
11 | justify-content: center;
12 | border-radius: 1rem;
13 | border: 2px dashed rgba(128,128,128,0.4);
14 | opacity: 0.7;
15 | transition: opacity 200ms ease-in-out;
16 | }
17 |
18 | .file-input-label:hover
19 | {
20 | cursor: pointer;
21 | opacity: 1.0;
22 | }
--------------------------------------------------------------------------------
/src/keyframesModule/keyframeCtrl/keyframeCtrl.style.css:
--------------------------------------------------------------------------------
1 | .cdk-drop-list-dragging :not(.cdk-drag-placeholder)
2 | {
3 | transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
4 | }
5 | .cdk-drag-placeholder {
6 | opacity: 0.2;
7 | }
8 | [cdkDragHandle]
9 | {
10 | cursor:ns-resize;
11 | }
12 |
13 | mat-form-field
14 | {
15 | margin-right: 0.25rem;
16 | }
17 |
18 | .duration-container
19 | {
20 | width: 3.5rem;
21 | }
22 |
23 | .controller-container > *
24 | {
25 | display: block;
26 | }
27 |
--------------------------------------------------------------------------------
/src/layouts/fourCorners/fourCorners.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
2 |
3 | @Component({
4 | selector: 'iav-layout-fourcorners',
5 | templateUrl: './fourCorners.template.html',
6 | styleUrls: [
7 | './fourCorners.style.css'
8 | ],
9 | changeDetection: ChangeDetectionStrategy.OnPush
10 | })
11 |
12 | export class FourCornersCmp{
13 | @Input('iav-layout-fourcorners-cnr-cntr-ngclass')
14 | cornerContainerClasses = {}
15 | }
16 |
--------------------------------------------------------------------------------
/src/spotlight/sl-spotlight.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, TemplateRef } from '@angular/core';
2 | import { SlServiceService } from './sl-service.service';
3 |
4 | @Directive({
5 | selector: '[sl-spotlight]',
6 | exportAs: 'sl-spotlight'
7 | })
8 | export class SlSpotlightDirective {
9 |
10 | constructor(
11 | private slService: SlServiceService
12 | ) {
13 |
14 | }
15 |
16 | showBackdrop(tmpl?: TemplateRef){
17 | this.slService.showBackdrop(tmpl)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.helm/siibra-explorer/templates/serviceaccount.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.serviceAccount.create -}}
2 | apiVersion: v1
3 | kind: ServiceAccount
4 | metadata:
5 | name: {{ include "siibra-explorer.serviceAccountName" . }}
6 | labels:
7 | {{- include "siibra-explorer.labels" . | nindent 4 }}
8 | {{- with .Values.serviceAccount.annotations }}
9 | annotations:
10 | {{- toYaml . | nindent 4 }}
11 | {{- end }}
12 | automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
13 | {{- end }}
14 |
--------------------------------------------------------------------------------
/.storybook/main.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "stories": [
3 | "../src/**/*.stories.mdx",
4 | "../src/**/*.stories.@(js|jsx|ts|tsx)"
5 | ],
6 | "addons": [
7 | "storybook-dark-mode",
8 | "@storybook/addon-links",
9 | "@storybook/addon-essentials",
10 | "@storybook/addon-interactions"
11 | ],
12 | "framework": "@storybook/angular",
13 | "core": {
14 | "builder": "@storybook/builder-webpack5"
15 | },
16 | features: {
17 | interactionsDebugger: true,
18 | },
19 | }
20 |
--------------------------------------------------------------------------------
/src/ui/help/helpOnePager/helpOnePager.template.html:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | padding: 0.5rem 0;
4 | }
5 |
6 | .nglayer-container
7 | {
8 | display: flex;
9 | width: 100%;
10 | align-items: center;
11 | }
12 |
13 | button
14 | {
15 | flex: 0 0 auto;
16 | }
17 |
18 | .layer-name
19 | {
20 | flex: 1 1 0px;
21 | overflow: hidden;
22 | }
23 |
24 | spinner-cmp:has(+ .hydrated)
25 | {
26 | display: none;
27 | }
28 |
29 | ng-layer-tune
30 | {
31 | width: 100%;
32 | }
33 |
--------------------------------------------------------------------------------
/.helm/siibra-explorer/templates/tests/test-connection.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: "{{ include "siibra-explorer.fullname" . }}-test-connection"
5 | labels:
6 | {{- include "siibra-explorer.labels" . | nindent 4 }}
7 | annotations:
8 | "helm.sh/hook": test
9 | spec:
10 | containers:
11 | - name: wget
12 | image: busybox
13 | command: ['wget']
14 | args: ['{{ include "siibra-explorer.fullname" . }}:{{ .Values.service.port }}']
15 | restartPolicy: Never
16 |
--------------------------------------------------------------------------------
/src/api/handshake/README.md:
--------------------------------------------------------------------------------
1 | # Handshake API
2 |
3 | Handshake messages are meant for siibra-explorer to probe if the plugin is alive and well (and also a way for the plugin to check if siibra-explorer is responsive)
4 |
5 | ## API
6 |
7 |
8 |
9 | | event name | initiator | request | response |
10 | | --- | --- | --- | --- |
11 | | sxplr.init | viewer | [jsonschema](sxplr.init__fromSxplr__request.json) | [jsonschema](sxplr.init__fromSxplr__response.json) |
12 |
--------------------------------------------------------------------------------
/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: block;
4 | height: 100%;
5 | width: 100%;
6 | }
7 |
8 | .button-container
9 | {
10 | z-index: 1;
11 | position: fixed;
12 | bottom: 1rem;
13 | right: 1rem;
14 | width: 0px;
15 | height:0px;
16 |
17 | display: flex;
18 | justify-content: flex-end;
19 | align-items: flex-end;
20 | }
21 |
22 | span.mouseover
23 | {
24 | z-index: 1;
25 | position: fixed;
26 | bottom: 3rem;
27 | right: 1rem;
28 | }
29 |
--------------------------------------------------------------------------------
/.github/workflows/code/create-checklist-comment.js:
--------------------------------------------------------------------------------
1 | module.exports = async ({github, context}) => {
2 | const pathToChecklist = './checklist.md'
3 | const fs = require('fs')
4 | const { promisify } = require('util')
5 | const asyncReadFile = promisify(fs.readFile)
6 | const text = await asyncReadFile(pathToChecklist, 'utf-8')
7 | github.rest.issues.createComment({
8 | issue_number: context.issue.number,
9 | owner: context.repo.owner,
10 | repo: context.repo.repo,
11 | body: text
12 | })
13 | }
14 |
--------------------------------------------------------------------------------
/src/atlasComponents/userAnnotations/annotationList/annotationList.style.css:
--------------------------------------------------------------------------------
1 | .inactive-filter {
2 | color: #bababa;
3 | }
4 |
5 | :host-context([darktheme="true"]) .hovering-header {
6 | background-color: #737373;
7 | }
8 | :host-context([darktheme="false"]) .hovering-header {
9 | background-color: rgb(245, 245, 245);
10 | }
11 |
12 | .single-annotation-grid-container
13 | {
14 | display: grid;
15 | grid-template-columns: 3em auto;
16 | gap: 0px 0px;
17 | grid-template-areas: ". .";
18 | }
19 |
--------------------------------------------------------------------------------
/src/components/vButton/vButton.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
--------------------------------------------------------------------------------
/src/share/share.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, HostListener } from "@angular/core";
2 | import { MatBottomSheet } from 'src/sharedModules/angularMaterial.exports'
3 | import { ShareSheetComponent } from "./shareSheet/shareSheet.component"
4 |
5 |
6 | @Directive({
7 | selector: `[sxplr-share-view]`
8 | })
9 |
10 | export class ShareDirective{
11 | constructor(private btmSht: MatBottomSheet){
12 |
13 | }
14 | @HostListener('click')
15 | onClick(){
16 | this.btmSht.open(ShareSheetComponent)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/state/state.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from "@angular/core";
2 | import { StateAggregator } from "./stateAggregator.directive";
3 |
4 | // TODO
5 | // perhaps this should be called StateUtilModule?
6 | // or alternatively, slowly move all state related components to this module?
7 | // urlutil should also be at least in this module folder
8 |
9 | @NgModule({
10 | declarations: [
11 | StateAggregator
12 | ],
13 | exports: [
14 | StateAggregator
15 | ]
16 | })
17 |
18 | export class StateModule{}
19 |
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/store/type.ts:
--------------------------------------------------------------------------------
1 | import { atlasAppearance } from "src/state"
2 |
3 | export interface IAuxMesh {
4 | ['@id']: string
5 | name: string
6 | displayName?: string
7 | ngId: string
8 | labelIndicies: number[]
9 | rgb: [number, number, number]
10 | visible: boolean
11 | }
12 |
13 |
14 | export interface INehubaFeature {
15 | layers: atlasAppearance.const.NgLayerCustomLayer[]
16 | panelMode: string
17 | panelOrder: string
18 | octantRemoval: boolean
19 | auxMeshes: IAuxMesh[]
20 | }
21 |
--------------------------------------------------------------------------------
/backend/test_app/test_sane_url.py:
--------------------------------------------------------------------------------
1 | from app.app import app
2 | from fastapi.testclient import TestClient
3 |
4 | client = TestClient(app)
5 |
6 | def test_annotation_redirect():
7 | resp = client.get("/go/stnr", headers={
8 | "Accept": "text/html"
9 | }, follow_redirects=False)
10 | loc = resp.headers.get("Location")
11 | assert loc, "Expected location header to be present, but was not"
12 | assert "x-user-anntn:stnr" in loc, f"Expected the string 'x-user-anntn:stnr' in {loc!r}, but was not"
13 |
14 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.cancelRequest__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.cancelRequest"
13 | },
14 | "params": {
15 | "properties": {
16 | "id": {
17 | "type": "string"
18 | }
19 | },
20 | "type": "object"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/ui/cookieAgreement/cookieAgreement/cookieAgreement.style.css:
--------------------------------------------------------------------------------
1 | :host
2 | {
3 | display: block;
4 | margin-bottom:1rem;
5 | }
6 |
7 | .expansion-panel .mat-expansion-panel-header-title,
8 | .expansion-panel .mat-expansion-panel-header-description
9 | {
10 | flex-basis: 0;
11 | }
12 |
13 | .expansion-panel .mat-expansion-panel-header-description
14 | {
15 | justify-content: space-between;
16 | align-items: center;
17 | }
18 |
19 | iframe
20 | {
21 | width: 100%;
22 | padding: 1rem;
23 | height: 20rem;
24 | }
25 |
--------------------------------------------------------------------------------
/src/api/request/sxplr.setAuxMeshAlpha__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.setAuxMeshAlpha"
13 | },
14 | "params": {
15 | "properties": {
16 | "alpha": {
17 | "type": "number"
18 | }
19 | },
20 | "type": "object"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | loading nehuba viewer
5 |
6 |
7 | •
8 | •
9 | •
10 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.cancelRequest__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.cancelRequest"
13 | },
14 | "params": {
15 | "properties": {
16 | "id": {
17 | "type": "string"
18 | }
19 | },
20 | "type": "object"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/api/request/sxplr.setOctantRemoval__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.setOctantRemoval"
13 | },
14 | "params": {
15 | "properties": {
16 | "flag": {
17 | "type": "boolean"
18 | }
19 | },
20 | "type": "object"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/res/icons/iav-icons.css:
--------------------------------------------------------------------------------
1 | .iavic{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;}@font-face{font-family:"iav-custom-icons";font-style:normal;font-weight:900;font-display:auto;src:url(./iav-icons.woff)format("woff"),url(./iav-icons.ttf)format("truetype"),url(./iav-icons.svg)format("svg");}.iavic{font-family:"iav-custom-icons";}.iavic-translation:before{content:"t";}.iavic-scaling:before{content:"s";}.iavic-rotation:before{content:"r";}
--------------------------------------------------------------------------------
/src/viewerModule/leap/signal.directive.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFactoryResolver, Directive, ViewContainerRef } from "@angular/core";
2 | import { LeapSignal } from "./leapSignal/leapSignal.component";
3 |
4 | @Directive({
5 | selector: '[leap-control-view-ref]'
6 | })
7 | export class LeapControlViewRef {
8 | constructor(
9 | private vcr: ViewContainerRef,
10 | private cfr: ComponentFactoryResolver,
11 | ){
12 | const cf = this.cfr.resolveComponentFactory(LeapSignal)
13 | this.vcr.createComponent(cf)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/backend/app/cors.py:
--------------------------------------------------------------------------------
1 | from starlette.middleware.base import BaseHTTPMiddleware
2 | from starlette.responses import Response
3 |
4 | class CorsMW(BaseHTTPMiddleware):
5 | async def dispatch(self, request, call_next):
6 | if request.method == "OPTIONS":
7 | res = Response(b"", 200, {
8 | "Access-Control-Allow-Origin": "*"
9 | })
10 | return res
11 |
12 | resp = await call_next(request)
13 | resp.headers["Access-Control-Allow-Origin"] = "*"
14 | return resp
15 |
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.setAuxMeshAlpha__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.setAuxMeshAlpha"
13 | },
14 | "params": {
15 | "properties": {
16 | "alpha": {
17 | "type": "number"
18 | }
19 | },
20 | "type": "object"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/docs/advanced/api/request/sxplr.setOctantRemoval__toSxplr__request.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "type": "object",
4 | "properties": {
5 | "id": {
6 | "type": "string"
7 | },
8 | "jsonrpc": {
9 | "const": "2.0"
10 | },
11 | "method": {
12 | "const": "sxplr.setOctantRemoval"
13 | },
14 | "params": {
15 | "properties": {
16 | "flag": {
17 | "type": "boolean"
18 | }
19 | },
20 | "type": "object"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/docs/releases/v2.13.0.md:
--------------------------------------------------------------------------------
1 | # v2.13.0
2 |
3 | ## Feature
4 |
5 | - reworked UI
6 | - allow fsaverage grid to be toggled on/off
7 | - disable surface face selection (until it becomes fully supported)
8 | - allow feature to be downloaded
9 | - main download button also downloads selected feature
10 | - added javascript disabled page
11 |
12 | ## Behind the scene
13 |
14 | - ported the backend to use python rather than nodejs
15 |
16 | ## Bugfixes
17 |
18 | - fix URL encoded annotations
19 | - improved reliability of URL encoding of viewer state
20 |
--------------------------------------------------------------------------------
/src/atlas-download/atlas-download.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { AtlasDownloadDirective } from './atlas-download.directive';
4 | import { AngularMaterialModule } from 'src/sharedModules';
5 |
6 |
7 | @NgModule({
8 | declarations: [
9 | AtlasDownloadDirective
10 | ],
11 | imports: [
12 | CommonModule,
13 | AngularMaterialModule,
14 | ],
15 | exports: [
16 | AtlasDownloadDirective
17 | ]
18 | })
19 | export class AtlasDownloadModule { }
20 |
--------------------------------------------------------------------------------
/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.components.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from "@angular/core"
2 | import { PureATPSelectorDirective } from "../pureATP.directive"
3 |
4 | @Component({
5 | selector: 'sxplr-pure-atp-selector',
6 | templateUrl: `./pureATPSelector.template.html`,
7 | styleUrls: [
8 | `./pureATPSelector.style.scss`
9 | ],
10 | changeDetection: ChangeDetectionStrategy.OnPush,
11 | })
12 |
13 | export class PureATPSelector extends PureATPSelectorDirective{}
14 |
--------------------------------------------------------------------------------
/src/util/array.ts:
--------------------------------------------------------------------------------
1 | const defaultCmFn = (o: T, n: T) => o === n
2 | export function arrayEqual(compareFn: (o1: T, o2: T) => boolean = defaultCmFn, order = false) {
3 | return function(array1: T[], array2: T[]){
4 | if (order) {
5 | for (const idx in array1) {
6 | if (!compareFn(array1[idx], array2[idx])) return false
7 | }
8 | return true
9 | }
10 | return !!array1.every(it1 => array2.find(it2 => compareFn(it1, it2)))
11 | && !!array2.every(it2 => array1.find(it1 => compareFn(it1, it2)))
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/docs/releases/v0.3.0-beta.md:
--------------------------------------------------------------------------------
1 | # v0.3.0-beta
2 |
3 | 26 Apr 2019
4 |
5 | [release](https://github.com/HumanBrainProject/interactive-viewer/releases/tag/v0.3.0-beta)
6 |
7 | - Using Bootstrap 4
8 | - Using webgl 2
9 | - Supporting Andorid mobile devices
10 | - Allow querying of Knowledge Graph on semantically linked data
11 | - Landmark sizes now scale with brain sizes (Because mouse brains are a lot smaller than human brains)
12 | - Allow setting of GPU limit. On lower end devices, this can reduce the likelihood of a crash.
13 | - Allow user login via HBP OIDC
--------------------------------------------------------------------------------
/docs/releases/v2.13.4.md:
--------------------------------------------------------------------------------
1 | # v2.13.4
2 |
3 | ## Feature
4 |
5 | - Properly navigate to volume of interest based on volume meta:
6 | - properly calculate the orientation
7 | - properly calculate enclosed, and navigate to closest point if outside
8 | - Added button to navigate to the point assignment UI
9 |
10 | ## Bugfix
11 |
12 | - Fixed expected siibra-api version
13 | - Fixed previously selected point not rendering
14 |
15 | ## Behind the scenes
16 |
17 | - Temporary workaround for volume meta
18 | - More efficient caching of meta retrieval
19 |
--------------------------------------------------------------------------------
/src/util/includes.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from "@angular/core";
2 |
3 | const defaultCompareFn = (item: T, comparator: T): boolean => item === comparator
4 |
5 | @Pipe({
6 | name: 'includes',
7 | })
8 |
9 | export class IncludesPipe implements PipeTransform {
10 | public transform(array: T[], item: T, compareFn: (a: T, b:T) => boolean = defaultCompareFn): boolean {
11 | if (!array) { return false }
12 | if (!(array instanceof Array)) { return false }
13 | return array.some(it => compareFn(it, item))
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/docs/releases/v2.5.7.md:
--------------------------------------------------------------------------------
1 | # v2.5.7
2 |
3 | ## Bugfix
4 |
5 | - fixed version in console
6 | - fixed UI bug: multiple doi overlap
7 | - fixed UI bug: sometimes missing doi are also rendered
8 | - fixed waxholm v4 preview image
9 |
10 | ## Feature
11 |
12 | - Add menu to change perspective orientation by coronal/sagittal/axial views.
13 | - re-introduced saneUrl
14 |
15 | ## Under the hood
16 |
17 | - added saneurl for bigbrain isocortex, allen CCFv3 2017
18 | - fixed csp issues
19 | - optimised build (assets should be smaller)
20 | - added git hash in console
21 |
--------------------------------------------------------------------------------
/features/doc-launch-quicktour.feature:
--------------------------------------------------------------------------------
1 | Feature: Doc Launch and Quicktour
2 |
3 | From doc - Launch and Quicktour
4 |
5 | Scenario: Accessing quicktour on startup
6 | Given User first launched siibra-explorer
7 | Then User should be asked if they would like a quick tour
8 |
9 | Scenario: Accessing quicktour on return
10 | Given User launched siibra-explorer second time
11 | When User hit `?` key or clicks `(?)` button (top right)
12 | Then User should be able to find `Quick Tour` button at the modal dialog
--------------------------------------------------------------------------------
/src/features/feature-view/feature-view.component.scss:
--------------------------------------------------------------------------------
1 | .feature-title
2 | {
3 | max-height: 12rem;
4 | overflow-x: hidden;
5 | overflow-y: auto;
6 | }
7 |
8 | .feature-detail
9 | {
10 | width: 100%;
11 | }
12 |
13 | spinner-cmp
14 | {
15 | margin: auto;
16 | margin-left: 0.5rem;
17 | }
18 |
19 | readmore-component
20 | {
21 | width: 100%;
22 | }
23 |
24 | .header-card {
25 | background-color: #fee;
26 | }
27 |
28 | :host-context([darktheme="true"])
29 | {
30 | .header-card {
31 | background-color: #433;
32 | }
33 | }
--------------------------------------------------------------------------------
/docs/releases/v0.2.9.md:
--------------------------------------------------------------------------------
1 | # v0.2.9
2 |
3 | 19 Nov 2018
4 |
5 | !!! info
6 | v0.2.9 is the last version that supports Bootstrap v3
7 |
8 | !!! info
9 | v0.2.9 is the last version that is purely frontend. From [v0.3.0-beta](v0.3.0-beta.md) onwards, interactive atlas viewer requires a backend to function properly.
10 |
11 | [release](https://github.com/HumanBrainProject/interactive-viewer/releases/tag/v0.2.9)
12 |
13 | - Refactor to allow for faster transpiling, faster loading (via Angular AOT compilation)
14 | - Improving performance on rendering nested hierarchy
--------------------------------------------------------------------------------