Files
automatic-dispose/script/mission/manager.js
2018-11-24 14:43:59 +01:00

182 lines
7.0 KiB
JavaScript
Executable File

$(document).ready(function () {
console.log("Manager load");
//setInterval(ADis_GetAvailableMissions, 600000); // update availabla missions every 10 minutes
ADis_GetAvailableMissions(); // get availabla missions after page ready
});
// - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// -
// - Grab Mission-Configuration from GitHub
// -
// - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
function ADis_GetAvailableMissions() {
// Get all available missions with there config
//$.getJSON(AutomaticDispose_URL + AutomaticDispose_Branch + "/all_missions.json", function (Response) {
for (let i in ADis_AllMissions) {
Mission = ADis_AllMissions[i];
ADis_AddAvailableMissions(Mission);
}
//});
}
function ADis_CollectMissions() {
return ADisDB.transaction('rw', [ADisDB.ADisMissionsOwn, ADisDB.ADisSettings, ADisDB.ADisAvailabelMissions], () => {
ADisSettings().then((setting) => {
if (setting['MissionsOwn-Automatic'] == 'true') {
return ADisDB.ADisMissionsOwn.where({
done: 'false'
}).limit(1)
}
}).then((Missions) => {
if (Missions === undefined) {
return;
}
return Missions.count(function (count) {
if (count > 0) {
return Missions.each(async (Mission) => {
return await ADisDB.ADisAvailabelMissions.get({
type: Mission.type
}).then((available) => {
if (available == undefined) {
ADis_RemoveMissionFromQueue(Mission.missionID);
}
}).then(() => {
if ($("#mission_" + Mission.missionID).length == 0) {
return ADis_RemoveMissionFromQueue(Mission.missionID);
}
}).then(() => {
if ($("#mission_" + Mission.missionID).css("display") == "none") {
return ADis_RemoveMissionFromQueue(Mission.missionID);
}
}).then(() => {
$("#mission_" + Mission.id).animate({
opacity: 0.5
}, 500);
});
});
}
})
}).then(() => {
$("#mission_list").find(".missionSideBarEntry").each(async function () {
var MissionID = $(this).attr("mission_id");
// var MissionType = $(this).attr("mission_type_id");
// var MissionName = $(this).find(".map_position_mover").text();
// - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - Emergency Missions | Automatic
// - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
await ADis_AddMission(MissionID);
});
});
});
}
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((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];
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
});
});
}
});
});
}
function ADis_AddAvailableMissions(Mission) {
return ADisDB.ADisAvailabelMissions.put({
missionID: Mission.id,
type: Mission.type,
name: Mission.name,
jsondata: Mission
}).catch((err) => {
console.error(err)
})
}
function ADis_AddMissionToQueue(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)
});
}
function ADis_RemoveMissionFromQueue(MissionID) {
return ADisDB.ADisMissionsOwn.where({
missionID: MissionID
}).delete();
}