193 lines
7.5 KiB
JavaScript
193 lines
7.5 KiB
JavaScript
// - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
// -
|
|
// - 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) {
|
|
return ADisDB.transaction('rw', [ADisDB.ADisMissionsOwn, ADisDB.ADisSettings, ADisDB.ADisAvailabelMissions], () => {
|
|
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);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
window.ADis_OpenNextOwnMissions = function () {
|
|
return ADisDB.transaction('rw', [ADisDB.ADisMissionsOwn, ADisDB.ADisSettings, ADisDB.ADisAvailabelMissions], () => {
|
|
ADisSettings().then((setting) => {
|
|
if (setting['MissionsOwn-Automatic'] == 'true') {
|
|
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) {
|
|
if (count > 0) {
|
|
return Wunsch.each((myWunsch) => {
|
|
let MissionID = myWunsch.missionID;
|
|
if ($("#adis-ownmissions-frame").attr("mission_id") == "empty") {
|
|
$("#adis-ownmissions-frame").attr("src", "https://www.leitstellenspiel.de/missions/" + MissionID);
|
|
$("#adis-ownmissions-frame").attr("mission_id", MissionID);
|
|
}
|
|
});
|
|
} else {
|
|
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.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.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) => {console.error(err)})
|
|
}
|
|
|
|
window.ADis_UpdateOwnMissionsToDone = function ADis_UpdateOwnMissionsToDone(MissionID) {
|
|
return ADisDB.ADisMissionsOwn.update(MissionID, {
|
|
last_check: Math.floor(new Date().getTime() / 1000),
|
|
next_check: Math.floor(new Date().getTime() / 1000) + 300
|
|
}).catch((err) => {console.error(err)})
|
|
}
|
|
|
|
window.ADis_RemoveOwnMissionsFromQueue = function ADis_RemoveOwnMissionsFromQueue(MissionID) {
|
|
return ADisDB.ADisMissionsOwn.where({
|
|
missionID: MissionID
|
|
}).delete(console.error(err));
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
setTimeout(window.ADis_OpenNextOwnMissions, 5000);
|
|
setTimeout(window.ADis_CollectOwnMissions, 500);
|
|
});
|