@@ -7,20 +7,24 @@ import type {AggregateCardRow} from "@/types/helpers";
7
7
8
8
const props = defineProps <{
9
9
aggregate: Aggregate
10
+ filteredYear? : number
11
+ filteredLanguage? : string
12
+ filteredFormat? : string
10
13
}>()
11
14
12
15
const emit = defineEmits <{
13
16
filterYear: [year : number ]
14
17
filterFormat: [format : string ]
15
18
filterLanguage: [language : string ]
19
+ clear: [filter : string ]
16
20
}>()
17
21
18
22
const languageRow = computed (() => {
19
23
return props .aggregate .languages .map ((item ) => {
20
24
return {
21
25
code: item .language ,
22
26
name: displayLanguage (item .language ),
23
- count: item .count
27
+ count: item .count ,
24
28
} as AggregateCardRow
25
29
}
26
30
)
@@ -31,7 +35,7 @@ const formatRow = computed(() => {
31
35
return {
32
36
code: item .format ,
33
37
name: displayFormat (item .format ),
34
- count: item .count
38
+ count: item .count ,
35
39
} as AggregateCardRow
36
40
}
37
41
)
@@ -42,7 +46,7 @@ const yearRow = computed(() => {
42
46
return {
43
47
code: item .year .toString (),
44
48
name: item .year .toString (),
45
- count: item .count
49
+ count: item .count ,
46
50
} as AggregateCardRow
47
51
}
48
52
)
@@ -64,12 +68,31 @@ const applyFilter = (filter: string, code: string) => {
64
68
}
65
69
}
66
70
}
71
+
72
+ const clearFilter = (filter : string ) => {
73
+ emit (' clear' , filter )
74
+ }
75
+
67
76
</script >
68
77
69
78
<template >
70
79
<div v-if =" props.aggregate" >
71
- <AggregateCard title =" Languages" :aggregate =" languageRow" @filter =" applyFilter('LANGUAGE', $event)" />
72
- <AggregateCard title =" Formats" :aggregate =" formatRow" @filter =" applyFilter('FORMAT', $event)" />
73
- <AggregateCard title =" Years" :aggregate =" yearRow" @filter =" applyFilter('YEAR', $event)" />
80
+ <AggregateCard title =" Languages"
81
+ :aggregate =" languageRow"
82
+ @filter =" applyFilter('LANGUAGE', $event)"
83
+ @clear =" clearFilter('LANGUAGE')"
84
+ :filter =" displayLanguage(filteredLanguage)" />
85
+
86
+ <AggregateCard title =" Formats"
87
+ :aggregate =" formatRow"
88
+ @filter =" applyFilter('FORMAT', $event)"
89
+ @clear =" clearFilter('FORMAT')"
90
+ :filter =" displayFormat(filteredFormat)" />
91
+
92
+ <AggregateCard title =" Years"
93
+ :aggregate =" yearRow"
94
+ @filter =" applyFilter('YEAR', $event)"
95
+ @clear =" clearFilter('YEAR')"
96
+ :filter =" filteredYear?.toString()" />
74
97
</div >
75
98
</template >
0 commit comments