From add04ed4aeed4cc27966205f9f35e8dbce6d3319 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期五, 24 五月 2024 16:18:34 +0800
Subject: [PATCH] 批量维护产能占用事件前端界面设计
---
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def | 14
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetCalendarTimeZone.def | 12
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuCapacities.def | 19
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/_ROOT_Component_LibCal_dlgMultipleEvent.def | 37 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelContent.def | 16
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddlCategory_OnCreated#969.def | 24 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def | 17
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_abpListSubscribers#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnChanged.def | 23 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/_ROOT_Component_LibCal_frmCommonCalendar.def | 10
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnSelectionChanged.def | 32 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_cmEventCategories.def | 19
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def | 30 +
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageData.def | 1
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetEventData.def | 36 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_OnCreated.def | 27 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/_ROOT_Component_LibCal_GlobalState.def | 6
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetDaysOnlyMode.def | 26 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/Method_CreateMultipleEvent.def | 16
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_pnlDuration_119_dhDuration_OnDataChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def | 49 ++
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def | 12
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged#613.def | 17
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_cmSubscribers#1.def | 10
Calendars/BL/Type_LibCal_Calendar/Method_GetPotentialSubscribers.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_lstSubscribers#537.def | 61 ++
_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Response_MacroPlanner_lstEventCategories_MenuCreateMultipleEvents_OnClick.def | 19
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnChanged.def | 42 +
_Main/UI/MacroPlannerWebApp/_ROOT_Project_CalendarsWebUI.qp | 5
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft#582.def | 15
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle.def | 32 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_lstEventCategories.def | 14
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent.def | 18
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeSubscribers.def | 21
_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_pnlEventCategories.def | 8
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent#778.def | 74 +++
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeDuration.def | 26 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsStartDate_OnChanged.def | 30 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowDaysOnlyModeWarning.def | 29 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration#119.def | 62 ++
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle.def | 22 +
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def | 240 ++++++++++
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlSubscribers.def | 60 ++
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetNrOfMonth.def | 17
44 files changed, 1,274 insertions(+), 1 deletions(-)
diff --git a/Calendars/BL/Type_LibCal_Calendar/Method_GetPotentialSubscribers.qbl b/Calendars/BL/Type_LibCal_Calendar/Method_GetPotentialSubscribers.qbl
index 5a9b41c..0b1884e 100644
--- a/Calendars/BL/Type_LibCal_Calendar/Method_GetPotentialSubscribers.qbl
+++ b/Calendars/BL/Type_LibCal_Calendar/Method_GetPotentialSubscribers.qbl
@@ -18,5 +18,4 @@
return &subscribers;
*]
- InterfaceProperties { Accessibility: 'Module' }
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
new file mode 100644
index 0000000..645df5f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component ActionBarGroupDataViews #extension
+{
+ Children:
+ [
+ Component ButtonCapacities #extension
+ {
+ Children:
+ [
+ #child: ContextMenuCapacities
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageData.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageData.def
index e68c241..1c10729 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageData.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageData.def
@@ -4,5 +4,6 @@
Children:
[
#child: ActionBarGroupImportExportData
+ #child: ActionBarGroupDataViews
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuCapacities.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuCapacities.def
new file mode 100644
index 0000000..6c23590
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuCapacities.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+Component ContextMenuCapacities #extension
+{
+ Children:
+ [
+ Component MenuCapacitiesUnavailableEvent
+ {
+ #keys: '[415136.0.645511697]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DATE-TIME_PREFERENCES'
+ Taborder: 6
+ Title: 'Calendar unavailable event'
+ Tooltip: 'Calendar unavailable event'
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/Method_CreateMultipleEvent.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/Method_CreateMultipleEvent.def
new file mode 100644
index 0000000..945c4f7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/Method_CreateMultipleEvent.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method CreateMultipleEvent (
+ LibCal_Calendar owner_i,
+ LibCal_EventCategory category_i
+) id:Method_LibCal_GlobalState_CreateMultipleEvent
+{
+ #keys: '[415136.0.645500983]'
+ Body:
+ [*
+ // Create a new Event.
+ // The time of the planning-dataset will be suggested as start.
+ dlg := construct( LibCal_dlgMultipleEvent );
+ dlg.CreateEvent( owner_i, category_i );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/_ROOT_Component_LibCal_GlobalState.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/_ROOT_Component_LibCal_GlobalState.def
new file mode 100644
index 0000000..63b9aca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_GlobalState/_ROOT_Component_LibCal_GlobalState.def
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: CalendarsWebUI
+OrphanComponent LibCal_GlobalState #extension
+{
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelContent.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelContent.def
new file mode 100644
index 0000000..8f03c46
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelContent.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelContent
+{
+ #keys: '[415136.0.647401424]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: Panelleft_582
+ #child: pnlSubscribers
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
new file mode 100644
index 0000000..5c1cfdf
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
@@ -0,0 +1,240 @@
+Quintiq file version 2.0
+Component PanelHeader id:PanelHeader_144
+{
+ #keys: '[415136.0.647401494]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component edtName
+ {
+ #keys: '[415136.0.647401496]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'dhEvent.Data.Subject'
+ Label: 'Name'
+ PlaceHolder: '<Enter a name>'
+ Taborder: 0
+ ]
+ }
+ Component edtEventType
+ {
+ #keys: '[415136.0.647401498]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ Label: 'Event type'
+ Taborder: 1
+ ]
+ }
+ Component durStartTimeOfDay
+ {
+ #keys: '[415136.0.647401500]'
+ BaseType: 'WebDurationSelector'
+ Properties:
+ [
+ CanBeNegative: false
+ DurationFormat: 'h:m'
+ Label: 'Start time'
+ MaxDuration: P0DT23H59M0S
+ MinDuration: P0DT0H0M0S
+ Taborder: 10
+ ]
+ }
+ Component dhStartTimeOfDay
+ {
+ #keys: '[415136.0.647401501]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Duration'
+ Properties:
+ [
+ Taborder: 11
+ ]
+ }
+ Component durEndTimeOfDay
+ {
+ #keys: '[415136.0.647401506]'
+ BaseType: 'WebDurationSelector'
+ Properties:
+ [
+ CanBeNegative: false
+ DurationFormat: 'h:m'
+ Label: 'End time'
+ MaxDuration: P0DT23H59M0S
+ MinDuration: P0DT0H0M0S
+ Taborder: 12
+ ]
+ }
+ Component dhEndTimeOfDay
+ {
+ #keys: '[415136.0.647401507]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Duration'
+ Properties:
+ [
+ Taborder: 13
+ ]
+ }
+ Component edtDescription
+ {
+ #keys: '[415136.0.647401509]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'dhEvent.Data.Description'
+ Label: 'Description'
+ MaxRows: 1
+ Multiline: true
+ NumberOfColumns: 29
+ ShowLabel: false
+ Taborder: 16
+ ]
+ }
+ Component dsStartDate
+ {
+ #keys: '[415136.0.647401510]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ DateFormat: 'DMMY'
+ Label: 'Date'
+ Taborder: 8
+ ]
+ }
+ Component dhStartDate
+ {
+ #keys: '[415136.0.647401511]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date'
+ Properties:
+ [
+ Taborder: 9
+ ]
+ }
+ Component lblDescription id:lblDescription_456
+ {
+ #keys: '[415136.0.647492310]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ Label: 'Description'
+ NumberOfColumns: 0
+ Taborder: 15
+ ]
+ }
+ Component ButtonCreate
+ {
+ #keys: '[415136.0.647262469]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '鏂板缓'
+ Taborder: 17
+ ]
+ }
+ #child: pnlDuration_119
+ Component ddslType id:ddslType_360
+ {
+ #keys: '[415136.0.646711730]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ InitialValue: 'Unavailable'
+ NumberOfColumns: 15
+ ShowLabel: false
+ 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
+ {
+ #keys: '[415136.0.646712077]'
+ BaseType: 'WebCheckbox'
+ Properties:
+ [
+ DataBinding: 'dhEvent.Data.IsDefault'
+ Label: 'Apply to new resources'
+ NumberOfColumns: 0
+ Taborder: 6
+ Tooltip: 'If checked, calendars of new resources will automatically subscribe to the event.'
+ Visible: false
+ ]
+ }
+ Component valTimezone id:valTimezone_653
+ {
+ #keys: '[415136.0.646712169]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ FixedSize: false
+ NumberOfColumns: 0
+ ShowLabel: false
+ SizeRatio: 0
+ Taborder: 7
+ Text: '<Timezone>'
+ Visible: false
+ ]
+ }
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def"
new file mode 100644
index 0000000..6df6222
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_Panelleft\043582.def"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component Panelleft id:Panelleft_582
+{
+ #keys: '[415136.0.647401493]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelHeader_144
+ ]
+ Properties:
+ [
+ SizeRatio: 2
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_abpListSubscribers\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_abpListSubscribers\0431.def"
new file mode 100644
index 0000000..54d1682
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_abpListSubscribers\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component abpListSubscribers id:abpListSubscribers_1
+{
+ #keys: '[415136.0.647401568]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 2
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_cmSubscribers\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_cmSubscribers\0431.def"
new file mode 100644
index 0000000..3e6937f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_cmSubscribers\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component cmSubscribers id:cmSubscribers_1
+{
+ #keys: '[415136.0.647401567]'
+ BaseType: 'listContextMenu'
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_lstSubscribers\043537.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_lstSubscribers\043537.def"
new file mode 100644
index 0000000..69170e1
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_lstSubscribers\043537.def"
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+Component lstSubscribers id:lstSubscribers_537
+{
+ #keys: '[415136.0.647401564]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component deSubscribers
+ {
+ #keys: '[415136.0.647401565]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[LibCal_Calendar]'
+ Source: 'dhPotentialSubscribers'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ Component dslSubscribers
+ {
+ #keys: '[415136.0.647401566]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: cmSubscribers_1
+ ]
+ Properties:
+ [
+ Columns: 'CalendarID'
+ ContextMenu: 'cmSubscribers'
+ SortCriteria: 'CalendarID'
+ Taborder: 1
+ ]
+ }
+ #child: abpListSubscribers_1
+ ]
+ Properties:
+ [
+ SelectionCheckboxes: true
+ Taborder: 4
+ ]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_lstSubscribers_537_WebMenu_OnClick
+ {
+ #keys: '[415136.0.647401558]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[3739.0.1873455]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration\043119.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration\043119.def"
new file mode 100644
index 0000000..ecd6dce
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlDuration\043119.def"
@@ -0,0 +1,62 @@
+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/Component_pnlSubscribers.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlSubscribers.def
new file mode 100644
index 0000000..2b76272
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlSubscribers.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component pnlSubscribers
+{
+ #keys: '[415136.0.647401562]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component dhPotentialSubscribers
+ {
+ #keys: '[415136.0.647401563]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[LibCal_Calendar]*'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ #child: lstSubscribers_537
+ Component lblInfo
+ {
+ #keys: '[415136.0.647401569]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ ShowLabel: false
+ Taborder: 3
+ Text: 'Calendars that are subscribing to this event.'
+ ]
+ }
+ Component lblIsInitialized
+ {
+ #keys: '[415136.0.647401570]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ Taborder: 2
+ Text: 'false'
+ Visible: false
+ ]
+ }
+ Component dhSubscribers
+ {
+ #keys: '[415136.0.647401571]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[LibCal_Calendar]*'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ MinimumColumns: 49
+ Taborder: 1
+ Title: 'Subscribers'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
new file mode 100644
index 0000000..4a70117
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
@@ -0,0 +1,74 @@
+Quintiq file version 2.0
+#parent: #root
+Method CreateEvent (
+ LibCal_Calendar owner_i,
+ LibCal_EventCategory category_i,
+ DateTime start_i,
+ DateTime end_i
+) id:Method_LibCal_dlgMultipleEvent_CreateEvent_778
+{
+ #keys: '[415136.0.645530672]'
+ Body:
+ [*
+ timezone := owner_i.GetTimeZone();
+
+ // Create a new Event...
+ sEvent := owner_i.Event( relshadow,
+ EventID := [String]Key::NextPersistentKey(),
+ StartTimeOfDay := start_i.TimeOfDay( timezone ),
+ EndTimeOfDay := end_i .TimeOfDay( timezone ),
+ EventCategory := category_i,
+ IsDefault := owner_i.istype( LibCal_CommonCalendar ) );
+
+ // Special case: by default the EventType is 'Unavailable', but when an event is created for
+ // category 'Available' or 'Partial' then set the Type to 'Available' resp 'Partial'.
+ if( guard( category_i.Name() = LibCal_Event::TYPE_AVAILABLE(), false ) )
+ {
+ sEvent.Type( LibCal_Event::TYPE_AVAILABLE() );
+ }
+ else if( guard( category_i.Name() = LibCal_Event::TYPE_PARTIAL(), false ) )
+ {
+ sEvent.Type( LibCal_Event::TYPE_PARTIAL() );
+ }
+
+ // 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.
+ dhEvent.Data( &sEvent );
+ this.SetEventData();
+
+ // ...and an accompanying LeadingParticipation.
+ // Only set the dates, the times will be updated from the Event later if necessary.
+ sLeadPart := owner_i.Participation( relshadow, LibCal_LeadingParticipation,
+ ParticipationID := [String]Key::NextPersistentKey(),
+ StartDate := start_i.Date( timezone ),
+ EndDate := end_i .Date( timezone ) );
+ info( '----------------------', isnull( sLeadPart ) );
+ // Set the Participation and the related controls
+ // (only the DataHolders, the Date-controls are set later on, after the recurrence has been initialized)
+ dhStartDate.Data( sLeadPart.StartDate() );
+ //dhEndDate.Data( sLeadPart.EndDate() );
+ dhLeadingParticipation.Data( &sLeadPart );
+ info( '-----------------------', isnull( dhLeadingParticipation.Data() ) );
+
+ // Initialize the capacity here, when done in the OnCreate() edtCapacity is not disabled correctly.
+ this.InitializeCapacity();
+
+ // 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() );
+
+ // 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.
+ this.InitializeSubscribers();
+ if( owner_i.istype( LibCal_CommonCalendar ) )
+ {
+ lstSubscribers.CheckAll();
+ }
+
+ // Open the dialog.
+ this.Show( "modal" );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent.def
new file mode 100644
index 0000000..3177dfb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Method CreateEvent (
+ LibCal_Calendar owner_i,
+ LibCal_EventCategory category_i
+) id:Method_LibCal_dlgMultipleEvent_CreateEvent
+{
+ #keys: '[415136.0.645530478]'
+ Body:
+ [*
+ // Use the time of the planning-dataset as suggested start.
+ start := LibCal_GlobalState.DetermineStartOfEvent( LibCal_GlobalState.GetPlanningTime(),
+ owner_i.GetTimeZone() );
+ end := LibCal_GlobalState.DetermineEndOfEvent( start );
+
+ this.CreateEvent( owner_i, category_i, start, end );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetCalendarTimeZone.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetCalendarTimeZone.def
new file mode 100644
index 0000000..7e5de2e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetCalendarTimeZone.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCalendarTimeZone () as TimeZone id:Method_LibCal_dlgMultipleEvent_GetCalendarTimeZone
+{
+ #keys: '[415136.0.646711553]'
+ Body:
+ [*
+ return dhEvent.Data().Calendar().GetTimeZone();
+ *]
+ Declarative: true
+ ReturnsOwning: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetNrOfMonth.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetNrOfMonth.def
new file mode 100644
index 0000000..bc128d1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetNrOfMonth.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetNrOfMonth (
+ String month_i
+) as Number id:Method_LibCal_dlgMultipleEvent_GetNrOfMonth
+{
+ #keys: '[415136.0.647371986]'
+ Body:
+ [*
+ rowSeparator := ";"; // ssYearlyMonth.RowSeparator() in not possible (yet?) in WC.
+
+ months := Translations::Pattern_Months().Tokenize( rowSeparator );
+ nrOfMonth := months.Find( month_i ) + 1;
+
+ return nrOfMonth;
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def
new file mode 100644
index 0000000..1c40b93
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_GetPatternType.def
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..4dc84ac
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCapacity.def
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeCapacity () id:Method_LibCal_dlgMultipleEvent_InitializeCapacity
+{
+ #keys: '[415136.0.647371166]'
+ Body:
+ [*
+ // Extensible method USE_PARTIAL_CAPACITY indicates if partial capacity is allowed.
+ // If so, then add it as possible option.
+ useParticalCapacity := LibCal_Event::USE_PARTIAL_CAPACITY();
+
+ if( useParticalCapacity )
+ {
+ ddslType.Strings( ddslType.Strings() + ";" + LibCal_Event::TYPE_PARTIAL() );
+ }
+
+ event := dhEvent.Data();
+ eventType := event.Type();
+
+ // See if the eventType can be used as is or if it should be converted first.
+ if( useParticalCapacity )
+ {
+ ddslType.Text( eventType );
+ }
+ else
+ {
+ // Partial capacity should not be used. Convert it to Unavailable or Available.
+ // This is an edge case that can only happen via import, or when using partial capacity was first enabled and later disabled.
+ if( eventType = LibCal_Event::TYPE_PARTIAL() )
+ {
+ if( event.PartialCapacity() = 0.0 )
+ {
+ eventType := LibCal_Event::TYPE_UNAVAILABLE();
+ }
+ else
+ {
+ eventType := LibCal_Event::TYPE_AVAILABLE();
+ }
+
+ // Show a message to inform the user that the EventType and Capacity was changed.
+ capacity := LibCal_GlobalState.RealToString( event.PartialCapacity() );
+ WebMessageBox::Warning( "The event type was 'Partial' with Capacity = " + capacity + ", but partial capacity is not enabled."
+ + "The event type is set to '" + eventType + "'.", false, false );
+ }
+
+ ddslType.Text( eventType );
+ }
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def
new file mode 100644
index 0000000..7c493d5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeCategories.def
@@ -0,0 +1,17 @@
+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
new file mode 100644
index 0000000..03493ad
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeDuration.def
@@ -0,0 +1,26 @@
+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_InitializeSubscribers.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeSubscribers.def
new file mode 100644
index 0000000..8cd3a70
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_InitializeSubscribers.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeSubscribers () id:Method_LibCal_dlgMultipleEvent_InitializeSubscribers
+{
+ #keys: '[415136.0.647231508]'
+ Body:
+ [*
+ participation := dhLeadingParticipation.Data();
+ calendar := participation.Calendar();
+ potentialSubscribers := calendar.GetPotentialSubscribers();
+
+ // Remove the calendar of the initiator (cannot subscribe to self).
+ initiator := dhEvent.Data().Calendar();
+ if( potentialSubscribers.Find( initiator ) >= 0 )
+ {
+ potentialSubscribers.Remove( initiator );
+ }
+
+ dhPotentialSubscribers.Data( &potentialSubscribers );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetDaysOnlyMode.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetDaysOnlyMode.def
new file mode 100644
index 0000000..f26ff4b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetDaysOnlyMode.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetDaysOnlyMode () id:Method_LibCal_dlgMultipleEvent_SetDaysOnlyMode
+{
+ #keys: '[415136.0.646700929]'
+ Body:
+ [*
+ // Force the times to be 0:00, in case an event is edited that was created in 'regular' mode,
+ // and set IsAllDay.
+ this.ShowDaysOnlyModeWarning();
+
+ dhStartTimeOfDay.Data( Duration::Zero() );
+ dhEndTimeOfDay .Data( Duration::Zero() );
+
+ durStartTimeOfDay.Duration( Duration::Zero() );
+ durEndTimeOfDay .Duration( Duration::Zero() );
+
+ //ckbIsAllDay.Checked( true );
+
+ // Disable start and end time, and hide checkbox 'All day'.
+ // Disabling start and end makes the duration more clear; you can better see that end is NOT part of the duration.
+ durStartTimeOfDay.Enabled( false, "Days only mode is enabled" );
+ durEndTimeOfDay .Enabled( false, "Days only mode is enabled" );
+ //ckbIsAllDay .Visible( false );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetEventData.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetEventData.def
new file mode 100644
index 0000000..6fa40fe
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetEventData.def
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetEventData () id:Method_LibCal_dlgMultipleEvent_SetEventData
+{
+ #keys: '[415136.0.645530896]'
+ Body:
+ [*
+ // Set the values of the controls that are related to the Event.
+ // Don't rely on databinding, because this is too late for the visualization logic;
+ // the values have not been taken over from the bound attributes yet when the logic needs them.
+ sEvent := dhEvent.Data();
+
+ edtName.Text( sEvent.Subject() );
+ //Type
+ //ddslType.Text( sEvent.Type() );
+
+ //capacity := LibCal_GlobalState.RealToString( sEvent.PartialCapacity() );
+ //edtCapacity.Text( capacity );
+
+ // Days only mode requires special treatment.
+ if( LibCal_Event::USE_ONLY_DAYS() )
+ {
+ this.SetDaysOnlyMode();
+ }
+ else
+ {
+ dhStartTimeOfDay.Data( sEvent.StartTimeOfDay() );
+ dhEndTimeOfDay .Data( sEvent.EndTimeOfDay() );
+
+ durStartTimeOfDay.Duration( sEvent.StartTimeOfDay() );
+ durEndTimeOfDay .Duration( sEvent.EndTimeOfDay() );
+
+ // ckbIsAllDay.Checked( sEvent.IsAllDay() );
+ }
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
new file mode 100644
index 0000000..33d6547
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetParticipationData () id:Method_LibCal_dlgMultipleEvent_SetParticipationData
+{
+ #keys: '[415136.0.647763952]'
+ Body:
+ [*
+ sParticipation := dhLeadingParticipation.Data();
+
+ // If the StartDate is earlier than the start of the CalendarWindow, then set the StartDate
+ // to the date of the first recurrence within the CalendarWindow.
+ // This prevents showing dates from potentially long in the past.
+ startDate := sParticipation.StartDate();
+ if( sParticipation.IsRecurring() and
+ startDate < sParticipation.Calendar().StartDate() )
+ {
+ startDate := Date::MinDate();
+ }
+
+ //delta := startDate - sParticipation.StartDate();
+
+ // Only the value of the following two controls have to be set explicitly (in this order!),
+ // the value of the other controls are then set via the responses of these controls.
+ //dhEndDate .Data( sParticipation.EndDate() + delta );
+ dsStartDate.Date( startDate );
+
+ // Directly initialize the Duration
+ this.InitializeDuration();
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowDaysOnlyModeWarning.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowDaysOnlyModeWarning.def
new file mode 100644
index 0000000..889da37
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowDaysOnlyModeWarning.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+Method ShowDaysOnlyModeWarning () id:Method_LibCal_dlgMultipleEvent_ShowDaysOnlyModeWarning
+{
+ #keys: '[415136.0.646701003]'
+ Body:
+ [*
+ // Show a warning when the StartTimeOfDay and/or EndTimeOfDay of the Event will be set to 0:00
+ // because of running in days only mode.
+ event := dhEvent.Data();
+ msg := "";
+
+ if( event.StartTimeOfDay() <> Duration::Zero() )
+ {
+ msg := "StartTimeOfDay is changed from " + [String]event.StartTimeOfDay() + " to 0:00";
+ }
+
+ if( event.EndTimeOfDay() <> Duration::Zero() )
+ {
+ msg := msg + ifexpr( msg <> "", "\n", "" )
+ + "EndTimeOfDay is changed from " + [String]event.EndTimeOfDay() + " to 0:00";
+ }
+
+ if( msg <> "" )
+ {
+ WebMessageBox::Warning( "DaysOnly-mode is enabled for the calendars.\n" + msg, false, false );
+ }
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_OnCreated.def
new file mode 100644
index 0000000..7a7fc3d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_OnCreated.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_LibCal_dlgMultipleEvent_OnCreated
+{
+ #keys: '[415136.0.647763850]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ QuillAction
+ {
+ Body:
+ [*
+ // Generic initialization
+ calendar := dhLeadingParticipation.Data().Calendar();
+ this.Title( "Event for calendar '" + calendar.CalendarID() + "'" );
+
+ // Only show the checkbox for common events.
+ //pnlApplyToNewResources.Visible( calendar.istype( LibCal_CommonCalendar ) );
+
+ //this.InitializeWeekdayButtons();
+ //this.InitializeRecurrence();
+ this.SetParticipationData(); // Determine the StartDate after the recurrence has been initialized,
+ // so it can be updated to the first occurrence inside the CalendarWindow if necessary.
+ //this.InitializeTimezone();
+ *]
+ GroupServerCalls: false
+ }
+}
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"
new file mode 100644
index 0000000..115a677
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddlCategory_OnCreated\043969.def"
@@ -0,0 +1,24 @@
+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"
new file mode 100644
index 0000000..5e28f9e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged\043613.def"
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/ddslType_360
+Response OnSelectionChanged () id:Response_pnlType_ddslType_OnSelectionChanged_613
+{
+ #keys: '[415136.0.646711729]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ // Show the editfield for the capacity, if applicable.
+ edtCapacity.Visible( selection = LibCal_Event::TYPE_PARTIAL() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsStartDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsStartDate_OnChanged.def
new file mode 100644
index 0000000..203f73c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsStartDate_OnChanged.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/dsStartDate
+Response OnChanged () id:Response_PanelHeader_144_dsStartDate_OnChanged
+{
+ #keys: '[415136.0.647401487]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ // Adjust the EndDate accordingly.
+ //if( dhStartDate.Data().IsFinite() )
+ //{
+ // // Use the EndDate of the instance if the value of the control has not been set yet.
+ // endDate := ifexpr( dsEndDate.Date().IsFinite(), dsEndDate.Date(), dhLeadingParticipation.Data().EndDate() );
+ //
+ // delta := this.Date() - dhStartDate.Data();
+ // dsEndDate.Date( endDate + delta );
+ //}
+
+ // Update the 'memory' for later delta-calculation, and/or setting the time back when AllDay is turned off.
+ dhStartDate.Data( this.Date() );
+
+ // Also set StartOfPeriod (always, also in case of a non-recurring event).
+ //dsStartOfPeriod.Date( this.Date() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnChanged.def
new file mode 100644
index 0000000..76755aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnChanged.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/durEndTimeOfDay
+Response OnChanged () id:Response_PanelHeader_144_durEndTimeOfDay_OnChanged
+{
+ #keys: '[415136.0.647401489]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ // Update the 'memory', but only when not all day, because otherwise it will be set to 0:00.
+ //if( not ckbIsAllDay.Checked() )
+ //{
+ // dhEndTimeOfDay.Data( this.Duration() );
+ //}
+ //
+ //Form.UpdateDuration();
+ //Form.UpdateTextualInfo();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle.def
new file mode 100644
index 0000000..41f118d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/durEndTimeOfDay
+Response OnInputIdle () id:Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle
+{
+ #keys: '[415136.0.647401488]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnInputIdle'
+ QuillAction
+ {
+ Body:
+ [*
+ // Update the 'memory', but only when not all day, because otherwise it will be set to 0:00.
+ //if( not ckbIsAllDay.Checked() )
+ //{
+ // dhEndTimeOfDay.Data( this.Duration() );
+ //}
+ //
+ //Form.UpdateDuration();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnChanged.def
new file mode 100644
index 0000000..c8a664b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnChanged.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/durStartTimeOfDay
+Response OnChanged () id:Response_PanelHeader_144_durStartTimeOfDay_OnChanged
+{
+ #keys: '[415136.0.647401492]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ // If not AllDay, adjust the EndTimeOfDay accordingly.
+ // When EndTimeOfDay is not changed, UpdateDuration must be done from here.
+ //updateDuration := true;
+ //
+ //if( not ckbIsAllDay.Checked() )
+ //{
+ // delta := this.Duration() - dhStartTimeOfDay.Data();
+ //
+ // if( delta <> Duration::Zero() )
+ // {
+ // endTimeOfDay := durEndTimeOfDay.Duration() + delta;
+ //
+ // // Also adjust dsEndDate if necessary.
+ // dsEndDate.Date( dsEndDate.Date() + endTimeOfDay.Days() );
+ // durEndTimeOfDay.Duration( endTimeOfDay - Duration::Days( endTimeOfDay.Days() ) );
+ //
+ // // Update the 'memory' for later delta-calculation, and/or setting the time back when AllDay is turned off.
+ // dhStartTimeOfDay.Data( this.Duration() );
+ //
+ // updateDuration := false;
+ // }
+ //}
+ //
+ //if( updateDuration )
+ //{
+ // Form.UpdateDuration();
+ //}
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle.def
new file mode 100644
index 0000000..d47285d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/durStartTimeOfDay
+Response OnInputIdle () id:Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle
+{
+ #keys: '[415136.0.647401491]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnInputIdle'
+ QuillAction
+ {
+ Body:
+ [*
+ // If not AllDay, adjust the EndTimeOfDay accordingly.
+ //if( not ckbIsAllDay.Checked() )
+ //{
+ // delta := this.Duration() - dhStartTimeOfDay.Data();
+ //
+ // if( delta <> Duration::Zero() )
+ // {
+ // endTimeOfDay := durEndTimeOfDay.Duration() + delta;
+ //
+ // // Also adjust dsEndDate if necessary.
+ // dsEndDate.Date( dsEndDate.Date() + endTimeOfDay.Days() );
+ // durEndTimeOfDay.Duration( endTimeOfDay - Duration::Days( endTimeOfDay.Days() ) );
+ //
+ // // Update the 'memory' for later delta-calculation, and/or setting the time back when AllDay is turned off.
+ // dhStartTimeOfDay.Data( this.Duration() );
+ // }
+ //}
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnSelectionChanged.def
new file mode 100644
index 0000000..e04e4a0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_lstSubscribers_537_OnSelectionChanged.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: lstSubscribers_537
+Response OnSelectionChanged (
+ LibCal_Calendar selection
+) id:Response_lstSubscribers_537_OnSelectionChanged
+{
+ #keys: '[415136.0.647401559]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ // Initialize the list by setting the checkmark for the subscribing calendars when this has not been done before.
+ // This should only be done when OnSelectionChanged is executed for the first time.
+ if( lblIsInitialized.Text() = "false" )
+ {
+ // Get the calendars of the subscriptions.
+ calendars := selectset( dhEvent.Data(), LeadingParticipation.Subscription.Calendar, calendar, true, true ).Unique();
+
+ traverse( calendars, Elements, subscriber )
+ {
+ lstSubscribers.ExtendCheckByKey( subscriber.Key() );
+ }
+
+ // Register that the list has been initialized.
+ lblIsInitialized.Text( "true" );
+ }
+ *]
+ 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
new file mode 100644
index 0000000..4ea94e7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_pnlDuration_119_dhDuration_OnDataChanged.def
@@ -0,0 +1,16 @@
+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
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/_ROOT_Component_LibCal_dlgMultipleEvent.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/_ROOT_Component_LibCal_dlgMultipleEvent.def
new file mode 100644
index 0000000..7e65204
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/_ROOT_Component_LibCal_dlgMultipleEvent.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent LibCal_dlgMultipleEvent
+{
+ #keys: '[415136.0.645501432]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ Component dhEvent id:dhEvent_957
+ {
+ #keys: '[415136.0.645530811]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'shadow[LibCal_Event]*'
+ Properties:
+ [
+ Taborder: 0
+ ]
+ }
+ Component dhLeadingParticipation id:dhLeadingParticipation_384
+ {
+ #keys: '[415136.0.646701431]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'shadow[LibCal_LeadingParticipation]*'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ #child: PanelContent
+ ]
+ Properties:
+ [
+ Title: 'Multiple event'
+ Tooltip: 'Multiple event'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_cmEventCategories.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_cmEventCategories.def
new file mode 100644
index 0000000..197356b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_cmEventCategories.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+Component cmEventCategories #extension
+{
+ Children:
+ [
+ Component MenuCreateMultipleEvents
+ {
+ #keys: '[415136.0.645500589]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'CALENDAR'
+ Taborder: 5
+ Title: 'Create multiple events'
+ Tooltip: 'Create multiple events'
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_lstEventCategories.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_lstEventCategories.def
new file mode 100644
index 0000000..4ce044f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_lstEventCategories.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component lstEventCategories #extension
+{
+ Children:
+ [
+ Component dslEventCategories #extension
+ {
+ Children:
+ [
+ #child: cmEventCategories
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_pnlEventCategories.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_pnlEventCategories.def
new file mode 100644
index 0000000..a8341fb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Component_pnlEventCategories.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component pnlEventCategories #extension
+{
+ Children:
+ [
+ #child: lstEventCategories
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Response_MacroPlanner_lstEventCategories_MenuCreateMultipleEvents_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Response_MacroPlanner_lstEventCategories_MenuCreateMultipleEvents_OnClick.def
new file mode 100644
index 0000000..32f7b6e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/Response_MacroPlanner_lstEventCategories_MenuCreateMultipleEvents_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: lstEventCategories
+Response OnClick (
+ LibCal_EventCategory selection
+) id:Response_lstEventCategories_MenuCreateMultipleEvents_OnClick
+{
+ #keys: '[415136.0.647763266]'
+ CanBindMultiple: false
+ DefinitionID => /lstEventCategories/Responsedef_lstEventCategories_WebMenu_OnClick
+ Initiator: 'MenuCreateMultipleEvents'
+ QuillAction
+ {
+ Body:
+ [*
+ LibCal_GlobalState.CreateMultipleEvent( dhCalendar.Data(), selection );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/_ROOT_Component_LibCal_frmCommonCalendar.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/_ROOT_Component_LibCal_frmCommonCalendar.def
new file mode 100644
index 0000000..2544900
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_frmCommonCalendar/_ROOT_Component_LibCal_frmCommonCalendar.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: CalendarsWebUI
+OrphanComponent LibCal_frmCommonCalendar #extension
+{
+ Children:
+ [
+ #child: pnlEventCategories
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_CalendarsWebUI.qp b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_CalendarsWebUI.qp
new file mode 100644
index 0000000..ff9fe86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_CalendarsWebUI.qp
@@ -0,0 +1,5 @@
+Quintiq file version 2.0
+#parent: #root
+Project id:CalendarsWebUI #extension
+{
+}
--
Gitblit v1.9.3