anchor.diff:      fBlockID: Integer;
       fSoCPalette: TRampPalette;
       fTimeSliderTimer: TTimer;
  +    fBaseDay: array of word; // [d,m,y]
  +    fChargerTypes: TStrings;
   
       procedure initStops(aSession: TOraSession);
       procedure initTimeTable(aSession: TOraSession);
  +    procedure initChargerTypes(aSession: TOraSession);
  +
  +    procedure formEditChargeLocation(const aChargeLocation: string; aClient: TClient);
   
       function jsonTimesliderData: String;
  +    procedure handleUpdateLayerObject(aClient: TClient; aPayload: TJSONObject); override;
     public
       procedure HandleSelectedEvent(aClient: TClient; aMessage: TJSONValue);
       procedure handleNewTime(aClient: TClient; aTime: string);
       function  HandleClientSubscribe(aClient: TClient): Boolean; override;
  +    procedure HandleFormResult(aFormResult: TJSONObject);
       procedure HandleTimeSliderEvent(aProject: TProject; aClient: TClient; const aType: string; aPayload: TJSONObject);
     end;
   
  
positive.code:   LowChargeColor: TAlphaRGBPixel = $FFFFA500;
    MediumChargeColor: TAlphaRGBPixel = $FFFFFF00;
    HighChargeColor: TAlphaRGBPixel = $FF008000;
    Nothing: TAlphaRGBPixel = $FFAAAAAA;
  begin
    // TODO
    inherited Create(aScenario, aDomain, aID, aName, aDescription);
  
negative.code:       while not query.Eof do
        begin // TODO, X,Y
  //        DecodeTime( .AsString), h,m,s,ms);
          ttEntry.timeStart := SantosTimeToDateTime (query.FieldByName('TIME').AsString, fBaseDay);
  //        StrToDateTime(today + ' ' + query.FieldByName('TIME').AsString.Trim);
          ttEntry.soc := query.FieldByName('Y').AsFloat;
          if not query.FieldByName('PLACE').IsNull then
          begin
  