@@ -37,11 +37,11 @@ function initialSetup() {
3737 injectCss ( isCommit ? 0 : 178 , isCommit ? 20 : 0 ) ; // style.js
3838 injectHTML ( ) ;
3939
40- areDiffBlocksCollapsed ( ) ? $ ( '#collapseAll' ) . hide ( ) : $ ( '#expandAll' ) . hide ( ) ;
40+ areDiffBlocksCollapsed ( ) ? $ ( '#collapseAll' ) . hide ( ) : $ ( '#expandAll' ) . hide ( ) ;
4141
4242 // Click Functions
4343 $ ( '.gct-folder-name' ) . click ( obj => {
44- $ ( $ ( $ ( obj . currentTarget ) . parent ( ) [ 0 ] ) [ 0 ] ) . toggleClass ( 'gct-folder-open' ) ;
44+ $ ( $ ( $ ( obj . currentTarget ) . parent ( ) [ 0 ] ) [ 0 ] ) . toggleClass ( 'gct-folder-open' ) ;
4545 } ) ;
4646
4747 $ ( '.gct-file-name' ) . click ( obj => {
@@ -53,166 +53,166 @@ function initialSetup() {
5353 } ) ;
5454
5555 $ ( '#openAll' ) . click ( ( ) => {
56- $ ( '.gct-folder' ) . addClass ( 'gct-folder-open' ) ;
56+ $ ( '.gct-folder' ) . addClass ( 'gct-folder-open' ) ;
5757 } ) ;
5858
5959 $ ( '#closeAll' ) . click ( ( ) => {
60- $ ( '.gct-folder' ) . removeClass ( 'gct-folder-open' ) ;
60+ $ ( '.gct-folder' ) . removeClass ( 'gct-folder-open' ) ;
6161 } ) ;
6262
6363 $ ( '#expandAll' ) . click ( ( ) => {
64- expandAllDiffBlocks ( ) ;
64+ expandAllDiffBlocks ( ) ;
6565 } ) ;
6666
6767 $ ( '#collapseAll' ) . click ( ( ) => {
68- collapseAllDiffBlocks ( ) ;
68+ collapseAllDiffBlocks ( ) ;
6969 } ) ;
7070}
7171
7272function injectHTML ( ) {
73- tree = buildTree ( ) ;
74- $ (
75- `<div class="gct-file-tree">
76- <div class="gct-header">
77- <div id="openAll">Open All</div>
78- <div id="closeAll">Close All</div>
79- <div id="expandAll">Expand All</div>
80- <div id="collapseAll">Collapse All</div>
81- </div>
82- ${ buildHtmlTree ( tree ) }
83- </div>`
84- ) . appendTo ( '#files' ) ;
73+ tree = buildTree ( ) ;
74+ $ (
75+ `<div class="gct-file-tree">
76+ <div class="gct-header">
77+ <div id="openAll">Open All</div>
78+ <div id="closeAll">Close All</div>
79+ <div id="expandAll">Expand All</div>
80+ <div id="collapseAll">Collapse All</div>
81+ </div>
82+ ${ buildHtmlTree ( tree ) }
83+ </div>`
84+ ) . appendTo ( '#files' ) ;
8585}
8686
8787function buildHtmlTree ( tree ) {
8888 var content = '<ul>' ;
8989
9090 let unorderedList = [ ] ;
9191 for ( var key in tree ) {
92- if ( key === 'files' ) {
93- unorderedList = unorderedList . concat ( tree . files . map ( item => ( {
94- type : 'file' ,
95- name : item . name ,
96- file : item
97- } ) ) ) ;
98- } else {
99- unorderedList . push ( {
100- type : 'directory' ,
101- name : key
102- } ) ;
103- }
92+ if ( key === 'files' ) {
93+ unorderedList = unorderedList . concat ( tree . files . map ( item => ( {
94+ type : 'file' ,
95+ name : item . name ,
96+ file : item
97+ } ) ) ) ;
98+ } else {
99+ unorderedList . push ( {
100+ type : 'directory' ,
101+ name : key
102+ } ) ;
103+ }
104104 }
105105 const orderedList = unorderedList . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) ;
106106
107107 orderedList . forEach ( item => {
108- if ( item . type === 'file' ) {
109- content += `
110- <li class="gct-file">
111- <a class="gct-file-name" href="${ item . file . link } ">${ iconFile ( ) } ${ item . file . name } </a>
112- <span class="gct-file-changes">
113- <span class="gct-file-added">+${ item . file . added } </span>
114- <span class="gct-file-removed">-${ item . file . removed } </span>
115- </span>
116- </li>
117- ` ;
118- } else {
119- content += `<li class="gct-folder gct-folder-open">
120- <span class="gct-folder-name">${ iconFolder ( ) } ${ item . name } </span>
121- <div class="gct-sub-folders">${ buildHtmlTree ( tree [ item . name ] ) } </div>
122- </li>` ;
123- }
108+ if ( item . type === 'file' ) {
109+ content += `
110+ <li class="gct-file">
111+ <a class="gct-file-name" href="${ item . file . link } ">${ iconFile ( ) } ${ item . file . name } </a>
112+ <span class="gct-file-changes">
113+ <span class="gct-file-added">+${ item . file . added } </span>
114+ <span class="gct-file-removed">-${ item . file . removed } </span>
115+ </span>
116+ </li>
117+ ` ;
118+ } else {
119+ content += `<li class="gct-folder gct-folder-open">
120+ <span class="gct-folder-name">${ iconFolder ( ) } ${ item . name } </span>
121+ <div class="gct-sub-folders">${ buildHtmlTree ( tree [ item . name ] ) } </div>
122+ </li>` ;
123+ }
124124 } ) ;
125125
126126 return content ;
127127}
128128
129129function buildTree ( ) {
130- var tree = { } ;
131-
132- $ ( '.file-info' ) . map ( ( i , item ) => {
133- var diff = $ ( item ) . find ( '.diffstat' ) [ 0 ]
134- . getAttribute ( "aria-label" )
135- . split ( ' & ' ) ;
136-
137- if ( diff . length !== 2 ) { // skip the "Empty file removed" case
138- diff = [ '0' , '0' ] ;
139- }
140- var pathString = $ ( item ) . find ( 'a' ) [ 0 ] ;
141- var pathLink = pathString . getAttribute ( "href" ) ;
142- var filePath = $ ( item ) . parent ( '.file-header' ) . data ( 'path' ) ;
143- var itemSplitted = filePath . split ( '/' ) ;
144-
145- var nodeObj = { } ;
146- var nodeObjJoker = nodeObj ;
147- itemSplitted . map ( ( node , i ) => {
148- if ( itemSplitted . length === i + 1 ) {
149- nodeObjJoker [ 'files' ] = nodeObjJoker [ 'files' ] || [ ] ;
150- nodeObjJoker [ 'files' ] . push ( {
151- added : diff [ 0 ] . replace ( / [ ^ 0 - 9 ] / g, '' ) * 1 ,
152- removed : diff [ 1 ] . replace ( / [ ^ 0 - 9 ] / g, '' ) * 1 ,
153- name : node ,
154- link : pathLink
155- } ) ;
156- return ;
157- }
158-
159- nodeObjJoker [ node ] = { } ;
160- nodeObjJoker = nodeObjJoker [ node ] ;
130+ var tree = { } ;
131+
132+ $ ( '.file-info' ) . map ( ( i , item ) => {
133+ var diff = $ ( item ) . find ( '.diffstat' ) [ 0 ]
134+ . getAttribute ( "aria-label" )
135+ . split ( ' & ' ) ;
136+
137+ if ( diff . length !== 2 ) { // skip the "Empty file removed" case
138+ diff = [ '0' , '0' ] ;
139+ }
140+ var pathString = $ ( item ) . find ( 'a' ) [ 0 ] ;
141+ var pathLink = pathString . getAttribute ( "href" ) ;
142+ var filePath = $ ( item ) . parent ( '.file-header' ) . data ( 'path' ) ;
143+ var itemSplitted = filePath . split ( '/' ) ;
144+
145+ var nodeObj = { } ;
146+ var nodeObjJoker = nodeObj ;
147+ itemSplitted . map ( ( node , i ) => {
148+ if ( itemSplitted . length === i + 1 ) {
149+ nodeObjJoker [ 'files' ] = nodeObjJoker [ 'files' ] || [ ] ;
150+ nodeObjJoker [ 'files' ] . push ( {
151+ added : diff [ 0 ] . replace ( / [ ^ 0 - 9 ] / g, '' ) * 1 ,
152+ removed : diff [ 1 ] . replace ( / [ ^ 0 - 9 ] / g, '' ) * 1 ,
153+ name : node ,
154+ link : pathLink
161155 } ) ;
156+ return ;
157+ }
162158
163- tree = mergeObjects ( tree , nodeObj ) ;
159+ nodeObjJoker [ node ] = { } ;
160+ nodeObjJoker = nodeObjJoker [ node ] ;
164161 } ) ;
165162
166- return tree ;
163+ tree = mergeObjects ( tree , nodeObj ) ;
164+ } ) ;
165+
166+ return tree ;
167167}
168168
169169function mergeObjects ( og , so ) {
170- for ( var key in so ) {
171- if ( ! og [ key ] ) {
172- og [ key ] = { } ;
173- }
174-
175- if ( so [ key ] . hasOwnProperty ( 'length' ) ) {
176- og [ key ] = og [ key ] . hasOwnProperty ( 'length' ) ? og [ key ] : [ ] ;
177- og [ key ] . push ( so [ key ] [ 0 ] ) ;
178- }
179-
180- if ( typeof so [ key ] === 'object' && ! so [ key ] . hasOwnProperty ( 'length' ) ) {
181- mergeObjects ( og [ key ] , so [ key ] ) ;
182- }
170+ for ( var key in so ) {
171+ if ( ! og [ key ] ) {
172+ og [ key ] = { } ;
173+ }
174+
175+ if ( so [ key ] . hasOwnProperty ( 'length' ) ) {
176+ og [ key ] = og [ key ] . hasOwnProperty ( 'length' ) ? og [ key ] : [ ] ;
177+ og [ key ] . push ( so [ key ] [ 0 ] ) ;
183178 }
184- return og ;
179+
180+ if ( typeof so [ key ] === 'object' && ! so [ key ] . hasOwnProperty ( 'length' ) ) {
181+ mergeObjects ( og [ key ] , so [ key ] ) ;
182+ }
183+ }
184+ return og ;
185185}
186186
187187function areDiffBlocksCollapsed ( ) {
188- var numberOfDiffBlocksCollapsed = 0 ;
189- var numberOfDiffBlocks = $ ( '#files .file' ) . length ;
188+ var numberOfDiffBlocksCollapsed = 0 ;
189+ var numberOfDiffBlocks = $ ( '#files .file' ) . length ;
190190
191- $ ( '#files .file' ) . each ( function ( ) {
192- if ( $ ( this ) . hasClass ( 'open Details--on' ) ) {
193- numberOfDiffBlocksCollapsed ++ ;
194- }
195- } ) ;
191+ $ ( '#files .file' ) . each ( function ( ) {
192+ if ( $ ( this ) . hasClass ( 'open Details--on' ) ) {
193+ numberOfDiffBlocksCollapsed ++ ;
194+ }
195+ } ) ;
196196
197- return numberOfDiffBlocksCollapsed === numberOfDiffBlocks ;
197+ return numberOfDiffBlocksCollapsed === numberOfDiffBlocks ;
198198}
199199
200200function expandAllDiffBlocks ( ) {
201- $ ( '#expandAll' ) . hide ( ) ;
202- $ ( '#collapseAll' ) . show ( ) ;
203- $ ( '#files .file' ) . each ( function ( ) {
204- if ( $ ( this ) . hasClass ( 'open Details--on' ) ) {
205- $ ( this ) . removeClass ( 'open Details--on' )
206- }
207- } ) ;
201+ $ ( '#expandAll' ) . hide ( ) ;
202+ $ ( '#collapseAll' ) . show ( ) ;
203+ $ ( '#files .file' ) . each ( function ( ) {
204+ if ( $ ( this ) . hasClass ( 'open Details--on' ) ) {
205+ $ ( this ) . removeClass ( 'open Details--on' )
206+ }
207+ } ) ;
208208}
209209
210210function collapseAllDiffBlocks ( ) {
211- $ ( '#collapseAll' ) . hide ( ) ;
212- $ ( '#expandAll' ) . show ( ) ;
213- $ ( '#files .file' ) . each ( function ( ) {
214- if ( ! $ ( this ) . hasClass ( 'open Details--on' ) ) {
215- $ ( this ) . addClass ( 'open Details--on' )
216- }
217- } ) ;
211+ $ ( '#collapseAll' ) . hide ( ) ;
212+ $ ( '#expandAll' ) . show ( ) ;
213+ $ ( '#files .file' ) . each ( function ( ) {
214+ if ( ! $ ( this ) . hasClass ( 'open Details--on' ) ) {
215+ $ ( this ) . addClass ( 'open Details--on' )
216+ }
217+ } ) ;
218218}
0 commit comments