Skip to content
Snippets Groups Projects
Commit 5511d8cf authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Merge branch 'fix/url-scheme' into 'master'

Use hash of person overview instead of own URL for statistics

See merge request !470
parents 6d7d1c89 ebe4512c
No related branches found
No related tags found
1 merge request!470Use hash of person overview instead of own URL for statistics
Pipeline #195617 failed
......@@ -65,11 +65,11 @@
i18n-key="alsijil.coursebook.statistics.person_view_details"
icon-text="mdi-open-in-new"
:to="{
name: 'alsijil.coursebook_statistics',
name: 'core.personById',
params: {
personId: item.person.id,
mode: MODE.PARTICIPATIONS,
},
hash: '#' + MODE.PARTICIPATIONS,
}"
/>
</template>
......
......@@ -7,18 +7,7 @@
<v-card-title v-else-if="compact">
{{ $t("alsijil.coursebook.statistics.person_compact.title") }}
<v-spacer />
<base-button
:icon="true"
icon-text="mdi-open-in-new"
i18n-key=""
:to="{
name: 'alsijil.coursebook_statistics',
params: {
personId: person.id,
mode: MODE.PARTICIPATIONS,
},
}"
/>
<slot name="header" />
</v-card-title>
<v-card-title v-else>
{{ $t("alsijil.coursebook.statistics.title_plural") }}
......@@ -59,7 +48,6 @@
<script>
import personOverviewCardMixin from "aleksis.core/mixins/personOverviewCardMixin.js";
import BaseButton from "aleksis.core/components/generic/buttons/BaseButton.vue";
import MessageBox from "aleksis.core/components/generic/MessageBox.vue";
import StatisticsAbsencesCard from "./StatisticsAbsencesCard.vue";
import StatisticsTardinessCard from "./StatisticsTardinessCard.vue";
......@@ -73,7 +61,6 @@ export default {
name: "StatisticsForPersonCard",
mixins: [personOverviewCardMixin],
components: {
BaseButton,
MessageBox,
StatisticsAbsencesCard,
StatisticsTardinessCard,
......@@ -111,6 +98,9 @@ export default {
MODE() {
return MODE;
},
mode() {
return this.$hash;
},
gridTemplateAreas() {
return this.compact
? `"absences extra_marks" "tardinesses tardinesses"`
......
<template>
<fullscreen-dialog-page
:fallback-url="{ name: 'core.personById', props: { id: personId } }"
>
<fullscreen-dialog-page :fallback-url="{ name: 'core.personById', props: { id: personId } }"
>
<template #title>
{{
$t("alsijil.coursebook.statistics.person_page.title", {
fullName: personName?.fullName || "???",
})
}}
</template>
<div class="d-flex" style="gap: 4em">
<div class="flex-grow-1" style="max-width: 100%">
<!-- documentations for person list -->
......@@ -301,11 +307,6 @@ export default {
type: [Number, String],
required: true,
},
mode: {
type: String,
required: false,
default: MODE.PARTICIPATIONS,
},
},
apollo: {
personName: {
......@@ -315,13 +316,6 @@ export default {
person: this.personId,
};
},
result({ data }) {
this.$setToolBarTitle(
this.$t("alsijil.coursebook.statistics.person_page.title", {
fullName: data.personName.fullName || "???",
}),
);
},
},
absenceReasons: {
query: absenceReasons,
......@@ -346,6 +340,9 @@ export default {
MODE() {
return MODE;
},
mode() {
return this.$hash;
},
},
methods: {
gqlQuery() {
......@@ -360,12 +357,9 @@ export default {
this.selected = [];
this.$router.push({
name: "alsijil.coursebook_statistics",
params: {
personId: this.personId,
mode: mode,
},
this.$router.replace({
...this.$route,
hash: "#" + mode,
});
},
showEdit(item) {
......
<template>
<statistics-for-person-card v-bind="{ ...$attrs, ...$props }">
<template #header>
<base-button
:icon="true"
icon-text="mdi-open-in-new"
i18n-key=""
:to="{
name: $route.name,
params: $route.params,
hash: '#' + MODE.PARTICIPATIONS,
}"
/>
<statistics-for-person-page
v-if="Object.values(MODE).includes(mode)"
:person-id="person.id"
/>
</template>
</statistics-for-person-card>
</template>
<script>
import personOverviewCardMixin from "aleksis.core/mixins/personOverviewCardMixin.js";
import BaseButton from "aleksis.core/components/generic/buttons/BaseButton.vue";
import StatisticsForPersonPage from "./StatisticsForPersonPage.vue";
import StatisticsForPersonCard from "./StatisticsForPersonCard.vue";
import { MODE } from "./modes";
export default {
name: "StatisticsForPersonWidget",
mixins: [personOverviewCardMixin],
components: {
BaseButton,
StatisticsForPersonPage,
StatisticsForPersonCard,
},
computed: {
MODE() {
return MODE;
},
mode() {
return this.$hash;
},
},
};
</script>
export const MODE = {
PARTICIPATIONS: "participations",
PERSONAL_NOTES: "personal_notes",
PARTICIPATIONS: "alsijil.participations",
PERSONAL_NOTES: "alsijil.personal_notes",
};
import { DateTime } from "luxon";
import { MODE } from "./components/coursebook/statistics/modes";
export const collectionItems = {
coreGroupActions: [
......@@ -32,7 +31,7 @@ export const collectionItems = {
key: "core-person-widgets",
component: () =>
import(
"./components/coursebook/statistics/StatisticsForPersonCard.vue"
"./components/coursebook/statistics/StatisticsForPersonWidget.vue"
),
shouldDisplay: () => true,
colProps: {
......@@ -113,21 +112,5 @@ export default {
permission: "alsijil.view_extramarks_rule",
},
},
{
path: `statistics/:personId/:mode(${Object.values(MODE).join("|")})`,
component: () =>
import(
"./components/coursebook/statistics/StatisticsForPersonPage.vue"
),
name: "alsijil.coursebook_statistics",
props: true,
meta: {
inMenu: false,
titleKey: "alsijil.coursebook.statistics.person_compact.title",
toolbarTitle: "alsijil.coursebook.statistics.person_compact.title",
// TODO: Add permission & change it here.
permission: "alsijil.view_documentations_menu_rule",
},
},
],
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment