@@ -17,6 +17,8 @@ export async function render(container, params, router) {
1717 const offset = ( page - 1 ) * limit ;
1818
1919 const config = getConfig ( ) ;
20+ const features = config . features || { } ;
21+ const showMembers = features . members !== false ;
2022 const tz = config . timezone || '' ;
2123 const tzBadge = tz && tz !== 'UTC' ? html `< span class ="text-sm opacity-60 "> ${ tz } </ span > ` : nothing ;
2224 const navigate = ( url ) => router . navigate ( url ) ;
@@ -37,17 +39,23 @@ ${content}`, container);
3739 renderPage ( nothing ) ;
3840
3941 try {
40- const [ data , membersData ] = await Promise . all ( [
42+ const requests = [
4143 apiGet ( '/api/v1/nodes' , { limit, offset, search, adv_type, member_id } ) ,
42- apiGet ( '/api/v1/members' , { limit : 100 } ) ,
43- ] ) ;
44+ ] ;
45+ if ( showMembers ) {
46+ requests . push ( apiGet ( '/api/v1/members' , { limit : 100 } ) ) ;
47+ }
48+
49+ const results = await Promise . all ( requests ) ;
50+ const data = results [ 0 ] ;
51+ const membersData = showMembers ? results [ 1 ] : null ;
4452
4553 const nodes = data . items || [ ] ;
4654 const total = data . total || 0 ;
4755 const totalPages = Math . ceil ( total / limit ) ;
48- const members = membersData . items || [ ] ;
56+ const members = membersData ? .items || [ ] ;
4957
50- const membersFilter = members . length > 0
58+ const membersFilter = ( showMembers && members . length > 0 )
5159 ? html `
5260 < div class ="form-control ">
5361 < label class ="label py-1 ">
@@ -67,9 +75,9 @@ ${content}`, container);
6775 const tagDescription = node . tags ?. find ( tag => tag . key === 'description' ) ?. value ;
6876 const displayName = tagName || node . name ;
6977 const lastSeen = node . last_seen ? formatDateTimeShort ( node . last_seen ) : '-' ;
70- const memberIdTag = node . tags ?. find ( tag => tag . key === 'member_id' ) ?. value ;
78+ const memberIdTag = showMembers ? node . tags ?. find ( tag => tag . key === 'member_id' ) ?. value : null ;
7179 const member = memberIdTag ? members . find ( m => m . member_id === memberIdTag ) : null ;
72- const memberBlock = member
80+ const memberBlock = ( showMembers && member )
7381 ? html `< div class ="text-xs opacity-60 "> ${ member . name } </ div > `
7482 : nothing ;
7583 return html `< a href ="/nodes/ ${ node . public_key } " class ="card bg-base-100 shadow-sm block ">
@@ -91,14 +99,15 @@ ${content}`, container);
9199 </ a > ` ;
92100 } ) ;
93101
102+ const tableColspan = showMembers ? 4 : 3 ;
94103 const tableRows = nodes . length === 0
95- ? html `< tr > < td colspan ="4 " class ="text-center py-8 opacity-70 "> ${ t ( 'common.no_entity_found' , { entity : t ( 'entities.nodes' ) . toLowerCase ( ) } ) } </ td > </ tr > `
104+ ? html `< tr > < td colspan ="${ tableColspan } " class ="text-center py-8 opacity-70 "> ${ t ( 'common.no_entity_found' , { entity : t ( 'entities.nodes' ) . toLowerCase ( ) } ) } </ td > </ tr > `
96105 : nodes . map ( node => {
97106 const tagName = node . tags ?. find ( tag => tag . key === 'name' ) ?. value ;
98107 const tagDescription = node . tags ?. find ( tag => tag . key === 'description' ) ?. value ;
99108 const displayName = tagName || node . name ;
100109 const lastSeen = node . last_seen ? formatDateTime ( node . last_seen ) : '-' ;
101- const memberIdTag = node . tags ?. find ( tag => tag . key === 'member_id' ) ?. value ;
110+ const memberIdTag = showMembers ? node . tags ?. find ( tag => tag . key === 'member_id' ) ?. value : null ;
102111 const member = memberIdTag ? members . find ( m => m . member_id === memberIdTag ) : null ;
103112 const memberBlock = member
104113 ? html `${ member . name } ${ member . callsign ? html ` < span class ="opacity-60 "> (${ member . callsign } )</ span > ` : nothing } `
@@ -121,7 +130,7 @@ ${content}`, container);
121130 title ="Click to copy"> ${ node . public_key } </ code >
122131 </ td >
123132 < td class ="text-sm whitespace-nowrap "> ${ lastSeen } </ td >
124- < td class ="text-sm "> ${ memberBlock } </ td >
133+ ${ showMembers ? html ` < td class ="text-sm "> ${ memberBlock } </ td > ` : nothing }
125134 </ tr > ` ;
126135 } ) ;
127136
@@ -170,7 +179,7 @@ ${content}`, container);
170179 < th > ${ t ( 'entities.node' ) } </ th >
171180 < th > ${ t ( 'common.public_key' ) } </ th >
172181 < th > ${ t ( 'common.last_seen' ) } </ th >
173- < th > ${ t ( 'entities.member' ) } </ th >
182+ ${ showMembers ? html ` < th > ${ t ( 'entities.member' ) } </ th > ` : nothing }
174183 </ tr >
175184 </ thead >
176185 < tbody >
0 commit comments