11<template >
2- <View :wrap =" false" :min-presence-ahead =" 75" >
3- <View
4- class =" schedule-entry-header-title"
5- :style =" { borderBottomColor: activity.category().color }"
6- >
7- <View :id =" `scheduleEntry_${scheduleEntry.id}`" class =" schedule-entry-title" >
8- <CategoryLabel
9- :category =" activity.category()"
10- class =" schedule-entry-category-label"
11- />
12- <Text :id =" id" :bookmark =" bookmarkTitle" class =" schedule-entry-number-and-title" >
13- {{ scheduleEntry.number }} {{ activity.title }}
14- </Text >
15- </View >
16- <Text class =" schedule-entry-date" >{{ startAt }} - {{ endAt }}</Text >
17- </View >
18- <View v-if =" showHeader" class =" schedule-entry-header" >
19- <View class =" schedule-entry-header-metadata" >
20- <View class =" schedule-entry-header-metadata-entry"
21- ><Text v-if =" activity.location" class =" schedule-entry-header-metadata-label"
22- >{{ $tc('entity.activity.fields.location') }}:</Text
23- ><Text >{{ activity.location }}</Text ></View
24- >
25- </View >
26- <View class =" schedule-entry-header-divider" />
27- <View class =" schedule-entry-header-metadata" >
28- <View class =" schedule-entry-header-metadata-entry" >
29- <Text
30- v-if =" activity.activityResponsibles().items.length"
31- class =" schedule-entry-header-metadata-label"
32- >{{ $tc('entity.activity.fields.responsible') }}:</Text
33- >
34- <Responsibles :activity =" activity" style =" max-width : 200pt " />
35- </View >
36- </View >
37- </View >
38- </View >
2+ <ScheduleEntryTitle :schedule-entry =" scheduleEntry" />
393 <View style =" padding-bottom : 20pt ; font-size : 10pt " >
404 <ContentNode :content-node =" activity.rootContentNode()" />
415 </View >
426</template >
437<script >
448import PdfComponent from ' @/PdfComponent.js'
45- import CategoryLabel from ' ../CategoryLabel.vue'
46- import Responsibles from ' ../Responsibles.vue'
9+ import ScheduleEntryTitle from ' ./ScheduleEntryTitle.vue'
4710import ContentNode from ' ./contentNode/ContentNode.vue'
4811import { setContentNodeComponent as setContentNodeComponentColumn } from ' ./contentNode/ColumnLayout.vue'
4912import { setContentNodeComponent as setContentNodeComponentDefault } from ' ./contentNode/ResponsiveLayout.vue'
@@ -53,7 +16,7 @@ setContentNodeComponentDefault(ContentNode)
5316
5417export default {
5518 name: ' ScheduleEntry' ,
56- components: { Responsibles, CategoryLabel , ContentNode },
19+ components: { ScheduleEntryTitle , ContentNode },
5720 extends: PdfComponent,
5821 props: {
5922 scheduleEntry: { type: Object , required: true },
@@ -62,89 +25,8 @@ export default {
6225 activity () {
6326 return this .scheduleEntry .activity ()
6427 },
65- bookmarkTitle () {
66- return [
67- this .activity .category ().short ,
68- this .scheduleEntry .number ,
69- this .activity .title ,
70- ]
71- .filter ((entry ) => entry)
72- .join (' ' )
73- },
74- start () {
75- return this .$date .utc (this .scheduleEntry .start )
76- },
77- end () {
78- return this .$date .utc (this .scheduleEntry .end )
79- },
80- startAt () {
81- return this .start .format (' ddd l LT' )
82- },
83- endAt () {
84- return this .start .format (' ddd l' ) === this .end .format (' ddd l' )
85- ? this .end .format (' LT' )
86- : this .end .format (' ddd l LT' )
87- },
88- showHeader () {
89- return (
90- this .activity .location .length || this .activity .activityResponsibles ().items .length
91- )
92- },
9328 },
9429}
9530 </script >
9631<pdf-style >
97- .schedule-entry-header-title {
98- display: flex;
99- flex-direction: row;
100- justify-content: space-between;
101- align-items: baseline;
102- padding-bottom: 2pt;
103- border-bottom: 2pt solid #aaaaaa;
104- }
105- .schedule-entry-title {
106- flex-grow: 1;
107- display: flex;
108- flex-direction: row;
109- font-size: 14;
110- font-weight: semibold;
111- }
112- .schedule-entry-category-label {
113- margin: 4pt 0;
114- font-size: 12pt;
115- }
116- .schedule-entry-number-and-title {
117- margin: 4pt 4pt;
118- max-width: 345pt;
119- }
120- .schedule-entry-date {
121- font-size: 11pt;
122- }
123- .schedule-entry-header {
124- display: flex;
125- flex-direction: row;
126- justify-content: space-between;
127- border-bottom: 0.5pt solid black;
128- font-size: 10pt;
129- margin-bottom: 10pt;
130- }
131- .schedule-entry-header-divider {
132- border-left: 0.5pt solid black;
133- margin-left: 3.5pt;
134- padding-left: 5pt
135- }
136- .schedule-entry-header-metadata {
137- width: 50%;
138- padding: 2pt 0;
139- }
140- .schedule-entry-header-metadata-entry {
141- flex-direction: row;
142- align-items: flex-start;
143- column-gap: 6pt;
144- }
145- .schedule-entry-header-metadata-label {
146- font-weight: semibold;
147- flex-shrink: 0;
148- flex-grow: 0;
149- }
15032</pdf-style >
0 commit comments