//=require ../node_modules/dexie/dist/dexie.js // Helper Scripts String.prototype.replaceAll = function (find, replace) { return this.replace(new RegExp(find.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g"), replace); } class AutomaticDisposeFaye { constructor(myFaye) { let self = this; if (typeof myFaye === 'undefined') { return } myFaye.subscribe('/private-user676600de', function (data) { eval(self.replaceWithPrefix(data)); }.bind(self)); myFaye.subscribe('/private-alliance1749de', function (data) { eval(self.replaceWithPrefix(data)); }.bind(self)); myFaye.subscribe('/allde', function (data) { eval(self.replaceWithPrefix(data)); }.bind(self)); return new Proxy(this, { get: function (target, property) { if (property in target) { return target[property]; } return function () { var targs = [].slice.call(arguments, 0); return function noSuchMethod(object, props, args) { console.log("noSuchMethod", object, props, args); }(target, property, targs); }; } }); } replaceWithPrefix(data) { return data.replaceAll('allianceChat', 'this.allianceChat') .replaceAll('mission_participation_add', 'this.mission_participation_add') .replaceAll('missionDelete', 'this.missionDelete') .replaceAll('missionInvolved', 'this.missionInvolved') .replaceAll('missionMarkerAdd', 'this.missionMarkerAdd') .replaceAll('patientDelete', 'this.patientDelete') .replaceAll('patientMarkerAddCombined', 'this.patientMarkerCombinedAdd') .replaceAll('patientMarkerAdd', 'this.patientMarkerAdd') .replaceAll('prisonerMarkerAdd', 'this.prisonerMarkerAdd') .replaceAll('radioMessage', 'this.radioMessage') .replaceAll('vehicleDrive', 'this.vehicleDrive') .replaceAll('vehicleMarkerAdd', 'this.vehicleMarkerAdd') .replaceAll('user_id', 'window.user_id') .replaceAll('"window.user_id"', 'user_id') } subscribe(data) { // current unknown // console.log('subscribe',JSON.stringify(data)); } allianceChat(data) { // {"mission_id":null,"whisper":0,"mission_caption":null,"message":"Hallo zusammen.","alliance_admin":"false","alliance_coadmin":"true","user_id":220122,"username":"Bjoern0203","date":"09:20","date_hidden":"Montag, 18. Februar 2019, 09:20 Uhr"} // console.log('allianceChat', JSON.stringify(data)) } mission_participation_add(id) { // 977642907 // console.log('mission_participation_add', JSON.stringify(id)) } missionDelete(id) { // 976896964 // console.log('missionDelete', JSON.stringify(id)) } missionInvolved(id, bool) { // 977642907, true // console.log('missionInvolved', JSON.stringify({id:id,bool:bool})) } missionMarkerAdd(data) { /* let demo = { "sw_start_in": -1, "sw": false, "tv": 0, "mtid": 0, "kt": false, "alliance_id": 1749, "prisoners_count": 0, "patients_count": 0, "user_id": 124796, "address": "Breslauer Stra\u00dfe, 31157 Sarstedt", "vehicle_state": 2, "missing_text": null, "missing_text_short": null, "id": 977627781, "live_current_value": 100, "finish_url": "", "date_end": 1550477815, "date_now": 1550477741, "longitude": 9.858007, "latitude": 52.236176, "tlng": null, "tlat": null, "icon": "fire_gruen", "caption": "M\u00fclleimerbrand", "captionOld": "" } */ let missionData = { "missionID": String(data.id), "type": String(data.mtid), "runner": (data.kt !== false ? 'kt' : data.user_id !== window.user_id ? (null === data.user_id ? 've' : 'vm') : data.sw === true ? 'os' : 'om'), "name": data.caption, "street": data.address.split(',')[0], "village": data.address.split(',')[1], "available": 'true', "done": 'false', "last_check": Math.floor(new Date().getTime() / 1000), "next_check": Math.floor(new Date().getTime() / 1000) + 1 } if (data.vehicle_state === 0 && (data.missing_text === null || (data.missing_text && data.missing_text.includes('Zusätzlich benötigte Fahrzeuge')))) { window.AutomaticDisposeCall.AddMissionsToQueue(missionData) } else if (data.missing_text === 'Gefangene sollen abtransportiert werden.') { window.AutomaticDisposeCall.AddPoliceSprechwunschToQueue(String(data.id)); } // console.log('missionMarkerAdd', JSON.stringify(data)) } patientDelete(id) { // 527339744 // console.log('patientDelete', JSON.stringify(id)) } patientMarkerCombinedAdd(data) { // HINT: original name: patientMarkerAddCombined // ?? // console.log('patientMarkerCombinedAdd', JSON.stringify(data)) } patientMarkerAdd(data) { // {"missing_text":"Wir benötigen: RTW","name":"Sandra P.","mission_id":977666364,"id":527340413,"miliseconds_by_percent":0,"target_percent":50,"live_current_value":50} // console.log('patientMarkerAdd', JSON.stringify(data)) } prisonerMarkerAdd(data) { // {"name":"Alina W.","mission_id":977267962,"id":35681718} // console.log('prisonerMarkerAdd', JSON.stringify(data)) } radioMessage(data) { // {"mission_id":0,"additionalText":"","user_id":676600,"type":"vehicle_fms","id":15119084,"fms_real":1,"fms":1,"fms_text":"Einsatzbereit \u00fcber Funk","caption":"LF 20/16 - 1"} // console.log('radioMessage', JSON.stringify(data)) } vehicleDrive(data) { // {"b":1450740,"rh":"24f794c42beaa064273e933a62a449a514750fe70066374cb3845ee7c2df62dd","vom":true,"vtid":32,"mid":"977602777","dd":-1,"s":"[[51.7047,9.99451,2.3],[51.70484,9.99445,4.8],[51.70514,9.9944,2.0],[51.70514,9.99427,0.6],[51.70521,9.99427,1.6],[51.70541,9.99428,6.2],[51.70619,9.9942,11.2],[51.70761,9.9941,0.5],[51.70767,9.99409,3.6],[51.70788,9.99485,2.6],[51.70805,9.99538,0.7],[51.7081,9.99553,0.9],[51.7082,9.99557,2.5],[51.70848,9.9957,0.9],[51.70859,9.99568,0.9],[51.70865,9.99555,1.0],[51.70873,9.9954,0.8],[51.70879,9.99529,6.7],[51.70963,9.99519,4.2],[51.71016,9.99524,7.0],[51.71016,9.99668,3.0],[51.70996,9.99718,2.3],[51.70981,9.99758,7.3],[51.7093,9.9988,6.4],[51.70886,9.99988,1.6],[51.7088,10.00019,0.4],[51.70882,10.00027,0.9],[51.70887,10.00043,1.1],[51.70905,10.00043,0.8],[51.70917,10.00044,0.9],[51.70932,10.00044,1.8],[51.70961,10.00044,1.3],[51.70982,10.00045,1.1],[51.70987,10.00066,1.4],[51.70993,10.00094,1.6],[51.71004,10.00121,6.9],[51.71053,10.00242,0]]","fms":3,"fms_real":3,"user_id":220122,"isr":"/images/police2.png","in":"/images/police.png","apng_sonderrechte":"false","ioverwrite":"true","caption":"Rhume 31/05 FuStw","id":9187272,"sr":"0"} //console.log('vehicleDrive', JSON.stringify(data)) } vehicleMarkerAdd(data) { // {"bulkInsert":false,"id":12299183,"b":3426848,"fms":5,"fms_real":5,"c":"[BS] DRK 40-83-11 (RTW)","t":28} //console.log('vehicleMarkerAdd', JSON.stringify(data)) } } 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(myFaye) { let self = this; self.MaxVehicleID = 86 self.MissionType = null self.MissionID = null self.MyRunner = null self.MyRunnerSettings = null self.OweSecure = false self._ADisVehiclesNeed = {} self.MissionConfig = {} self.Vehicles = {} self.Patients = {} self.ADis_MyHead = document.getElementsByTagName('head')[0]; self.ADis_MyBody = document.getElementsByTagName('body')[0]; // - // - Sprechwunsch Variablen // - self.Jails = []; self.JailRegEx = /\(Freie Zellen\:\s+(\d)\,\s+Entfernung\:\s+(\d+\,\d+)\s+km(?:\,\s+Abgabe an Besitzer\:\s+(\d+)%)?\)/g; self.Hospitals = []; self.RescueVehicleFrameWatchDog = null; self.PoliceVehicleFrameWatchDog = null; self.ADisDB = new Dexie('LSS_AutomaticDispo'); self.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],[missionID+runner+done],[runner+available+done]" }); self.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' }); }); self.ADisDB.open().catch((err) => { console.error(err.stack || err); }); self.ADisDB.on("ready", () => { self.adis_settings = { 'Krankentransport-Automatic': false, 'Sprechwunsch-Automatic': false, 'MissionsOwn-Automatic': false, 'Alliance-Automatic': false, 'AllianceEvent-Automatic': false } self.genSettings() if (window.location.pathname === "/" || window.location.pathname === "/#") { self.GetAvailableMissions() self.IndexPage() setInterval(self.CollectRescueSprechwuensche.bind(self), 3500); setInterval(self.OpenNextRescueSprechwunsch.bind(self), 1000); self.CollectRescueSprechwuensche(); setInterval(self.CollectPoliceSprechwuensche.bind(self), 3500); setInterval(self.OpenNextPoliceSprechwunsch.bind(self), 1000); self.CollectPoliceSprechwuensche(); setTimeout(() => { self.CollectMissions(); self.ReadAndAddMissions(); setInterval(function () { let self = this; self.ADisSettings.runner.forEach((runner) => { self.OpenNextMission.call(self, runner) }) }.bind(self), 1000); }, 500); } /** * / /=require ../script/mission.js */ // - // - Sprechwunsch Handler Rettung // - if (window.location.pathname.indexOf("/vehicles/") !== -1 && window.name == 'adis-sprechwunsch-rescue') { self.Check_Call_AB_Active(); // else //self.Check_Call_Hospitals(); } // - // - Sprechwunsch Handler Polizei/Gefangene // - if (window.location.pathname.indexOf("/missions/") !== -1 && window.name == 'adis-sprechwunsch-police') { //window.console.log('DEBUG:::: Start Police Active') self.Check_Call_Police_Active(); } else if (window.location.pathname.indexOf("/missions/") !== -1 && window.name != 'adis-sprechwunsch-police') { //window.console.log('DEBUG:::: Start Mission') self.StartMission(); } }); new AutomaticDisposeFaye(myFaye) } 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(); setTimeout(self.genSettings.bind(self), 1000); } ADSettings() { let self = this; return new Dexie.Promise((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 Dexie.Promise((resolve, reject) => { 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; self.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(() => { 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(); self.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 Dexie.Promise((resolve, reject) => { self.ADisDB.ADisSprechwunschPolice.where({ done: 'false' }).each((myWunsch) => { if (!$("#mission_" + myWunsch.missionID).text().match(/Gefangene sollen abtransportiert werden/g) && ($('#mission_panel_' + myWunsch.missionID).hasClass('mission_panel_green') || $('#mission_panel_' + myWunsch.missionID).hasClass('mission_panel_yellow'))) { $("#mission_" + myWunsch.missionID).remove(); return self.RemovePoliceSprechwunschFromQueue(myWunsch.missionID); } }) return resolve(); }).then(() => { var MOIODOS = $('div#mission_list div.missionSideBarEntry:visible'); return MOIODOS.each((_, elem) => { var MissionID = $(elem).attr("mission_id"); if ($(elem).text().match(/Gefangene sollen abtransportiert werden/g) && $('#mission_panel_' + MissionID).hasClass('mission_panel_red')) { 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; self.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((MissionID) => { // self.RemovePoliceSprechwunschFromQueue(MissionID).then((deleteCount) => { // $("#adis-sprechwunsch-police-frame").attr("src", ""); // $("#adis-sprechwunsch-police-frame").attr("mission_id", "empty"); // }); //}, 1500, 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() { let self = this; if (($('#h2_prisoners').length > 0 || $('img.patientPrisonerIcon').length > 0) && !self.includesString($('#missionH1').text(), '[verband]')) { //TODO: check if Verband or Event and // Maybe done with //__FIXX__20192 self.Collect_Jails(); } else { let MissionID = document.location.pathname.substr(document.location.pathname.lastIndexOf("/") + 1); // console.log('Check_Call_Police_Active', MissionID) self.RemovePoliceSprechwunschFromQueue(MissionID).then((deleteCount) => { tellParent(`console.log('sprechwunsch:${window.name}:${MissionID}');setTimeout(function(){ window.AutomaticDisposeCall.FreeIframe('adis-sprechwunsch-police-frame');},500);`); }); } } Check_Call_AB_Active() { let self = this; if ($("h1:contains('AB-')").length > 0 && $("div.alert.alert-info:contains('Welches Zugfahrzeug soll zum Transport genutzt werden')").length > 0) { let href = $("a:contains('Alarmieren')").first().attr("href"); //console.log("DEBUG:::::: URL: ", href) document.location.href = document.location.origin + href; } else { self.Check_Call_Hospitals(); } } // Gefängnis auswählen Collect_Jails() { // TODO: hardening the processing for verband/event missions // Maybe done with the //__FIXX__20192 let self = this; self.Jails = []; var CountGefangene = Number(parseInt($('#h2_prisoners').text())); let ImThere = $('#mission_vehicle_at_mission tr > td:nth-child(5) > a:contains("Jomaar"),#mission_vehicle_driving tr > td:nth-child(7) > a:contains("Jomaar")').length; 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) { self.Send_Vehicle_To_Jail() } else { $("#mission_vehicle_driving tbody, #mission_vehicle_at_mission tbody").find("tr").each((_, elem) => { //__FIXX__20192 let me = $(elem).find('td:nth-child(5) > a:contains("Jomaar")').length; if (me > 0) { //__FIXX__20192 var CalledVehicleID = parseInt($(elem).find("a").first().attr("vehicle_type_id")); if (CalledVehicleID == 52) { CountGefangene -= 5; } else if (CalledVehicleID == 32) { CountGefangene -= 1; } //__FIXX__20192 } //__FIXX__20192 }); if (ImThere > 0) { if ($('#vehicle_show_table_all tr[vehicle_type="GefKw"] input[type="checkbox"]').length > 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"]').length > 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').length > 0) { $('#mission_alarm_btn').click(); } else { let MissionID = document.location.pathname.substr(document.location.pathname.lastIndexOf("/") + 1); self.RemovePoliceSprechwunschFromQueue(MissionID).then((deleteCount) => { tellParent(`console.log('sprechwunsch:${window.name}:${MissionID}');setTimeout(function(){ window.AutomaticDisposeCall.FreeIframe('adis-sprechwunsch-police-frame');},500);`); }); } } } // Gefängnis einlieferung Send_Vehicle_To_Jail() { var self = this; var JailHref = this.Jails[0].href var MissionID = document.location.pathname.substr(document.location.pathname.lastIndexOf("/") + 1); self.RemovePoliceSprechwunschFromQueue(MissionID).then((deleteCount) => { tellParent(`/*console.log('sprechwunsch:${window.name}:${MissionID}');*/setTimeout(function(){ window.AutomaticDisposeCall.FreeIframe('adis-sprechwunsch-police-frame');},250);`); 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"; self.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"; self.ADis_MyHead.appendChild(scriptElement); // - // - Navbar Dashboard // - var styleElement = document.createElement("link"); styleElement.rel = "stylesheet"; styleElement.type = "text/css"; styleElement.media = "screen"; styleElement.href = self.ADisSettings.url + self.ADisSettings.branch + "/style/interface.css"; self.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) => { e.preventDefault(); 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) => { e.preventDefault(); 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) => { e.preventDefault(); 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) => { e.preventDefault(); 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) => { e.preventDefault(); 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((e) => { e.preventDefault(); $("#adis-dashboard").css("display", "flex"); $("#adis-dashboard").animate({ opacity: 1 }, 200); }); $("#adis-dashboard-close-button").click((e) => { e.preventDefault(); $("#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], () => { self.ADSettings().then(() => { return self.ADisDB.ADisMissions.toCollection() }).then((Missions) => { if (typeof Missions !== "undefined") { return Missions.count((count) => { if (count > 0) { return Missions.each((MyMission) => { var MissionElement = $("#mission_" + MyMission.missionID); if (MissionElement.length == 0 || MissionElement.text().match(/Gefangene sollen abtransportiert werden/g) || $('#mission_panel_' + MyMission.missionID).hasClass('mission_panel_green') || $('#mission_panel_' + MyMission.missionID).hasClass('mission_panel_yellow')) { // remove //console.log("Remove :", MyMission) self.RemoveMissionsFromQueue(MyMission.missionID) } }); } }); } }).then(() => { if (typeof MissionID != 'undefined') { if ($('#mission_panel_' + MissionID).hasClass('mission_panel_red') && !$("#mission_" + MissionID).text().match(/Gefangene sollen abtransportiert werden/g)) { return self.AddMission(MissionID, Runner); } } else { return self.ADisSettings.runner_divs.forEach((RunnerX, index) => { $("#" + RunnerX).find(".missionSideBarEntry").each((index, elem) => { MissionID = $(elem).attr("mission_id"); if ($('#mission_panel_' + MissionID).hasClass('mission_panel_red') && !$("#mission_" + MissionID).text().match(/Gefangene sollen abtransportiert werden/g)) { return self.AddMission(MissionID, RunnerX); } return true; }); }) } }); }); } 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; /* 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({ "missionID": MissionID, "type": MissionType, "runner": runnerOpt, "name": MissionName, "street": MissionStreet, "village": MissionVillage, "available": (available !== undefined) ? 'true' : 'false', "done": 'false', "last_check": Math.floor(new Date().getTime() / 1000), "next_check": Math.floor(new Date().getTime() / 1000) + 1 }); }); */ } return Missions.count((count) => { //console.log(count, runnerOpt); if (count > 0) { return Missions.each((Mission) => { 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]; //console.log('update mission', _MissionID) return self.ADisDB.ADisAvailabelMissions.get({ type: _MissionType }).then((available) => { //console.table(Mission) //console.table({ // "missionID": _MissionID, // "type": _MissionType, // "runner": runnerOpt, // "name": MissionName, // "street": MissionStreet, // "village": MissionVillage, // "available": (available !== undefined) ? 'true' : 'false', // "done": "false", // "last_check": Mission.last_check, // "next_check": Mission.next_check //}) return self.UpdateMissions({ "missionID": _MissionID, "type": _MissionType, "runner": runnerOpt, "name": MissionName, "street": MissionStreet, "village": MissionVillage, "available": (available !== undefined) ? 'true' : 'false', "done": "false", "last_check": Mission.last_check, "next_check": Mission.next_check }); }); }); } 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]; // console.log('new mission', MissionID) return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { return self.AddMissionsToQueue({ "missionID": MissionID, "type": MissionType, "runner": runnerOpt, "name": MissionName, "street": MissionStreet, "village": MissionVillage, "available": (available !== undefined) ? 'true' : 'false', "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(Mission).catch((err) => { console.error(err) }); } UpdateMissions(Mission) { const self = this; return self.ADisDB.ADisMissions.put(Mission).catch((err) => { console.error(err) }) } FreeIframe(Runner) { const self = this; const runnerID = self.ADisSettings.runner.indexOf(Runner) const runnerIframe = self.ADisSettings.runner_iframes[runnerID]; if (Runner == 'adis-sprechwunsch-police-frame') { $('#' + Runner).attr("src", ''); $('#' + Runner).attr("mission_id", 'empty'); } else { $('#' + runnerIframe).attr("src", ''); $('#' + runnerIframe).attr("mission_id", 'empty'); } } 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("DEBUG:::::: 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); // }) } return }); } else { return; //setTimeout(self.OpenNextMission.bind(self), 1000, Runner); } }); } return; //setTimeout(self.OpenNextMission.bind(self), 1000, 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("DEBUG:::::: MissionID", self.MissionID); // console.log("DEBUG:::::: MissionType", self.MissionType); // console.log("DEBUG:::::: Window", window.name); // console.log("DEBUG:::::: self.MyRunner", self.MyRunner); // console.log("DEBUG:::::: self.MyRunnerSettings", self.MyRunnerSettings); // if (self.includesString($('#iframe-inside-container > div.missionNotFound > div.missionNotFoundText').text(), 'Der Einsatz wurde erfolgreich abgeschlossen.')) { // console.log("DONE: ", self.MissionID); // return self.RemoveMissionsFromQueue(self.MissionID).then(() => { // return tellParent(`console.log('handler:1000:done:${window.name}:${self.MissionID}');window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');`); // delete Mission here as completed // }) // } else { return self.ADisDB.transaction('rw', [self.ADisDB.ADisMissions], () => { self.ADSettings().then((setting) => { if (setting[self.MyRunnerSettings] === 'true') { let where = { missionID: self.MissionID, runner: self.MyRunner, done: 'false' } // console.log(where); return self.ADisDB.ADisMissions.where(where).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) => { // console.table(mywunsch); return self.MainHandler() }); } else { return self.UpdateMissionsToDone(self.MissionID).then(() => { return tellParent(`/*console.log('wunsch:1000:done:${window.name}:${self.MissionID}');*/window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');`); }) } }); } else { return self.RemoveMissionsFromQueue(self.MissionID).then(() => { return tellParent(`/*console.log('wunsch:2000:done:${window.name}:${self.MissionID}');*/window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');`); }) } }) }) // } }, 500); } MainHandler() { const self = this; if (self.includesString($('#iframe-inside-container > div.missionNotFound > div.missionNotFoundText').text(), 'Der Einsatz wurde erfolgreich abgeschlossen.')) { //console.log("DEBUG:::::: DONE: ", self.MissionID); return self.RemoveMissionsFromQueue(self.MissionID).then(() => { return tellParent(`/*console.log('handler:1000:done:${window.name}:${self.MissionID}');*/window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');`); // delete Mission here as completed }) } /*else if (self.includesString($('#iframe-inside-container > div.alert.fade.in.alert-success').text(), "wurde erfolgreich informiert") ) { console.log("SEND"); console.log("SEND: ", self.MissionID); return self.UpdateMissionsToDone(self.MissionID).then(() => { return tellParent(`console.log('handler:2000:update:${window.name}:${self.MissionID}');window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');`); // update Mission here as updated or full }); } */ else { setTimeout(function () { if (['adis-ownmissions', 'adis-plannedevents', 'adis-krankentransporte'].indexOf(window.name) != -1) { //console.log("DEBUG:::::: WILL SEND?", window.name, self.MissionID) 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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"]').length > 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').length > 0) { $('#mission_alarm_btn').click(); } } }); } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Grab Mission-Configuration from GitHub // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CheckMissionAutomatic() { const self = this; var setOpt; if (window.name == 'adis-ownmissions' || window.name == 'adis-plannedevents') { setOpt = 'MissionsOwn-Automatic'; } else if (window.name == 'adis-krankentransporte') { setOpt = 'Krankentransport-Automatic'; } if (setOpt && self.MyRunner) { self.ADSettings().then((setting) => { if (setting[setOpt] == 'true') { let where = { missionID: self.MissionID, runner: self.MyRunner, done: 'false' } var coll = self.ADisDB.ADisMissions.where(where) 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]; if (self.MyRunner == 'os') { self.OweSecure = true; } self.GetMissionConfiguration(Mission.type); } }); } } GetMissionConfiguration(MissionType) { const self = this; return self.ADisDB.transaction('rw', [self.ADisDB.ADisMissions, self.ADisDB.ADisAvailabelMissions], () => { return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType.toString() }).then((availableMission) => { if (availableMission != undefined && availableMission.jsondata) { self.MissionConfig = availableMission.jsondata; //console.log('DEBUG:::: 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); } }); }); } StartAlarmProcessProc() { const self = this; new Dexie.Promise.resolve().then(() => { return self.PrepareVehicleNeedList(); }).then(() => { return self.CollectInvolvedVehicles(); }).then(() => { if (self.MyRunner == 'os' && self.Vehicles.length > 0) { return } return self.CollectPatients(); }) .then(() => { if (self.MyRunner == 'os' && self.Vehicles.length > 0) { return } return self.ProcessEmergencyMedicalService() }) .then(() => { if (self.MyRunner == 'os' && self.Vehicles.length > 0) { return } return self.ProcessFireDepartment() }) .then(() => { if (self.MyRunner == 'os' && self.Vehicles.length > 0) { return } return self.ProcessPoliceDepartment() }) .then(() => { if (self.MyRunner == 'os' && self.Vehicles.length > 0) { return } return self.ProcessTechnicalEmergencyService() }) .then(() => { if (self.MyRunner == 'os' && self.Vehicles.length > 0) { return } return self.ProcessWaterRescue() }) .then(() => { if (self.OweSecure && $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]:checked').length == 0) { if ($('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]:not(:checked)').length > 0) { $('#vehicle_show_table_all tr[vehicle_type="FuStW"] input[type="checkbox"]:not(:checked)')[0].click(); } } let vhcalled = window.$('#vehicle_show_table_all input[type="checkbox"]:checked'); // window.console.log("DEBUG:::: Clicked Vehicles: %s %s", window.name, String(self.MissionID), vhcalled.length, vhcalled); // window.console.log("WILL KLICK SEND", self.MissionID, window.name) self.UpdateMissionsToDone(self.MissionID).then(() => { //tellParent(`console.log('ok:${window.name}:${self.MissionID}');`); if (vhcalled.length == 0) { //window.console.log('nocars selected...', vhcalled.length); if (window.name == 'adis-krankentransporte') { //window.console.log('nocars selected... select KTW'); $('#aao_2753841').click(); window.$('#mission_alarm_btn').click(); } else { //window.console.log('nocars selected... start new run'); tellParent(`/*console.log('nocars:${window.name}:${self.MissionID}');*/window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');`); } } else { tellParent(`/*console.log('sendcars:${window.name}:${self.MissionID}');*/setTimeout(function(){window.AutomaticDisposeCall.FreeIframe('${self.MyRunner}');},1000);`); window.$('#mission_alarm_btn').click(); //window.console.log("WILL KLICK SEND3", self.MissionID, window.name) } }); }) } StartAlarmProcess() { const self = this; var $div = $("#mission-form > div:nth-child(7) > a"); var isShow = $div.is(':hidden'); //console.log($div, isShow); /* if ($div.length && isShow && 1 == 0) { var observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { console.log(mutation.type, self.MissionID); console.table(mutation, self.MissionID); if (mutation.attributeName === "style") { self.StartAlarmProcessProc() } }); }); observer.observe($div[0], { attributes: true, characterData: true }); $div.click(); } else { */ //window.console.log('StartAlarmProcessProc()'); self.StartAlarmProcessProc() //} } // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Collect Involved Vehicles & Patients // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CollectInvolvedVehicles() { let self = this; $("#mission_vehicle_driving tbody").find("tr").each(function (_, elem) { try { var f = $(elem).find("a").first() var VehicleID = f.attr("href").substr(f.attr("href").lastIndexOf("/") + 1); var VehicleName = f.text(); var VehicleType = f.attr("vehicle_type_id"); if (typeof VehicleType !== 'undefined') { self.Vehicles[VehicleID] = { "id": VehicleID, "name": VehicleName, "type": VehicleType } } } catch (e) {} }); $("#mission_vehicle_at_mission tbody").find("tr").each(function (_, elem) { try { var f = $(elem).find("a").first() var VehicleID = f.attr("href").substr(f.attr("href").lastIndexOf("/") + 1); var VehicleName = f.text(); var VehicleType = f.attr("vehicle_type_id"); if (typeof VehicleType !== 'undefined') { self.Vehicles[VehicleID] = { "id": VehicleID, "name": VehicleName, "type": VehicleType } } } catch (e) {} }); //console.table(self.Vehicles); 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; if ($(elem).find(".alert-danger").length > 0) { let emergencyText = $(elem).find(".alert-danger").text(); // Wir benötigen einen RTW oder KTW Typ B. if (emergencyText.indexOf("KTW Typ B") != -1) { PatientNeedSEGKTWB = true; } // Wir benötigen einen RTW. if (emergencyText.indexOf("RTW") != -1) { PatientNeedRTW = true; } // Wir benötigen einen NEF. if (emergencyText.indexOf("NEF") != -1) { PatientNeedNEF = true; } // Wir benötigen einen RTH. if (emergencyText.indexOf("RTH") != -1) { PatientNeedRTH = true; } // Wir benötigen einen LNA. if (emergencyText.indexOf("LNA") != -1) { PatientNeedLNA = true; } // Wir benötigen einen OrgL. if (emergencyText.indexOf("OrgL") != -1) { PatientNeedOrgL = true; } // Wir benötigen eine Tragehilfe (z.B. durch ein LF). if (emergencyText.indexOf("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; } if (Object.keys(self.Patients).length == 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"]++; } } else { 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"]++; } if (Patient.need_OrgL && self._ADisVehiclesNeed["56"] < 1) { self._ADisVehiclesNeed["56"]++; } if (Patient.need_Tragehilfe == true) { self._ADisVehiclesNeed["0"]++; } if (self.MissionConfig.emergency_medical_service.use_RTW == true || Patient.need_RTW == true) { self._ADisVehiclesNeed["28"]++; } if (self.MissionConfig.emergency_medical_service.use_NEF == true || Patient.need_NEF == true) { self._ADisVehiclesNeed["29"]++; } if (self.MissionConfig.emergency_medical_service.use_RTH == true || Patient.need_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(); // TODO: need to check if already LF driving... if (self.includesString(dangerText, "Wir benötigen noch min.") && self.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 (let VehicleTypeID = 0; VehicleTypeID <= self.MaxVehicleID; VehicleTypeID++) { self._ADisVehiclesNeed[VehicleTypeID] = 0; } for (let VehicleTypeID = 0; VehicleTypeID <= self.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, 62].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; } } $(document).ready(function () { var $div = $("a.missing_vehicles_load:contains('Fahrzeuganzeige begrenzt! Fehlende Fahrzeuge laden!')"); //var isHidden = $div.is(':hidden'); var ppppp = undefined; //var MissionID = document.location.pathname.substr(document.location.pathname.lastIndexOf("/") + 1); //console.log('DEBUG::', MissionID, $div, isHidden); if ($div.length >= 1) { //console.log('DEBUG::', MissionID, 'Start Observer'); var observer = new MutationObserver(function (mutations) { //console.log('DEBUG::', 'mutations', mutations) mutations.forEach(function (mutation) { //console.log('DEBUG::', 'mutation', mutation) if (mutation.attributeName === "style") { if ($(mutation.target).css('display') == 'none') { if (typeof ppppp != 'undefined') { clearTimeout(ppppp); } ppppp = setTimeout(function () { //window.console.log('DEBUG:::', 'Start Observer AutomaticDispose()') window.AutomaticDisposeCall = new AutomaticDispose(window.faye); }, 250); } } else if (mutation.attributeName === "href") { if (typeof ppppp != 'undefined') { clearTimeout(ppppp); } $(mutation.target).click(); } }); }); $div.each(function (index, item) { observer.observe(item, { attributes: true, characterData: true, attributeOldValue: true, characterDataOldValue: true }); }) $div.click(); } else { //window.console.log('DEBUG:::', 'Start AutomaticDispose()') window.AutomaticDisposeCall = new AutomaticDispose(window.faye); } });