2
2
import StateInspector from ' ../inspector/StateInspector.vue'
3
3
import { useSelectedEvent } from ' .'
4
4
import Defer from ' @front/mixins/defer'
5
- import DataField from ' ../inspector/DataField. vue'
5
+ import { computed , ref , watch } from ' @ vue/composition-api '
6
6
7
7
export default {
8
8
components: {
9
- StateInspector,
10
- DataField
9
+ StateInspector
11
10
},
12
11
13
12
mixins: [
14
13
Defer ()
15
14
],
16
15
17
16
setup () {
17
+ const {
18
+ selectedEvent ,
19
+ selectedStackedEvents ,
20
+ selectedGroupEvents
21
+ } = useSelectedEvent ()
22
+
23
+ const tabId = ref (' nearby' )
24
+
25
+ watch (selectedEvent, value => {
26
+ if (value && ! value .group ) {
27
+ tabId .value = ' nearby'
28
+ }
29
+ })
30
+
31
+ const displayedEvents = computed (() => tabId .value === ' nearby' ? selectedStackedEvents .value : selectedGroupEvents .value )
32
+
18
33
return {
19
- ... useSelectedEvent ()
34
+ selectedEvent,
35
+ selectedStackedEvents,
36
+ tabId,
37
+ displayedEvents
20
38
}
21
39
}
22
40
}
@@ -40,12 +58,29 @@ export default {
40
58
</div >
41
59
42
60
<div class =" text-xs opacity-75" >
43
- {{ selectedStackedEvents.length }} event{{ selectedStackedEvents.length > 1 ? 's' : '' }}
61
+ {{ selectedStackedEvents.length }} selected event{{ selectedStackedEvents.length > 1 ? 's' : '' }}
44
62
</div >
45
63
</div >
46
64
</div >
47
65
48
- <template v-for =" (event , index ) of selectedStackedEvents " >
66
+ <VueTabs
67
+ v-if =" selectedEvent.group && selectedEvent.group.events.length"
68
+ :tab-id.sync =" tabId"
69
+ group-class =" accent extend"
70
+ tab-class =" flat"
71
+ >
72
+ <VueTab
73
+ id =" nearby"
74
+ :label =" selectedStackedEvents.length > 1 ? 'Nearby' : 'Selected'"
75
+ />
76
+ <VueTab
77
+ v-if =" selectedEvent.group"
78
+ id =" group"
79
+ label =" Group"
80
+ />
81
+ </VueTabs >
82
+
83
+ <template v-for =" (event , index ) of displayedEvents " >
49
84
<StateInspector
50
85
v-if =" defer(index + 1)"
51
86
:key =" index"
@@ -59,6 +94,14 @@ export default {
59
94
<span class =" flex-1" >
60
95
{{ event.title || 'Event' }}
61
96
</span >
97
+
98
+ <span
99
+ v-if =" tabId === 'group' && selectedStackedEvents.find(e => e.time === event.time)"
100
+ class =" flex-none text-2xs p-1 rounded-full bg-green-100 dark:bg-green-900 text-green-500 border border-green-200 dark:border-green-800"
101
+ >
102
+ selected
103
+ </span >
104
+
62
105
<span class =" event-time flex-none flex items-center space-x-0.5 text-2xs font-mono p-1 rounded-full border border-gray-200 dark:border-gray-800" >
63
106
<VueIcon
64
107
icon =" schedule"
0 commit comments