Untitled diff

Created Diff never expires
108 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
881 lines
156 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
928 lines
// ==UserScript==
// ==UserScript==
// @name * Gebäude- & Fuhrparkverwalter
// @name * Gebäude- & Fuhrparkverwalter
// @namespace bos-ernie.leitstellenspiel.de
// @namespace bos-ernie.leitstellenspiel.de
// @version 1.24.0
// @version 1.25.0
// @license BSD-3-Clause
// @license BSD-3-Clause
// @author BOS-Ernie
// @author BOS-Ernie
// @description Bereitet diverse Informationen zu Wachen und Fahrzeugen auf, welche dem Spieler Hinweise über noch fehlende Einstellungen, Ausbauten, Fahrzeugen etc. gibt
// @description Bereitet diverse Informationen zu Wachen und Fahrzeugen auf, welche dem Spieler Hinweise über noch fehlende Einstellungen, Ausbauten, Fahrzeugen etc. gibt
// @match https://www.leitstellenspiel.de/
// @match https://www.leitstellenspiel.de/
// @match https://polizei.leitstellenspiel.de/
// @match https://polizei.leitstellenspiel.de/
// @icon https://www.google.com/s2/favicons?sz=64&domain=leitstellenspiel.de
// @icon https://www.google.com/s2/favicons?sz=64&domain=leitstellenspiel.de
// @run-at document-idle
// @run-at document-idle
// @grant none
// @grant none
// @resource https://forum.leitstellenspiel.de/index.php?thread/23925-script-geb%C3%A4ude-fuhrparkverwalter-by-bos-ernie/
// @resource https://forum.leitstellenspiel.de/index.php?thread/23925-script-geb%C3%A4ude-fuhrparkverwalter-by-bos-ernie/
// @require https://update.greasyfork.org/scripts/491642/1354160/%2A%20Common%3A%20IndexedDB.js
// @require https://update.greasyfork.org/scripts/491642/1354160/%2A%20Common%3A%20IndexedDB.js
// @downloadURL https://update.greasyfork.org/scripts/463536/%2A%20Geb%C3%A4ude-%20%20Fuhrparkverwalter.user.js
// @updateURL https://update.greasyfork.org/scripts/463536/%2A%20Geb%C3%A4ude-%20%20Fuhrparkverwalter.meta.js
// ==/UserScript==
// ==/UserScript==

/* global $, user_premium */
/* global $, user_premium */

