Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New CatalogSearchView with configurable filters & Cesium map #2127

Merged
merged 83 commits into from
Jun 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
7dffff2
Update arctic router to render CatalogSearchView
robyngit Dec 2, 2022
a7d6506
Remove references to dataCatalogMap option
robyngit Dec 2, 2022
d74d6aa
Remove duplicated code in Cesium view
robyngit Dec 12, 2022
2b9765b
Use the CesiumVectorData model for Geohashes
robyngit Jan 12, 2023
8b85d2b
Set min latitude to -89.99999 for Geohashes
robyngit Jan 17, 2023
4e07636
Render geohashes at p. meridian & all precisions
robyngit Jan 18, 2023
7785fe4
Limit number of geohashes to render in Cesium map
robyngit Jan 19, 2023
fc8912e
Update arctic router to render CatalogSearchView
robyngit Dec 2, 2022
9288e96
Remove references to dataCatalogMap option
robyngit Dec 2, 2022
98662cb
Remove duplicated code in Cesium view
robyngit Dec 12, 2022
0800f2e
Use the CesiumVectorData model for Geohashes
robyngit Jan 12, 2023
af7a432
Set min latitude to -89.99999 for Geohashes
robyngit Jan 17, 2023
bab25a4
Render geohashes at p. meridian & all precisions
robyngit Jan 18, 2023
c84e737
Limit number of geohashes to render in Cesium map
robyngit Jan 19, 2023
62f2598
Merge branch 'feature-#1720-cesium-data-catalog' of https://github.co…
robyngit Feb 3, 2023
0a97c80
Merge branch 'develop' into feature-#1720-cesium-data-catalog
robyngit Feb 24, 2023
9fbdb24
Merge branch 'develop' into feature-#1720-cesium-data-catalog
robyngit Mar 11, 2023
4918749
Merge branch 'develop' into feature-#1720-cesium-data-catalog
robyngit Mar 15, 2023
b36a55a
Fix some CSS issues with new data catalog view
robyngit Mar 17, 2023
aebd756
Fix more CSS issues with new data catalog view
robyngit Mar 20, 2023
8b91b72
Fix remaining (?) CSS issues with new data catalog
robyngit Mar 21, 2023
50ef61c
Minor updates to filters display in new Catalog
robyngit Mar 21, 2023
7f46f3a
Standardize formatting in new Catalog views
robyngit Mar 21, 2023
21dfb62
Add JSdocs and error handling to catalogSearch
robyngit Mar 22, 2023
f1aaa55
Fix format & add JSdocs to CatalogSearch subviews
robyngit Mar 22, 2023
e82bdb1
Handle errors and zero results in CatalogSearch
robyngit Mar 22, 2023
e783d5c
Standardize formatting in Filters-Search
robyngit Mar 23, 2023
4f21b5d
Nav to page 1 on new search in CatalogSearchView
robyngit Mar 23, 2023
4c40a1d
Handle page url consistently in CatalogSearchView
robyngit Mar 24, 2023
6ee4dcf
Handle query url consistently in CatalogSearchView
robyngit Mar 24, 2023
f8bc799
Ensure CatalogSearch doesn't go beyond last page
robyngit Mar 24, 2023
5be539d
Standardize formatting in Geohash related models
robyngit Mar 27, 2023
8e35e70
Work on CatalogSearch connectors [WIP]
robyngit Mar 28, 2023
d458ad1
Ensure SolrResults hear when spatial filter added
robyngit Mar 29, 2023
aa28250
Remove logic from Geohash model (now in Sp. Filter)
robyngit Mar 29, 2023
bf6cc2d
Standardize formatting in Filters collection
robyngit Mar 29, 2023
a6bc546
Standardize formatting in Map & MapAssets
robyngit Mar 29, 2023
fa7579e
Add facet counts to Geohash Layer from Search
robyngit Mar 29, 2023
6808fcf
Create Map-Search-Filters connector
robyngit Mar 30, 2023
2898796
Add init options to MapSearchFilters connector
robyngit Mar 30, 2023
d7e2557
Add init options to CatalogSearchView
robyngit Mar 30, 2023
14bbfd6
Small refactor to toggle map spatial filter [WIP]
robyngit Mar 31, 2023
84a6183
Make more efficient spatial queries [WIP]
robyngit Apr 3, 2023
261025d
Fix bugs with constructing spatial queries
robyngit Apr 5, 2023
6d55bf5
Fix MapFiltersSearch connector & geohash rendering
robyngit Apr 6, 2023
6bc3a13
Fix geohash geoJSON & getting hashes for filter
robyngit Apr 6, 2023
f02d1a2
Style/connect catalog<->map buttons; move CSS
robyngit Apr 7, 2023
fd48825
Fix bug in filters-search connector
robyngit Apr 10, 2023
f9b0aae
Improvements to Geohash appearance
robyngit Apr 12, 2023
f46a501
Support CZML; Add labels to Geohashes (WIP)
robyngit Apr 13, 2023
9190bfd
Render geohash count labels
robyngit Apr 17, 2023
af71df4
Add zoom to geohash on click behaviour
robyngit Apr 17, 2023
b4b745d
Fix zooming behavior & feature info bugs in Cesium
robyngit Apr 18, 2023
dd993b7
Add ability to highlight geohash on map icon hover
robyngit Apr 18, 2023
457bdbf
Somewhat improve CesiumMap + Search performance
robyngit Apr 19, 2023
5bff0df
Add Map opts for hiding home button & layer list
robyngit Apr 19, 2023
70fde2b
Improvements to catalog search styles [WIP]
robyngit Apr 19, 2023
d6b82d5
Fix styles in new catalog & routing to old catalog
robyngit Apr 20, 2023
88b4696
Modify filter styles for new catalog
robyngit Apr 21, 2023
fa9584b
Optimize calculating geohashes for a map view
robyngit May 3, 2023
be0f061
Make CesiumGeohash compatible with new methods +
robyngit May 4, 2023
0334188
Fix calculation of whether geohashes are in view
robyngit May 5, 2023
e8ba9ae
UI enhancements for the new CatalogSearchView
robyngit May 5, 2023
aed5794
Standardize formatting in BooleanFilterView
robyngit May 5, 2023
a797bb2
Make filters optionally collapsible
robyngit May 5, 2023
e96d546
Add py script for generating basic test files
robyngit May 5, 2023
658e0dd
Add initial test files for new catalog view files
robyngit May 5, 2023
962be15
tiny fixes
robyngit May 5, 2023
5ba9336
one more tiny fix
robyngit May 5, 2023
e5fe321
Standardize test filenames
robyngit May 22, 2023
53c5e64
Add tests for Geohashes collections
robyngit May 22, 2023
5b67204
Add tests for Filters-Map connector
robyngit May 22, 2023
a7a9f12
Add rest of tests for Geohash-related map models
robyngit May 24, 2023
d29c21d
Add docs for: CatalogSearchView, Filters, Cesium
robyngit May 25, 2023
639fab4
Add screenshots for CatalogSearchView & sub-views
robyngit May 25, 2023
f6a993d
Add JSDocs @since tags to new methods
robyngit May 25, 2023
6ad2fd6
Exclude portals & collections from search results
robyngit May 30, 2023
4df5a58
Fix minor bug with DateFilterView
robyngit May 30, 2023
ed827d4
Add metrics & map icons to the search results list
robyngit Jun 5, 2023
7d5ac0b
Remove unused imports in catalog/map views
robyngit Jun 8, 2023
c1bfaf4
Support Open Street Map layer in Cesium
robyngit Jun 16, 2023
d5a13f8
Allow Geohash layer to be hidden by user
robyngit Jun 20, 2023
485dd4b
Load Cesium from CDN and upgrade to v 1.91
robyngit Jun 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/_includes/nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ <h2>API</h2>
<h2>Guides</h2>
<a href="{{ site.url }}/guides/accesspolicy.html">Access Policies</a>
<a href="{{ site.url }}/guides/filters/configuring-filters.html">Search Filters</a>
<a href="{{ site.url }}/guides/catalog-view-config">Catalog Search View</a>
<a href="{{ site.url }}/guides/maps/cesium.html">Cesium Map</a>

