//=require ../node_modules/dexie/dist/dexie.js class AutomaticDispose { // Variablen get ADisSettings() { return { url: "https://jf.git.rest/Jomaar/automatic-dispose/raw/branch/", branch: "master", all_missions: /***ADis_AllMissions***/ 0, name: this.name, runner: ['kt', 'om', 'os', 'vm', 've'], runner_divs: ['mission_list_krankentransporte', 'mission_list', 'mission_list_sicherheitswache', 'mission_list_alliance', 'mission_list_alliance_event'], runner_settings: ['Krankentransport-Automatic', 'MissionsOwn-Automatic', 'MissionsOwn-Automatic', 'Alliance-Automatic', 'AllianceEvent-Automatic'], runner_iframesName: ['adis-krankentransporte', 'adis-ownmissions', 'adis-plannedevents', 'adis-verbandmission', 'adis-verbandmission-event'], runner_iframes: ['adis-krankentransporte-frame', 'adis-ownmissions-frame', 'adis-plannedevents-frame', 'adis-verbandmission-frame', 'adis-verbandmission-event-frame'] } } constructor() { let self = this; self.MissionType = null self.MissionID = null self.MyRunner = null self.MyRunnerSettings = null self._ADisVehiclesNeed = {} self.MissionConfig = {} self.Vehicles = {} self.Patients = {} this.ADis_MyHead = document.getElementsByTagName('head')[0]; this.ADis_MyBody = document.getElementsByTagName('body')[0]; // - // - Sprechwunsch Variablen // - this.Jails = []; this.JailRegEx = /\(Freie Zellen\:\s+(\d)\,\s+Entfernung\:\s+(\d+\,\d+)\s+km(?:\,\s+Abgabe an Besitzer\:\s+(\d+)%)?\)/g; this.Hospitals = []; this.RescueVehicleFrameWatchDog = null; this.PoliceVehicleFrameWatchDog = null; this.ADisDB = new Dexie('LSS_AutomaticDispo'); this.ADisDB.version(1).stores({ /** * AvailabelMissions * - missionID * - type * - name * - jsondata */ ADisAvailabelMissions: "++missionID,type,name", /** * Sprechwunsch * - vehicleID * - done */ ADisSprechwunsch: "++vehicleID,done", /** * Sprechwunsch Police * - missionID * - done */ ADisSprechwunschPolice: "++missionID,last_check,next_check,done", /** * Settings * - id * - name * - done */ ADisSettings: "&name,value", /** * MissionsOwn * MissionsVerband * MissionsVerbandEvent * - missionID * - type * - name * - available * - done * - street * - village * - last_check * - next_check * - runner - type (kt = krankentransport, om = own missions, os = sicherheitswache, vm = verband missions, ve = verband events) */ ADisMissions: "++missionID,runner,available,done,[missionID+available+done],[missionID+runner],[runner+available+done]" }); this.ADisDB.on("populate", () => { self.ADisDB.ADisSettings.add({ name: "Krankentransport-Automatic", value: 'true' }); self.ADisDB.ADisSettings.add({ name: "Sprechwunsch-Automatic", value: 'true' }); self.ADisDB.ADisSettings.add({ name: "MissionsOwn-Automatic", value: 'true' }); self.ADisDB.ADisSettings.add({ name: "Alliance-Automatic", value: 'false' }); self.ADisDB.ADisSettings.add({ name: "AllianceEvent-Automatic", value: 'false' }); }); this.ADisDB.open().catch((err) => { console.error(err.stack || err); }); this.ADisDB.on("ready", async () => { self.adis_settings = { 'Krankentransport-Automatic': false, 'Sprechwunsch-Automatic': false, 'MissionsOwn-Automatic': false, 'Alliance-Automatic': false, 'AllianceEvent-Automatic': false } await self.genSettings() setInterval(self.genSettings.bind(self), 1000); if (window.location.pathname === "/" || window.location.pathname === "/#") { self.GetAvailableMissions() self.IndexPage() setInterval(self.CollectRescueSprechwuensche.bind(self), 2500); setInterval(self.OpenNextRescueSprechwunsch.bind(self), 5000); self.CollectRescueSprechwuensche(); setInterval(self.CollectPoliceSprechwuensche.bind(self), 2500); setInterval(self.OpenNextPoliceSprechwunsch.bind(self), 5000); setTimeout(() => { self.CollectPoliceSprechwuensche(); self.CollectMissions(); self.ReadAndAddMissions(); }, 500); self.ADisSettings.runner.forEach((runner) => { self.OpenNextMission(runner) }) } /** * / /=require ../script/mission.js */ // - // - Sprechwunsch Handler Rettung // - if (window.location.pathname.indexOf("/vehicles/") !== -1 && window.name == 'adis-sprechwunsch-rescue') { self.Check_Call_Hospitals(); } // - // - Sprechwunsch Handler Polizei/Gefangene // - if (window.location.pathname.indexOf("/missions/") !== -1 && window.name == 'adis-sprechwunsch-police') { self.Check_Call_Police_Active(); } else { self.StartMission(); } }); } includesString(string1, string2) { return string1.toLowerCase().includes(string2.toLowerCase()); } genSettings() { let self = this; self.ADisDB.ADisSettings.each((setting) => { self.adis_settings[setting.name] = setting.value; }); self.UIUpdateSettings(); } ADSettings() { let self = this; return new Promise(async (resolve, reject) => { return resolve(self.adis_settings); }) } get WindowName() { return window.name } // - // - Sprechwunsch Queue // - RemovePoliceSprechwunschFromQueue(WunschID) { return this.ADisDB.ADisSprechwunschPolice.where({ missionID: WunschID }).delete(); } RemoveRescueSprechwunschFromQueue(WunschID) { return this.ADisDB.ADisSprechwunsch.where({ vehicleID: WunschID }).delete(); } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Assign & Unassign Missions to Dispatchers // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CollectRescueSprechwuensche() { let self = this; new Promise(async (resolve, reject) => { await self.ADisDB.ADisSprechwunsch.where({ done: 'false' }).each((myWunsch) => { if ($("#vehicle_list_" + myWunsch.vehicleID).find(".building_list_fms").text() != "5") { self.RemoveRescueSprechwunschFromQueue(myWunsch.vehicleID); } }) return resolve(); }).then(() => { $("#building_list").find(".building_list_vehicle_element").each((_, elem) => { var VehicleStatus = $(elem).find(".building_list_fms").text(); var VehicleType = Number(parseInt($(elem).find("a").attr("vehicle_type_id"))); var VehicleID = $(elem).attr("vehicle_id"); if (VehicleStatus == "5" && [32, 52].indexOf(VehicleType) === -1) { self.AddRescueSprechwunschToQueue(VehicleID); } }); }); } OpenNextRescueSprechwunsch() { let self = this; this.ADSettings().then((setting) => { if (setting['Sprechwunsch-Automatic'] == 'true') { return self.ADisDB.ADisSprechwunsch.where({ done: 'false' }).limit(1) } }).then((Wunsch) => { if (Wunsch !== undefined) { Wunsch.each((myWunsch) => { let VehicleID = myWunsch.vehicleID; self.UpdateRescueSprechwunschToDone(VehicleID).then(() => { if ($("#adis-sprechwunsch-rescue-frame").attr("vehicle_id") == "empty") { $("#adis-sprechwunsch-rescue-frame").attr("src", "https://www.leitstellenspiel.de/vehicles/" + VehicleID); $("#adis-sprechwunsch-rescue-frame").attr("vehicle_id", VehicleID); self.RescueVehicleFrameWatchDog = setTimeout(async () => { self.RemoveRescueSprechwunschFromQueue(VehicleID).then((deleteCount) => { $("#adis-sprechwunsch-rescue-frame").attr("src", ""); $("#adis-sprechwunsch-rescue-frame").attr("vehicle_id", "empty"); }); }, 1500); } }); }); } }); } AddRescueSprechwunschToQueue(WunschID) { return this.ADisDB.ADisSprechwunsch.put({ vehicleID: WunschID, done: 'false' }).catch((err) => {}) } UpdateRescueSprechwunschToDone(WunschID) { return this.ADisDB.ADisSprechwunsch.put({ vehicleID: WunschID, done: 'true' }).catch((err) => {}) } Check_Call_Hospitals() { if ($("h4:contains('Eigene Krankenhäuser')").length > 0 || $("h4:contains('Verbandskrankenhäuser')").length > 0) { this.Collect_Hospitals(); } else { let VehicleID = document.location.pathname.substr(document.location.pathname.lastIndexOf("/") + 1); this.RemoveRescueSprechwunschFromQueue(VehicleID).then((deleteCount) => { $("#adis-sprechwunsch-rescue-frame").attr("src", ""); $("#adis-sprechwunsch-rescue-frame").attr("vehicle_id", "empty"); }); } } // Krankenhaus auswählen Collect_Hospitals() { let self = this; self.Hospitals = []; if ($("h4:contains('Eigene Krankenhäuser')").length > 0) { $("h4:contains('Eigene Krankenhäuser')").next("table").find("tbody").find("tr").each((_, elem) => { var HospitalHref = $(elem).find("a:contains('Anfahren')").attr("href"); var HospitalID = Number(parseInt($(elem).find("a:contains('Anfahren')").attr("id").replace("btn_approach_", ""))); var HospitalDistance = parseInt($(elem).find("td").eq("1").text()); var HospitalFreeBeds = parseInt($(elem).find("td").eq("2").text()); var HospitalValue = HospitalDistance * 450 * -1; HospitalValue += 2000; // Own Hospitals are better :-) if ($(elem).find(".label:contains('Ja')").length > 0) { HospitalValue += 2000; } if (HospitalFreeBeds > 0) { self.Hospitals.push({ "id": HospitalID, "value": HospitalValue, "distance": HospitalDistance, "href": HospitalHref }); } }); } if ($("h4:contains('Verbandskrankenhäuser')").length > 0) { $("h4:contains('Verbandskrankenhäuser')").next("table").find("tbody").find("tr").each((_, elem) => { var HospitalHref = $(elem).find("a").attr("href") var HospitalID = Number(parseInt(HospitalHref.substr(HospitalHref.lastIndexOf("/") + 1))); var HospitalDistance = parseInt($(elem).find("td").eq("1").text()); var HospitalFreeBeds = parseInt($(elem).find("td").eq("2").text()); var HospitalTaxes = parseInt($(elem).find("td").eq("3").text()); var HospitalSpecialDepartment = false; // Add Button-ID to Alliance-Hospital $(elem).find("a").attr("id", "btn_approach_" + HospitalID.toString()); var HospitalValue = HospitalDistance * 450 * -1; if ($(elem).find(".label:contains('Ja')").length > 0) { HospitalSpecialDepartment = true; HospitalValue += 2000; } if (HospitalTaxes == 0) { HospitalValue += 2000; } else if (HospitalTaxes > 0 && HospitalTaxes <= 10) { HospitalValue += 1000; } else if (HospitalTaxes > 10 && HospitalTaxes <= 20) { HospitalValue += 0; } else { HospitalValue -= 5000; } if (HospitalFreeBeds > 0 && HospitalSpecialDepartment) { self.Hospitals.push({ "id": HospitalID, "value": HospitalValue, "taxes": HospitalTaxes, "distance": HospitalDistance, "href": HospitalHref }); } }); } self.Hospitals.sort((a, b) => { return a.value - b.value; }); self.Hospitals.reverse(); this.Send_Vehicle_To_Hospital() } // Krankenhaus einlieferung Send_Vehicle_To_Hospital() { //var HospitalID = Hospitals[0].id; var HospitalHref = this.Hospitals[0].href; // TODO: tellParent("ADisMissionDone(" + window.name + "," + MissionID + ");"); document.location.href = document.location.origin + HospitalHref; } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Assign & Unassign Missions to Dispatchers // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CollectPoliceSprechwuensche() { let self = this; new Promise(async (resolve, reject) => { await self.ADisDB.ADisSprechwunschPolice.where({ done: 'false' }).each((myWunsch) => { if (!$("#mission_" + myWunsch.missionID).text().match(/Gefangene sollen abtransportiert werden/g)) { $("#mission_" + myWunsch.missionID).remove(); return self.RemovePoliceSprechwunschFromQueue(myWunsch.missionID); } }) return resolve(); }).then(() => { var MOIODOS = $('div#mission_list div.missionSideBarEntry:visible'); return MOIODOS.each((_, elem) => { if ($(elem).text().match(/Gefangene sollen abtransportiert werden/g)) { var MissionID = $(elem).attr("mission_id"); self.AddPoliceSprechwunschToQueue(MissionID); } }); }).then(() => { $("#building_list").find(".building_list_vehicle_element").each((_, elem) => { var VehicleStatus = $(elem).find(".building_list_fms").text(); var VehicleType = Number(parseInt($(elem).find("a").attr("vehicle_type_id"))); var VehicleID = $(elem).attr("vehicle_id"); if (VehicleStatus == "5" && [32, 52].indexOf(VehicleType) !== -1) { var map2 = $('#radio_messages_important > li.radio_message_vehicle_' + VehicleID + ' a:contains("Zum Einsatz")'); if (map2.length > 0) { var _meap = String(map2.attr('href')); var MissionID = _meap.substr(_meap.lastIndexOf("/") + 1); if (MissionID) { self.AddPoliceSprechwunschToQueue(MissionID); } } } }); }); } OpenNextPoliceSprechwunsch() { let self = this; this.ADSettings().then((setting) => { if (setting['Sprechwunsch-Automatic'] == 'true') { return self.ADisDB.ADisSprechwunschPolice.where({ done: 'false' }).limit(1) } }).then((Wunsch) => { if (Wunsch !== undefined) { Wunsch.each((myWunsch) => { let MissionID = myWunsch.missionID; self.UpdatePoliceSprechwunschToDone(MissionID).then(() => { if ($("#adis-sprechwunsch-police-frame").attr("mission_id") == "empty") { $("#adis-sprechwunsch-police-frame").attr("src", "https://www.leitstellenspiel.de/missions/" + MissionID); $("#adis-sprechwunsch-police-frame").attr("mission_id", MissionID); self.PoliceVehicleFrameWatchDog = setTimeout(async (MissionID) => { self.RemovePoliceSprechwunschFromQueue(MissionID).then((deleteCount) => { $("#adis-sprechwunsch-police-frame").attr("src", ""); $("#adis-sprechwunsch-police-frame").attr("mission_id", "empty"); }); }, 2500, MissionID); } }); }); } }); } AddPoliceSprechwunschToQueue(WunschID) { return this.ADisDB.ADisSprechwunschPolice.put({ missionID: WunschID, done: 'false' }).catch((err) => {}) } UpdatePoliceSprechwunschToDone(WunschID) { return this.ADisDB.ADisSprechwunschPolice.add({ missionID: WunschID, done: 'true' }).catch((err) => {}) } Check_Call_Police_Active() { if ($('#h2_prisoners').length > 0) { this.Collect_Jails(); } else { this.RemovePoliceSprechwunschFromQueue(MissionID).then((deleteCount) => { $("#adis-sprechwunsch-police-frame").attr("src", ""); $("#adis-sprechwunsch-police-frame").attr("mission_id", "empty"); }); } } // Gefängnis auswählen Collect_Jails() { let self = this; self.Jails = []; var CountGefangene = Number(parseInt($('#h2_prisoners').text())); var parentNode = $('#mission_vehicle_at_mission tr > td:nth-child(5) > a:contains("Jomaar")').parent().parent(); var GefKw = parentNode.find('td:nth-child(2) > a[vehicle_type_id="52"]'); var FuStW = parentNode.find('td:nth-child(2) > a[vehicle_type_id="32"]'); var GefKwGefaegnisse = $(GefKw[0]).parent().parent().next('tr'); var FuStWGefaegnisse = $(FuStW[0]).parent().parent().next('tr'); GefKwGefaegnisse.find("a:contains('Freie Zellen')").each((_, elem) => { var JailHref = $(elem).attr("href"); var JailID = JailHref.split("/").pop(); var JailText = $(elem).text(); var JailFreeBeds = 0; var JailDistance = 0; var JailTax = 0; let m; while ((m = self.JailRegEx.exec(JailText)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === self.JailRegEx.lastIndex) { self.JailRegEx.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { if (groupIndex == 1) { JailFreeBeds = parseInt(match.trim()); } else if (groupIndex == 2) { JailDistance = parseInt(match.trim()); } else if (groupIndex == 3 && typeof match != "undefined") { JailTax = parseInt(match.trim()); } }); } var JailValue = JailDistance * 450 * -1; JailValue += 11; //GefKw bevorzugt if (JailTax == 0) { JailValue += 10000; } else if (JailTax > 0 && JailTax <= 10) { JailValue += 5000; } else if (JailTax > 10 && JailTax <= 20) { JailValue += 1000; } else { JailValue -= 10000; } if (JailFreeBeds >= 5) { JailValue += 15000; } else if (JailFreeBeds >= 1) { JailValue += 1000; } else { JailValue -= 5000; } if (JailFreeBeds >= 5) { self.Jails.push({ "id": JailID, "value": JailValue + 1000, "text": JailText, "distance": JailDistance, "href": JailHref }); } else if (JailFreeBeds >= 1) { self.Jails.push({ "id": JailID, "value": JailValue, "text": JailText, "distance": JailDistance, "href": JailHref }); } }); FuStWGefaegnisse.find("a:contains('Freie Zellen')").each((_, elem) => { var JailHref = $(elem).attr("href"); var JailID = JailHref.split("/").pop(); var JailText = $(elem).text(); var JailFreeBeds = 0; var JailDistance = 0; var JailTax = 0; let m; while ((m = self.JailRegEx.exec(JailText)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === self.JailRegEx.lastIndex) { self.JailRegEx.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { if (groupIndex == 1) { JailFreeBeds = parseInt(match.trim()); } else if (groupIndex == 2) { JailDistance = parseInt(match.trim()); } else if (groupIndex == 3 && typeof match != "undefined") { JailTax = parseInt(match.trim()); } }); } var JailValue = JailDistance * 450 * -1; if (JailTax == 0) { JailValue += 10000; } else if (JailTax > 0 && JailTax <= 10) { JailValue += 5000; } else if (JailTax > 10 && JailTax <= 20) { JailValue += 1000; } else { JailValue -= 10000; } if (JailFreeBeds >= 5) { JailValue += 15000; } else if (JailFreeBeds >= 1) { JailValue += 1000; } else { JailValue -= 5000; } if (JailFreeBeds >= CountGefangene) { self.Jails.push({ "id": JailID, "value": JailValue + 1000, "text": JailText, "distance": JailDistance, "href": JailHref }); } else if (JailFreeBeds >= 1) { self.Jails.push({ "id": JailID, "value": JailValue, "text": JailText, "distance": JailDistance, "href": JailHref }); } }); self.Jails.sort((a, b) => { return a.value - b.value; }); self.Jails.reverse(); if (self.Jails.length > 0) { this.Send_Vehicle_To_Jail() } else { $("#mission_vehicle_driving tbody, #mission_vehicle_at_mission tbody").find("tr").each((_, elem) => { var CalledVehicleID = parseInt($(elem).find("a").first().attr("vehicle_type_id")); if (CalledVehicleID == 52) { CountGefangene -= 5; } else if (CalledVehicleID == 32) { CountGefangene -= 1; } }); if ($('#vehicle_show_table_all tr[vehicle_type="GefKw"] input[type="checkbox"]').size() > 0 && CountGefangene >= 5) { $('#vehicle_show_table_all tr[vehicle_type="GefKw"] input[type="checkbox"]').each((_, elem) => { if (CountGefangene > 0) { $(elem).click() CountGefangene -= 5; } }); } if ($('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]').size() > 0 && CountGefangene > 0) { $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]').each((_, elem) => { if (CountGefangene > 0) { $(elem).click() CountGefangene -= 1; } }); } if ($('#vehicle_show_table_all input[type="checkbox"]:checked').size() > 0) { $('#mission_alarm_btn').click(); } } } // Gefängnis einlieferung Send_Vehicle_To_Jail() { var JailHref = this.Jails[0].href document.location.href = document.location.origin + JailHref; } // - // - Index Page Loader // - IndexPage() { let self = this; // - // - Google Font // - var styleElement = document.createElement("link"); styleElement.rel = "stylesheet"; styleElement.href = "https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700"; this.ADis_MyHead.appendChild(styleElement); // - // - FontAwesome 5 // - var scriptElement = document.createElement("script"); scriptElement.type = "text/javascript"; scriptElement.src = "https://use.fontawesome.com/releases/v5.5.0/js/all.js"; this.ADis_MyHead.appendChild(scriptElement); // - // - Navbar Dashboard // - var styleElement = document.createElement("link"); styleElement.rel = "stylesheet"; styleElement.type = "text/css"; styleElement.media = "screen"; styleElement.href = this.ADisSettings.url + this.ADisSettings.branch + "/style/interface.css"; this.ADis_MyHead.appendChild(styleElement); // Create Dashboard $('#news_li').before('
'); $('#adis-nav-item').html(`/***ADis_Navbar***/0`) $("#adis-dashboard").css({ display: "none", opacity: "0" }); // // Click Events // $("#adis-setting-krankentransport-automatic").click((e) => { var tf = $(e.target).hasClass("active"); self.ADisDB.ADisSettings.put({ name: "Krankentransport-Automatic", value: !tf ? 'true' : 'false' }).then((res) => { self.UIUpdateSettings(); }); }); $("#adis-setting-full-automatic").click((e) => { var tf = $(e.target).hasClass("active"); self.ADisDB.ADisSettings.put({ name: "MissionsOwn-Automatic", value: !tf ? 'true' : 'false' }).then(() => { self.UIUpdateSettings(); }); }); $("#adis-setting-sprechwunsch-automatic").click((e) => { var tf = $(e.target).hasClass("active"); self.ADisDB.ADisSettings.put({ name: "Sprechwunsch-Automatic", value: !tf ? 'true' : 'false' }).then(() => { self.UIUpdateSettings(); }); }); $("#adis-setting-alliance-automatic").click((e) => { var tf = $(e.target).hasClass("active"); self.ADisDB.ADisSettings.put({ name: "Alliance-Automatic", value: !tf ? 'true' : 'false' }).then(() => { self.UIUpdateSettings(); }); }); $("#adis-setting-alliance-automatic").click((e) => { var tf = $(e.target).hasClass("active"); self.ADisDB.ADisSettings.put({ name: "AllianceEvent-Automatic", value: !tf ? 'true' : 'false' }).then(() => { self.UIUpdateSettings(); }); }); // // Dashboard Functions // $("#adis-open-button").click(() => { $("#adis-dashboard").css("display", "flex"); $("#adis-dashboard").animate({ opacity: 1 }, 200); }); $("#adis-dashboard-close-button").click(() => { $("#adis-dashboard").animate({ opacity: 0 }, 200, () => { $("#adis-dashboard").css("display", "none"); }); }); // initial call to load the current setting state self.UIUpdateSettings(); // Create Iframes $("body").append(''); $("#adis-frame-container").html(`/***ADis_Iframes***/0`); $("#adis-frame-container").css({ display: "none", opacity: "0" }); } // // Display Settings // UIUpdateSettings() { this.ADisDB.ADisSettings.each((setting) => { if (setting.name == "Krankentransport-Automatic") { if (setting.value == "true") { $("#adis-setting-krankentransport-automatic").addClass("active"); } else { $("#adis-setting-krankentransport-automatic").removeClass("active"); } } else if (setting.name == "Sprechwunsch-Automatic") { if (setting.value == "true") { $("#adis-setting-sprechwunsch-automatic").addClass("active"); } else { $("#adis-setting-sprechwunsch-automatic").removeClass("active"); } } else if (setting.name == "MissionsOwn-Automatic") { if (setting.value == "true") { $("#adis-setting-full-automatic").addClass("active"); } else { $("#adis-setting-full-automatic").removeClass("active"); } } else if (setting.name == "Alliance-Automatic") { if (setting.value == "true") { $("#adis-setting-alliance-automatic").addClass("active"); } else { $("#adis-setting-alliance-automatic").removeClass("active"); } } else if (setting.name == "AllianceEvents-Automatic") { if (setting.value == "true") { $("#adis-setting-allianceevents-automatic").addClass("active"); } else { $("#adis-setting-allianceevents-automatic").removeClass("active"); } } }); } GetAvailableMissions() { let self = this; for (let i in self.ADisSettings.all_missions) { let Mission = self.ADisSettings.all_missions[i]; self.AddAvailableMissions(Mission); } } AddAvailableMissions(Mission) { return this.ADisDB.ADisAvailabelMissions.put({ missionID: Mission.id, type: Mission.type, name: Mission.name, jsondata: Mission }).catch((err) => { console.error(err) }) } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Collect Own Missions // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CollectMissions() { const self = this; const MyOwnObserver = new MutationObserver((mutations) => { mutations.forEach((mutation) => { // console.log(mutation.target.id); // console.table(mutation); // <<-- includes text nodes if (mutation.addedNodes.length >= 1) { // do it here for (var i = 0; i < mutation.addedNodes.length; i++) { self.ReadAndAddMissions(mutation.addedNodes[i].attributes.getNamedItem("mission_id").value, mutation.target.id); } } }); }); const MyOwnConfig = { childList: true }; MyOwnObserver.observe($('#mission_list')[0], MyOwnConfig); MyOwnObserver.observe($('#mission_list_krankentransporte')[0], MyOwnConfig); MyOwnObserver.observe($('#mission_list_sicherheitswache')[0], MyOwnConfig); MyOwnObserver.observe($('#mission_list_alliance_event')[0], MyOwnConfig); MyOwnObserver.observe($('#mission_list_alliance')[0], MyOwnConfig); } ReadAndAddMissions(MissionID, Runner) { const self = this; return self.ADisDB.transaction('rw', [self.ADisDB.ADisMissions, self.ADisDB.ADisAvailabelMissions], () => { if (typeof MissionID != 'undefined') { self.AddMission(MissionID, Runner); } else { self.ADisSettings.runner_divs.forEach(async (RunnerX, index) => { await $("#" + RunnerX).find(".missionSideBarEntry").each(async (index, elem) => { MissionID = $(elem).attr("mission_id"); await self.AddMission(MissionID, RunnerX); }); }) } }); } AddMission(ID, Runner) { const self = this; // convert Runnter to Settings const runnerID = self.ADisSettings.runner_divs.indexOf(Runner); const settingOpt = self.ADisSettings.runner_settings[runnerID]; const runnerOpt = self.ADisSettings.runner[runnerID]; return self.ADSettings().then((setting) => { if (setting[settingOpt] == 'true') { let where = { missionID: ID, runner: runnerOpt }; return self.ADisDB.ADisMissions.where(where).limit(1) } }).then((Missions) => { if (typeof Missions === "undefined") { return; } return Missions.count((count) => { if (count > 0) { return Missions.each(() => { var MissionElement = $("#mission_" + ID); var _MissionID = MissionElement.attr("mission_id"); var _MissionType = MissionElement.attr("mission_type_id"); var addr = MissionElement.find(".map_position_mover").text().split(",") var MissionName = addr[0]; var MissionStreet = addr[1]; var MissionVillage = addr[2]; return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { return self.AddMissionsToQueue({ "id": _MissionID, "type": _MissionType, "runner": runnerOpt, "name": MissionName, "street": MissionStreet, "village": MissionVillage, "available": (available !== undefined), "done": false, "last_check": Math.floor(new Date().getTime() / 1000), "next_check": Math.floor(new Date().getTime() / 1000) + 1 }); }); }); } else { var MissionElement = $("#mission_" + ID); var MissionID = MissionElement.attr("mission_id"); var MissionType = MissionElement.attr("mission_type_id"); var addr = MissionElement.find(".map_position_mover").text().split(",") var MissionName = addr[0]; var MissionStreet = addr[1]; var MissionVillage = addr[2]; return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { return self.AddMissionsToQueue({ "id": MissionID, "type": MissionType, "runner": runnerOpt, "name": MissionName, "street": MissionStreet, "village": MissionVillage, "available": (available !== undefined), "done": false, "last_check": Math.floor(new Date().getTime() / 1000), "next_check": Math.floor(new Date().getTime() / 1000) + 1 }); }); } }); }); } AddMissionsToQueue(Mission) { const self = this; return self.ADisDB.ADisMissions.put({ missionID: Mission.id, type: Mission.type, runner: Mission.runner, name: Mission.name, available: Mission.available ? 'true' : 'false', done: Mission.done ? 'true' : 'false', street: Mission.street, village: Mission.village, last_check: Mission.last_check, next_check: Mission.next_check }).catch((err) => { console.error(err) }); } UpdateMissions(Mission) { const self = this; return self.ADisDB.ADisMissions.put(Mission).catch((err) => { console.error(err) }) } UpdateMissionsToDone(MissionID) { const self = this; return self.ADisDB.ADisMissions.update(MissionID, { last_check: Math.floor(new Date().getTime() / 1000), next_check: Math.floor(new Date().getTime() / 1000) + 300 }).catch((err) => { console.error(err) }) } RemoveMissionsFromQueue(MissionID) { const self = this; return self.ADisDB.ADisMissions.where({ missionID: MissionID }).delete().catch((err) => { console.error(err) }) } OpenNextMission(Runner) { const self = this; const runnerID = self.ADisSettings.runner.indexOf(Runner) const runnerIframeName = self.ADisSettings.runner_iframesName[runnerID]; const runnerIframe = self.ADisSettings.runner_iframes[runnerID]; const runnerSettings = self.ADisSettings.runner_settings[runnerID]; // console.table({ // Runner: Runner, // runnerID: runnerID, // runnerSettings: runnerSettings, // runnerIframeName: runnerIframeName, // runnerIframe:runnerIframe // }) return self.ADisDB.transaction('rw', [self.ADisDB.ADisMissions, self.ADisDB.ADisAvailabelMissions], () => { self.ADSettings().then((setting) => { if (setting[runnerSettings] == 'true') { return self.ADisDB.ADisMissions.where({ runner: Runner, available: 'true', done: 'false' }).and(function (item) { return item.next_check <= Math.floor(new Date().getTime() / 1000) }).limit(1) } }).then((Wunsch) => { // console.table(Wunsch); if (Wunsch !== undefined) { return Wunsch.count(function (count) { if (count > 0) { return Wunsch.each((myWunsch) => { // console.log("MYWUNSCH:") // console.table(myWunsch); let MissionID = myWunsch.missionID; if ($('#' + runnerIframe).attr("mission_id") == "empty") { $('#' + runnerIframe).attr("src", "https://www.leitstellenspiel.de/missions/" + MissionID); $('#' + runnerIframe).attr("mission_id", MissionID); self.UpdateMissionsToDone(MissionID).then(() => { // console.log('done.... ' + Runner); $('#' + runnerIframe).attr("src", ''); $('#' + runnerIframe).attr("mission_id", 'empty'); setTimeout(self.OpenNextMission.bind(self), 5000, Runner); }) } else { // only while setTimeout(self.OpenNextMission.bind(self), 5000, Runner); } }); } else { return setTimeout(self.OpenNextMission.bind(self), 5000, Runner); } }); } return setTimeout(self.OpenNextMission.bind(self), 5000, Runner); }); }); } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Start Mission Handler // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- StartMission() { const self = this; self.MissionType = null; const runnerID = self.ADisSettings.runner_iframesName.indexOf(window.name); self.MyRunner = self.ADisSettings.runner[runnerID]; self.MyRunnerSettings = self.ADisSettings.runner_settings[runnerID]; setTimeout(function () { self.MissionID = document.location.pathname.substr(document.location.pathname.lastIndexOf("/") + 1); var help_el = $('a#mission_help'); if (help_el.length > 0) { self.MissionType = help_el[0].href.split("?")[0]; var re = /\d+$/i; var found = self.MissionType.match(re); self.MissionType = Number(found[0]); } else { self.MissionType = null; } console.log("MissionID", self.MissionID); console.log("MissionType", self.MissionType); self.ADSettings().then((setting) => { if (setting[self.MyRunnerSettings] != 'true') { return self.ADisDB.ADisMissionsOwn.where({ missionID: self.MissionID, runner: MyRunner, done: 'false' }).and(function (item) { return item.next_check <= Math.floor(new Date().getTime() / 1000) }).limit(1) } }).then((Wunsch) => { if (Wunsch !== undefined) { return Wunsch.count(function (count) { if (count > 0) { return Wunsch.each((mywunsch) => { return self.MainHandler() }); } return tellParent(`console.log('done:${window.name}:${self.MissionID}');MissionDelete('${window.name}', '${self.MissionID}');`); }); } return tellParent(`console.log('done:${window.name}:${self.MissionID}');MissionDelete('${window.name}', '${self.MissionID}');`); }) }, 1500); } MainHandler() { const self = this; if (includesString($('#iframe-inside-container > div.missionNotFound > div.missionNotFoundText').text(), 'Der Einsatz wurde erfolgreich abgeschlossen.')) { console.log("DONE!"); return tellParent(`console.log('done:${window.name}:${self.MissionID}');MissionDelete('${window.name}', '${self.MissionID}');`); // delete Mission here as completed } if (includesString($('#iframe-inside-container > div.alert.fade.in.alert-success').text(), "wurde erfolgreich informiert") /*|| $('#vehicle_show_table_all input[type="checkbox"]:checked').size() > 0*/ ) { console.log("SEND"); return tellParent(`console.log('update:${window.name}:${self.MissionID}');MissionUpdateDone('${window.name}', '${self.MissionID}');`); // update Mission here as updated or full } else { setTimeout(function () { if (['adis-ownmissions', 'adis-krankentransporte'].indexOf(window.name) != -1) { console.log("WILL SEND?") self.CheckMissionAutomatic(); } else if (['adis-verbandmission', 'adis-verbandmission-event'].indexOf(window.name) != -1) { self.WorkVerbandMission(); } }, 250); } } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Grab Run Verbands Missions // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- WorkVerbandMission() { const self = this; self.ADSettings().then((setting) => { var title = document.getElementById('missionH1'); var isVerband = title.innerText.toLowerCase().includes("[verband]"); if (setting['Alliance-Automatic'] == 'true' && isVerband) { if ([52, 55, 129, 203].indexOf(self.MissionType) !== -1 && $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]')[0].click(); } else if ([53, 130, 202].indexOf(self.MissionType) !== -1) { if ($('#vehicle_show_table_all tr[vehicle_type="FLF"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="FLF"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="GW-A"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="GW-A"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="GW-Öl"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="GW-Öl"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="NEF"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="NEF"] input[type="checkbox"]')[0].click(); } } else if ([54, 56].indexOf(self.MissionType) !== -1) { if ($('#vehicle_show_table_all tr[vehicle_type="FLF"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="FLF"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="GW-A"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="GW-A"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="GW-Öl"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="GW-Öl"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="LF 20"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="LF 20"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="LF 20/16"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="LF 20/16"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="HLF 20"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="HLF 20"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="TLF 8/8"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="TLF 8/8"] input[type="checkbox"]')[0].click(); } } else { if ($('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]')[0].click(); } else if ($('#vehicle_show_table_all tr[vehicle_type="KTW Typ B"] input[type="checkbox"]').size() > 0) { $('#vehicle_show_table_all tr[vehicle_type="KTW Typ B"] input[type="checkbox"]')[0].click(); } } // Todo add alternative cars, please no LF because of Mülltonne.... if ($('#vehicle_show_table_all input[type="checkbox"]:checked').size() > 0) { $('#mission_alarm_btn').click(); } } }); } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Grab Mission-Configuration from GitHub // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CheckMissionAutomatic() { const self = this; var setOpt; if (window.name == 'adis-ownmissions') { setOpt = 'MissionsOwn-Automatic'; } else if (window.name == 'adis-krankentransporte') { setOpt = 'Krankentransport-Automatic'; } if (setOpt && self.MyRunner) { self.ADSettings().then((setting) => { if (setting[setOpt] == 'true') { var coll = self.ADisDB.ADisMissions.where({ done: 'false' }) if (self.MyRunner != "kt") { coll = coll.and(function (item) { return item.next_check <= Math.floor(new Date().getTime() / 1000) }); } return coll.limit(1).toArray() } }).then((Missions) => { if (Missions.length > 0) { var Mission = Missions[0]; self.GetMissionConfiguration(self.MyRunner == 'kt' ? 147 : Mission.type); } }); } } GetMissionConfiguration(MissionType) { const self = this; return self.ADisDB.transaction('rw', [self.ADisDB.ADisMissionsOwn, self.ADisDB.ADisAvailabelMissions], () => { return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType.toString() }).then((availableMission) => { if (availableMission != undefined && availableMission.jsondata) { self.MissionConfig = availableMission.jsondata; console.log('MissionConfig: ', MissionType.toString(), JSON.stringify(self.MissionConfig, null, 2)) self.StartAlarmProcess(); } else { var updateData = { available: false, next_check: CurrentTime + 60 }; self.UpdateOwnMissionsToDone(self.MissionID, updateData); } }); }); } StartAlarmProcess() { const self = this; setTimeout(function () { Promise.resolve().then(async () => { return await self.PrepareVehicleNeedList(); }).then(async () => { return await self.CollectInvolvedVehicles(); }).then(async () => { return await self.CollectPatients(); }) .then(async () => { return await self.ProcessEmergencyMedicalService() }) .then(async () => { return await self.ProcessFireDepartment() }) .then(async () => { return await self.ProcessPoliceDepartment() }) .then(async () => { return await self.ProcessTechnicalEmergencyService() }) .then(async () => { return await self.ProcessWaterRescue() }).then(() => { console.log("Clicked Vehicles: ", $('#vehicle_show_table_all input[type="checkbox"]:checked').size(), $('#vehicle_show_table_all input[type="checkbox"]:checked')); if (['adis-ownmissions', 'adis-krankentransporte', 'adis-verbandmission'].indexOf(window.name) !== -1) { console.log("WILL KLICK SEND") setTimeout(() => { $('#mission_alarm_btn').click(); tellParent(`setTimeout(function(){console.log('ok:${window.name}:${self.MissionID}');MissionUpdateDone('${window.name}', '${self.MissionID}');},500);`); }, 250); } }) }, 500); } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Collect Involved Vehicles & Patients // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CollectInvolvedVehicles() { let self = this; $("#mission_vehicle_driving tbody").find("tr").each(function (_, elem) { var VehicleID = $(elem).find("a").first().attr("href").substr($(elem).find("a").first().attr("href").lastIndexOf("/") + 1); var VehicleName = $(elem).find("a").first().text(); var VehicleType = $(elem).find("a").first().attr("vehicle_type_id"); self.Vehicles[VehicleID] = { "id": VehicleID, "name": VehicleName, "type": VehicleType } }); $("#mission_vehicle_at_mission tbody").find("tr").each(function (_, elem) { var VehicleID = $(elem).find("a").first().attr("href").substr($(elem).find("a").first().attr("href").lastIndexOf("/") + 1); var VehicleName = $(elem).find("a").first().text(); var VehicleType = $(elem).find("a").first().attr("vehicle_type_id"); self.Vehicles[VehicleID] = { "id": VehicleID, "name": VehicleName, "type": VehicleType } }); return self.Vehicles; } CollectPatients() { const self = this; let PatientCounter = 0; $(".mission_patient").each(function (_, elem) { var PatientName = $(elem).text(); var PatientNeedRTW = false; var PatientNeedNEF = false; var PatientNeedRTH = false; var PatientNeedLNA = false; var PatientNeedOrgL = false; var PatientNeedSEGKTWB = false; var PatientNeedTragehilfe = false; // Wir benötigen einen RTW oder KTW Typ B. if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen einen RTW oder KTW Typ B") != -1) { PatientNeedSEGKTWB = true; } // Wir benötigen einen RTW. if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen ein RTW") != -1) { PatientNeedRTW = true; } // Wir benötigen einen NEF. if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen ein NEF") != -1) { PatientNeedNEF = true; } // Wir benötigen einen RTH. if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen ein RTH") != -1) { PatientNeedRTH = true; } // Wir benötigen einen LNA. if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen einen LNA") != -1) { PatientNeedLNA = true; } // Wir benötigen einen OrgL. if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen einen OrgL") != -1) { PatientNeedOrgL = true; } // Wir benötigen eine Tragehilfe (z.B. durch ein LF). if ($(elem).find(".alert-danger").length > 0 && $(elem).find(".alert-danger").text().indexOf("Wir benötigen eine Tragehilfe") != -1) { PatientNeedTragehilfe = true; } self.Patients[PatientCounter] = { "name": PatientName, "need_RTW": PatientNeedRTW, "need_NEF": PatientNeedNEF, "need_RTH": PatientNeedRTH, "need_LNA": PatientNeedLNA, "need_OrgL": PatientNeedOrgL, "need_SEG_KTWB": PatientNeedSEGKTWB, "need_Tragehilfe": PatientNeedTragehilfe } PatientCounter++; }); return self.Patients; } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Process Emergency_Medical_Service // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ProcessEmergencyMedicalService() { const self = this; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - // - Emergency Medical Service: Vehicles // - // - 38: KTW // - 28: RTW // - 29: NEF // - 74: NAW // - 73: GRTW // - 31: RTH // - 55: LNA // - 56: OrgL // - // - 58: (SEG) KTW Typ B // - 59: (SEG) ELW 1 // - 60: (SEG) GW-San // - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (typeof self.MissionConfig.emergency_medical_service == "object") // Wenn der EMS-Block in der Config definiert ist { if (Object.keys(self.Patients).length >= 5) { // need LNA self._ADisVehiclesNeed["55"] = 1; } if (Object.keys(self.Patients).length >= 10) { // need OrgL self._ADisVehiclesNeed["56"] = 1; } //$.each(Patients, function (Key, Patient) { for (var Key in self.Patients) { var Patient = self.Patients[Key]; if (self.MissionConfig.emergency_medical_service.use_KTW == true) { if (!Patient.need_RTW && !Patient.need_NEF && !Patient.need_RTH) self._ADisVehiclesNeed["38"]++; } if (Patient.need_LNA && self._ADisVehiclesNeed["55"] < 1) self._ADisVehiclesNeed["55"] = 1; if (Patient.need_OrgL && self._ADisVehiclesNeed["56"] < 1) self._ADisVehiclesNeed["56"] = 1; if (Patient.need_NEF == true) self._ADisVehiclesNeed["29"]++; if (Patient.need_RTW == true) self._ADisVehiclesNeed["28"]++; if (Patient.need_RTH == true) self._ADisVehiclesNeed["31"]++; if (Patient.need_Tragehilfe == true) self._ADisVehiclesNeed["0"]++; }; if (self.MissionConfig.emergency_medical_service.use_RTW == true) self._ADisVehiclesNeed["28"]++; if (self.MissionConfig.emergency_medical_service.use_NEF == true) self._ADisVehiclesNeed["29"]++; if (self.MissionConfig.emergency_medical_service.use_RTH == true) self._ADisVehiclesNeed["31"]++; // TODO: need to be refactored to make sure first KTW Typ B before RTW. if (self.MissionConfig.emergency_medical_service.use_SEG_ELW1_Only == "true") { self._ADisVehiclesNeed["59"]++; } else if (self.MissionConfig.emergency_medical_service.use_SEG_FULL == "true" || Object.keys(self.Patients).length >= 3) { self._ADisVehiclesNeed["58"]++; self._ADisVehiclesNeed["58"]++; // 3x KTW Type B self._ADisVehiclesNeed["58"]++; self._ADisVehiclesNeed["59"]++; self._ADisVehiclesNeed["60"]++; } var VehicleTable; if ($("#vehicle_show_table_body_all").length > 0) { VehicleTable = $("#vehicle_show_table_body_all"); } else { VehicleTable = $("#vehicle_show_table_body_rett"); } VehicleTable.find(".vehicle_select_table_tr").each(function (_, elem) { var VehicleID = $(elem).attr("id").replace("vehicle_element_content_", ""); // var VehicleDistanceTime = $("#vehicle_sort_" + VehicleID).attr("sortvalue"); var VehicleType = $(elem).attr("vehicle_type"); if ($("#vehicle_checkbox_" + VehicleID + ":enabled").length === 0) { return; } if (VehicleType == "KTW" && self._ADisVehiclesNeed["38"] > 0) { // console.log(" Automatic Dispose: Fahrzeug " + VehicleID + " " + VehicleType + " markiert"); $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["38"]--; } else if ((VehicleType == "LF 20" || VehicleType == "LF 10" || VehicleType == "LF 8/6" || VehicleType == "LF 20/16" || VehicleType == "LF 10/6" || VehicleType == "LF 16-TS" || VehicleType == "HLF 20" || VehicleType == "TSF-W" || VehicleType == "TLF 2000" || VehicleType == "TLF 3000" || VehicleType == "TLF 8/8" || VehicleType == "TLF 8/18" || VehicleType == "TLF 16/24-Tr" || VehicleType == "TLF 16/25" || VehicleType == "TLF 16/45" || VehicleType == "TLF 20/40" || VehicleType == "TLF 20/40-SL" || VehicleType == "TLF 16") && self._ADisVehiclesNeed["0"] + self._ADisVehiclesNeed["1"] + self._ADisVehiclesNeed["6"] + self._ADisVehiclesNeed["7"] + self._ADisVehiclesNeed["8"] + self._ADisVehiclesNeed["9"] + self._ADisVehiclesNeed["30"] + self._ADisVehiclesNeed["37"] + self._ADisVehiclesNeed["17"] + self._ADisVehiclesNeed["18"] + self._ADisVehiclesNeed["19"] + self._ADisVehiclesNeed["20"] + self._ADisVehiclesNeed["21"] + self._ADisVehiclesNeed["22"] + self._ADisVehiclesNeed["23"] + self._ADisVehiclesNeed["24"] + self._ADisVehiclesNeed["25"] + self._ADisVehiclesNeed["26"] > 0) { // LF acts as 'Tragehilfe' $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["0"]--; } else if (VehicleType == "NAW" && self._ADisVehiclesNeed["28"] > 0 && self._ADisVehiclesNeed["29"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["74"]--; self._ADisVehiclesNeed["28"]--; self._ADisVehiclesNeed["29"]--; } else if (VehicleType == "GRTW" && self._ADisVehiclesNeed["73"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["73"]--; } else if (VehicleType == "RTW" && self._ADisVehiclesNeed["28"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["28"]--; } else if (VehicleType == "NEF" && self._ADisVehiclesNeed["29"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["29"]--; } else if (VehicleType == "RTH" && self._ADisVehiclesNeed["31"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["31"]--; } else if (VehicleType == "KdoW-LNA" && self._ADisVehiclesNeed["55"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["55"]--; } else if (VehicleType == "KdoW-OrgL" && self._ADisVehiclesNeed["56"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["56"]--; } else if (VehicleType == "KTW Typ B" && self._ADisVehiclesNeed["58"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["58"]--; self._ADisVehiclesNeed["28"]--; // no need for RTW if KTW Type B is called } else if (VehicleType == "ELW 1 (SEG)" && self._ADisVehiclesNeed["59"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["59"]--; } else if (VehicleType == "GW-San" && self._ADisVehiclesNeed["60"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["60"]--; self._ADisVehiclesNeed["29"]--; // no need for NEF if GW-SAN is called } }); return true; } return false; } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Process Fire_Department // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ProcessFireDepartment() { const self = this; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - // - Fire Department: Vehicles // - // - 0: LF 20 // - 1: LF 10 // - 6: LF 8/6 // - 7: LF 20/16 // - 8: LF 10/6 // - 9: LF 16-TS // - 30: HLF 20 // - 37: TSF-W // - // - 17: TLF 2000 // - 18: TLF 3000 // - 19: TLF 8/8 // - 20: TLF 8/18 // - 21: TLF 16/24-Tr // - 22: TLF 16/25 // - 23: TLF 16/45 // - 24: TLF 20/40 // - 25: TLF 20/40-SL // - 26: TLF 16 // - // - 2: DLK 23 // - 3: ELW 1 // - 34: ELW 2 // - 36: MTW // - 57: FwK // - // - 4: RW // - 5: GW-A // - 10: GW-Öl // - 12: GW-Mess // - 53: GW-Dekon-P // - 27: GW-Gefahrgut // - 33: GW-Höhenrettung // - // - 11: GW-L2-Wasser // - 13: SW 1000 // - 14: SW 2000 // - 15: SW 2000-Tr // - 16: SW KatS // - // - 71: AB-MZB (see WaterRescue) // - // - 46: WLF // - 47: AB-Rüst // - 48: AB-Atemschutz // - 49: AB-Öl // - 54: AB-Dekon-P // - 62: AB-Schlauch // - // - 75: FLF // - 76: Rettungstreppe // - 77: AB-Gefahrgut // - 78: AB-Einsatzleitung // - // - 83: GW-Werkfeuerwehr // - 84: ULF mit Löscharm // - 85: TM 50 // - 86: Turbolöscher // - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (typeof self.MissionConfig.fire_department == "object") // Wenn der FD-Block in der Config definiert ist { self._ADisVehiclesNeed["0"] += parseInt(self.MissionConfig.fire_department.num_LF); self._ADisVehiclesNeed["3"] += parseInt(self.MissionConfig.fire_department.num_ELW_1); self._ADisVehiclesNeed["34"] += parseInt(self.MissionConfig.fire_department.num_ELW_2); self._ADisVehiclesNeed["2"] += parseInt(self.MissionConfig.fire_department.num_DLK); self._ADisVehiclesNeed["4"] += parseInt(self.MissionConfig.fire_department.num_RW); self._ADisVehiclesNeed["57"] += parseInt(self.MissionConfig.fire_department.num_FwK); self._ADisVehiclesNeed["5"] += parseInt(self.MissionConfig.fire_department.num_GW_A); self._ADisVehiclesNeed["27"] += parseInt(self.MissionConfig.fire_department.num_GW_G); self._ADisVehiclesNeed["10"] += parseInt(self.MissionConfig.fire_department.num_GW_Oel); self._ADisVehiclesNeed["12"] += parseInt(self.MissionConfig.fire_department.num_GW_Mess); self._ADisVehiclesNeed["11"] += parseInt(self.MissionConfig.fire_department.num_SW); self._ADisVehiclesNeed["33"] += parseInt(self.MissionConfig.fire_department.num_GW_Hoeh); self._ADisVehiclesNeed["53"] += parseInt(self.MissionConfig.fire_department.num_Dekon_P); self._ADisVehiclesNeed["75"] += parseInt(self.MissionConfig.fire_department.num_FLF); self._ADisVehiclesNeed["76"] += parseInt(self.MissionConfig.fire_department.num_Rettungstreppe); self._ADisVehiclesNeed["83"] += parseInt(self.MissionConfig.fire_department.num_GW_Werkfeuerwehr); self._ADisVehiclesNeed["84"] += parseInt(self.MissionConfig.fire_department.num_ULF_mit_Loescharm); self._ADisVehiclesNeed["86"] += parseInt(self.MissionConfig.fire_department.num_Turboloescher); var dangerText = $('#iframe-inside-container > div.alert.alert-danger').text(); if (includesString(dangerText, "Wir benötigen min.") && includesString(dangerText, "Feuerwehrleute.")) { const weNeed = self._ADisVehiclesNeed["0"]; const regex = /(\d+) Feuerwehrleute/gm; const newNeed = Math.ceil(Number(parseInt(dangerText.match(regex))) / 6) - weNeed; self._ADisVehiclesNeed["0"] = newNeed; } $("#vehicle_show_table_body_all").find(".vehicle_select_table_tr").each(function (_, elem) { var VehicleID = $(elem).attr("id").replace("vehicle_element_content_", ""); // var VehicleDistanceTime = $("#vehicle_sort_" + VehicleID).attr("sortvalue"); var VehicleType = $(elem).attr("vehicle_type"); if ($("#vehicle_checkbox_" + VehicleID + ":enabled").length === 0) { return; } if ((VehicleType == "LF 20" || VehicleType == "LF 10" || VehicleType == "LF 8/6" || VehicleType == "LF 20/16" || VehicleType == "LF 10/6" || VehicleType == "LF 16-TS" || VehicleType == "HLF 20" || VehicleType == "TSF-W" || VehicleType == "TLF 2000" || VehicleType == "TLF 3000" || VehicleType == "TLF 8/8" || VehicleType == "TLF 8/18" || VehicleType == "TLF 16/24-Tr" || VehicleType == "TLF 16/25" || VehicleType == "TLF 16/45" || VehicleType == "TLF 20/40" || VehicleType == "TLF 20/40-SL" || VehicleType == "TLF 16") && self._ADisVehiclesNeed["0"] + self._ADisVehiclesNeed["1"] + self._ADisVehiclesNeed["6"] + self._ADisVehiclesNeed["7"] + self._ADisVehiclesNeed["8"] + self._ADisVehiclesNeed["9"] + self._ADisVehiclesNeed["30"] + self._ADisVehiclesNeed["37"] + self._ADisVehiclesNeed["17"] + self._ADisVehiclesNeed["18"] + self._ADisVehiclesNeed["19"] + self._ADisVehiclesNeed["20"] + self._ADisVehiclesNeed["21"] + self._ADisVehiclesNeed["22"] + self._ADisVehiclesNeed["23"] + self._ADisVehiclesNeed["24"] + self._ADisVehiclesNeed["25"] + self._ADisVehiclesNeed["26"] > 0) { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["0"]--; } else if (VehicleType == "HLF 20" && self._ADisVehiclesNeed["4"] > 0) // HLF 20 acts as RW { self._ADisVehiclesNeed["0"]--; self._ADisVehiclesNeed["4"]--; $("#vehicle_checkbox_" + VehicleID).click(); } else if ((VehicleType == "DLK 23" || VehicleType == "TM 50") && self._ADisVehiclesNeed["2"] > 0) // DLK 23 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["2"]--; } else if (VehicleType == "AB-Einsatzleitung" && self._ADisVehiclesNeed["3"] + self._ADisVehiclesNeed["34"] + self._ADisVehiclesNeed["78"] > 0) // ELW 1 + ELW 2 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["3"]--; self._ADisVehiclesNeed["34"]--; } else if (VehicleType == "ELW 2" && self._ADisVehiclesNeed["3"] + self._ADisVehiclesNeed["34"] > 0) // ELW 2 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["3"]--; self._ADisVehiclesNeed["34"]--; } else if (VehicleType == "ELW 1" && self._ADisVehiclesNeed["3"] > 0) // ELW 1 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["3"]--; } else if (VehicleType == "MTW" && self._ADisVehiclesNeed["36"] > 0) // MTW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["36"]--; } else if (VehicleType == "FwK" && self._ADisVehiclesNeed["57"] > 0) // FwK { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["57"]--; } else if (VehicleType == "GWK" && self._ADisVehiclesNeed["4"] > 0) // GWK acts as RW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["4"]--; self._ADisVehiclesNeed["39"]--; } else if ((VehicleType == "RW" || VehicleType == "HLF 20" || VehicleType == "AB-Rüst") && self._ADisVehiclesNeed["4"] > 0) // RW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["4"]--; } else if ((VehicleType == "GW-A" || VehicleType == "AB-Atemschutz") && self._ADisVehiclesNeed["5"] > 0) // GW-A { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["5"]--; } else if ((VehicleType == "GW-Öl" || VehicleType == "AB-Öl") && self._ADisVehiclesNeed["10"] > 0) // GW-Öl { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["10"]--; } else if (VehicleType == "GW-Messtechnik" && self._ADisVehiclesNeed["12"] > 0) // FwK { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["12"]--; } else if ((VehicleType == "GW-L2-Wasser" || VehicleType == "SW 1000" || VehicleType == "SW 2000" || VehicleType == "SW 2000-Tr" || VehicleType == "SW Kats" || VehicleType == "AB-Schlauch") && self._ADisVehiclesNeed["11"] > 0) // SW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["11"]--; } else if ((VehicleType == "GW-Gefahrgut" || VehicleType == "AB-Gefahrgut") && self._ADisVehiclesNeed["27"] > 0) // GW-Gefahrgut { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["27"]--; } else if (VehicleType == "GW-Höhenrettung" && self._ADisVehiclesNeed["33"] > 0) // GW-Höhenrettung { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["33"]--; } else if ((VehicleType == "Dekon-P" || VehicleType == "AB-Dekon-P") && self._ADisVehiclesNeed["53"] > 0) // Dekon-P { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["53"]--; } else if (VehicleType == "GW-Werkfeuerwehr" && self._ADisVehiclesNeed["83"] > 0) // GW-Werkfeuerwehr { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["83"]--; } else if (VehicleType == "ULF mit Löscharm" && self._ADisVehiclesNeed["84"] > 0) // ULF mit Löscharm { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["84"]--; } /* else if (VehicleType == "TM 50" && self._ADisVehiclesNeed["85"] > 0) // TM 50 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["85"]--; } */ else if (VehicleType == "Turbolöscher" && self._ADisVehiclesNeed["86"] > 0) // Turbolöscher { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["86"]--; } else if (VehicleType == "FLF" && self._ADisVehiclesNeed["75"] > 0) // FLF { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["75"]--; } else if (VehicleType == "Rettungstreppe" && self._ADisVehiclesNeed["76"] > 0) // Rettungstreppe { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["76"]--; } }); return true; } return false; } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Process Police_Department // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ProcessPoliceDepartment() { const self = this; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - // - Fire Department: Vehicles // - // - 32: FuStW // - 35: leBefKw // - 50: GruKw // - 51: FüKw // - 52: GefKw // - 72: WaWe // - 61: Polizeihubschrauber // - 79: SEK - ZF // - 80: SEK - MTF // - 81: MEK - ZF // - 82: MEK - MTF // - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (typeof self.MissionConfig.police_department == "object") // Wenn der FD-Block in der Config definiert ist { self._ADisVehiclesNeed["32"] += parseInt(self.MissionConfig.police_department.num_FuStW); self._ADisVehiclesNeed["35"] += parseInt(self.MissionConfig.police_department.num_leBefKw); self._ADisVehiclesNeed["50"] += parseInt(self.MissionConfig.police_department.num_GruKw); self._ADisVehiclesNeed["51"] += parseInt(self.MissionConfig.police_department.num_FueKw); self._ADisVehiclesNeed["52"] += parseInt(self.MissionConfig.police_department.num_GefKw); self._ADisVehiclesNeed["72"] += parseInt(self.MissionConfig.police_department.num_WaWe); self._ADisVehiclesNeed["61"] += parseInt(self.MissionConfig.police_department.num_PHu); self._ADisVehiclesNeed["79"] += parseInt(self.MissionConfig.police_department.num_SEK_ZF); self._ADisVehiclesNeed["80"] += parseInt(self.MissionConfig.police_department.num_SEK_MTF); self._ADisVehiclesNeed["81"] += parseInt(self.MissionConfig.police_department.num_MEK_ZF); self._ADisVehiclesNeed["82"] += parseInt(self.MissionConfig.police_department.num_MEK_MTF); $("#vehicle_show_table_body_all").find(".vehicle_select_table_tr").each(function (_, elem) { var VehicleID = $(elem).attr("id").replace("vehicle_element_content_", ""); // var VehicleDistanceTime = $("#vehicle_sort_" + VehicleID).attr("sortvalue"); var VehicleType = $(elem).attr("vehicle_type"); if ($("#vehicle_checkbox_" + VehicleID + ":enabled").length === 0) { return; } if (VehicleType == "FuStW" && self._ADisVehiclesNeed["32"] > 0) // FuStW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["32"]--; } else if (VehicleType == "leBefKw" && self._ADisVehiclesNeed["35"] > 0) // leBefKw { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["35"]--; } else if (VehicleType == "GruKw" && self._ADisVehiclesNeed["50"] > 0) // GruKw { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["50"]--; } else if (VehicleType == "FüKw" && self._ADisVehiclesNeed["51"] > 0) // FüKw { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["51"]--; } else if (VehicleType == "GefKw" && self._ADisVehiclesNeed["52"] > 0) // GefKw { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["52"]--; } else if (VehicleType == "WaWe 10" && self._ADisVehiclesNeed["72"] > 0) // WaWe 10 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["72"]--; } else if (VehicleType == "Polizeihubschrauber" && self._ADisVehiclesNeed["61"] > 0) // PHu { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["61"]--; } else if (VehicleType == "SEK - ZF" && self._ADisVehiclesNeed["79"] > 0) // SEK-ZF { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["79"]--; } else if (VehicleType == "SEK - MTF" && self._ADisVehiclesNeed["80"] > 0) // SEK-MTF { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["80"]--; } else if (VehicleType == "MEK - ZF" && self._ADisVehiclesNeed["81"] > 0) // MEK-ZF { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["81"]--; } else if (VehicleType == "MEK - MTF" && self._ADisVehiclesNeed["82"] > 0) // MEK-MTF { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["82"]--; } }); return true; } return false; } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Process Water_Rescue // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ProcessWaterRescue() { const self = this; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - // - Water Rescue: Vehicles // - // - 63: GW-Taucher // - 64: GW-Wasserrettung // - 69: Tauchkraftwagen (handel it here;TechnicalEmergencyService) // - // - Boote: // - // - 66: Anh MzB (handel it here;TechnicalEmergencyService) // - 67: Anh SchlB (handel it here;TechnicalEmergencyService) // - 68: Anh MzAB (handel it here;TechnicalEmergencyService) // - 70: MZB // - 71: AB-MZB (handel it here;FireDepartment) // - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (typeof self.MissionConfig.water_rescue == "object") { self._ADisVehiclesNeed["63"] += parseInt(self.MissionConfig.water_rescue.num_GW_T); self._ADisVehiclesNeed["64"] += parseInt(self.MissionConfig.water_rescue.num_GW_W); self._ADisVehiclesNeed["70"] += parseInt(self.MissionConfig.water_rescue.num_MzB); $("#vehicle_show_table_body_all").find(".vehicle_select_table_tr").each(function (_, elem) { var VehicleID = $(elem).attr("id").replace("vehicle_element_content_", ""); // var VehicleDistanceTime = $("#vehicle_sort_" + VehicleID).attr("sortvalue"); var VehicleType = $(elem).attr("vehicle_type"); if ($("#vehicle_checkbox_" + VehicleID + ":enabled").length === 0) { return; } if ((VehicleType == "GW-Taucher" || VehicleType == "Tauchkraftwagen") && self._ADisVehiclesNeed["63"] > 0) // GW-Taucher { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["63"]--; } else if (VehicleType == "GW-Wasserrettung" && self._ADisVehiclesNeed["64"] > 0) // GW-Wasserrettung { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["64"]--; } else if ((VehicleType == "MZB" || VehicleType == "Anh MzB" || VehicleType == "Anh MzAB" || VehicleType == "Anh SchlB" || VehicleType == "AB-MZB") && self._ADisVehiclesNeed["66"] + self._ADisVehiclesNeed["67"] + self._ADisVehiclesNeed["68"] + self._ADisVehiclesNeed["70"] + self._ADisVehiclesNeed["71"] > 0) // Boote { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["70"]--; } }); return true; } return false; } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Process Technical Emergency Service // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ProcessTechnicalEmergencyService() { const self = this; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - // - THW: Vehicles // - // - 39: GKW (see also FireDepartment) // - 40: MTW-TZ // - 41: MzKW // - 42: LKW K 9 // - 43: BRmG R // - // - 44: Anh DLE // - 45: MLW 5 // - 65: LKW 7 Lkr 19 tm // - 69: Tauchkraftwagen (see WaterRescue) // - // - 66: Anh MzB (see WaterRescue) // - 67: Anh SchlB (see WaterRescue) // - 68: Anh MzAB (see WaterRescue) // - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (typeof self.MissionConfig.technical_emergency_service == "object") { self._ADisVehiclesNeed["39"] += parseInt(self.MissionConfig.technical_emergency_service.num_GKW); self._ADisVehiclesNeed["40"] += parseInt(self.MissionConfig.technical_emergency_service.num_MTW_TZ); self._ADisVehiclesNeed["41"] += parseInt(self.MissionConfig.technical_emergency_service.num_MzKW); self._ADisVehiclesNeed["42"] += parseInt(self.MissionConfig.technical_emergency_service.num_LKW_K9); self._ADisVehiclesNeed["43"] += parseInt(self.MissionConfig.technical_emergency_service.num_BRmG_R); self._ADisVehiclesNeed["44"] += parseInt(self.MissionConfig.technical_emergency_service.num_Anh_DLE); self._ADisVehiclesNeed["45"] += parseInt(self.MissionConfig.technical_emergency_service.num_MLW_5); self._ADisVehiclesNeed["65"] += parseInt(self.MissionConfig.technical_emergency_service.num_LKW_7Lkr); $("#vehicle_show_table_body_all").find(".vehicle_select_table_tr").each(function (_, elem) { var VehicleID = $(elem).attr("id").replace("vehicle_element_content_", ""); // var VehicleDistanceTime = $("#vehicle_sort_" + VehicleID).attr("sortvalue"); var VehicleType = $(elem).attr("vehicle_type"); if ($("#vehicle_checkbox_" + VehicleID + ":enabled").length === 0) { return; } if (VehicleType == "GKW" && self._ADisVehiclesNeed["39"] > 0) // GKW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["39"]--; } else if (VehicleType == "MTW-TZ" && self._ADisVehiclesNeed["40"] > 0) // MTW-TZ { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["40"]--; } else if (VehicleType == "MzKW" && self._ADisVehiclesNeed["41"] > 0) // MzKW { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["41"]--; } else if (VehicleType == "LKW K 9" && self._ADisVehiclesNeed["42"] > 0) // LKW K 9 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["42"]--; } else if (VehicleType == "BRmG R" && self._ADisVehiclesNeed["43"] > 0) // BRmG R { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["43"]--; } else if (VehicleType == "Anh DLE" && self._ADisVehiclesNeed["44"] > 0) // Anh DLE { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["44"]--; } else if (VehicleType == "MLW 5" && self._ADisVehiclesNeed["45"] > 0) // MLW 5 { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["45"]--; } else if (VehicleType == "LKW 7 Lkr 19 tm" && self._ADisVehiclesNeed["65"] > 0) // LKW 7 Lkr 19 tm { $("#vehicle_checkbox_" + VehicleID).click(); self._ADisVehiclesNeed["65"]--; } }); return true; } return false; } PrepareVehicleNeedList() { const self = this; for (VehicleTypeID = 0; VehicleTypeID <= MaxVehicleID; VehicleTypeID++) { self._ADisVehiclesNeed[VehicleTypeID] = 0; } for (VehicleTypeID = 0; VehicleTypeID <= MaxVehicleID; VehicleTypeID++) { self.CountInvolvedVehiclesOfType(VehicleTypeID); } return true; } CountInvolvedVehiclesOfType(VehicleTypeID) { const self = this; for (var Key in self.Vehicles) { var Vehicle = self.Vehicles[Key]; if (Vehicle.type == VehicleTypeID) { self.SelectCountVehicles(VehicleTypeID); } }; $("#mission_vehicle_driving tbody, #mission_vehicle_at_mission tbody").find("tr").each(function (_, elem) { if ($(elem).find("a").first().attr("vehicle_type_id") == VehicleTypeID) { self.SelectCountVehicles(VehicleTypeID); } }); return; } SelectCountVehicles(VehicleTypeID) { const self = this; var VehicleTypeID = Number(VehicleTypeID); if ([38].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed[VehicleTypeID]--; } else if ([0, 1, 6, 7, 8, 9, 30, 37, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26].indexOf(VehicleTypeID) != -1) { // LF acts as 'Tragehilfe' // 30 acts as Rüstwagen if ([30].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["4"]--; } // 0 acts as all LF self._ADisVehiclesNeed["0"]--; } else if ([74].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["74"]--; self._ADisVehiclesNeed["28"]--; self._ADisVehiclesNeed["29"]--; } else if ([73].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["73"]--; } else if ([28].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["28"]--; } else if ([29].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["29"]--; } else if ([31].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["31"]--; } else if ([55].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["55"]--; } else if ([56].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["56"]--; } else if ([58].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["58"]--; } else if ([59].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["59"]--; } else if ([60].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["60"]--; } else if ([2].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["2"]--; } else if ([34, 78].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["3"]--; self._ADisVehiclesNeed["34"]--; } else if ([3].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["3"]--; } else if ([36].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["36"]--; } else if ([57].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["57"]--; } else if ([4, 39].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["4"]--; self._ADisVehiclesNeed["39"]--; } else if ([4, 47].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["4"]--; } else if ([5, 48].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["5"]--; } else if ([10, 49].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["10"]--; } else if ([12].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["12"]--; } else if ([11, 13, 14, 15, 16].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["11"]--; } else if ([27, 77].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["27"]--; } else if ([33].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["33"]--; } else if ([53, 54].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["53"]--; } else if ([83].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["83"]--; } else if ([84].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["84"]--; } else if ([85].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["85"]--; self._ADisVehiclesNeed["2"]--; } else if ([86].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["86"]--; } else if ([75].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["75"]--; } else if ([76].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["76"]--; } else if ([32].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["32"]--; } else if ([35].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["35"]--; } else if ([50].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["50"]--; } else if ([51].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["51"]--; } else if ([52].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["52"]--; } else if ([72].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["72"]--; } else if ([61].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["61"]--; } else if ([79].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["79"]--; } else if ([80].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["80"]--; } else if ([81].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["81"]--; } else if ([82].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["82"]--; } else if ([63, 69].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["63"]--; } else if ([64].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["64"]--; } else if ([66, 67, 68, 70, 71].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["70"]--; } else if ([40].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["40"]--; } else if ([41].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["41"]--; } else if ([42].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["42"]--; } else if ([43].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["43"]--; } else if ([44].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["44"]--; } else if ([45].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["45"]--; } else if ([65].indexOf(VehicleTypeID) != -1) { self._ADisVehiclesNeed["65"]--; } } CheckNeedMoreVehicles() { const self = this; var NeedMoreVehicles = false; for (var Key in self._ADisVehiclesNeed) { var VehicleCount = self._ADisVehiclesNeed[Key]; if (VehicleCount > 0) { NeedMoreVehicles = true; } }; return NeedMoreVehicles; } } window.AutomaticDisposeCall = new AutomaticDispose();