cronus-theme 2.0.95 → 2.0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/default/b2b/build/doc/doc.css +1 -1
- package/default/b2b/dist/css/addons/errorPages.css +1 -1
- package/default/b2b/dist/css/addons/fck.css +1 -1
- package/default/b2b/dist/css/addons/kss.css +1 -1
- package/default/b2b/dist/css/doc.css +1 -1
- package/default/b2b/dist/css/doc1744018693.css +1 -0
- package/default/{catalog/dist/fonts/icons1743429303.woff → b2b/dist/fonts/icons1744018693.woff} +0 -0
- package/default/b2b/dist/fonts/icons1744018693.woff2 +0 -0
- package/default/b2b/dist/snippets/css/doc.html +1 -1
- package/default/b2b/dist/snippets/iconfont.html +1 -1
- package/default/b2b/dist/snippets/js/account.html +1 -1
- package/default/b2b/dist/snippets/js/itemcard.html +1 -1
- package/default/b2b/dist/snippets/js/main.html +1 -1
- package/default/b2b/dist/snippets/js/order.html +1 -1
- package/default/b2b/dist/snippets/js/salesperson.html +1 -1
- package/default/{catalog/src/icons/icons1743429303.woff → b2b/src/icons/icons1744018693.woff} +0 -0
- package/default/b2b/src/icons/icons1744018693.woff2 +0 -0
- package/default/b2b/src/scss/account.scss +2 -0
- package/default/b2b/src/scss/base/_icons.scss +2 -2
- package/default/b2b/src/scss/main.scss +2 -0
- package/default/b2b/styleguide/item-form-file-input.html +1 -2
- package/default/b2c/build/doc/doc.css +1 -1
- package/default/b2c/dist/css/account.css +1 -1
- package/default/b2c/dist/css/{account1743429290.css → account1744018688.css} +1 -1
- package/default/b2c/dist/css/addons/errorPages.css +1 -1
- package/default/b2c/dist/css/addons/fck.css +1 -1
- package/default/b2c/dist/css/addons/kss.css +1 -1
- package/default/b2c/dist/css/doc.css +1 -1
- package/default/b2c/dist/css/{doc1743429290.css → doc1744018688.css} +1 -1
- package/default/b2c/dist/css/main.css +1 -1
- package/default/b2c/dist/css/{main1743429290.css → main1744018688.css} +1 -1
- package/default/b2c/dist/css/order.css +1 -1
- package/default/b2c/dist/css/{order1743429290.css → order1744018688.css} +1 -1
- package/default/b2c/dist/fonts/icons1744018688.woff +0 -0
- package/default/b2c/dist/fonts/icons1744018688.woff2 +0 -0
- package/default/b2c/dist/snippets/css/account.html +1 -1
- package/default/b2c/dist/snippets/css/doc.html +1 -1
- package/default/b2c/dist/snippets/css/main.html +1 -1
- package/default/b2c/dist/snippets/css/order.html +1 -1
- package/default/b2c/dist/snippets/iconfont.html +1 -1
- package/default/b2c/dist/snippets/js/account.html +1 -1
- package/default/b2c/dist/snippets/js/itemcard.html +1 -1
- package/default/b2c/dist/snippets/js/main.html +1 -1
- package/default/b2c/dist/snippets/js/order.html +1 -1
- package/default/b2c/src/icons/icons1744018688.woff +0 -0
- package/default/b2c/src/icons/icons1744018688.woff2 +0 -0
- package/default/b2c/src/scss/base/_icons.scss +2 -2
- package/default/catalog/build/doc/doc.css +70 -53
- package/default/catalog/dist/css/addons/errorPages.css +1 -1
- package/default/catalog/dist/css/addons/fck.css +1 -1
- package/default/catalog/dist/css/doc.css +1 -1
- package/default/catalog/dist/css/doc1744018699.css +1 -0
- package/default/catalog/dist/fonts/icons1744018699.woff +0 -0
- package/default/catalog/dist/fonts/icons1744018699.woff2 +0 -0
- package/default/catalog/dist/snippets/css/doc.html +1 -1
- package/default/catalog/dist/snippets/iconfont.html +1 -1
- package/default/catalog/dist/snippets/js/account.html +1 -1
- package/default/catalog/dist/snippets/js/itemcard.html +1 -1
- package/default/catalog/dist/snippets/js/main.html +1 -1
- package/default/catalog/dist/snippets/js/order.html +1 -1
- package/default/catalog/src/icons/icons1744018699.woff +0 -0
- package/default/catalog/src/icons/icons1744018699.woff2 +0 -0
- package/default/catalog/src/scss/base/_icons.scss +2 -2
- package/default/catalog/src/scss/main.scss +2 -0
- package/default/catalog/styleguide/item-base-lists.html +1 -1
- package/default/catalog/styleguide/item-components-action-icon.html +1 -1
- package/default/catalog/styleguide/item-components-alerts.html +1 -1
- package/default/catalog/styleguide/item-components-breadcrumb.html +1 -1
- package/default/catalog/styleguide/item-components-custom-select.html +1 -1
- package/default/catalog/styleguide/item-components-iconbar.html +1 -1
- package/default/catalog/styleguide/item-components-iconbox.html +1 -1
- package/default/catalog/styleguide/item-components-iconlist.html +1 -1
- package/default/catalog/styleguide/item-components-max-height-content.html +1 -1
- package/default/catalog/styleguide/item-components-modals.html +1 -1
- package/default/catalog/styleguide/item-components-pagination.html +1 -1
- package/default/catalog/styleguide/item-components-processbar.html +1 -1
- package/default/catalog/styleguide/item-components-radio-list.html +1 -1
- package/default/catalog/styleguide/item-components-rating.html +1 -1
- package/default/catalog/styleguide/item-components-searchbar.html +1 -1
- package/default/catalog/styleguide/item-components-share-links.html +1 -1
- package/default/catalog/styleguide/item-components-tags-group.html +1 -1
- package/default/catalog/styleguide/item-components-tags.html +1 -1
- package/default/catalog/styleguide/item-components-trust-infobar.html +1 -1
- package/default/catalog/styleguide/item-components-trustbar.html +1 -1
- package/default/catalog/styleguide/item-components-trustlist.html +1 -1
- package/default/catalog/styleguide/item-form-infield-input-groups.html +1 -1
- package/default/catalog/styleguide/item-form-input-groups-addons.html +1 -1
- package/default/catalog/styleguide/item-form-input-groups.html +1 -1
- package/default/catalog/styleguide/item-navigations-mainnav.html +1 -1
- package/default/catalog/styleguide/item-navigations-nav.html +1 -1
- package/default/catalog/styleguide/item-navigations-navgroup.html +1 -1
- package/default/catalog/styleguide/item-navigations-subnav.html +1 -1
- package/default/catalog/styleguide/item-navigations-toggle-navigation.html +1 -1
- package/default/catalog/styleguide/item-shop-account-infobox.html +1 -1
- package/default/catalog/styleguide/item-shop-accountbox.html +1 -1
- package/default/catalog/styleguide/item-shop-attributes-icons.html +1 -1
- package/default/catalog/styleguide/item-shop-categorybox.html +1 -1
- package/default/catalog/styleguide/item-shop-categorylist-itempreview.html +1 -1
- package/default/catalog/styleguide/item-shop-categorylist.html +1 -1
- package/default/catalog/styleguide/item-shop-filter.html +1 -1
- package/default/catalog/styleguide/item-shop-inventory.html +1 -1
- package/default/catalog/styleguide/item-shop-list-type-switch.html +1 -1
- package/default/catalog/styleguide/item-shop-orderboxsummary.html +1 -1
- package/default/catalog/styleguide/item-shop-prices-list-graduated.html +1 -1
- package/default/catalog/styleguide/item-shop-prices-list.html +1 -1
- package/default/catalog/styleguide/item-shop-prices.html +1 -1
- package/default/catalog/styleguide/item-shop-promotions.html +1 -1
- package/default/catalog/styleguide/item-shop-selected-salesperson-box.html +1 -1
- package/default/catalog/styleguide/item-shop-sorting.html +1 -1
- package/default/catalog/styleguide/item-shop-state.html +1 -1
- package/default/catalog/styleguide/item-shop-variantselection.html +1 -1
- package/default/catalog/styleguide/item-siteparts-filegallery.html +1 -1
- package/default/catalog/styleguide/item-siteparts-scrollbar.html +1 -1
- package/default/catalog/styleguide/item-siteparts-slidecontent.html +1 -1
- package/default/catalog/styleguide/item-typo-link-with-icon.html +1 -1
- package/default/catalog/styleguide/section-base.html +1 -1
- package/default/catalog/styleguide/section-components.html +20 -20
- package/default/catalog/styleguide/section-form.html +3 -3
- package/default/catalog/styleguide/section-navigations.html +5 -5
- package/default/catalog/styleguide/section-shop.html +18 -18
- package/default/catalog/styleguide/section-siteparts.html +3 -3
- package/default/catalog/styleguide/section-typo.html +1 -1
- package/default/global/scss/externals/_openStreetMap.scss +61 -0
- package/default/global/scss/shop/_customerMap.scss +66 -0
- package/default/login/build/doc/doc.css +1 -1
- package/default/login/dist/css/addons/errorPages.css +1 -1
- package/default/login/dist/css/addons/fck.css +1 -1
- package/default/login/dist/css/addons/kss.css +1 -1
- package/default/login/dist/css/doc.css +1 -1
- package/default/login/dist/css/{doc1743429300.css → doc1744018696.css} +1 -1
- package/default/login/dist/css/main.css +1 -1
- package/default/login/dist/css/{main1743429300.css → main1744018696.css} +1 -1
- package/default/{b2b/dist/fonts/icons1743429295.woff → login/dist/fonts/icons1744018696.woff} +0 -0
- package/default/login/dist/fonts/icons1744018696.woff2 +0 -0
- package/default/login/dist/snippets/css/doc.html +1 -1
- package/default/login/dist/snippets/css/main.html +1 -1
- package/default/login/dist/snippets/iconfont.html +1 -1
- package/default/login/dist/snippets/js/main.html +1 -1
- package/default/{b2b/src/icons/icons1743429295.woff → login/src/icons/icons1744018696.woff} +0 -0
- package/default/login/src/icons/icons1744018696.woff2 +0 -0
- package/default/login/src/scss/base/_icons.scss +2 -2
- package/default/templates/shop/customerMap.mustache +226 -82
- package/default/website/build/doc/doc.css +1 -1
- package/default/website/dist/css/addons/errorPages.css +1 -1
- package/default/website/dist/css/addons/fck.css +1 -1
- package/default/website/dist/css/addons/kss.css +1 -1
- package/default/website/dist/css/doc.css +1 -1
- package/default/website/dist/css/{doc1743429306.css → doc1744018702.css} +1 -1
- package/default/website/dist/css/main.css +1 -1
- package/default/website/dist/css/{main1743429306.css → main1744018702.css} +1 -1
- package/default/website/dist/fonts/icons1744018702.woff +0 -0
- package/default/website/dist/fonts/icons1744018702.woff2 +0 -0
- package/default/website/dist/snippets/css/doc.html +1 -1
- package/default/website/dist/snippets/css/main.html +1 -1
- package/default/website/dist/snippets/iconfont.html +1 -1
- package/default/website/dist/snippets/js/main.html +1 -1
- package/default/website/src/icons/icons1744018702.woff +0 -0
- package/default/website/src/icons/icons1744018702.woff2 +0 -0
- package/default/website/src/scss/base/_icons.scss +2 -2
- package/package.json +1 -1
- package/default/b2b/dist/css/account.css +0 -1
- package/default/b2b/dist/css/account1743429295.css +0 -1
- package/default/b2b/dist/css/doc1743429295.css +0 -1
- package/default/b2b/dist/css/main.css +0 -1
- package/default/b2b/dist/css/main1743429295.css +0 -1
- package/default/b2b/dist/css/order.css +0 -1
- package/default/b2b/dist/css/order1743429295.css +0 -1
- package/default/b2b/dist/css/salesperson.css +0 -1
- package/default/b2b/dist/css/salesperson1743429295.css +0 -1
- package/default/b2b/dist/fonts/icons1743429295.woff2 +0 -0
- package/default/b2b/dist/snippets/css/account.html +0 -1
- package/default/b2b/dist/snippets/css/main.html +0 -1
- package/default/b2b/dist/snippets/css/order.html +0 -1
- package/default/b2b/dist/snippets/css/salesperson.html +0 -1
- package/default/b2b/src/icons/icons1743429295.woff2 +0 -0
- package/default/b2c/dist/fonts/icons1743429290.woff +0 -0
- package/default/b2c/dist/fonts/icons1743429290.woff2 +0 -0
- package/default/b2c/src/icons/icons1743429290.woff +0 -0
- package/default/b2c/src/icons/icons1743429290.woff2 +0 -0
- package/default/catalog/dist/css/doc1743429303.css +0 -1
- package/default/catalog/dist/css/main.css +0 -1
- package/default/catalog/dist/css/main1743429303.css +0 -1
- package/default/catalog/dist/fonts/icons1743429303.woff2 +0 -0
- package/default/catalog/dist/snippets/css/main.html +0 -1
- package/default/catalog/src/icons/icons1743429303.woff2 +0 -0
- package/default/login/dist/fonts/icons1743429300.woff +0 -0
- package/default/login/dist/fonts/icons1743429300.woff2 +0 -0
- package/default/login/src/icons/icons1743429300.woff +0 -0
- package/default/login/src/icons/icons1743429300.woff2 +0 -0
- package/default/website/dist/fonts/icons1743429306.woff +0 -0
- package/default/website/dist/fonts/icons1743429306.woff2 +0 -0
- package/default/website/src/icons/icons1743429306.woff +0 -0
- package/default/website/src/icons/icons1743429306.woff2 +0 -0
- /package/default/b2b/dist/js/{account1743429295.js → account1744018693.js} +0 -0
- /package/default/b2b/dist/js/{itemcard1743429295.js → itemcard1744018693.js} +0 -0
- /package/default/b2b/dist/js/{main1743429295.js → main1744018693.js} +0 -0
- /package/default/b2b/dist/js/{order1743429295.js → order1744018693.js} +0 -0
- /package/default/b2b/dist/js/{salesperson1743429295.js → salesperson1744018693.js} +0 -0
- /package/default/b2c/dist/js/{account1743429290.js → account1744018688.js} +0 -0
- /package/default/b2c/dist/js/{itemcard1743429290.js → itemcard1744018688.js} +0 -0
- /package/default/b2c/dist/js/{main1743429290.js → main1744018688.js} +0 -0
- /package/default/b2c/dist/js/{order1743429290.js → order1744018688.js} +0 -0
- /package/default/catalog/dist/js/{account1743429303.js → account1744018699.js} +0 -0
- /package/default/catalog/dist/js/{itemcard1743429303.js → itemcard1744018699.js} +0 -0
- /package/default/catalog/dist/js/{main1743429303.js → main1744018699.js} +0 -0
- /package/default/catalog/dist/js/{order1743429303.js → order1744018699.js} +0 -0
- /package/default/login/dist/js/{main1743429300.js → main1744018696.js} +0 -0
- /package/default/website/dist/js/{main1743429306.js → main1744018702.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<script src="/layout/frontend/default/login/dist/js/
|
|
1
|
+
<script src="/layout/frontend/default/login/dist/js/main1744018696.js"></script>
|
|
Binary file
|
|
Binary file
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
@font-face {
|
|
2
2
|
font-family: "icons";
|
|
3
3
|
font-display: swap;
|
|
4
|
-
src: url('../fonts/
|
|
5
|
-
url('../fonts/
|
|
4
|
+
src: url('../fonts/icons1744018696.woff2') format('woff2'),
|
|
5
|
+
url('../fonts/icons1744018696.woff') format('woff');
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
.icon {
|
|
@@ -1,36 +1,48 @@
|
|
|
1
|
-
<link rel="stylesheet" href="
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
<link rel="stylesheet" href="
|
|
5
|
-
<link rel="stylesheet" href="
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
</
|
|
19
|
-
<div class="
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
<link rel="stylesheet" href="/plugins/openstreetmap/css/leaflet.css"/>
|
|
2
|
+
<link rel="stylesheet" href="/plugins/openstreetmap/css/MarkerCluster.css" />
|
|
3
|
+
<link rel="stylesheet" href="/plugins/openstreetmap/css/MarkerCluster.Default.css" />
|
|
4
|
+
<link rel="stylesheet" href="/plugins/openstreetmap/css/leaflet.awesome-markers.css" />
|
|
5
|
+
<link rel="stylesheet" href="/plugins/openstreetmap/css/font-awesome.min.css" />
|
|
6
|
+
|
|
7
|
+
<div class="customerMap">
|
|
8
|
+
<div class="customerMap__filter marginBottom">
|
|
9
|
+
<div class="row gridGap--small align-items-end">
|
|
10
|
+
<div class="col-12 col-sm-8 col-md-6 col-lg-4 marginBottom">
|
|
11
|
+
<div class="customerMapSearch">
|
|
12
|
+
<label for="zipSearch">{{tc.address}}</label>
|
|
13
|
+
<div class="inputGroup customerMapSearch__bar">
|
|
14
|
+
<input type="text" name="zipSearch" id="zipSearch" autocomplete="off" placeholder="{{tc.address}}">
|
|
15
|
+
</div>
|
|
16
|
+
<div id="zipSuggestions" class="customerMapSearch__suggestions"></div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="col-4 col-sm-4 col-md-3 col-lg-2 marginBottom">
|
|
20
|
+
<label for="radius">{{tc.radius}}</label>
|
|
21
|
+
<div class="inputGroup">
|
|
22
|
+
<input type="number" name="radius" id="radius" value="50">
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="col-8 col-sm marginBottom">
|
|
26
|
+
<button id="searchBtn" type="submit" class="button button--primary">{{tc.filter}}</button>
|
|
27
|
+
<button id="resetBtn" type="reset" class="button">{{tc.reset}}</button>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<label class="specialcheckbox" for="toggleShipping">
|
|
31
|
+
<input type="checkbox" name="toggleShipping" id="toggleShipping" aria-label="{{tc.show_shipping_addresses}}">
|
|
32
|
+
<i></i>
|
|
33
|
+
<span aria-hidden="true">{{tc.show_shipping_addresses}}</span>
|
|
34
|
+
</label>
|
|
27
35
|
</div>
|
|
28
|
-
<div class="
|
|
29
|
-
<
|
|
30
|
-
|
|
36
|
+
<div class="openStreetMap">
|
|
37
|
+
<div id="map" class="openStreetMap__target">
|
|
38
|
+
|
|
39
|
+
</div>
|
|
31
40
|
</div>
|
|
32
41
|
</div>
|
|
33
|
-
|
|
42
|
+
|
|
43
|
+
<script src="/plugins/openstreetmap/js/leaflet.js"></script>
|
|
44
|
+
<script src="/plugins/openstreetmap/js/leaflet.markercluster.js"></script>
|
|
45
|
+
<script src="/plugins/openstreetmap/js/leaflet.awesome-markers.js"></script>
|
|
34
46
|
|
|
35
47
|
<script>
|
|
36
48
|
const customStorageKey = '{{userid}}';
|
|
@@ -48,20 +60,133 @@
|
|
|
48
60
|
return R * c;
|
|
49
61
|
}
|
|
50
62
|
|
|
51
|
-
const nominatimURL = "https://nominatim.openstreetmap.org/search?format=json&
|
|
63
|
+
const nominatimURL = "https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&q=";
|
|
52
64
|
const plzCache = JSON.parse(localStorage.getItem("plzCache_" + customStorageKey)) || {};
|
|
53
65
|
|
|
54
66
|
let filterActive = false;
|
|
55
67
|
let currentCenter = null;
|
|
56
68
|
let currentRadius = 10;
|
|
57
69
|
let zipMarker = null;
|
|
70
|
+
let currentRequestController = null;
|
|
71
|
+
|
|
72
|
+
async function fetchZipSuggestions(query) {
|
|
73
|
+
if (currentRequestController) {
|
|
74
|
+
currentRequestController.abort();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
currentRequestController = new AbortController();
|
|
78
|
+
const { signal } = currentRequestController;
|
|
79
|
+
const zipSuggestions = document.getElementById("zipSuggestions");
|
|
80
|
+
const customerMapSearch = zipSuggestions.closest(".customerMapSearch");
|
|
81
|
+
customerMapSearch.classList.add("is-loading");
|
|
82
|
+
try {
|
|
83
|
+
let response = await fetch(nominatimURL + query, { signal });
|
|
84
|
+
if (!response.ok) throw new Error("Request failed");
|
|
85
|
+
return await response.json();
|
|
86
|
+
} catch (error) {
|
|
87
|
+
if (error.name !== "AbortError") {
|
|
88
|
+
console.error("Fehler beim Abrufen der PLZ-Daten", error);
|
|
89
|
+
}
|
|
90
|
+
return [];
|
|
91
|
+
} finally {
|
|
92
|
+
customerMapSearch.classList.remove("is-loading");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
58
95
|
|
|
59
96
|
document.addEventListener("DOMContentLoaded", function () {
|
|
97
|
+
|
|
60
98
|
const zipInput = document.getElementById("zipSearch");
|
|
99
|
+
const zipSuggestions = document.getElementById("zipSuggestions");
|
|
100
|
+
const zipCache = new Map();
|
|
101
|
+
let lastSelectedCoords = null;
|
|
61
102
|
const radiusInput = document.getElementById("radius");
|
|
62
103
|
const searchBtn = document.getElementById("searchBtn");
|
|
63
104
|
const resetBtn = document.getElementById("resetBtn");
|
|
64
105
|
const toggleShipping = document.getElementById("toggleShipping");
|
|
106
|
+
let debounceTimeout = null;
|
|
107
|
+
|
|
108
|
+
zipInput.addEventListener("input", function() {
|
|
109
|
+
let query = zipInput.value.trim();
|
|
110
|
+
if (query.length < 3) {
|
|
111
|
+
zipSuggestions.style.display = "none";
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
lastSelectedCoords = null;
|
|
116
|
+
|
|
117
|
+
if (zipCache.has(query)) {
|
|
118
|
+
showSuggestions(zipCache.get(query));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
clearTimeout(debounceTimeout);
|
|
123
|
+
debounceTimeout = setTimeout(async () => {
|
|
124
|
+
let data = await fetchZipSuggestions(query);
|
|
125
|
+
zipCache.set(query, data);
|
|
126
|
+
showSuggestions(data);
|
|
127
|
+
}, 300);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
function showSuggestions(data) {
|
|
131
|
+
zipSuggestions.innerHTML = "";
|
|
132
|
+
if (data.length === 0) {
|
|
133
|
+
zipSuggestions.style.display = "none";
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const zipSuggestionMarkup = `<div class="customerMapSearch__suggestion">%address%, %postcode% %city% %country%</div>`;
|
|
137
|
+
let count = 0;
|
|
138
|
+
for (let i = 0; i < data.length; i++) {
|
|
139
|
+
const entry = data[i];
|
|
140
|
+
const {
|
|
141
|
+
road = "",
|
|
142
|
+
house_number = "",
|
|
143
|
+
postcode = "",
|
|
144
|
+
town = "",
|
|
145
|
+
country_code = ""
|
|
146
|
+
} = entry.address;
|
|
147
|
+
|
|
148
|
+
const fullAddress = `${road}${house_number ? " " + house_number : ""}`;
|
|
149
|
+
|
|
150
|
+
const zipSuggestionMarkupReplace = zipSuggestionMarkup
|
|
151
|
+
.replace("%address%", fullAddress)
|
|
152
|
+
.replace("%postcode%", postcode)
|
|
153
|
+
.replace("%city%", town)
|
|
154
|
+
.replace("%country%", country_code.toUpperCase());
|
|
155
|
+
|
|
156
|
+
if(fullAddress === ""){
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const parser = new DOMParser();
|
|
161
|
+
const doc = parser.parseFromString(zipSuggestionMarkupReplace, 'text/html');
|
|
162
|
+
const item = doc.body.firstElementChild;
|
|
163
|
+
|
|
164
|
+
item.classList.add("customerMapSearch__suggestion");
|
|
165
|
+
item.dataset.lat = entry.lat;
|
|
166
|
+
item.dataset.lon = entry.lon;
|
|
167
|
+
item.addEventListener("click", function() {
|
|
168
|
+
zipInput.value = item.innerText;
|
|
169
|
+
let center = { lat: entry.lat, lon: entry.lon };
|
|
170
|
+
applyFilter(center);
|
|
171
|
+
lastSelectedCoords = { lat: entry.lat, lon: entry.lon };
|
|
172
|
+
let storageZip = JSON.stringify({ postcode, lat: entry.lat, lon: entry.lon });
|
|
173
|
+
localStorage.setItem("zip_" + customStorageKey, storageZip);
|
|
174
|
+
zipSuggestions.style.display = "none";
|
|
175
|
+
});
|
|
176
|
+
zipSuggestions.appendChild(item);
|
|
177
|
+
count++;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if(count > 0){
|
|
181
|
+
zipSuggestions.style.display = "block";
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
document.addEventListener("click", function(event) {
|
|
186
|
+
if (!zipInput.contains(event.target) && !zipSuggestions.contains(event.target)) {
|
|
187
|
+
zipSuggestions.style.display = "none";
|
|
188
|
+
}
|
|
189
|
+
});
|
|
65
190
|
|
|
66
191
|
zipInput.addEventListener("keypress", function(event) {
|
|
67
192
|
if (event.key === "Enter") {
|
|
@@ -85,23 +210,29 @@
|
|
|
85
210
|
});
|
|
86
211
|
|
|
87
212
|
const map = L.map('map');
|
|
88
|
-
|
|
89
|
-
|
|
213
|
+
|
|
214
|
+
map.zoomControl.remove();
|
|
215
|
+
L.control.zoom({
|
|
216
|
+
position: 'topleft'
|
|
90
217
|
}).addTo(map);
|
|
91
218
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const centerIcon = L.AwesomeMarkers.icon({ icon: 'map-marker', markerColor: 'green', prefix: 'fa' });
|
|
95
|
-
//Beispiel für custom Marker
|
|
96
|
-
/*
|
|
97
|
-
let customMarker = L.divIcon({
|
|
98
|
-
className: 'custom-marker',
|
|
99
|
-
html: '<div class="marker-circle">1</div>',
|
|
100
|
-
iconSize: [30, 30],
|
|
101
|
-
iconAnchor: [15, 15]
|
|
219
|
+
document.querySelectorAll(".leaflet-control-zoom a").forEach(button => {
|
|
220
|
+
button.removeAttribute("href");
|
|
102
221
|
});
|
|
103
|
-
|
|
104
|
-
|
|
222
|
+
|
|
223
|
+
//light styling
|
|
224
|
+
L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
|
|
225
|
+
attribution: '© OpenStreetMap contributors'
|
|
226
|
+
}).addTo(map);
|
|
227
|
+
|
|
228
|
+
//base styling
|
|
229
|
+
/*L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
230
|
+
attribution: '© OpenStreetMap contributors'
|
|
231
|
+
}).addTo(map);*/
|
|
232
|
+
|
|
233
|
+
const shippingIcon = L.AwesomeMarkers.icon({ icon: 'truck', markerColor: 'gray', prefix: 'fa' });
|
|
234
|
+
const invoiceIcon = L.AwesomeMarkers.icon({ icon: 'user', markerColor: 'black', prefix: 'fa' });
|
|
235
|
+
const centerIcon = L.AwesomeMarkers.icon({ icon: 'map-marker', markerColor: 'lightgray', prefix: 'fa' });
|
|
105
236
|
|
|
106
237
|
let markersClusterInvoice = L.markerClusterGroup();
|
|
107
238
|
let markersClusterShipping = L.markerClusterGroup();
|
|
@@ -116,27 +247,24 @@
|
|
|
116
247
|
}
|
|
117
248
|
|
|
118
249
|
pins.forEach(pin => {
|
|
119
|
-
if (!pin.show)
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
if (!toggleShipping.checked && pin.isShippingAddress === 1) return;
|
|
250
|
+
if (!pin.show || (!toggleShipping.checked && pin.isShippingAddress === 1)) return;
|
|
123
251
|
|
|
124
252
|
let distanceText = '';
|
|
125
253
|
if (filterActive) {
|
|
126
254
|
const distance = getDistance(currentCenter.lat, currentCenter.lon, pin.latitude, pin.longitude);
|
|
127
255
|
if (distance > currentRadius) return;
|
|
128
|
-
distanceText =
|
|
256
|
+
distanceText = '' //` (${distance.toFixed(1)} km)`;
|
|
129
257
|
}
|
|
130
258
|
|
|
131
259
|
let marker = L.marker([pin.latitude, pin.longitude], { icon: pin.isShippingAddress ? shippingIcon : invoiceIcon });
|
|
132
|
-
let address = pin.address
|
|
133
|
-
let formStart =
|
|
260
|
+
let address = `${pin.address}, ${pin.post_code} ${pin.city}, ${pin.country}`;
|
|
261
|
+
let formStart = `<form id="customer_select" name="customer_select" method="post" action=""><input type="hidden" name="select_customer" value="select_customer"><input type="hidden" name="customer_select" value="${pin.customer_no}">`;
|
|
134
262
|
let formEnd = '</form>';
|
|
135
|
-
let balance = '{{tc.current_balance}}:
|
|
136
|
-
let balanceDue = '{{tc.current_balance_due}}:
|
|
137
|
-
let creditLimit = '{{tc.current_credit_limit}}:
|
|
263
|
+
let balance = '' //`{{tc.current_balance}}: ${pin.balance}`;
|
|
264
|
+
let balanceDue = '' //`{{tc.current_balance_due}}: ${pin.balance_due}`;
|
|
265
|
+
let creditLimit = '' //`{{tc.current_credit_limit}}: ${pin.credit_limit}`;
|
|
138
266
|
|
|
139
|
-
marker.bindPopup(
|
|
267
|
+
marker.bindPopup(`<div style="font-size: 11px; line-height: 0;">${formStart}<p onclick="this.closest('form').submit();" style="text-decoration: underline; cursor: pointer;">${pin.customer_no}</p>${formEnd}<p>${pin.name}</p><p>${address}</p><p>${balance}</p><p>${balanceDue}</p><p>${creditLimit}</p><p>${distanceText}</p></div>`);
|
|
140
268
|
pin.isShippingAddress ? markersClusterShipping.addLayer(marker) : markersClusterInvoice.addLayer(marker);
|
|
141
269
|
});
|
|
142
270
|
|
|
@@ -150,7 +278,7 @@
|
|
|
150
278
|
}
|
|
151
279
|
|
|
152
280
|
if (bounds.isValid()) {
|
|
153
|
-
map.fitBounds(bounds, { padding: [
|
|
281
|
+
map.fitBounds(bounds, { padding: [30, 30] });
|
|
154
282
|
} else {
|
|
155
283
|
map.setView([51.1657, 10.4515], 6);
|
|
156
284
|
}
|
|
@@ -163,33 +291,41 @@
|
|
|
163
291
|
const zip = zipInput.value.trim();
|
|
164
292
|
currentRadius = parseFloat(radiusInput.value);
|
|
165
293
|
|
|
166
|
-
localStorage.setItem("zip_" + customStorageKey, zip);
|
|
167
294
|
localStorage.setItem("radius_" + customStorageKey, currentRadius);
|
|
168
295
|
|
|
169
|
-
if (
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
applyFilter(plzCache[zip]);
|
|
296
|
+
if (lastSelectedCoords && lastSelectedCoords.lat && lastSelectedCoords.lon) {
|
|
297
|
+
if (!zip) {
|
|
298
|
+
resetFilter();
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
applyFilter(lastSelectedCoords);
|
|
176
302
|
} else {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
303
|
+
let storageZip = JSON.stringify({ zip });
|
|
304
|
+
localStorage.setItem("zip_" + customStorageKey, storageZip);
|
|
305
|
+
|
|
306
|
+
if (!zip) {
|
|
307
|
+
resetFilter();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (plzCache[zip]) {
|
|
312
|
+
applyFilter(plzCache[zip]);
|
|
313
|
+
} else {
|
|
314
|
+
fetch(nominatimURL + zip)
|
|
315
|
+
.then(response => response.json())
|
|
316
|
+
.then(data => {
|
|
317
|
+
if (data.length === 0) return;
|
|
318
|
+
|
|
319
|
+
const center = { lat: parseFloat(data[0].lat), lon: parseFloat(data[0].lon) };
|
|
320
|
+
plzCache[zip] = center;
|
|
321
|
+
localStorage.setItem("plzCache_" + customStorageKey, JSON.stringify(plzCache));
|
|
322
|
+
|
|
323
|
+
applyFilter(center);
|
|
324
|
+
})
|
|
325
|
+
.catch(error => {
|
|
326
|
+
console.error("Fehler beim Abrufen der Koordinaten:", error);
|
|
327
|
+
});
|
|
328
|
+
}
|
|
193
329
|
}
|
|
194
330
|
}
|
|
195
331
|
|
|
@@ -205,13 +341,21 @@
|
|
|
205
341
|
radiusInput.value = 50;
|
|
206
342
|
localStorage.removeItem("zip_" + customStorageKey);
|
|
207
343
|
localStorage.removeItem("radius_" + customStorageKey);
|
|
344
|
+
lastSelectedCoords = null;
|
|
208
345
|
updateMap();
|
|
209
346
|
}
|
|
210
347
|
|
|
211
348
|
searchBtn.addEventListener("click", filterByRadius);
|
|
212
349
|
resetBtn.addEventListener("click", resetFilter);
|
|
213
350
|
|
|
214
|
-
|
|
351
|
+
let storageZip = localStorage.getItem("zip_" + customStorageKey);
|
|
352
|
+
if (storageZip) {
|
|
353
|
+
storageZip = JSON.parse(storageZip);
|
|
354
|
+
zipInput.value = storageZip.zip;
|
|
355
|
+
lastSelectedCoords = { lat: storageZip.lat, lon: storageZip.lon };
|
|
356
|
+
} else {
|
|
357
|
+
zipInput.value = "";
|
|
358
|
+
}
|
|
215
359
|
radiusInput.value = localStorage.getItem("radius_" + customStorageKey) ?? 50;
|
|
216
360
|
|
|
217
361
|
filterByRadius();
|
|
@@ -364,7 +364,7 @@ table {
|
|
|
364
364
|
@font-face {
|
|
365
365
|
font-family: "icons";
|
|
366
366
|
font-display: swap;
|
|
367
|
-
src: url("../fonts/
|
|
367
|
+
src: url("../fonts/icons1744018702.woff2") format("woff2"), url("../fonts/icons1744018702.woff") format("woff");
|
|
368
368
|
}
|
|
369
369
|
.icon {
|
|
370
370
|
font-family: "icons";
|