lazhen
2024-07-23 180d8d74c2a67a693047e1a587007c734e4f62fb
日历不可用事件添加查询按钮
已修改7个文件
已添加2个文件
已删除1个文件
227 ■■■■■ 文件已修改
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_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 );
      
    xmlTable := xmlDoc.CreateElement( "table" );
    xmlTableName := xmlDoc.CreateElement( "name" );
    xmlTableName.TextContent( table.Name() );
    xmlTable.AppendChild( xmlTableName );
    //产线
    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 );
      
    traverse ( table, LibCal_SubscriberEventColumn, column ) {
      xmlColumn := xmlDoc.CreateElement( "column" );
      xmlColumnName := xmlDoc.CreateElement( "name" );
    tableElement.AppendChild( subscribercolumnelement );
    tableElement.AppendChild( eventcolumnelement );
    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 );
      cells := selectsortedset( column, LibCal_SubscriberEventCell, cell, rows.Find( cell.LibCal_SubscriberEventRow() ) > -1, cell.LibCal_SubscriberEventRow().RowNr() );
      traverse ( cells, Elements, c ) {
      if( column.Index() = 0 ){
        xmlColumnName.TextContent( '产线' );
      }else if(column.Index() = 1 ){
        xmlColumnName.TextContent( '事件' );
      }else{
        xmlColumnName.TextContent( column.Name() );
          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( 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" );
        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() );
        cellElement := xmlDOM.CreateElement( "cell" );
        cellElement.SetAttribute( "value", c.Value() );
        columnelement.AppendChild( cellElement );
        }
        xmlColumn.AppendChild( xmlCell );
      tableElement.AppendChild( columnelement );
      }
        
      xmlTable.AppendChild( xmlColumn );
    }
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
      
    xmlDoc.AppendChild( xmlTable );
    xmlStr := xmlSeri.WriteToString( xmlDoc );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlStr ) );
    //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