$(document).ready(function () { setTimeout(ADis_OpenNextOwnMissions, 5000); setTimeout(ADis_CollectOwnMissions, 500); }); // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Collect Own Missions // - // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function ADis_CollectOwnMissions() { var observer2 = new MutationObserver(function (mutations) { if (mutations[0].type == "childList") { if (mutations[0].addedNodes.length >= 1) { // do it here for (var i = 0; i < mutations[0].addedNodes.length; i++) ADis_ReadAndAddOwnMissions(mutations[0].addedNodes[i].attributes.getNamedItem("mission_id").value) } } else { console.log("DEBUG OwnMissions", mutations); } }); // Notify new alerts var targetNode2 = document.getElementById("mission_list"); observer2.observe(targetNode2, { attributes: false, //attributeFilter: ['class'], //attributeOldValue: true, characterData: false, characterDataOldValue: false, childList: true, subtree: false }); ADis_ReadAndAddOwnMissions(); } function ADis_ReadAndAddOwnMissions(MissionID) { if (typeof MissionID != "undefined") { ADis_AddMission(MissionID); } else { $("#mission_list").find(".missionSideBarEntry").each(function () { MissionID = $(this).attr("mission_id"); // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // - // - Ambulance Service | Full-Automatic // - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ADis_AddMission(MissionID); }); } } function ADis_OpenNextOwnMissions() { console.log('ADis_OpenNextOwnMissions: open') ADisSettings().then((setting) => { console.log('ADis_OpenNextOwnMissions: load settings') if (setting['MissionsOwn-Automatic'] == 'true') { console.log('ADis_OpenNextOwnMissions: load mission') return ADisDB.ADisMissionsOwn.where({ done: 'false' }).and(function (item) { return item.next_check <= Math.floor(new Date().getTime() / 1000) }).limit(1) } }).then((Wunsch) => { if (Wunsch !== undefined) { return Wunsch.count(function (count) { console.log('ADis_OpenNextOwnMissions: load mission: %d', count) if (count > 0) { return Wunsch.each((myWunsch) => { console.log('ADis_OpenNextOwnMissions: load mission:', myWunsch) let MissionID = myWunsch.missionID; myWunsch.next_check = Math.floor(new Date().getTime() / 1000) + 300; return ADis_UpdateOwnMissions(myWunsch).then(() => { console.log('ADis_OpenNextOwnMissions: check free slot for mission') if ($("#adis-ownmissions-frame").attr("mission_id") == "empty") { console.log('ADis_OpenNextOwnMissions: free slot for mission') $("#adis-ownmissions-frame").attr("src", "https://www.leitstellenspiel.de/missions/" + MissionID); $("#adis-ownmissions-frame").attr("mission_id", MissionID); OwnMissionsFrameWatchDog = setTimeout(function () { // TODO: tellParent("ADisMissionDone(" + window.name + "," + MissionID + ");"); $("#adis-ownmissions-frame").attr("src", ""); $("#adis-ownmissions-frame").attr("mission_id", "empty"); setTimeout(ADis_OpenNextOwnMissions, 100); }, 5000); } else { console.log('ADis_OpenNextOwnMissions: no free slot for mission') setTimeout(ADis_OpenNextOwnMissions, 5000); } }); }); } return setTimeout(ADis_OpenNextOwnMissions, 5000); }); } return setTimeout(ADis_OpenNextOwnMissions, 5000); }); } window.ADis_AddMission = function ADis_AddMission(ID) { return ADisSettings().then((setting) => { if (setting['MissionsOwn-Automatic'] == 'true') { return ADisDB.ADisMissionsOwn.where({ missionID: ID }).limit(1) } }).then((Missions) => { if (Missions === undefined) { return; } return Missions.count(function (count) { if (count > 0) { return Missions.each(() => { var MissionElement = $("#mission_" + ID); var _MissionID = MissionElement.attr("mission_id"); var _MissionType = MissionElement.attr("mission_type_id"); var addr = MissionElement.find(".map_position_mover").text().split(",") var MissionName = addr[0]; var MissionStreet = addr[1]; var MissionVillage = addr[2]; return ADisDB.transaction('rw', [ADisDB.ADisMissionsOwn, ADisDB.ADisSettings, ADisDB.ADisAvailabelMissions], () => { return ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { return ADis_AddMissionToQueue({ "id": _MissionID, "type": _MissionType, "name": MissionName, "street": MissionStreet, "village": MissionVillage, "available": (available !== undefined), "done": false, "last_check": Math.floor(new Date().getTime() / 1000), "next_check": Math.floor(new Date().getTime() / 1000) + 1 }); }); }); }); } else { var MissionElement = $("#mission_" + ID); var MissionID = MissionElement.attr("mission_id"); var MissionType = MissionElement.attr("mission_type_id"); var addr = MissionElement.find(".map_position_mover").text().split(",") var MissionName = addr[0]; var MissionStreet = addr[1]; var MissionVillage = addr[2]; return ADisDB.transaction('rw', [ADisDB.ADisMissionsOwn, ADisDB.ADisSettings, ADisDB.ADisAvailabelMissions], () => { return ADisDB.ADisAvailabelMissions.get({ type: MissionType }).then((available) => { return ADis_AddMissionToQueue({ "id": MissionID, "type": MissionType, "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 }); }); }); } }); }); } window.ADis_AddOwnMissionsToQueue = function ADis_AddOwnMissionsToQueue(Mission) { return ADisDB.ADisMissionsOwn.put({ missionID: Mission.id, type: Mission.type, name: Mission.name, available: Mission.available ? 'true' : 'false', done: Mission.done ? 'true' : 'false', street: Mission.street, village: Mission.village, last_check: Mission.last_check, next_check: Mission.next_check }).catch((err) => { console.error(err) }); } window.ADis_UpdateOwnMissions = function ADis_UpdateOwnMissions(Mission) { return ADisDB.ADisMissionsOwn.put(Mission).catch((err) => {}) } window.ADis_UpdateOwnMissionsToDone = function ADis_UpdateOwnMissionsToDone(MissionID) { return ADisDB.ADisMissionsOwn.update(MissionID, { missionID: MissionID, done: 'true' }).catch((err) => {}) } window.ADis_RemoveOwnMissionsFromQueue = function ADis_RemoveOwnMissionsFromQueue(MissionID) { return ADisDB.ADisMissionsOwn.where({ missionID: MissionID }).delete(); }