in Tools/Core/Microsoft.PowerApps.Tools.AppChangeManager/ChangeManager.cs [74:143]
private List<ExtendedScript> VerifyControlProperty(Entity child)
{
//var controlEntities = defaultEntities.Where(e => e.Type == "ControlInfo" && e.Template != null && e.Template.Name != "screen" && e.Template.Name != "appinfo").ToList();
var controlEntities = defaultEntities.FirstOrDefault(e => e.Template != null && e.Template.Name == "screen").Children;
var defaultSetting = controlEntities.Find(r => r.Template?.Name == child.Template?.Name);
var result = new List<ExtendedScript>();
if (defaultSetting == null)
return result;
var serializedDefaultSetting = JsonConvert.SerializeObject(defaultSetting);
serializedDefaultSetting = serializedDefaultSetting.Replace("{ControlName}.", $"{child.Name}.");
defaultSetting = JsonConvert.DeserializeObject<Entity>(serializedDefaultSetting);
var designProperty = child.Rules?
.Where(r => r.Category == Constants.PropertyCategory.Design
&& !ExecludedControlProperty.Contains(r.Property))
.Select(r => r);
var behaviorProperty = child.Rules?
.Where(r => r.Category == Constants.PropertyCategory.Behavior)
.Select(r => r);
var dataProperty = child.Rules?
.Where(r => r.Category == Constants.PropertyCategory.Data)
.Select(r => r);
foreach (var property in designProperty)
{
var propValue = defaultSetting.Rules.ToList().Find(r => r.Property == property.Property);
if (!property.InvariantScript.Trim().ToUpper()
.Equals(propValue?.InvariantScript.Trim().ToUpper()))
{
result.Add(new ExtendedScript
{
Property = property.Property,
InvariantScript = property.InvariantScript,
DefaultSetting = propValue?.InvariantScript
});
}
}
foreach (var property in behaviorProperty)
{
if (!string.IsNullOrWhiteSpace(property.InvariantScript))
{
result.Add(new ExtendedScript
{
Property = property.Property,
InvariantScript = property.InvariantScript
});
}
}
foreach (var property in dataProperty)
{
if (!string.IsNullOrWhiteSpace(property.InvariantScript))
{
result.Add(new ExtendedScript
{
Property = property.Property,
InvariantScript = property.InvariantScript
});
}
}
return result;
}