/**
/**
*
*
* 📝 Aufgaben
* 📝 Aufgaben
* - [ ] Soll-Personal
* - [ ] Soll-Personal
* - [ ] Grosswachen separat konfigurieren
* - [ ] Grosswachen separat konfigurieren
* - [x] Das Soll-Personal für Kleinwachen wird statt dem konfigurierten Wert mit dem der Normalwachen gesetzt (Feuerwehr, Polizei und Rettung)
* - [x] Das Soll-Personal für Kleinwachen wird statt dem konfigurierten Wert mit dem der Normalwachen gesetzt (Feuerwehr, Polizei und Rettung)
* - [x] Soll-Personal: Gebäudetypen Rettungshubschrauber-Station, Rettungshundestaffel und Wasserrettung ergänzen
* - [x] Soll-Personal: Gebäudetypen Rettungshubschrauber-Station, Rettungshundestaffel und Wasserrettung ergänzen
* - [ ] Tab-Inhalte (Informationen, Tabellen etc.) grundsätzlich anzeigen
* - [ ] Tab-Inhalte (Informationen, Tabellen etc.) grundsätzlich anzeigen
* - [ ] Nur 2 Tabs anzeigen: Gebäude und Fahrzeuge. Pro Tab entsprechende Filtermöglichkeiten hinzufügen
* - [ ] Nur 2 Tabs anzeigen: Gebäude und Fahrzeuge. Pro Tab entsprechende Filtermöglichkeiten hinzufügen
* - [ ] Wachen auf Fahrzeuge überprüfen (richtige Fahrzeuge pro Wache)
* - [ ] Wachen auf Fahrzeuge überprüfen (richtige Fahrzeuge pro Wache)
* - [ ] Wachen auf nächstgelegene Leitstelle überprüfen
* - [ ] Wachen auf nächstgelegene Leitstelle überprüfen
* - [ ] Pol-Wachen mit mehr als 1 DGL-Fahrzeug auflisten
* - [ ] Pol-Wachen mit mehr als 1 DGL-Fahrzeug auflisten
* - [ ] Zugfahrzeug
* - [ ] Zugfahrzeug
* - [x] Richtiges Zugfahrzeug überprüfen
* - [x] Richtiges Zugfahrzeug überprüfen
* - [ ] Überprüfen, ob einem Zugfahrzeug mehrere Anhänger zugewiesen sind
* - [ ] Überprüfen, ob einem Zugfahrzeug mehrere Anhänger zugewiesen sind
* - [ ] Statistik (Fahrzeug- und Gebäudestatistik)
* - [ ] Statistik (Fahrzeug- und Gebäudestatistik)
* - [ ] Fahrzeuge in Status 6 auflisten
* - [ ] Fahrzeuge in Status 6 auflisten
* - [ ] Informationen und Tabellen immer anzeigen. Wenn keine Daten vorhanden sind, dann entsprechende Hinweise anzeigen.
* - [ ] Informationen und Tabellen immer anzeigen. Wenn keine Daten vorhanden sind, dann entsprechende Hinweise anzeigen.
* - [ ] Ansicht Ausbauten erweitern: Auflistung der inaktiven Wachen bzw. Wachen mit entsprechend inaktivem Ausbau
* - [ ] Ansicht Ausbauten erweitern: Auflistung der inaktiven Wachen bzw. Wachen mit entsprechend inaktivem Ausbau
*
*
* ✅ Erledigt
* ✅ Erledigt
* - [x] Wachen auf Soll-Personal überprüfen
* - [x] Wachen auf Soll-Personal überprüfen
* - [x] Wachen auf Soll-Personal korrigieren
* - [x] Wachen auf Soll-Personal korrigieren
* - [x] Wachen auf automatisches Werben überprüfen
* - [x] Wachen auf automatisches Werben überprüfen
* - [x] Wachen auf Ausbauten überprüfen
* - [x] Wachen auf Ausbauten überprüfen
* - [x] Überprüfen, ob Ausbauten enabled sind
* - [x] Überprüfen, ob Ausbauten enabled sind
* - [x] Resultat der Überprüfung auf Tab anzeigen
* - [x] Resultat der Überprüfung auf Tab anzeigen
* - [x] Funktion zum Aktivieren/Deaktivieren von Ausbauten nach Ausbautyp
* - [x] Funktion zum Aktivieren/Deaktivieren von Ausbauten nach Ausbautyp
* - [x] Fahrzeuge auf Anzahl zugewiesenes Personal überprüfen
* - [x] Fahrzeuge auf Anzahl zugewiesenes Personal überprüfen
* - [x] Verwendung von sessionStorage durch IndexedDB ersetzen
* - [x] Verwendung von sessionStorage durch IndexedDB ersetzen
* - [x] Präfix [Gebäude- & Fuhrparkverwalter] in der Konsole verwenden
* - [x] Präfix [Gebäude- & Fuhrparkverwalter] in der Konsole verwenden
- [x] Nach der initialen Ladung kein automatisches Neuladen nach Zeit, sondern nur bei Bedarf per Button
- [x] Nach der initialen Ladung kein automatisches Neuladen nach Zeit, sondern nur bei Bedarf per Button
* - [x] operationalReadinessConfiguration automatisch über https://api.lss-manager.de/de_DE/buildings erstellen
* - [x] operationalReadinessConfiguration automatisch über https://api.lss-manager.de/de_DE/buildings erstellen
*/
*/

