Page 9858 Security Group Members Chart
- App
- Base Application
- Namespace
- System.Security.AccessControl
- Versions
- 22-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/System/SecurityGroups/SecurityGroupMembersChart.Page.al109 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.Security.AccessControl;
using System.Integration;
using System.Visualization;
page 9858 "Security Group Members Chart"
{
Caption = 'Users in Security Groups';
PageType = CardPart;
layout
{
area(content)
{
usercontrol(BusinessChart; BusinessChart)
{
ApplicationArea = Basic, Suite;
trigger DataPointClicked(Point: JsonObject)
var
SecurityGroupMemberBuffer: Record "Security Group Member Buffer";
SecurityGroup: Codeunit "Security Group";
begin
SecurityGroup.GetMembers(SecurityGroupMemberBuffer);
SecurityGroupMemberBuffer.SetRange("Security Group Code", GetSecurityGroupCode(Point));
if not SecurityGroupMemberBuffer.FindFirst() then
exit;
Page.RunModal(Page::"Security Group Members", SecurityGroupMemberBuffer);
CurrPage.Update(); // refresh the charts with the eventual changes
end;
trigger AddInReady()
begin
IsChartAddInReady := true;
UpdateData();
end;
trigger Refresh()
begin
UpdateData();
end;
}
}
}
trigger OnFindRecord(Which: Text): Boolean
begin
UpdateData();
end;
var
BusinessChart: Codeunit "Business Chart";
IsChartAddInReady: Boolean;
UsersTxt: Label 'Users';
SecurityGroupTxt: Label 'Security Group';
XValueStringTok: Label 'XValueString', Locked = true;
local procedure GetSecurityGroupCode(Point: JsonObject): Text[249]
var
Token: JsonToken;
XValueString: Text[249];
begin
Point.Get(XValueStringTok, Token);
XValueString := CopyStr(Token.AsValue().AsText(), 1, 249);
exit(XValueString);
end;
local procedure UpdateData()
begin
if not IsChartAddInReady then
exit;
UpdateData(CurrPage.BusinessChart);
end;
local procedure UpdateData(BusinessChartAddIn: ControlAddIn BusinessChart)
var
SecurityGroupMemberBuffer: Record "Security Group Member Buffer";
SecurityGroupBuffer: Record "Security Group Buffer";
SecurityGroup: Codeunit "Security Group";
Index: Integer;
ChartLabels: List of [Text];
ChartValues: List of [Integer];
begin
BusinessChart.Initialize();
BusinessChart.AddMeasure(UsersTxt, 1, Enum::"Business Chart Data Type"::Integer, Enum::"Business Chart Type"::Column);
BusinessChart.SetXDimension(SecurityGroupTxt, Enum::"Business Chart Data Type"::String);
SecurityGroup.GetGroups(SecurityGroupBuffer);
SecurityGroup.GetMembers(SecurityGroupMemberBuffer);
if SecurityGroupBuffer.FindSet() then
repeat
SecurityGroupMemberBuffer.SetRange("Security Group Code", SecurityGroupBuffer.Code);
ChartLabels.Add(SecurityGroupBuffer.Code);
ChartValues.Add(SecurityGroupMemberBuffer.Count());
until SecurityGroupBuffer.Next() = 0;
for Index := 1 to ChartLabels.Count() do begin
BusinessChart.AddDataRowWithXDimension(ChartLabels.Get(Index));
BusinessChart.SetValue(0, Index - 1, ChartValues.Get(Index));
end;
BusinessChart.Update(BusinessChartAddIn);
end;
}