_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl
@@ -1,66 +1,79 @@ Quintiq file version 2.0 #parent: #root StaticMethod Export ( LibCal_SubscriberEventTable table LibCal_SubscriberEventColumns columns, LibCal_SubscriberEventRows rows ) as BinaryValue { TextBody: [* // çå °é¸½ May-30-2024 (created) // lihongji Jun-8-2023 (created) returnBinaryData := BinaryData::Construct(); tableGroupHandle := TableGroupHandle::Create( "" ); xmlDOMI := XMLDOMImplementation::Create(); xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + LibCal_SubscriberEventTable::GetDefaultName() + '</name></table>' ); xmlImpl := XMLDOMImplementation::Create(); xmlDoc := xmlImpl.CreateDocument(); xmlSeri := xmlImpl.CreateSerializer(); tableElement := xmlDOM.GetElementByTagName( "table", 0 ); //产线 subscribercolumnelement := xmlDOM.CreateElement( "column" ); subscribernameelement := xmlDOM.CreateElement( "name" ); subscribertypeelement := xmlDOM.CreateElement( "type" ); subscribernameelement.TextContent( '产线' ); subscribertypeelement.TextContent( "String" ); subscribercolumnelement.AppendChild( subscribernameelement ); subscribercolumnelement.AppendChild( subscribertypeelement ); //äºä»¶ eventcolumnelement := xmlDOM.CreateElement( "column" ); eventnameelement := xmlDOM.CreateElement( "name" ); eventtypeelement := xmlDOM.CreateElement( "type" ); eventnameelement.TextContent( 'äºä»¶' ); eventtypeelement.TextContent( "String" ); eventcolumnelement.AppendChild( eventnameelement ); eventcolumnelement.AppendChild( eventtypeelement ); tableElement.AppendChild( subscribercolumnelement ); tableElement.AppendChild( eventcolumnelement ); xmlTable := xmlDoc.CreateElement( "table" ); xmlTableName := xmlDoc.CreateElement( "name" ); xmlTableName.TextContent( table.Name() ); xmlTable.AppendChild( xmlTableName ); traverse ( columns, Elements, column ) { columnelement := xmlDOM.CreateElement( "column" ); nameelement := xmlDOM.CreateElement( "name" ); typeelement := xmlDOM.CreateElement( "type" ); nameelement.TextContent( column.Name() ); typeelement.TextContent( "String" ); columnelement.AppendChild( nameelement ); columnelement.AppendChild( typeelement ); traverse ( table, LibCal_SubscriberEventColumn, column ) { xmlColumn := xmlDoc.CreateElement( "column" ); xmlColumnName := xmlDoc.CreateElement( "name" ); if( column.Index() = 0 ){ xmlColumnName.TextContent( '产线' ); }else if(column.Index() = 1 ){ xmlColumnName.TextContent( 'äºä»¶' ); }else{ xmlColumnName.TextContent( column.Name() ); } xmlColumn.AppendChild( xmlColumnName ); xmlColumnType := xmlDoc.CreateElement( "type" ); xmlColumnType.TextContent( "String" ); xmlColumn.AppendChild( xmlColumnType ); rowTotal := table.LibCal_SubscriberEventRow( relsize ); for ( i := 0; i < rowTotal; i++ ) { cell := select( column, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow().RowNr() = i ); row := cell.LibCal_SubscriberEventRow(); xmlCell := xmlDoc.CreateElement( "cell" ); cells := selectsortedset( column, LibCal_SubscriberEventCell, cell, rows.Find( cell.LibCal_SubscriberEventRow() ) > -1, cell.LibCal_SubscriberEventRow().RowNr() ); traverse ( cells, Elements, c ) { if( column.Index() = 0 ){ xmlCell.SetAttribute( "value", row.Subscriber() ); }else if(column.Index() = 1 ){ xmlCell.SetAttribute( "value", row.Event() ); }else{ xmlCell.SetAttribute( "value", cell.Value() ); row := c.LibCal_SubscriberEventRow(); //subscriber subscribercellElement := xmlDOM.CreateElement( "cell" ); subscribercellElement.SetAttribute( "value", row.Subscriber() ); subscribercolumnelement.AppendChild( subscribercellElement ); //event eventcellElement := xmlDOM.CreateElement( "cell" ); eventcellElement.SetAttribute( "value", row.Event() ); eventcolumnelement.AppendChild( eventcellElement ); } xmlColumn.AppendChild( xmlCell ); cellElement := xmlDOM.CreateElement( "cell" ); cellElement.SetAttribute( "value", c.Value() ); columnelement.AppendChild( cellElement ); } xmlTable.AppendChild( xmlColumn ); tableElement.AppendChild( columnelement ); } xmlDoc.AppendChild( xmlTable ); xmlStr := xmlSeri.WriteToString( xmlDoc ); tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlStr ) ); xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM ) //info( xmlString ); tableGroupHandle := TableGroupHandle::Create( LibCal_SubscriberEventTable::GetDefaultName() ); tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); tableGroupHandle.Add( tableHandle ); //} returnBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); return returnBinaryData.AsBinaryValue(); return binaryData.AsBinaryValue(); *] } _Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ Quintiq file version 2.0 #parent: #root StaticMethod GetDefaultName () as String { TextBody: [* // çå °é¸½ Jul-23-2024 (created) return 'Calendar unavailable event'; *] } _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def
@@ -17,10 +17,10 @@ BaseType: 'WebDataExtractor' Properties: [ DataType: 'LibCal_SubscriberEventTable' Source: 'dhTable' DataType: 'structured[LibCal_SubscriberEventColumn]' Source: 'dhColumns' Taborder: 0 Transformation: 'LibCal_SubscriberEventColumn.LibCal_SubscriberEventCell' Transformation: 'Elements.LibCal_SubscriberEventCell' ] } ] @@ -44,12 +44,10 @@ BaseType: 'WebDataExtractor' Properties: [ DataType: 'LibCal_SubscriberEventTable' FilterArguments: 'subscribers:dhSubscribers;eventtypes:dhEventTypes' FixedFilter: 'object.FilterBySubscriberAndEventType( subscribers, eventtypes )' Source: 'dhTable' DataType: 'structured[LibCal_SubscriberEventRow]' Source: 'dhRows' Taborder: 0 Transformation: 'LibCal_SubscriberEventRow' Transformation: 'Elements' ] } ] @@ -72,13 +70,11 @@ BaseType: 'WebDataExtractor' Properties: [ DataType: 'LibCal_SubscriberEventTable' DataType: 'structured[LibCal_SubscriberEventColumn]' Description: 'object.FilterByDatePeriod( Date::MinDate(), Date::MaxDate() )' FilterArguments: 'period:dhDate' FixedFilter: 'object.FilterByDatePeriod( period.Start(), period.End() )' Source: 'dhTable' Source: 'dhColumns' Taborder: 0 Transformation: 'LibCal_SubscriberEventColumn' Transformation: 'Elements' ] } ] @@ -110,6 +106,6 @@ Columns: 'MatrixEditorTableColumns' ContextMenu: 'matrixeditorContextMenuTable' Rows: 'MatrixEditorTableRows' Taborder: 1 Taborder: 2 ] } _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def
@@ -12,7 +12,7 @@ Properties: [ Image: 'EXPORT1' Taborder: 0 Taborder: 1 ] } Component ButtonInitialize @@ -22,7 +22,17 @@ Properties: [ Image: 'ARROW_CIRCLE' Taborder: 1 Taborder: 2 ] } Component ButtonSearch { #keys: '[415136.0.922435407]' BaseType: 'WebButton' Properties: [ Label: 'Search' Taborder: 0 ] } ] _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def
@@ -6,14 +6,24 @@ Children: [ #child: MatrixEditorTable Component dhTable Component dhColumns { #keys: '[415136.0.672310139]' BaseType: 'WebDataHolder' Databinding: 'LibCal_SubscriberEventTable' Databinding: 'structured[LibCal_SubscriberEventColumn]*' Properties: [ Description: '表' Taborder: 1 ] } Component dhRows { #keys: '[415136.0.922436014]' BaseType: 'WebDataHolder' Databinding: 'structured[LibCal_SubscriberEventRow]*' Properties: [ Taborder: 0 ] } _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def
@@ -11,6 +11,16 @@ [* this.InitializeSubscribers(); columns := construct( LibCal_SubscriberEventColumns ); rows := construct( LibCal_SubscriberEventRows ); traverse( dhCalendar.Data(), LibCal_SubscriberEventTable, table, table.ID() = RadioButtonGroupUseForPlanning.BoundValue() ){ columns := selectset( table, LibCal_SubscriberEventColumn, column, true ); rows := selectset( table, LibCal_SubscriberEventRow, row, true ); } dhColumns.Data( &columns ); dhRows.Data( &rows ); *] GroupServerCalls: false } _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def
@@ -9,9 +9,9 @@ { Body: [* binaryValue := LibCal_SubscriberEventTable::Export( dhTable.Data() ); binaryValue := LibCal_SubscriberEventTable::Export( dhColumns.Data(), dhRows.Data() ); Application.Download( "Unavailable events.xlsx", binaryValue.AsBinaryData() ); Application.Download( LibCal_SubscriberEventTable::GetDefaultName() + ".xlsx", binaryValue.AsBinaryData() ); *] GroupServerCalls: false } _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ Quintiq file version 2.0 #parent: PanelExport/ButtonSearch Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick { #keys: '[415136.0.922435443]' CanBindMultiple: false DefinitionID: 'Responsedef_WebButton_OnClick' QuillAction { Body: [* columns := construct( LibCal_SubscriberEventColumns ); rows := construct( LibCal_SubscriberEventRows ); subscribers := dhSubscribers.Data(); eventtypes := dhEventTypes.Data(); date := dhDate.Data(); traverse( dhCalendar.Data(), LibCal_SubscriberEventTable, table, table.ID() = RadioButtonGroupUseForPlanning.BoundValue() ){ columns := selectset( table, LibCal_SubscriberEventColumn, column, column.FilterByDatePeriod( date.Start(), date.End() ) ); rows := selectset( table, LibCal_SubscriberEventRow, row, row.FilterBySubscriberAndEventType( subscribers, eventtypes ) ); } dhColumns.Data( &columns ); dhRows.Data( &rows ); *] GroupServerCalls: false } } _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def
ÎļþÒÑɾ³ý _Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw
@@ -107,10 +107,10 @@ FormCalendarUnavailableEvent_MatrixEditorTable { gridColor: '#c4c4c4' totalHeaderWidth: 37 totalHeaderWidth: 231 attributeHeaderWidthRatio: 0.6 nameHeaderWidthRatio: 0.4 columnWidth: 238 columnWidth: 74 horizontalGrid: true verticalGrid: true backendState