(async function () {
(async function () {
let buildings = [];
let buildings = [];
let buildingsWithIncorrectPersonalCountTarget = [];
let buildingsWithIncorrectPersonalCountTarget = [];
let buildingsWithoutAutomaticHiring = [];
let buildingsWithoutAutomaticHiring = [];
let buildingsWithMissingExtensions = [];
let buildingsWithMissingExtensions = [];
let buildingTypes = [];
let buildingTypes = [];
let vehicles = [];
let vehicles = [];
let settings = null;
let settings = null;

const keyBuildings = "Buildings";
const keyBuildings = "Buildings";
const keyVehicles = "Vehicles";
const keyVehicles = "Vehicles";
const keySettings = "Settings";
const keySettings = "Settings";

const defaultSettings = {
const defaultSettings = {
personnelSetPoint: {
personnelSetPoint: {
"building-type-0": 250, // Feuerwache
"building-type-0": 400, // Feuerwache
"building-type-2": 80, // Rettungswache
"building-type-2": 400, // Rettungswache
"building-type-5": 80, // Rettungshubschrauber-Station
"building-type-5": 400, // Rettungshubschrauber-Station
"building-type-6": 300, // Polizeiwache
"building-type-6": 400, // Polizeiwache
"building-type-9": 140, // THW
"building-type-9": 400, // THW
"building-type-11": 233, // Bereitschaftspolizei
"building-type-11": 400, // Bereitschaftspolizei
"building-type-12": 100, // Schnelleinsatzgruppe (SEG)
"building-type-12": 400, // Schnelleinsatzgruppe (SEG)
"building-type-13": 150, // Polizeihubschrauberstation
"building-type-13": 400, // Polizeihubschrauberstation
"building-type-15": 16, // Wasserrettung
"building-type-15": 400, // Wasserrettung
"building-type-17": 80, // Polizei-Sondereinheiten
"building-type-17": 400, // Polizei-Sondereinheiten
"building-type-18": 250, // Feuerwache (Kleinwache)
"building-type-18": 400, // Feuerwache (Kleinwache)
"building-type-19": 300, // Polizeiwache (Kleinwache)
"building-type-19": 400, // Polizeiwache (Kleinwache)
"building-type-20": 80, // Rettungswache (Kleinwache)
"building-type-20": 400, // Rettungswache (Kleinwache)
"building-type-21": 30, // Rettungshundestaffel
"building-type-21": 400, // Rettungshundestaffel
"building-type-25": 400, // Bergrettungswache
},
},
};
};

const pseudoBuildingTypeIdMapping = [
const pseudoBuildingTypeIdMapping = [
{
{
id: "0",
id: "0",
caption: "Feuerwache",
caption: "Feuerwache",
buildingTypeId: 0,
buildingTypeId: 0,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "1",
id: "1",
caption: "Feuerwehrschule",
caption: "Feuerwehrschule",
buildingTypeId: 1,
buildingTypeId: 1,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "2",
id: "2",
caption: "Rettungswache",
caption: "Rettungswache",
buildingTypeId: 2,
buildingTypeId: 2,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "3",
id: "3",
caption: "Rettungsschule",
caption: "Rettungsschule",
buildingTypeId: 3,
buildingTypeId: 3,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "4",
id: "4",
caption: "Krankenhaus",
caption: "Krankenhaus",
buildingTypeId: 4,
buildingTypeId: 4,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "5",
id: "5",
caption: "Rettungshubschrauber-Station",
caption: "Rettungshubschrauber-Station",
buildingTypeId: 5,
buildingTypeId: 5,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "6",
id: "6",
caption: "Polizeiwache",
caption: "Polizeiwache",
buildingTypeId: 6,
buildingTypeId: 6,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "7",
id: "7",
caption: "Leitstelle",
caption: "Leitstelle",
buildingTypeId: 7,
buildingTypeId: 7,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "8",
id: "8",
caption: "Polizeischule",
caption: "Polizeischule",
buildingTypeId: 8,
buildingTypeId: 8,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "9",
id: "9",
caption: "THW",
caption: "THW",
buildingTypeId: 9,
buildingTypeId: 9,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "10",
id: "10",
caption: "THW Bundesschule",
caption: "THW Bundesschule",
buildingTypeId: 10,
buildingTypeId: 10,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "11",
id: "11",
caption: "Bereitschaftspolizei",
caption: "Bereitschaftspolizei",
buildingTypeId: 11,
buildingTypeId: 11,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "12",
id: "12",
caption: "Schnelleinsatzgruppe (SEG)",
caption: "Schnelleinsatzgruppe (SEG)",
buildingTypeId: 12,
buildingTypeId: 12,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "13",
id: "13",
caption: "Polizeihubschrauberstation",
caption: "Polizeihubschrauberstation",
buildingTypeId: 13,
buildingTypeId: 13,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "14",
id: "14",
caption: "Bereitstellungsraum",
caption: "Bereitstellungsraum",
buildingTypeId: 14,
buildingTypeId: 14,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "15",
id: "15",
caption: "Wasserrettung",
caption: "Wasserrettung",
buildingTypeId: 15,
buildingTypeId: 15,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "16",
id: "16",
caption: "Verbandszellen",
caption: "Verbandszellen",
buildingTypeId: 16,
buildingTypeId: 16,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "17",
id: "17",
caption: "Polizei-Sondereinheiten",
caption: "Polizei-Sondereinheiten",
buildingTypeId: 17,
buildingTypeId: 17,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "18",
id: "18",
caption: "Feuerwache (Kleinwache)",
caption: "Feuerwache (Kleinwache)",
buildingTypeId: 0,
buildingTypeId: 0,
smallBuilding: true,
smallBuilding: true,
},
},
{
{
id: "19",
id: "19",
caption: "Polizeiwache (Kleinwache)",
caption: "Polizeiwache (Kleinwache)",
buildingTypeId: 6,
buildingTypeId: 6,
smallBuilding: true,
smallBuilding: true,
},
},
{
{
id: "20",
id: "20",
caption: "Rettungswache (Kleinwache)",
caption: "Rettungswache (Kleinwache)",
buildingTypeId: 2,
buildingTypeId: 2,
smallBuilding: true,
smallBuilding: true,
},
},
{
{
id: "21",
id: "21",
caption: "Rettungshundestaffel",
caption: "Rettungshundestaffel",
buildingTypeId: 21,
buildingTypeId: 21,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "22",
id: "22",
caption: "Großer Komplex",
caption: "Großer Komplex",
buildingTypeId: 22,
buildingTypeId: 22,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "23",
id: "23",
caption: "Kleiner Komplex",
caption: "Kleiner Komplex",
buildingTypeId: 23,
buildingTypeId: 23,
smallBuilding: false,
smallBuilding: false,
},
},
{
{
id: "24",
id: "24",
caption: "Reiterstaffel",
caption: "Reiterstaffel",
buildingTypeId: 24,
buildingTypeId: 24,
smallBuilding: false,
smallBuilding: false,
},
},
{
id: "25",
caption: "Bergrettungswache",
buildingTypeId: 25,
smallBuilding: false,
},
];
];

const requiredExtensionsPerBuildingType = [
const requiredExtensionsPerBuildingType = [
{
{
pseudoBuildingTypeId: "0",
pseudoBuildingTypeId: "0",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "1",
pseudoBuildingTypeId: "1",
extensions: [0, 1, 2],
extensions: [0, 1, 2],
},
},
{
{
pseudoBuildingTypeId: "2",
pseudoBuildingTypeId: "2",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "3",
pseudoBuildingTypeId: "3",
extensions: [0, 1, 2],
extensions: [0, 1, 2],
},
},
{
{
pseudoBuildingTypeId: "4",
pseudoBuildingTypeId: "4",
extensions: [0, 1, 2, 3, 4, 5, 6, 7, 8],
extensions: [0, 1, 2, 3, 4, 5, 6, 7, 8],
},
},
{
{
pseudoBuildingTypeId: "5",
pseudoBuildingTypeId: "5",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "6",
pseudoBuildingTypeId: "6",
extensions: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
extensions: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
},
},
{
{
pseudoBuildingTypeId: "7",
pseudoBuildingTypeId: "7",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "8",
pseudoBuildingTypeId: "8",
extensions: [0, 1, 2],
extensions: [0, 1, 2],
},
},
{
{
pseudoBuildingTypeId: "9",
pseudoBuildingTypeId: "9",
extensions: [0, 1, 2, 4, 5, 6, 8],
extensions: [0, 1, 2, 4, 5, 6, 8, 9, 10, 13],
},
},
{
{
pseudoBuildingTypeId: "10",
pseudoBuildingTypeId: "10",
extensions: [0, 1, 2],
extensions: [0, 1, 2],
},
},
{
{
pseudoBuildingTypeId: "11",
pseudoBuildingTypeId: "11",
extensions: [0, 1, 2, 3, 8],
extensions: [0, 1, 2, 3, 8],
},
},
{
{
pseudoBuildingTypeId: "12",
pseudoBuildingTypeId: "12",
extensions: [0, 1],
extensions: [0, 1],
},
},
{
{
pseudoBuildingTypeId: "13",
pseudoBuildingTypeId: "13",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "14",
pseudoBuildingTypeId: "14",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "15",
pseudoBuildingTypeId: "15",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "16",
pseudoBuildingTypeId: "16",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "17",
pseudoBuildingTypeId: "17",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "18",
pseudoBuildingTypeId: "18",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "19",
pseudoBuildingTypeId: "19",
extensions: [0, 1, 12],
extensions: [0, 1, 12],
},
},
{
{
pseudoBuildingTypeId: "20",
pseudoBuildingTypeId: "20",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "21",
pseudoBuildingTypeId: "21",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "22",
pseudoBuildingTypeId: "22",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "23",
pseudoBuildingTypeId: "23",
extensions: [],
extensions: [],
},
},
{
{
pseudoBuildingTypeId: "24",
pseudoBuildingTypeId: "24",
extensions: [],
extensions: [0,1,2,3,4,5],
},
{
pseudoBuildingTypeId: "25",
extensions: [0, 1, 2, 3],
},
},
];
];
const buildingsWithPersonal = [0, 2, 5, 6, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21];
const buildingsWithPersonal = [0, 2, 5, 6, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 24, 25];

const vehiclePersonnelAllocations = [
const vehiclePersonnelAllocations = [
{
{
vehicleTypeId: 2,
vehicleTypeId: 2,
vehicleTypeCaption: "DLK 23",
vehicleTypeCaption: "DLK 23",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 5,
vehicleTypeId: 5,
vehicleTypeCaption: "GW-A",
vehicleTypeCaption: "GW-A",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 10,
vehicleTypeId: 10,
vehicleTypeCaption: "GW-Öl",
vehicleTypeCaption: "GW-Öl",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 11,
vehicleTypeId: 11,
vehicleTypeCaption: "GW-L2-Wasser",
vehicleTypeCaption: "GW-L2-Wasser",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 12,
vehicleTypeId: 12,
vehicleTypeCaption: "GW-Messtechnik",
vehicleTypeCaption: "GW-Messtechnik",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 27,
vehicleTypeId: 27,
vehicleTypeCaption: "GW-Gefahrgut",
vehicleTypeCaption: "GW-Gefahrgut",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 28,
vehicleTypeId: 28,
vehicleTypeCaption: "RTW",
vehicleTypeCaption: "RTW",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 29,
vehicleTypeId: 29,
vehicleTypeCaption: "NEF",
vehicleTypeCaption: "NEF",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 30,
vehicleTypeId: 30,
vehicleTypeCaption: "HLF 20",
vehicleTypeCaption: "HLF 20",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 31,
vehicleTypeId: 31,
vehicleTypeCaption: "RTH",
vehicleTypeCaption: "RTH",
personnelCount: 1,
personnelCount: 1,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 32,
vehicleTypeId: 32,
vehicleTypeCaption: "FuStW",
vehicleTypeCaption: "FuStW",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 33,
vehicleTypeId: 33,
vehicleTypeCaption: "GW-Höhenrettung",
vehicleTypeCaption: "GW-Höhenrettung",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 34,
vehicleTypeId: 34,
vehicleTypeCaption: "ELW 2",
vehicleTypeCaption: "ELW 2",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 35,
vehicleTypeId: 35,
vehicleTypeCaption: "leBefKw",
vehicleTypeCaption: "leBefKw",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 40,
vehicleTypeId: 40,
vehicleTypeCaption: "MTW-TZ",
vehicleTypeCaption: "MTW-TZ",
personnelCount: 4,
personnelCount: 4,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 39,
vehicleTypeId: 39,
vehicleTypeCaption: "GKW",
vehicleTypeCaption: "GKW",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 40,
vehicleTypeId: 40,
vehicleTypeCaption: "MTW-TZ",
vehicleTypeCaption: "MTW-TZ",
personnelCount: 4,
personnelCount: 4,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 41,
vehicleTypeId: 41,
vehicleTypeCaption: "MzGW (FGr N)",
vehicleTypeCaption: "MzGW (FGr N)",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 42,
vehicleTypeId: 42,
vehicleTypeCaption: "LKW K 9",
vehicleTypeCaption: "LKW K 9",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 45,
vehicleTypeId: 45,
vehicleTypeCaption: "MLW 5",
vehicleTypeCaption: "MLW 5",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 46,
vehicleTypeId: 46,
vehicleTypeCaption: "WLF",
vehicleTypeCaption: "WLF",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 50,
vehicleTypeId: 50,
vehicleTypeCaption: "GruKw",
vehicleTypeCaption: "GruKw",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 52,
vehicleTypeId: 52,
vehicleTypeCaption: "GefKw",
vehicleTypeCaption: "GefKw",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 51,
vehicleTypeId: 51,
vehicleTypeCaption: "FüKW (Polizei)",
vehicleTypeCaption: "FüKW (Polizei)",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 53,
vehicleTypeId: 53,
vehicleTypeCaption: "Dekon-P",
vehicleTypeCaption: "Dekon-P",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 55,
vehicleTypeId: 55,
vehicleTypeCaption: "KdoW-LNA",
vehicleTypeCaption: "KdoW-LNA",
personnelCount: 1,
personnelCount: 1,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 56,
vehicleTypeId: 56,
vehicleTypeCaption: "KdoW-OrgL",
vehicleTypeCaption: "KdoW-OrgL",
personnelCount: 1,
personnelCount: 1,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 57,
vehicleTypeId: 57,
vehicleTypeCaption: "FwK",
vehicleTypeCaption: "FwK",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 58,
vehicleTypeId: 58,
vehicleTypeCaption: "KTW Typ B",
vehicleTypeCaption: "KTW Typ B",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 59,
vehicleTypeId: 59,
vehicleTypeCaption: "ELW 1 (SEG)",
vehicleTypeCaption: "ELW 1 (SEG)",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 60,
vehicleTypeId: 60,
vehicleTypeCaption: "GW-San",
vehicleTypeCaption: "GW-San",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 61,
vehicleTypeId: 61,
vehicleTypeCaption: "Polizeihubschrauber",
vehicleTypeCaption: "Polizeihubschrauber",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Polizeihubschrauberstation",
buildingCategory: "Polizeihubschrauberstation",
},
},
{
{
vehicleTypeId: 63,
vehicleTypeId: 63,
vehicleTypeCaption: "GW-Taucher",
vehicleTypeCaption: "GW-Taucher",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Wasserrettung",
buildingCategory: "Wasserrettung",
},
},
{
{
vehicleTypeId: 64,
vehicleTypeId: 64,
vehicleTypeCaption: "GW-Wasserrettung",
vehicleTypeCaption: "GW-Wasserrettung",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "Wasserrettung",
buildingCategory: "Wasserrettung",
},
},
{
{
vehicleTypeId: 69,
vehicleTypeId: 69,
vehicleTypeCaption: "Tauchkraftwagen",
vehicleTypeCaption: "Tauchkraftwagen",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Wasserrettung",
buildingCategory: "Wasserrettung",
},
},
{
{
vehicleTypeId: 72,
vehicleTypeId: 72,
vehicleTypeCaption: "WaWe 10",
vehicleTypeCaption: "WaWe 10",
personnelCount: 5,
personnelCount: 5,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 73,
vehicleTypeId: 73,
vehicleTypeCaption: "GRTW",
vehicleTypeCaption: "GRTW",
personnelCount: 6,
personnelCount: 6,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 74,
vehicleTypeId: 74,
vehicleTypeCaption: "NAW",
vehicleTypeCaption: "NAW",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 75,
vehicleTypeId: 75,
vehicleTypeCaption: "FLF",
vehicleTypeCaption: "FLF",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 76,
vehicleTypeId: 76,
vehicleTypeCaption: "Rettungstreppe",
vehicleTypeCaption: "Rettungstreppe",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 79,
vehicleTypeId: 79,
vehicleTypeCaption: "SEK - ZF",
vehicleTypeCaption: "SEK - ZF",
personnelCount: 4,
personnelCount: 4,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 80,
vehicleTypeId: 80,
vehicleTypeCaption: "SEK - MTF",
vehicleTypeCaption: "SEK - MTF",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 81,
vehicleTypeId: 81,
vehicleTypeCaption: "MEK - ZF",
vehicleTypeCaption: "MEK - ZF",
personnelCount: 4,
personnelCount: 4,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 82,
vehicleTypeId: 82,
vehicleTypeCaption: "MEK - MTF",
vehicleTypeCaption: "MEK - MTF",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 83,
vehicleTypeId: 83,
vehicleTypeCaption: "GW-Werkfeuerwehr",
vehicleTypeCaption: "GW-Werkfeuerwehr",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 84,
vehicleTypeId: 84,
vehicleTypeCaption: "ULF mit Löscharm",
vehicleTypeCaption: "ULF mit Löscharm",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 85,
vehicleTypeId: 85,
vehicleTypeCaption: "TM 50",
vehicleTypeCaption: "TM 50",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 86,
vehicleTypeId: 86,
vehicleTypeCaption: "Turbolöscher",
vehicleTypeCaption: "Turbolöscher",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 87,
vehicleTypeId: 87,
vehicleTypeCaption: "TLF 4000",
vehicleTypeCaption: "TLF 4000",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "Feuerwehr",
buildingCategory: "Feuerwehr",
},
},
{
{
vehicleTypeId: 91,
vehicleTypeId: 91,
vehicleTypeCaption: "Rettungshundefahrzeug",
vehicleTypeCaption: "Rettungshundefahrzeug",
personnelCount: 5,
personnelCount: 5,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 93,
vehicleTypeId: 93,
vehicleTypeCaption: "MTW-OV",
vehicleTypeCaption: "MTW-OV",
personnelCount: 5,
personnelCount: 5,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 94,
vehicleTypeId: 94,
vehicleTypeCaption: "DHuFüKw",
vehicleTypeCaption: "DHuFüKw",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 95,
vehicleTypeId: 95,
vehicleTypeCaption: "Polizeimotorrad",
vehicleTypeCaption: "Polizeimotorrad",
personnelCount: 1,
personnelCount: 1,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 97,
vehicleTypeId: 97,
vehicleTypeCaption: "ITW",
vehicleTypeCaption: "ITW",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Rettungsdienst",
buildingCategory: "Rettungsdienst",
},
},
{
{
vehicleTypeId: 98,
vehicleTypeId: 98,
vehicleTypeCaption: "Zivilstreifenwagen",
vehicleTypeCaption: "Zivilstreifenwagen",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 99,
vehicleTypeId: 99,
vehicleTypeCaption: "LKW 7 Lbw",
vehicleTypeCaption: "LKW 7 Lbw",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 100,
vehicleTypeId: 100,
vehicleTypeCaption: "MLW 4",
vehicleTypeCaption: "MLW 4",
personnelCount: 7,
personnelCount: 7,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 103,
vehicleTypeId: 103,
vehicleTypeCaption: "FuStW (DGL)",
vehicleTypeCaption: "FuStW (DGL)",
personnelCount: 2,
personnelCount: 2,
buildingCategory: "Polizei",
buildingCategory: "Polizei",
},
},
{
{
vehicleTypeId: 109,
vehicleTypeId: 109,
vehicleTypeCaption: "MzGW SB",
vehicleTypeCaption: "MzGW SB",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 123,
vehicleTypeId: 123,
vehicleTypeCaption: "LKW 7 Lbw (FGr WP)",
vehicleTypeCaption: "LKW 7 Lbw (FGr WP)",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "THW",
buildingCategory: "THW",
},
},
{
{
vehicleTypeId: 130,
vehicleTypeId: 130,
vehicleTypeCaption: "GW-Bt",
vehicleTypeCaption: "GW-Bt",
personnelCount: 3,
personnelCount: 3,
buildingCategory: "SEG",
buildingCategory: "SEG",
},
},
{
{
vehicleTypeId: 131,
vehicleTypeId: 131,
vehicleTypeCaption: "Bt-Kombi",
vehicleTypeCaption: "Bt-Kombi",
personnelCount: 9,
personnelCount: 9,
buildingCategory: "SEG",
buildingCategory: "SEG",
},
},
{
vehicleTypeId: 134,
vehicleTypeCaption: "Pferdetransporter klein",
personnelCount: 4,
buildingCategory: "Polizei",
},
{
vehicleTypeId: 135,
vehicleTypeCaption: "Pferdetransporter groß",
personnelCount: 2,
buildingCategory: "Polizei",
},
{
vehicleTypeId: 137,
vehicleTypeCaption: "Zugfahrzeug Pferdetransport",
personnelCount: 6,
buildingCategory: "Polizei",
},
{
vehicleTypeId: 138,
vehicleTypeCaption: "GW-Verpflegung",
personnelCount: 6,
buildingCategory: "Feuerwehr",
},
{
vehicleTypeId: 139,
vehicleTypeCaption: "GW-Küche",
personnelCount: 3,
buildingCategory: "Feuerwehr",
},
{
vehicleTypeId: 140,
vehicleTypeCaption: "MTW-Verpflegung",
personnelCount: 6,
buildingCategory: "Feuerwehr",
},
{
vehicleTypeId: 144,
vehicleTypeCaption: "FüKW (THW)",
personnelCount: 4,
buildingCategory: "THW",
},
{
vehicleTypeId: 145,
vehicleTypeCaption: "FüKomKW",
personnelCount: 7,
buildingCategory: "THW",
},
{
vehicleTypeId: 147,
vehicleTypeCaption: "FmKW",
personnelCount: 7,
buildingCategory: "THW",
},
{
vehicleTypeId: 148,
vehicleTypeCaption: "MTW-FGr K",
personnelCount: 4,
buildingCategory: "THW",
},
{
vehicleTypeId: 149,
vehicleTypeCaption: "GW-Bergrettung (NEF)",
personnelCount: 6,
buildingCategory: "SEG",
},
{
vehicleTypeId: 150,
vehicleTypeCaption: "GW-Bergrettung",
personnelCount: 6,
buildingCategory: "SEG",
},
{
vehicleTypeId: 151,
vehicleTypeCaption: "ELW Bergrettung",
personnelCount: 3,
buildingCategory: "SEG",
},
{
vehicleTypeId: 152,
vehicleTypeCaption: "ATV",
personnelCount: 1,
buildingCategory: "SEG",
},
{
vehicleTypeId: 153,
vehicleTypeCaption: "Hundestaffel (Bergrettung)",
personnelCount: 5,
buildingCategory: "SEG",
},
{
vehicleTypeId: 154,
vehicleTypeCaption: "Schneefahrzeug",
personnelCount: 1,
buildingCategory: "SEG",
},
{
vehicleTypeId: 156,
vehicleTypeCaption: "Polizeihubschrauber mit verbauter Winde",
personnelCount: 3,
buildingCategory: "Polizei",
},
{
vehicleTypeId: 157,
vehicleTypeCaption: "RTH Winde",
personnelCount: 2,
buildingCategory: "Rettungsdienst",
},
{
vehicleTypeId: 158,
vehicleTypeCaption: "GW-Höhenrettung (Bergrettung)",
personnelCount: 4,
buildingCategory: "SEG",
},
];
];

function addModal() {
function addModal() {
const modal = document.createElement("div");
const modal = document.createElement("div");
modal.className = "modal fade";
modal.className = "modal fade";
modal.id = "building-and-fleet-manager-modal";
modal.id = "building-and-fleet-manager-modal";
modal.setAttribute("tabindex", "-1");
modal.setAttribute("tabindex", "-1");
modal.setAttribute("role", "dialog");
modal.setAttribute("role", "dialog");
modal.setAttribute("aria-labelledby", "building-and-fleet-manager-modal-label");
modal.setAttribute("aria-labelledby", "building-and-fleet-manager-modal-label");
modal.setAttribute("aria-hidden", "true");
modal.setAttribute("aria-hidden", "true");
modal.style.display = "none";
modal.style.display = "none";
modal.style.zIndex = "5000";
modal.style.zIndex = "5000";
modal.innerHTML = `<div class="modal-dialog modal-lg" role="document" style="width: 95%; margin: 40px auto;">
modal.innerHTML = `<div class="modal-dialog modal-lg" role="document" style="width: 95%; margin: 40px auto;">
<div class="modal-content">
<div class="modal-content">
<div class="modal-header">
<div class="modal-header">
<h1 class="modal-title" id="building-and-fleet-manager-modal-label">Gebäude- und Fahrzeugverwalter</h1>
<h1 class="modal-title" id="building-and-fleet-manager-modal-label">Gebäude- und Fahrzeugverwalter</h1>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span aria-hidden="true">&times;</span>
</button>
</button>
</div>
</div>
<div class="modal-body" style="height: calc(100vh - 350px); overflow-y: auto;">
<div class="modal-body" style="height: calc(100vh - 350px); overflow-y: auto;">
<div>
<div>
<ul class="nav nav-tabs" role="tablist" style="margin-bottom: 10px">
<ul class="nav nav-tabs" role="tablist" style="margin-bottom: 10px">
<li role="presentation" class="active">
<li role="presentation" class="active">
<a href="#gfm-buildings-panel" aria-controls="gfm-buildings-panel" role="tab" data-toggle="tab">
<a href="#gfm-buildings-panel" aria-controls="gfm-buildings-panel" role="tab" data-toggle="tab">
Gebäude
Gebäude
</a>
</a>
</li>
</li>
<li role="presentation">
<li role="presentation">
<a href="#operational-readiness-panel" aria-controls="operational-readiness-panel" role="tab" data-toggle="tab">
<a href="#operational-readiness-panel" aria-controls="operational-readiness-panel" role="tab" data-toggle="tab">
Einsatzbereitschaft
Einsatzbereitschaft
</a>
</a>
</li>
</li>
<li role="presentation">
<li role="presentation">
<a href="#tractive-vehicles-panel" aria-controls="tractive-vehicles-panel" role="tab" data-toggle="tab">
<a href="#tractive-vehicles-panel" aria-controls="tractive-vehicles-panel" role="tab" data-toggle="tab">
Zugfahrzeuge
Zugfahrzeuge
</a>
</a>
</li>
</li>
<li role="presentation">
<li role="presentation">
<a
<a
href="#personnel-allocation-panel"
href="#personnel-allocation-panel"
aria-controls="personnel-allocation-panel"
aria-controls="personnel-allocation-panel"
role="tab"
role="tab"
data-toggle="tab"
data-toggle="tab"
>
>
Personalzuweisung
Personalzuweisung
</a>
</a>
</li>
</li>
<li role="presentation">
<li role="presentation">
<a href="#settings-panel" aria-controls="settings-panel" role="tab" data-toggle="tab">
<a href="#settings-panel" aria-controls="settings-panel" role="tab" data-toggle="tab">
Einstellungen
Einstellungen
</a>
</a>
</li>
</li>
</ul>
</ul>
<div class="tab-content">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="gfm-buildings-panel">
<div role="tabpanel" class="tab-pane active" id="gfm-buildings-panel">
<!-- Filter und Aktionen -->
<!-- Filter und Aktionen -->
<div class="panel panel-default">
<div class="panel panel-default">
<div class="panel-body">
<div class="panel-body">
<p class="text-uppercase small text-muted">Filter und Aktionen</p>
<p class="text-uppercase small text-muted">Filter und Aktionen</p>
<div class="row">
<div class="row">
<!-- <div class="col-md-3 col-sm-12">-->
<!-- <div class="col-md-3 col-sm-12">-->
<!-- <div class="form-group">-->
<!-- <div class="form-group">-->
<!-- <label for="filter-control-center">Leitstelle</label>-->
<!-- <label for="filter-control-center">Leitstelle</label>-->
<!-- <select id="filter-control-center" class="form-control" disabled>-->
<!-- <select id="filter-control-center" class="form-control" disabled>-->
<!-- <option value="-1">Demnächst verfügbar</option>-->
<!-- <option value="-1">Demnächst verfügbar</option>-->
<!-- </select>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-md-3 col-sm-12">-->
<!-- <div class="col-md-3 col-sm-12">-->
<!-- <div class="form-group">-->
<!-- <div class="form-group">-->
<!-- <label for="filter-building-type">Gebäudetyp</label>-->
<!-- <label for="filter-building-type">Gebäudetyp</label>-->
<!-- <select id="filter-building-type" class="form-control" disabled>-->
<!-- <select id="filter-building-type" class="form-control" disabled>-->
<!-- <option value="-1">Demnächst verfügbar</option>-->
<!-- <option value="-1">Demnächst verfügbar</option>-->
<!-- </select>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="col-md-6 col-sm-12">
<div class="col-md-6 col-sm-12">
<div class="form-group">
<div class="form-group">
<label for="filter-miscellaneous">Diverses</label>
<label for="filter-miscellaneous">Diverses</label>
<br />
<br />
<div id="filter-miscellaneous" class="btn-group btn-group-xs" role="group">
<div id="filter-miscellaneous" class="btn-group btn-group-xs" role="group">
<button type="button" id="filter-deviating-personnel-count-target" class="btn btn-default">
<button type="button" id="filter-deviating-personnel-count-target" class="btn btn-default">
Abweichendes Soll-Personal (<span id="number-of-deviating-personnel-count-target">-</span>)
Abweichendes Soll-Personal (<span id="number-of-deviating-personnel-count-target">-</span>)
</button>
</button>
<button id="fix-personnel-set-point" class="btn btn-default" type="submit" title="Berichtigen"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> </button>
<button id="
<button type="button" id="filter-missing-automatic-hiring" class="btn btn-default">
Fehlendes automatisches Werben (<span id="number-of-missing-automatic-hiring">-</span>)
</button>
<button id="fix-automatic-hiring" class="btn btn-default" type="submit" title="Berichtigen"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> </button>
<button type="button" id="filter-missing-extensions" class="btn btn-default">
Fehlende Erweiterungen (<span id="number-of-buildings-with-missing-extensions">-</span>)
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<table id="building-table" class="table table-striped table-hover table-condensed table-responsive">
<thead>
<tr>
<th>Gebäude</th>
<th>Soll-Personal</th>
<th>Automatisches Werben</th>
<th>Ausbauten</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="4">
<div class="loader">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div role="tabpanel" class="tab-pane" id="operational-readiness-panel">
<div class="row">
<div class="col-md-12 bg">
<div class="loader">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="tractive-vehicles-panel">
<div class="row">
<div class="col-md-12 bg">
<div class="loader">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="personnel-allocation-panel">
<div class="row">
<div class="col-md-12 bg">
<div class="loader">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="settings-panel">
<h2>Soll-Personal</h2>
<form id="settings" class="form-horizontal">
<div class="form-group">
<label for="building-type-0" class="col-sm-4 control-label">
Feuerwache