lazhen
2024-08-01 d02b35cb54b769466aeb74bc9538d56b65d8d207
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Quintiq file version 2.0
#parent: #root
Method InitializeTable (
  LibCal_Calendars subscribers
)
{
  TextBody:
  [*
    // 甄兰鸽 May-28-2024 (created)
    rownr                 := this.LibCal_SubscriberEventRow( relsize );
    
    traverse( subscribers, Elements, subscriber ){
    
      traverse( subscriber,Participation.astype( LibCal_Subscription ).LeadingParticipation, participation, participation.Event().EventCategory().Name() = 'Unavailable' ){
        event := participation.Event();
        
        row := selectobject( this, LibCal_SubscriberEventRow, row, row.Subscriber() = subscriber.CalendarID() 
                             and row.Event() = event.Subject() 
                             and row.EventType() = guard( event.EventType().Name(), '' )
                             );
        
        if( isnull( row ) ){
          row := this.LibCal_SubscriberEventRow( relnew, RowNr := rownr, Subscriber := subscriber.CalendarID(), 
                                                 Event := event.Subject(), 
                                                 EventType := guard( event.EventType().Name(), '' ) );
          
          rownr := rownr + 1;
        }
        
        traverse( participation, ExplicitTimeInterval, eti ){
          row.InitializeDate( this, eti.Start(), eti.End(), event.Description() );
        }
    
      }
    }
    //info( '----------------------1------------------------', this.LibCal_SubscriberEventColumn( relsize ) );
    //traverse( this, LibCal_SubscriberEventColumn, column ){
    //  info( '------------------------', column.Name(), column.Period(), column.TimeUnit() );
    //}
            
    Transaction::Transaction().Propagate( attribute( LibCal_SubscriberEventTable, MaxDayDate ) );
    Transaction::Transaction().Propagate( attribute( LibCal_SubscriberEventTable, MaxWeekDate ) );
    Transaction::Transaction().Propagate( attribute( LibCal_SubscriberEventTable, MaxMonthDate ) );
    Transaction::Transaction().Propagate( attribute( LibCal_SubscriberEventTable, MinDayDate ) );
    Transaction::Transaction().Propagate( attribute( LibCal_SubscriberEventTable, MinWeekDate ) );
    Transaction::Transaction().Propagate( attribute( LibCal_SubscriberEventTable, MinMonthDate ) );
    this.ProcessColumnDay();
    this.ProcessColumnWeek();
    this.ProcessColumnMonth();
    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 );
        }
      }
    }
  *]
}