diff --git a/CHANGES.md b/CHANGES.md index 328aa2ce365..f945c064019 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ - Upgrade eslint to v10 and migrate to eslint flat config. - Update `csv-geo-au` support to include the Australian Mesh Blocks 2021. - We no longer start terriajs-server when running `yarn gulp dev` as it is not needed for running tests in the browser with jasmine-browser-runner. If you need terriajs-server, you can start it separately by running `yarn gulp terriajs-server` in another terminal. +- Move catalog-search-provider instance from SearchBarModel to Catalog class. #### 8.12.2 - 2026-03-27 diff --git a/lib/Models/Catalog/Catalog.ts b/lib/Models/Catalog/Catalog.ts index beb1f40033e..52062c9e4f9 100644 --- a/lib/Models/Catalog/Catalog.ts +++ b/lib/Models/Catalog/Catalog.ts @@ -7,18 +7,36 @@ import Terria from "../Terria"; import Group from "./Group"; import { BaseModel } from "../Definition/Model"; import isDefined from "../../Core/isDefined"; +import CatalogSearchProviderMixin from "../../ModelMixins/SearchProviders/CatalogSearchProviderMixin"; +import CatalogSearchProvider from "../SearchProviders/CatalogSearchProvider"; export default class Catalog { @observable group: Group & BaseModel; + @observable + searchProvider: CatalogSearchProviderMixin.Instance | undefined; + readonly terria: Terria; private _disposeCreateUserAddedGroup: () => void; - constructor(terria: Terria) { + constructor( + terria: Terria, + options: { searchProvider?: CatalogSearchProviderMixin.Instance } = {} + ) { makeObservable(this); this.terria = terria; + if ("searchProvider" in options) { + this.searchProvider = options.searchProvider; + } else { + this.searchProvider = CatalogSearchProvider.fromOptions({ + id: "catalog-search-provider", + terria, + minCharacters: this.terria.searchBarModel.minCharacters + }); + } + this.group = new CatalogGroup("/", this.terria); this.terria.addModel(this.group); diff --git a/lib/Models/SearchProviders/CatalogSearchProvider.ts b/lib/Models/SearchProviders/CatalogSearchProvider.ts index 47f96f76653..8a40c318a03 100644 --- a/lib/Models/SearchProviders/CatalogSearchProvider.ts +++ b/lib/Models/SearchProviders/CatalogSearchProvider.ts @@ -108,18 +108,33 @@ export default class CatalogSearchProvider extends CatalogSearchProviderMixin( ) { static readonly type = "catalog-search-provider"; @observable isSearching: boolean = false; - @observable debounceDurationOnceLoaded: number = 300; constructor(id: string | undefined, terria: Terria) { super(id, terria); makeObservable(this); + } - this.setTrait( - CommonStrata.defaults, - "minCharacters", - terria.searchBarModel.minCharacters - ); + static fromOptions({ + id, + terria, + minCharacters + }: { + id: string | undefined; + terria: Terria; + minCharacters?: number; + }) { + const searchProvider = new CatalogSearchProvider(id, terria); + + if (minCharacters !== undefined) { + searchProvider.setTrait( + CommonStrata.defaults, + "minCharacters", + minCharacters + ); + } + + return searchProvider; } get type() { diff --git a/lib/Models/SearchProviders/SearchBarModel.ts b/lib/Models/SearchProviders/SearchBarModel.ts index 36454353ca7..c9781742255 100644 --- a/lib/Models/SearchProviders/SearchBarModel.ts +++ b/lib/Models/SearchProviders/SearchBarModel.ts @@ -3,14 +3,14 @@ import { computed, isObservableArray, makeObservable, - observable + observable, + reaction } from "mobx"; import DeveloperError from "terriajs-cesium/Source/Core/DeveloperError"; import RuntimeError from "terriajs-cesium/Source/Core/RuntimeError"; import { JsonObject } from "../../Core/Json"; import Result from "../../Core/Result"; import TerriaError from "../../Core/TerriaError"; -import CatalogSearchProviderMixin from "../../ModelMixins/SearchProviders/CatalogSearchProviderMixin"; import LocationSearchProviderMixin from "../../ModelMixins/SearchProviders/LocationSearchProviderMixin"; import { SearchBarTraits } from "../../Traits/SearchProviders/SearchBarTraits"; import SearchProviderTraits from "../../Traits/SearchProviders/SearchProviderTraits"; @@ -26,12 +26,20 @@ import upsertSearchProviderFromJson from "./upsertSearchProviderFromJson"; export class SearchBarModel extends CreateModel(SearchBarTraits) { private locationSearchProviders = observable.map(); - @observable - catalogSearchProvider: CatalogSearchProviderMixin.Instance | undefined; - constructor(readonly terria: Terria) { super("search-bar-model", terria); + reaction( + () => this.minCharacters, + (minCharacters) => { + this.terria.catalog.searchProvider?.setTrait( + CommonStrata.defaults, + "minCharacters", + minCharacters + ); + } + ); + makeObservable(this); } diff --git a/lib/Models/Terria.ts b/lib/Models/Terria.ts index 4431cded088..04290fde814 100644 --- a/lib/Models/Terria.ts +++ b/lib/Models/Terria.ts @@ -459,9 +459,9 @@ export default class Terria { readonly indeterminateTileLoadProgressEvent = new CesiumEvent(); readonly workbench = new Workbench(); readonly overlays = new Workbench(); - readonly catalog = new Catalog(this); readonly baseMapsModel = new BaseMapsModel("basemaps", this); readonly searchBarModel = new SearchBarModel(this); + readonly catalog = new Catalog(this); readonly timelineClock = new Clock({ shouldAnimate: false }); // readonly overrides: any = overrides; // TODO: add options.functionOverrides like in master diff --git a/lib/ReactViewModels/SearchState.ts b/lib/ReactViewModels/SearchState.ts index fe71584bdf1..776e646a8f0 100644 --- a/lib/ReactViewModels/SearchState.ts +++ b/lib/ReactViewModels/SearchState.ts @@ -2,22 +2,19 @@ import { action, computed, IReactionDisposer, - observable, - reaction, makeObservable, - runInAction + observable, + reaction } from "mobx"; import filterOutUndefined from "../Core/filterOutUndefined"; +import CatalogSearchProviderMixin from "../ModelMixins/SearchProviders/CatalogSearchProviderMixin"; import LocationSearchProviderMixin from "../ModelMixins/SearchProviders/LocationSearchProviderMixin"; import SearchProviderMixin from "../ModelMixins/SearchProviders/SearchProviderMixin"; -import CatalogSearchProvider from "../Models/SearchProviders/CatalogSearchProvider"; import SearchProviderResults from "../Models/SearchProviders/SearchProviderResults"; import Terria from "../Models/Terria"; -import CatalogSearchProviderMixin from "../ModelMixins/SearchProviders/CatalogSearchProviderMixin"; interface SearchStateOptions { terria: Terria; - catalogSearchProvider?: CatalogSearchProviderMixin.Instance; } export default class SearchState { @@ -50,12 +47,6 @@ export default class SearchState { this.terria = options.terria; - runInAction(() => { - this.terria.searchBarModel.catalogSearchProvider = - options.catalogSearchProvider || - new CatalogSearchProvider("catalog-search-provider", options.terria); - }); - const self = this; this._catalogSearchDisposer = reaction( @@ -121,7 +112,7 @@ export default class SearchState { @computed get catalogSearchProvider(): CatalogSearchProviderMixin.Instance | undefined { - return this.terria.searchBarModel.catalogSearchProvider; + return this.terria.catalog.searchProvider; } @computed diff --git a/lib/ReactViewModels/ViewState.ts b/lib/ReactViewModels/ViewState.ts index b6bc5020092..ced7f1a7dfd 100644 --- a/lib/ReactViewModels/ViewState.ts +++ b/lib/ReactViewModels/ViewState.ts @@ -2,12 +2,12 @@ import { action, computed, IReactionDisposer, + makeObservable, observable, reaction, - runInAction, - makeObservable + runInAction } from "mobx"; -import { ReactNode, MouseEvent, ComponentType, Ref } from "react"; +import { ComponentType, MouseEvent, ReactNode, Ref } from "react"; import defined from "terriajs-cesium/Source/Core/defined"; import addedByUser from "../Core/addedByUser"; import { @@ -22,9 +22,12 @@ import CatalogMemberMixin, { getName } from "../ModelMixins/CatalogMemberMixin"; import GroupMixin from "../ModelMixins/GroupMixin"; import MappableMixin from "../ModelMixins/MappableMixin"; import ReferenceMixin from "../ModelMixins/ReferenceMixin"; +import CatalogSearchProviderMixin from "../ModelMixins/SearchProviders/CatalogSearchProviderMixin"; +import CzmlCatalogItem from "../Models/Catalog/CatalogItems/CzmlCatalogItem"; import CommonStrata from "../Models/Definition/CommonStrata"; import { BaseModel } from "../Models/Definition/Model"; import getAncestors from "../Models/getAncestors"; +import { getMarkerCatalogItem } from "../Models/LocationMarkerUtils"; import { SelectableDimension } from "../Models/SelectableDimensions/SelectableDimensions"; import Terria from "../Models/Terria"; import { ViewingControl } from "../Models/ViewingControls"; @@ -37,9 +40,6 @@ import { TourPoint } from "./defaultTourPoints"; import SearchState from "./SearchState"; -import CatalogSearchProviderMixin from "../ModelMixins/SearchProviders/CatalogSearchProviderMixin"; -import { getMarkerCatalogItem } from "../Models/LocationMarkerUtils"; -import CzmlCatalogItem from "../Models/Catalog/CatalogItems/CzmlCatalogItem"; export const DATA_CATALOG_NAME = "data-catalog"; export const USER_DATA_NAME = "my-data"; @@ -50,8 +50,10 @@ export const WORKBENCH_RESIZE_ANIMATION_DURATION = 500; interface ViewStateOptions { terria: Terria; - catalogSearchProvider: CatalogSearchProviderMixin.Instance | undefined; - errorHandlingProvider?: any; + /** + * @deprecated + */ + catalogSearchProvider?: CatalogSearchProviderMixin.Instance; } /** @@ -203,8 +205,6 @@ export default class ViewState { } } - errorProvider: any | null = null; - // default value is null, because user has not made decision to show or // not show story // will be explicitly set to false when user 1. dismiss story @@ -391,13 +391,14 @@ export default class ViewState { makeObservable(this); const terria = options.terria; this.searchState = new SearchState({ - terria, - catalogSearchProvider: options.catalogSearchProvider + terria }); + if (options.catalogSearchProvider) { + runInAction(() => { + this.terria.catalog.searchProvider = options.catalogSearchProvider; + }); + } - this.errorProvider = options.errorHandlingProvider - ? options.errorHandlingProvider - : null; this.terria = terria; // When features are picked, show the feature info panel. diff --git a/lib/ReactViews/ExplorerWindow/Tabs/DataCatalogTab.tsx b/lib/ReactViews/ExplorerWindow/Tabs/DataCatalogTab.tsx index 7f40a83149f..0bbaf3d1b0b 100644 --- a/lib/ReactViews/ExplorerWindow/Tabs/DataCatalogTab.tsx +++ b/lib/ReactViews/ExplorerWindow/Tabs/DataCatalogTab.tsx @@ -58,7 +58,7 @@ const DataCatalogTab = observer(function DataCatalogTab( terria.catalogReferencesLoaded ? ( searchState.catalogSearchProvider as CatalogSearchProvider - ).debounceDurationOnceLoaded + ).debounceDuration : DEBOUNCE_INTERVAL } /> diff --git a/lib/Traits/SearchProviders/CatalogSearchProviderTraits.ts b/lib/Traits/SearchProviders/CatalogSearchProviderTraits.ts index bac19734806..91cbda0821a 100644 --- a/lib/Traits/SearchProviders/CatalogSearchProviderTraits.ts +++ b/lib/Traits/SearchProviders/CatalogSearchProviderTraits.ts @@ -11,4 +11,12 @@ export default class CatalogSearchProviderTraits extends mixTraits( description: "Name of the search provider." }) name: string = "Catalog items"; + + @primitiveTrait({ + type: "number", + name: "Debounce duration", + description: + "The debounce duration (in milliseconds) to apply to search input once the provider is loaded. This is applied to prevent excessive searching while the user is typing. The default value is 300ms." + }) + debounceDuration?: number = 300; } diff --git a/test/Map/StyledHtmlSpec.tsx b/test/Map/StyledHtmlSpec.tsx index 39b5b67a5a0..007e08a720a 100644 --- a/test/Map/StyledHtmlSpec.tsx +++ b/test/Map/StyledHtmlSpec.tsx @@ -16,8 +16,7 @@ describe("StyledHtml", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/Models/TerriaSpec.ts b/test/Models/TerriaSpec.ts index 5054d38aeb7..6d029fdd35e 100644 --- a/test/Models/TerriaSpec.ts +++ b/test/Models/TerriaSpec.ts @@ -565,8 +565,7 @@ describe("TerriaSpec", function () { beforeEach(function () { newTerria = new Terria({ appBaseHref: "/", baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); UrlToCatalogMemberMapping.register( @@ -793,8 +792,7 @@ describe("TerriaSpec", function () { )}`; newTerria = new Terria({ baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); await Promise.all( @@ -904,8 +902,7 @@ describe("TerriaSpec", function () { "https://magda.example.com/api/v0/registry/records/map-config-example?optionalAspect=terria-config&optionalAspect=terria-init&optionalAspect=group&dereference=true"; viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); newTerria = new Terria({ baseUrl: "./" }); diff --git a/test/Models/Workflows/SelectableDimensionWorkflowSpec.ts b/test/Models/Workflows/SelectableDimensionWorkflowSpec.ts index dcac113c67f..4b721427617 100644 --- a/test/Models/Workflows/SelectableDimensionWorkflowSpec.ts +++ b/test/Models/Workflows/SelectableDimensionWorkflowSpec.ts @@ -13,8 +13,7 @@ describe("SelectableDimensionWorkflow", function () { beforeEach(function () { terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ReactViewModels/ViewStateSpec.ts b/test/ReactViewModels/ViewStateSpec.ts index 8874ba2bc24..ae41d3bd351 100644 --- a/test/ReactViewModels/ViewStateSpec.ts +++ b/test/ReactViewModels/ViewStateSpec.ts @@ -16,8 +16,7 @@ describe("ViewState", function () { beforeEach(function () { terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); @@ -61,12 +60,6 @@ describe("ViewState", function () { }); }); - describe("error provider", function () { - it("creates an empty error provider by default", function () { - expect(viewState.errorProvider).toBeNull(); - }); - }); - describe("tourPointsWithValidRefs", function () { it("returns tourPoints ordered by priority", function () { runInAction(() => { diff --git a/test/ReactViews/BottomDock/BottomDockSpec.tsx b/test/ReactViews/BottomDock/BottomDockSpec.tsx index 641087177ae..5d10fb07b03 100644 --- a/test/ReactViews/BottomDock/BottomDockSpec.tsx +++ b/test/ReactViews/BottomDock/BottomDockSpec.tsx @@ -12,8 +12,7 @@ describe("BottomDock", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/BottomDock/MapDataCountSpec.tsx b/test/ReactViews/BottomDock/MapDataCountSpec.tsx index c3d387fa50b..dec6af627e4 100644 --- a/test/ReactViews/BottomDock/MapDataCountSpec.tsx +++ b/test/ReactViews/BottomDock/MapDataCountSpec.tsx @@ -14,8 +14,7 @@ describe("MapDataCount", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Custom/Chart/BottomDockChartSpec.tsx b/test/ReactViews/Custom/Chart/BottomDockChartSpec.tsx index 0a98a9e6cc0..6f560112aaf 100644 --- a/test/ReactViews/Custom/Chart/BottomDockChartSpec.tsx +++ b/test/ReactViews/Custom/Chart/BottomDockChartSpec.tsx @@ -15,8 +15,7 @@ describe("BottomDockChart", function () { baseUrl: "./" }); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); chartItems = [ { diff --git a/test/ReactViews/Custom/Chart/FeatureInfoPanelChartSpec.tsx b/test/ReactViews/Custom/Chart/FeatureInfoPanelChartSpec.tsx index 8335a999a28..91ca9d85337 100644 --- a/test/ReactViews/Custom/Chart/FeatureInfoPanelChartSpec.tsx +++ b/test/ReactViews/Custom/Chart/FeatureInfoPanelChartSpec.tsx @@ -33,7 +33,7 @@ describe("FeatureInfoPanelChart", function () { context = { terria: new Terria(), - viewState: new ViewState({ terria, catalogSearchProvider: undefined }), + viewState: new ViewState({ terria }), feature: new TerriaFeature({}), catalogItem }; diff --git a/test/ReactViews/Custom/Chart/PointOnMapSpec.tsx b/test/ReactViews/Custom/Chart/PointOnMapSpec.tsx index 3244a32d7de..7fecd941a18 100644 --- a/test/ReactViews/Custom/Chart/PointOnMapSpec.tsx +++ b/test/ReactViews/Custom/Chart/PointOnMapSpec.tsx @@ -13,8 +13,7 @@ describe("PointOnMap", function () { baseUrl: "./" }); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ReactViews/Custom/SettingsPanelCustomComponentSpec.ts b/test/ReactViews/Custom/SettingsPanelCustomComponentSpec.ts index 2b182c41fcf..abbe9b106ce 100644 --- a/test/ReactViews/Custom/SettingsPanelCustomComponentSpec.ts +++ b/test/ReactViews/Custom/SettingsPanelCustomComponentSpec.ts @@ -12,8 +12,7 @@ describe("SettingsPanelCustomComponent", function () { beforeEach(function () { viewState = new ViewState({ - terria: new Terria(), - catalogSearchProvider: undefined + terria: new Terria() }); registerCustomComponentTypes(viewState.terria); diff --git a/test/ReactViews/DataCatalog/DataCatalogItemSpec.tsx b/test/ReactViews/DataCatalog/DataCatalogItemSpec.tsx index b384c9ba95f..a5f318f0d23 100644 --- a/test/ReactViews/DataCatalog/DataCatalogItemSpec.tsx +++ b/test/ReactViews/DataCatalog/DataCatalogItemSpec.tsx @@ -27,8 +27,7 @@ describe("DataCatalogItem", () => { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); wmsItem = new WebMapServiceCatalogItem("test", terria); diff --git a/test/ReactViews/DataCatalogSpec.tsx b/test/ReactViews/DataCatalogSpec.tsx index 3e3ccbcbdf9..07ca7754de9 100644 --- a/test/ReactViews/DataCatalogSpec.tsx +++ b/test/ReactViews/DataCatalogSpec.tsx @@ -24,8 +24,7 @@ describe("DataCatalog", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/DisclaimerSpec.tsx b/test/ReactViews/DisclaimerSpec.tsx index 36dc731982a..3e9728ee573 100644 --- a/test/ReactViews/DisclaimerSpec.tsx +++ b/test/ReactViews/DisclaimerSpec.tsx @@ -14,8 +14,7 @@ describe("Disclaimer", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/FeatureInfoPanelSpec.tsx b/test/ReactViews/FeatureInfoPanelSpec.tsx index 011a469b4cd..92031029639 100644 --- a/test/ReactViews/FeatureInfoPanelSpec.tsx +++ b/test/ReactViews/FeatureInfoPanelSpec.tsx @@ -24,8 +24,7 @@ describe("FeatureInfoPanel", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/FeatureInfoSectionSpec.tsx b/test/ReactViews/FeatureInfoSectionSpec.tsx index 7202e5a23c8..13e3751aa19 100644 --- a/test/ReactViews/FeatureInfoSectionSpec.tsx +++ b/test/ReactViews/FeatureInfoSectionSpec.tsx @@ -64,8 +64,7 @@ describe("FeatureInfoSection", function () { catalogItem = new TestModel("teststrata", terria); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); const properties = { name: "Kay", diff --git a/test/ReactViews/Generic/PromptSpec.tsx b/test/ReactViews/Generic/PromptSpec.tsx index ebe39de0c69..7f00b691f15 100644 --- a/test/ReactViews/Generic/PromptSpec.tsx +++ b/test/ReactViews/Generic/PromptSpec.tsx @@ -13,8 +13,7 @@ describe("HelpPrompt", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Map/Navigation/Compass/CompassSpec.tsx b/test/ReactViews/Map/Navigation/Compass/CompassSpec.tsx index edf0ddd37d2..8f671c57e14 100644 --- a/test/ReactViews/Map/Navigation/Compass/CompassSpec.tsx +++ b/test/ReactViews/Map/Navigation/Compass/CompassSpec.tsx @@ -14,8 +14,7 @@ describe("Compass", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Map/Navigation/Compass/GyroscopeGuidanceSpec.tsx b/test/ReactViews/Map/Navigation/Compass/GyroscopeGuidanceSpec.tsx index bfabb5330c1..25e1db8069d 100644 --- a/test/ReactViews/Map/Navigation/Compass/GyroscopeGuidanceSpec.tsx +++ b/test/ReactViews/Map/Navigation/Compass/GyroscopeGuidanceSpec.tsx @@ -13,8 +13,7 @@ describe("GyroscopeGuidance", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Map/Panels/HelpPanel/HelpPanelSpec.tsx b/test/ReactViews/Map/Panels/HelpPanel/HelpPanelSpec.tsx index 80a571364ea..315e032c833 100644 --- a/test/ReactViews/Map/Panels/HelpPanel/HelpPanelSpec.tsx +++ b/test/ReactViews/Map/Panels/HelpPanel/HelpPanelSpec.tsx @@ -14,8 +14,7 @@ describe("HelpPanel", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Map/Panels/HelpPanel/VideoGuideSpec.tsx b/test/ReactViews/Map/Panels/HelpPanel/VideoGuideSpec.tsx index 1e465a398f2..3d5de2c68ee 100644 --- a/test/ReactViews/Map/Panels/HelpPanel/VideoGuideSpec.tsx +++ b/test/ReactViews/Map/Panels/HelpPanel/VideoGuideSpec.tsx @@ -17,8 +17,7 @@ describe("VideoGuide", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Map/Panels/SharePanel/BuildShareLinkSpec.ts b/test/ReactViews/Map/Panels/SharePanel/BuildShareLinkSpec.ts index fcebf80911c..921fd9f03f3 100644 --- a/test/ReactViews/Map/Panels/SharePanel/BuildShareLinkSpec.ts +++ b/test/ReactViews/Map/Panels/SharePanel/BuildShareLinkSpec.ts @@ -36,8 +36,7 @@ beforeEach(function () { // }; viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Map/TerriaViewerWrapper/TerriaViewerWrapperSpec.tsx b/test/ReactViews/Map/TerriaViewerWrapper/TerriaViewerWrapperSpec.tsx index 4c318bab30e..15b6a00d098 100644 --- a/test/ReactViews/Map/TerriaViewerWrapper/TerriaViewerWrapperSpec.tsx +++ b/test/ReactViews/Map/TerriaViewerWrapper/TerriaViewerWrapperSpec.tsx @@ -13,7 +13,7 @@ describe("TerriaViewerWrapper", function () { beforeEach(function () { terria = new Terria(); - viewState = new ViewState({ terria, catalogSearchProvider: undefined }); + viewState = new ViewState({ terria }); }); describe("when main viewer is in leaflet mode", function () { diff --git a/test/ReactViews/Mobile/MobileHeaderSpec.tsx b/test/ReactViews/Mobile/MobileHeaderSpec.tsx index 29b8a2c0406..3dd595a4264 100644 --- a/test/ReactViews/Mobile/MobileHeaderSpec.tsx +++ b/test/ReactViews/Mobile/MobileHeaderSpec.tsx @@ -18,8 +18,7 @@ describe("MobileHeader", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Notification/NotificationSpec.tsx b/test/ReactViews/Notification/NotificationSpec.tsx index adff14828fa..4ca6dd83fc9 100644 --- a/test/ReactViews/Notification/NotificationSpec.tsx +++ b/test/ReactViews/Notification/NotificationSpec.tsx @@ -14,8 +14,7 @@ describe("Notification", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Search/BreadcrumbsSpec.tsx b/test/ReactViews/Search/BreadcrumbsSpec.tsx index efa915bd28c..f57f76e0479 100644 --- a/test/ReactViews/Search/BreadcrumbsSpec.tsx +++ b/test/ReactViews/Search/BreadcrumbsSpec.tsx @@ -15,8 +15,7 @@ describe("Breadcrumbs", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); catalogGroup = new CatalogGroup("group-of-geospatial-cats", terria); terria.addModel(catalogGroup); diff --git a/test/ReactViews/Search/SearchBoxAndResultsSpec.tsx b/test/ReactViews/Search/SearchBoxAndResultsSpec.tsx index 37eacc604af..7f77d53ddaf 100644 --- a/test/ReactViews/Search/SearchBoxAndResultsSpec.tsx +++ b/test/ReactViews/Search/SearchBoxAndResultsSpec.tsx @@ -18,9 +18,12 @@ describe("SearchBoxAndResults", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: new CatalogSearchProvider("catalog", terria) + terria: terria }); + terria.catalog.searchProvider = new CatalogSearchProvider( + "catalog-search-provider", + terria + ); }); it("renders with an input(SearchBox), but no SearchInDataCatalog without showLocationSearchResults", function () { @@ -74,7 +77,7 @@ describe("SearchBoxAndResults", function () { viewState.searchState.locationSearchText = searchText; viewState.searchState.showLocationSearchResults = true; viewState.searchState.locationSearchResults = []; - viewState.terria.searchBarModel.catalogSearchProvider = undefined; + viewState.terria.catalog.searchProvider = undefined; }); renderWithContexts( diff --git a/test/ReactViews/Search/SearchBoxSpec.tsx b/test/ReactViews/Search/SearchBoxSpec.tsx index e288fa1a3da..e3e101c6f34 100644 --- a/test/ReactViews/Search/SearchBoxSpec.tsx +++ b/test/ReactViews/Search/SearchBoxSpec.tsx @@ -14,8 +14,7 @@ describe("SearchBox", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/SidePanel/BrandingSpec.tsx b/test/ReactViews/SidePanel/BrandingSpec.tsx index c96ba005552..f58c6f9cf98 100644 --- a/test/ReactViews/SidePanel/BrandingSpec.tsx +++ b/test/ReactViews/SidePanel/BrandingSpec.tsx @@ -11,8 +11,7 @@ describe("Branding", function () { beforeEach(function () { terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ReactViews/StandardUserInterface/TrainerBar/TrainerBarSpec.tsx b/test/ReactViews/StandardUserInterface/TrainerBar/TrainerBarSpec.tsx index 16a35fb8bd6..ad6ec7a0bf2 100644 --- a/test/ReactViews/StandardUserInterface/TrainerBar/TrainerBarSpec.tsx +++ b/test/ReactViews/StandardUserInterface/TrainerBar/TrainerBarSpec.tsx @@ -15,8 +15,7 @@ describe("TrainerBar", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/StandardUserInterfaceSpec.tsx b/test/ReactViews/StandardUserInterfaceSpec.tsx index a524724b1b1..46ae776dddc 100644 --- a/test/ReactViews/StandardUserInterfaceSpec.tsx +++ b/test/ReactViews/StandardUserInterfaceSpec.tsx @@ -22,8 +22,7 @@ describe("StandardUserInterface", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Story/StoryBuilderSpec.tsx b/test/ReactViews/Story/StoryBuilderSpec.tsx index 9952287cd1c..0d66bdbd1ec 100644 --- a/test/ReactViews/Story/StoryBuilderSpec.tsx +++ b/test/ReactViews/Story/StoryBuilderSpec.tsx @@ -14,8 +14,7 @@ describe("StoryBuilder", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); runInAction(() => { viewState.storyBuilderShown = true; diff --git a/test/ReactViews/ToolSpec.tsx b/test/ReactViews/ToolSpec.tsx index aec545b2c58..f03254cef34 100644 --- a/test/ReactViews/ToolSpec.tsx +++ b/test/ReactViews/ToolSpec.tsx @@ -12,8 +12,7 @@ describe("Tool", function () { beforeEach(function () { const terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ReactViews/Tools/ItemSearchTool/ItemSearchToolSpec.tsx b/test/ReactViews/Tools/ItemSearchTool/ItemSearchToolSpec.tsx index 3ebc35fce1e..b8067fe92a2 100644 --- a/test/ReactViews/Tools/ItemSearchTool/ItemSearchToolSpec.tsx +++ b/test/ReactViews/Tools/ItemSearchTool/ItemSearchToolSpec.tsx @@ -47,8 +47,7 @@ describe("ItemSearchTool", function () { registerItemSearchProvider("testProvider", TestItemSearchProvider); const terria: Terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); item = new MockSearchableItem("test", terria); item.setTrait(CommonStrata.user, "search", { diff --git a/test/ReactViews/Tour/TourPortalSpec.tsx b/test/ReactViews/Tour/TourPortalSpec.tsx index f48b8bfdcfa..154ec76f91f 100644 --- a/test/ReactViews/Tour/TourPortalSpec.tsx +++ b/test/ReactViews/Tour/TourPortalSpec.tsx @@ -16,8 +16,7 @@ describe("TourPortal", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/WelcomeMessageSpec.tsx b/test/ReactViews/WelcomeMessageSpec.tsx index e7876f0d5c8..61a2784344e 100644 --- a/test/ReactViews/WelcomeMessageSpec.tsx +++ b/test/ReactViews/WelcomeMessageSpec.tsx @@ -14,8 +14,7 @@ describe("WelcomeMessage", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); }); diff --git a/test/ReactViews/Workbench/Controls/IdealZoomSpec.tsx b/test/ReactViews/Workbench/Controls/IdealZoomSpec.tsx index a6eb0d5f287..4b25dcb8840 100644 --- a/test/ReactViews/Workbench/Controls/IdealZoomSpec.tsx +++ b/test/ReactViews/Workbench/Controls/IdealZoomSpec.tsx @@ -25,11 +25,9 @@ describe("Ideal Zoom", function () { theItem = new Cesium3DTilesCatalogItem("my3dtiles", terria); theItem.setTrait("definition", "url", "/test/Cesium3DTiles/tileset.json"); - const options = { - terria: terria, - catalogSearchProvider: undefined - }; - viewState = new ViewState(options); + viewState = new ViewState({ + terria: terria + }); }); it("should use default camera view if no parameters are given.", async function () { diff --git a/test/ReactViews/Workbench/Controls/ViewingControlsSpec.tsx b/test/ReactViews/Workbench/Controls/ViewingControlsSpec.tsx index 0cb0cff7a81..67fd4089183 100644 --- a/test/ReactViews/Workbench/Controls/ViewingControlsSpec.tsx +++ b/test/ReactViews/Workbench/Controls/ViewingControlsSpec.tsx @@ -15,8 +15,7 @@ describe("ViewingControls", function () { beforeEach(function () { terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ReactViews/Workbench/Controls/WorkbenchItemControlsSpec.tsx b/test/ReactViews/Workbench/Controls/WorkbenchItemControlsSpec.tsx index 09403b547f2..458f271d1a1 100644 --- a/test/ReactViews/Workbench/Controls/WorkbenchItemControlsSpec.tsx +++ b/test/ReactViews/Workbench/Controls/WorkbenchItemControlsSpec.tsx @@ -19,8 +19,7 @@ describe("WorkbenchItemControls", function () { baseUrl: "./" }); viewState = new ViewState({ - terria: terria, - catalogSearchProvider: undefined + terria: terria }); item = new WebMapServiceCatalogItem("test-item", terria); diff --git a/test/ReactViews/Workflows/WorkflowPanelSpec.tsx b/test/ReactViews/Workflows/WorkflowPanelSpec.tsx index a0b7fbd594e..6cc8dd408d0 100644 --- a/test/ReactViews/Workflows/WorkflowPanelSpec.tsx +++ b/test/ReactViews/Workflows/WorkflowPanelSpec.tsx @@ -14,8 +14,7 @@ describe("WorkflowPanel", function () { terria.configParameters.regionMappingDefinitionsUrl = "./data/regionMapping.json"; viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ViewModels/FeatureInfoPanelSpec.ts b/test/ViewModels/FeatureInfoPanelSpec.ts index 749a645b62c..a53c2c23150 100644 --- a/test/ViewModels/FeatureInfoPanelSpec.ts +++ b/test/ViewModels/FeatureInfoPanelSpec.ts @@ -11,8 +11,7 @@ describe("FeatureInfoPanelViewModel", function () { beforeEach(function () { terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ViewModels/MapNavigation/MapToolbarSpec.ts b/test/ViewModels/MapNavigation/MapToolbarSpec.ts index 5a77c7ea668..4df698e3a69 100644 --- a/test/ViewModels/MapNavigation/MapToolbarSpec.ts +++ b/test/ViewModels/MapNavigation/MapToolbarSpec.ts @@ -10,8 +10,7 @@ describe("MapToolbar", function () { beforeEach(function () { terria = new Terria(); viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); }); diff --git a/test/ViewModels/ViewingControlsMenuSpec.ts b/test/ViewModels/ViewingControlsMenuSpec.ts index 2aafbdfec90..28f526c40d8 100644 --- a/test/ViewModels/ViewingControlsMenuSpec.ts +++ b/test/ViewModels/ViewingControlsMenuSpec.ts @@ -9,8 +9,7 @@ describe("ViewingControlsMenu", function () { it("adds the menu item generator function to `viewState.globalViewingControlOptions` array", function () { const terria = new Terria(); const viewState = new ViewState({ - terria, - catalogSearchProvider: undefined + terria }); expect(viewState.globalViewingControlOptions.length).toEqual(0); const generateFunction = () => ({