diff --git a/Tranga-CLI/Tranga_Cli.cs b/Tranga-CLI/Tranga_Cli.cs index bc5b21d..6b890d2 100644 --- a/Tranga-CLI/Tranga_Cli.cs +++ b/Tranga-CLI/Tranga_Cli.cs @@ -135,8 +135,12 @@ public static class Tranga_Cli switch (selection) { case ConsoleKey.L: - PrintTasks(taskManager.GetAllTasks(), logger); - Console.WriteLine("Press any key."); + while (!Console.KeyAvailable) + { + PrintTasks(taskManager.GetAllTasks(), logger); + Console.WriteLine("Press any key."); + Thread.Sleep(500); + } Console.ReadKey(); break; case ConsoleKey.C: @@ -160,17 +164,26 @@ public static class Tranga_Cli Console.ReadKey(); break; case ConsoleKey.R: - PrintTasks( - taskManager.GetAllTasks().Where(eTask => eTask.state == TrangaTask.ExecutionState.Running) - .ToArray(), logger); - Console.WriteLine("Press any key."); + while (!Console.KeyAvailable) + { + PrintTasks( + taskManager.GetAllTasks().Where(eTask => eTask.state == TrangaTask.ExecutionState.Running) + .ToArray(), logger); + Console.WriteLine("Press any key."); + Thread.Sleep(500); + } Console.ReadKey(); break; case ConsoleKey.K: - PrintTasks( - taskManager.GetAllTasks().Where(qTask => qTask.state is TrangaTask.ExecutionState.Enqueued) - .ToArray(), logger); - Console.WriteLine("Press any key."); + while (!Console.KeyAvailable) + { + PrintTasks( + taskManager.GetAllTasks() + .Where(qTask => qTask.state is TrangaTask.ExecutionState.Enqueued) + .ToArray(), logger); + Console.WriteLine("Press any key."); + Thread.Sleep(500); + } Console.ReadKey(); break; case ConsoleKey.F: @@ -240,13 +253,13 @@ public static class Tranga_Cli int tIndex = 0; Console.WriteLine($"Tasks (Running/Queue/Total): {taskRunningCount}/{taskEnqueuedCount}/{taskCount}"); string header = - $"{"",-5}{"Task",-20} | {"Last Executed",-20} | {"Reoccurrence",-12} | {"State",-10} | {"Progress",-9} | {"Connector",-15} | Publication/Manga "; + $"{"",-5}{"Task",-20} | {"Last Executed",-20} | {"Reoccurrence",-12} | {"State",-10} | {"Progress",-9} | {"Finished",-20} | {"Remaining",-12} | {"Connector",-15} | Publication/Manga "; Console.WriteLine(header); Console.WriteLine(new string('-', header.Length)); foreach (TrangaTask trangaTask in tasks) { string[] taskSplit = trangaTask.ToString().Split(", "); - Console.WriteLine($"{tIndex++:000}: {taskSplit[0],-20} | {taskSplit[1],-20} | {taskSplit[2],-12} | {taskSplit[3],-10} | {(taskSplit.Length > 4 ? taskSplit[4] : ""),-9} | {(taskSplit.Length > 5 ? taskSplit[5] : ""),-15} | {(taskSplit.Length > 6 ? taskSplit[6] : "")} {(taskSplit.Length > 7 ? taskSplit[7] : "")} {(taskSplit.Length > 8 ? taskSplit[8] : "")}"); + Console.WriteLine($"{tIndex++:000}: {taskSplit[0],-20} | {taskSplit[1],-20} | {taskSplit[2],-12} | {taskSplit[3],-10} | {taskSplit[4],-9} | {taskSplit[5],-20} | {taskSplit[6][..12],-12} | {(taskSplit.Length > 7 ? taskSplit[7] : ""),-15} | {(taskSplit.Length > 8 ? taskSplit[8] : "")} {(taskSplit.Length > 9 ? taskSplit[9] : "")} {(taskSplit.Length > 10 ? taskSplit[10] : "")}"); } } diff --git a/Tranga/TrangaTask.cs b/Tranga/TrangaTask.cs index 5350b40..a08c6d0 100644 --- a/Tranga/TrangaTask.cs +++ b/Tranga/TrangaTask.cs @@ -23,6 +23,15 @@ public abstract class TrangaTask [Newtonsoft.Json.JsonIgnore]public ExecutionState state { get; set; } [Newtonsoft.Json.JsonIgnore]public float progress { get; protected set; } [Newtonsoft.Json.JsonIgnore]public DateTime nextExecution => lastExecuted.Add(reoccurrence); + [Newtonsoft.Json.JsonIgnore]public DateTime executionStarted { get; protected set; } + + [Newtonsoft.Json.JsonIgnore] + public DateTime executionApproximatelyFinished => this.progress != 0 + ? this.executionStarted.Add(DateTime.Now.Subtract(this.executionStarted) / this.progress) + : DateTime.MaxValue; + + [Newtonsoft.Json.JsonIgnore] + public TimeSpan executionApproximatelyRemaining => this.executionApproximatelyFinished.Subtract(DateTime.Now); public enum ExecutionState { @@ -37,6 +46,7 @@ public abstract class TrangaTask this.lastExecuted = DateTime.Now.Subtract(reoccurrence); this.task = task; this.progress = 0f; + this.executionStarted = DateTime.Now; } public float IncrementProgress(float amount) @@ -61,6 +71,7 @@ public abstract class TrangaTask { logger?.WriteLine(this.GetType().ToString(), $"Executing Task {this}"); this.state = ExecutionState.Running; + this.executionStarted = DateTime.Now; ExecuteTask(taskManager, logger); this.lastExecuted = DateTime.Now; this.state = ExecutionState.Waiting; @@ -82,7 +93,7 @@ public abstract class TrangaTask public override string ToString() { - return $"{task}, {lastExecuted}, {reoccurrence}, {state}, {progress:P2}"; + return $"{task}, {lastExecuted}, {reoccurrence}, {state}, {progress:P2}, {executionApproximatelyFinished}, {executionApproximatelyRemaining}"; } public class TrangaTaskJsonConverter : JsonConverter