anchor.diff:      procedure(aProject: TProject; aClient: TClient; const aType: string; aPayload: TJSONObject)
       var
         selectedTime: string;
  -      active: Boolean;
         selectedEvent: TJSONValue;
  -      brush: TJSONValue;
         l: TSantosLayer;
       begin
         TMonitor.Enter(fSantosLayers);
  
positive.code:     fBaseDay: array of word; // [d,m,y]
      fChargerTypes: TStrings;
      fConnectString: string;
  
      procedure initStops(aSession: TOraSession);
      procedure initTimeTable(aSession: TOraSession);
  
negative.code: //        stop.location; // localized double
        jsonAdd(Result, '{'+entry+'}');
      end;
    end;
  end;
  
  procedure TSantosLayer.HandleDataUpdate;
  var
    jsonTSData: string;
    client: TClient;
    oraSession: TOraSession;
  begin
    oraSession := TOraSession.Create(nil);
    try
      oraSession.connectString := fConnectString;
      oraSession.Open;
  
      // reload timetable
      initTimeTable(oraSession);
      if (scenario.project is TSantosProject) then
        (scenario.project as TSantosProject).HandleDataUpdate(oraSession, scenario, self, fTablePrefix);
    finally
      oraSession.Free;
    end;
  
    fLastUpdate := aTime;
  
    TMonitor.Enter(fScenario.clients);
    try
      for client in scenario.clients do
      begin
        // send data to time slider
        jsonTSData := jsonTimesliderData;
        client.signalString('{"type":"timesliderEvents","payload":{"setEvents":['+jsonTSData+']}}');
      end;
    finally
      TMonitor.Exit(fScenario.clients);
    end;
  end;
  
  