Skip to content

Commit

Permalink
Bug/dave 353 belastungsplan (#177)
Browse files Browse the repository at this point in the history
* fix DAVE-351: switch color for North and South

* fix DAVE-350: change line width

* fix DAVE-352: fix rotation for east

* switch to Himmelsrichtungen Enum

* recalculate line width

* fix Belastungsplan Zaehlstelle if no Fahrzeug is selected

* fix Belastungsplan Messstelle if no Fahrzeug is selected

* refactor to composable

* remove unused methods

* remove old todos

* Anmerkung eingebaut
  • Loading branch information
Der-Alex-K authored Sep 16, 2024
1 parent f8c3c4b commit 0b1c17f
Show file tree
Hide file tree
Showing 13 changed files with 195 additions and 149 deletions.
1 change: 0 additions & 1 deletion frontend/src/components/messstelle/ValidWochentage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ const validWochentageRequestDto = computed(() => {
startDate: chosenOptionsZeitraum.value[0],
endDate: chosenOptionsZeitraum.value[1],
messstelleId: route.params.messstelleId as string,
// TODO als prop injecten
};
});
Expand Down
25 changes: 21 additions & 4 deletions frontend/src/components/messstelle/charts/MessstelleDiagramme.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,24 @@
<!-- Inhalte -->
<v-tabs-window-item :value="TAB_BELASTUNGSPLAN">
<v-sheet
v-if="
belastungsplanDataDTO.ladeBelastungsplanMessquerschnittDataDTOList
"
:max-height="contentHeight"
width="100%"
class="overflow-y-auto"
>
<v-banner v-if="!hasSelectedVerkehrsarten">
<v-icon
color="error"
size="36"
icon="mdi-alert-decagram-outline"
/>
<p class="ml-2">
{{ globalInfoMessage.NO_BELASTUNGSPLAN }}
</p>
</v-banner>
<belastungsplan-messquerschnitt-card
v-else-if="
belastungsplanDataDTO.ladeBelastungsplanMessquerschnittDataDTOList
"
ref="belastungsplanCard"
:belastungsplan-data="belastungsplanDataDTO"
:dimension="contentHeight"
Expand Down Expand Up @@ -147,6 +157,8 @@ import { useUserStore } from "@/store/UserStore";
import Erhebungsstelle from "@/types/enum/Erhebungsstelle";
import MessstelleHistoryItem from "@/types/history/MessstelleHistoryItem";
import { useDownloadUtils } from "@/util/DownloadUtils";
import { useGlobalInfoMessage } from "@/util/GlobalInfoMessage";
import { useMessstelleUtils } from "@/util/MessstelleUtils";
import { useReportTools } from "@/util/ReportTools";
// Refactoring: Synergieeffekt mit ZaehldatenDiagramme nutzen
Expand Down Expand Up @@ -197,22 +209,27 @@ const belastungsplanSvg = ref<Blob>();
const belastungsplanPngBase64 = ref("");
const messstelleStore = useMessstelleStore();
const messstelleUtils = useMessstelleUtils();
const userStore = useUserStore();
const snackbarStore = useSnackbarStore();
const historyStore = useHistoryStore();
const route = useRoute();
const reportTools = useReportTools();
const downloadUtils = useDownloadUtils();
const globalInfoMessage = useGlobalInfoMessage();
const messstelleId = computed(() => {
// TODO via Props injecten
return route.params.messstelleId as string;
});
const options = computed<MessstelleOptionsDTO>(() => {
return messstelleStore.getFilteroptions;
});
const hasSelectedVerkehrsarten = computed<boolean>(() => {
return messstelleUtils.hasSelectedVerkehrsarten(options.value.fahrzeuge);
});
const isTabListenausgabe = computed<boolean>(() => {
return TAB_LISTENAUSGABE === activeTab.value;
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,19 @@ function areChosenOptionsValid(): boolean {
result = false;
snackbarStore.showError("Der Ausgewählte Zeitraum ist zu groß");
}
if (
!(
messstelleUtils.hasSelectedVerkehrsarten(chosenOptions.value.fahrzeuge) ||
messstelleUtils.hasSelectedFahrzeugkategorie(
chosenOptions.value.fahrzeuge
)
)
) {
result = false;
snackbarStore.showError(
"Es muss mindestens eine Verkehrsart oder Fahrzeugkategorie ausgewählt sein."
);
}
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,12 @@
</v-row>
</v-col>
<v-col cols="4">
<p
v-if="!hasSelectedVerkehrsarten"
class="text-red"
>
{{ globalInfoMessage.NO_BELASTUNGSPLAN }}
</p>
{{ helpTextVerkehrsarten }}
</v-col>
</v-row>
Expand All @@ -181,11 +187,15 @@ import { useMessstelleStore } from "@/store/MessstelleStore";
import Fahrzeug from "@/types/enum/Fahrzeug";
import ZaehldatenIntervall from "@/types/enum/ZaehldatenIntervall";
import { useFahrzeugPanelTools } from "@/util/FahrzeugPanelTools";
import { useGlobalInfoMessage } from "@/util/GlobalInfoMessage";
import { useMessstelleUtils } from "@/util/MessstelleUtils";
const chosenOptionsCopy = defineModel<MessstelleOptionsDTO>({ required: true });
const fahrzeugPanelTools = useFahrzeugPanelTools();
const messstelleStore = useMessstelleStore();
const messstelleUtils = useMessstelleUtils();
const globalInfoMessage = useGlobalInfoMessage();
const selectOrDeselectAllVerkehrsartenVmodel = ref(false);
const hoverSelectOrDeselectAllVerkehrsarten = ref(false);
Expand Down Expand Up @@ -219,6 +229,12 @@ const labelSelectOrDeselectAllVerkehrsarten = computed(() => {
: "Alles auswählen";
});
const hasSelectedVerkehrsarten = computed<boolean>(() => {
return messstelleUtils.hasSelectedVerkehrsarten(
chosenOptionsCopyFahrzeuge.value
);
});
/**
* Liefert die aktuelle Anzahl der ausgewählten Verkehrsarten zurück.
*/
Expand Down
59 changes: 42 additions & 17 deletions frontend/src/components/zaehlstelle/ZaehldatenDiagramme.vue
Original file line number Diff line number Diff line change
Expand Up @@ -82,23 +82,35 @@
width="100%"
class="overflow-y-auto"
>
<belastungsplan-kreuzung-svg
v-show="!belastungsplanDTO.kreisverkehr"
:dimension="contentHeight"
:data="belastungsplanDTO"
:doc-mode="false"
:geometrie-mode="true"
@print="storeSvg($event)"
/>

<belastungsplan-card
v-show="belastungsplanDTO.kreisverkehr"
ref="belastungsplanCard"
:dimension="contentHeight"
:belastungsplan-data="belastungsplanDTO"
:loaded="false"
:zaehlung-id="zaehlungsId"
/>
<div v-if="hasSelectedVerkehrsarten">
<belastungsplan-kreuzung-svg
v-show="!belastungsplanDTO.kreisverkehr"
:dimension="contentHeight"
:data="belastungsplanDTO"
:doc-mode="false"
:geometrie-mode="true"
@print="storeSvg($event)"
/>

<belastungsplan-card
v-show="belastungsplanDTO.kreisverkehr"
ref="belastungsplanCard"
:dimension="contentHeight"
:belastungsplan-data="belastungsplanDTO"
:loaded="false"
:zaehlung-id="zaehlungsId"
/>
</div>
<v-banner v-else>
<v-icon
color="error"
size="36"
icon="mdi-alert-decagram-outline"
/>
<p class="ml-2">
{{ globalInfoMessage.NO_BELASTUNGSPLAN }}
</p>
</v-banner>
</v-sheet>
<progress-loader v-model="belastungsplanLoading" />
</v-tabs-window-item>
Expand Down Expand Up @@ -208,6 +220,7 @@ import Erhebungsstelle from "@/types/enum/Erhebungsstelle";
import ZaehlstelleHistoryItem from "@/types/history/ZaehlstelleHistoryItem";
import DefaultObjectCreator from "@/util/DefaultObjectCreator";
import { useDownloadUtils } from "@/util/DownloadUtils";
import { useGlobalInfoMessage } from "@/util/GlobalInfoMessage";
import { useReportTools } from "@/util/ReportTools";
interface Props {
Expand Down Expand Up @@ -274,10 +287,22 @@ const zaehlstelleStore = useZaehlstelleStore();
const historyStore = useHistoryStore();
const reportTools = useReportTools();
const downloadUtils = useDownloadUtils();
const globalInfoMessage = useGlobalInfoMessage();
const options = computed<OptionsDTO>(() => {
return zaehlstelleStore.getFilteroptions;
});
const hasSelectedVerkehrsarten = computed<boolean>(() => {
return (
options.value.kraftfahrzeugverkehr ||
options.value.schwerverkehr ||
options.value.gueterverkehr ||
options.value.schwerverkehrsanteilProzent ||
options.value.gueterverkehrsanteilProzent ||
options.value.radverkehr ||
options.value.fussverkehr
);
});
const zaehlungsId = computed(() => {
return zaehlstelleStore.getZaehlungsId;
Expand Down
Loading

0 comments on commit 0b1c17f

Please sign in to comment.