|
| 1 | +dv.container.className += ' atx-alv1-dataview' |
| 2 | + |
| 3 | +var html = ""; |
| 4 | +let arrAlphabet = []; |
| 5 | +let arrPages = dv.pages( "" ) |
| 6 | +.forEach( p => |
| 7 | +{ |
| 8 | + const file = p.file |
| 9 | + const file_path = file.path; |
| 10 | + const file_name = file.name; |
| 11 | + const file_label = file.frontmatter.name || file.frontmatter.title || file.frontmatter.alias || file_name; |
| 12 | + |
| 13 | + const letter = file_label.charAt( 0 ).toUpperCase( ); |
| 14 | + let index = arrAlphabet.findIndex( ( item ) => item.name === letter ); |
| 15 | + |
| 16 | + if ( index === -1 ) |
| 17 | + arrAlphabet.push( { name: letter, pages: [ { name: file_name, label: file_label, path: file_path } ] } ); |
| 18 | + else |
| 19 | + { |
| 20 | + var item = arrAlphabet.find( item => item.name == letter ); |
| 21 | + let arr = item.pages; |
| 22 | + |
| 23 | + arr.push( { name: file_name, label: file_label, path: file_path } ); |
| 24 | + } |
| 25 | + |
| 26 | + arrAlphabet.sort( ( a, b ) => a.name.localeCompare( b.name ) ) |
| 27 | +}); |
| 28 | + |
| 29 | +const ulAlphabet = dv.el( 'ul', '', { container: dv.container } ); |
| 30 | + |
| 31 | +dv.list( |
| 32 | + dv.array( arrAlphabet ) |
| 33 | + .forEach( obj => |
| 34 | + { |
| 35 | + const arrPages = obj.pages; |
| 36 | + const liAlphabet = dv.el( 'li', obj.name, { container: ulAlphabet } ); |
| 37 | + const ulPages = dv.el( 'ul', '', { container: liAlphabet }); |
| 38 | + |
| 39 | + Promise.all( arrPages.map( async ( pages ) => |
| 40 | + { |
| 41 | + const page_path = pages.path; |
| 42 | + const page_name = pages.name; |
| 43 | + const page_label = pages.label; |
| 44 | + |
| 45 | + const file_link = dv.fileLink( page_path, false, page_label ); |
| 46 | + |
| 47 | + dv.el( 'li', file_link, { container: ulPages } ); |
| 48 | + |
| 49 | + } |
| 50 | + )); |
| 51 | + }) |
| 52 | +) |
| 53 | + |
| 54 | +const divClose = dv.el( 'div', html, { container: dv.container, cls: 'atx-alv1-close' } ); |
0 commit comments