diff --git a/dist/autoloader.js b/dist/autoloader.js index 156a419..a185f93 100755 --- a/dist/autoloader.js +++ b/dist/autoloader.js @@ -1,4 +1,4 @@ -/*Generated on:Mon Dec 17 2018 21:56:48 GMT+0100 (CET)*/ +/*Generated on:Mon Dec 17 2018 23:07:04 GMT+0100 (CET)*/ var AutomaticDispose_Branch = "master"; var AutomaticDispose_URL = "https://jf.git.rest/Jomaar/automatic-dispose/raw/branch/"; var da_lss_adis_time = new Date().getTime(); diff --git a/dist/autoloaderV2.js b/dist/autoloaderV2.js index 255cacb..53d4225 100644 --- a/dist/autoloaderV2.js +++ b/dist/autoloaderV2.js @@ -1,4 +1,4 @@ -/*Generated on:Mon Dec 17 2018 21:56:48 GMT+0100 (CET)*/ +/*Generated on:Mon Dec 17 2018 23:07:04 GMT+0100 (CET)*/ /* * Dexie.js - a minimalistic wrapper for IndexedDB * =============================================== @@ -18157,11 +18157,36 @@ class AutomaticDispose { } }).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) => { if (count > 0) { - return Missions.each(() => { + return Missions.each((Mission) => { var MissionElement = $("#mission_" + ID); var _MissionID = MissionElement.attr("mission_id"); var _MissionType = MissionElement.attr("mission_type_id"); @@ -18173,22 +18198,24 @@ class AutomaticDispose { return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { - return self.AddMissionsToQueue({ - "id": _MissionID, + return self.UpdateMissions({ + "missionID": _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 + "available": (available !== undefined) ? 'true' : 'false', + "done": "false", + "last_check": Mission.last_check, + "next_check": Mission.next_check }); }); }); - } else { + } + /* + else { var MissionElement = $("#mission_" + ID); var MissionID = MissionElement.attr("mission_id"); @@ -18215,24 +18242,14 @@ class AutomaticDispose { }); }); } + */ }); }); } 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) => { + return self.ADisDB.ADisMissions.put(Mission).catch((err) => { console.error(err) }); diff --git a/src/autoloaderV2.js b/src/autoloaderV2.js index 7136956..5d391d3 100644 --- a/src/autoloaderV2.js +++ b/src/autoloaderV2.js @@ -916,11 +916,36 @@ class AutomaticDispose { } }).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) => { if (count > 0) { - return Missions.each(() => { + return Missions.each((Mission) => { var MissionElement = $("#mission_" + ID); var _MissionID = MissionElement.attr("mission_id"); var _MissionType = MissionElement.attr("mission_type_id"); @@ -932,22 +957,24 @@ class AutomaticDispose { return self.ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { - return self.AddMissionsToQueue({ - "id": _MissionID, + return self.UpdateMissions({ + "missionID": _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 + "available": (available !== undefined) ? 'true' : 'false', + "done": "false", + "last_check": Mission.last_check, + "next_check": Mission.next_check }); }); }); - } else { + } + /* + else { var MissionElement = $("#mission_" + ID); var MissionID = MissionElement.attr("mission_id"); @@ -974,24 +1001,14 @@ class AutomaticDispose { }); }); } + */ }); }); } 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) => { + return self.ADisDB.ADisMissions.put(Mission).catch((err) => { console.error(err) }); diff --git a/src/autoloaderV2/ems.js b/src/autoloaderV2/ems.js new file mode 100644 index 0000000..6f47cc7 --- /dev/null +++ b/src/autoloaderV2/ems.js @@ -0,0 +1,239 @@ + + 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; + } + + 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; + } \ No newline at end of file diff --git a/src/autoloaderV2/index.js b/src/autoloaderV2/index.js new file mode 100644 index 0000000..b2cb9d1 --- /dev/null +++ b/src/autoloaderV2/index.js @@ -0,0 +1,26 @@ +const AutomaticDispose = function () { + 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; +}; \ No newline at end of file