@@ -29,36 +29,36 @@ export function getSquadBaseData(db: Database): SquadGroupBases[] {
2929 LEFT JOIN squad_member sm ON sm.squad_id = s.id
3030 LEFT JOIN user_profile up ON up.id = sm.user_profile_id
3131 LEFT JOIN base b on b.owner_user_profile_id = up.id
32- where b.owner_user_profile_id > 0
3332 ORDER BY s.name, up.name` ) ;
3433
35- type Row = [ number , string , number , string , number , number ] ;
34+ type Row = [ number , string , number , string , number | null , number | null ] ;
3635 const squadGroups : SquadGroupBases [ ] = [ ] ;
3736 if ( squads [ 0 ] ) {
3837 let currentSquad : SquadGroupBases | null = null ;
3938 let memberMap : Map < string , { name : string ; bases : { location_x : number ; location_y : number ; } [ ] } > = new Map ( ) ;
39+ let lastSquadName : string | null = null ;
4040
4141 for ( const row of squads [ 0 ] . values as Row [ ] ) {
4242 const squad_name = row [ 1 ] || '(no name)' ;
4343 const member_name = row [ 3 ] || String ( row [ 2 ] ) ;
4444 const location_x = row [ 4 ] ;
4545 const location_y = row [ 5 ] ;
4646
47- if ( ! currentSquad || currentSquad . squadName !== squad_name ) {
47+ if ( lastSquadName !== squad_name ) {
4848 if ( currentSquad ) {
49- // Push previous squad group
5049 currentSquad . members = Array . from ( memberMap . values ( ) ) ;
5150 squadGroups . push ( currentSquad ) ;
5251 }
5352 currentSquad = { squadName : squad_name , members : [ ] } ;
5453 memberMap = new Map ( ) ;
54+ lastSquadName = squad_name ;
5555 }
5656
5757 if ( ! memberMap . has ( member_name ) ) {
5858 memberMap . set ( member_name , { name : member_name , bases : [ ] } ) ;
5959 }
6060 // Only add base if location_x and location_y are valid numbers
61- if ( typeof location_x === 'number' && typeof location_y === 'number' ) {
61+ if ( typeof location_x === 'number' && typeof location_y === 'number' && ! isNaN ( location_x ) && ! isNaN ( location_y ) ) {
6262 memberMap . get ( member_name ) ! . bases . push ( { location_x, location_y } ) ;
6363 }
6464 }
0 commit comments