From 91868cd1ea7eeb00fb573b4ef7a128e988b7a330 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期一, 27 五月 2024 14:36:08 +0800
Subject: [PATCH] 批量维护产能占用事件新建成功

---
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesOK.def                                          |   26 ++++
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnCheckedChanged.def             |   20 +++
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesDatesOK.def                                     |   43 +++++++
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft#582.def                                  |    1 
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def                 |   74 ++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesEventOK.def                                     |   37 ++++++
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def            |   16 ++
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_OnOK.def                                              |   16 +-
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def                              |    2 
 /dev/null                                                                                                                  |   16 --
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent#778.def                                   |    6 
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelList.def                                      |   10 +
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def                                |    3 
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def                                |   78 +-----------
 _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged#613.def |    2 
 15 files changed, 252 insertions(+), 98 deletions(-)

diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
index 5c1cfdf..9557079 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
@@ -38,7 +38,7 @@
         Label: 'Start time'
         MaxDuration: P0DT23H59M0S
         MinDuration: P0DT0H0M0S
-        Taborder: 10
+        Taborder: 7
       ]
     }
     Component dhStartTimeOfDay
@@ -48,7 +48,7 @@
       Databinding: 'Duration'
       Properties:
       [
-        Taborder: 11
+        Taborder: 8
       ]
     }
     Component durEndTimeOfDay
@@ -62,7 +62,7 @@
         Label: 'End time'
         MaxDuration: P0DT23H59M0S
         MinDuration: P0DT0H0M0S
-        Taborder: 12
+        Taborder: 9
       ]
     }
     Component dhEndTimeOfDay
@@ -72,7 +72,7 @@
       Databinding: 'Duration'
       Properties:
       [
-        Taborder: 13
+        Taborder: 10
       ]
     }
     Component edtDescription
@@ -87,7 +87,7 @@
         Multiline: true
         NumberOfColumns: 29
         ShowLabel: false
-        Taborder: 16
+        Taborder: 12
       ]
     }
     Component dsStartDate
@@ -98,7 +98,7 @@
       [
         DateFormat: 'DMMY'
         Label: 'Date'
-        Taborder: 8
+        Taborder: 5
       ]
     }
     Component dhStartDate
@@ -108,7 +108,7 @@
       Databinding: 'Date'
       Properties:
       [
-        Taborder: 9
+        Taborder: 6
       ]
     }
     Component lblDescription id:lblDescription_456
@@ -119,7 +119,7 @@
       [
         Label: 'Description'
         NumberOfColumns: 0
-        Taborder: 15
+        Taborder: 11
       ]
     }
     Component ButtonCreate
@@ -129,10 +129,9 @@
       Properties:
       [
         Label: '鏂板缓'
-        Taborder: 17
+        Taborder: 13
       ]
     }
-    #child: pnlDuration_119
     Component ddslType id:ddslType_360
     {
       #keys: '[415136.0.646711730]'
@@ -145,61 +144,6 @@
         Sorting: 'none'
         Strings: 'Available;Unavailable'
         Taborder: 2
-        Visible: false
-      ]
-    }
-    Component edtCapacity id:edtCapacity_437
-    {
-      #keys: '[415136.0.646711783]'
-      BaseType: 'WebEditField'
-      Properties:
-      [
-        Label: 'Capacity'
-        MaxRows: 1
-        NumberOfColumns: 2
-        Taborder: 3
-        Visible: false
-        WordWrap: false
-      ]
-    }
-    Component dhCategories id:dhCategories_902
-    {
-      #keys: '[415136.0.646711860]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'structured[LibCal_EventCategory]*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
-    Component ddlCategory id:ddlCategory_100
-    {
-      #keys: '[415136.0.646712012]'
-      BaseType: 'WebDropDownList'
-      Databinding: 'LibCal_EventCategory'
-      Children:
-      [
-        Component deCategory id:deCategory_61
-        {
-          #keys: '[415136.0.646712013]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'structured[LibCal_EventCategory]'
-            Source: 'dhCategories'
-            Taborder: 0
-            Transformation: 'Elements'
-          ]
-        }
-      ]
-      Properties:
-      [
-        DataBinding: 'dhEvent.Data.EventCategory'
-        DisplayField: 'Name'
-        NumberOfColumns: 15
-        ShowLabel: false
-        Taborder: 5
-        Visible: false
       ]
     }
     Component ckbApplyToNewResources id:ckbApplyToNewResources_667
