Skip to content
Snippets Groups Projects
Commit 4023ab7d authored by permcu's avatar permcu
Browse files

Group documentations by day and show in coursebook frontend

parent 7baed8d8
No related branches found
No related tags found
2 merge requests!352Draft: Resolve "Add dialog with each lesson's students",!350Resolve "Add simple course book list"
......@@ -4,15 +4,34 @@
:gql-query="gqlQuery"
:gql-additional-query-args="gqlQueryArgs"
>
<template #default="{ items, groupedItems }">
{{ items }}
<template #default="{ items }">
<v-card class="my-6 mx-3">
<v-list-item
v-for="day in groupDocsByDay(items)"
two-line
>
<v-list-item-content>
<v-list-item-title>{{ day[0] }}</v-list-item-title>
<v-list>
<!-- I know slice copies the array. But show me something better. -->
<v-list-item v-for="doc in day.slice(1)">
<v-card class="my-2">
<!-- Insert subcomponents here. -->
<v-card-text>{{ doc.id }}</v-card-text>
</v-card>
</v-list-item>
</v-list>
</v-list-item-content>
</v-list-item>
</v-card>
</template>
</c-r-u-d-iterator>
</template>
<script>
import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue"
import gqlDocumentationsForCoursebook from "./coursebook.graphql"
import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue";
import gqlDocumentationsForCoursebook from "./coursebook.graphql";
import { DateTime } from "luxon";
export default {
name: "Coursebook",
......@@ -54,5 +73,21 @@ export default {
};
},
},
methods: {
groupDocsByDay(docs) {
const byDay = docs.reduce(
(byDay, doc) => {
// This works with dummy. Does actual doc have dateStart instead?
const day = DateTime.fromISO(doc.datetimeStart).startOf('day');
byDay[day] ??= [];
byDay[day].push(doc);
return byDay;
},
{}
);
return Object.keys(byDay).sort().map(key => [key, ...byDay[key]]);
},
},
};
</script>
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