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