lazhen
2024-06-12 de982da373b3a8df0f1d6f28263fa591403e39d0
_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl
@@ -16,18 +16,19 @@
    if( isnull( eventcolumn ) ){
      eventcolumn := this.LibCal_SubscriberEventColumn( relnew, RowName := 'Event' );
    }
    timezone := this.LibCal_Calendar().GetTimeZone();
    
    traverse( subscribers, Elements, subscriber ){
    //  info( '------------------------', subscriber.CalendarID(), subscriber.CalendarType() );
    //  traverse( subscriber,Participation.astype( LibCal_Subscription ).LeadingParticipation, participation ){
      traverse( subscriber,Participation.astype( LibCal_Subscription ).LeadingParticipation, participation, participation.Event().EventCategory().Name() = 'Unavailable' ){
      traverse( subscriber,Participation.astype( LibCal_Subscription ).LeadingParticipation, participation, participation.Event().EventCategory().Name() = 'Unavailable' and participation.Event().Subject() = '测试' ){
    //    info( '------------------------', participation.Event().Subject(), '------', participation.Event().EventCategory().Name() );
        event := participation.Event();
        row := selectobject( this, LibCal_SubscriberEventRow, row, row.Subscriber() = subscriber.CalendarID() 
                             and row.Event() = event.Subject() 
                             and row.EventType() = event.EventType().Name() 
                             );
        if( isnull( row ) ){
          row := this.LibCal_SubscriberEventRow( relnew, RowNr := rownr, Subscriber := subscriber.CalendarID(), 
                                                 Event := event.Subject(), 
@@ -43,28 +44,33 @@
          row.LibCal_SubscriberEventCell( relinsert, eventcell );
          rownr := rownr + 1;
        }
        endTime     := participation.EndDate().DateTime( timezone ).AddAsPeriod( timezone, event.EndTimeOfDay() );
        startTime   := participation.StartDate().DateTime( timezone ).AddAsPeriod( timezone, event.StartTimeOfDay() );
    //    info( this.ID(), startTime, endTime );
        if( this.ID() = 'Day' ){
          this.InitializeDay( this, row, startTime, endTime, event.Description() );
        }else if( this.ID() = 'Week' ){
          this.InitializeWeek( this, row, startTime, endTime, event.Description() );
        }else{
          this.InitializeMonth( this, row, startTime, endTime, event.Description() );
        traverse( participation, ExplicitTimeInterval, eti ){
          info( eti.Start(), eti.End(), eti.DefinitionName() );
          if( this.ID() = 'Day' ){
            this.InitializeDay( this, row, eti.Start(), eti.End(), event.Description() );
          }else if( this.ID() = 'Week' ){
            this.InitializeWeek( this, row, eti.Start(), eti.End(), event.Description() );
          }else{
            this.InitializeMonth( this, row, eti.Start(), eti.End(), event.Description() );
          }
        }
    //
    //    endTime     := participation.EndDate().DateTime( timezone ).AddAsPeriod( timezone, event.EndTimeOfDay() );
    //    startTime   := participation.StartDate().DateTime( timezone ).AddAsPeriod( timezone, event.StartTimeOfDay() );
    
      }
    }
    
    traverse( this, LibCal_SubscriberEventColumn, column ){
      traverse( this, LibCal_SubscriberEventRow, row ){
        if( not exists( column, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow() = row ) ) {
          cell := column.LibCal_SubscriberEventCell( relnew, Value := '' );
          row.LibCal_SubscriberEventCell( relinsert, cell );
        }
      }
    }
    //traverse( this, LibCal_SubscriberEventColumn, column ){
    //  traverse( this, LibCal_SubscriberEventRow, row ){
    //    if( not exists( column, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow() = row ) ) {
    //      cell := column.LibCal_SubscriberEventCell( relnew, Value := '' );
    //      row.LibCal_SubscriberEventCell( relinsert, cell );
    //    }
    //  }
    //}
  *]
}