Android Radio Konfigurator: Unterschied zwischen den Versionen
Aus Wiki rund um Android-Navis für BMW E38/E39/E46/E53
Andre (Diskussion | Beiträge) |
Andre (Diskussion | Beiträge) |
||
| Zeile 37: | Zeile 37: | ||
<div class="nvk-f"><label for="nvk-name">Name *</label><input id="nvk-name" type="text" autocomplete="name"></div> | <div class="nvk-f"><label for="nvk-name">Name *</label><input id="nvk-name" type="text" autocomplete="name"></div> | ||
<div class="nvk-f"><label for="nvk-mail">E-Mail *</label><input id="nvk-mail" type="email" autocomplete="email"></div> | <div class="nvk-f"><label for="nvk-mail">E-Mail *</label><input id="nvk-mail" type="email" autocomplete="email"></div> | ||
<div class="nvk-f"><label for="nvk-vin">VIN (optional)</label><input id="nvk-vin" type="text" maxlength="17"></div> | <div class="nvk-f"><label for="nvk-vin">VIN oder FGN (optional)</label><input id="nvk-vin" type="text" maxlength="17" placeholder="AB12345 oder 17-stellige FGN"></div> | ||
</div> | </div> | ||
<div class="nvk-f"><label for="nvk-msg">Kommentar *</label><textarea id="nvk-msg" rows="4"></textarea></div> | <div class="nvk-f"><label for="nvk-msg">Kommentar *</label><textarea id="nvk-msg" rows="4"></textarea></div> | ||
| Zeile 48: | Zeile 48: | ||
<noscript>Für den Konfigurator wird JavaScript benötigt.</noscript> | <noscript>Für den Konfigurator wird JavaScript benötigt.</noscript> | ||
<script> | <script> | ||
(function () { | (function () { | ||
"use strict"; | "use strict"; | ||
| Zeile 80: | Zeile 79: | ||
var MAIL_TO = "info@ibus-app.de"; | var MAIL_TO = "info@ibus-app.de"; | ||
var MAIL_SUBJECT = "Anfrage aus Android Radio Konfigurator"; | var MAIL_SUBJECT = "Anfrage aus Android Radio Konfigurator"; | ||
var SEND_URL = ""; | var SEND_URL = "https://xtrons.ibus-app.de/send-anfrage.php"; | ||
/* ---- 1) Baureihen -------------------------------------------------------- | /* ---- 1) Baureihen -------------------------------------------------------- | ||
v = Shop-Kategorie (Link: SHOP + bmw-radios/ + v + /) | v = Shop-Kategorie (Link: SHOP + bmw-radios/ + v + /) | ||
| Zeile 111: | Zeile 110: | ||
{ v: "x5-f15", t: "X5 F15", gen: "c", body: "suv" }, | { v: "x5-f15", t: "X5 F15", gen: "c", body: "suv" }, | ||
{ v: "x6-e71", t: "X6 E71", gen: "b", body: "suv" }, | { v: "x6-e71", t: "X6 E71", gen: "b", body: "suv" }, | ||
{ v: "z4-e85e86", t: "Z4 E85/E86", gen: "b", body: "roadster,coupe" } | { v: "z4-e85e86", t: "Z4 E85/E86", gen: "b", body: "roadster,coupe" }, | ||
{ v: "z4-e89", t: "Z4 E89", gen: "c", body: "roadster", noCat: true } | |||
]; | ]; | ||
/* Fahrzeuge mit K-CAN App (Beta) */ | |||
var KCAN = ["1er-e8x", "3er-e9x", "5er-e6x", "6er-e6x", "7er-e65", "x1-e84", "x5-e70", "x6-e71", "z4-e89"]; | |||
var bodyValues = Object.keys(BODY).map(function (k) { | var bodyValues = Object.keys(BODY).map(function (k) { | ||
return { v: k, t: BODY[k], only: { vehicle: VEHICLES.filter(function (x) { return x.body.split(",").indexOf(k) !== -1; }).map(function (x) { return x.v; }) } }; | return { v: k, t: BODY[k], only: { vehicle: VEHICLES.filter(function (x) { return x.body.split(",").indexOf(k) !== -1; }).map(function (x) { return x.v; }) } }; | ||
| Zeile 165: | Zeile 167: | ||
{ id: "ibus", t: "I-BUS App", show: { gen: ["alt"] }, items: ["ibus", "resler", "bclic"] }, | { id: "ibus", t: "I-BUS App", show: { gen: ["alt"] }, items: ["ibus", "resler", "bclic"] }, | ||
{ id: "deepobd", t: "DeepOBD (Diagnose)", items: ["deepobd"] }, | { id: "deepobd", t: "DeepOBD (Diagnose)", items: ["deepobd"] }, | ||
{ id: "can", t: "CAN Interface", sub: "Addon - nur mit I-BUS App", requires: ["ibus"], items: ["can"] }, | { id: "can", t: "CAN Interface", sub: "Addon - nur mit I-BUS App", show: { gen: ["alt"] }, requires: ["ibus"], items: ["can"] }, | ||
{ id: "kcan", t: "K-CAN App (Beta)", sub: "Pendant zur I-BUS App", show: { vehicle: KCAN }, items: ["kcan", "kcanlic", "can"] }, | |||
{ id: "tpms", t: "TPMS (Reifendruck)", items: ["tpms"] }, | { id: "tpms", t: "TPMS (Reifendruck)", items: ["tpms"] }, | ||
{ id: "dab1", t: "DAB+ (Single Receiver)", excl: "dab", items: ["dab1"] }, | { id: "dab1", t: "DAB+ (Single Receiver)", excl: "dab", items: ["dab1"] }, | ||
| Zeile 201: | Zeile 204: | ||
u: SHOP + "i-bus-app/zubehoer/interfaces-module/258/deep-obd-obd-ii-bluetooth-adapter?c=54", | u: SHOP + "i-bus-app/zubehoer/interfaces-module/258/deep-obd-obd-ii-bluetooth-adapter?c=54", | ||
w: "https://xtrons.ibus-app.de/index.php?title=DeepOBD_-_Adapter_und_App_einrichten", wt: "Wiki: DeepOBD einrichten" }, | w: "https://xtrons.ibus-app.de/index.php?title=DeepOBD_-_Adapter_und_App_einrichten", wt: "Wiki: DeepOBD einrichten" }, | ||
can: { t: "CAN-Bus Interface inkl. Anschlusskabel", d: "Addon, funktioniert nur zusammen mit der I-BUS App.", | can: { t: "CAN-Bus Interface inkl. Anschlusskabel", d: "Addon, funktioniert nur zusammen mit der I-BUS App bzw. der K-CAN App.", | ||
u: SHOP + "i-bus-app/zubehoer/interfaces-module/346/can-bus-interface-inkl.-anschlusskabel", | u: SHOP + "i-bus-app/zubehoer/interfaces-module/346/can-bus-interface-inkl.-anschlusskabel", | ||
w: WIKI + "Einbauanleitung_CAN-Bus_Interface", wt: "Einbauanleitung CAN-Bus Interface" }, | w: WIKI + "Einbauanleitung_CAN-Bus_Interface", wt: "Einbauanleitung CAN-Bus Interface" }, | ||
kcan: { t: "K-CAN App (Beta)", d: "Pendant zur I-BUS App für Fahrzeuge mit K-CAN, aktuell als Betaversion.", | |||
w: "https://wiki.kcan-app.de/", wt: "Wiki zur K-CAN App" }, | |||
kcanlic: { t: "K-CAN App - Lizenz Betaversion", d: "Beta-Lizenz für die K-CAN App.", | |||
u: SHOP + "i-bus-app/lizenzen/358/k-can-app-lizenz-betaversion" }, | |||
tpms: { t: "TPMS - Reifendruckkontrolle", d: "", u: SHOP + "radiozubehoer/tpms/" }, | tpms: { t: "TPMS - Reifendruckkontrolle", d: "", u: SHOP + "radiozubehoer/tpms/" }, | ||
dab1: { t: "DAB+ Empfänger inkl. Antenne (Single)", d: "", u: SHOP + "radiozubehoer/dab/291/dab-empfaenger-inkl.-antenne-usbdab04" }, | dab1: { t: "DAB+ Empfänger inkl. Antenne (Single)", d: "", u: SHOP + "radiozubehoer/dab/291/dab-empfaenger-inkl.-antenne-usbdab04" }, | ||
| Zeile 247: | Zeile 254: | ||
{ type: "hint", when: { factory: ["mask", "ccc", "cic", "nbt", "nbtevo"] }, | { type: "hint", when: { factory: ["mask", "ccc", "cic", "nbt", "nbtevo"] }, | ||
html: "[b]Originales Radiomodul bleibt erhalten:[/b] Bei M-ASK, CCC, CIC, NBT und NBT EVO bleibt das originale Radiomodul im Fahrzeug und muss funktionieren! Ersetzt wird nur der Bildschirm." }, | html: "[b]Originales Radiomodul bleibt erhalten:[/b] Bei M-ASK, CCC, CIC, NBT und NBT EVO bleibt das originale Radiomodul im Fahrzeug und muss funktionieren! Ersetzt wird nur der Bildschirm." }, | ||
{ type: "hint", opts: ["kcan"], when: {}, | |||
html: "[b]K-CAN App (Beta):[/b] Zur App benötigst Du das CAN-Bus Interface und die Beta-Lizenz. Einbauerklärung: [a=https://wiki.kcan-app.de/index.php?title=Hauptseite#Wo_wird_das_CAN_BUS_Interface_angeschlossen?]Wo wird das CAN-Bus Interface angeschlossen?[/a] Weitere Infos im [a=https://wiki.kcan-app.de/]Wiki zur K-CAN App[/a]." }, | |||
{ type: "hint", opts: ["ibus"], when: {}, | { type: "hint", opts: ["ibus"], when: {}, | ||
html: "[b]I-BUS App:[/b] Siehe [a=https://wiki.ibus-app.de/index.php?title=Was_brauche_ich_um_die_I-BUS_App_nutzen_zu_k%C3%B6nnen%3F]Was brauche ich, um die I-BUS App nutzen zu können?[/a] und die [a=https://wiki.ibus-app.de/index.php?title=Hauptseite#Einbauanleitung_f.C3.BCr_Resler_Modul_und_Resler_Interface]Einbauanleitung für Resler Modul und Interface[/a]." }, | html: "[b]I-BUS App:[/b] Siehe [a=https://wiki.ibus-app.de/index.php?title=Was_brauche_ich_um_die_I-BUS_App_nutzen_zu_k%C3%B6nnen%3F]Was brauche ich, um die I-BUS App nutzen zu können?[/a] und die [a=https://wiki.ibus-app.de/index.php?title=Hauptseite#Einbauanleitung_f.C3.BCr_Resler_Modul_und_Resler_Interface]Einbauanleitung für Resler Modul und Interface[/a]." }, | ||
| Zeile 420: | Zeile 429: | ||
} | } | ||
var veh = vehicleOf(sel.vehicle); | var veh = vehicleOf(sel.vehicle); | ||
var ru = veh.noCat ? SHOP + "bmw-radios/" : SHOP + "bmw-radios/" + veh.v + "/"; | |||
heading("Passende Radios"); | heading("Passende Radios"); | ||
outEl.appendChild(card({ t: "BMW Radios für " + veh.t, d: "Alle Radios, die für Deinen BMW " + veh.t + " im Shop erhältlich sind.", | outEl.appendChild(card({ t: "BMW Radios für " + veh.t, d: "Alle Radios, die für Deinen BMW " + veh.t + " im Shop erhältlich sind.", | ||
u: | u: ru, ut: "Zu den passenden Radios →", w: SHOP + "bmw-radios/", wt: "Alle BMW Radios" }, "rad")); | ||
var L = ["KONFIGURATION"]; | var L = ["KONFIGURATION"]; | ||
FIELDS.forEach(function (f) { | FIELDS.forEach(function (f) { | ||
| Zeile 432: | Zeile 442: | ||
needs.forEach(function (i) { L.push("- " + i.t + (i.u ? " " + i.u : "")); }); | needs.forEach(function (i) { L.push("- " + i.t + (i.u ? " " + i.u : "")); }); | ||
if (opt.length) { L.push("", "ZUSATZOPTIONEN"); opt.forEach(function (i) { L.push("- " + i.t + (i.u ? " " + i.u : "")); }); } | if (opt.length) { L.push("", "ZUSATZOPTIONEN"); opt.forEach(function (i) { L.push("- " + i.t + (i.u ? " " + i.u : "")); }); } | ||
L.push("", "Radios: " + | L.push("", "Radios: " + ru); | ||
summary = L.join("\n"); | summary = L.join("\n"); | ||
} | } | ||
| Zeile 442: | Zeile 452: | ||
function status(msg, ok) { var e = $("nvk-status"); e.style.display = ""; e.textContent = msg; e.style.borderLeftColor = ok ? "#14866d" : "#d33"; } | function status(msg, ok) { var e = $("nvk-status"); e.style.display = ""; e.textContent = msg; e.style.borderLeftColor = ok ? "#14866d" : "#d33"; } | ||
$("nvk-send").addEventListener("click", function () { | $("nvk-send").addEventListener("click", function () { | ||
var name = $("nvk-name").value.trim(), mail = $("nvk-mail").value.trim(), vin = $("nvk-vin").value.trim(), msg = $("nvk-msg").value.trim(); | var name = $("nvk-name").value.trim(), mail = $("nvk-mail").value.trim(), vin = $("nvk-vin").value.trim().toUpperCase(), msg = $("nvk-msg").value.trim(); | ||
if (!name || !mail || !msg) return status("Bitte Name, E-Mail und Kommentar ausfüllen.", false); | if (!name || !mail || !msg) return status("Bitte Name, E-Mail und Kommentar ausfüllen.", false); | ||
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail)) return status("Bitte eine gültige E-Mail-Adresse eingeben.", false); | if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail)) return status("Bitte eine gültige E-Mail-Adresse eingeben.", false); | ||
if (vin) { if (!/^[A-HJ-NPR- | if (vin) { if (!/^[A-Z]{2}[0-9]{5}$/.test(vin)) { if (!/^[A-HJ-NPR-Z0-9]{17}$/.test(vin)) return status("Bitte die VIN im Format AB12345 oder die 17-stellige FGN eingeben - oder das Feld leer lassen.", false); } } | ||
if (parseInt($("nvk-cap").value, 10) !== capA + capB) return status("Die Sicherheitsfrage wurde nicht richtig beantwortet.", false); | if (parseInt($("nvk-cap").value, 10) !== capA + capB) return status("Die Sicherheitsfrage wurde nicht richtig beantwortet.", false); | ||
if (!$("nvk-dsgvo").checked) return status("Bitte der Verarbeitung Deiner Daten zustimmen.", false); | if (!$("nvk-dsgvo").checked) return status("Bitte der Verarbeitung Deiner Daten zustimmen.", false); | ||
| Zeile 470: | Zeile 480: | ||
</script> | </script> | ||
</div> | </div> | ||
</html> | </html> | ||