import { Global } from "../../Core/Globals" import { EventManager } from "../../Core/Events" import { Ui } from "../../Core/Ui" import * as Events from "../../Core/EventDefinitions" import { LocalizationManager } from "../../Core/Localization" import { Tab } from "@syncfusion/ej2-navigations"; import * as Utility from "../../Core/Utility"; import { FormValidation } from "../../Core/Forms" import * as Models from "../../Common/Models"; import { Query, DataManager, UrlAdaptor } from "@syncfusion/ej2-data"; import { AutoComplete } from '@syncfusion/ej2-dropdowns'; import { NumericTextBox } from "@syncfusion/ej2-inputs"; import { Uppload, Local, xhrUploader, Crop, Rotate, Flip, Blur, Brightness, Contrast, Grayscale, Saturate } from "uppload"; import { Switch } from '@syncfusion/ej2-buttons'; import { DatePicker, ChangedEventArgs, RenderDayCellEventArgs } from "@syncfusion/ej2-calendars"; import * as UpploadHelper from "../../Common/UpploadLanguages" import * as L from "leaflet" import "leaflet.markercluster" import { Slider } from "@syncfusion/ej2-inputs"; import PriceCalculation = Models.PriceCalculation; import ProductStartType = Models.ProductStartType; import PriceAliquotType = Models.PriceAliquotType; import PriceType = Models.PriceType; class AddPinToCartModule { private _moduleName = "AddPinToCartModule"; private _component = "#pinAddToCartContainer"; private _global: Global; private _eventManager: EventManager; private _uiManager: Ui; private _localizationMananger: LocalizationManager; private _tab: Tab; private _tabText: Tab; private _upploadImage: Uppload; private _upploadImageLanguage: Uppload; private _selectedImageLanguage; private _startDatePicker: DatePicker; private _endDatePicker: DatePicker; private _latNumeric: NumericTextBox; private _lngNumeric: NumericTextBox; private _radiusNumeric: NumericTextBox; private _map : L.Map; private _markers: L.MarkerClusterGroup; private _plotlayers = []; private _featureGroup: L.FeatureGroup; private _minll: L.LatLng; private _maxll: L.LatLng; private _selectedPosition: L.LatLng; private _radiusSlider: Slider; private _radius: number; constructor() { this._global = Global.getInstance(); this._eventManager = EventManager.getInstance(); this._uiManager = Ui.getInstance(); this._localizationMananger = LocalizationManager.getInstance(); this._selectedImageLanguage = ""; this._radius = 1; } /** * Stellt einen Prefix vor einen Selektor * @param selector */ private prefix(selector: string): string { const self = this; if ($(`${self._component} ${selector}`).length > 0) return `${self._component} ${selector}`; return `html ${selector}`; } /** * Speichern */ private save(): void { var self = this; self._uiManager.blockMainUi(); var action = $(self.prefix("#frmAddToCartPin")).attr("action"); var data = $(self.prefix("#frmAddToCartPin")).serialize(); $.post(action, data) .done(result => { if (result.success) { self._uiManager.pageTitleClear(self._component); self._eventManager.unSubscribeAll(self._moduleName); self._eventManager.publish(Events.Shop.addToCartSuccess, result.data); } else { $(self._component).replaceWith(result.html); $.highlightErrors(); Utility.showErrorTab(); self.activate(); if (result.errorMessage && result.errorMessage.length > 0) self._uiManager.showErrorMessage(result.errorMessage); } }) .fail(result => { self._uiManager.showErrorMessage(self._localizationMananger.get("Common_Save_NoSuccess")); }) .always(result => { self._uiManager.unblockMainUi(); }); } /** * Löschen des Temporären Files * @param filename */ private remove(filename: string): void { var self = this; $.ajax({ url: $(self.prefix("#jsRemoveUrl")).val(), data: { filename }, dataType: "json", type: "POST", success(success) { if (success) self._uiManager.showSuccessMessage(self._localizationMananger.get("Common_Delete_Success")); else self._uiManager.showErrorMessage(self._localizationMananger.get("Common_Delete_NoSuccess")); }, error(e) { self._uiManager.showErrorMessage(self._localizationMananger.get("Common_Delete_NoSuccess")); }, complete() { self._uiManager.unblockMainUi(); } }); } /**Holen und Anzeigen des aliquoten Preises */ private getAliquotPrice(): void { var self = this; if (!self._startDatePicker.value || !self._endDatePicker.value) return; $.ajax({ url: $(self.prefix("#jsGetAliquotPriceUrl")).val(), data: { productId: $(self.prefix("#ProductId")).val(), customerId: $(self.prefix("#CustomerId")).val(), startDate: self._startDatePicker.value.toDateString(), endDate: self._endDatePicker.value.toDateString(), quantity: 1 }, dataType: "json", type: "POST", success(priceCalculation: PriceCalculation) { var muh = "huh"; var taxIncluded = false; var price = priceCalculation.total; if (priceCalculation.totalGross > priceCalculation.total) { price = priceCalculation.totalGross; taxIncluded = true; } var markupPercent = Globalize.parseNumber($(self.prefix("#PinPercentPerKm")).val()); var minRadius = Globalize.parseNumber($(self.prefix("#PinRadius")).val()); if (markupPercent > 0) { if (self._radiusNumeric.value > minRadius) { var difference = self._radiusNumeric.value - minRadius; var markup = markupPercent * difference; price += (price * markup) / 100; } } var priceString = Globalize.formatNumber(price, { minimumFractionDigits: 2 }); if(!taxIncluded) $(self.prefix("#aliquotPrice")).text(`€ ${priceString}`); else $(self.prefix("#aliquotPrice")).text(`€ ${priceString} ${self._localizationMananger.get("Common_TaxIncluded")}`); }, error(e) { }, complete() { } }); } //#region Karte private initMap(): void { var self = this; self._map = L.map("mapContainer"); self._map.setMaxBounds([[-90, -180], [90, 180]]); var osmUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; var osmAttrib = 'Map data © OpenStreetMap contributors'; var osm = new L.TileLayer(osmUrl, { minZoom: 1, maxZoom: 18, attribution: osmAttrib }); self._map.setView([47.6091, 13.7844], 7); self._map.addLayer(osm); self._markers = window.L.markerClusterGroup({}); self._featureGroup = L.featureGroup().addTo(self._map); var bounds = self._map.getBounds(); var minll = bounds.getSouthWest(); var maxll = bounds.getNorthEast(); self._minll = minll; self._maxll = maxll; } /**Map-Marker entfernen */ private removeMarkers(): void { var self = this; self._markers.clearLayers(); self._plotlayers = []; } /**Zeichnen des Radius, zentrieren und Suche nach Händlern starten */ private centerMapDrawCircle(): void { var self = addPinToCartModule; self._featureGroup.clearLayers(); var circle = L.circle(self._selectedPosition, self._radius * 1000).addTo(self._featureGroup); var circleBounds = circle.getBounds(); self._map.fitBounds(circleBounds); var minll = circleBounds.getSouthWest(); var maxll = circleBounds.getNorthEast(); } /**Aktuelle Position via Browser holen */ private setCurrentPoisition(): void { var self = this; if (navigator.geolocation) { navigator.geolocation.getCurrentPosition((position: any) => { self._selectedPosition = new L.LatLng(position.coords.latitude, position.coords.longitude); self.setMarker(); self.centerMapDrawCircle(); }); } } /** * Geo-Codes der Adresse suchen */ private geoLookup(address:string): void { var self = addPinToCartModule; self._uiManager.blockMainUi(); $.ajax({ url: $(self.prefix("#jsLookupGeoCodeUrl")).val(), data: { model: address }, dataType: "JSON", type: "POST", success(result) { if (result.success) { var geoResult = JSON.parse(result.data); self._selectedPosition = new L.LatLng(geoResult.latitude, geoResult.longitude); self.setMarker(); self.centerMapDrawCircle(); } else { self._uiManager.showErrorMessage(result.errorMessage); } }, error() { }, complete() { self._uiManager.unblockMainUi(); } }); } private handleSelectButton(): void { var self = this; if (self._selectedPosition === null) { $(self.prefix("#btnSelect")).prop("disabled", "disabled"); } else { $(self.prefix("#btnSelect")).prop("disabled", ""); } } private setMarker(): void { var self = addPinToCartModule; self.removeMarkers(); var iconSize = L.point(25, 38); var iconUrl = `/images/marker-icon.png`; var dpawIcon = L.icon({ iconUrl: iconUrl, iconSize: iconSize }); var marker = L.marker(self._selectedPosition, { icon: dpawIcon }); self._markers.addLayer(marker); self._map.addLayer(this._markers); self.handleSelectButton(); } //#endregion /** * Bindungen erstellen */ private setupBindings(): void { var self = this; $(self.prefix("#btnSave")).off("click").on("click", function () { FormValidation.getInstance().validateForm(self.prefix("#frmAddToCartPin"), () => { self.save(); }, () => { $.highlightErrors(); Utility.showErrorTab(); }); }); $(self.prefix("#btnCancel")).off("click").on("click", function () { self._uiManager.pageTitleClear(self._component); self._eventManager.unSubscribeAll(self._moduleName); self._eventManager.publish(Events.Shop.addToCartCancel); }); $(self.prefix("#btnMap")).off("click").on("click", function () { self._tab.select(2); }); self._tab = new Tab({ animation: { previous: { effect: "FadeIn", duration: 100 }, next: { effect: "FadeIn", duration: 100 } }, selecting: (arsg: any) => { if (arsg.isSwiped) { arsg.cancel = true; } }, selected: (args: any) => { if (args.selectedIndex === 2) { self._map.invalidateSize(); setTimeout(function () { self.centerMapDrawCircle(); if (self._radiusSlider) { self._radiusSlider.destroy(); } self._radiusSlider = new Slider({ min: minRadius, max: maxRadius, step: 0.1, value: self._radius, enableAnimation: true, ticks: { smallStep: 10, largeStep: 100, placement: "Before", showSmallTicks: true }, tooltip: { isVisible: true, placement: "Before", showOn: "Focus" }, type: "MinRange", changed(args: any) { self._radius = args.value; if (self._selectedPosition !== null) { self.centerMapDrawCircle(); } } }); self._radiusSlider.appendTo(self.prefix("#radiusSlider")); }, 500); } } }); self._tab.appendTo(self.prefix("#tabContainer")); self._tabText = new Tab({ animation: { previous: { effect: "FadeIn", duration: 100 }, next: { effect: "FadeIn", duration: 100 } }, selecting: (arsg: any) => { if (arsg.isSwiped) { arsg.cancel = true; } }, selected: (args: any) => { } }); self._tabText.appendTo(self.prefix("#tabContainerText")); //#region Numerics self._latNumeric = new NumericTextBox({ value: Globalize.parseNumber($(self.prefix("#Lat")).val()), decimals: 6, step: 1, min: -90.0, max: 90.0, format: "n6", change: (e: any) => { $(self.prefix("#Lat")).val(Globalize.formatNumber(e.value, { minimumFractionDigits: 6 })); } }); self._latNumeric.appendTo(self.prefix("#LatHelper")); self._lngNumeric = new NumericTextBox({ value: Globalize.parseNumber($(self.prefix("#Lng")).val()), decimals: 6, step: 1, min: -180.0, max: 180.0, format: "n6", change: (e: any) => { $(self.prefix("#Lng")).val(Globalize.formatNumber(e.value, { minimumFractionDigits: 6 })); } }); self._lngNumeric.appendTo(self.prefix("#LngHelper")); var markupPercent = Globalize.parseNumber($(self.prefix("#PinPercentPerKm")).val()); var minRadius = Globalize.parseNumber($(self.prefix("#PinRadius")).val()); var maxRadius = Globalize.parseNumber($(self.prefix("#PinRadius")).val()); if (markupPercent > 0) maxRadius = 500.0; self._radiusNumeric = new NumericTextBox({ value: Globalize.parseNumber($(self.prefix("#Radius")).val()), decimals: 2, step: 1, min: minRadius, max: maxRadius, format: "n2", change: (e: any) => { self._radius = e.value; $(self.prefix("#Radius")).val(Globalize.formatNumber(e.value, { minimumFractionDigits: 2 })); self.getAliquotPrice(); } }); self._radiusNumeric.appendTo(self.prefix("#RadiusHelper")); //#endregion //#region Lookups //#endregion //#region DatePicker var startType : ProductStartType = ProductStartType[$(self.prefix("#ProductStartType")).val().toString()]; var aliquotType : PriceAliquotType = PriceAliquotType[$(self.prefix("#PriceAliquotType")).val().toString()]; var priceType : PriceType = PriceType[$(self.prefix("#PriceType")).val().toString()]; var currentDate = new Date(); var minDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); if (startType === ProductStartType.FirstOfYear) { if (aliquotType === PriceAliquotType.None) { let currentYear = new Date().getFullYear(); minDate = new Date(currentYear, 0, 1); } } if (startType === ProductStartType.FirstOfMonth) { if (aliquotType === PriceAliquotType.None) { let currentYear = new Date().getFullYear(); let currentMonth = new Date().getMonth(); minDate = new Date(currentYear, currentMonth, 1); } } self._startDatePicker = new DatePicker({ value: new Date(Date.parse($(self.prefix("#StartDate")).val())), min: minDate, change(args: ChangedEventArgs) { if (args.value === undefined || args.value === null) return; let selectedDate = args.value; if (selectedDate < minDate) selectedDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); let selectedYear = selectedDate.getFullYear(); if (startType === ProductStartType.FirstOfYear && aliquotType === PriceAliquotType.None) { selectedDate = new Date(selectedDate.getFullYear(), 0, 1); } if (startType === ProductStartType.FirstOfYear && aliquotType !== PriceAliquotType.None) { let currentYear = new Date().getFullYear(); if (selectedDate.getFullYear() > currentYear) { selectedDate = new Date(selectedDate.getFullYear(), 0, 1); } } if (startType === ProductStartType.FirstOfMonth && aliquotType === PriceAliquotType.None) { selectedDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), 1); } if (startType === ProductStartType.FirstOfMonth && aliquotType !== PriceAliquotType.None) { let currentYear = new Date().getFullYear(); let currentMonth = new Date().getMonth(); if (selectedDate.getFullYear() === currentYear && selectedDate.getMonth() === currentMonth) { } else { selectedDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), 1); } } self._startDatePicker.value = selectedDate; if (priceType === PriceType.Year) { if (startType === ProductStartType.FirstOfYear) { self._endDatePicker.value = new Date(selectedYear, 11, 31); } if (startType === ProductStartType.FirstOfMonth) { let selectedMonth = selectedDate.getMonth(); let startDateHelper = new Date(selectedYear, selectedMonth, 1); let endDate = startDateHelper; endDate.setFullYear(endDate.getFullYear() + 1); endDate.setDate(endDate.getDate() - 1); self._endDatePicker.value = endDate; } if (startType === ProductStartType.Any) { let endDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate()); endDate.setFullYear(endDate.getFullYear() + 1); endDate.setDate(endDate.getDate() - 1); self._endDatePicker.value = endDate; } } if (priceType === PriceType.Month) { if (startType === ProductStartType.FirstOfYear || startType === ProductStartType.FirstOfMonth) { let selectedMonth = selectedDate.getMonth(); let startDateHelper = new Date(selectedYear, selectedMonth, 1); let endDate = startDateHelper; endDate.setMonth(endDate.getMonth() + 1); endDate.setDate(endDate.getDate() - 1); self._endDatePicker.value = endDate; } if (startType === ProductStartType.Any) { let endDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate()); endDate.setMonth(endDate.getMonth() + 1); endDate.setDate(endDate.getDate() - 1); self._endDatePicker.value = endDate; } } if (priceType === PriceType.Day) { let endDateMin = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate()); endDateMin.setDate(endDateMin.getDate() + 1); self._endDatePicker.min = endDateMin; if (self._endDatePicker.value < endDateMin) { self._endDatePicker.value = endDateMin; } } self.getAliquotPrice(); } }); self._startDatePicker.appendTo(self.prefix("#StartDate")); var minDateEnd = new Date(); minDateEnd.setDate(minDateEnd.getDate() + 1); var endDateReadonly = true; if (priceType === PriceType.Day) { endDateReadonly = false; } self._endDatePicker = new DatePicker({ value: new Date(Date.parse($(self.prefix("#EndDate")).val())), readonly: endDateReadonly, min: minDateEnd, change(args: ChangedEventArgs) { if (priceType === PriceType.Day) { self.getAliquotPrice(); } } }); self._endDatePicker.appendTo(self.prefix("#EndDate")); //#endregion //#region Switches //#endregion //#region image $(self.prefix("#btnUploadImage")).off("click").on("click", function () { self._upploadImage.open(); }); $(self.prefix("#btnDeleteImage")).off("click").on("click", function () { if ($(self.prefix("#Image")).val()) self.remove($(self.prefix("#Image")).val()); $(self.prefix("#Image")).val(""); $(self.prefix("#image")).removeAttr("src"); $(self.prefix("#btnDeleteImage")).hide(); }); var currentLanguage = $("html").attr("lang"); self._upploadImage = new Uppload({ lang: UpploadHelper.getLanguage(currentLanguage), uploader: xhrUploader({ endpoint: $(self.prefix("#jsUploadUrl")).val(), responseFunction: response => { var responseJson = JSON.parse(response); $(self.prefix("#Image")).val(responseJson.filename); return `/file/temp/${responseJson.filename}`; } }), maxSize: [1280, 720] }); self._upploadImage.use(new Local()); self._upploadImage.use(new Crop({ aspectRatio: 16 / 9 })); self._upploadImage.use(new Rotate()); self._upploadImage.use(new Flip()); self._upploadImage.use([new Blur(), new Brightness(), new Contrast(), new Grayscale(), new Saturate()]); self._upploadImage.on("upload", (url: string) => { $(self.prefix("#image")).attr("src", url); $(self.prefix("#btnDeleteImage")).show(); }); if ($(self.prefix("#image")).attr("src")) { $(self.prefix("#btnDeleteImage")).show(); } //#endregion //#region ImageUpload für Sprachversionen $(self.prefix(".btn-lang-upload-image")).off("click").on("click", function () { self._selectedImageLanguage = $(this).data("language"); self._upploadImageLanguage.open(); }); $(self.prefix(".btn-lang-delete-image")).off("click").on("click", function () { self._selectedImageLanguage = $(this).data("language"); if ($(self.prefix(`[data-languageimage='${self._selectedImageLanguage}']`)).val()) self.remove($(self.prefix(`[data-languageimage='${self._selectedImageLanguage}']`)).val()); $(self.prefix(`[data-languageimage='${self._selectedImageLanguage}']`)).val(""); $(self.prefix(`#image_${self._selectedImageLanguage}`)).removeAttr("src"); $(self.prefix(`#btnDeleteImage_${self._selectedImageLanguage}`)).hide(); }); self._upploadImageLanguage = new Uppload({ lang: UpploadHelper.getLanguage(currentLanguage), uploader: xhrUploader({ endpoint: $(self.prefix("#jsUploadUrl")).val(), responseFunction: response => { var responseJson = JSON.parse(response); $(self.prefix(`[data-languageimage='${self._selectedImageLanguage}']`)).val(responseJson.filename); return `/file/temp/${responseJson.filename}`; } }), maxSize: [1280, 720] }); self._upploadImageLanguage.use(new Local()); self._upploadImageLanguage.use(new Crop({ aspectRatio: 16 / 9 })); self._upploadImageLanguage.use(new Rotate()); self._upploadImageLanguage.use(new Flip()); self._upploadImageLanguage.use([new Blur(), new Brightness(), new Contrast(), new Grayscale(), new Saturate()]); self._upploadImageLanguage.on("upload", (url: string) => { $(self.prefix(`#image_${self._selectedImageLanguage}`)).attr("src", url); $(self.prefix(`#btnDeleteImage_${self._selectedImageLanguage}`)).show(); }); $(self.prefix("img[data-language]")).each(function() { var language = $(this).data("language"); if ($(this).attr("src")) { $(self.prefix(`#btnDeleteImage_${language}`)).show(); } }); //#endregion //#region Map self._radius = Globalize.parseNumber($(self.prefix("#Radius")).val()); $(self.prefix("#btnMyLocation")).off("click").on("click", function () { self.setCurrentPoisition(); }); $(self.prefix("#btnSearch")).off("click").on("click", function () { var address = $(self.prefix("#location")).val(); if (address !== undefined && address.length > 0) { self.geoLookup(address); } }); $(self.prefix("#btnSelect")).off("click").on("click", function () { var location = { lat: self._selectedPosition.lat, lng: self._selectedPosition.lng, radius: self._radius }; self._latNumeric.value = self._selectedPosition.lat; self._lngNumeric.value = self._selectedPosition.lng; self._radiusNumeric.value = self._radius; self._tab.select(0); }); self._radiusSlider = new Slider({ min: minRadius, max: maxRadius, step: 0.1, value: self._radius, enableAnimation: true, ticks: { smallStep: 10, largeStep: 100, placement: "Before", showSmallTicks: true }, tooltip: { isVisible: true, placement: "Before", showOn: "Focus" }, type: "MinRange", changed(args: any) { self._radius = args.value; if (self._selectedPosition !== null) { self.centerMapDrawCircle(); } } }); self._radiusSlider.appendTo(self.prefix("#radiusSlider")); //#endregion //#region Events //#endregion $('[data-toggle="tooltip"]').tooltip(); } /** * Aktivieren des Moduls */ public activate(): void { var self = this; $.setupValidator(); $.reinitializeValidator(); this.setupBindings(); self._uiManager.pageTitleAdd(self._component, self.prefix("#pageTitleAdd")); $.randomAutocompleteValue(); self.initMap(); var lat = Globalize.parseNumber($(self.prefix("#Lat")).val()); var lng = Globalize.parseNumber($(self.prefix("#Lng")).val()); self._selectedPosition = new L.LatLng(lat, lng); self.setMarker(); self.centerMapDrawCircle(); self._map.on("moveend", function () { var bounds = self._map.getBounds(); var minll = bounds.getSouthWest(); var maxll = bounds.getNorthEast(); var reload = false; if (minll.lat < self._minll.lat || minll.lng < self._minll.lng) { if (minll.lat < self._minll.lat) { self._minll.lat = minll.lat; } if (minll.lng < self._minll.lng) { self._minll.lng = minll.lng; } if (self._minll.lat < -90) self._minll.lat = -90; if (self._minll.lat > 90) self._minll.lat = 90; if (self._minll.lng < -180) self._minll.lng = -180; if (self._minll.lng > 180) self._minll.lng = 180; reload = true; } if (maxll.lat > self._maxll.lat || maxll.lng > self._maxll.lng) { if (maxll.lat > self._maxll.lat) { self._maxll.lat = maxll.lat; } if (maxll.lng > self._maxll.lng) { self._maxll.lng = maxll.lng; } if (self._maxll.lat < -90) self._maxll.lat = -90; if (self._maxll.lat > 90) self._maxll.lat = 90; if (self._maxll.lng < -180) self._maxll.lng = -180; if (self._maxll.lng > 180) self._maxll.lng = 180; reload = true; } if (reload) { //console.log(`RELOAD --> ${self._minll.lat} | ${self._minll.lng} | ${self._maxll.lat} | ${self._maxll.lng}`); } else { //console.log(`${self._minll.lat} | ${self._minll.lng} | ${self._maxll.lat} | ${self._maxll.lng}`); } }); self._map.on("zoomend", function () { var bounds = self._map.getBounds(); var minll = bounds.getSouthWest(); var maxll = bounds.getNorthEast(); var reload = false; if (minll.lat < self._minll.lat || minll.lng < self._minll.lng) { if (minll.lat < self._minll.lat) { self._minll.lat = minll.lat; } if (minll.lng < self._minll.lng) { self._minll.lng = minll.lng; } if (self._minll.lat < -90) self._minll.lat = -90; if (self._minll.lat > 90) self._minll.lat = 90; if (self._minll.lng < -180) self._minll.lng = -180; if (self._minll.lng > 180) self._minll.lng = 180; reload = true; } if (maxll.lat > self._maxll.lat || maxll.lng > self._maxll.lng) { if (maxll.lat > self._maxll.lat) { self._maxll.lat = maxll.lat; } if (maxll.lng > self._maxll.lng) { self._maxll.lng = maxll.lng; } if (self._maxll.lat < -90) self._maxll.lat = -90; if (self._maxll.lat > 90) self._maxll.lat = 90; if (self._maxll.lng < -180) self._maxll.lng = -180; if (self._maxll.lng > 180) self._maxll.lng = 180; reload = true; } if (reload) { //console.log(`RELOAD --> ${self._minll.lat} | ${self._minll.lng} | ${self._maxll.lat} | ${self._maxll.lng}`); } else { //console.log(`${self._minll.lat} | ${self._minll.lng} | ${self._maxll.lat} | ${self._maxll.lng}`); } }); self._map.on("click", (e: any) => { self._selectedPosition = e.latlng; self.setMarker(); self.handleSelectButton(); self.centerMapDrawCircle(); }); self.handleSelectButton(); } /** * Initialisieren des Moduls */ public init(): void { if (this._global.appInitialized) { addPinToCartModule.activate(); } else { setTimeout(() => { this.init() }, 10); } } } let addPinToCartModule = new AddPinToCartModule(); addPinToCartModule.init();