Skip to content

Commit

Permalink
πŸ”€πŸ”– #296 from LSS-Manager/dev
Browse files Browse the repository at this point in the history
πŸ”€πŸ”– 4.1.4
  • Loading branch information
jxn-30 authored Nov 25, 2020
2 parents caf8daa + c33acac commit ad4842f
Show file tree
Hide file tree
Showing 50 changed files with 623 additions and 202 deletions.
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "4.1.3+20201122.2208",
"version": "4.1.4+20201125.0812",
"license": "CC-BY-NC-SA-4.0",
"scripts": {
"predev": "tsc -b scripts && node scripts predev",
Expand Down Expand Up @@ -47,17 +47,17 @@
"@types/speed-measure-webpack-plugin": "^1.3.0",
"@types/ua-parser-js": "^0.7.33",
"@types/vue-select": "^2.5.1",
"@types/webpack-env": "^1.15.3",
"@typescript-eslint/eslint-plugin": "^4.8.1",
"@typescript-eslint/parser": "^4.8.1",
"@types/webpack-env": "^1.16.0",
"@typescript-eslint/eslint-plugin": "^4.8.2",
"@typescript-eslint/parser": "^4.8.2",
"@vuepress/plugin-active-header-links": "^1.7.0",
"@vuepress/plugin-back-to-top": "^1.7.0",
"all-contributors-cli": "^6.19.0",
"cache-loader": "^4.1.0",
"clean-webpack-plugin": "^3.0.0",
"copy-dir": "^1.3.0",
"css-loader": "^3.6.0",
"eslint": "^7.13.0",
"eslint": "^7.14.0",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-vue": "^7.1.0",
"html-loader": "^1.3.2",
Expand Down Expand Up @@ -92,7 +92,7 @@
},
"userscript": {
"name": "LSS-Manager V.4",
"author": "Aisaka | Sanni | Jan (jxn_30)",
"author": "Aisaka | Sanni | Jan (jxn_30) | Ron31",
"description": "Das Tool fΓΌr das LSS in der Version 4"
}
}
}
2 changes: 1 addition & 1 deletion src/LSSM-Menu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ export default Vue.extend<
},
storeIconBg() {
if (this.iconBgAsNavBg && this.nav) {
this.nav.style.backgroundColor = this.iconBg;
this.nav.style.backgroundColor = this.iconBg ?? '#000';
}
LSSM.$store.dispatch('settings/setSetting', {
moduleId: 'global',
Expand Down
1 change: 1 addition & 0 deletions src/components/settings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,7 @@ export default Vue.extend<
},
mounted() {
this.getExportData();
this.$store.commit('useFontAwesome');
},
});
</script>
Expand Down
30 changes: 30 additions & 0 deletions src/i18n/de_DE.ts
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,8 @@ export default {
color: '#001ee0',
coins: 25,
credits: 15000,
minPersonnel: 0,
maxPersonnel: 0,
special: 'Muss vom "LKW K 9" zum Einsatz gezogen werden',
icon: 'snowplow',
},
Expand All @@ -576,6 +578,8 @@ export default {
color: '#0021f5',
coins: 25,
credits: 15000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Muss von einem "GKW", "MzKW", "MTW-TZ" oder "MLW 5" zum Einsatz gezogen werden.',
icon: 'trailer',
Expand Down Expand Up @@ -608,20 +612,26 @@ export default {
color: '#ad0e0e',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
48: {
caption: 'AB-Atemschutz',
color: '#9c0b0b',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
49: {
caption: 'AB-Γ–l',
color: '#8b0707',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
50: {
Expand Down Expand Up @@ -671,6 +681,8 @@ export default {
color: '#450707',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
55: {
Expand Down Expand Up @@ -765,6 +777,8 @@ export default {
color: '#e60808',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
63: {
Expand Down Expand Up @@ -803,6 +817,8 @@ export default {
color: '#1b428a',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Muss von einem "LKW 7 Lkr 19 tm" zum Einsatz gezogen werden. Pro gefordertem Boot mΓΌssen mind. 4 Personen mit der Ausbildung "GW-Wasserrettung" oder "Wassergefahren" vor Ort sein!',
icon: 'trailer',
Expand All @@ -812,6 +828,8 @@ export default {
color: '#245390',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Muss von einem "LKW 7 Lkr 19 tm" zum Einsatz gezogen werden. Pro gefordertem Boot mΓΌssen mind. 4 Personen mit der Ausbildung "GW-Wasserrettung" oder "Wassergefahren" vor Ort sein!',
icon: 'trailer',
Expand All @@ -821,6 +839,8 @@ export default {
color: '#296497',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Muss von einem "LKW 7 Lkr 19 tm" zum Einsatz gezogen werden. Pro gefordertem Boot mΓΌssen mind. 4 Personen mit der Ausbildung "GW-Wasserrettung" oder "Wassergefahren" vor Ort sein!',
icon: 'trailer',
Expand All @@ -841,6 +861,8 @@ export default {
color: '#9ac8a6',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Muss von einem "GW-Wasserrettung" oder einem "GW-Taucher" zum Einsatz gezogen werden. Pro gefordertem Boot mΓΌssen mind. 4 Personen mit der Ausbildung "GW-Wasserrettung" oder "Wassergefahren" vor Ort sein!',
icon: 'trailer',
Expand All @@ -850,6 +872,8 @@ export default {
color: '#bf7f6a',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Pro gefordertem Boot mΓΌssen mind. 4 Personen mit der Ausbildung "GW-Wasserrettung" oder "Wassergefahren" vor Ort sein!',
icon: 'square',
Expand Down Expand Up @@ -918,13 +942,17 @@ export default {
color: '#680101',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
78: {
caption: 'AB-Einsatzleitung',
color: '#bf1111',
coins: 12,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
icon: 'square',
},
79: {
Expand Down Expand Up @@ -1077,6 +1105,8 @@ export default {
color: '#422629',
coins: 0,
credits: 6000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Muss von einem "MTW-OV" an den Einsatzort gezogen werden. Am Einsatzort sind ein "Anh Hund" und ein "Rettungshundefahrzeug" vom Rettungsdienst gleichwertig!',
icon: 'paw',
Expand Down
5 changes: 3 additions & 2 deletions src/i18n/nb_NO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ export default {
},
allowTelemetry: {
description:
'Controls whether LSS-Manager is allowed to send Data which helps us in developing this extension.',
title: 'Allow Telemetry',
'Styrer om LSS-Manager fΓ₯r samle data som hjelper oss i Γ₯ utvikle utvidelsen.',
title: 'Tillatt telemetri',
},
iconBg: {
description: 'Konfigurer bakgrunnen til LSSM-ikonet',
Expand Down Expand Up @@ -297,6 +297,7 @@ export default {
color: '#772222',
coins: 12,
credits: 6_000,
minPersonnel: 0,
maxPersonnel: 0,
special:
'Et egnet kjΓΈretΓΈy trengs for Γ₯ trekke tilhengeren / bΓ₯thenger. (Dykkerbil, Mannskapsbil, Lett mannskapsbil)',
Expand Down
8 changes: 4 additions & 4 deletions src/libraries.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@
"version": "2.5.1"
},
"@types/webpack-env": {
"version": "1.15.3"
"version": "1.16.0"
},
"@typescript-eslint/eslint-plugin": {
"version": "4.8.1"
"version": "4.8.2"
},
"@typescript-eslint/parser": {
"version": "4.8.1"
"version": "4.8.2"
},
"@vuepress/plugin-active-header-links": {
"icon": "https://vuepress.vuejs.org/hero.png",
Expand Down Expand Up @@ -92,7 +92,7 @@
"eslint": {
"icon": "https://eslint.org/assets/img/favicon.512x512.png",
"url": "https://eslint.org",
"version": "7.13.0"
"version": "7.14.0"
},
"eslint-plugin-prettier": {
"icon": "https://prettier.io/icon.png",
Expand Down
23 changes: 20 additions & 3 deletions src/modules/extendedBuilding/assets/enhancedPersonnelAssignment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ import { InternalVehicle, Vehicle } from 'typings/Vehicle';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import { $m } from 'typings/Module';

export default (LSSM: Vue, $m: $m): void => {
export default async (
LSSM: Vue,
MODULE_ID: string,
getSetting: (key: string) => Promise<boolean>,
$m: $m
): Promise<void> => {
const personnel = Array.from(
document.querySelectorAll('#personal_table tbody tr') as NodeListOf<
HTMLTableRowElement
Expand All @@ -22,8 +27,8 @@ export default (LSSM: Vue, $m: $m): void => {

const fittingRows = [] as HTMLTableRowElement[];
const nonFittingRows = [] as HTMLTableRowElement[];
const schooling = vehicleTypes[vehicle.vehicle_type].shownSchooling;
personnel.forEach(row => {
const schooling = vehicleTypes[vehicle.vehicle_type].shownSchooling;
(!schooling ||
(schooling &&
row.textContent?.match(LSSM.$utils.escapeRegex(schooling)))
Expand All @@ -36,6 +41,9 @@ export default (LSSM: Vue, $m: $m): void => {
'toggle-fitting-personnel',
true
);
const checkboxSetting = await getSetting(
'enhancedPersonnelAssignmentCheckbox'
);

const settingsBar = document.createElement('form');
settingsBar.classList.add('form-group');
Expand All @@ -51,12 +59,21 @@ export default (LSSM: Vue, $m: $m): void => {
toggleFittingInput,
$m('enhancedPersonnelAssignment.toggleFittingPersonnel').toString()
);
toggleFittingInput.checked = checkboxSetting;
toggleFittingWrapper.append(toggleFittingLabel);
settingsBar.append(toggleFittingWrapper);

if (checkboxSetting) {
const mode = toggleFittingInput.checked ? 'add' : 'remove';
nonFittingRows.forEach(row => row.classList[mode]('hidden'));
}
toggleFittingInput.addEventListener('change', () => {
const mode = toggleFittingInput.checked ? 'add' : 'remove';
nonFittingRows.forEach(row => row.classList[mode]('hidden'));
LSSM.$store.dispatch('settings/setSetting', {
moduleId: MODULE_ID,
settingId: 'enhancedPersonnelAssignmentCheckbox',
value: toggleFittingInput.checked,
});
});

document.getElementById('personal_table')?.before(settingsBar);
Expand Down
71 changes: 31 additions & 40 deletions src/modules/extendedBuilding/assets/personnelDemands.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
import { InternalVehicle } from 'typings/Vehicle';
import { InternalVehicle, Vehicle } from 'typings/Vehicle';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import { $m } from 'typings/Module';

export default (LSSM: Vue, $m: $m): void => {
const vehicles = Array.from(
document.querySelectorAll('#vehicle_table tbody tr') as NodeListOf<
HTMLTableRowElement
>
);

export default (LSSM: Vue, $m: $m, buildingId: number): void => {
const dataList = document.querySelector('.dl-horizontal');

if (!dataList) return;
Expand All @@ -23,36 +17,33 @@ export default (LSSM: Vue, $m: $m): void => {
let sumMinPersonnelS6 = 0;
let sumMaxPersonnelS6 = 0;

vehicles.forEach(vehicle => {
const max = parseInt(vehicle.lastElementChild?.textContent || '0');
const min =
vehicleTypes[
parseInt(
vehicle
.querySelector('[vehicle_type_id]')
?.getAttribute('vehicle_type_id') || '-1'
)
]?.minPersonnel || 0;
sumMinPersonnel += min;
sumMaxPersonnel += max;

if (!vehicle.querySelector('.building_list_fms_6')) {
sumMinPersonnelS6 += min;
sumMaxPersonnelS6 += max;
}
});

const personnelTitle = document.createElement('dt');
const titleWrapper = document.createElement('strong');
titleWrapper.textContent = $m(`personnelDemands.demand`).toString();
personnelTitle.append(titleWrapper);
const personnelData = document.createElement('dd');
personnelData.textContent = `min: ${sumMinPersonnel} (${sumMinPersonnelS6}) / max: ${sumMaxPersonnel} (${sumMaxPersonnelS6})`;
const personnelAdditional = document.createElement('small');
personnelAdditional.textContent = $m(
`personnelDemands.additional`
).toString();
personnelAdditional.style.marginLeft = '1ch';
personnelData.append(personnelAdditional);
dataList.append(personnelTitle, personnelData);
LSSM.$store
.dispatch('api/fetchVehiclesAtBuilding', buildingId)
.then((vehicles: Vehicle[]) => {
vehicles.forEach(v => {
const type = vehicleTypes[v.vehicle_type];
sumMinPersonnel += type.minPersonnel;
sumMaxPersonnel +=
v.max_personnel_override ?? type.maxPersonnel;
if (v.fms_real !== 6) {
sumMinPersonnelS6 += type.minPersonnel;
sumMaxPersonnelS6 +=
v.max_personnel_override ?? type.maxPersonnel;
}
});

const personnelTitle = document.createElement('dt');
const titleWrapper = document.createElement('strong');
titleWrapper.textContent = $m(`personnelDemands.demand`).toString();
personnelTitle.append(titleWrapper);
const personnelData = document.createElement('dd');
personnelData.textContent = `min: ${sumMinPersonnel} (${sumMinPersonnelS6}) / max: ${sumMaxPersonnel} (${sumMaxPersonnelS6})`;
const personnelAdditional = document.createElement('small');
personnelAdditional.textContent = $m(
`personnelDemands.additional`
).toString();
personnelAdditional.style.marginLeft = '1ch';
personnelData.append(personnelAdditional);
dataList.append(personnelTitle, personnelData);
});
};
Loading

0 comments on commit ad4842f

Please sign in to comment.