| | |
| | | Date periodStartDate_i, |
| | | Number nrOfOccurrences_i, |
| | | Date periodEndDate_i, |
| | | LibCal_Calendars subscribers_i |
| | | LibCal_Calendars subscribers_i, |
| | | Boolean ismultiple |
| | | ) as LibCal_Event |
| | | { |
| | | Description: 'Create and/or update an Event and its LeadingParticipation, based on information from the UI.' |
| | | TextBody: |
| | | [* |
| | | //äºä»¶å建äºå¼æ¹æ³ |
| | | //info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i |
| | | // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i ); |
| | | //æ¥è¯¢æ¯å¦å·²æååäºä»¶ |
| | | event := selectobject( owner_i, Event, event, event.Subject() = subject_i |
| | | and event.StartTimeOfDay() = startTimeOfDay_i |
| | | and event.EndTimeOfDay() = endTimeOfDay_i |
| | | and event.EventType() = eventtype_i ); |
| | | //åªæéè¿æ¹éå建çé¢ä¸å·²æååäºä»¶è¿å
¥ä¸é¢æä½ |
| | | if( ismultiple and not isnull( event ) ){ |
| | | startdate := startDate_i; |
| | | enddate := startDate_i; |
| | | dates := construct( Dates ); |
| | | dates.Add( startDate_i ); |
| | | //è·åæ§äºä»¶çå¼å§äºä»¶åç»æäºä»¶ï¼ä»¥åæææ¶é´ç¹ |
| | | traverse( event, Participation.ExplicitTimeInterval, eti ){ |
| | | if( startdate > eti.Start().Date() ){ |
| | | startdate := eti.Start().Date(); |
| | | } |
| | | if( enddate < eti.Start().Date() ) { |
| | | enddate := eti.Start().Date(); |
| | | } |
| | | if( not exists( dates, Elements, e, e = eti.Start().Date() ) ){ |
| | | dates.Add( eti.Start().Date() ); |
| | | } |
| | | } |
| | | //ä¿®æ¹æ§äºä»¶çé´é |
| | | nrOfOccurrences_i := enddate - startdate + 1; |
| | | startDate_i := startdate; |
| | | endDate_i := startdate; |
| | | periodStartDate_i := startdate; |
| | | periodEndDate_i := enddate; |
| | | // info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i |
| | | // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i ); |
| | | event := LibCal_Event::CreateUpdateFromUI( owner_i, event.LeadingParticipation(), subject_i, description_i, type_i, capacity_i, category_i, isDefault_i, |
| | | startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, |
| | | isRecurring_i, recurrenceInterval_i, |
| | | patternType_i, patternDaily_IsEveryWeekday_i, patternWeekly_Weekdays_i, |
| | | patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i, |
| | | patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i, |
| | | periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i ); |
| | | //å æä¸éè¦çæ¶é´ç¹ |
| | | timeIntervals := construct( LibCal_ExplicitTimeIntervals ); |
| | | traverse( event, Participation.ExplicitTimeInterval, eti ){ |
| | | // info( '------------------------------', eti.Start(), eti.End(), exists( dates, Elements, e, e = eti.Start().Date() ), '------------------', dates.Find( eti.Start().Date() ) ); |
| | | if( dates.Find( eti.Start().Date() ) < 0 ){ |
| | | timeIntervals.Add( eti ); |
| | | } |
| | | } |
| | | LibCal_ExplicitTimeInterval::Delete( timeIntervals, true ); |
| | | } else { |
| | | event := LibCal_Event::CreateUpdateFromUI( owner_i, participation_i, subject_i, description_i, type_i, capacity_i, category_i, isDefault_i, |
| | | startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, |
| | | isRecurring_i, recurrenceInterval_i, |
| | |
| | | patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i, |
| | | patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i, |
| | | periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i ); |
| | | |
| | | } |
| | | if( not isnull( event ) ){ |
| | | event.EventType( relset, eventtype_i ); |
| | | } |
| | | |
| | | return event; |
| | | *] |
| | |
| | | #parent: ListRoutings |
| | | Response OnClick ( |
| | | Routing selection |
| | | ) id:Response_MacroPlanner_ListRoutings_MenuThermalTrialRatio_OnClick |
| | | ) id:Response_ListRoutings_MenuThermalTrialRatio_OnClick |
| | | { |
| | | #keys: '[415136.0.761890849]' |
| | | CanBindMultiple: false |
| | |
| | | // RecurrencePeriod |
| | | periodType, periodStartDate, nrOfOccurrences, periodEndDate, |
| | | // Subscribers |
| | | dhSubscribers.Data() ); |
| | | dhSubscribers.Data(), false ); |
| | | return event; |
| | | *] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | Quintiq file version 2.0 |
| | | #parent: #root |
| | | Method EditEvent ( |
| | | LibCal_LeadingParticipation leadPart_i |
| | | ) id:Method_LibCal_dlgEvent_EditEvent #extension |
| | | { |
| | | Body: |
| | | [* |
| | | // Set the Event and the related controls. |
| | | // The values are explicitly assigned here 'at the beginning' to the controls, |
| | | // so that the values can be used by the rest of the logic. Databinding is executed too late for that. |
| | | // Further initialization is done in the OnCreated of the Dialog. |
| | | sEvent := shadow( leadPart_i.Event() ); |
| | | dhEvent.Data( &sEvent ); |
| | | this.SetEventData(); |
| | | |
| | | // Set the Participation and the related controls |
| | | // (only the DataHolders, the Date-controls are set later on, after the recurrence has been initialized) |
| | | sLeadPart := shadow( leadPart_i ); |
| | | dhStartDate.Data( sLeadPart.StartDate() ); |
| | | dhEndDate.Data( sLeadPart.EndDate() ); |
| | | dhLeadingParticipation.Data( &sLeadPart ); |
| | | |
| | | // Initialize the capacity here, when done in the OnCreated() edtCapacity is not enabled correctly when the type is Capacity. |
| | | this.InitializeCapacity(); |
| | | |
| | | // Must be done here, when done in the OnCreated() there is no selection in the DropDownList. |
| | | this.InitializeCategories(); |
| | | this.InitializeEventTypes(); |
| | | // Must be done here, when done in the OnCreated() the checkmarks are not always set. |
| | | this.InitializeSubscribers(); |
| | | |
| | | // Open the dialog. |
| | | this.Show( "modal" ); |
| | | *] |
| | | } |
| | |
| | | capacity := Real::MinReal(); // Always fill the capacity. |
| | | |
| | | // RecurrencePattern |
| | | isRecurring := false; |
| | | isRecurring := true; |
| | | recurrenceInterval := 1; |
| | | patternType := LibCal_RecurrencePeriod::TYPE_WITHOUTEND(); |
| | | patternType := LibCal_RecurrencePattern::TYPE_DAILY(); |
| | | |
| | | // Daily |
| | | daily_IsEveryWeekday := false; |
| | |
| | | yearly_DayOfWeek := ''; |
| | | |
| | | // RecurrencePeriod |
| | | periodType := LibCal_RecurrencePeriod::TYPE_WITHOUTEND(); |
| | | periodStartDate := Date::MinDate(); |
| | | periodEndDate := Date::MinDate(); |
| | | nrOfOccurrences := 0; |
| | | periodType := LibCal_RecurrencePeriod::TYPE_NROFOCCURRENCES(); |
| | | periodStartDate := dsStartDate.Date(); |
| | | periodEndDate := startDate + 1; |
| | | nrOfOccurrences := 1; |
| | | |
| | | // All values are passed to the Server, only the relevant values are used there. |
| | | event := LibCal_Event::CreateUpdateFromUI( sEvent.Calendar(), sLeadPart.WrappedInstance(), |
| | |
| | | // RecurrencePeriod |
| | | periodType, periodStartDate, nrOfOccurrences, periodEndDate, |
| | | // Subscribers |
| | | dhSubscribers.Data() ); |
| | | dhSubscribers.Data(), true ); |
| | | |
| | | return event; |
| | | *] |