diff --git a/PBIXInspectorLibrary/CustomRules/SetDifferenceRule.cs b/PBIXInspectorLibrary/CustomRules/SetDifferenceRule.cs new file mode 100644 index 0000000..5f2ad44 --- /dev/null +++ b/PBIXInspectorLibrary/CustomRules/SetDifferenceRule.cs @@ -0,0 +1,86 @@ +using Json.Logic; +using Json.More; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + + +namespace PBIXInspectorLibrary.CustomRules; + +/// +/// Handles the `diff` operation. +/// +[Operator("diff")] +[JsonConverter(typeof(SetDifferenceRuleJsonConverter))] +public class SetDifferenceRule : Json.Logic.Rule +{ + internal Json.Logic.Rule Set1 { get; } + internal Json.Logic.Rule Set2 { get; } + + public SetDifferenceRule(Json.Logic.Rule set1, Json.Logic.Rule set2) + { + Set1 = set1; + Set2 = set2; + } + + /// + /// Applies the rule to the input data. + /// + /// The input data. + /// + /// Optional secondary data. Used by a few operators to pass a secondary + /// data context to inner operators. + /// + /// The result of the rule. + public override JsonNode? Apply(JsonNode? data, JsonNode? contextData = null) + { + var set1 = Set1.Apply(data, contextData); + var set2 = Set2.Apply(data, contextData); + + if (set1 is not JsonArray || set2 is not JsonArray) + return new JsonArray(); + + var arr1 = (JsonArray)set1; + var arr2 = (JsonArray)set2; + + var difference = new JsonArray(); + + foreach (var item in arr1) + { + if (!arr2.Any(x => item.IsEquivalentTo(x))) + { + var copy = item.Copy(); + if (!difference.Any(x => x.IsEquivalentTo(copy))) + { + difference.Add(copy); + } + } + } + + return difference; + } +} + +internal class SetDifferenceRuleJsonConverter : JsonConverter +{ + public override SetDifferenceRule? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var parameters = JsonSerializer.Deserialize(ref reader, options); + + if (parameters is not { Length: 2 }) + throw new JsonException("The difference rule needs an array with 2 parameters."); + + return new SetDifferenceRule(parameters[0], parameters[1]); + } + + public override void Write(Utf8JsonWriter writer, SetDifferenceRule value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("difference"); + writer.WriteStartArray(); + writer.WriteRule(value.Set1, options); + writer.WriteRule(value.Set2, options); + writer.WriteEndArray(); + writer.WriteEndObject(); + } +} diff --git a/PBIXInspectorLibrary/CustomRules/SetEqualRule.cs b/PBIXInspectorLibrary/CustomRules/SetEqualRule.cs new file mode 100644 index 0000000..1f3c556 --- /dev/null +++ b/PBIXInspectorLibrary/CustomRules/SetEqualRule.cs @@ -0,0 +1,90 @@ +using Json.Logic; +using Json.More; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + + +namespace PBIXInspectorLibrary.CustomRules; + +/// +/// Handles the `equalsets` operation. +/// +[Operator("equalsets")] +[JsonConverter(typeof(SetEqualRuleJsonConverter))] +public class SetEqualRule : Json.Logic.Rule +{ + internal Json.Logic.Rule Set1 { get; } + internal Json.Logic.Rule Set2 { get; } + + public SetEqualRule(Json.Logic.Rule set1, Json.Logic.Rule set2) + { + Set1 = set1; + Set2 = set2; + } + + /// + /// Applies the rule to the input data. + /// + /// The input data. + /// + /// Optional secondary data. Used by a few operators to pass a secondary + /// data context to inner operators. + /// + /// The result of the rule. + public override JsonNode? Apply(JsonNode? data, JsonNode? contextData = null) + { + var set1 = Set1.Apply(data, contextData); + var set2 = Set2.Apply(data, contextData); + + if (set1 is not JsonArray || set2 is not JsonArray) + return new JsonArray(); + + var arr1 = (JsonArray)set1; + var arr2 = (JsonArray)set2; + + var symmetricDifference = new JsonArray(); + + foreach (var item in arr1) + { + if (!arr2.Any(x => item.IsEquivalentTo(x))) + { + return false; + } + } + + foreach (var item in arr2) + { + if (!arr1.Any(x => item.IsEquivalentTo(x))) + { + return false; + } + } + + return true; + } +} + +internal class SetEqualRuleJsonConverter : JsonConverter +{ + public override SetEqualRule? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var parameters = JsonSerializer.Deserialize(ref reader, options); + + if (parameters is not { Length: 2 }) + throw new JsonException("The symdiff rule needs an array with 2 parameters."); + + return new SetEqualRule(parameters[0], parameters[1]); + } + + public override void Write(Utf8JsonWriter writer, SetEqualRule value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("symdiff"); + writer.WriteStartArray(); + writer.WriteRule(value.Set1, options); + writer.WriteRule(value.Set2, options); + writer.WriteEndArray(); + writer.WriteEndObject(); + } +} diff --git a/PBIXInspectorLibrary/CustomRules/SetIntersectionRule.cs b/PBIXInspectorLibrary/CustomRules/SetIntersectionRule.cs new file mode 100644 index 0000000..b329297 --- /dev/null +++ b/PBIXInspectorLibrary/CustomRules/SetIntersectionRule.cs @@ -0,0 +1,86 @@ +using Json.Logic; +using Json.More; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + + +namespace PBIXInspectorLibrary.CustomRules; + +/// +/// Handles the `intersection` operation. +/// +[Operator("intersection")] +[JsonConverter(typeof(SetIntersectionRuleJsonConverter))] +public class SetIntersectionRule : Json.Logic.Rule +{ + internal Json.Logic.Rule Set1 { get; } + internal Json.Logic.Rule Set2 { get; } + + public SetIntersectionRule(Json.Logic.Rule set1, Json.Logic.Rule set2) + { + Set1 = set1; + Set2 = set2; + } + + /// + /// Applies the rule to the input data. + /// + /// The input data. + /// + /// Optional secondary data. Used by a few operators to pass a secondary + /// data context to inner operators. + /// + /// The result of the rule. + public override JsonNode? Apply(JsonNode? data, JsonNode? contextData = null) + { + var set1 = Set1.Apply(data, contextData); + var set2 = Set2.Apply(data, contextData); + + if (set1 is not JsonArray || set2 is not JsonArray) + return new JsonArray(); + + var arr1 = (JsonArray)set1; + var arr2 = (JsonArray)set2; + + var intersection = new JsonArray(); + + foreach (var item in arr1) + { + if (arr2.Any(x => item.IsEquivalentTo(x))) + { + var copy = item.Copy(); + if (!intersection.Any(x => x.IsEquivalentTo(copy))) + { + intersection.Add(copy); + } + } + } + + return intersection; + } +} + +internal class SetIntersectionRuleJsonConverter : JsonConverter +{ + public override SetIntersectionRule? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var parameters = JsonSerializer.Deserialize(ref reader, options); + + if (parameters is not { Length: 2 }) + throw new JsonException("The intersection rule needs an array with 2 parameters."); + + return new SetIntersectionRule(parameters[0], parameters[1]); + } + + public override void Write(Utf8JsonWriter writer, SetIntersectionRule value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("intersection"); + writer.WriteStartArray(); + writer.WriteRule(value.Set1, options); + writer.WriteRule(value.Set2, options); + writer.WriteEndArray(); + writer.WriteEndObject(); + } +} diff --git a/PBIXInspectorLibrary/CustomRules/SetSymmetricDifferenceRule.cs b/PBIXInspectorLibrary/CustomRules/SetSymmetricDifferenceRule.cs new file mode 100644 index 0000000..ea931c3 --- /dev/null +++ b/PBIXInspectorLibrary/CustomRules/SetSymmetricDifferenceRule.cs @@ -0,0 +1,98 @@ +using Json.Logic; +using Json.More; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + + +namespace PBIXInspectorLibrary.CustomRules; + +/// +/// Handles the `symdiff` operation. +/// +[Operator("symdiff")] +[JsonConverter(typeof(SetSymmetricDifferenceRuleJsonConverter))] +public class SetSymmetricDifferenceRule : Json.Logic.Rule +{ + internal Json.Logic.Rule Set1 { get; } + internal Json.Logic.Rule Set2 { get; } + + public SetSymmetricDifferenceRule(Json.Logic.Rule set1, Json.Logic.Rule set2) + { + Set1 = set1; + Set2 = set2; + } + + /// + /// Applies the rule to the input data. + /// + /// The input data. + /// + /// Optional secondary data. Used by a few operators to pass a secondary + /// data context to inner operators. + /// + /// The result of the rule. + public override JsonNode? Apply(JsonNode? data, JsonNode? contextData = null) + { + var set1 = Set1.Apply(data, contextData); + var set2 = Set2.Apply(data, contextData); + + if (set1 is not JsonArray || set2 is not JsonArray) + return new JsonArray(); + + var arr1 = (JsonArray)set1; + var arr2 = (JsonArray)set2; + + var symmetricDifference = new JsonArray(); + + foreach (var item in arr1) + { + if (!arr2.Any(x => item.IsEquivalentTo(x))) + { + var copy = item.Copy(); + if (!symmetricDifference.Any(x => x.IsEquivalentTo(copy))) + { + symmetricDifference.Add(copy); + } + } + } + + foreach (var item in arr2) + { + if (!arr1.Any(x => item.IsEquivalentTo(x))) + { + var copy = item.Copy(); + if (!symmetricDifference.Any(x => x.IsEquivalentTo(copy))) + { + symmetricDifference.Add(copy); + } + } + } + + return symmetricDifference; + } +} + +internal class SetSymmetricDifferenceRuleJsonConverter : JsonConverter +{ + public override SetSymmetricDifferenceRule? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var parameters = JsonSerializer.Deserialize(ref reader, options); + + if (parameters is not { Length: 2 }) + throw new JsonException("The symdiff rule needs an array with 2 parameters."); + + return new SetSymmetricDifferenceRule(parameters[0], parameters[1]); + } + + public override void Write(Utf8JsonWriter writer, SetSymmetricDifferenceRule value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("symdiff"); + writer.WriteStartArray(); + writer.WriteRule(value.Set1, options); + writer.WriteRule(value.Set2, options); + writer.WriteEndArray(); + writer.WriteEndObject(); + } +} diff --git a/PBIXInspectorLibrary/CustomRules/SetUnionRule.cs b/PBIXInspectorLibrary/CustomRules/SetUnionRule.cs new file mode 100644 index 0000000..86007f3 --- /dev/null +++ b/PBIXInspectorLibrary/CustomRules/SetUnionRule.cs @@ -0,0 +1,92 @@ +using Json.Logic; +using Json.More; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + + +namespace PBIXInspectorLibrary.CustomRules; + +/// +/// Handles the `union` operation. +/// +[Operator("union")] +[JsonConverter(typeof(SetUnionRuleJsonConverter))] +public class SetUnionRule : Json.Logic.Rule +{ + internal Json.Logic.Rule Set1 { get; } + internal Json.Logic.Rule Set2 { get; } + + public SetUnionRule(Json.Logic.Rule set1, Json.Logic.Rule set2) + { + Set1 = set1; + Set2 = set2; + } + + /// + /// Applies the rule to the input data. + /// + /// The input data. + /// + /// Optional secondary data. Used by a few operators to pass a secondary + /// data context to inner operators. + /// + /// The result of the rule. + public override JsonNode? Apply(JsonNode? data, JsonNode? contextData = null) + { + var set1 = Set1.Apply(data, contextData); + var set2 = Set2.Apply(data, contextData); + + if (set1 is not JsonArray || set2 is not JsonArray) + return new JsonArray(); + + var arr1 = (JsonArray)set1; + var arr2 = (JsonArray)set2; + + var union = new JsonArray(); + + foreach (var item in arr1) + { + var copy = item.Copy(); + if (!union.Any(x => x.IsEquivalentTo(copy))) + { + union.Add(copy); + } + } + + foreach (var item in arr2) + { + var copy = item.Copy(); + if (!union.Any(x => x.IsEquivalentTo(copy))) + { + union.Add(copy); + } + } + + return union; + } +} + +internal class SetUnionRuleJsonConverter : JsonConverter +{ + public override SetUnionRule? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var parameters = JsonSerializer.Deserialize(ref reader, options); + + if (parameters is not { Length: 2 }) + throw new JsonException("The union rule needs an array with 2 parameters."); + + return new SetUnionRule(parameters[0], parameters[1]); + } + + public override void Write(Utf8JsonWriter writer, SetUnionRule value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("union"); + writer.WriteStartArray(); + writer.WriteRule(value.Set1, options); + writer.WriteRule(value.Set2, options); + writer.WriteEndArray(); + writer.WriteEndObject(); + } +} diff --git a/PBIXInspectorLibrary/Inspector.cs b/PBIXInspectorLibrary/Inspector.cs index 97068a7..c937882 100644 --- a/PBIXInspectorLibrary/Inspector.cs +++ b/PBIXInspectorLibrary/Inspector.cs @@ -19,9 +19,9 @@ public class Inspector : InspectorBase private const string FILTEREXPRESSIONMARKER = "?"; private const string JSONPOINTERSTART = "/"; private const string CONTEXTARRAY = "."; + internal const char DRILLCHAR = '>'; private string _pbiFilePath, _rulesFilePath; - //private PbiFile _pbiFile; private InspectionRules? _inspectionRules; public event EventHandler? MessageIssued; @@ -75,12 +75,6 @@ public Inspector(string pbiFilePath, string rulesFilePath) : base(pbiFilePath, r private PbiFile InitPbiFile(string pbiFilePath) { - //if (!File.Exists(pbiFilePath)) - //{ - // throw new PBIXInspectorException(string.Format("The PBI file with path \"{0}\" does not exist.", pbiFilePath)); - //} - //else - //{ switch (PbiFile.PBIFileType(pbiFilePath)) { case PbiFile.PBIFileTypeEnum.PBIX: @@ -94,7 +88,6 @@ private PbiFile InitPbiFile(string pbiFilePath) default: throw new PBIXInspectorException(string.Format("Could not determine the extension of PBI file with path \"{0}\".", pbiFilePath)); } - //} } private void AddCustomRulesToRegistry() @@ -117,7 +110,11 @@ private void AddCustomRulesToRegistry() Json.Logic.RuleRegistry.AddRule(); Json.Logic.RuleRegistry.AddRule(); Json.Logic.RuleRegistry.AddRule(); - + Json.Logic.RuleRegistry.AddRule(); + Json.Logic.RuleRegistry.AddRule(); + Json.Logic.RuleRegistry.AddRule(); + Json.Logic.RuleRegistry.AddRule(); + Json.Logic.RuleRegistry.AddRule(); } /// @@ -219,7 +216,9 @@ public IEnumerable Inspect() bool result = false; - var newdata = MapRuleDataPointersToValues(contextNodeArray, rule, contextNodeArray); + //HACK: checking if the rule's intention is to return an array or a single object + var node = rule.Path.Contains("*") || rule.Path.Contains("?") ? contextNodeArray : (contextNodeArray != null ? contextNodeArray.FirstOrDefault() : null); + var newdata = MapRuleDataPointersToValues(node, rule, contextNodeArray); //TODO: the following commented line does not work with the variableRule implementation with context array passed in. //var jruleresult = jrule.Apply(newdata, contextNodeArray); @@ -398,81 +397,6 @@ private JsonArray ConvertToJsonArray(List? tokens) return tokens; } - /* - private JToken? ExecuteTokenPath(JToken jo, string ruleName, string rulePath, bool rulePathErrorWhenNoMatch) - { - string parentPath, queryPath = string.Empty; - JToken? token = new JToken(); - - //TODO: a regex match to extract the substring would be better - if (rulePath.Contains(SUBJPATHSTART)) //check for subpath syntax - { - if (rulePath.EndsWith(SUBJPATHEND)) - { - //TODO: currently subpath is assumed to be the last path (i.e. the whole string end in "})" but we should be able to resolve inner subpath and return to parent path - var index = rulePath.IndexOf(SUBJPATHSTART); - parentPath = rulePath.Substring(0, index); - queryPath = rulePath.Substring(index + SUBJPATHSTART.Length, rulePath.Length - (index + SUBJPATHSTART.Length) - 1); - var parentTokens = SelectTokens(jo, ruleName, parentPath, rulePathErrorWhenNoMatch); - - if (parentTokens == null || parentTokens.Count() == 0) { return token; } - - if (parentPath.Contains(FILTEREXPRESSIONMARKER)) - { - JArray ja = new JArray(); - foreach (var t in parentTokens) - { - //HACK: why do I have to parse a token into a token to make the subsequent SelectTokens call work? - var jt = JToken.Parse(t.ToString()); - ja.Add(jt); - } - - token = ja.SelectTokens(queryPath, rulePathErrorWhenNoMatch); - } - else - { - foreach (var t in parentTokens) - { - //var childtokens = SelectTokens((JObject?)t, rule.Name, childPath, rule.PathErrorWhenNoMatch); //TODO: this seems better but throws InvalidCastException - var childtokens = SelectTokens(((JObject)JToken.Parse(t.ToString())), ruleName, queryPath, rulePathErrorWhenNoMatch); - //only return children tokens, the reference to parent tokens is lost. - if (childtokens != null) tokens.AddRange(childtokens.ToList()); - } - } - } - else - { - throw new PBIXInspectorException(string.Format("Path \"{0}\" needs to end with \"{1}\" as it contains a subpath.", rulePath, "}")); - } - } - else - { - tokens = SelectTokens(jo, ruleName, rulePath, rulePathErrorWhenNoMatch)?.ToList(); - } - - return tokens; - } - */ - - /* - private IEnumerable? SelectTokens(JObject? jo, string ruleName, string rulePath, bool rulePathErrorWhenNoMatch) - { - IEnumerable? tokens; - - //TODO: for some reason I can't catch Newtonsoft.Json.JsonException when rule.PathErrorWhenNoMatch is true - tokens = jo.SelectTokens(rulePath, false); - - - if (tokens == null || tokens.Count() == 0) - { - var msgType = rulePathErrorWhenNoMatch ? MessageTypeEnum.Error : MessageTypeEnum.Information; - OnMessageIssued(msgType, string.Format("Rule \"{0}\" with JPath \"{1}\" did not return any tokens.", ruleName, rulePath)); - } - - return tokens; - } - */ - private IEnumerable? SelectTokens(JToken? jo, string ruleName, string rulePath, bool rulePathErrorWhenNoMatch) { IEnumerable? tokens; @@ -514,21 +438,14 @@ private JsonArray ConvertToJsonArray(List? tokens) { if (item.Value is JsonValue) { - var value = item.Value.AsValue().Stringify(); - //TODO: enable navigation to parent path - //while (value.StartsWith(".")) - //{ - // target = target.Parent; - // value = value.Substring(1, value.Length - 1); - //} - if (value.StartsWith(JSONPOINTERSTART)) //check for JsonPointer syntax { try { - var pointer = JsonPointer.Parse(value); - var evalsuccess = pointer.TryEvaluate(target, out var newval); + //var pointer = JsonPointer.Parse(value); + //var evalsuccess = pointer.TryEvaluate(target, out var newval); + var evalsuccess = EvalPath(value, target, out var newval); if (evalsuccess) { if (newval != null) @@ -566,7 +483,7 @@ private JsonArray ConvertToJsonArray(List? tokens) } } } - else if (value.StartsWith(CONTEXTARRAY)) + else if (value.Equals(CONTEXTARRAY)) { //context array token was used so pass in the parent array newdata.Add(new KeyValuePair(item.Key, contextNodeArray.Copy())); @@ -595,6 +512,55 @@ private JsonArray ConvertToJsonArray(List? tokens) return newdata; } + internal bool EvalPath(string pathString, JsonNode? data, out JsonNode? result) + { + if (pathString.Contains(DRILLCHAR)) + { + var leftString = pathString.Substring(0, pathString.IndexOf(DRILLCHAR)); + var rightString = pathString.Substring(pathString.IndexOf(DRILLCHAR) + 1); + + var leftStringPath = string.Concat(leftString.StartsWith(JSONPOINTERSTART) ? string.Empty : JSONPOINTERSTART, leftString.Replace('.', '/')); + var pointer = JsonPointer.Parse(leftStringPath); + if (pointer.TryEvaluate(data, out result)) + { + if (result is JsonValue val) + { + //remove single quotes from beginning and end of string if any. + string strVal; + if (val.ToString()!.StartsWith("'") && val.ToString()!.EndsWith("'")) + { + strVal = val.ToString()!.Substring(1, val.ToString()!.Length - 2); + } + else + { + strVal = val.ToString()!; + } + + var pathEvalNode = JsonNode.Parse(strVal); + return EvalPath(rightString, pathEvalNode, out result); + } + else + { + return EvalPath(rightString, result, out result); + } + } + } + else if (pathString.Trim().Equals(CONTEXTARRAY)) + { + result = data; + return true; + } + else + { + var pathStringPath = string.Concat(pathString.StartsWith(JSONPOINTERSTART) ? string.Empty : JSONPOINTERSTART, pathString.Replace('.', '/')); + var pointer = JsonPointer.Parse(pathStringPath); + return pointer.TryEvaluate(data, out result); + } + + result = null; + return false; + } + private Encoding GetEncodingFromCodePage(int codePage) { diff --git a/PBIXInspectorTests/CustomRulesTests.cs b/PBIXInspectorTests/CustomRulesTests.cs index 41bee33..ad54e4d 100644 --- a/PBIXInspectorTests/CustomRulesTests.cs +++ b/PBIXInspectorTests/CustomRulesTests.cs @@ -1,4 +1,5 @@ -using PBIXInspectorLibrary.CustomRules; +using Json.More; +using PBIXInspectorLibrary.CustomRules; using System.Text.Json.Nodes; namespace PBIXInspectorTests @@ -75,6 +76,182 @@ public void StringContainsNoMatchTest() var result = rule.Apply(null); Assert.That((int)result.AsValue(), Is.EqualTo(0)); } + + [Test] + public void SetIntersectionTest1() + { + var arr1 = "[\"a\",\"b\"]"; + var arr2 = "[\"b\",\"c\"]"; + + var expected = "[\"b\"]"; + + var rule = new SetIntersectionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetIntersectionTest2() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"b\",\"c\",\"d\"]"; + + var expected = "[\"b\", \"c\"]"; + + var rule = new SetIntersectionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetIntersectionTest3() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"d\",\"e\",\"f\"]"; + + var expected = "[]"; + + var rule = new SetIntersectionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetIntersectionTest4() + { + var arr1 = "[\"d\",\"e\",\"f\"]"; + var arr2 = "[\"a\",\"b\",\"c\"]"; + + var expected = "[]"; + + var rule = new SetIntersectionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetUnionTest1() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"d\",\"e\",\"f\"]"; + + var expected = "[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"]"; + + var rule = new SetUnionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetUnionTest2() + { + var arr1 = "[]"; + var arr2 = "[\"d\",\"e\",\"f\"]"; + + var expected = "[\"d\",\"e\",\"f\"]"; + + var rule = new SetUnionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetUnionTest3() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[]"; + + var expected = "[\"a\",\"b\",\"c\"]"; + + var rule = new SetUnionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetUnionTest4() + { + var arr1 = "[\"a\",\"b\",\"c\",\"a\"]"; + var arr2 = "[]"; + + var expected = "[\"a\",\"b\",\"c\"]"; + + var rule = new SetUnionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetUnionTest5() + { + var arr1 = "[\"a\",\"b\",\"c\",\"d\"]"; + var arr2 = "[\"d\",\"e\",\"f\"]"; + + var expected = "[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"]"; + + var rule = new SetUnionRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetDifferenceTest1() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"c\",\"d\",\"e\"]"; + + var expected = "[\"a\",\"b\"]"; + + var rule = new SetDifferenceRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetSymmetricDifferenceTest1() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"c\",\"d\",\"e\"]"; + + var expected = "[\"a\",\"b\",\"d\",\"e\"]"; + + var rule = new SetSymmetricDifferenceRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That(result.IsEquivalentTo(JsonNode.Parse(expected))); + } + + [Test] + public void SetEqualTest1() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"c\",\"d\",\"e\"]"; + + var rule = new SetEqualRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That((bool)result.AsValue(), Is.False); + } + + [Test] + public void SetEqualTest2() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"a\",\"b\",\"c\"]"; + + var rule = new SetEqualRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That((bool)result.AsValue(), Is.True); + } + + [Test] + public void SetEqualTest3() + { + var arr1 = "[\"a\",\"b\",\"c\"]"; + var arr2 = "[\"c\",\"b\",\"a\"]"; + + var rule = new SetEqualRule(JsonNode.Parse(arr1), JsonNode.Parse(arr2)); + var result = rule.Apply(null); + Assert.That((bool)result.AsValue(), Is.True); + } #pragma warning restore CS8602 } } diff --git a/PBIXInspectorTests/Files/Inventory sample - fails.pbix b/PBIXInspectorTests/Files/Inventory sample - fails.pbix index de67c05..fd588f1 100644 Binary files a/PBIXInspectorTests/Files/Inventory sample - fails.pbix and b/PBIXInspectorTests/Files/Inventory sample - fails.pbix differ diff --git a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/model.bim b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/model.bim index 4849b53..e0d4685 100644 --- a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/model.bim +++ b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/model.bim @@ -12,11 +12,11 @@ }, { "name": "PBIDesktopVersion", - "value": "2.121.903.0 (23.09)" + "value": "2.123.684.0 (23.11)" }, { "name": "PBI_ProTooling", - "value": "[\"DevMode\"]" + "value": "[\"DevMode\",\"DaxQueryView_Desktop\"]" } ], "culture": "fr-FR", diff --git a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/report.json b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/report.json index 3f718b1..2fa3670 100644 --- a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/report.json +++ b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/report.json @@ -1,5 +1,5 @@ { - "config": "{\"version\":\"5.42\",\"themeCollection\":{\"baseTheme\":{\"name\":\"CY22SU11\",\"version\":\"5.40\",\"type\":2}},\"activeSectionIndex\":6,\"defaultDrillFilterOtherVisuals\":true,\"slowDataSourceSettings\":{\"isCrossHighlightingDisabled\":false,\"isSlicerSelectionsButtonEnabled\":false,\"isFilterSelectionsButtonEnabled\":false,\"isFieldWellButtonEnabled\":false,\"isApplyAllButtonEnabled\":false},\"linguisticSchemaSyncVersion\":2,\"settings\":{\"isPersistentUserStateDisabled\":true,\"hideVisualContainerHeader\":false,\"useStylableVisualContainerHeader\":true,\"exportDataMode\":1,\"useNewFilterPaneExperience\":true,\"optOutNewFilterPaneExperience\":false,\"defaultFilterActionIsDataFilter\":true,\"useCrossReportDrillthrough\":false,\"allowChangeFilterTypes\":true,\"allowInlineExploration\":false,\"disableFilterPaneSearch\":false,\"enableDeveloperMode\":false,\"useEnhancedTooltips\":true,\"useDefaultAggregateDisplayName\":true},\"objects\":{\"section\":[{\"properties\":{\"verticalAlignment\":{\"expr\":{\"Literal\":{\"Value\":\"'Middle'\"}}}}}],\"outspacePane\":[{\"properties\":{\"expanded\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}}}}]}}", + "config": "{\"version\":\"5.49\",\"themeCollection\":{\"baseTheme\":{\"name\":\"CY22SU11\",\"version\":\"5.40\",\"type\":2}},\"activeSectionIndex\":0,\"bookmarks\":[{\"displayName\":\"Default\",\"name\":\"Bookmarkb82c990a9a1720ce9d73\",\"explorationState\":{\"version\":\"1.3\",\"activeSection\":\"ReportSectionf6b09351c4832839a008\",\"sections\":{\"ReportSectionf6b09351c4832839a008\":{\"visualContainers\":{\"84ea064fb2e52a46eb62\":{\"filters\":{\"byExpr\":[{\"type\":\"Categorical\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"howCreated\":0},{\"type\":\"Advanced\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"columnChart\",\"objects\":{},\"orderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}],\"activeProjections\":{\"Category\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}]}}},\"c8a4a9ab08c29eb74671\":{\"filters\":{\"byExpr\":[{\"type\":\"Categorical\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"slicer\",\"objects\":{\"merge\":{\"data\":[{\"properties\":{\"mode\":{\"expr\":{\"Literal\":{\"Value\":\"'Dropdown'\"}}}}}]}},\"activeProjections\":{\"Values\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}]}}},\"9b38eaac62c48d04a031\":{\"filters\":{\"byExpr\":[{\"name\":\"Filter1a034116b32bcc8a911a\",\"type\":\"Categorical\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"howCreated\":0},{\"name\":\"Filterb6c2fb718c138cc892c9\",\"type\":\"Advanced\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"barChart\",\"objects\":{},\"orderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}],\"activeProjections\":{\"Category\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}]}}},\"ca510430264de0060d24\":{\"singleVisual\":{\"visualType\":\"image\",\"objects\":{}}},\"0b2a4c54a10b1b3c8597\":{\"filters\":{\"byExpr\":[{\"type\":\"Advanced\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"card\",\"objects\":{},\"orderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]}}}}},\"objects\":{\"merge\":{\"outspacePane\":[{\"properties\":{\"expanded\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}},\"options\":{\"targetVisualNames\":[]}},{\"displayName\":\"Pear\",\"name\":\"Bookmark9bb78635a06682786c59\",\"explorationState\":{\"version\":\"1.3\",\"activeSection\":\"ReportSectionf6b09351c4832839a008\",\"sections\":{\"ReportSectionf6b09351c4832839a008\":{\"visualContainers\":{\"84ea064fb2e52a46eb62\":{\"filters\":{\"byExpr\":[{\"type\":\"Categorical\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"howCreated\":0},{\"type\":\"Advanced\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"columnChart\",\"objects\":{},\"orderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}],\"activeProjections\":{\"Category\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}]}}},\"c8a4a9ab08c29eb74671\":{\"filters\":{\"byExpr\":[{\"type\":\"Categorical\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"slicer\",\"objects\":{\"merge\":{\"data\":[{\"properties\":{\"mode\":{\"expr\":{\"Literal\":{\"Value\":\"'Dropdown'\"}}}}}]}},\"activeProjections\":{\"Values\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}]}}},\"9b38eaac62c48d04a031\":{\"filters\":{\"byExpr\":[{\"name\":\"Filter1a034116b32bcc8a911a\",\"type\":\"Categorical\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"howCreated\":0},{\"name\":\"Filterb6c2fb718c138cc892c9\",\"type\":\"Advanced\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"barChart\",\"objects\":{},\"orderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}],\"activeProjections\":{\"Category\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}]}},\"highlight\":{\"selection\":[{\"dataMap\":{\"Inventory.Item\":[{\"scopeId\":{\"Comparison\":{\"ComparisonKind\":0,\"Left\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"Right\":{\"Literal\":{\"Value\":\"'Pear'\"}}}}}]},\"metadata\":[\"Sum(Inventory.Quantity)\"]}],\"filterExpressionMetadata\":{\"expressions\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}}],\"cachedValueItems\":[{\"identities\":[{\"scopeId\":{\"Comparison\":{\"ComparisonKind\":0,\"Left\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"Right\":{\"Literal\":{\"Value\":\"'Pear'\"}}}}}],\"valueMap\":{\"0\":\"Pear\"}}]}}},\"ca510430264de0060d24\":{\"singleVisual\":{\"visualType\":\"image\",\"objects\":{}}},\"0b2a4c54a10b1b3c8597\":{\"filters\":{\"byExpr\":[{\"type\":\"Advanced\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"howCreated\":0}]},\"singleVisual\":{\"visualType\":\"card\",\"objects\":{},\"orderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]}}}}},\"objects\":{\"merge\":{\"outspacePane\":[{\"properties\":{\"expanded\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}},\"options\":{\"targetVisualNames\":[]}}],\"defaultDrillFilterOtherVisuals\":true,\"slowDataSourceSettings\":{\"isCrossHighlightingDisabled\":false,\"isSlicerSelectionsButtonEnabled\":false,\"isFilterSelectionsButtonEnabled\":false,\"isFieldWellButtonEnabled\":false,\"isApplyAllButtonEnabled\":false},\"linguisticSchemaSyncVersion\":2,\"settings\":{\"isPersistentUserStateDisabled\":true,\"hideVisualContainerHeader\":false,\"useStylableVisualContainerHeader\":true,\"exportDataMode\":1,\"useNewFilterPaneExperience\":true,\"optOutNewFilterPaneExperience\":false,\"defaultFilterActionIsDataFilter\":true,\"useCrossReportDrillthrough\":false,\"allowChangeFilterTypes\":true,\"allowInlineExploration\":false,\"disableFilterPaneSearch\":false,\"enableDeveloperMode\":false,\"useEnhancedTooltips\":true,\"useDefaultAggregateDisplayName\":true},\"objects\":{\"section\":[{\"properties\":{\"verticalAlignment\":{\"expr\":{\"Literal\":{\"Value\":\"'Middle'\"}}}}}],\"outspacePane\":[{\"properties\":{\"expanded\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}}}}]}}", "layoutOptimization": 0, "pods": [ { @@ -109,6 +109,120 @@ ], "width": 1280.00 }, + { + "config": "{\"relationships\":[{\"source\":\"317d3554c28d50002080\",\"target\":\"51bd28a74d10071452b2\",\"type\":3},{\"source\":\"70decca9243ac7ec9b09\",\"target\":\"51bd28a74d10071452b2\",\"type\":3},{\"source\":\"70decca9243ac7ec9b09\",\"target\":\"ea105fd87310401a682d\",\"type\":1},{\"source\":\"ea105fd87310401a682d\",\"target\":\"51bd28a74d10071452b2\",\"type\":3}]}", + "displayName": "Filter pane", + "displayOption": 1, + "filters": "[]", + "height": 720.00, + "name": "ReportSection15e341c562357430db00", + "ordinal": 15, + "visualContainers": [ + { + "config": "{\"name\":\"317d3554c28d50002080\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":5}}],\"singleVisual\":{\"visualType\":\"barChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}],\"general\":[{\"properties\":{\"altText\":{\"expr\":{\"Literal\":{\"Value\":\"'Bar chart showing sum of quantity by item. '\"}}}}}]}}}", + "filters": "[{\"name\":\"Filter1a034116b32bcc8a911a\",\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"type\":\"Categorical\",\"howCreated\":0,\"isHiddenInViewMode\":false,\"isLockedInViewMode\":true},{\"name\":\"Filterb6c2fb718c138cc892c9\",\"expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Quantity\"}},\"Function\":0}},\"type\":\"Advanced\",\"howCreated\":0,\"isHiddenInViewMode\":false,\"isLockedInViewMode\":true}]", + "height": 288.71, + "width": 1280.00, + "x": 0.00, + "y": 142.22, + "z": 3000.00 + }, + { + "config": "{\"name\":\"51bd28a74d10071452b2\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":0,\"z\":4500,\"width\":184.47761194029852,\"height\":100.29850746268656,\"tabOrder\":20}}],\"singleVisual\":{\"visualType\":\"image\",\"drillFilterOtherVisuals\":true,\"objects\":{\"general\":[{\"properties\":{\"imageUrl\":{\"expr\":{\"ResourcePackageItem\":{\"PackageName\":\"RegisteredResources\",\"PackageType\":1,\"ItemName\":\"pbilogo011716949638171492.png\"}}}}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Logo'\"}}}}}]}}}", + "filters": "[]", + "height": 100.30, + "width": 184.48, + "x": 0.00, + "y": 0.00, + "z": 4500.00 + }, + { + "config": "{\"name\":\"5434f7a805bb049d88b2\",\"layouts\":[{\"id\":0,\"position\":{\"x\":263.1111111111111,\"y\":0,\"z\":4250,\"width\":207.64444444444445,\"height\":109.5111111111111,\"tabOrder\":15}}],\"singleVisual\":{\"visualType\":\"card\",\"projections\":{\"Values\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"columnProperties\":{\"Sum(Inventory.Quantity)\":{\"displayName\":\"Quantity\"}},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true}}", + "filters": "[]", + "height": 109.51, + "width": 207.64, + "x": 263.11, + "y": 0.00, + "z": 4250.00 + }, + { + "config": "{\"name\":\"70decca9243ac7ec9b09\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.93333333333334,\"z\":1000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"columnChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "filters": "[]", + "height": 288.71, + "width": 1280.00, + "x": 0.00, + "y": 430.93, + "z": 1000.00 + }, + { + "config": "{\"name\":\"ea105fd87310401a682d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":995.6908665105386,\"y\":0,\"z\":4000,\"width\":284.1217798594848,\"height\":75.0351288056206,\"tabOrder\":10}}],\"singleVisual\":{\"visualType\":\"slicer\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"}]},\"drillFilterOtherVisuals\":true,\"objects\":{\"data\":[{\"properties\":{\"mode\":{\"expr\":{\"Literal\":{\"Value\":\"'Dropdown'\"}}}}}],\"general\":[{\"properties\":{}}]}}}", + "filters": "[]", + "height": 75.04, + "width": 284.12, + "x": 995.69, + "y": 0.00, + "z": 4000.00 + } + ], + "width": 1280.00 + }, + { + "config": "{\"relationships\":[{\"source\":\"6cf0585db6cd8d679d6e\",\"target\":\"dac93603286ab3ec4064\",\"type\":3},{\"source\":\"bb6326d73913814b909c\",\"target\":\"dac93603286ab3ec4064\",\"type\":3},{\"source\":\"bb6326d73913814b909c\",\"target\":\"98264aa8e106300ce4ea\",\"type\":1},{\"source\":\"98264aa8e106300ce4ea\",\"target\":\"dac93603286ab3ec4064\",\"type\":3}]}", + "displayName": "Interactions 2", + "displayOption": 1, + "filters": "[]", + "height": 720.00, + "name": "ReportSection173123d944b02370086c", + "ordinal": 14, + "visualContainers": [ + { + "config": "{\"name\":\"1951abd4b45e61531cde\",\"layouts\":[{\"id\":0,\"position\":{\"x\":263.1111111111111,\"y\":0,\"z\":4250,\"width\":207.64444444444445,\"height\":109.5111111111111,\"tabOrder\":15}}],\"singleVisual\":{\"visualType\":\"card\",\"projections\":{\"Values\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"columnProperties\":{\"Sum(Inventory.Quantity)\":{\"displayName\":\"Quantity\"}},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true}}", + "filters": "[]", + "height": 109.51, + "width": 207.64, + "x": 263.11, + "y": 0.00, + "z": 4250.00 + }, + { + "config": "{\"name\":\"6cf0585db6cd8d679d6e\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":5}}],\"singleVisual\":{\"visualType\":\"barChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}],\"general\":[{\"properties\":{\"altText\":{\"expr\":{\"Literal\":{\"Value\":\"'Bar chart showing sum of quantity by item. '\"}}}}}]}}}", + "filters": "[]", + "height": 288.71, + "width": 1280.00, + "x": 0.00, + "y": 142.22, + "z": 3000.00 + }, + { + "config": "{\"name\":\"98264aa8e106300ce4ea\",\"layouts\":[{\"id\":0,\"position\":{\"x\":995.6908665105386,\"y\":0,\"z\":4000,\"width\":284.1217798594848,\"height\":75.0351288056206,\"tabOrder\":10}}],\"singleVisual\":{\"visualType\":\"slicer\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"}]},\"drillFilterOtherVisuals\":true,\"objects\":{\"data\":[{\"properties\":{\"mode\":{\"expr\":{\"Literal\":{\"Value\":\"'Dropdown'\"}}}}}],\"general\":[{\"properties\":{}}]}}}", + "filters": "[]", + "height": 75.04, + "width": 284.12, + "x": 995.69, + "y": 0.00, + "z": 4000.00 + }, + { + "config": "{\"name\":\"bb6326d73913814b909c\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.93333333333334,\"z\":1000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"columnChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "filters": "[]", + "height": 288.71, + "width": 1280.00, + "x": 0.00, + "y": 430.93, + "z": 1000.00 + }, + { + "config": "{\"name\":\"dac93603286ab3ec4064\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":0,\"z\":4500,\"width\":184.47761194029852,\"height\":100.29850746268656,\"tabOrder\":20}}],\"singleVisual\":{\"visualType\":\"image\",\"drillFilterOtherVisuals\":true,\"objects\":{\"general\":[{\"properties\":{\"imageUrl\":{\"expr\":{\"ResourcePackageItem\":{\"PackageName\":\"RegisteredResources\",\"PackageType\":1,\"ItemName\":\"pbilogo011716949638171492.png\"}}}}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Logo'\"}}}}}]}}}", + "filters": "[]", + "height": 100.30, + "width": 184.48, + "x": 0.00, + "y": 0.00, + "z": 4500.00 + } + ], + "width": 1280.00 + }, { "config": "{\"objects\":{\"outspacePane\":[{\"properties\":{\"width\":{\"expr\":{\"Literal\":{\"Value\":\"373L\"}}}}}]}}", "displayName": "TopN filtering", @@ -128,22 +242,22 @@ "z": 0.00 }, { - "config": "{\"name\":\"20d6273040453a220300\",\"layouts\":[{\"id\":0,\"position\":{\"x\":875.7126567844925,\"y\":430.55872291904217,\"z\":5002,\"width\":404.2873432155074,\"height\":288.98517673888256,\"tabOrder\":5002}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"20d6273040453a220300\",\"layouts\":[{\"id\":0,\"position\":{\"x\":875.7126567844925,\"y\":430.55872291904217,\"z\":7000,\"width\":404.2873432155074,\"height\":288.98517673888256,\"tabOrder\":7000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[{\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"filter\":{\"Version\":2,\"From\":[{\"Name\":\"subquery\",\"Expression\":{\"Subquery\":{\"Query\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"field\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}],\"Top\":2}}},\"Type\":2},{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Where\":[{\"Condition\":{\"In\":{\"Expressions\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"}}],\"Table\":{\"SourceRef\":{\"Source\":\"subquery\"}}}}}]},\"type\":\"TopN\",\"howCreated\":0,\"isHiddenInViewMode\":false}]", "height": 288.99, "width": 404.29, "x": 875.71, "y": 430.56, - "z": 5002.00 + "z": 7000.00 }, { - "config": "{\"name\":\"3336fb99a3600998d408\",\"layouts\":[{\"id\":0,\"position\":{\"x\":437.1756978653531,\"y\":430.87027914614123,\"z\":5001,\"width\":438.2266009852217,\"height\":288.9983579638752,\"tabOrder\":5001}}],\"singleVisual\":{\"visualType\":\"donutChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity doughnut chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"3336fb99a3600998d408\",\"layouts\":[{\"id\":0,\"position\":{\"x\":437.1756978653531,\"y\":430.87027914614123,\"z\":6000,\"width\":438.2266009852217,\"height\":288.9983579638752,\"tabOrder\":6000}}],\"singleVisual\":{\"visualType\":\"donutChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity doughnut chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[{\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"filter\":{\"Version\":2,\"From\":[{\"Name\":\"subquery\",\"Expression\":{\"Subquery\":{\"Query\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"field\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}],\"Top\":2}}},\"Type\":2},{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Where\":[{\"Condition\":{\"In\":{\"Expressions\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"}}],\"Table\":{\"SourceRef\":{\"Source\":\"subquery\"}}}}}]},\"type\":\"TopN\",\"howCreated\":0,\"isHiddenInViewMode\":false}]", "height": 289.00, "width": 438.23, "x": 437.18, "y": 430.87, - "z": 5001.00 + "z": 6000.00 }, { "config": "{\"name\":\"3b2c4e90a78f9bf92492\",\"layouts\":[{\"id\":0,\"position\":{\"x\":263.1111111111111,\"y\":0,\"z\":3000,\"width\":207.64444444444445,\"height\":109.5111111111111,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"card\",\"projections\":{\"Values\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"columnProperties\":{\"Sum(Inventory.Quantity)\":{\"displayName\":\"Quantity\"}},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true}}", @@ -493,6 +607,45 @@ ], "width": 320.00 }, + { + "config": "{}", + "displayName": "Nov release", + "displayOption": 1, + "filters": "[]", + "height": 720.00, + "name": "ReportSectionbd84ac4ab02b609b308b", + "ordinal": 17, + "visualContainers": [ + { + "config": "{\"name\":\"3392a770bcc03ab857c3\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":103.26852194406763,\"z\":2000,\"width\":679.1027801756621,\"height\":569.0993546265466,\"tabOrder\":1000}}],\"singleVisual\":{\"visualType\":\"cardVisual\",\"projections\":{\"Data\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"},{\"queryRef\":\"Sum(Inventory.Cost per item)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\",\"NativeReferenceName\":\"Sum of Quantity\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Cost per item\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Cost per item)\",\"NativeReferenceName\":\"Sum of Cost per item\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"objects\":{\"referenceLabel\":[{\"properties\":{\"value\":{\"expr\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Cost per item\"}},\"Function\":0}}}},\"selector\":{\"data\":[{\"dataViewWildcard\":{\"matchingOption\":0}}],\"metadata\":\"Sum(Inventory.Quantity)\",\"id\":\"field-28db87a3-b790-0cdf-7e1b-6e2ac54ded42\",\"order\":0}}],\"referenceLabelDetail\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}}},\"selector\":{\"metadata\":\"Sum(Inventory.Quantity)\"}}],\"shadowCustom\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}},\"selector\":{\"id\":\"default\"}}]}}}", + "filters": "[]", + "height": 569.10, + "width": 679.10, + "x": 0.00, + "y": 103.27, + "z": 2000.00 + }, + { + "config": "{\"name\":\"77e06971dd8c0771a281\",\"layouts\":[{\"id\":0,\"position\":{\"x\":692.5725873857579,\"y\":121.228264890862,\"z\":1000,\"width\":574.7117742974199,\"height\":538.7922884038311,\"tabOrder\":2000}}],\"singleVisual\":{\"visualType\":\"advancedSlicerVisual\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Colour\"}],\"Tooltips\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Colour\"},\"Name\":\"Inventory.Colour\",\"NativeReferenceName\":\"Colour\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\",\"NativeReferenceName\":\"Sum of Quantity\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"objects\":{\"shapeCustomRectangle\":[{\"properties\":{\"tileShape\":{\"expr\":{\"Literal\":{\"Value\":\"'rectangleRounded'\"}}},\"rectangleRoundedCurve\":{\"expr\":{\"Literal\":{\"Value\":\"18L\"}}},\"rectangleRoundedCurveCustomStyle\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}},\"selector\":{\"id\":\"default\"}}],\"selection\":[{\"properties\":{\"strictSingleSelect\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}],\"general\":[{\"properties\":{\"filter\":{\"filter\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Where\":[{\"Condition\":{\"In\":{\"Expressions\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Colour\"}}],\"Values\":[[{\"Literal\":{\"Value\":\"'Green'\"}}]]}}}]}}}}],\"layout\":[{\"properties\":{\"cellPadding\":{\"expr\":{\"Literal\":{\"Value\":\"2L\"}}}}}],\"overFlow\":[{\"properties\":{\"overFlowStyle\":{\"expr\":{\"Literal\":{\"Value\":\"1D\"}}},\"overFlowDirection\":{\"expr\":{\"Literal\":{\"Value\":\"1D\"}}}}}],\"label\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}},\"selector\":{\"id\":\"default\"}},{\"properties\":{\"field\":{\"expr\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"Function\":3}}}},\"selector\":{\"data\":[{\"dataViewWildcard\":{\"matchingOption\":1}}]}}],\"padding\":[{\"properties\":{\"paddingSelection\":{\"expr\":{\"Literal\":{\"Value\":\"'Narrow'\"}}}},\"selector\":{\"id\":\"default\"}}],\"glowCustom\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}},\"selector\":{\"id\":\"default\"}}],\"accentBar\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}},\"selector\":{\"id\":\"default\"}}],\"shadowCustom\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}},\"selector\":{\"id\":\"default\"}}],\"value\":[{\"properties\":{\"fontColor\":{\"solid\":{\"color\":{\"expr\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Colour\"}},\"Function\":3}}}}}},\"selector\":{\"data\":[{\"dataViewWildcard\":{\"matchingOption\":1}}],\"id\":\"default\"}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"titleWrap\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"background\":{\"solid\":{\"color\":{\"expr\":{\"Literal\":{\"Value\":\"null\"}}}}},\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}}}}]},\"cachedFilterDisplayItems\":[{\"id\":{\"scopeId\":{\"Comparison\":{\"ComparisonKind\":0,\"Left\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Colour\"}},\"Right\":{\"Literal\":{\"Value\":\"'Green'\"}}}}},\"displayName\":\"Green\"}]}}", + "filters": "[]", + "height": 538.79, + "width": 574.71, + "x": 692.57, + "y": 121.23, + "z": 1000.00 + }, + { + "config": "{\"name\":\"c9236828800c1c109d91\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":0,\"z\":0,\"width\":197.38317757009344,\"height\":100,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"image\",\"drillFilterOtherVisuals\":true,\"objects\":{\"general\":[{\"properties\":{\"imageUrl\":{\"expr\":{\"ResourcePackageItem\":{\"PackageName\":\"RegisteredResources\",\"PackageType\":1,\"ItemName\":\"pbilogo011716949638171492.png\"}}}}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Logo'\"}}}}}]}}}", + "filters": "[]", + "height": 100.00, + "width": 197.38, + "x": 0.00, + "y": 0.00, + "z": 0.00 + } + ], + "width": 1280.00 + }, { "config": "{}", "displayName": "Scrolling page", @@ -581,22 +734,22 @@ "z": 5000.00 }, { - "config": "{\"name\":\"98560f0e407009a4191a\",\"layouts\":[{\"id\":0,\"position\":{\"x\":397.2413793103448,\"y\":430.87027914614123,\"z\":5001,\"width\":397.2413793103448,\"height\":288.9983579638752,\"tabOrder\":5001}}],\"singleVisual\":{\"visualType\":\"donutChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity doughnut chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"98560f0e407009a4191a\",\"layouts\":[{\"id\":0,\"position\":{\"x\":397.2413793103448,\"y\":430.87027914614123,\"z\":6000,\"width\":397.2413793103448,\"height\":288.9983579638752,\"tabOrder\":6000}}],\"singleVisual\":{\"visualType\":\"donutChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity doughnut chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[{\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"filter\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Where\":[{\"Condition\":{\"Contains\":{\"Left\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"}},\"Right\":{\"Literal\":{\"Value\":\"'a'\"}}}}}]},\"type\":\"Advanced\",\"howCreated\":0,\"isHiddenInViewMode\":false}]", "height": 289.00, "width": 397.24, "x": 397.24, "y": 430.87, - "z": 5001.00 + "z": 6000.00 }, { - "config": "{\"name\":\"ac0cb853b452a904b2e3\",\"layouts\":[{\"id\":0,\"position\":{\"x\":882.7586206896552,\"y\":430.87027914614123,\"z\":5002,\"width\":397.2413793103448,\"height\":288.9983579638752,\"tabOrder\":5002}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"ac0cb853b452a904b2e3\",\"layouts\":[{\"id\":0,\"position\":{\"x\":882.7586206896552,\"y\":430.87027914614123,\"z\":7000,\"width\":397.2413793103448,\"height\":288.9983579638752,\"tabOrder\":7000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[{\"expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Item\"}},\"filter\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Where\":[{\"Condition\":{\"Contains\":{\"Left\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"}},\"Right\":{\"Literal\":{\"Value\":\"'a'\"}}}}}]},\"type\":\"Advanced\",\"howCreated\":0,\"isHiddenInViewMode\":false}]", "height": 289.00, "width": 397.24, "x": 882.76, "y": 430.87, - "z": 5002.00 + "z": 7000.00 }, { "config": "{\"name\":\"bfb15e1c290403dbbcd0\",\"layouts\":[{\"id\":0,\"position\":{\"x\":995.6908665105386,\"y\":0,\"z\":2000,\"width\":284.1217798594848,\"height\":75.0351288056206,\"tabOrder\":4000}}],\"singleVisual\":{\"visualType\":\"slicer\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"}]},\"drillFilterOtherVisuals\":true,\"objects\":{\"data\":[{\"properties\":{\"mode\":{\"expr\":{\"Literal\":{\"Value\":\"'Dropdown'\"}}}}}],\"general\":[{\"properties\":{}}]}}}", @@ -685,6 +838,63 @@ ], "width": 1280.00 }, + { + "config": "{\"relationships\":[{\"source\":\"9b38eaac62c48d04a031\",\"target\":\"ca510430264de0060d24\",\"type\":3},{\"source\":\"84ea064fb2e52a46eb62\",\"target\":\"ca510430264de0060d24\",\"type\":3},{\"source\":\"84ea064fb2e52a46eb62\",\"target\":\"c8a4a9ab08c29eb74671\",\"type\":1},{\"source\":\"c8a4a9ab08c29eb74671\",\"target\":\"ca510430264de0060d24\",\"type\":3}]}", + "displayName": "Bookmarks", + "displayOption": 1, + "filters": "[]", + "height": 720.00, + "name": "ReportSectionf6b09351c4832839a008", + "ordinal": 16, + "visualContainers": [ + { + "config": "{\"name\":\"0b2a4c54a10b1b3c8597\",\"layouts\":[{\"id\":0,\"position\":{\"x\":263.1111111111111,\"y\":0,\"z\":4250,\"width\":207.64444444444445,\"height\":109.5111111111111,\"tabOrder\":15}}],\"singleVisual\":{\"visualType\":\"card\",\"projections\":{\"Values\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"columnProperties\":{\"Sum(Inventory.Quantity)\":{\"displayName\":\"Quantity\"}},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true}}", + "filters": "[]", + "height": 109.51, + "width": 207.64, + "x": 263.11, + "y": 0.00, + "z": 4250.00 + }, + { + "config": "{\"name\":\"84ea064fb2e52a46eb62\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.93333333333334,\"z\":1000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"columnChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Column chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "filters": "[]", + "height": 288.71, + "width": 1280.00, + "x": 0.00, + "y": 430.93, + "z": 1000.00 + }, + { + "config": "{\"name\":\"9b38eaac62c48d04a031\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":5}}],\"singleVisual\":{\"visualType\":\"barChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}],\"general\":[{\"properties\":{\"altText\":{\"expr\":{\"Literal\":{\"Value\":\"'Bar chart showing sum of quantity by item. '\"}}}}}]}}}", + "filters": "[]", + "height": 288.71, + "width": 1280.00, + "x": 0.00, + "y": 142.22, + "z": 3000.00 + }, + { + "config": "{\"name\":\"c8a4a9ab08c29eb74671\",\"layouts\":[{\"id\":0,\"position\":{\"x\":995.6908665105386,\"y\":0,\"z\":4000,\"width\":284.1217798594848,\"height\":75.0351288056206,\"tabOrder\":10}}],\"singleVisual\":{\"visualType\":\"slicer\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"}]},\"drillFilterOtherVisuals\":true,\"objects\":{\"data\":[{\"properties\":{\"mode\":{\"expr\":{\"Literal\":{\"Value\":\"'Dropdown'\"}}}}}],\"general\":[{\"properties\":{}}]}}}", + "filters": "[]", + "height": 75.04, + "width": 284.12, + "x": 995.69, + "y": 0.00, + "z": 4000.00 + }, + { + "config": "{\"name\":\"ca510430264de0060d24\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":0,\"z\":4500,\"width\":184.47761194029852,\"height\":100.29850746268656,\"tabOrder\":20}}],\"singleVisual\":{\"visualType\":\"image\",\"drillFilterOtherVisuals\":true,\"objects\":{\"general\":[{\"properties\":{\"imageUrl\":{\"expr\":{\"ResourcePackageItem\":{\"PackageName\":\"RegisteredResources\",\"PackageType\":1,\"ItemName\":\"pbilogo011716949638171492.png\"}}}}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Logo'\"}}}}}]}}}", + "filters": "[]", + "height": 100.30, + "width": 184.48, + "x": 0.00, + "y": 0.00, + "z": 4500.00 + } + ], + "width": 1280.00 + }, { "config": "{}", "displayName": "Visible and Hidden Visuals", @@ -704,22 +914,22 @@ "z": 6000.00 }, { - "config": "{\"name\":\"08d13d2e8daba0407e29\",\"layouts\":[{\"id\":0,\"position\":{\"x\":585.5500821018063,\"y\":439.4745484400657,\"z\":10013,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10013}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"08d13d2e8daba0407e29\",\"layouts\":[{\"id\":0,\"position\":{\"x\":585.5500821018063,\"y\":439.4745484400657,\"z\":23000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":23000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 585.55, "y": 439.47, - "z": 10013.00 + "z": 23000.00 }, { - "config": "{\"name\":\"13b2653c089d00c2918b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":505.55008210180625,\"y\":359.4745484400657,\"z\":10005,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10005}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"13b2653c089d00c2918b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":505.55008210180625,\"y\":359.4745484400657,\"z\":15000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":15000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 505.55, "y": 359.47, - "z": 10005.00 + "z": 15000.00 }, { "config": "{\"name\":\"1b9a3c4d92e7ac303246\",\"layouts\":[{\"id\":0,\"position\":{\"x\":197.5697865353038,\"y\":0,\"z\":3000,\"width\":160.7881773399015,\"height\":99.83579638752053,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"card\",\"projections\":{\"Values\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"columnProperties\":{\"Sum(Inventory.Quantity)\":{\"displayName\":\"Quantity\"}},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true}}", @@ -740,13 +950,13 @@ "z": 2000.00 }, { - "config": "{\"name\":\"411d5a52673974b37812\",\"layouts\":[{\"id\":0,\"position\":{\"x\":565.5500821018063,\"y\":419.4745484400657,\"z\":10011,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10011}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"411d5a52673974b37812\",\"layouts\":[{\"id\":0,\"position\":{\"x\":565.5500821018063,\"y\":419.4745484400657,\"z\":21000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":21000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 565.55, "y": 419.47, - "z": 10011.00 + "z": 21000.00 }, { "config": "{\"name\":\"423cfdb39037ea1db380\",\"layouts\":[{\"id\":0,\"position\":{\"x\":980.4926108374384,\"y\":130.311986863711,\"z\":9000,\"width\":299.5073891625616,\"height\":160.7881773399015,\"tabOrder\":9000}}],\"singleVisual\":{\"visualType\":\"pieChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", @@ -776,49 +986,49 @@ "z": 1000.00 }, { - "config": "{\"name\":\"609bfa769ba8ee2d9cb1\",\"layouts\":[{\"id\":0,\"position\":{\"x\":245.9113300492611,\"y\":140.82101806239737,\"z\":10001,\"width\":197.5697865353038,\"height\":160.7881773399015,\"tabOrder\":10001}}],\"singleVisual\":{\"visualType\":\"multiRowCard\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":1,\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"609bfa769ba8ee2d9cb1\",\"layouts\":[{\"id\":0,\"position\":{\"x\":245.9113300492611,\"y\":140.82101806239737,\"z\":11000,\"width\":197.5697865353038,\"height\":160.7881773399015,\"tabOrder\":11000}}],\"singleVisual\":{\"visualType\":\"multiRowCard\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":1,\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 160.79, "width": 197.57, "x": 245.91, "y": 140.82, - "z": 10001.00 + "z": 11000.00 }, { - "config": "{\"name\":\"6ceaef15dcd98018c82e\",\"layouts\":[{\"id\":0,\"position\":{\"x\":595.5500821018063,\"y\":449.4745484400657,\"z\":10014,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10014}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"6ceaef15dcd98018c82e\",\"layouts\":[{\"id\":0,\"position\":{\"x\":595.5500821018063,\"y\":449.4745484400657,\"z\":24000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":24000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 595.55, "y": 449.47, - "z": 10014.00 + "z": 24000.00 }, { - "config": "{\"name\":\"73819a61425e5985ae8d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":545.5500821018063,\"y\":399.4745484400657,\"z\":10009,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10009}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"73819a61425e5985ae8d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":545.5500821018063,\"y\":399.4745484400657,\"z\":19000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":19000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 545.55, "y": 399.47, - "z": 10009.00 + "z": 19000.00 }, { - "config": "{\"name\":\"789bb03790eca4d0e025\",\"layouts\":[{\"id\":0,\"position\":{\"x\":535.5500821018063,\"y\":389.4745484400657,\"z\":10008,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10008}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"789bb03790eca4d0e025\",\"layouts\":[{\"id\":0,\"position\":{\"x\":535.5500821018063,\"y\":389.4745484400657,\"z\":18000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":18000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 535.55, "y": 389.47, - "z": 10008.00 + "z": 18000.00 }, { - "config": "{\"name\":\"a47e2064030c8877712b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":525.5500821018063,\"y\":379.4745484400657,\"z\":10007,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10007}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"a47e2064030c8877712b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":525.5500821018063,\"y\":379.4745484400657,\"z\":17000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":17000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 525.55, "y": 379.47, - "z": 10007.00 + "z": 17000.00 }, { "config": "{\"name\":\"ae32d4870b0494a0c319\",\"layouts\":[{\"id\":0,\"position\":{\"x\":245.9113300492611,\"y\":319.4745484400657,\"z\":8000,\"width\":197.5697865353038,\"height\":136.61740558292283,\"tabOrder\":8000}}],\"singleVisual\":{\"visualType\":\"columnChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"autoSelectVisualType\":false,\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", @@ -830,13 +1040,13 @@ "z": 8000.00 }, { - "config": "{\"name\":\"aedaaaa2560c9981693e\",\"layouts\":[{\"id\":0,\"position\":{\"x\":485.55008210180625,\"y\":339.4745484400657,\"z\":10003,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10003}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"aedaaaa2560c9981693e\",\"layouts\":[{\"id\":0,\"position\":{\"x\":485.55008210180625,\"y\":339.4745484400657,\"z\":13000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":13000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 485.55, "y": 339.47, - "z": 10003.00 + "z": 13000.00 }, { "config": "{\"name\":\"c2f0a76480e2a9d6e11b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":465.55008210180625,\"y\":319.4745484400657,\"z\":7000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":7000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", @@ -857,13 +1067,13 @@ "z": 0.00 }, { - "config": "{\"name\":\"cf871f00d0e8790cce73\",\"layouts\":[{\"id\":0,\"position\":{\"x\":575.5500821018063,\"y\":429.4745484400657,\"z\":10012,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10012}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"cf871f00d0e8790cce73\",\"layouts\":[{\"id\":0,\"position\":{\"x\":575.5500821018063,\"y\":429.4745484400657,\"z\":22000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":22000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 575.55, "y": 429.47, - "z": 10012.00 + "z": 22000.00 }, { "config": "{\"name\":\"d3ccc97e9c739fe9da2a\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":0,\"z\":4000,\"width\":197.38317757009344,\"height\":100,\"tabOrder\":2000}}],\"singleVisual\":{\"visualType\":\"image\",\"drillFilterOtherVisuals\":true,\"objects\":{\"general\":[{\"properties\":{\"imageUrl\":{\"expr\":{\"ResourcePackageItem\":{\"PackageName\":\"RegisteredResources\",\"PackageType\":1,\"ItemName\":\"pbilogo011716949638171492.png\"}}}}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Logo'\"}}}}}]}}}", @@ -875,13 +1085,13 @@ "z": 4000.00 }, { - "config": "{\"name\":\"d8d71594ac5026c5000b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":515.5500821018063,\"y\":369.4745484400657,\"z\":10006,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10006}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"d8d71594ac5026c5000b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":515.5500821018063,\"y\":369.4745484400657,\"z\":16000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":16000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 515.55, "y": 369.47, - "z": 10006.00 + "z": 16000.00 }, { "config": "{\"name\":\"da570baa35ab0703c7be\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":319.4745484400657,\"z\":10000,\"width\":245.9113300492611,\"height\":136.61740558292283,\"tabOrder\":10000}}],\"singleVisual\":{\"visualType\":\"funnel\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", @@ -893,31 +1103,31 @@ "z": 10000.00 }, { - "config": "{\"name\":\"de27fc71e1de760eda5d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":495.55008210180625,\"y\":349.4745484400657,\"z\":10004,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10004}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"de27fc71e1de760eda5d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":495.55008210180625,\"y\":349.4745484400657,\"z\":14000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":14000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 495.55, "y": 349.47, - "z": 10004.00 + "z": 14000.00 }, { - "config": "{\"name\":\"efe8fa5c68c062cd3976\",\"layouts\":[{\"id\":0,\"position\":{\"x\":475.55008210180625,\"y\":329.4745484400657,\"z\":10002,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10002}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"efe8fa5c68c062cd3976\",\"layouts\":[{\"id\":0,\"position\":{\"x\":475.55008210180625,\"y\":329.4745484400657,\"z\":12000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":12000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 475.55, "y": 329.47, - "z": 10002.00 + "z": 12000.00 }, { - "config": "{\"name\":\"fe65270602a904dd30b2\",\"layouts\":[{\"id\":0,\"position\":{\"x\":555.5500821018063,\"y\":409.4745484400657,\"z\":10010,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":10010}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"fe65270602a904dd30b2\",\"layouts\":[{\"id\":0,\"position\":{\"x\":555.5500821018063,\"y\":409.4745484400657,\"z\":20000,\"width\":186.00985221674878,\"height\":136.61740558292283,\"tabOrder\":20000}}],\"singleVisual\":{\"visualType\":\"tableEx\",\"projections\":{\"Values\":[{\"queryRef\":\"Inventory.Item\"},{\"queryRef\":\"Sum(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Quantity)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":0}}}]},\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", "height": 136.62, "width": 186.01, "x": 555.55, "y": 409.47, - "z": 10010.00 + "z": 20000.00 } ], "width": 1280.00 diff --git a/PBIXInspectorWinForm/MainForm.Designer.cs b/PBIXInspectorWinForm/MainForm.Designer.cs index ed60e54..d0010b2 100644 --- a/PBIXInspectorWinForm/MainForm.Designer.cs +++ b/PBIXInspectorWinForm/MainForm.Designer.cs @@ -283,7 +283,6 @@ private void InitializeComponent() // // openRulesFileDialog // - openRulesFileDialog.FileName = "openFileDialog2"; openRulesFileDialog.Filter = "Json files (*.json)|*.json|All files (*.*)|*.*"; openRulesFileDialog.FileOk += openRulesFileDialog_FileOk; //