<h2>Help</h2>
Expand Down
32 changes: 32 additions & 0 deletions docs/guides/catalog-view-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
layout: guide
title: Configuring the Catalog Search View
id: catalog-view-config
toc: true
---

This page provides instructions on how to customize a the main search page for a MetacatUI repository. This page is rendered by the Catalog Search View and includes a 3D map and a set of search filters. The map and filters can be set to suit the needs of the repository.

The 3D map uses the `cesium.js` library. For more information about Cesium and how to configure a Cesium Map model in general, see the general [Cesium guide](/guides/maps/cesium.html).

With the x.x.x release, MetacatUI introduced a new [`CatalogSearchView`](/docs/CatalogSearchView.html) that renders the main search page. This new view replaces the `DataCatalogView` that used Google Maps. The `DataCatalogView` will be deprecated in a future release, but to give time for repositories to migrate to the new `CatalogSearchView`, the `DataCatalogView` will remain the default view for the time being.

To enable the new `CatalogSearchView`, set the following properties in your [configuration file](/docs/AppConfig.html):

```js
{
"useDeprecatedDataCatalogView": false,
"enableCesium": true,
"cesiumToken": "YOUR-CESIUM-ION-TOKEN"
}
```

The `cesiumToken` only needs to be set in order to enable access to layers and assets from [Cesium Ion](https://cesium.com/learn/ion/global-base-layers/). See the general [Cesium guide](/docs/guides/maps/cesium) for more information.

## Customizing the search filters

The default filters to use on the left hand side of the Catalog Search View are set in the [`defaultFilterGroups`](/docs/AppConfig.html#defaultFilterGroups) property of the [configuration file](/docs/AppConfig.html). This property is an array of objects that define the filters to use. See the guide about [customizing search filters](/guides/filters/configuring-filters.html) for more information.

## Map config

Options for Search View's map are set in the [`catalogSearchMapOptions`](docs/AppConfig.html#catalogSearchMapOptions) property of the [configuration file](/docs/AppConfig.html). This property is the same object used to define any `Map` model in MetacatUI. See the API docs for [`Map`](/docs/MapConfig.html) for complete documentation of the options.
30 changes: 27 additions & 3 deletions docs/guides/filters/configuring-filters.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
---
layout: guide
title: Configuring custom filters
title: 🔎 Configuring Search Filters
id: configuring-filters
---

## How to hide a field from the custom filter builder
## Search Filters

In MetacatUI, search filters are models that define a Solr field, values to use in a query for that field, and options for how to display the filter in the UI. Filters are used in the [`CatalogSearchView`](/docs/CatalogSearchView.html) and the [`PortalDataView`](/docs/PortalDataView.html).

Filters which are combined to create a collection of data for a Portal can be built interactively using the [`QueryBuilderView`](/docs/QueryBuilderView.html) in the Portal Editor.

Custom search filters which users can use to subset a collection of portal data further can be designed and added to the portal in [`FilterEditorView`](/docs/FilterEditorView.html) in the Portal Editor.

Filters that are displayed in the repository-level `CatalogSearchView` are configured in the repository's [`config`](/docs/AppModel.html) file. See the [`Catalog Search View`](/guides/catalog-view-config.html) guide for more information.

## The parts of a filter model

Filters are defined in the [collections and portals XML schema repo](https://github.com/DataONEorg/collections-portals-schemas). See the [`FilterType`](https://github.com/DataONEorg/collections-portals-schemas/blob/48db8394506f5523597def6c9212aea3bfdee103/schemas/collections.xsd#L152-L210) to learn about the most essential parts of a filter model.

Filters are represented in MetacatUI by the [`Filter`](/docs/Filter.html) model and all of it's extended types.

### Filter groups

Filters can be grouped to create nested queries such as `((field1:value1 OR field1:value2) AND field2:value3)`. They can also be grouped to display related filters together in the UI. See the [`FilterGroup`](/docs/FilterGroup.html) model for more information.

## Custom Search Filters in Portals

This section gives information on how to configure the options that are available for users to create custom search filters in the [`CustomFilterBuilderView`](/docs/CustomFilterBuilderView.html) in the Portal Editor.

### How to hide a field from the custom filter builder

Add the Solr field name to [`AppConfig.collectionQueryExcludeFields`](https://nceas.github.io/metacatui/docs/AppConfig.html#collectionQueryExcludeFields). This will also hide the field from the Query Builder.


## Adding a new Solr field to the custom filter builder
### Adding a new Solr field to the custom filter builder

When a new Solr field is added to the Solr schema, it will automatically get added to the `General`, or default, category in the custom filter builder and it can be used with any filter type (free text, dropdown, year slider, etc). There are several places to configure the Solr field so that it works as intended:

Expand Down
12 changes: 8 additions & 4 deletions docs/guides/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# MetacatUI Guides

The following is a list of How To guides for customizing the display and functionality
of your MetacatUI application. Is something missing? [Email us](mailto:metacat-dev@ecoinformatics.org) or join us on [Slack](https://slack.dataone.org/) and we'll add it.
of your MetacatUI application.

- <a href="{{ site.url }}/guides/accesspolicy.html">Access Policies</a>
- <a href="{{ site.url }}/guides/filters/configuring-filters.html">Search Filters</a>
- <a href="{{ site.url }}/guides/maps/cesium.html">Cesium Map</a>
- <a href="{{ site.url }}/guides/accesspolicy.html">👥 Access Policies</a>
- <a href="{{ site.url }}/guides/filters/configuring-filters.html">🔎 Search Filters</a>
- <a href="{{ site.url }}/guides/catalog-view-config.html">📑 Catalog Search View</a>
- <a href="{{ site.url }}/guides/maps/cesium.html">🌎 Cesium Map</a>
- <a href="{{ site.url }}/guides/maps/cesium-for-portals.html">📍 Cesium Map for Portals</a>

<b>ℹ️ Is something missing? [Email us](mailto:metacat-dev@ecoinformatics.org) or join us on [Slack](https://slack.dataone.org/) and we'll add it!</b>
41 changes: 41 additions & 0 deletions docs/guides/maps/cesium-for-portals.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
layout: guide
title: Configuring Cesium Maps for Portals
id: cesium-for-portals
toc: true
---

This page outlines the process of integrating a Cesium Map into a [Portal document](https://github.com/DataONEorg/collections-portals-schemas/blob/master/schemas/portals.xsd).

For background on Cesium, as well as detailed guidelines on how to customize a Cesium Map model, please refer to our [Cesium guide](cesium).

## How to Configure a Cesium Map Section within a Portal Document

To integrate a Cesium map visualization into a portal XML document, you need to define the map's appearance and layering structure using JSON. This JSON configuration is then embedded into an `<option>` element which lies within a `<section>` element. The `<option>` element requires two distinct components: an `<optionName>` set as `mapConfig` and an `<optionValue>` that encompasses the aforementioned JSON configuration. Please ensure that the JSON is enclosed within `CDATA` tags.

Here's an example:

```xml
<section>
<label>My Cesium Map</label>
<title>My Cesium Map</title>
<option>
<optionName>sectionType</optionName>
<optionValue>visualization</optionValue>
</option>
<option>
<optionName>visualizationType</optionName>
<optionValue>cesium</optionValue>
</option>
<option>
<optionName>mapConfig</optionName>
<optionValue>
<![CDATA[{
"homePosition": {...},
...
"showFeatureInfo": false
}]]>
</optionValue>
</option>
</section>
```
103 changes: 40 additions & 63 deletions docs/guides/maps/cesium.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,44 +8,22 @@ toc: true
<div style="display:grid; grid-template-columns:1fr 2fr">

<div>
MetacatUI uses <a src="https://github.com/CesiumGS/cesium">CesiumJS</a> to create map visualization sections in Portals. Eventually, Cesium will also be used to optionally replace Google Maps in other parts of MetacatUI (follow progress in <a src="https://github.com/NCEAS/metacatui/issues/1720">GitHub issue #1720</a>). This guide summarizes the models, views, and collections that create and control the Cesium widget and the surrounding UI. This page also includes instructions on how to configure a Cesium Map in a Portal document.
<p>MetacatUI uses <a href="https://github.com/CesiumGS/cesium">CesiumJS</a> to create map visualization sections in <a href="https://www.dataone.org/plus/">Portals</a> and in the <a href="/docs/CatalogSearchView.html">Catalog Search</a>. This guide summarizes the models, views, and collections that create and control the Cesium widget and the surrounding UI.</p>

<p>For information on how to configure the Cesium map in portals, see <a href="{{site.url}}/guides/maps/cesium-for-portals">Cesium map for Portals</a>.</p>

<p>For information on how to configure the Cesium map in the Catalog Search, see <a href="{{site.url}}/guides/catalog-view-config">Catalog Search View Guide</a>.</p>
</div>

<figure style="margin-top:-50px;">
<figure style="margin-top:-50px; ">
<img src="{{site.url}}/screenshots/views/maps/MapView.png" style="width:100%; max-width:800px;"/>
<figcaption>A screenshot of the <code>MapView</code>, which uses the <code>CesiumJS</code> library</figcaption>
</figure>

</div>

## Views, models & collections

In the [API Docs]({{site.url}}/docs/), views, models, and collections for the map are categorized under `Views/Maps`, `Models/Maps`, `Collections/Maps`, respectively. Models that contain information about map layers and terrain data are further grouped under `Models/Maps/Assets`.

### Views

Generally, the Map views are organized such that the `CesiumWidgetView` could be easily interchanged with some other map widget: The UI views like the `LayerDetailsView`, `ScalebarView`, etc., receive data from and send updates to the Map models independent of the `CesiumWidgetView`. For example, rather than `Cesium` directly updating the longitude and latitude in the `scaleBarView`, it instead updates the `Map` model's `currentPosition` attribute. The `MapView` listens to changes in `Map`'s `currentPosition` and then updates the `ScaleBarView` accordingly. If in the future the `CesiumWidgetView` is replaced with a new map widget, it would simply need to update the `Map.currentPosition` attribute and the `ScaleBarView` would work as it did before.

<figure>
<a href="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-view.png"><img src="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-view.png" style="width:100%; max-width:1300px"/></a>
<figcaption>The views that build the CesiumWidget and the the UI surrounding it. From the <a href="https://github.com/NCEAS/metacatui-design">MetacatUI Design repo</a>.</figcaption>
</figure>

## Enabling Cesium

### Models & collections

All layer and and terrain models are extensions of the more generic `MapAsset` model, which comprises attributes that are common to most of the layer/terrain models. As with the views, models and collections are designed to be as independent from the `Cesium` widget as possible, with the exception of some of the terrain and layer models.

#### Cesium asset models

The [`Cesium3DTileset`]({{site.url}}/docs/Cesium3DTileset), [`CesiumVectorData`]({{site.url}}/docs/CesiumVectorData), [`CesiumImagery`]({{site.url}}/docs/CesiumImagery), and [`CesiumTerrain`]({{site.url}}/docs/CesiumTerrain) asset models are very closely tied to the `Cesium` architecture. Separating these `Cesium` assets from the `CesiumWidgetView` makes it easier to write new assets in the future, and keeps the `CesiumWidgetView` from becoming too expansive.

All three of these Cesium asset models have the common `createCesiumModel()` function, which constructs the appropriate `cesiumModel` for the type, given the `cesiumOptions` set on the model. The `cesiumModel` is then used by the `CesiumWidgetView` to render the data on the map. In addition, the `type` attribute used in each of these asset models directly corresponds to the Cesium constructor function that creates the `cesiumModel`.

<figure>
<a href="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-model.png"><img src="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-model.png" style="width:100%; max-width:1300px"/></a>
<figcaption>The models and collections that control the cesium map. From the <a href="https://github.com/NCEAS/metacatui-design">MetacatUI Design repo</a>.</figcaption>
</figure>
To enable Cesium for portals and/or for the data catalog, set the `enableCesium` property to true in your configuration file. To enable displaying [layers from Cesium Ion](https://cesium.com/learn/ion/global-base-layers/) in maps, the `cesiumToken` property must also be set to a Cesium Ion token. Sign up for a token [here](https://ion.cesium.com/signup/). This is optional, and by default, `NaturalEarthII` imagery will be displayed, even without a Cesium token.

## Configuration

Expand Down Expand Up @@ -267,42 +245,41 @@ Below is an example of a detailed map configuration (descriptions have been shor
}
```

### Configuring a Cesium Map section in a portal document
## Views, models & collections

To add a Cesium map visualization section to a portal document, cesium config json is added as an `option` within a `cesium` visualization section. Note that the JSON should be wrapped in `CDATA` tags.
In the [API Docs]({{site.url}}/docs/), views, models, and collections for the map are categorized under `Views/Maps` , `Models/Maps` , `Collections/Maps` , respectively. Models that contain information about map layers and terrain data are further grouped under `Models/Maps/Assets` .

### Views

Generally, the Map views are organized such that the `CesiumWidgetView` could be easily interchanged with some other map widget: The UI views like the `LayerDetailsView` , `ScalebarView` , etc., receive data from and send updates to the Map models independent of the `CesiumWidgetView` . For example, rather than `Cesium` directly updating the longitude and latitude in the `scaleBarView`, it instead updates the `Map` model's `currentPosition` attribute. The `MapView` listens to changes in `Map` 's `currentPosition` and then updates the `ScaleBarView` accordingly. If in the future the `CesiumWidgetView` is replaced with a new map widget, it would simply need to update the `Map.currentPosition` attribute and the `ScaleBarView` would work as it did before.

<figure>
<a href="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-view.png"><img src="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-view.png" style="width:100%; max-width:1300px"/></a>
<figcaption>The views that build the CesiumWidget and the the UI surrounding it. From the <a href="https://github.com/NCEAS/metacatui-design">MetacatUI Design repo</a>.</figcaption>
</figure>

### Models & collections

All layer and and terrain models are extensions of the more generic `MapAsset` model, which comprises attributes that are common to most of the layer/terrain models. As with the views, models and collections are designed to be as independent from the `Cesium` widget as possible, with the exception of some of the terrain and layer models.

#### Cesium asset models

The [ `Cesium3DTileset` ]({{site.url}}/docs/Cesium3DTileset), [ `CesiumVectorData` ]({{site.url}}/docs/CesiumVectorData), [ `CesiumImagery` ]({{site.url}}/docs/CesiumImagery), and [ `CesiumTerrain` ]({{site.url}}/docs/CesiumTerrain) asset models are very closely tied to the `Cesium` architecture. Separating these `Cesium` assets from the `CesiumWidgetView` makes it easier to write new assets in the future, and keeps the `CesiumWidgetView` from becoming too expansive.

All three of these Cesium asset models have the common `createCesiumModel()` function, which constructs the appropriate `cesiumModel` for the type, given the `cesiumOptions` set on the model. The `cesiumModel` is then used by the `CesiumWidgetView` to render the data on the map. In addition, the `type` attribute used in each of these asset models directly corresponds to the Cesium constructor function that creates the `cesiumModel` .

<figure>
<a href="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-model.png"><img src="https://github.com/NCEAS/metacatui-design/raw/main/cesium/images/cesium-model.png" style="width:100%; max-width:1300px"/></a>
<figcaption>The models and collections that control the cesium map. From the <a href="https://github.com/NCEAS/metacatui-design">MetacatUI Design repo</a>.</figcaption>
</figure>

Example:

```xml
<section>
<label>My Cesium Map</label>
<title>My Cesium Map</title>
<option>
<optionName>sectionType</optionName>
<optionValue>visualization</optionValue>
</option>
<option>
<optionName>visualizationType</optionName>
<optionValue>cesium</optionValue>
</option>
<option>
<optionName>mapConfig</optionName>
<optionValue>
<![CDATA[{
"homePosition": {...}
.....
"showFeatureInfo": false
}]]>
</optionValue>
</option>
</section>
```

## Useful links

- [CesiumJS on GitHub](https://github.com/CesiumGS/cesium)
- [CesiumJS website](https://cesium.com/platform/cesiumjs/) - Overview of Cesium, including information about Cesium Ion
- [Cesium documentation](https://cesium.com/learn/cesiumjs/ref-doc/)
- [Cesium sandcastle](https://sandcastle.cesium.com/) - For experimenting with Cesium, includes helpful examples and demos
- [TerriaJS on GitHub](https://github.com/TerriaJS/terriajs) - a large application that also uses the CesiumWidget. Although Terria uses a customized and older version of Cesium, it can serve as a good reference.
- [Planned features & known issues related to the Cesium Map in MetacatUI](https://github.com/NCEAS/metacatui/issues?q=is%3Aopen+is%3Aissue+label%3Acesium)
* [CesiumJS on GitHub](https://github.com/CesiumGS/cesium)
* [CesiumJS website](https://cesium.com/platform/cesiumjs/) - Overview of Cesium, including information about Cesium Ion
* [Cesium documentation](https://cesium.com/learn/cesiumjs/ref-doc/)
* [Cesium sandcastle](https://sandcastle.cesium.com/) - For experimenting with Cesium, includes helpful examples and demos
* [TerriaJS on GitHub](https://github.com/TerriaJS/terriajs) - a large application that also uses the CesiumWidget. Although Terria uses a customized and older version of Cesium, it can serve as a good reference.
* [Planned features & known issues related to the Cesium Map in MetacatUI](https://github.com/NCEAS/metacatui/issues?q=is%3Aopen+is%3Aissue+label%3Acesium)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/views/search/SorterView.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading