Android Radio Konfigurator: Unterschied zwischen den Versionen

Aus Wiki rund um Android-Navis für BMW E38/E39/E46/E53
Wechseln zu: Navigation, Suche
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>
var SEND_URL = "https://xtrons.ibus-app.de/send-anfrage.php";
(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: SHOP + "bmw-radios/" + veh.v + "/", ut: "Zu den passenden Radios →", w: SHOP + "bmw-radios/", wt: "Alle BMW Radios" }, "rad"));
     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: " + SHOP + "bmw-radios/" + veh.v + "/");
   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-Za-hj-npr-z0-9]{17}$/.test(vin)) return status("Die VIN muss 17 Zeichen haben (ohne I, O, Q) - oder das Feld leer lassen.", false); }
   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>

Version vom 21. Oktober 2026, 13:58 Uhr

Zusatzoptionen