Page 5376 Synthetic Relations, source in 29
Source29
src/Layers/W1/BaseApp/Integration/Dataverse/SyntheticRelations.Page.al149 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Integration.Dataverse;
using System.Telemetry;
page 5376 "Synthetic Relations"
{
PageType = List;
Editable = false;
InsertAllowed = false;
DeleteAllowed = false;
SourceTableTemporary = true;
SourceTable = "Synth. Relation Mapping Buffer";
UsageCategory = Lists;
layout
{
area(Content)
{
repeater(Relations)
{
field("Synth. Relation Name"; Rec."Synth. Relation Name")
{
ApplicationArea = Suite;
Caption = 'Name';
ToolTip = 'Specifies the name of the relation.';
DrillDown = true;
trigger OnDrillDown()
var
SyntheticRelationDetails: Page "Synthetic Relation Details";
begin
SyntheticRelationDetails.SetRelation(Rec);
SyntheticRelationDetails.Run();
end;
}
field("Rel. Native Entity Name"; Rec."Rel. Native Entity Name")
{
ApplicationArea = Suite;
Caption = 'Synchronized table';
ToolTip = 'Specifies the name of the synchronized table in the relation.';
}
field("Rel. Virtual Entity Name"; Rec."Rel. Virtual Entity Name")
{
ApplicationArea = Suite;
Caption = 'Virtual table';
ToolTip = 'Specifies the name of the virtual table in the relation.';
}
}
}
}
actions
{
area(Navigation)
{
action("Manage in Dataverse")
{
ApplicationArea = Suite;
ToolTip = 'Manage configuration settings for synthetic relations in your Dataverse environment.';
Caption = 'Manage in Dataverse';
Image = Setup;
trigger OnAction()
begin
CDSIntegrationImpl.ShowSyntheticRelationsConfig();
end;
}
}
area(Processing)
{
action(NewRelation)
{
ApplicationArea = Suite;
ToolTip = 'Create a new synthetic relation.';
Caption = 'New';
Image = New;
trigger OnAction()
var
NewSyntheticRelationWiz: Page "New Synthetic Relation Wiz.";
begin
NewSyntheticRelationWiz.SetExistingBCTableRelations(Rec);
NewSyntheticRelationWiz.Run();
end;
}
action(RemoveRelation)
{
ApplicationArea = Suite;
ToolTip = 'Remove a synthetic relation.';
Caption = 'Remove';
Image = Delete;
Enabled = not SyntheticRelationsAreEmpty;
trigger OnAction()
begin
SyntheticRelations.DeleteSyntheticRelation(Rec);
LoadExistingBCTableRelations();
end;
}
action(Refresh)
{
ApplicationArea = Suite;
ToolTip = 'Refresh the loaded relations.';
Caption = 'Refresh';
Image = Refresh;
trigger OnAction()
begin
LoadExistingBCTableRelations();
end;
}
}
area(Promoted)
{
actionref(ManageinDataverse_Promoted; "Manage in Dataverse")
{
}
actionref(NewRelation_Promoted; NewRelation)
{
}
actionref(RemoveRelation_Promoted; RemoveRelation)
{
}
actionref(Refresh_Promoted; Refresh)
{
}
}
}
var
CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
SyntheticRelations: Codeunit "Synthetic Relations";
SyntheticRelationsAreEmpty: Boolean;
trigger OnOpenPage()
var
FeatureTelemetry: Codeunit "Feature Telemetry";
begin
FeatureTelemetry.LogUptake('0000MQ2', SyntheticRelations.GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Discovered);
LoadExistingBCTableRelations();
end;
local procedure LoadExistingBCTableRelations()
begin
SyntheticRelations.LoadExistingBCTableRelations(Rec);
Rec.Reset();
SyntheticRelationsAreEmpty := Rec.Count() = 0;
end;
}