@@ -211,7 +155,7 @@
         DataBinding: 'dhEvent.Data.IsDefault'
         Label: 'Apply to new resources'
         NumberOfColumns: 0
-        Taborder: 6
+        Taborder: 3
         Tooltip: 'If checked, calendars of new resources will automatically subscribe to the event.'
         Visible: false
       ]
@@ -226,7 +170,7 @@
         NumberOfColumns: 0
         ShowLabel: false
         SizeRatio: 0
-        Taborder: 7
+        Taborder: 4
         Text: '<Timezone>'
         Visible: false
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelList.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelList.def
new file mode 100644
index 0000000..2522bb5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelList.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component PanelList
+{
+  #keys: '[415136.0.654300441]'
+  BaseType: 'WebPanel'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def"
index 6df6222..6ec0614 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def"
@@ -6,6 +6,7 @@
   Children:
   [
     #child: PanelHeader_144
+    #child: PanelList
   ]
   Properties:
   [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration\043119.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration\043119.def"
deleted file mode 100644
index ecd6dce..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration\043119.def"
+++ /dev/null
@@ -1,62 +0,0 @@
-Quintiq file version 2.0
-Component pnlDuration id:pnlDuration_119
-{
-  #keys: '[415136.0.647371882]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component valDuration
-    {
-      #keys: '[415136.0.647371883]'
-      BaseType: 'WebLabel'
-      Properties:
-      [
-        Label: 'Duration'
-        NumberOfColumns: 12
-        ShowLabel: false
-        Taborder: 1
-        Text: '<Duration>'
-      ]
-    }
-    Component dhDuration
-    {
-      #keys: '[415136.0.647371884]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'Duration'
-      Properties:
-      [
-        Taborder: 2
-      ]
-    }
-    Component lblDuration
-    {
-      #keys: '[415136.0.647371885]'
-      BaseType: 'WebLabel'
-      Properties:
-      [
-        Label: 'Duration'
-        NumberOfColumns: 1
-        Taborder: 0
-      ]
-    }
-    Component lblDays
-    {
-      #keys: '[415136.0.647371886]'
-      BaseType: 'WebLabel'
-      Properties:
-      [
-        ShowLabel: false
-        Taborder: 3
-        Text: 'day'
-        Visible: false
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Orientation: 'horizontal'
-    Taborder: 14
-    Visible: false
-  ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
index 83d259b..74fe8b7 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
@@ -30,7 +30,7 @@
     {
       sEvent.Type( LibCal_Event::TYPE_PARTIAL() );
     }
-    
+    info( '------------------------------', category_i.Name(), sEvent.Type(), sEvent.EventCategory().Name() );
     // 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.
@@ -57,8 +57,8 @@
     
     // Initialize the category here, when done in the OnCreate() there is no selection in the DropDownList.
     // Select the general category for new events.
-    this.InitializeCategories();
-    ddlCategory.Data( owner_i.CalendarRegistry().GetGeneralEventCategory() );
+    //this.InitializeCategories();
+    //ddlCategory.Data( owner_i.CalendarRegistry().GetGeneralEventCategory() );
     
     // Must be done here, when done in the OnCreate() the checkmarks are not always set when the dialog is opened for editing an event.
     // Pre-select all resources as subscriber when creating a common event.
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def
new file mode 100644
index 0000000..b8a79af
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def
@@ -0,0 +1,74 @@
+Quintiq file version 2.0
+#parent: #root
+Method CreateUpdateEventAndParticipation () as LibCal_Event id:Method_LibCal_dlgMultipleEvent_CreateUpdateEventAndParticipation
+{
+  #keys: '[415136.0.649421703]'
+  Body:
+  [*
+    sEvent    := dhEvent.Data();
+    sLeadPart := dhLeadingParticipation.Data();
+    
+    // Get the values from the controls.
+    
+    // Event and LeadingParticipation
+    subject        := edtName.Text();
+    description    := edtDescription.Text();
+    category       := sEvent.EventCategory(); 
+    isDefault      := ckbApplyToNewResources.Checked();
+    startDate      := dsStartDate.Date();
+    startTimeOfDay := durStartTimeOfDay.Duration();
+    endDate        := dsStartDate.Date();
+    endTimeOfDay   := durEndTimeOfDay.Duration();
+    isAllDay       := false;
+    
+    eventType := ddslType.Text();
+    capacity  := Real::MinReal();  // Always fill the capacity.
+    
+    // RecurrencePattern
+    isRecurring        := false;
+    recurrenceInterval := 1;
+    patternType        := LibCal_RecurrencePeriod::TYPE_WITHOUTEND();
+    
+    // Daily
+    daily_IsEveryWeekday := false;
+    
+    // Weekly
+    weekly_Weekdays := "";
+    
+    // Monthly
+    monthly_IsDay       := false;
+    monthly_Day         := 0;
+    monthly_WeekOfMonth := '';
+    monthly_DayOfWeek   := '';
+    
+    // Yearly
+    yearly_IsDate      := false;
+    //month              := '';
+    yearly_Month       := 0;
+    yearly_Day         := 0;
+    yearly_WeekOfMonth := '';
+    yearly_DayOfWeek   := '';
+    
+    // RecurrencePeriod
+    periodType      := LibCal_RecurrencePeriod::TYPE_WITHOUTEND();
+    periodStartDate := Date::MinDate();
+    periodEndDate   := Date::MinDate();
+    nrOfOccurrences := 0;
+    
+    // All values are passed to the Server, only the relevant values are used there.
+    event := LibCal_Event::CreateUpdateFromUI( sEvent.Calendar(), sLeadPart.WrappedInstance(),
+                                               subject, description, eventType, capacity, category, isDefault,
+                                               startDate, startTimeOfDay, endDate, endTimeOfDay, isAllDay,
+                                               // RecurrencePattern
+                                               isRecurring, recurrenceInterval, patternType,
+                                               daily_IsEveryWeekday,
+                                               weekly_Weekdays,
+                                               monthly_IsDay, monthly_Day,  monthly_WeekOfMonth, monthly_DayOfWeek,
+                                               yearly_IsDate, yearly_Month, yearly_Day, yearly_WeekOfMonth, yearly_DayOfWeek,
+                                               // RecurrencePeriod
+                                               periodType, periodStartDate, nrOfOccurrences, periodEndDate,
+                                               // Subscribers
+                                               dhSubscribers.Data() );
+    return event;
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def
deleted file mode 100644
index 1c40b93..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def
+++ /dev/null
@@ -1,12 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method GetPatternType () as String id:Method_LibCal_dlgMultipleEvent_GetPatternType
-{
-  #keys: '[415136.0.647764632]'
-  Body:
-  [*
-    patternType := LibCal_RecurrencePattern::TYPE_NONE();
-    
-    return patternType;
-  *]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def
index 4dc84ac..d64257f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def
@@ -16,7 +16,7 @@
     
     event     := dhEvent.Data();
     eventType := event.Type();
-    
+    info( '------------------------------', eventType );
     // See if the eventType can be used as is or if it should be converted first.
     if( useParticalCapacity )
     {
@@ -45,5 +45,6 @@
     
       ddslType.Text( eventType );
     }
+    info( '------------------------------', ddslType.Text() );
   *]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def
deleted file mode 100644
index 7c493d5..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method InitializeCategories () id:Method_LibCal_dlgMultipleEvent_InitializeCategories
-{
-  #keys: '[415136.0.647371195]'
-  Body:
-  [*
-    participation := dhLeadingParticipation.Data();
-    calendar      := participation.Calendar();
-    
-    categories := calendar.CalendarRegistry().EventCategory( relget );
-    
-    dhCategories.Data( &categories );
-    
-    // The applicable EventCategory is selected in ddlCategory.OnCreate()
-  *]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeDuration.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeDuration.def
deleted file mode 100644
index 03493ad..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeDuration.def
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method InitializeDuration () id:Method_LibCal_dlgMultipleEvent_InitializeDuration
-{
-  #keys: '[415136.0.647372223]'
-  Body:
-  [*
-    sEvent         := dhEvent.Data();
-    sParticipation := dhLeadingParticipation.Data();
-    timezone       := TimeZone::UTCTimeZone();  // Use the UTC-timezone here, don't correct for a specific timezone.
-    
-    // Don't use AddAsPeriod here, the 'nett' duration should be calculated here.
-    start    := sParticipation.StartDate().Add( timezone, sEvent.StartTimeOfDay() );
-    end      := sParticipation.EndDate()  .Add( timezone, sEvent.EndTimeOfDay()   );
-    duration := Duration::Zero();
-    
-    // Keep zero in case of negative duration (should not happen).
-    if( end > start )
-    {
-      duration := end - start;
-    }
-    
-    // Update the DataHolder, which will update the labels that show the duration.
-    dhDuration.Data( duration );
-  *]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_OnOK.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_OnOK.def
index 2e386a0..c66fb1e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_OnOK.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_OnOK.def
@@ -1,8 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-Method OnOK (
-  structured[LibCal_Calendar] subscribers_i
-) id:Method_LibCal_dlgMultipleEvent_OnOK
+Method OnOK () id:Method_LibCal_dlgMultipleEvent_OnOK
 {
   #keys: '[415136.0.647733138]'
   Body:
@@ -19,14 +17,14 @@
     //}
     
     // subscribers_i contains the calendars that are checked in the list with subscribers.
-    subscribers := subscribers_i.Copy();
-    dhSubscribers.Data( &subscribers );
+    //subscribers := subscribers_i.Copy();
+    //dhSubscribers.Data( &subscribers );
     
     // If the dialog was opened from dlgSubscription, update the data in that dialog.
-    if( not isnull( dhdlgSubscription.Data() ) )
-    {
-      this.CallbackSubscriptionDialog();
-    }
+    //if( not isnull( dhdlgSubscription.Data() ) )
+    //{
+    //  this.CallbackSubscriptionDialog();
+    //}
     
     // Effectuate the changes and close the form.
     Form.CreateUpdateEventAndParticipation();
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
index 33d6547..12e8065 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
@@ -25,6 +25,6 @@
     dsStartDate.Date( startDate );
     
     // Directly initialize the Duration
-    this.InitializeDuration();
+    //this.InitializeDuration();
   *]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesDatesOK.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesDatesOK.def
new file mode 100644
index 0000000..58c3135
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesDatesOK.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: #root
+Method ValuesDatesOK () as Boolean id:Method_LibCal_dlgMultipleEvent_ValuesDatesOK
+{
+  #keys: '[415136.0.654351264]'
+  Body:
+  [*
+    feedback := FeedbackObject::LocalFeedback();
+    timezone := this.GetCalendarTimeZone();
+    
+    if( dsStartDate.Date().IsInfinite() )
+    {
+      feedback.AddHard( Translations::Event_InvalidStartDate() );
+    }
+    
+    //if( dsEndDate.Date().IsInfinite() )
+    //{
+    //  feedback.AddHard( Translations::Event_InvalidEndDate() );
+    //}
+    
+    if( feedback.IsAllowed() )
+    {
+      start := dsStartDate.Date().DateTime( timezone ).AddAsPeriod( timezone, durStartTimeOfDay.Duration() );
+      end   := dsStartDate.Date().DateTime( timezone ).AddAsPeriod( timezone, durEndTimeOfDay  .Duration() );
+    
+      if( end <= start )
+      {
+        feedback.AddHard( Translations::Event_EndMustBeGreaterThanStart() );
+      }
+    
+      // End must be greater than StartOfCalendar.
+      startOfCalendar := dhEvent.Data().Calendar().Start();
+      if( end <= startOfCalendar )
+      {
+        convOps := ConversionOptions::ISO();
+        feedback.AddHard( Translations::Event_EndMustBeGreaterThanStartOfCalendar( end            .Format( Translations::DateTimeFormat(), convOps ),
+                                                                                   startOfCalendar.Format( Translations::DateTimeFormat(), convOps ) ) );
+      }
+    }
+    
+    return feedback.IsAllowed();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesEventOK.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesEventOK.def
new file mode 100644
index 0000000..4221e03
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesEventOK.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+Method ValuesEventOK () as Boolean id:Method_LibCal_dlgMultipleEvent_ValuesEventOK
+{
+  #keys: '[415136.0.654351189]'
+  Body:
+  [*
+    feedback := FeedbackObject::LocalFeedback();
+    
+    if( edtName.Text().TrimBoth() = "" )
+    {
+      feedback.AddHard( Translations::Event_NoSubject() );
+    }
+    
+    //if( ddslType.Text() = LibCal_Event::TYPE_PARTIAL() )
+    //{
+    //  capacity := this.StringToReal( edtCapacity.Text() );
+    //
+    //  if( capacity <> Real::MinReal() )
+    //  {
+    //    // Check the value of the Real.
+    //    if( capacity < 0.0 or  // cannot happen, because '-' is not accepted
+    //        capacity > 1.0 )
+    //    {                                                           // Format according to the applicable locale.
+    //      feedback.AddHard( Translations::Event_CapacityMustBeBetween0and1( ( 0.0 ).Format( "N(Dec(1))" ),
+    //                                                                        ( 1.0 ).Format( "N(Dec(1))" ) ) );
+    //    }
+    //  }
+    //  else
+    //  {
+    //    feedback.AddHard( Translations::Event_InvalidCapacity() );
+    //  }
+    //}
+    
+    return feedback.IsAllowed();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesOK.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesOK.def
new file mode 100644
index 0000000..d9c8738
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ValuesOK.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Method ValuesOK () as Boolean id:Method_LibCal_dlgMultipleEvent_ValuesOK
+{
+  #keys: '[415136.0.654351117]'
+  Body:
+  [*
+    feedback := FeedbackObject::LocalFeedback();
+    
+    this.ValuesEventOK();
+    
+    // Only check for dates when the event is not recurring...
+    //if( btnOnce.IsPressed() )
+    //{
+      this.ValuesDatesOK();
+    //}
+    
+    //else  // ... otherwise check if the recurrence pattern and period are ok.
+    //{
+    //  this.ValuesRecurrenceOK();
+    //  this.ValuesPeriodRangeOK();
+    //}
+    
+    return feedback.IsAllowed();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def
new file mode 100644
index 0000000..2490324
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/ButtonCreate
+Response OnClick () id:Response_PanelHeader_144_ButtonCreate_OnClick
+{
+  #keys: '[415136.0.654000146]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.OnOK();
+    *]
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddlCategory_OnCreated\043969.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddlCategory_OnCreated\043969.def"
deleted file mode 100644
index 115a677..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddlCategory_OnCreated\043969.def"
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelHeader_144/ddlCategory_100
-Response OnCreated () id:Response_pnlCategory_ddlCategory_OnCreated_969
-{
-  #keys: '[415136.0.646712010]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  QuillAction
-  {
-    Body:
-    [*
-      // Set the BoundValue to the category of the event, or the general event for new events.
-      // It needs to be done explicitly here, because for new events data binding doesn't work yet.
-      category := dhEvent.Data().EventCategory();
-      if( isnull( category ) )
-      {
-        category := dhEvent.Data().Calendar().CalendarRegistry().GetGeneralEventCategory();
-      }
-      
-      this.Data( category );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged\043613.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged\043613.def"
index 5e28f9e..9e077dd 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged\043613.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged\043613.def"
@@ -10,7 +10,7 @@
     Body:
     [*
       // Show the editfield for the capacity, if applicable.
-      edtCapacity.Visible( selection = LibCal_Event::TYPE_PARTIAL() );
+      //edtCapacity.Visible( selection = LibCal_Event::TYPE_PARTIAL() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnCheckedChanged.def
new file mode 100644
index 0000000..fd17c51
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnCheckedChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: lstSubscribers_537
+Response OnCheckedChanged (
+  structured[LibCal_Calendar] checkeditems
+) id:Response_lstSubscribers_537_OnCheckedChanged
+{
+  #keys: '[415136.0.654000327]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnCheckedChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      subscribers := checkeditems.Copy();
+      
+      dhSubscribers.Data( &subscribers );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_pnlDuration_119_dhDuration_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_pnlDuration_119_dhDuration_OnDataChanged.def
deleted file mode 100644
index 4ea94e7..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_pnlDuration_119_dhDuration_OnDataChanged.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: pnlDuration_119/dhDuration
-Response OnDataChanged () id:Response_pnlDuration_119_dhDuration_OnDataChanged
-{
-  #keys: '[415136.0.647371881]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      //Form.ShowDuration( this.Data() );
-    *]
-    GroupServerCalls: false
-  }
-}

--
Gitblit v1.9.3