import { App } from '../gogocarto'
import { AppModes, AppStates } from '../app.module'
import { capitalize, unslugify } from '../utils/string-helpers'
import { ViewPort } from '../classes/classes'
declare let $
export class GeocodingManager {
constructor() {
App.geocoder.onGeocodeResult.do(() => {
this.handleGeocodeResult()
App.searchBarComponent.handleGeocodeResult()
})
App.geocoder.onGeolocalizationResult.do((viewPort: ViewPort) => {
this.handleGeolocalizationResult(viewPort)
})
}
handleGeocodeResult() {
//console.log("handleGeocodeResult", App.geocoder.getLocation());
$('#directory-spinner-loader').hide()
if (App.mode == AppModes.Map && App.state != AppStates.ShowElementAlone) {
App.setState(AppStates.Normal)
} else {
const location = App.geocoder.getLocation() ? App.geocoder.getLocation() : App.boundsModule.defaultCenter
App.boundsModule.createBoundsFromLocation(location)
App.elementsModule.clearCurrentsElement()
App.elementsModule.updateElementsToDisplay(true)
const address = App.geocoder.getLocationAddress()
if (App.geocoder.getLocation())
App.elementListComponent.setTitle(` ${App.config.translate('around')} ${capitalize(unslugify(address))}`)
}
App.documentTitleModule.updateDocumentTitle()
}
handleGeolocalizationResult(viewPort) {
if (App.mode == AppModes.Map) {
App.setState(AppStates.Normal)
App.mapComponent.panToLocation(viewPort.toLocation(), viewPort.zoom, false)
} else {
App.boundsModule.createBoundsFromLocation(viewPort.toLocation())
App.elementsModule.clearCurrentsElement()
App.elementsModule.updateElementsToDisplay(true)
App.elementListComponent.setTitle(
` ${App.config.translate('around')} ${App.config.translate('my.position')}`,
)
// save the viewport if we go to map after
App.mapComponent.setViewPort(viewPort)
}
}
}