diff --git a/PepperDashEssentials/ControlSystem.cs b/PepperDashEssentials/ControlSystem.cs index 8f3be4e1..d7fb1885 100644 --- a/PepperDashEssentials/ControlSystem.cs +++ b/PepperDashEssentials/ControlSystem.cs @@ -93,7 +93,7 @@ namespace PepperDash.Essentials CrestronConsole.AddNewConsoleCommand(s => { foreach (var tl in TieLineCollection.Default) - CrestronConsole.ConsoleCommandResponse(" {0}\r\n", tl); + CrestronConsole.ConsoleCommandResponse(" {0}{1}", tl, CrestronEnvironment.NewLine); }, "listtielines", "Prints out all tie lines", ConsoleAccessLevelEnum.AccessOperator); @@ -107,11 +107,12 @@ namespace PepperDash.Essentials CrestronConsole.AddNewConsoleCommand(s => CrestronConsole.ConsoleCommandResponse( - "This system can be found at the following URLs:\r\n" + - "System URL: {0}\r\n" + - "Template URL: {1}", + "This system can be found at the following URLs:{2}" + + "System URL: {0}{2}" + + "Template URL: {1}{2}", ConfigReader.ConfigObject.SystemUrl, - ConfigReader.ConfigObject.TemplateUrl), + ConfigReader.ConfigObject.TemplateUrl, + CrestronEnvironment.NewLine), "portalinfo", "Shows portal URLS from configuration", ConsoleAccessLevelEnum.AccessOperator); diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/DeviceManager.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/DeviceManager.cs index 65efd0b9..8b947be3 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/DeviceManager.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/DeviceManager.cs @@ -388,17 +388,17 @@ namespace PepperDash.Essentials.Core var outputPorts = ((device as IRoutingOutputs) != null) ? (device as IRoutingOutputs).OutputPorts : null; if (inputPorts != null) { - CrestronConsole.ConsoleCommandResponse("Device {0} has {1} Input Ports:", s, inputPorts.Count); + CrestronConsole.ConsoleCommandResponse("Device {0} has {1} Input Ports:{2}", s, inputPorts.Count, CrestronEnvironment.NewLine); foreach (var routingInputPort in inputPorts) { - CrestronConsole.ConsoleCommandResponse("{0}", routingInputPort.Key); + CrestronConsole.ConsoleCommandResponse("{0}{1}", routingInputPort.Key, CrestronEnvironment.NewLine); } } if (outputPorts == null) return; - CrestronConsole.ConsoleCommandResponse("Device {0} has {1} Output Ports:", s, outputPorts.Count); + CrestronConsole.ConsoleCommandResponse("Device {0} has {1} Output Ports:{2}", s, outputPorts.Count, CrestronEnvironment.NewLine); foreach (var routingOutputPort in outputPorts) { - CrestronConsole.ConsoleCommandResponse("{0}", routingOutputPort.Key); + CrestronConsole.ConsoleCommandResponse("{0}{1}", routingOutputPort.Key, CrestronEnvironment.NewLine); } } diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs index 60aa6275..7650b323 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs @@ -6,7 +6,7 @@ using System.Text; using Crestron.SimplSharp.Reflection; using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharp; - +using Crestron.SimplSharp.Ssh; using PepperDash.Core; using PepperDash.Essentials.Core.Config; @@ -234,7 +234,7 @@ namespace PepperDash.Essentials.Core /// public void PrintJoinMapInfo() { - var sb = JoinmapStringBuilder(); + var sb = JoinmapStringBuilderPrint(); CrestronConsole.ConsoleCommandResponse(sb.ToString()); } @@ -273,6 +273,50 @@ namespace PepperDash.Essentials.Core return sb; } + private StringBuilder JoinmapStringBuilderPrint() + { + var sb = new StringBuilder(); + + // Get the joins of each type and print them + var digitals = + Joins.Where(j => (j.Value.Metadata.JoinType & eJoinType.Digital) == eJoinType.Digital) + .ToDictionary(j => j.Key, j => j.Value); + var analogs = + Joins.Where(j => (j.Value.Metadata.JoinType & eJoinType.Analog) == eJoinType.Analog) + .ToDictionary(j => j.Key, j => j.Value); + var serials = + Joins.Where(j => (j.Value.Metadata.JoinType & eJoinType.Serial) == eJoinType.Serial) + .ToDictionary(j => j.Key, j => j.Value); + + const string description = "description"; + var descriptionLengthAnchor = description.Length; + + var descriptionLength = + (from @join in Joins select @join.Value into j select j.Metadata.Description.Length).Concat(new[] { descriptionLengthAnchor }) + .Max(); + + sb.AppendLine(String.Format("# {0}" + CrestronEnvironment.NewLine, GetType().Name)); + sb.AppendLine(CrestronEnvironment.NewLine); + sb.AppendLine("## Digitals"); + sb.AppendLine(CrestronEnvironment.NewLine + CrestronEnvironment.NewLine); + + // Get the joins of each type and print them + var digitalSb = PrintAppendJoinList(GetSortedJoins(digitals), descriptionLength); + digitalSb.AppendLine(CrestronEnvironment.NewLine); + digitalSb.AppendLine("## Analogs"); + + var analogSb = PrintAppendJoinList(GetSortedJoins(analogs), descriptionLength); + analogSb.AppendLine(CrestronEnvironment.NewLine); + analogSb.AppendLine("## Serials"); + + var serialSb = PrintAppendJoinList(GetSortedJoins(serials), descriptionLength); + serialSb.AppendLine(CrestronEnvironment.NewLine); + + sb.EnsureCapacity(sb.Length + digitalSb.Length + analogSb.Length + serialSb.Length); + sb.Append(digitalSb + CrestronEnvironment.NewLine + CrestronEnvironment.NewLine).Append(analogSb + CrestronEnvironment.NewLine + CrestronEnvironment.NewLine).Append(serialSb + CrestronEnvironment.NewLine); + return sb; + } + /// /// Prints the join information to console /// @@ -280,9 +324,7 @@ namespace PepperDash.Essentials.Core { var pluginType = GetType().Name; - CrestronConsole.ConsoleCommandResponse("{0}:\n", pluginType); - - + CrestronConsole.ConsoleCommandResponse("{0}:" + CrestronEnvironment.NewLine, pluginType); WriteJoinmapMarkdown(JoinmapStringBuilder(), pluginType, bridgeKey, deviceKey); @@ -295,7 +337,7 @@ namespace PepperDash.Essentials.Core using (var sw = new StreamWriter(fileName)) { sw.WriteLine(stringBuilder.ToString()); - CrestronConsole.ConsoleCommandResponse("Joinmap Readme generated and written to {0}", fileName); + CrestronConsole.ConsoleCommandResponse("Joinmap Readme generated and written to {0}" + CrestronEnvironment.NewLine, fileName); } } @@ -323,13 +365,13 @@ namespace PepperDash.Essentials.Core const int joinSpanLen = 9; const int typeLen = 19; const int capabilitiesLen = 12; - var descriptionLen = (from @join in joins select @join.Value into j select j.Metadata.Description.Length).Concat(new[] {11}).Max(); + var descriptionLen = (from @join in joins select @join.Value into j select j.Metadata.Description.Length).Concat(new[] { 11 }).Max(); //build header - sb.AppendLine(String.Format(stringFormatter, - String.Format("Join Number").PadRight(joinNumberLen, ' '), - String.Format("Join Span").PadRight(joinSpanLen, ' '), - String.Format("Description").PadRight(descriptionLen, ' '), + sb.AppendLine(String.Format(stringFormatter, + String.Format("Join Number").PadRight(joinNumberLen, ' '), + String.Format("Join Span").PadRight(joinSpanLen, ' '), + String.Format("Description").PadRight(descriptionLen, ' '), String.Format("Type").PadRight(typeLen, ' '), String.Format("Capabilities").PadRight(capabilitiesLen, ' '))); //build table seperator @@ -348,6 +390,40 @@ namespace PepperDash.Essentials.Core return sb; } + private static StringBuilder PrintAppendJoinList(List> joins, + int descriptionLength) + { + var sb = new StringBuilder(); + const string stringFormatter = "| {0} | {1} | {2} | {3} | {4} |"; + const int joinNumberLen = 11; + const int joinSpanLen = 9; + const int typeLen = 19; + const int capabilitiesLen = 12; + + //build header + sb.AppendLine(String.Format(stringFormatter, + String.Format("Join Number").PadRight(joinNumberLen, ' '), + String.Format("Join Span").PadRight(joinSpanLen, ' '), + String.Format("Description").PadRight(descriptionLength, ' '), + String.Format("Type").PadRight(typeLen, ' '), + String.Format("Capabilities").PadRight(capabilitiesLen, ' ')) + CrestronEnvironment.NewLine); + //build table seperator + sb.AppendLine(String.Format(stringFormatter, + new String('-', joinNumberLen), + new String('-', joinSpanLen), + new String('-', descriptionLength), + new String('-', typeLen), + new String('-', capabilitiesLen)) + CrestronEnvironment.NewLine); + + foreach (var join in joins) + { + sb.AppendLine(join.Value.GetMarkdownFormattedData(stringFormatter, descriptionLength) + + CrestronEnvironment.NewLine); + } + sb.AppendLine(); + return sb; + } + /// /// Attempts to find the matching key for the custom join and if found overwrites the default JoinData with the custom /// diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Plugins/PluginLoader.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Plugins/PluginLoader.cs index f69d35d0..9c746650 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Plugins/PluginLoader.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Plugins/PluginLoader.cs @@ -195,10 +195,10 @@ namespace PepperDash.Essentials public static void ReportAssemblyVersions(string command) { - CrestronConsole.ConsoleCommandResponse("Loaded Assemblies:"); + CrestronConsole.ConsoleCommandResponse("Loaded Assemblies:" + CrestronEnvironment.NewLine); foreach (var assembly in LoadedAssemblies) { - CrestronConsole.ConsoleCommandResponse("{0} Version: {1}", assembly.Name, assembly.Version); + CrestronConsole.ConsoleCommandResponse("{0} Version: {1}" + CrestronEnvironment.NewLine, assembly.Name, assembly.Version); } }