/** * @hidden */ export class SearchController { /** * @param {JQuery} $element Element. * @param {angular.IScope} $scope The component's scope. * @param {angular.ICompileService} $compile Angular compile service. * @param {angular.ITimeoutService} $timeout Angular timeout service. * @param {angular.auto.IInjectorService} $injector Angular injector service. * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext catalog. * @param {import('ngeo/misc/AutoProjection').AutoProjectionService} ngeoAutoProjection The ngeo * coordinates service. * @param {Function} ngeoSearchCreateGeoJSONBloodhound * The ngeo create GeoJSON Bloodhound service. * @param {import('gmf/theme/Themes').ThemesService} gmfThemes gmf Themes service. * @param {import('gmf/layertree/TreeManager').LayertreeTreeManager} gmfTreeManager gmf Tree Manager * service. * @param {import('gmf/search/FulltextSearch').FulltextSearchService} gmfSearchFulltextSearch * gmf Full text search service. * @param {import('ngeo/statemanager/Location').StatemanagerLocation} ngeoLocation The location service. * @param {import('gmf/options').gmfSearchOptions} gmfSearchOptions The options. * @param {import('gmf/options').gmfSearchGroups} gmfSearchGroups The groups. * @param {string} fulltextsearchUrl The service URL. * @ngdoc controller * @ngname GmfSearchController */ constructor($element: JQuery, $scope: angular.IScope, $compile: angular.ICompileService, $timeout: angular.ITimeoutService, $injector: angular.auto.IInjectorService, gettextCatalog: angular.gettext.gettextCatalog, ngeoAutoProjection: import("ngeo/misc/AutoProjection").AutoProjectionService, ngeoSearchCreateGeoJSONBloodhound: Function, gmfThemes: import("gmf/theme/Themes").ThemesService, gmfTreeManager: import("gmf/layertree/TreeManager").LayertreeTreeManager, gmfSearchFulltextSearch: import("gmf/search/FulltextSearch").FulltextSearchService, ngeoLocation: import("ngeo/statemanager/Location").StatemanagerLocation, gmfSearchOptions: import("gmf/options").gmfSearchOptions, gmfSearchGroups: import("gmf/options").gmfSearchGroups, fulltextsearchUrl: string); options: import("ngeo/options").gmfSearchOptions; groups: import("ngeo/options").gmfSearchGroups; fulltextsearchUrl: string; /** * @type {JQuery} * @private */ private element_; /** * @type {angular.IScope} * @private */ private scope_; /** * @type {angular.ICompileService} * @private */ private compile_; /** * @type {angular.ITimeoutService} * @private */ private timeout_; /** * @type {angular.auto.IInjectorService} */ injector_: angular.auto.IInjectorService; /** * @type {angular.gettext.gettextCatalog} * @private */ private gettextCatalog_; /** * @type {import('gmf/theme/Themes').ThemesService} * @private */ private gmfThemes_; /** * @type {import('gmf/layertree/TreeManager').LayertreeTreeManager} * @private */ private gmfTreeManager_; /** * @type {import('gmf/search/FulltextSearch').FulltextSearchService} * @private */ private fullTextSearch_; /** * @type {Function} * @private */ private ngeoSearchCreateGeoJSONBloodhound_; /** * @type {import('ngeo/statemanager/Location').StatemanagerLocation|undefined} * @private */ private ngeoLocation_; /** * @type {import('ngeo/misc/AutoProjection').AutoProjectionService} * @private */ private ngeoAutoProjection_; /** * @type {?import('ol/Map').default} */ map: import("ol/Map").default | null; /** * @type {?function(): void} */ onInitCallback: (() => void) | null; /** * @type {function(unknown): void} */ searchActionCallback: (arg0: unknown) => void; /** * Supported projections for coordinates search. * * @type {import('ol/proj/Projection').default[]} * @private */ private coordinatesProjectionsInstances_; /** * @type {import('ngeo/map/FeatureOverlay').FeatureOverlay} * @private */ private featureOverlay_; /** * @type {Twitter.Typeahead.Options} */ typeaheadOptions: Twitter.Typeahead.Options; /** * @type {(Twitter.Typeahead.Dataset>|Twitter.Typeahead.Dataset)[]} */ datasets: (Twitter.Typeahead.Dataset> | Twitter.Typeahead.Dataset<{ label: string; position: number[]; tt_source: string; }>)[]; /** * @type {string} */ inputValue: string; /** * @type {string} */ color: string; /** * @type {boolean} */ displayColorPicker: boolean; /** * @type {?import('ngeo/search/searchDirective').SearchDirectiveListeners>} */ listeners: import("ngeo/search/searchDirective").SearchDirectiveListeners> | null; /** * @type {import('ngeo/search/searchDirective').SearchDirectiveListeners>} */ additionalListeners: import("ngeo/search/searchDirective").SearchDirectiveListeners>; /** * @type {boolean} */ clearButton: boolean; /** * @type {string} */ optionsName: string; /** * Called on initialization of the controller. */ $onInit(): void; placeholder: string; /** * Merges the custom listeners received via the component attributes and the * listeners that are needed for this controller to function (close and select). * * @param {import('ngeo/search/searchDirective').SearchDirectiveListeners>} additionalListeners * Custom provided listeners. * @param {import('ngeo/search/searchDirective').SearchDirectiveListeners>} listeners Default listeners. * @returns {import('ngeo/search/searchDirective').SearchDirectiveListeners>} Merged listeners. * @private */ private mergeListeners_; /** * Initialize datasets for the search * * @private */ private initDatasets_; /** * @param {import('gmf/options').SearchComponentDatasource} config The config of the dataset. * @param {(function(import("geojson").Feature): boolean)} [opt_filter] A filter function * based on a GeoJSONFeaturesCollection's array. * @returns {Twitter.Typeahead.Dataset>} A typeahead dataset. * @private */ private createDataset_; /** * @param {string} action The action to keep. * @returns {(function(import("geojson").Feature): boolean)} A filter function based on a * GeoJSONFeaturesCollection's array. * @private */ private filterAction_; /** * @param {string} [opt_layerName] The layerName to keep. If null, keep all layers * (In all cases, except actions layers). * @returns {function(import("geojson").Feature): boolean} A filter function based on a * GeoJSONFeaturesCollection's array. * @private */ private filterLayername_; /** * @param {import('gmf/options').SearchComponentDatasource} config The config of the dataset. * @param {(function(import("geojson").Feature): boolean)} [opt_filter] Afilter function * based on a GeoJSONFeaturesCollection's array. * @returns {Bloodhound[]>} The bloodhound engine. * @private */ private createAndInitBloodhound_; /** * @returns {Bloodhound.RemoteOptions} Options. * @private */ private getBloodhoudRemoteOptions_; /** * @typedef {Object} CoordinateSuggestion * @property {string} label * @property {number[]} position * @property {string} tt_source */ /** * @param {import('ol/View').default} view View. * @returns {function(string, function(CoordinateSuggestion[]))} function defining parameters for the search * suggestions. * @private */ private createSearchCoordinates_; /** * Style for search results. * * @param {null|olFeature|import('ol/render/Feature').default} feature * The searched feature. * @param {number} resolution The current resolution of the map. * @returns {import('ol/style/Style').default} A style for this kind of features. * @private */ private getSearchStyle_; /** * Set a new color for the search feature style. * * @param {string} color The color to set. */ setStyleColor(color: string): void; /** * @private */ private setTTDropdownVisibility_; /** */ onClearButton(): void; /** */ clear(): void; /** */ blur(): void; /** * @param {JQuery.Event} event Event. * @param {olFeature|CoordinateSuggestion} suggestion Suggestion. * @param {Twitter.Typeahead.Dataset>} dataset Dataset. * @private */ private select_; /** * @param {JQuery.Event} event Event. * @param {olFeature} feature Feature. * @param {Twitter.Typeahead.Dataset>} dataset Dataset. * @private */ private selectFromGMF_; /** * @private */ private leaveSearch_; /** * @private */ private close_; /** * @param {JQuery.Event} event Event. * @param {string} query Query. * @param {boolean} empty Empty. * @private */ private datasetsempty_; /** * Performs a full-text search and centers the map on the first search result. * * @param {string} query Search query. * @param {number} resultIndex Return nth result instead. * @param {number} [opt_zoom] Optional zoom level. * @private */ private fulltextsearch_; /** * @param {JQuery.Event} event Event. * @param {string} query Query. * @private */ private handleChange_; } export namespace SearchController { let $inject: string[]; } export default myModule; import angular from 'angular'; import olFeature from 'ol/Feature'; /** * @type {angular.IModule} * @hidden */ declare const myModule: angular.IModule;