11import { PagingParameters } from '@ngageoint/mage.service/lib/entities/entities.global' ;
2+ import { MageEventId } from "@ngageoint/mage.service/lib/entities/events/entities.events" ;
23import { MageEventRepository } from '@ngageoint/mage.service/lib/entities/events/entities.events' ;
34import { EventScopedObservationRepository , ObservationRepositoryForEvent } from '@ngageoint/mage.service/lib/entities/observations/entities.observations' ;
45import { UserRepository } from '@ngageoint/mage.service/lib/entities/users/entities.users' ;
@@ -164,8 +165,13 @@ export class ObservationProcessor {
164165 private async updateConfig ( ) : Promise < ArcGISPluginConfig > {
165166 const config = await this . safeGetConfig ( )
166167
167- // Include form definitions while detecting changes in config
168- const eventForms = await this . _eventRepo . findAll ( ) ;
168+ // Include configured eventform definitions while detecting changes in config
169+ const eventIds = config . featureServices
170+ . flatMap ( service => service . layers )
171+ . flatMap ( layer => layer . eventIds )
172+ . filter ( ( eventId ) : eventId is MageEventId => typeof eventId === 'number' ) ;
173+
174+ const eventForms = await this . _eventRepo . findAllByIds ( eventIds ) ;
169175 const fullConfig = { ...config , eventForms } ;
170176
171177 const configJson = JSON . stringify ( fullConfig )
@@ -207,7 +213,7 @@ export class ObservationProcessor {
207213 try {
208214 const identityManager = await this . _identityService . signin ( service )
209215 const response = await request ( service . url , { authentication : identityManager } )
210- this . handleFeatureService ( response , service , config )
216+ await this . handleFeatureService ( response , service , config )
211217 } catch ( err ) {
212218 console . error ( err )
213219 }
@@ -235,25 +241,7 @@ export class ObservationProcessor {
235241 }
236242
237243 for ( const featureLayer of featureServiceConfig . layers ) {
238- const eventNames : string [ ] = [ ]
239- const events = featureLayer . events
240- if ( events != null ) {
241- for ( const event of events ) {
242- const eventId = Number ( event ) ;
243- if ( isNaN ( eventId ) ) {
244- eventNames . push ( String ( event ) ) ;
245- } else {
246- const mageEvent = await this . _eventRepo . findById ( eventId )
247- if ( mageEvent != null ) {
248- eventNames . push ( mageEvent . name ) ;
249- }
250- }
251- }
252- }
253- if ( eventNames . length > 0 ) {
254- featureLayer . events = eventNames
255- }
256-
244+ // TODO - this used to convert event ids to names and set back on featureLayer.events. What is impact of not doing?
257245 const layer = serviceLayers . get ( featureLayer . layer )
258246
259247 let layerId = undefined
@@ -270,7 +258,7 @@ export class ObservationProcessor {
270258 const featureService = new FeatureService ( console , featureServiceConfig , identityManager )
271259 const layerInfo = await featureService . queryLayerInfo ( layerId ) ;
272260 const url = `${ featureServiceConfig . url } /${ layerId } ` ;
273- this . handleLayerInfo ( url , featureServiceConfig , featureLayer , layerInfo , config ) ;
261+ await this . handleLayerInfo ( url , featureServiceConfig , featureLayer , layerInfo , config ) ;
274262 }
275263 }
276264 }
@@ -286,10 +274,10 @@ export class ObservationProcessor {
286274 */
287275 private async handleLayerInfo ( url : string , featureServiceConfig : FeatureServiceConfig , featureLayer : FeatureLayerConfig , layerInfo : LayerInfoResult , config : ArcGISPluginConfig ) {
288276 if ( layerInfo . geometryType != null ) {
289- const events = featureLayer . events as string [ ]
290277 const admin = new FeatureServiceAdmin ( config , this . _identityService , this . _console )
278+ const eventIds = featureLayer . eventIds || [ ]
291279 await admin . updateLayer ( featureServiceConfig , featureLayer , layerInfo , this . _eventRepo )
292- const info = new LayerInfo ( url , events , layerInfo )
280+ const info = new LayerInfo ( url , eventIds , layerInfo )
293281 const identityManager = await this . _identityService . signin ( featureServiceConfig )
294282 const layerProcessor = new FeatureLayerProcessor ( info , config , identityManager , this . _console ) ;
295283 this . _layerProcessors . push ( layerProcessor ) ;
@@ -310,9 +298,13 @@ export class ObservationProcessor {
310298 layerProcessor . processPendingUpdates ( ) ;
311299 }
312300 this . _console . info ( 'ArcGIS plugin processing new observations...' ) ;
313- const activeEvents = await this . _eventRepo . findActiveEvents ( ) ;
314- this . _eventDeletionHandler . checkForEventDeletion ( activeEvents , this . _layerProcessors , this . _firstRun ) ;
315- const eventsToProcessors = this . _organizer . organize ( activeEvents , this . _layerProcessors ) ;
301+ const enabledEvents = ( await this . _eventRepo . findActiveEvents ( ) ) . filter ( event =>
302+ this . _layerProcessors . some ( layerProcessor =>
303+ layerProcessor . layerInfo . hasEvent ( event . id )
304+ )
305+ ) ;
306+ this . _eventDeletionHandler . checkForEventDeletion ( enabledEvents , this . _layerProcessors , this . _firstRun ) ;
307+ const eventsToProcessors = this . _organizer . organize ( enabledEvents , this . _layerProcessors ) ;
316308 const nextQueryTime = Date . now ( ) ;
317309 for ( const pair of eventsToProcessors ) {
318310 this . _console . info ( 'ArcGIS getting newest observations for event ' + pair . event . name ) ;
0 commit comments