| | |
| | | |
| | | return &subscribers; |
| | | *] |
| | | InterfaceProperties { Accessibility: 'Module' } |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | Component ActionBarGroupDataViews #extension |
| | | { |
| | | Children: |
| | | [ |
| | | Component ButtonCapacities #extension |
| | | { |
| | | Children: |
| | | [ |
| | | #child: ContextMenuCapacities |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | |
| | | Children: |
| | | [ |
| | | #child: ActionBarGroupImportExportData |
| | | #child: ActionBarGroupDataViews |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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' |
| | | ] |
| | | } |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | #root |
| | | #parent: CalendarsWebUI |
| | | OrphanComponent LibCal_GlobalState #extension |
| | | { |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | Component PanelContent |
| | | { |
| | | #keys: '[415136.0.647401424]' |
| | | BaseType: 'WebPanel' |
| | | Children: |
| | | [ |
| | | #child: Panelleft_582 |
| | | #child: pnlSubscribers |
| | | ] |
| | | Properties: |
| | | [ |
| | | Orientation: 'horizontal' |
| | | Taborder: 2 |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | Component abpListSubscribers id:abpListSubscribers_1 |
| | | { |
| | | #keys: '[415136.0.647401568]' |
| | | BaseType: 'listActionBarPage' |
| | | Properties: |
| | | [ |
| | | Taborder: 2 |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | Component cmSubscribers id:cmSubscribers_1 |
| | | { |
| | | #keys: '[415136.0.647401567]' |
| | | BaseType: 'listContextMenu' |
| | | Properties: |
| | | [ |
| | | Taborder: 0 |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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()' |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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' |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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" ); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
对比新文件 |
| | |
| | | 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; |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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; |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | } |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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() |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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() ); |
| | | } |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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(); |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 ); |
| | | } |
| | | *] |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | 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' |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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' |
| | | ] |
| | | } |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | Component lstEventCategories #extension |
| | | { |
| | | Children: |
| | | [ |
| | | Component dslEventCategories #extension |
| | | { |
| | | Children: |
| | | [ |
| | | #child: cmEventCategories |
| | | ] |
| | | } |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | Component pnlEventCategories #extension |
| | | { |
| | | Children: |
| | | [ |
| | | #child: lstEventCategories |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | 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 |
| | | } |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | #root |
| | | #parent: CalendarsWebUI |
| | | OrphanComponent LibCal_frmCommonCalendar #extension |
| | | { |
| | | Children: |
| | | [ |
| | | #child: pnlEventCategories |
| | | ] |
| | | } |
对比新文件 |
| | |
| | | Quintiq file version 2.0 |
| | | #parent: #root |
| | | Project id:CalendarsWebUI #extension |
| | | { |
| | | } |