@@ -157,10 +157,19 @@ const filterByTypeWhereClause = (filterType) => {
157157 } )
158158 . join ( 'OR' ) ;
159159
160+ const typesInjuredSelected = Object . values ( injury ) . filter ( i => i ) . length ;
161+ const typesKilledSelected = Object . values ( fatality ) . filter ( i => i ) . length ;
162+
160163 const typesInjuredMapped = mapTypes ( injury , 'injury' ) ;
161164 const typesKilledMapped = mapTypes ( fatality , 'fatality' ) ;
162165
163- if ( typesInjuredMapped . length > 0 && typesKilledMapped . length > 0 ) {
166+ if ( typesInjuredSelected === 3 && typesKilledSelected === 3 ) {
167+ whereClause += 'AND (number_of_persons_injured > 0 OR number_of_persons_killed > 0)' ;
168+ } else if ( typesInjuredSelected > 0 && typesKilledSelected === 3 ) {
169+ whereClause += `AND (${ typesInjuredMapped } OR number_of_persons_killed > 0)` ;
170+ } else if ( typesInjuredSelected === 3 && typesKilledSelected > 0 ) {
171+ whereClause += `AND (number_of_persons_injured > 0 OR ${ typesKilledMapped } )` ;
172+ } else if ( typesInjuredMapped . length > 0 && typesKilledMapped . length > 0 ) {
164173 whereClause += `AND (${ typesInjuredMapped } OR ${ typesKilledMapped } )` ;
165174 } else if ( typesInjuredMapped . length > 0 ) {
166175 whereClause += `AND (${ typesInjuredMapped } )` ;
@@ -179,6 +188,8 @@ const filterByTypeWhereClause = (filterType) => {
179188 ` ;
180189 }
181190
191+ console . debug ( [ 'GDA' , typesInjuredSelected , typesKilledSelected , whereClause ] ) ; //eslint-disable-line
192+
182193 return whereClause ;
183194} ;
184195
@@ -309,8 +320,10 @@ export const configureMapSQL = (params) => {
309320 SUM(c.number_of_motorist_killed) as motorist_killed,
310321 SUM(c.number_of_pedestrian_injured) as pedestrian_injured,
311322 SUM(c.number_of_pedestrian_killed) as pedestrian_killed,
312- SUM(c.number_of_pedestrian_injured + c.number_of_cyclist_injured + c.number_of_motorist_injured) as persons_injured,
313- SUM(c.number_of_pedestrian_killed + c.number_of_cyclist_killed + c.number_of_motorist_killed) as persons_killed
323+ SUM(c.number_of_persons_injured - (c.number_of_pedestrian_injured + c.number_of_cyclist_injured + c.number_of_motorist_injured)) as other_injured,
324+ SUM(c.number_of_persons_killed - (c.number_of_pedestrian_killed + c.number_of_cyclist_killed + c.number_of_motorist_killed)) as other_killed,
325+ SUM(c.number_of_persons_injured) as persons_injured,
326+ SUM(c.number_of_persons_killed) as persons_killed
314327 FROM
315328 ${ nyc_crashes } c
316329 ${ joinToGeoTableClause ( geo ) }
@@ -350,8 +363,10 @@ export const configureStatsSQL = (params) => {
350363 SUM(c.number_of_motorist_killed) as motorist_killed,
351364 SUM(c.number_of_pedestrian_injured) as pedestrian_injured,
352365 SUM(c.number_of_pedestrian_killed) as pedestrian_killed,
353- SUM(c.number_of_pedestrian_injured + c.number_of_cyclist_injured + c.number_of_motorist_injured) as persons_injured,
354- SUM(c.number_of_pedestrian_killed + c.number_of_cyclist_killed + c.number_of_motorist_killed) as persons_killed
366+ SUM(c.number_of_persons_injured - (c.number_of_pedestrian_injured + c.number_of_cyclist_injured + c.number_of_motorist_injured)) as other_injured,
367+ SUM(c.number_of_persons_killed - (c.number_of_pedestrian_killed + c.number_of_cyclist_killed + c.number_of_motorist_killed)) as other_killed,
368+ SUM(c.number_of_persons_injured) as persons_injured,
369+ SUM(c.number_of_persons_killed) as persons_killed
355370 FROM
356371 ${ nyc_crashes } c
357372 ${ joinToGeoTableClause ( geo ) }
0 commit comments