mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-11-04 07:01:31 +08:00 
			
		
		
		
	
		
			
	
	
		
			47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								const notes = await api.runOnBackend(() => {
							 | 
						||
| 
								 | 
							
								    const blobSizes = api.sql.getMap(`SELECT blobId, LENGTH(content) FROM blobs`);
							 | 
						||
| 
								 | 
							
								    const noteBlobIds = api.sql.getRows(`
							 | 
						||
| 
								 | 
							
								        SELECT
							 | 
						||
| 
								 | 
							
								            notes.noteId,
							 | 
						||
| 
								 | 
							
								            notes.blobId,
							 | 
						||
| 
								 | 
							
								            GROUP_CONCAT(revisions.blobId) AS revisions_blobIds,
							 | 
						||
| 
								 | 
							
								            GROUP_CONCAT(note_attachments.blobId) AS note_attachments_blobIds,
							 | 
						||
| 
								 | 
							
								            GROUP_CONCAT(revision_attachments.blobId) AS revision_attachments_blobIds
							 | 
						||
| 
								 | 
							
								        FROM
							 | 
						||
| 
								 | 
							
								            notes
							 | 
						||
| 
								 | 
							
								            LEFT JOIN revisions USING (noteId)
							 | 
						||
| 
								 | 
							
								            LEFT JOIN attachments AS note_attachments ON notes.noteId = note_attachments.ownerId
							 | 
						||
| 
								 | 
							
								            LEFT JOIN attachments AS revision_attachments ON revisions.revisionId = revision_attachments.ownerId
							 | 
						||
| 
								 | 
							
								        GROUP BY noteId`);
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    let noteSizes = [];
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    for (const {noteId, blobId, revisions_blobIds, note_attachments_blobIds, revision_attachments_blobIds} of noteBlobIds) {
							 | 
						||
| 
								 | 
							
								       const blobIds = new Set(`${blobId},${revisions_blobIds},${note_attachments_blobIds},${revision_attachments_blobIds}`.split(',').filter(blobId => !!blobId));
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        const lengths = [...blobIds].map(blobId => blobSizes[blobId] || 0);
							 | 
						||
| 
								 | 
							
								        const totalLength = lengths.reduce((partialSum, a) => partialSum + a, 0);
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        noteSizes.push({ noteId, size: totalLength });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    noteSizes.sort((a, b) => a.size > b.size ? -1 : 1);
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    noteSizes = noteSizes.splice(0, 100);
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    return noteSizes;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const $statsTable = api.$container.find('.stats-table');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								for (const note of notes) {     
							 | 
						||
| 
								 | 
							
								    $statsTable.append(
							 | 
						||
| 
								 | 
							
								        $("<tr>")
							 | 
						||
| 
								 | 
							
								            .append(
							 | 
						||
| 
								 | 
							
								                $("<td>").append(await api.createNoteLink(note.noteId, {showNotePath: true}))
							 | 
						||
| 
								 | 
							
								            ) 
							 | 
						||
| 
								 | 
							
								            .append(
							 | 
						||
| 
								 | 
							
								                $("<td nowrap>").text(note.size + " bytes")
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								}
							 |