11<script setup lang="ts">
22import type { TreeOption } from " naive-ui" ;
3- import { NButton } from " naive-ui" ;
3+ import { NButton , NDivider } from " naive-ui" ;
4+ import prettyBytes from " pretty-bytes" ;
45import identifierType from " ../../dev/related_identifier.json" ;
56import { Icon } from " #components" ;
7+
68const drawerActive = ref (false );
79
810const props = defineProps ({
@@ -12,10 +14,22 @@ const props = defineProps({
1214 },
1315});
1416
15- const drawerTitle = ref (" " );
16- const drawerDescription = ref <string | undefined >(" " );
17- const drawerIcon = ref (" " );
18- const drawerText = ref (" " );
17+ const drawerDetails = ref <{
18+ title: string ;
19+ description: string | undefined ;
20+ icon: string ;
21+ numberOfFiles: number ;
22+ size: number | undefined ;
23+ text: string ;
24+ }>({
25+ title: " " ,
26+ description: " " ,
27+ icon: " " ,
28+ numberOfFiles: 0 ,
29+ size: 0 ,
30+ text: " " ,
31+ });
32+
1933const relationType = ref <RelatedIdentifier [] | undefined >(undefined );
2034
2135function convertMetadataFile(
@@ -67,15 +81,27 @@ function convertDirectory(
6781 }),
6882 suffix : () =>
6983 h (
70- NButton ,
84+ " div " ,
7185 {
72- class: " " ,
73- onClick : () => {
74- openMetadataDrawer ([... previousPath , directory .directoryName ]);
75- },
76- size: " tiny" ,
86+ class: " flex" ,
7787 },
78- { default : () => " Learn More" },
88+ [
89+ directory .size
90+ ? h (" span" , { class: " text-sm" }, prettyBytes (directory .size ) || " " )
91+ : null ,
92+ directory .size ? h (NDivider , { vertical: true }) : null ,
93+ h (
94+ NButton ,
95+ {
96+ class: " " ,
97+ onClick : () => {
98+ openMetadataDrawer ([... previousPath , directory .directoryName ]);
99+ },
100+ size: " tiny" ,
101+ },
102+ { default : () => " Learn More" },
103+ ),
104+ ],
79105 ),
80106 };
81107}
@@ -140,29 +166,44 @@ const openMetadataDrawer = (currentPath: Array<string>) => {
140166 }
141167
142168 if (filetype ) {
143- drawerTitle .value = filetype .metadataFileName ;
144- drawerIcon .value = " iconamoon:file-fill" ;
145- drawerText .value = " This file" ;
146- drawerDescription .value = filetype .metadataFileDescription ;
169+ drawerDetails .value = {
170+ title: filetype .metadataFileName ,
171+ description: filetype .metadataFileDescription ,
172+ icon: " iconamoon:file-fill" ,
173+ numberOfFiles: 0 ,
174+ size: 0 ,
175+ text: " This file" ,
176+ };
147177 relationType .value = filetype .relatedIdentifier ?.map ((r ) => {
148178 return {
149179 ... r ,
150180 relationType: getRelationName (r .relationType ),
151181 };
152182 });
153183 } else if (foldertype ) {
154- drawerTitle .value = foldertype .directoryName ;
155- drawerIcon .value = " ic:baseline-folder" ;
156- drawerText .value = " This directory" ;
157- drawerDescription .value = foldertype .directoryDescription ;
184+ drawerDetails .value = {
185+ title: foldertype .directoryName ,
186+ description: foldertype .directoryDescription ,
187+ icon: " ic:baseline-folder" ,
188+ numberOfFiles: foldertype .numberOfFiles || 0 ,
189+ size: foldertype .size || 0 ,
190+ text: " This directory" ,
191+ };
158192 relationType .value = foldertype .relatedIdentifier ?.map ((r ) => {
159193 return {
160194 ... r ,
161195 relationType: getRelationName (r .relationType ),
162196 };
163197 });
164198 } else {
165- drawerDescription .value = " No metadata found for this file" ;
199+ drawerDetails .value = {
200+ title: " No metadata found for this file" ,
201+ description: " " ,
202+ icon: " iconamoon:file-fill" ,
203+ numberOfFiles: 0 ,
204+ size: 0 ,
205+ text: " This file" ,
206+ };
166207 }
167208
168209 drawerActive .value = true ;
@@ -187,17 +228,31 @@ const openMetadataDrawer = (currentPath: Array<string>) => {
187228 >
188229 <n-drawer-content >
189230 <n-flex vertical >
190- <div class =" mb-1 text-lg font-bold" >
191- <Icon :name =" drawerIcon" size =" 22" color =" #0284c7" />
192- {{ drawerTitle }}
193- </div >
231+ <n-flex justify =" space-between" >
232+ <div class =" mb-1 text-lg font-bold" >
233+ <Icon :name =" drawerDetails.icon" size =" 22" color =" #0284c7" />
234+ {{ drawerDetails.title }}
235+ </div >
236+
237+ <div class =" flex items-center" >
238+ <p v-if =" drawerDetails.numberOfFiles" >
239+ {{ drawerDetails.numberOfFiles }} files
240+ </p >
241+
242+ <n-divider v-if =" drawerDetails.numberOfFiles" vertical />
243+
244+ <p v-if =" drawerDetails.size" >
245+ {{ prettyBytes(drawerDetails.size) }}
246+ </p >
247+ </div >
248+ </n-flex >
194249
195250 <p class =" text-md my-1 w-full border-b pb-2 font-semibold" >
196251 Description
197252 </p >
198253
199- <p v-if =" drawerDescription " >
200- {{ drawerDescription }}
254+ <p v-if =" drawerDetails.description " >
255+ {{ drawerDetails.description }}
201256 </p >
202257
203258 <p v-else >
@@ -215,7 +270,7 @@ const openMetadataDrawer = (currentPath: Array<string>) => {
215270 class =" mt-4 flex"
216271 >
217272 <li >
218- {{ drawerText }}
273+ {{ drawerDetails.text }}
219274 <span class =" mr-2 lowercase" >{{ type.relationType }}</span >
220275
221276 <a
0 commit comments