Page 1542 WF Event/Event Comb. Matrix, source in 29

Source29

src/Layers/W1/BaseApp/System/Workflow/WFEventEventCombMatrix.Page.al279 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.Automation;

page 1542 "WF Event/Event Comb. Matrix"
{
    Caption = 'WF Event/Event Comb. Matrix';
    DeleteAllowed = false;
    InsertAllowed = false;
    ModifyAllowed = false;
    PageType = ListPart;
    ShowFilter = false;
    SourceTable = "Workflow Event";

    layout
    {
        area(content)
        {
            repeater(Group)
            {
                FreezeColumn = Description;
                field(Description; Rec.Description)
                {
                    ApplicationArea = Suite;
                    Caption = 'Preceding Event';
                    ToolTip = 'Specifies the workflow event that comes before the workflow event in the workflow sequence.';
                }
                field(Cell1; MATRIX_CellData[1])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[1];
                    Visible = Field1Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(1);
                    end;
                }
                field(Cell2; MATRIX_CellData[2])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[2];
                    Visible = Field2Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(2);
                    end;
                }
                field(Cell3; MATRIX_CellData[3])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[3];
                    Visible = Field3Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(3);
                    end;
                }
                field(Cell4; MATRIX_CellData[4])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[4];
                    Visible = Field4Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(4);
                    end;
                }
                field(Cell5; MATRIX_CellData[5])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[5];
                    Visible = Field5Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(5);
                    end;
                }
                field(Cell6; MATRIX_CellData[6])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[6];
                    Visible = Field6Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(6);
                    end;
                }
                field(Cell7; MATRIX_CellData[7])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[7];
                    Visible = Field7Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(7);
                    end;
                }
                field(Cell8; MATRIX_CellData[8])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[8];
                    Visible = Field8Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(8);
                    end;
                }
                field(Cell9; MATRIX_CellData[9])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[9];
                    Visible = Field9Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(9);
                    end;
                }
                field(Cell10; MATRIX_CellData[10])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[10];
                    Visible = Field10Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(10);
                    end;
                }
                field(Cell11; MATRIX_CellData[11])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[11];
                    Visible = Field11Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(11);
                    end;
                }
                field(Cell12; MATRIX_CellData[12])
                {
                    ApplicationArea = All;
                    CaptionClass = '3,' + MATRIX_Caption[12];
                    Visible = Field12Visible;

                    trigger OnValidate()
                    begin
                        UpdateMatrixData(12);
                    end;
                }
            }
        }
    }

    actions
    {
    }

    trigger OnAfterGetCurrRecord()
    begin
        PopulateMatrix();
    end;

    trigger OnAfterGetRecord()
    begin
        PopulateMatrix();
    end;

    trigger OnOpenPage()
    begin
        Field1Visible := true;
        Field2Visible := true;
        Field3Visible := true;
        Field4Visible := true;
        Field5Visible := true;
        Field6Visible := true;
        Field7Visible := true;
        Field8Visible := true;
        Field9Visible := true;
        Field10Visible := true;
        Field11Visible := true;
        Field12Visible := true;
    end;

    var
        WorkflowEventHandling: Codeunit "Workflow Event Handling";
        MATRIX_Caption: array[12] of Text;
        MATRIX_CellData: array[12] of Boolean;
        MATRIX_ColumnCount: Integer;
        Field1Visible: Boolean;
        Field2Visible: Boolean;
        Field3Visible: Boolean;
        Field4Visible: Boolean;
        Field5Visible: Boolean;
        Field6Visible: Boolean;
        Field7Visible: Boolean;
        Field8Visible: Boolean;
        Field9Visible: Boolean;
        Field10Visible: Boolean;
        Field11Visible: Boolean;
        Field12Visible: Boolean;

    procedure SetMatrixColumns(ColumnCaptions: array[12] of Text; ColumnSetLength: Integer)
    var
        i: Integer;
    begin
        for i := 1 to ArrayLen(ColumnCaptions) do
            MATRIX_Caption[i] := ColumnCaptions[i];

        MATRIX_ColumnCount := ColumnSetLength;

        ShowHideColumns();
    end;

    procedure ShowHideColumns()
    begin
        Field1Visible := MATRIX_ColumnCount >= 1;
        Field2Visible := MATRIX_ColumnCount >= 2;
        Field3Visible := MATRIX_ColumnCount >= 3;
        Field4Visible := MATRIX_ColumnCount >= 4;
        Field5Visible := MATRIX_ColumnCount >= 5;
        Field6Visible := MATRIX_ColumnCount >= 6;
        Field7Visible := MATRIX_ColumnCount >= 7;
        Field8Visible := MATRIX_ColumnCount >= 8;
        Field9Visible := MATRIX_ColumnCount >= 9;
        Field10Visible := MATRIX_ColumnCount >= 10;
        Field11Visible := MATRIX_ColumnCount >= 11;
        Field12Visible := MATRIX_ColumnCount >= 12;
    end;

    local procedure PopulateMatrix()
    var
        WFEventResponseCombination: Record "WF Event/Response Combination";
        WorkflowEvent: Record "Workflow Event";
        i: Integer;
    begin
        for i := 1 to ArrayLen(MATRIX_Caption) do begin
            WorkflowEvent.SetRange(Description, MATRIX_Caption[i]);
            if WorkflowEvent.FindFirst() then
                if WFEventResponseCombination.Get(WFEventResponseCombination.Type::"Event", WorkflowEvent."Function Name",
                     WFEventResponseCombination."Predecessor Type"::"Event", Rec."Function Name") or (not WorkflowEvent.HasPredecessors())
                then
                    MATRIX_CellData[i] := true
                else
                    MATRIX_CellData[i] := false;
        end;
    end;

    local procedure UpdateMatrixData(ColumnNo: Integer)
    var
        WorkflowEvent: Record "Workflow Event";
        WFEventResponseCombination: Record "WF Event/Response Combination";
    begin
        WorkflowEvent.SetRange(Description, MATRIX_Caption[ColumnNo]);
        WorkflowEvent.FindFirst();

        if MATRIX_CellData[ColumnNo] then begin
            WorkflowEventHandling.AddEventPredecessor(WorkflowEvent."Function Name", Rec."Function Name");
            WorkflowEvent.MakeIndependent();
        end else begin
            if not WorkflowEvent.HasPredecessors() then
                WorkflowEvent.MakeDependentOnAllEvents();

            if WFEventResponseCombination.Get(WFEventResponseCombination.Type::"Event", WorkflowEvent."Function Name",
                 WFEventResponseCombination."Predecessor Type"::"Event", Rec."Function Name")
            then
                WFEventResponseCombination.Delete();
        end;
    end;
}