@@ -7,6 +7,7 @@ interface IMetadata
77 type : EFileState ; // 'renamed' | 'deleted' | 'edit' | 'new';
88 hash : string ;
99 filename : string ;
10+ commented : boolean ;
1011}
1112
1213class GitLabTree
@@ -54,12 +55,12 @@ class GitLabTree
5455
5556 this . metadata = this . obtainMetadata ( ) ;
5657 if ( this . metadata . length === 0 ) { return ; }
57- const filenames : string [ ] = this . metadata . map ( m => m . filename ) ;
58+ this . obtainCommentedFiles ( ) ;
5859
5960
6061 // Analyze filenames
6162
62- this . fileNames = filenames ;
63+ this . fileNames = this . metadata . map ( m => m . filename ) ;
6364 this . pathPrefix = this . getPrefixPath ( this . fileNames ) ;
6465 this . strippedFileNames = this . removePathPrefix ( this . fileNames , this . pathPrefix ) ;
6566
@@ -108,6 +109,7 @@ class GitLabTree
108109 this . rightElement . classList . add ( CSS_PREFIX + '-right' ) ;
109110 }
110111
112+
111113 /**
112114 * Collects basic information about files - their names, their hashes, and happend to them.
113115 *
@@ -136,21 +138,36 @@ class GitLabTree
136138
137139 // Convert type
138140
139- if ( ~ typeRaw . indexOf ( 'add -file' ) ) { type = EFileState . ADDED ; }
141+ if ( ~ typeRaw . indexOf ( 'new -file' ) ) { type = EFileState . ADDED ; }
140142 if ( ~ typeRaw . indexOf ( 'renamed-file' ) ) { type = EFileState . RENAMED ; }
141143 if ( ~ typeRaw . indexOf ( 'deleted-file' ) ) { type = EFileState . DELETED ; }
142144
143145
144146 // Save
145147
146- const fileMetadata : IMetadata = { type, hash, filename } ;
148+ const fileMetadata : IMetadata = { type, hash, filename, commented : false } ;
147149 metadata . push ( fileMetadata ) ;
148150 }
149151
150152 return metadata ;
151153 }
152154
153155
156+ /**
157+ * Adds flag 'commented' in metadata to every file that was commented.
158+ */
159+ obtainCommentedFiles ( )
160+ {
161+ const fileHolders = Array . prototype . slice . call ( this . fileHolders ) ;
162+
163+ fileHolders . forEach ( ( fileHolder , index ) =>
164+ {
165+ const metadata = this . getMetadata ( index ) ;
166+ metadata . commented = ! ! fileHolder . querySelector ( '.notes_holder' ) ;
167+ } )
168+ }
169+
170+
154171 /**
155172 * Returns metadata by index.
156173 *
@@ -334,7 +351,8 @@ class GitLabTree
334351 let file : HTMLAnchorElement = document . createElement ( 'a' ) ;
335352 file . setAttribute ( 'href' , metadata . hash ) ;
336353 file . classList . add ( 'file' ) ;
337- file . textContent = name ;
354+
355+ // Color
338356
339357 let fileStateClass ;
340358 switch ( metadata . type )
@@ -345,6 +363,23 @@ class GitLabTree
345363 default : fileStateClass = CSS_PREFIX + '-file-updated' ; break ;
346364 }
347365
366+
367+ // Was file commented?
368+
369+ if ( metadata . commented )
370+ {
371+ let commentElement = document . createElement ( 'i' ) ;
372+ commentElement . classList . add ( 'fa' , 'fa-comments-o' , CSS_PREFIX + '-file-commented-icon' ) ;
373+ file . appendChild ( commentElement ) ;
374+ }
375+
376+
377+ // Content
378+
379+ const contentElement = document . createElement ( 'span' ) ;
380+ contentElement . textContent = name ;
381+ file . appendChild ( contentElement ) ;
382+
348383 file . classList . add ( fileStateClass ) ;
349384 files . push ( file ) ;
350385 }
0 commit comments