diff --git a/PBIXInspectorCLI/PBIXInspectorCLI.csproj b/PBIXInspectorCLI/PBIXInspectorCLI.csproj index 8188006..225d664 100644 --- a/PBIXInspectorCLI/PBIXInspectorCLI.csproj +++ b/PBIXInspectorCLI/PBIXInspectorCLI.csproj @@ -8,9 +8,9 @@ Program False True - 1.9.3.0 - 1.9.3 - 1.9.3 + 1.9.4.0 + 1.9.4 + 1.9.4 $(VersionPrefix) $(AssembblyName) pbiinspector.ico diff --git a/PBIXInspectorCLI/Program.cs b/PBIXInspectorCLI/Program.cs index 671a75e..c1c9a17 100644 --- a/PBIXInspectorCLI/Program.cs +++ b/PBIXInspectorCLI/Program.cs @@ -1,7 +1,5 @@ using PBIXInspectorLibrary; -using PBIXInspectorLibrary.Output; using PBIXInspectorWinLibrary; -using PBIXInspectorWinLibrary.Drawing; using PBIXInspectorWinLibrary.Utils; internal partial class Program @@ -9,7 +7,7 @@ internal partial class Program private static Args _parsedArgs = null; private static void Main(string[] args) - { + { #if DEBUG Console.WriteLine("Attach debugger to process? Press any key to continue."); Console.ReadLine(); @@ -20,7 +18,7 @@ private static void Main(string[] args) _parsedArgs = ArgsUtils.ParseArgs(args); Welcome(); - + PBIXInspectorWinLibrary.Main.WinMessageIssued += Main_MessageIssued; PBIXInspectorWinLibrary.Main.Run(_parsedArgs); @@ -76,7 +74,7 @@ private static String FormatConsoleMessage(MessageTypeEnum messageType, string m string template = _parsedArgs.ADOOutput ? Constants.ADOLogIssueTemplate : "{0}"; string msgType = _parsedArgs.ADOOutput ? messageType.ToString().ToLower() : messageType.ToString(); string msgSeparator = _parsedArgs.ADOOutput ? "" : ": "; - string messageTypeFormat = string.Format(template,msgType); + string messageTypeFormat = string.Format(template, msgType); return string.Concat(messageTypeFormat, msgSeparator, message); } diff --git a/PBIXInspectorLibrary/CustomRules/CountRule.cs b/PBIXInspectorLibrary/CustomRules/CountRule.cs index 150642e..408152a 100644 --- a/PBIXInspectorLibrary/CustomRules/CountRule.cs +++ b/PBIXInspectorLibrary/CustomRules/CountRule.cs @@ -16,7 +16,7 @@ public class CountRule : Json.Logic.Rule public CountRule(Json.Logic.Rule input) { - Input = input; + Input = input; } /// diff --git a/PBIXInspectorLibrary/CustomRules/DrillVariableRule.cs b/PBIXInspectorLibrary/CustomRules/DrillVariableRule.cs index f0be026..41f3c3a 100644 --- a/PBIXInspectorLibrary/CustomRules/DrillVariableRule.cs +++ b/PBIXInspectorLibrary/CustomRules/DrillVariableRule.cs @@ -1,9 +1,8 @@ using Json.Logic; +using Json.Pointer; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Serialization; -using Json.Pointer; -using System.Net.Http.Headers; namespace PBIXInspectorLibrary.CustomRules; @@ -67,7 +66,7 @@ internal DrillVariableRule(Json.Logic.Rule path, Json.Logic.Rule defaultValue) { //remove single quotes from beginning and end of string if any. string strVal; - if (val.ToString()!.StartsWith("'") && val.ToString()!.EndsWith("'")) + if (val.ToString()!.StartsWith("'") && val.ToString()!.EndsWith("'")) { strVal = val.ToString()!.Substring(1, val.ToString()!.Length - 2); } diff --git a/PBIXInspectorLibrary/CustomRules/RectangleOverlap.cs b/PBIXInspectorLibrary/CustomRules/RectangleOverlap.cs index dc204ab..ca5d486 100644 --- a/PBIXInspectorLibrary/CustomRules/RectangleOverlap.cs +++ b/PBIXInspectorLibrary/CustomRules/RectangleOverlap.cs @@ -1,7 +1,7 @@ using Json.Logic; using System.Drawing; -using System.Text.Json.Nodes; using System.Text.Json; +using System.Text.Json.Nodes; using System.Text.Json.Serialization; namespace PBIXInspectorLibrary.CustomRules diff --git a/PBIXInspectorLibrary/Exceptions/PbiFileEntryNotFoundException.cs b/PBIXInspectorLibrary/Exceptions/PbiFileEntryNotFoundException.cs index e2d324b..339ca68 100644 --- a/PBIXInspectorLibrary/Exceptions/PbiFileEntryNotFoundException.cs +++ b/PBIXInspectorLibrary/Exceptions/PbiFileEntryNotFoundException.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PBIXInspectorLibrary.Exceptions +namespace PBIXInspectorLibrary.Exceptions { internal class PbiFileEntryNotFoundException : Exception { diff --git a/PBIXInspectorLibrary/Inspector.cs b/PBIXInspectorLibrary/Inspector.cs index ee4d3e1..97068a7 100644 --- a/PBIXInspectorLibrary/Inspector.cs +++ b/PBIXInspectorLibrary/Inspector.cs @@ -4,9 +4,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PBIXInspectorLibrary.Output; -using System.Linq.Expressions; using System.Text; -using System.Text.Json; using System.Text.Json.Nodes; namespace PBIXInspectorLibrary @@ -39,7 +37,7 @@ public Inspector(string pbiFilePath, InspectionRules inspectionRules) : base(pbi this._inspectionRules = inspectionRules; AddCustomRulesToRegistry(); } - + /// /// /// @@ -49,7 +47,7 @@ public Inspector(string pbiFilePath, string rulesFilePath) : base(pbiFilePath, r { this._pbiFilePath = pbiFilePath; this._rulesFilePath = rulesFilePath; - + try { var inspectionRules = this.DeserialiseRules(rulesFilePath); @@ -83,19 +81,19 @@ private PbiFile InitPbiFile(string pbiFilePath) //} //else //{ - switch (PbiFile.PBIFileType(pbiFilePath)) - { - case PbiFile.PBIFileTypeEnum.PBIX: - return new PbixFile(pbiFilePath); - break; - case PbiFile.PBIFileTypeEnum.PBIP: - return new PbipFile(pbiFilePath); - break; - case PbiFile.PBIFileTypeEnum.PBIPReport: - return new PbipReportFile(pbiFilePath); - default: - throw new PBIXInspectorException(string.Format("Could not determine the extension of PBI file with path \"{0}\".", pbiFilePath)); - } + switch (PbiFile.PBIFileType(pbiFilePath)) + { + case PbiFile.PBIFileTypeEnum.PBIX: + return new PbixFile(pbiFilePath); + break; + case PbiFile.PBIFileTypeEnum.PBIP: + return new PbipFile(pbiFilePath); + break; + case PbiFile.PBIFileTypeEnum.PBIPReport: + return new PbipReportFile(pbiFilePath); + default: + throw new PBIXInspectorException(string.Format("Could not determine the extension of PBI file with path \"{0}\".", pbiFilePath)); + } //} } @@ -135,7 +133,7 @@ public IEnumerable Inspect() { string pbiEntryPath; - switch (pbiFile.FileType) + switch (pbiFile.FileType) { case PbiFile.PBIFileTypeEnum.PBIX: pbiEntryPath = entry.PbixEntryPath; @@ -211,7 +209,7 @@ public IEnumerable Inspect() var forEachDisplayName = !string.IsNullOrEmpty(rule.ForEachPathDisplayName) ? ExecuteTokensPath((JObject?)forEachToken, rule.Name, rule.ForEachPathDisplayName, rule.PathErrorWhenNoMatch) : null; var strForEachDisplayName = forEachDisplayName != null ? forEachDisplayName[0].ToString() : string.Empty; - + try { var tokens = ExecuteTokensPath(forEachToken, rule.Name, rule.Path, rule.PathErrorWhenNoMatch); @@ -289,7 +287,7 @@ public IEnumerable Inspect() } } - return testResults; + return testResults; } private MessageTypeEnum ConvertRuleLogType(string ruleLogType) @@ -516,7 +514,7 @@ 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(".")) diff --git a/PBIXInspectorLibrary/MessageIssuedEventArgs.cs b/PBIXInspectorLibrary/MessageIssuedEventArgs.cs index 79090c1..5d00552 100644 --- a/PBIXInspectorLibrary/MessageIssuedEventArgs.cs +++ b/PBIXInspectorLibrary/MessageIssuedEventArgs.cs @@ -10,7 +10,7 @@ public MessageIssuedEventArgs(string message, MessageTypeEnum messageType) public string Message { get; private set; } public MessageTypeEnum MessageType { get; private set; } - public bool DialogOKResponse { get; set;} + public bool DialogOKResponse { get; set; } } public enum MessageTypeEnum diff --git a/PBIXInspectorLibrary/PbiFile.cs b/PBIXInspectorLibrary/PbiFile.cs index a8f5390..5df8e5d 100644 --- a/PBIXInspectorLibrary/PbiFile.cs +++ b/PBIXInspectorLibrary/PbiFile.cs @@ -1,11 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO.Compression; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PBIXInspectorLibrary +namespace PBIXInspectorLibrary { internal abstract class PbiFile : IDisposable { diff --git a/PBIXInspectorLibrary/PbixFile.cs b/PBIXInspectorLibrary/PbixFile.cs index f39fab1..81176dc 100644 --- a/PBIXInspectorLibrary/PbixFile.cs +++ b/PBIXInspectorLibrary/PbixFile.cs @@ -1,11 +1,10 @@ -using System.Data; -using System.IO.Compression; +using System.IO.Compression; namespace PBIXInspectorLibrary { internal class PbixFile : PbiFile, IDisposable { - + private ZipArchive _za = null; private bool disposedValue; @@ -63,7 +62,7 @@ protected virtual void Dispose(bool disposing) } } - + // TODO: set large fields to null disposedValue = true; } @@ -76,6 +75,6 @@ public override void Dispose() GC.SuppressFinalize(this); } - + } } \ No newline at end of file diff --git a/PBIXInspectorTests/AppUtilsTests.cs b/PBIXInspectorTests/AppUtilsTests.cs new file mode 100644 index 0000000..458962b --- /dev/null +++ b/PBIXInspectorTests/AppUtilsTests.cs @@ -0,0 +1,15 @@ +using PBIXInspectorWinLibrary.Utils; + +namespace PBIXInspectorTests +{ + [TestFixture] + public class AppUtilsTests + { + [Test] + public void AboutTest() + { + var about = AppUtils.About(); + Assert.That(string.IsNullOrEmpty(about), Is.False); + } + } +} diff --git a/PBIXInspectorTests/CLIArgsUtilsTest.cs b/PBIXInspectorTests/CLIArgsUtilsTest.cs index 92e44f8..4fb8bab 100644 --- a/PBIXInspectorTests/CLIArgsUtilsTest.cs +++ b/PBIXInspectorTests/CLIArgsUtilsTest.cs @@ -109,12 +109,12 @@ public void TestCLIArgsUtilsDefaults() parsedArgs = ArgsUtils.ParseArgs(args); - Assert.IsTrue(parsedArgs.CONSOLEOutput - && !parsedArgs.Verbose - && parsedArgs.DeleteOutputDirOnExit + Assert.IsTrue(parsedArgs.CONSOLEOutput + && !parsedArgs.Verbose + && parsedArgs.DeleteOutputDirOnExit && !string.IsNullOrEmpty(parsedArgs.OutputDirPath) - && !parsedArgs.HTMLOutput - && !parsedArgs.JSONOutput + && !parsedArgs.HTMLOutput + && !parsedArgs.JSONOutput && !parsedArgs.PNGOutput); } @@ -207,6 +207,63 @@ public void TestCLIArgsUtilsResolvePbiFilePathInput2() Assert.IsTrue(resolvedPath == expectedPath); } + [Test] + public void TestCLIArgsUtilsResolvePbiFilePathInput3() + { + string inputPath = @"C:\TEMP\VisOps\Sales - custom colours.Report\report.pbix"; + string expectedPath = @"C:\TEMP\VisOps\Sales - custom colours.Report\report.pbix"; + string resolvedPath = ArgsUtils.ResolvePbiFilePathInput(inputPath); + + Assert.IsTrue(resolvedPath == expectedPath); + } + + [Test] + public void TestCLIArgsUtilsSuccess_FormatsOption() + { + string[] args = "-pbipreport pbipPath -rules rulesPath -formats CONSOLE,HTML,PNG,JSON -verbose true".Split(" "); + var parsedArgs = ArgsUtils.ParseArgs(args); + + Assert.True(parsedArgs.PBIFilePath.Equals("pbipPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.RulesFilePath.Equals("rulesPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.CONSOLEOutput && parsedArgs.HTMLOutput && parsedArgs.PNGOutput && parsedArgs.JSONOutput && parsedArgs.Verbose); + } + + [Test] + public void TestCLIArgsUtilsSuccess_FormatsOptionMissing() + { + string[] args = "-pbipreport pbipPath -rules rulesPath -verbose true".Split(" "); + var parsedArgs = ArgsUtils.ParseArgs(args); + + Assert.True(parsedArgs.PBIFilePath.Equals("pbipPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.RulesFilePath.Equals("rulesPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.CONSOLEOutput && !parsedArgs.HTMLOutput && !parsedArgs.PNGOutput && !parsedArgs.JSONOutput && parsedArgs.Verbose); + } + + [Test] + public void TestCLIArgsUtilsSuccess_FormatsOptionUnparseable() + { + string[] args = "-pbipreport pbipPath -rules rulesPath -formats XYZ -verbose true".Split(" "); + var parsedArgs = ArgsUtils.ParseArgs(args); + + Assert.True(parsedArgs.PBIFilePath.Equals("pbipPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.RulesFilePath.Equals("rulesPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.CONSOLEOutput && !parsedArgs.HTMLOutput && !parsedArgs.PNGOutput && !parsedArgs.JSONOutput && parsedArgs.Verbose); + } + + [Test] + public void TestCLIArgsUtilsSuccess_VerboseOption() + { + string[] args = "-pbipreport pbipPath -rules rulesPath -verbose true".Split(" "); + var parsedArgs = ArgsUtils.ParseArgs(args); + + Assert.True(parsedArgs.PBIFilePath.Equals("pbipPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.RulesFilePath.Equals("rulesPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.Verbose); + } + + [Test] + public void TestCLIArgsUtilsSuccess_VerboseOptionFalse2() + { + string[] args = "-pbipreport pbipPath -rules rulesPath -verbose false".Split(" "); + var parsedArgs = ArgsUtils.ParseArgs(args); + + Assert.True(parsedArgs.PBIFilePath.Equals("pbipPath", StringComparison.OrdinalIgnoreCase) && parsedArgs.RulesFilePath.Equals("rulesPath", StringComparison.OrdinalIgnoreCase) && !parsedArgs.Verbose); + } + + } } -#pragma warning restore CS8602 \ No newline at end of file + +#pragma warning restore CS8602 \ No newline at end of file diff --git a/PBIXInspectorTests/CustomRulesTests.cs b/PBIXInspectorTests/CustomRulesTests.cs index 04cf991..41bee33 100644 --- a/PBIXInspectorTests/CustomRulesTests.cs +++ b/PBIXInspectorTests/CustomRulesTests.cs @@ -1,5 +1,5 @@ -using System.Text.Json.Nodes; -using PBIXInspectorLibrary.CustomRules; +using PBIXInspectorLibrary.CustomRules; +using System.Text.Json.Nodes; namespace PBIXInspectorTests { diff --git a/PBIXInspectorTests/Files/Inventory sample - fails.pbix b/PBIXInspectorTests/Files/Inventory sample - fails.pbix index 1e16128..de67c05 100644 Binary files a/PBIXInspectorTests/Files/Inventory sample - fails.pbix and b/PBIXInspectorTests/Files/Inventory sample - fails.pbix differ diff --git a/PBIXInspectorTests/Files/Inventory sample - passes.pbix b/PBIXInspectorTests/Files/Inventory sample - passes.pbix new file mode 100644 index 0000000..638f742 Binary files /dev/null and b/PBIXInspectorTests/Files/Inventory sample - passes.pbix differ diff --git a/PBIXInspectorTests/ImageUtilsTest.cs b/PBIXInspectorTests/ImageUtilsTest.cs new file mode 100644 index 0000000..acfab19 --- /dev/null +++ b/PBIXInspectorTests/ImageUtilsTest.cs @@ -0,0 +1,27 @@ +using PBIXInspectorLibrary.Output; +using PBIXInspectorWinLibrary.Drawing; + +namespace PBIXInspectorTests +{ + [TestFixture] + internal class ImageUtilsTest + { + [Test] + public void ConvertBitmapToBase64Test() + { + var bitmapPath = string.Empty; + + ArgumentException ex = Assert.Throws( + () => ImageUtils.ConvertBitmapToBase64(bitmapPath)); + } + [Test] + public void DrawReportPagesTest() + { + var fieldMapResults = new List(); + var testResults = new List(); + var outputDir = ""; + ImageUtils.DrawReportPages(fieldMapResults, testResults, outputDir); + Assert.IsTrue(string.IsNullOrEmpty(outputDir)); + } + } +} diff --git a/PBIXInspectorTests/JsonAssert.cs b/PBIXInspectorTests/JsonAssert.cs index bb52323..d95f21a 100644 --- a/PBIXInspectorTests/JsonAssert.cs +++ b/PBIXInspectorTests/JsonAssert.cs @@ -20,8 +20,8 @@ //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE //SOFTWARE. -using System.Text.Json.Nodes; using Json.More; +using System.Text.Json.Nodes; namespace PBIXInspectorTests { diff --git a/PBIXInspectorTests/PBIXInspectorTests.csproj b/PBIXInspectorTests/PBIXInspectorTests.csproj index eb48b85..850c4dd 100644 --- a/PBIXInspectorTests/PBIXInspectorTests.csproj +++ b/PBIXInspectorTests/PBIXInspectorTests.csproj @@ -9,12 +9,37 @@ - + + Never + + + Never + + + Never + + + Always + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + PreserveNewest + + PreserveNewest - - + + PreserveNewest - + @@ -46,6 +71,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -88,7 +116,21 @@ - + + + + + + + + Never + + + Never + + + PreserveNewest + diff --git a/PBIXInspectorTests/SuiteRunner.cs b/PBIXInspectorTests/SuiteRunner.cs index 66f9010..e77770f 100644 --- a/PBIXInspectorTests/SuiteRunner.cs +++ b/PBIXInspectorTests/SuiteRunner.cs @@ -23,6 +23,7 @@ using PBIXInspectorLibrary; using PBIXInspectorLibrary.Output; using System.Text.Json; +using System.Text.Json.Nodes; namespace PBIXInspectorTests; @@ -51,7 +52,7 @@ public void RunPbixTest(TestResult testResult) #region PbipTestSuite public static IEnumerable PbipTestSuite() { - string PBIPFilePath = @"Files\pbip\Inventory test.pbip"; + string PBIPFilePath = @"Files\pbip\Inventory test.Report"; string RulesFilePath = @"Files\Inventory rules test.json"; Console.WriteLine("Running test suite..."); @@ -65,6 +66,153 @@ public void RunPbipTest(TestResult testResult) } #endregion + #region BasePassSuite + public static IEnumerable BasePassPBIXSuite() + { + string PBIXFilePath = @"Files\Inventory sample - passes.pbix"; + string RulesFilePath = @"Files\Base-rules.json"; + + Console.WriteLine("Running base pass PBIX suite..."); + return Suite(PBIXFilePath, RulesFilePath); + } + + [TestCaseSource(nameof(BasePassPBIXSuite))] + public void RunBasePassPBIX(TestResult testResult) + { + Assert.True(testResult.Pass, testResult.Message); + } + #endregion + + #region BaseFailSuite + public static IEnumerable BaseFailPBIXSuite() + { + string PBIXFilePath = @"Files\Inventory sample - fails.pbix"; + string RulesFilePath = @"Files\Base-rules.json"; + + Console.WriteLine("Running base fail PBIX suite..."); + return Suite(PBIXFilePath, RulesFilePath); + } + + [TestCaseSource(nameof(BaseFailPBIXSuite))] + public void RunBaseFailPBIX(TestResult testResult) + { + RunBaseFail(testResult); + } + + public static IEnumerable BaseFailPBIPSuite() + { + string PBIPFilePath = @"Files\pbip\Inventory sample - fails.Report"; + string RulesFilePath = @"Files\Base-rules.json"; + + Console.WriteLine("Running base fail PBIP suite..."); + return Suite(PBIPFilePath, RulesFilePath); + } + + [TestCaseSource(nameof(BaseFailPBIPSuite))] + public void RunBaseFailPBIP(TestResult testResult) + { + RunBaseFail(testResult); + } + + private void RunBaseFail(TestResult testResult) + { + string expected = "[]"; + switch (testResult.RuleName) + { + case "Remove custom visuals which are not used in the report.": + expected = "[\"Aquarium1442671919391\"]"; + JsonAssert.AreEquivalent(testResult.Actual, JsonNode.Parse(expected)); + break; + case "Reduce the number of visible visuals on the page": + if (testResult.ParentName == "ReportSectionfb0835fa991786b43a3f") + { + Assert.False(testResult.Pass, testResult.Message); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Reduce the number of objects within visuals": + if (testResult.ParentName == "ReportSection4602098ba1ff5a3805a9") + { + Assert.False(testResult.Pass, testResult.Message); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Reduce usage of TopN filtering visuals by page": + if (testResult.ParentName == "ReportSection3440cc1dc4ec63ca3d06") + { + Assert.False(testResult.Pass, testResult.Message); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Reduce usage of Advanced filtering visuals by page": + if (testResult.ParentName == "ReportSectiond7d52b137add50d28b88") + { + Assert.False(testResult.Pass, testResult.Message); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Reduce number of pages per report": + Assert.True(testResult.Pass, testResult.Message); + break; + case "Avoid setting ‘Show items with no data’ on columns": + expected = "[\"797168e1f1e7658ceae6\",\"97ad01a2b8fbfca3220c\"]"; + if (testResult.ParentName == "ReportSection5f326c8a8185db501ad9") + { + JsonAssert.AreEquivalent(testResult.Actual, JsonNode.Parse(expected)); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Tooltip and Drillthrough pages should be hidden": + if (testResult.ParentName == "ReportSectionadc267c0d12e40458799" + || testResult.ParentName == "ReportSection8952e5fd70dcea579d3b") + { + Assert.False(testResult.Pass, testResult.Message); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Ensure charts use theme colours": + if (testResult.ParentName == "ReportSection6c3c3f97279fafdeeb57") + { + expected = "[\"1a67964cf02b6170c3b8\"]"; + JsonAssert.AreEquivalent(testResult.Actual, JsonNode.Parse(expected)); + } + else + { + Assert.True(testResult.Pass, testResult.Message); + } + break; + case "Ensure pages do not scroll vertically": + expected = "[\"Scrolling page\"]"; + JsonAssert.AreEquivalent(testResult.Actual, JsonNode.Parse(expected)); + break; + case "Ensure alternativeText has been defined for all visuals": + Assert.False(testResult.Pass, testResult.Message); + break; + default: + Assert.True(testResult.Pass, testResult.Message); + break; + } + } + #endregion + #region JsonLogicSuite /// /// Test PBIX using the base JsonLogicTest file to make sure we didn't break JsonLogic @@ -120,7 +268,6 @@ public static IEnumerable SampleSuite() Console.WriteLine("Running sample suite..."); return Suite(PBIXFilePath, RulesFilePath); } - [TestCaseSource(nameof(SampleSuite))] public void RunSample(TestResult testResult) @@ -146,25 +293,6 @@ public void RunBase(TestResult testResult) } #endregion - #region BaseFailSuite - //public static IEnumerable BaseFailSuite() - //{ - // string PBIXFilePath = @"Files\Inventory sample - fails.pbix"; - // string RulesFilePath = @"Files\Base-rules.json"; - - // Console.WriteLine("Running base fail suite..."); - // return Suite(PBIXFilePath, RulesFilePath); - //} - - - //[TestCaseSource(nameof(BaseFailSuite))] - //public void RunFailSample(TestResult testResult) - //{ - // Assert.False(testResult.Pass, testResult.Message); - // //Assert.True(testResult.Actual) - //} - #endregion - public static IEnumerable Suite(string PBIXFilePath, string RulesFilePath) { try diff --git a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/item.config.json b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/item.config.json index 2fd6a4e..14daf22 100644 --- a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/item.config.json +++ b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Dataset/item.config.json @@ -1,4 +1,4 @@ { "version": "1.0", - "logicalId": "827e7cf1-5390-489a-a165-157063cc91cf" + "logicalId": "5aa99bad-2284-473f-85db-27ddd3d0bbae" } \ No newline at end of file diff --git a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/item.config.json b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/item.config.json index 6cdb1d8..068fbaa 100644 --- a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/item.config.json +++ b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/item.config.json @@ -1,4 +1,4 @@ { "version": "1.0", - "logicalId": "bb48391f-ebd1-4dd6-9359-5800bc5891ee" + "logicalId": "1000013e-6374-4adb-9417-9edf0b95be00" } \ No newline at end of file diff --git a/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/report.json b/PBIXInspectorWinForm/Files/pbip/Inventory sample - fails.Report/report.json index a528dac..3f718b1 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\":12,\"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.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\"}}}}}]}}", "layoutOptimization": 0, "pods": [ { @@ -119,14 +119,32 @@ "ordinal": 4, "visualContainers": [ { - "config": "{\"name\":\"0e1feb172e192d6ea8cf\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.93333333333334,\"z\":0,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":1000}}],\"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\"}}}}}]}}}", + "config": "{\"name\":\"0e1feb172e192d6ea8cf\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.87027914614123,\"z\":0,\"width\":438.2266009852217,\"height\":288.9983579638752,\"tabOrder\":1000}}],\"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": "[{\"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.71, - "width": 1280.00, + "height": 289.00, + "width": 438.23, "x": 0.00, - "y": 430.93, + "y": 430.87, "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\"}}}}}]}}}", + "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 + }, + { + "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\"}}}}}]}}}", + "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 + }, { "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}}", "filters": "[]", @@ -212,7 +230,7 @@ "z": 4000.00 }, { - "config": "{\"name\":\"e78a74b8026f736154be\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":3000}}],\"singleVisual\":{\"visualType\":\"clusteredBarChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true},{\"queryRef\":\"Inventory.Colour\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"},{\"queryRef\":\"Sum(Inventory.Cost per item)\"},{\"queryRef\":\"Inventory.Sum of Qty\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"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)\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Cost per item\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Cost per item)\",\"NativeReferenceName\":\"Cost per item\"},{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Sum of Qty\"},\"Name\":\"Inventory.Sum of Qty\",\"NativeReferenceName\":\"Sum of Qty\"}],\"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\":\"e78a74b8026f736154be\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":3000}}],\"singleVisual\":{\"visualType\":\"clusteredBarChart\",\"projections\":{\"Category\":[{\"queryRef\":\"Inventory.Item\",\"active\":true},{\"queryRef\":\"Inventory.Colour\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(Inventory.Quantity)\"},{\"queryRef\":\"Sum(Inventory.Cost per item)\"},{\"queryRef\":\"Inventory.Sum of Qty\"},{\"queryRef\":\"Avg(Inventory.Cost per item)\"},{\"queryRef\":\"Avg(Inventory.Quantity)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Item\"},\"Name\":\"Inventory.Item\"},{\"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)\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Cost per item\"}},\"Function\":0},\"Name\":\"Sum(Inventory.Cost per item)\",\"NativeReferenceName\":\"Cost per item\"},{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Sum of Qty\"},\"Name\":\"Inventory.Sum of Qty\",\"NativeReferenceName\":\"Sum of Qty\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Cost per item\"}},\"Function\":1},\"Name\":\"Avg(Inventory.Cost per item)\",\"NativeReferenceName\":\"Average of Cost per item\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Quantity\"}},\"Function\":1},\"Name\":\"Avg(Inventory.Quantity)\",\"NativeReferenceName\":\"Average of 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": 288.71, "width": 1280.00, @@ -251,7 +269,7 @@ "z": 4250.00 }, { - "config": "{\"name\":\"797168e1f1e7658ceae6\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":3000}}],\"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}}}]},\"queryOptions\":{\"keepProjectionOrder\":true},\"showAllRoles\":[\"Category\"],\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"objects\":{\"dataPoint\":[{\"properties\":{\"fill\":{\"solid\":{\"color\":{\"expr\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Colour\"}},\"Function\":3}}}}}},\"selector\":{\"data\":[{\"dataViewWildcard\":{\"matchingOption\":1}}]}},{\"properties\":{\"fill\":{\"solid\":{\"color\":{\"expr\":{\"Literal\":{\"Value\":\"'#118DFF'\"}}}}}},\"selector\":{\"data\":[{\"scopeId\":{\"Comparison\":{\"ComparisonKind\":0,\"Left\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"Inventory\"}},\"Property\":\"Colour\"}},\"Right\":{\"Literal\":{\"Value\":\"'Green'\"}}}}}]}}],\"categoryAxis\":[{\"properties\":{\"reverseStackOrder\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}}}}]},\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"797168e1f1e7658ceae6\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.22222222222223,\"z\":3000,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":3000}}],\"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}}}]},\"queryOptions\":{\"keepProjectionOrder\":true},\"showAllRoles\":[\"Category\"],\"drillFilterOtherVisuals\":true,\"hasDefaultSort\":true,\"vcObjects\":{\"title\":[{\"properties\":{\"text\":{\"expr\":{\"Literal\":{\"Value\":\"'Quantity Bar Chart'\"}}},\"titleWrap\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}],\"background\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"transparency\":{\"expr\":{\"Literal\":{\"Value\":\"0D\"}}}}}]}}}", "filters": "[]", "height": 288.71, "width": 1280.00, @@ -346,6 +364,63 @@ ], "width": 1280.00 }, + { + "config": "{\"relationships\":[{\"source\":\"1ccdc7fd6ca0178e6096\",\"target\":\"bbc75e5df52527942a69\",\"type\":1},{\"source\":\"12bdabcb27a547b75d69\",\"target\":\"bbc75e5df52527942a69\",\"type\":1},{\"source\":\"12bdabcb27a547b75d69\",\"target\":\"1954ea05ff0aabedcca0\",\"type\":1},{\"source\":\"1954ea05ff0aabedcca0\",\"target\":\"bbc75e5df52527942a69\",\"type\":1}]}", + "displayName": "Interactions", + "displayOption": 1, + "filters": "[]", + "height": 720.00, + "name": "ReportSection6b18d49925d7cb5d47ab", + "ordinal": 13, + "visualContainers": [ + { + "config": "{\"name\":\"12bdabcb27a547b75d69\",\"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\":\"1954ea05ff0aabedcca0\",\"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\":\"1ccdc7fd6ca0178e6096\",\"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\":\"bbc75e5df52527942a69\",\"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\":\"f761d8a73589b14e3f57\",\"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 + } + ], + "width": 1280.00 + }, { "config": "{}", "displayName": "Deneb custom visual", @@ -356,7 +431,7 @@ "ordinal": 12, "visualContainers": [ { - "config": "{\"name\":\"1a67964cf02b6170c3b8\",\"layouts\":[{\"id\":0,\"position\":{\"x\":548.5714285714286,\"y\":8.407224958949097,\"z\":0,\"width\":731.4285714285714,\"height\":692.5451559934319}}],\"singleVisual\":{\"visualType\":\"deneb7E15AEF80B9E4D4F8E12924291ECE89A\",\"projections\":{\"dataset\":[{\"queryRef\":\"Inventory.Colour\"},{\"queryRef\":\"Inventory.Sum of Qty\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Colour\"},\"Name\":\"Inventory.Colour\",\"NativeReferenceName\":\"Colour\"},{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Sum of Qty\"},\"Name\":\"Inventory.Sum of Qty\",\"NativeReferenceName\":\"Sum of Qty\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Sum of Qty\"}}}]},\"drillFilterOtherVisuals\":true,\"objects\":{\"display\":[{\"properties\":{\"viewportHeight\":{\"expr\":{\"Literal\":{\"Value\":\"682.5451559934319D\"}}},\"viewportWidth\":{\"expr\":{\"Literal\":{\"Value\":\"721.4285714285714D\"}}}}}],\"developer\":[{\"properties\":{\"version\":{\"expr\":{\"Literal\":{\"Value\":\"'1.5.1.0'\"}}},\"showVersionNotification\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}}}}],\"vega\":[{\"properties\":{\"provider\":{\"expr\":{\"Literal\":{\"Value\":\"'vegaLite'\"}}},\"jsonSpec\":{\"expr\":{\"Literal\":{\"Value\":\"'{\\n \\\"data\\\": {\\\"name\\\": \\\"dataset\\\"},\\n \\\"layer\\\": [\\n {\\n \\\"mark\\\": {\\n \\\"type\\\": \\\"bar\\\",\\n \\\"opacity\\\": 0.3,\\n \\\"tooltip\\\": true\\n },\\n \\\"encoding\\\": {\\n \\\"x\\\": {\\\"field\\\": \\\"Sum of Qty\\\"}\\n }\\n },\\n {\\n \\\"mark\\\": {\\n \\\"type\\\": \\\"bar\\\",\\n \\\"tooltip\\\": true\\n },\\n \\\"encoding\\\": {\\n \\\"x\\\": {\\n \\\"field\\\": \\\"Sum of Qty__highlight\\\"\\n },\\n \\\"opacity\\\": {\\n \\\"condition\\\": {\\n \\\"test\\\": {\\n \\\"field\\\": \\\"__selected__\\\",\\n \\\"equal\\\": \\\"off\\\"\\n },\\n \\\"value\\\": 0\\n },\\n \\\"value\\\": 1\\n }\\n }\\n }\\n ],\\n \\\"encoding\\\": {\\n \\\"y\\\": {\\n \\\"field\\\": \\\"Colour\\\",\\n \\\"type\\\": \\\"nominal\\\"\\n },\\n \\\"x\\\": {\\n \\\"type\\\": \\\"quantitative\\\",\\n \\\"axis\\\": {\\\"title\\\": \\\"Sum of Qty\\\"}\\n }\\n }\\n}'\"}}},\"jsonConfig\":{\"expr\":{\"Literal\":{\"Value\":\"'{\\n \\\"view\\\": {\\\"stroke\\\": \\\"transparent\\\"},\\n \\\"font\\\": \\\"Segoe UI\\\",\\n \\\"arc\\\": {},\\n \\\"area\\\": {\\n \\\"line\\\": true,\\n \\\"opacity\\\": 0.6\\n },\\n \\\"bar\\\": {},\\n \\\"line\\\": {\\n \\\"strokeWidth\\\": 3,\\n \\\"strokeCap\\\": \\\"round\\\",\\n \\\"strokeJoin\\\": \\\"round\\\"\\n },\\n \\\"path\\\": {},\\n \\\"point\\\": {\\\"filled\\\": true, \\\"size\\\": 75},\\n \\\"rect\\\": {},\\n \\\"shape\\\": {},\\n \\\"symbol\\\": {\\n \\\"strokeWidth\\\": 1.5,\\n \\\"size\\\": 50\\n },\\n \\\"text\\\": {\\n \\\"font\\\": \\\"Segoe UI\\\",\\n \\\"fontSize\\\": 12,\\n \\\"fill\\\": \\\"#605E5C\\\"\\n },\\n \\\"axis\\\": {\\n \\\"ticks\\\": false,\\n \\\"grid\\\": false,\\n \\\"domain\\\": false,\\n \\\"labelColor\\\": \\\"#605E5C\\\",\\n \\\"labelFontSize\\\": 12,\\n \\\"titleFont\\\": \\\"wf_standard-font, helvetica, arial, sans-serif\\\",\\n \\\"titleColor\\\": \\\"#252423\\\",\\n \\\"titleFontSize\\\": 16,\\n \\\"titleFontWeight\\\": \\\"normal\\\"\\n },\\n \\\"axisQuantitative\\\": {\\n \\\"tickCount\\\": 3,\\n \\\"grid\\\": true,\\n \\\"gridColor\\\": \\\"#C8C6C4\\\",\\n \\\"gridDash\\\": [1, 5],\\n \\\"labelFlush\\\": false\\n },\\n \\\"axisX\\\": {\\\"labelPadding\\\": 5},\\n \\\"axisY\\\": {\\\"labelPadding\\\": 10},\\n \\\"header\\\": {\\n \\\"titleFont\\\": \\\"wf_standard-font, helvetica, arial, sans-serif\\\",\\n \\\"titleFontSize\\\": 16,\\n \\\"titleColor\\\": \\\"#252423\\\",\\n \\\"labelFont\\\": \\\"Segoe UI\\\",\\n \\\"labelFontSize\\\": 13.333333333333332,\\n \\\"labelColor\\\": \\\"#605E5C\\\"\\n },\\n \\\"legend\\\": {\\n \\\"titleFont\\\": \\\"Segoe UI\\\",\\n \\\"titleFontWeight\\\": \\\"bold\\\",\\n \\\"titleColor\\\": \\\"#605E5C\\\",\\n \\\"labelFont\\\": \\\"Segoe UI\\\",\\n \\\"labelFontSize\\\": 13.333333333333332,\\n \\\"labelColor\\\": \\\"#605E5C\\\",\\n \\\"symbolType\\\": \\\"circle\\\",\\n \\\"symbolSize\\\": 75\\n }\\n}'\"}}},\"isNewDialogOpen\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"version\":{\"expr\":{\"Literal\":{\"Value\":\"'5.6.1'\"}}},\"enableTooltips\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"enableContextMenu\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"enableHighlight\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"enableSelection\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"selectionMaxDataPoints\":{\"expr\":{\"Literal\":{\"Value\":\"50D\"}}}}}]}}}", + "config": "{\"name\":\"1a67964cf02b6170c3b8\",\"layouts\":[{\"id\":0,\"position\":{\"x\":548.5714285714286,\"y\":8.407224958949097,\"z\":0,\"width\":731.4285714285714,\"height\":692.5451559934319,\"tabOrder\":0}}],\"singleVisual\":{\"visualType\":\"deneb7E15AEF80B9E4D4F8E12924291ECE89A\",\"projections\":{\"dataset\":[{\"queryRef\":\"Inventory.Colour\"},{\"queryRef\":\"Inventory.Sum of Qty\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"i\",\"Entity\":\"Inventory\",\"Type\":0}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Colour\"},\"Name\":\"Inventory.Colour\",\"NativeReferenceName\":\"Colour\"},{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Sum of Qty\"},\"Name\":\"Inventory.Sum of Qty\",\"NativeReferenceName\":\"Sum of Qty\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"i\"}},\"Property\":\"Sum of Qty\"}}}]},\"drillFilterOtherVisuals\":true,\"objects\":{\"display\":[{\"properties\":{\"viewportHeight\":{\"expr\":{\"Literal\":{\"Value\":\"682.5451559934319D\"}}},\"viewportWidth\":{\"expr\":{\"Literal\":{\"Value\":\"721.4285714285714D\"}}}}}],\"developer\":[{\"properties\":{\"version\":{\"expr\":{\"Literal\":{\"Value\":\"'1.5.1.0'\"}}}}}],\"vega\":[{\"properties\":{\"provider\":{\"expr\":{\"Literal\":{\"Value\":\"'vegaLite'\"}}},\"jsonSpec\":{\"expr\":{\"Literal\":{\"Value\":\"'{\\n \\\"data\\\": {\\\"name\\\": \\\"dataset\\\"},\\n \\\"layer\\\": [\\n {\\n \\\"mark\\\": {\\n \\\"type\\\": \\\"bar\\\",\\n \\\"opacity\\\": 0.3,\\n \\\"tooltip\\\": true\\n },\\n \\\"encoding\\\": {\\n \\\"x\\\": {\\\"field\\\": \\\"Sum of Qty\\\"}\\n }\\n },\\n {\\n \\\"mark\\\": {\\n \\\"type\\\": \\\"bar\\\",\\n \\\"tooltip\\\": true\\n },\\n \\\"encoding\\\": {\\n \\\"x\\\": {\\n \\\"field\\\": \\\"Sum of Qty__highlight\\\"\\n },\\n \\\"opacity\\\": {\\n \\\"condition\\\": {\\n \\\"test\\\": {\\n \\\"field\\\": \\\"__selected__\\\",\\n \\\"equal\\\": \\\"off\\\"\\n },\\n \\\"value\\\": 0\\n },\\n \\\"value\\\": 1\\n }\\n }\\n }\\n ],\\n \\\"encoding\\\": {\\n \\\"y\\\": {\\n \\\"field\\\": \\\"Colour\\\",\\n \\\"type\\\": \\\"nominal\\\"\\n },\\n \\\"x\\\": {\\n \\\"type\\\": \\\"quantitative\\\",\\n \\\"axis\\\": {\\\"title\\\": \\\"Sum of Qty\\\"}\\n }\\n }\\n}'\"}}},\"jsonConfig\":{\"expr\":{\"Literal\":{\"Value\":\"'{\\n \\\"view\\\": {\\\"stroke\\\": \\\"transparent\\\"},\\n \\\"font\\\": \\\"Segoe UI\\\",\\n \\\"arc\\\": {},\\n \\\"area\\\": {\\n \\\"line\\\": true,\\n \\\"opacity\\\": 0.6\\n },\\n \\\"bar\\\": {},\\n \\\"line\\\": {\\n \\\"strokeWidth\\\": 3,\\n \\\"strokeCap\\\": \\\"round\\\",\\n \\\"strokeJoin\\\": \\\"round\\\"\\n },\\n \\\"path\\\": {},\\n \\\"point\\\": {\\\"filled\\\": true, \\\"size\\\": 75},\\n \\\"rect\\\": {},\\n \\\"shape\\\": {},\\n \\\"symbol\\\": {\\n \\\"strokeWidth\\\": 1.5,\\n \\\"size\\\": 50\\n },\\n \\\"text\\\": {\\n \\\"font\\\": \\\"Segoe UI\\\",\\n \\\"fontSize\\\": 12,\\n \\\"fill\\\": \\\"#605E5C\\\"\\n },\\n \\\"axis\\\": {\\n \\\"ticks\\\": false,\\n \\\"grid\\\": false,\\n \\\"domain\\\": false,\\n \\\"labelColor\\\": \\\"#605E5C\\\",\\n \\\"labelFontSize\\\": 12,\\n \\\"titleFont\\\": \\\"wf_standard-font, helvetica, arial, sans-serif\\\",\\n \\\"titleColor\\\": \\\"#252423\\\",\\n \\\"titleFontSize\\\": 16,\\n \\\"titleFontWeight\\\": \\\"normal\\\"\\n },\\n \\\"axisQuantitative\\\": {\\n \\\"tickCount\\\": 3,\\n \\\"grid\\\": true,\\n \\\"gridColor\\\": \\\"#C8C6C4\\\",\\n \\\"gridDash\\\": [1, 5],\\n \\\"labelFlush\\\": false\\n },\\n \\\"axisX\\\": {\\\"labelPadding\\\": 5},\\n \\\"axisY\\\": {\\\"labelPadding\\\": 10},\\n \\\"header\\\": {\\n \\\"titleFont\\\": \\\"wf_standard-font, helvetica, arial, sans-serif\\\",\\n \\\"titleFontSize\\\": 16,\\n \\\"titleColor\\\": \\\"#252423\\\",\\n \\\"labelFont\\\": \\\"Segoe UI\\\",\\n \\\"labelFontSize\\\": 13.333333333333332,\\n \\\"labelColor\\\": \\\"#605E5C\\\"\\n },\\n \\\"legend\\\": {\\n \\\"titleFont\\\": \\\"Segoe UI\\\",\\n \\\"titleFontWeight\\\": \\\"bold\\\",\\n \\\"titleColor\\\": \\\"#605E5C\\\",\\n \\\"labelFont\\\": \\\"Segoe UI\\\",\\n \\\"labelFontSize\\\": 13.333333333333332,\\n \\\"labelColor\\\": \\\"#605E5C\\\",\\n \\\"symbolType\\\": \\\"circle\\\",\\n \\\"symbolSize\\\": 75\\n }\\n}'\"}}},\"isNewDialogOpen\":{\"expr\":{\"Literal\":{\"Value\":\"false\"}}},\"version\":{\"expr\":{\"Literal\":{\"Value\":\"'5.6.1'\"}}},\"enableTooltips\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"enableContextMenu\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"enableHighlight\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"enableSelection\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}},\"selectionMaxDataPoints\":{\"expr\":{\"Literal\":{\"Value\":\"50D\"}}}}}]}}}", "filters": "[]", "height": 692.55, "width": 731.43, @@ -505,6 +580,24 @@ "y": 141.87, "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\"}}}}}]}}}", + "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 + }, + { + "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\"}}}}}]}}}", + "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 + }, { "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\":{}}]}}}", "filters": "[]", @@ -515,12 +608,12 @@ "z": 2000.00 }, { - "config": "{\"name\":\"bfb9671fcc478a23c60d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.93333333333334,\"z\":0,\"width\":1280,\"height\":288.7111111111111,\"tabOrder\":1000}}],\"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\"}}}}}]}}}", + "config": "{\"name\":\"bfb9671fcc478a23c60d\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":430.87027914614123,\"z\":0,\"width\":397.2413793103448,\"height\":288.9983579638752,\"tabOrder\":1000}}],\"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": "[{\"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": 288.71, - "width": 1280.00, + "height": 289.00, + "width": 397.24, "x": 0.00, - "y": 430.93, + "y": 430.87, "z": 0.00 }, { @@ -602,20 +695,38 @@ "ordinal": 2, "visualContainers": [ { - "config": "{\"name\":\"0091cca09d96248e56b8\",\"layouts\":[{\"id\":0,\"position\":{\"x\":458.3619047619048,\"y\":142.62857142857143,\"z\":6000,\"width\":310.85714285714283,\"height\":214.55238095238096,\"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 Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", + "config": "{\"name\":\"0091cca09d96248e56b8\",\"layouts\":[{\"id\":0,\"position\":{\"x\":458.1937602627258,\"y\":142.92282430213464,\"z\":6000,\"width\":312.1182266009852,\"height\":158.6863711001642,\"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 Bar Chart'\"}}}}}],\"subTitle\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}}}", "filters": "[]", - "height": 214.55, - "width": 310.86, - "x": 458.36, - "y": 142.63, + "height": 158.69, + "width": 312.12, + "x": 458.19, + "y": 142.92, "z": 6000.00 }, { - "config": "{\"name\":\"1b9a3c4d92e7ac303246\",\"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}}", + "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\"}}}}}]}}}", "filters": "[]", - "height": 109.51, - "width": 207.64, - "x": 263.11, + "height": 136.62, + "width": 186.01, + "x": 585.55, + "y": 439.47, + "z": 10013.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 505.55, + "y": 359.47, + "z": 10005.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}}", + "filters": "[]", + "height": 99.84, + "width": 160.79, + "x": 197.57, "y": 0.00, "z": 3000.00 }, @@ -629,48 +740,111 @@ "z": 2000.00 }, { - "config": "{\"name\":\"423cfdb39037ea1db380\",\"layouts\":[{\"id\":0,\"position\":{\"x\":892.3428571428572,\"y\":359.6190476190476,\"z\":9000,\"width\":375.46666666666664,\"height\":226.74285714285713,\"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\"}}}}}]}}}", + "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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 565.55, + "y": 419.47, + "z": 10011.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\"}}}}}]}}}", "filters": "[]", - "height": 226.74, - "width": 375.47, - "x": 892.34, - "y": 359.62, + "height": 160.79, + "width": 299.51, + "x": 980.49, + "y": 130.31, "z": 9000.00 }, { - "config": "{\"name\":\"4501e10957dcc0d0a762\",\"layouts\":[{\"id\":0,\"position\":{\"x\":892.3428571428572,\"y\":132.8761904761905,\"z\":5000,\"width\":375.46666666666664,\"height\":226.74285714285713,\"tabOrder\":5000}}],\"singleVisual\":{\"visualType\":\"treemap\",\"projections\":{\"Group\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Values\":[{\"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\":\"4501e10957dcc0d0a762\",\"layouts\":[{\"id\":0,\"position\":{\"x\":777.6683087027915,\"y\":130.311986863711,\"z\":5000,\"width\":191.26436781609195,\"height\":171.29720853858785,\"tabOrder\":5000}}],\"singleVisual\":{\"visualType\":\"treemap\",\"projections\":{\"Group\":[{\"queryRef\":\"Inventory.Item\",\"active\":true}],\"Values\":[{\"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": 226.74, - "width": 375.47, - "x": 892.34, - "y": 132.88, + "height": 171.30, + "width": 191.26, + "x": 777.67, + "y": 130.31, "z": 5000.00 }, { - "config": "{\"name\":\"4df7d75ef1fbfd2581e3\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.62857142857143,\"z\":1000,\"width\":423.0095238095238,\"height\":216.9904761904762,\"tabOrder\":3000}}],\"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\"}}}}}]}}}", + "config": "{\"name\":\"4df7d75ef1fbfd2581e3\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":142.92282430213464,\"z\":1000,\"width\":245.9113300492611,\"height\":158.6863711001642,\"tabOrder\":3000}}],\"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\"}}}}}]}}}", "filters": "[]", - "height": 216.99, - "width": 423.01, + "height": 158.69, + "width": 245.91, "x": 0.00, - "y": 142.63, + "y": 142.92, "z": 1000.00 }, { - "config": "{\"name\":\"ae32d4870b0494a0c319\",\"layouts\":[{\"id\":0,\"position\":{\"x\":459.5809523809524,\"y\":357.18095238095236,\"z\":8000,\"width\":310.85714285714283,\"height\":214.55238095238096,\"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\"}}}}}]}}}", + "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\"}}}}}]}}}", "filters": "[]", - "height": 214.55, - "width": 310.86, - "x": 459.58, - "y": 357.18, + "height": 160.79, + "width": 197.57, + "x": 245.91, + "y": 140.82, + "z": 10001.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 595.55, + "y": 449.47, + "z": 10014.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 545.55, + "y": 399.47, + "z": 10009.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 535.55, + "y": 389.47, + "z": 10008.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 525.55, + "y": 379.47, + "z": 10007.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 197.57, + "x": 245.91, + "y": 319.47, "z": 8000.00 }, { - "config": "{\"name\":\"c2f0a76480e2a9d6e11b\",\"layouts\":[{\"id\":0,\"position\":{\"x\":470.55238095238093,\"y\":571.7333333333333,\"z\":7000,\"width\":470.55238095238093,\"height\":148.72380952380954,\"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\"}}}}}]}}}", + "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\"}}}}}]}}}", "filters": "[]", - "height": 148.72, - "width": 470.55, - "x": 470.55, - "y": 571.73, + "height": 136.62, + "width": 186.01, + "x": 485.55, + "y": 339.47, + "z": 10003.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 465.55, + "y": 319.47, "z": 7000.00 }, { @@ -682,6 +856,15 @@ "y": 430.93, "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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 575.55, + "y": 429.47, + "z": 10012.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'\"}}}}}]}}}", "filters": "[]", @@ -692,13 +875,49 @@ "z": 4000.00 }, { - "config": "{\"name\":\"da570baa35ab0703c7be\",\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":368.15238095238095,\"z\":10000,\"width\":423.0095238095238,\"height\":351.0857142857143,\"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\"}}}}}]}}}", + "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\"}}}}}]}}}", "filters": "[]", - "height": 351.09, - "width": 423.01, + "height": 136.62, + "width": 186.01, + "x": 515.55, + "y": 369.47, + "z": 10006.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 245.91, "x": 0.00, - "y": 368.15, + "y": 319.47, "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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 495.55, + "y": 349.47, + "z": 10004.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 475.55, + "y": 329.47, + "z": 10002.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\"}}}}}]}}}", + "filters": "[]", + "height": 136.62, + "width": 186.01, + "x": 555.55, + "y": 409.47, + "z": 10010.00 } ], "width": 1280.00 diff --git a/PBIXInspectorWinForm/PBIXInspectorWinForm.csproj b/PBIXInspectorWinForm/PBIXInspectorWinForm.csproj index 8e0679f..098e01f 100644 --- a/PBIXInspectorWinForm/PBIXInspectorWinForm.csproj +++ b/PBIXInspectorWinForm/PBIXInspectorWinForm.csproj @@ -6,9 +6,9 @@ enable true enable - 1.9.3.0 - 1.9.3 - 1.9.3 + 1.9.4.0 + 1.9.4 + 1.9.4 README.md pbiinspector.png https://github.com/NatVanG/PBIXInspector diff --git a/PBIXInspectorWinForm/PBIXInspectorWinForm.pbitool.json b/PBIXInspectorWinForm/PBIXInspectorWinForm.pbitool.json index 35153fe..bb3f30f 100644 --- a/PBIXInspectorWinForm/PBIXInspectorWinForm.pbitool.json +++ b/PBIXInspectorWinForm/PBIXInspectorWinForm.pbitool.json @@ -1,5 +1,5 @@ { - "version": "1.9.3", + "version": "1.9.4", "name": "VisOps with PBI Inspector", "description": "A testing or inspection tool for the visual layer of Microsoft Power BI reports.", "path": "%PATH%", diff --git a/PBIXInspectorWinLibrary/Drawing/ImageUtils.cs b/PBIXInspectorWinLibrary/Drawing/ImageUtils.cs index 4858218..aa75da1 100644 --- a/PBIXInspectorWinLibrary/Drawing/ImageUtils.cs +++ b/PBIXInspectorWinLibrary/Drawing/ImageUtils.cs @@ -1,7 +1,6 @@ -using System.Drawing; +using PBIXInspectorLibrary.Output; +using System.Drawing; using System.Text.Json.Nodes; -using PBIXInspectorLibrary; -using PBIXInspectorLibrary.Output; namespace PBIXInspectorWinLibrary.Drawing { diff --git a/PBIXInspectorWinLibrary/Drawing/ReportPage.cs b/PBIXInspectorWinLibrary/Drawing/ReportPage.cs index 2245719..5103408 100644 --- a/PBIXInspectorWinLibrary/Drawing/ReportPage.cs +++ b/PBIXInspectorWinLibrary/Drawing/ReportPage.cs @@ -1,6 +1,5 @@ using System.Drawing; using System.Drawing.Imaging; -using static PBIXInspectorWinLibrary.Drawing.ReportPage; #pragma warning disable CA1416 // Validate platform compatibility namespace PBIXInspectorWinLibrary.Drawing @@ -77,11 +76,11 @@ public void Draw() } g.DrawRectangle(pen, rect); - + var iconSize = (from s in iconSizes where s <= Math.Max(rect.Width, rect.Height) / 2 orderby s descending select s).FirstOrDefault(); using (Icon ico = new(ICONPATH, iconSize, iconSize)) { - if (!vc.Pass) { g.DrawIcon(ico, rect.X + VISOFFSET + (rect.Width - iconSize) / 2, rect.Y + VISOFFSET +(rect.Height - iconSize) / 2); }; + if (!vc.Pass) { g.DrawIcon(ico, rect.X + VISOFFSET + (rect.Width - iconSize) / 2, rect.Y + VISOFFSET + (rect.Height - iconSize) / 2); }; } diff --git a/PBIXInspectorWinLibrary/Main.cs b/PBIXInspectorWinLibrary/Main.cs index cacf7ae..1f789cd 100644 --- a/PBIXInspectorWinLibrary/Main.cs +++ b/PBIXInspectorWinLibrary/Main.cs @@ -1,5 +1,5 @@ -using PBIXInspectorLibrary.Output; -using PBIXInspectorLibrary; +using PBIXInspectorLibrary; +using PBIXInspectorLibrary.Output; using PBIXInspectorWinLibrary.Drawing; using PBIXInspectorWinLibrary.Utils; using System.Text.Json; @@ -104,8 +104,8 @@ public static void Run(Args args) if (!_args.ADOOutput && (_args.PNGOutput || _args.HTMLOutput)) { _fieldMapInsp = new Inspector(_args.PBIFilePath, Constants.ReportPageFieldMapFilePath); - _fieldMapResults = _fieldMapInsp.Inspect(); - + _fieldMapResults = _fieldMapInsp.Inspect(); + var outputPNGDirPath = Path.Combine(_args.OutputDirPath, Constants.PNGOutputDir); if (Directory.Exists(outputPNGDirPath)) diff --git a/PBIXInspectorWinLibrary/PBIXInspectorWinLibrary.csproj b/PBIXInspectorWinLibrary/PBIXInspectorWinLibrary.csproj index 44e6bf5..647bcb4 100644 --- a/PBIXInspectorWinLibrary/PBIXInspectorWinLibrary.csproj +++ b/PBIXInspectorWinLibrary/PBIXInspectorWinLibrary.csproj @@ -4,9 +4,9 @@ net6.0 enable enable - 1.9.3.0 - 1.9.3.0 - 1.9.3 + 1.9.4.0 + 1.9.4.0 + 1.9.4 diff --git a/PBIXInspectorWinLibrary/Utils/Args.cs b/PBIXInspectorWinLibrary/Utils/Args.cs index a411bcd..bba0452 100644 --- a/PBIXInspectorWinLibrary/Utils/Args.cs +++ b/PBIXInspectorWinLibrary/Utils/Args.cs @@ -18,8 +18,8 @@ public string OutputPath } else { - OutputDirPath = Path.Combine(Path.GetTempPath(), String.Concat(Constants.DefaultVisOpsFolder, Guid.NewGuid().ToString())) ; - DeleteOutputDirOnExit = true; + OutputDirPath = Path.Combine(Path.GetTempPath(), String.Concat(Constants.DefaultVisOpsFolder, Guid.NewGuid().ToString())); + DeleteOutputDirOnExit = true; } } } @@ -53,7 +53,7 @@ public string FormatsString public bool PNGOutput { get; private set; } - public bool HTMLOutput { get; private set; } + public bool HTMLOutput { get; private set; } public bool JSONOutput { get; private set; } diff --git a/PBIXInspectorWinLibrary/Utils/ArgsUtils.cs b/PBIXInspectorWinLibrary/Utils/ArgsUtils.cs index 23fb0db..51bcd30 100644 --- a/PBIXInspectorWinLibrary/Utils/ArgsUtils.cs +++ b/PBIXInspectorWinLibrary/Utils/ArgsUtils.cs @@ -9,7 +9,7 @@ public static Args ParseArgs(string[] args) const string TRUE = "true"; const string FALSE = "false"; string[] validOptions = { PBIX, PBIP, PBIPREPORT, RULES, OUTPUT, FORMATS, VERBOSE }; - + int index = 0; int maxindex = args.Length - 2; var dic = new Dictionary(); @@ -41,13 +41,13 @@ public static Args ParseArgs(string[] args) var verboseString = dic.ContainsKey(VERBOSE) ? dic[VERBOSE] : FALSE; var formatsString = dic.ContainsKey(FORMATS) ? dic[FORMATS] : string.Empty; - return new Args { PBIFilePath = pbiFilePath, RulesFilePath = rulesPath, OutputPath = outputPath, FormatsString = formatsString, VerboseString = verboseString}; + return new Args { PBIFilePath = pbiFilePath, RulesFilePath = rulesPath, OutputPath = outputPath, FormatsString = formatsString, VerboseString = verboseString }; } public static string? ResolvePbiFilePathInput(string pbiFilePath) { - var resolvedPath = !string.IsNullOrEmpty(pbiFilePath) && pbiFilePath.ToLower().EndsWith(Constants.PBIPReportJsonFileName) - ? Path.GetDirectoryName(pbiFilePath) + var resolvedPath = !string.IsNullOrEmpty(pbiFilePath) && pbiFilePath.ToLower().EndsWith(Constants.PBIPReportJsonFileName) + ? Path.GetDirectoryName(pbiFilePath) : pbiFilePath; return resolvedPath;