in Tools/Core/Microsoft.PowerApps.Tools.AppChangeManager/ChangeManager.cs [145:219]
private List<ModifiedResult> GetModifiedScreens(List<Entity> entityList)
{
var result = new List<ModifiedResult>();
var appInfo = entityList?
.Where(r => r.Template?.Name == Constants.ControlType.AppInfo)
.Select(r => r).FirstOrDefault();
var changedControl = new ChangedControl
{
ControlName = appInfo?.Name,
Script = new List<ExtendedScript>()
};
appInfo?.Rules?.ForEach(
r =>
{
changedControl.Script.Add(
new ExtendedScript
{
Property = r.Property,
InvariantScript = r.InvariantScript
});
});
if (changedControl.Script.Count > 0)
{
result.Add(new ModifiedResult
{
ScreenName = appInfo.Name,
ControlList = new List<ChangedControl> { changedControl }
});
}
var screenDefault = defaultEntities.FirstOrDefault(e => e.Template != null && e.Template.Name == "screen");
var screens = entityList?
.Where(r => r.Template?.Name == Constants.ControlType.Screen)
.Select(r => r);
foreach (var screen in screens)
{
var modifiedResult = new ModifiedResult
{
ScreenName = screen.Name,
ControlList = new List<ChangedControl>()
};
List<ExtendedScript> modifiedScreen = VerifyScreenProperty(screen, screenDefault);
if (modifiedScreen.Count > 0)
{
modifiedResult.ControlList.Add(
new ChangedControl
{
ControlName = screen.Name,
Parent = screen.Name,
Script = modifiedScreen
});
}
var controlChange = GetModifiedControle(screen);
if (controlChange?.Count > 0)
{
modifiedResult.ControlList.AddRange(controlChange);
}
if (modifiedResult.ControlList.Count > 0)
{
result.Add(modifiedResult);
}
}
return result;
}