Hallo zusammen,
mein Script zeigt zu jedem Verbands-Einsatz und SiWa-Verbands-Einsatz den Namen des freigebenden Mitspielers in der Einsatzliste an. Das Einsatzlisten-Suchfeld berücksichtigt auch den Namen des Mitspielers. Per Mausklick auf den Namen öffnet sich das LSS-Profil.
Code
// ==UserScript==
// @name AB_Mitspieler_Namen_anzeigen
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Einsatz-Owner-Name anzeigen und im Einsatzlisten-Suchfeld berücksichtigen. Klick auf Name öffnet das Profil.
// @author Vaporizer
// @match https://www.leitstellenspiel.de/
// @icon https://www.google.com/s2/favicons?sz=64&domain=leitstellenspiel.de
// @run-at document-idle
// @grant none
// ==/UserScript==
(async function() {
'use strict';
let m_all, m_one, n_span, p_all, u_id, u_name, u_search;
const missionMarkerAddOrigin = window.missionMarkerAdd;
// Daten der Mitspieler abrufen
await fetchMitspieler();
// Zu jedem Verbands-Einsatz den Namen des Mitspielers anzeigen
m_all = document.getElementById('mission_list_alliance').querySelectorAll('.missionSideBarEntry');
m_all.forEach(singleMission => getName(singleMission.attributes.mission_id.value));
// Zu jedem SiWa-Verbands-Einsatz den Namen des Mitspielers anzeigen
m_all = document.getElementById('mission_list_sicherheitswache').querySelectorAll('.missionSideBarEntry');
m_all.forEach(singleMission => getName(singleMission.attributes.mission_id.value));
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getName(m_id) {
try {
// Name des Mitspielers extrahieren und dem Einsatz anhängen
u_id = window.mission_markers.filter(({mission_id}) => mission_id == m_id)[0].user_id;
if (u_id == window.user_id) return;
m_one = p_all.value.users.filter(({id}) => id === u_id)
u_name = (m_one[0] === undefined ? "N.N." : m_one[0].name);
n_span = document.createElement("a");
n_span.setAttribute("id", "mission_user_name_" + m_id);
n_span.setAttribute("class", "label label-default lightbox-open");
n_span.setAttribute("style", "margin-right: 3px;");
n_span.setAttribute("href", "/profile/" + u_id);
n_span.innerText = u_name;
document.getElementById('mission_caption_' + m_id).before (n_span);
fillSearchStringWithName(m_id, u_name);
} catch(e) {
console.log(new Date().toLocaleTimeString() + " getName: " + e.toString());
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function fillSearchStringWithName(m_id, m_name) {
// Namen des Mitspielers für Einsatzlisten-Suchfeld findbar machen
u_search = document.getElementById('mission_' + m_id);
u_search.attributes.search_attribute.value = u_search.attributes.search_attribute.value + ' ' + m_name;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
async function fetchMitspieler() {
// Daten der Mitspieler abrufen, wenn nicht vorhanden oder wenn veraltet
if(!localStorage.aAlliance ||
JSON.parse(localStorage.aAlliance).lastUpdate < (new Date().getTime() - 60 * 1000 * 60) ||
JSON.parse(localStorage.aAlliance).userId != window.user_id) {
// Allianceinfo API abrufen
await fetch("/api/allianceinfo")
.then((response) => response.json())
.then((data) => localStorage.setItem('aAlliance', JSON.stringify({lastUpdate: new Date().getTime(), value: data, userId: window.user_id})));
}
// Alle Mitspieler-Daten bereithalten
p_all = JSON.parse(localStorage.getItem("aAlliance"));
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Neuen Einsatz empfangen und verarbeiten
window.missionMarkerAdd = e => {
// Original Event weitergeben
missionMarkerAddOrigin(e);
m_one = document.getElementById("mission_user_name_" + e.id);
// Prüfen, dass nur bei neuen Verbands-Einsätzen der Name ermittelt wird; nicht bei eigenen Einsätzen und auch nicht bei Verbands-Event-Einsätzen.
if (e.user_id != null && e.user_id != window.user_id) {
if (m_one == null) {
// Zu jedem neuen Verbands-Einsatz den Namen des Mitspielers anzeigen
getName(e.id);
} else {
// Nach Einsatz-Update die Suche rekonstruieren
fillSearchStringWithName(e.id, m_one.innerText);
}
}
};
})();
Alles anzeigen
Versionshistorie:
V1.0 > Name des Einsatz-Owners wird je Einsatz angezeigt und für die Suche berücksichtigt.
V1.1 > Per Mausklick auf den Namen öffnet sich das LSS-Profil