From aecc21e04159a2cffc5b843f4c2e2bcb7e119961 Mon Sep 17 00:00:00 2001 From: Nat Van Gulck Date: Sat, 11 Nov 2023 21:27:05 +0000 Subject: [PATCH 1/4] Now enabling drillthrough to nested json from test's data mapping part. --- PBIXInspectorLibrary/Inspector.cs | 143 ++++++++++-------------------- 1 file changed, 49 insertions(+), 94 deletions(-) diff --git a/PBIXInspectorLibrary/Inspector.cs b/PBIXInspectorLibrary/Inspector.cs index 97068a7..7fb77f4 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() @@ -398,81 +391,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 +432,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 +477,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 +506,50 @@ 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 + { + 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) { From 970b5f78cd6eff68fa0a4ac8c74359a9528bc546 Mon Sep 17 00:00:00 2001 From: Nat Van Gulck Date: Sun, 12 Nov 2023 15:05:21 +0000 Subject: [PATCH 2/4] Introduced set custom operators/rules. --- .../CustomRules/SetDifferenceRule.cs | 86 +++++++++ .../CustomRules/SetEqualRule.cs | 90 +++++++++ .../CustomRules/SetIntersectionRule.cs | 86 +++++++++ .../CustomRules/SetSymmetricDifferenceRule.cs | 98 ++++++++++ .../CustomRules/SetUnionRule.cs | 92 +++++++++ PBIXInspectorLibrary/Inspector.cs | 6 +- PBIXInspectorTests/CustomRulesTests.cs | 179 +++++++++++++++++- 7 files changed, 635 insertions(+), 2 deletions(-) create mode 100644 PBIXInspectorLibrary/CustomRules/SetDifferenceRule.cs create mode 100644 PBIXInspectorLibrary/CustomRules/SetEqualRule.cs create mode 100644 PBIXInspectorLibrary/CustomRules/SetIntersectionRule.cs create mode 100644 PBIXInspectorLibrary/CustomRules/SetSymmetricDifferenceRule.cs create mode 100644 PBIXInspectorLibrary/CustomRules/SetUnionRule.cs 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 7fb77f4..3932cc3 100644 --- a/PBIXInspectorLibrary/Inspector.cs +++ b/PBIXInspectorLibrary/Inspector.cs @@ -110,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(); } /// 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 } } From c89e13b860f853c29251229abf31be43193f26cc Mon Sep 17 00:00:00 2001 From: Nat Van Gulck Date: Mon, 13 Nov 2023 23:00:07 +0000 Subject: [PATCH 3/4] Refined drillthrough to nested json logic. --- PBIXInspectorLibrary/Inspector.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PBIXInspectorLibrary/Inspector.cs b/PBIXInspectorLibrary/Inspector.cs index 3932cc3..c937882 100644 --- a/PBIXInspectorLibrary/Inspector.cs +++ b/PBIXInspectorLibrary/Inspector.cs @@ -216,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); @@ -543,6 +545,11 @@ internal bool EvalPath(string pathString, JsonNode? data, out JsonNode? result) } } } + else if (pathString.Trim().Equals(CONTEXTARRAY)) + { + result = data; + return true; + } else { var pathStringPath = string.Concat(pathString.StartsWith(JSONPOINTERSTART) ? string.Empty : JSONPOINTERSTART, pathString.Replace('.', '/')); From cf63b6223b5d02984191d759c1807f073a31f676 Mon Sep 17 00:00:00 2001 From: Nat Van Gulck Date: Sun, 19 Nov 2023 13:07:57 +0000 Subject: [PATCH 4/4] Update "Inventory sample - fails" pbix and pbip files to latest PBI Desktop version. Fixed issue with "openFileDialog2" string appearing in MainForm rules file dialog. --- .../Files/Inventory sample - fails.pbix | Bin 2088599 -> 2089344 bytes .../model.bim | 4 +- .../report.json | 284 +++++++++++++++--- PBIXInspectorWinForm/MainForm.Designer.cs | 1 - 4 files changed, 249 insertions(+), 40 deletions(-) diff --git a/PBIXInspectorTests/Files/Inventory sample - fails.pbix b/PBIXInspectorTests/Files/Inventory sample - fails.pbix index de67c05a081df2c513120935e5ced899fa3dae81..fd588f15970a1e3a85ad9a360e9863420d4113f3 100644 GIT binary patch delta 43718 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

L!Ie}iXu=`)57#YG%E#zgnz|pk{v;US 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 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; //