Only show active nodes is isp page
This commit is contained in:
		
							parent
							
								
									54c44565fb
								
							
						
					
					
						commit
						27c39ef557
					
				| @ -462,7 +462,32 @@ class NodesApi { | ||||
| 
 | ||||
|   public async $getNodesPerISP(ISPId: string) { | ||||
|     try { | ||||
|       const query = ` | ||||
|       let query = ` | ||||
|         SELECT channels.node1_public_key AS node1PublicKey, isp1.id as isp1ID, | ||||
|           channels.node2_public_key AS node2PublicKey, isp2.id as isp2ID | ||||
|         FROM channels | ||||
|         JOIN nodes node1 ON node1.public_key = channels.node1_public_key | ||||
|         JOIN nodes node2 ON node2.public_key = channels.node2_public_key | ||||
|         JOIN geo_names isp1 ON isp1.id = node1.as_number | ||||
|         JOIN geo_names isp2 ON isp2.id = node2.as_number | ||||
|         WHERE channels.status = 1 AND (node1.as_number IN (?) OR node2.as_number IN (?)) | ||||
|         ORDER BY short_id DESC | ||||
|       `;
 | ||||
| 
 | ||||
|       const [rows]: any = await DB.query(query, [ISPId.split(','), ISPId.split(',')]); | ||||
|       const nodes = {}; | ||||
| 
 | ||||
|       const intIspId = parseInt(ISPId); | ||||
|       for (const channel of rows) { | ||||
|         if (channel.isp1ID === intIspId) { | ||||
|           nodes[channel.node1PublicKey] = true; | ||||
|         } | ||||
|         if (channel.isp2ID === intIspId) { | ||||
|           nodes[channel.node2PublicKey] = true; | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       query = ` | ||||
|         SELECT nodes.public_key, CAST(COALESCE(nodes.capacity, 0) as INT) as capacity, CAST(COALESCE(nodes.channels, 0) as INT) as channels, | ||||
|           nodes.alias, UNIX_TIMESTAMP(nodes.first_seen) as first_seen, UNIX_TIMESTAMP(nodes.updated_at) as updated_at, | ||||
|           geo_names_city.names as city, geo_names_country.names as country, | ||||
| @ -473,17 +498,18 @@ class NodesApi { | ||||
|         LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city' | ||||
|         LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code' | ||||
|         LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division' | ||||
|         WHERE nodes.as_number IN (?) | ||||
|         WHERE nodes.public_key IN (?) | ||||
|         ORDER BY capacity DESC | ||||
|       `;
 | ||||
| 
 | ||||
|       const [rows]: any = await DB.query(query, [ISPId.split(',')]); | ||||
|       for (let i = 0; i < rows.length; ++i) { | ||||
|         rows[i].country = JSON.parse(rows[i].country); | ||||
|         rows[i].city = JSON.parse(rows[i].city); | ||||
|         rows[i].subdivision = JSON.parse(rows[i].subdivision); | ||||
|       const [rows2]: any = await DB.query(query, [Object.keys(nodes)]); | ||||
|       for (let i = 0; i < rows2.length; ++i) { | ||||
|         rows2[i].country = JSON.parse(rows2[i].country); | ||||
|         rows2[i].city = JSON.parse(rows2[i].city); | ||||
|         rows2[i].subdivision = JSON.parse(rows2[i].subdivision); | ||||
|       } | ||||
|       return rows; | ||||
|       return rows2; | ||||
| 
 | ||||
|     } catch (e) { | ||||
|       logger.err(`Cannot get nodes for ISP id ${ISPId}. Reason: ${e instanceof Error ? e.message : e}`); | ||||
|       throw e; | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|               <td>{{ isp?.id }}</td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td i18n="lightning.node-count">Nodes</td> | ||||
|               <td i18n="lightning.active-node-count">Active nodes</td> | ||||
|               <td>{{ ispNodes.nodes.length }}</td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user